This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "IPFire 2.x development tree".
The branch, kernel-update has been updated via 274054142e3033aabf5cb1b89d86fa430dee5d72 (commit) via 161f8b313d0144f9ac766531b5742726fa54b46f (commit) via 560d09a5cc893e12165b33f2c46ad0c65cb408f3 (commit) via 4077128d17adb46ecda748048892d2dd5a5df0c2 (commit) via 68a3ec7d6a25ba4bde14e886889c28bd4a3841ff (commit) via ec1353626db781015479609d1e645f8a934c6856 (commit) via 76628c777fc3a0eec69e2a998e8dc53e9ac8e247 (commit) via e9450f8628f938d3e702b27acaa346ec2bb84824 (commit) via 62f709b395179bddcb7bcebd367b568f219e847f (commit) via c65bfd057e1f1fe8a6942e3ba8570896e16e950d (commit) via d75b739e462d99dc4e7245298ac5d09dad9629ef (commit) via 78be24f73d123a792e38ff388bd05924b648e791 (commit) via 86837f326e39aa118484270e67fa259b382cf27b (commit) via c3db74584136a27f2a9a2952c232d1e5a352ba0a (commit) via a23305b8a2869414e40d7a49bafd2bbc764ea925 (commit) via e3ca409e30a39e6c76a877be49f526e16c137728 (commit) via 9a88769967d78348bcace763ae154df37141c71f (commit) via 423400cffa3697568456dd54418b421ef360cc8a (commit) via 32e62ec2e09eb2f9af2c3368d6026061fa317687 (commit) via 8f28e1b8fc38b459fdc1c737d6cf42081202823e (commit) via ceee30d43b0b433ea007d046ca7e434cc9e459a6 (commit) via b6bd9a5d572fa0dc82c5d1b9f224c0aad9eeca0b (commit) via cd372b7de2150d3f410bc4cb284b178b160a9d56 (commit) via 847a72987ee919d86d259ec8b4a35e8632e35486 (commit) via a469149777a4ad9d400080a1cfc9f17d1a88b62c (commit) via b4dbff3fe62373f55337534c19fb4a2ff79b7a98 (commit) via 41cfd9e04b1a06d242432e682ab5601f933c0e21 (commit) via 3b7913e671665fc39d8c60eff292d016299a117c (commit) via bc259fdcc14bb766173c7bd0b82a92cc0e33c79b (commit) via bca1f9e152467df2c3a9d54e374240822f6fdb78 (commit) via 7bc516ec7f3bbdd701ebd4ffe4aab37d66356f1d (commit) via 156ef876ca730fad6007b27b5370676b406a4e98 (commit) via 6409250781f06ad533412479dbf1adf037e17507 (commit) via 542244b35afc5bf5cd4318fe84325c0263e128fb (commit) via 98603963381ca8c7396d68786ddf4f1e32f650e5 (commit) via 31e94846beef604223b0409352bcc53e33470018 (commit) via f19b3cb69754ff536f9f399224369b6f655bc6f7 (commit) via c96ea3240f1c0bc2fb85a40b53afc76e9fc97281 (commit) via 998334b028478be01aa37437fa510ef30be00d10 (commit) via 4fd1768f7f2cf931ce9b9e919fc90c4bbe0e0041 (commit) via f5ad8f59d2570aadc2d12077ed389f539775db14 (commit) via 03395fbd076dcb3ebbfe6df18875094900c773e4 (commit) via c2a686313273815e36afa52e7a05f9e517ae545b (commit) via b235b9b9de7aec21a9ae54508d4f7e40f395c4fb (commit) via 11af354f26f9326fbe27111e87f45e3f81ec075c (commit) via 2722bdb21eb8bf4e684ddf1e4667306d0864a2f4 (commit) via 032d9402640a947375a50ef21ece9fa669c276da (commit) via 24acfa146b8665f29d3ab3d027a561763a508444 (commit) via 38a92762c486b7fbbcc17e836e19323c24f17d28 (commit) via fa21f636f657893d3487198db5fd43c7f16ee341 (commit) via 43ef38f45e01d8c337cc000d72260c5144f8707a (commit) via 07ee61b2f9df3569eb77b24e53047348a05abf77 (commit) via 58130033124232a19ff685ceffa5059c510662a0 (commit) via 81a25dbc335071b4b8b07d90e2cc3e60ae158964 (commit) via 2e7e95b87b53ba3dad388c1d50d4c015d455ac40 (commit) via 0d221ef862a205891c7dc82826f543b7e8098f1b (commit) via ed635824a916238bddc7e060bd2273e063e7d339 (commit) via 147041f5d3fa251fd228396ef6355b91a848499b (commit) via 42787ee5a124ce5a9ae22d1f3d57e8b2b0ea1456 (commit) via a09eee160f26a2709c7bfdaac512cc39fd8dd02d (commit) via 3e5f5165063b57f09aadc43e5e549cc9673e1fa3 (commit) via 6ce13437382a1d2b7144aa715fae3b573c01d420 (commit) via df0eca0c36ab9357204a9a7f578171331f5d6a94 (commit) via 4e1bd8c184709af1988557ddfeb6a80f9e3c9b66 (commit) via cacc83602032f5d081d4598d077dac2e8a2ac965 (commit) via 1edfed0326fefb6c91a84c1e6a1beac605bcc652 (commit) via cccf085fa8748261a312cb9801fcb87f5eda231e (commit) via 3e106ae5b05f55a6602ff95d615ed8baa49ff21d (commit) via 13d5707695b81b943d63deceb96717e61ae247b5 (commit) via fc5076e3d21797f03f15bee0b289ac7ea83e3ad9 (commit) via bb0ab3814f839bdc0e87f6f1cd9c0e351874587b (commit) via 6e0bd65765bb125e2828ef4c54d7de60eb636647 (commit) via d9bb5239918653b581c392bd21ed5c82c1547216 (commit) via 6db78002695b1de848137b0b2813a95e13db79a0 (commit) via 997736b7e2c0ba15f0d97e5a7410c0b0d88349ab (commit) via 8399842efa2c7382858b99dbd56dc1afe33ca835 (commit) via 222362c3e20b9397ede90db7984e7511537d8e94 (commit) via c51823b2c4e4d815cb439c1c7b9bc6c9896916b8 (commit) via 7af07de65b7e718df6988855d5b372177ea5e519 (commit) via d6fe5ee94b7212752961eecf12c80bd3216a4bd1 (commit) via 7b40d8221fb40fb36c563f5d674a91bcbe33aaae (commit) via 104b7a2f7ae5626cb99a413c042597159e56c4ac (commit) via a19634639a748f7f354874e566add3702c996e1e (commit) via 628ad2c11720e22fad813ce9d005447b3cc87b8f (commit) via f7b9315ef36af9405529c7d77c23c28a02d9169f (commit) via 1718b2f4cd8235b920fdbb28693d5c341c3c9ff3 (commit) via 13b8798d78f38ddca030c69d5f21de7a9b18bddb (commit) via b469c8c2385cef8f79871897d068ad020908298a (commit) via db95c207362bbf475c4756f1f3b352cabe75c5e8 (commit) via de473c48bc011666d23ccd207b7597bdabae235a (commit) via 6753fbe01100da0b3ade4fc481c015cfda32c536 (commit) via 1efe3ea13aedea84f63a2b6b1b448d498f1e7b05 (commit) via 6e32d39986c694e8cd72c57f4d276d6861a7d4b0 (commit) via 9572596c47e961c6f4d970b4c4c72bd5f90920e0 (commit) via 28d70963708626d1248262a9a84626b0d8fbb483 (commit) via 6a8c1a558babdfa13db68764d04f18136a40ab8f (commit) via 4a3378526dc03173db3bc97041150866b10093df (commit) via bee870d74f87f40e9f85f67e373f3e53c225e81a (commit) via e4783340bf17b0fbbda17605cc18f115764b4f45 (commit) via 706ea22fea2b69fc7c1062140a7a677b995a0f36 (commit) via a731c19d7f51d0eac8494c316a89e0ebae153474 (commit) via e2ab94792584163c2e55a3fa3b3bb25f979ca236 (commit) via fc44fa1f06fd8db9cdc3f37c29bb240024b10676 (commit) via 21e72899d9b92a6da05983e3d64cbe98ef2f9b1f (commit) via afbd9856273a3317a8ffb9a0e8a67bb589243ab2 (commit) via adbe990efa0b18e524a299660bbd410d4deb2e8b (commit) via be1925bcab75644eef978669e34a4a2ff7d5aa2c (commit) via 2435f0cb43f157dd2607e8f21515d91870ea2ec1 (commit) via 1d627130ecae5a1358ee9ca79b328827e862c0ca (commit) via 025b7ad557b27ef0964e4b218549703f4d34e946 (commit) via b7d60471a2c50eae9a8783d833c634d5e32f8393 (commit) via bb1f8ba08bc7ca7c2de4d85976784697bc763cc7 (commit) via 3c620eb4681704248645eb2c54b32e190f15d8f0 (commit) via 79b5ee0179796c3dd0d741eabdd949133b1388af (commit) via cecd6ab4b2278475ee68efb94abc0d884c746d50 (commit) via 40e38688a14e19c8e4f45e3953e15cc4836d6ee4 (commit) via 7f4fcdeeb459bb796fc6aea95b80e45afb381246 (commit) via fa22f9276657ce533eb57ee7d2c3c57dd4dfd1cc (commit) via 12788f633fc402cd94078575554595539420d170 (commit) via 82b312a9d212029fb12e2bf6afa6dc44ab9599d9 (commit) via 35a8f5f0a5f900281a1f5ca271495eb3aeaf9ab4 (commit) via d3cb99ade243035401010fb72b883124f1fa06a5 (commit) via c1b57e252c87ed33f5be9bf198fe5ffe331c9d72 (commit) via e967320c35488b13cf6dd77b0745fc8c6f083d68 (commit) via 3bdc0102722bdbccd4429f0b38c4fb6a21f3f1c8 (commit) via 946a2afee8ac9b5a97ba3347ae4eb4db10dd66bf (commit) via 45fba4eaff00c74564fb4a07fe8f62b11e723f92 (commit) via 13c68f8755cd382efc422502a641d6d05e50b972 (commit) via 1d8e8da1aa94c6aa1516dc3db41fe655ad4e26d8 (commit) via 0ca893626a6236c17ef8f64cac2683e52dc4b6da (commit) via a97fad0546c235f07cd2e2c89cea03636d5709fb (commit) via e10e39ce47db91bd96f4e6f4cd9eb9fd57eaa440 (commit) via f5bbd27c5c2d3fc067a15fab26fc21b443453cbe (commit) via c9d81eaa3e9bb47279057dfbe7b7f37cca74ba75 (commit) via b7f61020d5be1f081f6417988047322a48498644 (commit) via 44cd45279df4b2a4cc768e11ec5f5ebe0f2a5b85 (commit) via 265f6b972fde7e32566ee2e404cc1ab88c44b1f3 (commit) via 70166a4fc6da2c9b5075f4ef74e7175978c01e59 (commit) via cddcce4398f7027348d81944c874409fec764808 (commit) via af5bc44b8def2b251161d8beb7f901e174ab7719 (commit) via 4e7ac1a760eb33435c347a8f6518aa31312dd2ef (commit) via 4c7123bbf67b9a8e78d91309a99b75cb18cd078c (commit) via c20a0bb9806c5116766df754343c6676973a7837 (commit) via 65e6c81f1e0b076d97cfd7fa5b635379fe283787 (commit) via 51537b2aa8802586e6401785081b7f1fe6f39863 (commit) via 8d35adb5b986bb31a3dd5b49c059614aa57ea09d (commit) via 93cb6ff233660b10803e8c7bb2eb4a0a9bc3dd7a (commit) via ca2b2688bf12e963a7c3d0fa0d00950f72e80785 (commit) via 72d2cdfde7bee20c96b82f592ea28d273ff1801b (commit) via 2dda66c97dcfcbdef7b2afd83e7b6f80e1316c86 (commit) via 4d156ef691138d5da786db9507e1078882cdece6 (commit) via c9e01c8cb87ff79a6fbb3a98e552757072c251ef (commit) via af4bfa79951880aebfa0a6ae22b9f583624ebac9 (commit) via bbeb390b2d475d79ad5f8cabf3b69f5a52fbd3a8 (commit) via d499764561ea118edb223009d615d374ceb9508f (commit) via ce346d23a406a3de2893d4b719f68a1a537949e2 (commit) via a1efb5dcc41a32a83644005d150420cb71e07f69 (commit) via 466a93593959397ed860711a00119041c5ffb038 (commit) via 5ac2ed47781a5f70a24b9ecf3339010bb06d470c (commit) from f00884a05f20ce160d6d557601f995cbc013b595 (commit)
Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below.
- Log ----------------------------------------------------------------- commit 274054142e3033aabf5cb1b89d86fa430dee5d72 Author: Arne Fitzenreiter arne_f@ipfire.org Date: Sat Aug 25 18:02:59 2012 +0200
kernel: fix xen kernel build with updated toolchain.
-----------------------------------------------------------------------
Summary of changes: config/acpid/power | 4 + config/acpid/power.sh | 4 + config/minidlna/minidlna.conf | 67 + config/rootfiles/common/armv5tel/gcc | 1279 +- config/rootfiles/common/cairo | 99 + config/rootfiles/common/cmake | 845 +- config/rootfiles/common/coreutils | 6 +- config/rootfiles/common/file | 6 +- config/rootfiles/{packages => common}/fontconfig | 11 +- config/rootfiles/common/gettext | 578 +- config/rootfiles/{packages => common}/glib | 405 +- config/rootfiles/common/gmp | 20 +- config/rootfiles/common/gmp-compat | 2 + config/rootfiles/common/gnupg | 13 +- config/rootfiles/common/grep | 8 +- config/rootfiles/common/hddtemp | 4 - config/rootfiles/common/i586/acpid | 17 + config/rootfiles/common/i586/binutils | 72 +- config/rootfiles/common/i586/gcc | 1305 +- config/rootfiles/common/i586/glibc | 232 +- config/rootfiles/common/i586/grub | 2 + config/rootfiles/common/iproute2 | 39 +- config/rootfiles/common/iptstate | 2 - config/rootfiles/common/libaal | 31 - config/rootfiles/common/libffi | 15 + config/rootfiles/common/libsafe | 4 - config/rootfiles/common/libsigc++ | 70 +- config/rootfiles/common/misc-progs | 1 - config/rootfiles/common/mpfr | 21 + config/rootfiles/common/nasm | 4 +- config/rootfiles/common/ncurses | 370 +- config/rootfiles/common/openldap | 114 +- config/rootfiles/common/openssl | 2 +- config/rootfiles/common/pam | 6 + config/rootfiles/common/pango | 143 + config/rootfiles/common/pcre | 94 +- config/rootfiles/common/pcre-compat | 2 + config/rootfiles/common/pixman | 9 + config/rootfiles/common/readline | 24 +- config/rootfiles/common/readline-compat | 4 + config/rootfiles/common/reiser4progs | 77 - config/rootfiles/common/rrdtool | 242 +- config/rootfiles/common/sed | 6 +- config/rootfiles/common/shadow | 3 +- config/rootfiles/common/stage2 | 21 +- config/rootfiles/common/sysfsutils | 15 - config/rootfiles/common/uClibc | 1353 - config/rootfiles/common/zlib | 6 +- config/rootfiles/core/62/filelists/files | 2 + config/rootfiles/installer/libsafe | 1 - config/rootfiles/installer/pcre | 1 + config/rootfiles/{core => oldcore}/52/exclude | 0 .../{core => oldcore}/52/filelists/apache2 | 0 .../{core => oldcore}/52/filelists/ethtool | 0 .../rootfiles/{core => oldcore}/52/filelists/files | 0 .../rootfiles/{core => oldcore}/52/filelists/squid | 0 config/rootfiles/{core => oldcore}/52/meta | 0 config/rootfiles/{core => oldcore}/52/update.sh | 0 config/rootfiles/{core => oldcore}/53/exclude | 0 .../{core => oldcore}/53/filelists/apache2 | 0 .../rootfiles/{core => oldcore}/53/filelists/files | 0 .../rootfiles/{core => oldcore}/53/filelists/gmp | 0 .../53/filelists/i586/compat-wireless | 0 .../{core => oldcore}/53/filelists/i586/gcc | 0 .../{core => oldcore}/53/filelists/i586/glibc | 0 .../{core => oldcore}/53/filelists/i586/kvm-kmod | 0 .../{core => oldcore}/53/filelists/openvpn | 0 .../{core => oldcore}/53/filelists/strongswan | 0 .../{core => oldcore}/53/filelists/usb_modeswitch | 0 .../53/filelists/usb_modeswitch_data | 0 config/rootfiles/{core => oldcore}/53/meta | 0 config/rootfiles/{core => oldcore}/53/update.sh | 0 config/rootfiles/{core => oldcore}/54/exclude | 0 .../rootfiles/{core => oldcore}/54/filelists/GeoIP | 0 .../54/filelists/armv5tel/intelnet-modules | 0 .../rootfiles/{core => oldcore}/54/filelists/daq | 0 .../{core => oldcore}/54/filelists/dracut | 0 .../rootfiles/{core => oldcore}/54/filelists/files | 0 .../{core => oldcore}/54/filelists/fireinfo | 0 .../{core => oldcore}/54/filelists/fw_ath9k_htc | 0 .../54/filelists/i586/intelnet-modules | 0 .../{core => oldcore}/54/filelists/smartmontools | 0 .../rootfiles/{core => oldcore}/54/filelists/snort | 0 .../rootfiles/{core => oldcore}/54/filelists/squid | 0 .../{core => oldcore}/54/filelists/strongswan | 0 .../{core => oldcore}/54/filelists/tzdata | 0 config/rootfiles/{core => oldcore}/54/meta | 0 config/rootfiles/{core => oldcore}/54/update.sh | 0 config/rootfiles/{core => oldcore}/55/exclude | 0 .../rootfiles/{core => oldcore}/55/filelists/files | 0 .../{core => oldcore}/55/filelists/openssh | 0 .../{core => oldcore}/55/filelists/openssl | 0 config/rootfiles/{core => oldcore}/55/meta | 0 config/rootfiles/{core => oldcore}/55/update.sh | 0 config/rootfiles/{core => oldcore}/56/exclude | 0 .../{core => oldcore}/56/filelists/Crypt-PasswdMD5 | 0 .../rootfiles/{core => oldcore}/56/filelists/files | 0 .../{core => oldcore}/56/filelists/openssh | 0 .../{core => oldcore}/56/filelists/openssl | 0 .../{core => oldcore}/56/filelists/usb_modeswitch | 0 .../56/filelists/usb_modeswitch_data | 0 config/rootfiles/{core => oldcore}/56/meta | 0 config/rootfiles/{core => oldcore}/56/update.sh | 0 config/rootfiles/{core => oldcore}/57/exclude | 0 .../{core => oldcore}/57/filelists/apache2 | 0 .../rootfiles/{core => oldcore}/57/filelists/files | 0 .../rootfiles/{core => oldcore}/57/filelists/php | 0 .../rootfiles/{core => oldcore}/57/filelists/squid | 0 .../{core => oldcore}/57/filelists/strongswan | 0 .../rootfiles/{core => oldcore}/57/filelists/vim | 0 config/rootfiles/{core => oldcore}/57/meta | 0 config/rootfiles/{core => oldcore}/57/update.sh | 0 config/rootfiles/{core => oldcore}/58/exclude | 0 .../rootfiles/{core => oldcore}/58/filelists/GeoIP | 0 .../{core => oldcore}/58/filelists/Net-Telnet | 0 .../58/filelists/armv5tel/cryptodev | 0 .../rootfiles/{core => oldcore}/58/filelists/files | 0 .../{core => oldcore}/58/filelists/fireinfo | 0 .../{core => oldcore}/58/filelists/hwdata | 0 .../{core => oldcore}/58/filelists/i586/cryptodev | 0 .../{core => oldcore}/58/filelists/libpng | 0 .../{core => oldcore}/58/filelists/openssh | 0 .../{core => oldcore}/58/filelists/openssl | 0 .../{core => oldcore}/58/filelists/openvpn | 0 .../{core => oldcore}/58/filelists/strongswan | 0 .../{core => oldcore}/58/filelists/usb_modeswitch | 0 config/rootfiles/{core => oldcore}/58/meta | 0 config/rootfiles/{core => oldcore}/58/update.sh | 0 config/rootfiles/{core => oldcore}/59/exclude | 0 .../rootfiles/{core => oldcore}/59/filelists/GeoIP | 0 .../{core => oldcore}/59/filelists/Net-Telnet | 0 .../rootfiles/{core => oldcore}/59/filelists/files | 0 .../{core => oldcore}/59/filelists/openssh | 0 .../{core => oldcore}/59/filelists/openssl | 0 .../rootfiles/{core => oldcore}/59/filelists/php | 0 .../{core => oldcore}/59/filelists/python | 0 .../{core => oldcore}/59/filelists/strongswan | 0 config/rootfiles/{core => oldcore}/59/meta | 0 config/rootfiles/{core => oldcore}/59/update.sh | 0 config/rootfiles/packages/applejuice | 141 - config/rootfiles/packages/centerim | 10 - config/rootfiles/packages/dahdi | 63 +- config/rootfiles/packages/flac | 314 + config/rootfiles/packages/gnump3d | 20 +- config/rootfiles/packages/hplip | 529 +- config/rootfiles/packages/libexif | 64 + config/rootfiles/packages/libogg | 156 +- config/rootfiles/packages/libsolv | 23 +- config/rootfiles/packages/libvorbis | 267 +- config/rootfiles/packages/minidlna | 2 + config/rootfiles/packages/splix | 87 - config/syslinux/syslinux.cfg | 6 +- config/uClibc/busybox.config | 643 - config/uClibc/codesets.txt | 2 - config/uClibc/locales.txt | 8 - config/uClibc/uClibc.config-i586 | 175 - html/cgi-bin/connections.cgi | 94 +- lfs/Config | 2 + lfs/{libvorbis => acpid} | 28 +- lfs/apcupsd | 1 + lfs/bash | 13 +- lfs/binutils | 55 +- lfs/{centerim => cairo} | 15 +- lfs/capi4k-utils | 1 + lfs/ccache | 40 +- lfs/cleanup-toolchain | 43 +- lfs/cmake | 2 +- lfs/coreutils | 3 +- lfs/cyrus-sasl | 1 + lfs/dahdi | 24 +- lfs/dbus | 1 + lfs/directfb | 1 + lfs/fake-environ | 2 +- lfs/{libmad => flac} | 25 +- lfs/fontconfig | 7 - lfs/gawk | 2 + lfs/gcc | 195 +- lfs/gettext | 17 +- lfs/glib | 19 +- lfs/glibc | 194 +- lfs/gmp | 4 +- lfs/{gmp => gmp-compat} | 7 +- lfs/gnupg | 4 +- lfs/grep | 14 +- lfs/grub | 58 +- lfs/hddtemp | 76 - lfs/hplip | 6 +- lfs/hwdata | 11 +- lfs/icecc | 7 +- lfs/imspector | 1 + lfs/inetutils | 1 + lfs/iproute2 | 15 +- lfs/kbd | 18 +- lfs/kudzu | 15 +- lfs/{libmad => libexif} | 14 +- lfs/{libaal => libffi} | 10 +- lfs/libmad | 4 + lfs/libnl | 1 + lfs/libogg | 10 +- lfs/libsafe | 78 - lfs/libsigc++ | 5 +- lfs/libsolv | 27 +- lfs/libvorbis | 12 +- lfs/linux2 | 8 +- lfs/m4 | 4 +- lfs/make | 2 +- lfs/{libmad => minidlna} | 19 +- lfs/miniupnpd | 7 +- lfs/misc-progs | 11 +- lfs/{reiser4progs => mpfr} | 9 +- lfs/nasm | 9 +- lfs/ncurses | 77 +- lfs/netpbm | 1 + lfs/newt | 15 +- lfs/openldap | 37 +- lfs/{libsigc++ => pango} | 12 +- lfs/pciutils | 6 +- lfs/pcmciautils | 21 +- lfs/pcre | 17 +- lfs/{iptstate => pcre-compat} | 11 +- lfs/php | 4 +- lfs/{libaal => pixman} | 6 +- lfs/popt | 13 +- lfs/postfix | 3 + lfs/pptp | 1 + lfs/qemu | 6 +- lfs/readline | 21 +- lfs/{applejuice => readline-compat} | 34 +- lfs/reiserfsprogs | 12 +- lfs/rrdtool | 17 +- lfs/screen | 1 + lfs/sed | 8 +- lfs/slang | 14 +- lfs/splix | 86 - lfs/stage2 | 4 +- lfs/strip | 24 +- lfs/sysfsutils | 13 +- lfs/sysvinit | 12 +- lfs/udev | 6 +- lfs/util-linux | 32 +- lfs/vdr | 4 + lfs/wget | 12 +- lfs/xfsprogs | 3 + lfs/xz | 11 +- lfs/zlib | 38 +- make.sh | 116 +- src/fake-environ/Makefile | 2 +- src/install+setup/install/Makefile | 4 +- src/install+setup/install/main.c | 9 + src/install+setup/install/mountdest.sh | 2 +- src/install+setup/libsmooth/Makefile | 2 +- src/misc-progs/Makefile | 2 +- src/misc-progs/getiptstate.c | 24 - src/paks/applejuice/install.sh | 30 - src/paks/applejuice/uninstall.sh | 27 - src/paks/applejuice/update.sh | 26 - src/patches/apcupsd-3.14.4-fix-gcc44.patch | 17 + src/patches/bash-3.1-fixes-8.patch | 723 - src/patches/bash-3.1-login.patch | 15 - src/patches/bash/bash32-001 | 47 + src/patches/bash/bash32-002 | 48 + src/patches/bash/bash32-003 | 147 + src/patches/bash/bash32-004 | 96 + src/patches/bash/bash32-005 | 223 + src/patches/bash/bash32-006 | 45 + src/patches/bash/bash32-007 | 55 + src/patches/bash/bash32-008 | 48 + src/patches/bash/bash32-009 | 61 + src/patches/bash/bash32-010 | 207 + src/patches/bash/bash32-011 | 138 + src/patches/bash/bash32-012 | 96 + src/patches/bash/bash32-013 | 65 + src/patches/bash/bash32-014 | 307 + src/patches/bash/bash32-015 | 95 + src/patches/bash/bash32-016 | 52 + src/patches/bash/bash32-017 | 85 + src/patches/bash/bash32-018 | 98 + src/patches/bash/bash32-019 | 343 + src/patches/bash/bash32-020 | 183 + src/patches/bash/bash32-021 | 72 + src/patches/bash/bash32-022 | 126 + src/patches/bash/bash32-023 | 51 + src/patches/bash/bash32-024 | 77 + src/patches/bash/bash32-025 | 79 + src/patches/bash/bash32-026 | 82 + src/patches/bash/bash32-027 | 85 + src/patches/bash/bash32-028 | 60 + src/patches/bash/bash32-029 | 52 + src/patches/bash/bash32-030 | 50 + src/patches/bash/bash32-031 | 62 + src/patches/bash/bash32-032 | 47 + src/patches/bash/bash32-033 | 88 + src/patches/bash/bash32-034 | 74 + src/patches/bash/bash32-035 | 159 + src/patches/bash/bash32-036 | 44 + src/patches/bash/bash32-037 | 110 + src/patches/bash/bash32-038 | 80 + src/patches/bash/bash32-039 | 175 + src/patches/bash/bash32-040 | 47 + src/patches/bash/bash32-041 | 154 + src/patches/bash/bash32-042 | 48 + src/patches/bash/bash32-043 | 62 + src/patches/bash/bash32-044 | 150 + src/patches/bash/bash32-045 | 50 + src/patches/bash/bash32-046 | 47 + src/patches/bash/bash32-047 | 65 + src/patches/bash/bash32-048 | 56 + src/patches/bash/bash32-049 | 64 + src/patches/bash/bash32-050 | 56 + src/patches/bash/bash32-051 | 46 + src/patches/binutils-2.18-configure-1.patch | 19 - src/patches/coreutils-5.96-futimes.patch | 56 + src/patches/cyrus-sasl-2.1.22-bad-elif.patch | 21 + src/patches/dbus-1.0.3-compile-fix-1.patch | 11 + src/patches/directfb-1.1.1-fix-mknod.patch | 26 + src/patches/flac-1.2.1-asm.patch | 73 + src/patches/flac-1.2.1-bitreader.patch | 558 + src/patches/flac-1.2.1-cflags.patch | 45 + src/patches/flac-1.2.1-gcc43.patch | 11 + src/patches/flac-1.2.1-hidesyms.patch | 39 + src/patches/flac-1.2.1-tests.patch | 41 + src/patches/gcc-4.0.4-specs-1.patch | 336 - src/patches/gcc-4.1.2-arm-linux-soft-float.patch | 30 - .../gcc-4.1.2-fix_linker_version_detection.patch | 12 - src/patches/gcc-4.1.2-gcc_eh.patch | 24 - src/patches/gcc-4.1.2-specs-1.patch | 507 - src/patches/gcc-4.4.3-startfiles_fix-1.patch | 33 + src/patches/gcc-libstdc++-pic.patch | 45 - src/patches/gcc-sdk-libstdc++-includes.patch | 22 - src/patches/gcc-uclibc-conf.patch | 553 - src/patches/gcc-uclibc-locale.patch | 3237 -- src/patches/gcc/gcc44-build-id.patch | 52 + src/patches/gcc/gcc44-c++-builtin-redecl.patch | 102 + src/patches/gcc/gcc44-i386-libgomp.patch | 61 + src/patches/gcc/gcc44-libtool-no-rpath.patch | 27 + src/patches/gcc/gcc44-no-add-needed.patch | 52 + src/patches/gcc/gcc44-pr33763.patch | 153 + src/patches/gcc/gcc44-rh330771.patch | 34 + src/patches/gcc/gcc44-rh533181.patch | 153 + src/patches/gcc/gcc44-rh610785.patch | 74 + src/patches/gcc/gcc44-unwind-debug-hook.patch | 51 + src/patches/glibc-cfi-entry-not-closed.patch | 23 + .../glibc-ports-avoid-using-asm-procinfo.patch | 340 - .../glibc-remove-ctors-dtors-output-sections.patch | 150 + src/patches/glibc-resolv-stack_chk_fail.patch | 35 + .../glibc-test-installation.pl-libgcc_s.patch | 97 + .../glibc-test-installation.pl-nss_test1.patch | 31 + src/patches/glibc/glibc-aliasing.patch | 87 + src/patches/glibc/glibc-fedora.patch | 2106 + src/patches/glibc/glibc-getlogin-r.patch | 36 + src/patches/glibc/glibc-localedata.patch | 18 + src/patches/glibc/glibc-recvmmsg.patch | 182 + src/patches/glibc/glibc-rh580498.patch | 296 + src/patches/glibc/glibc-rh582738.patch | 13 + src/patches/glibc/glibc-rh587360.patch | 13 + src/patches/glibc/glibc-rh593396.patch | 42 + src/patches/glibc/glibc-rh593686.patch | 179 + src/patches/glibc/glibc-rh601686.patch | 4640 ++ src/patches/glibc/glibc-rh607010.patch | 26 + src/patches/glibc/glibc-rh607461.patch | 22 + src/patches/glibc/glibc-rh615090.patch | 21 + src/patches/glibc/glibc-rh615701.patch | 23 + src/patches/glibc/glibc-rh621959.patch | 120 + src/patches/glibc/glibc-rh623187.patch | 18 + src/patches/glibc/glibc-rh625893.patch | 79 + src/patches/glibc/glibc-rh630801.patch | 29 + src/patches/glibc/glibc-rh631011.patch | 17 + src/patches/glibc/glibc-rh641128.patch | 78 + src/patches/glibc/glibc-rh642584.patch | 41 + src/patches/glibc/glibc-rh643822.patch | 64 + src/patches/glibc/glibc-rh645672.patch | 215 + src/patches/glibc/glibc-rh646954.patch | 216 + src/patches/glibc/glibc-rh647448.patch | 58 + src/patches/glibc/glibc-rh652661.patch | 21 + src/patches/glibc/glibc-rh656014.patch | 45 + src/patches/glibc/glibc-rh656530.patch | 21 + src/patches/glibc/glibc-rh657572.patch | 141 + src/patches/glibc/glibc-rh661982.patch | 188 + src/patches/glibc/glibc-rh667974.patch | 160 + src/patches/glibc/glibc-rh676076.patch | 714 + src/patches/glibc/glibc-rh676591.patch | 352 + src/patches/glibc/glibc-rh681054.patch | 514 + src/patches/glibc/glibc-rh688720.patch | 1638 + src/patches/glibc/glibc-rh688980.patch | 20 + src/patches/glibc/glibc-rh689471.patch | 333 + src/patches/glibc/glibc-rh692177.patch | 137 + src/patches/glibc/glibc-rh692838.patch | 6165 +++ src/patches/glibc/glibc-rh694386.patch | 86 + src/patches/glibc/glibc-rh695595.patch | 17 + src/patches/glibc/glibc-rh695963.patch | 1284 + src/patches/glibc/glibc-rh696472.patch | 36 + src/patches/glibc/glibc-rh697421.patch | 10 + src/patches/glibc/glibc-rh699724.patch | 188 + src/patches/glibc/glibc-rh700507.patch | 26 + src/patches/glibc/glibc-rh703480.patch | 68 + src/patches/glibc/glibc-rh703481.patch | 875 + src/patches/glibc/glibc-rh705465.patch | 449 + src/patches/glibc/glibc-rh711927.patch | 503 + src/patches/glibc/glibc-rh711987.patch | 136 + src/patches/glibc/glibc-rh712248.patch | 69 + src/patches/glibc/glibc-rh713134.patch | 36 + src/patches/glibc/glibc-rh714823.patch | 126 + src/patches/glibc/glibc-rh718057.patch | 109 + src/patches/glibc/glibc-rh726517.patch | 173 + src/patches/glibc/glibc-rh730379.patch | 34 + src/patches/glibc/glibc-rh731042.patch | 51 + src/patches/glibc/glibc-rh736346.patch | 116 + src/patches/glibc/glibc-rh737778.patch | 122 + src/patches/glibc/glibc-rh738665.patch | 149 + src/patches/glibc/glibc-rh738763.patch | 17 + src/patches/glibc/glibc-rh739184.patch | 18 + src/patches/glibc/glibc-rh739971.patch | 44 + src/patches/glibc/glibc-rh740506-2.patch | 35 + src/patches/glibc/glibc-rh740506.patch | 132 + src/patches/glibc/glibc-rh749188.patch | 32 + src/patches/glibc/glibc-rh750531.patch | 122 + src/patches/glibc/glibc-rh751750.patch | 28 + src/patches/glibc/glibc-rh752122.patch | 260 + src/patches/glibc/glibc-rh757888.patch | 225 + src/patches/glibc/glibc-rh766513.patch | 14 + src/patches/glibc/glibc-rh767146.patch | 21 + src/patches/glibc/glibc-rh767693-2.patch | 79 + src/patches/glibc/glibc-rh767693.patch | 89 + src/patches/glibc/glibc-rh767746.patch | 14 + src/patches/glibc/glibc-rh771342.patch | 155 + src/patches/glibc/glibc-rh782585.patch | 329 + src/patches/glibc/glibc-rh784402.patch | 166 + src/patches/glibc/glibc-rh785984.patch | 20 + src/patches/glibc/glibc-rh788959-2.patch | 153 + src/patches/glibc/glibc-rh788959.patch | 130 + src/patches/glibc/glibc-rh789189.patch | 12 + src/patches/glibc/glibc-rh789209.patch | 12 + src/patches/glibc/glibc-rh789238-2.patch | 114 + src/patches/glibc/glibc-rh789238.patch | 119 + src/patches/glibc/glibc-rh794817-2.patch | 85 + src/patches/glibc/glibc-rh794817.patch | 239 + src/patches/glibc/glibc-rh795498.patch | 13 + src/patches/glibc/glibc-rh797094-1.patch | 657 + src/patches/glibc/glibc-rh797094-2.patch | 862 + src/patches/glibc/glibc-rh804630.patch | 23 + src/patches/glibc/glibc-rh804689.patch | 23 + src/patches/glibc/glibc-rh808337.patch | 21 + src/patches/glibc/glibc-rh808545.patch | 44 + src/patches/glibc/glibc-rh809602.patch | 47 + src/patches/glibc/glibc-rh833716.patch |45265 ++++++++++++++++++ src/patches/glibc/glibc-rh837026.patch | 30 + src/patches/grep-2.5.1a-redhat_fixes-2.patch | 2109 - src/patches/grub-0.90-append.patch | 111 - src/patches/grub-0.90-symlinkmenulst.patch | 16 - src/patches/grub-0.91-splashimagehelp.patch | 28 - src/patches/grub-0.93-configfile.patch | 75 - src/patches/grub-0.93-endedit.patch | 77 - src/patches/grub-0.93-graphics-bootterm.patch | 39 - src/patches/grub-0.93-special-device-names.patch | 18 - src/patches/grub-0.94-i2o.patch | 45 - src/patches/grub-0.94-installcopyonly.patch | 85 - src/patches/grub-0.95-graphics.patch | 1283 - src/patches/grub-0.95-hiddenmenu-tweak.patch | 39 - src/patches/grub-0.95-md-mbr.patch | 11 - src/patches/grub-0.95-md-rework.patch | 183 - src/patches/grub-0.95-md.patch | 183 - src/patches/grub-0.95-moreraid.patch | 100 - src/patches/grub-0.95-nonmbr.patch | 14 - src/patches/grub-0.95-odirect.patch | 115 - src/patches/grub-0.95-recheck-bad.patch | 83 - src/patches/grub-0.95-splash-error-term.patch | 25 - src/patches/grub-0.95-staticcurses.patch | 14 - src/patches/grub-0.95-xpmjunk.patch | 55 - src/patches/grub-0.97-bz429187-cciss.patch | 75 - src/patches/grub-0.97-cmdline-size.patch | 45 - src/patches/grub-0.97-datadir.patch | 229 - src/patches/grub-0.97-disk_geometry-1.patch | 892 - src/patches/grub-0.97-dmraid-partition-names.patch | 10 - src/patches/grub-0.97-dmraid-recheck-bad.patch | 17 - src/patches/grub-0.97-dmraid.patch | 92 - src/patches/grub-0.97-install.in.patch | 34 - src/patches/grub-0.97-mactel-kbd.patch | 100 - src/patches/grub-0.97-mdadm-path.patch | 27 - src/patches/grub-0.97-mpath.patch | 18 - src/patches/grub-0.97-nx-multiinstall.patch | 60 - src/patches/grub-0.97-nxstack.patch | 615 - src/patches/grub-0.97-once.patch | 513 - src/patches/grub-0.97-prototypes.patch | 11 - src/patches/grub-0.97-stderr.patch | 102 - src/patches/grub-0.97_grub-install_virtio.patch | 52 - src/patches/grub-fedora-18.patch |48870 ++++++++++++++++++++ src/patches/icecream-0.9.7-platform-arm.patch | 22 + src/patches/libmad-0.15.1b-cflags-O2.patch | 12 + src/patches/libmad-0.15.1b-cflags.patch | 146 + src/patches/libnl-1.1-ULONG_MAX.patch | 11 + src/patches/libsafe-alpha.diff | 232 - src/patches/libsafe-functioncaching.diff | 258 - src/patches/libsigc++-gcc43.patch | 85 + src/patches/miniupnpd-1.4_use_XT_ALIGN.patch | 47 - src/patches/miniupnpd-iptcrdr.patch | 16 - src/patches/ncurses-5.5-fixes-1.patch | 225 - src/patches/netpbm-10.26.46-getline.patch | 202 + src/patches/openldap-gcc44-fixes.patch | 31 + src/patches/pptp-1.7.2-compat.patch | 71 + src/patches/readline-5.1-fixes-3.patch | 128 - src/patches/readline/readline52-001 | 30 + src/patches/readline/readline52-002 | 49 + src/patches/readline/readline52-003 | 37 + src/patches/readline/readline52-004 | 70 + src/patches/readline/readline52-005 | 328 + src/patches/readline/readline52-006 | 62 + src/patches/readline/readline52-007 | 65 + src/patches/readline/readline52-008 | 70 + src/patches/readline/readline52-009 | 45 + src/patches/readline/readline52-010 | 47 + src/patches/readline/readline52-011 | 32 + src/patches/readline/readline52-012 | 150 + src/patches/readline/readline52-013 | 135 + src/patches/readline/readline52-014 | 49 + src/patches/readline/readline62-001 | 46 + src/patches/readline/readline62-002 | 57 + src/patches/readline/readline62-003 | 76 + src/patches/readline/readline62-004 | 108 + src/patches/screen-4.0.3-stropts.patch | 48 + src/patches/slang-1.4.9-uclibc.patch | 12 - src/patches/uClibc-gcc4-genwctype.patch | 11 - src/patches/vdr-1.6.0-gcc44-fixes.patch | 62 + src/patches/vdr-plugin-epgsearch-gcc44.patch | 78 + src/stripper | 57 + tools/make-functions | 45 +- 525 files changed, 137462 insertions(+), 20658 deletions(-) create mode 100644 config/acpid/power create mode 100644 config/acpid/power.sh create mode 100644 config/minidlna/minidlna.conf create mode 100644 config/rootfiles/common/cairo rename config/rootfiles/{packages => common}/fontconfig (99%) rename config/rootfiles/{packages => common}/glib (62%) create mode 100644 config/rootfiles/common/gmp-compat delete mode 100644 config/rootfiles/common/hddtemp create mode 100644 config/rootfiles/common/i586/acpid delete mode 100644 config/rootfiles/common/iptstate delete mode 100644 config/rootfiles/common/libaal create mode 100644 config/rootfiles/common/libffi delete mode 100644 config/rootfiles/common/libsafe create mode 100644 config/rootfiles/common/mpfr create mode 100644 config/rootfiles/common/pango create mode 100644 config/rootfiles/common/pcre-compat create mode 100644 config/rootfiles/common/pixman create mode 100644 config/rootfiles/common/readline-compat delete mode 100644 config/rootfiles/common/reiser4progs delete mode 100644 config/rootfiles/common/uClibc delete mode 120000 config/rootfiles/installer/libsafe create mode 120000 config/rootfiles/installer/pcre rename config/rootfiles/{core => oldcore}/52/exclude (100%) rename config/rootfiles/{core => oldcore}/52/filelists/apache2 (100%) rename config/rootfiles/{core => oldcore}/52/filelists/ethtool (100%) rename config/rootfiles/{core => oldcore}/52/filelists/files (100%) rename config/rootfiles/{core => oldcore}/52/filelists/squid (100%) rename config/rootfiles/{core => oldcore}/52/meta (100%) rename config/rootfiles/{core => oldcore}/52/update.sh (100%) rename config/rootfiles/{core => oldcore}/53/exclude (100%) rename config/rootfiles/{core => oldcore}/53/filelists/apache2 (100%) rename config/rootfiles/{core => oldcore}/53/filelists/files (100%) rename config/rootfiles/{core => oldcore}/53/filelists/gmp (100%) rename config/rootfiles/{core => oldcore}/53/filelists/i586/compat-wireless (100%) rename config/rootfiles/{core => oldcore}/53/filelists/i586/gcc (100%) rename config/rootfiles/{core => oldcore}/53/filelists/i586/glibc (100%) rename config/rootfiles/{core => oldcore}/53/filelists/i586/kvm-kmod (100%) rename config/rootfiles/{core => oldcore}/53/filelists/openvpn (100%) rename config/rootfiles/{core => oldcore}/53/filelists/strongswan (100%) rename config/rootfiles/{core => oldcore}/53/filelists/usb_modeswitch (100%) rename config/rootfiles/{core => oldcore}/53/filelists/usb_modeswitch_data (100%) rename config/rootfiles/{core => oldcore}/53/meta (100%) rename config/rootfiles/{core => oldcore}/53/update.sh (100%) rename config/rootfiles/{core => oldcore}/54/exclude (100%) rename config/rootfiles/{core => oldcore}/54/filelists/GeoIP (100%) rename config/rootfiles/{core => oldcore}/54/filelists/armv5tel/intelnet-modules (100%) rename config/rootfiles/{core => oldcore}/54/filelists/daq (100%) rename config/rootfiles/{core => oldcore}/54/filelists/dracut (100%) rename config/rootfiles/{core => oldcore}/54/filelists/files (100%) rename config/rootfiles/{core => oldcore}/54/filelists/fireinfo (100%) rename config/rootfiles/{core => oldcore}/54/filelists/fw_ath9k_htc (100%) rename config/rootfiles/{core => oldcore}/54/filelists/i586/intelnet-modules (100%) rename config/rootfiles/{core => oldcore}/54/filelists/smartmontools (100%) rename config/rootfiles/{core => oldcore}/54/filelists/snort (100%) rename config/rootfiles/{core => oldcore}/54/filelists/squid (100%) rename config/rootfiles/{core => oldcore}/54/filelists/strongswan (100%) rename config/rootfiles/{core => oldcore}/54/filelists/tzdata (100%) rename config/rootfiles/{core => oldcore}/54/meta (100%) rename config/rootfiles/{core => oldcore}/54/update.sh (100%) rename config/rootfiles/{core => oldcore}/55/exclude (100%) rename config/rootfiles/{core => oldcore}/55/filelists/files (100%) rename config/rootfiles/{core => oldcore}/55/filelists/openssh (100%) rename config/rootfiles/{core => oldcore}/55/filelists/openssl (100%) rename config/rootfiles/{core => oldcore}/55/meta (100%) rename config/rootfiles/{core => oldcore}/55/update.sh (100%) rename config/rootfiles/{core => oldcore}/56/exclude (100%) rename config/rootfiles/{core => oldcore}/56/filelists/Crypt-PasswdMD5 (100%) rename config/rootfiles/{core => oldcore}/56/filelists/files (100%) rename config/rootfiles/{core => oldcore}/56/filelists/openssh (100%) rename config/rootfiles/{core => oldcore}/56/filelists/openssl (100%) rename config/rootfiles/{core => oldcore}/56/filelists/usb_modeswitch (100%) rename config/rootfiles/{core => oldcore}/56/filelists/usb_modeswitch_data (100%) rename config/rootfiles/{core => oldcore}/56/meta (100%) rename config/rootfiles/{core => oldcore}/56/update.sh (100%) rename config/rootfiles/{core => oldcore}/57/exclude (100%) rename config/rootfiles/{core => oldcore}/57/filelists/apache2 (100%) rename config/rootfiles/{core => oldcore}/57/filelists/files (100%) rename config/rootfiles/{core => oldcore}/57/filelists/php (100%) rename config/rootfiles/{core => oldcore}/57/filelists/squid (100%) rename config/rootfiles/{core => oldcore}/57/filelists/strongswan (100%) rename config/rootfiles/{core => oldcore}/57/filelists/vim (100%) rename config/rootfiles/{core => oldcore}/57/meta (100%) rename config/rootfiles/{core => oldcore}/57/update.sh (100%) rename config/rootfiles/{core => oldcore}/58/exclude (100%) rename config/rootfiles/{core => oldcore}/58/filelists/GeoIP (100%) rename config/rootfiles/{core => oldcore}/58/filelists/Net-Telnet (100%) rename config/rootfiles/{core => oldcore}/58/filelists/armv5tel/cryptodev (100%) rename config/rootfiles/{core => oldcore}/58/filelists/files (100%) rename config/rootfiles/{core => oldcore}/58/filelists/fireinfo (100%) rename config/rootfiles/{core => oldcore}/58/filelists/hwdata (100%) rename config/rootfiles/{core => oldcore}/58/filelists/i586/cryptodev (100%) rename config/rootfiles/{core => oldcore}/58/filelists/libpng (100%) rename config/rootfiles/{core => oldcore}/58/filelists/openssh (100%) rename config/rootfiles/{core => oldcore}/58/filelists/openssl (100%) rename config/rootfiles/{core => oldcore}/58/filelists/openvpn (100%) rename config/rootfiles/{core => oldcore}/58/filelists/strongswan (100%) rename config/rootfiles/{core => oldcore}/58/filelists/usb_modeswitch (100%) rename config/rootfiles/{core => oldcore}/58/meta (100%) rename config/rootfiles/{core => oldcore}/58/update.sh (100%) rename config/rootfiles/{core => oldcore}/59/exclude (100%) rename config/rootfiles/{core => oldcore}/59/filelists/GeoIP (100%) rename config/rootfiles/{core => oldcore}/59/filelists/Net-Telnet (100%) rename config/rootfiles/{core => oldcore}/59/filelists/files (100%) rename config/rootfiles/{core => oldcore}/59/filelists/openssh (100%) rename config/rootfiles/{core => oldcore}/59/filelists/openssl (100%) rename config/rootfiles/{core => oldcore}/59/filelists/php (100%) rename config/rootfiles/{core => oldcore}/59/filelists/python (100%) rename config/rootfiles/{core => oldcore}/59/filelists/strongswan (100%) rename config/rootfiles/{core => oldcore}/59/meta (100%) rename config/rootfiles/{core => oldcore}/59/update.sh (100%) delete mode 100644 config/rootfiles/packages/applejuice delete mode 100644 config/rootfiles/packages/centerim create mode 100644 config/rootfiles/packages/flac create mode 100644 config/rootfiles/packages/libexif create mode 100644 config/rootfiles/packages/minidlna delete mode 100644 config/rootfiles/packages/splix delete mode 100644 config/uClibc/busybox.config delete mode 100644 config/uClibc/codesets.txt delete mode 100644 config/uClibc/locales.txt delete mode 100644 config/uClibc/uClibc.config-i586 copy lfs/{libvorbis => acpid} (85%) rename lfs/{centerim => cairo} (92%) copy lfs/{libmad => flac} (78%) copy lfs/{gmp => gmp-compat} (94%) delete mode 100644 lfs/hddtemp copy lfs/{libmad => libexif} (91%) copy lfs/{libaal => libffi} (96%) delete mode 100644 lfs/libsafe copy lfs/{libmad => minidlna} (87%) rename lfs/{reiser4progs => mpfr} (93%) copy lfs/{libsigc++ => pango} (91%) rename lfs/{iptstate => pcre-compat} (92%) rename lfs/{libaal => pixman} (96%) rename lfs/{applejuice => readline-compat} (82%) delete mode 100644 lfs/splix delete mode 100644 src/misc-progs/getiptstate.c delete mode 100644 src/paks/applejuice/install.sh delete mode 100644 src/paks/applejuice/uninstall.sh delete mode 100644 src/paks/applejuice/update.sh create mode 100644 src/patches/apcupsd-3.14.4-fix-gcc44.patch delete mode 100644 src/patches/bash-3.1-fixes-8.patch delete mode 100644 src/patches/bash-3.1-login.patch create mode 100644 src/patches/bash/bash32-001 create mode 100644 src/patches/bash/bash32-002 create mode 100644 src/patches/bash/bash32-003 create mode 100644 src/patches/bash/bash32-004 create mode 100644 src/patches/bash/bash32-005 create mode 100644 src/patches/bash/bash32-006 create mode 100644 src/patches/bash/bash32-007 create mode 100644 src/patches/bash/bash32-008 create mode 100644 src/patches/bash/bash32-009 create mode 100644 src/patches/bash/bash32-010 create mode 100644 src/patches/bash/bash32-011 create mode 100644 src/patches/bash/bash32-012 create mode 100644 src/patches/bash/bash32-013 create mode 100644 src/patches/bash/bash32-014 create mode 100644 src/patches/bash/bash32-015 create mode 100644 src/patches/bash/bash32-016 create mode 100644 src/patches/bash/bash32-017 create mode 100644 src/patches/bash/bash32-018 create mode 100644 src/patches/bash/bash32-019 create mode 100644 src/patches/bash/bash32-020 create mode 100644 src/patches/bash/bash32-021 create mode 100644 src/patches/bash/bash32-022 create mode 100644 src/patches/bash/bash32-023 create mode 100644 src/patches/bash/bash32-024 create mode 100644 src/patches/bash/bash32-025 create mode 100644 src/patches/bash/bash32-026 create mode 100644 src/patches/bash/bash32-027 create mode 100644 src/patches/bash/bash32-028 create mode 100644 src/patches/bash/bash32-029 create mode 100644 src/patches/bash/bash32-030 create mode 100644 src/patches/bash/bash32-031 create mode 100644 src/patches/bash/bash32-032 create mode 100644 src/patches/bash/bash32-033 create mode 100644 src/patches/bash/bash32-034 create mode 100644 src/patches/bash/bash32-035 create mode 100644 src/patches/bash/bash32-036 create mode 100644 src/patches/bash/bash32-037 create mode 100644 src/patches/bash/bash32-038 create mode 100644 src/patches/bash/bash32-039 create mode 100644 src/patches/bash/bash32-040 create mode 100644 src/patches/bash/bash32-041 create mode 100644 src/patches/bash/bash32-042 create mode 100644 src/patches/bash/bash32-043 create mode 100644 src/patches/bash/bash32-044 create mode 100644 src/patches/bash/bash32-045 create mode 100644 src/patches/bash/bash32-046 create mode 100644 src/patches/bash/bash32-047 create mode 100644 src/patches/bash/bash32-048 create mode 100644 src/patches/bash/bash32-049 create mode 100644 src/patches/bash/bash32-050 create mode 100644 src/patches/bash/bash32-051 delete mode 100644 src/patches/binutils-2.18-configure-1.patch create mode 100644 src/patches/coreutils-5.96-futimes.patch create mode 100644 src/patches/cyrus-sasl-2.1.22-bad-elif.patch create mode 100644 src/patches/dbus-1.0.3-compile-fix-1.patch create mode 100644 src/patches/directfb-1.1.1-fix-mknod.patch create mode 100644 src/patches/flac-1.2.1-asm.patch create mode 100644 src/patches/flac-1.2.1-bitreader.patch create mode 100644 src/patches/flac-1.2.1-cflags.patch create mode 100644 src/patches/flac-1.2.1-gcc43.patch create mode 100644 src/patches/flac-1.2.1-hidesyms.patch create mode 100644 src/patches/flac-1.2.1-tests.patch delete mode 100644 src/patches/gcc-4.0.4-specs-1.patch delete mode 100644 src/patches/gcc-4.1.2-arm-linux-soft-float.patch delete mode 100644 src/patches/gcc-4.1.2-fix_linker_version_detection.patch delete mode 100644 src/patches/gcc-4.1.2-gcc_eh.patch delete mode 100644 src/patches/gcc-4.1.2-specs-1.patch create mode 100644 src/patches/gcc-4.4.3-startfiles_fix-1.patch delete mode 100644 src/patches/gcc-libstdc++-pic.patch delete mode 100644 src/patches/gcc-sdk-libstdc++-includes.patch delete mode 100644 src/patches/gcc-uclibc-conf.patch delete mode 100644 src/patches/gcc-uclibc-locale.patch create mode 100644 src/patches/gcc/gcc44-build-id.patch create mode 100644 src/patches/gcc/gcc44-c++-builtin-redecl.patch create mode 100644 src/patches/gcc/gcc44-i386-libgomp.patch create mode 100644 src/patches/gcc/gcc44-libtool-no-rpath.patch create mode 100644 src/patches/gcc/gcc44-no-add-needed.patch create mode 100644 src/patches/gcc/gcc44-pr33763.patch create mode 100644 src/patches/gcc/gcc44-rh330771.patch create mode 100644 src/patches/gcc/gcc44-rh533181.patch create mode 100644 src/patches/gcc/gcc44-rh610785.patch create mode 100644 src/patches/gcc/gcc44-unwind-debug-hook.patch create mode 100644 src/patches/glibc-cfi-entry-not-closed.patch delete mode 100644 src/patches/glibc-ports-avoid-using-asm-procinfo.patch create mode 100644 src/patches/glibc-remove-ctors-dtors-output-sections.patch create mode 100644 src/patches/glibc-resolv-stack_chk_fail.patch create mode 100644 src/patches/glibc-test-installation.pl-libgcc_s.patch create mode 100644 src/patches/glibc-test-installation.pl-nss_test1.patch create mode 100644 src/patches/glibc/glibc-aliasing.patch create mode 100644 src/patches/glibc/glibc-fedora.patch create mode 100644 src/patches/glibc/glibc-getlogin-r.patch create mode 100644 src/patches/glibc/glibc-localedata.patch create mode 100644 src/patches/glibc/glibc-recvmmsg.patch create mode 100644 src/patches/glibc/glibc-rh580498.patch create mode 100644 src/patches/glibc/glibc-rh582738.patch create mode 100644 src/patches/glibc/glibc-rh587360.patch create mode 100644 src/patches/glibc/glibc-rh593396.patch create mode 100644 src/patches/glibc/glibc-rh593686.patch create mode 100644 src/patches/glibc/glibc-rh601686.patch create mode 100644 src/patches/glibc/glibc-rh607010.patch create mode 100644 src/patches/glibc/glibc-rh607461.patch create mode 100644 src/patches/glibc/glibc-rh615090.patch create mode 100644 src/patches/glibc/glibc-rh615701.patch create mode 100644 src/patches/glibc/glibc-rh621959.patch create mode 100644 src/patches/glibc/glibc-rh623187.patch create mode 100644 src/patches/glibc/glibc-rh625893.patch create mode 100644 src/patches/glibc/glibc-rh630801.patch create mode 100644 src/patches/glibc/glibc-rh631011.patch create mode 100644 src/patches/glibc/glibc-rh641128.patch create mode 100644 src/patches/glibc/glibc-rh642584.patch create mode 100644 src/patches/glibc/glibc-rh643822.patch create mode 100644 src/patches/glibc/glibc-rh645672.patch create mode 100644 src/patches/glibc/glibc-rh646954.patch create mode 100644 src/patches/glibc/glibc-rh647448.patch create mode 100644 src/patches/glibc/glibc-rh652661.patch create mode 100644 src/patches/glibc/glibc-rh656014.patch create mode 100644 src/patches/glibc/glibc-rh656530.patch create mode 100644 src/patches/glibc/glibc-rh657572.patch create mode 100644 src/patches/glibc/glibc-rh661982.patch create mode 100644 src/patches/glibc/glibc-rh667974.patch create mode 100644 src/patches/glibc/glibc-rh676076.patch create mode 100644 src/patches/glibc/glibc-rh676591.patch create mode 100644 src/patches/glibc/glibc-rh681054.patch create mode 100644 src/patches/glibc/glibc-rh688720.patch create mode 100644 src/patches/glibc/glibc-rh688980.patch create mode 100644 src/patches/glibc/glibc-rh689471.patch create mode 100644 src/patches/glibc/glibc-rh692177.patch create mode 100644 src/patches/glibc/glibc-rh692838.patch create mode 100644 src/patches/glibc/glibc-rh694386.patch create mode 100644 src/patches/glibc/glibc-rh695595.patch create mode 100644 src/patches/glibc/glibc-rh695963.patch create mode 100644 src/patches/glibc/glibc-rh696472.patch create mode 100644 src/patches/glibc/glibc-rh697421.patch create mode 100644 src/patches/glibc/glibc-rh699724.patch create mode 100644 src/patches/glibc/glibc-rh700507.patch create mode 100644 src/patches/glibc/glibc-rh703480.patch create mode 100644 src/patches/glibc/glibc-rh703481.patch create mode 100644 src/patches/glibc/glibc-rh705465.patch create mode 100644 src/patches/glibc/glibc-rh711927.patch create mode 100644 src/patches/glibc/glibc-rh711987.patch create mode 100644 src/patches/glibc/glibc-rh712248.patch create mode 100644 src/patches/glibc/glibc-rh713134.patch create mode 100644 src/patches/glibc/glibc-rh714823.patch create mode 100644 src/patches/glibc/glibc-rh718057.patch create mode 100644 src/patches/glibc/glibc-rh726517.patch create mode 100644 src/patches/glibc/glibc-rh730379.patch create mode 100644 src/patches/glibc/glibc-rh731042.patch create mode 100644 src/patches/glibc/glibc-rh736346.patch create mode 100644 src/patches/glibc/glibc-rh737778.patch create mode 100644 src/patches/glibc/glibc-rh738665.patch create mode 100644 src/patches/glibc/glibc-rh738763.patch create mode 100644 src/patches/glibc/glibc-rh739184.patch create mode 100644 src/patches/glibc/glibc-rh739971.patch create mode 100644 src/patches/glibc/glibc-rh740506-2.patch create mode 100644 src/patches/glibc/glibc-rh740506.patch create mode 100644 src/patches/glibc/glibc-rh749188.patch create mode 100644 src/patches/glibc/glibc-rh750531.patch create mode 100644 src/patches/glibc/glibc-rh751750.patch create mode 100644 src/patches/glibc/glibc-rh752122.patch create mode 100644 src/patches/glibc/glibc-rh757888.patch create mode 100644 src/patches/glibc/glibc-rh766513.patch create mode 100644 src/patches/glibc/glibc-rh767146.patch create mode 100644 src/patches/glibc/glibc-rh767693-2.patch create mode 100644 src/patches/glibc/glibc-rh767693.patch create mode 100644 src/patches/glibc/glibc-rh767746.patch create mode 100644 src/patches/glibc/glibc-rh771342.patch create mode 100644 src/patches/glibc/glibc-rh782585.patch create mode 100644 src/patches/glibc/glibc-rh784402.patch create mode 100644 src/patches/glibc/glibc-rh785984.patch create mode 100644 src/patches/glibc/glibc-rh788959-2.patch create mode 100644 src/patches/glibc/glibc-rh788959.patch create mode 100644 src/patches/glibc/glibc-rh789189.patch create mode 100644 src/patches/glibc/glibc-rh789209.patch create mode 100644 src/patches/glibc/glibc-rh789238-2.patch create mode 100644 src/patches/glibc/glibc-rh789238.patch create mode 100644 src/patches/glibc/glibc-rh794817-2.patch create mode 100644 src/patches/glibc/glibc-rh794817.patch create mode 100644 src/patches/glibc/glibc-rh795498.patch create mode 100644 src/patches/glibc/glibc-rh797094-1.patch create mode 100644 src/patches/glibc/glibc-rh797094-2.patch create mode 100644 src/patches/glibc/glibc-rh804630.patch create mode 100644 src/patches/glibc/glibc-rh804689.patch create mode 100644 src/patches/glibc/glibc-rh808337.patch create mode 100644 src/patches/glibc/glibc-rh808545.patch create mode 100644 src/patches/glibc/glibc-rh809602.patch create mode 100644 src/patches/glibc/glibc-rh833716.patch create mode 100644 src/patches/glibc/glibc-rh837026.patch delete mode 100644 src/patches/grep-2.5.1a-redhat_fixes-2.patch delete mode 100644 src/patches/grub-0.90-append.patch delete mode 100644 src/patches/grub-0.90-symlinkmenulst.patch delete mode 100644 src/patches/grub-0.91-splashimagehelp.patch delete mode 100644 src/patches/grub-0.93-configfile.patch delete mode 100644 src/patches/grub-0.93-endedit.patch delete mode 100644 src/patches/grub-0.93-graphics-bootterm.patch delete mode 100644 src/patches/grub-0.93-special-device-names.patch delete mode 100644 src/patches/grub-0.94-i2o.patch delete mode 100644 src/patches/grub-0.94-installcopyonly.patch delete mode 100644 src/patches/grub-0.95-graphics.patch delete mode 100644 src/patches/grub-0.95-hiddenmenu-tweak.patch delete mode 100644 src/patches/grub-0.95-md-mbr.patch delete mode 100644 src/patches/grub-0.95-md-rework.patch delete mode 100644 src/patches/grub-0.95-md.patch delete mode 100644 src/patches/grub-0.95-moreraid.patch delete mode 100644 src/patches/grub-0.95-nonmbr.patch delete mode 100644 src/patches/grub-0.95-odirect.patch delete mode 100644 src/patches/grub-0.95-recheck-bad.patch delete mode 100644 src/patches/grub-0.95-splash-error-term.patch delete mode 100644 src/patches/grub-0.95-staticcurses.patch delete mode 100644 src/patches/grub-0.95-xpmjunk.patch delete mode 100644 src/patches/grub-0.97-bz429187-cciss.patch delete mode 100644 src/patches/grub-0.97-cmdline-size.patch delete mode 100644 src/patches/grub-0.97-datadir.patch delete mode 100644 src/patches/grub-0.97-disk_geometry-1.patch delete mode 100644 src/patches/grub-0.97-dmraid-partition-names.patch delete mode 100644 src/patches/grub-0.97-dmraid-recheck-bad.patch delete mode 100644 src/patches/grub-0.97-dmraid.patch delete mode 100644 src/patches/grub-0.97-install.in.patch delete mode 100644 src/patches/grub-0.97-mactel-kbd.patch delete mode 100644 src/patches/grub-0.97-mdadm-path.patch delete mode 100644 src/patches/grub-0.97-mpath.patch delete mode 100644 src/patches/grub-0.97-nx-multiinstall.patch delete mode 100644 src/patches/grub-0.97-nxstack.patch delete mode 100644 src/patches/grub-0.97-once.patch delete mode 100644 src/patches/grub-0.97-prototypes.patch delete mode 100644 src/patches/grub-0.97-stderr.patch delete mode 100644 src/patches/grub-0.97_grub-install_virtio.patch create mode 100644 src/patches/grub-fedora-18.patch create mode 100644 src/patches/icecream-0.9.7-platform-arm.patch create mode 100644 src/patches/libmad-0.15.1b-cflags-O2.patch create mode 100644 src/patches/libmad-0.15.1b-cflags.patch create mode 100644 src/patches/libnl-1.1-ULONG_MAX.patch delete mode 100644 src/patches/libsafe-alpha.diff delete mode 100644 src/patches/libsafe-functioncaching.diff create mode 100644 src/patches/libsigc++-gcc43.patch delete mode 100644 src/patches/miniupnpd-1.4_use_XT_ALIGN.patch delete mode 100644 src/patches/miniupnpd-iptcrdr.patch delete mode 100644 src/patches/ncurses-5.5-fixes-1.patch create mode 100644 src/patches/netpbm-10.26.46-getline.patch create mode 100644 src/patches/openldap-gcc44-fixes.patch create mode 100644 src/patches/pptp-1.7.2-compat.patch delete mode 100644 src/patches/readline-5.1-fixes-3.patch create mode 100644 src/patches/readline/readline52-001 create mode 100644 src/patches/readline/readline52-002 create mode 100644 src/patches/readline/readline52-003 create mode 100644 src/patches/readline/readline52-004 create mode 100644 src/patches/readline/readline52-005 create mode 100644 src/patches/readline/readline52-006 create mode 100644 src/patches/readline/readline52-007 create mode 100644 src/patches/readline/readline52-008 create mode 100644 src/patches/readline/readline52-009 create mode 100644 src/patches/readline/readline52-010 create mode 100644 src/patches/readline/readline52-011 create mode 100644 src/patches/readline/readline52-012 create mode 100644 src/patches/readline/readline52-013 create mode 100644 src/patches/readline/readline52-014 create mode 100644 src/patches/readline/readline62-001 create mode 100644 src/patches/readline/readline62-002 create mode 100644 src/patches/readline/readline62-003 create mode 100644 src/patches/readline/readline62-004 create mode 100644 src/patches/screen-4.0.3-stropts.patch delete mode 100644 src/patches/slang-1.4.9-uclibc.patch delete mode 100644 src/patches/uClibc-gcc4-genwctype.patch create mode 100644 src/patches/vdr-1.6.0-gcc44-fixes.patch create mode 100644 src/patches/vdr-plugin-epgsearch-gcc44.patch create mode 100755 src/stripper
Difference in files: diff --git a/config/acpid/power b/config/acpid/power new file mode 100644 index 0000000..7406317 --- /dev/null +++ b/config/acpid/power @@ -0,0 +1,4 @@ +# ACPID config to power down machine if powerbutton is pressed + +event=button/power.* +action=/etc/acpi/actions/power.sh diff --git a/config/acpid/power.sh b/config/acpid/power.sh new file mode 100644 index 0000000..839a318 --- /dev/null +++ b/config/acpid/power.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +# Shutdown the system immediately +shutdown -h now diff --git a/config/minidlna/minidlna.conf b/config/minidlna/minidlna.conf new file mode 100644 index 0000000..0a1813c --- /dev/null +++ b/config/minidlna/minidlna.conf @@ -0,0 +1,67 @@ +# port for HTTP (descriptions, SOAP, media transfer) traffic +port=8200 + +# network interfaces to serve, comma delimited +network_interface=green0,blue0 + +# set this to the directory you want scanned. +# * if have multiple directories, you can have multiple media_dir= lines +# * if you want to restrict a media_dir to a specific content type, you +# can prepend the type, followed by a comma, to the directory: +# + "A" for audio (eg. media_dir=A,/home/jmaggard/Music) +# + "V" for video (eg. media_dir=V,/home/jmaggard/Videos) +# + "P" for images (eg. media_dir=P,/home/jmaggard/Pictures) +media_dir=/var/mp3 + +# set this if you want to customize the name that shows up on your clients +#friendly_name=My DLNA Server + +# set this if you would like to specify the directory where you want MiniDLNA to store its database and album art cache +db_dir=/var/cache/minidlna + +# set this if you would like to specify the directory where you want MiniDLNA to store its log file +#log_dir=/var/log + +# set this to change the verbosity of the information that is logged +# each section can use a different level: off, fatal, error, warn, info, or debug +#log_level=general,artwork,database,inotify,scanner,metadata,http,ssdp,tivo=warn + +# this should be a list of file names to check for when searching for album art +# note: names should be delimited with a forward slash ("/") +album_art_names=Cover.jpg/cover.jpg/AlbumArtSmall.jpg/albumartsmall.jpg/AlbumArt.jpg/albumart.jpg/Album.jpg/album.jpg/Folder.jpg/folder.jpg/Thumb.jpg/thumb.jpg + +# set this to no to disable inotify monitoring to automatically discover new files +# note: the default is yes +inotify=yes + +# set this to yes to enable support for streaming .jpg and .mp3 files to a TiVo supporting HMO +enable_tivo=no + +# set this to strictly adhere to DLNA standards. +# * This will allow server-side downscaling of very large JPEG images, +# which may hurt JPEG serving performance on (at least) Sony DLNA products. +strict_dlna=no + +# default presentation url is http address on port 80 +#presentation_url=http://www.mylan/index.php + +# notify interval in seconds. default is 895 seconds. +notify_interval=900 + +# serial and model number the daemon will report to clients +# in its XML description +serial=12345678 +model_number=1 + +# specify the path to the MiniSSDPd socket +#minissdpdsocket=/var/run/minissdpd.sock + +# use different container as root of the tree +# possible values: +# + "." - use standard container (this is the default) +# + "B" - "Browse Directory" +# + "M" - "Music" +# + "V" - "Video" +# + "P" - "Pictures" +# if you specify "B" and client device is audio-only then "Music/Folders" will be used as root +#root_container=. diff --git a/config/rootfiles/common/armv5tel/gcc b/config/rootfiles/common/armv5tel/gcc index 2295ae9..c7f1690 100644 --- a/config/rootfiles/common/armv5tel/gcc +++ b/config/rootfiles/common/armv5tel/gcc @@ -2,7 +2,7 @@ #usr/bin/armv5tel-unknown-linux-gnueabi-c++ #usr/bin/armv5tel-unknown-linux-gnueabi-g++ #usr/bin/armv5tel-unknown-linux-gnueabi-gcc -#usr/bin/armv5tel-unknown-linux-gnueabi-gcc-4.1.2 +#usr/bin/armv5tel-unknown-linux-gnueabi-gcc-4.4.7 #usr/bin/c++ #usr/bin/cc #usr/bin/cpp @@ -11,543 +11,762 @@ #usr/bin/gccbug #usr/bin/gcov #usr/include/c++ -#usr/include/c++/4.1.2 -#usr/include/c++/4.1.2/algorithm -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/atomic_word.h -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/basic_file.h -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/c++allocator.h -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/c++config.h -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/c++io.h -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/c++locale.h -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/cpu_defines.h -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/ctype_base.h -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/ctype_inline.h -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/ctype_noninline.h -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/cxxabi_tweaks.h -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/gthr-default.h -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/gthr-posix.h -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/gthr-single.h -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/gthr-tpf.h -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/gthr.h -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/messages_members.h -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/os_defines.h -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/stdc++.h.gch -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/stdc++.h.gch/O0g.gch -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/stdc++.h.gch/O2g.gch -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/time_members.h -#usr/include/c++/4.1.2/backward -#usr/include/c++/4.1.2/backward/algo.h -#usr/include/c++/4.1.2/backward/algobase.h -#usr/include/c++/4.1.2/backward/alloc.h -#usr/include/c++/4.1.2/backward/backward_warning.h -#usr/include/c++/4.1.2/backward/bvector.h -#usr/include/c++/4.1.2/backward/complex.h -#usr/include/c++/4.1.2/backward/defalloc.h -#usr/include/c++/4.1.2/backward/deque.h -#usr/include/c++/4.1.2/backward/fstream.h -#usr/include/c++/4.1.2/backward/function.h -#usr/include/c++/4.1.2/backward/hash_map.h -#usr/include/c++/4.1.2/backward/hash_set.h -#usr/include/c++/4.1.2/backward/hashtable.h -#usr/include/c++/4.1.2/backward/heap.h -#usr/include/c++/4.1.2/backward/iomanip.h -#usr/include/c++/4.1.2/backward/iostream.h -#usr/include/c++/4.1.2/backward/istream.h -#usr/include/c++/4.1.2/backward/iterator.h -#usr/include/c++/4.1.2/backward/list.h -#usr/include/c++/4.1.2/backward/map.h -#usr/include/c++/4.1.2/backward/multimap.h -#usr/include/c++/4.1.2/backward/multiset.h -#usr/include/c++/4.1.2/backward/new.h -#usr/include/c++/4.1.2/backward/ostream.h -#usr/include/c++/4.1.2/backward/pair.h -#usr/include/c++/4.1.2/backward/queue.h -#usr/include/c++/4.1.2/backward/rope.h -#usr/include/c++/4.1.2/backward/set.h -#usr/include/c++/4.1.2/backward/slist.h -#usr/include/c++/4.1.2/backward/stack.h -#usr/include/c++/4.1.2/backward/stream.h -#usr/include/c++/4.1.2/backward/streambuf.h -#usr/include/c++/4.1.2/backward/strstream -#usr/include/c++/4.1.2/backward/tempbuf.h -#usr/include/c++/4.1.2/backward/tree.h -#usr/include/c++/4.1.2/backward/vector.h -#usr/include/c++/4.1.2/bits -#usr/include/c++/4.1.2/bits/allocator.h -#usr/include/c++/4.1.2/bits/atomicity.h -#usr/include/c++/4.1.2/bits/basic_ios.h -#usr/include/c++/4.1.2/bits/basic_ios.tcc -#usr/include/c++/4.1.2/bits/basic_string.h -#usr/include/c++/4.1.2/bits/basic_string.tcc -#usr/include/c++/4.1.2/bits/boost_concept_check.h -#usr/include/c++/4.1.2/bits/char_traits.h -#usr/include/c++/4.1.2/bits/cmath.tcc -#usr/include/c++/4.1.2/bits/codecvt.h -#usr/include/c++/4.1.2/bits/concept_check.h -#usr/include/c++/4.1.2/bits/concurrence.h -#usr/include/c++/4.1.2/bits/cpp_type_traits.h -#usr/include/c++/4.1.2/bits/deque.tcc -#usr/include/c++/4.1.2/bits/fstream.tcc -#usr/include/c++/4.1.2/bits/functexcept.h -#usr/include/c++/4.1.2/bits/gslice.h -#usr/include/c++/4.1.2/bits/gslice_array.h -#usr/include/c++/4.1.2/bits/indirect_array.h -#usr/include/c++/4.1.2/bits/ios_base.h -#usr/include/c++/4.1.2/bits/istream.tcc -#usr/include/c++/4.1.2/bits/list.tcc -#usr/include/c++/4.1.2/bits/locale_classes.h -#usr/include/c++/4.1.2/bits/locale_facets.h -#usr/include/c++/4.1.2/bits/locale_facets.tcc -#usr/include/c++/4.1.2/bits/localefwd.h -#usr/include/c++/4.1.2/bits/mask_array.h -#usr/include/c++/4.1.2/bits/ostream.tcc -#usr/include/c++/4.1.2/bits/postypes.h -#usr/include/c++/4.1.2/bits/slice_array.h -#usr/include/c++/4.1.2/bits/sstream.tcc -#usr/include/c++/4.1.2/bits/stl_algo.h -#usr/include/c++/4.1.2/bits/stl_algobase.h -#usr/include/c++/4.1.2/bits/stl_bvector.h -#usr/include/c++/4.1.2/bits/stl_construct.h -#usr/include/c++/4.1.2/bits/stl_deque.h -#usr/include/c++/4.1.2/bits/stl_function.h -#usr/include/c++/4.1.2/bits/stl_heap.h -#usr/include/c++/4.1.2/bits/stl_iterator.h -#usr/include/c++/4.1.2/bits/stl_iterator_base_funcs.h -#usr/include/c++/4.1.2/bits/stl_iterator_base_types.h -#usr/include/c++/4.1.2/bits/stl_list.h -#usr/include/c++/4.1.2/bits/stl_map.h -#usr/include/c++/4.1.2/bits/stl_multimap.h -#usr/include/c++/4.1.2/bits/stl_multiset.h -#usr/include/c++/4.1.2/bits/stl_numeric.h -#usr/include/c++/4.1.2/bits/stl_pair.h -#usr/include/c++/4.1.2/bits/stl_queue.h -#usr/include/c++/4.1.2/bits/stl_raw_storage_iter.h -#usr/include/c++/4.1.2/bits/stl_relops.h -#usr/include/c++/4.1.2/bits/stl_set.h -#usr/include/c++/4.1.2/bits/stl_stack.h -#usr/include/c++/4.1.2/bits/stl_tempbuf.h -#usr/include/c++/4.1.2/bits/stl_tree.h -#usr/include/c++/4.1.2/bits/stl_uninitialized.h -#usr/include/c++/4.1.2/bits/stl_vector.h -#usr/include/c++/4.1.2/bits/stream_iterator.h -#usr/include/c++/4.1.2/bits/streambuf.tcc -#usr/include/c++/4.1.2/bits/streambuf_iterator.h -#usr/include/c++/4.1.2/bits/stringfwd.h -#usr/include/c++/4.1.2/bits/valarray_after.h -#usr/include/c++/4.1.2/bits/valarray_array.h -#usr/include/c++/4.1.2/bits/valarray_array.tcc -#usr/include/c++/4.1.2/bits/valarray_before.h -#usr/include/c++/4.1.2/bits/vector.tcc -#usr/include/c++/4.1.2/bitset -#usr/include/c++/4.1.2/cassert -#usr/include/c++/4.1.2/cctype -#usr/include/c++/4.1.2/cerrno -#usr/include/c++/4.1.2/cfloat -#usr/include/c++/4.1.2/ciso646 -#usr/include/c++/4.1.2/climits -#usr/include/c++/4.1.2/clocale -#usr/include/c++/4.1.2/cmath -#usr/include/c++/4.1.2/complex -#usr/include/c++/4.1.2/csetjmp -#usr/include/c++/4.1.2/csignal -#usr/include/c++/4.1.2/cstdarg -#usr/include/c++/4.1.2/cstddef -#usr/include/c++/4.1.2/cstdio -#usr/include/c++/4.1.2/cstdlib -#usr/include/c++/4.1.2/cstring -#usr/include/c++/4.1.2/ctime -#usr/include/c++/4.1.2/cwchar -#usr/include/c++/4.1.2/cwctype -#usr/include/c++/4.1.2/cxxabi.h -#usr/include/c++/4.1.2/debug -#usr/include/c++/4.1.2/debug/bitset -#usr/include/c++/4.1.2/debug/debug.h -#usr/include/c++/4.1.2/debug/deque -#usr/include/c++/4.1.2/debug/formatter.h -#usr/include/c++/4.1.2/debug/functions.h -#usr/include/c++/4.1.2/debug/hash_map -#usr/include/c++/4.1.2/debug/hash_map.h -#usr/include/c++/4.1.2/debug/hash_multimap.h -#usr/include/c++/4.1.2/debug/hash_multiset.h -#usr/include/c++/4.1.2/debug/hash_set -#usr/include/c++/4.1.2/debug/hash_set.h -#usr/include/c++/4.1.2/debug/list -#usr/include/c++/4.1.2/debug/macros.h -#usr/include/c++/4.1.2/debug/map -#usr/include/c++/4.1.2/debug/map.h -#usr/include/c++/4.1.2/debug/multimap.h -#usr/include/c++/4.1.2/debug/multiset.h -#usr/include/c++/4.1.2/debug/safe_base.h -#usr/include/c++/4.1.2/debug/safe_iterator.h -#usr/include/c++/4.1.2/debug/safe_iterator.tcc -#usr/include/c++/4.1.2/debug/safe_sequence.h -#usr/include/c++/4.1.2/debug/set -#usr/include/c++/4.1.2/debug/set.h -#usr/include/c++/4.1.2/debug/string -#usr/include/c++/4.1.2/debug/vector -#usr/include/c++/4.1.2/deque -#usr/include/c++/4.1.2/exception -#usr/include/c++/4.1.2/exception_defines.h -#usr/include/c++/4.1.2/ext -#usr/include/c++/4.1.2/ext/algorithm -#usr/include/c++/4.1.2/ext/array_allocator.h -#usr/include/c++/4.1.2/ext/bitmap_allocator.h -#usr/include/c++/4.1.2/ext/codecvt_specializations.h -#usr/include/c++/4.1.2/ext/debug_allocator.h -#usr/include/c++/4.1.2/ext/functional -#usr/include/c++/4.1.2/ext/hash_fun.h -#usr/include/c++/4.1.2/ext/hash_map -#usr/include/c++/4.1.2/ext/hash_set -#usr/include/c++/4.1.2/ext/hashtable.h -#usr/include/c++/4.1.2/ext/iterator -#usr/include/c++/4.1.2/ext/malloc_allocator.h -#usr/include/c++/4.1.2/ext/memory -#usr/include/c++/4.1.2/ext/mt_allocator.h -#usr/include/c++/4.1.2/ext/new_allocator.h -#usr/include/c++/4.1.2/ext/numeric -#usr/include/c++/4.1.2/ext/pb_assoc -#usr/include/c++/4.1.2/ext/pb_assoc/assoc_cntnr.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/data_type.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail -#usr/include/c++/4.1.2/ext/pb_assoc/detail/assoc_cntnr_base.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr/d_extract_key.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr/d_find_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr/d_insert_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr/erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr/extract_key.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr/info_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr/insert_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr/iterators_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_hash_assoc_cntnr -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_hash_assoc_cntnr/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_hash_assoc_cntnr/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_hash_assoc_cntnr/resize_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_tree_assoc_cntnr -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_tree_assoc_cntnr/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_tree_assoc_cntnr/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_tree_assoc_cntnr/erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_tree_assoc_cntnr/node_iteration_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_tree_assoc_cntnr/policy_access_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_tree_assoc_cntnr/r_erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_tree_assoc_cntnr/r_range_iteration_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_tree_assoc_cntnr/range_iteration_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_tree_assoc_cntnr/split_join_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_ -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/bin_search_tree_.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/cond_dtor_entry_dealtor.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/cond_key_dtor_entry_dealtor.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/debug_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/find_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/find_iterators.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/info_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/insert_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/iterators_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/node_iterators.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/r_erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/rotate_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/split_join_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_hash_assoc_cntnr -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_hash_assoc_cntnr/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_ -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/cc_ht_map_.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/cmp_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/cond_key_dtor_entry_dealtor.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/constructor_destructor_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/constructor_destructor_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/debug_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/debug_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/debug_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/entry_list_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/erase_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/erase_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/find_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/find_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/find_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/info_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/insert_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/insert_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/insert_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/iterators_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/policy_access_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/resize_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/resize_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/resize_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/size_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/standard_policies.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cond_dealtor.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ds_trait_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/eq_fn -#usr/include/c++/4.1.2/ext/pb_assoc/detail/eq_fn/eq_by_less.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/eq_fn/hash_eq_fn.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_hash_assoc_cntnr -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_hash_assoc_cntnr/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_ -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/constructor_destructor_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/constructor_destructor_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/debug_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/debug_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/debug_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/erase_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/erase_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/find_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/find_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/find_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/gp_ht_map_.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/info_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/insert_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/insert_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/insert_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/iterator_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/policy_access_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/resize_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/resize_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/resize_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_fn -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_fn/direct_mask_range_hashing_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_fn/direct_mod_range_hashing_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_fn/linear_probe_fn_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_fn/mask_based_range_hashing.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_fn/mod_based_range_hashing.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_fn/probe_fn_base.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_fn/quadratic_probe_fn_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_fn/ranged_hash_fn.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_fn/ranged_probe_fn.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_types_traits.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_assoc_cntnr -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_assoc_cntnr/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_assoc_cntnr/policy_access_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_map_ -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_map_/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_map_/debug_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_map_/erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_map_/find_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_map_/info_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_map_/insert_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_map_/iterators_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_map_/lu_map_.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_map_/policy_access_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_policy -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_policy/counter_lu_metadata_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_policy/counter_lu_policy_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_policy/mtf_lu_policy_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/map_debug_base.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/mapping_level_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ms_category_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ms_trait_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/order_statistics_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_ -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/cond_dtor.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/debug_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/find_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/info_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/insert_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/iterators_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/node_iterators.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/ov_tree_map_.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/split_join_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/rb_tree_map_ -#usr/include/c++/4.1.2/ext/pb_assoc/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/rb_tree_map_/debug_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/rb_tree_map_/erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/rb_tree_map_/find_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/rb_tree_map_/info_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/rb_tree_map_/insert_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/rb_tree_map_/node.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/rb_tree_map_/rb_tree_.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/rb_tree_map_/split_join_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/resize_policy -#usr/include/c++/4.1.2/ext/pb_assoc/detail/resize_policy/cc_hash_max_collision_resize_trigger_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/resize_policy/hash_exponential_size_policy_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/resize_policy/hash_prime_size_policy_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/resize_policy/hash_standard_resize_policy_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/resize_policy/ht_prime_size_policy_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/resize_policy/size_base.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_ -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_/debug_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_/erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_/find_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_/info_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_/insert_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_/node.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_/splay_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_/splay_tree_.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_/split_join_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/standard_policies.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/standard_sizes.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/tree_assoc_cntnr -#usr/include/c++/4.1.2/ext/pb_assoc/detail/tree_assoc_cntnr/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/tree_policy -#usr/include/c++/4.1.2/ext/pb_assoc/detail/tree_policy/null_node_updator_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/tree_policy/order_statistics_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/type_utils.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/typelist -#usr/include/c++/4.1.2/ext/pb_assoc/detail/typelist.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/typelist/typelist_append.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/typelist/typelist_apply.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/typelist/typelist_at_index.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/typelist/typelist_contains.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/typelist/typelist_filter.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/typelist/typelist_transform.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/typelist/typelist_typelist_append.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/types_traits.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/unordered_iterator -#usr/include/c++/4.1.2/ext/pb_assoc/detail/unordered_iterator/const_find_iterator.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/unordered_iterator/const_iterator.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/unordered_iterator/find_iterator.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/unordered_iterator/iterator.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/constructor_destructor_and_related.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/erase_if_pred.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/find_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/info_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/insert_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/invalidation_guarantee_selector.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/it_value_type_traits.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/iterator.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/iterator_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/ref_pair.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/value_type_adapter.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/value_type_traits.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/ds_trait.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/exception.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/hash_policy.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/lu_policy.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/ms_trait.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/tree_policy.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/trivial_iterator_def.hpp -#usr/include/c++/4.1.2/ext/pod_char_traits.h -#usr/include/c++/4.1.2/ext/pool_allocator.h -#usr/include/c++/4.1.2/ext/rb_tree -#usr/include/c++/4.1.2/ext/rc_string_base.h -#usr/include/c++/4.1.2/ext/rope -#usr/include/c++/4.1.2/ext/ropeimpl.h -#usr/include/c++/4.1.2/ext/slist -#usr/include/c++/4.1.2/ext/sso_string_base.h -#usr/include/c++/4.1.2/ext/stdio_filebuf.h -#usr/include/c++/4.1.2/ext/stdio_sync_filebuf.h -#usr/include/c++/4.1.2/ext/typelist.h -#usr/include/c++/4.1.2/ext/vstring.h -#usr/include/c++/4.1.2/ext/vstring.tcc -#usr/include/c++/4.1.2/ext/vstring_fwd.h -#usr/include/c++/4.1.2/ext/vstring_util.h -#usr/include/c++/4.1.2/fstream -#usr/include/c++/4.1.2/functional -#usr/include/c++/4.1.2/iomanip -#usr/include/c++/4.1.2/ios -#usr/include/c++/4.1.2/iosfwd -#usr/include/c++/4.1.2/iostream -#usr/include/c++/4.1.2/istream -#usr/include/c++/4.1.2/iterator -#usr/include/c++/4.1.2/limits -#usr/include/c++/4.1.2/list -#usr/include/c++/4.1.2/locale -#usr/include/c++/4.1.2/map -#usr/include/c++/4.1.2/memory -#usr/include/c++/4.1.2/new -#usr/include/c++/4.1.2/numeric -#usr/include/c++/4.1.2/ostream -#usr/include/c++/4.1.2/queue -#usr/include/c++/4.1.2/set -#usr/include/c++/4.1.2/sstream -#usr/include/c++/4.1.2/stack -#usr/include/c++/4.1.2/stdexcept -#usr/include/c++/4.1.2/streambuf -#usr/include/c++/4.1.2/string -#usr/include/c++/4.1.2/tr1 -#usr/include/c++/4.1.2/tr1/array -#usr/include/c++/4.1.2/tr1/bind_iterate.h -#usr/include/c++/4.1.2/tr1/bind_repeat.h -#usr/include/c++/4.1.2/tr1/boost_shared_ptr.h -#usr/include/c++/4.1.2/tr1/functional -#usr/include/c++/4.1.2/tr1/functional_iterate.h -#usr/include/c++/4.1.2/tr1/hashtable -#usr/include/c++/4.1.2/tr1/memory -#usr/include/c++/4.1.2/tr1/mu_iterate.h -#usr/include/c++/4.1.2/tr1/ref_fwd.h -#usr/include/c++/4.1.2/tr1/ref_wrap_iterate.h -#usr/include/c++/4.1.2/tr1/repeat.h -#usr/include/c++/4.1.2/tr1/tuple -#usr/include/c++/4.1.2/tr1/tuple_iterate.h -#usr/include/c++/4.1.2/tr1/type_traits -#usr/include/c++/4.1.2/tr1/type_traits_fwd.h -#usr/include/c++/4.1.2/tr1/unordered_map -#usr/include/c++/4.1.2/tr1/unordered_set -#usr/include/c++/4.1.2/tr1/utility -#usr/include/c++/4.1.2/typeinfo -#usr/include/c++/4.1.2/utility -#usr/include/c++/4.1.2/valarray -#usr/include/c++/4.1.2/vector +#usr/include/c++/4.4.7 +#usr/include/c++/4.4.7/algorithm +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/atomic_word.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/basic_file.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/c++allocator.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/c++config.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/c++io.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/c++locale.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/cpu_defines.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/ctype_base.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/ctype_inline.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/ctype_noninline.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/cxxabi_tweaks.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/error_constants.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/extc++.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/gthr-default.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/gthr-posix.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/gthr-single.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/gthr-tpf.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/gthr.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/messages_members.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/os_defines.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/stdc++.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/stdtr1c++.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/time_members.h +#usr/include/c++/4.4.7/array +#usr/include/c++/4.4.7/backward +#usr/include/c++/4.4.7/backward/auto_ptr.h +#usr/include/c++/4.4.7/backward/backward_warning.h +#usr/include/c++/4.4.7/backward/binders.h +#usr/include/c++/4.4.7/backward/hash_fun.h +#usr/include/c++/4.4.7/backward/hash_map +#usr/include/c++/4.4.7/backward/hash_set +#usr/include/c++/4.4.7/backward/hashtable.h +#usr/include/c++/4.4.7/backward/strstream +#usr/include/c++/4.4.7/bits +#usr/include/c++/4.4.7/bits/algorithmfwd.h +#usr/include/c++/4.4.7/bits/allocator.h +#usr/include/c++/4.4.7/bits/atomic_0.h +#usr/include/c++/4.4.7/bits/atomic_2.h +#usr/include/c++/4.4.7/bits/atomicfwd_c.h +#usr/include/c++/4.4.7/bits/atomicfwd_cxx.h +#usr/include/c++/4.4.7/bits/basic_ios.h +#usr/include/c++/4.4.7/bits/basic_ios.tcc +#usr/include/c++/4.4.7/bits/basic_string.h +#usr/include/c++/4.4.7/bits/basic_string.tcc +#usr/include/c++/4.4.7/bits/boost_concept_check.h +#usr/include/c++/4.4.7/bits/char_traits.h +#usr/include/c++/4.4.7/bits/cmath.tcc +#usr/include/c++/4.4.7/bits/codecvt.h +#usr/include/c++/4.4.7/bits/concept_check.h +#usr/include/c++/4.4.7/bits/cpp_type_traits.h +#usr/include/c++/4.4.7/bits/deque.tcc +#usr/include/c++/4.4.7/bits/forward_list.h +#usr/include/c++/4.4.7/bits/forward_list.tcc +#usr/include/c++/4.4.7/bits/fstream.tcc +#usr/include/c++/4.4.7/bits/functexcept.h +#usr/include/c++/4.4.7/bits/functional_hash.h +#usr/include/c++/4.4.7/bits/gslice.h +#usr/include/c++/4.4.7/bits/gslice_array.h +#usr/include/c++/4.4.7/bits/hashtable.h +#usr/include/c++/4.4.7/bits/indirect_array.h +#usr/include/c++/4.4.7/bits/ios_base.h +#usr/include/c++/4.4.7/bits/istream.tcc +#usr/include/c++/4.4.7/bits/list.tcc +#usr/include/c++/4.4.7/bits/locale_classes.h +#usr/include/c++/4.4.7/bits/locale_classes.tcc +#usr/include/c++/4.4.7/bits/locale_facets.h +#usr/include/c++/4.4.7/bits/locale_facets.tcc +#usr/include/c++/4.4.7/bits/locale_facets_nonio.h +#usr/include/c++/4.4.7/bits/locale_facets_nonio.tcc +#usr/include/c++/4.4.7/bits/localefwd.h +#usr/include/c++/4.4.7/bits/mask_array.h +#usr/include/c++/4.4.7/bits/move.h +#usr/include/c++/4.4.7/bits/ostream.tcc +#usr/include/c++/4.4.7/bits/ostream_insert.h +#usr/include/c++/4.4.7/bits/postypes.h +#usr/include/c++/4.4.7/bits/shared_ptr.h +#usr/include/c++/4.4.7/bits/slice_array.h +#usr/include/c++/4.4.7/bits/sstream.tcc +#usr/include/c++/4.4.7/bits/stl_algo.h +#usr/include/c++/4.4.7/bits/stl_algobase.h +#usr/include/c++/4.4.7/bits/stl_bvector.h +#usr/include/c++/4.4.7/bits/stl_construct.h +#usr/include/c++/4.4.7/bits/stl_deque.h +#usr/include/c++/4.4.7/bits/stl_function.h +#usr/include/c++/4.4.7/bits/stl_heap.h +#usr/include/c++/4.4.7/bits/stl_iterator.h +#usr/include/c++/4.4.7/bits/stl_iterator_base_funcs.h +#usr/include/c++/4.4.7/bits/stl_iterator_base_types.h +#usr/include/c++/4.4.7/bits/stl_list.h +#usr/include/c++/4.4.7/bits/stl_map.h +#usr/include/c++/4.4.7/bits/stl_multimap.h +#usr/include/c++/4.4.7/bits/stl_multiset.h +#usr/include/c++/4.4.7/bits/stl_numeric.h +#usr/include/c++/4.4.7/bits/stl_pair.h +#usr/include/c++/4.4.7/bits/stl_queue.h +#usr/include/c++/4.4.7/bits/stl_raw_storage_iter.h +#usr/include/c++/4.4.7/bits/stl_relops.h +#usr/include/c++/4.4.7/bits/stl_set.h +#usr/include/c++/4.4.7/bits/stl_stack.h +#usr/include/c++/4.4.7/bits/stl_tempbuf.h +#usr/include/c++/4.4.7/bits/stl_tree.h +#usr/include/c++/4.4.7/bits/stl_uninitialized.h +#usr/include/c++/4.4.7/bits/stl_vector.h +#usr/include/c++/4.4.7/bits/stream_iterator.h +#usr/include/c++/4.4.7/bits/streambuf.tcc +#usr/include/c++/4.4.7/bits/streambuf_iterator.h +#usr/include/c++/4.4.7/bits/stringfwd.h +#usr/include/c++/4.4.7/bits/unique_ptr.h +#usr/include/c++/4.4.7/bits/valarray_after.h +#usr/include/c++/4.4.7/bits/valarray_array.h +#usr/include/c++/4.4.7/bits/valarray_array.tcc +#usr/include/c++/4.4.7/bits/valarray_before.h +#usr/include/c++/4.4.7/bits/vector.tcc +#usr/include/c++/4.4.7/bitset +#usr/include/c++/4.4.7/c++0x_warning.h +#usr/include/c++/4.4.7/cassert +#usr/include/c++/4.4.7/ccomplex +#usr/include/c++/4.4.7/cctype +#usr/include/c++/4.4.7/cerrno +#usr/include/c++/4.4.7/cfenv +#usr/include/c++/4.4.7/cfloat +#usr/include/c++/4.4.7/chrono +#usr/include/c++/4.4.7/cinttypes +#usr/include/c++/4.4.7/ciso646 +#usr/include/c++/4.4.7/climits +#usr/include/c++/4.4.7/clocale +#usr/include/c++/4.4.7/cmath +#usr/include/c++/4.4.7/complex +#usr/include/c++/4.4.7/complex.h +#usr/include/c++/4.4.7/condition_variable +#usr/include/c++/4.4.7/csetjmp +#usr/include/c++/4.4.7/csignal +#usr/include/c++/4.4.7/cstdarg +#usr/include/c++/4.4.7/cstdatomic +#usr/include/c++/4.4.7/cstdbool +#usr/include/c++/4.4.7/cstddef +#usr/include/c++/4.4.7/cstdint +#usr/include/c++/4.4.7/cstdio +#usr/include/c++/4.4.7/cstdlib +#usr/include/c++/4.4.7/cstring +#usr/include/c++/4.4.7/ctgmath +#usr/include/c++/4.4.7/ctime +#usr/include/c++/4.4.7/cwchar +#usr/include/c++/4.4.7/cwctype +#usr/include/c++/4.4.7/cxxabi-forced.h +#usr/include/c++/4.4.7/cxxabi.h +#usr/include/c++/4.4.7/debug +#usr/include/c++/4.4.7/debug/bitset +#usr/include/c++/4.4.7/debug/debug.h +#usr/include/c++/4.4.7/debug/deque +#usr/include/c++/4.4.7/debug/formatter.h +#usr/include/c++/4.4.7/debug/functions.h +#usr/include/c++/4.4.7/debug/list +#usr/include/c++/4.4.7/debug/macros.h +#usr/include/c++/4.4.7/debug/map +#usr/include/c++/4.4.7/debug/map.h +#usr/include/c++/4.4.7/debug/multimap.h +#usr/include/c++/4.4.7/debug/multiset.h +#usr/include/c++/4.4.7/debug/safe_base.h +#usr/include/c++/4.4.7/debug/safe_iterator.h +#usr/include/c++/4.4.7/debug/safe_iterator.tcc +#usr/include/c++/4.4.7/debug/safe_sequence.h +#usr/include/c++/4.4.7/debug/set +#usr/include/c++/4.4.7/debug/set.h +#usr/include/c++/4.4.7/debug/string +#usr/include/c++/4.4.7/debug/unordered_map +#usr/include/c++/4.4.7/debug/unordered_set +#usr/include/c++/4.4.7/debug/vector +#usr/include/c++/4.4.7/deque +#usr/include/c++/4.4.7/exception +#usr/include/c++/4.4.7/exception_defines.h +#usr/include/c++/4.4.7/exception_ptr.h +#usr/include/c++/4.4.7/ext +#usr/include/c++/4.4.7/ext/algorithm +#usr/include/c++/4.4.7/ext/array_allocator.h +#usr/include/c++/4.4.7/ext/atomicity.h +#usr/include/c++/4.4.7/ext/bitmap_allocator.h +#usr/include/c++/4.4.7/ext/cast.h +#usr/include/c++/4.4.7/ext/codecvt_specializations.h +#usr/include/c++/4.4.7/ext/concurrence.h +#usr/include/c++/4.4.7/ext/debug_allocator.h +#usr/include/c++/4.4.7/ext/enc_filebuf.h +#usr/include/c++/4.4.7/ext/extptr_allocator.h +#usr/include/c++/4.4.7/ext/functional +#usr/include/c++/4.4.7/ext/hash_map +#usr/include/c++/4.4.7/ext/hash_set +#usr/include/c++/4.4.7/ext/iterator +#usr/include/c++/4.4.7/ext/malloc_allocator.h +#usr/include/c++/4.4.7/ext/memory +#usr/include/c++/4.4.7/ext/mt_allocator.h +#usr/include/c++/4.4.7/ext/new_allocator.h +#usr/include/c++/4.4.7/ext/numeric +#usr/include/c++/4.4.7/ext/numeric_traits.h +#usr/include/c++/4.4.7/ext/pb_ds +#usr/include/c++/4.4.7/ext/pb_ds/assoc_container.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail +#usr/include/c++/4.4.7/ext/pb_ds/detail/basic_tree_policy +#usr/include/c++/4.4.7/ext/pb_ds/detail/basic_tree_policy/basic_tree_policy_base.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/basic_tree_policy/traits.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/basic_types.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/cond_dtor_entry_dealtor.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/cond_key_dtor_entry_dealtor.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/traits.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/const_iterator.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/const_point_iterator.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/entry_pred.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/resize_policy.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_base_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/standard_policies.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cond_dealtor.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/container_base_dispatch.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/debug_map_base.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/eq_fn +#usr/include/c++/4.4.7/ext/pb_ds/detail/eq_fn/eq_by_less.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/standard_policies.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/const_point_iterator.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_/lu_map_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_policy +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_policy/counter_lu_metadata.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_policy/counter_lu_policy_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_policy/mtf_lu_policy_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/cond_dtor.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/traits.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pairing_heap_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/child_iterator.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/cond_dtor_entry_dealtor.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/const_child_iterator.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/head.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/internal_node.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/leaf.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/node_base.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/node_iterators.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/node_metadata_base.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/point_iterators.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/split_join_branch_bag.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/synth_e_access_traits.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/traits.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/priority_queue_base_dispatch.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_/node.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_/traits.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rc_binomial_heap_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/resize_policy +#usr/include/c++/4.4.7/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/node.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/traits.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/standard_policies.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/thin_heap_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/tree_policy +#usr/include/c++/4.4.7/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/tree_policy/null_node_update_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/tree_trace_base.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/trie_policy +#usr/include/c++/4.4.7/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/trie_policy/null_node_update_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/trie_policy/sample_trie_e_access_traits.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/trie_policy/string_trie_e_access_traits_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/type_utils.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/types_traits.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/unordered_iterator +#usr/include/c++/4.4.7/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/unordered_iterator/const_point_iterator.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/unordered_iterator/iterator.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp +#usr/include/c++/4.4.7/ext/pb_ds/exception.hpp +#usr/include/c++/4.4.7/ext/pb_ds/hash_policy.hpp +#usr/include/c++/4.4.7/ext/pb_ds/list_update_policy.hpp +#usr/include/c++/4.4.7/ext/pb_ds/priority_queue.hpp +#usr/include/c++/4.4.7/ext/pb_ds/tag_and_trait.hpp +#usr/include/c++/4.4.7/ext/pb_ds/tree_policy.hpp +#usr/include/c++/4.4.7/ext/pb_ds/trie_policy.hpp +#usr/include/c++/4.4.7/ext/pod_char_traits.h +#usr/include/c++/4.4.7/ext/pointer.h +#usr/include/c++/4.4.7/ext/pool_allocator.h +#usr/include/c++/4.4.7/ext/rb_tree +#usr/include/c++/4.4.7/ext/rc_string_base.h +#usr/include/c++/4.4.7/ext/rope +#usr/include/c++/4.4.7/ext/ropeimpl.h +#usr/include/c++/4.4.7/ext/slist +#usr/include/c++/4.4.7/ext/sso_string_base.h +#usr/include/c++/4.4.7/ext/stdio_filebuf.h +#usr/include/c++/4.4.7/ext/stdio_sync_filebuf.h +#usr/include/c++/4.4.7/ext/string_conversions.h +#usr/include/c++/4.4.7/ext/throw_allocator.h +#usr/include/c++/4.4.7/ext/type_traits.h +#usr/include/c++/4.4.7/ext/typelist.h +#usr/include/c++/4.4.7/ext/vstring.h +#usr/include/c++/4.4.7/ext/vstring.tcc +#usr/include/c++/4.4.7/ext/vstring_fwd.h +#usr/include/c++/4.4.7/ext/vstring_util.h +#usr/include/c++/4.4.7/fenv.h +#usr/include/c++/4.4.7/forward_list +#usr/include/c++/4.4.7/fstream +#usr/include/c++/4.4.7/functional +#usr/include/c++/4.4.7/initializer_list +#usr/include/c++/4.4.7/iomanip +#usr/include/c++/4.4.7/ios +#usr/include/c++/4.4.7/iosfwd +#usr/include/c++/4.4.7/iostream +#usr/include/c++/4.4.7/istream +#usr/include/c++/4.4.7/iterator +#usr/include/c++/4.4.7/limits +#usr/include/c++/4.4.7/list +#usr/include/c++/4.4.7/locale +#usr/include/c++/4.4.7/map +#usr/include/c++/4.4.7/memory +#usr/include/c++/4.4.7/mutex +#usr/include/c++/4.4.7/new +#usr/include/c++/4.4.7/numeric +#usr/include/c++/4.4.7/ostream +#usr/include/c++/4.4.7/parallel +#usr/include/c++/4.4.7/parallel/algo.h +#usr/include/c++/4.4.7/parallel/algobase.h +#usr/include/c++/4.4.7/parallel/algorithm +#usr/include/c++/4.4.7/parallel/algorithmfwd.h +#usr/include/c++/4.4.7/parallel/balanced_quicksort.h +#usr/include/c++/4.4.7/parallel/base.h +#usr/include/c++/4.4.7/parallel/basic_iterator.h +#usr/include/c++/4.4.7/parallel/checkers.h +#usr/include/c++/4.4.7/parallel/compatibility.h +#usr/include/c++/4.4.7/parallel/compiletime_settings.h +#usr/include/c++/4.4.7/parallel/equally_split.h +#usr/include/c++/4.4.7/parallel/features.h +#usr/include/c++/4.4.7/parallel/find.h +#usr/include/c++/4.4.7/parallel/find_selectors.h +#usr/include/c++/4.4.7/parallel/for_each.h +#usr/include/c++/4.4.7/parallel/for_each_selectors.h +#usr/include/c++/4.4.7/parallel/iterator.h +#usr/include/c++/4.4.7/parallel/list_partition.h +#usr/include/c++/4.4.7/parallel/losertree.h +#usr/include/c++/4.4.7/parallel/merge.h +#usr/include/c++/4.4.7/parallel/multiseq_selection.h +#usr/include/c++/4.4.7/parallel/multiway_merge.h +#usr/include/c++/4.4.7/parallel/multiway_mergesort.h +#usr/include/c++/4.4.7/parallel/numeric +#usr/include/c++/4.4.7/parallel/numericfwd.h +#usr/include/c++/4.4.7/parallel/omp_loop.h +#usr/include/c++/4.4.7/parallel/omp_loop_static.h +#usr/include/c++/4.4.7/parallel/par_loop.h +#usr/include/c++/4.4.7/parallel/parallel.h +#usr/include/c++/4.4.7/parallel/partial_sum.h +#usr/include/c++/4.4.7/parallel/partition.h +#usr/include/c++/4.4.7/parallel/queue.h +#usr/include/c++/4.4.7/parallel/quicksort.h +#usr/include/c++/4.4.7/parallel/random_number.h +#usr/include/c++/4.4.7/parallel/random_shuffle.h +#usr/include/c++/4.4.7/parallel/search.h +#usr/include/c++/4.4.7/parallel/set_operations.h +#usr/include/c++/4.4.7/parallel/settings.h +#usr/include/c++/4.4.7/parallel/sort.h +#usr/include/c++/4.4.7/parallel/tags.h +#usr/include/c++/4.4.7/parallel/types.h +#usr/include/c++/4.4.7/parallel/unique_copy.h +#usr/include/c++/4.4.7/parallel/workstealing.h +#usr/include/c++/4.4.7/queue +#usr/include/c++/4.4.7/random +#usr/include/c++/4.4.7/ratio +#usr/include/c++/4.4.7/regex +#usr/include/c++/4.4.7/set +#usr/include/c++/4.4.7/sstream +#usr/include/c++/4.4.7/stack +#usr/include/c++/4.4.7/stdatomic.h +#usr/include/c++/4.4.7/stdexcept +#usr/include/c++/4.4.7/streambuf +#usr/include/c++/4.4.7/string +#usr/include/c++/4.4.7/system_error +#usr/include/c++/4.4.7/tgmath.h +#usr/include/c++/4.4.7/thread +#usr/include/c++/4.4.7/tr1 +#usr/include/c++/4.4.7/tr1/array +#usr/include/c++/4.4.7/tr1/bessel_function.tcc +#usr/include/c++/4.4.7/tr1/beta_function.tcc +#usr/include/c++/4.4.7/tr1/ccomplex +#usr/include/c++/4.4.7/tr1/cctype +#usr/include/c++/4.4.7/tr1/cfenv +#usr/include/c++/4.4.7/tr1/cfloat +#usr/include/c++/4.4.7/tr1/cinttypes +#usr/include/c++/4.4.7/tr1/climits +#usr/include/c++/4.4.7/tr1/cmath +#usr/include/c++/4.4.7/tr1/complex +#usr/include/c++/4.4.7/tr1/complex.h +#usr/include/c++/4.4.7/tr1/cstdarg +#usr/include/c++/4.4.7/tr1/cstdbool +#usr/include/c++/4.4.7/tr1/cstdint +#usr/include/c++/4.4.7/tr1/cstdio +#usr/include/c++/4.4.7/tr1/cstdlib +#usr/include/c++/4.4.7/tr1/ctgmath +#usr/include/c++/4.4.7/tr1/ctime +#usr/include/c++/4.4.7/tr1/ctype.h +#usr/include/c++/4.4.7/tr1/cwchar +#usr/include/c++/4.4.7/tr1/cwctype +#usr/include/c++/4.4.7/tr1/ell_integral.tcc +#usr/include/c++/4.4.7/tr1/exp_integral.tcc +#usr/include/c++/4.4.7/tr1/fenv.h +#usr/include/c++/4.4.7/tr1/float.h +#usr/include/c++/4.4.7/tr1/functional +#usr/include/c++/4.4.7/tr1/functional_hash.h +#usr/include/c++/4.4.7/tr1/gamma.tcc +#usr/include/c++/4.4.7/tr1/hashtable.h +#usr/include/c++/4.4.7/tr1/hypergeometric.tcc +#usr/include/c++/4.4.7/tr1/inttypes.h +#usr/include/c++/4.4.7/tr1/legendre_function.tcc +#usr/include/c++/4.4.7/tr1/limits.h +#usr/include/c++/4.4.7/tr1/math.h +#usr/include/c++/4.4.7/tr1/memory +#usr/include/c++/4.4.7/tr1/modified_bessel_func.tcc +#usr/include/c++/4.4.7/tr1/poly_hermite.tcc +#usr/include/c++/4.4.7/tr1/poly_laguerre.tcc +#usr/include/c++/4.4.7/tr1/random +#usr/include/c++/4.4.7/tr1/regex +#usr/include/c++/4.4.7/tr1/riemann_zeta.tcc +#usr/include/c++/4.4.7/tr1/shared_ptr.h +#usr/include/c++/4.4.7/tr1/special_function_util.h +#usr/include/c++/4.4.7/tr1/stdarg.h +#usr/include/c++/4.4.7/tr1/stdbool.h +#usr/include/c++/4.4.7/tr1/stdint.h +#usr/include/c++/4.4.7/tr1/stdio.h +#usr/include/c++/4.4.7/tr1/stdlib.h +#usr/include/c++/4.4.7/tr1/tgmath.h +#usr/include/c++/4.4.7/tr1/tuple +#usr/include/c++/4.4.7/tr1/type_traits +#usr/include/c++/4.4.7/tr1/unordered_map +#usr/include/c++/4.4.7/tr1/unordered_set +#usr/include/c++/4.4.7/tr1/utility +#usr/include/c++/4.4.7/tr1/wchar.h +#usr/include/c++/4.4.7/tr1/wctype.h +#usr/include/c++/4.4.7/tr1_impl +#usr/include/c++/4.4.7/tr1_impl/array +#usr/include/c++/4.4.7/tr1_impl/boost_sp_counted_base.h +#usr/include/c++/4.4.7/tr1_impl/cctype +#usr/include/c++/4.4.7/tr1_impl/cfenv +#usr/include/c++/4.4.7/tr1_impl/cinttypes +#usr/include/c++/4.4.7/tr1_impl/cmath +#usr/include/c++/4.4.7/tr1_impl/complex +#usr/include/c++/4.4.7/tr1_impl/cstdint +#usr/include/c++/4.4.7/tr1_impl/cstdio +#usr/include/c++/4.4.7/tr1_impl/cstdlib +#usr/include/c++/4.4.7/tr1_impl/cwchar +#usr/include/c++/4.4.7/tr1_impl/cwctype +#usr/include/c++/4.4.7/tr1_impl/functional +#usr/include/c++/4.4.7/tr1_impl/functional_hash.h +#usr/include/c++/4.4.7/tr1_impl/hashtable +#usr/include/c++/4.4.7/tr1_impl/hashtable_policy.h +#usr/include/c++/4.4.7/tr1_impl/random +#usr/include/c++/4.4.7/tr1_impl/random.tcc +#usr/include/c++/4.4.7/tr1_impl/regex +#usr/include/c++/4.4.7/tr1_impl/type_traits +#usr/include/c++/4.4.7/tr1_impl/unordered_map +#usr/include/c++/4.4.7/tr1_impl/unordered_set +#usr/include/c++/4.4.7/tr1_impl/utility +#usr/include/c++/4.4.7/tuple +#usr/include/c++/4.4.7/type_traits +#usr/include/c++/4.4.7/typeinfo +#usr/include/c++/4.4.7/unordered_map +#usr/include/c++/4.4.7/unordered_set +#usr/include/c++/4.4.7/utility +#usr/include/c++/4.4.7/valarray +#usr/include/c++/4.4.7/vector +#usr/info #usr/info/cpp.info #usr/info/cppinternals.info +#usr/info/dir #usr/info/gcc.info #usr/info/gccinstall.info #usr/info/gccint.info +#usr/info/libgomp.info #usr/lib/gcc #usr/lib/gcc/armv5tel-unknown-linux-gnueabi -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2 -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/cc1 -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/cc1plus -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/collect2 -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/crtbegin.o -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/crtbeginS.o -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/crtbeginT.o -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/crtend.o -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/crtendS.o -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/include -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/include/README -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/include/float.h -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/include/iso646.h -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/include/limits.h -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/include/mmintrin.h -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/include/stdarg.h -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/include/stdbool.h -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/include/stddef.h -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/include/syslimits.h -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/include/unwind.h -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/include/varargs.h -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/install-tools -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/install-tools/fixinc.sh -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/install-tools/fixincl -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/install-tools/gsyslimits.h -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/install-tools/include -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/install-tools/include/README -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/install-tools/include/float.h -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/install-tools/include/iso646.h -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/install-tools/include/limits.h -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/install-tools/include/mmintrin.h -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/install-tools/include/stdarg.h -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/install-tools/include/stdbool.h -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/install-tools/include/stddef.h -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/install-tools/include/unwind.h -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/install-tools/include/varargs.h -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/install-tools/macro_list -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/install-tools/mkheaders -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/install-tools/mkheaders.conf -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/libgcc.a -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/libgcc_eh.a -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/libgcov.a +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7 +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/cc1 +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/cc1plus +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/collect2 +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/crtbegin.o +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/crtbeginS.o +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/crtbeginT.o +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/crtend.o +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/crtendS.o +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/finclude +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include-fixed +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include-fixed/README +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include-fixed/limits.h +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include-fixed/syslimits.h +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include/arm_neon.h +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include/float.h +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include/iso646.h +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include/mf-runtime.h +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include/mmintrin.h +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include/omp.h +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include/ssp +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include/ssp/ssp.h +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include/ssp/stdio.h +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include/ssp/string.h +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include/ssp/unistd.h +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include/stdarg.h +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include/stdbool.h +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include/stddef.h +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include/stdfix.h +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include/unwind.h +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include/varargs.h +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/install-tools +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/install-tools/fixinc.sh +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/install-tools/fixinc_list +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/install-tools/fixincl +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/install-tools/gsyslimits.h +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/install-tools/include +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/install-tools/include/README +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/install-tools/include/limits.h +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/install-tools/macro_list +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/install-tools/mkheaders +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/install-tools/mkheaders.conf +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/install-tools/mkinstalldirs +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/libgcc.a +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/libgcc_eh.a +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/libgcov.a +#usr/lib/libgomp.a +#usr/lib/libgomp.la +#usr/lib/libgomp.so +usr/lib/libgomp.so.1 +usr/lib/libgomp.so.1.0.0 +#usr/lib/libgomp.spec +#usr/lib/libmudflap.a +#usr/lib/libmudflap.la +#usr/lib/libmudflap.so +usr/lib/libmudflap.so.0 +usr/lib/libmudflap.so.0.0.0 +#usr/lib/libmudflapth.a +#usr/lib/libmudflapth.la +#usr/lib/libmudflapth.so +usr/lib/libmudflapth.so.0 +usr/lib/libmudflapth.so.0.0.0 +#usr/lib/libssp.a +#usr/lib/libssp.la +#usr/lib/libssp.so +usr/lib/libssp.so.0 +usr/lib/libssp.so.0.0.0 +#usr/lib/libssp_nonshared.a +#usr/lib/libssp_nonshared.la #usr/lib/libstdc++.a -#usr/lib/libstdc++.la -#usr/lib/libstdc++.so -usr/lib/libstdc++.so.6 -usr/lib/libstdc++.so.6.0.8 +usr/lib/libstdc++.so.6.0.13 #usr/lib/libsupc++.a #usr/lib/libsupc++.la #usr/man/man1/cpp.1 diff --git a/config/rootfiles/common/cairo b/config/rootfiles/common/cairo new file mode 100644 index 0000000..ca09099 --- /dev/null +++ b/config/rootfiles/common/cairo @@ -0,0 +1,99 @@ +#usr/bin/cairo-trace +#usr/include/cairo +#usr/include/cairo/cairo-deprecated.h +#usr/include/cairo/cairo-features.h +#usr/include/cairo/cairo-ft.h +#usr/include/cairo/cairo-gobject.h +#usr/include/cairo/cairo-pdf.h +#usr/include/cairo/cairo-ps.h +#usr/include/cairo/cairo-script-interpreter.h +#usr/include/cairo/cairo-svg.h +#usr/include/cairo/cairo-version.h +#usr/include/cairo/cairo.h +#usr/lib/cairo +#usr/lib/cairo/libcairo-trace.a +#usr/lib/cairo/libcairo-trace.la +usr/lib/cairo/libcairo-trace.so +usr/lib/cairo/libcairo-trace.so.0 +usr/lib/cairo/libcairo-trace.so.0.0.0 +#usr/lib/libcairo-gobject.a +#usr/lib/libcairo-gobject.la +usr/lib/libcairo-gobject.so +usr/lib/libcairo-gobject.so.2 +usr/lib/libcairo-gobject.so.2.11000.2 +#usr/lib/libcairo-script-interpreter.a +#usr/lib/libcairo-script-interpreter.la +usr/lib/libcairo-script-interpreter.so +usr/lib/libcairo-script-interpreter.so.2 +usr/lib/libcairo-script-interpreter.so.2.11000.2 +#usr/lib/libcairo.a +#usr/lib/libcairo.la +#usr/lib/libcairo.so +usr/lib/libcairo.so.2 +usr/lib/libcairo.so.2.11000.2 +#usr/lib/pkgconfig/cairo-fc.pc +#usr/lib/pkgconfig/cairo-ft.pc +#usr/lib/pkgconfig/cairo-gobject.pc +#usr/lib/pkgconfig/cairo-pdf.pc +#usr/lib/pkgconfig/cairo-png.pc +#usr/lib/pkgconfig/cairo-ps.pc +#usr/lib/pkgconfig/cairo-svg.pc +#usr/lib/pkgconfig/cairo.pc +#usr/share/gtk-doc/html/cairo +#usr/share/gtk-doc/html/cairo/bindings-errors.html +#usr/share/gtk-doc/html/cairo/bindings-fonts.html +#usr/share/gtk-doc/html/cairo/bindings-memory.html +#usr/share/gtk-doc/html/cairo/bindings-overloading.html +#usr/share/gtk-doc/html/cairo/bindings-path.html +#usr/share/gtk-doc/html/cairo/bindings-patterns.html +#usr/share/gtk-doc/html/cairo/bindings-return-values.html +#usr/share/gtk-doc/html/cairo/bindings-streams.html +#usr/share/gtk-doc/html/cairo/bindings-surfaces.html +#usr/share/gtk-doc/html/cairo/cairo-Error-handling.html +#usr/share/gtk-doc/html/cairo/cairo-FreeType-Fonts.html +#usr/share/gtk-doc/html/cairo/cairo-Image-Surfaces.html +#usr/share/gtk-doc/html/cairo/cairo-PDF-Surfaces.html +#usr/share/gtk-doc/html/cairo/cairo-PNG-Support.html +#usr/share/gtk-doc/html/cairo/cairo-Paths.html +#usr/share/gtk-doc/html/cairo/cairo-PostScript-Surfaces.html +#usr/share/gtk-doc/html/cairo/cairo-Quartz-(CGFont)-Fonts.html +#usr/share/gtk-doc/html/cairo/cairo-Quartz-Surfaces.html +#usr/share/gtk-doc/html/cairo/cairo-Recording-Surfaces.html +#usr/share/gtk-doc/html/cairo/cairo-Regions.html +#usr/share/gtk-doc/html/cairo/cairo-SVG-Surfaces.html +#usr/share/gtk-doc/html/cairo/cairo-Transformations.html +#usr/share/gtk-doc/html/cairo/cairo-Types.html +#usr/share/gtk-doc/html/cairo/cairo-User-Fonts.html +#usr/share/gtk-doc/html/cairo/cairo-Version-Information.html +#usr/share/gtk-doc/html/cairo/cairo-Win32-Fonts.html +#usr/share/gtk-doc/html/cairo/cairo-Win32-Surfaces.html +#usr/share/gtk-doc/html/cairo/cairo-XLib-Surfaces.html +#usr/share/gtk-doc/html/cairo/cairo-cairo-device-t.html +#usr/share/gtk-doc/html/cairo/cairo-cairo-font-face-t.html +#usr/share/gtk-doc/html/cairo/cairo-cairo-font-options-t.html +#usr/share/gtk-doc/html/cairo/cairo-cairo-matrix-t.html +#usr/share/gtk-doc/html/cairo/cairo-cairo-pattern-t.html +#usr/share/gtk-doc/html/cairo/cairo-cairo-scaled-font-t.html +#usr/share/gtk-doc/html/cairo/cairo-cairo-surface-t.html +#usr/share/gtk-doc/html/cairo/cairo-cairo-t.html +#usr/share/gtk-doc/html/cairo/cairo-drawing.html +#usr/share/gtk-doc/html/cairo/cairo-fonts.html +#usr/share/gtk-doc/html/cairo/cairo-support.html +#usr/share/gtk-doc/html/cairo/cairo-surfaces.html +#usr/share/gtk-doc/html/cairo/cairo-text.html +#usr/share/gtk-doc/html/cairo/cairo.devhelp +#usr/share/gtk-doc/html/cairo/cairo.devhelp2 +#usr/share/gtk-doc/html/cairo/home.png +#usr/share/gtk-doc/html/cairo/index-1.10.html +#usr/share/gtk-doc/html/cairo/index-1.2.html +#usr/share/gtk-doc/html/cairo/index-1.4.html +#usr/share/gtk-doc/html/cairo/index-1.6.html +#usr/share/gtk-doc/html/cairo/index-1.8.html +#usr/share/gtk-doc/html/cairo/index-all.html +#usr/share/gtk-doc/html/cairo/index.html +#usr/share/gtk-doc/html/cairo/index.sgml +#usr/share/gtk-doc/html/cairo/language-bindings.html +#usr/share/gtk-doc/html/cairo/left.png +#usr/share/gtk-doc/html/cairo/right.png +#usr/share/gtk-doc/html/cairo/style.css +#usr/share/gtk-doc/html/cairo/up.png diff --git a/config/rootfiles/common/cmake b/config/rootfiles/common/cmake index 4a1d702..81a9539 100644 --- a/config/rootfiles/common/cmake +++ b/config/rootfiles/common/cmake @@ -1,424 +1,421 @@ -#usr/local/bin/ccmake -#usr/local/bin/cmake -#usr/local/bin/cpack -#usr/local/bin/ctest -#usr/local/doc -#usr/local/doc/cmake-2.6 -#usr/local/doc/cmake-2.6/ccmake.docbook -#usr/local/doc/cmake-2.6/ccmake.html -#usr/local/doc/cmake-2.6/ccmake.txt -#usr/local/doc/cmake-2.6/cmake-commands.html -#usr/local/doc/cmake-2.6/cmake-commands.txt -#usr/local/doc/cmake-2.6/cmake-compatcommands.html -#usr/local/doc/cmake-2.6/cmake-compatcommands.txt -#usr/local/doc/cmake-2.6/cmake-modules.html -#usr/local/doc/cmake-2.6/cmake-modules.txt -#usr/local/doc/cmake-2.6/cmake-policies.html -#usr/local/doc/cmake-2.6/cmake-policies.txt -#usr/local/doc/cmake-2.6/cmake-properties.html -#usr/local/doc/cmake-2.6/cmake-properties.txt -#usr/local/doc/cmake-2.6/cmake-variables.html -#usr/local/doc/cmake-2.6/cmake-variables.txt -#usr/local/doc/cmake-2.6/cmake.docbook -#usr/local/doc/cmake-2.6/cmake.html -#usr/local/doc/cmake-2.6/cmake.txt -#usr/local/doc/cmake-2.6/cpack.docbook -#usr/local/doc/cmake-2.6/cpack.html -#usr/local/doc/cmake-2.6/cpack.txt -#usr/local/doc/cmake-2.6/ctest.docbook -#usr/local/doc/cmake-2.6/ctest.html -#usr/local/doc/cmake-2.6/ctest.txt -#usr/local/man -#usr/local/man/man1 -#usr/local/man/man1/ccmake.1 -#usr/local/man/man1/cmake.1 -#usr/local/man/man1/cmakecommands.1 -#usr/local/man/man1/cmakecompat.1 -#usr/local/man/man1/cmakemodules.1 -#usr/local/man/man1/cmakepolicies.1 -#usr/local/man/man1/cmakeprops.1 -#usr/local/man/man1/cmakevars.1 -#usr/local/man/man1/cpack.1 -#usr/local/man/man1/ctest.1 -#usr/local/share/cmake-2.6 -#usr/local/share/cmake-2.6/Modules -#usr/local/share/cmake-2.6/Modules/AddFileDependencies.cmake -#usr/local/share/cmake-2.6/Modules/BundleUtilities.cmake -#usr/local/share/cmake-2.6/Modules/CMake.cmake -#usr/local/share/cmake-2.6/Modules/CMakeASM-ATTInformation.cmake -#usr/local/share/cmake-2.6/Modules/CMakeASMCompiler.cmake.in -#usr/local/share/cmake-2.6/Modules/CMakeASMInformation.cmake -#usr/local/share/cmake-2.6/Modules/CMakeASM_MASMInformation.cmake -#usr/local/share/cmake-2.6/Modules/CMakeBackwardCompatibilityC.cmake -#usr/local/share/cmake-2.6/Modules/CMakeBackwardCompatibilityCXX.cmake -#usr/local/share/cmake-2.6/Modules/CMakeBorlandFindMake.cmake -#usr/local/share/cmake-2.6/Modules/CMakeBuildSettings.cmake.in -#usr/local/share/cmake-2.6/Modules/CMakeCCompiler.cmake.in -#usr/local/share/cmake-2.6/Modules/CMakeCCompilerABI.c -#usr/local/share/cmake-2.6/Modules/CMakeCCompilerId.c.in -#usr/local/share/cmake-2.6/Modules/CMakeCInformation.cmake -#usr/local/share/cmake-2.6/Modules/CMakeCXXCompiler.cmake.in -#usr/local/share/cmake-2.6/Modules/CMakeCXXCompilerABI.cpp -#usr/local/share/cmake-2.6/Modules/CMakeCXXCompilerId.cpp.in -#usr/local/share/cmake-2.6/Modules/CMakeCXXInformation.cmake -#usr/local/share/cmake-2.6/Modules/CMakeCommonLanguageInclude.cmake -#usr/local/share/cmake-2.6/Modules/CMakeCompilerABI.h -#usr/local/share/cmake-2.6/Modules/CMakeConfigurableFile.in -#usr/local/share/cmake-2.6/Modules/CMakeDependentOption.cmake -#usr/local/share/cmake-2.6/Modules/CMakeDetermineASM-ATTCompiler.cmake -#usr/local/share/cmake-2.6/Modules/CMakeDetermineASMCompiler.cmake -#usr/local/share/cmake-2.6/Modules/CMakeDetermineASM_MASMCompiler.cmake -#usr/local/share/cmake-2.6/Modules/CMakeDetermineCCompiler.cmake -#usr/local/share/cmake-2.6/Modules/CMakeDetermineCXXCompiler.cmake -#usr/local/share/cmake-2.6/Modules/CMakeDetermineCompilerABI.cmake -#usr/local/share/cmake-2.6/Modules/CMakeDetermineCompilerId.cmake -#usr/local/share/cmake-2.6/Modules/CMakeDetermineFortranCompiler.cmake -#usr/local/share/cmake-2.6/Modules/CMakeDetermineJavaCompiler.cmake -#usr/local/share/cmake-2.6/Modules/CMakeDetermineRCCompiler.cmake -#usr/local/share/cmake-2.6/Modules/CMakeDetermineSystem.cmake -#usr/local/share/cmake-2.6/Modules/CMakeExportBuildSettings.cmake -#usr/local/share/cmake-2.6/Modules/CMakeFindBinUtils.cmake -#usr/local/share/cmake-2.6/Modules/CMakeFindFrameworks.cmake -#usr/local/share/cmake-2.6/Modules/CMakeFindWMake.cmake -#usr/local/share/cmake-2.6/Modules/CMakeFindXCode.cmake -#usr/local/share/cmake-2.6/Modules/CMakeForceCompiler.cmake -#usr/local/share/cmake-2.6/Modules/CMakeFortranCompiler.cmake.in -#usr/local/share/cmake-2.6/Modules/CMakeFortranCompilerId.F90.in -#usr/local/share/cmake-2.6/Modules/CMakeFortranInformation.cmake -#usr/local/share/cmake-2.6/Modules/CMakeGenericSystem.cmake -#usr/local/share/cmake-2.6/Modules/CMakeImportBuildSettings.cmake -#usr/local/share/cmake-2.6/Modules/CMakeJavaCompiler.cmake.in -#usr/local/share/cmake-2.6/Modules/CMakeJavaInformation.cmake -#usr/local/share/cmake-2.6/Modules/CMakeMSYSFindMake.cmake -#usr/local/share/cmake-2.6/Modules/CMakeMinGWFindMake.cmake -#usr/local/share/cmake-2.6/Modules/CMakeNMakeFindMake.cmake -#usr/local/share/cmake-2.6/Modules/CMakePlatformId.h.in -#usr/local/share/cmake-2.6/Modules/CMakePrintSystemInformation.cmake -#usr/local/share/cmake-2.6/Modules/CMakeRCCompiler.cmake.in -#usr/local/share/cmake-2.6/Modules/CMakeRCInformation.cmake -#usr/local/share/cmake-2.6/Modules/CMakeSystem.cmake.in -#usr/local/share/cmake-2.6/Modules/CMakeSystemSpecificInformation.cmake -#usr/local/share/cmake-2.6/Modules/CMakeTestASM-ATTCompiler.cmake -#usr/local/share/cmake-2.6/Modules/CMakeTestASMCompiler.cmake -#usr/local/share/cmake-2.6/Modules/CMakeTestASM_MASMCompiler.cmake -#usr/local/share/cmake-2.6/Modules/CMakeTestCCompiler.cmake -#usr/local/share/cmake-2.6/Modules/CMakeTestCXXCompiler.cmake -#usr/local/share/cmake-2.6/Modules/CMakeTestForFreeVC.cxx -#usr/local/share/cmake-2.6/Modules/CMakeTestFortranCompiler.cmake -#usr/local/share/cmake-2.6/Modules/CMakeTestGNU.c -#usr/local/share/cmake-2.6/Modules/CMakeTestJavaCompiler.cmake -#usr/local/share/cmake-2.6/Modules/CMakeTestNMakeCLVersion.c -#usr/local/share/cmake-2.6/Modules/CMakeTestRCCompiler.cmake -#usr/local/share/cmake-2.6/Modules/CMakeUnixFindMake.cmake -#usr/local/share/cmake-2.6/Modules/CMakeVS6BackwardCompatibility.cmake -#usr/local/share/cmake-2.6/Modules/CMakeVS6FindMake.cmake -#usr/local/share/cmake-2.6/Modules/CMakeVS71FindMake.cmake -#usr/local/share/cmake-2.6/Modules/CMakeVS7BackwardCompatibility.cmake -#usr/local/share/cmake-2.6/Modules/CMakeVS7FindMake.cmake -#usr/local/share/cmake-2.6/Modules/CMakeVS8FindMake.cmake -#usr/local/share/cmake-2.6/Modules/CMakeVS9FindMake.cmake -#usr/local/share/cmake-2.6/Modules/CPack.DS_Store.in -#usr/local/share/cmake-2.6/Modules/CPack.Description.plist.in -#usr/local/share/cmake-2.6/Modules/CPack.Info.plist.in -#usr/local/share/cmake-2.6/Modules/CPack.OSXScriptLauncher.in -#usr/local/share/cmake-2.6/Modules/CPack.OSXScriptLauncher.rsrc.in -#usr/local/share/cmake-2.6/Modules/CPack.OSXX11.Info.plist.in -#usr/local/share/cmake-2.6/Modules/CPack.OSXX11.main.scpt.in -#usr/local/share/cmake-2.6/Modules/CPack.RuntimeScript.in -#usr/local/share/cmake-2.6/Modules/CPack.STGZ_Header.sh.in -#usr/local/share/cmake-2.6/Modules/CPack.VolumeIcon.icns.in -#usr/local/share/cmake-2.6/Modules/CPack.background.png.in -#usr/local/share/cmake-2.6/Modules/CPack.cmake -#usr/local/share/cmake-2.6/Modules/CPack.distribution.dist.in -#usr/local/share/cmake-2.6/Modules/CPackDeb.cmake -#usr/local/share/cmake-2.6/Modules/CPackRPM.cmake -#usr/local/share/cmake-2.6/Modules/CPackZIP.cmake -#usr/local/share/cmake-2.6/Modules/CTest.cmake -#usr/local/share/cmake-2.6/Modules/CTestTargets.cmake -#usr/local/share/cmake-2.6/Modules/CheckCCompilerFlag.cmake -#usr/local/share/cmake-2.6/Modules/CheckCSourceCompiles.cmake -#usr/local/share/cmake-2.6/Modules/CheckCSourceRuns.cmake -#usr/local/share/cmake-2.6/Modules/CheckCXXCompilerFlag.cmake -#usr/local/share/cmake-2.6/Modules/CheckCXXSourceCompiles.cmake -#usr/local/share/cmake-2.6/Modules/CheckCXXSourceRuns.cmake -#usr/local/share/cmake-2.6/Modules/CheckForPthreads.c -#usr/local/share/cmake-2.6/Modules/CheckFortranFunctionExists.cmake -#usr/local/share/cmake-2.6/Modules/CheckFunctionExists.c -#usr/local/share/cmake-2.6/Modules/CheckFunctionExists.cmake -#usr/local/share/cmake-2.6/Modules/CheckIncludeFile.c.in -#usr/local/share/cmake-2.6/Modules/CheckIncludeFile.cmake -#usr/local/share/cmake-2.6/Modules/CheckIncludeFile.cxx.in -#usr/local/share/cmake-2.6/Modules/CheckIncludeFileCXX.cmake -#usr/local/share/cmake-2.6/Modules/CheckIncludeFiles.cmake -#usr/local/share/cmake-2.6/Modules/CheckLibraryExists.cmake -#usr/local/share/cmake-2.6/Modules/CheckLibraryExists.lists.in -#usr/local/share/cmake-2.6/Modules/CheckSizeOf.cmake -#usr/local/share/cmake-2.6/Modules/CheckStructHasMember.cmake -#usr/local/share/cmake-2.6/Modules/CheckSymbolExists.cmake -#usr/local/share/cmake-2.6/Modules/CheckTypeSize.cmake -#usr/local/share/cmake-2.6/Modules/CheckTypeSizeC.c.in -#usr/local/share/cmake-2.6/Modules/CheckVariableExists.c -#usr/local/share/cmake-2.6/Modules/CheckVariableExists.cmake -#usr/local/share/cmake-2.6/Modules/Dart.cmake -#usr/local/share/cmake-2.6/Modules/DartConfiguration.tcl.in -#usr/local/share/cmake-2.6/Modules/Documentation.cmake -#usr/local/share/cmake-2.6/Modules/DummyCXXFile.cxx -#usr/local/share/cmake-2.6/Modules/FLTKCompatibility.cmake -#usr/local/share/cmake-2.6/Modules/FeatureSummary.cmake -#usr/local/share/cmake-2.6/Modules/FindASPELL.cmake -#usr/local/share/cmake-2.6/Modules/FindAVIFile.cmake -#usr/local/share/cmake-2.6/Modules/FindBLAS.cmake -#usr/local/share/cmake-2.6/Modules/FindBZip2.cmake -#usr/local/share/cmake-2.6/Modules/FindBoost.cmake -#usr/local/share/cmake-2.6/Modules/FindCABLE.cmake -#usr/local/share/cmake-2.6/Modules/FindCURL.cmake -#usr/local/share/cmake-2.6/Modules/FindCVS.cmake -#usr/local/share/cmake-2.6/Modules/FindCoin3D.cmake -#usr/local/share/cmake-2.6/Modules/FindCups.cmake -#usr/local/share/cmake-2.6/Modules/FindCurses.cmake -#usr/local/share/cmake-2.6/Modules/FindCxxTest.cmake -#usr/local/share/cmake-2.6/Modules/FindCygwin.cmake -#usr/local/share/cmake-2.6/Modules/FindDCMTK.cmake -#usr/local/share/cmake-2.6/Modules/FindDart.cmake -#usr/local/share/cmake-2.6/Modules/FindDevIL.cmake -#usr/local/share/cmake-2.6/Modules/FindDoxygen.cmake -#usr/local/share/cmake-2.6/Modules/FindEXPAT.cmake -#usr/local/share/cmake-2.6/Modules/FindFLTK.cmake -#usr/local/share/cmake-2.6/Modules/FindFLTK2.cmake -#usr/local/share/cmake-2.6/Modules/FindFreetype.cmake -#usr/local/share/cmake-2.6/Modules/FindGCCXML.cmake -#usr/local/share/cmake-2.6/Modules/FindGDAL.cmake -#usr/local/share/cmake-2.6/Modules/FindGIF.cmake -#usr/local/share/cmake-2.6/Modules/FindGLU.cmake -#usr/local/share/cmake-2.6/Modules/FindGLUT.cmake -#usr/local/share/cmake-2.6/Modules/FindGTK.cmake -#usr/local/share/cmake-2.6/Modules/FindGettext.cmake -#usr/local/share/cmake-2.6/Modules/FindGnuplot.cmake -#usr/local/share/cmake-2.6/Modules/FindHSPELL.cmake -#usr/local/share/cmake-2.6/Modules/FindHTMLHelp.cmake -#usr/local/share/cmake-2.6/Modules/FindITK.cmake -#usr/local/share/cmake-2.6/Modules/FindImageMagick.cmake -#usr/local/share/cmake-2.6/Modules/FindJNI.cmake -#usr/local/share/cmake-2.6/Modules/FindJPEG.cmake -#usr/local/share/cmake-2.6/Modules/FindJasper.cmake -#usr/local/share/cmake-2.6/Modules/FindJava.cmake -#usr/local/share/cmake-2.6/Modules/FindKDE3.cmake -#usr/local/share/cmake-2.6/Modules/FindKDE4.cmake -#usr/local/share/cmake-2.6/Modules/FindLAPACK.cmake -#usr/local/share/cmake-2.6/Modules/FindLATEX.cmake -#usr/local/share/cmake-2.6/Modules/FindLibXml2.cmake -#usr/local/share/cmake-2.6/Modules/FindLibXslt.cmake -#usr/local/share/cmake-2.6/Modules/FindLua50.cmake -#usr/local/share/cmake-2.6/Modules/FindLua51.cmake -#usr/local/share/cmake-2.6/Modules/FindMFC.cmake -#usr/local/share/cmake-2.6/Modules/FindMPEG.cmake -#usr/local/share/cmake-2.6/Modules/FindMPEG2.cmake -#usr/local/share/cmake-2.6/Modules/FindMPI.cmake -#usr/local/share/cmake-2.6/Modules/FindMatlab.cmake -#usr/local/share/cmake-2.6/Modules/FindMotif.cmake -#usr/local/share/cmake-2.6/Modules/FindOpenAL.cmake -#usr/local/share/cmake-2.6/Modules/FindOpenGL.cmake -#usr/local/share/cmake-2.6/Modules/FindOpenMP.cmake -#usr/local/share/cmake-2.6/Modules/FindOpenSSL.cmake -#usr/local/share/cmake-2.6/Modules/FindOpenSceneGraph.cmake -#usr/local/share/cmake-2.6/Modules/FindOpenThreads.cmake -#usr/local/share/cmake-2.6/Modules/FindPHP4.cmake -#usr/local/share/cmake-2.6/Modules/FindPNG.cmake -#usr/local/share/cmake-2.6/Modules/FindPackageHandleStandardArgs.cmake -#usr/local/share/cmake-2.6/Modules/FindPackageMessage.cmake -#usr/local/share/cmake-2.6/Modules/FindPerl.cmake -#usr/local/share/cmake-2.6/Modules/FindPerlLibs.cmake -#usr/local/share/cmake-2.6/Modules/FindPhysFS.cmake -#usr/local/share/cmake-2.6/Modules/FindPike.cmake -#usr/local/share/cmake-2.6/Modules/FindPkgConfig.cmake -#usr/local/share/cmake-2.6/Modules/FindProducer.cmake -#usr/local/share/cmake-2.6/Modules/FindPythonInterp.cmake -#usr/local/share/cmake-2.6/Modules/FindPythonLibs.cmake -#usr/local/share/cmake-2.6/Modules/FindQt.cmake -#usr/local/share/cmake-2.6/Modules/FindQt3.cmake -#usr/local/share/cmake-2.6/Modules/FindQt4.cmake -#usr/local/share/cmake-2.6/Modules/FindQuickTime.cmake -#usr/local/share/cmake-2.6/Modules/FindRTI.cmake -#usr/local/share/cmake-2.6/Modules/FindRuby.cmake -#usr/local/share/cmake-2.6/Modules/FindSDL.cmake -#usr/local/share/cmake-2.6/Modules/FindSDL_image.cmake -#usr/local/share/cmake-2.6/Modules/FindSDL_mixer.cmake -#usr/local/share/cmake-2.6/Modules/FindSDL_net.cmake -#usr/local/share/cmake-2.6/Modules/FindSDL_sound.cmake -#usr/local/share/cmake-2.6/Modules/FindSDL_ttf.cmake -#usr/local/share/cmake-2.6/Modules/FindSWIG.cmake -#usr/local/share/cmake-2.6/Modules/FindSelfPackers.cmake -#usr/local/share/cmake-2.6/Modules/FindSquish.cmake -#usr/local/share/cmake-2.6/Modules/FindSubversion.cmake -#usr/local/share/cmake-2.6/Modules/FindTCL.cmake -#usr/local/share/cmake-2.6/Modules/FindTIFF.cmake -#usr/local/share/cmake-2.6/Modules/FindTclStub.cmake -#usr/local/share/cmake-2.6/Modules/FindTclsh.cmake -#usr/local/share/cmake-2.6/Modules/FindThreads.cmake -#usr/local/share/cmake-2.6/Modules/FindUnixCommands.cmake -#usr/local/share/cmake-2.6/Modules/FindVTK.cmake -#usr/local/share/cmake-2.6/Modules/FindWget.cmake -#usr/local/share/cmake-2.6/Modules/FindWish.cmake -#usr/local/share/cmake-2.6/Modules/FindX11.cmake -#usr/local/share/cmake-2.6/Modules/FindXMLRPC.cmake -#usr/local/share/cmake-2.6/Modules/FindZLIB.cmake -#usr/local/share/cmake-2.6/Modules/Findosg.cmake -#usr/local/share/cmake-2.6/Modules/FindosgAnimation.cmake -#usr/local/share/cmake-2.6/Modules/FindosgDB.cmake -#usr/local/share/cmake-2.6/Modules/FindosgFX.cmake -#usr/local/share/cmake-2.6/Modules/FindosgGA.cmake -#usr/local/share/cmake-2.6/Modules/FindosgIntrospection.cmake -#usr/local/share/cmake-2.6/Modules/FindosgManipulator.cmake -#usr/local/share/cmake-2.6/Modules/FindosgParticle.cmake -#usr/local/share/cmake-2.6/Modules/FindosgProducer.cmake -#usr/local/share/cmake-2.6/Modules/FindosgShadow.cmake -#usr/local/share/cmake-2.6/Modules/FindosgSim.cmake -#usr/local/share/cmake-2.6/Modules/FindosgTerrain.cmake -#usr/local/share/cmake-2.6/Modules/FindosgText.cmake -#usr/local/share/cmake-2.6/Modules/FindosgUtil.cmake -#usr/local/share/cmake-2.6/Modules/FindosgViewer.cmake -#usr/local/share/cmake-2.6/Modules/FindosgVolume.cmake -#usr/local/share/cmake-2.6/Modules/FindosgWidget.cmake -#usr/local/share/cmake-2.6/Modules/Findosg_functions.cmake -#usr/local/share/cmake-2.6/Modules/FindwxWidgets.cmake -#usr/local/share/cmake-2.6/Modules/FindwxWindows.cmake -#usr/local/share/cmake-2.6/Modules/FortranCInterface.cmake -#usr/local/share/cmake-2.6/Modules/FortranCInterface.h.in -#usr/local/share/cmake-2.6/Modules/GetPrerequisites.cmake -#usr/local/share/cmake-2.6/Modules/ITKCompatibility.cmake -#usr/local/share/cmake-2.6/Modules/InstallRequiredSystemLibraries.cmake -#usr/local/share/cmake-2.6/Modules/KDE3Macros.cmake -#usr/local/share/cmake-2.6/Modules/MacOSXBundleInfo.plist.in -#usr/local/share/cmake-2.6/Modules/MacOSXFrameworkInfo.plist.in -#usr/local/share/cmake-2.6/Modules/MacroAddFileDependencies.cmake -#usr/local/share/cmake-2.6/Modules/NSIS.InstallOptions.ini.in -#usr/local/share/cmake-2.6/Modules/NSIS.template.in -#usr/local/share/cmake-2.6/Modules/Platform -#usr/local/share/cmake-2.6/Modules/Platform/AIX-VisualAge-Fortran.cmake -#usr/local/share/cmake-2.6/Modules/Platform/AIX.cmake -#usr/local/share/cmake-2.6/Modules/Platform/BSDOS.cmake -#usr/local/share/cmake-2.6/Modules/Platform/BeOS.cmake -#usr/local/share/cmake-2.6/Modules/Platform/BlueGeneL.cmake -#usr/local/share/cmake-2.6/Modules/Platform/CYGWIN-g77.cmake -#usr/local/share/cmake-2.6/Modules/Platform/CYGWIN.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Catamount.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Darwin-icc.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Darwin-icpc.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Darwin-xlc.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Darwin.cmake -#usr/local/share/cmake-2.6/Modules/Platform/DragonFly.cmake -#usr/local/share/cmake-2.6/Modules/Platform/FreeBSD.cmake -#usr/local/share/cmake-2.6/Modules/Platform/GNU.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Generic-ADSP-ASM.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Generic-ADSP-C.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Generic-ADSP-CXX.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Generic-ADSP-Common.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Generic-SDCC-C.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Generic.cmake -#usr/local/share/cmake-2.6/Modules/Platform/HP-UX.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Haiku.cmake -#usr/local/share/cmake-2.6/Modules/Platform/IRIX.cmake -#usr/local/share/cmake-2.6/Modules/Platform/IRIX64.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Linux-GNU-Fortran.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Linux-Intel-C.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Linux-Intel-CXX.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Linux-Intel-Fortran.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Linux-PGI-C.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Linux-PGI-CXX.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Linux-PGI-Fortran.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Linux-SunPro-C.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Linux-SunPro-CXX.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Linux-SunPro-Fortran.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Linux-VisualAge-C.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Linux-VisualAge-Fortran.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Linux-como.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Linux-icpc.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Linux-ifort.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Linux.cmake -#usr/local/share/cmake-2.6/Modules/Platform/MP-RAS.cmake -#usr/local/share/cmake-2.6/Modules/Platform/NetBSD.cmake -#usr/local/share/cmake-2.6/Modules/Platform/OSF1.cmake -#usr/local/share/cmake-2.6/Modules/Platform/OpenBSD.cmake -#usr/local/share/cmake-2.6/Modules/Platform/QNX.cmake -#usr/local/share/cmake-2.6/Modules/Platform/RISCos.cmake -#usr/local/share/cmake-2.6/Modules/Platform/SCO_SV.cmake -#usr/local/share/cmake-2.6/Modules/Platform/SINIX.cmake -#usr/local/share/cmake-2.6/Modules/Platform/SunOS-SunPro-Fortran.cmake -#usr/local/share/cmake-2.6/Modules/Platform/SunOS.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Tru64.cmake -#usr/local/share/cmake-2.6/Modules/Platform/ULTRIX.cmake -#usr/local/share/cmake-2.6/Modules/Platform/UNIX_SV.cmake -#usr/local/share/cmake-2.6/Modules/Platform/UnixPaths.cmake -#usr/local/share/cmake-2.6/Modules/Platform/UnixWare.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Windows-bcc32.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Windows-cl.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Windows-cl.cmake.in -#usr/local/share/cmake-2.6/Modules/Platform/Windows-df.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Windows-g++.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Windows-g77.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Windows-gcc.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Windows-icl.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Windows-ifort.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Windows-wcl386.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Windows.cmake -#usr/local/share/cmake-2.6/Modules/Platform/WindowsPaths.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Xenix.cmake -#usr/local/share/cmake-2.6/Modules/Platform/cl.cmake -#usr/local/share/cmake-2.6/Modules/Platform/eCos.cmake -#usr/local/share/cmake-2.6/Modules/Platform/g77.cmake -#usr/local/share/cmake-2.6/Modules/Platform/gas.cmake -#usr/local/share/cmake-2.6/Modules/Platform/gcc.cmake -#usr/local/share/cmake-2.6/Modules/Platform/kFreeBSD.cmake -#usr/local/share/cmake-2.6/Modules/Platform/syllable.cmake -#usr/local/share/cmake-2.6/Modules/Platform/xlf.cmake -#usr/local/share/cmake-2.6/Modules/SquishTestScript.cmake -#usr/local/share/cmake-2.6/Modules/SystemInformation.cmake -#usr/local/share/cmake-2.6/Modules/SystemInformation.in -#usr/local/share/cmake-2.6/Modules/TestBigEndian.cmake -#usr/local/share/cmake-2.6/Modules/TestCXXAcceptsFlag.cmake -#usr/local/share/cmake-2.6/Modules/TestEndianess.c.in -#usr/local/share/cmake-2.6/Modules/TestForANSIForScope.cmake -#usr/local/share/cmake-2.6/Modules/TestForANSIStreamHeaders.cmake -#usr/local/share/cmake-2.6/Modules/TestForANSIStreamHeaders.cxx -#usr/local/share/cmake-2.6/Modules/TestForAnsiForScope.cxx -#usr/local/share/cmake-2.6/Modules/TestForSSTREAM.cmake -#usr/local/share/cmake-2.6/Modules/TestForSSTREAM.cxx -#usr/local/share/cmake-2.6/Modules/TestForSTDNamespace.cmake -#usr/local/share/cmake-2.6/Modules/TestForSTDNamespace.cxx -#usr/local/share/cmake-2.6/Modules/UseEcos.cmake -#usr/local/share/cmake-2.6/Modules/UsePkgConfig.cmake -#usr/local/share/cmake-2.6/Modules/UseQt4.cmake -#usr/local/share/cmake-2.6/Modules/UseSWIG.cmake -#usr/local/share/cmake-2.6/Modules/UseVTK40.cmake -#usr/local/share/cmake-2.6/Modules/UseVTKBuildSettings40.cmake -#usr/local/share/cmake-2.6/Modules/UseVTKConfig40.cmake -#usr/local/share/cmake-2.6/Modules/Use_wxWindows.cmake -#usr/local/share/cmake-2.6/Modules/UsewxWidgets.cmake -#usr/local/share/cmake-2.6/Modules/VTKCompatibility.cmake -#usr/local/share/cmake-2.6/Modules/ecos_clean.cmake -#usr/local/share/cmake-2.6/Modules/kde3init_dummy.cpp.in -#usr/local/share/cmake-2.6/Modules/kde3uic.cmake -#usr/local/share/cmake-2.6/Modules/readme.txt -#usr/local/share/cmake-2.6/Templates -#usr/local/share/cmake-2.6/Templates/CMakeLists.txt -#usr/local/share/cmake-2.6/Templates/CMakeVSMacros1.vsmacros -#usr/local/share/cmake-2.6/Templates/CMakeVSMacros2.vsmacros -#usr/local/share/cmake-2.6/Templates/CMakeVisualStudio6Configurations.cmake -#usr/local/share/cmake-2.6/Templates/CPack.GenericDescription.txt -#usr/local/share/cmake-2.6/Templates/CPack.GenericLicense.txt -#usr/local/share/cmake-2.6/Templates/CPack.GenericWelcome.txt -#usr/local/share/cmake-2.6/Templates/CPackConfig.cmake.in -#usr/local/share/cmake-2.6/Templates/CTestScript.cmake.in -#usr/local/share/cmake-2.6/Templates/DLLFooter.dsptemplate -#usr/local/share/cmake-2.6/Templates/DLLHeader.dsptemplate -#usr/local/share/cmake-2.6/Templates/EXEFooter.dsptemplate -#usr/local/share/cmake-2.6/Templates/EXEHeader.dsptemplate -#usr/local/share/cmake-2.6/Templates/EXEWinHeader.dsptemplate -#usr/local/share/cmake-2.6/Templates/TestDriver.cxx.in -#usr/local/share/cmake-2.6/Templates/UtilityFooter.dsptemplate -#usr/local/share/cmake-2.6/Templates/UtilityHeader.dsptemplate -#usr/local/share/cmake-2.6/Templates/cygwin-package.sh.in -#usr/local/share/cmake-2.6/Templates/staticLibFooter.dsptemplate -#usr/local/share/cmake-2.6/Templates/staticLibHeader.dsptemplate -#usr/local/share/cmake-2.6/include -#usr/local/share/cmake-2.6/include/cmCPluginAPI.h +#usr/bin/ccmake +#usr/bin/cmake +#usr/bin/cpack +#usr/bin/ctest +#usr/doc/cmake-2.6 +#usr/doc/cmake-2.6/ccmake.docbook +#usr/doc/cmake-2.6/ccmake.html +#usr/doc/cmake-2.6/ccmake.txt +#usr/doc/cmake-2.6/cmake-commands.html +#usr/doc/cmake-2.6/cmake-commands.txt +#usr/doc/cmake-2.6/cmake-compatcommands.html +#usr/doc/cmake-2.6/cmake-compatcommands.txt +#usr/doc/cmake-2.6/cmake-modules.html +#usr/doc/cmake-2.6/cmake-modules.txt +#usr/doc/cmake-2.6/cmake-policies.html +#usr/doc/cmake-2.6/cmake-policies.txt +#usr/doc/cmake-2.6/cmake-properties.html +#usr/doc/cmake-2.6/cmake-properties.txt +#usr/doc/cmake-2.6/cmake-variables.html +#usr/doc/cmake-2.6/cmake-variables.txt +#usr/doc/cmake-2.6/cmake.docbook +#usr/doc/cmake-2.6/cmake.html +#usr/doc/cmake-2.6/cmake.txt +#usr/doc/cmake-2.6/cpack.docbook +#usr/doc/cmake-2.6/cpack.html +#usr/doc/cmake-2.6/cpack.txt +#usr/doc/cmake-2.6/ctest.docbook +#usr/doc/cmake-2.6/ctest.html +#usr/doc/cmake-2.6/ctest.txt +#usr/man/man1/ccmake.1 +#usr/man/man1/cmake.1 +#usr/man/man1/cmakecommands.1 +#usr/man/man1/cmakecompat.1 +#usr/man/man1/cmakemodules.1 +#usr/man/man1/cmakepolicies.1 +#usr/man/man1/cmakeprops.1 +#usr/man/man1/cmakevars.1 +#usr/man/man1/cpack.1 +#usr/man/man1/ctest.1 +#usr/share/cmake-2.6 +#usr/share/cmake-2.6/Modules +#usr/share/cmake-2.6/Modules/AddFileDependencies.cmake +#usr/share/cmake-2.6/Modules/BundleUtilities.cmake +#usr/share/cmake-2.6/Modules/CMake.cmake +#usr/share/cmake-2.6/Modules/CMakeASM-ATTInformation.cmake +#usr/share/cmake-2.6/Modules/CMakeASMCompiler.cmake.in +#usr/share/cmake-2.6/Modules/CMakeASMInformation.cmake +#usr/share/cmake-2.6/Modules/CMakeASM_MASMInformation.cmake +#usr/share/cmake-2.6/Modules/CMakeBackwardCompatibilityC.cmake +#usr/share/cmake-2.6/Modules/CMakeBackwardCompatibilityCXX.cmake +#usr/share/cmake-2.6/Modules/CMakeBorlandFindMake.cmake +#usr/share/cmake-2.6/Modules/CMakeBuildSettings.cmake.in +#usr/share/cmake-2.6/Modules/CMakeCCompiler.cmake.in +#usr/share/cmake-2.6/Modules/CMakeCCompilerABI.c +#usr/share/cmake-2.6/Modules/CMakeCCompilerId.c.in +#usr/share/cmake-2.6/Modules/CMakeCInformation.cmake +#usr/share/cmake-2.6/Modules/CMakeCXXCompiler.cmake.in +#usr/share/cmake-2.6/Modules/CMakeCXXCompilerABI.cpp +#usr/share/cmake-2.6/Modules/CMakeCXXCompilerId.cpp.in +#usr/share/cmake-2.6/Modules/CMakeCXXInformation.cmake +#usr/share/cmake-2.6/Modules/CMakeCommonLanguageInclude.cmake +#usr/share/cmake-2.6/Modules/CMakeCompilerABI.h +#usr/share/cmake-2.6/Modules/CMakeConfigurableFile.in +#usr/share/cmake-2.6/Modules/CMakeDependentOption.cmake +#usr/share/cmake-2.6/Modules/CMakeDetermineASM-ATTCompiler.cmake +#usr/share/cmake-2.6/Modules/CMakeDetermineASMCompiler.cmake +#usr/share/cmake-2.6/Modules/CMakeDetermineASM_MASMCompiler.cmake +#usr/share/cmake-2.6/Modules/CMakeDetermineCCompiler.cmake +#usr/share/cmake-2.6/Modules/CMakeDetermineCXXCompiler.cmake +#usr/share/cmake-2.6/Modules/CMakeDetermineCompilerABI.cmake +#usr/share/cmake-2.6/Modules/CMakeDetermineCompilerId.cmake +#usr/share/cmake-2.6/Modules/CMakeDetermineFortranCompiler.cmake +#usr/share/cmake-2.6/Modules/CMakeDetermineJavaCompiler.cmake +#usr/share/cmake-2.6/Modules/CMakeDetermineRCCompiler.cmake +#usr/share/cmake-2.6/Modules/CMakeDetermineSystem.cmake +#usr/share/cmake-2.6/Modules/CMakeExportBuildSettings.cmake +#usr/share/cmake-2.6/Modules/CMakeFindBinUtils.cmake +#usr/share/cmake-2.6/Modules/CMakeFindFrameworks.cmake +#usr/share/cmake-2.6/Modules/CMakeFindWMake.cmake +#usr/share/cmake-2.6/Modules/CMakeFindXCode.cmake +#usr/share/cmake-2.6/Modules/CMakeForceCompiler.cmake +#usr/share/cmake-2.6/Modules/CMakeFortranCompiler.cmake.in +#usr/share/cmake-2.6/Modules/CMakeFortranCompilerId.F90.in +#usr/share/cmake-2.6/Modules/CMakeFortranInformation.cmake +#usr/share/cmake-2.6/Modules/CMakeGenericSystem.cmake +#usr/share/cmake-2.6/Modules/CMakeImportBuildSettings.cmake +#usr/share/cmake-2.6/Modules/CMakeJavaCompiler.cmake.in +#usr/share/cmake-2.6/Modules/CMakeJavaInformation.cmake +#usr/share/cmake-2.6/Modules/CMakeMSYSFindMake.cmake +#usr/share/cmake-2.6/Modules/CMakeMinGWFindMake.cmake +#usr/share/cmake-2.6/Modules/CMakeNMakeFindMake.cmake +#usr/share/cmake-2.6/Modules/CMakePlatformId.h.in +#usr/share/cmake-2.6/Modules/CMakePrintSystemInformation.cmake +#usr/share/cmake-2.6/Modules/CMakeRCCompiler.cmake.in +#usr/share/cmake-2.6/Modules/CMakeRCInformation.cmake +#usr/share/cmake-2.6/Modules/CMakeSystem.cmake.in +#usr/share/cmake-2.6/Modules/CMakeSystemSpecificInformation.cmake +#usr/share/cmake-2.6/Modules/CMakeTestASM-ATTCompiler.cmake +#usr/share/cmake-2.6/Modules/CMakeTestASMCompiler.cmake +#usr/share/cmake-2.6/Modules/CMakeTestASM_MASMCompiler.cmake +#usr/share/cmake-2.6/Modules/CMakeTestCCompiler.cmake +#usr/share/cmake-2.6/Modules/CMakeTestCXXCompiler.cmake +#usr/share/cmake-2.6/Modules/CMakeTestForFreeVC.cxx +#usr/share/cmake-2.6/Modules/CMakeTestFortranCompiler.cmake +#usr/share/cmake-2.6/Modules/CMakeTestGNU.c +#usr/share/cmake-2.6/Modules/CMakeTestJavaCompiler.cmake +#usr/share/cmake-2.6/Modules/CMakeTestNMakeCLVersion.c +#usr/share/cmake-2.6/Modules/CMakeTestRCCompiler.cmake +#usr/share/cmake-2.6/Modules/CMakeUnixFindMake.cmake +#usr/share/cmake-2.6/Modules/CMakeVS6BackwardCompatibility.cmake +#usr/share/cmake-2.6/Modules/CMakeVS6FindMake.cmake +#usr/share/cmake-2.6/Modules/CMakeVS71FindMake.cmake +#usr/share/cmake-2.6/Modules/CMakeVS7BackwardCompatibility.cmake +#usr/share/cmake-2.6/Modules/CMakeVS7FindMake.cmake +#usr/share/cmake-2.6/Modules/CMakeVS8FindMake.cmake +#usr/share/cmake-2.6/Modules/CMakeVS9FindMake.cmake +#usr/share/cmake-2.6/Modules/CPack.DS_Store.in +#usr/share/cmake-2.6/Modules/CPack.Description.plist.in +#usr/share/cmake-2.6/Modules/CPack.Info.plist.in +#usr/share/cmake-2.6/Modules/CPack.OSXScriptLauncher.in +#usr/share/cmake-2.6/Modules/CPack.OSXScriptLauncher.rsrc.in +#usr/share/cmake-2.6/Modules/CPack.OSXX11.Info.plist.in +#usr/share/cmake-2.6/Modules/CPack.OSXX11.main.scpt.in +#usr/share/cmake-2.6/Modules/CPack.RuntimeScript.in +#usr/share/cmake-2.6/Modules/CPack.STGZ_Header.sh.in +#usr/share/cmake-2.6/Modules/CPack.VolumeIcon.icns.in +#usr/share/cmake-2.6/Modules/CPack.background.png.in +#usr/share/cmake-2.6/Modules/CPack.cmake +#usr/share/cmake-2.6/Modules/CPack.distribution.dist.in +#usr/share/cmake-2.6/Modules/CPackDeb.cmake +#usr/share/cmake-2.6/Modules/CPackRPM.cmake +#usr/share/cmake-2.6/Modules/CPackZIP.cmake +#usr/share/cmake-2.6/Modules/CTest.cmake +#usr/share/cmake-2.6/Modules/CTestTargets.cmake +#usr/share/cmake-2.6/Modules/CheckCCompilerFlag.cmake +#usr/share/cmake-2.6/Modules/CheckCSourceCompiles.cmake +#usr/share/cmake-2.6/Modules/CheckCSourceRuns.cmake +#usr/share/cmake-2.6/Modules/CheckCXXCompilerFlag.cmake +#usr/share/cmake-2.6/Modules/CheckCXXSourceCompiles.cmake +#usr/share/cmake-2.6/Modules/CheckCXXSourceRuns.cmake +#usr/share/cmake-2.6/Modules/CheckForPthreads.c +#usr/share/cmake-2.6/Modules/CheckFortranFunctionExists.cmake +#usr/share/cmake-2.6/Modules/CheckFunctionExists.c +#usr/share/cmake-2.6/Modules/CheckFunctionExists.cmake +#usr/share/cmake-2.6/Modules/CheckIncludeFile.c.in +#usr/share/cmake-2.6/Modules/CheckIncludeFile.cmake +#usr/share/cmake-2.6/Modules/CheckIncludeFile.cxx.in +#usr/share/cmake-2.6/Modules/CheckIncludeFileCXX.cmake +#usr/share/cmake-2.6/Modules/CheckIncludeFiles.cmake +#usr/share/cmake-2.6/Modules/CheckLibraryExists.cmake +#usr/share/cmake-2.6/Modules/CheckLibraryExists.lists.in +#usr/share/cmake-2.6/Modules/CheckSizeOf.cmake +#usr/share/cmake-2.6/Modules/CheckStructHasMember.cmake +#usr/share/cmake-2.6/Modules/CheckSymbolExists.cmake +#usr/share/cmake-2.6/Modules/CheckTypeSize.cmake +#usr/share/cmake-2.6/Modules/CheckTypeSizeC.c.in +#usr/share/cmake-2.6/Modules/CheckVariableExists.c +#usr/share/cmake-2.6/Modules/CheckVariableExists.cmake +#usr/share/cmake-2.6/Modules/Dart.cmake +#usr/share/cmake-2.6/Modules/DartConfiguration.tcl.in +#usr/share/cmake-2.6/Modules/Documentation.cmake +#usr/share/cmake-2.6/Modules/DummyCXXFile.cxx +#usr/share/cmake-2.6/Modules/FLTKCompatibility.cmake +#usr/share/cmake-2.6/Modules/FeatureSummary.cmake +#usr/share/cmake-2.6/Modules/FindASPELL.cmake +#usr/share/cmake-2.6/Modules/FindAVIFile.cmake +#usr/share/cmake-2.6/Modules/FindBLAS.cmake +#usr/share/cmake-2.6/Modules/FindBZip2.cmake +#usr/share/cmake-2.6/Modules/FindBoost.cmake +#usr/share/cmake-2.6/Modules/FindCABLE.cmake +#usr/share/cmake-2.6/Modules/FindCURL.cmake +#usr/share/cmake-2.6/Modules/FindCVS.cmake +#usr/share/cmake-2.6/Modules/FindCoin3D.cmake +#usr/share/cmake-2.6/Modules/FindCups.cmake +#usr/share/cmake-2.6/Modules/FindCurses.cmake +#usr/share/cmake-2.6/Modules/FindCxxTest.cmake +#usr/share/cmake-2.6/Modules/FindCygwin.cmake +#usr/share/cmake-2.6/Modules/FindDCMTK.cmake +#usr/share/cmake-2.6/Modules/FindDart.cmake +#usr/share/cmake-2.6/Modules/FindDevIL.cmake +#usr/share/cmake-2.6/Modules/FindDoxygen.cmake +#usr/share/cmake-2.6/Modules/FindEXPAT.cmake +#usr/share/cmake-2.6/Modules/FindFLTK.cmake +#usr/share/cmake-2.6/Modules/FindFLTK2.cmake +#usr/share/cmake-2.6/Modules/FindFreetype.cmake +#usr/share/cmake-2.6/Modules/FindGCCXML.cmake +#usr/share/cmake-2.6/Modules/FindGDAL.cmake +#usr/share/cmake-2.6/Modules/FindGIF.cmake +#usr/share/cmake-2.6/Modules/FindGLU.cmake +#usr/share/cmake-2.6/Modules/FindGLUT.cmake +#usr/share/cmake-2.6/Modules/FindGTK.cmake +#usr/share/cmake-2.6/Modules/FindGettext.cmake +#usr/share/cmake-2.6/Modules/FindGnuplot.cmake +#usr/share/cmake-2.6/Modules/FindHSPELL.cmake +#usr/share/cmake-2.6/Modules/FindHTMLHelp.cmake +#usr/share/cmake-2.6/Modules/FindITK.cmake +#usr/share/cmake-2.6/Modules/FindImageMagick.cmake +#usr/share/cmake-2.6/Modules/FindJNI.cmake +#usr/share/cmake-2.6/Modules/FindJPEG.cmake +#usr/share/cmake-2.6/Modules/FindJasper.cmake +#usr/share/cmake-2.6/Modules/FindJava.cmake +#usr/share/cmake-2.6/Modules/FindKDE3.cmake +#usr/share/cmake-2.6/Modules/FindKDE4.cmake +#usr/share/cmake-2.6/Modules/FindLAPACK.cmake +#usr/share/cmake-2.6/Modules/FindLATEX.cmake +#usr/share/cmake-2.6/Modules/FindLibXml2.cmake +#usr/share/cmake-2.6/Modules/FindLibXslt.cmake +#usr/share/cmake-2.6/Modules/FindLua50.cmake +#usr/share/cmake-2.6/Modules/FindLua51.cmake +#usr/share/cmake-2.6/Modules/FindMFC.cmake +#usr/share/cmake-2.6/Modules/FindMPEG.cmake +#usr/share/cmake-2.6/Modules/FindMPEG2.cmake +#usr/share/cmake-2.6/Modules/FindMPI.cmake +#usr/share/cmake-2.6/Modules/FindMatlab.cmake +#usr/share/cmake-2.6/Modules/FindMotif.cmake +#usr/share/cmake-2.6/Modules/FindOpenAL.cmake +#usr/share/cmake-2.6/Modules/FindOpenGL.cmake +#usr/share/cmake-2.6/Modules/FindOpenMP.cmake +#usr/share/cmake-2.6/Modules/FindOpenSSL.cmake +#usr/share/cmake-2.6/Modules/FindOpenSceneGraph.cmake +#usr/share/cmake-2.6/Modules/FindOpenThreads.cmake +#usr/share/cmake-2.6/Modules/FindPHP4.cmake +#usr/share/cmake-2.6/Modules/FindPNG.cmake +#usr/share/cmake-2.6/Modules/FindPackageHandleStandardArgs.cmake +#usr/share/cmake-2.6/Modules/FindPackageMessage.cmake +#usr/share/cmake-2.6/Modules/FindPerl.cmake +#usr/share/cmake-2.6/Modules/FindPerlLibs.cmake +#usr/share/cmake-2.6/Modules/FindPhysFS.cmake +#usr/share/cmake-2.6/Modules/FindPike.cmake +#usr/share/cmake-2.6/Modules/FindPkgConfig.cmake +#usr/share/cmake-2.6/Modules/FindProducer.cmake +#usr/share/cmake-2.6/Modules/FindPythonInterp.cmake +#usr/share/cmake-2.6/Modules/FindPythonLibs.cmake +#usr/share/cmake-2.6/Modules/FindQt.cmake +#usr/share/cmake-2.6/Modules/FindQt3.cmake +#usr/share/cmake-2.6/Modules/FindQt4.cmake +#usr/share/cmake-2.6/Modules/FindQuickTime.cmake +#usr/share/cmake-2.6/Modules/FindRTI.cmake +#usr/share/cmake-2.6/Modules/FindRuby.cmake +#usr/share/cmake-2.6/Modules/FindSDL.cmake +#usr/share/cmake-2.6/Modules/FindSDL_image.cmake +#usr/share/cmake-2.6/Modules/FindSDL_mixer.cmake +#usr/share/cmake-2.6/Modules/FindSDL_net.cmake +#usr/share/cmake-2.6/Modules/FindSDL_sound.cmake +#usr/share/cmake-2.6/Modules/FindSDL_ttf.cmake +#usr/share/cmake-2.6/Modules/FindSWIG.cmake +#usr/share/cmake-2.6/Modules/FindSelfPackers.cmake +#usr/share/cmake-2.6/Modules/FindSquish.cmake +#usr/share/cmake-2.6/Modules/FindSubversion.cmake +#usr/share/cmake-2.6/Modules/FindTCL.cmake +#usr/share/cmake-2.6/Modules/FindTIFF.cmake +#usr/share/cmake-2.6/Modules/FindTclStub.cmake +#usr/share/cmake-2.6/Modules/FindTclsh.cmake +#usr/share/cmake-2.6/Modules/FindThreads.cmake +#usr/share/cmake-2.6/Modules/FindUnixCommands.cmake +#usr/share/cmake-2.6/Modules/FindVTK.cmake +#usr/share/cmake-2.6/Modules/FindWget.cmake +#usr/share/cmake-2.6/Modules/FindWish.cmake +#usr/share/cmake-2.6/Modules/FindX11.cmake +#usr/share/cmake-2.6/Modules/FindXMLRPC.cmake +#usr/share/cmake-2.6/Modules/FindZLIB.cmake +#usr/share/cmake-2.6/Modules/Findosg.cmake +#usr/share/cmake-2.6/Modules/FindosgAnimation.cmake +#usr/share/cmake-2.6/Modules/FindosgDB.cmake +#usr/share/cmake-2.6/Modules/FindosgFX.cmake +#usr/share/cmake-2.6/Modules/FindosgGA.cmake +#usr/share/cmake-2.6/Modules/FindosgIntrospection.cmake +#usr/share/cmake-2.6/Modules/FindosgManipulator.cmake +#usr/share/cmake-2.6/Modules/FindosgParticle.cmake +#usr/share/cmake-2.6/Modules/FindosgProducer.cmake +#usr/share/cmake-2.6/Modules/FindosgShadow.cmake +#usr/share/cmake-2.6/Modules/FindosgSim.cmake +#usr/share/cmake-2.6/Modules/FindosgTerrain.cmake +#usr/share/cmake-2.6/Modules/FindosgText.cmake +#usr/share/cmake-2.6/Modules/FindosgUtil.cmake +#usr/share/cmake-2.6/Modules/FindosgViewer.cmake +#usr/share/cmake-2.6/Modules/FindosgVolume.cmake +#usr/share/cmake-2.6/Modules/FindosgWidget.cmake +#usr/share/cmake-2.6/Modules/Findosg_functions.cmake +#usr/share/cmake-2.6/Modules/FindwxWidgets.cmake +#usr/share/cmake-2.6/Modules/FindwxWindows.cmake +#usr/share/cmake-2.6/Modules/FortranCInterface.cmake +#usr/share/cmake-2.6/Modules/FortranCInterface.h.in +#usr/share/cmake-2.6/Modules/GetPrerequisites.cmake +#usr/share/cmake-2.6/Modules/ITKCompatibility.cmake +#usr/share/cmake-2.6/Modules/InstallRequiredSystemLibraries.cmake +#usr/share/cmake-2.6/Modules/KDE3Macros.cmake +#usr/share/cmake-2.6/Modules/MacOSXBundleInfo.plist.in +#usr/share/cmake-2.6/Modules/MacOSXFrameworkInfo.plist.in +#usr/share/cmake-2.6/Modules/MacroAddFileDependencies.cmake +#usr/share/cmake-2.6/Modules/NSIS.InstallOptions.ini.in +#usr/share/cmake-2.6/Modules/NSIS.template.in +#usr/share/cmake-2.6/Modules/Platform +#usr/share/cmake-2.6/Modules/Platform/AIX-VisualAge-Fortran.cmake +#usr/share/cmake-2.6/Modules/Platform/AIX.cmake +#usr/share/cmake-2.6/Modules/Platform/BSDOS.cmake +#usr/share/cmake-2.6/Modules/Platform/BeOS.cmake +#usr/share/cmake-2.6/Modules/Platform/BlueGeneL.cmake +#usr/share/cmake-2.6/Modules/Platform/CYGWIN-g77.cmake +#usr/share/cmake-2.6/Modules/Platform/CYGWIN.cmake +#usr/share/cmake-2.6/Modules/Platform/Catamount.cmake +#usr/share/cmake-2.6/Modules/Platform/Darwin-icc.cmake +#usr/share/cmake-2.6/Modules/Platform/Darwin-icpc.cmake +#usr/share/cmake-2.6/Modules/Platform/Darwin-xlc.cmake +#usr/share/cmake-2.6/Modules/Platform/Darwin.cmake +#usr/share/cmake-2.6/Modules/Platform/DragonFly.cmake +#usr/share/cmake-2.6/Modules/Platform/FreeBSD.cmake +#usr/share/cmake-2.6/Modules/Platform/GNU.cmake +#usr/share/cmake-2.6/Modules/Platform/Generic-ADSP-ASM.cmake +#usr/share/cmake-2.6/Modules/Platform/Generic-ADSP-C.cmake +#usr/share/cmake-2.6/Modules/Platform/Generic-ADSP-CXX.cmake +#usr/share/cmake-2.6/Modules/Platform/Generic-ADSP-Common.cmake +#usr/share/cmake-2.6/Modules/Platform/Generic-SDCC-C.cmake +#usr/share/cmake-2.6/Modules/Platform/Generic.cmake +#usr/share/cmake-2.6/Modules/Platform/HP-UX.cmake +#usr/share/cmake-2.6/Modules/Platform/Haiku.cmake +#usr/share/cmake-2.6/Modules/Platform/IRIX.cmake +#usr/share/cmake-2.6/Modules/Platform/IRIX64.cmake +#usr/share/cmake-2.6/Modules/Platform/Linux-GNU-Fortran.cmake +#usr/share/cmake-2.6/Modules/Platform/Linux-Intel-C.cmake +#usr/share/cmake-2.6/Modules/Platform/Linux-Intel-CXX.cmake +#usr/share/cmake-2.6/Modules/Platform/Linux-Intel-Fortran.cmake +#usr/share/cmake-2.6/Modules/Platform/Linux-PGI-C.cmake +#usr/share/cmake-2.6/Modules/Platform/Linux-PGI-CXX.cmake +#usr/share/cmake-2.6/Modules/Platform/Linux-PGI-Fortran.cmake +#usr/share/cmake-2.6/Modules/Platform/Linux-SunPro-C.cmake +#usr/share/cmake-2.6/Modules/Platform/Linux-SunPro-CXX.cmake +#usr/share/cmake-2.6/Modules/Platform/Linux-SunPro-Fortran.cmake +#usr/share/cmake-2.6/Modules/Platform/Linux-VisualAge-C.cmake +#usr/share/cmake-2.6/Modules/Platform/Linux-VisualAge-Fortran.cmake +#usr/share/cmake-2.6/Modules/Platform/Linux-como.cmake +#usr/share/cmake-2.6/Modules/Platform/Linux-icpc.cmake +#usr/share/cmake-2.6/Modules/Platform/Linux-ifort.cmake +#usr/share/cmake-2.6/Modules/Platform/Linux.cmake +#usr/share/cmake-2.6/Modules/Platform/MP-RAS.cmake +#usr/share/cmake-2.6/Modules/Platform/NetBSD.cmake +#usr/share/cmake-2.6/Modules/Platform/OSF1.cmake +#usr/share/cmake-2.6/Modules/Platform/OpenBSD.cmake +#usr/share/cmake-2.6/Modules/Platform/QNX.cmake +#usr/share/cmake-2.6/Modules/Platform/RISCos.cmake +#usr/share/cmake-2.6/Modules/Platform/SCO_SV.cmake +#usr/share/cmake-2.6/Modules/Platform/SINIX.cmake +#usr/share/cmake-2.6/Modules/Platform/SunOS-SunPro-Fortran.cmake +#usr/share/cmake-2.6/Modules/Platform/SunOS.cmake +#usr/share/cmake-2.6/Modules/Platform/Tru64.cmake +#usr/share/cmake-2.6/Modules/Platform/ULTRIX.cmake +#usr/share/cmake-2.6/Modules/Platform/UNIX_SV.cmake +#usr/share/cmake-2.6/Modules/Platform/UnixPaths.cmake +#usr/share/cmake-2.6/Modules/Platform/UnixWare.cmake +#usr/share/cmake-2.6/Modules/Platform/Windows-bcc32.cmake +#usr/share/cmake-2.6/Modules/Platform/Windows-cl.cmake +#usr/share/cmake-2.6/Modules/Platform/Windows-cl.cmake.in +#usr/share/cmake-2.6/Modules/Platform/Windows-df.cmake +#usr/share/cmake-2.6/Modules/Platform/Windows-g++.cmake +#usr/share/cmake-2.6/Modules/Platform/Windows-g77.cmake +#usr/share/cmake-2.6/Modules/Platform/Windows-gcc.cmake +#usr/share/cmake-2.6/Modules/Platform/Windows-icl.cmake +#usr/share/cmake-2.6/Modules/Platform/Windows-ifort.cmake +#usr/share/cmake-2.6/Modules/Platform/Windows-wcl386.cmake +#usr/share/cmake-2.6/Modules/Platform/Windows.cmake +#usr/share/cmake-2.6/Modules/Platform/WindowsPaths.cmake +#usr/share/cmake-2.6/Modules/Platform/Xenix.cmake +#usr/share/cmake-2.6/Modules/Platform/cl.cmake +#usr/share/cmake-2.6/Modules/Platform/eCos.cmake +#usr/share/cmake-2.6/Modules/Platform/g77.cmake +#usr/share/cmake-2.6/Modules/Platform/gas.cmake +#usr/share/cmake-2.6/Modules/Platform/gcc.cmake +#usr/share/cmake-2.6/Modules/Platform/kFreeBSD.cmake +#usr/share/cmake-2.6/Modules/Platform/syllable.cmake +#usr/share/cmake-2.6/Modules/Platform/xlf.cmake +#usr/share/cmake-2.6/Modules/SquishTestScript.cmake +#usr/share/cmake-2.6/Modules/SystemInformation.cmake +#usr/share/cmake-2.6/Modules/SystemInformation.in +#usr/share/cmake-2.6/Modules/TestBigEndian.cmake +#usr/share/cmake-2.6/Modules/TestCXXAcceptsFlag.cmake +#usr/share/cmake-2.6/Modules/TestEndianess.c.in +#usr/share/cmake-2.6/Modules/TestForANSIForScope.cmake +#usr/share/cmake-2.6/Modules/TestForANSIStreamHeaders.cmake +#usr/share/cmake-2.6/Modules/TestForANSIStreamHeaders.cxx +#usr/share/cmake-2.6/Modules/TestForAnsiForScope.cxx +#usr/share/cmake-2.6/Modules/TestForSSTREAM.cmake +#usr/share/cmake-2.6/Modules/TestForSSTREAM.cxx +#usr/share/cmake-2.6/Modules/TestForSTDNamespace.cmake +#usr/share/cmake-2.6/Modules/TestForSTDNamespace.cxx +#usr/share/cmake-2.6/Modules/UseEcos.cmake +#usr/share/cmake-2.6/Modules/UsePkgConfig.cmake +#usr/share/cmake-2.6/Modules/UseQt4.cmake +#usr/share/cmake-2.6/Modules/UseSWIG.cmake +#usr/share/cmake-2.6/Modules/UseVTK40.cmake +#usr/share/cmake-2.6/Modules/UseVTKBuildSettings40.cmake +#usr/share/cmake-2.6/Modules/UseVTKConfig40.cmake +#usr/share/cmake-2.6/Modules/Use_wxWindows.cmake +#usr/share/cmake-2.6/Modules/UsewxWidgets.cmake +#usr/share/cmake-2.6/Modules/VTKCompatibility.cmake +#usr/share/cmake-2.6/Modules/ecos_clean.cmake +#usr/share/cmake-2.6/Modules/kde3init_dummy.cpp.in +#usr/share/cmake-2.6/Modules/kde3uic.cmake +#usr/share/cmake-2.6/Modules/readme.txt +#usr/share/cmake-2.6/Templates +#usr/share/cmake-2.6/Templates/CMakeLists.txt +#usr/share/cmake-2.6/Templates/CMakeVSMacros1.vsmacros +#usr/share/cmake-2.6/Templates/CMakeVSMacros2.vsmacros +#usr/share/cmake-2.6/Templates/CMakeVisualStudio6Configurations.cmake +#usr/share/cmake-2.6/Templates/CPack.GenericDescription.txt +#usr/share/cmake-2.6/Templates/CPack.GenericLicense.txt +#usr/share/cmake-2.6/Templates/CPack.GenericWelcome.txt +#usr/share/cmake-2.6/Templates/CPackConfig.cmake.in +#usr/share/cmake-2.6/Templates/CTestScript.cmake.in +#usr/share/cmake-2.6/Templates/DLLFooter.dsptemplate +#usr/share/cmake-2.6/Templates/DLLHeader.dsptemplate +#usr/share/cmake-2.6/Templates/EXEFooter.dsptemplate +#usr/share/cmake-2.6/Templates/EXEHeader.dsptemplate +#usr/share/cmake-2.6/Templates/EXEWinHeader.dsptemplate +#usr/share/cmake-2.6/Templates/TestDriver.cxx.in +#usr/share/cmake-2.6/Templates/UtilityFooter.dsptemplate +#usr/share/cmake-2.6/Templates/UtilityHeader.dsptemplate +#usr/share/cmake-2.6/Templates/cygwin-package.sh.in +#usr/share/cmake-2.6/Templates/staticLibFooter.dsptemplate +#usr/share/cmake-2.6/Templates/staticLibHeader.dsptemplate +#usr/share/cmake-2.6/include +#usr/share/cmake-2.6/include/cmCPluginAPI.h diff --git a/config/rootfiles/common/coreutils b/config/rootfiles/common/coreutils index 3901b69..61e9106 100644 --- a/config/rootfiles/common/coreutils +++ b/config/rootfiles/common/coreutils @@ -1,4 +1,4 @@ -#bin/[ +bin/[ bin/chgrp bin/chmod bin/chown @@ -6,7 +6,6 @@ bin/cp bin/date bin/dd bin/df -bin/echo bin/false bin/head bin/ln @@ -59,7 +58,7 @@ usr/bin/printf #usr/bin/ptx usr/bin/readlink usr/bin/seq -#usr/bin/sha1sum +usr/bin/sha1sum usr/bin/shred usr/bin/sort usr/bin/split @@ -84,7 +83,6 @@ usr/bin/whoami usr/bin/yes usr/sbin/chroot #usr/share/info/coreutils.info -#usr/share/info/dir #usr/share/man/man1/basename.1 #usr/share/man/man1/cat.1 #usr/share/man/man1/chroot.1 diff --git a/config/rootfiles/common/file b/config/rootfiles/common/file index 0fe0c6d..0f76df8 100644 --- a/config/rootfiles/common/file +++ b/config/rootfiles/common/file @@ -2,13 +2,17 @@ usr/bin/file #usr/include/magic.h #usr/lib/libmagic.a #usr/lib/libmagic.la -usr/lib/libmagic.so +#usr/lib/libmagic.so usr/lib/libmagic.so.1 usr/lib/libmagic.so.1.0.0 +#usr/man +#usr/man/man1 #usr/man/man1/file.1 +#usr/man/man3 #usr/man/man3/libmagic.3 #usr/man/man4 #usr/man/man4/magic.4 +#usr/man/man5 #usr/share/file usr/share/file/magic usr/share/file/magic.mgc diff --git a/config/rootfiles/common/fontconfig b/config/rootfiles/common/fontconfig new file mode 100644 index 0000000..ade611e --- /dev/null +++ b/config/rootfiles/common/fontconfig @@ -0,0 +1,424 @@ +#etc/fonts +#etc/fonts/conf.avail +etc/fonts/conf.avail/10-autohint.conf +etc/fonts/conf.avail/10-no-sub-pixel.conf +etc/fonts/conf.avail/10-sub-pixel-bgr.conf +etc/fonts/conf.avail/10-sub-pixel-rgb.conf +etc/fonts/conf.avail/10-sub-pixel-vbgr.conf +etc/fonts/conf.avail/10-sub-pixel-vrgb.conf +etc/fonts/conf.avail/10-unhinted.conf +etc/fonts/conf.avail/20-fix-globaladvance.conf +etc/fonts/conf.avail/20-unhint-small-vera.conf +etc/fonts/conf.avail/25-unhint-nonlatin.conf +etc/fonts/conf.avail/30-metric-aliases.conf +etc/fonts/conf.avail/30-urw-aliases.conf +etc/fonts/conf.avail/40-nonlatin.conf +etc/fonts/conf.avail/45-latin.conf +etc/fonts/conf.avail/49-sansserif.conf +etc/fonts/conf.avail/50-user.conf +etc/fonts/conf.avail/51-local.conf +etc/fonts/conf.avail/60-latin.conf +etc/fonts/conf.avail/65-fonts-persian.conf +etc/fonts/conf.avail/65-khmer.conf +etc/fonts/conf.avail/65-nonlatin.conf +etc/fonts/conf.avail/69-unifont.conf +etc/fonts/conf.avail/70-no-bitmaps.conf +etc/fonts/conf.avail/70-yes-bitmaps.conf +etc/fonts/conf.avail/80-delicious.conf +etc/fonts/conf.avail/90-synthetic.conf +#etc/fonts/conf.d +etc/fonts/conf.d/20-fix-globaladvance.conf +etc/fonts/conf.d/20-unhint-small-vera.conf +etc/fonts/conf.d/30-metric-aliases.conf +etc/fonts/conf.d/30-urw-aliases.conf +etc/fonts/conf.d/40-nonlatin.conf +etc/fonts/conf.d/45-latin.conf +etc/fonts/conf.d/49-sansserif.conf +etc/fonts/conf.d/50-user.conf +etc/fonts/conf.d/51-local.conf +etc/fonts/conf.d/60-latin.conf +etc/fonts/conf.d/65-fonts-persian.conf +etc/fonts/conf.d/65-nonlatin.conf +etc/fonts/conf.d/69-unifont.conf +etc/fonts/conf.d/80-delicious.conf +etc/fonts/conf.d/90-synthetic.conf +#etc/fonts/conf.d/README +etc/fonts/fonts.conf +etc/fonts/fonts.dtd +usr/bin/fc-cache +usr/bin/fc-cat +usr/bin/fc-list +usr/bin/fc-match +#usr/include/fontconfig +#usr/include/fontconfig/fcfreetype.h +#usr/include/fontconfig/fcprivate.h +#usr/include/fontconfig/fontconfig.h +#usr/lib/libfontconfig.a +#usr/lib/libfontconfig.la +usr/lib/libfontconfig.so +usr/lib/libfontconfig.so.1 +usr/lib/libfontconfig.so.1.3.0 +usr/lib/pkgconfig/fontconfig.pc +#usr/share/doc/fontconfig +#usr/share/doc/fontconfig/fontconfig-devel +#usr/share/doc/fontconfig/fontconfig-devel.pdf +#usr/share/doc/fontconfig/fontconfig-devel.txt +#usr/share/doc/fontconfig/fontconfig-devel/index.html +#usr/share/doc/fontconfig/fontconfig-devel/r1034.html +#usr/share/doc/fontconfig/fontconfig-devel/r1056.html +#usr/share/doc/fontconfig/fontconfig-devel/r108.html +#usr/share/doc/fontconfig/fontconfig-devel/r1099.html +#usr/share/doc/fontconfig/fontconfig-devel/r1127.html +#usr/share/doc/fontconfig/fontconfig-devel/r1148.html +#usr/share/doc/fontconfig/fontconfig-devel/r1171.html +#usr/share/doc/fontconfig/fontconfig-devel/r1192.html +#usr/share/doc/fontconfig/fontconfig-devel/r1237.html +#usr/share/doc/fontconfig/fontconfig-devel/r1260.html +#usr/share/doc/fontconfig/fontconfig-devel/r1283.html +#usr/share/doc/fontconfig/fontconfig-devel/r129.html +#usr/share/doc/fontconfig/fontconfig-devel/r1309.html +#usr/share/doc/fontconfig/fontconfig-devel/r1336.html +#usr/share/doc/fontconfig/fontconfig-devel/r1367.html +#usr/share/doc/fontconfig/fontconfig-devel/r1389.html +#usr/share/doc/fontconfig/fontconfig-devel/r1412.html +#usr/share/doc/fontconfig/fontconfig-devel/r1434.html +#usr/share/doc/fontconfig/fontconfig-devel/r1460.html +#usr/share/doc/fontconfig/fontconfig-devel/r1482.html +#usr/share/doc/fontconfig/fontconfig-devel/r150.html +#usr/share/doc/fontconfig/fontconfig-devel/r1505.html +#usr/share/doc/fontconfig/fontconfig-devel/r1529.html +#usr/share/doc/fontconfig/fontconfig-devel/r1552.html +#usr/share/doc/fontconfig/fontconfig-devel/r1577.html +#usr/share/doc/fontconfig/fontconfig-devel/r1602.html +#usr/share/doc/fontconfig/fontconfig-devel/r1627.html +#usr/share/doc/fontconfig/fontconfig-devel/r1652.html +#usr/share/doc/fontconfig/fontconfig-devel/r1677.html +#usr/share/doc/fontconfig/fontconfig-devel/r1699.html +#usr/share/doc/fontconfig/fontconfig-devel/r171.html +#usr/share/doc/fontconfig/fontconfig-devel/r1724.html +#usr/share/doc/fontconfig/fontconfig-devel/r1749.html +#usr/share/doc/fontconfig/fontconfig-devel/r1774.html +#usr/share/doc/fontconfig/fontconfig-devel/r1801.html +#usr/share/doc/fontconfig/fontconfig-devel/r1829.html +#usr/share/doc/fontconfig/fontconfig-devel/r1858.html +#usr/share/doc/fontconfig/fontconfig-devel/r1883.html +#usr/share/doc/fontconfig/fontconfig-devel/r1905.html +#usr/share/doc/fontconfig/fontconfig-devel/r192.html +#usr/share/doc/fontconfig/fontconfig-devel/r1927.html +#usr/share/doc/fontconfig/fontconfig-devel/r1950.html +#usr/share/doc/fontconfig/fontconfig-devel/r1976.html +#usr/share/doc/fontconfig/fontconfig-devel/r2002.html +#usr/share/doc/fontconfig/fontconfig-devel/r2032.html +#usr/share/doc/fontconfig/fontconfig-devel/r2057.html +#usr/share/doc/fontconfig/fontconfig-devel/r2081.html +#usr/share/doc/fontconfig/fontconfig-devel/r2110.html +#usr/share/doc/fontconfig/fontconfig-devel/r213.html +#usr/share/doc/fontconfig/fontconfig-devel/r2131.html +#usr/share/doc/fontconfig/fontconfig-devel/r2155.html +#usr/share/doc/fontconfig/fontconfig-devel/r2178.html +#usr/share/doc/fontconfig/fontconfig-devel/r2201.html +#usr/share/doc/fontconfig/fontconfig-devel/r2227.html +#usr/share/doc/fontconfig/fontconfig-devel/r2256.html +#usr/share/doc/fontconfig/fontconfig-devel/r2286.html +#usr/share/doc/fontconfig/fontconfig-devel/r2316.html +#usr/share/doc/fontconfig/fontconfig-devel/r234.html +#usr/share/doc/fontconfig/fontconfig-devel/r2349.html +#usr/share/doc/fontconfig/fontconfig-devel/r2370.html +#usr/share/doc/fontconfig/fontconfig-devel/r2391.html +#usr/share/doc/fontconfig/fontconfig-devel/r2413.html +#usr/share/doc/fontconfig/fontconfig-devel/r2434.html +#usr/share/doc/fontconfig/fontconfig-devel/r2456.html +#usr/share/doc/fontconfig/fontconfig-devel/r2478.html +#usr/share/doc/fontconfig/fontconfig-devel/r2501.html +#usr/share/doc/fontconfig/fontconfig-devel/r2522.html +#usr/share/doc/fontconfig/fontconfig-devel/r2544.html +#usr/share/doc/fontconfig/fontconfig-devel/r2566.html +#usr/share/doc/fontconfig/fontconfig-devel/r258.html +#usr/share/doc/fontconfig/fontconfig-devel/r2588.html +#usr/share/doc/fontconfig/fontconfig-devel/r2609.html +#usr/share/doc/fontconfig/fontconfig-devel/r2631.html +#usr/share/doc/fontconfig/fontconfig-devel/r2655.html +#usr/share/doc/fontconfig/fontconfig-devel/r2676.html +#usr/share/doc/fontconfig/fontconfig-devel/r2698.html +#usr/share/doc/fontconfig/fontconfig-devel/r2721.html +#usr/share/doc/fontconfig/fontconfig-devel/r2744.html +#usr/share/doc/fontconfig/fontconfig-devel/r2767.html +#usr/share/doc/fontconfig/fontconfig-devel/r2788.html +#usr/share/doc/fontconfig/fontconfig-devel/r279.html +#usr/share/doc/fontconfig/fontconfig-devel/r2817.html +#usr/share/doc/fontconfig/fontconfig-devel/r2842.html +#usr/share/doc/fontconfig/fontconfig-devel/r2873.html +#usr/share/doc/fontconfig/fontconfig-devel/r2911.html +#usr/share/doc/fontconfig/fontconfig-devel/r2942.html +#usr/share/doc/fontconfig/fontconfig-devel/r2969.html +#usr/share/doc/fontconfig/fontconfig-devel/r2993.html +#usr/share/doc/fontconfig/fontconfig-devel/r301.html +#usr/share/doc/fontconfig/fontconfig-devel/r3021.html +#usr/share/doc/fontconfig/fontconfig-devel/r3045.html +#usr/share/doc/fontconfig/fontconfig-devel/r3069.html +#usr/share/doc/fontconfig/fontconfig-devel/r3094.html +#usr/share/doc/fontconfig/fontconfig-devel/r3118.html +#usr/share/doc/fontconfig/fontconfig-devel/r3142.html +#usr/share/doc/fontconfig/fontconfig-devel/r3164.html +#usr/share/doc/fontconfig/fontconfig-devel/r3192.html +#usr/share/doc/fontconfig/fontconfig-devel/r3213.html +#usr/share/doc/fontconfig/fontconfig-devel/r323.html +#usr/share/doc/fontconfig/fontconfig-devel/r3234.html +#usr/share/doc/fontconfig/fontconfig-devel/r3257.html +#usr/share/doc/fontconfig/fontconfig-devel/r3283.html +#usr/share/doc/fontconfig/fontconfig-devel/r3305.html +#usr/share/doc/fontconfig/fontconfig-devel/r3327.html +#usr/share/doc/fontconfig/fontconfig-devel/r3349.html +#usr/share/doc/fontconfig/fontconfig-devel/r3371.html +#usr/share/doc/fontconfig/fontconfig-devel/r3393.html +#usr/share/doc/fontconfig/fontconfig-devel/r3414.html +#usr/share/doc/fontconfig/fontconfig-devel/r3435.html +#usr/share/doc/fontconfig/fontconfig-devel/r344.html +#usr/share/doc/fontconfig/fontconfig-devel/r3460.html +#usr/share/doc/fontconfig/fontconfig-devel/r3496.html +#usr/share/doc/fontconfig/fontconfig-devel/r3518.html +#usr/share/doc/fontconfig/fontconfig-devel/r3553.html +#usr/share/doc/fontconfig/fontconfig-devel/r3581.html +#usr/share/doc/fontconfig/fontconfig-devel/r3607.html +#usr/share/doc/fontconfig/fontconfig-devel/r3629.html +#usr/share/doc/fontconfig/fontconfig-devel/r3656.html +#usr/share/doc/fontconfig/fontconfig-devel/r3683.html +#usr/share/doc/fontconfig/fontconfig-devel/r369.html +#usr/share/doc/fontconfig/fontconfig-devel/r3708.html +#usr/share/doc/fontconfig/fontconfig-devel/r3733.html +#usr/share/doc/fontconfig/fontconfig-devel/r3755.html +#usr/share/doc/fontconfig/fontconfig-devel/r3778.html +#usr/share/doc/fontconfig/fontconfig-devel/r3805.html +#usr/share/doc/fontconfig/fontconfig-devel/r3827.html +#usr/share/doc/fontconfig/fontconfig-devel/r3852.html +#usr/share/doc/fontconfig/fontconfig-devel/r3873.html +#usr/share/doc/fontconfig/fontconfig-devel/r3898.html +#usr/share/doc/fontconfig/fontconfig-devel/r3923.html +#usr/share/doc/fontconfig/fontconfig-devel/r3948.html +#usr/share/doc/fontconfig/fontconfig-devel/r397.html +#usr/share/doc/fontconfig/fontconfig-devel/r3973.html +#usr/share/doc/fontconfig/fontconfig-devel/r3999.html +#usr/share/doc/fontconfig/fontconfig-devel/r4021.html +#usr/share/doc/fontconfig/fontconfig-devel/r4043.html +#usr/share/doc/fontconfig/fontconfig-devel/r4065.html +#usr/share/doc/fontconfig/fontconfig-devel/r4090.html +#usr/share/doc/fontconfig/fontconfig-devel/r4119.html +#usr/share/doc/fontconfig/fontconfig-devel/r4144.html +#usr/share/doc/fontconfig/fontconfig-devel/r4176.html +#usr/share/doc/fontconfig/fontconfig-devel/r418.html +#usr/share/doc/fontconfig/fontconfig-devel/r4209.html +#usr/share/doc/fontconfig/fontconfig-devel/r4245.html +#usr/share/doc/fontconfig/fontconfig-devel/r4267.html +#usr/share/doc/fontconfig/fontconfig-devel/r4289.html +#usr/share/doc/fontconfig/fontconfig-devel/r4311.html +#usr/share/doc/fontconfig/fontconfig-devel/r4334.html +#usr/share/doc/fontconfig/fontconfig-devel/r4356.html +#usr/share/doc/fontconfig/fontconfig-devel/r4380.html +#usr/share/doc/fontconfig/fontconfig-devel/r4405.html +#usr/share/doc/fontconfig/fontconfig-devel/r4430.html +#usr/share/doc/fontconfig/fontconfig-devel/r4457.html +#usr/share/doc/fontconfig/fontconfig-devel/r446.html +#usr/share/doc/fontconfig/fontconfig-devel/r4484.html +#usr/share/doc/fontconfig/fontconfig-devel/r4509.html +#usr/share/doc/fontconfig/fontconfig-devel/r4530.html +#usr/share/doc/fontconfig/fontconfig-devel/r475.html +#usr/share/doc/fontconfig/fontconfig-devel/r570.html +#usr/share/doc/fontconfig/fontconfig-devel/r600.html +#usr/share/doc/fontconfig/fontconfig-devel/r707.html +#usr/share/doc/fontconfig/fontconfig-devel/r759.html +#usr/share/doc/fontconfig/fontconfig-devel/r782.html +#usr/share/doc/fontconfig/fontconfig-devel/r807.html +#usr/share/doc/fontconfig/fontconfig-devel/r828.html +#usr/share/doc/fontconfig/fontconfig-devel/r856.html +#usr/share/doc/fontconfig/fontconfig-devel/r878.html +#usr/share/doc/fontconfig/fontconfig-devel/r902.html +#usr/share/doc/fontconfig/fontconfig-devel/r923.html +#usr/share/doc/fontconfig/fontconfig-devel/r944.html +#usr/share/doc/fontconfig/fontconfig-devel/r967.html +#usr/share/doc/fontconfig/fontconfig-devel/r999.html +#usr/share/doc/fontconfig/fontconfig-devel/x102.html +#usr/share/doc/fontconfig/fontconfig-devel/x19.html +#usr/share/doc/fontconfig/fontconfig-devel/x31.html +#usr/share/doc/fontconfig/fontconfig-user.html +#usr/share/doc/fontconfig/fontconfig-user.pdf +#usr/share/doc/fontconfig/fontconfig-user.txt +#usr/share/man/man1/fc-cache.1 +#usr/share/man/man1/fc-cat.1 +#usr/share/man/man1/fc-list.1 +#usr/share/man/man1/fc-match.1 +#usr/share/man/man3/FcAtomicCreate.3 +#usr/share/man/man3/FcAtomicDeleteNew.3 +#usr/share/man/man3/FcAtomicDestroy.3 +#usr/share/man/man3/FcAtomicLock.3 +#usr/share/man/man3/FcAtomicNewFile.3 +#usr/share/man/man3/FcAtomicOrigFile.3 +#usr/share/man/man3/FcAtomicReplaceOrig.3 +#usr/share/man/man3/FcAtomicUnlock.3 +#usr/share/man/man3/FcBlanksAdd.3 +#usr/share/man/man3/FcBlanksCreate.3 +#usr/share/man/man3/FcBlanksDestroy.3 +#usr/share/man/man3/FcBlanksIsMember.3 +#usr/share/man/man3/FcCacheCopySet.3 +#usr/share/man/man3/FcCacheDir.3 +#usr/share/man/man3/FcCacheNumFont.3 +#usr/share/man/man3/FcCacheNumSubdir.3 +#usr/share/man/man3/FcCacheSubdir.3 +#usr/share/man/man3/FcCharSetAddChar.3 +#usr/share/man/man3/FcCharSetCopy.3 +#usr/share/man/man3/FcCharSetCount.3 +#usr/share/man/man3/FcCharSetCoverage.3 +#usr/share/man/man3/FcCharSetCreate.3 +#usr/share/man/man3/FcCharSetDestroy.3 +#usr/share/man/man3/FcCharSetEqual.3 +#usr/share/man/man3/FcCharSetFirstPage.3 +#usr/share/man/man3/FcCharSetHasChar.3 +#usr/share/man/man3/FcCharSetIntersect.3 +#usr/share/man/man3/FcCharSetIntersectCount.3 +#usr/share/man/man3/FcCharSetIsSubset.3 +#usr/share/man/man3/FcCharSetNew.3 +#usr/share/man/man3/FcCharSetNextPage.3 +#usr/share/man/man3/FcCharSetSubtract.3 +#usr/share/man/man3/FcCharSetSubtractCount.3 +#usr/share/man/man3/FcCharSetUnion.3 +#usr/share/man/man3/FcConfigAppFontAddDir.3 +#usr/share/man/man3/FcConfigAppFontAddFile.3 +#usr/share/man/man3/FcConfigAppFontClear.3 +#usr/share/man/man3/FcConfigBuildFonts.3 +#usr/share/man/man3/FcConfigCreate.3 +#usr/share/man/man3/FcConfigDestroy.3 +#usr/share/man/man3/FcConfigEnableHome.3 +#usr/share/man/man3/FcConfigFilename.3 +#usr/share/man/man3/FcConfigGetBlanks.3 +#usr/share/man/man3/FcConfigGetCache.3 +#usr/share/man/man3/FcConfigGetCacheDirs.3 +#usr/share/man/man3/FcConfigGetConfigDirs.3 +#usr/share/man/man3/FcConfigGetConfigFiles.3 +#usr/share/man/man3/FcConfigGetCurrent.3 +#usr/share/man/man3/FcConfigGetFontDirs.3 +#usr/share/man/man3/FcConfigGetFonts.3 +#usr/share/man/man3/FcConfigGetRescanInterval.3 +#usr/share/man/man3/FcConfigHome.3 +#usr/share/man/man3/FcConfigParseAndLoad.3 +#usr/share/man/man3/FcConfigSetCurrent.3 +#usr/share/man/man3/FcConfigSetRescanInterval.3 +#usr/share/man/man3/FcConfigSubstitute.3 +#usr/share/man/man3/FcConfigSubstituteWithPat.3 +#usr/share/man/man3/FcConfigUptoDate.3 +#usr/share/man/man3/FcDefaultSubstitute.3 +#usr/share/man/man3/FcDirCacheLoad.3 +#usr/share/man/man3/FcDirCacheLoadFile.3 +#usr/share/man/man3/FcDirCacheRead.3 +#usr/share/man/man3/FcDirCacheUnlink.3 +#usr/share/man/man3/FcDirCacheUnload.3 +#usr/share/man/man3/FcDirCacheValid.3 +#usr/share/man/man3/FcDirSave.3 +#usr/share/man/man3/FcDirScan.3 +#usr/share/man/man3/FcFileIsDir.3 +#usr/share/man/man3/FcFileScan.3 +#usr/share/man/man3/FcFini.3 +#usr/share/man/man3/FcFontList.3 +#usr/share/man/man3/FcFontMatch.3 +#usr/share/man/man3/FcFontRenderPrepare.3 +#usr/share/man/man3/FcFontSetAdd.3 +#usr/share/man/man3/FcFontSetCreate.3 +#usr/share/man/man3/FcFontSetDestroy.3 +#usr/share/man/man3/FcFontSetList.3 +#usr/share/man/man3/FcFontSetMatch.3 +#usr/share/man/man3/FcFontSetPrint.3 +#usr/share/man/man3/FcFontSetSort.3 +#usr/share/man/man3/FcFontSetSortDestroy.3 +#usr/share/man/man3/FcFontSort.3 +#usr/share/man/man3/FcFreeTypeCharIndex.3 +#usr/share/man/man3/FcFreeTypeCharSet.3 +#usr/share/man/man3/FcFreeTypeCharSetAndSpacing.3 +#usr/share/man/man3/FcFreeTypeQuery.3 +#usr/share/man/man3/FcFreeTypeQueryFace.3 +#usr/share/man/man3/FcGetLangs.3 +#usr/share/man/man3/FcGetVersion.3 +#usr/share/man/man3/FcInit.3 +#usr/share/man/man3/FcInitBringUptoDate.3 +#usr/share/man/man3/FcInitLoadConfig.3 +#usr/share/man/man3/FcInitLoadConfigAndFonts.3 +#usr/share/man/man3/FcInitReinitialize.3 +#usr/share/man/man3/FcIsLower.3 +#usr/share/man/man3/FcIsUpper.3 +#usr/share/man/man3/FcLangGetCharSet.3 +#usr/share/man/man3/FcLangSetAdd.3 +#usr/share/man/man3/FcLangSetCompare.3 +#usr/share/man/man3/FcLangSetContains.3 +#usr/share/man/man3/FcLangSetCopy.3 +#usr/share/man/man3/FcLangSetCreate.3 +#usr/share/man/man3/FcLangSetDestroy.3 +#usr/share/man/man3/FcLangSetEqual.3 +#usr/share/man/man3/FcLangSetHasLang.3 +#usr/share/man/man3/FcLangSetHash.3 +#usr/share/man/man3/FcMatrixCopy.3 +#usr/share/man/man3/FcMatrixEqual.3 +#usr/share/man/man3/FcMatrixInit.3 +#usr/share/man/man3/FcMatrixMultiply.3 +#usr/share/man/man3/FcMatrixRotate.3 +#usr/share/man/man3/FcMatrixScale.3 +#usr/share/man/man3/FcMatrixShear.3 +#usr/share/man/man3/FcNameConstant.3 +#usr/share/man/man3/FcNameGetConstant.3 +#usr/share/man/man3/FcNameGetObjectType.3 +#usr/share/man/man3/FcNameParse.3 +#usr/share/man/man3/FcNameRegisterConstants.3 +#usr/share/man/man3/FcNameRegisterObjectTypes.3 +#usr/share/man/man3/FcNameUnparse.3 +#usr/share/man/man3/FcNameUnregisterConstants.3 +#usr/share/man/man3/FcNameUnregisterObjectTypes.3 +#usr/share/man/man3/FcObjectSetAdd.3 +#usr/share/man/man3/FcObjectSetBuild.3 +#usr/share/man/man3/FcObjectSetCreate.3 +#usr/share/man/man3/FcObjectSetDestroy.3 +#usr/share/man/man3/FcPatternAdd-Type.3 +#usr/share/man/man3/FcPatternAdd.3 +#usr/share/man/man3/FcPatternAddWeak.3 +#usr/share/man/man3/FcPatternBuild.3 +#usr/share/man/man3/FcPatternCreate.3 +#usr/share/man/man3/FcPatternDel.3 +#usr/share/man/man3/FcPatternDestroy.3 +#usr/share/man/man3/FcPatternDuplicate.3 +#usr/share/man/man3/FcPatternEqual.3 +#usr/share/man/man3/FcPatternEqualSubset.3 +#usr/share/man/man3/FcPatternGet-Type.3 +#usr/share/man/man3/FcPatternGet.3 +#usr/share/man/man3/FcPatternHash.3 +#usr/share/man/man3/FcPatternPrint.3 +#usr/share/man/man3/FcPatternReference.3 +#usr/share/man/man3/FcPatternRemove.3 +#usr/share/man/man3/FcStrBasename.3 +#usr/share/man/man3/FcStrCmp.3 +#usr/share/man/man3/FcStrCmpIgnoreCase.3 +#usr/share/man/man3/FcStrCopy.3 +#usr/share/man/man3/FcStrCopyFilename.3 +#usr/share/man/man3/FcStrDowncase.3 +#usr/share/man/man3/FcStrFree.3 +#usr/share/man/man3/FcStrListCreate.3 +#usr/share/man/man3/FcStrListDone.3 +#usr/share/man/man3/FcStrListNext.3 +#usr/share/man/man3/FcStrPlus.3 +#usr/share/man/man3/FcStrSetAdd.3 +#usr/share/man/man3/FcStrSetAddFilename.3 +#usr/share/man/man3/FcStrSetCreate.3 +#usr/share/man/man3/FcStrSetDel.3 +#usr/share/man/man3/FcStrSetDestroy.3 +#usr/share/man/man3/FcStrSetEqual.3 +#usr/share/man/man3/FcStrSetMember.3 +#usr/share/man/man3/FcStrStr.3 +#usr/share/man/man3/FcStrStrIgnoreCase.3 +#usr/share/man/man3/FcToLower.3 +#usr/share/man/man3/FcUcs4ToUtf8.3 +#usr/share/man/man3/FcUtf16Len.3 +#usr/share/man/man3/FcUtf16ToUcs4.3 +#usr/share/man/man3/FcUtf8Len.3 +#usr/share/man/man3/FcUtf8ToUcs4.3 +#usr/share/man/man3/FcValueDestroy.3 +#usr/share/man/man3/FcValueEqual.3 +#usr/share/man/man3/FcValuePrint.3 +#usr/share/man/man3/FcValueSave.3 +#usr/share/man/man5/fonts-conf.5 +#usr/var +#usr/var/cache +usr/var/cache/fontconfig diff --git a/config/rootfiles/common/gettext b/config/rootfiles/common/gettext index 915985b..e740441 100644 --- a/config/rootfiles/common/gettext +++ b/config/rootfiles/common/gettext @@ -1,28 +1,27 @@ -usr/bin/autopoint -usr/bin/envsubst -usr/bin/gettext -usr/bin/gettext.sh -usr/bin/gettextize -usr/bin/msgattrib -usr/bin/msgcat -usr/bin/msgcmp -usr/bin/msgcomm -usr/bin/msgconv -usr/bin/msgen -usr/bin/msgexec -usr/bin/msgfilter -usr/bin/msgfmt -usr/bin/msggrep -usr/bin/msginit -usr/bin/msgmerge -usr/bin/msgunfmt -usr/bin/msguniq -usr/bin/ngettext -usr/bin/xgettext +#usr/bin/autopoint +#usr/bin/envsubst +#usr/bin/gettext +#usr/bin/gettext.sh +#usr/bin/gettextize +#usr/bin/msgattrib +#usr/bin/msgcat +#usr/bin/msgcmp +#usr/bin/msgcomm +#usr/bin/msgconv +#usr/bin/msgen +#usr/bin/msgexec +#usr/bin/msgfilter +#usr/bin/msgfmt +#usr/bin/msggrep +#usr/bin/msginit +#usr/bin/msgmerge +#usr/bin/msgunfmt +#usr/bin/msguniq +#usr/bin/ngettext +#usr/bin/recode-sr-latin +#usr/bin/xgettext #usr/include/autosprintf.h #usr/include/gettext-po.h -#usr/info/autosprintf.info -#usr/info/gettext.info #usr/lib/gettext #usr/lib/gettext/hostname #usr/lib/gettext/project-id @@ -30,47 +29,49 @@ usr/bin/xgettext #usr/lib/gettext/user-email #usr/lib/libasprintf.a #usr/lib/libasprintf.la -usr/lib/libasprintf.so +#usr/lib/libasprintf.so usr/lib/libasprintf.so.0 usr/lib/libasprintf.so.0.0.0 -usr/lib/libgettextlib-0.14.5.so +usr/lib/libgettextlib-0.18.1.so #usr/lib/libgettextlib.la -usr/lib/libgettextlib.so +#usr/lib/libgettextlib.so #usr/lib/libgettextpo.a #usr/lib/libgettextpo.la -usr/lib/libgettextpo.so +#usr/lib/libgettextpo.so usr/lib/libgettextpo.so.0 -usr/lib/libgettextpo.so.0.1.0 -usr/lib/libgettextsrc-0.14.5.so +usr/lib/libgettextpo.so.0.5.1 +usr/lib/libgettextsrc-0.18.1.so #usr/lib/libgettextsrc.la usr/lib/libgettextsrc.so usr/lib/preloadable_libintl.so #usr/share/aclocal/codeset.m4 +#usr/share/aclocal/fcntl-o.m4 #usr/share/aclocal/gettext.m4 #usr/share/aclocal/glibc2.m4 #usr/share/aclocal/glibc21.m4 #usr/share/aclocal/iconv.m4 #usr/share/aclocal/intdiv0.m4 +#usr/share/aclocal/intl.m4 +#usr/share/aclocal/intldir.m4 +#usr/share/aclocal/intlmacosx.m4 #usr/share/aclocal/intmax.m4 #usr/share/aclocal/inttypes-pri.m4 -#usr/share/aclocal/inttypes.m4 #usr/share/aclocal/inttypes_h.m4 -#usr/share/aclocal/isc-posix.m4 #usr/share/aclocal/lcmessage.m4 #usr/share/aclocal/lib-ld.m4 #usr/share/aclocal/lib-link.m4 #usr/share/aclocal/lib-prefix.m4 -#usr/share/aclocal/longdouble.m4 +#usr/share/aclocal/lock.m4 #usr/share/aclocal/longlong.m4 #usr/share/aclocal/nls.m4 #usr/share/aclocal/po.m4 #usr/share/aclocal/printf-posix.m4 #usr/share/aclocal/progtest.m4 -#usr/share/aclocal/signed.m4 #usr/share/aclocal/size_max.m4 #usr/share/aclocal/stdint_h.m4 +#usr/share/aclocal/threadlib.m4 #usr/share/aclocal/uintmax_t.m4 -#usr/share/aclocal/ulonglong.m4 +#usr/share/aclocal/visibility.m4 #usr/share/aclocal/wchar_t.m4 #usr/share/aclocal/wint_t.m4 #usr/share/aclocal/xsize.m4 @@ -92,6 +93,7 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/build-aux #usr/share/doc/gettext/examples/build-aux/csharpcomp.m4 #usr/share/doc/gettext/examples/build-aux/csharpcomp.sh.in +#usr/share/doc/gettext/examples/build-aux/csharpexec-test.exe #usr/share/doc/gettext/examples/build-aux/csharpexec.m4 #usr/share/doc/gettext/examples/build-aux/csharpexec.sh.in #usr/share/doc/gettext/examples/build-aux/gcj.m4 @@ -120,25 +122,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-c++-gnome/po/Makevars #usr/share/doc/gettext/examples/hello-c++-gnome/po/POTFILES.in #usr/share/doc/gettext/examples/hello-c++-gnome/po/af.po +#usr/share/doc/gettext/examples/hello-c++-gnome/po/ast.po +#usr/share/doc/gettext/examples/hello-c++-gnome/po/bg.po #usr/share/doc/gettext/examples/hello-c++-gnome/po/ca.po #usr/share/doc/gettext/examples/hello-c++-gnome/po/de.po #usr/share/doc/gettext/examples/hello-c++-gnome/po/el.po +#usr/share/doc/gettext/examples/hello-c++-gnome/po/eo.po #usr/share/doc/gettext/examples/hello-c++-gnome/po/es.po +#usr/share/doc/gettext/examples/hello-c++-gnome/po/fi.po #usr/share/doc/gettext/examples/hello-c++-gnome/po/fr.po #usr/share/doc/gettext/examples/hello-c++-gnome/po/ga.po +#usr/share/doc/gettext/examples/hello-c++-gnome/po/hu.po +#usr/share/doc/gettext/examples/hello-c++-gnome/po/id.po #usr/share/doc/gettext/examples/hello-c++-gnome/po/it.po #usr/share/doc/gettext/examples/hello-c++-gnome/po/ja.po +#usr/share/doc/gettext/examples/hello-c++-gnome/po/ky.po +#usr/share/doc/gettext/examples/hello-c++-gnome/po/lv.po +#usr/share/doc/gettext/examples/hello-c++-gnome/po/ms.po +#usr/share/doc/gettext/examples/hello-c++-gnome/po/mt.po #usr/share/doc/gettext/examples/hello-c++-gnome/po/nl.po #usr/share/doc/gettext/examples/hello-c++-gnome/po/pl.po +#usr/share/doc/gettext/examples/hello-c++-gnome/po/pt.po #usr/share/doc/gettext/examples/hello-c++-gnome/po/ro.po #usr/share/doc/gettext/examples/hello-c++-gnome/po/ru.po #usr/share/doc/gettext/examples/hello-c++-gnome/po/sk.po +#usr/share/doc/gettext/examples/hello-c++-gnome/po/sl.po #usr/share/doc/gettext/examples/hello-c++-gnome/po/sr.po #usr/share/doc/gettext/examples/hello-c++-gnome/po/sv.po #usr/share/doc/gettext/examples/hello-c++-gnome/po/tr.po #usr/share/doc/gettext/examples/hello-c++-gnome/po/uk.po #usr/share/doc/gettext/examples/hello-c++-gnome/po/vi.po #usr/share/doc/gettext/examples/hello-c++-gnome/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-c++-gnome/po/zh_HK.po #usr/share/doc/gettext/examples/hello-c++-gnome/po/zh_TW.po #usr/share/doc/gettext/examples/hello-c++-kde #usr/share/doc/gettext/examples/hello-c++-kde/BUGS @@ -182,25 +197,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-c++-kde/po/Makevars #usr/share/doc/gettext/examples/hello-c++-kde/po/POTFILES.in #usr/share/doc/gettext/examples/hello-c++-kde/po/af.po +#usr/share/doc/gettext/examples/hello-c++-kde/po/ast.po +#usr/share/doc/gettext/examples/hello-c++-kde/po/bg.po #usr/share/doc/gettext/examples/hello-c++-kde/po/ca.po #usr/share/doc/gettext/examples/hello-c++-kde/po/de.po #usr/share/doc/gettext/examples/hello-c++-kde/po/el.po +#usr/share/doc/gettext/examples/hello-c++-kde/po/eo.po #usr/share/doc/gettext/examples/hello-c++-kde/po/es.po +#usr/share/doc/gettext/examples/hello-c++-kde/po/fi.po #usr/share/doc/gettext/examples/hello-c++-kde/po/fr.po #usr/share/doc/gettext/examples/hello-c++-kde/po/ga.po +#usr/share/doc/gettext/examples/hello-c++-kde/po/hu.po +#usr/share/doc/gettext/examples/hello-c++-kde/po/id.po #usr/share/doc/gettext/examples/hello-c++-kde/po/it.po #usr/share/doc/gettext/examples/hello-c++-kde/po/ja.po +#usr/share/doc/gettext/examples/hello-c++-kde/po/ky.po +#usr/share/doc/gettext/examples/hello-c++-kde/po/lv.po +#usr/share/doc/gettext/examples/hello-c++-kde/po/ms.po +#usr/share/doc/gettext/examples/hello-c++-kde/po/mt.po #usr/share/doc/gettext/examples/hello-c++-kde/po/nl.po #usr/share/doc/gettext/examples/hello-c++-kde/po/pl.po +#usr/share/doc/gettext/examples/hello-c++-kde/po/pt.po #usr/share/doc/gettext/examples/hello-c++-kde/po/ro.po #usr/share/doc/gettext/examples/hello-c++-kde/po/ru.po #usr/share/doc/gettext/examples/hello-c++-kde/po/sk.po +#usr/share/doc/gettext/examples/hello-c++-kde/po/sl.po #usr/share/doc/gettext/examples/hello-c++-kde/po/sr.po #usr/share/doc/gettext/examples/hello-c++-kde/po/sv.po #usr/share/doc/gettext/examples/hello-c++-kde/po/tr.po #usr/share/doc/gettext/examples/hello-c++-kde/po/uk.po #usr/share/doc/gettext/examples/hello-c++-kde/po/vi.po #usr/share/doc/gettext/examples/hello-c++-kde/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-c++-kde/po/zh_HK.po #usr/share/doc/gettext/examples/hello-c++-kde/po/zh_TW.po #usr/share/doc/gettext/examples/hello-c++-qt #usr/share/doc/gettext/examples/hello-c++-qt/BUGS @@ -217,26 +245,86 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-c++-qt/po/LINGUAS #usr/share/doc/gettext/examples/hello-c++-qt/po/Makefile.am #usr/share/doc/gettext/examples/hello-c++-qt/po/af.po +#usr/share/doc/gettext/examples/hello-c++-qt/po/ast.po +#usr/share/doc/gettext/examples/hello-c++-qt/po/bg.po #usr/share/doc/gettext/examples/hello-c++-qt/po/ca.po #usr/share/doc/gettext/examples/hello-c++-qt/po/de.po #usr/share/doc/gettext/examples/hello-c++-qt/po/el.po +#usr/share/doc/gettext/examples/hello-c++-qt/po/eo.po #usr/share/doc/gettext/examples/hello-c++-qt/po/es.po +#usr/share/doc/gettext/examples/hello-c++-qt/po/fi.po #usr/share/doc/gettext/examples/hello-c++-qt/po/fr.po #usr/share/doc/gettext/examples/hello-c++-qt/po/ga.po +#usr/share/doc/gettext/examples/hello-c++-qt/po/hu.po +#usr/share/doc/gettext/examples/hello-c++-qt/po/id.po #usr/share/doc/gettext/examples/hello-c++-qt/po/it.po #usr/share/doc/gettext/examples/hello-c++-qt/po/ja.po +#usr/share/doc/gettext/examples/hello-c++-qt/po/ky.po +#usr/share/doc/gettext/examples/hello-c++-qt/po/lv.po +#usr/share/doc/gettext/examples/hello-c++-qt/po/ms.po +#usr/share/doc/gettext/examples/hello-c++-qt/po/mt.po #usr/share/doc/gettext/examples/hello-c++-qt/po/nl.po #usr/share/doc/gettext/examples/hello-c++-qt/po/pl.po +#usr/share/doc/gettext/examples/hello-c++-qt/po/pt.po #usr/share/doc/gettext/examples/hello-c++-qt/po/ro.po #usr/share/doc/gettext/examples/hello-c++-qt/po/ru.po #usr/share/doc/gettext/examples/hello-c++-qt/po/sk.po +#usr/share/doc/gettext/examples/hello-c++-qt/po/sl.po #usr/share/doc/gettext/examples/hello-c++-qt/po/sr.po #usr/share/doc/gettext/examples/hello-c++-qt/po/sv.po #usr/share/doc/gettext/examples/hello-c++-qt/po/tr.po #usr/share/doc/gettext/examples/hello-c++-qt/po/uk.po #usr/share/doc/gettext/examples/hello-c++-qt/po/vi.po #usr/share/doc/gettext/examples/hello-c++-qt/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-c++-qt/po/zh_HK.po #usr/share/doc/gettext/examples/hello-c++-qt/po/zh_TW.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/INSTALL +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/Makefile.am +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/autoclean.sh +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/autogen.sh +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/configure.ac +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/hello.cc +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/m4 +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/m4/Makefile.am +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/m4/wxwidgets.m4 +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/LINGUAS +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/Makefile.am +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/af.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/ast.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/bg.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/ca.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/de.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/el.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/eo.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/es.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/fi.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/fr.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/ga.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/hu.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/id.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/it.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/ja.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/ky.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/lv.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/ms.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/mt.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/nl.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/pl.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/pt.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/ro.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/ru.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/sk.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/sl.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/sr.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/sv.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/tr.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/uk.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/vi.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/zh_HK.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/zh_TW.po #usr/share/doc/gettext/examples/hello-c++/INSTALL #usr/share/doc/gettext/examples/hello-c++/Makefile.am #usr/share/doc/gettext/examples/hello-c++/autoclean.sh @@ -250,25 +338,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-c++/po/Makevars #usr/share/doc/gettext/examples/hello-c++/po/POTFILES.in #usr/share/doc/gettext/examples/hello-c++/po/af.po +#usr/share/doc/gettext/examples/hello-c++/po/ast.po +#usr/share/doc/gettext/examples/hello-c++/po/bg.po #usr/share/doc/gettext/examples/hello-c++/po/ca.po #usr/share/doc/gettext/examples/hello-c++/po/de.po #usr/share/doc/gettext/examples/hello-c++/po/el.po +#usr/share/doc/gettext/examples/hello-c++/po/eo.po #usr/share/doc/gettext/examples/hello-c++/po/es.po +#usr/share/doc/gettext/examples/hello-c++/po/fi.po #usr/share/doc/gettext/examples/hello-c++/po/fr.po #usr/share/doc/gettext/examples/hello-c++/po/ga.po +#usr/share/doc/gettext/examples/hello-c++/po/hu.po +#usr/share/doc/gettext/examples/hello-c++/po/id.po #usr/share/doc/gettext/examples/hello-c++/po/it.po #usr/share/doc/gettext/examples/hello-c++/po/ja.po +#usr/share/doc/gettext/examples/hello-c++/po/ky.po +#usr/share/doc/gettext/examples/hello-c++/po/lv.po +#usr/share/doc/gettext/examples/hello-c++/po/ms.po +#usr/share/doc/gettext/examples/hello-c++/po/mt.po #usr/share/doc/gettext/examples/hello-c++/po/nl.po #usr/share/doc/gettext/examples/hello-c++/po/pl.po +#usr/share/doc/gettext/examples/hello-c++/po/pt.po #usr/share/doc/gettext/examples/hello-c++/po/ro.po #usr/share/doc/gettext/examples/hello-c++/po/ru.po #usr/share/doc/gettext/examples/hello-c++/po/sk.po +#usr/share/doc/gettext/examples/hello-c++/po/sl.po #usr/share/doc/gettext/examples/hello-c++/po/sr.po #usr/share/doc/gettext/examples/hello-c++/po/sv.po #usr/share/doc/gettext/examples/hello-c++/po/tr.po #usr/share/doc/gettext/examples/hello-c++/po/uk.po #usr/share/doc/gettext/examples/hello-c++/po/vi.po #usr/share/doc/gettext/examples/hello-c++/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-c++/po/zh_HK.po #usr/share/doc/gettext/examples/hello-c++/po/zh_TW.po #usr/share/doc/gettext/examples/hello-c-gnome #usr/share/doc/gettext/examples/hello-c-gnome/INSTALL @@ -287,25 +388,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-c-gnome/po/Makevars #usr/share/doc/gettext/examples/hello-c-gnome/po/POTFILES.in #usr/share/doc/gettext/examples/hello-c-gnome/po/af.po +#usr/share/doc/gettext/examples/hello-c-gnome/po/ast.po +#usr/share/doc/gettext/examples/hello-c-gnome/po/bg.po #usr/share/doc/gettext/examples/hello-c-gnome/po/ca.po #usr/share/doc/gettext/examples/hello-c-gnome/po/de.po #usr/share/doc/gettext/examples/hello-c-gnome/po/el.po +#usr/share/doc/gettext/examples/hello-c-gnome/po/eo.po #usr/share/doc/gettext/examples/hello-c-gnome/po/es.po +#usr/share/doc/gettext/examples/hello-c-gnome/po/fi.po #usr/share/doc/gettext/examples/hello-c-gnome/po/fr.po #usr/share/doc/gettext/examples/hello-c-gnome/po/ga.po +#usr/share/doc/gettext/examples/hello-c-gnome/po/hu.po +#usr/share/doc/gettext/examples/hello-c-gnome/po/id.po #usr/share/doc/gettext/examples/hello-c-gnome/po/it.po #usr/share/doc/gettext/examples/hello-c-gnome/po/ja.po +#usr/share/doc/gettext/examples/hello-c-gnome/po/ky.po +#usr/share/doc/gettext/examples/hello-c-gnome/po/lv.po +#usr/share/doc/gettext/examples/hello-c-gnome/po/ms.po +#usr/share/doc/gettext/examples/hello-c-gnome/po/mt.po #usr/share/doc/gettext/examples/hello-c-gnome/po/nl.po #usr/share/doc/gettext/examples/hello-c-gnome/po/pl.po +#usr/share/doc/gettext/examples/hello-c-gnome/po/pt.po #usr/share/doc/gettext/examples/hello-c-gnome/po/ro.po #usr/share/doc/gettext/examples/hello-c-gnome/po/ru.po #usr/share/doc/gettext/examples/hello-c-gnome/po/sk.po +#usr/share/doc/gettext/examples/hello-c-gnome/po/sl.po #usr/share/doc/gettext/examples/hello-c-gnome/po/sr.po #usr/share/doc/gettext/examples/hello-c-gnome/po/sv.po #usr/share/doc/gettext/examples/hello-c-gnome/po/tr.po #usr/share/doc/gettext/examples/hello-c-gnome/po/uk.po #usr/share/doc/gettext/examples/hello-c-gnome/po/vi.po #usr/share/doc/gettext/examples/hello-c-gnome/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-c-gnome/po/zh_HK.po #usr/share/doc/gettext/examples/hello-c-gnome/po/zh_TW.po #usr/share/doc/gettext/examples/hello-c/INSTALL #usr/share/doc/gettext/examples/hello-c/Makefile.am @@ -320,25 +434,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-c/po/Makevars #usr/share/doc/gettext/examples/hello-c/po/POTFILES.in #usr/share/doc/gettext/examples/hello-c/po/af.po +#usr/share/doc/gettext/examples/hello-c/po/ast.po +#usr/share/doc/gettext/examples/hello-c/po/bg.po #usr/share/doc/gettext/examples/hello-c/po/ca.po #usr/share/doc/gettext/examples/hello-c/po/de.po #usr/share/doc/gettext/examples/hello-c/po/el.po +#usr/share/doc/gettext/examples/hello-c/po/eo.po #usr/share/doc/gettext/examples/hello-c/po/es.po +#usr/share/doc/gettext/examples/hello-c/po/fi.po #usr/share/doc/gettext/examples/hello-c/po/fr.po #usr/share/doc/gettext/examples/hello-c/po/ga.po +#usr/share/doc/gettext/examples/hello-c/po/hu.po +#usr/share/doc/gettext/examples/hello-c/po/id.po #usr/share/doc/gettext/examples/hello-c/po/it.po #usr/share/doc/gettext/examples/hello-c/po/ja.po +#usr/share/doc/gettext/examples/hello-c/po/ky.po +#usr/share/doc/gettext/examples/hello-c/po/lv.po +#usr/share/doc/gettext/examples/hello-c/po/ms.po +#usr/share/doc/gettext/examples/hello-c/po/mt.po #usr/share/doc/gettext/examples/hello-c/po/nl.po #usr/share/doc/gettext/examples/hello-c/po/pl.po +#usr/share/doc/gettext/examples/hello-c/po/pt.po #usr/share/doc/gettext/examples/hello-c/po/ro.po #usr/share/doc/gettext/examples/hello-c/po/ru.po #usr/share/doc/gettext/examples/hello-c/po/sk.po +#usr/share/doc/gettext/examples/hello-c/po/sl.po #usr/share/doc/gettext/examples/hello-c/po/sr.po #usr/share/doc/gettext/examples/hello-c/po/sv.po #usr/share/doc/gettext/examples/hello-c/po/tr.po #usr/share/doc/gettext/examples/hello-c/po/uk.po #usr/share/doc/gettext/examples/hello-c/po/vi.po #usr/share/doc/gettext/examples/hello-c/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-c/po/zh_HK.po #usr/share/doc/gettext/examples/hello-c/po/zh_TW.po #usr/share/doc/gettext/examples/hello-clisp #usr/share/doc/gettext/examples/hello-clisp/INSTALL @@ -353,31 +480,45 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-clisp/po/LINGUAS #usr/share/doc/gettext/examples/hello-clisp/po/Makefile.am #usr/share/doc/gettext/examples/hello-clisp/po/af.po +#usr/share/doc/gettext/examples/hello-clisp/po/ast.po +#usr/share/doc/gettext/examples/hello-clisp/po/bg.po #usr/share/doc/gettext/examples/hello-clisp/po/ca.po #usr/share/doc/gettext/examples/hello-clisp/po/de.po #usr/share/doc/gettext/examples/hello-clisp/po/el.po +#usr/share/doc/gettext/examples/hello-clisp/po/eo.po #usr/share/doc/gettext/examples/hello-clisp/po/es.po +#usr/share/doc/gettext/examples/hello-clisp/po/fi.po #usr/share/doc/gettext/examples/hello-clisp/po/fr.po #usr/share/doc/gettext/examples/hello-clisp/po/ga.po +#usr/share/doc/gettext/examples/hello-clisp/po/hu.po +#usr/share/doc/gettext/examples/hello-clisp/po/id.po #usr/share/doc/gettext/examples/hello-clisp/po/it.po #usr/share/doc/gettext/examples/hello-clisp/po/ja.po +#usr/share/doc/gettext/examples/hello-clisp/po/ky.po +#usr/share/doc/gettext/examples/hello-clisp/po/lv.po +#usr/share/doc/gettext/examples/hello-clisp/po/ms.po +#usr/share/doc/gettext/examples/hello-clisp/po/mt.po #usr/share/doc/gettext/examples/hello-clisp/po/nl.po #usr/share/doc/gettext/examples/hello-clisp/po/pl.po +#usr/share/doc/gettext/examples/hello-clisp/po/pt.po #usr/share/doc/gettext/examples/hello-clisp/po/ro.po #usr/share/doc/gettext/examples/hello-clisp/po/ru.po #usr/share/doc/gettext/examples/hello-clisp/po/sk.po +#usr/share/doc/gettext/examples/hello-clisp/po/sl.po #usr/share/doc/gettext/examples/hello-clisp/po/sr.po #usr/share/doc/gettext/examples/hello-clisp/po/sv.po #usr/share/doc/gettext/examples/hello-clisp/po/tr.po #usr/share/doc/gettext/examples/hello-clisp/po/uk.po #usr/share/doc/gettext/examples/hello-clisp/po/vi.po #usr/share/doc/gettext/examples/hello-clisp/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-clisp/po/zh_HK.po #usr/share/doc/gettext/examples/hello-clisp/po/zh_TW.po #usr/share/doc/gettext/examples/hello-csharp #usr/share/doc/gettext/examples/hello-csharp-forms #usr/share/doc/gettext/examples/hello-csharp-forms/BUGS #usr/share/doc/gettext/examples/hello-csharp-forms/INSTALL #usr/share/doc/gettext/examples/hello-csharp-forms/Makefile.am +#usr/share/doc/gettext/examples/hello-csharp-forms/README #usr/share/doc/gettext/examples/hello-csharp-forms/autoclean.sh #usr/share/doc/gettext/examples/hello-csharp-forms/autogen.sh #usr/share/doc/gettext/examples/hello-csharp-forms/configure.ac @@ -388,25 +529,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-csharp-forms/po/LINGUAS #usr/share/doc/gettext/examples/hello-csharp-forms/po/Makefile.am #usr/share/doc/gettext/examples/hello-csharp-forms/po/af.po +#usr/share/doc/gettext/examples/hello-csharp-forms/po/ast.po +#usr/share/doc/gettext/examples/hello-csharp-forms/po/bg.po #usr/share/doc/gettext/examples/hello-csharp-forms/po/ca.po #usr/share/doc/gettext/examples/hello-csharp-forms/po/de.po #usr/share/doc/gettext/examples/hello-csharp-forms/po/el.po +#usr/share/doc/gettext/examples/hello-csharp-forms/po/eo.po #usr/share/doc/gettext/examples/hello-csharp-forms/po/es.po +#usr/share/doc/gettext/examples/hello-csharp-forms/po/fi.po #usr/share/doc/gettext/examples/hello-csharp-forms/po/fr.po #usr/share/doc/gettext/examples/hello-csharp-forms/po/ga.po +#usr/share/doc/gettext/examples/hello-csharp-forms/po/hu.po +#usr/share/doc/gettext/examples/hello-csharp-forms/po/id.po #usr/share/doc/gettext/examples/hello-csharp-forms/po/it.po #usr/share/doc/gettext/examples/hello-csharp-forms/po/ja.po +#usr/share/doc/gettext/examples/hello-csharp-forms/po/ky.po +#usr/share/doc/gettext/examples/hello-csharp-forms/po/lv.po +#usr/share/doc/gettext/examples/hello-csharp-forms/po/ms.po +#usr/share/doc/gettext/examples/hello-csharp-forms/po/mt.po #usr/share/doc/gettext/examples/hello-csharp-forms/po/nl.po #usr/share/doc/gettext/examples/hello-csharp-forms/po/pl.po +#usr/share/doc/gettext/examples/hello-csharp-forms/po/pt.po #usr/share/doc/gettext/examples/hello-csharp-forms/po/ro.po #usr/share/doc/gettext/examples/hello-csharp-forms/po/ru.po #usr/share/doc/gettext/examples/hello-csharp-forms/po/sk.po +#usr/share/doc/gettext/examples/hello-csharp-forms/po/sl.po #usr/share/doc/gettext/examples/hello-csharp-forms/po/sr.po #usr/share/doc/gettext/examples/hello-csharp-forms/po/sv.po #usr/share/doc/gettext/examples/hello-csharp-forms/po/tr.po #usr/share/doc/gettext/examples/hello-csharp-forms/po/uk.po #usr/share/doc/gettext/examples/hello-csharp-forms/po/vi.po #usr/share/doc/gettext/examples/hello-csharp-forms/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-csharp-forms/po/zh_HK.po #usr/share/doc/gettext/examples/hello-csharp-forms/po/zh_TW.po #usr/share/doc/gettext/examples/hello-csharp/INSTALL #usr/share/doc/gettext/examples/hello-csharp/Makefile.am @@ -420,25 +574,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-csharp/po/LINGUAS #usr/share/doc/gettext/examples/hello-csharp/po/Makefile.am #usr/share/doc/gettext/examples/hello-csharp/po/af.po +#usr/share/doc/gettext/examples/hello-csharp/po/ast.po +#usr/share/doc/gettext/examples/hello-csharp/po/bg.po #usr/share/doc/gettext/examples/hello-csharp/po/ca.po #usr/share/doc/gettext/examples/hello-csharp/po/de.po #usr/share/doc/gettext/examples/hello-csharp/po/el.po +#usr/share/doc/gettext/examples/hello-csharp/po/eo.po #usr/share/doc/gettext/examples/hello-csharp/po/es.po +#usr/share/doc/gettext/examples/hello-csharp/po/fi.po #usr/share/doc/gettext/examples/hello-csharp/po/fr.po #usr/share/doc/gettext/examples/hello-csharp/po/ga.po +#usr/share/doc/gettext/examples/hello-csharp/po/hu.po +#usr/share/doc/gettext/examples/hello-csharp/po/id.po #usr/share/doc/gettext/examples/hello-csharp/po/it.po #usr/share/doc/gettext/examples/hello-csharp/po/ja.po +#usr/share/doc/gettext/examples/hello-csharp/po/ky.po +#usr/share/doc/gettext/examples/hello-csharp/po/lv.po +#usr/share/doc/gettext/examples/hello-csharp/po/ms.po +#usr/share/doc/gettext/examples/hello-csharp/po/mt.po #usr/share/doc/gettext/examples/hello-csharp/po/nl.po #usr/share/doc/gettext/examples/hello-csharp/po/pl.po +#usr/share/doc/gettext/examples/hello-csharp/po/pt.po #usr/share/doc/gettext/examples/hello-csharp/po/ro.po #usr/share/doc/gettext/examples/hello-csharp/po/ru.po #usr/share/doc/gettext/examples/hello-csharp/po/sk.po +#usr/share/doc/gettext/examples/hello-csharp/po/sl.po #usr/share/doc/gettext/examples/hello-csharp/po/sr.po #usr/share/doc/gettext/examples/hello-csharp/po/sv.po #usr/share/doc/gettext/examples/hello-csharp/po/tr.po #usr/share/doc/gettext/examples/hello-csharp/po/uk.po #usr/share/doc/gettext/examples/hello-csharp/po/vi.po #usr/share/doc/gettext/examples/hello-csharp/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-csharp/po/zh_HK.po #usr/share/doc/gettext/examples/hello-csharp/po/zh_TW.po #usr/share/doc/gettext/examples/hello-gawk #usr/share/doc/gettext/examples/hello-gawk/INSTALL @@ -453,25 +620,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-gawk/po/LINGUAS #usr/share/doc/gettext/examples/hello-gawk/po/Makefile.am #usr/share/doc/gettext/examples/hello-gawk/po/af.po +#usr/share/doc/gettext/examples/hello-gawk/po/ast.po +#usr/share/doc/gettext/examples/hello-gawk/po/bg.po #usr/share/doc/gettext/examples/hello-gawk/po/ca.po #usr/share/doc/gettext/examples/hello-gawk/po/de.po #usr/share/doc/gettext/examples/hello-gawk/po/el.po +#usr/share/doc/gettext/examples/hello-gawk/po/eo.po #usr/share/doc/gettext/examples/hello-gawk/po/es.po +#usr/share/doc/gettext/examples/hello-gawk/po/fi.po #usr/share/doc/gettext/examples/hello-gawk/po/fr.po #usr/share/doc/gettext/examples/hello-gawk/po/ga.po +#usr/share/doc/gettext/examples/hello-gawk/po/hu.po +#usr/share/doc/gettext/examples/hello-gawk/po/id.po #usr/share/doc/gettext/examples/hello-gawk/po/it.po #usr/share/doc/gettext/examples/hello-gawk/po/ja.po +#usr/share/doc/gettext/examples/hello-gawk/po/ky.po +#usr/share/doc/gettext/examples/hello-gawk/po/lv.po +#usr/share/doc/gettext/examples/hello-gawk/po/ms.po +#usr/share/doc/gettext/examples/hello-gawk/po/mt.po #usr/share/doc/gettext/examples/hello-gawk/po/nl.po #usr/share/doc/gettext/examples/hello-gawk/po/pl.po +#usr/share/doc/gettext/examples/hello-gawk/po/pt.po #usr/share/doc/gettext/examples/hello-gawk/po/ro.po #usr/share/doc/gettext/examples/hello-gawk/po/ru.po #usr/share/doc/gettext/examples/hello-gawk/po/sk.po +#usr/share/doc/gettext/examples/hello-gawk/po/sl.po #usr/share/doc/gettext/examples/hello-gawk/po/sr.po #usr/share/doc/gettext/examples/hello-gawk/po/sv.po #usr/share/doc/gettext/examples/hello-gawk/po/tr.po #usr/share/doc/gettext/examples/hello-gawk/po/uk.po #usr/share/doc/gettext/examples/hello-gawk/po/vi.po #usr/share/doc/gettext/examples/hello-gawk/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-gawk/po/zh_HK.po #usr/share/doc/gettext/examples/hello-gawk/po/zh_TW.po #usr/share/doc/gettext/examples/hello-guile #usr/share/doc/gettext/examples/hello-guile/INSTALL @@ -486,25 +666,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-guile/po/LINGUAS #usr/share/doc/gettext/examples/hello-guile/po/Makefile.am #usr/share/doc/gettext/examples/hello-guile/po/af.po +#usr/share/doc/gettext/examples/hello-guile/po/ast.po +#usr/share/doc/gettext/examples/hello-guile/po/bg.po #usr/share/doc/gettext/examples/hello-guile/po/ca.po #usr/share/doc/gettext/examples/hello-guile/po/de.po #usr/share/doc/gettext/examples/hello-guile/po/el.po +#usr/share/doc/gettext/examples/hello-guile/po/eo.po #usr/share/doc/gettext/examples/hello-guile/po/es.po +#usr/share/doc/gettext/examples/hello-guile/po/fi.po #usr/share/doc/gettext/examples/hello-guile/po/fr.po #usr/share/doc/gettext/examples/hello-guile/po/ga.po +#usr/share/doc/gettext/examples/hello-guile/po/hu.po +#usr/share/doc/gettext/examples/hello-guile/po/id.po #usr/share/doc/gettext/examples/hello-guile/po/it.po #usr/share/doc/gettext/examples/hello-guile/po/ja.po +#usr/share/doc/gettext/examples/hello-guile/po/ky.po +#usr/share/doc/gettext/examples/hello-guile/po/lv.po +#usr/share/doc/gettext/examples/hello-guile/po/ms.po +#usr/share/doc/gettext/examples/hello-guile/po/mt.po #usr/share/doc/gettext/examples/hello-guile/po/nl.po #usr/share/doc/gettext/examples/hello-guile/po/pl.po +#usr/share/doc/gettext/examples/hello-guile/po/pt.po #usr/share/doc/gettext/examples/hello-guile/po/ro.po #usr/share/doc/gettext/examples/hello-guile/po/ru.po #usr/share/doc/gettext/examples/hello-guile/po/sk.po +#usr/share/doc/gettext/examples/hello-guile/po/sl.po #usr/share/doc/gettext/examples/hello-guile/po/sr.po #usr/share/doc/gettext/examples/hello-guile/po/sv.po #usr/share/doc/gettext/examples/hello-guile/po/tr.po #usr/share/doc/gettext/examples/hello-guile/po/uk.po #usr/share/doc/gettext/examples/hello-guile/po/vi.po #usr/share/doc/gettext/examples/hello-guile/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-guile/po/zh_HK.po #usr/share/doc/gettext/examples/hello-guile/po/zh_TW.po #usr/share/doc/gettext/examples/hello-java #usr/share/doc/gettext/examples/hello-java-awt @@ -523,26 +716,88 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-java-awt/po/LINGUAS #usr/share/doc/gettext/examples/hello-java-awt/po/Makefile.am #usr/share/doc/gettext/examples/hello-java-awt/po/af.po +#usr/share/doc/gettext/examples/hello-java-awt/po/ast.po +#usr/share/doc/gettext/examples/hello-java-awt/po/bg.po #usr/share/doc/gettext/examples/hello-java-awt/po/ca.po #usr/share/doc/gettext/examples/hello-java-awt/po/de.po #usr/share/doc/gettext/examples/hello-java-awt/po/el.po +#usr/share/doc/gettext/examples/hello-java-awt/po/eo.po #usr/share/doc/gettext/examples/hello-java-awt/po/es.po +#usr/share/doc/gettext/examples/hello-java-awt/po/fi.po #usr/share/doc/gettext/examples/hello-java-awt/po/fr.po #usr/share/doc/gettext/examples/hello-java-awt/po/ga.po +#usr/share/doc/gettext/examples/hello-java-awt/po/hu.po +#usr/share/doc/gettext/examples/hello-java-awt/po/id.po #usr/share/doc/gettext/examples/hello-java-awt/po/it.po #usr/share/doc/gettext/examples/hello-java-awt/po/ja.po +#usr/share/doc/gettext/examples/hello-java-awt/po/ky.po +#usr/share/doc/gettext/examples/hello-java-awt/po/lv.po +#usr/share/doc/gettext/examples/hello-java-awt/po/ms.po +#usr/share/doc/gettext/examples/hello-java-awt/po/mt.po #usr/share/doc/gettext/examples/hello-java-awt/po/nl.po #usr/share/doc/gettext/examples/hello-java-awt/po/pl.po +#usr/share/doc/gettext/examples/hello-java-awt/po/pt.po #usr/share/doc/gettext/examples/hello-java-awt/po/ro.po #usr/share/doc/gettext/examples/hello-java-awt/po/ru.po #usr/share/doc/gettext/examples/hello-java-awt/po/sk.po +#usr/share/doc/gettext/examples/hello-java-awt/po/sl.po #usr/share/doc/gettext/examples/hello-java-awt/po/sr.po #usr/share/doc/gettext/examples/hello-java-awt/po/sv.po #usr/share/doc/gettext/examples/hello-java-awt/po/tr.po #usr/share/doc/gettext/examples/hello-java-awt/po/uk.po #usr/share/doc/gettext/examples/hello-java-awt/po/vi.po #usr/share/doc/gettext/examples/hello-java-awt/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-java-awt/po/zh_HK.po #usr/share/doc/gettext/examples/hello-java-awt/po/zh_TW.po +#usr/share/doc/gettext/examples/hello-java-qtjambi +#usr/share/doc/gettext/examples/hello-java-qtjambi/BUGS +#usr/share/doc/gettext/examples/hello-java-qtjambi/Hello.java +#usr/share/doc/gettext/examples/hello-java-qtjambi/INSTALL +#usr/share/doc/gettext/examples/hello-java-qtjambi/Makefile.am +#usr/share/doc/gettext/examples/hello-java-qtjambi/autoclean.sh +#usr/share/doc/gettext/examples/hello-java-qtjambi/autogen.sh +#usr/share/doc/gettext/examples/hello-java-qtjambi/configure.ac +#usr/share/doc/gettext/examples/hello-java-qtjambi/m4 +#usr/share/doc/gettext/examples/hello-java-qtjambi/m4/Makefile.am +#usr/share/doc/gettext/examples/hello-java-qtjambi/m4/Test15.class +#usr/share/doc/gettext/examples/hello-java-qtjambi/m4/Test15.java +#usr/share/doc/gettext/examples/hello-java-qtjambi/po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/LINGUAS +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/Makefile.am +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/af.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/ast.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/bg.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/ca.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/de.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/el.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/eo.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/es.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/fi.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/fr.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/ga.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/hu.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/id.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/it.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/ja.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/ky.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/lv.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/ms.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/mt.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/nl.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/pl.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/pt.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/ro.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/ru.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/sk.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/sl.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/sr.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/sv.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/tr.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/uk.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/vi.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/zh_HK.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/zh_TW.po #usr/share/doc/gettext/examples/hello-java-swing #usr/share/doc/gettext/examples/hello-java-swing/BUGS #usr/share/doc/gettext/examples/hello-java-swing/Hello.java @@ -559,25 +814,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-java-swing/po/LINGUAS #usr/share/doc/gettext/examples/hello-java-swing/po/Makefile.am #usr/share/doc/gettext/examples/hello-java-swing/po/af.po +#usr/share/doc/gettext/examples/hello-java-swing/po/ast.po +#usr/share/doc/gettext/examples/hello-java-swing/po/bg.po #usr/share/doc/gettext/examples/hello-java-swing/po/ca.po #usr/share/doc/gettext/examples/hello-java-swing/po/de.po #usr/share/doc/gettext/examples/hello-java-swing/po/el.po +#usr/share/doc/gettext/examples/hello-java-swing/po/eo.po #usr/share/doc/gettext/examples/hello-java-swing/po/es.po +#usr/share/doc/gettext/examples/hello-java-swing/po/fi.po #usr/share/doc/gettext/examples/hello-java-swing/po/fr.po #usr/share/doc/gettext/examples/hello-java-swing/po/ga.po +#usr/share/doc/gettext/examples/hello-java-swing/po/hu.po +#usr/share/doc/gettext/examples/hello-java-swing/po/id.po #usr/share/doc/gettext/examples/hello-java-swing/po/it.po #usr/share/doc/gettext/examples/hello-java-swing/po/ja.po +#usr/share/doc/gettext/examples/hello-java-swing/po/ky.po +#usr/share/doc/gettext/examples/hello-java-swing/po/lv.po +#usr/share/doc/gettext/examples/hello-java-swing/po/ms.po +#usr/share/doc/gettext/examples/hello-java-swing/po/mt.po #usr/share/doc/gettext/examples/hello-java-swing/po/nl.po #usr/share/doc/gettext/examples/hello-java-swing/po/pl.po +#usr/share/doc/gettext/examples/hello-java-swing/po/pt.po #usr/share/doc/gettext/examples/hello-java-swing/po/ro.po #usr/share/doc/gettext/examples/hello-java-swing/po/ru.po #usr/share/doc/gettext/examples/hello-java-swing/po/sk.po +#usr/share/doc/gettext/examples/hello-java-swing/po/sl.po #usr/share/doc/gettext/examples/hello-java-swing/po/sr.po #usr/share/doc/gettext/examples/hello-java-swing/po/sv.po #usr/share/doc/gettext/examples/hello-java-swing/po/tr.po #usr/share/doc/gettext/examples/hello-java-swing/po/uk.po #usr/share/doc/gettext/examples/hello-java-swing/po/vi.po #usr/share/doc/gettext/examples/hello-java-swing/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-java-swing/po/zh_HK.po #usr/share/doc/gettext/examples/hello-java-swing/po/zh_TW.po #usr/share/doc/gettext/examples/hello-java/Hello.java #usr/share/doc/gettext/examples/hello-java/INSTALL @@ -591,25 +859,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-java/po/LINGUAS #usr/share/doc/gettext/examples/hello-java/po/Makefile.am #usr/share/doc/gettext/examples/hello-java/po/af.po +#usr/share/doc/gettext/examples/hello-java/po/ast.po +#usr/share/doc/gettext/examples/hello-java/po/bg.po #usr/share/doc/gettext/examples/hello-java/po/ca.po #usr/share/doc/gettext/examples/hello-java/po/de.po #usr/share/doc/gettext/examples/hello-java/po/el.po +#usr/share/doc/gettext/examples/hello-java/po/eo.po #usr/share/doc/gettext/examples/hello-java/po/es.po +#usr/share/doc/gettext/examples/hello-java/po/fi.po #usr/share/doc/gettext/examples/hello-java/po/fr.po #usr/share/doc/gettext/examples/hello-java/po/ga.po +#usr/share/doc/gettext/examples/hello-java/po/hu.po +#usr/share/doc/gettext/examples/hello-java/po/id.po #usr/share/doc/gettext/examples/hello-java/po/it.po #usr/share/doc/gettext/examples/hello-java/po/ja.po +#usr/share/doc/gettext/examples/hello-java/po/ky.po +#usr/share/doc/gettext/examples/hello-java/po/lv.po +#usr/share/doc/gettext/examples/hello-java/po/ms.po +#usr/share/doc/gettext/examples/hello-java/po/mt.po #usr/share/doc/gettext/examples/hello-java/po/nl.po #usr/share/doc/gettext/examples/hello-java/po/pl.po +#usr/share/doc/gettext/examples/hello-java/po/pt.po #usr/share/doc/gettext/examples/hello-java/po/ro.po #usr/share/doc/gettext/examples/hello-java/po/ru.po #usr/share/doc/gettext/examples/hello-java/po/sk.po +#usr/share/doc/gettext/examples/hello-java/po/sl.po #usr/share/doc/gettext/examples/hello-java/po/sr.po #usr/share/doc/gettext/examples/hello-java/po/sv.po #usr/share/doc/gettext/examples/hello-java/po/tr.po #usr/share/doc/gettext/examples/hello-java/po/uk.po #usr/share/doc/gettext/examples/hello-java/po/vi.po #usr/share/doc/gettext/examples/hello-java/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-java/po/zh_HK.po #usr/share/doc/gettext/examples/hello-java/po/zh_TW.po #usr/share/doc/gettext/examples/hello-librep #usr/share/doc/gettext/examples/hello-librep/INSTALL @@ -624,25 +905,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-librep/po/LINGUAS #usr/share/doc/gettext/examples/hello-librep/po/Makefile.am #usr/share/doc/gettext/examples/hello-librep/po/af.po +#usr/share/doc/gettext/examples/hello-librep/po/ast.po +#usr/share/doc/gettext/examples/hello-librep/po/bg.po #usr/share/doc/gettext/examples/hello-librep/po/ca.po #usr/share/doc/gettext/examples/hello-librep/po/de.po #usr/share/doc/gettext/examples/hello-librep/po/el.po +#usr/share/doc/gettext/examples/hello-librep/po/eo.po #usr/share/doc/gettext/examples/hello-librep/po/es.po +#usr/share/doc/gettext/examples/hello-librep/po/fi.po #usr/share/doc/gettext/examples/hello-librep/po/fr.po #usr/share/doc/gettext/examples/hello-librep/po/ga.po +#usr/share/doc/gettext/examples/hello-librep/po/hu.po +#usr/share/doc/gettext/examples/hello-librep/po/id.po #usr/share/doc/gettext/examples/hello-librep/po/it.po #usr/share/doc/gettext/examples/hello-librep/po/ja.po +#usr/share/doc/gettext/examples/hello-librep/po/ky.po +#usr/share/doc/gettext/examples/hello-librep/po/lv.po +#usr/share/doc/gettext/examples/hello-librep/po/ms.po +#usr/share/doc/gettext/examples/hello-librep/po/mt.po #usr/share/doc/gettext/examples/hello-librep/po/nl.po #usr/share/doc/gettext/examples/hello-librep/po/pl.po +#usr/share/doc/gettext/examples/hello-librep/po/pt.po #usr/share/doc/gettext/examples/hello-librep/po/ro.po #usr/share/doc/gettext/examples/hello-librep/po/ru.po #usr/share/doc/gettext/examples/hello-librep/po/sk.po +#usr/share/doc/gettext/examples/hello-librep/po/sl.po #usr/share/doc/gettext/examples/hello-librep/po/sr.po #usr/share/doc/gettext/examples/hello-librep/po/sv.po #usr/share/doc/gettext/examples/hello-librep/po/tr.po #usr/share/doc/gettext/examples/hello-librep/po/uk.po #usr/share/doc/gettext/examples/hello-librep/po/vi.po #usr/share/doc/gettext/examples/hello-librep/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-librep/po/zh_HK.po #usr/share/doc/gettext/examples/hello-librep/po/zh_TW.po #usr/share/doc/gettext/examples/hello-objc #usr/share/doc/gettext/examples/hello-objc-gnome @@ -662,25 +956,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-objc-gnome/po/Makevars #usr/share/doc/gettext/examples/hello-objc-gnome/po/POTFILES.in #usr/share/doc/gettext/examples/hello-objc-gnome/po/af.po +#usr/share/doc/gettext/examples/hello-objc-gnome/po/ast.po +#usr/share/doc/gettext/examples/hello-objc-gnome/po/bg.po #usr/share/doc/gettext/examples/hello-objc-gnome/po/ca.po #usr/share/doc/gettext/examples/hello-objc-gnome/po/de.po #usr/share/doc/gettext/examples/hello-objc-gnome/po/el.po +#usr/share/doc/gettext/examples/hello-objc-gnome/po/eo.po #usr/share/doc/gettext/examples/hello-objc-gnome/po/es.po +#usr/share/doc/gettext/examples/hello-objc-gnome/po/fi.po #usr/share/doc/gettext/examples/hello-objc-gnome/po/fr.po #usr/share/doc/gettext/examples/hello-objc-gnome/po/ga.po +#usr/share/doc/gettext/examples/hello-objc-gnome/po/hu.po +#usr/share/doc/gettext/examples/hello-objc-gnome/po/id.po #usr/share/doc/gettext/examples/hello-objc-gnome/po/it.po #usr/share/doc/gettext/examples/hello-objc-gnome/po/ja.po +#usr/share/doc/gettext/examples/hello-objc-gnome/po/ky.po +#usr/share/doc/gettext/examples/hello-objc-gnome/po/lv.po +#usr/share/doc/gettext/examples/hello-objc-gnome/po/ms.po +#usr/share/doc/gettext/examples/hello-objc-gnome/po/mt.po #usr/share/doc/gettext/examples/hello-objc-gnome/po/nl.po #usr/share/doc/gettext/examples/hello-objc-gnome/po/pl.po +#usr/share/doc/gettext/examples/hello-objc-gnome/po/pt.po #usr/share/doc/gettext/examples/hello-objc-gnome/po/ro.po #usr/share/doc/gettext/examples/hello-objc-gnome/po/ru.po #usr/share/doc/gettext/examples/hello-objc-gnome/po/sk.po +#usr/share/doc/gettext/examples/hello-objc-gnome/po/sl.po #usr/share/doc/gettext/examples/hello-objc-gnome/po/sr.po #usr/share/doc/gettext/examples/hello-objc-gnome/po/sv.po #usr/share/doc/gettext/examples/hello-objc-gnome/po/tr.po #usr/share/doc/gettext/examples/hello-objc-gnome/po/uk.po #usr/share/doc/gettext/examples/hello-objc-gnome/po/vi.po #usr/share/doc/gettext/examples/hello-objc-gnome/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-objc-gnome/po/zh_HK.po #usr/share/doc/gettext/examples/hello-objc-gnome/po/zh_TW.po #usr/share/doc/gettext/examples/hello-objc-gnustep #usr/share/doc/gettext/examples/hello-objc-gnustep/AppController.h @@ -698,25 +1005,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-objc-gnustep/po/LINGUAS #usr/share/doc/gettext/examples/hello-objc-gnustep/po/LocaleAliases #usr/share/doc/gettext/examples/hello-objc-gnustep/po/af.po +#usr/share/doc/gettext/examples/hello-objc-gnustep/po/ast.po +#usr/share/doc/gettext/examples/hello-objc-gnustep/po/bg.po #usr/share/doc/gettext/examples/hello-objc-gnustep/po/ca.po #usr/share/doc/gettext/examples/hello-objc-gnustep/po/de.po #usr/share/doc/gettext/examples/hello-objc-gnustep/po/el.po +#usr/share/doc/gettext/examples/hello-objc-gnustep/po/eo.po #usr/share/doc/gettext/examples/hello-objc-gnustep/po/es.po +#usr/share/doc/gettext/examples/hello-objc-gnustep/po/fi.po #usr/share/doc/gettext/examples/hello-objc-gnustep/po/fr.po #usr/share/doc/gettext/examples/hello-objc-gnustep/po/ga.po +#usr/share/doc/gettext/examples/hello-objc-gnustep/po/hu.po +#usr/share/doc/gettext/examples/hello-objc-gnustep/po/id.po #usr/share/doc/gettext/examples/hello-objc-gnustep/po/it.po #usr/share/doc/gettext/examples/hello-objc-gnustep/po/ja.po +#usr/share/doc/gettext/examples/hello-objc-gnustep/po/ky.po +#usr/share/doc/gettext/examples/hello-objc-gnustep/po/lv.po +#usr/share/doc/gettext/examples/hello-objc-gnustep/po/ms.po +#usr/share/doc/gettext/examples/hello-objc-gnustep/po/mt.po #usr/share/doc/gettext/examples/hello-objc-gnustep/po/nl.po #usr/share/doc/gettext/examples/hello-objc-gnustep/po/pl.po +#usr/share/doc/gettext/examples/hello-objc-gnustep/po/pt.po #usr/share/doc/gettext/examples/hello-objc-gnustep/po/ro.po #usr/share/doc/gettext/examples/hello-objc-gnustep/po/ru.po #usr/share/doc/gettext/examples/hello-objc-gnustep/po/sk.po +#usr/share/doc/gettext/examples/hello-objc-gnustep/po/sl.po #usr/share/doc/gettext/examples/hello-objc-gnustep/po/sr.po #usr/share/doc/gettext/examples/hello-objc-gnustep/po/sv.po #usr/share/doc/gettext/examples/hello-objc-gnustep/po/tr.po #usr/share/doc/gettext/examples/hello-objc-gnustep/po/uk.po #usr/share/doc/gettext/examples/hello-objc-gnustep/po/vi.po #usr/share/doc/gettext/examples/hello-objc-gnustep/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-objc-gnustep/po/zh_HK.po #usr/share/doc/gettext/examples/hello-objc-gnustep/po/zh_TW.po #usr/share/doc/gettext/examples/hello-objc/INSTALL #usr/share/doc/gettext/examples/hello-objc/Makefile.am @@ -731,25 +1051,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-objc/po/Makevars #usr/share/doc/gettext/examples/hello-objc/po/POTFILES.in #usr/share/doc/gettext/examples/hello-objc/po/af.po +#usr/share/doc/gettext/examples/hello-objc/po/ast.po +#usr/share/doc/gettext/examples/hello-objc/po/bg.po #usr/share/doc/gettext/examples/hello-objc/po/ca.po #usr/share/doc/gettext/examples/hello-objc/po/de.po #usr/share/doc/gettext/examples/hello-objc/po/el.po +#usr/share/doc/gettext/examples/hello-objc/po/eo.po #usr/share/doc/gettext/examples/hello-objc/po/es.po +#usr/share/doc/gettext/examples/hello-objc/po/fi.po #usr/share/doc/gettext/examples/hello-objc/po/fr.po #usr/share/doc/gettext/examples/hello-objc/po/ga.po +#usr/share/doc/gettext/examples/hello-objc/po/hu.po +#usr/share/doc/gettext/examples/hello-objc/po/id.po #usr/share/doc/gettext/examples/hello-objc/po/it.po #usr/share/doc/gettext/examples/hello-objc/po/ja.po +#usr/share/doc/gettext/examples/hello-objc/po/ky.po +#usr/share/doc/gettext/examples/hello-objc/po/lv.po +#usr/share/doc/gettext/examples/hello-objc/po/ms.po +#usr/share/doc/gettext/examples/hello-objc/po/mt.po #usr/share/doc/gettext/examples/hello-objc/po/nl.po #usr/share/doc/gettext/examples/hello-objc/po/pl.po +#usr/share/doc/gettext/examples/hello-objc/po/pt.po #usr/share/doc/gettext/examples/hello-objc/po/ro.po #usr/share/doc/gettext/examples/hello-objc/po/ru.po #usr/share/doc/gettext/examples/hello-objc/po/sk.po +#usr/share/doc/gettext/examples/hello-objc/po/sl.po #usr/share/doc/gettext/examples/hello-objc/po/sr.po #usr/share/doc/gettext/examples/hello-objc/po/sv.po #usr/share/doc/gettext/examples/hello-objc/po/tr.po #usr/share/doc/gettext/examples/hello-objc/po/uk.po #usr/share/doc/gettext/examples/hello-objc/po/vi.po #usr/share/doc/gettext/examples/hello-objc/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-objc/po/zh_HK.po #usr/share/doc/gettext/examples/hello-objc/po/zh_TW.po #usr/share/doc/gettext/examples/hello-pascal #usr/share/doc/gettext/examples/hello-pascal/INSTALL @@ -765,25 +1098,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-pascal/po/LINGUAS #usr/share/doc/gettext/examples/hello-pascal/po/Makefile.am #usr/share/doc/gettext/examples/hello-pascal/po/af.po +#usr/share/doc/gettext/examples/hello-pascal/po/ast.po +#usr/share/doc/gettext/examples/hello-pascal/po/bg.po #usr/share/doc/gettext/examples/hello-pascal/po/ca.po #usr/share/doc/gettext/examples/hello-pascal/po/de.po #usr/share/doc/gettext/examples/hello-pascal/po/el.po +#usr/share/doc/gettext/examples/hello-pascal/po/eo.po #usr/share/doc/gettext/examples/hello-pascal/po/es.po +#usr/share/doc/gettext/examples/hello-pascal/po/fi.po #usr/share/doc/gettext/examples/hello-pascal/po/fr.po #usr/share/doc/gettext/examples/hello-pascal/po/ga.po +#usr/share/doc/gettext/examples/hello-pascal/po/hu.po +#usr/share/doc/gettext/examples/hello-pascal/po/id.po #usr/share/doc/gettext/examples/hello-pascal/po/it.po #usr/share/doc/gettext/examples/hello-pascal/po/ja.po +#usr/share/doc/gettext/examples/hello-pascal/po/ky.po +#usr/share/doc/gettext/examples/hello-pascal/po/lv.po +#usr/share/doc/gettext/examples/hello-pascal/po/ms.po +#usr/share/doc/gettext/examples/hello-pascal/po/mt.po #usr/share/doc/gettext/examples/hello-pascal/po/nl.po #usr/share/doc/gettext/examples/hello-pascal/po/pl.po +#usr/share/doc/gettext/examples/hello-pascal/po/pt.po #usr/share/doc/gettext/examples/hello-pascal/po/ro.po #usr/share/doc/gettext/examples/hello-pascal/po/ru.po #usr/share/doc/gettext/examples/hello-pascal/po/sk.po +#usr/share/doc/gettext/examples/hello-pascal/po/sl.po #usr/share/doc/gettext/examples/hello-pascal/po/sr.po #usr/share/doc/gettext/examples/hello-pascal/po/sv.po #usr/share/doc/gettext/examples/hello-pascal/po/tr.po #usr/share/doc/gettext/examples/hello-pascal/po/uk.po #usr/share/doc/gettext/examples/hello-pascal/po/vi.po #usr/share/doc/gettext/examples/hello-pascal/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-pascal/po/zh_HK.po #usr/share/doc/gettext/examples/hello-pascal/po/zh_TW.po #usr/share/doc/gettext/examples/hello-perl #usr/share/doc/gettext/examples/hello-perl/INSTALL @@ -799,25 +1145,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-perl/po/LINGUAS #usr/share/doc/gettext/examples/hello-perl/po/Makefile.am #usr/share/doc/gettext/examples/hello-perl/po/af.po +#usr/share/doc/gettext/examples/hello-perl/po/ast.po +#usr/share/doc/gettext/examples/hello-perl/po/bg.po #usr/share/doc/gettext/examples/hello-perl/po/ca.po #usr/share/doc/gettext/examples/hello-perl/po/de.po #usr/share/doc/gettext/examples/hello-perl/po/el.po +#usr/share/doc/gettext/examples/hello-perl/po/eo.po #usr/share/doc/gettext/examples/hello-perl/po/es.po +#usr/share/doc/gettext/examples/hello-perl/po/fi.po #usr/share/doc/gettext/examples/hello-perl/po/fr.po #usr/share/doc/gettext/examples/hello-perl/po/ga.po +#usr/share/doc/gettext/examples/hello-perl/po/hu.po +#usr/share/doc/gettext/examples/hello-perl/po/id.po #usr/share/doc/gettext/examples/hello-perl/po/it.po #usr/share/doc/gettext/examples/hello-perl/po/ja.po +#usr/share/doc/gettext/examples/hello-perl/po/ky.po +#usr/share/doc/gettext/examples/hello-perl/po/lv.po +#usr/share/doc/gettext/examples/hello-perl/po/ms.po +#usr/share/doc/gettext/examples/hello-perl/po/mt.po #usr/share/doc/gettext/examples/hello-perl/po/nl.po #usr/share/doc/gettext/examples/hello-perl/po/pl.po +#usr/share/doc/gettext/examples/hello-perl/po/pt.po #usr/share/doc/gettext/examples/hello-perl/po/ro.po #usr/share/doc/gettext/examples/hello-perl/po/ru.po #usr/share/doc/gettext/examples/hello-perl/po/sk.po +#usr/share/doc/gettext/examples/hello-perl/po/sl.po #usr/share/doc/gettext/examples/hello-perl/po/sr.po #usr/share/doc/gettext/examples/hello-perl/po/sv.po #usr/share/doc/gettext/examples/hello-perl/po/tr.po #usr/share/doc/gettext/examples/hello-perl/po/uk.po #usr/share/doc/gettext/examples/hello-perl/po/vi.po #usr/share/doc/gettext/examples/hello-perl/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-perl/po/zh_HK.po #usr/share/doc/gettext/examples/hello-perl/po/zh_TW.po #usr/share/doc/gettext/examples/hello-php #usr/share/doc/gettext/examples/hello-php/INSTALL @@ -833,25 +1192,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-php/po/LINGUAS #usr/share/doc/gettext/examples/hello-php/po/Makefile.am #usr/share/doc/gettext/examples/hello-php/po/af.po +#usr/share/doc/gettext/examples/hello-php/po/ast.po +#usr/share/doc/gettext/examples/hello-php/po/bg.po #usr/share/doc/gettext/examples/hello-php/po/ca.po #usr/share/doc/gettext/examples/hello-php/po/de.po #usr/share/doc/gettext/examples/hello-php/po/el.po +#usr/share/doc/gettext/examples/hello-php/po/eo.po #usr/share/doc/gettext/examples/hello-php/po/es.po +#usr/share/doc/gettext/examples/hello-php/po/fi.po #usr/share/doc/gettext/examples/hello-php/po/fr.po #usr/share/doc/gettext/examples/hello-php/po/ga.po +#usr/share/doc/gettext/examples/hello-php/po/hu.po +#usr/share/doc/gettext/examples/hello-php/po/id.po #usr/share/doc/gettext/examples/hello-php/po/it.po #usr/share/doc/gettext/examples/hello-php/po/ja.po +#usr/share/doc/gettext/examples/hello-php/po/ky.po +#usr/share/doc/gettext/examples/hello-php/po/lv.po +#usr/share/doc/gettext/examples/hello-php/po/ms.po +#usr/share/doc/gettext/examples/hello-php/po/mt.po #usr/share/doc/gettext/examples/hello-php/po/nl.po #usr/share/doc/gettext/examples/hello-php/po/pl.po +#usr/share/doc/gettext/examples/hello-php/po/pt.po #usr/share/doc/gettext/examples/hello-php/po/ro.po #usr/share/doc/gettext/examples/hello-php/po/ru.po #usr/share/doc/gettext/examples/hello-php/po/sk.po +#usr/share/doc/gettext/examples/hello-php/po/sl.po #usr/share/doc/gettext/examples/hello-php/po/sr.po #usr/share/doc/gettext/examples/hello-php/po/sv.po #usr/share/doc/gettext/examples/hello-php/po/tr.po #usr/share/doc/gettext/examples/hello-php/po/uk.po #usr/share/doc/gettext/examples/hello-php/po/vi.po #usr/share/doc/gettext/examples/hello-php/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-php/po/zh_HK.po #usr/share/doc/gettext/examples/hello-php/po/zh_TW.po #usr/share/doc/gettext/examples/hello-python #usr/share/doc/gettext/examples/hello-python/INSTALL @@ -866,25 +1238,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-python/po/LINGUAS #usr/share/doc/gettext/examples/hello-python/po/Makefile.am #usr/share/doc/gettext/examples/hello-python/po/af.po +#usr/share/doc/gettext/examples/hello-python/po/ast.po +#usr/share/doc/gettext/examples/hello-python/po/bg.po #usr/share/doc/gettext/examples/hello-python/po/ca.po #usr/share/doc/gettext/examples/hello-python/po/de.po #usr/share/doc/gettext/examples/hello-python/po/el.po +#usr/share/doc/gettext/examples/hello-python/po/eo.po #usr/share/doc/gettext/examples/hello-python/po/es.po +#usr/share/doc/gettext/examples/hello-python/po/fi.po #usr/share/doc/gettext/examples/hello-python/po/fr.po #usr/share/doc/gettext/examples/hello-python/po/ga.po +#usr/share/doc/gettext/examples/hello-python/po/hu.po +#usr/share/doc/gettext/examples/hello-python/po/id.po #usr/share/doc/gettext/examples/hello-python/po/it.po #usr/share/doc/gettext/examples/hello-python/po/ja.po +#usr/share/doc/gettext/examples/hello-python/po/ky.po +#usr/share/doc/gettext/examples/hello-python/po/lv.po +#usr/share/doc/gettext/examples/hello-python/po/ms.po +#usr/share/doc/gettext/examples/hello-python/po/mt.po #usr/share/doc/gettext/examples/hello-python/po/nl.po #usr/share/doc/gettext/examples/hello-python/po/pl.po +#usr/share/doc/gettext/examples/hello-python/po/pt.po #usr/share/doc/gettext/examples/hello-python/po/ro.po #usr/share/doc/gettext/examples/hello-python/po/ru.po #usr/share/doc/gettext/examples/hello-python/po/sk.po +#usr/share/doc/gettext/examples/hello-python/po/sl.po #usr/share/doc/gettext/examples/hello-python/po/sr.po #usr/share/doc/gettext/examples/hello-python/po/sv.po #usr/share/doc/gettext/examples/hello-python/po/tr.po #usr/share/doc/gettext/examples/hello-python/po/uk.po #usr/share/doc/gettext/examples/hello-python/po/vi.po #usr/share/doc/gettext/examples/hello-python/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-python/po/zh_HK.po #usr/share/doc/gettext/examples/hello-python/po/zh_TW.po #usr/share/doc/gettext/examples/hello-sh #usr/share/doc/gettext/examples/hello-sh/INSTALL @@ -899,25 +1284,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-sh/po/LINGUAS #usr/share/doc/gettext/examples/hello-sh/po/Makefile.am #usr/share/doc/gettext/examples/hello-sh/po/af.po +#usr/share/doc/gettext/examples/hello-sh/po/ast.po +#usr/share/doc/gettext/examples/hello-sh/po/bg.po #usr/share/doc/gettext/examples/hello-sh/po/ca.po #usr/share/doc/gettext/examples/hello-sh/po/de.po #usr/share/doc/gettext/examples/hello-sh/po/el.po +#usr/share/doc/gettext/examples/hello-sh/po/eo.po #usr/share/doc/gettext/examples/hello-sh/po/es.po +#usr/share/doc/gettext/examples/hello-sh/po/fi.po #usr/share/doc/gettext/examples/hello-sh/po/fr.po #usr/share/doc/gettext/examples/hello-sh/po/ga.po +#usr/share/doc/gettext/examples/hello-sh/po/hu.po +#usr/share/doc/gettext/examples/hello-sh/po/id.po #usr/share/doc/gettext/examples/hello-sh/po/it.po #usr/share/doc/gettext/examples/hello-sh/po/ja.po +#usr/share/doc/gettext/examples/hello-sh/po/ky.po +#usr/share/doc/gettext/examples/hello-sh/po/lv.po +#usr/share/doc/gettext/examples/hello-sh/po/ms.po +#usr/share/doc/gettext/examples/hello-sh/po/mt.po #usr/share/doc/gettext/examples/hello-sh/po/nl.po #usr/share/doc/gettext/examples/hello-sh/po/pl.po +#usr/share/doc/gettext/examples/hello-sh/po/pt.po #usr/share/doc/gettext/examples/hello-sh/po/ro.po #usr/share/doc/gettext/examples/hello-sh/po/ru.po #usr/share/doc/gettext/examples/hello-sh/po/sk.po +#usr/share/doc/gettext/examples/hello-sh/po/sl.po #usr/share/doc/gettext/examples/hello-sh/po/sr.po #usr/share/doc/gettext/examples/hello-sh/po/sv.po #usr/share/doc/gettext/examples/hello-sh/po/tr.po #usr/share/doc/gettext/examples/hello-sh/po/uk.po #usr/share/doc/gettext/examples/hello-sh/po/vi.po #usr/share/doc/gettext/examples/hello-sh/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-sh/po/zh_HK.po #usr/share/doc/gettext/examples/hello-sh/po/zh_TW.po #usr/share/doc/gettext/examples/hello-smalltalk #usr/share/doc/gettext/examples/hello-smalltalk/INSTALL @@ -932,25 +1330,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-smalltalk/po/LINGUAS #usr/share/doc/gettext/examples/hello-smalltalk/po/Makefile.am #usr/share/doc/gettext/examples/hello-smalltalk/po/af.po +#usr/share/doc/gettext/examples/hello-smalltalk/po/ast.po +#usr/share/doc/gettext/examples/hello-smalltalk/po/bg.po #usr/share/doc/gettext/examples/hello-smalltalk/po/ca.po #usr/share/doc/gettext/examples/hello-smalltalk/po/de.po #usr/share/doc/gettext/examples/hello-smalltalk/po/el.po +#usr/share/doc/gettext/examples/hello-smalltalk/po/eo.po #usr/share/doc/gettext/examples/hello-smalltalk/po/es.po +#usr/share/doc/gettext/examples/hello-smalltalk/po/fi.po #usr/share/doc/gettext/examples/hello-smalltalk/po/fr.po #usr/share/doc/gettext/examples/hello-smalltalk/po/ga.po +#usr/share/doc/gettext/examples/hello-smalltalk/po/hu.po +#usr/share/doc/gettext/examples/hello-smalltalk/po/id.po #usr/share/doc/gettext/examples/hello-smalltalk/po/it.po #usr/share/doc/gettext/examples/hello-smalltalk/po/ja.po +#usr/share/doc/gettext/examples/hello-smalltalk/po/ky.po +#usr/share/doc/gettext/examples/hello-smalltalk/po/lv.po +#usr/share/doc/gettext/examples/hello-smalltalk/po/ms.po +#usr/share/doc/gettext/examples/hello-smalltalk/po/mt.po #usr/share/doc/gettext/examples/hello-smalltalk/po/nl.po #usr/share/doc/gettext/examples/hello-smalltalk/po/pl.po +#usr/share/doc/gettext/examples/hello-smalltalk/po/pt.po #usr/share/doc/gettext/examples/hello-smalltalk/po/ro.po #usr/share/doc/gettext/examples/hello-smalltalk/po/ru.po #usr/share/doc/gettext/examples/hello-smalltalk/po/sk.po +#usr/share/doc/gettext/examples/hello-smalltalk/po/sl.po #usr/share/doc/gettext/examples/hello-smalltalk/po/sr.po #usr/share/doc/gettext/examples/hello-smalltalk/po/sv.po #usr/share/doc/gettext/examples/hello-smalltalk/po/tr.po #usr/share/doc/gettext/examples/hello-smalltalk/po/uk.po #usr/share/doc/gettext/examples/hello-smalltalk/po/vi.po #usr/share/doc/gettext/examples/hello-smalltalk/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-smalltalk/po/zh_HK.po #usr/share/doc/gettext/examples/hello-smalltalk/po/zh_TW.po #usr/share/doc/gettext/examples/hello-tcl #usr/share/doc/gettext/examples/hello-tcl-tk @@ -966,25 +1377,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-tcl-tk/po/LINGUAS #usr/share/doc/gettext/examples/hello-tcl-tk/po/Makefile.am #usr/share/doc/gettext/examples/hello-tcl-tk/po/af.po +#usr/share/doc/gettext/examples/hello-tcl-tk/po/ast.po +#usr/share/doc/gettext/examples/hello-tcl-tk/po/bg.po #usr/share/doc/gettext/examples/hello-tcl-tk/po/ca.po #usr/share/doc/gettext/examples/hello-tcl-tk/po/de.po #usr/share/doc/gettext/examples/hello-tcl-tk/po/el.po +#usr/share/doc/gettext/examples/hello-tcl-tk/po/eo.po #usr/share/doc/gettext/examples/hello-tcl-tk/po/es.po +#usr/share/doc/gettext/examples/hello-tcl-tk/po/fi.po #usr/share/doc/gettext/examples/hello-tcl-tk/po/fr.po #usr/share/doc/gettext/examples/hello-tcl-tk/po/ga.po +#usr/share/doc/gettext/examples/hello-tcl-tk/po/hu.po +#usr/share/doc/gettext/examples/hello-tcl-tk/po/id.po #usr/share/doc/gettext/examples/hello-tcl-tk/po/it.po #usr/share/doc/gettext/examples/hello-tcl-tk/po/ja.po +#usr/share/doc/gettext/examples/hello-tcl-tk/po/ky.po +#usr/share/doc/gettext/examples/hello-tcl-tk/po/lv.po +#usr/share/doc/gettext/examples/hello-tcl-tk/po/ms.po +#usr/share/doc/gettext/examples/hello-tcl-tk/po/mt.po #usr/share/doc/gettext/examples/hello-tcl-tk/po/nl.po #usr/share/doc/gettext/examples/hello-tcl-tk/po/pl.po +#usr/share/doc/gettext/examples/hello-tcl-tk/po/pt.po #usr/share/doc/gettext/examples/hello-tcl-tk/po/ro.po #usr/share/doc/gettext/examples/hello-tcl-tk/po/ru.po #usr/share/doc/gettext/examples/hello-tcl-tk/po/sk.po +#usr/share/doc/gettext/examples/hello-tcl-tk/po/sl.po #usr/share/doc/gettext/examples/hello-tcl-tk/po/sr.po #usr/share/doc/gettext/examples/hello-tcl-tk/po/sv.po #usr/share/doc/gettext/examples/hello-tcl-tk/po/tr.po #usr/share/doc/gettext/examples/hello-tcl-tk/po/uk.po #usr/share/doc/gettext/examples/hello-tcl-tk/po/vi.po #usr/share/doc/gettext/examples/hello-tcl-tk/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-tcl-tk/po/zh_HK.po #usr/share/doc/gettext/examples/hello-tcl-tk/po/zh_TW.po #usr/share/doc/gettext/examples/hello-tcl/INSTALL #usr/share/doc/gettext/examples/hello-tcl/Makefile.am @@ -998,25 +1422,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-tcl/po/LINGUAS #usr/share/doc/gettext/examples/hello-tcl/po/Makefile.am #usr/share/doc/gettext/examples/hello-tcl/po/af.po +#usr/share/doc/gettext/examples/hello-tcl/po/ast.po +#usr/share/doc/gettext/examples/hello-tcl/po/bg.po #usr/share/doc/gettext/examples/hello-tcl/po/ca.po #usr/share/doc/gettext/examples/hello-tcl/po/de.po #usr/share/doc/gettext/examples/hello-tcl/po/el.po +#usr/share/doc/gettext/examples/hello-tcl/po/eo.po #usr/share/doc/gettext/examples/hello-tcl/po/es.po +#usr/share/doc/gettext/examples/hello-tcl/po/fi.po #usr/share/doc/gettext/examples/hello-tcl/po/fr.po #usr/share/doc/gettext/examples/hello-tcl/po/ga.po +#usr/share/doc/gettext/examples/hello-tcl/po/hu.po +#usr/share/doc/gettext/examples/hello-tcl/po/id.po #usr/share/doc/gettext/examples/hello-tcl/po/it.po #usr/share/doc/gettext/examples/hello-tcl/po/ja.po +#usr/share/doc/gettext/examples/hello-tcl/po/ky.po +#usr/share/doc/gettext/examples/hello-tcl/po/lv.po +#usr/share/doc/gettext/examples/hello-tcl/po/ms.po +#usr/share/doc/gettext/examples/hello-tcl/po/mt.po #usr/share/doc/gettext/examples/hello-tcl/po/nl.po #usr/share/doc/gettext/examples/hello-tcl/po/pl.po +#usr/share/doc/gettext/examples/hello-tcl/po/pt.po #usr/share/doc/gettext/examples/hello-tcl/po/ro.po #usr/share/doc/gettext/examples/hello-tcl/po/ru.po #usr/share/doc/gettext/examples/hello-tcl/po/sk.po +#usr/share/doc/gettext/examples/hello-tcl/po/sl.po #usr/share/doc/gettext/examples/hello-tcl/po/sr.po #usr/share/doc/gettext/examples/hello-tcl/po/sv.po #usr/share/doc/gettext/examples/hello-tcl/po/tr.po #usr/share/doc/gettext/examples/hello-tcl/po/uk.po #usr/share/doc/gettext/examples/hello-tcl/po/vi.po #usr/share/doc/gettext/examples/hello-tcl/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-tcl/po/zh_HK.po #usr/share/doc/gettext/examples/hello-tcl/po/zh_TW.po #usr/share/doc/gettext/examples/hello-ycp #usr/share/doc/gettext/examples/hello-ycp/INSTALL @@ -1031,25 +1468,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-ycp/po/LINGUAS #usr/share/doc/gettext/examples/hello-ycp/po/Makefile.am #usr/share/doc/gettext/examples/hello-ycp/po/af.po +#usr/share/doc/gettext/examples/hello-ycp/po/ast.po +#usr/share/doc/gettext/examples/hello-ycp/po/bg.po #usr/share/doc/gettext/examples/hello-ycp/po/ca.po #usr/share/doc/gettext/examples/hello-ycp/po/de.po #usr/share/doc/gettext/examples/hello-ycp/po/el.po +#usr/share/doc/gettext/examples/hello-ycp/po/eo.po #usr/share/doc/gettext/examples/hello-ycp/po/es.po +#usr/share/doc/gettext/examples/hello-ycp/po/fi.po #usr/share/doc/gettext/examples/hello-ycp/po/fr.po #usr/share/doc/gettext/examples/hello-ycp/po/ga.po +#usr/share/doc/gettext/examples/hello-ycp/po/hu.po +#usr/share/doc/gettext/examples/hello-ycp/po/id.po #usr/share/doc/gettext/examples/hello-ycp/po/it.po #usr/share/doc/gettext/examples/hello-ycp/po/ja.po +#usr/share/doc/gettext/examples/hello-ycp/po/ky.po +#usr/share/doc/gettext/examples/hello-ycp/po/lv.po +#usr/share/doc/gettext/examples/hello-ycp/po/ms.po +#usr/share/doc/gettext/examples/hello-ycp/po/mt.po #usr/share/doc/gettext/examples/hello-ycp/po/nl.po #usr/share/doc/gettext/examples/hello-ycp/po/pl.po +#usr/share/doc/gettext/examples/hello-ycp/po/pt.po #usr/share/doc/gettext/examples/hello-ycp/po/ro.po #usr/share/doc/gettext/examples/hello-ycp/po/ru.po #usr/share/doc/gettext/examples/hello-ycp/po/sk.po +#usr/share/doc/gettext/examples/hello-ycp/po/sl.po #usr/share/doc/gettext/examples/hello-ycp/po/sr.po #usr/share/doc/gettext/examples/hello-ycp/po/sv.po #usr/share/doc/gettext/examples/hello-ycp/po/tr.po #usr/share/doc/gettext/examples/hello-ycp/po/uk.po #usr/share/doc/gettext/examples/hello-ycp/po/vi.po #usr/share/doc/gettext/examples/hello-ycp/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-ycp/po/zh_HK.po #usr/share/doc/gettext/examples/hello-ycp/po/zh_TW.po #usr/share/doc/gettext/examples/installpaths #usr/share/doc/gettext/gettext.1.html @@ -1069,6 +1519,9 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/gettext_20.html #usr/share/doc/gettext/gettext_21.html #usr/share/doc/gettext/gettext_22.html +#usr/share/doc/gettext/gettext_23.html +#usr/share/doc/gettext/gettext_24.html +#usr/share/doc/gettext/gettext_25.html #usr/share/doc/gettext/gettext_3.html #usr/share/doc/gettext/gettext_4.html #usr/share/doc/gettext/gettext_5.html @@ -1079,35 +1532,6 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/gettext_foot.html #usr/share/doc/gettext/gettext_toc.html #usr/share/doc/gettext/gettextize.1.html -#usr/share/doc/gettext/javadoc1 -#usr/share/doc/gettext/javadoc1/AllNames.html -#usr/share/doc/gettext/javadoc1/gnu.gettext.GettextResource.html -#usr/share/doc/gettext/javadoc1/images -#usr/share/doc/gettext/javadoc1/images/blue-ball-small.gif -#usr/share/doc/gettext/javadoc1/images/blue-ball.gif -#usr/share/doc/gettext/javadoc1/images/class-index.gif -#usr/share/doc/gettext/javadoc1/images/constructor-index.gif -#usr/share/doc/gettext/javadoc1/images/constructors.gif -#usr/share/doc/gettext/javadoc1/images/cyan-ball-small.gif -#usr/share/doc/gettext/javadoc1/images/cyan-ball.gif -#usr/share/doc/gettext/javadoc1/images/error-index.gif -#usr/share/doc/gettext/javadoc1/images/exception-index.gif -#usr/share/doc/gettext/javadoc1/images/green-ball-small.gif -#usr/share/doc/gettext/javadoc1/images/green-ball.gif -#usr/share/doc/gettext/javadoc1/images/interface-index.gif -#usr/share/doc/gettext/javadoc1/images/magenta-ball-small.gif -#usr/share/doc/gettext/javadoc1/images/magenta-ball.gif -#usr/share/doc/gettext/javadoc1/images/method-index.gif -#usr/share/doc/gettext/javadoc1/images/methods.gif -#usr/share/doc/gettext/javadoc1/images/package-index.gif -#usr/share/doc/gettext/javadoc1/images/red-ball-small.gif -#usr/share/doc/gettext/javadoc1/images/red-ball.gif -#usr/share/doc/gettext/javadoc1/images/variable-index.gif -#usr/share/doc/gettext/javadoc1/images/variables.gif -#usr/share/doc/gettext/javadoc1/images/yellow-ball-small.gif -#usr/share/doc/gettext/javadoc1/images/yellow-ball.gif -#usr/share/doc/gettext/javadoc1/packages.html -#usr/share/doc/gettext/javadoc1/tree.html #usr/share/doc/gettext/javadoc2 #usr/share/doc/gettext/javadoc2/allclasses-frame.html #usr/share/doc/gettext/javadoc2/deprecated-list.html @@ -1141,14 +1565,15 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/msguniq.1.html #usr/share/doc/gettext/ngettext.1.html #usr/share/doc/gettext/ngettext.3.html +#usr/share/doc/gettext/recode-sr-latin.1.html #usr/share/doc/gettext/textdomain.3.html #usr/share/doc/gettext/tutorial.html #usr/share/doc/gettext/xgettext.1.html #usr/share/doc/libasprintf -#usr/share/doc/libasprintf/autosprintf.html +#usr/share/doc/libasprintf/autosprintf_all.html #usr/share/gettext #usr/share/gettext/ABOUT-NLS -#usr/share/gettext/archive.tar.gz +#usr/share/gettext/archive.dir.tar.gz #usr/share/gettext/config.rpath #usr/share/gettext/gettext.h #usr/share/gettext/intl @@ -1166,15 +1591,19 @@ usr/lib/preloadable_libintl.so #usr/share/gettext/intl/dngettext.c #usr/share/gettext/intl/eval-plural.h #usr/share/gettext/intl/explodename.c +#usr/share/gettext/intl/export.h #usr/share/gettext/intl/finddomain.c #usr/share/gettext/intl/gettext.c #usr/share/gettext/intl/gettextP.h #usr/share/gettext/intl/gmo.h +#usr/share/gettext/intl/hash-string.c #usr/share/gettext/intl/hash-string.h #usr/share/gettext/intl/intl-compat.c +#usr/share/gettext/intl/intl-exports.c #usr/share/gettext/intl/l10nflist.c #usr/share/gettext/intl/langprefs.c #usr/share/gettext/intl/libgnuintl.h.in +#usr/share/gettext/intl/libintl.rc #usr/share/gettext/intl/loadinfo.h #usr/share/gettext/intl/loadmsgcat.c #usr/share/gettext/intl/localcharset.c @@ -1182,6 +1611,8 @@ usr/lib/preloadable_libintl.so #usr/share/gettext/intl/locale.alias #usr/share/gettext/intl/localealias.c #usr/share/gettext/intl/localename.c +#usr/share/gettext/intl/lock.c +#usr/share/gettext/intl/lock.h #usr/share/gettext/intl/log.c #usr/share/gettext/intl/ngettext.c #usr/share/gettext/intl/os2compat.c @@ -1200,13 +1631,18 @@ usr/lib/preloadable_libintl.so #usr/share/gettext/intl/ref-del.sin #usr/share/gettext/intl/relocatable.c #usr/share/gettext/intl/relocatable.h +#usr/share/gettext/intl/setlocale.c #usr/share/gettext/intl/textdomain.c +#usr/share/gettext/intl/threadlib.c +#usr/share/gettext/intl/tsearch.c +#usr/share/gettext/intl/tsearch.h #usr/share/gettext/intl/vasnprintf.c #usr/share/gettext/intl/vasnprintf.h #usr/share/gettext/intl/vasnwprintf.h +#usr/share/gettext/intl/version.c #usr/share/gettext/intl/wprintf-parse.h #usr/share/gettext/intl/xsize.h -#usr/share/gettext/mkinstalldirs +#usr/share/gettext/javaversion.class #usr/share/gettext/msgunfmt.tcl #usr/share/gettext/po #usr/share/gettext/po/Makefile.in.in @@ -1236,6 +1672,15 @@ usr/lib/preloadable_libintl.so #usr/share/gettext/projects/TP/trigger #usr/share/gettext/projects/index #usr/share/gettext/projects/team-address +#usr/share/gettext/styles +#usr/share/gettext/styles/po-default.css +#usr/share/gettext/styles/po-emacs-x.css +#usr/share/gettext/styles/po-emacs-xterm.css +#usr/share/gettext/styles/po-emacs-xterm16.css +#usr/share/gettext/styles/po-emacs-xterm256.css +#usr/share/gettext/styles/po-vim.css +#usr/share/info/autosprintf.info +#usr/share/info/gettext.info #usr/share/man/man1/autopoint.1 #usr/share/man/man1/envsubst.1 #usr/share/man/man1/gettext.1 @@ -1255,6 +1700,7 @@ usr/lib/preloadable_libintl.so #usr/share/man/man1/msgunfmt.1 #usr/share/man/man1/msguniq.1 #usr/share/man/man1/ngettext.1 +#usr/share/man/man1/recode-sr-latin.1 #usr/share/man/man1/xgettext.1 #usr/share/man/man3/bind_textdomain_codeset.3 #usr/share/man/man3/bindtextdomain.3 diff --git a/config/rootfiles/common/glib b/config/rootfiles/common/glib new file mode 100644 index 0000000..825b932 --- /dev/null +++ b/config/rootfiles/common/glib @@ -0,0 +1,920 @@ +#etc/bash_completion.d +#etc/bash_completion.d/gdbus-bash-completion.sh +#etc/bash_completion.d/gresource-bash-completion.sh +#etc/bash_completion.d/gsettings-bash-completion.sh +#usr/bin/gdbus +#usr/bin/gdbus-codegen +#usr/bin/gio-querymodules +#usr/bin/glib-compile-resources +#usr/bin/glib-compile-schemas +#usr/bin/glib-genmarshal +#usr/bin/glib-gettextize +#usr/bin/glib-mkenums +#usr/bin/gobject-query +#usr/bin/gresource +#usr/bin/gsettings +#usr/bin/gtester +#usr/bin/gtester-report +#usr/include/gio-unix-2.0 +#usr/include/gio-unix-2.0/gio +#usr/include/gio-unix-2.0/gio/gdesktopappinfo.h +#usr/include/gio-unix-2.0/gio/gfiledescriptorbased.h +#usr/include/gio-unix-2.0/gio/gunixconnection.h +#usr/include/gio-unix-2.0/gio/gunixcredentialsmessage.h +#usr/include/gio-unix-2.0/gio/gunixfdlist.h +#usr/include/gio-unix-2.0/gio/gunixfdmessage.h +#usr/include/gio-unix-2.0/gio/gunixinputstream.h +#usr/include/gio-unix-2.0/gio/gunixmounts.h +#usr/include/gio-unix-2.0/gio/gunixoutputstream.h +#usr/include/gio-unix-2.0/gio/gunixsocketaddress.h +#usr/include/glib-2.0 +#usr/include/glib-2.0/gio +#usr/include/glib-2.0/gio/gaction.h +#usr/include/glib-2.0/gio/gactiongroup.h +#usr/include/glib-2.0/gio/gactiongroupexporter.h +#usr/include/glib-2.0/gio/gactionmap.h +#usr/include/glib-2.0/gio/gappinfo.h +#usr/include/glib-2.0/gio/gapplication.h +#usr/include/glib-2.0/gio/gapplicationcommandline.h +#usr/include/glib-2.0/gio/gasyncinitable.h +#usr/include/glib-2.0/gio/gasyncresult.h +#usr/include/glib-2.0/gio/gbufferedinputstream.h +#usr/include/glib-2.0/gio/gbufferedoutputstream.h +#usr/include/glib-2.0/gio/gcancellable.h +#usr/include/glib-2.0/gio/gcharsetconverter.h +#usr/include/glib-2.0/gio/gcontenttype.h +#usr/include/glib-2.0/gio/gconverter.h +#usr/include/glib-2.0/gio/gconverterinputstream.h +#usr/include/glib-2.0/gio/gconverteroutputstream.h +#usr/include/glib-2.0/gio/gcredentials.h +#usr/include/glib-2.0/gio/gdatainputstream.h +#usr/include/glib-2.0/gio/gdataoutputstream.h +#usr/include/glib-2.0/gio/gdbusactiongroup.h +#usr/include/glib-2.0/gio/gdbusaddress.h +#usr/include/glib-2.0/gio/gdbusauthobserver.h +#usr/include/glib-2.0/gio/gdbusconnection.h +#usr/include/glib-2.0/gio/gdbuserror.h +#usr/include/glib-2.0/gio/gdbusinterface.h +#usr/include/glib-2.0/gio/gdbusinterfaceskeleton.h +#usr/include/glib-2.0/gio/gdbusintrospection.h +#usr/include/glib-2.0/gio/gdbusmenumodel.h +#usr/include/glib-2.0/gio/gdbusmessage.h +#usr/include/glib-2.0/gio/gdbusmethodinvocation.h +#usr/include/glib-2.0/gio/gdbusnameowning.h +#usr/include/glib-2.0/gio/gdbusnamewatching.h +#usr/include/glib-2.0/gio/gdbusobject.h +#usr/include/glib-2.0/gio/gdbusobjectmanager.h +#usr/include/glib-2.0/gio/gdbusobjectmanagerclient.h +#usr/include/glib-2.0/gio/gdbusobjectmanagerserver.h +#usr/include/glib-2.0/gio/gdbusobjectproxy.h +#usr/include/glib-2.0/gio/gdbusobjectskeleton.h +#usr/include/glib-2.0/gio/gdbusproxy.h +#usr/include/glib-2.0/gio/gdbusserver.h +#usr/include/glib-2.0/gio/gdbusutils.h +#usr/include/glib-2.0/gio/gdrive.h +#usr/include/glib-2.0/gio/gemblem.h +#usr/include/glib-2.0/gio/gemblemedicon.h +#usr/include/glib-2.0/gio/gfile.h +#usr/include/glib-2.0/gio/gfileattribute.h +#usr/include/glib-2.0/gio/gfileenumerator.h +#usr/include/glib-2.0/gio/gfileicon.h +#usr/include/glib-2.0/gio/gfileinfo.h +#usr/include/glib-2.0/gio/gfileinputstream.h +#usr/include/glib-2.0/gio/gfileiostream.h +#usr/include/glib-2.0/gio/gfilemonitor.h +#usr/include/glib-2.0/gio/gfilenamecompleter.h +#usr/include/glib-2.0/gio/gfileoutputstream.h +#usr/include/glib-2.0/gio/gfilterinputstream.h +#usr/include/glib-2.0/gio/gfilteroutputstream.h +#usr/include/glib-2.0/gio/gicon.h +#usr/include/glib-2.0/gio/ginetaddress.h +#usr/include/glib-2.0/gio/ginetaddressmask.h +#usr/include/glib-2.0/gio/ginetsocketaddress.h +#usr/include/glib-2.0/gio/ginitable.h +#usr/include/glib-2.0/gio/ginputstream.h +#usr/include/glib-2.0/gio/gio.h +#usr/include/glib-2.0/gio/gioenums.h +#usr/include/glib-2.0/gio/gioenumtypes.h +#usr/include/glib-2.0/gio/gioerror.h +#usr/include/glib-2.0/gio/giomodule.h +#usr/include/glib-2.0/gio/gioscheduler.h +#usr/include/glib-2.0/gio/giostream.h +#usr/include/glib-2.0/gio/giotypes.h +#usr/include/glib-2.0/gio/gloadableicon.h +#usr/include/glib-2.0/gio/gmemoryinputstream.h +#usr/include/glib-2.0/gio/gmemoryoutputstream.h +#usr/include/glib-2.0/gio/gmenu.h +#usr/include/glib-2.0/gio/gmenuexporter.h +#usr/include/glib-2.0/gio/gmenumodel.h +#usr/include/glib-2.0/gio/gmount.h +#usr/include/glib-2.0/gio/gmountoperation.h +#usr/include/glib-2.0/gio/gnativevolumemonitor.h +#usr/include/glib-2.0/gio/gnetworkaddress.h +#usr/include/glib-2.0/gio/gnetworkmonitor.h +#usr/include/glib-2.0/gio/gnetworkservice.h +#usr/include/glib-2.0/gio/goutputstream.h +#usr/include/glib-2.0/gio/gpermission.h +#usr/include/glib-2.0/gio/gpollableinputstream.h +#usr/include/glib-2.0/gio/gpollableoutputstream.h +#usr/include/glib-2.0/gio/gproxy.h +#usr/include/glib-2.0/gio/gproxyaddress.h +#usr/include/glib-2.0/gio/gproxyaddressenumerator.h +#usr/include/glib-2.0/gio/gproxyresolver.h +#usr/include/glib-2.0/gio/gremoteactiongroup.h +#usr/include/glib-2.0/gio/gresolver.h +#usr/include/glib-2.0/gio/gresource.h +#usr/include/glib-2.0/gio/gseekable.h +#usr/include/glib-2.0/gio/gsettings.h +#usr/include/glib-2.0/gio/gsettingsbackend.h +#usr/include/glib-2.0/gio/gsettingsschema.h +#usr/include/glib-2.0/gio/gsimpleaction.h +#usr/include/glib-2.0/gio/gsimpleactiongroup.h +#usr/include/glib-2.0/gio/gsimpleasyncresult.h +#usr/include/glib-2.0/gio/gsimplepermission.h +#usr/include/glib-2.0/gio/gsocket.h +#usr/include/glib-2.0/gio/gsocketaddress.h +#usr/include/glib-2.0/gio/gsocketaddressenumerator.h +#usr/include/glib-2.0/gio/gsocketclient.h +#usr/include/glib-2.0/gio/gsocketconnectable.h +#usr/include/glib-2.0/gio/gsocketconnection.h +#usr/include/glib-2.0/gio/gsocketcontrolmessage.h +#usr/include/glib-2.0/gio/gsocketlistener.h +#usr/include/glib-2.0/gio/gsocketservice.h +#usr/include/glib-2.0/gio/gsrvtarget.h +#usr/include/glib-2.0/gio/gtcpconnection.h +#usr/include/glib-2.0/gio/gtcpwrapperconnection.h +#usr/include/glib-2.0/gio/gthemedicon.h +#usr/include/glib-2.0/gio/gthreadedsocketservice.h +#usr/include/glib-2.0/gio/gtlsbackend.h +#usr/include/glib-2.0/gio/gtlscertificate.h +#usr/include/glib-2.0/gio/gtlsclientconnection.h +#usr/include/glib-2.0/gio/gtlsconnection.h +#usr/include/glib-2.0/gio/gtlsdatabase.h +#usr/include/glib-2.0/gio/gtlsfiledatabase.h +#usr/include/glib-2.0/gio/gtlsinteraction.h +#usr/include/glib-2.0/gio/gtlspassword.h +#usr/include/glib-2.0/gio/gtlsserverconnection.h +#usr/include/glib-2.0/gio/gvfs.h +#usr/include/glib-2.0/gio/gvolume.h +#usr/include/glib-2.0/gio/gvolumemonitor.h +#usr/include/glib-2.0/gio/gzlibcompressor.h +#usr/include/glib-2.0/gio/gzlibdecompressor.h +#usr/include/glib-2.0/glib +#usr/include/glib-2.0/glib-object.h +#usr/include/glib-2.0/glib-unix.h +#usr/include/glib-2.0/glib.h +#usr/include/glib-2.0/glib/deprecated +#usr/include/glib-2.0/glib/deprecated/gallocator.h +#usr/include/glib-2.0/glib/deprecated/gcache.h +#usr/include/glib-2.0/glib/deprecated/gcompletion.h +#usr/include/glib-2.0/glib/deprecated/gmain.h +#usr/include/glib-2.0/glib/deprecated/grel.h +#usr/include/glib-2.0/glib/deprecated/gthread.h +#usr/include/glib-2.0/glib/galloca.h +#usr/include/glib-2.0/glib/garray.h +#usr/include/glib-2.0/glib/gasyncqueue.h +#usr/include/glib-2.0/glib/gatomic.h +#usr/include/glib-2.0/glib/gbacktrace.h +#usr/include/glib-2.0/glib/gbase64.h +#usr/include/glib-2.0/glib/gbitlock.h +#usr/include/glib-2.0/glib/gbookmarkfile.h +#usr/include/glib-2.0/glib/gbytes.h +#usr/include/glib-2.0/glib/gcharset.h +#usr/include/glib-2.0/glib/gchecksum.h +#usr/include/glib-2.0/glib/gconvert.h +#usr/include/glib-2.0/glib/gdataset.h +#usr/include/glib-2.0/glib/gdate.h +#usr/include/glib-2.0/glib/gdatetime.h +#usr/include/glib-2.0/glib/gdir.h +#usr/include/glib-2.0/glib/genviron.h +#usr/include/glib-2.0/glib/gerror.h +#usr/include/glib-2.0/glib/gfileutils.h +#usr/include/glib-2.0/glib/ggettext.h +#usr/include/glib-2.0/glib/ghash.h +#usr/include/glib-2.0/glib/ghmac.h +#usr/include/glib-2.0/glib/ghook.h +#usr/include/glib-2.0/glib/ghostutils.h +#usr/include/glib-2.0/glib/gi18n-lib.h +#usr/include/glib-2.0/glib/gi18n.h +#usr/include/glib-2.0/glib/giochannel.h +#usr/include/glib-2.0/glib/gkeyfile.h +#usr/include/glib-2.0/glib/glist.h +#usr/include/glib-2.0/glib/gmacros.h +#usr/include/glib-2.0/glib/gmain.h +#usr/include/glib-2.0/glib/gmappedfile.h +#usr/include/glib-2.0/glib/gmarkup.h +#usr/include/glib-2.0/glib/gmem.h +#usr/include/glib-2.0/glib/gmessages.h +#usr/include/glib-2.0/glib/gnode.h +#usr/include/glib-2.0/glib/goption.h +#usr/include/glib-2.0/glib/gpattern.h +#usr/include/glib-2.0/glib/gpoll.h +#usr/include/glib-2.0/glib/gprimes.h +#usr/include/glib-2.0/glib/gprintf.h +#usr/include/glib-2.0/glib/gqsort.h +#usr/include/glib-2.0/glib/gquark.h +#usr/include/glib-2.0/glib/gqueue.h +#usr/include/glib-2.0/glib/grand.h +#usr/include/glib-2.0/glib/gregex.h +#usr/include/glib-2.0/glib/gscanner.h +#usr/include/glib-2.0/glib/gsequence.h +#usr/include/glib-2.0/glib/gshell.h +#usr/include/glib-2.0/glib/gslice.h +#usr/include/glib-2.0/glib/gslist.h +#usr/include/glib-2.0/glib/gspawn.h +#usr/include/glib-2.0/glib/gstdio.h +#usr/include/glib-2.0/glib/gstrfuncs.h +#usr/include/glib-2.0/glib/gstring.h +#usr/include/glib-2.0/glib/gstringchunk.h +#usr/include/glib-2.0/glib/gtestutils.h +#usr/include/glib-2.0/glib/gthread.h +#usr/include/glib-2.0/glib/gthreadpool.h +#usr/include/glib-2.0/glib/gtimer.h +#usr/include/glib-2.0/glib/gtimezone.h +#usr/include/glib-2.0/glib/gtrashstack.h +#usr/include/glib-2.0/glib/gtree.h +#usr/include/glib-2.0/glib/gtypes.h +#usr/include/glib-2.0/glib/gunicode.h +#usr/include/glib-2.0/glib/gurifuncs.h +#usr/include/glib-2.0/glib/gutils.h +#usr/include/glib-2.0/glib/gvariant.h +#usr/include/glib-2.0/glib/gvarianttype.h +#usr/include/glib-2.0/glib/gversion.h +#usr/include/glib-2.0/glib/gversionmacros.h +#usr/include/glib-2.0/glib/gwin32.h +#usr/include/glib-2.0/gmodule.h +#usr/include/glib-2.0/gobject +#usr/include/glib-2.0/gobject/gbinding.h +#usr/include/glib-2.0/gobject/gboxed.h +#usr/include/glib-2.0/gobject/gclosure.h +#usr/include/glib-2.0/gobject/genums.h +#usr/include/glib-2.0/gobject/glib-types.h +#usr/include/glib-2.0/gobject/gmarshal.h +#usr/include/glib-2.0/gobject/gobject.h +#usr/include/glib-2.0/gobject/gobjectnotifyqueue.c +#usr/include/glib-2.0/gobject/gparam.h +#usr/include/glib-2.0/gobject/gparamspecs.h +#usr/include/glib-2.0/gobject/gsignal.h +#usr/include/glib-2.0/gobject/gsourceclosure.h +#usr/include/glib-2.0/gobject/gtype.h +#usr/include/glib-2.0/gobject/gtypemodule.h +#usr/include/glib-2.0/gobject/gtypeplugin.h +#usr/include/glib-2.0/gobject/gvalue.h +#usr/include/glib-2.0/gobject/gvaluearray.h +#usr/include/glib-2.0/gobject/gvaluecollector.h +#usr/include/glib-2.0/gobject/gvaluetypes.h +#usr/lib/gdbus-2.0 +#usr/lib/gdbus-2.0/codegen +#usr/lib/gdbus-2.0/codegen/__init__.py +#usr/lib/gdbus-2.0/codegen/__init__.pyc +#usr/lib/gdbus-2.0/codegen/__init__.pyo +#usr/lib/gdbus-2.0/codegen/codegen.py +#usr/lib/gdbus-2.0/codegen/codegen.pyc +#usr/lib/gdbus-2.0/codegen/codegen.pyo +#usr/lib/gdbus-2.0/codegen/codegen_docbook.py +#usr/lib/gdbus-2.0/codegen/codegen_docbook.pyc +#usr/lib/gdbus-2.0/codegen/codegen_docbook.pyo +#usr/lib/gdbus-2.0/codegen/codegen_main.py +#usr/lib/gdbus-2.0/codegen/codegen_main.pyc +#usr/lib/gdbus-2.0/codegen/codegen_main.pyo +#usr/lib/gdbus-2.0/codegen/config.py +#usr/lib/gdbus-2.0/codegen/config.pyc +#usr/lib/gdbus-2.0/codegen/config.pyo +#usr/lib/gdbus-2.0/codegen/dbustypes.py +#usr/lib/gdbus-2.0/codegen/dbustypes.pyc +#usr/lib/gdbus-2.0/codegen/dbustypes.pyo +#usr/lib/gdbus-2.0/codegen/parser.py +#usr/lib/gdbus-2.0/codegen/parser.pyc +#usr/lib/gdbus-2.0/codegen/parser.pyo +#usr/lib/gdbus-2.0/codegen/utils.py +#usr/lib/gdbus-2.0/codegen/utils.pyc +#usr/lib/gdbus-2.0/codegen/utils.pyo +#usr/lib/gio +#usr/lib/gio/modules +#usr/lib/glib-2.0 +#usr/lib/glib-2.0/include +#usr/lib/glib-2.0/include/glibconfig.h +#usr/lib/libgio-2.0.la +#usr/lib/libgio-2.0.so +usr/lib/libgio-2.0.so.0 +usr/lib/libgio-2.0.so.0.3200.3 +#usr/lib/libglib-2.0.la +#usr/lib/libglib-2.0.so +usr/lib/libglib-2.0.so.0 +usr/lib/libglib-2.0.so.0.3200.3 +#usr/lib/libgmodule-2.0.la +#usr/lib/libgmodule-2.0.so +usr/lib/libgmodule-2.0.so.0 +usr/lib/libgmodule-2.0.so.0.3200.3 +#usr/lib/libgobject-2.0.la +#usr/lib/libgobject-2.0.so +usr/lib/libgobject-2.0.so.0 +usr/lib/libgobject-2.0.so.0.3200.3 +#usr/lib/libgthread-2.0.la +#usr/lib/libgthread-2.0.so +usr/lib/libgthread-2.0.so.0 +usr/lib/libgthread-2.0.so.0.3200.3 +#usr/lib/pkgconfig/gio-2.0.pc +#usr/lib/pkgconfig/gio-unix-2.0.pc +#usr/lib/pkgconfig/glib-2.0.pc +#usr/lib/pkgconfig/gmodule-2.0.pc +#usr/lib/pkgconfig/gmodule-export-2.0.pc +#usr/lib/pkgconfig/gmodule-no-export-2.0.pc +#usr/lib/pkgconfig/gobject-2.0.pc +#usr/lib/pkgconfig/gthread-2.0.pc +#usr/share/aclocal/glib-2.0.m4 +#usr/share/aclocal/glib-gettext.m4 +#usr/share/aclocal/gsettings.m4 +#usr/share/gdb +#usr/share/gdb/auto-load +#usr/share/gdb/auto-load/libglib-2.0.so.0.3200.3-gdb.py +#usr/share/gdb/auto-load/libgobject-2.0.so.0.3200.3-gdb.py +#usr/share/glib-2.0 +#usr/share/glib-2.0/gdb +#usr/share/glib-2.0/gdb/glib.py +#usr/share/glib-2.0/gdb/gobject.py +#usr/share/glib-2.0/gettext +#usr/share/glib-2.0/gettext/mkinstalldirs +#usr/share/glib-2.0/gettext/po +#usr/share/glib-2.0/gettext/po/Makefile.in.in +#usr/share/glib-2.0/schemas +#usr/share/glib-2.0/schemas/gschema.dtd +#usr/share/gtk-doc/html/gio +#usr/share/gtk-doc/html/gio/ExampleAnimal.html +#usr/share/gtk-doc/html/gio/ExampleCat.html +#usr/share/gtk-doc/html/gio/ExampleObject.html +#usr/share/gtk-doc/html/gio/ExampleObjectManagerClient.html +#usr/share/gtk-doc/html/gio/GAction.html +#usr/share/gtk-doc/html/gio/GActionGroup.html +#usr/share/gtk-doc/html/gio/GActionMap.html +#usr/share/gtk-doc/html/gio/GAppInfo.html +#usr/share/gtk-doc/html/gio/GApplication.html +#usr/share/gtk-doc/html/gio/GApplicationCommandLine.html +#usr/share/gtk-doc/html/gio/GAsyncInitable.html +#usr/share/gtk-doc/html/gio/GAsyncResult.html +#usr/share/gtk-doc/html/gio/GBufferedInputStream.html +#usr/share/gtk-doc/html/gio/GBufferedOutputStream.html +#usr/share/gtk-doc/html/gio/GCancellable.html +#usr/share/gtk-doc/html/gio/GCharsetConverter.html +#usr/share/gtk-doc/html/gio/GConverter.html +#usr/share/gtk-doc/html/gio/GCredentials.html +#usr/share/gtk-doc/html/gio/GDBusActionGroup.html +#usr/share/gtk-doc/html/gio/GDBusAuthObserver.html +#usr/share/gtk-doc/html/gio/GDBusConnection.html +#usr/share/gtk-doc/html/gio/GDBusInterface.html +#usr/share/gtk-doc/html/gio/GDBusInterfaceSkeleton.html +#usr/share/gtk-doc/html/gio/GDBusMenuModel.html +#usr/share/gtk-doc/html/gio/GDBusMessage.html +#usr/share/gtk-doc/html/gio/GDBusMethodInvocation.html +#usr/share/gtk-doc/html/gio/GDBusObject.html +#usr/share/gtk-doc/html/gio/GDBusObjectManager.html +#usr/share/gtk-doc/html/gio/GDBusObjectManagerClient.html +#usr/share/gtk-doc/html/gio/GDBusObjectManagerServer.html +#usr/share/gtk-doc/html/gio/GDBusObjectProxy.html +#usr/share/gtk-doc/html/gio/GDBusObjectSkeleton.html +#usr/share/gtk-doc/html/gio/GDBusProxy.html +#usr/share/gtk-doc/html/gio/GDBusServer.html +#usr/share/gtk-doc/html/gio/GDataInputStream.html +#usr/share/gtk-doc/html/gio/GDataOutputStream.html +#usr/share/gtk-doc/html/gio/GDrive.html +#usr/share/gtk-doc/html/gio/GEmblem.html +#usr/share/gtk-doc/html/gio/GEmblemedIcon.html +#usr/share/gtk-doc/html/gio/GFile.html +#usr/share/gtk-doc/html/gio/GFileDescriptorBased.html +#usr/share/gtk-doc/html/gio/GFileEnumerator.html +#usr/share/gtk-doc/html/gio/GFileIOStream.html +#usr/share/gtk-doc/html/gio/GFileIcon.html +#usr/share/gtk-doc/html/gio/GFileInfo.html +#usr/share/gtk-doc/html/gio/GFileInputStream.html +#usr/share/gtk-doc/html/gio/GFileMonitor.html +#usr/share/gtk-doc/html/gio/GFileOutputStream.html +#usr/share/gtk-doc/html/gio/GFilenameCompleter.html +#usr/share/gtk-doc/html/gio/GFilterInputStream.html +#usr/share/gtk-doc/html/gio/GFilterOutputStream.html +#usr/share/gtk-doc/html/gio/GIOModule.html +#usr/share/gtk-doc/html/gio/GIOStream.html +#usr/share/gtk-doc/html/gio/GIcon.html +#usr/share/gtk-doc/html/gio/GInetAddress.html +#usr/share/gtk-doc/html/gio/GInetSocketAddress.html +#usr/share/gtk-doc/html/gio/GInitable.html +#usr/share/gtk-doc/html/gio/GInputStream.html +#usr/share/gtk-doc/html/gio/GLoadableIcon.html +#usr/share/gtk-doc/html/gio/GMemoryInputStream.html +#usr/share/gtk-doc/html/gio/GMemoryOutputStream.html +#usr/share/gtk-doc/html/gio/GMenu.html +#usr/share/gtk-doc/html/gio/GMenuModel.html +#usr/share/gtk-doc/html/gio/GMount.html +#usr/share/gtk-doc/html/gio/GMountOperation.html +#usr/share/gtk-doc/html/gio/GNetworkAddress.html +#usr/share/gtk-doc/html/gio/GNetworkMonitor.html +#usr/share/gtk-doc/html/gio/GNetworkService.html +#usr/share/gtk-doc/html/gio/GOutputStream.html +#usr/share/gtk-doc/html/gio/GPermission.html +#usr/share/gtk-doc/html/gio/GPollableInputStream.html +#usr/share/gtk-doc/html/gio/GPollableOutputStream.html +#usr/share/gtk-doc/html/gio/GProxy.html +#usr/share/gtk-doc/html/gio/GProxyAddress.html +#usr/share/gtk-doc/html/gio/GProxyResolver.html +#usr/share/gtk-doc/html/gio/GRemoteActionGroup.html +#usr/share/gtk-doc/html/gio/GResolver.html +#usr/share/gtk-doc/html/gio/GSeekable.html +#usr/share/gtk-doc/html/gio/GSettings.html +#usr/share/gtk-doc/html/gio/GSettingsBackend.html +#usr/share/gtk-doc/html/gio/GSimpleAction.html +#usr/share/gtk-doc/html/gio/GSimpleActionGroup.html +#usr/share/gtk-doc/html/gio/GSimpleAsyncResult.html +#usr/share/gtk-doc/html/gio/GSimplePermission.html +#usr/share/gtk-doc/html/gio/GSocket.html +#usr/share/gtk-doc/html/gio/GSocketAddress.html +#usr/share/gtk-doc/html/gio/GSocketClient.html +#usr/share/gtk-doc/html/gio/GSocketConnectable.html +#usr/share/gtk-doc/html/gio/GSocketConnection.html +#usr/share/gtk-doc/html/gio/GSocketControlMessage.html +#usr/share/gtk-doc/html/gio/GSocketListener.html +#usr/share/gtk-doc/html/gio/GSocketService.html +#usr/share/gtk-doc/html/gio/GSrvTarget.html +#usr/share/gtk-doc/html/gio/GTcpConnection.html +#usr/share/gtk-doc/html/gio/GTcpWrapperConnection.html +#usr/share/gtk-doc/html/gio/GThemedIcon.html +#usr/share/gtk-doc/html/gio/GThreadedSocketService.html +#usr/share/gtk-doc/html/gio/GTlsBackend.html +#usr/share/gtk-doc/html/gio/GTlsCertificate.html +#usr/share/gtk-doc/html/gio/GTlsClientConnection.html +#usr/share/gtk-doc/html/gio/GTlsConnection.html +#usr/share/gtk-doc/html/gio/GTlsDatabase.html +#usr/share/gtk-doc/html/gio/GTlsFileDatabase.html +#usr/share/gtk-doc/html/gio/GTlsInteraction.html +#usr/share/gtk-doc/html/gio/GTlsPassword.html +#usr/share/gtk-doc/html/gio/GTlsServerConnection.html +#usr/share/gtk-doc/html/gio/GUnixConnection.html +#usr/share/gtk-doc/html/gio/GUnixCredentialsMessage.html +#usr/share/gtk-doc/html/gio/GUnixFDList.html +#usr/share/gtk-doc/html/gio/GUnixFDMessage.html +#usr/share/gtk-doc/html/gio/GUnixInputStream.html +#usr/share/gtk-doc/html/gio/GUnixOutputStream.html +#usr/share/gtk-doc/html/gio/GUnixSocketAddress.html +#usr/share/gtk-doc/html/gio/GVfs.html +#usr/share/gtk-doc/html/gio/GVolume.html +#usr/share/gtk-doc/html/gio/GVolumeMonitor.html +#usr/share/gtk-doc/html/gio/GZlibCompressor.html +#usr/share/gtk-doc/html/gio/GZlibDecompressor.html +#usr/share/gtk-doc/html/gio/annotation-glossary.html +#usr/share/gtk-doc/html/gio/api-index-2-18.html +#usr/share/gtk-doc/html/gio/api-index-2-20.html +#usr/share/gtk-doc/html/gio/api-index-2-22.html +#usr/share/gtk-doc/html/gio/api-index-2-24.html +#usr/share/gtk-doc/html/gio/api-index-2-26.html +#usr/share/gtk-doc/html/gio/api-index-2-28.html +#usr/share/gtk-doc/html/gio/api-index-2-30.html +#usr/share/gtk-doc/html/gio/api-index-2-32.html +#usr/share/gtk-doc/html/gio/api-index-deprecated.html +#usr/share/gtk-doc/html/gio/api-index-full.html +#usr/share/gtk-doc/html/gio/application.html +#usr/share/gtk-doc/html/gio/async.html +#usr/share/gtk-doc/html/gio/ch01.html +#usr/share/gtk-doc/html/gio/ch02.html +#usr/share/gtk-doc/html/gio/ch03.html +#usr/share/gtk-doc/html/gio/ch27.html +#usr/share/gtk-doc/html/gio/ch28.html +#usr/share/gtk-doc/html/gio/ch28s02.html +#usr/share/gtk-doc/html/gio/ch28s03.html +#usr/share/gtk-doc/html/gio/ch29.html +#usr/share/gtk-doc/html/gio/ch29s02.html +#usr/share/gtk-doc/html/gio/ch29s03.html +#usr/share/gtk-doc/html/gio/ch29s04.html +#usr/share/gtk-doc/html/gio/ch29s05.html +#usr/share/gtk-doc/html/gio/ch29s06.html +#usr/share/gtk-doc/html/gio/ch29s07.html +#usr/share/gtk-doc/html/gio/ch30.html +#usr/share/gtk-doc/html/gio/ch30s02.html +#usr/share/gtk-doc/html/gio/ch30s03.html +#usr/share/gtk-doc/html/gio/ch30s04.html +#usr/share/gtk-doc/html/gio/ch30s05.html +#usr/share/gtk-doc/html/gio/conversion.html +#usr/share/gtk-doc/html/gio/extending-gio.html +#usr/share/gtk-doc/html/gio/extending.html +#usr/share/gtk-doc/html/gio/failable_initialization.html +#usr/share/gtk-doc/html/gio/file_mon.html +#usr/share/gtk-doc/html/gio/file_ops.html +#usr/share/gtk-doc/html/gio/gdbus-codegen.html +#usr/share/gtk-doc/html/gio/gdbus-convenience.html +#usr/share/gtk-doc/html/gio/gdbus-lowlevel.html +#usr/share/gtk-doc/html/gio/gdbus-org.gtk.GDBus.Example.ObjectManager.Animal.html +#usr/share/gtk-doc/html/gio/gdbus-org.gtk.GDBus.Example.ObjectManager.Cat.html +#usr/share/gtk-doc/html/gio/gdbus.html +#usr/share/gtk-doc/html/gio/gio-D-Bus-Addresses.html +#usr/share/gtk-doc/html/gio/gio-D-Bus-Introspection-Data.html +#usr/share/gtk-doc/html/gio/gio-D-Bus-Utilities.html +#usr/share/gtk-doc/html/gio/gio-Desktop-file-based-GAppInfo.html +#usr/share/gtk-doc/html/gio/gio-Extension-Points.html +#usr/share/gtk-doc/html/gio/gio-GActionGroup-exporter.html +#usr/share/gtk-doc/html/gio/gio-GContentType.html +#usr/share/gtk-doc/html/gio/gio-GConverterInputstream.html +#usr/share/gtk-doc/html/gio/gio-GConverterOutputstream.html +#usr/share/gtk-doc/html/gio/gio-GDBusError.html +#usr/share/gtk-doc/html/gio/gio-GFileAttribute.html +#usr/share/gtk-doc/html/gio/gio-GIOError.html +#usr/share/gtk-doc/html/gio/gio-GIOScheduler.html +#usr/share/gtk-doc/html/gio/gio-GInetAddressMask.html +#usr/share/gtk-doc/html/gio/gio-GMenuModel-exporter.html +#usr/share/gtk-doc/html/gio/gio-GResource.html +#usr/share/gtk-doc/html/gio/gio-GSettingsSchema-GSettingsSchemaSource.html +#usr/share/gtk-doc/html/gio/gio-GWin32InputStream.html +#usr/share/gtk-doc/html/gio/gio-GWin32OutputStream.html +#usr/share/gtk-doc/html/gio/gio-Owning-Bus-Names.html +#usr/share/gtk-doc/html/gio/gio-TLS-Overview.html +#usr/share/gtk-doc/html/gio/gio-Unix-Mounts.html +#usr/share/gtk-doc/html/gio/gio-Watching-Bus-Names.html +#usr/share/gtk-doc/html/gio/gio-hierarchy.html +#usr/share/gtk-doc/html/gio/gio-querymodules.html +#usr/share/gtk-doc/html/gio/gio.devhelp2 +#usr/share/gtk-doc/html/gio/glib-compile-resources.html +#usr/share/gtk-doc/html/gio/glib-compile-schemas.html +#usr/share/gtk-doc/html/gio/gresource-tool.html +#usr/share/gtk-doc/html/gio/gsettings-tool.html +#usr/share/gtk-doc/html/gio/gvfs-overview.png +#usr/share/gtk-doc/html/gio/highlevel-socket.html +#usr/share/gtk-doc/html/gio/home.png +#usr/share/gtk-doc/html/gio/icons.html +#usr/share/gtk-doc/html/gio/index.html +#usr/share/gtk-doc/html/gio/index.sgml +#usr/share/gtk-doc/html/gio/left.png +#usr/share/gtk-doc/html/gio/menu-example.png +#usr/share/gtk-doc/html/gio/menu-model.png +#usr/share/gtk-doc/html/gio/migrating.html +#usr/share/gtk-doc/html/gio/networking.html +#usr/share/gtk-doc/html/gio/permissions.html +#usr/share/gtk-doc/html/gio/pt01.html +#usr/share/gtk-doc/html/gio/pt02.html +#usr/share/gtk-doc/html/gio/resolver.html +#usr/share/gtk-doc/html/gio/resources.html +#usr/share/gtk-doc/html/gio/right.png +#usr/share/gtk-doc/html/gio/settings.html +#usr/share/gtk-doc/html/gio/streaming.html +#usr/share/gtk-doc/html/gio/style.css +#usr/share/gtk-doc/html/gio/tls.html +#usr/share/gtk-doc/html/gio/tools.html +#usr/share/gtk-doc/html/gio/types.html +#usr/share/gtk-doc/html/gio/up.png +#usr/share/gtk-doc/html/gio/utils.html +#usr/share/gtk-doc/html/gio/volume_mon.html +#usr/share/gtk-doc/html/glib +#usr/share/gtk-doc/html/glib/annotation-glossary.html +#usr/share/gtk-doc/html/glib/api-index-2-10.html +#usr/share/gtk-doc/html/glib/api-index-2-12.html +#usr/share/gtk-doc/html/glib/api-index-2-14.html +#usr/share/gtk-doc/html/glib/api-index-2-16.html +#usr/share/gtk-doc/html/glib/api-index-2-18.html +#usr/share/gtk-doc/html/glib/api-index-2-2.html +#usr/share/gtk-doc/html/glib/api-index-2-20.html +#usr/share/gtk-doc/html/glib/api-index-2-22.html +#usr/share/gtk-doc/html/glib/api-index-2-24.html +#usr/share/gtk-doc/html/glib/api-index-2-26.html +#usr/share/gtk-doc/html/glib/api-index-2-28.html +#usr/share/gtk-doc/html/glib/api-index-2-30.html +#usr/share/gtk-doc/html/glib/api-index-2-32.html +#usr/share/gtk-doc/html/glib/api-index-2-4.html +#usr/share/gtk-doc/html/glib/api-index-2-6.html +#usr/share/gtk-doc/html/glib/api-index-2-8.html +#usr/share/gtk-doc/html/glib/api-index-deprecated.html +#usr/share/gtk-doc/html/glib/api-index-full.html +#usr/share/gtk-doc/html/glib/deprecated.html +#usr/share/gtk-doc/html/glib/file-name-encodings.png +#usr/share/gtk-doc/html/glib/glib-Arrays.html +#usr/share/gtk-doc/html/glib/glib-Asynchronous-Queues.html +#usr/share/gtk-doc/html/glib/glib-Atomic-Operations.html +#usr/share/gtk-doc/html/glib/glib-Automatic-String-Completion.html +#usr/share/gtk-doc/html/glib/glib-Balanced-Binary-Trees.html +#usr/share/gtk-doc/html/glib/glib-Base64-Encoding.html +#usr/share/gtk-doc/html/glib/glib-Basic-Types.html +#usr/share/gtk-doc/html/glib/glib-Bookmark-file-parser.html +#usr/share/gtk-doc/html/glib/glib-Byte-Arrays.html +#usr/share/gtk-doc/html/glib/glib-Byte-Order-Macros.html +#usr/share/gtk-doc/html/glib/glib-Caches.html +#usr/share/gtk-doc/html/glib/glib-Character-Set-Conversion.html +#usr/share/gtk-doc/html/glib/glib-Commandline-option-parser.html +#usr/share/gtk-doc/html/glib/glib-Data-Checksums.html +#usr/share/gtk-doc/html/glib/glib-Data-HMACs.html +#usr/share/gtk-doc/html/glib/glib-Datasets.html +#usr/share/gtk-doc/html/glib/glib-Date-and-Time-Functions.html +#usr/share/gtk-doc/html/glib/glib-Deprecated-Thread-APIs.html +#usr/share/gtk-doc/html/glib/glib-Double-ended-Queues.html +#usr/share/gtk-doc/html/glib/glib-Doubly-Linked-Lists.html +#usr/share/gtk-doc/html/glib/glib-Dynamic-Loading-of-Modules.html +#usr/share/gtk-doc/html/glib/glib-Error-Reporting.html +#usr/share/gtk-doc/html/glib/glib-File-Utilities.html +#usr/share/gtk-doc/html/glib/glib-GDateTime.html +#usr/share/gtk-doc/html/glib/glib-GTimeZone.html +#usr/share/gtk-doc/html/glib/glib-GVariant.html +#usr/share/gtk-doc/html/glib/glib-GVariantType.html +#usr/share/gtk-doc/html/glib/glib-Glob-style-pattern-matching.html +#usr/share/gtk-doc/html/glib/glib-Hash-Tables.html +#usr/share/gtk-doc/html/glib/glib-Hook-Functions.html +#usr/share/gtk-doc/html/glib/glib-Hostname-Utilities.html +#usr/share/gtk-doc/html/glib/glib-I18N.html +#usr/share/gtk-doc/html/glib/glib-IO-Channels.html +#usr/share/gtk-doc/html/glib/glib-Key-value-file-parser.html +#usr/share/gtk-doc/html/glib/glib-Keyed-Data-Lists.html +#usr/share/gtk-doc/html/glib/glib-Lexical-Scanner.html +#usr/share/gtk-doc/html/glib/glib-Memory-Allocation.html +#usr/share/gtk-doc/html/glib/glib-Memory-Slices.html +#usr/share/gtk-doc/html/glib/glib-Message-Logging.html +#usr/share/gtk-doc/html/glib/glib-Miscellaneous-Macros.html +#usr/share/gtk-doc/html/glib/glib-Miscellaneous-Utility-Functions.html +#usr/share/gtk-doc/html/glib/glib-N-ary-Trees.html +#usr/share/gtk-doc/html/glib/glib-Numerical-Definitions.html +#usr/share/gtk-doc/html/glib/glib-Perl-compatible-regular-expressions.html +#usr/share/gtk-doc/html/glib/glib-Pointer-Arrays.html +#usr/share/gtk-doc/html/glib/glib-Quarks.html +#usr/share/gtk-doc/html/glib/glib-Random-Numbers.html +#usr/share/gtk-doc/html/glib/glib-Relations-and-Tuples.html +#usr/share/gtk-doc/html/glib/glib-Sequences.html +#usr/share/gtk-doc/html/glib/glib-Shell-related-Utilities.html +#usr/share/gtk-doc/html/glib/glib-Simple-XML-Subset-Parser.html +#usr/share/gtk-doc/html/glib/glib-Singly-Linked-Lists.html +#usr/share/gtk-doc/html/glib/glib-Spawning-Processes.html +#usr/share/gtk-doc/html/glib/glib-Standard-Macros.html +#usr/share/gtk-doc/html/glib/glib-String-Chunks.html +#usr/share/gtk-doc/html/glib/glib-String-Utility-Functions.html +#usr/share/gtk-doc/html/glib/glib-Strings.html +#usr/share/gtk-doc/html/glib/glib-Testing.html +#usr/share/gtk-doc/html/glib/glib-The-Main-Event-Loop.html +#usr/share/gtk-doc/html/glib/glib-Thread-Pools.html +#usr/share/gtk-doc/html/glib/glib-Threads.html +#usr/share/gtk-doc/html/glib/glib-Timers.html +#usr/share/gtk-doc/html/glib/glib-Trash-Stacks.html +#usr/share/gtk-doc/html/glib/glib-Type-Conversion-Macros.html +#usr/share/gtk-doc/html/glib/glib-UNIX-specific-utilities-and-integration.html +#usr/share/gtk-doc/html/glib/glib-URI-Functions.html +#usr/share/gtk-doc/html/glib/glib-Unicode-Manipulation.html +#usr/share/gtk-doc/html/glib/glib-Version-Information.html +#usr/share/gtk-doc/html/glib/glib-Warnings-and-Assertions.html +#usr/share/gtk-doc/html/glib/glib-Windows-Compatibility-Functions.html +#usr/share/gtk-doc/html/glib/glib-building.html +#usr/share/gtk-doc/html/glib/glib-changes.html +#usr/share/gtk-doc/html/glib/glib-compiling.html +#usr/share/gtk-doc/html/glib/glib-core.html +#usr/share/gtk-doc/html/glib/glib-cross-compiling.html +#usr/share/gtk-doc/html/glib/glib-data-types.html +#usr/share/gtk-doc/html/glib/glib-fundamentals.html +#usr/share/gtk-doc/html/glib/glib-gettextize.html +#usr/share/gtk-doc/html/glib/glib-regex-syntax.html +#usr/share/gtk-doc/html/glib/glib-resources.html +#usr/share/gtk-doc/html/glib/glib-running.html +#usr/share/gtk-doc/html/glib/glib-utilities.html +#usr/share/gtk-doc/html/glib/glib.devhelp2 +#usr/share/gtk-doc/html/glib/glib.html +#usr/share/gtk-doc/html/glib/gtester-report.html +#usr/share/gtk-doc/html/glib/gtester.html +#usr/share/gtk-doc/html/glib/gvariant-format-strings.html +#usr/share/gtk-doc/html/glib/gvariant-text.html +#usr/share/gtk-doc/html/glib/home.png +#usr/share/gtk-doc/html/glib/index.html +#usr/share/gtk-doc/html/glib/index.sgml +#usr/share/gtk-doc/html/glib/left.png +#usr/share/gtk-doc/html/glib/mainloop-states.gif +#usr/share/gtk-doc/html/glib/right.png +#usr/share/gtk-doc/html/glib/style.css +#usr/share/gtk-doc/html/glib/tools.html +#usr/share/gtk-doc/html/glib/up.png +#usr/share/gtk-doc/html/gobject +#usr/share/gtk-doc/html/gobject/GBinding.html +#usr/share/gtk-doc/html/gobject/GTypeModule.html +#usr/share/gtk-doc/html/gobject/GTypePlugin.html +#usr/share/gtk-doc/html/gobject/annotation-glossary.html +#usr/share/gtk-doc/html/gobject/api-index-2-10.html +#usr/share/gtk-doc/html/gobject/api-index-2-12.html +#usr/share/gtk-doc/html/gobject/api-index-2-14.html +#usr/share/gtk-doc/html/gobject/api-index-2-18.html +#usr/share/gtk-doc/html/gobject/api-index-2-2.html +#usr/share/gtk-doc/html/gobject/api-index-2-22.html +#usr/share/gtk-doc/html/gobject/api-index-2-24.html +#usr/share/gtk-doc/html/gobject/api-index-2-26.html +#usr/share/gtk-doc/html/gobject/api-index-2-28.html +#usr/share/gtk-doc/html/gobject/api-index-2-30.html +#usr/share/gtk-doc/html/gobject/api-index-2-32.html +#usr/share/gtk-doc/html/gobject/api-index-2-4.html +#usr/share/gtk-doc/html/gobject/api-index-2-6.html +#usr/share/gtk-doc/html/gobject/api-index-2-8.html +#usr/share/gtk-doc/html/gobject/api-index-deprecated.html +#usr/share/gtk-doc/html/gobject/api-index-full.html +#usr/share/gtk-doc/html/gobject/ch01s02.html +#usr/share/gtk-doc/html/gobject/ch06s03.html +#usr/share/gtk-doc/html/gobject/chapter-gobject.html +#usr/share/gtk-doc/html/gobject/chapter-gtype.html +#usr/share/gtk-doc/html/gobject/chapter-intro.html +#usr/share/gtk-doc/html/gobject/chapter-signal.html +#usr/share/gtk-doc/html/gobject/glib-genmarshal.html +#usr/share/gtk-doc/html/gobject/glib-mkenums.html +#usr/share/gtk-doc/html/gobject/glue.png +#usr/share/gtk-doc/html/gobject/gobject-Boxed-Types.html +#usr/share/gtk-doc/html/gobject/gobject-Closures.html +#usr/share/gtk-doc/html/gobject/gobject-Enumeration-and-Flag-Types.html +#usr/share/gtk-doc/html/gobject/gobject-GParamSpec.html +#usr/share/gtk-doc/html/gobject/gobject-Generic-values.html +#usr/share/gtk-doc/html/gobject/gobject-Signals.html +#usr/share/gtk-doc/html/gobject/gobject-Standard-Parameter-and-Value-Types.html +#usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html +#usr/share/gtk-doc/html/gobject/gobject-Type-Information.html +#usr/share/gtk-doc/html/gobject/gobject-Value-arrays.html +#usr/share/gtk-doc/html/gobject/gobject-Varargs-Value-Collection.html +#usr/share/gtk-doc/html/gobject/gobject-memory.html +#usr/share/gtk-doc/html/gobject/gobject-properties.html +#usr/share/gtk-doc/html/gobject/gobject-query.html +#usr/share/gtk-doc/html/gobject/gobject.devhelp2 +#usr/share/gtk-doc/html/gobject/gtype-conventions.html +#usr/share/gtk-doc/html/gobject/gtype-instantiable-classed.html +#usr/share/gtk-doc/html/gobject/gtype-non-instantiable-classed.html +#usr/share/gtk-doc/html/gobject/gtype-non-instantiable.html +#usr/share/gtk-doc/html/gobject/home.png +#usr/share/gtk-doc/html/gobject/howto-gobject-chainup.html +#usr/share/gtk-doc/html/gobject/howto-gobject-code.html +#usr/share/gtk-doc/html/gobject/howto-gobject-construction.html +#usr/share/gtk-doc/html/gobject/howto-gobject-destruction.html +#usr/share/gtk-doc/html/gobject/howto-gobject-methods.html +#usr/share/gtk-doc/html/gobject/howto-gobject.html +#usr/share/gtk-doc/html/gobject/howto-interface-implement.html +#usr/share/gtk-doc/html/gobject/howto-interface-properties.html +#usr/share/gtk-doc/html/gobject/howto-interface.html +#usr/share/gtk-doc/html/gobject/howto-signals.html +#usr/share/gtk-doc/html/gobject/index.html +#usr/share/gtk-doc/html/gobject/index.sgml +#usr/share/gtk-doc/html/gobject/left.png +#usr/share/gtk-doc/html/gobject/pr01.html +#usr/share/gtk-doc/html/gobject/pt01.html +#usr/share/gtk-doc/html/gobject/pt02.html +#usr/share/gtk-doc/html/gobject/pt03.html +#usr/share/gtk-doc/html/gobject/right.png +#usr/share/gtk-doc/html/gobject/rn01.html +#usr/share/gtk-doc/html/gobject/rn02.html +#usr/share/gtk-doc/html/gobject/signal.html +#usr/share/gtk-doc/html/gobject/style.css +#usr/share/gtk-doc/html/gobject/tools-ginspector.html +#usr/share/gtk-doc/html/gobject/tools-gob.html +#usr/share/gtk-doc/html/gobject/tools-gtkdoc.html +#usr/share/gtk-doc/html/gobject/tools-refdb.html +#usr/share/gtk-doc/html/gobject/tools-vala.html +#usr/share/gtk-doc/html/gobject/up.png +#usr/share/locale/af +#usr/share/locale/af/LC_MESSAGES +#usr/share/locale/af/LC_MESSAGES/glib20.mo +#usr/share/locale/am +#usr/share/locale/am/LC_MESSAGES +#usr/share/locale/am/LC_MESSAGES/glib20.mo +#usr/share/locale/ar/LC_MESSAGES/glib20.mo +#usr/share/locale/as/LC_MESSAGES/glib20.mo +#usr/share/locale/ast +#usr/share/locale/ast/LC_MESSAGES +#usr/share/locale/ast/LC_MESSAGES/glib20.mo +#usr/share/locale/az +#usr/share/locale/az/LC_MESSAGES +#usr/share/locale/az/LC_MESSAGES/glib20.mo +#usr/share/locale/be/LC_MESSAGES/glib20.mo +#usr/share/locale/be@latin +#usr/share/locale/be@latin/LC_MESSAGES +#usr/share/locale/be@latin/LC_MESSAGES/glib20.mo +#usr/share/locale/bg/LC_MESSAGES/glib20.mo +#usr/share/locale/bn/LC_MESSAGES/glib20.mo +#usr/share/locale/bn_IN/LC_MESSAGES/glib20.mo +#usr/share/locale/bs/LC_MESSAGES/glib20.mo +#usr/share/locale/ca/LC_MESSAGES/glib20.mo +#usr/share/locale/ca@valencia +#usr/share/locale/ca@valencia/LC_MESSAGES +#usr/share/locale/ca@valencia/LC_MESSAGES/glib20.mo +#usr/share/locale/cs/LC_MESSAGES/glib20.mo +#usr/share/locale/cy/LC_MESSAGES/glib20.mo +#usr/share/locale/da/LC_MESSAGES/glib20.mo +#usr/share/locale/de/LC_MESSAGES/glib20.mo +#usr/share/locale/dz +#usr/share/locale/dz/LC_MESSAGES +#usr/share/locale/dz/LC_MESSAGES/glib20.mo +#usr/share/locale/el/LC_MESSAGES/glib20.mo +#usr/share/locale/en@shaw +#usr/share/locale/en@shaw/LC_MESSAGES +#usr/share/locale/en@shaw/LC_MESSAGES/glib20.mo +#usr/share/locale/en_CA/LC_MESSAGES/glib20.mo +#usr/share/locale/en_GB/LC_MESSAGES/glib20.mo +#usr/share/locale/eo +#usr/share/locale/eo/LC_MESSAGES +#usr/share/locale/eo/LC_MESSAGES/glib20.mo +#usr/share/locale/es/LC_MESSAGES/glib20.mo +#usr/share/locale/et/LC_MESSAGES/glib20.mo +#usr/share/locale/eu +#usr/share/locale/eu/LC_MESSAGES +#usr/share/locale/eu/LC_MESSAGES/glib20.mo +#usr/share/locale/fa +#usr/share/locale/fa/LC_MESSAGES +#usr/share/locale/fa/LC_MESSAGES/glib20.mo +#usr/share/locale/fi/LC_MESSAGES/glib20.mo +#usr/share/locale/fr/LC_MESSAGES/glib20.mo +#usr/share/locale/ga/LC_MESSAGES/glib20.mo +#usr/share/locale/gl/LC_MESSAGES/glib20.mo +#usr/share/locale/gu/LC_MESSAGES/glib20.mo +#usr/share/locale/he/LC_MESSAGES/glib20.mo +#usr/share/locale/hi/LC_MESSAGES/glib20.mo +#usr/share/locale/hr/LC_MESSAGES/glib20.mo +#usr/share/locale/hu/LC_MESSAGES/glib20.mo +#usr/share/locale/hy/LC_MESSAGES/glib20.mo +#usr/share/locale/id/LC_MESSAGES/glib20.mo +#usr/share/locale/is/LC_MESSAGES/glib20.mo +#usr/share/locale/it/LC_MESSAGES/glib20.mo +#usr/share/locale/ja/LC_MESSAGES/glib20.mo +#usr/share/locale/ka/LC_MESSAGES/glib20.mo +#usr/share/locale/kk +#usr/share/locale/kk/LC_MESSAGES +#usr/share/locale/kk/LC_MESSAGES/glib20.mo +#usr/share/locale/kn/LC_MESSAGES/glib20.mo +#usr/share/locale/ko/LC_MESSAGES/glib20.mo +#usr/share/locale/ku/LC_MESSAGES/glib20.mo +#usr/share/locale/lt/LC_MESSAGES/glib20.mo +#usr/share/locale/lv/LC_MESSAGES/glib20.mo +#usr/share/locale/mai +#usr/share/locale/mai/LC_MESSAGES +#usr/share/locale/mai/LC_MESSAGES/glib20.mo +#usr/share/locale/mg +#usr/share/locale/mg/LC_MESSAGES +#usr/share/locale/mg/LC_MESSAGES/glib20.mo +#usr/share/locale/mk/LC_MESSAGES/glib20.mo +#usr/share/locale/ml/LC_MESSAGES/glib20.mo +#usr/share/locale/mn +#usr/share/locale/mn/LC_MESSAGES +#usr/share/locale/mn/LC_MESSAGES/glib20.mo +#usr/share/locale/mr/LC_MESSAGES/glib20.mo +#usr/share/locale/ms/LC_MESSAGES/glib20.mo +#usr/share/locale/nb/LC_MESSAGES/glib20.mo +#usr/share/locale/nds +#usr/share/locale/nds/LC_MESSAGES +#usr/share/locale/nds/LC_MESSAGES/glib20.mo +#usr/share/locale/ne +#usr/share/locale/ne/LC_MESSAGES +#usr/share/locale/ne/LC_MESSAGES/glib20.mo +#usr/share/locale/nl/LC_MESSAGES/glib20.mo +#usr/share/locale/nn/LC_MESSAGES/glib20.mo +#usr/share/locale/oc +#usr/share/locale/oc/LC_MESSAGES +#usr/share/locale/oc/LC_MESSAGES/glib20.mo +#usr/share/locale/or/LC_MESSAGES/glib20.mo +#usr/share/locale/pa/LC_MESSAGES/glib20.mo +#usr/share/locale/pl/LC_MESSAGES/glib20.mo +#usr/share/locale/ps +#usr/share/locale/ps/LC_MESSAGES +#usr/share/locale/ps/LC_MESSAGES/glib20.mo +#usr/share/locale/pt/LC_MESSAGES/glib20.mo +#usr/share/locale/pt_BR/LC_MESSAGES/glib20.mo +#usr/share/locale/ro/LC_MESSAGES/glib20.mo +#usr/share/locale/ru/LC_MESSAGES/glib20.mo +#usr/share/locale/rw/LC_MESSAGES/glib20.mo +#usr/share/locale/si/LC_MESSAGES/glib20.mo +#usr/share/locale/sk/LC_MESSAGES/glib20.mo +#usr/share/locale/sl/LC_MESSAGES/glib20.mo +#usr/share/locale/sq/LC_MESSAGES/glib20.mo +#usr/share/locale/sr/LC_MESSAGES/glib20.mo +#usr/share/locale/sr@ije +#usr/share/locale/sr@ije/LC_MESSAGES +#usr/share/locale/sr@ije/LC_MESSAGES/glib20.mo +#usr/share/locale/sr@latin +#usr/share/locale/sr@latin/LC_MESSAGES +#usr/share/locale/sr@latin/LC_MESSAGES/glib20.mo +#usr/share/locale/sv/LC_MESSAGES/glib20.mo +#usr/share/locale/ta/LC_MESSAGES/glib20.mo +#usr/share/locale/te/LC_MESSAGES/glib20.mo +#usr/share/locale/th +#usr/share/locale/th/LC_MESSAGES +#usr/share/locale/th/LC_MESSAGES/glib20.mo +#usr/share/locale/tl +#usr/share/locale/tl/LC_MESSAGES +#usr/share/locale/tl/LC_MESSAGES/glib20.mo +#usr/share/locale/tr/LC_MESSAGES/glib20.mo +#usr/share/locale/tt +#usr/share/locale/tt/LC_MESSAGES +#usr/share/locale/tt/LC_MESSAGES/glib20.mo +#usr/share/locale/ug +#usr/share/locale/ug/LC_MESSAGES +#usr/share/locale/ug/LC_MESSAGES/glib20.mo +#usr/share/locale/uk/LC_MESSAGES/glib20.mo +#usr/share/locale/vi/LC_MESSAGES/glib20.mo +#usr/share/locale/wa/LC_MESSAGES/glib20.mo +#usr/share/locale/xh +#usr/share/locale/xh/LC_MESSAGES +#usr/share/locale/xh/LC_MESSAGES/glib20.mo +#usr/share/locale/yi +#usr/share/locale/yi/LC_MESSAGES +#usr/share/locale/yi/LC_MESSAGES/glib20.mo +#usr/share/locale/zh_CN/LC_MESSAGES/glib20.mo +#usr/share/locale/zh_HK +#usr/share/locale/zh_HK/LC_MESSAGES +#usr/share/locale/zh_HK/LC_MESSAGES/glib20.mo +#usr/share/locale/zh_TW/LC_MESSAGES/glib20.mo +#usr/share/man/man1/gdbus-codegen.1 +#usr/share/man/man1/gdbus.1 +#usr/share/man/man1/gio-querymodules.1 +#usr/share/man/man1/glib-compile-resources.1 +#usr/share/man/man1/glib-compile-schemas.1 +#usr/share/man/man1/glib-genmarshal.1 +#usr/share/man/man1/glib-gettextize.1 +#usr/share/man/man1/glib-mkenums.1 +#usr/share/man/man1/gobject-query.1 +#usr/share/man/man1/gresource.1 +#usr/share/man/man1/gsettings.1 +#usr/share/man/man1/gtester-report.1 +#usr/share/man/man1/gtester.1 diff --git a/config/rootfiles/common/gmp b/config/rootfiles/common/gmp index 669d191..67f557f 100644 --- a/config/rootfiles/common/gmp +++ b/config/rootfiles/common/gmp @@ -1,21 +1,21 @@ #usr/include/gmp.h #usr/include/gmpxx.h #usr/include/mp.h -#usr/info/gmp.info -#usr/info/gmp.info-1 -#usr/info/gmp.info-2 #usr/lib/libgmp.a #usr/lib/libgmp.la -usr/lib/libgmp.so -usr/lib/libgmp.so.3 -usr/lib/libgmp.so.3.4.4 +#usr/lib/libgmp.so +usr/lib/libgmp.so.10 +usr/lib/libgmp.so.10.0.5 #usr/lib/libgmpxx.a #usr/lib/libgmpxx.la #usr/lib/libgmpxx.so -#usr/lib/libgmpxx.so.4 -#usr/lib/libgmpxx.so.4.0.4 +usr/lib/libgmpxx.so.4 +usr/lib/libgmpxx.so.4.2.5 #usr/lib/libmp.a #usr/lib/libmp.la #usr/lib/libmp.so -#usr/lib/libmp.so.3 -#usr/lib/libmp.so.3.1.13 +usr/lib/libmp.so.3 +usr/lib/libmp.so.3.1.25 +#usr/share/info/gmp.info +#usr/share/info/gmp.info-1 +#usr/share/info/gmp.info-2 diff --git a/config/rootfiles/common/gmp-compat b/config/rootfiles/common/gmp-compat new file mode 100644 index 0000000..a4b82f2 --- /dev/null +++ b/config/rootfiles/common/gmp-compat @@ -0,0 +1,2 @@ +usr/lib/libgmp.so.3 +usr/lib/libgmp.so.3.5.2 diff --git a/config/rootfiles/common/gnupg b/config/rootfiles/common/gnupg index 616ed05..9aecc41 100644 --- a/config/rootfiles/common/gnupg +++ b/config/rootfiles/common/gnupg @@ -2,18 +2,17 @@ usr/bin/gpg #usr/bin/gpg-zip #usr/bin/gpgsplit #usr/bin/gpgv -#usr/info/gpg.info -#usr/info/gpgv.info #usr/lib/gnupg usr/lib/gnupg/gpgkeys_curl usr/lib/gnupg/gpgkeys_finger usr/lib/gnupg/gpgkeys_hkp usr/lib/gnupg/gpgkeys_ldap -#usr/man/man1/gpg.1 -#usr/man/man1/gpg.ru.1 -#usr/man/man1/gpgv.1 -#usr/man/man7/gnupg.7 #usr/share/gnupg #usr/share/gnupg/FAQ -#usr/share/gnupg/faq.html #usr/share/gnupg/options.skel +#usr/share/info/gnupg1.info +#usr/share/man/man1/gpg-zip.1 +#usr/share/man/man1/gpg.1 +#usr/share/man/man1/gpg.ru.1 +#usr/share/man/man1/gpgv.1 +#usr/share/man/man7/gnupg.7 diff --git a/config/rootfiles/common/grep b/config/rootfiles/common/grep index 5d5db68..a00737d 100644 --- a/config/rootfiles/common/grep +++ b/config/rootfiles/common/grep @@ -1,7 +1,7 @@ bin/egrep bin/fgrep bin/grep -#usr/info/grep.info -#usr/man/man1/egrep.1 -#usr/man/man1/fgrep.1 -#usr/man/man1/grep.1 +#usr/share/info/grep.info +#usr/share/man/man1/egrep.1 +#usr/share/man/man1/fgrep.1 +#usr/share/man/man1/grep.1 diff --git a/config/rootfiles/common/hddtemp b/config/rootfiles/common/hddtemp deleted file mode 100644 index bc4c8d7..0000000 --- a/config/rootfiles/common/hddtemp +++ /dev/null @@ -1,4 +0,0 @@ -#usr/man/man8/hddtemp.8 -usr/sbin/hddtemp -#usr/share/locale/fr/LC_MESSAGES/hddtemp.mo -#usr/share/locale/ru/LC_MESSAGES/hddtemp.mo diff --git a/config/rootfiles/common/i586/acpid b/config/rootfiles/common/i586/acpid new file mode 100644 index 0000000..535e2bd --- /dev/null +++ b/config/rootfiles/common/i586/acpid @@ -0,0 +1,17 @@ +etc/acpi +etc/acpi/actions +etc/acpi/actions/power.sh +etc/acpi/events +etc/acpi/events/power +usr/bin/acpi_listen +usr/sbin/acpid +#usr/sbin/kacpimon +#usr/share/doc/acpid +#usr/share/doc/acpid/COPYING +#usr/share/doc/acpid/Changelog +#usr/share/doc/acpid/README +#usr/share/doc/acpid/TESTPLAN +#usr/share/doc/acpid/TODO +#usr/share/man/man8/acpi_listen.8 +#usr/share/man/man8/acpid.8 +#usr/share/man/man8/kacpimon.8 diff --git a/config/rootfiles/common/i586/binutils b/config/rootfiles/common/i586/binutils index 0cd5af9..48f20e9 100644 --- a/config/rootfiles/common/i586/binutils +++ b/config/rootfiles/common/i586/binutils @@ -2,8 +2,10 @@ #usr/bin/ar #usr/bin/as #usr/bin/c++filt +#usr/bin/elfedit #usr/bin/gprof #usr/bin/ld +#usr/bin/ld.bfd #usr/bin/nm #usr/bin/objcopy #usr/bin/objdump @@ -18,14 +20,20 @@ #usr/include/dis-asm.h #usr/include/libiberty.h #usr/include/symcat.h -#usr/info/as.info -#usr/info/bfd.info -#usr/info/binutils.info -#usr/info/configure.info -#usr/info/gprof.info -#usr/info/ld.info -#usr/info/standards.info #usr/lib/ldscripts +#usr/lib/ldscripts/elf32_x86_64.x +#usr/lib/ldscripts/elf32_x86_64.xbn +#usr/lib/ldscripts/elf32_x86_64.xc +#usr/lib/ldscripts/elf32_x86_64.xd +#usr/lib/ldscripts/elf32_x86_64.xdc +#usr/lib/ldscripts/elf32_x86_64.xdw +#usr/lib/ldscripts/elf32_x86_64.xn +#usr/lib/ldscripts/elf32_x86_64.xr +#usr/lib/ldscripts/elf32_x86_64.xs +#usr/lib/ldscripts/elf32_x86_64.xsc +#usr/lib/ldscripts/elf32_x86_64.xsw +#usr/lib/ldscripts/elf32_x86_64.xu +#usr/lib/ldscripts/elf32_x86_64.xw #usr/lib/ldscripts/elf_i386.x #usr/lib/ldscripts/elf_i386.xbn #usr/lib/ldscripts/elf_i386.xc @@ -44,32 +52,38 @@ #usr/lib/ldscripts/i386linux.xn #usr/lib/ldscripts/i386linux.xr #usr/lib/ldscripts/i386linux.xu -#usr/lib/libbfd-2.18.so +usr/lib/libbfd-2.22.so #usr/lib/libbfd.a #usr/lib/libbfd.la #usr/lib/libbfd.so #usr/lib/libiberty.a -#usr/lib/libopcodes-2.18.so +usr/lib/libopcodes-2.22.so #usr/lib/libopcodes.a #usr/lib/libopcodes.la #usr/lib/libopcodes.so -#usr/man -#usr/man/man1 -#usr/man/man1/addr2line.1 -#usr/man/man1/ar.1 -#usr/man/man1/as.1 -#usr/man/man1/c++filt.1 -#usr/man/man1/dlltool.1 -#usr/man/man1/gprof.1 -#usr/man/man1/ld.1 -#usr/man/man1/nlmconv.1 -#usr/man/man1/nm.1 -#usr/man/man1/objcopy.1 -#usr/man/man1/objdump.1 -#usr/man/man1/ranlib.1 -#usr/man/man1/readelf.1 -#usr/man/man1/size.1 -#usr/man/man1/strings.1 -#usr/man/man1/strip.1 -#usr/man/man1/windmc.1 -#usr/man/man1/windres.1 +#usr/share/info/as.info +#usr/share/info/bfd.info +#usr/share/info/binutils.info +#usr/share/info/configure.info +#usr/share/info/gprof.info +#usr/share/info/ld.info +#usr/share/info/standards.info +#usr/share/man/man1/addr2line.1 +#usr/share/man/man1/ar.1 +#usr/share/man/man1/as.1 +#usr/share/man/man1/c++filt.1 +#usr/share/man/man1/dlltool.1 +#usr/share/man/man1/elfedit.1 +#usr/share/man/man1/gprof.1 +#usr/share/man/man1/ld.1 +#usr/share/man/man1/nlmconv.1 +#usr/share/man/man1/nm.1 +#usr/share/man/man1/objcopy.1 +#usr/share/man/man1/objdump.1 +#usr/share/man/man1/ranlib.1 +#usr/share/man/man1/readelf.1 +#usr/share/man/man1/size.1 +#usr/share/man/man1/strings.1 +#usr/share/man/man1/strip.1 +#usr/share/man/man1/windmc.1 +#usr/share/man/man1/windres.1 diff --git a/config/rootfiles/common/i586/gcc b/config/rootfiles/common/i586/gcc index cde9e4f..622d5cd 100644 --- a/config/rootfiles/common/i586/gcc +++ b/config/rootfiles/common/i586/gcc @@ -9,579 +9,784 @@ #usr/bin/i586-pc-linux-gnu-c++ #usr/bin/i586-pc-linux-gnu-g++ #usr/bin/i586-pc-linux-gnu-gcc -#usr/bin/i586-pc-linux-gnu-gcc-4.1.2 +#usr/bin/i586-pc-linux-gnu-gcc-4.4.7 #usr/include/c++ -#usr/include/c++/4.1.2 -#usr/include/c++/4.1.2/algorithm -#usr/include/c++/4.1.2/backward -#usr/include/c++/4.1.2/backward/algo.h -#usr/include/c++/4.1.2/backward/algobase.h -#usr/include/c++/4.1.2/backward/alloc.h -#usr/include/c++/4.1.2/backward/backward_warning.h -#usr/include/c++/4.1.2/backward/bvector.h -#usr/include/c++/4.1.2/backward/complex.h -#usr/include/c++/4.1.2/backward/defalloc.h -#usr/include/c++/4.1.2/backward/deque.h -#usr/include/c++/4.1.2/backward/fstream.h -#usr/include/c++/4.1.2/backward/function.h -#usr/include/c++/4.1.2/backward/hash_map.h -#usr/include/c++/4.1.2/backward/hash_set.h -#usr/include/c++/4.1.2/backward/hashtable.h -#usr/include/c++/4.1.2/backward/heap.h -#usr/include/c++/4.1.2/backward/iomanip.h -#usr/include/c++/4.1.2/backward/iostream.h -#usr/include/c++/4.1.2/backward/istream.h -#usr/include/c++/4.1.2/backward/iterator.h -#usr/include/c++/4.1.2/backward/list.h -#usr/include/c++/4.1.2/backward/map.h -#usr/include/c++/4.1.2/backward/multimap.h -#usr/include/c++/4.1.2/backward/multiset.h -#usr/include/c++/4.1.2/backward/new.h -#usr/include/c++/4.1.2/backward/ostream.h -#usr/include/c++/4.1.2/backward/pair.h -#usr/include/c++/4.1.2/backward/queue.h -#usr/include/c++/4.1.2/backward/rope.h -#usr/include/c++/4.1.2/backward/set.h -#usr/include/c++/4.1.2/backward/slist.h -#usr/include/c++/4.1.2/backward/stack.h -#usr/include/c++/4.1.2/backward/stream.h -#usr/include/c++/4.1.2/backward/streambuf.h -#usr/include/c++/4.1.2/backward/strstream -#usr/include/c++/4.1.2/backward/tempbuf.h -#usr/include/c++/4.1.2/backward/tree.h -#usr/include/c++/4.1.2/backward/vector.h -#usr/include/c++/4.1.2/bits -#usr/include/c++/4.1.2/bits/allocator.h -#usr/include/c++/4.1.2/bits/atomicity.h -#usr/include/c++/4.1.2/bits/basic_ios.h -#usr/include/c++/4.1.2/bits/basic_ios.tcc -#usr/include/c++/4.1.2/bits/basic_string.h -#usr/include/c++/4.1.2/bits/basic_string.tcc -#usr/include/c++/4.1.2/bits/boost_concept_check.h -#usr/include/c++/4.1.2/bits/char_traits.h -#usr/include/c++/4.1.2/bits/cmath.tcc -#usr/include/c++/4.1.2/bits/codecvt.h -#usr/include/c++/4.1.2/bits/concept_check.h -#usr/include/c++/4.1.2/bits/concurrence.h -#usr/include/c++/4.1.2/bits/cpp_type_traits.h -#usr/include/c++/4.1.2/bits/deque.tcc -#usr/include/c++/4.1.2/bits/fstream.tcc -#usr/include/c++/4.1.2/bits/functexcept.h -#usr/include/c++/4.1.2/bits/gslice.h -#usr/include/c++/4.1.2/bits/gslice_array.h -#usr/include/c++/4.1.2/bits/indirect_array.h -#usr/include/c++/4.1.2/bits/ios_base.h -#usr/include/c++/4.1.2/bits/istream.tcc -#usr/include/c++/4.1.2/bits/list.tcc -#usr/include/c++/4.1.2/bits/locale_classes.h -#usr/include/c++/4.1.2/bits/locale_facets.h -#usr/include/c++/4.1.2/bits/locale_facets.tcc -#usr/include/c++/4.1.2/bits/localefwd.h -#usr/include/c++/4.1.2/bits/mask_array.h -#usr/include/c++/4.1.2/bits/ostream.tcc -#usr/include/c++/4.1.2/bits/postypes.h -#usr/include/c++/4.1.2/bits/slice_array.h -#usr/include/c++/4.1.2/bits/sstream.tcc -#usr/include/c++/4.1.2/bits/stl_algo.h -#usr/include/c++/4.1.2/bits/stl_algobase.h -#usr/include/c++/4.1.2/bits/stl_bvector.h -#usr/include/c++/4.1.2/bits/stl_construct.h -#usr/include/c++/4.1.2/bits/stl_deque.h -#usr/include/c++/4.1.2/bits/stl_function.h -#usr/include/c++/4.1.2/bits/stl_heap.h -#usr/include/c++/4.1.2/bits/stl_iterator.h -#usr/include/c++/4.1.2/bits/stl_iterator_base_funcs.h -#usr/include/c++/4.1.2/bits/stl_iterator_base_types.h -#usr/include/c++/4.1.2/bits/stl_list.h -#usr/include/c++/4.1.2/bits/stl_map.h -#usr/include/c++/4.1.2/bits/stl_multimap.h -#usr/include/c++/4.1.2/bits/stl_multiset.h -#usr/include/c++/4.1.2/bits/stl_numeric.h -#usr/include/c++/4.1.2/bits/stl_pair.h -#usr/include/c++/4.1.2/bits/stl_queue.h -#usr/include/c++/4.1.2/bits/stl_raw_storage_iter.h -#usr/include/c++/4.1.2/bits/stl_relops.h -#usr/include/c++/4.1.2/bits/stl_set.h -#usr/include/c++/4.1.2/bits/stl_stack.h -#usr/include/c++/4.1.2/bits/stl_tempbuf.h -#usr/include/c++/4.1.2/bits/stl_tree.h -#usr/include/c++/4.1.2/bits/stl_uninitialized.h -#usr/include/c++/4.1.2/bits/stl_vector.h -#usr/include/c++/4.1.2/bits/stream_iterator.h -#usr/include/c++/4.1.2/bits/streambuf.tcc -#usr/include/c++/4.1.2/bits/streambuf_iterator.h -#usr/include/c++/4.1.2/bits/stringfwd.h -#usr/include/c++/4.1.2/bits/valarray_after.h -#usr/include/c++/4.1.2/bits/valarray_array.h -#usr/include/c++/4.1.2/bits/valarray_array.tcc -#usr/include/c++/4.1.2/bits/valarray_before.h -#usr/include/c++/4.1.2/bits/vector.tcc -#usr/include/c++/4.1.2/bitset -#usr/include/c++/4.1.2/cassert -#usr/include/c++/4.1.2/cctype -#usr/include/c++/4.1.2/cerrno -#usr/include/c++/4.1.2/cfloat -#usr/include/c++/4.1.2/ciso646 -#usr/include/c++/4.1.2/climits -#usr/include/c++/4.1.2/clocale -#usr/include/c++/4.1.2/cmath -#usr/include/c++/4.1.2/complex -#usr/include/c++/4.1.2/csetjmp -#usr/include/c++/4.1.2/csignal -#usr/include/c++/4.1.2/cstdarg -#usr/include/c++/4.1.2/cstddef -#usr/include/c++/4.1.2/cstdio -#usr/include/c++/4.1.2/cstdlib -#usr/include/c++/4.1.2/cstring -#usr/include/c++/4.1.2/ctime -#usr/include/c++/4.1.2/cwchar -#usr/include/c++/4.1.2/cwctype -#usr/include/c++/4.1.2/cxxabi.h -#usr/include/c++/4.1.2/debug -#usr/include/c++/4.1.2/debug/bitset -#usr/include/c++/4.1.2/debug/debug.h -#usr/include/c++/4.1.2/debug/deque -#usr/include/c++/4.1.2/debug/formatter.h -#usr/include/c++/4.1.2/debug/functions.h -#usr/include/c++/4.1.2/debug/hash_map -#usr/include/c++/4.1.2/debug/hash_map.h -#usr/include/c++/4.1.2/debug/hash_multimap.h -#usr/include/c++/4.1.2/debug/hash_multiset.h -#usr/include/c++/4.1.2/debug/hash_set -#usr/include/c++/4.1.2/debug/hash_set.h -#usr/include/c++/4.1.2/debug/list -#usr/include/c++/4.1.2/debug/macros.h -#usr/include/c++/4.1.2/debug/map -#usr/include/c++/4.1.2/debug/map.h -#usr/include/c++/4.1.2/debug/multimap.h -#usr/include/c++/4.1.2/debug/multiset.h -#usr/include/c++/4.1.2/debug/safe_base.h -#usr/include/c++/4.1.2/debug/safe_iterator.h -#usr/include/c++/4.1.2/debug/safe_iterator.tcc -#usr/include/c++/4.1.2/debug/safe_sequence.h -#usr/include/c++/4.1.2/debug/set -#usr/include/c++/4.1.2/debug/set.h -#usr/include/c++/4.1.2/debug/string -#usr/include/c++/4.1.2/debug/vector -#usr/include/c++/4.1.2/deque -#usr/include/c++/4.1.2/exception -#usr/include/c++/4.1.2/exception_defines.h -#usr/include/c++/4.1.2/ext -#usr/include/c++/4.1.2/ext/algorithm -#usr/include/c++/4.1.2/ext/array_allocator.h -#usr/include/c++/4.1.2/ext/bitmap_allocator.h -#usr/include/c++/4.1.2/ext/codecvt_specializations.h -#usr/include/c++/4.1.2/ext/debug_allocator.h -#usr/include/c++/4.1.2/ext/functional -#usr/include/c++/4.1.2/ext/hash_fun.h -#usr/include/c++/4.1.2/ext/hash_map -#usr/include/c++/4.1.2/ext/hash_set -#usr/include/c++/4.1.2/ext/hashtable.h -#usr/include/c++/4.1.2/ext/iterator -#usr/include/c++/4.1.2/ext/malloc_allocator.h -#usr/include/c++/4.1.2/ext/memory -#usr/include/c++/4.1.2/ext/mt_allocator.h -#usr/include/c++/4.1.2/ext/new_allocator.h -#usr/include/c++/4.1.2/ext/numeric -#usr/include/c++/4.1.2/ext/pb_assoc -#usr/include/c++/4.1.2/ext/pb_assoc/assoc_cntnr.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/data_type.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail -#usr/include/c++/4.1.2/ext/pb_assoc/detail/assoc_cntnr_base.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr/d_extract_key.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr/d_find_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr/d_insert_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr/erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr/extract_key.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr/info_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr/insert_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr/iterators_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_hash_assoc_cntnr -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_hash_assoc_cntnr/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_hash_assoc_cntnr/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_hash_assoc_cntnr/resize_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_tree_assoc_cntnr -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_tree_assoc_cntnr/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_tree_assoc_cntnr/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_tree_assoc_cntnr/erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_tree_assoc_cntnr/node_iteration_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_tree_assoc_cntnr/policy_access_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_tree_assoc_cntnr/r_erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_tree_assoc_cntnr/r_range_iteration_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_tree_assoc_cntnr/range_iteration_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_tree_assoc_cntnr/split_join_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_ -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/bin_search_tree_.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/cond_dtor_entry_dealtor.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/cond_key_dtor_entry_dealtor.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/debug_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/find_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/find_iterators.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/info_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/insert_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/iterators_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/node_iterators.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/r_erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/rotate_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/split_join_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_hash_assoc_cntnr -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_hash_assoc_cntnr/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_ -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/cc_ht_map_.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/cmp_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/cond_key_dtor_entry_dealtor.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/constructor_destructor_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/constructor_destructor_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/debug_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/debug_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/debug_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/entry_list_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/erase_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/erase_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/find_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/find_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/find_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/info_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/insert_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/insert_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/insert_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/iterators_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/policy_access_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/resize_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/resize_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/resize_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/size_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/standard_policies.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cond_dealtor.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ds_trait_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/eq_fn -#usr/include/c++/4.1.2/ext/pb_assoc/detail/eq_fn/eq_by_less.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/eq_fn/hash_eq_fn.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_hash_assoc_cntnr -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_hash_assoc_cntnr/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_ -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/constructor_destructor_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/constructor_destructor_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/debug_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/debug_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/debug_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/erase_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/erase_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/find_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/find_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/find_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/gp_ht_map_.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/info_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/insert_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/insert_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/insert_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/iterator_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/policy_access_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/resize_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/resize_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/resize_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_fn -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_fn/direct_mask_range_hashing_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_fn/direct_mod_range_hashing_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_fn/linear_probe_fn_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_fn/mask_based_range_hashing.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_fn/mod_based_range_hashing.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_fn/probe_fn_base.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_fn/quadratic_probe_fn_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_fn/ranged_hash_fn.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_fn/ranged_probe_fn.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_types_traits.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_assoc_cntnr -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_assoc_cntnr/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_assoc_cntnr/policy_access_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_map_ -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_map_/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_map_/debug_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_map_/erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_map_/find_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_map_/info_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_map_/insert_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_map_/iterators_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_map_/lu_map_.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_map_/policy_access_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_policy -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_policy/counter_lu_metadata_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_policy/counter_lu_policy_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_policy/mtf_lu_policy_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/map_debug_base.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/mapping_level_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ms_category_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ms_trait_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/order_statistics_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_ -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/cond_dtor.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/debug_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/find_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/info_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/insert_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/iterators_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/node_iterators.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/ov_tree_map_.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/split_join_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/rb_tree_map_ -#usr/include/c++/4.1.2/ext/pb_assoc/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/rb_tree_map_/debug_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/rb_tree_map_/erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/rb_tree_map_/find_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/rb_tree_map_/info_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/rb_tree_map_/insert_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/rb_tree_map_/node.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/rb_tree_map_/rb_tree_.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/rb_tree_map_/split_join_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/resize_policy -#usr/include/c++/4.1.2/ext/pb_assoc/detail/resize_policy/cc_hash_max_collision_resize_trigger_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/resize_policy/hash_exponential_size_policy_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/resize_policy/hash_prime_size_policy_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/resize_policy/hash_standard_resize_policy_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/resize_policy/ht_prime_size_policy_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/resize_policy/size_base.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_ -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_/debug_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_/erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_/find_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_/info_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_/insert_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_/node.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_/splay_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_/splay_tree_.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_/split_join_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/standard_policies.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/standard_sizes.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/tree_assoc_cntnr -#usr/include/c++/4.1.2/ext/pb_assoc/detail/tree_assoc_cntnr/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/tree_policy -#usr/include/c++/4.1.2/ext/pb_assoc/detail/tree_policy/null_node_updator_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/tree_policy/order_statistics_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/type_utils.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/typelist -#usr/include/c++/4.1.2/ext/pb_assoc/detail/typelist.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/typelist/typelist_append.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/typelist/typelist_apply.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/typelist/typelist_at_index.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/typelist/typelist_contains.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/typelist/typelist_filter.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/typelist/typelist_transform.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/typelist/typelist_typelist_append.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/types_traits.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/unordered_iterator -#usr/include/c++/4.1.2/ext/pb_assoc/detail/unordered_iterator/const_find_iterator.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/unordered_iterator/const_iterator.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/unordered_iterator/find_iterator.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/unordered_iterator/iterator.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/constructor_destructor_and_related.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/erase_if_pred.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/find_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/info_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/insert_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/invalidation_guarantee_selector.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/it_value_type_traits.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/iterator.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/iterator_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/ref_pair.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/value_type_adapter.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/value_type_traits.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/ds_trait.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/exception.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/hash_policy.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/lu_policy.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/ms_trait.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/tree_policy.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/trivial_iterator_def.hpp -#usr/include/c++/4.1.2/ext/pod_char_traits.h -#usr/include/c++/4.1.2/ext/pool_allocator.h -#usr/include/c++/4.1.2/ext/rb_tree -#usr/include/c++/4.1.2/ext/rc_string_base.h -#usr/include/c++/4.1.2/ext/rope -#usr/include/c++/4.1.2/ext/ropeimpl.h -#usr/include/c++/4.1.2/ext/slist -#usr/include/c++/4.1.2/ext/sso_string_base.h -#usr/include/c++/4.1.2/ext/stdio_filebuf.h -#usr/include/c++/4.1.2/ext/stdio_sync_filebuf.h -#usr/include/c++/4.1.2/ext/typelist.h -#usr/include/c++/4.1.2/ext/vstring.h -#usr/include/c++/4.1.2/ext/vstring.tcc -#usr/include/c++/4.1.2/ext/vstring_fwd.h -#usr/include/c++/4.1.2/ext/vstring_util.h -#usr/include/c++/4.1.2/fstream -#usr/include/c++/4.1.2/functional -#usr/include/c++/4.1.2/i586-pc-linux-gnu -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/atomic_word.h -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/basic_file.h -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/c++allocator.h -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/c++config.h -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/c++io.h -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/c++locale.h -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/cpu_defines.h -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/ctype_base.h -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/ctype_inline.h -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/ctype_noninline.h -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/cxxabi_tweaks.h -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/gthr-default.h -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/gthr-posix.h -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/gthr-single.h -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/gthr-tpf.h -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/gthr.h -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/messages_members.h -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/os_defines.h -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/stdc++.h.gch -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/stdc++.h.gch/O0g.gch -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/stdc++.h.gch/O2g.gch -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/time_members.h -#usr/include/c++/4.1.2/iomanip -#usr/include/c++/4.1.2/ios -#usr/include/c++/4.1.2/iosfwd -#usr/include/c++/4.1.2/iostream -#usr/include/c++/4.1.2/istream -#usr/include/c++/4.1.2/iterator -#usr/include/c++/4.1.2/limits -#usr/include/c++/4.1.2/list -#usr/include/c++/4.1.2/locale -#usr/include/c++/4.1.2/map -#usr/include/c++/4.1.2/memory -#usr/include/c++/4.1.2/new -#usr/include/c++/4.1.2/numeric -#usr/include/c++/4.1.2/ostream -#usr/include/c++/4.1.2/queue -#usr/include/c++/4.1.2/set -#usr/include/c++/4.1.2/sstream -#usr/include/c++/4.1.2/stack -#usr/include/c++/4.1.2/stdexcept -#usr/include/c++/4.1.2/streambuf -#usr/include/c++/4.1.2/string -#usr/include/c++/4.1.2/tr1 -#usr/include/c++/4.1.2/tr1/array -#usr/include/c++/4.1.2/tr1/bind_iterate.h -#usr/include/c++/4.1.2/tr1/bind_repeat.h -#usr/include/c++/4.1.2/tr1/boost_shared_ptr.h -#usr/include/c++/4.1.2/tr1/functional -#usr/include/c++/4.1.2/tr1/functional_iterate.h -#usr/include/c++/4.1.2/tr1/hashtable -#usr/include/c++/4.1.2/tr1/memory -#usr/include/c++/4.1.2/tr1/mu_iterate.h -#usr/include/c++/4.1.2/tr1/ref_fwd.h -#usr/include/c++/4.1.2/tr1/ref_wrap_iterate.h -#usr/include/c++/4.1.2/tr1/repeat.h -#usr/include/c++/4.1.2/tr1/tuple -#usr/include/c++/4.1.2/tr1/tuple_iterate.h -#usr/include/c++/4.1.2/tr1/type_traits -#usr/include/c++/4.1.2/tr1/type_traits_fwd.h -#usr/include/c++/4.1.2/tr1/unordered_map -#usr/include/c++/4.1.2/tr1/unordered_set -#usr/include/c++/4.1.2/tr1/utility -#usr/include/c++/4.1.2/typeinfo -#usr/include/c++/4.1.2/utility -#usr/include/c++/4.1.2/valarray -#usr/include/c++/4.1.2/vector -#usr/include/mf-runtime.h +#usr/include/c++/4.4.7 +#usr/include/c++/4.4.7/algorithm +#usr/include/c++/4.4.7/array +#usr/include/c++/4.4.7/backward +#usr/include/c++/4.4.7/backward/auto_ptr.h +#usr/include/c++/4.4.7/backward/backward_warning.h +#usr/include/c++/4.4.7/backward/binders.h +#usr/include/c++/4.4.7/backward/hash_fun.h +#usr/include/c++/4.4.7/backward/hash_map +#usr/include/c++/4.4.7/backward/hash_set +#usr/include/c++/4.4.7/backward/hashtable.h +#usr/include/c++/4.4.7/backward/strstream +#usr/include/c++/4.4.7/bits +#usr/include/c++/4.4.7/bits/algorithmfwd.h +#usr/include/c++/4.4.7/bits/allocator.h +#usr/include/c++/4.4.7/bits/atomic_0.h +#usr/include/c++/4.4.7/bits/atomic_2.h +#usr/include/c++/4.4.7/bits/atomicfwd_c.h +#usr/include/c++/4.4.7/bits/atomicfwd_cxx.h +#usr/include/c++/4.4.7/bits/basic_ios.h +#usr/include/c++/4.4.7/bits/basic_ios.tcc +#usr/include/c++/4.4.7/bits/basic_string.h +#usr/include/c++/4.4.7/bits/basic_string.tcc +#usr/include/c++/4.4.7/bits/boost_concept_check.h +#usr/include/c++/4.4.7/bits/char_traits.h +#usr/include/c++/4.4.7/bits/cmath.tcc +#usr/include/c++/4.4.7/bits/codecvt.h +#usr/include/c++/4.4.7/bits/concept_check.h +#usr/include/c++/4.4.7/bits/cpp_type_traits.h +#usr/include/c++/4.4.7/bits/deque.tcc +#usr/include/c++/4.4.7/bits/forward_list.h +#usr/include/c++/4.4.7/bits/forward_list.tcc +#usr/include/c++/4.4.7/bits/fstream.tcc +#usr/include/c++/4.4.7/bits/functexcept.h +#usr/include/c++/4.4.7/bits/functional_hash.h +#usr/include/c++/4.4.7/bits/gslice.h +#usr/include/c++/4.4.7/bits/gslice_array.h +#usr/include/c++/4.4.7/bits/hashtable.h +#usr/include/c++/4.4.7/bits/indirect_array.h +#usr/include/c++/4.4.7/bits/ios_base.h +#usr/include/c++/4.4.7/bits/istream.tcc +#usr/include/c++/4.4.7/bits/list.tcc +#usr/include/c++/4.4.7/bits/locale_classes.h +#usr/include/c++/4.4.7/bits/locale_classes.tcc +#usr/include/c++/4.4.7/bits/locale_facets.h +#usr/include/c++/4.4.7/bits/locale_facets.tcc +#usr/include/c++/4.4.7/bits/locale_facets_nonio.h +#usr/include/c++/4.4.7/bits/locale_facets_nonio.tcc +#usr/include/c++/4.4.7/bits/localefwd.h +#usr/include/c++/4.4.7/bits/mask_array.h +#usr/include/c++/4.4.7/bits/move.h +#usr/include/c++/4.4.7/bits/ostream.tcc +#usr/include/c++/4.4.7/bits/ostream_insert.h +#usr/include/c++/4.4.7/bits/postypes.h +#usr/include/c++/4.4.7/bits/shared_ptr.h +#usr/include/c++/4.4.7/bits/slice_array.h +#usr/include/c++/4.4.7/bits/sstream.tcc +#usr/include/c++/4.4.7/bits/stl_algo.h +#usr/include/c++/4.4.7/bits/stl_algobase.h +#usr/include/c++/4.4.7/bits/stl_bvector.h +#usr/include/c++/4.4.7/bits/stl_construct.h +#usr/include/c++/4.4.7/bits/stl_deque.h +#usr/include/c++/4.4.7/bits/stl_function.h +#usr/include/c++/4.4.7/bits/stl_heap.h +#usr/include/c++/4.4.7/bits/stl_iterator.h +#usr/include/c++/4.4.7/bits/stl_iterator_base_funcs.h +#usr/include/c++/4.4.7/bits/stl_iterator_base_types.h +#usr/include/c++/4.4.7/bits/stl_list.h +#usr/include/c++/4.4.7/bits/stl_map.h +#usr/include/c++/4.4.7/bits/stl_multimap.h +#usr/include/c++/4.4.7/bits/stl_multiset.h +#usr/include/c++/4.4.7/bits/stl_numeric.h +#usr/include/c++/4.4.7/bits/stl_pair.h +#usr/include/c++/4.4.7/bits/stl_queue.h +#usr/include/c++/4.4.7/bits/stl_raw_storage_iter.h +#usr/include/c++/4.4.7/bits/stl_relops.h +#usr/include/c++/4.4.7/bits/stl_set.h +#usr/include/c++/4.4.7/bits/stl_stack.h +#usr/include/c++/4.4.7/bits/stl_tempbuf.h +#usr/include/c++/4.4.7/bits/stl_tree.h +#usr/include/c++/4.4.7/bits/stl_uninitialized.h +#usr/include/c++/4.4.7/bits/stl_vector.h +#usr/include/c++/4.4.7/bits/stream_iterator.h +#usr/include/c++/4.4.7/bits/streambuf.tcc +#usr/include/c++/4.4.7/bits/streambuf_iterator.h +#usr/include/c++/4.4.7/bits/stringfwd.h +#usr/include/c++/4.4.7/bits/unique_ptr.h +#usr/include/c++/4.4.7/bits/valarray_after.h +#usr/include/c++/4.4.7/bits/valarray_array.h +#usr/include/c++/4.4.7/bits/valarray_array.tcc +#usr/include/c++/4.4.7/bits/valarray_before.h +#usr/include/c++/4.4.7/bits/vector.tcc +#usr/include/c++/4.4.7/bitset +#usr/include/c++/4.4.7/c++0x_warning.h +#usr/include/c++/4.4.7/cassert +#usr/include/c++/4.4.7/ccomplex +#usr/include/c++/4.4.7/cctype +#usr/include/c++/4.4.7/cerrno +#usr/include/c++/4.4.7/cfenv +#usr/include/c++/4.4.7/cfloat +#usr/include/c++/4.4.7/chrono +#usr/include/c++/4.4.7/cinttypes +#usr/include/c++/4.4.7/ciso646 +#usr/include/c++/4.4.7/climits +#usr/include/c++/4.4.7/clocale +#usr/include/c++/4.4.7/cmath +#usr/include/c++/4.4.7/complex +#usr/include/c++/4.4.7/complex.h +#usr/include/c++/4.4.7/condition_variable +#usr/include/c++/4.4.7/csetjmp +#usr/include/c++/4.4.7/csignal +#usr/include/c++/4.4.7/cstdarg +#usr/include/c++/4.4.7/cstdatomic +#usr/include/c++/4.4.7/cstdbool +#usr/include/c++/4.4.7/cstddef +#usr/include/c++/4.4.7/cstdint +#usr/include/c++/4.4.7/cstdio +#usr/include/c++/4.4.7/cstdlib +#usr/include/c++/4.4.7/cstring +#usr/include/c++/4.4.7/ctgmath +#usr/include/c++/4.4.7/ctime +#usr/include/c++/4.4.7/cwchar +#usr/include/c++/4.4.7/cwctype +#usr/include/c++/4.4.7/cxxabi-forced.h +#usr/include/c++/4.4.7/cxxabi.h +#usr/include/c++/4.4.7/debug +#usr/include/c++/4.4.7/debug/bitset +#usr/include/c++/4.4.7/debug/debug.h +#usr/include/c++/4.4.7/debug/deque +#usr/include/c++/4.4.7/debug/formatter.h +#usr/include/c++/4.4.7/debug/functions.h +#usr/include/c++/4.4.7/debug/list +#usr/include/c++/4.4.7/debug/macros.h +#usr/include/c++/4.4.7/debug/map +#usr/include/c++/4.4.7/debug/map.h +#usr/include/c++/4.4.7/debug/multimap.h +#usr/include/c++/4.4.7/debug/multiset.h +#usr/include/c++/4.4.7/debug/safe_base.h +#usr/include/c++/4.4.7/debug/safe_iterator.h +#usr/include/c++/4.4.7/debug/safe_iterator.tcc +#usr/include/c++/4.4.7/debug/safe_sequence.h +#usr/include/c++/4.4.7/debug/set +#usr/include/c++/4.4.7/debug/set.h +#usr/include/c++/4.4.7/debug/string +#usr/include/c++/4.4.7/debug/unordered_map +#usr/include/c++/4.4.7/debug/unordered_set +#usr/include/c++/4.4.7/debug/vector +#usr/include/c++/4.4.7/deque +#usr/include/c++/4.4.7/exception +#usr/include/c++/4.4.7/exception_defines.h +#usr/include/c++/4.4.7/exception_ptr.h +#usr/include/c++/4.4.7/ext +#usr/include/c++/4.4.7/ext/algorithm +#usr/include/c++/4.4.7/ext/array_allocator.h +#usr/include/c++/4.4.7/ext/atomicity.h +#usr/include/c++/4.4.7/ext/bitmap_allocator.h +#usr/include/c++/4.4.7/ext/cast.h +#usr/include/c++/4.4.7/ext/codecvt_specializations.h +#usr/include/c++/4.4.7/ext/concurrence.h +#usr/include/c++/4.4.7/ext/debug_allocator.h +#usr/include/c++/4.4.7/ext/enc_filebuf.h +#usr/include/c++/4.4.7/ext/extptr_allocator.h +#usr/include/c++/4.4.7/ext/functional +#usr/include/c++/4.4.7/ext/hash_map +#usr/include/c++/4.4.7/ext/hash_set +#usr/include/c++/4.4.7/ext/iterator +#usr/include/c++/4.4.7/ext/malloc_allocator.h +#usr/include/c++/4.4.7/ext/memory +#usr/include/c++/4.4.7/ext/mt_allocator.h +#usr/include/c++/4.4.7/ext/new_allocator.h +#usr/include/c++/4.4.7/ext/numeric +#usr/include/c++/4.4.7/ext/numeric_traits.h +#usr/include/c++/4.4.7/ext/pb_ds +#usr/include/c++/4.4.7/ext/pb_ds/assoc_container.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail +#usr/include/c++/4.4.7/ext/pb_ds/detail/basic_tree_policy +#usr/include/c++/4.4.7/ext/pb_ds/detail/basic_tree_policy/basic_tree_policy_base.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/basic_tree_policy/traits.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/basic_types.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/cond_dtor_entry_dealtor.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/cond_key_dtor_entry_dealtor.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/traits.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/const_iterator.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/const_point_iterator.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/entry_pred.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/resize_policy.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_base_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/standard_policies.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cond_dealtor.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/container_base_dispatch.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/debug_map_base.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/eq_fn +#usr/include/c++/4.4.7/ext/pb_ds/detail/eq_fn/eq_by_less.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/standard_policies.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/const_point_iterator.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_/lu_map_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_policy +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_policy/counter_lu_metadata.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_policy/counter_lu_policy_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_policy/mtf_lu_policy_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/cond_dtor.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/traits.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pairing_heap_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/child_iterator.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/cond_dtor_entry_dealtor.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/const_child_iterator.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/head.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/internal_node.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/leaf.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/node_base.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/node_iterators.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/node_metadata_base.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/point_iterators.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/split_join_branch_bag.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/synth_e_access_traits.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/traits.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/priority_queue_base_dispatch.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_/node.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_/traits.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rc_binomial_heap_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/resize_policy +#usr/include/c++/4.4.7/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/node.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/traits.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/standard_policies.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/thin_heap_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/tree_policy +#usr/include/c++/4.4.7/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/tree_policy/null_node_update_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/tree_trace_base.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/trie_policy +#usr/include/c++/4.4.7/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/trie_policy/null_node_update_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/trie_policy/sample_trie_e_access_traits.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/trie_policy/string_trie_e_access_traits_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/type_utils.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/types_traits.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/unordered_iterator +#usr/include/c++/4.4.7/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/unordered_iterator/const_point_iterator.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/unordered_iterator/iterator.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp +#usr/include/c++/4.4.7/ext/pb_ds/exception.hpp +#usr/include/c++/4.4.7/ext/pb_ds/hash_policy.hpp +#usr/include/c++/4.4.7/ext/pb_ds/list_update_policy.hpp +#usr/include/c++/4.4.7/ext/pb_ds/priority_queue.hpp +#usr/include/c++/4.4.7/ext/pb_ds/tag_and_trait.hpp +#usr/include/c++/4.4.7/ext/pb_ds/tree_policy.hpp +#usr/include/c++/4.4.7/ext/pb_ds/trie_policy.hpp +#usr/include/c++/4.4.7/ext/pod_char_traits.h +#usr/include/c++/4.4.7/ext/pointer.h +#usr/include/c++/4.4.7/ext/pool_allocator.h +#usr/include/c++/4.4.7/ext/rb_tree +#usr/include/c++/4.4.7/ext/rc_string_base.h +#usr/include/c++/4.4.7/ext/rope +#usr/include/c++/4.4.7/ext/ropeimpl.h +#usr/include/c++/4.4.7/ext/slist +#usr/include/c++/4.4.7/ext/sso_string_base.h +#usr/include/c++/4.4.7/ext/stdio_filebuf.h +#usr/include/c++/4.4.7/ext/stdio_sync_filebuf.h +#usr/include/c++/4.4.7/ext/string_conversions.h +#usr/include/c++/4.4.7/ext/throw_allocator.h +#usr/include/c++/4.4.7/ext/type_traits.h +#usr/include/c++/4.4.7/ext/typelist.h +#usr/include/c++/4.4.7/ext/vstring.h +#usr/include/c++/4.4.7/ext/vstring.tcc +#usr/include/c++/4.4.7/ext/vstring_fwd.h +#usr/include/c++/4.4.7/ext/vstring_util.h +#usr/include/c++/4.4.7/fenv.h +#usr/include/c++/4.4.7/forward_list +#usr/include/c++/4.4.7/fstream +#usr/include/c++/4.4.7/functional +#usr/include/c++/4.4.7/i586-pc-linux-gnu +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/atomic_word.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/basic_file.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/c++allocator.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/c++config.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/c++io.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/c++locale.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/cpu_defines.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/ctype_base.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/ctype_inline.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/ctype_noninline.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/cxxabi_tweaks.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/error_constants.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/extc++.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/gthr-default.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/gthr-posix.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/gthr-single.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/gthr-tpf.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/gthr.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/messages_members.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/os_defines.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/stdc++.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/stdtr1c++.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/time_members.h +#usr/include/c++/4.4.7/initializer_list +#usr/include/c++/4.4.7/iomanip +#usr/include/c++/4.4.7/ios +#usr/include/c++/4.4.7/iosfwd +#usr/include/c++/4.4.7/iostream +#usr/include/c++/4.4.7/istream +#usr/include/c++/4.4.7/iterator +#usr/include/c++/4.4.7/limits +#usr/include/c++/4.4.7/list +#usr/include/c++/4.4.7/locale +#usr/include/c++/4.4.7/map +#usr/include/c++/4.4.7/memory +#usr/include/c++/4.4.7/mutex +#usr/include/c++/4.4.7/new +#usr/include/c++/4.4.7/numeric +#usr/include/c++/4.4.7/ostream +#usr/include/c++/4.4.7/parallel +#usr/include/c++/4.4.7/parallel/algo.h +#usr/include/c++/4.4.7/parallel/algobase.h +#usr/include/c++/4.4.7/parallel/algorithm +#usr/include/c++/4.4.7/parallel/algorithmfwd.h +#usr/include/c++/4.4.7/parallel/balanced_quicksort.h +#usr/include/c++/4.4.7/parallel/base.h +#usr/include/c++/4.4.7/parallel/basic_iterator.h +#usr/include/c++/4.4.7/parallel/checkers.h +#usr/include/c++/4.4.7/parallel/compatibility.h +#usr/include/c++/4.4.7/parallel/compiletime_settings.h +#usr/include/c++/4.4.7/parallel/equally_split.h +#usr/include/c++/4.4.7/parallel/features.h +#usr/include/c++/4.4.7/parallel/find.h +#usr/include/c++/4.4.7/parallel/find_selectors.h +#usr/include/c++/4.4.7/parallel/for_each.h +#usr/include/c++/4.4.7/parallel/for_each_selectors.h +#usr/include/c++/4.4.7/parallel/iterator.h +#usr/include/c++/4.4.7/parallel/list_partition.h +#usr/include/c++/4.4.7/parallel/losertree.h +#usr/include/c++/4.4.7/parallel/merge.h +#usr/include/c++/4.4.7/parallel/multiseq_selection.h +#usr/include/c++/4.4.7/parallel/multiway_merge.h +#usr/include/c++/4.4.7/parallel/multiway_mergesort.h +#usr/include/c++/4.4.7/parallel/numeric +#usr/include/c++/4.4.7/parallel/numericfwd.h +#usr/include/c++/4.4.7/parallel/omp_loop.h +#usr/include/c++/4.4.7/parallel/omp_loop_static.h +#usr/include/c++/4.4.7/parallel/par_loop.h +#usr/include/c++/4.4.7/parallel/parallel.h +#usr/include/c++/4.4.7/parallel/partial_sum.h +#usr/include/c++/4.4.7/parallel/partition.h +#usr/include/c++/4.4.7/parallel/queue.h +#usr/include/c++/4.4.7/parallel/quicksort.h +#usr/include/c++/4.4.7/parallel/random_number.h +#usr/include/c++/4.4.7/parallel/random_shuffle.h +#usr/include/c++/4.4.7/parallel/search.h +#usr/include/c++/4.4.7/parallel/set_operations.h +#usr/include/c++/4.4.7/parallel/settings.h +#usr/include/c++/4.4.7/parallel/sort.h +#usr/include/c++/4.4.7/parallel/tags.h +#usr/include/c++/4.4.7/parallel/types.h +#usr/include/c++/4.4.7/parallel/unique_copy.h +#usr/include/c++/4.4.7/parallel/workstealing.h +#usr/include/c++/4.4.7/queue +#usr/include/c++/4.4.7/random +#usr/include/c++/4.4.7/ratio +#usr/include/c++/4.4.7/regex +#usr/include/c++/4.4.7/set +#usr/include/c++/4.4.7/sstream +#usr/include/c++/4.4.7/stack +#usr/include/c++/4.4.7/stdatomic.h +#usr/include/c++/4.4.7/stdexcept +#usr/include/c++/4.4.7/streambuf +#usr/include/c++/4.4.7/string +#usr/include/c++/4.4.7/system_error +#usr/include/c++/4.4.7/tgmath.h +#usr/include/c++/4.4.7/thread +#usr/include/c++/4.4.7/tr1 +#usr/include/c++/4.4.7/tr1/array +#usr/include/c++/4.4.7/tr1/bessel_function.tcc +#usr/include/c++/4.4.7/tr1/beta_function.tcc +#usr/include/c++/4.4.7/tr1/ccomplex +#usr/include/c++/4.4.7/tr1/cctype +#usr/include/c++/4.4.7/tr1/cfenv +#usr/include/c++/4.4.7/tr1/cfloat +#usr/include/c++/4.4.7/tr1/cinttypes +#usr/include/c++/4.4.7/tr1/climits +#usr/include/c++/4.4.7/tr1/cmath +#usr/include/c++/4.4.7/tr1/complex +#usr/include/c++/4.4.7/tr1/complex.h +#usr/include/c++/4.4.7/tr1/cstdarg +#usr/include/c++/4.4.7/tr1/cstdbool +#usr/include/c++/4.4.7/tr1/cstdint +#usr/include/c++/4.4.7/tr1/cstdio +#usr/include/c++/4.4.7/tr1/cstdlib +#usr/include/c++/4.4.7/tr1/ctgmath +#usr/include/c++/4.4.7/tr1/ctime +#usr/include/c++/4.4.7/tr1/ctype.h +#usr/include/c++/4.4.7/tr1/cwchar +#usr/include/c++/4.4.7/tr1/cwctype +#usr/include/c++/4.4.7/tr1/ell_integral.tcc +#usr/include/c++/4.4.7/tr1/exp_integral.tcc +#usr/include/c++/4.4.7/tr1/fenv.h +#usr/include/c++/4.4.7/tr1/float.h +#usr/include/c++/4.4.7/tr1/functional +#usr/include/c++/4.4.7/tr1/functional_hash.h +#usr/include/c++/4.4.7/tr1/gamma.tcc +#usr/include/c++/4.4.7/tr1/hashtable.h +#usr/include/c++/4.4.7/tr1/hypergeometric.tcc +#usr/include/c++/4.4.7/tr1/inttypes.h +#usr/include/c++/4.4.7/tr1/legendre_function.tcc +#usr/include/c++/4.4.7/tr1/limits.h +#usr/include/c++/4.4.7/tr1/math.h +#usr/include/c++/4.4.7/tr1/memory +#usr/include/c++/4.4.7/tr1/modified_bessel_func.tcc +#usr/include/c++/4.4.7/tr1/poly_hermite.tcc +#usr/include/c++/4.4.7/tr1/poly_laguerre.tcc +#usr/include/c++/4.4.7/tr1/random +#usr/include/c++/4.4.7/tr1/regex +#usr/include/c++/4.4.7/tr1/riemann_zeta.tcc +#usr/include/c++/4.4.7/tr1/shared_ptr.h +#usr/include/c++/4.4.7/tr1/special_function_util.h +#usr/include/c++/4.4.7/tr1/stdarg.h +#usr/include/c++/4.4.7/tr1/stdbool.h +#usr/include/c++/4.4.7/tr1/stdint.h +#usr/include/c++/4.4.7/tr1/stdio.h +#usr/include/c++/4.4.7/tr1/stdlib.h +#usr/include/c++/4.4.7/tr1/tgmath.h +#usr/include/c++/4.4.7/tr1/tuple +#usr/include/c++/4.4.7/tr1/type_traits +#usr/include/c++/4.4.7/tr1/unordered_map +#usr/include/c++/4.4.7/tr1/unordered_set +#usr/include/c++/4.4.7/tr1/utility +#usr/include/c++/4.4.7/tr1/wchar.h +#usr/include/c++/4.4.7/tr1/wctype.h +#usr/include/c++/4.4.7/tr1_impl +#usr/include/c++/4.4.7/tr1_impl/array +#usr/include/c++/4.4.7/tr1_impl/boost_sp_counted_base.h +#usr/include/c++/4.4.7/tr1_impl/cctype +#usr/include/c++/4.4.7/tr1_impl/cfenv +#usr/include/c++/4.4.7/tr1_impl/cinttypes +#usr/include/c++/4.4.7/tr1_impl/cmath +#usr/include/c++/4.4.7/tr1_impl/complex +#usr/include/c++/4.4.7/tr1_impl/cstdint +#usr/include/c++/4.4.7/tr1_impl/cstdio +#usr/include/c++/4.4.7/tr1_impl/cstdlib +#usr/include/c++/4.4.7/tr1_impl/cwchar +#usr/include/c++/4.4.7/tr1_impl/cwctype +#usr/include/c++/4.4.7/tr1_impl/functional +#usr/include/c++/4.4.7/tr1_impl/functional_hash.h +#usr/include/c++/4.4.7/tr1_impl/hashtable +#usr/include/c++/4.4.7/tr1_impl/hashtable_policy.h +#usr/include/c++/4.4.7/tr1_impl/random +#usr/include/c++/4.4.7/tr1_impl/random.tcc +#usr/include/c++/4.4.7/tr1_impl/regex +#usr/include/c++/4.4.7/tr1_impl/type_traits +#usr/include/c++/4.4.7/tr1_impl/unordered_map +#usr/include/c++/4.4.7/tr1_impl/unordered_set +#usr/include/c++/4.4.7/tr1_impl/utility +#usr/include/c++/4.4.7/tuple +#usr/include/c++/4.4.7/type_traits +#usr/include/c++/4.4.7/typeinfo +#usr/include/c++/4.4.7/unordered_map +#usr/include/c++/4.4.7/unordered_set +#usr/include/c++/4.4.7/utility +#usr/include/c++/4.4.7/valarray +#usr/include/c++/4.4.7/vector +#usr/info #usr/info/cpp.info #usr/info/cppinternals.info +#usr/info/dir #usr/info/gcc.info #usr/info/gccinstall.info #usr/info/gccint.info +#usr/info/libgomp.info #usr/lib/gcc #usr/lib/gcc/i586-pc-linux-gnu -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2 -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/cc1 -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/cc1plus -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/collect2 -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/crtbegin.o -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/crtbeginS.o -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/crtbeginT.o -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/crtend.o -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/crtendS.o -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/crtfastmath.o -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/README -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/emmintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/float.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/iso646.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/limits.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/mm3dnow.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/mm_malloc.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/mmintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/pmmintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/ssp -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/ssp/ssp.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/ssp/stdio.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/ssp/string.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/ssp/unistd.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/stdarg.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/stdbool.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/stddef.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/syslimits.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/unwind.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/varargs.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/xmmintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/fixinc.sh -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/fixincl -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/gsyslimits.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/include -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/include/README -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/include/emmintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/include/float.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/include/iso646.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/include/limits.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/include/mm3dnow.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/include/mm_malloc.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/include/mmintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/include/pmmintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/include/stdarg.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/include/stdbool.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/include/stddef.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/include/unwind.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/include/varargs.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/include/xmmintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/macro_list -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/mkheaders -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/mkheaders.conf -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/libgcc.a -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/libgcc_eh.a -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/libgcov.a +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7 +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/cc1 +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/cc1plus +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/collect2 +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/crtbegin.o +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/crtbeginS.o +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/crtbeginT.o +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/crtend.o +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/crtendS.o +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/crtfastmath.o +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/crtprec32.o +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/crtprec64.o +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/crtprec80.o +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/finclude +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include-fixed +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include-fixed/README +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include-fixed/limits.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include-fixed/syslimits.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/ammintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/avxintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/bmmintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/cpuid.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/cross-stdarg.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/emmintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/float.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/immintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/iso646.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/mf-runtime.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/mm3dnow.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/mm_malloc.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/mmintrin-common.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/mmintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/nmmintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/omp.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/pmmintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/smmintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/ssp +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/ssp/ssp.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/ssp/stdio.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/ssp/string.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/ssp/unistd.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/stdarg.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/stdbool.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/stddef.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/stdfix.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/tmmintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/unwind.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/varargs.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/wmmintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/x86intrin.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/xmmintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/install-tools +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/install-tools/fixinc.sh +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/install-tools/fixinc_list +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/install-tools/fixincl +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/install-tools/gsyslimits.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/install-tools/include +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/install-tools/include/README +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/install-tools/include/limits.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/install-tools/macro_list +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/install-tools/mkheaders +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/install-tools/mkheaders.conf +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/install-tools/mkinstalldirs +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/libgcc.a +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/libgcc_eh.a +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/libgcov.a +#usr/lib/libgomp.a +#usr/lib/libgomp.la +#usr/lib/libgomp.so +usr/lib/libgomp.so.1 +usr/lib/libgomp.so.1.0.0 +#usr/lib/libgomp.spec #usr/lib/libmudflap.a #usr/lib/libmudflap.la -usr/lib/libmudflap.so +#usr/lib/libmudflap.so usr/lib/libmudflap.so.0 usr/lib/libmudflap.so.0.0.0 #usr/lib/libmudflapth.a #usr/lib/libmudflapth.la -usr/lib/libmudflapth.so +#usr/lib/libmudflapth.so usr/lib/libmudflapth.so.0 usr/lib/libmudflapth.so.0.0.0 #usr/lib/libssp.a #usr/lib/libssp.la -usr/lib/libssp.so +#usr/lib/libssp.so usr/lib/libssp.so.0 usr/lib/libssp.so.0.0.0 #usr/lib/libssp_nonshared.a #usr/lib/libssp_nonshared.la #usr/lib/libstdc++.a -#usr/lib/libstdc++.la -usr/lib/libstdc++.so -usr/lib/libstdc++.so.6 -usr/lib/libstdc++.so.6.0.8 +usr/lib/libstdc++.so.6.0.13 #usr/lib/libsupc++.a #usr/lib/libsupc++.la #usr/man/man1/cpp.1 diff --git a/config/rootfiles/common/i586/glibc b/config/rootfiles/common/i586/glibc index 4e05e8e..fb36915 100644 --- a/config/rootfiles/common/i586/glibc +++ b/config/rootfiles/common/i586/glibc @@ -1,46 +1,48 @@ #etc/ld.so.cache etc/localtime -#etc/rpc -lib/ld-2.5.so +etc/rpc +lib/ld-2.12.so lib/ld-linux.so.2 -lib/libBrokenLocale-2.5.so +lib/libBrokenLocale-2.12.so lib/libBrokenLocale.so.1 #lib/libSegFault.so -lib/libanl-2.5.so +lib/libanl-2.12.so lib/libanl.so.1 -lib/libc-2.5.so +lib/libc-2.12.so lib/libc.so.6 -lib/libcrypt-2.5.so +lib/libcidn-2.12.so +lib/libcidn.so.1 +lib/libcrypt-2.12.so lib/libcrypt.so.1 -lib/libdl-2.5.so +lib/libdl-2.12.so lib/libdl.so.2 -lib/libm-2.5.so +lib/libm-2.12.so lib/libm.so.6 #lib/libmemusage.so -lib/libnsl-2.5.so +lib/libnsl-2.12.so lib/libnsl.so.1 -lib/libnss_compat-2.5.so +lib/libnss_compat-2.12.so lib/libnss_compat.so.2 -lib/libnss_dns-2.5.so +lib/libnss_dns-2.12.so lib/libnss_dns.so.2 -lib/libnss_files-2.5.so +lib/libnss_files-2.12.so lib/libnss_files.so.2 -lib/libnss_hesiod-2.5.so +lib/libnss_hesiod-2.12.so lib/libnss_hesiod.so.2 -lib/libnss_nis-2.5.so +lib/libnss_nis-2.12.so lib/libnss_nis.so.2 -lib/libnss_nisplus-2.5.so +lib/libnss_nisplus-2.12.so lib/libnss_nisplus.so.2 #lib/libpcprofile.so -lib/libpthread-2.5.so +lib/libpthread-2.12.so lib/libpthread.so.0 -lib/libresolv-2.5.so +lib/libresolv-2.12.so lib/libresolv.so.2 -lib/librt-2.5.so +lib/librt-2.12.so lib/librt.so.1 lib/libthread_db-1.0.so lib/libthread_db.so.1 -lib/libutil-2.5.so +lib/libutil-2.12.so lib/libutil.so.1 sbin/ldconfig #sbin/sln @@ -86,7 +88,9 @@ usr/bin/ldd #usr/include/bits/endian.h #usr/include/bits/environments.h #usr/include/bits/errno.h +#usr/include/bits/error.h #usr/include/bits/fcntl.h +#usr/include/bits/fcntl2.h #usr/include/bits/fenv.h #usr/include/bits/fenvinline.h #usr/include/bits/huge_val.h @@ -110,6 +114,7 @@ usr/bin/ldd #usr/include/bits/mman.h #usr/include/bits/monetary-ldbl.h #usr/include/bits/mqueue.h +#usr/include/bits/mqueue2.h #usr/include/bits/msq.h #usr/include/bits/nan.h #usr/include/bits/netdb.h @@ -125,6 +130,7 @@ usr/bin/ldd #usr/include/bits/sem.h #usr/include/bits/semaphore.h #usr/include/bits/setjmp.h +#usr/include/bits/setjmp2.h #usr/include/bits/shm.h #usr/include/bits/sigaction.h #usr/include/bits/sigcontext.h @@ -150,7 +156,6 @@ usr/bin/ldd #usr/include/bits/string.h #usr/include/bits/string2.h #usr/include/bits/string3.h -#usr/include/bits/stropts.h #usr/include/bits/sys_errlist.h #usr/include/bits/syscall.h #usr/include/bits/syslog-ldbl.h @@ -173,7 +178,6 @@ usr/bin/ldd #usr/include/bits/wchar2.h #usr/include/bits/wordsize.h #usr/include/bits/xopen_lim.h -#usr/include/bits/xtitypes.h #usr/include/byteswap.h #usr/include/complex.h #usr/include/cpio.h @@ -207,6 +211,7 @@ usr/bin/ldd #usr/include/gnu/stubs-32.h #usr/include/gnu/stubs.h #usr/include/grp.h +#usr/include/gshadow.h #usr/include/iconv.h #usr/include/ieee754.h #usr/include/ifaddrs.h @@ -262,6 +267,8 @@ usr/bin/ldd #usr/include/netinet/udp.h #usr/include/netipx #usr/include/netipx/ipx.h +#usr/include/netiucv +#usr/include/netiucv/iucv.h #usr/include/netpacket #usr/include/netpacket/packet.h #usr/include/netrom @@ -347,8 +354,6 @@ usr/bin/ldd #usr/include/rpcsvc/yppasswd.x #usr/include/rpcsvc/ypupd.h #usr/include/sched.h -#usr/include/scsi -#usr/include/scsi/scsi.h #usr/include/scsi/scsi_ioctl.h #usr/include/scsi/sg.h #usr/include/search.h @@ -365,7 +370,6 @@ usr/bin/ldd #usr/include/stdlib.h #usr/include/string.h #usr/include/strings.h -#usr/include/stropts.h #usr/include/sys #usr/include/sys/acct.h #usr/include/sys/bitypes.h @@ -375,6 +379,7 @@ usr/bin/ldd #usr/include/sys/elf.h #usr/include/sys/epoll.h #usr/include/sys/errno.h +#usr/include/sys/eventfd.h #usr/include/sys/fcntl.h #usr/include/sys/file.h #usr/include/sys/fsuid.h @@ -411,13 +416,13 @@ usr/bin/ldd #usr/include/sys/sendfile.h #usr/include/sys/shm.h #usr/include/sys/signal.h +#usr/include/sys/signalfd.h #usr/include/sys/socket.h #usr/include/sys/socketvar.h #usr/include/sys/soundcard.h #usr/include/sys/stat.h #usr/include/sys/statfs.h #usr/include/sys/statvfs.h -#usr/include/sys/stropts.h #usr/include/sys/swap.h #usr/include/sys/syscall.h #usr/include/sys/sysctl.h @@ -427,6 +432,7 @@ usr/bin/ldd #usr/include/sys/termios.h #usr/include/sys/time.h #usr/include/sys/timeb.h +#usr/include/sys/timerfd.h #usr/include/sys/times.h #usr/include/sys/timex.h #usr/include/sys/ttychars.h @@ -470,20 +476,6 @@ usr/bin/ldd #usr/include/wctype.h #usr/include/wordexp.h #usr/include/xlocale.h -#usr/info -#usr/info/dir -#usr/info/libc.info -#usr/info/libc.info-1 -#usr/info/libc.info-10 -#usr/info/libc.info-11 -#usr/info/libc.info-2 -#usr/info/libc.info-3 -#usr/info/libc.info-4 -#usr/info/libc.info-5 -#usr/info/libc.info-6 -#usr/info/libc.info-7 -#usr/info/libc.info-8 -#usr/info/libc.info-9 #usr/lib/Mcrt1.o #usr/lib/Scrt1.o #usr/lib/crt1.o @@ -495,6 +487,7 @@ usr/lib/gconv #usr/lib/gconv/ASMO_449.so #usr/lib/gconv/BIG5.so #usr/lib/gconv/BIG5HKSCS.so +#usr/lib/gconv/BRF.so #usr/lib/gconv/CP10007.so #usr/lib/gconv/CP1125.so #usr/lib/gconv/CP1250.so @@ -545,7 +538,11 @@ usr/lib/gconv #usr/lib/gconv/GREEK-CCITT.so #usr/lib/gconv/GREEK7-OLD.so #usr/lib/gconv/GREEK7.so +#usr/lib/gconv/HP-GREEK8.so #usr/lib/gconv/HP-ROMAN8.so +#usr/lib/gconv/HP-ROMAN9.so +#usr/lib/gconv/HP-THAI8.so +#usr/lib/gconv/HP-TURKISH8.so #usr/lib/gconv/IBM037.so #usr/lib/gconv/IBM038.so #usr/lib/gconv/IBM1004.so @@ -686,6 +683,7 @@ usr/lib/gconv #usr/lib/gconv/ISO8859-7.so #usr/lib/gconv/ISO8859-8.so #usr/lib/gconv/ISO8859-9.so +#usr/lib/gconv/ISO8859-9E.so #usr/lib/gconv/ISO_10367-BOX.so #usr/lib/gconv/ISO_11548-1.so #usr/lib/gconv/ISO_2033.so @@ -697,10 +695,12 @@ usr/lib/gconv #usr/lib/gconv/JOHAB.so #usr/lib/gconv/KOI-8.so #usr/lib/gconv/KOI8-R.so +#usr/lib/gconv/KOI8-RU.so #usr/lib/gconv/KOI8-T.so #usr/lib/gconv/KOI8-U.so #usr/lib/gconv/LATIN-GREEK-1.so #usr/lib/gconv/LATIN-GREEK.so +#usr/lib/gconv/MAC-CENTRALEUROPE.so #usr/lib/gconv/MAC-IS.so #usr/lib/gconv/MAC-SAMI.so #usr/lib/gconv/MAC-UK.so @@ -735,6 +735,8 @@ usr/lib/gconv #usr/lib/glibc/getconf #usr/lib/glibc/getconf/POSIX_V6_ILP32_OFF32 #usr/lib/glibc/getconf/POSIX_V6_ILP32_OFFBIG +#usr/lib/glibc/getconf/POSIX_V7_ILP32_OFF32 +#usr/lib/glibc/getconf/POSIX_V7_ILP32_OFFBIG #usr/lib/glibc/pt_chown #usr/lib/libBrokenLocale.a #usr/lib/libBrokenLocale.so @@ -744,6 +746,7 @@ usr/lib/gconv #usr/lib/libc.a #usr/lib/libc.so #usr/lib/libc_nonshared.a +#usr/lib/libcidn.so #usr/lib/libcrypt.a #usr/lib/libcrypt.so #usr/lib/libdl.a @@ -787,6 +790,7 @@ usr/lib/locale/locale-archive #usr/share/i18n/charmaps/ASMO_449.gz #usr/share/i18n/charmaps/BIG5-HKSCS.gz #usr/share/i18n/charmaps/BIG5.gz +#usr/share/i18n/charmaps/BRF.gz #usr/share/i18n/charmaps/BS_4730.gz #usr/share/i18n/charmaps/BS_VIEWDATA.gz #usr/share/i18n/charmaps/CP10007.gz @@ -845,7 +849,11 @@ usr/lib/locale/locale-archive #usr/share/i18n/charmaps/GREEK-CCITT.gz #usr/share/i18n/charmaps/GREEK7-OLD.gz #usr/share/i18n/charmaps/GREEK7.gz +#usr/share/i18n/charmaps/HP-GREEK8.gz #usr/share/i18n/charmaps/HP-ROMAN8.gz +#usr/share/i18n/charmaps/HP-ROMAN9.gz +#usr/share/i18n/charmaps/HP-THAI8.gz +#usr/share/i18n/charmaps/HP-TURKISH8.gz #usr/share/i18n/charmaps/IBM037.gz #usr/share/i18n/charmaps/IBM038.gz #usr/share/i18n/charmaps/IBM1004.gz @@ -925,6 +933,7 @@ usr/lib/locale/locale-archive #usr/share/i18n/charmaps/ISO-8859-7.gz #usr/share/i18n/charmaps/ISO-8859-8.gz #usr/share/i18n/charmaps/ISO-8859-9.gz +#usr/share/i18n/charmaps/ISO-8859-9E.gz #usr/share/i18n/charmaps/ISO-IR-197.gz #usr/share/i18n/charmaps/ISO-IR-209.gz #usr/share/i18n/charmaps/ISO-IR-90.gz @@ -958,11 +967,13 @@ usr/lib/locale/locale-archive #usr/share/i18n/charmaps/JUS_I.B1.003-SERB.gz #usr/share/i18n/charmaps/KOI-8.gz #usr/share/i18n/charmaps/KOI8-R.gz +#usr/share/i18n/charmaps/KOI8-RU.gz #usr/share/i18n/charmaps/KOI8-T.gz #usr/share/i18n/charmaps/KOI8-U.gz #usr/share/i18n/charmaps/KSC5636.gz #usr/share/i18n/charmaps/LATIN-GREEK-1.gz #usr/share/i18n/charmaps/LATIN-GREEK.gz +#usr/share/i18n/charmaps/MAC-CENTRALEUROPE.gz #usr/share/i18n/charmaps/MAC-CYRILLIC.gz #usr/share/i18n/charmaps/MAC-IS.gz #usr/share/i18n/charmaps/MAC-SAMI.gz @@ -1028,12 +1039,17 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/ar_TN #usr/share/i18n/locales/ar_YE #usr/share/i18n/locales/as_IN +#usr/share/i18n/locales/ast_ES #usr/share/i18n/locales/az_AZ #usr/share/i18n/locales/be_BY #usr/share/i18n/locales/be_BY@latin +#usr/share/i18n/locales/ber_DZ +#usr/share/i18n/locales/ber_MA #usr/share/i18n/locales/bg_BG #usr/share/i18n/locales/bn_BD #usr/share/i18n/locales/bn_IN +#usr/share/i18n/locales/bo_CN +#usr/share/i18n/locales/bo_IN #usr/share/i18n/locales/br_FR #usr/share/i18n/locales/br_FR@euro #usr/share/i18n/locales/bs_BA @@ -1043,8 +1059,10 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/ca_ES@euro #usr/share/i18n/locales/ca_FR #usr/share/i18n/locales/ca_IT +#usr/share/i18n/locales/crh_UA #usr/share/i18n/locales/cs_CZ #usr/share/i18n/locales/csb_PL +#usr/share/i18n/locales/cv_RU #usr/share/i18n/locales/cy_GB #usr/share/i18n/locales/da_DK #usr/share/i18n/locales/de_AT @@ -1056,10 +1074,12 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/de_DE@euro #usr/share/i18n/locales/de_LU #usr/share/i18n/locales/de_LU@euro +#usr/share/i18n/locales/dv_MV #usr/share/i18n/locales/dz_BT #usr/share/i18n/locales/el_CY #usr/share/i18n/locales/el_GR #usr/share/i18n/locales/el_GR@euro +#usr/share/i18n/locales/en_AG #usr/share/i18n/locales/en_AU #usr/share/i18n/locales/en_BW #usr/share/i18n/locales/en_CA @@ -1069,6 +1089,7 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/en_IE #usr/share/i18n/locales/en_IE@euro #usr/share/i18n/locales/en_IN +#usr/share/i18n/locales/en_NG #usr/share/i18n/locales/en_NZ #usr/share/i18n/locales/en_PH #usr/share/i18n/locales/en_SG @@ -1102,6 +1123,7 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/fa_IR #usr/share/i18n/locales/fi_FI #usr/share/i18n/locales/fi_FI@euro +#usr/share/i18n/locales/fil_PH #usr/share/i18n/locales/fo_FO #usr/share/i18n/locales/fr_BE #usr/share/i18n/locales/fr_BE@euro @@ -1111,6 +1133,8 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/fr_FR@euro #usr/share/i18n/locales/fr_LU #usr/share/i18n/locales/fr_LU@euro +#usr/share/i18n/locales/fur_IT +#usr/share/i18n/locales/fy_DE #usr/share/i18n/locales/fy_NL #usr/share/i18n/locales/ga_IE #usr/share/i18n/locales/ga_IE@euro @@ -1123,19 +1147,27 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/gl_ES@euro #usr/share/i18n/locales/gu_IN #usr/share/i18n/locales/gv_GB +#usr/share/i18n/locales/ha_NG #usr/share/i18n/locales/he_IL #usr/share/i18n/locales/hi_IN +#usr/share/i18n/locales/hne_IN #usr/share/i18n/locales/hr_HR #usr/share/i18n/locales/hsb_DE +#usr/share/i18n/locales/ht_HT #usr/share/i18n/locales/hu_HU #usr/share/i18n/locales/hy_AM #usr/share/i18n/locales/i18n #usr/share/i18n/locales/id_ID +#usr/share/i18n/locales/ig_NG +#usr/share/i18n/locales/ik_CA #usr/share/i18n/locales/is_IS #usr/share/i18n/locales/iso14651_t1 +#usr/share/i18n/locales/iso14651_t1_common +#usr/share/i18n/locales/iso14651_t1_pinyin #usr/share/i18n/locales/it_CH #usr/share/i18n/locales/it_IT #usr/share/i18n/locales/it_IT@euro +#usr/share/i18n/locales/iu_CA #usr/share/i18n/locales/iw_IL #usr/share/i18n/locales/ja_JP #usr/share/i18n/locales/ka_GE @@ -1144,13 +1176,19 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/km_KH #usr/share/i18n/locales/kn_IN #usr/share/i18n/locales/ko_KR +#usr/share/i18n/locales/kok_IN +#usr/share/i18n/locales/ks_IN +#usr/share/i18n/locales/ks_IN@devanagari #usr/share/i18n/locales/ku_TR #usr/share/i18n/locales/kw_GB #usr/share/i18n/locales/ky_KG #usr/share/i18n/locales/lg_UG +#usr/share/i18n/locales/li_BE +#usr/share/i18n/locales/li_NL #usr/share/i18n/locales/lo_LA #usr/share/i18n/locales/lt_LT #usr/share/i18n/locales/lv_LV +#usr/share/i18n/locales/mai_IN #usr/share/i18n/locales/mg_MG #usr/share/i18n/locales/mi_NZ #usr/share/i18n/locales/mk_MK @@ -1159,13 +1197,19 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/mr_IN #usr/share/i18n/locales/ms_MY #usr/share/i18n/locales/mt_MT +#usr/share/i18n/locales/my_MM +#usr/share/i18n/locales/nan_TW@latin #usr/share/i18n/locales/nb_NO +#usr/share/i18n/locales/nds_DE +#usr/share/i18n/locales/nds_NL #usr/share/i18n/locales/ne_NP +#usr/share/i18n/locales/nl_AW #usr/share/i18n/locales/nl_BE #usr/share/i18n/locales/nl_BE@euro #usr/share/i18n/locales/nl_NL #usr/share/i18n/locales/nl_NL@euro #usr/share/i18n/locales/nn_NO +#usr/share/i18n/locales/no_NO #usr/share/i18n/locales/nr_ZA #usr/share/i18n/locales/nso_ZA #usr/share/i18n/locales/oc_FR @@ -1174,7 +1218,9 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/or_IN #usr/share/i18n/locales/pa_IN #usr/share/i18n/locales/pa_PK +#usr/share/i18n/locales/pap_AN #usr/share/i18n/locales/pl_PL +#usr/share/i18n/locales/ps_AF #usr/share/i18n/locales/pt_BR #usr/share/i18n/locales/pt_PT #usr/share/i18n/locales/pt_PT@euro @@ -1182,7 +1228,12 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/ru_RU #usr/share/i18n/locales/ru_UA #usr/share/i18n/locales/rw_RW +#usr/share/i18n/locales/sa_IN +#usr/share/i18n/locales/sc_IT +#usr/share/i18n/locales/sd_IN +#usr/share/i18n/locales/sd_IN@devanagari #usr/share/i18n/locales/se_NO +#usr/share/i18n/locales/shs_CA #usr/share/i18n/locales/si_LK #usr/share/i18n/locales/sid_ET #usr/share/i18n/locales/sk_SK @@ -1192,8 +1243,10 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/so_KE #usr/share/i18n/locales/so_SO #usr/share/i18n/locales/sq_AL -#usr/share/i18n/locales/sr_CS +#usr/share/i18n/locales/sq_MK #usr/share/i18n/locales/sr_ME +#usr/share/i18n/locales/sr_RS +#usr/share/i18n/locales/sr_RS@latin #usr/share/i18n/locales/ss_ZA #usr/share/i18n/locales/st_ZA #usr/share/i18n/locales/sv_FI @@ -1206,6 +1259,7 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/ti_ER #usr/share/i18n/locales/ti_ET #usr/share/i18n/locales/tig_ER +#usr/share/i18n/locales/tk_TM #usr/share/i18n/locales/tl_PH #usr/share/i18n/locales/tn_ZA #usr/share/i18n/locales/tr_CY @@ -1224,7 +1278,10 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/translit_wide #usr/share/i18n/locales/ts_ZA #usr/share/i18n/locales/tt_RU +#usr/share/i18n/locales/tt_RU@iqtelif +#usr/share/i18n/locales/ug_CN #usr/share/i18n/locales/uk_UA +#usr/share/i18n/locales/ur_IN #usr/share/i18n/locales/ur_PK #usr/share/i18n/locales/uz_UZ #usr/share/i18n/locales/uz_UZ@cyrillic @@ -1233,16 +1290,34 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/wa_BE #usr/share/i18n/locales/wa_BE@euro #usr/share/i18n/locales/wal_ET +#usr/share/i18n/locales/wo_SN #usr/share/i18n/locales/xh_ZA #usr/share/i18n/locales/yi_US +#usr/share/i18n/locales/yo_NG #usr/share/i18n/locales/zh_CN #usr/share/i18n/locales/zh_HK #usr/share/i18n/locales/zh_SG #usr/share/i18n/locales/zh_TW #usr/share/i18n/locales/zu_ZA +#usr/share/info/dir +#usr/share/info/libc.info +#usr/share/info/libc.info-1 +#usr/share/info/libc.info-10 +#usr/share/info/libc.info-11 +#usr/share/info/libc.info-2 +#usr/share/info/libc.info-3 +#usr/share/info/libc.info-4 +#usr/share/info/libc.info-5 +#usr/share/info/libc.info-6 +#usr/share/info/libc.info-7 +#usr/share/info/libc.info-8 +#usr/share/info/libc.info-9 #usr/share/locale/be #usr/share/locale/be/LC_MESSAGES #usr/share/locale/be/LC_MESSAGES/libc.mo +#usr/share/locale/bg +#usr/share/locale/bg/LC_MESSAGES +#usr/share/locale/bg/LC_MESSAGES/libc.mo #usr/share/locale/ca #usr/share/locale/ca/LC_MESSAGES #usr/share/locale/ca/LC_MESSAGES/libc.mo @@ -1279,6 +1354,9 @@ usr/lib/locale/locale-archive #usr/share/locale/hu #usr/share/locale/hu/LC_MESSAGES #usr/share/locale/hu/LC_MESSAGES/libc.mo +#usr/share/locale/id +#usr/share/locale/id/LC_MESSAGES +#usr/share/locale/id/LC_MESSAGES/libc.mo #usr/share/locale/it #usr/share/locale/it/LC_MESSAGES #usr/share/locale/it/LC_MESSAGES/libc.mo @@ -1289,6 +1367,9 @@ usr/lib/locale/locale-archive #usr/share/locale/ko/LC_MESSAGES #usr/share/locale/ko/LC_MESSAGES/libc.mo #usr/share/locale/locale.alias +#usr/share/locale/lt +#usr/share/locale/lt/LC_MESSAGES +#usr/share/locale/lt/LC_MESSAGES/libc.mo #usr/share/locale/nb #usr/share/locale/nb/LC_MESSAGES #usr/share/locale/nb/LC_MESSAGES/libc.mo @@ -1316,6 +1397,9 @@ usr/lib/locale/locale-archive #usr/share/locale/tr #usr/share/locale/tr/LC_MESSAGES #usr/share/locale/tr/LC_MESSAGES/libc.mo +#usr/share/locale/vi +#usr/share/locale/vi/LC_MESSAGES +#usr/share/locale/vi/LC_MESSAGES/libc.mo #usr/share/locale/zh_CN #usr/share/locale/zh_CN/LC_MESSAGES #usr/share/locale/zh_CN/LC_MESSAGES/libc.mo @@ -1327,6 +1411,7 @@ usr/lib/locale/locale-archive #usr/share/zoneinfo/Africa/Accra #usr/share/zoneinfo/Africa/Addis_Ababa #usr/share/zoneinfo/Africa/Algiers +#usr/share/zoneinfo/Africa/Asmara #usr/share/zoneinfo/Africa/Asmera #usr/share/zoneinfo/Africa/Bamako #usr/share/zoneinfo/Africa/Bangui @@ -1390,16 +1475,20 @@ usr/lib/locale/locale-archive #usr/share/zoneinfo/America/Argentina/La_Rioja #usr/share/zoneinfo/America/Argentina/Mendoza #usr/share/zoneinfo/America/Argentina/Rio_Gallegos +#usr/share/zoneinfo/America/Argentina/Salta #usr/share/zoneinfo/America/Argentina/San_Juan +#usr/share/zoneinfo/America/Argentina/San_Luis #usr/share/zoneinfo/America/Argentina/Tucuman #usr/share/zoneinfo/America/Argentina/Ushuaia #usr/share/zoneinfo/America/Aruba #usr/share/zoneinfo/America/Asuncion +#usr/share/zoneinfo/America/Atikokan #usr/share/zoneinfo/America/Atka #usr/share/zoneinfo/America/Bahia #usr/share/zoneinfo/America/Barbados #usr/share/zoneinfo/America/Belem #usr/share/zoneinfo/America/Belize +#usr/share/zoneinfo/America/Blanc-Sablon #usr/share/zoneinfo/America/Boa_Vista #usr/share/zoneinfo/America/Bogota #usr/share/zoneinfo/America/Boise @@ -1447,8 +1536,10 @@ usr/lib/locale/locale-archive #usr/share/zoneinfo/America/Indiana/Knox #usr/share/zoneinfo/America/Indiana/Marengo #usr/share/zoneinfo/America/Indiana/Petersburg +#usr/share/zoneinfo/America/Indiana/Tell_City #usr/share/zoneinfo/America/Indiana/Vevay #usr/share/zoneinfo/America/Indiana/Vincennes +#usr/share/zoneinfo/America/Indiana/Winamac #usr/share/zoneinfo/America/Indianapolis #usr/share/zoneinfo/America/Inuvik #usr/share/zoneinfo/America/Iqaluit @@ -1466,6 +1557,7 @@ usr/lib/locale/locale-archive #usr/share/zoneinfo/America/Maceio #usr/share/zoneinfo/America/Managua #usr/share/zoneinfo/America/Manaus +#usr/share/zoneinfo/America/Marigot #usr/share/zoneinfo/America/Martinique #usr/share/zoneinfo/America/Mazatlan #usr/share/zoneinfo/America/Mendoza @@ -1485,6 +1577,7 @@ usr/lib/locale/locale-archive #usr/share/zoneinfo/America/Noronha #usr/share/zoneinfo/America/North_Dakota #usr/share/zoneinfo/America/North_Dakota/Center +#usr/share/zoneinfo/America/North_Dakota/New_Salem #usr/share/zoneinfo/America/Panama #usr/share/zoneinfo/America/Pangnirtung #usr/share/zoneinfo/America/Paramaribo @@ -1498,13 +1591,16 @@ usr/lib/locale/locale-archive #usr/share/zoneinfo/America/Rankin_Inlet #usr/share/zoneinfo/America/Recife #usr/share/zoneinfo/America/Regina +#usr/share/zoneinfo/America/Resolute #usr/share/zoneinfo/America/Rio_Branco #usr/share/zoneinfo/America/Rosario +#usr/share/zoneinfo/America/Santarem #usr/share/zoneinfo/America/Santiago #usr/share/zoneinfo/America/Santo_Domingo #usr/share/zoneinfo/America/Sao_Paulo #usr/share/zoneinfo/America/Scoresbysund #usr/share/zoneinfo/America/Shiprock +#usr/share/zoneinfo/America/St_Barthelemy #usr/share/zoneinfo/America/St_Johns #usr/share/zoneinfo/America/St_Kitts #usr/share/zoneinfo/America/St_Lucia @@ -1565,6 +1661,7 @@ usr/lib/locale/locale-archive #usr/share/zoneinfo/Asia/Dushanbe #usr/share/zoneinfo/Asia/Gaza #usr/share/zoneinfo/Asia/Harbin +#usr/share/zoneinfo/Asia/Ho_Chi_Minh #usr/share/zoneinfo/Asia/Hong_Kong #usr/share/zoneinfo/Asia/Hovd #usr/share/zoneinfo/Asia/Irkutsk @@ -1576,7 +1673,9 @@ usr/lib/locale/locale-archive #usr/share/zoneinfo/Asia/Kamchatka #usr/share/zoneinfo/Asia/Karachi #usr/share/zoneinfo/Asia/Kashgar +#usr/share/zoneinfo/Asia/Kathmandu #usr/share/zoneinfo/Asia/Katmandu +#usr/share/zoneinfo/Asia/Kolkata #usr/share/zoneinfo/Asia/Krasnoyarsk #usr/share/zoneinfo/Asia/Kuala_Lumpur #usr/share/zoneinfo/Asia/Kuching @@ -1630,6 +1729,7 @@ usr/lib/locale/locale-archive #usr/share/zoneinfo/Atlantic/Canary #usr/share/zoneinfo/Atlantic/Cape_Verde #usr/share/zoneinfo/Atlantic/Faeroe +#usr/share/zoneinfo/Atlantic/Faroe #usr/share/zoneinfo/Atlantic/Jan_Mayen #usr/share/zoneinfo/Atlantic/Madeira #usr/share/zoneinfo/Atlantic/Reykjavik @@ -1644,6 +1744,7 @@ usr/lib/locale/locale-archive #usr/share/zoneinfo/Australia/Canberra #usr/share/zoneinfo/Australia/Currie #usr/share/zoneinfo/Australia/Darwin +#usr/share/zoneinfo/Australia/Eucla #usr/share/zoneinfo/Australia/Hobart #usr/share/zoneinfo/Australia/LHI #usr/share/zoneinfo/Australia/Lindeman @@ -1736,8 +1837,11 @@ usr/lib/locale/locale-archive #usr/share/zoneinfo/Europe/Copenhagen #usr/share/zoneinfo/Europe/Dublin #usr/share/zoneinfo/Europe/Gibraltar +#usr/share/zoneinfo/Europe/Guernsey #usr/share/zoneinfo/Europe/Helsinki +#usr/share/zoneinfo/Europe/Isle_of_Man #usr/share/zoneinfo/Europe/Istanbul +#usr/share/zoneinfo/Europe/Jersey #usr/share/zoneinfo/Europe/Kaliningrad #usr/share/zoneinfo/Europe/Kiev #usr/share/zoneinfo/Europe/Lisbon @@ -1753,6 +1857,7 @@ usr/lib/locale/locale-archive #usr/share/zoneinfo/Europe/Nicosia #usr/share/zoneinfo/Europe/Oslo #usr/share/zoneinfo/Europe/Paris +#usr/share/zoneinfo/Europe/Podgorica #usr/share/zoneinfo/Europe/Prague #usr/share/zoneinfo/Europe/Riga #usr/share/zoneinfo/Europe/Rome @@ -1771,6 +1876,7 @@ usr/lib/locale/locale-archive #usr/share/zoneinfo/Europe/Vatican #usr/share/zoneinfo/Europe/Vienna #usr/share/zoneinfo/Europe/Vilnius +#usr/share/zoneinfo/Europe/Volgograd #usr/share/zoneinfo/Europe/Warsaw #usr/share/zoneinfo/Europe/Zagreb #usr/share/zoneinfo/Europe/Zaporozhye @@ -1893,6 +1999,7 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/posix/Africa/Accra #usr/share/zoneinfo/posix/Africa/Addis_Ababa #usr/share/zoneinfo/posix/Africa/Algiers +#usr/share/zoneinfo/posix/Africa/Asmara #usr/share/zoneinfo/posix/Africa/Asmera #usr/share/zoneinfo/posix/Africa/Bamako #usr/share/zoneinfo/posix/Africa/Bangui @@ -1956,16 +2063,20 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/posix/America/Argentina/La_Rioja #usr/share/zoneinfo/posix/America/Argentina/Mendoza #usr/share/zoneinfo/posix/America/Argentina/Rio_Gallegos +#usr/share/zoneinfo/posix/America/Argentina/Salta #usr/share/zoneinfo/posix/America/Argentina/San_Juan +#usr/share/zoneinfo/posix/America/Argentina/San_Luis #usr/share/zoneinfo/posix/America/Argentina/Tucuman #usr/share/zoneinfo/posix/America/Argentina/Ushuaia #usr/share/zoneinfo/posix/America/Aruba #usr/share/zoneinfo/posix/America/Asuncion +#usr/share/zoneinfo/posix/America/Atikokan #usr/share/zoneinfo/posix/America/Atka #usr/share/zoneinfo/posix/America/Bahia #usr/share/zoneinfo/posix/America/Barbados #usr/share/zoneinfo/posix/America/Belem #usr/share/zoneinfo/posix/America/Belize +#usr/share/zoneinfo/posix/America/Blanc-Sablon #usr/share/zoneinfo/posix/America/Boa_Vista #usr/share/zoneinfo/posix/America/Bogota #usr/share/zoneinfo/posix/America/Boise @@ -2013,8 +2124,10 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/posix/America/Indiana/Knox #usr/share/zoneinfo/posix/America/Indiana/Marengo #usr/share/zoneinfo/posix/America/Indiana/Petersburg +#usr/share/zoneinfo/posix/America/Indiana/Tell_City #usr/share/zoneinfo/posix/America/Indiana/Vevay #usr/share/zoneinfo/posix/America/Indiana/Vincennes +#usr/share/zoneinfo/posix/America/Indiana/Winamac #usr/share/zoneinfo/posix/America/Indianapolis #usr/share/zoneinfo/posix/America/Inuvik #usr/share/zoneinfo/posix/America/Iqaluit @@ -2032,6 +2145,7 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/posix/America/Maceio #usr/share/zoneinfo/posix/America/Managua #usr/share/zoneinfo/posix/America/Manaus +#usr/share/zoneinfo/posix/America/Marigot #usr/share/zoneinfo/posix/America/Martinique #usr/share/zoneinfo/posix/America/Mazatlan #usr/share/zoneinfo/posix/America/Mendoza @@ -2051,6 +2165,7 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/posix/America/Noronha #usr/share/zoneinfo/posix/America/North_Dakota #usr/share/zoneinfo/posix/America/North_Dakota/Center +#usr/share/zoneinfo/posix/America/North_Dakota/New_Salem #usr/share/zoneinfo/posix/America/Panama #usr/share/zoneinfo/posix/America/Pangnirtung #usr/share/zoneinfo/posix/America/Paramaribo @@ -2064,13 +2179,16 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/posix/America/Rankin_Inlet #usr/share/zoneinfo/posix/America/Recife #usr/share/zoneinfo/posix/America/Regina +#usr/share/zoneinfo/posix/America/Resolute #usr/share/zoneinfo/posix/America/Rio_Branco #usr/share/zoneinfo/posix/America/Rosario +#usr/share/zoneinfo/posix/America/Santarem #usr/share/zoneinfo/posix/America/Santiago #usr/share/zoneinfo/posix/America/Santo_Domingo #usr/share/zoneinfo/posix/America/Sao_Paulo #usr/share/zoneinfo/posix/America/Scoresbysund #usr/share/zoneinfo/posix/America/Shiprock +#usr/share/zoneinfo/posix/America/St_Barthelemy #usr/share/zoneinfo/posix/America/St_Johns #usr/share/zoneinfo/posix/America/St_Kitts #usr/share/zoneinfo/posix/America/St_Lucia @@ -2131,6 +2249,7 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/posix/Asia/Dushanbe #usr/share/zoneinfo/posix/Asia/Gaza #usr/share/zoneinfo/posix/Asia/Harbin +#usr/share/zoneinfo/posix/Asia/Ho_Chi_Minh #usr/share/zoneinfo/posix/Asia/Hong_Kong #usr/share/zoneinfo/posix/Asia/Hovd #usr/share/zoneinfo/posix/Asia/Irkutsk @@ -2142,7 +2261,9 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/posix/Asia/Kamchatka #usr/share/zoneinfo/posix/Asia/Karachi #usr/share/zoneinfo/posix/Asia/Kashgar +#usr/share/zoneinfo/posix/Asia/Kathmandu #usr/share/zoneinfo/posix/Asia/Katmandu +#usr/share/zoneinfo/posix/Asia/Kolkata #usr/share/zoneinfo/posix/Asia/Krasnoyarsk #usr/share/zoneinfo/posix/Asia/Kuala_Lumpur #usr/share/zoneinfo/posix/Asia/Kuching @@ -2196,6 +2317,7 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/posix/Atlantic/Canary #usr/share/zoneinfo/posix/Atlantic/Cape_Verde #usr/share/zoneinfo/posix/Atlantic/Faeroe +#usr/share/zoneinfo/posix/Atlantic/Faroe #usr/share/zoneinfo/posix/Atlantic/Jan_Mayen #usr/share/zoneinfo/posix/Atlantic/Madeira #usr/share/zoneinfo/posix/Atlantic/Reykjavik @@ -2210,6 +2332,7 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/posix/Australia/Canberra #usr/share/zoneinfo/posix/Australia/Currie #usr/share/zoneinfo/posix/Australia/Darwin +#usr/share/zoneinfo/posix/Australia/Eucla #usr/share/zoneinfo/posix/Australia/Hobart #usr/share/zoneinfo/posix/Australia/LHI #usr/share/zoneinfo/posix/Australia/Lindeman @@ -2302,8 +2425,11 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/posix/Europe/Copenhagen #usr/share/zoneinfo/posix/Europe/Dublin #usr/share/zoneinfo/posix/Europe/Gibraltar +#usr/share/zoneinfo/posix/Europe/Guernsey #usr/share/zoneinfo/posix/Europe/Helsinki +#usr/share/zoneinfo/posix/Europe/Isle_of_Man #usr/share/zoneinfo/posix/Europe/Istanbul +#usr/share/zoneinfo/posix/Europe/Jersey #usr/share/zoneinfo/posix/Europe/Kaliningrad #usr/share/zoneinfo/posix/Europe/Kiev #usr/share/zoneinfo/posix/Europe/Lisbon @@ -2319,6 +2445,7 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/posix/Europe/Nicosia #usr/share/zoneinfo/posix/Europe/Oslo #usr/share/zoneinfo/posix/Europe/Paris +#usr/share/zoneinfo/posix/Europe/Podgorica #usr/share/zoneinfo/posix/Europe/Prague #usr/share/zoneinfo/posix/Europe/Riga #usr/share/zoneinfo/posix/Europe/Rome @@ -2337,6 +2464,7 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/posix/Europe/Vatican #usr/share/zoneinfo/posix/Europe/Vienna #usr/share/zoneinfo/posix/Europe/Vilnius +#usr/share/zoneinfo/posix/Europe/Volgograd #usr/share/zoneinfo/posix/Europe/Warsaw #usr/share/zoneinfo/posix/Europe/Zagreb #usr/share/zoneinfo/posix/Europe/Zaporozhye @@ -2459,6 +2587,7 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/right/Africa/Accra #usr/share/zoneinfo/right/Africa/Addis_Ababa #usr/share/zoneinfo/right/Africa/Algiers +#usr/share/zoneinfo/right/Africa/Asmara #usr/share/zoneinfo/right/Africa/Asmera #usr/share/zoneinfo/right/Africa/Bamako #usr/share/zoneinfo/right/Africa/Bangui @@ -2522,16 +2651,20 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/right/America/Argentina/La_Rioja #usr/share/zoneinfo/right/America/Argentina/Mendoza #usr/share/zoneinfo/right/America/Argentina/Rio_Gallegos +#usr/share/zoneinfo/right/America/Argentina/Salta #usr/share/zoneinfo/right/America/Argentina/San_Juan +#usr/share/zoneinfo/right/America/Argentina/San_Luis #usr/share/zoneinfo/right/America/Argentina/Tucuman #usr/share/zoneinfo/right/America/Argentina/Ushuaia #usr/share/zoneinfo/right/America/Aruba #usr/share/zoneinfo/right/America/Asuncion +#usr/share/zoneinfo/right/America/Atikokan #usr/share/zoneinfo/right/America/Atka #usr/share/zoneinfo/right/America/Bahia #usr/share/zoneinfo/right/America/Barbados #usr/share/zoneinfo/right/America/Belem #usr/share/zoneinfo/right/America/Belize +#usr/share/zoneinfo/right/America/Blanc-Sablon #usr/share/zoneinfo/right/America/Boa_Vista #usr/share/zoneinfo/right/America/Bogota #usr/share/zoneinfo/right/America/Boise @@ -2579,8 +2712,10 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/right/America/Indiana/Knox #usr/share/zoneinfo/right/America/Indiana/Marengo #usr/share/zoneinfo/right/America/Indiana/Petersburg +#usr/share/zoneinfo/right/America/Indiana/Tell_City #usr/share/zoneinfo/right/America/Indiana/Vevay #usr/share/zoneinfo/right/America/Indiana/Vincennes +#usr/share/zoneinfo/right/America/Indiana/Winamac #usr/share/zoneinfo/right/America/Indianapolis #usr/share/zoneinfo/right/America/Inuvik #usr/share/zoneinfo/right/America/Iqaluit @@ -2598,6 +2733,7 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/right/America/Maceio #usr/share/zoneinfo/right/America/Managua #usr/share/zoneinfo/right/America/Manaus +#usr/share/zoneinfo/right/America/Marigot #usr/share/zoneinfo/right/America/Martinique #usr/share/zoneinfo/right/America/Mazatlan #usr/share/zoneinfo/right/America/Mendoza @@ -2617,6 +2753,7 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/right/America/Noronha #usr/share/zoneinfo/right/America/North_Dakota #usr/share/zoneinfo/right/America/North_Dakota/Center +#usr/share/zoneinfo/right/America/North_Dakota/New_Salem #usr/share/zoneinfo/right/America/Panama #usr/share/zoneinfo/right/America/Pangnirtung #usr/share/zoneinfo/right/America/Paramaribo @@ -2630,13 +2767,16 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/right/America/Rankin_Inlet #usr/share/zoneinfo/right/America/Recife #usr/share/zoneinfo/right/America/Regina +#usr/share/zoneinfo/right/America/Resolute #usr/share/zoneinfo/right/America/Rio_Branco #usr/share/zoneinfo/right/America/Rosario +#usr/share/zoneinfo/right/America/Santarem #usr/share/zoneinfo/right/America/Santiago #usr/share/zoneinfo/right/America/Santo_Domingo #usr/share/zoneinfo/right/America/Sao_Paulo #usr/share/zoneinfo/right/America/Scoresbysund #usr/share/zoneinfo/right/America/Shiprock +#usr/share/zoneinfo/right/America/St_Barthelemy #usr/share/zoneinfo/right/America/St_Johns #usr/share/zoneinfo/right/America/St_Kitts #usr/share/zoneinfo/right/America/St_Lucia @@ -2697,6 +2837,7 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/right/Asia/Dushanbe #usr/share/zoneinfo/right/Asia/Gaza #usr/share/zoneinfo/right/Asia/Harbin +#usr/share/zoneinfo/right/Asia/Ho_Chi_Minh #usr/share/zoneinfo/right/Asia/Hong_Kong #usr/share/zoneinfo/right/Asia/Hovd #usr/share/zoneinfo/right/Asia/Irkutsk @@ -2708,7 +2849,9 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/right/Asia/Kamchatka #usr/share/zoneinfo/right/Asia/Karachi #usr/share/zoneinfo/right/Asia/Kashgar +#usr/share/zoneinfo/right/Asia/Kathmandu #usr/share/zoneinfo/right/Asia/Katmandu +#usr/share/zoneinfo/right/Asia/Kolkata #usr/share/zoneinfo/right/Asia/Krasnoyarsk #usr/share/zoneinfo/right/Asia/Kuala_Lumpur #usr/share/zoneinfo/right/Asia/Kuching @@ -2762,6 +2905,7 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/right/Atlantic/Canary #usr/share/zoneinfo/right/Atlantic/Cape_Verde #usr/share/zoneinfo/right/Atlantic/Faeroe +#usr/share/zoneinfo/right/Atlantic/Faroe #usr/share/zoneinfo/right/Atlantic/Jan_Mayen #usr/share/zoneinfo/right/Atlantic/Madeira #usr/share/zoneinfo/right/Atlantic/Reykjavik @@ -2776,6 +2920,7 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/right/Australia/Canberra #usr/share/zoneinfo/right/Australia/Currie #usr/share/zoneinfo/right/Australia/Darwin +#usr/share/zoneinfo/right/Australia/Eucla #usr/share/zoneinfo/right/Australia/Hobart #usr/share/zoneinfo/right/Australia/LHI #usr/share/zoneinfo/right/Australia/Lindeman @@ -2868,8 +3013,11 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/right/Europe/Copenhagen #usr/share/zoneinfo/right/Europe/Dublin #usr/share/zoneinfo/right/Europe/Gibraltar +#usr/share/zoneinfo/right/Europe/Guernsey #usr/share/zoneinfo/right/Europe/Helsinki +#usr/share/zoneinfo/right/Europe/Isle_of_Man #usr/share/zoneinfo/right/Europe/Istanbul +#usr/share/zoneinfo/right/Europe/Jersey #usr/share/zoneinfo/right/Europe/Kaliningrad #usr/share/zoneinfo/right/Europe/Kiev #usr/share/zoneinfo/right/Europe/Lisbon @@ -2885,6 +3033,7 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/right/Europe/Nicosia #usr/share/zoneinfo/right/Europe/Oslo #usr/share/zoneinfo/right/Europe/Paris +#usr/share/zoneinfo/right/Europe/Podgorica #usr/share/zoneinfo/right/Europe/Prague #usr/share/zoneinfo/right/Europe/Riga #usr/share/zoneinfo/right/Europe/Rome @@ -2903,6 +3052,7 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/right/Europe/Vatican #usr/share/zoneinfo/right/Europe/Vienna #usr/share/zoneinfo/right/Europe/Vilnius +#usr/share/zoneinfo/right/Europe/Volgograd #usr/share/zoneinfo/right/Europe/Warsaw #usr/share/zoneinfo/right/Europe/Zagreb #usr/share/zoneinfo/right/Europe/Zaporozhye @@ -3019,3 +3169,5 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/right/WET #usr/share/zoneinfo/right/Zulu #usr/share/zoneinfo/zone.tab +#var/cache/ldconfig +#var/cache/ldconfig/aux-cache diff --git a/config/rootfiles/common/i586/grub b/config/rootfiles/common/i586/grub index e466ff0..3e1ec18 100644 --- a/config/rootfiles/common/i586/grub +++ b/config/rootfiles/common/i586/grub @@ -7,11 +7,13 @@ boot/grub/stage2 #usr/info/grub.info #usr/info/multiboot.info #usr/man/man1/mbchk.1 +#usr/man/man8/grub-crypt.8 #usr/man/man8/grub-install.8 #usr/man/man8/grub-md5-crypt.8 #usr/man/man8/grub-terminfo.8 #usr/man/man8/grub.8 usr/sbin/grub +usr/sbin/grub-crypt usr/sbin/grub-install usr/sbin/grub-md5-crypt usr/sbin/grub-terminfo diff --git a/config/rootfiles/common/iproute2 b/config/rootfiles/common/iproute2 index 8f179d7..bb4c05b 100644 --- a/config/rootfiles/common/iproute2 +++ b/config/rootfiles/common/iproute2 @@ -1,11 +1,14 @@ #etc/iproute2 etc/iproute2/ematch_map +etc/iproute2/group etc/iproute2/rt_dsfield etc/iproute2/rt_protos etc/iproute2/rt_realms etc/iproute2/rt_scopes etc/iproute2/rt_tables +sbin/bridge sbin/ctstat +sbin/genl sbin/ifcfg sbin/ifstat sbin/ip @@ -24,7 +27,6 @@ sbin/tc #usr/lib/tc/normal.dist #usr/lib/tc/pareto.dist #usr/lib/tc/paretonormal.dist -#usr/lib/tc/q_netem.so usr/sbin/arpd #usr/share/doc/iproute2 #usr/share/doc/iproute2/SNAPSHOT.tex @@ -50,6 +52,7 @@ usr/sbin/arpd #usr/share/doc/iproute2/examples/diffserv/ef-prio #usr/share/doc/iproute2/examples/diffserv/efcbq #usr/share/doc/iproute2/examples/diffserv/regression-testing +#usr/share/doc/iproute2/examples/gaiconf #usr/share/doc/iproute2/ip-cref.tex #usr/share/doc/iproute2/ip-tunnels.tex #usr/share/doc/iproute2/nstat.sgml @@ -57,16 +60,48 @@ usr/sbin/arpd #usr/share/doc/iproute2/rtstat.sgml #usr/share/doc/iproute2/ss.sgml #usr/share/man/man3/libnetlink.3 +#usr/share/man/man8/arpd.8 +#usr/share/man/man8/bridge.8 +#usr/share/man/man8/ctstat.8 +#usr/share/man/man8/ip-address.8 +#usr/share/man/man8/ip-addrlabel.8 +#usr/share/man/man8/ip-link.8 +#usr/share/man/man8/ip-maddress.8 +#usr/share/man/man8/ip-monitor.8 +#usr/share/man/man8/ip-mroute.8 +#usr/share/man/man8/ip-neighbour.8 +#usr/share/man/man8/ip-netns.8 +#usr/share/man/man8/ip-ntable.8 +#usr/share/man/man8/ip-route.8 +#usr/share/man/man8/ip-rule.8 +#usr/share/man/man8/ip-tunnel.8 +#usr/share/man/man8/ip-xfrm.8 #usr/share/man/man8/ip.8 +#usr/share/man/man8/lnstat.8 +#usr/share/man/man8/nstat.8 +#usr/share/man/man8/routef.8 +#usr/share/man/man8/routel.8 +#usr/share/man/man8/rtacct.8 +#usr/share/man/man8/rtmon.8 +#usr/share/man/man8/rtstat.8 +#usr/share/man/man8/ss.8 #usr/share/man/man8/tc-bfifo.8 #usr/share/man/man8/tc-cbq-details.8 #usr/share/man/man8/tc-cbq.8 +#usr/share/man/man8/tc-choke.8 +#usr/share/man/man8/tc-codel.8 +#usr/share/man/man8/tc-drr.8 +#usr/share/man/man8/tc-fq_codel.8 +#usr/share/man/man8/tc-hfsc.8 #usr/share/man/man8/tc-htb.8 -#usr/share/man/man8/tc-pbfifo.8 +#usr/share/man/man8/tc-netem.8 #usr/share/man/man8/tc-pfifo.8 #usr/share/man/man8/tc-pfifo_fast.8 #usr/share/man/man8/tc-prio.8 #usr/share/man/man8/tc-red.8 +#usr/share/man/man8/tc-sfb.8 #usr/share/man/man8/tc-sfq.8 +#usr/share/man/man8/tc-stab.8 #usr/share/man/man8/tc-tbf.8 #usr/share/man/man8/tc.8 +var/lib/arpd diff --git a/config/rootfiles/common/iptstate b/config/rootfiles/common/iptstate deleted file mode 100644 index 57b6d0f..0000000 --- a/config/rootfiles/common/iptstate +++ /dev/null @@ -1,2 +0,0 @@ -usr/sbin/iptstate -#usr/share/man/man8/iptstate.8 diff --git a/config/rootfiles/common/libaal b/config/rootfiles/common/libaal deleted file mode 100644 index de785eb..0000000 --- a/config/rootfiles/common/libaal +++ /dev/null @@ -1,31 +0,0 @@ -#usr/include/aal -#usr/include/aal/bitops.h -#usr/include/aal/block.h -#usr/include/aal/debug.h -#usr/include/aal/device.h -#usr/include/aal/endian.h -#usr/include/aal/exception.h -#usr/include/aal/file.h -#usr/include/aal/gauge.h -#usr/include/aal/hash.h -#usr/include/aal/libaal.h -#usr/include/aal/list.h -#usr/include/aal/malloc.h -#usr/include/aal/math.h -#usr/include/aal/print.h -#usr/include/aal/stream.h -#usr/include/aal/string.h -#usr/include/aal/types.h -#usr/include/aal/ui.h -#usr/include/aal/unaligned.h -usr/lib/libaal-1.0.so.5 -usr/lib/libaal-1.0.so.5.0.0 -#usr/lib/libaal-minimal.a -#usr/lib/libaal-minimal.la -usr/lib/libaal-minimal.so -usr/lib/libaal-minimal.so.0 -usr/lib/libaal-minimal.so.0.0.0 -#usr/lib/libaal.a -#usr/lib/libaal.la -usr/lib/libaal.so -#usr/share/aclocal/libaal.m4 diff --git a/config/rootfiles/common/libffi b/config/rootfiles/common/libffi new file mode 100644 index 0000000..2c887bd --- /dev/null +++ b/config/rootfiles/common/libffi @@ -0,0 +1,15 @@ +#usr/lib/libffi-3.0.11 +#usr/lib/libffi-3.0.11/include +#usr/lib/libffi-3.0.11/include/ffi.h +#usr/lib/libffi-3.0.11/include/ffitarget.h +#usr/lib/libffi.a +#usr/lib/libffi.la +#usr/lib/libffi.so +usr/lib/libffi.so.6 +usr/lib/libffi.so.6.0.0 +#usr/lib/pkgconfig/libffi.pc +#usr/share/info/libffi.info +#usr/share/man/man3/ffi.3 +#usr/share/man/man3/ffi_call.3 +#usr/share/man/man3/ffi_prep_cif.3 +#usr/share/man/man3/ffi_prep_cif_var.3 diff --git a/config/rootfiles/common/libsafe b/config/rootfiles/common/libsafe deleted file mode 100644 index 8275e4a..0000000 --- a/config/rootfiles/common/libsafe +++ /dev/null @@ -1,4 +0,0 @@ -etc/ld.so.preload -lib/libsafe.so.2 -lib/libsafe.so.2.0.16 -#usr/man/man8/libsafe.8 diff --git a/config/rootfiles/common/libsigc++ b/config/rootfiles/common/libsigc++ index 39029d3..a05b64b 100644 --- a/config/rootfiles/common/libsigc++ +++ b/config/rootfiles/common/libsigc++ @@ -78,7 +78,7 @@ #usr/include/sigc++-2.0/sigc++/visit_each.h #usr/lib/libsigc-2.0.a #usr/lib/libsigc-2.0.la -usr/lib/libsigc-2.0.so +#usr/lib/libsigc-2.0.so usr/lib/libsigc-2.0.so.0 usr/lib/libsigc-2.0.so.0.0.0 #usr/lib/pkgconfig/sigc++-2.0.pc @@ -157,6 +157,7 @@ usr/lib/libsigc-2.0.so.0.0.0 #usr/share/doc/libsigc-2.0/docs/reference/html/classes.html #usr/share/doc/libsigc-2.0/docs/reference/html/classinternal_1_1lambda__core.html #usr/share/doc/libsigc-2.0/docs/reference/html/classinternal_1_1lambda__core__inherit__graph.png +#usr/share/doc/libsigc-2.0/docs/reference/html/classnil.html #usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__argument-members.html #usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__argument.html #usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__argument_3_01const__reference__wrapper_3_01T__wrapped_01_4_01_4-members.html @@ -460,15 +461,6 @@ usr/lib/libsigc-2.0.so.0.0.0 #usr/share/doc/libsigc-2.0/docs/reference/html/connection_8h.html #usr/share/doc/libsigc-2.0/docs/reference/html/deduce__result__type_8h.html #usr/share/doc/libsigc-2.0/docs/reference/html/deprecated.html -#usr/share/doc/libsigc-2.0/docs/reference/html/dir__2Fhome_2Fmurrayc_2Fcvs_2Fgnome214_2Flibsigc_2B_2B2_2Fsigc_2B_2B_2F.html -#usr/share/doc/libsigc-2.0/docs/reference/html/dir__2Fhome_2Fmurrayc_2Fcvs_2Fgnome214_2Flibsigc_2B_2B2_2Fsigc_2B_2B_2F_dep.png -#usr/share/doc/libsigc-2.0/docs/reference/html/dir__2Fhome_2Fmurrayc_2Fcvs_2Fgnome214_2Flibsigc_2B_2B2_2Fsigc_2B_2B_2Fadaptors_2F.html -#usr/share/doc/libsigc-2.0/docs/reference/html/dir__2Fhome_2Fmurrayc_2Fcvs_2Fgnome214_2Flibsigc_2B_2B2_2Fsigc_2B_2B_2Fadaptors_2F_dep.png -#usr/share/doc/libsigc-2.0/docs/reference/html/dir__2Fhome_2Fmurrayc_2Fcvs_2Fgnome214_2Flibsigc_2B_2B2_2Fsigc_2B_2B_2Fadaptors_2Flambda_2F.html -#usr/share/doc/libsigc-2.0/docs/reference/html/dir__2Fhome_2Fmurrayc_2Fcvs_2Fgnome214_2Flibsigc_2B_2B2_2Fsigc_2B_2B_2Fadaptors_2Flambda_2F_dep.png -#usr/share/doc/libsigc-2.0/docs/reference/html/dir__2Fhome_2Fmurrayc_2Fcvs_2Fgnome214_2Flibsigc_2B_2B2_2Fsigc_2B_2B_2Ffunctors_2F.html -#usr/share/doc/libsigc-2.0/docs/reference/html/dir__2Fhome_2Fmurrayc_2Fcvs_2Fgnome214_2Flibsigc_2B_2B2_2Fsigc_2B_2B_2Ffunctors_2F_dep.png -#usr/share/doc/libsigc-2.0/docs/reference/html/dirs.html #usr/share/doc/libsigc-2.0/docs/reference/html/doxygen.css #usr/share/doc/libsigc-2.0/docs/reference/html/doxygen.png #usr/share/doc/libsigc-2.0/docs/reference/html/exception__catch_8h.html @@ -515,15 +507,40 @@ usr/lib/libsigc-2.0.so.0.0.0 #usr/share/doc/libsigc-2.0/docs/reference/html/functions_func_0x7e.html #usr/share/doc/libsigc-2.0/docs/reference/html/functions_rela.html #usr/share/doc/libsigc-2.0/docs/reference/html/functions_type.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_type_0x63.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_type_0x64.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_type_0x65.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_type_0x66.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_type_0x67.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_type_0x69.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_type_0x6c.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_type_0x6f.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_type_0x70.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_type_0x72.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_type_0x73.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_type_0x74.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_type_0x76.html #usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x61.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x62.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x63.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x64.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x65.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x66.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x67.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x69.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x6c.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x6f.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x70.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x72.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x73.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x74.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x76.html #usr/share/doc/libsigc-2.0/docs/reference/html/functor__trait_8h.html #usr/share/doc/libsigc-2.0/docs/reference/html/functors_2slot_8h.html #usr/share/doc/libsigc-2.0/docs/reference/html/functors_8h.html #usr/share/doc/libsigc-2.0/docs/reference/html/globals.html #usr/share/doc/libsigc-2.0/docs/reference/html/globals_defs.html -#usr/share/doc/libsigc-2.0/docs/reference/html/globals_func.html -#usr/share/doc/libsigc-2.0/docs/reference/html/globals_type.html -#usr/share/doc/libsigc-2.0/docs/reference/html/globals_vars.html #usr/share/doc/libsigc-2.0/docs/reference/html/graph_legend.dot #usr/share/doc/libsigc-2.0/docs/reference/html/graph_legend.html #usr/share/doc/libsigc-2.0/docs/reference/html/graph_legend.png @@ -740,6 +757,7 @@ usr/lib/libsigc-2.0.so.0.0.0 #usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__260.png #usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__261.png #usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__262.png +#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__263.png #usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__27.png #usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__28.png #usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__29.png @@ -828,7 +846,33 @@ usr/lib/libsigc-2.0.so.0.0.0 #usr/share/doc/libsigc-2.0/docs/reference/html/modules.html #usr/share/doc/libsigc-2.0/docs/reference/html/namespaceSigC.html #usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x62.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x63.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x64.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x65.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x66.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x67.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x68.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x6d.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x6f.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x70.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x72.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x73.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x75.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x76.html #usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_func.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_func_0x63.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_func_0x64.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_func_0x65.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_func_0x67.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_func_0x68.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_func_0x6d.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_func_0x6f.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_func_0x70.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_func_0x72.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_func_0x73.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_func_0x75.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_func_0x76.html #usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_type.html #usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_vars.html #usr/share/doc/libsigc-2.0/docs/reference/html/namespaces.html diff --git a/config/rootfiles/common/misc-progs b/config/rootfiles/common/misc-progs index 3c0b398..2d6b2e2 100644 --- a/config/rootfiles/common/misc-progs +++ b/config/rootfiles/common/misc-progs @@ -7,7 +7,6 @@ usr/local/bin/extrahdctrl usr/local/bin/fireinfoctrl usr/local/bin/getconntracktable usr/local/bin/getipstat -usr/local/bin/getiptstate #usr/local/bin/iowrap usr/local/bin/ipfirereboot usr/local/bin/ipsecctrl diff --git a/config/rootfiles/common/mpfr b/config/rootfiles/common/mpfr new file mode 100644 index 0000000..e4f3337 --- /dev/null +++ b/config/rootfiles/common/mpfr @@ -0,0 +1,21 @@ +#usr/include/mpf2mpfr.h +#usr/include/mpfr.h +#usr/lib/libmpfr.a +#usr/lib/libmpfr.la +#usr/lib/libmpfr.so +usr/lib/libmpfr.so.1 +usr/lib/libmpfr.so.1.2.2 +#usr/share/doc/mpfr +#usr/share/doc/mpfr/AUTHORS +#usr/share/doc/mpfr/BUGS +#usr/share/doc/mpfr/COPYING +#usr/share/doc/mpfr/COPYING.LIB +#usr/share/doc/mpfr/FAQ.html +#usr/share/doc/mpfr/NEWS +#usr/share/doc/mpfr/TODO +#usr/share/doc/mpfr/examples +#usr/share/doc/mpfr/examples/ReadMe +#usr/share/doc/mpfr/examples/divworst.c +#usr/share/doc/mpfr/examples/rndo-add.c +#usr/share/doc/mpfr/examples/sample.c +#usr/share/info/mpfr.info diff --git a/config/rootfiles/common/nasm b/config/rootfiles/common/nasm index 8f20850..9d3e196 100644 --- a/config/rootfiles/common/nasm +++ b/config/rootfiles/common/nasm @@ -1,4 +1,4 @@ #usr/bin/nasm #usr/bin/ndisasm -#usr/man/man1/nasm.1 -#usr/man/man1/ndisasm.1 +#usr/share/man/man1/nasm.1 +#usr/share/man/man1/ndisasm.1 diff --git a/config/rootfiles/common/ncurses b/config/rootfiles/common/ncurses index ed892d6..122dc82 100644 --- a/config/rootfiles/common/ncurses +++ b/config/rootfiles/common/ncurses @@ -1,11 +1,11 @@ -lib/libncursesw.so.5 -lib/libncursesw.so.5.5 #usr/bin/captoinfo usr/bin/clear #usr/bin/infocmp #usr/bin/infotocap -#usr/bin/reset -#usr/bin/tack +#usr/bin/ncurses5-config +#usr/bin/ncursesw5-config +usr/bin/reset +#usr/bin/tabs #usr/bin/tic #usr/bin/toe usr/bin/tput @@ -21,64 +21,106 @@ usr/bin/tput #usr/include/etip.h #usr/include/form.h #usr/include/menu.h +#usr/include/nc_tparm.h #usr/include/ncurses.h #usr/include/ncurses_dll.h #usr/include/panel.h #usr/include/term.h +#usr/include/term_entry.h #usr/include/termcap.h +#usr/include/tic.h #usr/include/unctrl.h #usr/lib/libcurses.a #usr/lib/libcurses.so -#usr/lib/libcursesw.a #usr/lib/libcursesw.so #usr/lib/libform.a -usr/lib/libform.so +#usr/lib/libform.so +usr/lib/libform.so.5 +usr/lib/libform.so.5.9 #usr/lib/libformw.a -usr/lib/libformw.so +#usr/lib/libformw.so usr/lib/libformw.so.5 -usr/lib/libformw.so.5.5 +usr/lib/libformw.so.5.9 #usr/lib/libmenu.a #usr/lib/libmenu.so +usr/lib/libmenu.so.5 +usr/lib/libmenu.so.5.9 #usr/lib/libmenuw.a -usr/lib/libmenuw.so +#usr/lib/libmenuw.so usr/lib/libmenuw.so.5 -usr/lib/libmenuw.so.5.5 -#usr/lib/libncurses++.a4 +usr/lib/libmenuw.so.5.9 +#usr/lib/libncurses++.a #usr/lib/libncurses++w.a #usr/lib/libncurses.a -usr/lib/libncurses.so +#usr/lib/libncurses.so +usr/lib/libncurses.so.5 +usr/lib/libncurses.so.5.9 #usr/lib/libncursesw.a #usr/lib/libncursesw.so -#usr/lib/libncursesw.so.5.5 +usr/lib/libncursesw.so.5 +usr/lib/libncursesw.so.5.9 #usr/lib/libpanel.a -usr/lib/libpanel.so +#usr/lib/libpanel.so +usr/lib/libpanel.so.5 +usr/lib/libpanel.so.5.9 #usr/lib/libpanelw.a -usr/lib/libpanelw.so +#usr/lib/libpanelw.so usr/lib/libpanelw.so.5 -usr/lib/libpanelw.so.5.5 +usr/lib/libpanelw.so.5.9 +#usr/lib/libtermcap.so +#usr/lib/libtic.a +#usr/lib/libtic.so +usr/lib/libtic.so.5 +usr/lib/libtic.so.5.9 +#usr/lib/libtinfo.a +#usr/lib/libtinfo.so +usr/lib/libtinfo.so.5 +usr/lib/libtinfo.so.5.9 #usr/lib/terminfo #usr/man/man1/captoinfo.1m #usr/man/man1/clear.1 #usr/man/man1/infocmp.1m #usr/man/man1/infotocap.1m +#usr/man/man1/ncursesw5-config.1 #usr/man/man1/reset.1 -#usr/man/man1/tack.1 +#usr/man/man1/tabs.1 #usr/man/man1/tic.1m #usr/man/man1/toe.1m #usr/man/man1/tput.1 #usr/man/man1/tset.1 -#usr/man/man3 +#usr/man/man3/BC.3x +#usr/man/man3/COLORS.3x #usr/man/man3/COLOR_PAIR.3x +#usr/man/man3/COLOR_PAIRS.3x +#usr/man/man3/COLS.3x +#usr/man/man3/ESCDELAY.3x +#usr/man/man3/LINES.3x #usr/man/man3/PAIR_NUMBER.3x +#usr/man/man3/PC.3x +#usr/man/man3/SP.3x +#usr/man/man3/TABSIZE.3x +#usr/man/man3/TYPE_ALNUM.3x +#usr/man/man3/TYPE_ALPHA.3x +#usr/man/man3/TYPE_ENUM.3x +#usr/man/man3/TYPE_INTEGER.3x +#usr/man/man3/TYPE_IPV4.3x +#usr/man/man3/TYPE_NUMERIC.3x +#usr/man/man3/TYPE_REGEXP.3x +#usr/man/man3/UP.3x +#usr/man/man3/_nc_free_and_exit.3x +#usr/man/man3/_nc_freeall.3x #usr/man/man3/_nc_tracebits.3x #usr/man/man3/_traceattr.3x #usr/man/man3/_traceattr2.3x +#usr/man/man3/_tracecchar_t.3x +#usr/man/man3/_tracecchar_t2.3x #usr/man/man3/_tracechar.3x #usr/man/man3/_tracechtype.3x #usr/man/man3/_tracechtype2.3x #usr/man/man3/_tracedump.3x #usr/man/man3/_tracef.3x #usr/man/man3/_tracemouse.3x +#usr/man/man3/acs_map.3x #usr/man/man3/add_wch.3x #usr/man/man3/add_wchnstr.3x #usr/man/man3/add_wchstr.3x @@ -90,6 +132,7 @@ usr/lib/libpanelw.so.5.5 #usr/man/man3/addstr.3x #usr/man/man3/addwstr.3x #usr/man/man3/assume_default_colors.3x +#usr/man/man3/assume_default_colors_sp.3x #usr/man/man3/attr_get.3x #usr/man/man3/attr_off.3x #usr/man/man3/attr_on.3x @@ -98,26 +141,36 @@ usr/lib/libpanelw.so.5.5 #usr/man/man3/attron.3x #usr/man/man3/attrset.3x #usr/man/man3/baudrate.3x +#usr/man/man3/baudrate_sp.3x #usr/man/man3/beep.3x +#usr/man/man3/beep_sp.3x #usr/man/man3/bkgd.3x #usr/man/man3/bkgdset.3x #usr/man/man3/bkgrnd.3x #usr/man/man3/bkgrndset.3x +#usr/man/man3/boolcodes.3x +#usr/man/man3/boolfnames.3x +#usr/man/man3/boolnames.3x #usr/man/man3/border.3x #usr/man/man3/border_set.3x #usr/man/man3/bottom_panel.3x #usr/man/man3/box.3x #usr/man/man3/box_set.3x #usr/man/man3/can_change_color.3x +#usr/man/man3/can_change_color_sp.3x #usr/man/man3/cbreak.3x +#usr/man/man3/cbreak_sp.3x +#usr/man/man3/ceiling_panel.3x #usr/man/man3/chgat.3x #usr/man/man3/clear.3x #usr/man/man3/clearok.3x #usr/man/man3/clrtobot.3x #usr/man/man3/clrtoeol.3x #usr/man/man3/color_content.3x +#usr/man/man3/color_content_sp.3x #usr/man/man3/color_set.3x #usr/man/man3/copywin.3x +#usr/man/man3/cur_term.3x #usr/man/man3/current_field.3x #usr/man/man3/current_item.3x #usr/man/man3/curs_add_wch.3x @@ -156,8 +209,11 @@ usr/lib/libpanelw.so.5.5 #usr/man/man3/curs_instr.3x #usr/man/man3/curs_inwstr.3x #usr/man/man3/curs_kernel.3x +#usr/man/man3/curs_legacy.3x +#usr/man/man3/curs_memleaks.3x #usr/man/man3/curs_mouse.3x #usr/man/man3/curs_move.3x +#usr/man/man3/curs_opaque.3x #usr/man/man3/curs_outopts.3x #usr/man/man3/curs_overlay.3x #usr/man/man3/curs_pad.3x @@ -168,39 +224,53 @@ usr/lib/libpanelw.so.5.5 #usr/man/man3/curs_scr_dump.3x #usr/man/man3/curs_scroll.3x #usr/man/man3/curs_set.3x +#usr/man/man3/curs_set_sp.3x #usr/man/man3/curs_slk.3x +#usr/man/man3/curs_sp_funcs.3x #usr/man/man3/curs_termattrs.3x #usr/man/man3/curs_termcap.3x #usr/man/man3/curs_terminfo.3x +#usr/man/man3/curs_threads.3x #usr/man/man3/curs_touch.3x #usr/man/man3/curs_trace.3x #usr/man/man3/curs_util.3x +#usr/man/man3/curs_variables.3x #usr/man/man3/curs_window.3x +#usr/man/man3/curscr.3x #usr/man/man3/curses_version.3x #usr/man/man3/data_ahead.3x #usr/man/man3/data_behind.3x #usr/man/man3/def_prog_mode.3x +#usr/man/man3/def_prog_mode_sp.3x #usr/man/man3/def_shell_mode.3x +#usr/man/man3/def_shell_mode_sp.3x #usr/man/man3/default_colors.3x #usr/man/man3/define_key.3x +#usr/man/man3/define_key_sp.3x #usr/man/man3/del_curterm.3x +#usr/man/man3/del_curterm_sp.3x #usr/man/man3/del_panel.3x #usr/man/man3/delay_output.3x +#usr/man/man3/delay_output_sp.3x #usr/man/man3/delch.3x #usr/man/man3/deleteln.3x #usr/man/man3/delscreen.3x #usr/man/man3/delwin.3x #usr/man/man3/derwin.3x #usr/man/man3/doupdate.3x +#usr/man/man3/doupdate_sp.3x #usr/man/man3/dup_field.3x #usr/man/man3/dupwin.3x #usr/man/man3/dynamic_field_info.3x #usr/man/man3/echo.3x +#usr/man/man3/echo_sp.3x #usr/man/man3/echo_wchar.3x #usr/man/man3/echochar.3x #usr/man/man3/endwin.3x +#usr/man/man3/endwin_sp.3x #usr/man/man3/erase.3x #usr/man/man3/erasechar.3x +#usr/man/man3/erasechar_sp.3x #usr/man/man3/erasewchar.3x #usr/man/man3/field_arg.3x #usr/man/man3/field_back.3x @@ -220,8 +290,11 @@ usr/lib/libpanelw.so.5.5 #usr/man/man3/field_type.3x #usr/man/man3/field_userptr.3x #usr/man/man3/filter.3x +#usr/man/man3/filter_sp.3x #usr/man/man3/flash.3x +#usr/man/man3/flash_sp.3x #usr/man/man3/flushinp.3x +#usr/man/man3/flushinp_sp.3x #usr/man/man3/form.3x #usr/man/man3/form_cursor.3x #usr/man/man3/form_data.3x @@ -252,33 +325,55 @@ usr/lib/libpanelw.so.5.5 #usr/man/man3/form_sub.3x #usr/man/man3/form_term.3x #usr/man/man3/form_userptr.3x +#usr/man/man3/form_variables.3x #usr/man/man3/form_win.3x #usr/man/man3/free_field.3x #usr/man/man3/free_fieldtype.3x #usr/man/man3/free_form.3x #usr/man/man3/free_item.3x #usr/man/man3/free_menu.3x +#usr/man/man3/get_escdelay.3x +#usr/man/man3/get_escdelay_sp.3x #usr/man/man3/get_wch.3x #usr/man/man3/get_wstr.3x +#usr/man/man3/getattrs.3x +#usr/man/man3/getbegx.3x +#usr/man/man3/getbegy.3x #usr/man/man3/getbegyx.3x #usr/man/man3/getbkgd.3x #usr/man/man3/getbkgrnd.3x #usr/man/man3/getcchar.3x #usr/man/man3/getch.3x +#usr/man/man3/getcurx.3x +#usr/man/man3/getcury.3x +#usr/man/man3/getmaxx.3x +#usr/man/man3/getmaxy.3x #usr/man/man3/getmaxyx.3x #usr/man/man3/getmouse.3x +#usr/man/man3/getmouse_sp.3x #usr/man/man3/getn_wstr.3x #usr/man/man3/getnstr.3x +#usr/man/man3/getparx.3x +#usr/man/man3/getpary.3x #usr/man/man3/getparyx.3x #usr/man/man3/getstr.3x #usr/man/man3/getsyx.3x #usr/man/man3/getwin.3x +#usr/man/man3/getwin_sp.3x #usr/man/man3/getyx.3x +#usr/man/man3/ground_panel.3x #usr/man/man3/halfdelay.3x +#usr/man/man3/halfdelay_sp.3x #usr/man/man3/has_colors.3x +#usr/man/man3/has_colors_sp.3x #usr/man/man3/has_ic.3x +#usr/man/man3/has_ic_sp.3x #usr/man/man3/has_il.3x +#usr/man/man3/has_il_sp.3x #usr/man/man3/has_key.3x +#usr/man/man3/has_key_sp.3x +#usr/man/man3/has_mouse.3x +#usr/man/man3/has_mouse_sp.3x #usr/man/man3/hide_panel.3x #usr/man/man3/hline.3x #usr/man/man3/hline_set.3x @@ -292,7 +387,9 @@ usr/lib/libpanelw.so.5.5 #usr/man/man3/inchnstr.3x #usr/man/man3/inchstr.3x #usr/man/man3/init_color.3x +#usr/man/man3/init_color_sp.3x #usr/man/man3/init_pair.3x +#usr/man/man3/init_pair_sp.3x #usr/man/man3/initscr.3x #usr/man/man3/innstr.3x #usr/man/man3/innwstr.3x @@ -306,11 +403,26 @@ usr/lib/libpanelw.so.5.5 #usr/man/man3/insstr.3x #usr/man/man3/instr.3x #usr/man/man3/intrflush.3x +#usr/man/man3/intrflush_sp.3x #usr/man/man3/inwstr.3x +#usr/man/man3/is_cleared.3x +#usr/man/man3/is_idcok.3x +#usr/man/man3/is_idlok.3x +#usr/man/man3/is_immedok.3x +#usr/man/man3/is_keypad.3x +#usr/man/man3/is_leaveok.3x #usr/man/man3/is_linetouched.3x +#usr/man/man3/is_nodelay.3x +#usr/man/man3/is_notimeout.3x +#usr/man/man3/is_pad.3x +#usr/man/man3/is_scrollok.3x +#usr/man/man3/is_subwin.3x +#usr/man/man3/is_syncok.3x #usr/man/man3/is_term_resized.3x +#usr/man/man3/is_term_resized_sp.3x #usr/man/man3/is_wintouched.3x #usr/man/man3/isendwin.3x +#usr/man/man3/isendwin_sp.3x #usr/man/man3/item_count.3x #usr/man/man3/item_description.3x #usr/man/man3/item_index.3x @@ -324,18 +436,25 @@ usr/lib/libpanelw.so.5.5 #usr/man/man3/item_value.3x #usr/man/man3/item_visible.3x #usr/man/man3/key_defined.3x +#usr/man/man3/key_defined_sp.3x #usr/man/man3/key_name.3x #usr/man/man3/keybound.3x +#usr/man/man3/keybound_sp.3x #usr/man/man3/keyname.3x +#usr/man/man3/keyname_sp.3x #usr/man/man3/keyok.3x +#usr/man/man3/keyok_sp.3x #usr/man/man3/keypad.3x #usr/man/man3/killchar.3x +#usr/man/man3/killchar_sp.3x #usr/man/man3/killwchar.3x #usr/man/man3/leaveok.3x +#usr/man/man3/legacy_coding.3x #usr/man/man3/link_field.3x #usr/man/man3/link_fieldtype.3x #usr/man/man3/longname.3x #usr/man/man3/mcprint.3x +#usr/man/man3/mcprint_sp.3x #usr/man/man3/menu.3x #usr/man/man3/menu_attributes.3x #usr/man/man3/menu_back.3x @@ -373,7 +492,9 @@ usr/lib/libpanelw.so.5.5 #usr/man/man3/mitem_visible.3x #usr/man/man3/mouse_trafo.3x #usr/man/man3/mouseinterval.3x +#usr/man/man3/mouseinterval_sp.3x #usr/man/man3/mousemask.3x +#usr/man/man3/mousemask_sp.3x #usr/man/man3/move.3x #usr/man/man3/move_field.3x #usr/man/man3/move_panel.3x @@ -389,6 +510,7 @@ usr/lib/libpanelw.so.5.5 #usr/man/man3/mvaddwstr.3x #usr/man/man3/mvchgat.3x #usr/man/man3/mvcur.3x +#usr/man/man3/mvcur_sp.3x #usr/man/man3/mvdelch.3x #usr/man/man3/mvderwin.3x #usr/man/man3/mvget_wch.3x @@ -461,28 +583,49 @@ usr/lib/libpanelw.so.5.5 #usr/man/man3/mvwvline.3x #usr/man/man3/mvwvline_set.3x #usr/man/man3/napms.3x +#usr/man/man3/napms_sp.3x #usr/man/man3/ncurses.3x #usr/man/man3/new_field.3x #usr/man/man3/new_fieldtype.3x #usr/man/man3/new_form.3x +#usr/man/man3/new_form_sp.3x #usr/man/man3/new_item.3x #usr/man/man3/new_menu.3x +#usr/man/man3/new_menu_sp.3x #usr/man/man3/new_page.3x #usr/man/man3/new_panel.3x +#usr/man/man3/new_prescr.3x #usr/man/man3/newpad.3x +#usr/man/man3/newpad_sp.3x +#usr/man/man3/newscr.3x #usr/man/man3/newterm.3x +#usr/man/man3/newterm_sp.3x #usr/man/man3/newwin.3x +#usr/man/man3/newwin_sp.3x #usr/man/man3/nl.3x +#usr/man/man3/nl_sp.3x #usr/man/man3/nocbreak.3x +#usr/man/man3/nocbreak_sp.3x #usr/man/man3/nodelay.3x #usr/man/man3/noecho.3x +#usr/man/man3/noecho_sp.3x +#usr/man/man3/nofilter.3x +#usr/man/man3/nofilter_sp.3x #usr/man/man3/nonl.3x +#usr/man/man3/nonl_sp.3x #usr/man/man3/noqiflush.3x +#usr/man/man3/noqiflush_sp.3x #usr/man/man3/noraw.3x +#usr/man/man3/noraw_sp.3x #usr/man/man3/notimeout.3x +#usr/man/man3/numcodes.3x +#usr/man/man3/numfnames.3x +#usr/man/man3/numnames.3x +#usr/man/man3/ospeed.3x #usr/man/man3/overlay.3x #usr/man/man3/overwrite.3x #usr/man/man3/pair_content.3x +#usr/man/man3/pair_content_sp.3x #usr/man/man3/panel.3x #usr/man/man3/panel_above.3x #usr/man/man3/panel_below.3x @@ -499,33 +642,50 @@ usr/lib/libpanelw.so.5.5 #usr/man/man3/prefresh.3x #usr/man/man3/printw.3x #usr/man/man3/putp.3x +#usr/man/man3/putp_sp.3x #usr/man/man3/putwin.3x #usr/man/man3/qiflush.3x +#usr/man/man3/qiflush_sp.3x #usr/man/man3/raw.3x +#usr/man/man3/raw_sp.3x #usr/man/man3/redrawwin.3x #usr/man/man3/refresh.3x #usr/man/man3/replace_panel.3x #usr/man/man3/reset_prog_mode.3x +#usr/man/man3/reset_prog_mode_sp.3x #usr/man/man3/reset_shell_mode.3x +#usr/man/man3/reset_shell_mode_sp.3x #usr/man/man3/resetty.3x +#usr/man/man3/resetty_sp.3x #usr/man/man3/resize_term.3x +#usr/man/man3/resize_term_sp.3x #usr/man/man3/resizeterm.3x +#usr/man/man3/resizeterm_sp.3x #usr/man/man3/restartterm.3x +#usr/man/man3/restartterm_sp.3x #usr/man/man3/ripoffline.3x +#usr/man/man3/ripoffline_sp.3x #usr/man/man3/savetty.3x +#usr/man/man3/savetty_sp.3x #usr/man/man3/scale_form.3x #usr/man/man3/scale_menu.3x #usr/man/man3/scanw.3x #usr/man/man3/scr_dump.3x #usr/man/man3/scr_init.3x +#usr/man/man3/scr_init_sp.3x #usr/man/man3/scr_restore.3x +#usr/man/man3/scr_restore_sp.3x #usr/man/man3/scr_set.3x +#usr/man/man3/scr_set_sp.3x #usr/man/man3/scrl.3x #usr/man/man3/scroll.3x #usr/man/man3/scrollok.3x #usr/man/man3/set_current_field.3x #usr/man/man3/set_current_item.3x #usr/man/man3/set_curterm.3x +#usr/man/man3/set_curterm_sp.3x +#usr/man/man3/set_escdelay.3x +#usr/man/man3/set_escdelay_sp.3x #usr/man/man3/set_field_back.3x #usr/man/man3/set_field_buffer.3x #usr/man/man3/set_field_fore.3x @@ -570,6 +730,8 @@ usr/lib/libpanelw.so.5.5 #usr/man/man3/set_menu_win.3x #usr/man/man3/set_new_page.3x #usr/man/man3/set_panel_userptr.3x +#usr/man/man3/set_tabsize.3x +#usr/man/man3/set_tabsize_sp.3x #usr/man/man3/set_term.3x #usr/man/man3/set_top_row.3x #usr/man/man3/setcchar.3x @@ -582,59 +744,109 @@ usr/lib/libpanelw.so.5.5 #usr/man/man3/slk_attr_off.3x #usr/man/man3/slk_attr_on.3x #usr/man/man3/slk_attr_set.3x +#usr/man/man3/slk_attr_set_sp.3x +#usr/man/man3/slk_attr_sp.3x #usr/man/man3/slk_attroff.3x +#usr/man/man3/slk_attroff_sp.3x #usr/man/man3/slk_attron.3x +#usr/man/man3/slk_attron_sp.3x #usr/man/man3/slk_attrset.3x +#usr/man/man3/slk_attrset_sp.3x #usr/man/man3/slk_clear.3x +#usr/man/man3/slk_clear_sp.3x #usr/man/man3/slk_color.3x +#usr/man/man3/slk_color_sp.3x #usr/man/man3/slk_init.3x +#usr/man/man3/slk_init_sp.3x #usr/man/man3/slk_label.3x +#usr/man/man3/slk_label_sp.3x #usr/man/man3/slk_noutrefresh.3x +#usr/man/man3/slk_noutrefresh_sp.3x #usr/man/man3/slk_refresh.3x +#usr/man/man3/slk_refresh_sp.3x #usr/man/man3/slk_restore.3x +#usr/man/man3/slk_restore_sp.3x #usr/man/man3/slk_set.3x +#usr/man/man3/slk_set_sp.3x #usr/man/man3/slk_touch.3x +#usr/man/man3/slk_touch_sp.3x +#usr/man/man3/slk_wset.3x #usr/man/man3/standend.3x #usr/man/man3/standout.3x #usr/man/man3/start_color.3x +#usr/man/man3/start_color_sp.3x +#usr/man/man3/stdscr.3x +#usr/man/man3/strcodes.3x +#usr/man/man3/strfnames.3x +#usr/man/man3/strnames.3x #usr/man/man3/subpad.3x #usr/man/man3/subwin.3x #usr/man/man3/syncok.3x #usr/man/man3/term_attrs.3x +#usr/man/man3/term_attrs_sp.3x +#usr/man/man3/term_variables.3x #usr/man/man3/termattrs.3x +#usr/man/man3/termattrs_sp.3x #usr/man/man3/termname.3x +#usr/man/man3/termname_sp.3x #usr/man/man3/tgetent.3x +#usr/man/man3/tgetent_sp.3x #usr/man/man3/tgetflag.3x +#usr/man/man3/tgetflag_sp.3x #usr/man/man3/tgetnum.3x +#usr/man/man3/tgetnum_sp.3x #usr/man/man3/tgetstr.3x +#usr/man/man3/tgetstr_sp.3x #usr/man/man3/tgoto.3x #usr/man/man3/tigetflag.3x +#usr/man/man3/tigetflag_sp.3x #usr/man/man3/tigetnum.3x +#usr/man/man3/tigetnum_sp.3x #usr/man/man3/tigetstr.3x +#usr/man/man3/tigetstr_sp.3x #usr/man/man3/timeout.3x +#usr/man/man3/tiparm.3x #usr/man/man3/top_panel.3x #usr/man/man3/top_row.3x #usr/man/man3/touchline.3x #usr/man/man3/touchwin.3x #usr/man/man3/tparm.3x #usr/man/man3/tputs.3x +#usr/man/man3/tputs_sp.3x #usr/man/man3/trace.3x +#usr/man/man3/ttytype.3x #usr/man/man3/typeahead.3x +#usr/man/man3/typeahead_sp.3x #usr/man/man3/unctrl.3x +#usr/man/man3/unctrl_sp.3x #usr/man/man3/unget_wch.3x +#usr/man/man3/unget_wch_sp.3x #usr/man/man3/ungetch.3x +#usr/man/man3/ungetch_sp.3x #usr/man/man3/ungetmouse.3x +#usr/man/man3/ungetmouse_sp.3x #usr/man/man3/unpost_form.3x #usr/man/man3/unpost_menu.3x #usr/man/man3/untouchwin.3x #usr/man/man3/update_panels.3x +#usr/man/man3/update_panels_sp.3x #usr/man/man3/use_default_colors.3x +#usr/man/man3/use_default_colors_sp.3x #usr/man/man3/use_env.3x +#usr/man/man3/use_env_sp.3x #usr/man/man3/use_extended_names.3x +#usr/man/man3/use_legacy_coding.3x +#usr/man/man3/use_legacy_coding_sp.3x +#usr/man/man3/use_screen.3x +#usr/man/man3/use_window.3x #usr/man/man3/vid_attr.3x +#usr/man/man3/vid_attr_sp.3x #usr/man/man3/vid_puts.3x +#usr/man/man3/vid_puts_sp.3x #usr/man/man3/vidattr.3x +#usr/man/man3/vidattr_sp.3x #usr/man/man3/vidputs.3x +#usr/man/man3/vidputs_sp.3x #usr/man/man3/vline.3x #usr/man/man3/vline_set.3x #usr/man/man3/vw_printw.3x @@ -682,6 +894,8 @@ usr/lib/libpanelw.so.5.5 #usr/man/man3/wgetch.3x #usr/man/man3/wgetn_wstr.3x #usr/man/man3/wgetnstr.3x +#usr/man/man3/wgetparent.3x +#usr/man/man3/wgetscrreg.3x #usr/man/man3/wgetstr.3x #usr/man/man3/whline.3x #usr/man/man3/whline_set.3x @@ -720,9 +934,9 @@ usr/lib/libpanelw.so.5.5 #usr/man/man3/wtimeout.3x #usr/man/man3/wtouchln.3x #usr/man/man3/wunctrl.3x +#usr/man/man3/wunctrl_sp.3x #usr/man/man3/wvline.3x #usr/man/man3/wvline_set.3x -#usr/man/man5 #usr/man/man5/term.5 #usr/man/man5/terminfo.5 #usr/man/man7/term.7 @@ -770,10 +984,13 @@ usr/lib/libpanelw.so.5.5 #usr/share/terminfo/9 #usr/share/terminfo/9/955-hb #usr/share/terminfo/9/955-w +#usr/share/terminfo/9/9term #usr/share/terminfo/A #usr/share/terminfo/A/Apple_Terminal #usr/share/terminfo/E #usr/share/terminfo/E/Eterm +#usr/share/terminfo/E/Eterm-256color +#usr/share/terminfo/E/Eterm-88color #usr/share/terminfo/E/Eterm-color #usr/share/terminfo/L #usr/share/terminfo/L/LFT-PC850 @@ -941,6 +1158,7 @@ usr/lib/libpanelw.so.5.5 #usr/share/terminfo/a/ansi+arrows #usr/share/terminfo/a/ansi+csr #usr/share/terminfo/a/ansi+cup +#usr/share/terminfo/a/ansi+enq #usr/share/terminfo/a/ansi+erase #usr/share/terminfo/a/ansi+idc #usr/share/terminfo/a/ansi+idl @@ -1015,8 +1233,18 @@ usr/lib/libpanelw.so.5.5 #usr/share/terminfo/a/arm100-am #usr/share/terminfo/a/arm100-w #usr/share/terminfo/a/arm100-wam +#usr/share/terminfo/a/at +#usr/share/terminfo/a/at-color +#usr/share/terminfo/a/at-m #usr/share/terminfo/a/at386 #usr/share/terminfo/a/atari +#usr/share/terminfo/a/atari-color +#usr/share/terminfo/a/atari-m +#usr/share/terminfo/a/atari-old +#usr/share/terminfo/a/atari_st +#usr/share/terminfo/a/atari_st-color +#usr/share/terminfo/a/atarist-m +#usr/share/terminfo/a/aterm #usr/share/terminfo/a/att2300 #usr/share/terminfo/a/att2350 #usr/share/terminfo/a/att4410 @@ -1171,6 +1399,7 @@ usr/lib/libpanelw.so.5.5 #usr/share/terminfo/b/bsdos-pc-nobold #usr/share/terminfo/b/bsdos-ppc #usr/share/terminfo/b/bsdos-sparc +#usr/share/terminfo/b/bterm #usr/share/terminfo/c #usr/share/terminfo/c/c100 #usr/share/terminfo/c/c100-1p @@ -1241,6 +1470,7 @@ usr/lib/libpanelw.so.5.5 #usr/share/terminfo/c/concept108-w8p #usr/share/terminfo/c/concept108rv4p #usr/share/terminfo/c/cons25 +#usr/share/terminfo/c/cons25-debian #usr/share/terminfo/c/cons25-iso-m #usr/share/terminfo/c/cons25-iso8859 #usr/share/terminfo/c/cons25-koi8-r @@ -1605,6 +1835,7 @@ usr/lib/libpanelw.so.5.5 #usr/share/terminfo/e/esprit #usr/share/terminfo/e/esprit-am #usr/share/terminfo/e/eterm +#usr/share/terminfo/e/eterm-color #usr/share/terminfo/e/ex155 #usr/share/terminfo/e/excel62 #usr/share/terminfo/e/excel62-rv @@ -1647,6 +1878,11 @@ usr/lib/libpanelw.so.5.5 #usr/share/terminfo/g/gigi #usr/share/terminfo/g/glasstty #usr/share/terminfo/g/gnome +#usr/share/terminfo/g/gnome+pcfkeys +#usr/share/terminfo/g/gnome-2007 +#usr/share/terminfo/g/gnome-2008 +#usr/share/terminfo/g/gnome-256color +#usr/share/terminfo/g/gnome-fc5 #usr/share/terminfo/g/gnome-rh62 #usr/share/terminfo/g/gnome-rh72 #usr/share/terminfo/g/gnome-rh80 @@ -1817,6 +2053,7 @@ usr/lib/libpanelw.so.5.5 #usr/share/terminfo/h/hpgeneric #usr/share/terminfo/h/hpsub #usr/share/terminfo/h/hpterm +#usr/share/terminfo/h/hpterm-color #usr/share/terminfo/h/htx11 #usr/share/terminfo/h/hurd #usr/share/terminfo/h/hz1000 @@ -1833,6 +2070,7 @@ usr/lib/libpanelw.so.5.5 #usr/share/terminfo/i/i3101 #usr/share/terminfo/i/i3164 #usr/share/terminfo/i/i400 +#usr/share/terminfo/i/iTerm.app #usr/share/terminfo/i/ibcs2 #usr/share/terminfo/i/ibm+16color #usr/share/terminfo/i/ibm+color @@ -1913,6 +2151,7 @@ usr/lib/libpanelw.so.5.5 #usr/share/terminfo/j/jaixterm #usr/share/terminfo/j/jaixterm-m #usr/share/terminfo/j/jerq +#usr/share/terminfo/j/jfbterm #usr/share/terminfo/k #usr/share/terminfo/k/k45 #usr/share/terminfo/k/kaypro @@ -1927,10 +2166,16 @@ usr/lib/libpanelw.so.5.5 #usr/share/terminfo/k/klone+koi8acs #usr/share/terminfo/k/klone+sgr #usr/share/terminfo/k/klone+sgr-dumb +#usr/share/terminfo/k/klone+sgr8 +#usr/share/terminfo/k/kon +#usr/share/terminfo/k/kon2 #usr/share/terminfo/k/konsole +#usr/share/terminfo/k/konsole+pcfkeys #usr/share/terminfo/k/konsole-16color +#usr/share/terminfo/k/konsole-256color #usr/share/terminfo/k/konsole-base #usr/share/terminfo/k/konsole-linux +#usr/share/terminfo/k/konsole-solaris #usr/share/terminfo/k/konsole-vt100 #usr/share/terminfo/k/konsole-vt420pc #usr/share/terminfo/k/konsole-xf3x @@ -1948,6 +2193,7 @@ usr/lib/libpanelw.so.5.5 #usr/share/terminfo/l/lft #usr/share/terminfo/l/lft-pc850 usr/share/terminfo/l/linux +#usr/share/terminfo/l/linux-16color usr/share/terminfo/l/linux-basic #usr/share/terminfo/l/linux-c #usr/share/terminfo/l/linux-c-nc @@ -1957,6 +2203,7 @@ usr/share/terminfo/l/linux-lat usr/share/terminfo/l/linux-m usr/share/terminfo/l/linux-nic usr/share/terminfo/l/linux-vt +#usr/share/terminfo/l/linux2.6.26 #usr/share/terminfo/l/lisa #usr/share/terminfo/l/lisaterm #usr/share/terminfo/l/lisaterm-w @@ -1985,6 +2232,7 @@ usr/share/terminfo/l/linux-vt #usr/share/terminfo/m/mgr #usr/share/terminfo/m/mgr-linux #usr/share/terminfo/m/mgr-sun +#usr/share/terminfo/m/mgt #usr/share/terminfo/m/mgterm #usr/share/terminfo/m/microb #usr/share/terminfo/m/microbee @@ -2012,9 +2260,13 @@ usr/share/terminfo/l/linux-vt #usr/share/terminfo/m/minitel1b #usr/share/terminfo/m/minitel1b-80 #usr/share/terminfo/m/minix +#usr/share/terminfo/m/minix-1.5 +#usr/share/terminfo/m/minix-1.7 #usr/share/terminfo/m/minix-old #usr/share/terminfo/m/minix-old-am #usr/share/terminfo/m/mlterm +#usr/share/terminfo/m/mlterm+pcfkeys +#usr/share/terminfo/m/mlterm-256color #usr/share/terminfo/m/mm314 #usr/share/terminfo/m/mm340 #usr/share/terminfo/m/mod @@ -2025,6 +2277,8 @@ usr/share/terminfo/l/linux-vt #usr/share/terminfo/m/mono-emx #usr/share/terminfo/m/morphos #usr/share/terminfo/m/mouse-sun +#usr/share/terminfo/m/mrxvt +#usr/share/terminfo/m/mrxvt-256color #usr/share/terminfo/m/ms-vt-utf8 #usr/share/terminfo/m/ms-vt100 #usr/share/terminfo/m/ms-vt100+ @@ -2104,6 +2358,15 @@ usr/share/terminfo/l/linux-vt #usr/share/terminfo/n/ncsa-ns #usr/share/terminfo/n/ncsa-vt220 #usr/share/terminfo/n/ncsa-vt220-8 +#usr/share/terminfo/n/nd9500 +#usr/share/terminfo/n/ndr9500 +#usr/share/terminfo/n/ndr9500-25 +#usr/share/terminfo/n/ndr9500-25-mc +#usr/share/terminfo/n/ndr9500-25-mc-nl +#usr/share/terminfo/n/ndr9500-25-nl +#usr/share/terminfo/n/ndr9500-mc +#usr/share/terminfo/n/ndr9500-mc-nl +#usr/share/terminfo/n/ndr9500-nl #usr/share/terminfo/n/nec #usr/share/terminfo/n/nec5520 #usr/share/terminfo/n/newhp @@ -2147,6 +2410,7 @@ usr/share/terminfo/l/linux-vt #usr/share/terminfo/n/nsterm+c41 #usr/share/terminfo/n/nsterm+mac #usr/share/terminfo/n/nsterm+s +#usr/share/terminfo/n/nsterm-16color #usr/share/terminfo/n/nsterm-7 #usr/share/terminfo/n/nsterm-7-c #usr/share/terminfo/n/nsterm-7-c-s @@ -2159,6 +2423,7 @@ usr/share/terminfo/l/linux-vt #usr/share/terminfo/n/nsterm-acs-m #usr/share/terminfo/n/nsterm-acs-m-s #usr/share/terminfo/n/nsterm-acs-s +#usr/share/terminfo/n/nsterm-bce #usr/share/terminfo/n/nsterm-c #usr/share/terminfo/n/nsterm-c-7 #usr/share/terminfo/n/nsterm-c-acs @@ -2171,6 +2436,7 @@ usr/share/terminfo/l/linux-vt #usr/share/terminfo/n/nsterm-m-s #usr/share/terminfo/n/nsterm-m-s-7 #usr/share/terminfo/n/nsterm-m-s-acs +#usr/share/terminfo/n/nsterm-old #usr/share/terminfo/n/nsterm-s #usr/share/terminfo/n/nsterm-s-7 #usr/share/terminfo/n/nsterm-s-acs @@ -2382,6 +2648,8 @@ usr/share/terminfo/l/linux-vt #usr/share/terminfo/p/pt505-24 #usr/share/terminfo/p/pty #usr/share/terminfo/p/putty +#usr/share/terminfo/p/putty-256color +#usr/share/terminfo/p/putty-vt100 #usr/share/terminfo/q #usr/share/terminfo/q/qansi #usr/share/terminfo/q/qansi-g @@ -2446,6 +2714,8 @@ usr/share/terminfo/l/linux-vt #usr/share/terminfo/r/rxvt #usr/share/terminfo/r/rxvt+pcfkeys #usr/share/terminfo/r/rxvt-16color +#usr/share/terminfo/r/rxvt-256color +#usr/share/terminfo/r/rxvt-88color #usr/share/terminfo/r/rxvt-basic #usr/share/terminfo/r/rxvt-color #usr/share/terminfo/r/rxvt-cygwin @@ -2465,11 +2735,35 @@ usr/share/terminfo/l/linux-vt #usr/share/terminfo/s/scoansi-new #usr/share/terminfo/s/scoansi-old usr/share/terminfo/s/screen +#usr/share/terminfo/s/screen+fkeys +#usr/share/terminfo/s/screen-16color +#usr/share/terminfo/s/screen-16color-bce +#usr/share/terminfo/s/screen-16color-bce-s +#usr/share/terminfo/s/screen-16color-s +#usr/share/terminfo/s/screen-256color +#usr/share/terminfo/s/screen-256color-bce +#usr/share/terminfo/s/screen-256color-bce-s +#usr/share/terminfo/s/screen-256color-s usr/share/terminfo/s/screen-bce +#usr/share/terminfo/s/screen-bce.Eterm +#usr/share/terminfo/s/screen-bce.gnome +#usr/share/terminfo/s/screen-bce.konsole +#usr/share/terminfo/s/screen-bce.linux +#usr/share/terminfo/s/screen-bce.mlterm +#usr/share/terminfo/s/screen-bce.mrxvt +#usr/share/terminfo/s/screen-bce.rxvt +#usr/share/terminfo/s/screen-bce.xterm-new usr/share/terminfo/s/screen-s usr/share/terminfo/s/screen-w +#usr/share/terminfo/s/screen.Eterm +#usr/share/terminfo/s/screen.gnome +#usr/share/terminfo/s/screen.konsole usr/share/terminfo/s/screen.linux +#usr/share/terminfo/s/screen.mlterm +#usr/share/terminfo/s/screen.mrxvt +#usr/share/terminfo/s/screen.rxvt usr/share/terminfo/s/screen.teraterm +#usr/share/terminfo/s/screen.vte usr/share/terminfo/s/screen.xterm-new usr/share/terminfo/s/screen.xterm-r6 usr/share/terminfo/s/screen.xterm-xfree86 @@ -2484,6 +2778,11 @@ usr/share/terminfo/s/screen3 #usr/share/terminfo/s/soroc140 #usr/share/terminfo/s/spinwriter #usr/share/terminfo/s/st52 +#usr/share/terminfo/s/st52-color +#usr/share/terminfo/s/st52-m +#usr/share/terminfo/s/st52-old +#usr/share/terminfo/s/stv52 +#usr/share/terminfo/s/stv52pc #usr/share/terminfo/s/sun #usr/share/terminfo/s/sun-1 #usr/share/terminfo/s/sun-12 @@ -2573,6 +2872,8 @@ usr/share/terminfo/s/screen3 #usr/share/terminfo/t/teleray #usr/share/terminfo/t/teletec #usr/share/terminfo/t/teraterm +#usr/share/terminfo/t/teraterm2.3 +#usr/share/terminfo/t/teraterm4.59 #usr/share/terminfo/t/terminet #usr/share/terminfo/t/terminet1200 #usr/share/terminfo/t/terminet300 @@ -2614,6 +2915,7 @@ usr/share/terminfo/s/screen3 #usr/share/terminfo/t/ts1p #usr/share/terminfo/t/tt #usr/share/terminfo/t/tt505-22 +#usr/share/terminfo/t/tt52 #usr/share/terminfo/t/tty33 #usr/share/terminfo/t/tty35 #usr/share/terminfo/t/tty37 @@ -2751,6 +3053,10 @@ usr/share/terminfo/s/screen3 #usr/share/terminfo/t/tvi970-2p #usr/share/terminfo/t/tvi970-vb #usr/share/terminfo/t/tvipt +#usr/share/terminfo/t/tw100 +#usr/share/terminfo/t/tw52 +#usr/share/terminfo/t/tw52-color +#usr/share/terminfo/t/tw52-m #usr/share/terminfo/t/tws-generic #usr/share/terminfo/t/tws2102-sna #usr/share/terminfo/t/tws2103 @@ -2820,6 +3126,7 @@ usr/share/terminfo/s/screen3 #usr/share/terminfo/v/vt-utf8 usr/share/terminfo/v/vt100 usr/share/terminfo/v/vt100+ +#usr/share/terminfo/v/vt100+enq usr/share/terminfo/v/vt100+fnkeys usr/share/terminfo/v/vt100+keypad usr/share/terminfo/v/vt100+pfkeys @@ -2843,6 +3150,7 @@ usr/share/terminfo/v/vt100-w-nam usr/share/terminfo/v/vt100-w-nav usr/share/terminfo/v/vt100nam usr/share/terminfo/v/vt102 +#usr/share/terminfo/v/vt102+enq usr/share/terminfo/v/vt102-nsgr usr/share/terminfo/v/vt102-w #usr/share/terminfo/v/vt125 @@ -2892,8 +3200,14 @@ usr/share/terminfo/v/vt200-w #usr/share/terminfo/v/vt525 #usr/share/terminfo/v/vt61 #usr/share/terminfo/v/vt61.5 +#usr/share/terminfo/v/vte +#usr/share/terminfo/v/vte+pcfkeys +#usr/share/terminfo/v/vte-2007 +#usr/share/terminfo/v/vte-2008 +#usr/share/terminfo/v/vte-256color #usr/share/terminfo/v/vtnt #usr/share/terminfo/v/vv100 +#usr/share/terminfo/v/vwmterm #usr/share/terminfo/w #usr/share/terminfo/w/wren #usr/share/terminfo/w/wrenw @@ -3147,6 +3461,8 @@ usr/share/terminfo/v/vt200-w #usr/share/terminfo/x/xerox-lm #usr/share/terminfo/x/xerox1720 #usr/share/terminfo/x/xerox820 +#usr/share/terminfo/x/xfce +#usr/share/terminfo/x/xiterm #usr/share/terminfo/x/xl83 #usr/share/terminfo/x/xnuppc #usr/share/terminfo/x/xnuppc+100x37 @@ -3199,9 +3515,24 @@ usr/share/terminfo/v/vt200-w #usr/share/terminfo/x/xnuppc-m-f2 #usr/share/terminfo/x/xtalk usr/share/terminfo/x/xterm +#usr/share/terminfo/x/xterm+256color +#usr/share/terminfo/x/xterm+88color +#usr/share/terminfo/x/xterm+app +#usr/share/terminfo/x/xterm+edit +#usr/share/terminfo/x/xterm+noapp +#usr/share/terminfo/x/xterm+pc+edit +#usr/share/terminfo/x/xterm+pcc0 +#usr/share/terminfo/x/xterm+pcc1 +#usr/share/terminfo/x/xterm+pcc2 +#usr/share/terminfo/x/xterm+pcc3 +#usr/share/terminfo/x/xterm+pce2 +#usr/share/terminfo/x/xterm+pcf0 +#usr/share/terminfo/x/xterm+pcf2 usr/share/terminfo/x/xterm+pcfkeys +#usr/share/terminfo/x/xterm+r6f2 usr/share/terminfo/x/xterm+sl usr/share/terminfo/x/xterm+sl-twm +#usr/share/terminfo/x/xterm+vt+edit #usr/share/terminfo/x/xterm-1002 #usr/share/terminfo/x/xterm-1003 #usr/share/terminfo/x/xterm-16color @@ -3222,6 +3553,7 @@ usr/share/terminfo/x/xterm-color #usr/share/terminfo/x/xterm-r6 #usr/share/terminfo/x/xterm-sco #usr/share/terminfo/x/xterm-sun +#usr/share/terminfo/x/xterm-utf8 usr/share/terminfo/x/xterm-vt220 usr/share/terminfo/x/xterm-vt52 #usr/share/terminfo/x/xterm-xf86-v32 diff --git a/config/rootfiles/common/openldap b/config/rootfiles/common/openldap index bb43588..6a72df8 100644 --- a/config/rootfiles/common/openldap +++ b/config/rootfiles/common/openldap @@ -41,19 +41,119 @@ #usr/include/slapi-plugin.h usr/lib/liblber-2.3.so.0 usr/lib/liblber-2.3.so.0.2.8 -#usr/lib/liblber.a #usr/lib/liblber.la -usr/lib/liblber.so +#usr/lib/liblber.so usr/lib/libldap-2.3.so.0 usr/lib/libldap-2.3.so.0.2.8 -#usr/lib/libldap.a #usr/lib/libldap.la -usr/lib/libldap.so +#usr/lib/libldap.so usr/lib/libldap_r-2.3.so.0 usr/lib/libldap_r-2.3.so.0.2.8 -#usr/lib/libldap_r.a #usr/lib/libldap_r.la -usr/lib/libldap_r.so +#usr/lib/libldap_r.so +#usr/lib/openldap +#usr/lib/openldap/accesslog-2.3.so.0 +#usr/lib/openldap/accesslog-2.3.so.0.2.8 +#usr/lib/openldap/accesslog.la +#usr/lib/openldap/accesslog.so +#usr/lib/openldap/back_bdb-2.3.so.0 +#usr/lib/openldap/back_bdb-2.3.so.0.2.8 +#usr/lib/openldap/back_bdb.la +#usr/lib/openldap/back_bdb.so +#usr/lib/openldap/back_dnssrv-2.3.so.0 +#usr/lib/openldap/back_dnssrv-2.3.so.0.2.8 +#usr/lib/openldap/back_dnssrv.la +#usr/lib/openldap/back_dnssrv.so +#usr/lib/openldap/back_hdb-2.3.so.0 +#usr/lib/openldap/back_hdb-2.3.so.0.2.8 +#usr/lib/openldap/back_hdb.la +#usr/lib/openldap/back_hdb.so +#usr/lib/openldap/back_ldap-2.3.so.0 +#usr/lib/openldap/back_ldap-2.3.so.0.2.8 +#usr/lib/openldap/back_ldap.la +#usr/lib/openldap/back_ldap.so +#usr/lib/openldap/back_ldbm-2.3.so.0 +#usr/lib/openldap/back_ldbm-2.3.so.0.2.8 +#usr/lib/openldap/back_ldbm.la +#usr/lib/openldap/back_ldbm.so +#usr/lib/openldap/back_meta-2.3.so.0 +#usr/lib/openldap/back_meta-2.3.so.0.2.8 +#usr/lib/openldap/back_meta.la +#usr/lib/openldap/back_meta.so +#usr/lib/openldap/back_monitor-2.3.so.0 +#usr/lib/openldap/back_monitor-2.3.so.0.2.8 +#usr/lib/openldap/back_monitor.la +#usr/lib/openldap/back_monitor.so +#usr/lib/openldap/back_null-2.3.so.0 +#usr/lib/openldap/back_null-2.3.so.0.2.8 +#usr/lib/openldap/back_null.la +#usr/lib/openldap/back_null.so +#usr/lib/openldap/back_passwd-2.3.so.0 +#usr/lib/openldap/back_passwd-2.3.so.0.2.8 +#usr/lib/openldap/back_passwd.la +#usr/lib/openldap/back_passwd.so +#usr/lib/openldap/back_relay-2.3.so.0 +#usr/lib/openldap/back_relay-2.3.so.0.2.8 +#usr/lib/openldap/back_relay.la +#usr/lib/openldap/back_relay.so +#usr/lib/openldap/back_shell-2.3.so.0 +#usr/lib/openldap/back_shell-2.3.so.0.2.8 +#usr/lib/openldap/back_shell.la +#usr/lib/openldap/back_shell.so +#usr/lib/openldap/denyop-2.3.so.0 +#usr/lib/openldap/denyop-2.3.so.0.2.8 +#usr/lib/openldap/denyop.la +#usr/lib/openldap/denyop.so +#usr/lib/openldap/dyngroup-2.3.so.0 +#usr/lib/openldap/dyngroup-2.3.so.0.2.8 +#usr/lib/openldap/dyngroup.la +#usr/lib/openldap/dyngroup.so +#usr/lib/openldap/dynlist-2.3.so.0 +#usr/lib/openldap/dynlist-2.3.so.0.2.8 +#usr/lib/openldap/dynlist.la +#usr/lib/openldap/dynlist.so +#usr/lib/openldap/lastmod-2.3.so.0 +#usr/lib/openldap/lastmod-2.3.so.0.2.8 +#usr/lib/openldap/lastmod.la +#usr/lib/openldap/lastmod.so +#usr/lib/openldap/pcache-2.3.so.0 +#usr/lib/openldap/pcache-2.3.so.0.2.8 +#usr/lib/openldap/pcache.la +#usr/lib/openldap/pcache.so +#usr/lib/openldap/ppolicy-2.3.so.0 +#usr/lib/openldap/ppolicy-2.3.so.0.2.8 +#usr/lib/openldap/ppolicy.la +#usr/lib/openldap/ppolicy.so +#usr/lib/openldap/refint-2.3.so.0 +#usr/lib/openldap/refint-2.3.so.0.2.8 +#usr/lib/openldap/refint.la +#usr/lib/openldap/refint.so +#usr/lib/openldap/retcode-2.3.so.0 +#usr/lib/openldap/retcode-2.3.so.0.2.8 +#usr/lib/openldap/retcode.la +#usr/lib/openldap/retcode.so +#usr/lib/openldap/rwm-2.3.so.0 +#usr/lib/openldap/rwm-2.3.so.0.2.8 +#usr/lib/openldap/rwm.la +#usr/lib/openldap/rwm.so +#usr/lib/openldap/syncprov-2.3.so.0 +#usr/lib/openldap/syncprov-2.3.so.0.2.8 +#usr/lib/openldap/syncprov.la +#usr/lib/openldap/syncprov.so +#usr/lib/openldap/translucent-2.3.so.0 +#usr/lib/openldap/translucent-2.3.so.0.2.8 +#usr/lib/openldap/translucent.la +#usr/lib/openldap/translucent.so +#usr/lib/openldap/unique-2.3.so.0 +#usr/lib/openldap/unique-2.3.so.0.2.8 +#usr/lib/openldap/unique.la +#usr/lib/openldap/unique.so +#usr/lib/openldap/valsort-2.3.so.0 +#usr/lib/openldap/valsort-2.3.so.0.2.8 +#usr/lib/openldap/valsort.la +#usr/lib/openldap/valsort.so +#usr/lib/slapd +#usr/lib/slurpd #usr/man/man1/ldapadd.1 #usr/man/man1/ldapcompare.1 #usr/man/man1/ldapdelete.1 @@ -257,9 +357,7 @@ usr/lib/libldap_r.so #usr/sbin/slapadd #usr/sbin/slapauth #usr/sbin/slapcat -#usr/sbin/slapd #usr/sbin/slapdn #usr/sbin/slapindex #usr/sbin/slappasswd #usr/sbin/slaptest -#usr/sbin/slurpd diff --git a/config/rootfiles/common/openssl b/config/rootfiles/common/openssl index 02e4c1c..bc1ac49 100644 --- a/config/rootfiles/common/openssl +++ b/config/rootfiles/common/openssl @@ -1116,6 +1116,7 @@ usr/lib/libssl.so.0.9.8 #usr/share/man/man3/dsa.3 #usr/share/man/man3/ecdsa.3 #usr/share/man/man3/engine.3 +#usr/share/man/man3/err.3 #usr/share/man/man3/evp.3 #usr/share/man/man3/hmac.3 #usr/share/man/man3/i2d_ASN1_OBJECT.3 @@ -1163,7 +1164,6 @@ usr/lib/libssl.so.0.9.8 #usr/share/man/man3/md5.3 #usr/share/man/man3/mdc2.3 #usr/share/man/man3/pem.3 -#usr/share/man/man3/rand.3 #usr/share/man/man3/rc4.3 #usr/share/man/man3/ripemd.3 #usr/share/man/man3/rsa.3 diff --git a/config/rootfiles/common/pam b/config/rootfiles/common/pam index a14302a..3335a54 100644 --- a/config/rootfiles/common/pam +++ b/config/rootfiles/common/pam @@ -11,7 +11,9 @@ etc/security #etc/security/group.conf #etc/security/limits.conf #etc/security/limits.d +#etc/security/namespace.conf #etc/security/namespace.d +#etc/security/namespace.init #etc/security/pam_env.conf #etc/security/time.conf lib/libpam.so.0 @@ -63,6 +65,8 @@ lib/security/pam_mail.so #lib/security/pam_mkhomedir.so #lib/security/pam_motd.la #lib/security/pam_motd.so +#lib/security/pam_namespace.la +#lib/security/pam_namespace.so #lib/security/pam_nologin.la lib/security/pam_nologin.so #lib/security/pam_permit.la @@ -161,6 +165,7 @@ usr/lib/libpamc.so #usr/share/man/man5/access.conf.5 #usr/share/man/man5/group.conf.5 #usr/share/man/man5/limits.conf.5 +#usr/share/man/man5/namespace.conf.5 #usr/share/man/man5/pam.conf.5 #usr/share/man/man5/pam.d.5 #usr/share/man/man5/pam_env.conf.5 @@ -188,6 +193,7 @@ usr/lib/libpamc.so #usr/share/man/man8/pam_mail.8 #usr/share/man/man8/pam_mkhomedir.8 #usr/share/man/man8/pam_motd.8 +#usr/share/man/man8/pam_namespace.8 #usr/share/man/man8/pam_nologin.8 #usr/share/man/man8/pam_permit.8 #usr/share/man/man8/pam_rhosts.8 diff --git a/config/rootfiles/common/pango b/config/rootfiles/common/pango new file mode 100644 index 0000000..286aa35 --- /dev/null +++ b/config/rootfiles/common/pango @@ -0,0 +1,143 @@ +etc/pango +etc/pango/pango.modules +usr/bin/pango-querymodules +usr/bin/pango-view +#usr/include/pango-1.0 +#usr/include/pango-1.0/pango +#usr/include/pango-1.0/pango/pango-attributes.h +#usr/include/pango-1.0/pango/pango-bidi-type.h +#usr/include/pango-1.0/pango/pango-break.h +#usr/include/pango-1.0/pango/pango-context.h +#usr/include/pango-1.0/pango/pango-coverage.h +#usr/include/pango-1.0/pango/pango-engine.h +#usr/include/pango-1.0/pango/pango-enum-types.h +#usr/include/pango-1.0/pango/pango-features.h +#usr/include/pango-1.0/pango/pango-font.h +#usr/include/pango-1.0/pango/pango-fontmap.h +#usr/include/pango-1.0/pango/pango-fontset.h +#usr/include/pango-1.0/pango/pango-glyph-item.h +#usr/include/pango-1.0/pango/pango-glyph.h +#usr/include/pango-1.0/pango/pango-gravity.h +#usr/include/pango-1.0/pango/pango-item.h +#usr/include/pango-1.0/pango/pango-language.h +#usr/include/pango-1.0/pango/pango-layout.h +#usr/include/pango-1.0/pango/pango-matrix.h +#usr/include/pango-1.0/pango/pango-modules.h +#usr/include/pango-1.0/pango/pango-ot.h +#usr/include/pango-1.0/pango/pango-renderer.h +#usr/include/pango-1.0/pango/pango-script.h +#usr/include/pango-1.0/pango/pango-tabs.h +#usr/include/pango-1.0/pango/pango-types.h +#usr/include/pango-1.0/pango/pango-utils.h +#usr/include/pango-1.0/pango/pango.h +#usr/include/pango-1.0/pango/pangocairo.h +#usr/include/pango-1.0/pango/pangofc-decoder.h +#usr/include/pango-1.0/pango/pangofc-font.h +#usr/include/pango-1.0/pango/pangofc-fontmap.h +#usr/include/pango-1.0/pango/pangoft2.h +#usr/lib/libpango-1.0.la +#usr/lib/libpango-1.0.so +usr/lib/libpango-1.0.so.0 +usr/lib/libpango-1.0.so.0.3000.1 +#usr/lib/libpangocairo-1.0.la +#usr/lib/libpangocairo-1.0.so +usr/lib/libpangocairo-1.0.so.0 +usr/lib/libpangocairo-1.0.so.0.3000.1 +#usr/lib/libpangoft2-1.0.la +#usr/lib/libpangoft2-1.0.so +usr/lib/libpangoft2-1.0.so.0 +usr/lib/libpangoft2-1.0.so.0.3000.1 +usr/lib/pango +usr/lib/pango/1.6.0 +usr/lib/pango/1.6.0/modules +#usr/lib/pango/1.6.0/modules/pango-arabic-fc.la +usr/lib/pango/1.6.0/modules/pango-arabic-fc.so +#usr/lib/pango/1.6.0/modules/pango-arabic-lang.la +usr/lib/pango/1.6.0/modules/pango-arabic-lang.so +#usr/lib/pango/1.6.0/modules/pango-basic-fc.la +usr/lib/pango/1.6.0/modules/pango-basic-fc.so +#usr/lib/pango/1.6.0/modules/pango-hangul-fc.la +usr/lib/pango/1.6.0/modules/pango-hangul-fc.so +#usr/lib/pango/1.6.0/modules/pango-hebrew-fc.la +usr/lib/pango/1.6.0/modules/pango-hebrew-fc.so +#usr/lib/pango/1.6.0/modules/pango-indic-fc.la +usr/lib/pango/1.6.0/modules/pango-indic-fc.so +#usr/lib/pango/1.6.0/modules/pango-indic-lang.la +usr/lib/pango/1.6.0/modules/pango-indic-lang.so +#usr/lib/pango/1.6.0/modules/pango-khmer-fc.la +usr/lib/pango/1.6.0/modules/pango-khmer-fc.so +#usr/lib/pango/1.6.0/modules/pango-syriac-fc.la +usr/lib/pango/1.6.0/modules/pango-syriac-fc.so +#usr/lib/pango/1.6.0/modules/pango-thai-fc.la +usr/lib/pango/1.6.0/modules/pango-thai-fc.so +#usr/lib/pango/1.6.0/modules/pango-tibetan-fc.la +usr/lib/pango/1.6.0/modules/pango-tibetan-fc.so +#usr/lib/pkgconfig/pango.pc +#usr/lib/pkgconfig/pangocairo.pc +#usr/lib/pkgconfig/pangoft2.pc +#usr/share/gtk-doc/html/pango +#usr/share/gtk-doc/html/pango/PangoEngineLang.html +#usr/share/gtk-doc/html/pango/PangoEngineShape.html +#usr/share/gtk-doc/html/pango/PangoFcDecoder.html +#usr/share/gtk-doc/html/pango/PangoFcFont.html +#usr/share/gtk-doc/html/pango/PangoFcFontMap.html +#usr/share/gtk-doc/html/pango/PangoMarkupFormat.html +#usr/share/gtk-doc/html/pango/annotation-glossary.html +#usr/share/gtk-doc/html/pango/api-index-1-10.html +#usr/share/gtk-doc/html/pango/api-index-1-12.html +#usr/share/gtk-doc/html/pango/api-index-1-14.html +#usr/share/gtk-doc/html/pango/api-index-1-16.html +#usr/share/gtk-doc/html/pango/api-index-1-18.html +#usr/share/gtk-doc/html/pango/api-index-1-2.html +#usr/share/gtk-doc/html/pango/api-index-1-20.html +#usr/share/gtk-doc/html/pango/api-index-1-22.html +#usr/share/gtk-doc/html/pango/api-index-1-24.html +#usr/share/gtk-doc/html/pango/api-index-1-26.html +#usr/share/gtk-doc/html/pango/api-index-1-28.html +#usr/share/gtk-doc/html/pango/api-index-1-30.html +#usr/share/gtk-doc/html/pango/api-index-1-4.html +#usr/share/gtk-doc/html/pango/api-index-1-6.html +#usr/share/gtk-doc/html/pango/api-index-1-8.html +#usr/share/gtk-doc/html/pango/api-index-deprecated.html +#usr/share/gtk-doc/html/pango/api-index-full.html +#usr/share/gtk-doc/html/pango/home.png +#usr/share/gtk-doc/html/pango/index.html +#usr/share/gtk-doc/html/pango/index.sgml +#usr/share/gtk-doc/html/pango/layout.gif +#usr/share/gtk-doc/html/pango/left.png +#usr/share/gtk-doc/html/pango/lowlevel.html +#usr/share/gtk-doc/html/pango/pango-ATSUI-Fonts.html +#usr/share/gtk-doc/html/pango/pango-Bidirectional-Text.html +#usr/share/gtk-doc/html/pango/pango-Cairo-Rendering.html +#usr/share/gtk-doc/html/pango/pango-CoreText-Fonts.html +#usr/share/gtk-doc/html/pango/pango-Coverage-Maps.html +#usr/share/gtk-doc/html/pango/pango-Engines.html +#usr/share/gtk-doc/html/pango/pango-Fonts.html +#usr/share/gtk-doc/html/pango/pango-FreeType-Fonts-and-Rendering.html +#usr/share/gtk-doc/html/pango/pango-Glyph-Storage.html +#usr/share/gtk-doc/html/pango/pango-Layout-Objects.html +#usr/share/gtk-doc/html/pango/pango-Miscellaneous-Utilities.html +#usr/share/gtk-doc/html/pango/pango-Modules.html +#usr/share/gtk-doc/html/pango/pango-OpenType-Font-Handling.html +#usr/share/gtk-doc/html/pango/pango-Scripts-and-Languages.html +#usr/share/gtk-doc/html/pango/pango-Tab-Stops.html +#usr/share/gtk-doc/html/pango/pango-Text-Attributes.html +#usr/share/gtk-doc/html/pango/pango-Text-Processing.html +#usr/share/gtk-doc/html/pango/pango-Version-Checking.html +#usr/share/gtk-doc/html/pango/pango-Vertical-Text.html +#usr/share/gtk-doc/html/pango/pango-Win32-Fonts-and-Rendering.html +#usr/share/gtk-doc/html/pango/pango-X-Fonts-and-Rendering.html +#usr/share/gtk-doc/html/pango/pango-Xft-Fonts-and-Rendering.html +#usr/share/gtk-doc/html/pango/pango-hierarchy.html +#usr/share/gtk-doc/html/pango/pango-pango-renderer.html +#usr/share/gtk-doc/html/pango/pango-querymodules.html +#usr/share/gtk-doc/html/pango/pango.devhelp2 +#usr/share/gtk-doc/html/pango/pango.html +#usr/share/gtk-doc/html/pango/rendering.html +#usr/share/gtk-doc/html/pango/right.png +#usr/share/gtk-doc/html/pango/rotated-text.png +#usr/share/gtk-doc/html/pango/style.css +#usr/share/gtk-doc/html/pango/tools.html +#usr/share/gtk-doc/html/pango/up.png +#usr/share/man/man1/pango-querymodules.1 +#usr/share/man/man1/pango-view.1 diff --git a/config/rootfiles/common/pcre b/config/rootfiles/common/pcre index d031bd3..5c29270 100644 --- a/config/rootfiles/common/pcre +++ b/config/rootfiles/common/pcre @@ -1,5 +1,3 @@ -lib/libpcre.so.0 -lib/libpcre.so.0.0.1 #usr/bin/pcre-config #usr/bin/pcregrep #usr/bin/pcretest @@ -9,57 +7,21 @@ lib/libpcre.so.0.0.1 #usr/include/pcrecpp.h #usr/include/pcrecpparg.h #usr/include/pcreposix.h -#usr/lib/libpcre.a #usr/lib/libpcre.la usr/lib/libpcre.so -#usr/lib/libpcrecpp.a +usr/lib/libpcre.so.1 +usr/lib/libpcre.so.1.0.1 #usr/lib/libpcrecpp.la usr/lib/libpcrecpp.so usr/lib/libpcrecpp.so.0 usr/lib/libpcrecpp.so.0.0.0 -#usr/lib/libpcreposix.a #usr/lib/libpcreposix.la usr/lib/libpcreposix.so usr/lib/libpcreposix.so.0 -usr/lib/libpcreposix.so.0.0.0 +usr/lib/libpcreposix.so.0.0.1 #usr/lib/pkgconfig/libpcre.pc -#usr/man/man1/pcregrep.1 -#usr/man/man1/pcretest.1 -#usr/man/man3/pcre.3 -#usr/man/man3/pcre_compile.3 -#usr/man/man3/pcre_compile2.3 -#usr/man/man3/pcre_config.3 -#usr/man/man3/pcre_copy_named_substring.3 -#usr/man/man3/pcre_copy_substring.3 -#usr/man/man3/pcre_dfa_exec.3 -#usr/man/man3/pcre_exec.3 -#usr/man/man3/pcre_free_substring.3 -#usr/man/man3/pcre_free_substring_list.3 -#usr/man/man3/pcre_fullinfo.3 -#usr/man/man3/pcre_get_named_substring.3 -#usr/man/man3/pcre_get_stringnumber.3 -#usr/man/man3/pcre_get_stringtable_entries.3 -#usr/man/man3/pcre_get_substring.3 -#usr/man/man3/pcre_get_substring_list.3 -#usr/man/man3/pcre_info.3 -#usr/man/man3/pcre_maketables.3 -#usr/man/man3/pcre_refcount.3 -#usr/man/man3/pcre_study.3 -#usr/man/man3/pcre_version.3 -#usr/man/man3/pcreapi.3 -#usr/man/man3/pcrebuild.3 -#usr/man/man3/pcrecallout.3 -#usr/man/man3/pcrecompat.3 -#usr/man/man3/pcrecpp.3 -#usr/man/man3/pcrematching.3 -#usr/man/man3/pcrepartial.3 -#usr/man/man3/pcrepattern.3 -#usr/man/man3/pcreperform.3 -#usr/man/man3/pcreposix.3 -#usr/man/man3/pcreprecompile.3 -#usr/man/man3/pcresample.3 -#usr/man/man3/pcrestack.3 #usr/lib/pkgconfig/libpcrecpp.pc +#usr/lib/pkgconfig/libpcreposix.pc #usr/share/doc/pcre #usr/share/doc/pcre/AUTHORS #usr/share/doc/pcre/COPYING @@ -71,6 +33,8 @@ usr/lib/libpcreposix.so.0.0.0 #usr/share/doc/pcre/html/index.html #usr/share/doc/pcre/html/pcre-config.html #usr/share/doc/pcre/html/pcre.html +#usr/share/doc/pcre/html/pcre16.html +#usr/share/doc/pcre/html/pcre_assign_jit_stack.html #usr/share/doc/pcre/html/pcre_compile.html #usr/share/doc/pcre/html/pcre_compile2.html #usr/share/doc/pcre/html/pcre_config.html @@ -78,6 +42,7 @@ usr/lib/libpcreposix.so.0.0.0 #usr/share/doc/pcre/html/pcre_copy_substring.html #usr/share/doc/pcre/html/pcre_dfa_exec.html #usr/share/doc/pcre/html/pcre_exec.html +#usr/share/doc/pcre/html/pcre_free_study.html #usr/share/doc/pcre/html/pcre_free_substring.html #usr/share/doc/pcre/html/pcre_free_substring_list.html #usr/share/doc/pcre/html/pcre_fullinfo.html @@ -86,17 +51,23 @@ usr/lib/libpcreposix.so.0.0.0 #usr/share/doc/pcre/html/pcre_get_stringtable_entries.html #usr/share/doc/pcre/html/pcre_get_substring.html #usr/share/doc/pcre/html/pcre_get_substring_list.html -#usr/share/doc/pcre/html/pcre_info.html +#usr/share/doc/pcre/html/pcre_jit_stack_alloc.html +#usr/share/doc/pcre/html/pcre_jit_stack_free.html #usr/share/doc/pcre/html/pcre_maketables.html +#usr/share/doc/pcre/html/pcre_pattern_to_host_byte_order.html #usr/share/doc/pcre/html/pcre_refcount.html #usr/share/doc/pcre/html/pcre_study.html +#usr/share/doc/pcre/html/pcre_utf16_to_host_byte_order.html #usr/share/doc/pcre/html/pcre_version.html #usr/share/doc/pcre/html/pcreapi.html #usr/share/doc/pcre/html/pcrebuild.html #usr/share/doc/pcre/html/pcrecallout.html #usr/share/doc/pcre/html/pcrecompat.html #usr/share/doc/pcre/html/pcrecpp.html +#usr/share/doc/pcre/html/pcredemo.html #usr/share/doc/pcre/html/pcregrep.html +#usr/share/doc/pcre/html/pcrejit.html +#usr/share/doc/pcre/html/pcrelimits.html #usr/share/doc/pcre/html/pcrematching.html #usr/share/doc/pcre/html/pcrepartial.html #usr/share/doc/pcre/html/pcrepattern.html @@ -107,6 +78,7 @@ usr/lib/libpcreposix.so.0.0.0 #usr/share/doc/pcre/html/pcrestack.html #usr/share/doc/pcre/html/pcresyntax.html #usr/share/doc/pcre/html/pcretest.html +#usr/share/doc/pcre/html/pcreunicode.html #usr/share/doc/pcre/pcre-config.txt #usr/share/doc/pcre/pcre.txt #usr/share/doc/pcre/pcregrep.txt @@ -115,6 +87,33 @@ usr/lib/libpcreposix.so.0.0.0 #usr/share/man/man1/pcregrep.1 #usr/share/man/man1/pcretest.1 #usr/share/man/man3/pcre.3 +#usr/share/man/man3/pcre16.3 +#usr/share/man/man3/pcre16_assign_jit_stack.3 +#usr/share/man/man3/pcre16_compile.3 +#usr/share/man/man3/pcre16_compile2.3 +#usr/share/man/man3/pcre16_config.3 +#usr/share/man/man3/pcre16_copy_named_substring.3 +#usr/share/man/man3/pcre16_copy_substring.3 +#usr/share/man/man3/pcre16_dfa_exec.3 +#usr/share/man/man3/pcre16_exec.3 +#usr/share/man/man3/pcre16_free_study.3 +#usr/share/man/man3/pcre16_free_substring.3 +#usr/share/man/man3/pcre16_free_substring_list.3 +#usr/share/man/man3/pcre16_fullinfo.3 +#usr/share/man/man3/pcre16_get_named_substring.3 +#usr/share/man/man3/pcre16_get_stringnumber.3 +#usr/share/man/man3/pcre16_get_stringtable_entries.3 +#usr/share/man/man3/pcre16_get_substring.3 +#usr/share/man/man3/pcre16_get_substring_list.3 +#usr/share/man/man3/pcre16_jit_stack_alloc.3 +#usr/share/man/man3/pcre16_jit_stack_free.3 +#usr/share/man/man3/pcre16_maketables.3 +#usr/share/man/man3/pcre16_pattern_to_host_byte_order.3 +#usr/share/man/man3/pcre16_refcount.3 +#usr/share/man/man3/pcre16_study.3 +#usr/share/man/man3/pcre16_utf16_to_host_byte_order.3 +#usr/share/man/man3/pcre16_version.3 +#usr/share/man/man3/pcre_assign_jit_stack.3 #usr/share/man/man3/pcre_compile.3 #usr/share/man/man3/pcre_compile2.3 #usr/share/man/man3/pcre_config.3 @@ -122,6 +121,7 @@ usr/lib/libpcreposix.so.0.0.0 #usr/share/man/man3/pcre_copy_substring.3 #usr/share/man/man3/pcre_dfa_exec.3 #usr/share/man/man3/pcre_exec.3 +#usr/share/man/man3/pcre_free_study.3 #usr/share/man/man3/pcre_free_substring.3 #usr/share/man/man3/pcre_free_substring_list.3 #usr/share/man/man3/pcre_fullinfo.3 @@ -130,16 +130,21 @@ usr/lib/libpcreposix.so.0.0.0 #usr/share/man/man3/pcre_get_stringtable_entries.3 #usr/share/man/man3/pcre_get_substring.3 #usr/share/man/man3/pcre_get_substring_list.3 -#usr/share/man/man3/pcre_info.3 +#usr/share/man/man3/pcre_jit_stack_alloc.3 +#usr/share/man/man3/pcre_jit_stack_free.3 #usr/share/man/man3/pcre_maketables.3 +#usr/share/man/man3/pcre_pattern_to_host_byte_order.3 #usr/share/man/man3/pcre_refcount.3 #usr/share/man/man3/pcre_study.3 +#usr/share/man/man3/pcre_utf16_to_host_byte_order.3 #usr/share/man/man3/pcre_version.3 #usr/share/man/man3/pcreapi.3 #usr/share/man/man3/pcrebuild.3 #usr/share/man/man3/pcrecallout.3 #usr/share/man/man3/pcrecompat.3 #usr/share/man/man3/pcrecpp.3 +#usr/share/man/man3/pcrejit.3 +#usr/share/man/man3/pcrelimits.3 #usr/share/man/man3/pcrematching.3 #usr/share/man/man3/pcrepartial.3 #usr/share/man/man3/pcrepattern.3 @@ -149,3 +154,4 @@ usr/lib/libpcreposix.so.0.0.0 #usr/share/man/man3/pcresample.3 #usr/share/man/man3/pcrestack.3 #usr/share/man/man3/pcresyntax.3 +#usr/share/man/man3/pcreunicode.3 diff --git a/config/rootfiles/common/pcre-compat b/config/rootfiles/common/pcre-compat new file mode 100644 index 0000000..ff1b776 --- /dev/null +++ b/config/rootfiles/common/pcre-compat @@ -0,0 +1,2 @@ +lib/libpcre.so.0 +lib/libpcre.so.0.0.1 diff --git a/config/rootfiles/common/pixman b/config/rootfiles/common/pixman new file mode 100644 index 0000000..ea44cd8 --- /dev/null +++ b/config/rootfiles/common/pixman @@ -0,0 +1,9 @@ +#usr/include/pixman-1 +#usr/include/pixman-1/pixman-version.h +#usr/include/pixman-1/pixman.h +#usr/lib/libpixman-1.a +#usr/lib/libpixman-1.la +usr/lib/libpixman-1.so +usr/lib/libpixman-1.so.0 +usr/lib/libpixman-1.so.0.26.0 +#usr/lib/pkgconfig/pixman-1.pc diff --git a/config/rootfiles/common/readline b/config/rootfiles/common/readline index edf0035..7bef2c1 100644 --- a/config/rootfiles/common/readline +++ b/config/rootfiles/common/readline @@ -1,7 +1,3 @@ -lib/libhistory.so.5 -lib/libhistory.so.5.1 -lib/libreadline.so.5 -lib/libreadline.so.5.1 #usr/include/readline #usr/include/readline/chardefs.h #usr/include/readline/history.h @@ -11,12 +7,14 @@ lib/libreadline.so.5.1 #usr/include/readline/rlstdc.h #usr/include/readline/rltypedefs.h #usr/include/readline/tilde.h -#usr/info/history.info -#usr/info/readline.info -#usr/info/rluserman.info -#usr/lib/libhistory.a -usr/lib/libhistory.so -#usr/lib/libreadline.a -usr/lib/libreadline.so -#usr/man/man3/history.3 -#usr/man/man3/readline.3 +#usr/lib/libhistory.so +usr/lib/libhistory.so.6 +usr/lib/libhistory.so.6.2 +#usr/lib/libreadline.so +usr/lib/libreadline.so.6 +usr/lib/libreadline.so.6.2 +#usr/share/info/history.info +#usr/share/info/readline.info +#usr/share/info/rluserman.info +#usr/share/man/man3/history.3 +#usr/share/man/man3/readline.3 diff --git a/config/rootfiles/common/readline-compat b/config/rootfiles/common/readline-compat new file mode 100644 index 0000000..1ff7325 --- /dev/null +++ b/config/rootfiles/common/readline-compat @@ -0,0 +1,4 @@ +lib/libhistory.so.5 +lib/libhistory.so.5.2 +lib/libreadline.so.5 +lib/libreadline.so.5.2 diff --git a/config/rootfiles/common/reiser4progs b/config/rootfiles/common/reiser4progs deleted file mode 100644 index e01e4f8..0000000 --- a/config/rootfiles/common/reiser4progs +++ /dev/null @@ -1,77 +0,0 @@ -#sbin/debugfs.reiser4 -sbin/fsck.reiser4 -#sbin/make_reiser4 -sbin/measurefs.reiser4 -sbin/mkfs.reiser4 -#usr/include/reiser4 -#usr/include/reiser4/alloc.h -#usr/include/reiser4/backup.h -#usr/include/reiser4/bitmap.h -#usr/include/reiser4/factory.h -#usr/include/reiser4/fake.h -#usr/include/reiser4/filesystem.h -#usr/include/reiser4/flow.h -#usr/include/reiser4/format.h -#usr/include/reiser4/item.h -#usr/include/reiser4/journal.h -#usr/include/reiser4/key.h -#usr/include/reiser4/libreiser4.h -#usr/include/reiser4/master.h -#usr/include/reiser4/node.h -#usr/include/reiser4/object.h -#usr/include/reiser4/oid.h -#usr/include/reiser4/place.h -#usr/include/reiser4/plugin.h -#usr/include/reiser4/print.h -#usr/include/reiser4/profile.h -#usr/include/reiser4/pset.h -#usr/include/reiser4/semantic.h -#usr/include/reiser4/status.h -#usr/include/reiser4/tree.h -#usr/include/reiser4/types.h -#usr/include/repair -#usr/include/repair/add_missing.h -#usr/include/repair/alloc.h -#usr/include/repair/backup.h -#usr/include/repair/cleanup.h -#usr/include/repair/disk_scan.h -#usr/include/repair/filesystem.h -#usr/include/repair/filter.h -#usr/include/repair/format.h -#usr/include/repair/item.h -#usr/include/repair/journal.h -#usr/include/repair/librepair.h -#usr/include/repair/lost_found.h -#usr/include/repair/master.h -#usr/include/repair/node.h -#usr/include/repair/object.h -#usr/include/repair/oid.h -#usr/include/repair/place.h -#usr/include/repair/plugin.h -#usr/include/repair/pset.h -#usr/include/repair/repair.h -#usr/include/repair/semantic.h -#usr/include/repair/status.h -#usr/include/repair/tree.h -#usr/include/repair/twig_scan.h -usr/lib/libreiser4-1.0.so.6 -usr/lib/libreiser4-1.0.so.6.0.0 -usr/lib/libreiser4-minimal-1.0.so.6 -usr/lib/libreiser4-minimal-1.0.so.6.0.0 -#usr/lib/libreiser4-minimal.a -#usr/lib/libreiser4-minimal.la -usr/lib/libreiser4-minimal.so -#usr/lib/libreiser4.a -#usr/lib/libreiser4.la -usr/lib/libreiser4.so -usr/lib/librepair-1.0.so.6 -usr/lib/librepair-1.0.so.6.0.0 -#usr/lib/librepair.a -#usr/lib/librepair.la -usr/lib/librepair.so -#usr/man/man8 -#usr/man/man8/debugfs.reiser4.8 -#usr/man/man8/fsck.reiser4.8 -#usr/man/man8/measurefs.reiser4.8 -#usr/man/man8/mkfs.reiser4.8 -#usr/share/aclocal/libreiser4.m4 diff --git a/config/rootfiles/common/rrdtool b/config/rootfiles/common/rrdtool index faa0dca..1008731 100644 --- a/config/rootfiles/common/rrdtool +++ b/config/rootfiles/common/rrdtool @@ -1,36 +1,133 @@ #srv/web/ipfire/html/graphs -#usr/bin/rrdcgi +usr/bin/rrdcached usr/bin/rrdtool usr/bin/rrdupdate +#usr/include/rrd.h +#usr/include/rrd_client.h +#usr/include/rrd_format.h #usr/lib/librrd.a #usr/lib/librrd.la -usr/lib/librrd.so -usr/lib/librrd.so.2 -usr/lib/librrd.so.2.0.15 +#usr/lib/librrd.so +usr/lib/librrd.so.4 +usr/lib/librrd.so.4.2.0 #usr/lib/librrd_th.a #usr/lib/librrd_th.la -usr/lib/librrd_th.so -usr/lib/librrd_th.so.2 -usr/lib/librrd_th.so.2.0.13 +#usr/lib/librrd_th.so +usr/lib/librrd_th.so.4 +usr/lib/librrd_th.so.4.2.0 usr/lib/perl5/site_perl/5.12.3/RRDp.pm -usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/RRDs.pm -#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/RRDp -#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/RRDp/.packlist -#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/RRDs -#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/RRDs/.packlist -#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/RRDs/RRDs.bs -usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/RRDs/RRDs.so -#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/ntmake.pl +usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/RRDs.pm +#usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/auto/RRDp +#usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/auto/RRDp/.packlist +#usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/auto/RRDs +#usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/auto/RRDs/.packlist +#usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/auto/RRDs/RRDs.bs +usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/auto/RRDs/RRDs.so +#usr/lib/pkgconfig/librrd.pc +#usr/share/doc/rrdtool-1.4.7 +#usr/share/doc/rrdtool-1.4.7/html +#usr/share/doc/rrdtool-1.4.7/html/RRDp.html +#usr/share/doc/rrdtool-1.4.7/html/RRDs.html +#usr/share/doc/rrdtool-1.4.7/html/bin_dec_hex.html +#usr/share/doc/rrdtool-1.4.7/html/cdeftutorial.html +#usr/share/doc/rrdtool-1.4.7/html/index.html +#usr/share/doc/rrdtool-1.4.7/html/librrd.html +#usr/share/doc/rrdtool-1.4.7/html/rpntutorial.html +#usr/share/doc/rrdtool-1.4.7/html/rrd-beginners.html +#usr/share/doc/rrdtool-1.4.7/html/rrdbuild.html +#usr/share/doc/rrdtool-1.4.7/html/rrdcached.html +#usr/share/doc/rrdtool-1.4.7/html/rrdcgi.html +#usr/share/doc/rrdtool-1.4.7/html/rrdcreate.html +#usr/share/doc/rrdtool-1.4.7/html/rrddump.html +#usr/share/doc/rrdtool-1.4.7/html/rrdfetch.html +#usr/share/doc/rrdtool-1.4.7/html/rrdfirst.html +#usr/share/doc/rrdtool-1.4.7/html/rrdflushcached.html +#usr/share/doc/rrdtool-1.4.7/html/rrdgraph.html +#usr/share/doc/rrdtool-1.4.7/html/rrdgraph_data.html +#usr/share/doc/rrdtool-1.4.7/html/rrdgraph_examples.html +#usr/share/doc/rrdtool-1.4.7/html/rrdgraph_graph.html +#usr/share/doc/rrdtool-1.4.7/html/rrdgraph_rpn.html +#usr/share/doc/rrdtool-1.4.7/html/rrdinfo.html +#usr/share/doc/rrdtool-1.4.7/html/rrdlast.html +#usr/share/doc/rrdtool-1.4.7/html/rrdlastupdate.html +#usr/share/doc/rrdtool-1.4.7/html/rrdresize.html +#usr/share/doc/rrdtool-1.4.7/html/rrdrestore.html +#usr/share/doc/rrdtool-1.4.7/html/rrdthreads.html +#usr/share/doc/rrdtool-1.4.7/html/rrdtool.html +#usr/share/doc/rrdtool-1.4.7/html/rrdtune.html +#usr/share/doc/rrdtool-1.4.7/html/rrdtutorial.html +#usr/share/doc/rrdtool-1.4.7/html/rrdupdate.html +#usr/share/doc/rrdtool-1.4.7/html/rrdxport.html +#usr/share/doc/rrdtool-1.4.7/txt +#usr/share/doc/rrdtool-1.4.7/txt/bin_dec_hex.pod +#usr/share/doc/rrdtool-1.4.7/txt/bin_dec_hex.txt +#usr/share/doc/rrdtool-1.4.7/txt/cdeftutorial.pod +#usr/share/doc/rrdtool-1.4.7/txt/cdeftutorial.txt +#usr/share/doc/rrdtool-1.4.7/txt/librrd.txt +#usr/share/doc/rrdtool-1.4.7/txt/rpntutorial.pod +#usr/share/doc/rrdtool-1.4.7/txt/rpntutorial.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrd-beginners.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrd-beginners.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdbuild.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdbuild.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdcached.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdcached.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdcgi.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdcgi.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdcreate.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdcreate.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrddump.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrddump.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdfetch.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdfetch.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdfirst.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdfirst.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdflushcached.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdflushcached.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdgraph.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdgraph.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdgraph_data.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdgraph_data.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdgraph_examples.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdgraph_examples.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdgraph_graph.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdgraph_graph.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdgraph_rpn.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdgraph_rpn.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdinfo.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdinfo.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdlast.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdlast.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdlastupdate.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdlastupdate.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdresize.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdresize.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdrestore.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdrestore.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdthreads.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdthreads.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdtool.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdtool.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdtune.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdtune.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdtutorial.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdtutorial.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdupdate.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdupdate.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdxport.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdxport.txt #usr/share/man/man1/bin_dec_hex.1 #usr/share/man/man1/cdeftutorial.1 #usr/share/man/man1/rpntutorial.1 #usr/share/man/man1/rrd-beginners.1 #usr/share/man/man1/rrdbuild.1 +#usr/share/man/man1/rrdcached.1 #usr/share/man/man1/rrdcgi.1 #usr/share/man/man1/rrdcreate.1 #usr/share/man/man1/rrddump.1 #usr/share/man/man1/rrdfetch.1 #usr/share/man/man1/rrdfirst.1 +#usr/share/man/man1/rrdflushcached.1 #usr/share/man/man1/rrdgraph.1 #usr/share/man/man1/rrdgraph_data.1 #usr/share/man/man1/rrdgraph_examples.1 @@ -49,105 +146,18 @@ usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/RRDs/RRDs.so #usr/share/man/man1/rrdxport.1 #usr/share/man/man3/RRDp.3 #usr/share/man/man3/RRDs.3 -#usr/share/rrdtool-1.2.30 -#usr/share/rrdtool-1.2.30/include -#usr/share/rrdtool-1.2.30/include/rrd.h -#usr/share/rrdtool-1.2.30/share -#usr/share/rrdtool-1.2.30/share/doc -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30 -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/RRDp.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/RRDs.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/bin_dec_hex.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/cdeftutorial.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/index.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rpntutorial.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrd-beginners.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdbuild.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdcgi.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdcreate.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrddump.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdfetch.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdfirst.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdgraph.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdgraph_data.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdgraph_examples.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdgraph_graph.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdgraph_rpn.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdinfo.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdlast.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdlastupdate.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdresize.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdrestore.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdthreads.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdtool.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdtune.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdtutorial.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdupdate.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdxport.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/bin_dec_hex.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/bin_dec_hex.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/cdeftutorial.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/cdeftutorial.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rpntutorial.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rpntutorial.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrd-beginners.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrd-beginners.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdbuild.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdbuild.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdcgi.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdcgi.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdcreate.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdcreate.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrddump.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrddump.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdfetch.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdfetch.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdfirst.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdfirst.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdgraph.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdgraph.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdgraph_data.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdgraph_data.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdgraph_examples.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdgraph_examples.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdgraph_graph.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdgraph_graph.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdgraph_rpn.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdgraph_rpn.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdinfo.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdinfo.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdlast.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdlast.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdlastupdate.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdlastupdate.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdresize.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdresize.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdrestore.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdrestore.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdthreads.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdthreads.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdtool.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdtool.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdtune.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdtune.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdtutorial.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdtutorial.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdupdate.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdupdate.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdxport.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdxport.txt -#usr/share/rrdtool-1.2.30/share/rrdtool -#usr/share/rrdtool-1.2.30/share/rrdtool/examples -#usr/share/rrdtool-1.2.30/share/rrdtool/examples/4charts.pl -#usr/share/rrdtool-1.2.30/share/rrdtool/examples/bigtops.pl -#usr/share/rrdtool-1.2.30/share/rrdtool/examples/cgi-demo.cgi -#usr/share/rrdtool-1.2.30/share/rrdtool/examples/minmax.pl -#usr/share/rrdtool-1.2.30/share/rrdtool/examples/perftest.pl -#usr/share/rrdtool-1.2.30/share/rrdtool/examples/piped-demo.pl -#usr/share/rrdtool-1.2.30/share/rrdtool/examples/shared-demo.pl -#usr/share/rrdtool-1.2.30/share/rrdtool/examples/stripes.pl -#usr/share/rrdtool-1.2.30/share/rrdtool/fonts -usr/share/rrdtool-1.2.30/share/rrdtool/fonts/DejaVuSansMono-Roman.ttf +#usr/share/man/man3/librrd.3 +#usr/share/rrdtool +#usr/share/rrdtool/examples +#usr/share/rrdtool/examples/4charts.pl +#usr/share/rrdtool/examples/bigtops.pl +#usr/share/rrdtool/examples/cgi-demo.cgi +#usr/share/rrdtool/examples/minmax.pl +#usr/share/rrdtool/examples/perftest.pl +#usr/share/rrdtool/examples/piped-demo.pl +#usr/share/rrdtool/examples/rrdcached +#usr/share/rrdtool/examples/rrdcached/RRDCached.pm +#usr/share/rrdtool/examples/rrdcached/rrdcached-size.pl +#usr/share/rrdtool/examples/shared-demo.pl +#usr/share/rrdtool/examples/stripes.pl var/log/rrd diff --git a/config/rootfiles/common/sed b/config/rootfiles/common/sed index 5cd180b..8db08fa 100644 --- a/config/rootfiles/common/sed +++ b/config/rootfiles/common/sed @@ -1,5 +1,3 @@ bin/sed -#usr/info/sed.info -#usr/info/sed.info-1 -#usr/info/sed.info-2 -#usr/man/man1/sed.1 +#usr/share/info/sed.info +#usr/share/man/man1/sed.1 diff --git a/config/rootfiles/common/shadow b/config/rootfiles/common/shadow index 31a273f..ec9054e 100644 --- a/config/rootfiles/common/shadow +++ b/config/rootfiles/common/shadow @@ -23,7 +23,7 @@ lib/libshadow.so.0.0.0 #usr/bin/sg #usr/lib/libshadow.a #usr/lib/libshadow.la -usr/lib/libshadow.so +#usr/lib/libshadow.so #usr/man/man1/chage.1 #usr/man/man1/chfn.1 #usr/man/man1/chsh.1 @@ -45,6 +45,7 @@ usr/lib/libshadow.so #usr/man/man5/porttime.5 #usr/man/man5/shadow.5 #usr/man/man5/suauth.5 +#usr/man/man8 #usr/man/man8/chpasswd.8 #usr/man/man8/faillog.8 #usr/man/man8/groupadd.8 diff --git a/config/rootfiles/common/stage2 b/config/rootfiles/common/stage2 index e59763f..3d21e4e 100644 --- a/config/rootfiles/common/stage2 +++ b/config/rootfiles/common/stage2 @@ -1,9 +1,11 @@ bin/bash bin/cat -bin/grep +bin/echo bin/pwd bin/stty #boot +dev/console +dev/null etc/bashrc etc/certparams etc/e2fsck.conf @@ -17,7 +19,6 @@ etc/ipsec.user.conf etc/ipsec.user.secrets etc/issue etc/ld.so.conf -etc/localtime etc/logrotate.conf etc/mime.types etc/modprobe.d @@ -53,11 +54,18 @@ mnt root/ipfire #sbin #srv +tmp +#usr/bin #usr/bin/perl #usr/include #usr/lib -usr/lib/libgcc_s.so +#usr/lib/libgcc_s.so usr/lib/libgcc_s.so.1 +#usr/lib/libstdc++.la +#usr/lib/libstdc++.so +usr/lib/libstdc++.so.6 +#usr/local +#usr/local/bin #usr/local/bin/archive.files usr/local/bin/backupiso usr/local/bin/connscheduler @@ -74,13 +82,15 @@ usr/local/bin/scanhd usr/local/bin/setddns.pl usr/local/bin/settime usr/local/bin/timecheck -#usr/local/bin/uname #usr/local/include #usr/local/lib #usr/local/sbin +#usr/local/share #usr/local/share/doc #usr/local/share/info #usr/local/share/locale +#usr/local/share/man +#usr/local/share/man/man1 #usr/local/share/man/man2 #usr/local/share/man/man3 #usr/local/share/man/man4 @@ -132,6 +142,3 @@ var/run var/run/utmp #var/spool var/tmp -dev/null -dev/console -tmp diff --git a/config/rootfiles/common/sysfsutils b/config/rootfiles/common/sysfsutils index c749e48..32eca4e 100644 --- a/config/rootfiles/common/sysfsutils +++ b/config/rootfiles/common/sysfsutils @@ -1,18 +1,3 @@ -#opt/MACHINE-uClibc/bin/dlist_test -#opt/MACHINE-uClibc/bin/get_bus_devices_list -#opt/MACHINE-uClibc/bin/get_class_dev -#opt/MACHINE-uClibc/bin/get_classdev_parent -#opt/MACHINE-uClibc/bin/get_device -#opt/MACHINE-uClibc/bin/get_driver -#opt/MACHINE-uClibc/bin/systool -#opt/MACHINE-uClibc/bin/testlibsysfs -#opt/MACHINE-uClibc/bin/write_attr -#opt/MACHINE-uClibc/lib/libsysfs.a -#opt/MACHINE-uClibc/lib/libsysfs.la -#opt/MACHINE-uClibc/man/man1/systool.1 -#opt/MACHINE-uClibc/usr/include/sysfs -#opt/MACHINE-uClibc/usr/include/sysfs/dlist.h -#opt/MACHINE-uClibc/usr/include/sysfs/libsysfs.h #bin/dlist_test #bin/get_bus_devices_list #bin/get_class_dev diff --git a/config/rootfiles/common/uClibc b/config/rootfiles/common/uClibc deleted file mode 100644 index 373caa9..0000000 --- a/config/rootfiles/common/uClibc +++ /dev/null @@ -1,1353 +0,0 @@ -#lib/ld-uClibc-0.9.28.so -#lib/ld-uClibc.so.0 -#lib/libc.so -#lib/libc.so.0 -#lib/libm.so.0 -#lib/libuClibc-0.9.28.so -#opt/MACHINE-uClibc/include/a.out.h -#opt/MACHINE-uClibc/include/alloca.h -#opt/MACHINE-uClibc/include/ar.h -#opt/MACHINE-uClibc/include/arpa -#opt/MACHINE-uClibc/include/arpa/ftp.h -#opt/MACHINE-uClibc/include/arpa/inet.h -#opt/MACHINE-uClibc/include/arpa/nameser.h -#opt/MACHINE-uClibc/include/arpa/nameser_compat.h -#opt/MACHINE-uClibc/include/arpa/telnet.h -#opt/MACHINE-uClibc/include/arpa/tftp.h -#opt/MACHINE-uClibc/include/asm -#opt/MACHINE-uClibc/include/asm-generic -#opt/MACHINE-uClibc/include/asm-generic/errno-base.h -#opt/MACHINE-uClibc/include/asm-generic/errno.h -#opt/MACHINE-uClibc/include/asm/8253pit.h -#opt/MACHINE-uClibc/include/asm/a.out.h -#opt/MACHINE-uClibc/include/asm/agp.h -#opt/MACHINE-uClibc/include/asm/apic.h -#opt/MACHINE-uClibc/include/asm/apicdef.h -#opt/MACHINE-uClibc/include/asm/arch_hooks.h -#opt/MACHINE-uClibc/include/asm/atomic.h -#opt/MACHINE-uClibc/include/asm/bitops.h -#opt/MACHINE-uClibc/include/asm/boot.h -#opt/MACHINE-uClibc/include/asm/byteorder.h -#opt/MACHINE-uClibc/include/asm/cache.h -#opt/MACHINE-uClibc/include/asm/cacheflush.h -#opt/MACHINE-uClibc/include/asm/checksum.h -#opt/MACHINE-uClibc/include/asm/cpu.h -#opt/MACHINE-uClibc/include/asm/cpufeature.h -#opt/MACHINE-uClibc/include/asm/debugreg.h -#opt/MACHINE-uClibc/include/asm/desc.h -#opt/MACHINE-uClibc/include/asm/dma.h -#opt/MACHINE-uClibc/include/asm/e820.h -#opt/MACHINE-uClibc/include/asm/elf.h -#opt/MACHINE-uClibc/include/asm/errno.h -#opt/MACHINE-uClibc/include/asm/fcntl.h -#opt/MACHINE-uClibc/include/asm/fixmap.h -#opt/MACHINE-uClibc/include/asm/floppy.h -#opt/MACHINE-uClibc/include/asm/genapic.h -#opt/MACHINE-uClibc/include/asm/hardirq.h -#opt/MACHINE-uClibc/include/asm/hdreg.h -#opt/MACHINE-uClibc/include/asm/hw_irq.h -#opt/MACHINE-uClibc/include/asm/i8259.h -#opt/MACHINE-uClibc/include/asm/init.h -#opt/MACHINE-uClibc/include/asm/io.h -#opt/MACHINE-uClibc/include/asm/io_apic.h -#opt/MACHINE-uClibc/include/asm/ioctl.h -#opt/MACHINE-uClibc/include/asm/ioctls.h -#opt/MACHINE-uClibc/include/asm/ipc.h -#opt/MACHINE-uClibc/include/asm/ipcbuf.h -#opt/MACHINE-uClibc/include/asm/irq.h -#opt/MACHINE-uClibc/include/asm/kdebug.h -#opt/MACHINE-uClibc/include/asm/kprobes.h -#opt/MACHINE-uClibc/include/asm/kvm.h -#opt/MACHINE-uClibc/include/asm/kvm_emulate.h -#opt/MACHINE-uClibc/include/asm/kvm_host.h -#opt/MACHINE-uClibc/include/asm/kvm_para.h -#opt/MACHINE-uClibc/include/asm/ldt.h -#opt/MACHINE-uClibc/include/asm/linkage.h -#opt/MACHINE-uClibc/include/asm/mach-bigsmp -#opt/MACHINE-uClibc/include/asm/mach-bigsmp/mach_apic.h -#opt/MACHINE-uClibc/include/asm/mach-bigsmp/mach_apicdef.h -#opt/MACHINE-uClibc/include/asm/mach-bigsmp/mach_ipi.h -#opt/MACHINE-uClibc/include/asm/mach-bigsmp/mach_mpspec.h -#opt/MACHINE-uClibc/include/asm/mach-default -#opt/MACHINE-uClibc/include/asm/mach-default/apm.h -#opt/MACHINE-uClibc/include/asm/mach-default/bios_ebda.h -#opt/MACHINE-uClibc/include/asm/mach-default/do_timer.h -#opt/MACHINE-uClibc/include/asm/mach-default/entry_arch.h -#opt/MACHINE-uClibc/include/asm/mach-default/io_ports.h -#opt/MACHINE-uClibc/include/asm/mach-default/irq_vectors.h -#opt/MACHINE-uClibc/include/asm/mach-default/mach_apic.h -#opt/MACHINE-uClibc/include/asm/mach-default/mach_apicdef.h -#opt/MACHINE-uClibc/include/asm/mach-default/mach_ipi.h -#opt/MACHINE-uClibc/include/asm/mach-default/mach_mpparse.h -#opt/MACHINE-uClibc/include/asm/mach-default/mach_mpspec.h -#opt/MACHINE-uClibc/include/asm/mach-default/mach_reboot.h -#opt/MACHINE-uClibc/include/asm/mach-default/mach_time.h -#opt/MACHINE-uClibc/include/asm/mach-default/mach_timer.h -#opt/MACHINE-uClibc/include/asm/mach-default/mach_traps.h -#opt/MACHINE-uClibc/include/asm/mach-default/mach_wakecpu.h -#opt/MACHINE-uClibc/include/asm/mach-default/pci-functions.h -#opt/MACHINE-uClibc/include/asm/mach-default/setup_arch_post.h -#opt/MACHINE-uClibc/include/asm/mach-default/setup_arch_pre.h -#opt/MACHINE-uClibc/include/asm/mach-default/smpboot_hooks.h -#opt/MACHINE-uClibc/include/asm/mach-es7000 -#opt/MACHINE-uClibc/include/asm/mach-es7000/mach_apic.h -#opt/MACHINE-uClibc/include/asm/mach-es7000/mach_apicdef.h -#opt/MACHINE-uClibc/include/asm/mach-es7000/mach_ipi.h -#opt/MACHINE-uClibc/include/asm/mach-es7000/mach_mpparse.h -#opt/MACHINE-uClibc/include/asm/mach-es7000/mach_mpspec.h -#opt/MACHINE-uClibc/include/asm/mach-es7000/mach_wakecpu.h -#opt/MACHINE-uClibc/include/asm/mach-generic -#opt/MACHINE-uClibc/include/asm/mach-generic/mach_apic.h -#opt/MACHINE-uClibc/include/asm/mach-generic/mach_apicdef.h -#opt/MACHINE-uClibc/include/asm/mach-generic/mach_ipi.h -#opt/MACHINE-uClibc/include/asm/mach-generic/mach_mpparse.h -#opt/MACHINE-uClibc/include/asm/mach-generic/mach_mpspec.h -#opt/MACHINE-uClibc/include/asm/mach-numaq -#opt/MACHINE-uClibc/include/asm/mach-numaq/mach_apic.h -#opt/MACHINE-uClibc/include/asm/mach-numaq/mach_apicdef.h -#opt/MACHINE-uClibc/include/asm/mach-numaq/mach_ipi.h -#opt/MACHINE-uClibc/include/asm/mach-numaq/mach_mpparse.h -#opt/MACHINE-uClibc/include/asm/mach-numaq/mach_mpspec.h -#opt/MACHINE-uClibc/include/asm/mach-numaq/mach_wakecpu.h -#opt/MACHINE-uClibc/include/asm/mach-summit -#opt/MACHINE-uClibc/include/asm/mach-summit/mach_apic.h -#opt/MACHINE-uClibc/include/asm/mach-summit/mach_apicdef.h -#opt/MACHINE-uClibc/include/asm/mach-summit/mach_ipi.h -#opt/MACHINE-uClibc/include/asm/mach-summit/mach_mpparse.h -#opt/MACHINE-uClibc/include/asm/mach-summit/mach_mpspec.h -#opt/MACHINE-uClibc/include/asm/mach-visws -#opt/MACHINE-uClibc/include/asm/mach-visws/cobalt.h -#opt/MACHINE-uClibc/include/asm/mach-visws/do_timer.h -#opt/MACHINE-uClibc/include/asm/mach-visws/entry_arch.h -#opt/MACHINE-uClibc/include/asm/mach-visws/irq_vectors.h -#opt/MACHINE-uClibc/include/asm/mach-visws/lithium.h -#opt/MACHINE-uClibc/include/asm/mach-visws/mach_apic.h -#opt/MACHINE-uClibc/include/asm/mach-visws/mach_apicdef.h -#opt/MACHINE-uClibc/include/asm/mach-visws/piix4.h -#opt/MACHINE-uClibc/include/asm/mach-visws/setup_arch_post.h -#opt/MACHINE-uClibc/include/asm/mach-visws/setup_arch_pre.h -#opt/MACHINE-uClibc/include/asm/mach-visws/smpboot_hooks.h -#opt/MACHINE-uClibc/include/asm/mach-voyager -#opt/MACHINE-uClibc/include/asm/mach-voyager/do_timer.h -#opt/MACHINE-uClibc/include/asm/mach-voyager/entry_arch.h -#opt/MACHINE-uClibc/include/asm/mach-voyager/irq_vectors.h -#opt/MACHINE-uClibc/include/asm/mach-voyager/setup_arch_post.h -#opt/MACHINE-uClibc/include/asm/mach-voyager/setup_arch_pre.h -#opt/MACHINE-uClibc/include/asm/math_emu.h -#opt/MACHINE-uClibc/include/asm/mca.h -#opt/MACHINE-uClibc/include/asm/mca_dma.h -#opt/MACHINE-uClibc/include/asm/mman.h -#opt/MACHINE-uClibc/include/asm/mmu.h -#opt/MACHINE-uClibc/include/asm/mmu_context.h -#opt/MACHINE-uClibc/include/asm/mmx.h -#opt/MACHINE-uClibc/include/asm/module.h -#opt/MACHINE-uClibc/include/asm/mpspec.h -#opt/MACHINE-uClibc/include/asm/mpspec_def.h -#opt/MACHINE-uClibc/include/asm/msgbuf.h -#opt/MACHINE-uClibc/include/asm/msr.h -#opt/MACHINE-uClibc/include/asm/mtrr.h -#opt/MACHINE-uClibc/include/asm/namei.h -#opt/MACHINE-uClibc/include/asm/nmi.h -#opt/MACHINE-uClibc/include/asm/node.h -#opt/MACHINE-uClibc/include/asm/numaq.h -#opt/MACHINE-uClibc/include/asm/numnodes.h -#opt/MACHINE-uClibc/include/asm/page.h -#opt/MACHINE-uClibc/include/asm/param.h -#opt/MACHINE-uClibc/include/asm/parport.h -#opt/MACHINE-uClibc/include/asm/pgalloc.h -#opt/MACHINE-uClibc/include/asm/poll.h -#opt/MACHINE-uClibc/include/asm/posix_types.h -#opt/MACHINE-uClibc/include/asm/processor.h -#opt/MACHINE-uClibc/include/asm/ptrace.h -#opt/MACHINE-uClibc/include/asm/rwlock.h -#opt/MACHINE-uClibc/include/asm/segment.h -#opt/MACHINE-uClibc/include/asm/semaphore.h -#opt/MACHINE-uClibc/include/asm/sembuf.h -#opt/MACHINE-uClibc/include/asm/serial.h -#opt/MACHINE-uClibc/include/asm/shmbuf.h -#opt/MACHINE-uClibc/include/asm/shmparam.h -#opt/MACHINE-uClibc/include/asm/sigcontext.h -#opt/MACHINE-uClibc/include/asm/siginfo.h -#opt/MACHINE-uClibc/include/asm/socket.h -#opt/MACHINE-uClibc/include/asm/sockios.h -#opt/MACHINE-uClibc/include/asm/spinlock.h -#opt/MACHINE-uClibc/include/asm/srat.h -#opt/MACHINE-uClibc/include/asm/stat.h -#opt/MACHINE-uClibc/include/asm/suspend.h -#opt/MACHINE-uClibc/include/asm/svm.h -#opt/MACHINE-uClibc/include/asm/system.h -#opt/MACHINE-uClibc/include/asm/termbits.h -#opt/MACHINE-uClibc/include/asm/termios.h -#opt/MACHINE-uClibc/include/asm/timer.h -#opt/MACHINE-uClibc/include/asm/timex.h -#opt/MACHINE-uClibc/include/asm/tlbflush.h -#opt/MACHINE-uClibc/include/asm/types.h -#opt/MACHINE-uClibc/include/asm/ucontext.h -#opt/MACHINE-uClibc/include/asm/unaligned.h -#opt/MACHINE-uClibc/include/asm/unistd.h -#opt/MACHINE-uClibc/include/asm/user.h -#opt/MACHINE-uClibc/include/asm/vga.h -#opt/MACHINE-uClibc/include/asm/vic.h -#opt/MACHINE-uClibc/include/asm/virtext.h -#opt/MACHINE-uClibc/include/asm/vm86.h -#opt/MACHINE-uClibc/include/asm/vmx.h -#opt/MACHINE-uClibc/include/asm/voyager.h -#opt/MACHINE-uClibc/include/assert.h -#opt/MACHINE-uClibc/include/atomic.h -#opt/MACHINE-uClibc/include/bits -#opt/MACHINE-uClibc/include/bits/atomic.h -#opt/MACHINE-uClibc/include/bits/atomicity.h -#opt/MACHINE-uClibc/include/bits/byteswap.h -#opt/MACHINE-uClibc/include/bits/cmathcalls.h -#opt/MACHINE-uClibc/include/bits/confname.h -#opt/MACHINE-uClibc/include/bits/dirent.h -#opt/MACHINE-uClibc/include/bits/dlfcn.h -#opt/MACHINE-uClibc/include/bits/elfclass.h -#opt/MACHINE-uClibc/include/bits/endian.h -#opt/MACHINE-uClibc/include/bits/environments.h -#opt/MACHINE-uClibc/include/bits/errno.h -#opt/MACHINE-uClibc/include/bits/errno_values.h -#opt/MACHINE-uClibc/include/bits/fcntl.h -#opt/MACHINE-uClibc/include/bits/fenv.h -#opt/MACHINE-uClibc/include/bits/fenvinline.h -#opt/MACHINE-uClibc/include/bits/getopt.h -#opt/MACHINE-uClibc/include/bits/huge_val.h -#opt/MACHINE-uClibc/include/bits/in.h -#opt/MACHINE-uClibc/include/bits/initspin.h -#opt/MACHINE-uClibc/include/bits/ioctl-types.h -#opt/MACHINE-uClibc/include/bits/ioctls.h -#opt/MACHINE-uClibc/include/bits/ipc.h -#opt/MACHINE-uClibc/include/bits/kernel_sigaction.h -#opt/MACHINE-uClibc/include/bits/kernel_stat.h -#opt/MACHINE-uClibc/include/bits/kernel_types.h -#opt/MACHINE-uClibc/include/bits/local_lim.h -#opt/MACHINE-uClibc/include/bits/locale.h -#opt/MACHINE-uClibc/include/bits/mathcalls.h -#opt/MACHINE-uClibc/include/bits/mathdef.h -#opt/MACHINE-uClibc/include/bits/mathinline.h -#opt/MACHINE-uClibc/include/bits/mman.h -#opt/MACHINE-uClibc/include/bits/msq.h -#opt/MACHINE-uClibc/include/bits/nan.h -#opt/MACHINE-uClibc/include/bits/netdb.h -#opt/MACHINE-uClibc/include/bits/poll.h -#opt/MACHINE-uClibc/include/bits/posix1_lim.h -#opt/MACHINE-uClibc/include/bits/posix2_lim.h -#opt/MACHINE-uClibc/include/bits/posix_opt.h -#opt/MACHINE-uClibc/include/bits/profil-counter.h -#opt/MACHINE-uClibc/include/bits/pthreadtypes.h -#opt/MACHINE-uClibc/include/bits/resource.h -#opt/MACHINE-uClibc/include/bits/sched.h -#opt/MACHINE-uClibc/include/bits/select.h -#opt/MACHINE-uClibc/include/bits/sem.h -#opt/MACHINE-uClibc/include/bits/setjmp.h -#opt/MACHINE-uClibc/include/bits/shm.h -#opt/MACHINE-uClibc/include/bits/sigaction.h -#opt/MACHINE-uClibc/include/bits/sigcontext.h -#opt/MACHINE-uClibc/include/bits/sigcontextinfo.h -#opt/MACHINE-uClibc/include/bits/siginfo.h -#opt/MACHINE-uClibc/include/bits/signum.h -#opt/MACHINE-uClibc/include/bits/sigset.h -#opt/MACHINE-uClibc/include/bits/sigstack.h -#opt/MACHINE-uClibc/include/bits/sigthread.h -#opt/MACHINE-uClibc/include/bits/sockaddr.h -#opt/MACHINE-uClibc/include/bits/socket.h -#opt/MACHINE-uClibc/include/bits/stackinfo.h -#opt/MACHINE-uClibc/include/bits/stat.h -#opt/MACHINE-uClibc/include/bits/statfs.h -#opt/MACHINE-uClibc/include/bits/statvfs.h -#opt/MACHINE-uClibc/include/bits/stdio.h -#opt/MACHINE-uClibc/include/bits/stdio_lim.h -#opt/MACHINE-uClibc/include/bits/syscalls.h -#opt/MACHINE-uClibc/include/bits/sysnum.h -#opt/MACHINE-uClibc/include/bits/termios.h -#opt/MACHINE-uClibc/include/bits/time.h -#opt/MACHINE-uClibc/include/bits/types.h -#opt/MACHINE-uClibc/include/bits/uClibc_clk_tck.h -#opt/MACHINE-uClibc/include/bits/uClibc_config.h -#opt/MACHINE-uClibc/include/bits/uClibc_ctype.h -#opt/MACHINE-uClibc/include/bits/uClibc_fpmax.h -#opt/MACHINE-uClibc/include/bits/uClibc_locale.h -#opt/MACHINE-uClibc/include/bits/uClibc_locale_data.h -#opt/MACHINE-uClibc/include/bits/uClibc_page.h -#opt/MACHINE-uClibc/include/bits/uClibc_pthread.h -#opt/MACHINE-uClibc/include/bits/uClibc_stdio.h -#opt/MACHINE-uClibc/include/bits/uClibc_touplow.h -#opt/MACHINE-uClibc/include/bits/uClibc_uintmaxtostr.h -#opt/MACHINE-uClibc/include/bits/uClibc_uwchar.h -#opt/MACHINE-uClibc/include/bits/uClibc_va_copy.h -#opt/MACHINE-uClibc/include/bits/uio.h -#opt/MACHINE-uClibc/include/bits/ustat.h -#opt/MACHINE-uClibc/include/bits/utmp.h -#opt/MACHINE-uClibc/include/bits/utmpx.h -#opt/MACHINE-uClibc/include/bits/utsname.h -#opt/MACHINE-uClibc/include/bits/waitflags.h -#opt/MACHINE-uClibc/include/bits/waitstatus.h -#opt/MACHINE-uClibc/include/bits/wchar.h -#opt/MACHINE-uClibc/include/bits/wordsize.h -#opt/MACHINE-uClibc/include/bits/xopen_lim.h -#opt/MACHINE-uClibc/include/byteswap.h -#opt/MACHINE-uClibc/include/complex.h -#opt/MACHINE-uClibc/include/cpio.h -#opt/MACHINE-uClibc/include/crypt.h -#opt/MACHINE-uClibc/include/ctype.h -#opt/MACHINE-uClibc/include/dirent.h -#opt/MACHINE-uClibc/include/dlfcn.h -#opt/MACHINE-uClibc/include/elf.h -#opt/MACHINE-uClibc/include/endian.h -#opt/MACHINE-uClibc/include/err.h -#opt/MACHINE-uClibc/include/errno.h -#opt/MACHINE-uClibc/include/error.h -#opt/MACHINE-uClibc/include/fcntl.h -#opt/MACHINE-uClibc/include/features.h -#opt/MACHINE-uClibc/include/fnmatch.h -#opt/MACHINE-uClibc/include/fpu_control.h -#opt/MACHINE-uClibc/include/ftw.h -#opt/MACHINE-uClibc/include/getopt.h -#opt/MACHINE-uClibc/include/glob.h -#opt/MACHINE-uClibc/include/gnu-versions.h -#opt/MACHINE-uClibc/include/grp.h -#opt/MACHINE-uClibc/include/iconv.h -#opt/MACHINE-uClibc/include/ieee754.h -#opt/MACHINE-uClibc/include/inttypes.h -#opt/MACHINE-uClibc/include/langinfo.h -#opt/MACHINE-uClibc/include/lastlog.h -#opt/MACHINE-uClibc/include/libgen.h -#opt/MACHINE-uClibc/include/limits.h -#opt/MACHINE-uClibc/include/link.h -#opt/MACHINE-uClibc/include/linux -#opt/MACHINE-uClibc/include/linux/8250_pci.h -#opt/MACHINE-uClibc/include/linux/a.out.h -#opt/MACHINE-uClibc/include/linux/acct.h -#opt/MACHINE-uClibc/include/linux/acpi.h -#opt/MACHINE-uClibc/include/linux/adb.h -#opt/MACHINE-uClibc/include/linux/adfs_fs.h -#opt/MACHINE-uClibc/include/linux/adfs_fs_sb.h -#opt/MACHINE-uClibc/include/linux/affs_fs.h -#opt/MACHINE-uClibc/include/linux/affs_hardblocks.h -#opt/MACHINE-uClibc/include/linux/agpgart.h -#opt/MACHINE-uClibc/include/linux/aio.h -#opt/MACHINE-uClibc/include/linux/aio_abi.h -#opt/MACHINE-uClibc/include/linux/amifd.h -#opt/MACHINE-uClibc/include/linux/amifdreg.h -#opt/MACHINE-uClibc/include/linux/amigaffs.h -#opt/MACHINE-uClibc/include/linux/apm_bios.h -#opt/MACHINE-uClibc/include/linux/ata.h -#opt/MACHINE-uClibc/include/linux/atalk.h -#opt/MACHINE-uClibc/include/linux/atm.h -#opt/MACHINE-uClibc/include/linux/atm_eni.h -#opt/MACHINE-uClibc/include/linux/atm_he.h -#opt/MACHINE-uClibc/include/linux/atm_idt77105.h -#opt/MACHINE-uClibc/include/linux/atm_nicstar.h -#opt/MACHINE-uClibc/include/linux/atm_suni.h -#opt/MACHINE-uClibc/include/linux/atm_tcp.h -#opt/MACHINE-uClibc/include/linux/atm_zatm.h -#opt/MACHINE-uClibc/include/linux/atmapi.h -#opt/MACHINE-uClibc/include/linux/atmarp.h -#opt/MACHINE-uClibc/include/linux/atmbr2684.h -#opt/MACHINE-uClibc/include/linux/atmclip.h -#opt/MACHINE-uClibc/include/linux/atmdev.h -#opt/MACHINE-uClibc/include/linux/atmioc.h -#opt/MACHINE-uClibc/include/linux/atmlec.h -#opt/MACHINE-uClibc/include/linux/atmmpc.h -#opt/MACHINE-uClibc/include/linux/atmppp.h -#opt/MACHINE-uClibc/include/linux/atmsap.h -#opt/MACHINE-uClibc/include/linux/atmsvc.h -#opt/MACHINE-uClibc/include/linux/audit.h -#opt/MACHINE-uClibc/include/linux/auto_fs.h -#opt/MACHINE-uClibc/include/linux/auto_fs4.h -#opt/MACHINE-uClibc/include/linux/autoconf.h -#opt/MACHINE-uClibc/include/linux/awe_voice.h -#opt/MACHINE-uClibc/include/linux/ax25.h -#opt/MACHINE-uClibc/include/linux/b1lli.h -#opt/MACHINE-uClibc/include/linux/backing-dev.h -#opt/MACHINE-uClibc/include/linux/backlight.h -#opt/MACHINE-uClibc/include/linux/baycom.h -#opt/MACHINE-uClibc/include/linux/bcd.h -#opt/MACHINE-uClibc/include/linux/bfs_fs.h -#opt/MACHINE-uClibc/include/linux/binfmts.h -#opt/MACHINE-uClibc/include/linux/bitmap.h -#opt/MACHINE-uClibc/include/linux/bitops.h -#opt/MACHINE-uClibc/include/linux/blkpg.h -#opt/MACHINE-uClibc/include/linux/blockgroup_lock.h -#opt/MACHINE-uClibc/include/linux/bootmem.h -#opt/MACHINE-uClibc/include/linux/bpqether.h -#opt/MACHINE-uClibc/include/linux/byteorder -#opt/MACHINE-uClibc/include/linux/byteorder/big_endian.h -#opt/MACHINE-uClibc/include/linux/byteorder/generic.h -#opt/MACHINE-uClibc/include/linux/byteorder/little_endian.h -#opt/MACHINE-uClibc/include/linux/byteorder/pdp_endian.h -#opt/MACHINE-uClibc/include/linux/byteorder/swab.h -#opt/MACHINE-uClibc/include/linux/byteorder/swabb.h -#opt/MACHINE-uClibc/include/linux/cache.h -#opt/MACHINE-uClibc/include/linux/capability.h -#opt/MACHINE-uClibc/include/linux/capi.h -#opt/MACHINE-uClibc/include/linux/cciss_ioctl.h -#opt/MACHINE-uClibc/include/linux/cd1400.h -#opt/MACHINE-uClibc/include/linux/cdk.h -#opt/MACHINE-uClibc/include/linux/cdrom.h -#opt/MACHINE-uClibc/include/linux/circ_buf.h -#opt/MACHINE-uClibc/include/linux/cobalt-nvram.h -#opt/MACHINE-uClibc/include/linux/coda.h -#opt/MACHINE-uClibc/include/linux/coda_proc.h -#opt/MACHINE-uClibc/include/linux/coda_psdev.h -#opt/MACHINE-uClibc/include/linux/coff.h -#opt/MACHINE-uClibc/include/linux/com20020.h -#opt/MACHINE-uClibc/include/linux/compat.h -#opt/MACHINE-uClibc/include/linux/compat_ioctl.h -#opt/MACHINE-uClibc/include/linux/compiler.h -#opt/MACHINE-uClibc/include/linux/comstats.h -#opt/MACHINE-uClibc/include/linux/config.h -#opt/MACHINE-uClibc/include/linux/console.h -#opt/MACHINE-uClibc/include/linux/console_struct.h -#opt/MACHINE-uClibc/include/linux/consolemap.h -#opt/MACHINE-uClibc/include/linux/cpu.h -#opt/MACHINE-uClibc/include/linux/cpufreq.h -#opt/MACHINE-uClibc/include/linux/cramfs_fs.h -#opt/MACHINE-uClibc/include/linux/cramfs_fs_sb.h -#opt/MACHINE-uClibc/include/linux/crc32.h -#opt/MACHINE-uClibc/include/linux/crypto.h -#opt/MACHINE-uClibc/include/linux/cryptodev.h -#opt/MACHINE-uClibc/include/linux/ctype.h -#opt/MACHINE-uClibc/include/linux/cuda.h -#opt/MACHINE-uClibc/include/linux/cyclades.h -#opt/MACHINE-uClibc/include/linux/cycx_cfm.h -#opt/MACHINE-uClibc/include/linux/cycx_drv.h -#opt/MACHINE-uClibc/include/linux/cycx_x25.h -#opt/MACHINE-uClibc/include/linux/devfs_fs.h -#opt/MACHINE-uClibc/include/linux/devfs_fs_kernel.h -#opt/MACHINE-uClibc/include/linux/device-mapper.h -#opt/MACHINE-uClibc/include/linux/device.h -#opt/MACHINE-uClibc/include/linux/devpts_fs.h -#opt/MACHINE-uClibc/include/linux/dirent.h -#opt/MACHINE-uClibc/include/linux/divert.h -#opt/MACHINE-uClibc/include/linux/dm-ioctl.h -#opt/MACHINE-uClibc/include/linux/dn.h -#opt/MACHINE-uClibc/include/linux/dnotify.h -#opt/MACHINE-uClibc/include/linux/dqblk_v1.h -#opt/MACHINE-uClibc/include/linux/dqblk_v2.h -#opt/MACHINE-uClibc/include/linux/dqblk_xfs.h -#opt/MACHINE-uClibc/include/linux/dtlk.h -#opt/MACHINE-uClibc/include/linux/dvb -#opt/MACHINE-uClibc/include/linux/dvb/audio.h -#opt/MACHINE-uClibc/include/linux/dvb/ca.h -#opt/MACHINE-uClibc/include/linux/dvb/dmx.h -#opt/MACHINE-uClibc/include/linux/dvb/frontend.h -#opt/MACHINE-uClibc/include/linux/dvb/net.h -#opt/MACHINE-uClibc/include/linux/dvb/osd.h -#opt/MACHINE-uClibc/include/linux/dvb/version.h -#opt/MACHINE-uClibc/include/linux/dvb/video.h -#opt/MACHINE-uClibc/include/linux/eeprom.h -#opt/MACHINE-uClibc/include/linux/efi.h -#opt/MACHINE-uClibc/include/linux/efs_dir.h -#opt/MACHINE-uClibc/include/linux/efs_fs.h -#opt/MACHINE-uClibc/include/linux/efs_fs_i.h -#opt/MACHINE-uClibc/include/linux/efs_fs_sb.h -#opt/MACHINE-uClibc/include/linux/efs_vh.h -#opt/MACHINE-uClibc/include/linux/eisa.h -#opt/MACHINE-uClibc/include/linux/elevator.h -#opt/MACHINE-uClibc/include/linux/elf-fdpic.h -#opt/MACHINE-uClibc/include/linux/elf.h -#opt/MACHINE-uClibc/include/linux/elfcore.h -#opt/MACHINE-uClibc/include/linux/err.h -#opt/MACHINE-uClibc/include/linux/err_kernel_only.h -#opt/MACHINE-uClibc/include/linux/errno.h -#opt/MACHINE-uClibc/include/linux/errqueue.h -#opt/MACHINE-uClibc/include/linux/ethtool.h -#opt/MACHINE-uClibc/include/linux/eventpoll.h -#opt/MACHINE-uClibc/include/linux/ext2_fs.h -#opt/MACHINE-uClibc/include/linux/ext3_fs.h -#opt/MACHINE-uClibc/include/linux/ext3_jbd.h -#opt/MACHINE-uClibc/include/linux/fadvise.h -#opt/MACHINE-uClibc/include/linux/fb.h -#opt/MACHINE-uClibc/include/linux/fcntl.h -#opt/MACHINE-uClibc/include/linux/fd.h -#opt/MACHINE-uClibc/include/linux/fd1772.h -#opt/MACHINE-uClibc/include/linux/fdreg.h -#opt/MACHINE-uClibc/include/linux/file.h -#opt/MACHINE-uClibc/include/linux/filter.h -#opt/MACHINE-uClibc/include/linux/firmware.h -#opt/MACHINE-uClibc/include/linux/flat.h -#opt/MACHINE-uClibc/include/linux/font.h -#opt/MACHINE-uClibc/include/linux/fs.h -#opt/MACHINE-uClibc/include/linux/fs_struct.h -#opt/MACHINE-uClibc/include/linux/ftape-header-segment.h -#opt/MACHINE-uClibc/include/linux/ftape-vendors.h -#opt/MACHINE-uClibc/include/linux/ftape.h -#opt/MACHINE-uClibc/include/linux/futex.h -#opt/MACHINE-uClibc/include/linux/gameport.h -#opt/MACHINE-uClibc/include/linux/gen_stats.h -#opt/MACHINE-uClibc/include/linux/generic_serial.h -#opt/MACHINE-uClibc/include/linux/genetlink.h -#opt/MACHINE-uClibc/include/linux/genhd.h -#opt/MACHINE-uClibc/include/linux/gfp.h -#opt/MACHINE-uClibc/include/linux/hash.h -#opt/MACHINE-uClibc/include/linux/hayesesp.h -#opt/MACHINE-uClibc/include/linux/hdlc -#opt/MACHINE-uClibc/include/linux/hdlc.h -#opt/MACHINE-uClibc/include/linux/hdlc/ioctl.h -#opt/MACHINE-uClibc/include/linux/hdlcdrv.h -#opt/MACHINE-uClibc/include/linux/hdreg.h -#opt/MACHINE-uClibc/include/linux/hdsmart.h -#opt/MACHINE-uClibc/include/linux/hiddev.h -#opt/MACHINE-uClibc/include/linux/highuid.h -#opt/MACHINE-uClibc/include/linux/hpfs_fs.h -#opt/MACHINE-uClibc/include/linux/hysdn_if.h -#opt/MACHINE-uClibc/include/linux/i2c-algo-bit.h -#opt/MACHINE-uClibc/include/linux/i2c-algo-ite.h -#opt/MACHINE-uClibc/include/linux/i2c-algo-pcf.h -#opt/MACHINE-uClibc/include/linux/i2c-algo-sgi.h -#opt/MACHINE-uClibc/include/linux/i2c-algo-sibyte.h -#opt/MACHINE-uClibc/include/linux/i2c-dev.h -#opt/MACHINE-uClibc/include/linux/i2c-id.h -#opt/MACHINE-uClibc/include/linux/i2c-sensor.h -#opt/MACHINE-uClibc/include/linux/i2c-vid.h -#opt/MACHINE-uClibc/include/linux/i2c.h -#opt/MACHINE-uClibc/include/linux/i2o-dev.h -#opt/MACHINE-uClibc/include/linux/i8k.h -#opt/MACHINE-uClibc/include/linux/ibmtr.h -#opt/MACHINE-uClibc/include/linux/icmp.h -#opt/MACHINE-uClibc/include/linux/icmpv6.h -#opt/MACHINE-uClibc/include/linux/ide.h -#opt/MACHINE-uClibc/include/linux/idr.h -#opt/MACHINE-uClibc/include/linux/if.h -#opt/MACHINE-uClibc/include/linux/if_arcnet.h -#opt/MACHINE-uClibc/include/linux/if_arp.h -#opt/MACHINE-uClibc/include/linux/if_bonding.h -#opt/MACHINE-uClibc/include/linux/if_bridge.h -#opt/MACHINE-uClibc/include/linux/if_cablemodem.h -#opt/MACHINE-uClibc/include/linux/if_ec.h -#opt/MACHINE-uClibc/include/linux/if_eql.h -#opt/MACHINE-uClibc/include/linux/if_ether.h -#opt/MACHINE-uClibc/include/linux/if_fc.h -#opt/MACHINE-uClibc/include/linux/if_fddi.h -#opt/MACHINE-uClibc/include/linux/if_frad.h -#opt/MACHINE-uClibc/include/linux/if_hippi.h -#opt/MACHINE-uClibc/include/linux/if_infiniband.h -#opt/MACHINE-uClibc/include/linux/if_ltalk.h -#opt/MACHINE-uClibc/include/linux/if_packet.h -#opt/MACHINE-uClibc/include/linux/if_plip.h -#opt/MACHINE-uClibc/include/linux/if_ppp.h -#opt/MACHINE-uClibc/include/linux/if_pppox.h -#opt/MACHINE-uClibc/include/linux/if_shaper.h -#opt/MACHINE-uClibc/include/linux/if_slip.h -#opt/MACHINE-uClibc/include/linux/if_strip.h -#opt/MACHINE-uClibc/include/linux/if_tr.h -#opt/MACHINE-uClibc/include/linux/if_tun.h -#opt/MACHINE-uClibc/include/linux/if_tunnel.h -#opt/MACHINE-uClibc/include/linux/if_vlan.h -#opt/MACHINE-uClibc/include/linux/if_wanpipe.h -#opt/MACHINE-uClibc/include/linux/if_wanpipe_common.h -#opt/MACHINE-uClibc/include/linux/igmp.h -#opt/MACHINE-uClibc/include/linux/in.h -#opt/MACHINE-uClibc/include/linux/in6.h -#opt/MACHINE-uClibc/include/linux/in_route.h -#opt/MACHINE-uClibc/include/linux/inetdevice.h -#opt/MACHINE-uClibc/include/linux/init.h -#opt/MACHINE-uClibc/include/linux/init_task.h -#opt/MACHINE-uClibc/include/linux/initrd.h -#opt/MACHINE-uClibc/include/linux/inotify.h -#opt/MACHINE-uClibc/include/linux/input.h -#opt/MACHINE-uClibc/include/linux/interrupt.h -#opt/MACHINE-uClibc/include/linux/ioctl.h -#opt/MACHINE-uClibc/include/linux/ioctl32.h -#opt/MACHINE-uClibc/include/linux/ioport.h -#opt/MACHINE-uClibc/include/linux/ip.h -#opt/MACHINE-uClibc/include/linux/ip6_tunnel.h -#opt/MACHINE-uClibc/include/linux/ip_mp_alg.h -#opt/MACHINE-uClibc/include/linux/ipc.h -#opt/MACHINE-uClibc/include/linux/ipmi.h -#opt/MACHINE-uClibc/include/linux/ipmi_msgdefs.h -#opt/MACHINE-uClibc/include/linux/ipmi_smi.h -#opt/MACHINE-uClibc/include/linux/ipsec.h -#opt/MACHINE-uClibc/include/linux/ipv6.h -#opt/MACHINE-uClibc/include/linux/ipv6_route.h -#opt/MACHINE-uClibc/include/linux/ipx.h -#opt/MACHINE-uClibc/include/linux/irda.h -#opt/MACHINE-uClibc/include/linux/irq.h -#opt/MACHINE-uClibc/include/linux/irq_cpustat.h -#opt/MACHINE-uClibc/include/linux/isapnp.h -#opt/MACHINE-uClibc/include/linux/isdn -#opt/MACHINE-uClibc/include/linux/isdn.h -#opt/MACHINE-uClibc/include/linux/isdn/capicmd.h -#opt/MACHINE-uClibc/include/linux/isdn/capilli.h -#opt/MACHINE-uClibc/include/linux/isdn/capiutil.h -#opt/MACHINE-uClibc/include/linux/isdn/tpam.h -#opt/MACHINE-uClibc/include/linux/isdn_divertif.h -#opt/MACHINE-uClibc/include/linux/isdn_ppp.h -#opt/MACHINE-uClibc/include/linux/isdnif.h -#opt/MACHINE-uClibc/include/linux/isicom.h -#opt/MACHINE-uClibc/include/linux/iso_fs.h -#opt/MACHINE-uClibc/include/linux/istallion.h -#opt/MACHINE-uClibc/include/linux/ite_gpio.h -#opt/MACHINE-uClibc/include/linux/ixjuser.h -#opt/MACHINE-uClibc/include/linux/jbd.h -#opt/MACHINE-uClibc/include/linux/jffs.h -#opt/MACHINE-uClibc/include/linux/jffs2.h -#opt/MACHINE-uClibc/include/linux/jffs2_fs_sb.h -#opt/MACHINE-uClibc/include/linux/jhash.h -#opt/MACHINE-uClibc/include/linux/jiffies.h -#opt/MACHINE-uClibc/include/linux/journal-head.h -#opt/MACHINE-uClibc/include/linux/joystick.h -#opt/MACHINE-uClibc/include/linux/kallsyms.h -#opt/MACHINE-uClibc/include/linux/kbd_diacr.h -#opt/MACHINE-uClibc/include/linux/kbd_kern.h -#opt/MACHINE-uClibc/include/linux/kd.h -#opt/MACHINE-uClibc/include/linux/kdev_t.h -#opt/MACHINE-uClibc/include/linux/kernel.h -#opt/MACHINE-uClibc/include/linux/kernel_stat.h -#opt/MACHINE-uClibc/include/linux/kernelcapi.h -#opt/MACHINE-uClibc/include/linux/keyboard.h -#opt/MACHINE-uClibc/include/linux/keyctl.h -#opt/MACHINE-uClibc/include/linux/kmalloc_sizes.h -#opt/MACHINE-uClibc/include/linux/kmod.h -#opt/MACHINE-uClibc/include/linux/kprobes.h -#opt/MACHINE-uClibc/include/linux/kvm.h -#opt/MACHINE-uClibc/include/linux/kvm_host.h -#opt/MACHINE-uClibc/include/linux/kvm_para.h -#opt/MACHINE-uClibc/include/linux/kvm_types.h -#opt/MACHINE-uClibc/include/linux/lapb.h -#opt/MACHINE-uClibc/include/linux/lcd.h -#opt/MACHINE-uClibc/include/linux/libata.h -#opt/MACHINE-uClibc/include/linux/libps2.h -#opt/MACHINE-uClibc/include/linux/limits.h -#opt/MACHINE-uClibc/include/linux/linkage.h -#opt/MACHINE-uClibc/include/linux/linux_logo.h -#opt/MACHINE-uClibc/include/linux/list.h -#opt/MACHINE-uClibc/include/linux/llc.h -#opt/MACHINE-uClibc/include/linux/lockd -#opt/MACHINE-uClibc/include/linux/lockd/bind.h -#opt/MACHINE-uClibc/include/linux/lockd/debug.h -#opt/MACHINE-uClibc/include/linux/lockd/nlm.h -#opt/MACHINE-uClibc/include/linux/lockd/share.h -#opt/MACHINE-uClibc/include/linux/lockd/sm_inter.h -#opt/MACHINE-uClibc/include/linux/lockd/xdr.h -#opt/MACHINE-uClibc/include/linux/lockd/xdr4.h -#opt/MACHINE-uClibc/include/linux/loop.h -#opt/MACHINE-uClibc/include/linux/lp.h -#opt/MACHINE-uClibc/include/linux/major.h -#opt/MACHINE-uClibc/include/linux/matroxfb.h -#opt/MACHINE-uClibc/include/linux/mbcache.h -#opt/MACHINE-uClibc/include/linux/mc6821.h -#opt/MACHINE-uClibc/include/linux/mca-legacy.h -#opt/MACHINE-uClibc/include/linux/mca.h -#opt/MACHINE-uClibc/include/linux/mempool.h -#opt/MACHINE-uClibc/include/linux/meye.h -#opt/MACHINE-uClibc/include/linux/mii.h -#opt/MACHINE-uClibc/include/linux/minix_fs.h -#opt/MACHINE-uClibc/include/linux/miscdevice.h -#opt/MACHINE-uClibc/include/linux/mm.h -#opt/MACHINE-uClibc/include/linux/mm_inline.h -#opt/MACHINE-uClibc/include/linux/mman.h -#opt/MACHINE-uClibc/include/linux/mod_devicetable.h -#opt/MACHINE-uClibc/include/linux/module.h -#opt/MACHINE-uClibc/include/linux/moduleloader.h -#opt/MACHINE-uClibc/include/linux/moduleparam.h -#opt/MACHINE-uClibc/include/linux/mount.h -#opt/MACHINE-uClibc/include/linux/mroute.h -#opt/MACHINE-uClibc/include/linux/msdos_fs.h -#opt/MACHINE-uClibc/include/linux/msg.h -#opt/MACHINE-uClibc/include/linux/mtd -#opt/MACHINE-uClibc/include/linux/mtd/blktrans.h -#opt/MACHINE-uClibc/include/linux/mtd/cfi.h -#opt/MACHINE-uClibc/include/linux/mtd/cfi_endian.h -#opt/MACHINE-uClibc/include/linux/mtd/compatmac.h -#opt/MACHINE-uClibc/include/linux/mtd/concat.h -#opt/MACHINE-uClibc/include/linux/mtd/doc2000.h -#opt/MACHINE-uClibc/include/linux/mtd/flashchip.h -#opt/MACHINE-uClibc/include/linux/mtd/ftl.h -#opt/MACHINE-uClibc/include/linux/mtd/gen_probe.h -#opt/MACHINE-uClibc/include/linux/mtd/iflash.h -#opt/MACHINE-uClibc/include/linux/mtd/jedec.h -#opt/MACHINE-uClibc/include/linux/mtd/map.h -#opt/MACHINE-uClibc/include/linux/mtd/nand.h -#opt/MACHINE-uClibc/include/linux/mtd/nand_ecc.h -#opt/MACHINE-uClibc/include/linux/mtd/nftl.h -#opt/MACHINE-uClibc/include/linux/mtd/partitions.h -#opt/MACHINE-uClibc/include/linux/mtd/pmc551.h -#opt/MACHINE-uClibc/include/linux/mtio.h -#opt/MACHINE-uClibc/include/linux/n_r3964.h -#opt/MACHINE-uClibc/include/linux/namei.h -#opt/MACHINE-uClibc/include/linux/nbd.h -#opt/MACHINE-uClibc/include/linux/ncp.h -#opt/MACHINE-uClibc/include/linux/ncp_fs.h -#opt/MACHINE-uClibc/include/linux/ncp_mount.h -#opt/MACHINE-uClibc/include/linux/ncp_no.h -#opt/MACHINE-uClibc/include/linux/net.h -#opt/MACHINE-uClibc/include/linux/netdevice.h -#opt/MACHINE-uClibc/include/linux/netfilter -#opt/MACHINE-uClibc/include/linux/netfilter.h -#opt/MACHINE-uClibc/include/linux/netfilter/Kbuild -#opt/MACHINE-uClibc/include/linux/netfilter/nf_conntrack_amanda.h -#opt/MACHINE-uClibc/include/linux/netfilter/nf_conntrack_common.h -#opt/MACHINE-uClibc/include/linux/netfilter/nf_conntrack_dccp.h -#opt/MACHINE-uClibc/include/linux/netfilter/nf_conntrack_ftp.h -#opt/MACHINE-uClibc/include/linux/netfilter/nf_conntrack_h323.h -#opt/MACHINE-uClibc/include/linux/netfilter/nf_conntrack_h323_asn1.h -#opt/MACHINE-uClibc/include/linux/netfilter/nf_conntrack_h323_types.h -#opt/MACHINE-uClibc/include/linux/netfilter/nf_conntrack_irc.h -#opt/MACHINE-uClibc/include/linux/netfilter/nf_conntrack_pptp.h -#opt/MACHINE-uClibc/include/linux/netfilter/nf_conntrack_proto_gre.h -#opt/MACHINE-uClibc/include/linux/netfilter/nf_conntrack_sane.h -#opt/MACHINE-uClibc/include/linux/netfilter/nf_conntrack_sctp.h -#opt/MACHINE-uClibc/include/linux/netfilter/nf_conntrack_sip.h -#opt/MACHINE-uClibc/include/linux/netfilter/nf_conntrack_tcp.h -#opt/MACHINE-uClibc/include/linux/netfilter/nf_conntrack_tftp.h -#opt/MACHINE-uClibc/include/linux/netfilter/nf_conntrack_tuple_common.h -#opt/MACHINE-uClibc/include/linux/netfilter/nfnetlink.h -#opt/MACHINE-uClibc/include/linux/netfilter/nfnetlink_compat.h -#opt/MACHINE-uClibc/include/linux/netfilter/nfnetlink_conntrack.h -#opt/MACHINE-uClibc/include/linux/netfilter/nfnetlink_log.h -#opt/MACHINE-uClibc/include/linux/netfilter/nfnetlink_queue.h -#opt/MACHINE-uClibc/include/linux/netfilter/x_tables.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_CLASSIFY.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_CONNMARK.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_CONNSECMARK.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_DSCP.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_IMQ.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_LED.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_MARK.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_NFLOG.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_NFQUEUE.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_RATEEST.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_SECMARK.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_TCPMSS.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_TCPOPTSTRIP.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_TPROXY.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_cluster.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_comment.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_connbytes.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_connlimit.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_connmark.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_conntrack.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_dccp.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_dscp.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_esp.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_hashlimit.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_helper.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_iprange.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_layer7.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_length.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_limit.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_mac.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_mark.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_multiport.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_osf.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_owner.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_physdev.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_pkttype.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_policy.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_quota.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_rateest.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_realm.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_recent.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_sctp.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_socket.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_state.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_statistic.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_string.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_tcpmss.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_tcpudp.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_time.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_u32.h -#opt/MACHINE-uClibc/include/linux/netfilter_arp -#opt/MACHINE-uClibc/include/linux/netfilter_arp.h -#opt/MACHINE-uClibc/include/linux/netfilter_arp/arp_tables.h -#opt/MACHINE-uClibc/include/linux/netfilter_arp/arpt_mangle.h -#opt/MACHINE-uClibc/include/linux/netfilter_bridge -#opt/MACHINE-uClibc/include/linux/netfilter_bridge.h -#opt/MACHINE-uClibc/include/linux/netfilter_bridge/ebt_802_3.h -#opt/MACHINE-uClibc/include/linux/netfilter_bridge/ebt_among.h -#opt/MACHINE-uClibc/include/linux/netfilter_bridge/ebt_arp.h -#opt/MACHINE-uClibc/include/linux/netfilter_bridge/ebt_arpreply.h -#opt/MACHINE-uClibc/include/linux/netfilter_bridge/ebt_ip.h -#opt/MACHINE-uClibc/include/linux/netfilter_bridge/ebt_limit.h -#opt/MACHINE-uClibc/include/linux/netfilter_bridge/ebt_log.h -#opt/MACHINE-uClibc/include/linux/netfilter_bridge/ebt_mark_m.h -#opt/MACHINE-uClibc/include/linux/netfilter_bridge/ebt_mark_t.h -#opt/MACHINE-uClibc/include/linux/netfilter_bridge/ebt_nat.h -#opt/MACHINE-uClibc/include/linux/netfilter_bridge/ebt_pkttype.h -#opt/MACHINE-uClibc/include/linux/netfilter_bridge/ebt_redirect.h -#opt/MACHINE-uClibc/include/linux/netfilter_bridge/ebt_stp.h -#opt/MACHINE-uClibc/include/linux/netfilter_bridge/ebt_ulog.h -#opt/MACHINE-uClibc/include/linux/netfilter_bridge/ebt_vlan.h -#opt/MACHINE-uClibc/include/linux/netfilter_bridge/ebtables.h -#opt/MACHINE-uClibc/include/linux/netfilter_decnet.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4 -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ip_conntrack.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ip_conntrack_amanda.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ip_conntrack_core.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ip_conntrack_ftp.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ip_conntrack_helper.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ip_conntrack_icmp.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ip_conntrack_irc.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ip_conntrack_protocol.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ip_conntrack_sctp.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ip_conntrack_tcp.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ip_conntrack_tftp.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ip_conntrack_tuple.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ip_nat.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ip_nat_core.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ip_nat_helper.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ip_nat_protocol.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ip_nat_rule.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ip_queue.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ip_tables.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_CLASSIFY.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_CLUSTERIP.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_CONNMARK.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_DSCP.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_ECN.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_LOG.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_MARK.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_REJECT.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_SAME.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_TCPMSS.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_TOS.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_ULOG.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_addrtype.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_ah.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_comment.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_connmark.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_conntrack.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_dscp.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_ecn.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_esp.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_hashlimit.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_helper.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_iprange.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_length.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_limit.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_mac.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_mark.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_multiport.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_owner.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_physdev.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_pkttype.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_realm.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_recent.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_sctp.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_state.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_tcpmss.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_tos.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_ttl.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/listhelp.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/lockhelp.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv6 -#opt/MACHINE-uClibc/include/linux/netfilter_ipv6.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv6/ip6_tables.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv6/ip6t_LOG.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv6/ip6t_MARK.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv6/ip6t_ah.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv6/ip6t_esp.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv6/ip6t_frag.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv6/ip6t_hl.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv6/ip6t_ipv6header.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv6/ip6t_length.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv6/ip6t_limit.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv6/ip6t_mac.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv6/ip6t_mark.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv6/ip6t_multiport.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv6/ip6t_opts.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv6/ip6t_owner.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv6/ip6t_physdev.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv6/ip6t_rt.h -#opt/MACHINE-uClibc/include/linux/netlink.h -#opt/MACHINE-uClibc/include/linux/netrom.h -#opt/MACHINE-uClibc/include/linux/nfs.h -#opt/MACHINE-uClibc/include/linux/nfs2.h -#opt/MACHINE-uClibc/include/linux/nfs3.h -#opt/MACHINE-uClibc/include/linux/nfs4.h -#opt/MACHINE-uClibc/include/linux/nfs4_mount.h -#opt/MACHINE-uClibc/include/linux/nfs_fs.h -#opt/MACHINE-uClibc/include/linux/nfs_fs_i.h -#opt/MACHINE-uClibc/include/linux/nfs_fs_sb.h -#opt/MACHINE-uClibc/include/linux/nfs_idmap.h -#opt/MACHINE-uClibc/include/linux/nfs_mount.h -#opt/MACHINE-uClibc/include/linux/nfs_xdr.h -#opt/MACHINE-uClibc/include/linux/nfsd -#opt/MACHINE-uClibc/include/linux/nfsd/const.h -#opt/MACHINE-uClibc/include/linux/nfsd/debug.h -#opt/MACHINE-uClibc/include/linux/nfsd/export.h -#opt/MACHINE-uClibc/include/linux/nfsd/interface.h -#opt/MACHINE-uClibc/include/linux/nfsd/nfsd.h -#opt/MACHINE-uClibc/include/linux/nfsd/nfsfh.h -#opt/MACHINE-uClibc/include/linux/nfsd/state.h -#opt/MACHINE-uClibc/include/linux/nfsd/stats.h -#opt/MACHINE-uClibc/include/linux/nfsd/syscall.h -#opt/MACHINE-uClibc/include/linux/nfsd/xdr.h -#opt/MACHINE-uClibc/include/linux/nfsd/xdr3.h -#opt/MACHINE-uClibc/include/linux/nfsd/xdr4.h -#opt/MACHINE-uClibc/include/linux/nls.h -#opt/MACHINE-uClibc/include/linux/nmi.h -#opt/MACHINE-uClibc/include/linux/node.h -#opt/MACHINE-uClibc/include/linux/notifier.h -#opt/MACHINE-uClibc/include/linux/nubus.h -#opt/MACHINE-uClibc/include/linux/numa.h -#opt/MACHINE-uClibc/include/linux/nvram.h -#opt/MACHINE-uClibc/include/linux/openprom_fs.h -#opt/MACHINE-uClibc/include/linux/oprofile.h -#opt/MACHINE-uClibc/include/linux/pagemap.h -#opt/MACHINE-uClibc/include/linux/pagevec.h -#opt/MACHINE-uClibc/include/linux/param.h -#opt/MACHINE-uClibc/include/linux/parport.h -#opt/MACHINE-uClibc/include/linux/parport_pc.h -#opt/MACHINE-uClibc/include/linux/parser.h -#opt/MACHINE-uClibc/include/linux/patchkey.h -#opt/MACHINE-uClibc/include/linux/pci-dynids.h -#opt/MACHINE-uClibc/include/linux/pci.h -#opt/MACHINE-uClibc/include/linux/pci_ids.h -#opt/MACHINE-uClibc/include/linux/pcieport_if.h -#opt/MACHINE-uClibc/include/linux/percpu.h -#opt/MACHINE-uClibc/include/linux/percpu_counter.h -#opt/MACHINE-uClibc/include/linux/personality.h -#opt/MACHINE-uClibc/include/linux/pfkeyv2.h -#opt/MACHINE-uClibc/include/linux/pg.h -#opt/MACHINE-uClibc/include/linux/pipe_fs_i.h -#opt/MACHINE-uClibc/include/linux/pkt_cls.h -#opt/MACHINE-uClibc/include/linux/pkt_sched.h -#opt/MACHINE-uClibc/include/linux/pktcdvd.h -#opt/MACHINE-uClibc/include/linux/pmu.h -#opt/MACHINE-uClibc/include/linux/poll.h -#opt/MACHINE-uClibc/include/linux/posix-timers.h -#opt/MACHINE-uClibc/include/linux/posix_acl.h -#opt/MACHINE-uClibc/include/linux/posix_acl_xattr.h -#opt/MACHINE-uClibc/include/linux/posix_types.h -#opt/MACHINE-uClibc/include/linux/ppdev.h -#opt/MACHINE-uClibc/include/linux/ppp-comp.h -#opt/MACHINE-uClibc/include/linux/ppp_channel.h -#opt/MACHINE-uClibc/include/linux/ppp_defs.h -#opt/MACHINE-uClibc/include/linux/prctl.h -#opt/MACHINE-uClibc/include/linux/preempt.h -#opt/MACHINE-uClibc/include/linux/prefetch.h -#opt/MACHINE-uClibc/include/linux/proc_fs.h -#opt/MACHINE-uClibc/include/linux/ps2esdi.h -#opt/MACHINE-uClibc/include/linux/ptrace.h -#opt/MACHINE-uClibc/include/linux/qic117.h -#opt/MACHINE-uClibc/include/linux/qnx4_fs.h -#opt/MACHINE-uClibc/include/linux/qnxtypes.h -#opt/MACHINE-uClibc/include/linux/quota.h -#opt/MACHINE-uClibc/include/linux/quotaio_v1.h -#opt/MACHINE-uClibc/include/linux/quotaio_v2.h -#opt/MACHINE-uClibc/include/linux/radeonfb.h -#opt/MACHINE-uClibc/include/linux/raid -#opt/MACHINE-uClibc/include/linux/raid/linear.h -#opt/MACHINE-uClibc/include/linux/raid/md.h -#opt/MACHINE-uClibc/include/linux/raid/md_p.h -#opt/MACHINE-uClibc/include/linux/raid/md_u.h -#opt/MACHINE-uClibc/include/linux/raid/multipath.h -#opt/MACHINE-uClibc/include/linux/raid/raid0.h -#opt/MACHINE-uClibc/include/linux/raid/raid1.h -#opt/MACHINE-uClibc/include/linux/raid/raid5.h -#opt/MACHINE-uClibc/include/linux/raid/xor.h -#opt/MACHINE-uClibc/include/linux/random.h -#opt/MACHINE-uClibc/include/linux/raw.h -#opt/MACHINE-uClibc/include/linux/rbtree.h -#opt/MACHINE-uClibc/include/linux/reboot.h -#opt/MACHINE-uClibc/include/linux/reiserfs_acl.h -#opt/MACHINE-uClibc/include/linux/reiserfs_fs.h -#opt/MACHINE-uClibc/include/linux/reiserfs_xattr.h -#opt/MACHINE-uClibc/include/linux/resource.h -#opt/MACHINE-uClibc/include/linux/romfs_fs.h -#opt/MACHINE-uClibc/include/linux/root_dev.h -#opt/MACHINE-uClibc/include/linux/rose.h -#opt/MACHINE-uClibc/include/linux/route.h -#opt/MACHINE-uClibc/include/linux/rtc.h -#opt/MACHINE-uClibc/include/linux/rtnetlink.h -#opt/MACHINE-uClibc/include/linux/sc26198.h -#opt/MACHINE-uClibc/include/linux/scc.h -#opt/MACHINE-uClibc/include/linux/sched.h -#opt/MACHINE-uClibc/include/linux/sctp.h -#opt/MACHINE-uClibc/include/linux/scx200.h -#opt/MACHINE-uClibc/include/linux/scx200_gpio.h -#opt/MACHINE-uClibc/include/linux/sdla.h -#opt/MACHINE-uClibc/include/linux/sdla_asy.h -#opt/MACHINE-uClibc/include/linux/sdla_chdlc.h -#opt/MACHINE-uClibc/include/linux/sdla_fr.h -#opt/MACHINE-uClibc/include/linux/sdla_ppp.h -#opt/MACHINE-uClibc/include/linux/sdla_x25.h -#opt/MACHINE-uClibc/include/linux/sdladrv.h -#opt/MACHINE-uClibc/include/linux/sdlapci.h -#opt/MACHINE-uClibc/include/linux/sdlasfm.h -#opt/MACHINE-uClibc/include/linux/securebits.h -#opt/MACHINE-uClibc/include/linux/security.h -#opt/MACHINE-uClibc/include/linux/selection.h -#opt/MACHINE-uClibc/include/linux/selinux_netlink.h -#opt/MACHINE-uClibc/include/linux/sem.h -#opt/MACHINE-uClibc/include/linux/seqlock.h -#opt/MACHINE-uClibc/include/linux/serial.h -#opt/MACHINE-uClibc/include/linux/serial167.h -#opt/MACHINE-uClibc/include/linux/serialP.h -#opt/MACHINE-uClibc/include/linux/serial_8250.h -#opt/MACHINE-uClibc/include/linux/serial_core.h -#opt/MACHINE-uClibc/include/linux/serial_reg.h -#opt/MACHINE-uClibc/include/linux/serio.h -#opt/MACHINE-uClibc/include/linux/shm.h -#opt/MACHINE-uClibc/include/linux/siginfo.h -#opt/MACHINE-uClibc/include/linux/signal.h -#opt/MACHINE-uClibc/include/linux/skbuff.h -#opt/MACHINE-uClibc/include/linux/smb.h -#opt/MACHINE-uClibc/include/linux/smb_fs.h -#opt/MACHINE-uClibc/include/linux/smb_mount.h -#opt/MACHINE-uClibc/include/linux/smbno.h -#opt/MACHINE-uClibc/include/linux/smp_lock.h -#opt/MACHINE-uClibc/include/linux/snmp.h -#opt/MACHINE-uClibc/include/linux/socket.h -#opt/MACHINE-uClibc/include/linux/sockios.h -#opt/MACHINE-uClibc/include/linux/som.h -#opt/MACHINE-uClibc/include/linux/sonet.h -#opt/MACHINE-uClibc/include/linux/sonypi.h -#opt/MACHINE-uClibc/include/linux/sound.h -#opt/MACHINE-uClibc/include/linux/soundcard.h -#opt/MACHINE-uClibc/include/linux/spinlock.h -#opt/MACHINE-uClibc/include/linux/stallion.h -#opt/MACHINE-uClibc/include/linux/stddef.h -#opt/MACHINE-uClibc/include/linux/stringify.h -#opt/MACHINE-uClibc/include/linux/sunrpc -#opt/MACHINE-uClibc/include/linux/sunrpc/cache.h -#opt/MACHINE-uClibc/include/linux/sunrpc/clnt.h -#opt/MACHINE-uClibc/include/linux/sunrpc/debug.h -#opt/MACHINE-uClibc/include/linux/sunrpc/gss_asn1.h -#opt/MACHINE-uClibc/include/linux/sunrpc/gss_krb5.h -#opt/MACHINE-uClibc/include/linux/sunrpc/gss_spkm3.h -#opt/MACHINE-uClibc/include/linux/sunrpc/sched.h -#opt/MACHINE-uClibc/include/linux/sunrpc/stats.h -#opt/MACHINE-uClibc/include/linux/sunrpc/svc.h -#opt/MACHINE-uClibc/include/linux/sunrpc/svcsock.h -#opt/MACHINE-uClibc/include/linux/sunrpc/timer.h -#opt/MACHINE-uClibc/include/linux/sunrpc/types.h -#opt/MACHINE-uClibc/include/linux/sunrpc/xprt.h -#opt/MACHINE-uClibc/include/linux/superhyway.h -#opt/MACHINE-uClibc/include/linux/suspend.h -#opt/MACHINE-uClibc/include/linux/swap.h -#opt/MACHINE-uClibc/include/linux/swapops.h -#opt/MACHINE-uClibc/include/linux/synclink.h -#opt/MACHINE-uClibc/include/linux/sys.h -#opt/MACHINE-uClibc/include/linux/syscalls.h -#opt/MACHINE-uClibc/include/linux/sysctl.h -#opt/MACHINE-uClibc/include/linux/sysdev.h -#opt/MACHINE-uClibc/include/linux/sysfs.h -#opt/MACHINE-uClibc/include/linux/sysrq.h -#opt/MACHINE-uClibc/include/linux/sysv_fs.h -#opt/MACHINE-uClibc/include/linux/tc_act -#opt/MACHINE-uClibc/include/linux/tc_act/tc_defact.h -#opt/MACHINE-uClibc/include/linux/tc_act/tc_gact.h -#opt/MACHINE-uClibc/include/linux/tc_act/tc_ipt.h -#opt/MACHINE-uClibc/include/linux/tc_act/tc_mirred.h -#opt/MACHINE-uClibc/include/linux/tc_act/tc_pedit.h -#opt/MACHINE-uClibc/include/linux/tc_ematch -#opt/MACHINE-uClibc/include/linux/tc_ematch/tc_em_cmp.h -#opt/MACHINE-uClibc/include/linux/tc_ematch/tc_em_meta.h -#opt/MACHINE-uClibc/include/linux/tc_ematch/tc_em_nbyte.h -#opt/MACHINE-uClibc/include/linux/tcp.h -#opt/MACHINE-uClibc/include/linux/tcp_diag.h -#opt/MACHINE-uClibc/include/linux/telephony.h -#opt/MACHINE-uClibc/include/linux/termios.h -#opt/MACHINE-uClibc/include/linux/threads.h -#opt/MACHINE-uClibc/include/linux/ticable.h -#opt/MACHINE-uClibc/include/linux/time.h -#opt/MACHINE-uClibc/include/linux/times.h -#opt/MACHINE-uClibc/include/linux/timex.h -#opt/MACHINE-uClibc/include/linux/tiocl.h -#opt/MACHINE-uClibc/include/linux/toshiba.h -#opt/MACHINE-uClibc/include/linux/tty.h -#opt/MACHINE-uClibc/include/linux/types.h -#opt/MACHINE-uClibc/include/linux/udf_fs.h -#opt/MACHINE-uClibc/include/linux/udf_fs_i.h -#opt/MACHINE-uClibc/include/linux/udf_fs_sb.h -#opt/MACHINE-uClibc/include/linux/udp.h -#opt/MACHINE-uClibc/include/linux/ufs_fs.h -#opt/MACHINE-uClibc/include/linux/uinput.h -#opt/MACHINE-uClibc/include/linux/uio.h -#opt/MACHINE-uClibc/include/linux/ultrasound.h -#opt/MACHINE-uClibc/include/linux/umem.h -#opt/MACHINE-uClibc/include/linux/un.h -#opt/MACHINE-uClibc/include/linux/unistd.h -#opt/MACHINE-uClibc/include/linux/usb.h -#opt/MACHINE-uClibc/include/linux/usb_cdc.h -#opt/MACHINE-uClibc/include/linux/usb_ch9.h -#opt/MACHINE-uClibc/include/linux/usb_gadgetfs.h -#opt/MACHINE-uClibc/include/linux/usbdevice_fs.h -#opt/MACHINE-uClibc/include/linux/user.h -#opt/MACHINE-uClibc/include/linux/utime.h -#opt/MACHINE-uClibc/include/linux/uts.h -#opt/MACHINE-uClibc/include/linux/utsname.h -#opt/MACHINE-uClibc/include/linux/version.h -#opt/MACHINE-uClibc/include/linux/video_decoder.h -#opt/MACHINE-uClibc/include/linux/video_encoder.h -#opt/MACHINE-uClibc/include/linux/videodev.h -#opt/MACHINE-uClibc/include/linux/videodev2.h -#opt/MACHINE-uClibc/include/linux/videotext.h -#opt/MACHINE-uClibc/include/linux/vmalloc.h -#opt/MACHINE-uClibc/include/linux/vt.h -#opt/MACHINE-uClibc/include/linux/vt_buffer.h -#opt/MACHINE-uClibc/include/linux/vt_kern.h -#opt/MACHINE-uClibc/include/linux/wait.h -#opt/MACHINE-uClibc/include/linux/wanpipe.h -#opt/MACHINE-uClibc/include/linux/wanrouter.h -#opt/MACHINE-uClibc/include/linux/watchdog.h -#opt/MACHINE-uClibc/include/linux/wavefront.h -#opt/MACHINE-uClibc/include/linux/wireless.h -#opt/MACHINE-uClibc/include/linux/workqueue.h -#opt/MACHINE-uClibc/include/linux/x25.h -#opt/MACHINE-uClibc/include/linux/xattr.h -#opt/MACHINE-uClibc/include/linux/xattr_acl.h -#opt/MACHINE-uClibc/include/linux/xfrm.h -#opt/MACHINE-uClibc/include/linux/yam.h -#opt/MACHINE-uClibc/include/linux/zftape.h -#opt/MACHINE-uClibc/include/linux/zorro.h -#opt/MACHINE-uClibc/include/linux/zorro_ids.h -#opt/MACHINE-uClibc/include/locale.h -#opt/MACHINE-uClibc/include/malloc.h -#opt/MACHINE-uClibc/include/math.h -#opt/MACHINE-uClibc/include/memory.h -#opt/MACHINE-uClibc/include/mntent.h -#opt/MACHINE-uClibc/include/mqueue.h -#opt/MACHINE-uClibc/include/net -#opt/MACHINE-uClibc/include/net/ethernet.h -#opt/MACHINE-uClibc/include/net/if.h -#opt/MACHINE-uClibc/include/net/if_arp.h -#opt/MACHINE-uClibc/include/net/if_packet.h -#opt/MACHINE-uClibc/include/net/if_ppp.h -#opt/MACHINE-uClibc/include/net/if_shaper.h -#opt/MACHINE-uClibc/include/net/if_slip.h -#opt/MACHINE-uClibc/include/net/ppp-comp.h -#opt/MACHINE-uClibc/include/net/ppp_defs.h -#opt/MACHINE-uClibc/include/net/route.h -#opt/MACHINE-uClibc/include/netax25 -#opt/MACHINE-uClibc/include/netax25/ax25.h -#opt/MACHINE-uClibc/include/netdb.h -#opt/MACHINE-uClibc/include/neteconet -#opt/MACHINE-uClibc/include/neteconet/ec.h -#opt/MACHINE-uClibc/include/netinet -#opt/MACHINE-uClibc/include/netinet/ether.h -#opt/MACHINE-uClibc/include/netinet/icmp6.h -#opt/MACHINE-uClibc/include/netinet/if_ether.h -#opt/MACHINE-uClibc/include/netinet/if_fddi.h -#opt/MACHINE-uClibc/include/netinet/if_tr.h -#opt/MACHINE-uClibc/include/netinet/igmp.h -#opt/MACHINE-uClibc/include/netinet/in.h -#opt/MACHINE-uClibc/include/netinet/in_systm.h -#opt/MACHINE-uClibc/include/netinet/ip.h -#opt/MACHINE-uClibc/include/netinet/ip6.h -#opt/MACHINE-uClibc/include/netinet/ip_fw.h -#opt/MACHINE-uClibc/include/netinet/ip_icmp.h -#opt/MACHINE-uClibc/include/netinet/ip_tcp.h -#opt/MACHINE-uClibc/include/netinet/ip_udp.h -#opt/MACHINE-uClibc/include/netinet/protocols.h -#opt/MACHINE-uClibc/include/netinet/tcp.h -#opt/MACHINE-uClibc/include/netinet/udp.h -#opt/MACHINE-uClibc/include/netipx -#opt/MACHINE-uClibc/include/netipx/ipx.h -#opt/MACHINE-uClibc/include/netpacket -#opt/MACHINE-uClibc/include/netpacket/packet.h -#opt/MACHINE-uClibc/include/nl_types.h -#opt/MACHINE-uClibc/include/obstack.h -#opt/MACHINE-uClibc/include/paths.h -#opt/MACHINE-uClibc/include/poll.h -#opt/MACHINE-uClibc/include/printf.h -#opt/MACHINE-uClibc/include/protocols -#opt/MACHINE-uClibc/include/protocols/routed.h -#opt/MACHINE-uClibc/include/protocols/rwhod.h -#opt/MACHINE-uClibc/include/protocols/talkd.h -#opt/MACHINE-uClibc/include/protocols/timed.h -#opt/MACHINE-uClibc/include/pthread.h -#opt/MACHINE-uClibc/include/pty.h -#opt/MACHINE-uClibc/include/pwd.h -#opt/MACHINE-uClibc/include/regex.h -#opt/MACHINE-uClibc/include/regexp.h -#opt/MACHINE-uClibc/include/resolv.h -#opt/MACHINE-uClibc/include/rpc -#opt/MACHINE-uClibc/include/rpc/auth.h -#opt/MACHINE-uClibc/include/rpc/auth_des.h -#opt/MACHINE-uClibc/include/rpc/auth_unix.h -#opt/MACHINE-uClibc/include/rpc/clnt.h -#opt/MACHINE-uClibc/include/rpc/des_crypt.h -#opt/MACHINE-uClibc/include/rpc/key_prot.h -#opt/MACHINE-uClibc/include/rpc/netdb.h -#opt/MACHINE-uClibc/include/rpc/pmap_clnt.h -#opt/MACHINE-uClibc/include/rpc/pmap_prot.h -#opt/MACHINE-uClibc/include/rpc/pmap_rmt.h -#opt/MACHINE-uClibc/include/rpc/rpc.h -#opt/MACHINE-uClibc/include/rpc/rpc_des.h -#opt/MACHINE-uClibc/include/rpc/rpc_msg.h -#opt/MACHINE-uClibc/include/rpc/svc.h -#opt/MACHINE-uClibc/include/rpc/svc_auth.h -#opt/MACHINE-uClibc/include/rpc/types.h -#opt/MACHINE-uClibc/include/rpc/xdr.h -#opt/MACHINE-uClibc/include/sched.h -#opt/MACHINE-uClibc/include/scsi -#opt/MACHINE-uClibc/include/scsi/scsi.h -#opt/MACHINE-uClibc/include/scsi/scsi_ioctl.h -#opt/MACHINE-uClibc/include/scsi/sg.h -#opt/MACHINE-uClibc/include/search.h -#opt/MACHINE-uClibc/include/semaphore.h -#opt/MACHINE-uClibc/include/setjmp.h -#opt/MACHINE-uClibc/include/sgtty.h -#opt/MACHINE-uClibc/include/shadow.h -#opt/MACHINE-uClibc/include/signal.h -#opt/MACHINE-uClibc/include/stdint.h -#opt/MACHINE-uClibc/include/stdio.h -#opt/MACHINE-uClibc/include/stdio_ext.h -#opt/MACHINE-uClibc/include/stdlib.h -#opt/MACHINE-uClibc/include/string.h -#opt/MACHINE-uClibc/include/strings.h -#opt/MACHINE-uClibc/include/sys -#opt/MACHINE-uClibc/include/sys/bitypes.h -#opt/MACHINE-uClibc/include/sys/cdefs.h -#opt/MACHINE-uClibc/include/sys/debugreg.h -#opt/MACHINE-uClibc/include/sys/dir.h -#opt/MACHINE-uClibc/include/sys/elf.h -#opt/MACHINE-uClibc/include/sys/epoll.h -#opt/MACHINE-uClibc/include/sys/errno.h -#opt/MACHINE-uClibc/include/sys/fcntl.h -#opt/MACHINE-uClibc/include/sys/file.h -#opt/MACHINE-uClibc/include/sys/fsuid.h -#opt/MACHINE-uClibc/include/sys/io.h -#opt/MACHINE-uClibc/include/sys/ioctl.h -#opt/MACHINE-uClibc/include/sys/ipc.h -#opt/MACHINE-uClibc/include/sys/kd.h -#opt/MACHINE-uClibc/include/sys/kdaemon.h -#opt/MACHINE-uClibc/include/sys/klog.h -#opt/MACHINE-uClibc/include/sys/mman.h -#opt/MACHINE-uClibc/include/sys/mount.h -#opt/MACHINE-uClibc/include/sys/msg.h -#opt/MACHINE-uClibc/include/sys/mtio.h -#opt/MACHINE-uClibc/include/sys/param.h -#opt/MACHINE-uClibc/include/sys/perm.h -#opt/MACHINE-uClibc/include/sys/personality.h -#opt/MACHINE-uClibc/include/sys/poll.h -#opt/MACHINE-uClibc/include/sys/prctl.h -#opt/MACHINE-uClibc/include/sys/procfs.h -#opt/MACHINE-uClibc/include/sys/ptrace.h -#opt/MACHINE-uClibc/include/sys/queue.h -#opt/MACHINE-uClibc/include/sys/quota.h -#opt/MACHINE-uClibc/include/sys/reboot.h -#opt/MACHINE-uClibc/include/sys/reg.h -#opt/MACHINE-uClibc/include/sys/resource.h -#opt/MACHINE-uClibc/include/sys/select.h -#opt/MACHINE-uClibc/include/sys/sem.h -#opt/MACHINE-uClibc/include/sys/sendfile.h -#opt/MACHINE-uClibc/include/sys/shm.h -#opt/MACHINE-uClibc/include/sys/signal.h -#opt/MACHINE-uClibc/include/sys/socket.h -#opt/MACHINE-uClibc/include/sys/socketvar.h -#opt/MACHINE-uClibc/include/sys/soundcard.h -#opt/MACHINE-uClibc/include/sys/stat.h -#opt/MACHINE-uClibc/include/sys/statfs.h -#opt/MACHINE-uClibc/include/sys/statvfs.h -#opt/MACHINE-uClibc/include/sys/swap.h -#opt/MACHINE-uClibc/include/sys/syscall.h -#opt/MACHINE-uClibc/include/sys/sysctl.h -#opt/MACHINE-uClibc/include/sys/sysinfo.h -#opt/MACHINE-uClibc/include/sys/syslog.h -#opt/MACHINE-uClibc/include/sys/sysmacros.h -#opt/MACHINE-uClibc/include/sys/termios.h -#opt/MACHINE-uClibc/include/sys/time.h -#opt/MACHINE-uClibc/include/sys/timeb.h -#opt/MACHINE-uClibc/include/sys/times.h -#opt/MACHINE-uClibc/include/sys/timex.h -#opt/MACHINE-uClibc/include/sys/ttydefaults.h -#opt/MACHINE-uClibc/include/sys/types.h -#opt/MACHINE-uClibc/include/sys/ucontext.h -#opt/MACHINE-uClibc/include/sys/uio.h -#opt/MACHINE-uClibc/include/sys/un.h -#opt/MACHINE-uClibc/include/sys/unistd.h -#opt/MACHINE-uClibc/include/sys/user.h -#opt/MACHINE-uClibc/include/sys/ustat.h -#opt/MACHINE-uClibc/include/sys/utsname.h -#opt/MACHINE-uClibc/include/sys/vfs.h -#opt/MACHINE-uClibc/include/sys/vm86.h -#opt/MACHINE-uClibc/include/sys/vt.h -#opt/MACHINE-uClibc/include/sys/wait.h -#opt/MACHINE-uClibc/include/sys/xattr.h -#opt/MACHINE-uClibc/include/syscall.h -#opt/MACHINE-uClibc/include/sysexits.h -#opt/MACHINE-uClibc/include/syslog.h -#opt/MACHINE-uClibc/include/tar.h -#opt/MACHINE-uClibc/include/termio.h -#opt/MACHINE-uClibc/include/termios.h -#opt/MACHINE-uClibc/include/tgmath.h -#opt/MACHINE-uClibc/include/thread_db.h -#opt/MACHINE-uClibc/include/time.h -#opt/MACHINE-uClibc/include/ttyent.h -#opt/MACHINE-uClibc/include/ucontext.h -#opt/MACHINE-uClibc/include/ulimit.h -#opt/MACHINE-uClibc/include/unistd.h -#opt/MACHINE-uClibc/include/ustat.h -#opt/MACHINE-uClibc/include/utime.h -#opt/MACHINE-uClibc/include/utmp.h -#opt/MACHINE-uClibc/include/values.h -#opt/MACHINE-uClibc/include/wait.h -#opt/MACHINE-uClibc/include/wchar.h -#opt/MACHINE-uClibc/include/wctype.h -#opt/MACHINE-uClibc/include/xlocale.h -#opt/MACHINE-uClibc/lib/Scrt1.o -#opt/MACHINE-uClibc/lib/crt1.o -#opt/MACHINE-uClibc/lib/crti.o -#opt/MACHINE-uClibc/lib/crtn.o -#opt/MACHINE-uClibc/lib/ld-uClibc-0.9.28.so -#opt/MACHINE-uClibc/lib/ld-uClibc.so.0 -#opt/MACHINE-uClibc/lib/ldscripts -#opt/MACHINE-uClibc/lib/ldscripts/elf_i386.x -#opt/MACHINE-uClibc/lib/ldscripts/elf_i386.xbn -#opt/MACHINE-uClibc/lib/ldscripts/elf_i386.xc -#opt/MACHINE-uClibc/lib/ldscripts/elf_i386.xd -#opt/MACHINE-uClibc/lib/ldscripts/elf_i386.xdc -#opt/MACHINE-uClibc/lib/ldscripts/elf_i386.xdw -#opt/MACHINE-uClibc/lib/ldscripts/elf_i386.xn -#opt/MACHINE-uClibc/lib/ldscripts/elf_i386.xr -#opt/MACHINE-uClibc/lib/ldscripts/elf_i386.xs -#opt/MACHINE-uClibc/lib/ldscripts/elf_i386.xsc -#opt/MACHINE-uClibc/lib/ldscripts/elf_i386.xsw -#opt/MACHINE-uClibc/lib/ldscripts/elf_i386.xu -#opt/MACHINE-uClibc/lib/ldscripts/elf_i386.xw -#opt/MACHINE-uClibc/lib/ldscripts/i386linux.x -#opt/MACHINE-uClibc/lib/ldscripts/i386linux.xbn -#opt/MACHINE-uClibc/lib/ldscripts/i386linux.xn -#opt/MACHINE-uClibc/lib/ldscripts/i386linux.xr -#opt/MACHINE-uClibc/lib/ldscripts/i386linux.xu -#opt/MACHINE-uClibc/lib/libc.a -#opt/MACHINE-uClibc/lib/libc.so -#opt/MACHINE-uClibc/lib/libc.so.0 -#opt/MACHINE-uClibc/lib/libc_pic.a -#opt/MACHINE-uClibc/lib/libcrypt-0.9.28.so -#opt/MACHINE-uClibc/lib/libcrypt.a -#opt/MACHINE-uClibc/lib/libcrypt.so -#opt/MACHINE-uClibc/lib/libcrypt.so.0 -#opt/MACHINE-uClibc/lib/libcrypt_pic.a -#opt/MACHINE-uClibc/lib/libdl-0.9.28.so -#opt/MACHINE-uClibc/lib/libdl.a -#opt/MACHINE-uClibc/lib/libdl.so -#opt/MACHINE-uClibc/lib/libdl.so.0 -#opt/MACHINE-uClibc/lib/libm-0.9.28.so -#opt/MACHINE-uClibc/lib/libm.a -#opt/MACHINE-uClibc/lib/libm.so -#opt/MACHINE-uClibc/lib/libm.so.0 -#opt/MACHINE-uClibc/lib/libm_pic.a -#opt/MACHINE-uClibc/lib/libnsl-0.9.28.so -#opt/MACHINE-uClibc/lib/libnsl.a -#opt/MACHINE-uClibc/lib/libnsl.so -#opt/MACHINE-uClibc/lib/libnsl.so.0 -#opt/MACHINE-uClibc/lib/libnsl_pic.a -#opt/MACHINE-uClibc/lib/libpthread-0.9.28.so -#opt/MACHINE-uClibc/lib/libpthread.a -#opt/MACHINE-uClibc/lib/libpthread.so -#opt/MACHINE-uClibc/lib/libpthread.so.0 -#opt/MACHINE-uClibc/lib/libpthread_pic.a -#opt/MACHINE-uClibc/lib/libresolv-0.9.28.so -#opt/MACHINE-uClibc/lib/libresolv.a -#opt/MACHINE-uClibc/lib/libresolv.so -#opt/MACHINE-uClibc/lib/libresolv.so.0 -#opt/MACHINE-uClibc/lib/libresolv_pic.a -#opt/MACHINE-uClibc/lib/librt-0.9.28.so -#opt/MACHINE-uClibc/lib/librt.a -#opt/MACHINE-uClibc/lib/librt.so -#opt/MACHINE-uClibc/lib/librt.so.0 -#opt/MACHINE-uClibc/lib/librt_pic.a -#opt/MACHINE-uClibc/lib/libuClibc-0.9.28.so -#opt/MACHINE-uClibc/lib/libutil-0.9.28.so -#opt/MACHINE-uClibc/lib/libutil.a -#opt/MACHINE-uClibc/lib/libutil.so -#opt/MACHINE-uClibc/lib/libutil.so.0 -#opt/MACHINE-uClibc/lib/libutil_pic.a diff --git a/config/rootfiles/common/zlib b/config/rootfiles/common/zlib index b275de5..78620f4 100644 --- a/config/rootfiles/common/zlib +++ b/config/rootfiles/common/zlib @@ -1,7 +1,9 @@ lib/libz.so.1 -lib/libz.so.1.2.3 +lib/libz.so.1.2.7 #usr/include/zconf.h #usr/include/zlib.h #usr/lib/libz.a -usr/lib/libz.so +#usr/lib/libz.so +#usr/lib/pkgconfig +#usr/lib/pkgconfig/zlib.pc #usr/share/man/man3/zlib.3 diff --git a/config/rootfiles/core/52/exclude b/config/rootfiles/core/52/exclude deleted file mode 100644 index bb0d8c8..0000000 --- a/config/rootfiles/core/52/exclude +++ /dev/null @@ -1,2 +0,0 @@ -srv/web/ipfire/html/proxy.pac -var/updatecache diff --git a/config/rootfiles/core/52/filelists/apache2 b/config/rootfiles/core/52/filelists/apache2 deleted file mode 120000 index eef95ef..0000000 --- a/config/rootfiles/core/52/filelists/apache2 +++ /dev/null @@ -1 +0,0 @@ -../../../common/apache2 \ No newline at end of file diff --git a/config/rootfiles/core/52/filelists/ethtool b/config/rootfiles/core/52/filelists/ethtool deleted file mode 120000 index 494a53e..0000000 --- a/config/rootfiles/core/52/filelists/ethtool +++ /dev/null @@ -1 +0,0 @@ -../../../common/ethtool \ No newline at end of file diff --git a/config/rootfiles/core/52/filelists/files b/config/rootfiles/core/52/filelists/files deleted file mode 100644 index 8076e02..0000000 --- a/config/rootfiles/core/52/filelists/files +++ /dev/null @@ -1,8 +0,0 @@ -etc/system-release -var/ipfire/langs/ -etc/rc.d/init.d/console -usr/local/sbin/setup -usr/local/bin/setddns.pl -srv/web/ipfire/cgi-bin/ddns.cgi -srv/web/ipfire/cgi-bin/proxy.cgi -var/ipfire/graphs.pl diff --git a/config/rootfiles/core/52/filelists/squid b/config/rootfiles/core/52/filelists/squid deleted file mode 120000 index 2dc8372..0000000 --- a/config/rootfiles/core/52/filelists/squid +++ /dev/null @@ -1 +0,0 @@ -../../../common/squid \ No newline at end of file diff --git a/config/rootfiles/core/52/meta b/config/rootfiles/core/52/meta deleted file mode 100644 index d547fa8..0000000 --- a/config/rootfiles/core/52/meta +++ /dev/null @@ -1 +0,0 @@ -DEPS="" diff --git a/config/rootfiles/core/52/update.sh b/config/rootfiles/core/52/update.sh deleted file mode 100644 index 412299d..0000000 --- a/config/rootfiles/core/52/update.sh +++ /dev/null @@ -1,63 +0,0 @@ -#!/bin/bash -############################################################################ -# # -# This file is part of the IPFire Firewall. # -# # -# IPFire is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 3 of the License, or # -# (at your option) any later version. # -# # -# IPFire is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with IPFire; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Copyright (C) 2011 IPFire-Team info@ipfire.org. # -# # -############################################################################ -# -. /opt/pakfire/lib/functions.sh -/usr/local/bin/backupctrl exclude >/dev/null 2>&1 - -# -# Remove old core updates from pakfire cache to save space... -core=52 -for (( i=1; i<=$core; i++ )) -do - rm -f /var/cache/pakfire/core-upgrade-*-$i.ipfire -done - -# -#Stop services -/etc/init.d/squid stop -/etc/init.d/apache stop - -# -#Extract files -extract_files - -# -#Start services -/etc/init.d/apache start -/etc/init.d/squid start - -# -#Update Language cache -perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang" - -#Rebuild module dep's -#depmod 2.6.32.43-ipfire >/dev/null 2>&1 -#depmod 2.6.32.43-ipfire-pae >/dev/null 2>&1 -#depmod 2.6.32.43-ipfire-xen >/dev/null 2>&1 - -# -#Finish -/etc/init.d/fireinfo start -sendprofile -#Don't report the exitcode last command -exit 0 diff --git a/config/rootfiles/core/53/exclude b/config/rootfiles/core/53/exclude deleted file mode 100644 index ca3adf5..0000000 --- a/config/rootfiles/core/53/exclude +++ /dev/null @@ -1,9 +0,0 @@ -srv/web/ipfire/html/proxy.pac -etc/udev/rules.d/30-persistent-network.rules -etc/ipsec.conf -etc/ipsec.secrets -etc/ipsec.user.conf -etc/ipsec.user.secrets -var/updatecache -etc/localtime -var/ipfire/ovpn diff --git a/config/rootfiles/core/53/filelists/apache2 b/config/rootfiles/core/53/filelists/apache2 deleted file mode 120000 index eef95ef..0000000 --- a/config/rootfiles/core/53/filelists/apache2 +++ /dev/null @@ -1 +0,0 @@ -../../../common/apache2 \ No newline at end of file diff --git a/config/rootfiles/core/53/filelists/files b/config/rootfiles/core/53/filelists/files deleted file mode 100644 index 741254d..0000000 --- a/config/rootfiles/core/53/filelists/files +++ /dev/null @@ -1,26 +0,0 @@ -etc/rc.d/init.d/network -etc/rc.d/init.d/static-routes -etc/sysctl.conf -etc/system-release -etc/issue -etc/iproute2/rt_tables -etc/rc.d/init.d/networking/red.up/50-ovpn -etc/rc.d/init.d/networking/red.down/10-ovpn -srv/web/ipfire/cgi-bin/extrahd.cgi -srv/web/ipfire/cgi-bin/index.cgi -srv/web/ipfire/cgi-bin/outgoinggrp.cgi -srv/web/ipfire/cgi-bin/ovpnmain.cgi -srv/web/ipfire/cgi-bin/pakfire.cgi -srv/web/ipfire/cgi-bin/routing.cgi -srv/web/ipfire/cgi-bin/vpnmain.cgi -srv/web/ipfire/cgi-bin/logs.cgi/log.dat -var/ipfire/langs/ -usr/local/bin/ipsecctrl -usr/local/bin/openvpnctrl -usr/local/bin/vpn-watch -usr/local/bin/rebuildroutes -usr/local/sbin/setup -var/ipfire/main/routing -var/ipfire/menu.d/30-network.menu -opt/pakfire/etc/pakfire.conf -usr/local/bin/backupiso diff --git a/config/rootfiles/core/53/filelists/gmp b/config/rootfiles/core/53/filelists/gmp deleted file mode 120000 index 8662a89..0000000 --- a/config/rootfiles/core/53/filelists/gmp +++ /dev/null @@ -1 +0,0 @@ -../../../common/gmp \ No newline at end of file diff --git a/config/rootfiles/core/53/filelists/i586/compat-wireless b/config/rootfiles/core/53/filelists/i586/compat-wireless deleted file mode 100644 index 5d899bf..0000000 --- a/config/rootfiles/core/53/filelists/i586/compat-wireless +++ /dev/null @@ -1,359 +0,0 @@ -lib/modules/2.6.32.45-ipfire-xen/kernel/compat/compat.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/compat/compat_firmware_class.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/bluetooth/ath3k.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/bluetooth/bcm203x.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/bluetooth/bfusb.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/bluetooth/bluecard_cs.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/bluetooth/bpa10x.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/bluetooth/bt3c_cs.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/bluetooth/btmrvl.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/bluetooth/btmrvl_sdio.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/bluetooth/btsdio.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/bluetooth/btuart_cs.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/bluetooth/btusb.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/bluetooth/dtl1_cs.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/bluetooth/hci_uart.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/bluetooth/hci_vhci.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/misc/eeprom/eeprom_93cx6.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/atl1c/atl1c.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/atl1e/atl1e.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/atlx/atl1.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/atlx/atl2.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/b44.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/usb/asix.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/usb/catc.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/usb/cdc_eem.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/usb/cdc_ether.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/usb/cdc_subset.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/usb/dm9601.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/usb/gl620a.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/usb/hso.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/usb/int51x1.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/usb/kaweth.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/usb/mcs7830.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/usb/net1080.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/usb/pegasus.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/usb/plusb.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/usb/rndis_host.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/usb/rtl8150.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/usb/smsc95xx.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/usb/usbnet.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/usb/zaurus.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/adm8211.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/at76c50x-usb.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/ath/ath.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/ath/ath5k/ath5k.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/ath/ath9k/ath9k.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/ath/ath9k/ath9k_common.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/ath/ath9k/ath9k_htc.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/ath/ath9k/ath9k_hw.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/ath/carl9170/carl9170.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/b43/b43.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/b43legacy/b43legacy.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/ipw2x00/ipw2100.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/ipw2x00/ipw2200.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/ipw2x00/libipw.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/iwlegacy/iwl-legacy.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/iwlegacy/iwl3945.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/iwlegacy/iwl4965.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/iwlwifi/iwlagn.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/iwmc3200wifi/iwmc3200wifi.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/libertas/libertas.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/libertas/libertas_cs.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/libertas/libertas_sdio.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/libertas/usb8xxx.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/libertas_tf/libertas_tf.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/libertas_tf/libertas_tf_usb.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/mac80211_hwsim.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/mwifiex/mwifiex.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/mwifiex/mwifiex_sdio.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/mwl8k.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/orinoco/orinoco.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/orinoco/orinoco_cs.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/orinoco/orinoco_nortel.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/orinoco/orinoco_pci.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/orinoco/orinoco_plx.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/orinoco/orinoco_tmd.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/orinoco/orinoco_usb.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/orinoco/spectrum_cs.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/p54/p54common.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/p54/p54pci.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/p54/p54usb.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/rndis_wlan.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/rt2x00/rt2400pci.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/rt2x00/rt2500pci.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/rt2x00/rt2500usb.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/rt2x00/rt2800lib.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/rt2x00/rt2800pci.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/rt2x00/rt2800usb.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/rt2x00/rt2x00lib.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/rt2x00/rt2x00pci.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/rt2x00/rt2x00usb.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/rt2x00/rt61pci.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/rt2x00/rt73usb.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/rtl818x/rtl8180/rtl8180.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/rtl818x/rtl8187/rtl8187.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/rtlwifi/rtl8192ce/rtl8192ce.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/rtlwifi/rtl8192cu/rtl8192cu.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/rtlwifi/rtl8192se/rtl8192se.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/rtlwifi/rtlwifi.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/wl1251/wl1251.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/wl12xx/wl12xx.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/zd1211rw/zd1211rw.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/ssb/ssb.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/staging/ath6kl/ath6kl.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/staging/brcm80211/brcmfmac/brcmfmac.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/staging/brcm80211/brcmsmac/brcmsmac.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/staging/brcm80211/util/brcmutil.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/net/bluetooth/bluetooth.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/net/bluetooth/bnep/bnep.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/net/bluetooth/cmtp/cmtp.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/net/bluetooth/hidp/hidp.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/net/bluetooth/rfcomm/rfcomm.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/net/mac80211/mac80211.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/net/wireless/cfg80211.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/net/wireless/lib80211.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/net/wireless/lib80211_crypt_ccmp.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/net/wireless/lib80211_crypt_tkip.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/net/wireless/lib80211_crypt_wep.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/compat/compat.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/compat/compat_firmware_class.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/bluetooth/ath3k.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/bluetooth/bcm203x.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/bluetooth/bfusb.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/bluetooth/bluecard_cs.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/bluetooth/bpa10x.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/bluetooth/bt3c_cs.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/bluetooth/btmrvl.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/bluetooth/btmrvl_sdio.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/bluetooth/btsdio.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/bluetooth/btuart_cs.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/bluetooth/btusb.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/bluetooth/dtl1_cs.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/bluetooth/hci_uart.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/bluetooth/hci_vhci.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/misc/eeprom/eeprom_93cx6.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/atl1c/atl1c.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/atl1e/atl1e.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/atlx/atl1.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/atlx/atl2.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/b44.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/usb/asix.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/usb/catc.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/usb/cdc_eem.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/usb/cdc_ether.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/usb/cdc_subset.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/usb/dm9601.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/usb/gl620a.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/usb/hso.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/usb/int51x1.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/usb/kaweth.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/usb/mcs7830.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/usb/net1080.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/usb/pegasus.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/usb/plusb.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/usb/rndis_host.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/usb/rtl8150.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/usb/smsc95xx.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/usb/usbnet.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/usb/zaurus.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/adm8211.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/at76c50x-usb.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/ath/ath.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/ath/ath5k/ath5k.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/ath/ath9k/ath9k.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/ath/ath9k/ath9k_common.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/ath/ath9k/ath9k_htc.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/ath/ath9k/ath9k_hw.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/ath/carl9170/carl9170.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/b43/b43.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/b43legacy/b43legacy.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/ipw2x00/ipw2100.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/ipw2x00/ipw2200.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/ipw2x00/libipw.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/iwlegacy/iwl-legacy.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/iwlegacy/iwl3945.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/iwlegacy/iwl4965.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/iwlwifi/iwlagn.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/iwmc3200wifi/iwmc3200wifi.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/libertas/libertas.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/libertas/libertas_cs.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/libertas/libertas_sdio.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/libertas/usb8xxx.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/libertas_tf/libertas_tf.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/libertas_tf/libertas_tf_usb.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/mac80211_hwsim.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/mwifiex/mwifiex.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/mwifiex/mwifiex_sdio.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/mwl8k.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/orinoco/orinoco.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/orinoco/orinoco_cs.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/orinoco/orinoco_nortel.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/orinoco/orinoco_pci.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/orinoco/orinoco_plx.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/orinoco/orinoco_tmd.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/orinoco/orinoco_usb.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/orinoco/spectrum_cs.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/p54/p54common.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/p54/p54pci.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/p54/p54usb.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/rndis_wlan.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2400pci.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2500pci.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2500usb.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2800lib.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2800pci.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2800usb.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2x00lib.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2x00pci.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2x00usb.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt61pci.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt73usb.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/rtl818x/rtl8180/rtl8180.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/rtl818x/rtl8187/rtl8187.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8192ce/rtl8192ce.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8192cu/rtl8192cu.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8192se/rtl8192se.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtlwifi.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/wl1251/wl1251.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/wl12xx/wl12xx.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/zd1211rw/zd1211rw.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/ssb/ssb.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/staging/ath6kl/ath6kl.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/staging/brcm80211/brcmfmac/brcmfmac.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/staging/brcm80211/brcmsmac/brcmsmac.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/staging/brcm80211/util/brcmutil.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/net/bluetooth/bluetooth.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/net/bluetooth/bnep/bnep.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/net/bluetooth/cmtp/cmtp.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/net/bluetooth/hidp/hidp.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/net/bluetooth/rfcomm/rfcomm.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/net/mac80211/mac80211.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/net/wireless/cfg80211.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/net/wireless/lib80211.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/net/wireless/lib80211_crypt_ccmp.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/net/wireless/lib80211_crypt_tkip.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/net/wireless/lib80211_crypt_wep.ko -lib/modules/2.6.32.45-ipfire/kernel/compat/compat.ko -lib/modules/2.6.32.45-ipfire/kernel/compat/compat_firmware_class.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/bluetooth/ath3k.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/bluetooth/bcm203x.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/bluetooth/bfusb.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/bluetooth/bluecard_cs.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/bluetooth/bpa10x.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/bluetooth/bt3c_cs.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/bluetooth/btmrvl.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/bluetooth/btmrvl_sdio.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/bluetooth/btsdio.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/bluetooth/btuart_cs.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/bluetooth/btusb.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/bluetooth/dtl1_cs.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/bluetooth/hci_uart.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/bluetooth/hci_vhci.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/misc/eeprom/eeprom_93cx6.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/atl1c/atl1c.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/atl1e/atl1e.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/atlx/atl1.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/atlx/atl2.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/b44.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/usb/asix.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/usb/catc.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/usb/cdc_eem.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/usb/cdc_ether.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/usb/cdc_subset.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/usb/dm9601.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/usb/gl620a.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/usb/hso.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/usb/int51x1.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/usb/kaweth.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/usb/mcs7830.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/usb/net1080.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/usb/pegasus.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/usb/plusb.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/usb/rndis_host.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/usb/rtl8150.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/usb/smsc95xx.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/usb/usbnet.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/usb/zaurus.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/adm8211.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/at76c50x-usb.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/ath/ath.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/ath/ath5k/ath5k.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/ath/ath9k/ath9k.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/ath/ath9k/ath9k_common.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/ath/ath9k/ath9k_htc.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/ath/ath9k/ath9k_hw.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/ath/carl9170/carl9170.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/b43/b43.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/b43legacy/b43legacy.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/ipw2x00/ipw2100.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/ipw2x00/ipw2200.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/ipw2x00/libipw.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/iwlegacy/iwl-legacy.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/iwlegacy/iwl3945.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/iwlegacy/iwl4965.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/iwlwifi/iwlagn.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/iwmc3200wifi/iwmc3200wifi.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/libertas/libertas.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/libertas/libertas_cs.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/libertas/libertas_sdio.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/libertas/usb8xxx.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/libertas_tf/libertas_tf.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/libertas_tf/libertas_tf_usb.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/mac80211_hwsim.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/mwifiex/mwifiex.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/mwifiex/mwifiex_sdio.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/mwl8k.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/orinoco/orinoco.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/orinoco/orinoco_cs.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/orinoco/orinoco_nortel.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/orinoco/orinoco_pci.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/orinoco/orinoco_plx.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/orinoco/orinoco_tmd.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/orinoco/orinoco_usb.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/orinoco/spectrum_cs.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/p54/p54common.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/p54/p54pci.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/p54/p54usb.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/rndis_wlan.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/rt2x00/rt2400pci.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/rt2x00/rt2500pci.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/rt2x00/rt2500usb.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/rt2x00/rt2800lib.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/rt2x00/rt2800pci.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/rt2x00/rt2800usb.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/rt2x00/rt2x00lib.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/rt2x00/rt2x00pci.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/rt2x00/rt2x00usb.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/rt2x00/rt61pci.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/rt2x00/rt73usb.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/rtl818x/rtl8180/rtl8180.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/rtl818x/rtl8187/rtl8187.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192ce/rtl8192ce.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192cu/rtl8192cu.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192se/rtl8192se.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/rtlwifi/rtlwifi.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/wl1251/wl1251.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/wl12xx/wl12xx.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/zd1211rw/zd1211rw.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/ssb/ssb.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/staging/ath6kl/ath6kl.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/staging/brcm80211/brcmfmac/brcmfmac.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/staging/brcm80211/brcmsmac/brcmsmac.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/staging/brcm80211/util/brcmutil.ko -lib/modules/2.6.32.45-ipfire/kernel/net/bluetooth/bluetooth.ko -lib/modules/2.6.32.45-ipfire/kernel/net/bluetooth/bnep/bnep.ko -lib/modules/2.6.32.45-ipfire/kernel/net/bluetooth/cmtp/cmtp.ko -lib/modules/2.6.32.45-ipfire/kernel/net/bluetooth/hidp/hidp.ko -lib/modules/2.6.32.45-ipfire/kernel/net/bluetooth/rfcomm/rfcomm.ko -lib/modules/2.6.32.45-ipfire/kernel/net/mac80211/mac80211.ko -lib/modules/2.6.32.45-ipfire/kernel/net/wireless/cfg80211.ko -lib/modules/2.6.32.45-ipfire/kernel/net/wireless/lib80211.ko -lib/modules/2.6.32.45-ipfire/kernel/net/wireless/lib80211_crypt_ccmp.ko -lib/modules/2.6.32.45-ipfire/kernel/net/wireless/lib80211_crypt_tkip.ko -lib/modules/2.6.32.45-ipfire/kernel/net/wireless/lib80211_crypt_wep.ko -etc/udev/rules.d/50-compat_firmware.rules -lib/udev/compat_firmware.sh diff --git a/config/rootfiles/core/53/filelists/i586/gcc b/config/rootfiles/core/53/filelists/i586/gcc deleted file mode 120000 index ba328e3..0000000 --- a/config/rootfiles/core/53/filelists/i586/gcc +++ /dev/null @@ -1 +0,0 @@ -../../../../common/i586/gcc \ No newline at end of file diff --git a/config/rootfiles/core/53/filelists/i586/glibc b/config/rootfiles/core/53/filelists/i586/glibc deleted file mode 120000 index 943021f..0000000 --- a/config/rootfiles/core/53/filelists/i586/glibc +++ /dev/null @@ -1 +0,0 @@ -../../../../common/i586/glibc \ No newline at end of file diff --git a/config/rootfiles/core/53/filelists/i586/kvm-kmod b/config/rootfiles/core/53/filelists/i586/kvm-kmod deleted file mode 100644 index ec75215..0000000 --- a/config/rootfiles/core/53/filelists/i586/kvm-kmod +++ /dev/null @@ -1,6 +0,0 @@ -lib/modules/2.6.32.45-ipfire/kernel/arch/x86/kvm/kvm.ko -lib/modules/2.6.32.45-ipfire/kernel/arch/x86/kvm/kvm-amd.ko -lib/modules/2.6.32.45-ipfire/kernel/arch/x86/kvm/kvm-intel.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/arch/x86/kvm/kvm.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/arch/x86/kvm/kvm-amd.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/arch/x86/kvm/kvm-intel.ko diff --git a/config/rootfiles/core/53/filelists/openvpn b/config/rootfiles/core/53/filelists/openvpn deleted file mode 120000 index 493f3f7..0000000 --- a/config/rootfiles/core/53/filelists/openvpn +++ /dev/null @@ -1 +0,0 @@ -../../../common/openvpn \ No newline at end of file diff --git a/config/rootfiles/core/53/filelists/strongswan b/config/rootfiles/core/53/filelists/strongswan deleted file mode 120000 index 90c727e..0000000 --- a/config/rootfiles/core/53/filelists/strongswan +++ /dev/null @@ -1 +0,0 @@ -../../../common/strongswan \ No newline at end of file diff --git a/config/rootfiles/core/53/filelists/usb_modeswitch b/config/rootfiles/core/53/filelists/usb_modeswitch deleted file mode 120000 index acbab6f..0000000 --- a/config/rootfiles/core/53/filelists/usb_modeswitch +++ /dev/null @@ -1 +0,0 @@ -../../../common/usb_modeswitch \ No newline at end of file diff --git a/config/rootfiles/core/53/filelists/usb_modeswitch_data b/config/rootfiles/core/53/filelists/usb_modeswitch_data deleted file mode 120000 index 4cbce46..0000000 --- a/config/rootfiles/core/53/filelists/usb_modeswitch_data +++ /dev/null @@ -1 +0,0 @@ -../../../common/usb_modeswitch_data \ No newline at end of file diff --git a/config/rootfiles/core/53/meta b/config/rootfiles/core/53/meta deleted file mode 100644 index d547fa8..0000000 --- a/config/rootfiles/core/53/meta +++ /dev/null @@ -1 +0,0 @@ -DEPS="" diff --git a/config/rootfiles/core/53/update.sh b/config/rootfiles/core/53/update.sh deleted file mode 100644 index dae061b..0000000 --- a/config/rootfiles/core/53/update.sh +++ /dev/null @@ -1,124 +0,0 @@ -#!/bin/bash -############################################################################ -# # -# This file is part of the IPFire Firewall. # -# # -# IPFire is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 3 of the License, or # -# (at your option) any later version. # -# # -# IPFire is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with IPFire; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Copyright (C) 2011 IPFire-Team info@ipfire.org. # -# # -############################################################################ -# -. /opt/pakfire/lib/functions.sh -/usr/local/bin/backupctrl exclude >/dev/null 2>&1 - -# -# Remove old core updates from pakfire cache to save space... -core=53 -for (( i=1; i<=$core; i++ )) -do - rm -f /var/cache/pakfire/core-upgrade-*-$i.ipfire -done - -# -#Stop services - -/etc/init.d/ipsec stop -/etc/init.d/apache stop - -# -# Remove old strongswan libs -rm -rf /usr/lib/libcharon.so -rm -rf /usr/lib/libcharon.so.0 -rm -rf /usr/lib/libcharon.so.0.0.0 -rm -rf /usr/lib/libhydra.so -rm -rf /usr/lib/libhydra.so.0 -rm -rf /usr/lib/libhydra.so.0.0.0 -rm -rf /usr/lib/libstrongswan.so -rm -rf /usr/lib/libstrongswan.so.0 -rm -rf /usr/lib/libstrongswan.so.0.0.0 -rm -rf /usr/libexec/ipsec/plugins - -# Remove old usb_modeswitch_data -rm -rf /etc/usb_modeswitch.d - -# -#Extract files -extract_files - -# -#Replace now unsupported EU regdomain by a "DE" comment. -sed -i -e "s|^options cfg80211 ieee80211_regdom=EU|#options cfg80211 ieee80211_regdom=DE|g" \ - /etc/modprobe.d/cfg80211 - -# -#Start services - -/etc/init.d/apache start -if [ `grep "ENABLED=on" /var/ipfire/vpn/settings` ]; then - /etc/init.d/ipsec start -fi - -# -#Update Language cache -perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang" - -#Rebuild module dep's -depmod -a 2.6.32.45-ipfire >/dev/null 2>&1 -depmod -a 2.6.32.45-ipfire-pae >/dev/null 2>&1 -depmod -a 2.6.32.45-ipfire-xen >/dev/null 2>&1 - -#Rebuild initrd's because some compat-wireless modules are inside -/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45.img 2.6.32.45-ipfire -if [ -e /boot/ipfirerd-2.6.32.45-pae.img ]; then -/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45-pae.img 2.6.32.45-ipfire-pae -fi -if [ -e /boot/ipfirerd-2.6.32.45-xen.img ]; then -/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45-xen.img 2.6.32.45-ipfire-xen -fi - -sync - -# -# After pakfire has ended run it again and update the lists and do upgrade -# -echo '#!/bin/bash' > /tmp/pak_update -echo 'while [ "$(ps -A | grep " update.sh")" != "" ]; do' >> /tmp/pak_update -echo ' sleep 1' >> /tmp/pak_update -echo 'done' >> /tmp/pak_update -echo 'while [ "$(ps -A | grep " pakfire")" != "" ]; do' >> /tmp/pak_update -echo ' sleep 1' >> /tmp/pak_update -echo 'done' >> /tmp/pak_update -echo '/opt/pakfire/pakfire update -y --force' >> /tmp/pak_update -echo '/opt/pakfire/pakfire upgrade -y' >> /tmp/pak_update -echo '/opt/pakfire/pakfire upgrade -y' >> /tmp/pak_update -echo '/opt/pakfire/pakfire upgrade -y' >> /tmp/pak_update -echo 'sync && sync && sync' >> /tmp/pak_update -echo '/usr/bin/logger -p syslog.emerg -t core-upgrade-53 " *** Please reboot... *** "' >> /tmp/pak_update -echo 'touch /var/run/need_reboot ' >> /tmp/pak_update - -# -chmod +x /tmp/pak_update -/tmp/pak_update & -echo -echo Please wait until pakfire has ended... -echo - -# -#Finish -/etc/init.d/fireinfo start -sendprofile -#Don't report the exitcode last command -exit 0 diff --git a/config/rootfiles/core/54/exclude b/config/rootfiles/core/54/exclude deleted file mode 100644 index ca3adf5..0000000 --- a/config/rootfiles/core/54/exclude +++ /dev/null @@ -1,9 +0,0 @@ -srv/web/ipfire/html/proxy.pac -etc/udev/rules.d/30-persistent-network.rules -etc/ipsec.conf -etc/ipsec.secrets -etc/ipsec.user.conf -etc/ipsec.user.secrets -var/updatecache -etc/localtime -var/ipfire/ovpn diff --git a/config/rootfiles/core/54/filelists/GeoIP b/config/rootfiles/core/54/filelists/GeoIP deleted file mode 100644 index 0258236..0000000 --- a/config/rootfiles/core/54/filelists/GeoIP +++ /dev/null @@ -1 +0,0 @@ -usr/local/share/GeoIP/GeoIP.dat diff --git a/config/rootfiles/core/54/filelists/armv5tel/intelnet-modules b/config/rootfiles/core/54/filelists/armv5tel/intelnet-modules deleted file mode 100644 index 83d1e8b..0000000 --- a/config/rootfiles/core/54/filelists/armv5tel/intelnet-modules +++ /dev/null @@ -1,6 +0,0 @@ -lib/modules/2.6.32.45-ipfire-kirkwood/kernel/drivers/net/e1000/e1000.ko -lib/modules/2.6.32.45-ipfire-kirkwood/kernel/drivers/net/e1000e/e1000e.ko -lib/modules/2.6.32.45-ipfire-kirkwood/kernel/drivers/net/igb/igb.ko -lib/modules/2.6.32.45-ipfire-versatile/kernel/drivers/net/e1000/e1000.ko -lib/modules/2.6.32.45-ipfire-versatile/kernel/drivers/net/e1000e/e1000e.ko -lib/modules/2.6.32.45-ipfire-versatile/kernel/drivers/net/igb/igb.ko diff --git a/config/rootfiles/core/54/filelists/daq b/config/rootfiles/core/54/filelists/daq deleted file mode 120000 index d0e0956..0000000 --- a/config/rootfiles/core/54/filelists/daq +++ /dev/null @@ -1 +0,0 @@ -../../../common/daq \ No newline at end of file diff --git a/config/rootfiles/core/54/filelists/dracut b/config/rootfiles/core/54/filelists/dracut deleted file mode 120000 index 1608699..0000000 --- a/config/rootfiles/core/54/filelists/dracut +++ /dev/null @@ -1 +0,0 @@ -../../../common/dracut \ No newline at end of file diff --git a/config/rootfiles/core/54/filelists/files b/config/rootfiles/core/54/filelists/files deleted file mode 100644 index 01c4951..0000000 --- a/config/rootfiles/core/54/filelists/files +++ /dev/null @@ -1,19 +0,0 @@ -etc/system-release -etc/issue -etc/snort/snort.conf -var/ipfire/langs -usr/share/hwdata/pci.ids -usr/share/hwdata/usb.ids -etc/rc.d/init.d/network -etc/rc.d/init.d/networking/dhcpcd.exe -etc/rc.d/init.d/rc -etc/rc.d/init.d/smartenabler -etc/rc.d/init.d/snort -usr/local/bin/hddshutdown -usr/local/bin/makegraphs -usr/local/bin/scanhd -srv/web/ipfire/cgi-bin/credits.cgi -srv/web/ipfire/cgi-bin/hardwaregraphs.cgi -srv/web/ipfire/cgi-bin/ids.cgi -srv/web/ipfire/cgi-bin/media.cgi -srv/web/ipfire/cgi-bin/vpnmain.cgi diff --git a/config/rootfiles/core/54/filelists/fireinfo b/config/rootfiles/core/54/filelists/fireinfo deleted file mode 120000 index c461155..0000000 --- a/config/rootfiles/core/54/filelists/fireinfo +++ /dev/null @@ -1 +0,0 @@ -../../../common/fireinfo \ No newline at end of file diff --git a/config/rootfiles/core/54/filelists/fw_ath9k_htc b/config/rootfiles/core/54/filelists/fw_ath9k_htc deleted file mode 120000 index 098408d..0000000 --- a/config/rootfiles/core/54/filelists/fw_ath9k_htc +++ /dev/null @@ -1 +0,0 @@ -../../../common/fw_ath9k_htc \ No newline at end of file diff --git a/config/rootfiles/core/54/filelists/i586/intelnet-modules b/config/rootfiles/core/54/filelists/i586/intelnet-modules deleted file mode 100644 index 5e3439d..0000000 --- a/config/rootfiles/core/54/filelists/i586/intelnet-modules +++ /dev/null @@ -1,9 +0,0 @@ -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/e1000/e1000.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/e1000e/e1000e.ko -lib/modules/2.6.32.45-ipfire/kernel/drivers/net/igb/igb.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/e1000/e1000.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/e1000e/e1000e.ko -lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/igb/igb.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/e1000/e1000.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/e1000e/e1000e.ko -lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/igb/igb.ko diff --git a/config/rootfiles/core/54/filelists/smartmontools b/config/rootfiles/core/54/filelists/smartmontools deleted file mode 120000 index fb66daf..0000000 --- a/config/rootfiles/core/54/filelists/smartmontools +++ /dev/null @@ -1 +0,0 @@ -../../../common/smartmontools \ No newline at end of file diff --git a/config/rootfiles/core/54/filelists/snort b/config/rootfiles/core/54/filelists/snort deleted file mode 120000 index 9406ce0..0000000 --- a/config/rootfiles/core/54/filelists/snort +++ /dev/null @@ -1 +0,0 @@ -../../../common/snort \ No newline at end of file diff --git a/config/rootfiles/core/54/filelists/squid b/config/rootfiles/core/54/filelists/squid deleted file mode 120000 index 2dc8372..0000000 --- a/config/rootfiles/core/54/filelists/squid +++ /dev/null @@ -1 +0,0 @@ -../../../common/squid \ No newline at end of file diff --git a/config/rootfiles/core/54/filelists/strongswan b/config/rootfiles/core/54/filelists/strongswan deleted file mode 120000 index 90c727e..0000000 --- a/config/rootfiles/core/54/filelists/strongswan +++ /dev/null @@ -1 +0,0 @@ -../../../common/strongswan \ No newline at end of file diff --git a/config/rootfiles/core/54/filelists/tzdata b/config/rootfiles/core/54/filelists/tzdata deleted file mode 120000 index 5a6e325..0000000 --- a/config/rootfiles/core/54/filelists/tzdata +++ /dev/null @@ -1 +0,0 @@ -../../../common/tzdata \ No newline at end of file diff --git a/config/rootfiles/core/54/meta b/config/rootfiles/core/54/meta deleted file mode 100644 index d547fa8..0000000 --- a/config/rootfiles/core/54/meta +++ /dev/null @@ -1 +0,0 @@ -DEPS="" diff --git a/config/rootfiles/core/54/update.sh b/config/rootfiles/core/54/update.sh deleted file mode 100644 index 61d1011..0000000 --- a/config/rootfiles/core/54/update.sh +++ /dev/null @@ -1,87 +0,0 @@ -#!/bin/bash -############################################################################ -# # -# This file is part of the IPFire Firewall. # -# # -# IPFire is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 3 of the License, or # -# (at your option) any later version. # -# # -# IPFire is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with IPFire; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Copyright (C) 2011 IPFire-Team info@ipfire.org. # -# # -############################################################################ -# -. /opt/pakfire/lib/functions.sh -/usr/local/bin/backupctrl exclude >/dev/null 2>&1 - -# -# Remove old core updates from pakfire cache to save space... -core=54 -for (( i=1; i<=$core; i++ )) -do - rm -f /var/cache/pakfire/core-upgrade-*-$i.ipfire -done - -# -#Stop services - -/etc/init.d/ipsec stop -/etc/init.d/squid stop -/etc/init.d/snort stop - -# -# Flush old usb-modeswitch data -rm -rf /usr/share/usb_modeswitch - -# -# Flush old snort rules -rm -rf /etc/snort/rules - -# -#Extract files -extract_files - -# -#Start services - -/etc/init.d/squid start -if [ `grep "ENABLED=on" /var/ipfire/vpn/settings` ]; then - /etc/init.d/ipsec start -fi - -# -#Update Language cache -perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang" - -#Rebuild module dep's -depmod -a 2.6.32.45-ipfire >/dev/null 2>&1 -depmod -a 2.6.32.45-ipfire-pae >/dev/null 2>&1 -depmod -a 2.6.32.45-ipfire-xen >/dev/null 2>&1 - -#Rebuild initrd's because some compat-wireless modules are inside -/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45.img 2.6.32.45-ipfire -if [ -e /boot/ipfirerd-2.6.32.45-pae.img ]; then -/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45-pae.img 2.6.32.45-ipfire-pae -fi -if [ -e /boot/ipfirerd-2.6.32.45-xen.img ]; then -/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45-xen.img 2.6.32.45-ipfire-xen -fi - -sync - -# -#Finish -/etc/init.d/fireinfo start -sendprofile -#Don't report the exitcode last command -exit 0 diff --git a/config/rootfiles/core/55/exclude b/config/rootfiles/core/55/exclude deleted file mode 100644 index 7360266..0000000 --- a/config/rootfiles/core/55/exclude +++ /dev/null @@ -1,12 +0,0 @@ -srv/web/ipfire/html/proxy.pac -etc/udev/rules.d/30-persistent-network.rules -etc/ipsec.conf -etc/ipsec.secrets -etc/ipsec.user.conf -etc/ipsec.user.secrets -var/updatecache -etc/localtime -var/ipfire/ovpn -etc/ssh/ssh_config -etc/ssh/sshd_config -etc/ssl/openssl.cnf diff --git a/config/rootfiles/core/55/filelists/files b/config/rootfiles/core/55/filelists/files deleted file mode 100644 index 409e5fe..0000000 --- a/config/rootfiles/core/55/filelists/files +++ /dev/null @@ -1,2 +0,0 @@ -etc/system-release -etc/issue diff --git a/config/rootfiles/core/55/filelists/openssh b/config/rootfiles/core/55/filelists/openssh deleted file mode 120000 index d8c77fd..0000000 --- a/config/rootfiles/core/55/filelists/openssh +++ /dev/null @@ -1 +0,0 @@ -../../../common/openssh \ No newline at end of file diff --git a/config/rootfiles/core/55/filelists/openssl b/config/rootfiles/core/55/filelists/openssl deleted file mode 120000 index e011a92..0000000 --- a/config/rootfiles/core/55/filelists/openssl +++ /dev/null @@ -1 +0,0 @@ -../../../common/openssl \ No newline at end of file diff --git a/config/rootfiles/core/55/meta b/config/rootfiles/core/55/meta deleted file mode 100644 index d547fa8..0000000 --- a/config/rootfiles/core/55/meta +++ /dev/null @@ -1 +0,0 @@ -DEPS="" diff --git a/config/rootfiles/core/55/update.sh b/config/rootfiles/core/55/update.sh deleted file mode 100644 index dbdd436..0000000 --- a/config/rootfiles/core/55/update.sh +++ /dev/null @@ -1,78 +0,0 @@ -#!/bin/bash -############################################################################ -# # -# This file is part of the IPFire Firewall. # -# # -# IPFire is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 3 of the License, or # -# (at your option) any later version. # -# # -# IPFire is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with IPFire; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Copyright (C) 2012 IPFire-Team info@ipfire.org. # -# # -############################################################################ -# -. /opt/pakfire/lib/functions.sh -/usr/local/bin/backupctrl exclude >/dev/null 2>&1 - -# -# Remove old core updates from pakfire cache to save space... -core=55 -for (( i=1; i<=$core; i++ )) -do - rm -f /var/cache/pakfire/core-upgrade-*-$i.ipfire -done - -# -#Stop services -/etc/init.d/sshd stop -/etc/init.d/apache stop - -# -#Extract files -extract_files - -# -#Start services -/etc/init.d/apache start -/etc/init.d/sshd start - - -# -#Update Language cache -#perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang" - -#Rebuild module dep's -#depmod -a 2.6.32.45-ipfire >/dev/null 2>&1 -#depmod -a 2.6.32.45-ipfire-pae >/dev/null 2>&1 -#depmod -a 2.6.32.45-ipfire-xen >/dev/null 2>&1 - -#Rebuild initrd's because some compat-wireless modules are inside -#/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45.img 2.6.32.45-ipfire -#if [ -e /boot/ipfirerd-2.6.32.45-pae.img ]; then -#/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45-pae.img 2.6.32.45-ipfire-pae -#fi -#if [ -e /boot/ipfirerd-2.6.32.45-xen.img ]; then -#/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45-xen.img 2.6.32.45-ipfire-xen -#fi - -sync - -# This update need a reboot... -touch /var/run/need_reboot - -# -#Finish -/etc/init.d/fireinfo start -sendprofile -#Don't report the exitcode last command -exit 0 diff --git a/config/rootfiles/core/56/exclude b/config/rootfiles/core/56/exclude deleted file mode 100644 index 7360266..0000000 --- a/config/rootfiles/core/56/exclude +++ /dev/null @@ -1,12 +0,0 @@ -srv/web/ipfire/html/proxy.pac -etc/udev/rules.d/30-persistent-network.rules -etc/ipsec.conf -etc/ipsec.secrets -etc/ipsec.user.conf -etc/ipsec.user.secrets -var/updatecache -etc/localtime -var/ipfire/ovpn -etc/ssh/ssh_config -etc/ssh/sshd_config -etc/ssl/openssl.cnf diff --git a/config/rootfiles/core/56/filelists/Crypt-PasswdMD5 b/config/rootfiles/core/56/filelists/Crypt-PasswdMD5 deleted file mode 120000 index 9a766e1..0000000 --- a/config/rootfiles/core/56/filelists/Crypt-PasswdMD5 +++ /dev/null @@ -1 +0,0 @@ -../../../common/Crypt-PasswdMD5 \ No newline at end of file diff --git a/config/rootfiles/core/56/filelists/files b/config/rootfiles/core/56/filelists/files deleted file mode 100644 index 355107e..0000000 --- a/config/rootfiles/core/56/filelists/files +++ /dev/null @@ -1,13 +0,0 @@ -etc/system-release -etc/issue -etc/rc.d/init.d/mountfs -etc/rc.d/init.d/smartenabler -etc/rc.d/init.d/networking/red.up/10-static-routes -etc/rc.d/init.d/networking/red.down/10-static-routes -srv/web/ipfire/cgi-bin/chpasswd.cgi -srv/web/ipfire/cgi-bin/hardwaregraphs.cgi -srv/web/ipfire/cgi-bin/media.cgi -usr/local/bin/hddshutdown -usr/local/bin/makegraphs -usr/local/bin/openvpnctrl -usr/local/bin/readhash diff --git a/config/rootfiles/core/56/filelists/openssh b/config/rootfiles/core/56/filelists/openssh deleted file mode 120000 index d8c77fd..0000000 --- a/config/rootfiles/core/56/filelists/openssh +++ /dev/null @@ -1 +0,0 @@ -../../../common/openssh \ No newline at end of file diff --git a/config/rootfiles/core/56/filelists/openssl b/config/rootfiles/core/56/filelists/openssl deleted file mode 120000 index e011a92..0000000 --- a/config/rootfiles/core/56/filelists/openssl +++ /dev/null @@ -1 +0,0 @@ -../../../common/openssl \ No newline at end of file diff --git a/config/rootfiles/core/56/filelists/usb_modeswitch b/config/rootfiles/core/56/filelists/usb_modeswitch deleted file mode 120000 index acbab6f..0000000 --- a/config/rootfiles/core/56/filelists/usb_modeswitch +++ /dev/null @@ -1 +0,0 @@ -../../../common/usb_modeswitch \ No newline at end of file diff --git a/config/rootfiles/core/56/filelists/usb_modeswitch_data b/config/rootfiles/core/56/filelists/usb_modeswitch_data deleted file mode 120000 index 4cbce46..0000000 --- a/config/rootfiles/core/56/filelists/usb_modeswitch_data +++ /dev/null @@ -1 +0,0 @@ -../../../common/usb_modeswitch_data \ No newline at end of file diff --git a/config/rootfiles/core/56/meta b/config/rootfiles/core/56/meta deleted file mode 100644 index d547fa8..0000000 --- a/config/rootfiles/core/56/meta +++ /dev/null @@ -1 +0,0 @@ -DEPS="" diff --git a/config/rootfiles/core/56/update.sh b/config/rootfiles/core/56/update.sh deleted file mode 100644 index 2655a40..0000000 --- a/config/rootfiles/core/56/update.sh +++ /dev/null @@ -1,82 +0,0 @@ -#!/bin/bash -############################################################################ -# # -# This file is part of the IPFire Firewall. # -# # -# IPFire is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 3 of the License, or # -# (at your option) any later version. # -# # -# IPFire is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with IPFire; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Copyright (C) 2012 IPFire-Team info@ipfire.org. # -# # -############################################################################ -# -. /opt/pakfire/lib/functions.sh -/usr/local/bin/backupctrl exclude >/dev/null 2>&1 - -# -# Remove old core updates from pakfire cache to save space... -core=56 -for (( i=1; i<=$core; i++ )) -do - rm -f /var/cache/pakfire/core-upgrade-*-$i.ipfire -done - -# -#Stop services -/etc/init.d/sshd stop -/etc/init.d/apache stop - -# -#Extract files -extract_files - -# -#Edit baudrate in grub.conf and inittab -sed -i -e "s|38400|115200|g" /boot/grub/grub.conf -sed -i -e "s|38400|115200|g" /etc/inittab - -# -#Start services -/etc/init.d/apache start -/etc/init.d/sshd start - -# -#Update Language cache -#perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang" - -#Rebuild module dep's -#depmod -a 2.6.32.45-ipfire >/dev/null 2>&1 -#depmod -a 2.6.32.45-ipfire-pae >/dev/null 2>&1 -#depmod -a 2.6.32.45-ipfire-xen >/dev/null 2>&1 - -#Rebuild initrd's because some compat-wireless modules are inside -#/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45.img 2.6.32.45-ipfire -#if [ -e /boot/ipfirerd-2.6.32.45-pae.img ]; then -#/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45-pae.img 2.6.32.45-ipfire-pae -#fi -#if [ -e /boot/ipfirerd-2.6.32.45-xen.img ]; then -#/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45-xen.img 2.6.32.45-ipfire-xen -#fi - -sync - -# This update need a reboot... -touch /var/run/need_reboot - -# -#Finish -/etc/init.d/fireinfo start -sendprofile -#Don't report the exitcode last command -exit 0 diff --git a/config/rootfiles/core/57/exclude b/config/rootfiles/core/57/exclude deleted file mode 100644 index 7360266..0000000 --- a/config/rootfiles/core/57/exclude +++ /dev/null @@ -1,12 +0,0 @@ -srv/web/ipfire/html/proxy.pac -etc/udev/rules.d/30-persistent-network.rules -etc/ipsec.conf -etc/ipsec.secrets -etc/ipsec.user.conf -etc/ipsec.user.secrets -var/updatecache -etc/localtime -var/ipfire/ovpn -etc/ssh/ssh_config -etc/ssh/sshd_config -etc/ssl/openssl.cnf diff --git a/config/rootfiles/core/57/filelists/apache2 b/config/rootfiles/core/57/filelists/apache2 deleted file mode 120000 index eef95ef..0000000 --- a/config/rootfiles/core/57/filelists/apache2 +++ /dev/null @@ -1 +0,0 @@ -../../../common/apache2 \ No newline at end of file diff --git a/config/rootfiles/core/57/filelists/files b/config/rootfiles/core/57/filelists/files deleted file mode 100644 index 2f80b5f..0000000 --- a/config/rootfiles/core/57/filelists/files +++ /dev/null @@ -1,5 +0,0 @@ -etc/system-release -etc/issue -etc/rc.d/init.d/networking/red.up/10-static-routes -etc/rc.d/init.d/networking/red.down/10-static-routes -etc/rc.d/init.d/networking/any diff --git a/config/rootfiles/core/57/filelists/php b/config/rootfiles/core/57/filelists/php deleted file mode 120000 index 1ae48d7..0000000 --- a/config/rootfiles/core/57/filelists/php +++ /dev/null @@ -1 +0,0 @@ -../../../common/php \ No newline at end of file diff --git a/config/rootfiles/core/57/filelists/squid b/config/rootfiles/core/57/filelists/squid deleted file mode 120000 index 2dc8372..0000000 --- a/config/rootfiles/core/57/filelists/squid +++ /dev/null @@ -1 +0,0 @@ -../../../common/squid \ No newline at end of file diff --git a/config/rootfiles/core/57/filelists/strongswan b/config/rootfiles/core/57/filelists/strongswan deleted file mode 120000 index 90c727e..0000000 --- a/config/rootfiles/core/57/filelists/strongswan +++ /dev/null @@ -1 +0,0 @@ -../../../common/strongswan \ No newline at end of file diff --git a/config/rootfiles/core/57/filelists/vim b/config/rootfiles/core/57/filelists/vim deleted file mode 120000 index 9861317..0000000 --- a/config/rootfiles/core/57/filelists/vim +++ /dev/null @@ -1 +0,0 @@ -../../../common/vim \ No newline at end of file diff --git a/config/rootfiles/core/57/meta b/config/rootfiles/core/57/meta deleted file mode 100644 index d547fa8..0000000 --- a/config/rootfiles/core/57/meta +++ /dev/null @@ -1 +0,0 @@ -DEPS="" diff --git a/config/rootfiles/core/57/update.sh b/config/rootfiles/core/57/update.sh deleted file mode 100644 index 177bf72..0000000 --- a/config/rootfiles/core/57/update.sh +++ /dev/null @@ -1,81 +0,0 @@ -#!/bin/bash -############################################################################ -# # -# This file is part of the IPFire Firewall. # -# # -# IPFire is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 3 of the License, or # -# (at your option) any later version. # -# # -# IPFire is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with IPFire; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Copyright (C) 2012 IPFire-Team info@ipfire.org. # -# # -############################################################################ -# -. /opt/pakfire/lib/functions.sh -/usr/local/bin/backupctrl exclude >/dev/null 2>&1 - -# -# Remove old core updates from pakfire cache to save space... -core=57 -for (( i=1; i<=$core; i++ )) -do - rm -f /var/cache/pakfire/core-upgrade-*-$i.ipfire -done - -# -#Stop services -/etc/init.d/squid stop -/etc/init.d/apache stop -/etc/init.d/ipsec stop - -# -#Extract files -extract_files - -# -#Start services -/etc/init.d/squid start -/etc/init.d/apache start -if [ `grep "ENABLED=on" /var/ipfire/vpn/settings` ]; then - /etc/init.d/ipsec start -fi - -# -#Update Language cache -#perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang" - -#Rebuild module dep's -#depmod -a 2.6.32.45-ipfire >/dev/null 2>&1 -#depmod -a 2.6.32.45-ipfire-pae >/dev/null 2>&1 -#depmod -a 2.6.32.45-ipfire-xen >/dev/null 2>&1 - -#Rebuild initrd's because some compat-wireless modules are inside -#/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45.img 2.6.32.45-ipfire -#if [ -e /boot/ipfirerd-2.6.32.45-pae.img ]; then -#/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45-pae.img 2.6.32.45-ipfire-pae -#fi -#if [ -e /boot/ipfirerd-2.6.32.45-xen.img ]; then -#/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45-xen.img 2.6.32.45-ipfire-xen -#fi - -sync - -# This update need a reboot... -#touch /var/run/need_reboot - -# -#Finish -/etc/init.d/fireinfo start -sendprofile -#Don't report the exitcode last command -exit 0 diff --git a/config/rootfiles/core/58/exclude b/config/rootfiles/core/58/exclude deleted file mode 100644 index 7360266..0000000 --- a/config/rootfiles/core/58/exclude +++ /dev/null @@ -1,12 +0,0 @@ -srv/web/ipfire/html/proxy.pac -etc/udev/rules.d/30-persistent-network.rules -etc/ipsec.conf -etc/ipsec.secrets -etc/ipsec.user.conf -etc/ipsec.user.secrets -var/updatecache -etc/localtime -var/ipfire/ovpn -etc/ssh/ssh_config -etc/ssh/sshd_config -etc/ssl/openssl.cnf diff --git a/config/rootfiles/core/58/filelists/GeoIP b/config/rootfiles/core/58/filelists/GeoIP deleted file mode 100644 index 0258236..0000000 --- a/config/rootfiles/core/58/filelists/GeoIP +++ /dev/null @@ -1 +0,0 @@ -usr/local/share/GeoIP/GeoIP.dat diff --git a/config/rootfiles/core/58/filelists/Net-Telnet b/config/rootfiles/core/58/filelists/Net-Telnet deleted file mode 120000 index 66ca926..0000000 --- a/config/rootfiles/core/58/filelists/Net-Telnet +++ /dev/null @@ -1 +0,0 @@ -../../../common/Net-Telnet \ No newline at end of file diff --git a/config/rootfiles/core/58/filelists/armv5tel/cryptodev b/config/rootfiles/core/58/filelists/armv5tel/cryptodev deleted file mode 100644 index 6870588..0000000 --- a/config/rootfiles/core/58/filelists/armv5tel/cryptodev +++ /dev/null @@ -1,2 +0,0 @@ -lib/modules/2.6.32.45-ipfire-versatile/extra/cryptodev.ko -lib/modules/2.6.32.45-ipfire-kirkwood/extra/cryptodev.ko diff --git a/config/rootfiles/core/58/filelists/files b/config/rootfiles/core/58/filelists/files deleted file mode 100644 index 047127e..0000000 --- a/config/rootfiles/core/58/filelists/files +++ /dev/null @@ -1,7 +0,0 @@ -etc/system-release -etc/issue -etc/vimrc -srv/web/ipfire/cgi-bin/index.cgi -srv/web/ipfire/cgi-bin/ovpnmain.cgi -var/ipfire/general-functions.pl -var/ipfire/langs diff --git a/config/rootfiles/core/58/filelists/fireinfo b/config/rootfiles/core/58/filelists/fireinfo deleted file mode 120000 index c461155..0000000 --- a/config/rootfiles/core/58/filelists/fireinfo +++ /dev/null @@ -1 +0,0 @@ -../../../common/fireinfo \ No newline at end of file diff --git a/config/rootfiles/core/58/filelists/hwdata b/config/rootfiles/core/58/filelists/hwdata deleted file mode 100644 index 5a9672f..0000000 --- a/config/rootfiles/core/58/filelists/hwdata +++ /dev/null @@ -1,2 +0,0 @@ -usr/share/hwdata/pci.ids -usr/share/hwdata/usb.ids diff --git a/config/rootfiles/core/58/filelists/i586/cryptodev b/config/rootfiles/core/58/filelists/i586/cryptodev deleted file mode 100644 index da29a79..0000000 --- a/config/rootfiles/core/58/filelists/i586/cryptodev +++ /dev/null @@ -1,3 +0,0 @@ -lib/modules/2.6.32.45-ipfire/extra/cryptodev.ko -lib/modules/2.6.32.45-ipfire-pae/extra/cryptodev.ko -lib/modules/2.6.32.45-ipfire-xen/extra/cryptodev.ko diff --git a/config/rootfiles/core/58/filelists/libpng b/config/rootfiles/core/58/filelists/libpng deleted file mode 120000 index 8ef96e2..0000000 --- a/config/rootfiles/core/58/filelists/libpng +++ /dev/null @@ -1 +0,0 @@ -../../../common/libpng \ No newline at end of file diff --git a/config/rootfiles/core/58/filelists/openssh b/config/rootfiles/core/58/filelists/openssh deleted file mode 120000 index d8c77fd..0000000 --- a/config/rootfiles/core/58/filelists/openssh +++ /dev/null @@ -1 +0,0 @@ -../../../common/openssh \ No newline at end of file diff --git a/config/rootfiles/core/58/filelists/openssl b/config/rootfiles/core/58/filelists/openssl deleted file mode 120000 index e011a92..0000000 --- a/config/rootfiles/core/58/filelists/openssl +++ /dev/null @@ -1 +0,0 @@ -../../../common/openssl \ No newline at end of file diff --git a/config/rootfiles/core/58/filelists/openvpn b/config/rootfiles/core/58/filelists/openvpn deleted file mode 120000 index 493f3f7..0000000 --- a/config/rootfiles/core/58/filelists/openvpn +++ /dev/null @@ -1 +0,0 @@ -../../../common/openvpn \ No newline at end of file diff --git a/config/rootfiles/core/58/filelists/strongswan b/config/rootfiles/core/58/filelists/strongswan deleted file mode 120000 index 90c727e..0000000 --- a/config/rootfiles/core/58/filelists/strongswan +++ /dev/null @@ -1 +0,0 @@ -../../../common/strongswan \ No newline at end of file diff --git a/config/rootfiles/core/58/filelists/usb_modeswitch b/config/rootfiles/core/58/filelists/usb_modeswitch deleted file mode 120000 index acbab6f..0000000 --- a/config/rootfiles/core/58/filelists/usb_modeswitch +++ /dev/null @@ -1 +0,0 @@ -../../../common/usb_modeswitch \ No newline at end of file diff --git a/config/rootfiles/core/58/meta b/config/rootfiles/core/58/meta deleted file mode 100644 index d547fa8..0000000 --- a/config/rootfiles/core/58/meta +++ /dev/null @@ -1 +0,0 @@ -DEPS="" diff --git a/config/rootfiles/core/58/update.sh b/config/rootfiles/core/58/update.sh deleted file mode 100644 index ccec4b0..0000000 --- a/config/rootfiles/core/58/update.sh +++ /dev/null @@ -1,84 +0,0 @@ -#!/bin/bash -############################################################################ -# # -# This file is part of the IPFire Firewall. # -# # -# IPFire is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 3 of the License, or # -# (at your option) any later version. # -# # -# IPFire is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with IPFire; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Copyright (C) 2012 IPFire-Team info@ipfire.org. # -# # -############################################################################ -# -. /opt/pakfire/lib/functions.sh -/usr/local/bin/backupctrl exclude >/dev/null 2>&1 - -# -# Remove old core updates from pakfire cache to save space... -core=58 -for (( i=1; i<=$core; i++ )) -do - rm -f /var/cache/pakfire/core-upgrade-*-$i.ipfire -done - -# -#Stop services -/etc/init.d/ipsec stop - -# -#Extract files -extract_files - -# -#Start services -if [ `grep "ENABLED=on" /var/ipfire/vpn/settings` ]; then - /etc/init.d/ipsec start -fi - -# -#Update Language cache -perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang" - -#Rebuild module dep's -arch=`uname -m` -if [ ${arch::3} == "arm" ]; then - depmod -a 2.6.32.45-ipfire-versatile >/dev/null 2>&1 - depmod -a 2.6.32.45-ipfire-kirkwood >/dev/null 2>&1 -else - depmod -a 2.6.32.45-ipfire >/dev/null 2>&1 - depmod -a 2.6.32.45-ipfire-pae >/dev/null 2>&1 - depmod -a 2.6.32.45-ipfire-xen >/dev/null 2>&1 -fi - - -#Rebuild initrd's because some compat-wireless modules are inside -#/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45.img 2.6.32.45-ipfire -#if [ -e /boot/ipfirerd-2.6.32.45-pae.img ]; then -#/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45-pae.img 2.6.32.45-ipfire-pae -#fi -#if [ -e /boot/ipfirerd-2.6.32.45-xen.img ]; then -#/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45-xen.img 2.6.32.45-ipfire-xen -#fi - -sync - -# This update need a reboot... -touch /var/run/need_reboot - -# -#Finish -/etc/init.d/fireinfo start -sendprofile -#Don't report the exitcode last command -exit 0 diff --git a/config/rootfiles/core/59/exclude b/config/rootfiles/core/59/exclude deleted file mode 100644 index 7360266..0000000 --- a/config/rootfiles/core/59/exclude +++ /dev/null @@ -1,12 +0,0 @@ -srv/web/ipfire/html/proxy.pac -etc/udev/rules.d/30-persistent-network.rules -etc/ipsec.conf -etc/ipsec.secrets -etc/ipsec.user.conf -etc/ipsec.user.secrets -var/updatecache -etc/localtime -var/ipfire/ovpn -etc/ssh/ssh_config -etc/ssh/sshd_config -etc/ssl/openssl.cnf diff --git a/config/rootfiles/core/59/filelists/GeoIP b/config/rootfiles/core/59/filelists/GeoIP deleted file mode 100644 index 0258236..0000000 --- a/config/rootfiles/core/59/filelists/GeoIP +++ /dev/null @@ -1 +0,0 @@ -usr/local/share/GeoIP/GeoIP.dat diff --git a/config/rootfiles/core/59/filelists/Net-Telnet b/config/rootfiles/core/59/filelists/Net-Telnet deleted file mode 120000 index 66ca926..0000000 --- a/config/rootfiles/core/59/filelists/Net-Telnet +++ /dev/null @@ -1 +0,0 @@ -../../../common/Net-Telnet \ No newline at end of file diff --git a/config/rootfiles/core/59/filelists/files b/config/rootfiles/core/59/filelists/files deleted file mode 100644 index fef386b..0000000 --- a/config/rootfiles/core/59/filelists/files +++ /dev/null @@ -1,7 +0,0 @@ -etc/system-release -etc/issue -srv/web/ipfire/cgi-bin/index.cgi -srv/web/ipfire/cgi-bin/ovpnmain.cgi -var/ipfire/general-functions.pl -var/ipfire/langs -var/ipfire/dhcpc/dhcpcd-hooks/10-mtu diff --git a/config/rootfiles/core/59/filelists/openssh b/config/rootfiles/core/59/filelists/openssh deleted file mode 120000 index d8c77fd..0000000 --- a/config/rootfiles/core/59/filelists/openssh +++ /dev/null @@ -1 +0,0 @@ -../../../common/openssh \ No newline at end of file diff --git a/config/rootfiles/core/59/filelists/openssl b/config/rootfiles/core/59/filelists/openssl deleted file mode 120000 index e011a92..0000000 --- a/config/rootfiles/core/59/filelists/openssl +++ /dev/null @@ -1 +0,0 @@ -../../../common/openssl \ No newline at end of file diff --git a/config/rootfiles/core/59/filelists/php b/config/rootfiles/core/59/filelists/php deleted file mode 120000 index 1ae48d7..0000000 --- a/config/rootfiles/core/59/filelists/php +++ /dev/null @@ -1 +0,0 @@ -../../../common/php \ No newline at end of file diff --git a/config/rootfiles/core/59/filelists/python b/config/rootfiles/core/59/filelists/python deleted file mode 120000 index ffe6e2c..0000000 --- a/config/rootfiles/core/59/filelists/python +++ /dev/null @@ -1 +0,0 @@ -../../../common/python \ No newline at end of file diff --git a/config/rootfiles/core/59/filelists/strongswan b/config/rootfiles/core/59/filelists/strongswan deleted file mode 120000 index 90c727e..0000000 --- a/config/rootfiles/core/59/filelists/strongswan +++ /dev/null @@ -1 +0,0 @@ -../../../common/strongswan \ No newline at end of file diff --git a/config/rootfiles/core/59/meta b/config/rootfiles/core/59/meta deleted file mode 100644 index d547fa8..0000000 --- a/config/rootfiles/core/59/meta +++ /dev/null @@ -1 +0,0 @@ -DEPS="" diff --git a/config/rootfiles/core/59/update.sh b/config/rootfiles/core/59/update.sh deleted file mode 100644 index 2f1d865..0000000 --- a/config/rootfiles/core/59/update.sh +++ /dev/null @@ -1,86 +0,0 @@ -#!/bin/bash -############################################################################ -# # -# This file is part of the IPFire Firewall. # -# # -# IPFire is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 3 of the License, or # -# (at your option) any later version. # -# # -# IPFire is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with IPFire; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Copyright (C) 2012 IPFire-Team info@ipfire.org. # -# # -############################################################################ -# -. /opt/pakfire/lib/functions.sh -/usr/local/bin/backupctrl exclude >/dev/null 2>&1 - -# -# Remove old core updates from pakfire cache to save space... -core=59 -for (( i=1; i<=$core; i++ )) -do - rm -f /var/cache/pakfire/core-upgrade-*-$i.ipfire -done - -# -#Stop services -/etc/init.d/ipsec stop -/etc/init.d/sshd stop - -# -#Extract files -extract_files - -# -#Start services -/etc/init.d/sshd start -if [ `grep "ENABLED=on" /var/ipfire/vpn/settings` ]; then - /etc/init.d/ipsec start -fi - -# -#Update Language cache -perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang" - -#Rebuild module dep's -#arch=`uname -m` -#if [ ${arch::3} == "arm" ]; then -# depmod -a 2.6.32.45-ipfire-versatile >/dev/null 2>&1 -# depmod -a 2.6.32.45-ipfire-kirkwood >/dev/null 2>&1 -#else -# depmod -a 2.6.32.45-ipfire >/dev/null 2>&1 -# depmod -a 2.6.32.45-ipfire-pae >/dev/null 2>&1 -# depmod -a 2.6.32.45-ipfire-xen >/dev/null 2>&1 -#fi - - -#Rebuild initrd's because some compat-wireless modules are inside -#/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45.img 2.6.32.45-ipfire -#if [ -e /boot/ipfirerd-2.6.32.45-pae.img ]; then -#/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45-pae.img 2.6.32.45-ipfire-pae -#fi -#if [ -e /boot/ipfirerd-2.6.32.45-xen.img ]; then -#/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45-xen.img 2.6.32.45-ipfire-xen -#fi - -sync - -# This update need a reboot... -#touch /var/run/need_reboot - -# -#Finish -/etc/init.d/fireinfo start -sendprofile -#Don't report the exitcode last command -exit 0 diff --git a/config/rootfiles/core/62/filelists/files b/config/rootfiles/core/62/filelists/files index 409e5fe..89987a1 100644 --- a/config/rootfiles/core/62/filelists/files +++ b/config/rootfiles/core/62/filelists/files @@ -1,2 +1,4 @@ etc/system-release etc/issue +srv/web/ipfire/cgi-bin/connections.cgi +usr/lib/gconv diff --git a/config/rootfiles/installer/libsafe b/config/rootfiles/installer/libsafe deleted file mode 120000 index c31e31d..0000000 --- a/config/rootfiles/installer/libsafe +++ /dev/null @@ -1 +0,0 @@ -../common/libsafe \ No newline at end of file diff --git a/config/rootfiles/installer/pcre b/config/rootfiles/installer/pcre new file mode 120000 index 0000000..ffd8616 --- /dev/null +++ b/config/rootfiles/installer/pcre @@ -0,0 +1 @@ +../common/pcre \ No newline at end of file diff --git a/config/rootfiles/oldcore/52/exclude b/config/rootfiles/oldcore/52/exclude new file mode 100644 index 0000000..bb0d8c8 --- /dev/null +++ b/config/rootfiles/oldcore/52/exclude @@ -0,0 +1,2 @@ +srv/web/ipfire/html/proxy.pac +var/updatecache diff --git a/config/rootfiles/oldcore/52/filelists/apache2 b/config/rootfiles/oldcore/52/filelists/apache2 new file mode 120000 index 0000000..eef95ef --- /dev/null +++ b/config/rootfiles/oldcore/52/filelists/apache2 @@ -0,0 +1 @@ +../../../common/apache2 \ No newline at end of file diff --git a/config/rootfiles/oldcore/52/filelists/ethtool b/config/rootfiles/oldcore/52/filelists/ethtool new file mode 120000 index 0000000..494a53e --- /dev/null +++ b/config/rootfiles/oldcore/52/filelists/ethtool @@ -0,0 +1 @@ +../../../common/ethtool \ No newline at end of file diff --git a/config/rootfiles/oldcore/52/filelists/files b/config/rootfiles/oldcore/52/filelists/files new file mode 100644 index 0000000..8076e02 --- /dev/null +++ b/config/rootfiles/oldcore/52/filelists/files @@ -0,0 +1,8 @@ +etc/system-release +var/ipfire/langs/ +etc/rc.d/init.d/console +usr/local/sbin/setup +usr/local/bin/setddns.pl +srv/web/ipfire/cgi-bin/ddns.cgi +srv/web/ipfire/cgi-bin/proxy.cgi +var/ipfire/graphs.pl diff --git a/config/rootfiles/oldcore/52/filelists/squid b/config/rootfiles/oldcore/52/filelists/squid new file mode 120000 index 0000000..2dc8372 --- /dev/null +++ b/config/rootfiles/oldcore/52/filelists/squid @@ -0,0 +1 @@ +../../../common/squid \ No newline at end of file diff --git a/config/rootfiles/oldcore/52/meta b/config/rootfiles/oldcore/52/meta new file mode 100644 index 0000000..d547fa8 --- /dev/null +++ b/config/rootfiles/oldcore/52/meta @@ -0,0 +1 @@ +DEPS="" diff --git a/config/rootfiles/oldcore/52/update.sh b/config/rootfiles/oldcore/52/update.sh new file mode 100644 index 0000000..412299d --- /dev/null +++ b/config/rootfiles/oldcore/52/update.sh @@ -0,0 +1,63 @@ +#!/bin/bash +############################################################################ +# # +# This file is part of the IPFire Firewall. # +# # +# IPFire is free software; you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation; either version 3 of the License, or # +# (at your option) any later version. # +# # +# IPFire is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with IPFire; if not, write to the Free Software # +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # +# # +# Copyright (C) 2011 IPFire-Team info@ipfire.org. # +# # +############################################################################ +# +. /opt/pakfire/lib/functions.sh +/usr/local/bin/backupctrl exclude >/dev/null 2>&1 + +# +# Remove old core updates from pakfire cache to save space... +core=52 +for (( i=1; i<=$core; i++ )) +do + rm -f /var/cache/pakfire/core-upgrade-*-$i.ipfire +done + +# +#Stop services +/etc/init.d/squid stop +/etc/init.d/apache stop + +# +#Extract files +extract_files + +# +#Start services +/etc/init.d/apache start +/etc/init.d/squid start + +# +#Update Language cache +perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang" + +#Rebuild module dep's +#depmod 2.6.32.43-ipfire >/dev/null 2>&1 +#depmod 2.6.32.43-ipfire-pae >/dev/null 2>&1 +#depmod 2.6.32.43-ipfire-xen >/dev/null 2>&1 + +# +#Finish +/etc/init.d/fireinfo start +sendprofile +#Don't report the exitcode last command +exit 0 diff --git a/config/rootfiles/oldcore/53/exclude b/config/rootfiles/oldcore/53/exclude new file mode 100644 index 0000000..ca3adf5 --- /dev/null +++ b/config/rootfiles/oldcore/53/exclude @@ -0,0 +1,9 @@ +srv/web/ipfire/html/proxy.pac +etc/udev/rules.d/30-persistent-network.rules +etc/ipsec.conf +etc/ipsec.secrets +etc/ipsec.user.conf +etc/ipsec.user.secrets +var/updatecache +etc/localtime +var/ipfire/ovpn diff --git a/config/rootfiles/oldcore/53/filelists/apache2 b/config/rootfiles/oldcore/53/filelists/apache2 new file mode 120000 index 0000000..eef95ef --- /dev/null +++ b/config/rootfiles/oldcore/53/filelists/apache2 @@ -0,0 +1 @@ +../../../common/apache2 \ No newline at end of file diff --git a/config/rootfiles/oldcore/53/filelists/files b/config/rootfiles/oldcore/53/filelists/files new file mode 100644 index 0000000..741254d --- /dev/null +++ b/config/rootfiles/oldcore/53/filelists/files @@ -0,0 +1,26 @@ +etc/rc.d/init.d/network +etc/rc.d/init.d/static-routes +etc/sysctl.conf +etc/system-release +etc/issue +etc/iproute2/rt_tables +etc/rc.d/init.d/networking/red.up/50-ovpn +etc/rc.d/init.d/networking/red.down/10-ovpn +srv/web/ipfire/cgi-bin/extrahd.cgi +srv/web/ipfire/cgi-bin/index.cgi +srv/web/ipfire/cgi-bin/outgoinggrp.cgi +srv/web/ipfire/cgi-bin/ovpnmain.cgi +srv/web/ipfire/cgi-bin/pakfire.cgi +srv/web/ipfire/cgi-bin/routing.cgi +srv/web/ipfire/cgi-bin/vpnmain.cgi +srv/web/ipfire/cgi-bin/logs.cgi/log.dat +var/ipfire/langs/ +usr/local/bin/ipsecctrl +usr/local/bin/openvpnctrl +usr/local/bin/vpn-watch +usr/local/bin/rebuildroutes +usr/local/sbin/setup +var/ipfire/main/routing +var/ipfire/menu.d/30-network.menu +opt/pakfire/etc/pakfire.conf +usr/local/bin/backupiso diff --git a/config/rootfiles/oldcore/53/filelists/gmp b/config/rootfiles/oldcore/53/filelists/gmp new file mode 120000 index 0000000..8662a89 --- /dev/null +++ b/config/rootfiles/oldcore/53/filelists/gmp @@ -0,0 +1 @@ +../../../common/gmp \ No newline at end of file diff --git a/config/rootfiles/oldcore/53/filelists/i586/compat-wireless b/config/rootfiles/oldcore/53/filelists/i586/compat-wireless new file mode 100644 index 0000000..5d899bf --- /dev/null +++ b/config/rootfiles/oldcore/53/filelists/i586/compat-wireless @@ -0,0 +1,359 @@ +lib/modules/2.6.32.45-ipfire-xen/kernel/compat/compat.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/compat/compat_firmware_class.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/bluetooth/ath3k.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/bluetooth/bcm203x.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/bluetooth/bfusb.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/bluetooth/bluecard_cs.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/bluetooth/bpa10x.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/bluetooth/bt3c_cs.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/bluetooth/btmrvl.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/bluetooth/btmrvl_sdio.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/bluetooth/btsdio.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/bluetooth/btuart_cs.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/bluetooth/btusb.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/bluetooth/dtl1_cs.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/bluetooth/hci_uart.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/bluetooth/hci_vhci.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/misc/eeprom/eeprom_93cx6.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/atl1c/atl1c.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/atl1e/atl1e.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/atlx/atl1.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/atlx/atl2.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/b44.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/usb/asix.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/usb/catc.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/usb/cdc_eem.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/usb/cdc_ether.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/usb/cdc_subset.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/usb/dm9601.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/usb/gl620a.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/usb/hso.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/usb/int51x1.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/usb/kaweth.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/usb/mcs7830.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/usb/net1080.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/usb/pegasus.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/usb/plusb.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/usb/rndis_host.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/usb/rtl8150.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/usb/smsc95xx.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/usb/usbnet.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/usb/zaurus.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/adm8211.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/at76c50x-usb.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/ath/ath.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/ath/ath5k/ath5k.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/ath/ath9k/ath9k.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/ath/ath9k/ath9k_common.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/ath/ath9k/ath9k_htc.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/ath/ath9k/ath9k_hw.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/ath/carl9170/carl9170.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/b43/b43.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/b43legacy/b43legacy.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/ipw2x00/ipw2100.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/ipw2x00/ipw2200.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/ipw2x00/libipw.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/iwlegacy/iwl-legacy.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/iwlegacy/iwl3945.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/iwlegacy/iwl4965.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/iwlwifi/iwlagn.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/iwmc3200wifi/iwmc3200wifi.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/libertas/libertas.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/libertas/libertas_cs.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/libertas/libertas_sdio.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/libertas/usb8xxx.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/libertas_tf/libertas_tf.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/libertas_tf/libertas_tf_usb.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/mac80211_hwsim.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/mwifiex/mwifiex.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/mwifiex/mwifiex_sdio.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/mwl8k.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/orinoco/orinoco.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/orinoco/orinoco_cs.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/orinoco/orinoco_nortel.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/orinoco/orinoco_pci.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/orinoco/orinoco_plx.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/orinoco/orinoco_tmd.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/orinoco/orinoco_usb.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/orinoco/spectrum_cs.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/p54/p54common.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/p54/p54pci.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/p54/p54usb.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/rndis_wlan.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/rt2x00/rt2400pci.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/rt2x00/rt2500pci.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/rt2x00/rt2500usb.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/rt2x00/rt2800lib.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/rt2x00/rt2800pci.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/rt2x00/rt2800usb.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/rt2x00/rt2x00lib.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/rt2x00/rt2x00pci.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/rt2x00/rt2x00usb.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/rt2x00/rt61pci.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/rt2x00/rt73usb.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/rtl818x/rtl8180/rtl8180.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/rtl818x/rtl8187/rtl8187.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/rtlwifi/rtl8192ce/rtl8192ce.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/rtlwifi/rtl8192cu/rtl8192cu.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/rtlwifi/rtl8192se/rtl8192se.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/rtlwifi/rtlwifi.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/wl1251/wl1251.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/wl12xx/wl12xx.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/wireless/zd1211rw/zd1211rw.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/ssb/ssb.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/staging/ath6kl/ath6kl.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/staging/brcm80211/brcmfmac/brcmfmac.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/staging/brcm80211/brcmsmac/brcmsmac.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/staging/brcm80211/util/brcmutil.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/net/bluetooth/bluetooth.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/net/bluetooth/bnep/bnep.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/net/bluetooth/cmtp/cmtp.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/net/bluetooth/hidp/hidp.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/net/bluetooth/rfcomm/rfcomm.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/net/mac80211/mac80211.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/net/wireless/cfg80211.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/net/wireless/lib80211.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/net/wireless/lib80211_crypt_ccmp.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/net/wireless/lib80211_crypt_tkip.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/net/wireless/lib80211_crypt_wep.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/compat/compat.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/compat/compat_firmware_class.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/bluetooth/ath3k.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/bluetooth/bcm203x.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/bluetooth/bfusb.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/bluetooth/bluecard_cs.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/bluetooth/bpa10x.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/bluetooth/bt3c_cs.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/bluetooth/btmrvl.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/bluetooth/btmrvl_sdio.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/bluetooth/btsdio.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/bluetooth/btuart_cs.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/bluetooth/btusb.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/bluetooth/dtl1_cs.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/bluetooth/hci_uart.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/bluetooth/hci_vhci.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/misc/eeprom/eeprom_93cx6.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/atl1c/atl1c.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/atl1e/atl1e.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/atlx/atl1.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/atlx/atl2.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/b44.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/usb/asix.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/usb/catc.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/usb/cdc_eem.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/usb/cdc_ether.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/usb/cdc_subset.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/usb/dm9601.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/usb/gl620a.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/usb/hso.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/usb/int51x1.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/usb/kaweth.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/usb/mcs7830.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/usb/net1080.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/usb/pegasus.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/usb/plusb.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/usb/rndis_host.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/usb/rtl8150.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/usb/smsc95xx.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/usb/usbnet.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/usb/zaurus.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/adm8211.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/at76c50x-usb.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/ath/ath.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/ath/ath5k/ath5k.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/ath/ath9k/ath9k.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/ath/ath9k/ath9k_common.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/ath/ath9k/ath9k_htc.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/ath/ath9k/ath9k_hw.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/ath/carl9170/carl9170.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/b43/b43.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/b43legacy/b43legacy.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/ipw2x00/ipw2100.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/ipw2x00/ipw2200.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/ipw2x00/libipw.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/iwlegacy/iwl-legacy.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/iwlegacy/iwl3945.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/iwlegacy/iwl4965.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/iwlwifi/iwlagn.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/iwmc3200wifi/iwmc3200wifi.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/libertas/libertas.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/libertas/libertas_cs.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/libertas/libertas_sdio.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/libertas/usb8xxx.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/libertas_tf/libertas_tf.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/libertas_tf/libertas_tf_usb.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/mac80211_hwsim.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/mwifiex/mwifiex.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/mwifiex/mwifiex_sdio.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/mwl8k.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/orinoco/orinoco.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/orinoco/orinoco_cs.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/orinoco/orinoco_nortel.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/orinoco/orinoco_pci.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/orinoco/orinoco_plx.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/orinoco/orinoco_tmd.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/orinoco/orinoco_usb.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/orinoco/spectrum_cs.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/p54/p54common.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/p54/p54pci.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/p54/p54usb.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/rndis_wlan.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2400pci.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2500pci.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2500usb.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2800lib.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2800pci.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2800usb.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2x00lib.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2x00pci.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2x00usb.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt61pci.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt73usb.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/rtl818x/rtl8180/rtl8180.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/rtl818x/rtl8187/rtl8187.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8192ce/rtl8192ce.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8192cu/rtl8192cu.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8192se/rtl8192se.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtlwifi.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/wl1251/wl1251.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/wl12xx/wl12xx.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/wireless/zd1211rw/zd1211rw.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/ssb/ssb.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/staging/ath6kl/ath6kl.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/staging/brcm80211/brcmfmac/brcmfmac.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/staging/brcm80211/brcmsmac/brcmsmac.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/staging/brcm80211/util/brcmutil.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/net/bluetooth/bluetooth.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/net/bluetooth/bnep/bnep.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/net/bluetooth/cmtp/cmtp.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/net/bluetooth/hidp/hidp.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/net/bluetooth/rfcomm/rfcomm.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/net/mac80211/mac80211.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/net/wireless/cfg80211.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/net/wireless/lib80211.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/net/wireless/lib80211_crypt_ccmp.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/net/wireless/lib80211_crypt_tkip.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/net/wireless/lib80211_crypt_wep.ko +lib/modules/2.6.32.45-ipfire/kernel/compat/compat.ko +lib/modules/2.6.32.45-ipfire/kernel/compat/compat_firmware_class.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/bluetooth/ath3k.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/bluetooth/bcm203x.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/bluetooth/bfusb.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/bluetooth/bluecard_cs.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/bluetooth/bpa10x.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/bluetooth/bt3c_cs.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/bluetooth/btmrvl.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/bluetooth/btmrvl_sdio.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/bluetooth/btsdio.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/bluetooth/btuart_cs.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/bluetooth/btusb.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/bluetooth/dtl1_cs.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/bluetooth/hci_uart.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/bluetooth/hci_vhci.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/misc/eeprom/eeprom_93cx6.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/atl1c/atl1c.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/atl1e/atl1e.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/atlx/atl1.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/atlx/atl2.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/b44.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/usb/asix.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/usb/catc.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/usb/cdc_eem.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/usb/cdc_ether.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/usb/cdc_subset.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/usb/dm9601.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/usb/gl620a.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/usb/hso.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/usb/int51x1.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/usb/kaweth.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/usb/mcs7830.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/usb/net1080.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/usb/pegasus.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/usb/plusb.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/usb/rndis_host.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/usb/rtl8150.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/usb/smsc95xx.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/usb/usbnet.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/usb/zaurus.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/adm8211.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/at76c50x-usb.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/ath/ath.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/ath/ath5k/ath5k.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/ath/ath9k/ath9k.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/ath/ath9k/ath9k_common.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/ath/ath9k/ath9k_htc.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/ath/ath9k/ath9k_hw.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/ath/carl9170/carl9170.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/b43/b43.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/b43legacy/b43legacy.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/ipw2x00/ipw2100.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/ipw2x00/ipw2200.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/ipw2x00/libipw.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/iwlegacy/iwl-legacy.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/iwlegacy/iwl3945.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/iwlegacy/iwl4965.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/iwlwifi/iwlagn.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/iwmc3200wifi/iwmc3200wifi.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/libertas/libertas.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/libertas/libertas_cs.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/libertas/libertas_sdio.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/libertas/usb8xxx.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/libertas_tf/libertas_tf.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/libertas_tf/libertas_tf_usb.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/mac80211_hwsim.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/mwifiex/mwifiex.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/mwifiex/mwifiex_sdio.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/mwl8k.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/orinoco/orinoco.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/orinoco/orinoco_cs.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/orinoco/orinoco_nortel.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/orinoco/orinoco_pci.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/orinoco/orinoco_plx.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/orinoco/orinoco_tmd.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/orinoco/orinoco_usb.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/orinoco/spectrum_cs.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/p54/p54common.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/p54/p54pci.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/p54/p54usb.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/rndis_wlan.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/rt2x00/rt2400pci.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/rt2x00/rt2500pci.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/rt2x00/rt2500usb.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/rt2x00/rt2800lib.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/rt2x00/rt2800pci.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/rt2x00/rt2800usb.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/rt2x00/rt2x00lib.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/rt2x00/rt2x00pci.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/rt2x00/rt2x00usb.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/rt2x00/rt61pci.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/rt2x00/rt73usb.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/rtl818x/rtl8180/rtl8180.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/rtl818x/rtl8187/rtl8187.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192ce/rtl8192ce.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192cu/rtl8192cu.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192se/rtl8192se.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/rtlwifi/rtlwifi.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/wl1251/wl1251.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/wl12xx/wl12xx.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/wireless/zd1211rw/zd1211rw.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/ssb/ssb.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/staging/ath6kl/ath6kl.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/staging/brcm80211/brcmfmac/brcmfmac.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/staging/brcm80211/brcmsmac/brcmsmac.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/staging/brcm80211/util/brcmutil.ko +lib/modules/2.6.32.45-ipfire/kernel/net/bluetooth/bluetooth.ko +lib/modules/2.6.32.45-ipfire/kernel/net/bluetooth/bnep/bnep.ko +lib/modules/2.6.32.45-ipfire/kernel/net/bluetooth/cmtp/cmtp.ko +lib/modules/2.6.32.45-ipfire/kernel/net/bluetooth/hidp/hidp.ko +lib/modules/2.6.32.45-ipfire/kernel/net/bluetooth/rfcomm/rfcomm.ko +lib/modules/2.6.32.45-ipfire/kernel/net/mac80211/mac80211.ko +lib/modules/2.6.32.45-ipfire/kernel/net/wireless/cfg80211.ko +lib/modules/2.6.32.45-ipfire/kernel/net/wireless/lib80211.ko +lib/modules/2.6.32.45-ipfire/kernel/net/wireless/lib80211_crypt_ccmp.ko +lib/modules/2.6.32.45-ipfire/kernel/net/wireless/lib80211_crypt_tkip.ko +lib/modules/2.6.32.45-ipfire/kernel/net/wireless/lib80211_crypt_wep.ko +etc/udev/rules.d/50-compat_firmware.rules +lib/udev/compat_firmware.sh diff --git a/config/rootfiles/oldcore/53/filelists/i586/gcc b/config/rootfiles/oldcore/53/filelists/i586/gcc new file mode 120000 index 0000000..ba328e3 --- /dev/null +++ b/config/rootfiles/oldcore/53/filelists/i586/gcc @@ -0,0 +1 @@ +../../../../common/i586/gcc \ No newline at end of file diff --git a/config/rootfiles/oldcore/53/filelists/i586/glibc b/config/rootfiles/oldcore/53/filelists/i586/glibc new file mode 120000 index 0000000..943021f --- /dev/null +++ b/config/rootfiles/oldcore/53/filelists/i586/glibc @@ -0,0 +1 @@ +../../../../common/i586/glibc \ No newline at end of file diff --git a/config/rootfiles/oldcore/53/filelists/i586/kvm-kmod b/config/rootfiles/oldcore/53/filelists/i586/kvm-kmod new file mode 100644 index 0000000..ec75215 --- /dev/null +++ b/config/rootfiles/oldcore/53/filelists/i586/kvm-kmod @@ -0,0 +1,6 @@ +lib/modules/2.6.32.45-ipfire/kernel/arch/x86/kvm/kvm.ko +lib/modules/2.6.32.45-ipfire/kernel/arch/x86/kvm/kvm-amd.ko +lib/modules/2.6.32.45-ipfire/kernel/arch/x86/kvm/kvm-intel.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/arch/x86/kvm/kvm.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/arch/x86/kvm/kvm-amd.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/arch/x86/kvm/kvm-intel.ko diff --git a/config/rootfiles/oldcore/53/filelists/openvpn b/config/rootfiles/oldcore/53/filelists/openvpn new file mode 120000 index 0000000..493f3f7 --- /dev/null +++ b/config/rootfiles/oldcore/53/filelists/openvpn @@ -0,0 +1 @@ +../../../common/openvpn \ No newline at end of file diff --git a/config/rootfiles/oldcore/53/filelists/strongswan b/config/rootfiles/oldcore/53/filelists/strongswan new file mode 120000 index 0000000..90c727e --- /dev/null +++ b/config/rootfiles/oldcore/53/filelists/strongswan @@ -0,0 +1 @@ +../../../common/strongswan \ No newline at end of file diff --git a/config/rootfiles/oldcore/53/filelists/usb_modeswitch b/config/rootfiles/oldcore/53/filelists/usb_modeswitch new file mode 120000 index 0000000..acbab6f --- /dev/null +++ b/config/rootfiles/oldcore/53/filelists/usb_modeswitch @@ -0,0 +1 @@ +../../../common/usb_modeswitch \ No newline at end of file diff --git a/config/rootfiles/oldcore/53/filelists/usb_modeswitch_data b/config/rootfiles/oldcore/53/filelists/usb_modeswitch_data new file mode 120000 index 0000000..4cbce46 --- /dev/null +++ b/config/rootfiles/oldcore/53/filelists/usb_modeswitch_data @@ -0,0 +1 @@ +../../../common/usb_modeswitch_data \ No newline at end of file diff --git a/config/rootfiles/oldcore/53/meta b/config/rootfiles/oldcore/53/meta new file mode 100644 index 0000000..d547fa8 --- /dev/null +++ b/config/rootfiles/oldcore/53/meta @@ -0,0 +1 @@ +DEPS="" diff --git a/config/rootfiles/oldcore/53/update.sh b/config/rootfiles/oldcore/53/update.sh new file mode 100644 index 0000000..dae061b --- /dev/null +++ b/config/rootfiles/oldcore/53/update.sh @@ -0,0 +1,124 @@ +#!/bin/bash +############################################################################ +# # +# This file is part of the IPFire Firewall. # +# # +# IPFire is free software; you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation; either version 3 of the License, or # +# (at your option) any later version. # +# # +# IPFire is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with IPFire; if not, write to the Free Software # +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # +# # +# Copyright (C) 2011 IPFire-Team info@ipfire.org. # +# # +############################################################################ +# +. /opt/pakfire/lib/functions.sh +/usr/local/bin/backupctrl exclude >/dev/null 2>&1 + +# +# Remove old core updates from pakfire cache to save space... +core=53 +for (( i=1; i<=$core; i++ )) +do + rm -f /var/cache/pakfire/core-upgrade-*-$i.ipfire +done + +# +#Stop services + +/etc/init.d/ipsec stop +/etc/init.d/apache stop + +# +# Remove old strongswan libs +rm -rf /usr/lib/libcharon.so +rm -rf /usr/lib/libcharon.so.0 +rm -rf /usr/lib/libcharon.so.0.0.0 +rm -rf /usr/lib/libhydra.so +rm -rf /usr/lib/libhydra.so.0 +rm -rf /usr/lib/libhydra.so.0.0.0 +rm -rf /usr/lib/libstrongswan.so +rm -rf /usr/lib/libstrongswan.so.0 +rm -rf /usr/lib/libstrongswan.so.0.0.0 +rm -rf /usr/libexec/ipsec/plugins + +# Remove old usb_modeswitch_data +rm -rf /etc/usb_modeswitch.d + +# +#Extract files +extract_files + +# +#Replace now unsupported EU regdomain by a "DE" comment. +sed -i -e "s|^options cfg80211 ieee80211_regdom=EU|#options cfg80211 ieee80211_regdom=DE|g" \ + /etc/modprobe.d/cfg80211 + +# +#Start services + +/etc/init.d/apache start +if [ `grep "ENABLED=on" /var/ipfire/vpn/settings` ]; then + /etc/init.d/ipsec start +fi + +# +#Update Language cache +perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang" + +#Rebuild module dep's +depmod -a 2.6.32.45-ipfire >/dev/null 2>&1 +depmod -a 2.6.32.45-ipfire-pae >/dev/null 2>&1 +depmod -a 2.6.32.45-ipfire-xen >/dev/null 2>&1 + +#Rebuild initrd's because some compat-wireless modules are inside +/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45.img 2.6.32.45-ipfire +if [ -e /boot/ipfirerd-2.6.32.45-pae.img ]; then +/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45-pae.img 2.6.32.45-ipfire-pae +fi +if [ -e /boot/ipfirerd-2.6.32.45-xen.img ]; then +/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45-xen.img 2.6.32.45-ipfire-xen +fi + +sync + +# +# After pakfire has ended run it again and update the lists and do upgrade +# +echo '#!/bin/bash' > /tmp/pak_update +echo 'while [ "$(ps -A | grep " update.sh")" != "" ]; do' >> /tmp/pak_update +echo ' sleep 1' >> /tmp/pak_update +echo 'done' >> /tmp/pak_update +echo 'while [ "$(ps -A | grep " pakfire")" != "" ]; do' >> /tmp/pak_update +echo ' sleep 1' >> /tmp/pak_update +echo 'done' >> /tmp/pak_update +echo '/opt/pakfire/pakfire update -y --force' >> /tmp/pak_update +echo '/opt/pakfire/pakfire upgrade -y' >> /tmp/pak_update +echo '/opt/pakfire/pakfire upgrade -y' >> /tmp/pak_update +echo '/opt/pakfire/pakfire upgrade -y' >> /tmp/pak_update +echo 'sync && sync && sync' >> /tmp/pak_update +echo '/usr/bin/logger -p syslog.emerg -t core-upgrade-53 " *** Please reboot... *** "' >> /tmp/pak_update +echo 'touch /var/run/need_reboot ' >> /tmp/pak_update + +# +chmod +x /tmp/pak_update +/tmp/pak_update & +echo +echo Please wait until pakfire has ended... +echo + +# +#Finish +/etc/init.d/fireinfo start +sendprofile +#Don't report the exitcode last command +exit 0 diff --git a/config/rootfiles/oldcore/54/exclude b/config/rootfiles/oldcore/54/exclude new file mode 100644 index 0000000..ca3adf5 --- /dev/null +++ b/config/rootfiles/oldcore/54/exclude @@ -0,0 +1,9 @@ +srv/web/ipfire/html/proxy.pac +etc/udev/rules.d/30-persistent-network.rules +etc/ipsec.conf +etc/ipsec.secrets +etc/ipsec.user.conf +etc/ipsec.user.secrets +var/updatecache +etc/localtime +var/ipfire/ovpn diff --git a/config/rootfiles/oldcore/54/filelists/GeoIP b/config/rootfiles/oldcore/54/filelists/GeoIP new file mode 100644 index 0000000..0258236 --- /dev/null +++ b/config/rootfiles/oldcore/54/filelists/GeoIP @@ -0,0 +1 @@ +usr/local/share/GeoIP/GeoIP.dat diff --git a/config/rootfiles/oldcore/54/filelists/armv5tel/intelnet-modules b/config/rootfiles/oldcore/54/filelists/armv5tel/intelnet-modules new file mode 100644 index 0000000..83d1e8b --- /dev/null +++ b/config/rootfiles/oldcore/54/filelists/armv5tel/intelnet-modules @@ -0,0 +1,6 @@ +lib/modules/2.6.32.45-ipfire-kirkwood/kernel/drivers/net/e1000/e1000.ko +lib/modules/2.6.32.45-ipfire-kirkwood/kernel/drivers/net/e1000e/e1000e.ko +lib/modules/2.6.32.45-ipfire-kirkwood/kernel/drivers/net/igb/igb.ko +lib/modules/2.6.32.45-ipfire-versatile/kernel/drivers/net/e1000/e1000.ko +lib/modules/2.6.32.45-ipfire-versatile/kernel/drivers/net/e1000e/e1000e.ko +lib/modules/2.6.32.45-ipfire-versatile/kernel/drivers/net/igb/igb.ko diff --git a/config/rootfiles/oldcore/54/filelists/daq b/config/rootfiles/oldcore/54/filelists/daq new file mode 120000 index 0000000..d0e0956 --- /dev/null +++ b/config/rootfiles/oldcore/54/filelists/daq @@ -0,0 +1 @@ +../../../common/daq \ No newline at end of file diff --git a/config/rootfiles/oldcore/54/filelists/dracut b/config/rootfiles/oldcore/54/filelists/dracut new file mode 120000 index 0000000..1608699 --- /dev/null +++ b/config/rootfiles/oldcore/54/filelists/dracut @@ -0,0 +1 @@ +../../../common/dracut \ No newline at end of file diff --git a/config/rootfiles/oldcore/54/filelists/files b/config/rootfiles/oldcore/54/filelists/files new file mode 100644 index 0000000..01c4951 --- /dev/null +++ b/config/rootfiles/oldcore/54/filelists/files @@ -0,0 +1,19 @@ +etc/system-release +etc/issue +etc/snort/snort.conf +var/ipfire/langs +usr/share/hwdata/pci.ids +usr/share/hwdata/usb.ids +etc/rc.d/init.d/network +etc/rc.d/init.d/networking/dhcpcd.exe +etc/rc.d/init.d/rc +etc/rc.d/init.d/smartenabler +etc/rc.d/init.d/snort +usr/local/bin/hddshutdown +usr/local/bin/makegraphs +usr/local/bin/scanhd +srv/web/ipfire/cgi-bin/credits.cgi +srv/web/ipfire/cgi-bin/hardwaregraphs.cgi +srv/web/ipfire/cgi-bin/ids.cgi +srv/web/ipfire/cgi-bin/media.cgi +srv/web/ipfire/cgi-bin/vpnmain.cgi diff --git a/config/rootfiles/oldcore/54/filelists/fireinfo b/config/rootfiles/oldcore/54/filelists/fireinfo new file mode 120000 index 0000000..c461155 --- /dev/null +++ b/config/rootfiles/oldcore/54/filelists/fireinfo @@ -0,0 +1 @@ +../../../common/fireinfo \ No newline at end of file diff --git a/config/rootfiles/oldcore/54/filelists/fw_ath9k_htc b/config/rootfiles/oldcore/54/filelists/fw_ath9k_htc new file mode 120000 index 0000000..098408d --- /dev/null +++ b/config/rootfiles/oldcore/54/filelists/fw_ath9k_htc @@ -0,0 +1 @@ +../../../common/fw_ath9k_htc \ No newline at end of file diff --git a/config/rootfiles/oldcore/54/filelists/i586/intelnet-modules b/config/rootfiles/oldcore/54/filelists/i586/intelnet-modules new file mode 100644 index 0000000..5e3439d --- /dev/null +++ b/config/rootfiles/oldcore/54/filelists/i586/intelnet-modules @@ -0,0 +1,9 @@ +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/e1000/e1000.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/e1000e/e1000e.ko +lib/modules/2.6.32.45-ipfire/kernel/drivers/net/igb/igb.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/e1000/e1000.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/e1000e/e1000e.ko +lib/modules/2.6.32.45-ipfire-pae/kernel/drivers/net/igb/igb.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/e1000/e1000.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/e1000e/e1000e.ko +lib/modules/2.6.32.45-ipfire-xen/kernel/drivers/net/igb/igb.ko diff --git a/config/rootfiles/oldcore/54/filelists/smartmontools b/config/rootfiles/oldcore/54/filelists/smartmontools new file mode 120000 index 0000000..fb66daf --- /dev/null +++ b/config/rootfiles/oldcore/54/filelists/smartmontools @@ -0,0 +1 @@ +../../../common/smartmontools \ No newline at end of file diff --git a/config/rootfiles/oldcore/54/filelists/snort b/config/rootfiles/oldcore/54/filelists/snort new file mode 120000 index 0000000..9406ce0 --- /dev/null +++ b/config/rootfiles/oldcore/54/filelists/snort @@ -0,0 +1 @@ +../../../common/snort \ No newline at end of file diff --git a/config/rootfiles/oldcore/54/filelists/squid b/config/rootfiles/oldcore/54/filelists/squid new file mode 120000 index 0000000..2dc8372 --- /dev/null +++ b/config/rootfiles/oldcore/54/filelists/squid @@ -0,0 +1 @@ +../../../common/squid \ No newline at end of file diff --git a/config/rootfiles/oldcore/54/filelists/strongswan b/config/rootfiles/oldcore/54/filelists/strongswan new file mode 120000 index 0000000..90c727e --- /dev/null +++ b/config/rootfiles/oldcore/54/filelists/strongswan @@ -0,0 +1 @@ +../../../common/strongswan \ No newline at end of file diff --git a/config/rootfiles/oldcore/54/filelists/tzdata b/config/rootfiles/oldcore/54/filelists/tzdata new file mode 120000 index 0000000..5a6e325 --- /dev/null +++ b/config/rootfiles/oldcore/54/filelists/tzdata @@ -0,0 +1 @@ +../../../common/tzdata \ No newline at end of file diff --git a/config/rootfiles/oldcore/54/meta b/config/rootfiles/oldcore/54/meta new file mode 100644 index 0000000..d547fa8 --- /dev/null +++ b/config/rootfiles/oldcore/54/meta @@ -0,0 +1 @@ +DEPS="" diff --git a/config/rootfiles/oldcore/54/update.sh b/config/rootfiles/oldcore/54/update.sh new file mode 100644 index 0000000..61d1011 --- /dev/null +++ b/config/rootfiles/oldcore/54/update.sh @@ -0,0 +1,87 @@ +#!/bin/bash +############################################################################ +# # +# This file is part of the IPFire Firewall. # +# # +# IPFire is free software; you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation; either version 3 of the License, or # +# (at your option) any later version. # +# # +# IPFire is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with IPFire; if not, write to the Free Software # +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # +# # +# Copyright (C) 2011 IPFire-Team info@ipfire.org. # +# # +############################################################################ +# +. /opt/pakfire/lib/functions.sh +/usr/local/bin/backupctrl exclude >/dev/null 2>&1 + +# +# Remove old core updates from pakfire cache to save space... +core=54 +for (( i=1; i<=$core; i++ )) +do + rm -f /var/cache/pakfire/core-upgrade-*-$i.ipfire +done + +# +#Stop services + +/etc/init.d/ipsec stop +/etc/init.d/squid stop +/etc/init.d/snort stop + +# +# Flush old usb-modeswitch data +rm -rf /usr/share/usb_modeswitch + +# +# Flush old snort rules +rm -rf /etc/snort/rules + +# +#Extract files +extract_files + +# +#Start services + +/etc/init.d/squid start +if [ `grep "ENABLED=on" /var/ipfire/vpn/settings` ]; then + /etc/init.d/ipsec start +fi + +# +#Update Language cache +perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang" + +#Rebuild module dep's +depmod -a 2.6.32.45-ipfire >/dev/null 2>&1 +depmod -a 2.6.32.45-ipfire-pae >/dev/null 2>&1 +depmod -a 2.6.32.45-ipfire-xen >/dev/null 2>&1 + +#Rebuild initrd's because some compat-wireless modules are inside +/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45.img 2.6.32.45-ipfire +if [ -e /boot/ipfirerd-2.6.32.45-pae.img ]; then +/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45-pae.img 2.6.32.45-ipfire-pae +fi +if [ -e /boot/ipfirerd-2.6.32.45-xen.img ]; then +/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45-xen.img 2.6.32.45-ipfire-xen +fi + +sync + +# +#Finish +/etc/init.d/fireinfo start +sendprofile +#Don't report the exitcode last command +exit 0 diff --git a/config/rootfiles/oldcore/55/exclude b/config/rootfiles/oldcore/55/exclude new file mode 100644 index 0000000..7360266 --- /dev/null +++ b/config/rootfiles/oldcore/55/exclude @@ -0,0 +1,12 @@ +srv/web/ipfire/html/proxy.pac +etc/udev/rules.d/30-persistent-network.rules +etc/ipsec.conf +etc/ipsec.secrets +etc/ipsec.user.conf +etc/ipsec.user.secrets +var/updatecache +etc/localtime +var/ipfire/ovpn +etc/ssh/ssh_config +etc/ssh/sshd_config +etc/ssl/openssl.cnf diff --git a/config/rootfiles/oldcore/55/filelists/files b/config/rootfiles/oldcore/55/filelists/files new file mode 100644 index 0000000..409e5fe --- /dev/null +++ b/config/rootfiles/oldcore/55/filelists/files @@ -0,0 +1,2 @@ +etc/system-release +etc/issue diff --git a/config/rootfiles/oldcore/55/filelists/openssh b/config/rootfiles/oldcore/55/filelists/openssh new file mode 120000 index 0000000..d8c77fd --- /dev/null +++ b/config/rootfiles/oldcore/55/filelists/openssh @@ -0,0 +1 @@ +../../../common/openssh \ No newline at end of file diff --git a/config/rootfiles/oldcore/55/filelists/openssl b/config/rootfiles/oldcore/55/filelists/openssl new file mode 120000 index 0000000..e011a92 --- /dev/null +++ b/config/rootfiles/oldcore/55/filelists/openssl @@ -0,0 +1 @@ +../../../common/openssl \ No newline at end of file diff --git a/config/rootfiles/oldcore/55/meta b/config/rootfiles/oldcore/55/meta new file mode 100644 index 0000000..d547fa8 --- /dev/null +++ b/config/rootfiles/oldcore/55/meta @@ -0,0 +1 @@ +DEPS="" diff --git a/config/rootfiles/oldcore/55/update.sh b/config/rootfiles/oldcore/55/update.sh new file mode 100644 index 0000000..dbdd436 --- /dev/null +++ b/config/rootfiles/oldcore/55/update.sh @@ -0,0 +1,78 @@ +#!/bin/bash +############################################################################ +# # +# This file is part of the IPFire Firewall. # +# # +# IPFire is free software; you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation; either version 3 of the License, or # +# (at your option) any later version. # +# # +# IPFire is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with IPFire; if not, write to the Free Software # +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # +# # +# Copyright (C) 2012 IPFire-Team info@ipfire.org. # +# # +############################################################################ +# +. /opt/pakfire/lib/functions.sh +/usr/local/bin/backupctrl exclude >/dev/null 2>&1 + +# +# Remove old core updates from pakfire cache to save space... +core=55 +for (( i=1; i<=$core; i++ )) +do + rm -f /var/cache/pakfire/core-upgrade-*-$i.ipfire +done + +# +#Stop services +/etc/init.d/sshd stop +/etc/init.d/apache stop + +# +#Extract files +extract_files + +# +#Start services +/etc/init.d/apache start +/etc/init.d/sshd start + + +# +#Update Language cache +#perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang" + +#Rebuild module dep's +#depmod -a 2.6.32.45-ipfire >/dev/null 2>&1 +#depmod -a 2.6.32.45-ipfire-pae >/dev/null 2>&1 +#depmod -a 2.6.32.45-ipfire-xen >/dev/null 2>&1 + +#Rebuild initrd's because some compat-wireless modules are inside +#/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45.img 2.6.32.45-ipfire +#if [ -e /boot/ipfirerd-2.6.32.45-pae.img ]; then +#/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45-pae.img 2.6.32.45-ipfire-pae +#fi +#if [ -e /boot/ipfirerd-2.6.32.45-xen.img ]; then +#/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45-xen.img 2.6.32.45-ipfire-xen +#fi + +sync + +# This update need a reboot... +touch /var/run/need_reboot + +# +#Finish +/etc/init.d/fireinfo start +sendprofile +#Don't report the exitcode last command +exit 0 diff --git a/config/rootfiles/oldcore/56/exclude b/config/rootfiles/oldcore/56/exclude new file mode 100644 index 0000000..7360266 --- /dev/null +++ b/config/rootfiles/oldcore/56/exclude @@ -0,0 +1,12 @@ +srv/web/ipfire/html/proxy.pac +etc/udev/rules.d/30-persistent-network.rules +etc/ipsec.conf +etc/ipsec.secrets +etc/ipsec.user.conf +etc/ipsec.user.secrets +var/updatecache +etc/localtime +var/ipfire/ovpn +etc/ssh/ssh_config +etc/ssh/sshd_config +etc/ssl/openssl.cnf diff --git a/config/rootfiles/oldcore/56/filelists/Crypt-PasswdMD5 b/config/rootfiles/oldcore/56/filelists/Crypt-PasswdMD5 new file mode 120000 index 0000000..9a766e1 --- /dev/null +++ b/config/rootfiles/oldcore/56/filelists/Crypt-PasswdMD5 @@ -0,0 +1 @@ +../../../common/Crypt-PasswdMD5 \ No newline at end of file diff --git a/config/rootfiles/oldcore/56/filelists/files b/config/rootfiles/oldcore/56/filelists/files new file mode 100644 index 0000000..355107e --- /dev/null +++ b/config/rootfiles/oldcore/56/filelists/files @@ -0,0 +1,13 @@ +etc/system-release +etc/issue +etc/rc.d/init.d/mountfs +etc/rc.d/init.d/smartenabler +etc/rc.d/init.d/networking/red.up/10-static-routes +etc/rc.d/init.d/networking/red.down/10-static-routes +srv/web/ipfire/cgi-bin/chpasswd.cgi +srv/web/ipfire/cgi-bin/hardwaregraphs.cgi +srv/web/ipfire/cgi-bin/media.cgi +usr/local/bin/hddshutdown +usr/local/bin/makegraphs +usr/local/bin/openvpnctrl +usr/local/bin/readhash diff --git a/config/rootfiles/oldcore/56/filelists/openssh b/config/rootfiles/oldcore/56/filelists/openssh new file mode 120000 index 0000000..d8c77fd --- /dev/null +++ b/config/rootfiles/oldcore/56/filelists/openssh @@ -0,0 +1 @@ +../../../common/openssh \ No newline at end of file diff --git a/config/rootfiles/oldcore/56/filelists/openssl b/config/rootfiles/oldcore/56/filelists/openssl new file mode 120000 index 0000000..e011a92 --- /dev/null +++ b/config/rootfiles/oldcore/56/filelists/openssl @@ -0,0 +1 @@ +../../../common/openssl \ No newline at end of file diff --git a/config/rootfiles/oldcore/56/filelists/usb_modeswitch b/config/rootfiles/oldcore/56/filelists/usb_modeswitch new file mode 120000 index 0000000..acbab6f --- /dev/null +++ b/config/rootfiles/oldcore/56/filelists/usb_modeswitch @@ -0,0 +1 @@ +../../../common/usb_modeswitch \ No newline at end of file diff --git a/config/rootfiles/oldcore/56/filelists/usb_modeswitch_data b/config/rootfiles/oldcore/56/filelists/usb_modeswitch_data new file mode 120000 index 0000000..4cbce46 --- /dev/null +++ b/config/rootfiles/oldcore/56/filelists/usb_modeswitch_data @@ -0,0 +1 @@ +../../../common/usb_modeswitch_data \ No newline at end of file diff --git a/config/rootfiles/oldcore/56/meta b/config/rootfiles/oldcore/56/meta new file mode 100644 index 0000000..d547fa8 --- /dev/null +++ b/config/rootfiles/oldcore/56/meta @@ -0,0 +1 @@ +DEPS="" diff --git a/config/rootfiles/oldcore/56/update.sh b/config/rootfiles/oldcore/56/update.sh new file mode 100644 index 0000000..2655a40 --- /dev/null +++ b/config/rootfiles/oldcore/56/update.sh @@ -0,0 +1,82 @@ +#!/bin/bash +############################################################################ +# # +# This file is part of the IPFire Firewall. # +# # +# IPFire is free software; you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation; either version 3 of the License, or # +# (at your option) any later version. # +# # +# IPFire is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with IPFire; if not, write to the Free Software # +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # +# # +# Copyright (C) 2012 IPFire-Team info@ipfire.org. # +# # +############################################################################ +# +. /opt/pakfire/lib/functions.sh +/usr/local/bin/backupctrl exclude >/dev/null 2>&1 + +# +# Remove old core updates from pakfire cache to save space... +core=56 +for (( i=1; i<=$core; i++ )) +do + rm -f /var/cache/pakfire/core-upgrade-*-$i.ipfire +done + +# +#Stop services +/etc/init.d/sshd stop +/etc/init.d/apache stop + +# +#Extract files +extract_files + +# +#Edit baudrate in grub.conf and inittab +sed -i -e "s|38400|115200|g" /boot/grub/grub.conf +sed -i -e "s|38400|115200|g" /etc/inittab + +# +#Start services +/etc/init.d/apache start +/etc/init.d/sshd start + +# +#Update Language cache +#perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang" + +#Rebuild module dep's +#depmod -a 2.6.32.45-ipfire >/dev/null 2>&1 +#depmod -a 2.6.32.45-ipfire-pae >/dev/null 2>&1 +#depmod -a 2.6.32.45-ipfire-xen >/dev/null 2>&1 + +#Rebuild initrd's because some compat-wireless modules are inside +#/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45.img 2.6.32.45-ipfire +#if [ -e /boot/ipfirerd-2.6.32.45-pae.img ]; then +#/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45-pae.img 2.6.32.45-ipfire-pae +#fi +#if [ -e /boot/ipfirerd-2.6.32.45-xen.img ]; then +#/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45-xen.img 2.6.32.45-ipfire-xen +#fi + +sync + +# This update need a reboot... +touch /var/run/need_reboot + +# +#Finish +/etc/init.d/fireinfo start +sendprofile +#Don't report the exitcode last command +exit 0 diff --git a/config/rootfiles/oldcore/57/exclude b/config/rootfiles/oldcore/57/exclude new file mode 100644 index 0000000..7360266 --- /dev/null +++ b/config/rootfiles/oldcore/57/exclude @@ -0,0 +1,12 @@ +srv/web/ipfire/html/proxy.pac +etc/udev/rules.d/30-persistent-network.rules +etc/ipsec.conf +etc/ipsec.secrets +etc/ipsec.user.conf +etc/ipsec.user.secrets +var/updatecache +etc/localtime +var/ipfire/ovpn +etc/ssh/ssh_config +etc/ssh/sshd_config +etc/ssl/openssl.cnf diff --git a/config/rootfiles/oldcore/57/filelists/apache2 b/config/rootfiles/oldcore/57/filelists/apache2 new file mode 120000 index 0000000..eef95ef --- /dev/null +++ b/config/rootfiles/oldcore/57/filelists/apache2 @@ -0,0 +1 @@ +../../../common/apache2 \ No newline at end of file diff --git a/config/rootfiles/oldcore/57/filelists/files b/config/rootfiles/oldcore/57/filelists/files new file mode 100644 index 0000000..2f80b5f --- /dev/null +++ b/config/rootfiles/oldcore/57/filelists/files @@ -0,0 +1,5 @@ +etc/system-release +etc/issue +etc/rc.d/init.d/networking/red.up/10-static-routes +etc/rc.d/init.d/networking/red.down/10-static-routes +etc/rc.d/init.d/networking/any diff --git a/config/rootfiles/oldcore/57/filelists/php b/config/rootfiles/oldcore/57/filelists/php new file mode 120000 index 0000000..1ae48d7 --- /dev/null +++ b/config/rootfiles/oldcore/57/filelists/php @@ -0,0 +1 @@ +../../../common/php \ No newline at end of file diff --git a/config/rootfiles/oldcore/57/filelists/squid b/config/rootfiles/oldcore/57/filelists/squid new file mode 120000 index 0000000..2dc8372 --- /dev/null +++ b/config/rootfiles/oldcore/57/filelists/squid @@ -0,0 +1 @@ +../../../common/squid \ No newline at end of file diff --git a/config/rootfiles/oldcore/57/filelists/strongswan b/config/rootfiles/oldcore/57/filelists/strongswan new file mode 120000 index 0000000..90c727e --- /dev/null +++ b/config/rootfiles/oldcore/57/filelists/strongswan @@ -0,0 +1 @@ +../../../common/strongswan \ No newline at end of file diff --git a/config/rootfiles/oldcore/57/filelists/vim b/config/rootfiles/oldcore/57/filelists/vim new file mode 120000 index 0000000..9861317 --- /dev/null +++ b/config/rootfiles/oldcore/57/filelists/vim @@ -0,0 +1 @@ +../../../common/vim \ No newline at end of file diff --git a/config/rootfiles/oldcore/57/meta b/config/rootfiles/oldcore/57/meta new file mode 100644 index 0000000..d547fa8 --- /dev/null +++ b/config/rootfiles/oldcore/57/meta @@ -0,0 +1 @@ +DEPS="" diff --git a/config/rootfiles/oldcore/57/update.sh b/config/rootfiles/oldcore/57/update.sh new file mode 100644 index 0000000..177bf72 --- /dev/null +++ b/config/rootfiles/oldcore/57/update.sh @@ -0,0 +1,81 @@ +#!/bin/bash +############################################################################ +# # +# This file is part of the IPFire Firewall. # +# # +# IPFire is free software; you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation; either version 3 of the License, or # +# (at your option) any later version. # +# # +# IPFire is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with IPFire; if not, write to the Free Software # +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # +# # +# Copyright (C) 2012 IPFire-Team info@ipfire.org. # +# # +############################################################################ +# +. /opt/pakfire/lib/functions.sh +/usr/local/bin/backupctrl exclude >/dev/null 2>&1 + +# +# Remove old core updates from pakfire cache to save space... +core=57 +for (( i=1; i<=$core; i++ )) +do + rm -f /var/cache/pakfire/core-upgrade-*-$i.ipfire +done + +# +#Stop services +/etc/init.d/squid stop +/etc/init.d/apache stop +/etc/init.d/ipsec stop + +# +#Extract files +extract_files + +# +#Start services +/etc/init.d/squid start +/etc/init.d/apache start +if [ `grep "ENABLED=on" /var/ipfire/vpn/settings` ]; then + /etc/init.d/ipsec start +fi + +# +#Update Language cache +#perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang" + +#Rebuild module dep's +#depmod -a 2.6.32.45-ipfire >/dev/null 2>&1 +#depmod -a 2.6.32.45-ipfire-pae >/dev/null 2>&1 +#depmod -a 2.6.32.45-ipfire-xen >/dev/null 2>&1 + +#Rebuild initrd's because some compat-wireless modules are inside +#/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45.img 2.6.32.45-ipfire +#if [ -e /boot/ipfirerd-2.6.32.45-pae.img ]; then +#/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45-pae.img 2.6.32.45-ipfire-pae +#fi +#if [ -e /boot/ipfirerd-2.6.32.45-xen.img ]; then +#/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45-xen.img 2.6.32.45-ipfire-xen +#fi + +sync + +# This update need a reboot... +#touch /var/run/need_reboot + +# +#Finish +/etc/init.d/fireinfo start +sendprofile +#Don't report the exitcode last command +exit 0 diff --git a/config/rootfiles/oldcore/58/exclude b/config/rootfiles/oldcore/58/exclude new file mode 100644 index 0000000..7360266 --- /dev/null +++ b/config/rootfiles/oldcore/58/exclude @@ -0,0 +1,12 @@ +srv/web/ipfire/html/proxy.pac +etc/udev/rules.d/30-persistent-network.rules +etc/ipsec.conf +etc/ipsec.secrets +etc/ipsec.user.conf +etc/ipsec.user.secrets +var/updatecache +etc/localtime +var/ipfire/ovpn +etc/ssh/ssh_config +etc/ssh/sshd_config +etc/ssl/openssl.cnf diff --git a/config/rootfiles/oldcore/58/filelists/GeoIP b/config/rootfiles/oldcore/58/filelists/GeoIP new file mode 100644 index 0000000..0258236 --- /dev/null +++ b/config/rootfiles/oldcore/58/filelists/GeoIP @@ -0,0 +1 @@ +usr/local/share/GeoIP/GeoIP.dat diff --git a/config/rootfiles/oldcore/58/filelists/Net-Telnet b/config/rootfiles/oldcore/58/filelists/Net-Telnet new file mode 120000 index 0000000..66ca926 --- /dev/null +++ b/config/rootfiles/oldcore/58/filelists/Net-Telnet @@ -0,0 +1 @@ +../../../common/Net-Telnet \ No newline at end of file diff --git a/config/rootfiles/oldcore/58/filelists/armv5tel/cryptodev b/config/rootfiles/oldcore/58/filelists/armv5tel/cryptodev new file mode 100644 index 0000000..6870588 --- /dev/null +++ b/config/rootfiles/oldcore/58/filelists/armv5tel/cryptodev @@ -0,0 +1,2 @@ +lib/modules/2.6.32.45-ipfire-versatile/extra/cryptodev.ko +lib/modules/2.6.32.45-ipfire-kirkwood/extra/cryptodev.ko diff --git a/config/rootfiles/oldcore/58/filelists/files b/config/rootfiles/oldcore/58/filelists/files new file mode 100644 index 0000000..047127e --- /dev/null +++ b/config/rootfiles/oldcore/58/filelists/files @@ -0,0 +1,7 @@ +etc/system-release +etc/issue +etc/vimrc +srv/web/ipfire/cgi-bin/index.cgi +srv/web/ipfire/cgi-bin/ovpnmain.cgi +var/ipfire/general-functions.pl +var/ipfire/langs diff --git a/config/rootfiles/oldcore/58/filelists/fireinfo b/config/rootfiles/oldcore/58/filelists/fireinfo new file mode 120000 index 0000000..c461155 --- /dev/null +++ b/config/rootfiles/oldcore/58/filelists/fireinfo @@ -0,0 +1 @@ +../../../common/fireinfo \ No newline at end of file diff --git a/config/rootfiles/oldcore/58/filelists/hwdata b/config/rootfiles/oldcore/58/filelists/hwdata new file mode 100644 index 0000000..5a9672f --- /dev/null +++ b/config/rootfiles/oldcore/58/filelists/hwdata @@ -0,0 +1,2 @@ +usr/share/hwdata/pci.ids +usr/share/hwdata/usb.ids diff --git a/config/rootfiles/oldcore/58/filelists/i586/cryptodev b/config/rootfiles/oldcore/58/filelists/i586/cryptodev new file mode 100644 index 0000000..da29a79 --- /dev/null +++ b/config/rootfiles/oldcore/58/filelists/i586/cryptodev @@ -0,0 +1,3 @@ +lib/modules/2.6.32.45-ipfire/extra/cryptodev.ko +lib/modules/2.6.32.45-ipfire-pae/extra/cryptodev.ko +lib/modules/2.6.32.45-ipfire-xen/extra/cryptodev.ko diff --git a/config/rootfiles/oldcore/58/filelists/libpng b/config/rootfiles/oldcore/58/filelists/libpng new file mode 120000 index 0000000..8ef96e2 --- /dev/null +++ b/config/rootfiles/oldcore/58/filelists/libpng @@ -0,0 +1 @@ +../../../common/libpng \ No newline at end of file diff --git a/config/rootfiles/oldcore/58/filelists/openssh b/config/rootfiles/oldcore/58/filelists/openssh new file mode 120000 index 0000000..d8c77fd --- /dev/null +++ b/config/rootfiles/oldcore/58/filelists/openssh @@ -0,0 +1 @@ +../../../common/openssh \ No newline at end of file diff --git a/config/rootfiles/oldcore/58/filelists/openssl b/config/rootfiles/oldcore/58/filelists/openssl new file mode 120000 index 0000000..e011a92 --- /dev/null +++ b/config/rootfiles/oldcore/58/filelists/openssl @@ -0,0 +1 @@ +../../../common/openssl \ No newline at end of file diff --git a/config/rootfiles/oldcore/58/filelists/openvpn b/config/rootfiles/oldcore/58/filelists/openvpn new file mode 120000 index 0000000..493f3f7 --- /dev/null +++ b/config/rootfiles/oldcore/58/filelists/openvpn @@ -0,0 +1 @@ +../../../common/openvpn \ No newline at end of file diff --git a/config/rootfiles/oldcore/58/filelists/strongswan b/config/rootfiles/oldcore/58/filelists/strongswan new file mode 120000 index 0000000..90c727e --- /dev/null +++ b/config/rootfiles/oldcore/58/filelists/strongswan @@ -0,0 +1 @@ +../../../common/strongswan \ No newline at end of file diff --git a/config/rootfiles/oldcore/58/filelists/usb_modeswitch b/config/rootfiles/oldcore/58/filelists/usb_modeswitch new file mode 120000 index 0000000..acbab6f --- /dev/null +++ b/config/rootfiles/oldcore/58/filelists/usb_modeswitch @@ -0,0 +1 @@ +../../../common/usb_modeswitch \ No newline at end of file diff --git a/config/rootfiles/oldcore/58/meta b/config/rootfiles/oldcore/58/meta new file mode 100644 index 0000000..d547fa8 --- /dev/null +++ b/config/rootfiles/oldcore/58/meta @@ -0,0 +1 @@ +DEPS="" diff --git a/config/rootfiles/oldcore/58/update.sh b/config/rootfiles/oldcore/58/update.sh new file mode 100644 index 0000000..ccec4b0 --- /dev/null +++ b/config/rootfiles/oldcore/58/update.sh @@ -0,0 +1,84 @@ +#!/bin/bash +############################################################################ +# # +# This file is part of the IPFire Firewall. # +# # +# IPFire is free software; you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation; either version 3 of the License, or # +# (at your option) any later version. # +# # +# IPFire is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with IPFire; if not, write to the Free Software # +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # +# # +# Copyright (C) 2012 IPFire-Team info@ipfire.org. # +# # +############################################################################ +# +. /opt/pakfire/lib/functions.sh +/usr/local/bin/backupctrl exclude >/dev/null 2>&1 + +# +# Remove old core updates from pakfire cache to save space... +core=58 +for (( i=1; i<=$core; i++ )) +do + rm -f /var/cache/pakfire/core-upgrade-*-$i.ipfire +done + +# +#Stop services +/etc/init.d/ipsec stop + +# +#Extract files +extract_files + +# +#Start services +if [ `grep "ENABLED=on" /var/ipfire/vpn/settings` ]; then + /etc/init.d/ipsec start +fi + +# +#Update Language cache +perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang" + +#Rebuild module dep's +arch=`uname -m` +if [ ${arch::3} == "arm" ]; then + depmod -a 2.6.32.45-ipfire-versatile >/dev/null 2>&1 + depmod -a 2.6.32.45-ipfire-kirkwood >/dev/null 2>&1 +else + depmod -a 2.6.32.45-ipfire >/dev/null 2>&1 + depmod -a 2.6.32.45-ipfire-pae >/dev/null 2>&1 + depmod -a 2.6.32.45-ipfire-xen >/dev/null 2>&1 +fi + + +#Rebuild initrd's because some compat-wireless modules are inside +#/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45.img 2.6.32.45-ipfire +#if [ -e /boot/ipfirerd-2.6.32.45-pae.img ]; then +#/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45-pae.img 2.6.32.45-ipfire-pae +#fi +#if [ -e /boot/ipfirerd-2.6.32.45-xen.img ]; then +#/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45-xen.img 2.6.32.45-ipfire-xen +#fi + +sync + +# This update need a reboot... +touch /var/run/need_reboot + +# +#Finish +/etc/init.d/fireinfo start +sendprofile +#Don't report the exitcode last command +exit 0 diff --git a/config/rootfiles/oldcore/59/exclude b/config/rootfiles/oldcore/59/exclude new file mode 100644 index 0000000..7360266 --- /dev/null +++ b/config/rootfiles/oldcore/59/exclude @@ -0,0 +1,12 @@ +srv/web/ipfire/html/proxy.pac +etc/udev/rules.d/30-persistent-network.rules +etc/ipsec.conf +etc/ipsec.secrets +etc/ipsec.user.conf +etc/ipsec.user.secrets +var/updatecache +etc/localtime +var/ipfire/ovpn +etc/ssh/ssh_config +etc/ssh/sshd_config +etc/ssl/openssl.cnf diff --git a/config/rootfiles/oldcore/59/filelists/GeoIP b/config/rootfiles/oldcore/59/filelists/GeoIP new file mode 100644 index 0000000..0258236 --- /dev/null +++ b/config/rootfiles/oldcore/59/filelists/GeoIP @@ -0,0 +1 @@ +usr/local/share/GeoIP/GeoIP.dat diff --git a/config/rootfiles/oldcore/59/filelists/Net-Telnet b/config/rootfiles/oldcore/59/filelists/Net-Telnet new file mode 120000 index 0000000..66ca926 --- /dev/null +++ b/config/rootfiles/oldcore/59/filelists/Net-Telnet @@ -0,0 +1 @@ +../../../common/Net-Telnet \ No newline at end of file diff --git a/config/rootfiles/oldcore/59/filelists/files b/config/rootfiles/oldcore/59/filelists/files new file mode 100644 index 0000000..fef386b --- /dev/null +++ b/config/rootfiles/oldcore/59/filelists/files @@ -0,0 +1,7 @@ +etc/system-release +etc/issue +srv/web/ipfire/cgi-bin/index.cgi +srv/web/ipfire/cgi-bin/ovpnmain.cgi +var/ipfire/general-functions.pl +var/ipfire/langs +var/ipfire/dhcpc/dhcpcd-hooks/10-mtu diff --git a/config/rootfiles/oldcore/59/filelists/openssh b/config/rootfiles/oldcore/59/filelists/openssh new file mode 120000 index 0000000..d8c77fd --- /dev/null +++ b/config/rootfiles/oldcore/59/filelists/openssh @@ -0,0 +1 @@ +../../../common/openssh \ No newline at end of file diff --git a/config/rootfiles/oldcore/59/filelists/openssl b/config/rootfiles/oldcore/59/filelists/openssl new file mode 120000 index 0000000..e011a92 --- /dev/null +++ b/config/rootfiles/oldcore/59/filelists/openssl @@ -0,0 +1 @@ +../../../common/openssl \ No newline at end of file diff --git a/config/rootfiles/oldcore/59/filelists/php b/config/rootfiles/oldcore/59/filelists/php new file mode 120000 index 0000000..1ae48d7 --- /dev/null +++ b/config/rootfiles/oldcore/59/filelists/php @@ -0,0 +1 @@ +../../../common/php \ No newline at end of file diff --git a/config/rootfiles/oldcore/59/filelists/python b/config/rootfiles/oldcore/59/filelists/python new file mode 120000 index 0000000..ffe6e2c --- /dev/null +++ b/config/rootfiles/oldcore/59/filelists/python @@ -0,0 +1 @@ +../../../common/python \ No newline at end of file diff --git a/config/rootfiles/oldcore/59/filelists/strongswan b/config/rootfiles/oldcore/59/filelists/strongswan new file mode 120000 index 0000000..90c727e --- /dev/null +++ b/config/rootfiles/oldcore/59/filelists/strongswan @@ -0,0 +1 @@ +../../../common/strongswan \ No newline at end of file diff --git a/config/rootfiles/oldcore/59/meta b/config/rootfiles/oldcore/59/meta new file mode 100644 index 0000000..d547fa8 --- /dev/null +++ b/config/rootfiles/oldcore/59/meta @@ -0,0 +1 @@ +DEPS="" diff --git a/config/rootfiles/oldcore/59/update.sh b/config/rootfiles/oldcore/59/update.sh new file mode 100644 index 0000000..2f1d865 --- /dev/null +++ b/config/rootfiles/oldcore/59/update.sh @@ -0,0 +1,86 @@ +#!/bin/bash +############################################################################ +# # +# This file is part of the IPFire Firewall. # +# # +# IPFire is free software; you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation; either version 3 of the License, or # +# (at your option) any later version. # +# # +# IPFire is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with IPFire; if not, write to the Free Software # +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # +# # +# Copyright (C) 2012 IPFire-Team info@ipfire.org. # +# # +############################################################################ +# +. /opt/pakfire/lib/functions.sh +/usr/local/bin/backupctrl exclude >/dev/null 2>&1 + +# +# Remove old core updates from pakfire cache to save space... +core=59 +for (( i=1; i<=$core; i++ )) +do + rm -f /var/cache/pakfire/core-upgrade-*-$i.ipfire +done + +# +#Stop services +/etc/init.d/ipsec stop +/etc/init.d/sshd stop + +# +#Extract files +extract_files + +# +#Start services +/etc/init.d/sshd start +if [ `grep "ENABLED=on" /var/ipfire/vpn/settings` ]; then + /etc/init.d/ipsec start +fi + +# +#Update Language cache +perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang" + +#Rebuild module dep's +#arch=`uname -m` +#if [ ${arch::3} == "arm" ]; then +# depmod -a 2.6.32.45-ipfire-versatile >/dev/null 2>&1 +# depmod -a 2.6.32.45-ipfire-kirkwood >/dev/null 2>&1 +#else +# depmod -a 2.6.32.45-ipfire >/dev/null 2>&1 +# depmod -a 2.6.32.45-ipfire-pae >/dev/null 2>&1 +# depmod -a 2.6.32.45-ipfire-xen >/dev/null 2>&1 +#fi + + +#Rebuild initrd's because some compat-wireless modules are inside +#/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45.img 2.6.32.45-ipfire +#if [ -e /boot/ipfirerd-2.6.32.45-pae.img ]; then +#/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45-pae.img 2.6.32.45-ipfire-pae +#fi +#if [ -e /boot/ipfirerd-2.6.32.45-xen.img ]; then +#/sbin/dracut --force --verbose /boot/ipfirerd-2.6.32.45-xen.img 2.6.32.45-ipfire-xen +#fi + +sync + +# This update need a reboot... +#touch /var/run/need_reboot + +# +#Finish +/etc/init.d/fireinfo start +sendprofile +#Don't report the exitcode last command +exit 0 diff --git a/config/rootfiles/packages/applejuice b/config/rootfiles/packages/applejuice deleted file mode 100644 index ca14dee..0000000 --- a/config/rootfiles/packages/applejuice +++ /dev/null @@ -1,141 +0,0 @@ -etc/httpd/conf/vhosts.d/phpaj.conf -etc/rc.d/init.d/applejuice -opt/applejuice -opt/applejuice/ajcore.jar -opt/applejuice/libajnetmask.so -srv/web/phpaj -srv/web/phpaj/export -srv/web/phpaj/export/Default.php -srv/web/phpaj/export/ajl.php -srv/web/phpaj/export/bb.php -srv/web/phpaj/export/html.php -srv/web/phpaj/index.php -srv/web/phpaj/language -srv/web/phpaj/language/deutsch.xml -srv/web/phpaj/language/english.xml -srv/web/phpaj/main -srv/web/phpaj/main/classes -srv/web/phpaj/main/classes/class_core.php -srv/web/phpaj/main/classes/class_downloads.php -srv/web/phpaj/main/classes/class_icons.php -srv/web/phpaj/main/classes/class_search.php -srv/web/phpaj/main/classes/class_server.php -srv/web/phpaj/main/classes/class_share.php -srv/web/phpaj/main/classes/class_uploads.php -srv/web/phpaj/main/directory.php -srv/web/phpaj/main/dl_parts.php -srv/web/phpaj/main/dl_users.php -srv/web/phpaj/main/downloads.php -srv/web/phpaj/main/extras.php -srv/web/phpaj/main/index.php -srv/web/phpaj/main/progressbar.php -srv/web/phpaj/main/search.php -srv/web/phpaj/main/server.php -srv/web/phpaj/main/settings.php -srv/web/phpaj/main/shareexport.php -srv/web/phpaj/main/sharefiles.php -srv/web/phpaj/main/shares.php -srv/web/phpaj/main/showparts.php -srv/web/phpaj/main/start.php -srv/web/phpaj/main/status.php -srv/web/phpaj/main/subs.php -srv/web/phpaj/main/top.php -srv/web/phpaj/main/uploads.php -srv/web/phpaj/minigui -srv/web/phpaj/minigui/downloads.php -srv/web/phpaj/minigui/index.php -srv/web/phpaj/minigui/minigui.php -srv/web/phpaj/plugins -srv/web/phpaj/plugins/ajl -srv/web/phpaj/plugins/ajl/ajl.php -srv/web/phpaj/plugins/ajl/icon.gif -srv/web/phpaj/plugins/ajl/info.php -srv/web/phpaj/plugins/register.php -srv/web/phpaj/plugins/sharestats -srv/web/phpaj/plugins/sharestats/info.php -srv/web/phpaj/plugins/sharestats/sharestats.php -srv/web/phpaj/plugins/versionchecker -srv/web/phpaj/plugins/versionchecker/info.php -srv/web/phpaj/plugins/versionchecker/versionchecker.php -srv/web/phpaj/plugins/wizard -srv/web/phpaj/plugins/wizard/icon.gif -srv/web/phpaj/plugins/wizard/info.php -srv/web/phpaj/plugins/wizard/wizard.php -srv/web/phpaj/plugins/wizard/wizard.xml -srv/web/phpaj/style -srv/web/phpaj/style/default -srv/web/phpaj/style/default/default_blue.css -srv/web/phpaj/style/default/default_green.css -srv/web/phpaj/style/default/default_grey.css -srv/web/phpaj/style/default/info.png -srv/web/phpaj/style/default/minus.png -srv/web/phpaj/style/default/os -srv/web/phpaj/style/default/os/bsd.png -srv/web/phpaj/style/default/os/linux.png -srv/web/phpaj/style/default/os/mac.png -srv/web/phpaj/style/default/os/na.png -srv/web/phpaj/style/default/os/netware.png -srv/web/phpaj/style/default/os/os2.png -srv/web/phpaj/style/default/os/solaris.png -srv/web/phpaj/style/default/os/win.png -srv/web/phpaj/style/default/plus.png -srv/web/phpaj/style/default/server -srv/web/phpaj/style/default/server/alt.gif -srv/web/phpaj/style/default/server/neu.gif -srv/web/phpaj/style/default/server/verbinde.gif -srv/web/phpaj/style/default/server/verbunden.gif -srv/web/phpaj/style/default/stop.png -srv/web/phpaj/style/default/tabs -srv/web/phpaj/style/default/tabs/download.gif -srv/web/phpaj/style/default/tabs/extras.gif -srv/web/phpaj/style/default/tabs/kill.gif -srv/web/phpaj/style/default/tabs/logout.gif -srv/web/phpaj/style/default/tabs/meinshare.gif -srv/web/phpaj/style/default/tabs/optionen.gif -srv/web/phpaj/style/default/tabs/server.gif -srv/web/phpaj/style/default/tabs/start.gif -srv/web/phpaj/style/default/tabs/suchen.gif -srv/web/phpaj/style/default/tabs/upload.gif -srv/web/phpaj/style/default/user -srv/web/phpaj/style/default/user/direct.png -srv/web/phpaj/style/default/user/indirect.png -srv/web/phpaj/style/default/user/tryindirect.png -srv/web/phpaj/style/default/user/unknown.png -srv/web/phpaj/style/default/warnung.gif -srv/web/phpaj/style/default/x.png -srv/web/phpaj/style/default_blue.php -srv/web/phpaj/style/default_green.php -srv/web/phpaj/style/default_grey.php -srv/web/phpaj/style/new -srv/web/phpaj/style/new.php -srv/web/phpaj/style/new/bg.png -srv/web/phpaj/style/new/new.css -srv/web/phpaj/style/tango -srv/web/phpaj/style/tango.php -srv/web/phpaj/style/tango/bg.png -srv/web/phpaj/style/tango/icons -srv/web/phpaj/style/tango/icons/direct.png -srv/web/phpaj/style/tango/icons/down.png -srv/web/phpaj/style/tango/icons/empty.png -srv/web/phpaj/style/tango/icons/extras.png -srv/web/phpaj/style/tango/icons/home.png -srv/web/phpaj/style/tango/icons/indirect.png -srv/web/phpaj/style/tango/icons/info.png -srv/web/phpaj/style/tango/icons/kill.png -srv/web/phpaj/style/tango/icons/logout.png -srv/web/phpaj/style/tango/icons/minus.png -srv/web/phpaj/style/tango/icons/plus.png -srv/web/phpaj/style/tango/icons/preferences.png -srv/web/phpaj/style/tango/icons/search.png -srv/web/phpaj/style/tango/icons/server.png -srv/web/phpaj/style/tango/icons/share.png -srv/web/phpaj/style/tango/icons/stop.png -srv/web/phpaj/style/tango/icons/up.png -srv/web/phpaj/style/tango/icons/warning.png -srv/web/phpaj/style/tango/icons/x.png -srv/web/phpaj/style/tango/tango.css -srv/web/phpaj/vars.php -usr/local/bin/applejuicectrl -var/ipfire/applejuice -var/ipfire/applejuice/settings -#usr/lib/libajnetmask.so diff --git a/config/rootfiles/packages/centerim b/config/rootfiles/packages/centerim deleted file mode 100644 index 26f9b48..0000000 --- a/config/rootfiles/packages/centerim +++ /dev/null @@ -1,10 +0,0 @@ -usr/bin/centerim -usr/bin/cicqconv -#usr/share/centerim -usr/share/centerim/email.wav -usr/share/centerim/msg.wav -usr/share/centerim/offline.wav -usr/share/centerim/online.wav -usr/share/centerim/sms.wav -usr/share/centerim/url.wav -#usr/share/man/man1/cicqconv.1 diff --git a/config/rootfiles/packages/dahdi b/config/rootfiles/packages/dahdi index 8e7b8d7..d3291b8 100644 --- a/config/rootfiles/packages/dahdi +++ b/config/rootfiles/packages/dahdi @@ -1,22 +1,26 @@ etc/dahdi -#etc/hotplug -#etc/hotplug/usb -etc/hotplug/usb/xpp_fxloader -etc/hotplug/usb/xpp_fxloader.usermap -etc/modprobe.d/dahdi -etc/modprobe.d/dahdi.blacklist +etc/modprobe.d/dahdi.blacklist.conf +etc/modprobe.d/dahdi.conf etc/rc.d/init.d/dahdi etc/rc.d/rc0.d/K30dahdi etc/rc.d/rc3.d/S15dahdi etc/rc.d/rc6.d/K30dahdi etc/udev/rules.d/dahdi.rules etc/udev/rules.d/xpp.rules +lib/firmware/.dahdi-fw-hx8-2.06 lib/firmware/.dahdi-fw-oct6114-064-1.05.01 lib/firmware/.dahdi-fw-oct6114-128-1.05.01 +lib/firmware/.dahdi-fw-oct6114-256-1.05.01 lib/firmware/.dahdi-fw-tc400m-MR6.12 +lib/firmware/.dahdi-fw-te820-1.76 +lib/firmware/.dahdi-fw-vpmoct032-1.12.0 +lib/firmware/dahdi-fw-hx8.bin lib/firmware/dahdi-fw-oct6114-064.bin lib/firmware/dahdi-fw-oct6114-128.bin +lib/firmware/dahdi-fw-oct6114-256.bin lib/firmware/dahdi-fw-tc400m.bin +lib/firmware/dahdi-fw-te820.bin +lib/firmware/dahdi-fw-vpmoct032.bin #usr/include/dahdi #usr/include/dahdi/dahdi_config.h #usr/include/dahdi/fasthdlc.h @@ -26,38 +30,47 @@ lib/firmware/dahdi-fw-tc400m.bin #usr/include/dahdi/wctdm_user.h #usr/lib/hotplug #usr/lib/hotplug/firmware -#usr/lib/hotplug/firmware/.dahdi-fw-oct6114-064-1.05.01 -#usr/lib/hotplug/firmware/.dahdi-fw-oct6114-128-1.05.01 -#usr/lib/hotplug/firmware/.dahdi-fw-tc400m-MR6.12 -#usr/lib/hotplug/firmware/dahdi-fw-oct6114-064.bin -#usr/lib/hotplug/firmware/dahdi-fw-oct6114-128.bin -#usr/lib/hotplug/firmware/dahdi-fw-tc400m.bin +usr/lib/hotplug/firmware/.dahdi-fw-hx8-2.06 +usr/lib/hotplug/firmware/.dahdi-fw-oct6114-064-1.05.01 +usr/lib/hotplug/firmware/.dahdi-fw-oct6114-128-1.05.01 +usr/lib/hotplug/firmware/.dahdi-fw-oct6114-256-1.05.01 +usr/lib/hotplug/firmware/.dahdi-fw-tc400m-MR6.12 +usr/lib/hotplug/firmware/.dahdi-fw-te820-1.76 +usr/lib/hotplug/firmware/.dahdi-fw-vpmoct032-1.12.0 +usr/lib/hotplug/firmware/dahdi-fw-hx8.bin +usr/lib/hotplug/firmware/dahdi-fw-oct6114-064.bin +usr/lib/hotplug/firmware/dahdi-fw-oct6114-128.bin +usr/lib/hotplug/firmware/dahdi-fw-oct6114-256.bin +usr/lib/hotplug/firmware/dahdi-fw-tc400m.bin +usr/lib/hotplug/firmware/dahdi-fw-te820.bin +usr/lib/hotplug/firmware/dahdi-fw-vpmoct032.bin #usr/lib/libtonezone.a -usr/lib/libtonezone.so +#usr/lib/libtonezone.so usr/lib/libtonezone.so.1 usr/lib/libtonezone.so.1.0 usr/lib/libtonezone.so.2 usr/lib/libtonezone.so.2.0 -#usr/lib/perl5/site_perl/5.12.3/Dahdi +usr/lib/perl5/site_perl/5.12.3/Dahdi usr/lib/perl5/site_perl/5.12.3/Dahdi.pm usr/lib/perl5/site_perl/5.12.3/Dahdi/Chans.pm -#usr/lib/perl5/site_perl/5.12.3/Dahdi/Config -#usr/lib/perl5/site_perl/5.12.3/Dahdi/Config/Gen +usr/lib/perl5/site_perl/5.12.3/Dahdi/Config +usr/lib/perl5/site_perl/5.12.3/Dahdi/Config/Gen usr/lib/perl5/site_perl/5.12.3/Dahdi/Config/Gen.pm usr/lib/perl5/site_perl/5.12.3/Dahdi/Config/Gen/Chandahdi.pm +usr/lib/perl5/site_perl/5.12.3/Dahdi/Config/Gen/Freepbxdb.pm usr/lib/perl5/site_perl/5.12.3/Dahdi/Config/Gen/Modules.pm usr/lib/perl5/site_perl/5.12.3/Dahdi/Config/Gen/System.pm usr/lib/perl5/site_perl/5.12.3/Dahdi/Config/Gen/Unicall.pm usr/lib/perl5/site_perl/5.12.3/Dahdi/Config/Gen/Users.pm usr/lib/perl5/site_perl/5.12.3/Dahdi/Config/Gen/Xpporder.pm usr/lib/perl5/site_perl/5.12.3/Dahdi/Config/Params.pm -#usr/lib/perl5/site_perl/5.12.3/Dahdi/Hardware +usr/lib/perl5/site_perl/5.12.3/Dahdi/Hardware usr/lib/perl5/site_perl/5.12.3/Dahdi/Hardware.pm usr/lib/perl5/site_perl/5.12.3/Dahdi/Hardware/PCI.pm usr/lib/perl5/site_perl/5.12.3/Dahdi/Hardware/USB.pm usr/lib/perl5/site_perl/5.12.3/Dahdi/Span.pm usr/lib/perl5/site_perl/5.12.3/Dahdi/Utils.pm -#usr/lib/perl5/site_perl/5.12.3/Dahdi/Xpp +usr/lib/perl5/site_perl/5.12.3/Dahdi/Xpp usr/lib/perl5/site_perl/5.12.3/Dahdi/Xpp.pm usr/lib/perl5/site_perl/5.12.3/Dahdi/Xpp/Line.pm usr/lib/perl5/site_perl/5.12.3/Dahdi/Xpp/Mpp.pm @@ -70,6 +83,7 @@ usr/sbin/astribank_tool usr/sbin/dahdi_cfg usr/sbin/dahdi_genconf usr/sbin/dahdi_hardware +usr/sbin/dahdi_maint usr/sbin/dahdi_monitor usr/sbin/dahdi_registration usr/sbin/dahdi_scan @@ -83,22 +97,26 @@ usr/sbin/sethdlc usr/sbin/twinstar usr/sbin/xpp_blink usr/sbin/xpp_sync -#usr/share/dahdi +usr/share/dahdi usr/share/dahdi/FPGA_1141.hex usr/share/dahdi/FPGA_1151.hex +usr/share/dahdi/FPGA_1161.201.hex usr/share/dahdi/FPGA_1161.hex usr/share/dahdi/FPGA_FXS.hex usr/share/dahdi/PIC_TYPE_1.hex usr/share/dahdi/PIC_TYPE_2.hex usr/share/dahdi/PIC_TYPE_3.hex usr/share/dahdi/PIC_TYPE_4.hex +usr/share/dahdi/USB_FW.201.hex usr/share/dahdi/USB_FW.hex +usr/share/dahdi/USB_RECOV.hex usr/share/dahdi/XppConfig.pm usr/share/dahdi/astribank_hook usr/share/dahdi/init_card_1_30 usr/share/dahdi/init_card_2_30 usr/share/dahdi/init_card_3_30 usr/share/dahdi/init_card_4_30 +usr/share/dahdi/init_card_5_30 usr/share/dahdi/waitfor_xpds usr/share/dahdi/xpp_fxloader #usr/share/man/man8/astribank_allow.8 @@ -108,6 +126,7 @@ usr/share/dahdi/xpp_fxloader #usr/share/man/man8/dahdi_cfg.8 #usr/share/man/man8/dahdi_genconf.8 #usr/share/man/man8/dahdi_hardware.8 +#usr/share/man/man8/dahdi_maint.8 #usr/share/man/man8/dahdi_monitor.8 #usr/share/man/man8/dahdi_registration.8 #usr/share/man/man8/dahdi_scan.8 @@ -120,8 +139,12 @@ usr/share/dahdi/xpp_fxloader #usr/share/man/man8/xpp_blink.8 #usr/share/man/man8/xpp_sync.8 #var/ipfire/asterisk -#var/ipfire/asterisk/dahdi +var/ipfire/asterisk/dahdi var/ipfire/asterisk/dahdi/genconf_parameters var/ipfire/asterisk/dahdi/init.conf var/ipfire/asterisk/dahdi/modules var/ipfire/asterisk/dahdi/system.conf +var/ipfire/asterisk/hotplug +var/ipfire/asterisk/hotplug/usb +var/ipfire/asterisk/hotplug/usb/xpp_fxloader +var/ipfire/asterisk/hotplug/usb/xpp_fxloader.usermap diff --git a/config/rootfiles/packages/flac b/config/rootfiles/packages/flac new file mode 100644 index 0000000..d5ca870 --- /dev/null +++ b/config/rootfiles/packages/flac @@ -0,0 +1,314 @@ +usr/bin/flac +usr/bin/metaflac +#usr/include/FLAC +#usr/include/FLAC++ +#usr/include/FLAC++/all.h +#usr/include/FLAC++/decoder.h +#usr/include/FLAC++/encoder.h +#usr/include/FLAC++/export.h +#usr/include/FLAC++/metadata.h +#usr/include/FLAC/all.h +#usr/include/FLAC/assert.h +#usr/include/FLAC/callback.h +#usr/include/FLAC/export.h +#usr/include/FLAC/format.h +#usr/include/FLAC/metadata.h +#usr/include/FLAC/ordinals.h +#usr/include/FLAC/stream_decoder.h +#usr/include/FLAC/stream_encoder.h +#usr/lib/libFLAC++.a +#usr/lib/libFLAC++.la +#usr/lib/libFLAC++.so +usr/lib/libFLAC++.so.6 +usr/lib/libFLAC++.so.6.2.0 +#usr/lib/libFLAC.a +#usr/lib/libFLAC.la +#usr/lib/libFLAC.so +usr/lib/libFLAC.so.8 +usr/lib/libFLAC.so.8.2.0 +#usr/lib/pkgconfig/flac++.pc +#usr/lib/pkgconfig/flac.pc +#usr/man/man1/flac.1 +#usr/man/man1/metaflac.1 +#usr/share/aclocal/libFLAC++.m4 +#usr/share/aclocal/libFLAC.m4 +#usr/share/doc/flac-1.2.1 +#usr/share/doc/flac-1.2.1/FLAC.tag +#usr/share/doc/flac-1.2.1/html +#usr/share/doc/flac-1.2.1/html/api +#usr/share/doc/flac-1.2.1/html/api/+_2all_8h-source.html +#usr/share/doc/flac-1.2.1/html/api/+_2export_8h-source.html +#usr/share/doc/flac-1.2.1/html/api/+_2export_8h.html +#usr/share/doc/flac-1.2.1/html/api/+_2metadata_8h-source.html +#usr/share/doc/flac-1.2.1/html/api/+_2metadata_8h.html +#usr/share/doc/flac-1.2.1/html/api/all_8h-source.html +#usr/share/doc/flac-1.2.1/html/api/annotated.html +#usr/share/doc/flac-1.2.1/html/api/assert_8h-source.html +#usr/share/doc/flac-1.2.1/html/api/callback_8h-source.html +#usr/share/doc/flac-1.2.1/html/api/callback_8h.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Decoder_1_1File-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Decoder_1_1File.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Decoder_1_1File.png +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Decoder_1_1Stream-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Decoder_1_1Stream.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Decoder_1_1Stream.png +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Decoder_1_1Stream_1_1State-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Decoder_1_1Stream_1_1State.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Encoder_1_1File-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Encoder_1_1File.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Encoder_1_1File.png +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Encoder_1_1Stream-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Encoder_1_1Stream.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Encoder_1_1Stream.png +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Encoder_1_1Stream_1_1State-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Encoder_1_1Stream_1_1State.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Application-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Application.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Application.png +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Chain-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Chain.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Chain_1_1Status-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Chain_1_1Status.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1CueSheet-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1CueSheet.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1CueSheet.png +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1CueSheet_1_1Track-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1CueSheet_1_1Track.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Iterator-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Iterator.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Padding-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Padding.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Padding.png +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Picture-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Picture.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Picture.png +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Prototype-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Prototype.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Prototype.png +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1SeekTable-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1SeekTable.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1SeekTable.png +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1SimpleIterator-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1SimpleIterator.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1SimpleIterator_1_1Status-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1SimpleIterator_1_1Status.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1StreamInfo-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1StreamInfo.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1StreamInfo.png +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Unknown-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Unknown.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Unknown.png +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1VorbisComment-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1VorbisComment.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1VorbisComment.png +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry.html +#usr/share/doc/flac-1.2.1/html/api/classes.html +#usr/share/doc/flac-1.2.1/html/api/decoder_8h-source.html +#usr/share/doc/flac-1.2.1/html/api/decoder_8h.html +#usr/share/doc/flac-1.2.1/html/api/dir_000000.html +#usr/share/doc/flac-1.2.1/html/api/dir_000001.html +#usr/share/doc/flac-1.2.1/html/api/dir_000002.html +#usr/share/doc/flac-1.2.1/html/api/dirs.html +#usr/share/doc/flac-1.2.1/html/api/doxygen.css +#usr/share/doc/flac-1.2.1/html/api/doxygen.png +#usr/share/doc/flac-1.2.1/html/api/encoder_8h-source.html +#usr/share/doc/flac-1.2.1/html/api/encoder_8h.html +#usr/share/doc/flac-1.2.1/html/api/export_8h-source.html +#usr/share/doc/flac-1.2.1/html/api/export_8h.html +#usr/share/doc/flac-1.2.1/html/api/files.html +#usr/share/doc/flac-1.2.1/html/api/format_8h-source.html +#usr/share/doc/flac-1.2.1/html/api/format_8h.html +#usr/share/doc/flac-1.2.1/html/api/functions.html +#usr/share/doc/flac-1.2.1/html/api/functions_func.html +#usr/share/doc/flac-1.2.1/html/api/functions_vars.html +#usr/share/doc/flac-1.2.1/html/api/globals.html +#usr/share/doc/flac-1.2.1/html/api/globals_0x66.html +#usr/share/doc/flac-1.2.1/html/api/globals_0x67.html +#usr/share/doc/flac-1.2.1/html/api/globals_defs.html +#usr/share/doc/flac-1.2.1/html/api/globals_enum.html +#usr/share/doc/flac-1.2.1/html/api/globals_eval.html +#usr/share/doc/flac-1.2.1/html/api/globals_func.html +#usr/share/doc/flac-1.2.1/html/api/globals_type.html +#usr/share/doc/flac-1.2.1/html/api/globals_vars.html +#usr/share/doc/flac-1.2.1/html/api/group__flac.html +#usr/share/doc/flac-1.2.1/html/api/group__flac__callbacks.html +#usr/share/doc/flac-1.2.1/html/api/group__flac__decoder.html +#usr/share/doc/flac-1.2.1/html/api/group__flac__encoder.html +#usr/share/doc/flac-1.2.1/html/api/group__flac__export.html +#usr/share/doc/flac-1.2.1/html/api/group__flac__format.html +#usr/share/doc/flac-1.2.1/html/api/group__flac__metadata.html +#usr/share/doc/flac-1.2.1/html/api/group__flac__metadata__level0.html +#usr/share/doc/flac-1.2.1/html/api/group__flac__metadata__level1.html +#usr/share/doc/flac-1.2.1/html/api/group__flac__metadata__level2.html +#usr/share/doc/flac-1.2.1/html/api/group__flac__metadata__object.html +#usr/share/doc/flac-1.2.1/html/api/group__flac__stream__decoder.html +#usr/share/doc/flac-1.2.1/html/api/group__flac__stream__encoder.html +#usr/share/doc/flac-1.2.1/html/api/group__flacpp.html +#usr/share/doc/flac-1.2.1/html/api/group__flacpp__decoder.html +#usr/share/doc/flac-1.2.1/html/api/group__flacpp__encoder.html +#usr/share/doc/flac-1.2.1/html/api/group__flacpp__export.html +#usr/share/doc/flac-1.2.1/html/api/group__flacpp__metadata.html +#usr/share/doc/flac-1.2.1/html/api/group__flacpp__metadata__level0.html +#usr/share/doc/flac-1.2.1/html/api/group__flacpp__metadata__level1.html +#usr/share/doc/flac-1.2.1/html/api/group__flacpp__metadata__level2.html +#usr/share/doc/flac-1.2.1/html/api/group__flacpp__metadata__object.html +#usr/share/doc/flac-1.2.1/html/api/group__porting.html +#usr/share/doc/flac-1.2.1/html/api/group__porting__1__1__2__to__1__1__3.html +#usr/share/doc/flac-1.2.1/html/api/group__porting__1__1__3__to__1__1__4.html +#usr/share/doc/flac-1.2.1/html/api/group__porting__1__1__4__to__1__2__0.html +#usr/share/doc/flac-1.2.1/html/api/hierarchy.html +#usr/share/doc/flac-1.2.1/html/api/index.html +#usr/share/doc/flac-1.2.1/html/api/metadata_8h-source.html +#usr/share/doc/flac-1.2.1/html/api/metadata_8h.html +#usr/share/doc/flac-1.2.1/html/api/modules.html +#usr/share/doc/flac-1.2.1/html/api/ordinals_8h-source.html +#usr/share/doc/flac-1.2.1/html/api/stream__decoder_8h-source.html +#usr/share/doc/flac-1.2.1/html/api/stream__decoder_8h.html +#usr/share/doc/flac-1.2.1/html/api/stream__encoder_8h-source.html +#usr/share/doc/flac-1.2.1/html/api/stream__encoder_8h.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____EntropyCodingMethod-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____EntropyCodingMethod.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____EntropyCodingMethod__PartitionedRice-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____EntropyCodingMethod__PartitionedRice.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____EntropyCodingMethod__PartitionedRiceContents-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____EntropyCodingMethod__PartitionedRiceContents.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____Frame-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____Frame.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____FrameFooter-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____FrameFooter.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____FrameHeader-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____FrameHeader.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____IOCallbacks-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____IOCallbacks.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamDecoder-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamDecoder.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamEncoder-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamEncoder.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__Application-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__Application.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__CueSheet-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__CueSheet.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__CueSheet__Index-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__CueSheet__Index.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__CueSheet__Track-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__CueSheet__Track.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__Padding-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__Padding.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__Picture-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__Picture.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__SeekPoint-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__SeekPoint.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__SeekTable-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__SeekTable.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__StreamInfo-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__StreamInfo.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__Unknown-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__Unknown.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__VorbisComment-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__VorbisComment.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__VorbisComment__Entry-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__VorbisComment__Entry.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe__Constant-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe__Constant.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe__Fixed-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe__Fixed.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe__LPC-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe__LPC.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe__Verbatim-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe__Verbatim.html +#usr/share/doc/flac-1.2.1/html/changelog.html +#usr/share/doc/flac-1.2.1/html/comparison.html +#usr/share/doc/flac-1.2.1/html/comparison__chopin_prelude_24.html +#usr/share/doc/flac-1.2.1/html/comparison__dream_theater_600.html +#usr/share/doc/flac-1.2.1/html/comparison__eddie_warner_titus.html +#usr/share/doc/flac-1.2.1/html/comparison__fanfare_de_l_eventail_de_jeanne.html +#usr/share/doc/flac-1.2.1/html/comparison__gloria_estefan_conga.html +#usr/share/doc/flac-1.2.1/html/comparison__hand_in_my_pocket.html +#usr/share/doc/flac-1.2.1/html/comparison__l_sub_raga_sivapriya.html +#usr/share/doc/flac-1.2.1/html/comparison__laetatus_sum.html +#usr/share/doc/flac-1.2.1/html/comparison__mummified_in_barbed_wire.html +#usr/share/doc/flac-1.2.1/html/comparison__prokofiev_pcon3_3.html +#usr/share/doc/flac-1.2.1/html/comparison__ravel_sq4_4.html +#usr/share/doc/flac-1.2.1/html/comparison__scarlatti_k42.html +#usr/share/doc/flac-1.2.1/html/comparison__tool_forty_six_and_2.html +#usr/share/doc/flac-1.2.1/html/comparison__white_room.html +#usr/share/doc/flac-1.2.1/html/comparison_all_cpudectime.html +#usr/share/doc/flac-1.2.1/html/comparison_all_cpuenctime.html +#usr/share/doc/flac-1.2.1/html/comparison_all_procdectime.html +#usr/share/doc/flac-1.2.1/html/comparison_all_procenctime.html +#usr/share/doc/flac-1.2.1/html/comparison_all_ratio.html +#usr/share/doc/flac-1.2.1/html/developers.html +#usr/share/doc/flac-1.2.1/html/documentation.html +#usr/share/doc/flac-1.2.1/html/documentation_bugs.html +#usr/share/doc/flac-1.2.1/html/documentation_example_code.html +#usr/share/doc/flac-1.2.1/html/documentation_format_overview.html +#usr/share/doc/flac-1.2.1/html/documentation_tasks.html +#usr/share/doc/flac-1.2.1/html/documentation_tools.html +#usr/share/doc/flac-1.2.1/html/documentation_tools_flac.html +#usr/share/doc/flac-1.2.1/html/documentation_tools_metaflac.html +#usr/share/doc/flac-1.2.1/html/documentation_tools_plugins.html +#usr/share/doc/flac-1.2.1/html/download.html +#usr/share/doc/flac-1.2.1/html/faq.html +#usr/share/doc/flac-1.2.1/html/favicon.ico +#usr/share/doc/flac-1.2.1/html/features.html +#usr/share/doc/flac-1.2.1/html/flac.css +#usr/share/doc/flac-1.2.1/html/format.html +#usr/share/doc/flac-1.2.1/html/id.html +#usr/share/doc/flac-1.2.1/html/images +#usr/share/doc/flac-1.2.1/html/images/1x1.gif +#usr/share/doc/flac-1.2.1/html/images/cafebug.gif +#usr/share/doc/flac-1.2.1/html/images/hw +#usr/share/doc/flac-1.2.1/html/images/hw/Blackbird_Front_low3_325x87.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/MS300frontsmall_270x108.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/MediaBox_Frt_170x325.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/SB_Hero_Black_325x182.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/Sooloos-ControlOne_325x328.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/Z500_front_325x94.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/a2_01_325x252.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/arcus_325x135.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/bmp-1430_325x241.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/cs505_front_lrg_325x113.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/enus_3-4lft-hires_product_eva8000_325x127.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/escient_ProductLine_325x163.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/hifidelio_bl_front_Z_RGB_325x163.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/i-station-mini-dx_325x237.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/iwod-g10_325x257.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/knc_hr-2800_325x209.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/mediaready_prodmain_MRMCa_325x232.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/meizu_m6_325x206.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/musica_artwork_325x90.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/neodigits_x5000_325x124.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/onda-vx737_325x240.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/request_n_front_325x103.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/rio_karma_279x254.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/sonos_family_RGB_325x200.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/teclast-tl29_325x244.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/transporter_hero_grey_325x208.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/tvix-4000_325x204.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/vibez_nofm_combi_black_b_325x220.jpg +#usr/share/doc/flac-1.2.1/html/images/logo100.gif +#usr/share/doc/flac-1.2.1/html/images/logo130.gif +#usr/share/doc/flac-1.2.1/html/index.html +#usr/share/doc/flac-1.2.1/html/itunes.html +#usr/share/doc/flac-1.2.1/html/license.html +#usr/share/doc/flac-1.2.1/html/links.html +#usr/share/doc/flac-1.2.1/html/news.html +#usr/share/doc/flac-1.2.1/html/ogg_mapping.html +#usr/share/doc/flac-1.2.1/html/ru +#usr/share/doc/flac-1.2.1/html/ru/authors.html +#usr/share/doc/flac-1.2.1/html/ru/comparison.html +#usr/share/doc/flac-1.2.1/html/ru/developers.html +#usr/share/doc/flac-1.2.1/html/ru/documentation.html +#usr/share/doc/flac-1.2.1/html/ru/download.html +#usr/share/doc/flac-1.2.1/html/ru/features.html +#usr/share/doc/flac-1.2.1/html/ru/format.html +#usr/share/doc/flac-1.2.1/html/ru/goals.html +#usr/share/doc/flac-1.2.1/html/ru/id.html +#usr/share/doc/flac-1.2.1/html/ru/index.html +#usr/share/doc/flac-1.2.1/html/ru/links.html +#usr/share/doc/flac-1.2.1/html/ru/news.html diff --git a/config/rootfiles/packages/fontconfig b/config/rootfiles/packages/fontconfig deleted file mode 100644 index 6f3726f..0000000 --- a/config/rootfiles/packages/fontconfig +++ /dev/null @@ -1,423 +0,0 @@ -usr/bin/fc-cache -usr/bin/fc-cat -usr/bin/fc-list -usr/bin/fc-match -#etc/fonts -#etc/fonts/conf.avail -etc/fonts/conf.avail/10-autohint.conf -etc/fonts/conf.avail/10-no-sub-pixel.conf -etc/fonts/conf.avail/10-sub-pixel-bgr.conf -etc/fonts/conf.avail/10-sub-pixel-rgb.conf -etc/fonts/conf.avail/10-sub-pixel-vbgr.conf -etc/fonts/conf.avail/10-sub-pixel-vrgb.conf -etc/fonts/conf.avail/10-unhinted.conf -etc/fonts/conf.avail/20-fix-globaladvance.conf -etc/fonts/conf.avail/20-unhint-small-vera.conf -etc/fonts/conf.avail/25-unhint-nonlatin.conf -etc/fonts/conf.avail/30-metric-aliases.conf -etc/fonts/conf.avail/30-urw-aliases.conf -etc/fonts/conf.avail/40-nonlatin.conf -etc/fonts/conf.avail/45-latin.conf -etc/fonts/conf.avail/49-sansserif.conf -etc/fonts/conf.avail/50-user.conf -etc/fonts/conf.avail/51-local.conf -etc/fonts/conf.avail/60-latin.conf -etc/fonts/conf.avail/65-fonts-persian.conf -etc/fonts/conf.avail/65-khmer.conf -etc/fonts/conf.avail/65-nonlatin.conf -etc/fonts/conf.avail/69-unifont.conf -etc/fonts/conf.avail/70-no-bitmaps.conf -etc/fonts/conf.avail/70-yes-bitmaps.conf -etc/fonts/conf.avail/80-delicious.conf -etc/fonts/conf.avail/90-synthetic.conf -#etc/fonts/conf.d -etc/fonts/conf.d/20-fix-globaladvance.conf -etc/fonts/conf.d/20-unhint-small-vera.conf -etc/fonts/conf.d/30-metric-aliases.conf -etc/fonts/conf.d/30-urw-aliases.conf -etc/fonts/conf.d/40-nonlatin.conf -etc/fonts/conf.d/45-latin.conf -etc/fonts/conf.d/49-sansserif.conf -etc/fonts/conf.d/50-user.conf -etc/fonts/conf.d/51-local.conf -etc/fonts/conf.d/60-latin.conf -etc/fonts/conf.d/65-fonts-persian.conf -etc/fonts/conf.d/65-nonlatin.conf -etc/fonts/conf.d/69-unifont.conf -etc/fonts/conf.d/80-delicious.conf -etc/fonts/conf.d/90-synthetic.conf -#etc/fonts/conf.d/README -etc/fonts/fonts.conf -etc/fonts/fonts.dtd -#usr/include/fontconfig -#usr/include/fontconfig/fcfreetype.h -#usr/include/fontconfig/fcprivate.h -#usr/include/fontconfig/fontconfig.h -#usr/lib/libfontconfig.a -#usr/lib/libfontconfig.la -usr/lib/libfontconfig.so -usr/lib/libfontconfig.so.1 -usr/lib/libfontconfig.so.1.3.0 -usr/lib/pkgconfig/fontconfig.pc -usr/var/cache/fontconfig -#usr/share/doc/fontconfig -#usr/share/doc/fontconfig/fontconfig-devel -#usr/share/doc/fontconfig/fontconfig-devel.pdf -#usr/share/doc/fontconfig/fontconfig-devel.txt -#usr/share/doc/fontconfig/fontconfig-devel/index.html -#usr/share/doc/fontconfig/fontconfig-devel/r1034.html -#usr/share/doc/fontconfig/fontconfig-devel/r1056.html -#usr/share/doc/fontconfig/fontconfig-devel/r108.html -#usr/share/doc/fontconfig/fontconfig-devel/r1099.html -#usr/share/doc/fontconfig/fontconfig-devel/r1127.html -#usr/share/doc/fontconfig/fontconfig-devel/r1148.html -#usr/share/doc/fontconfig/fontconfig-devel/r1171.html -#usr/share/doc/fontconfig/fontconfig-devel/r1192.html -#usr/share/doc/fontconfig/fontconfig-devel/r1237.html -#usr/share/doc/fontconfig/fontconfig-devel/r1260.html -#usr/share/doc/fontconfig/fontconfig-devel/r1283.html -#usr/share/doc/fontconfig/fontconfig-devel/r129.html -#usr/share/doc/fontconfig/fontconfig-devel/r1309.html -#usr/share/doc/fontconfig/fontconfig-devel/r1336.html -#usr/share/doc/fontconfig/fontconfig-devel/r1367.html -#usr/share/doc/fontconfig/fontconfig-devel/r1389.html -#usr/share/doc/fontconfig/fontconfig-devel/r1412.html -#usr/share/doc/fontconfig/fontconfig-devel/r1434.html -#usr/share/doc/fontconfig/fontconfig-devel/r1460.html -#usr/share/doc/fontconfig/fontconfig-devel/r1482.html -#usr/share/doc/fontconfig/fontconfig-devel/r150.html -#usr/share/doc/fontconfig/fontconfig-devel/r1505.html -#usr/share/doc/fontconfig/fontconfig-devel/r1529.html -#usr/share/doc/fontconfig/fontconfig-devel/r1552.html -#usr/share/doc/fontconfig/fontconfig-devel/r1577.html -#usr/share/doc/fontconfig/fontconfig-devel/r1602.html -#usr/share/doc/fontconfig/fontconfig-devel/r1627.html -#usr/share/doc/fontconfig/fontconfig-devel/r1652.html -#usr/share/doc/fontconfig/fontconfig-devel/r1677.html -#usr/share/doc/fontconfig/fontconfig-devel/r1699.html -#usr/share/doc/fontconfig/fontconfig-devel/r171.html -#usr/share/doc/fontconfig/fontconfig-devel/r1724.html -#usr/share/doc/fontconfig/fontconfig-devel/r1749.html -#usr/share/doc/fontconfig/fontconfig-devel/r1774.html -#usr/share/doc/fontconfig/fontconfig-devel/r1801.html -#usr/share/doc/fontconfig/fontconfig-devel/r1829.html -#usr/share/doc/fontconfig/fontconfig-devel/r1858.html -#usr/share/doc/fontconfig/fontconfig-devel/r1883.html -#usr/share/doc/fontconfig/fontconfig-devel/r1905.html -#usr/share/doc/fontconfig/fontconfig-devel/r192.html -#usr/share/doc/fontconfig/fontconfig-devel/r1927.html -#usr/share/doc/fontconfig/fontconfig-devel/r1950.html -#usr/share/doc/fontconfig/fontconfig-devel/r1976.html -#usr/share/doc/fontconfig/fontconfig-devel/r2002.html -#usr/share/doc/fontconfig/fontconfig-devel/r2032.html -#usr/share/doc/fontconfig/fontconfig-devel/r2057.html -#usr/share/doc/fontconfig/fontconfig-devel/r2081.html -#usr/share/doc/fontconfig/fontconfig-devel/r2110.html -#usr/share/doc/fontconfig/fontconfig-devel/r213.html -#usr/share/doc/fontconfig/fontconfig-devel/r2131.html -#usr/share/doc/fontconfig/fontconfig-devel/r2155.html -#usr/share/doc/fontconfig/fontconfig-devel/r2178.html -#usr/share/doc/fontconfig/fontconfig-devel/r2201.html -#usr/share/doc/fontconfig/fontconfig-devel/r2227.html -#usr/share/doc/fontconfig/fontconfig-devel/r2256.html -#usr/share/doc/fontconfig/fontconfig-devel/r2286.html -#usr/share/doc/fontconfig/fontconfig-devel/r2316.html -#usr/share/doc/fontconfig/fontconfig-devel/r234.html -#usr/share/doc/fontconfig/fontconfig-devel/r2349.html -#usr/share/doc/fontconfig/fontconfig-devel/r2370.html -#usr/share/doc/fontconfig/fontconfig-devel/r2391.html -#usr/share/doc/fontconfig/fontconfig-devel/r2413.html -#usr/share/doc/fontconfig/fontconfig-devel/r2434.html -#usr/share/doc/fontconfig/fontconfig-devel/r2456.html -#usr/share/doc/fontconfig/fontconfig-devel/r2478.html -#usr/share/doc/fontconfig/fontconfig-devel/r2501.html -#usr/share/doc/fontconfig/fontconfig-devel/r2522.html -#usr/share/doc/fontconfig/fontconfig-devel/r2544.html -#usr/share/doc/fontconfig/fontconfig-devel/r2566.html -#usr/share/doc/fontconfig/fontconfig-devel/r258.html -#usr/share/doc/fontconfig/fontconfig-devel/r2588.html -#usr/share/doc/fontconfig/fontconfig-devel/r2609.html -#usr/share/doc/fontconfig/fontconfig-devel/r2631.html -#usr/share/doc/fontconfig/fontconfig-devel/r2655.html -#usr/share/doc/fontconfig/fontconfig-devel/r2676.html -#usr/share/doc/fontconfig/fontconfig-devel/r2698.html -#usr/share/doc/fontconfig/fontconfig-devel/r2721.html -#usr/share/doc/fontconfig/fontconfig-devel/r2744.html -#usr/share/doc/fontconfig/fontconfig-devel/r2767.html -#usr/share/doc/fontconfig/fontconfig-devel/r2788.html -#usr/share/doc/fontconfig/fontconfig-devel/r279.html -#usr/share/doc/fontconfig/fontconfig-devel/r2817.html -#usr/share/doc/fontconfig/fontconfig-devel/r2842.html -#usr/share/doc/fontconfig/fontconfig-devel/r2873.html -#usr/share/doc/fontconfig/fontconfig-devel/r2911.html -#usr/share/doc/fontconfig/fontconfig-devel/r2942.html -#usr/share/doc/fontconfig/fontconfig-devel/r2969.html -#usr/share/doc/fontconfig/fontconfig-devel/r2993.html -#usr/share/doc/fontconfig/fontconfig-devel/r301.html -#usr/share/doc/fontconfig/fontconfig-devel/r3021.html -#usr/share/doc/fontconfig/fontconfig-devel/r3045.html -#usr/share/doc/fontconfig/fontconfig-devel/r3069.html -#usr/share/doc/fontconfig/fontconfig-devel/r3094.html -#usr/share/doc/fontconfig/fontconfig-devel/r3118.html -#usr/share/doc/fontconfig/fontconfig-devel/r3142.html -#usr/share/doc/fontconfig/fontconfig-devel/r3164.html -#usr/share/doc/fontconfig/fontconfig-devel/r3192.html -#usr/share/doc/fontconfig/fontconfig-devel/r3213.html -#usr/share/doc/fontconfig/fontconfig-devel/r323.html -#usr/share/doc/fontconfig/fontconfig-devel/r3234.html -#usr/share/doc/fontconfig/fontconfig-devel/r3257.html -#usr/share/doc/fontconfig/fontconfig-devel/r3283.html -#usr/share/doc/fontconfig/fontconfig-devel/r3305.html -#usr/share/doc/fontconfig/fontconfig-devel/r3327.html -#usr/share/doc/fontconfig/fontconfig-devel/r3349.html -#usr/share/doc/fontconfig/fontconfig-devel/r3371.html -#usr/share/doc/fontconfig/fontconfig-devel/r3393.html -#usr/share/doc/fontconfig/fontconfig-devel/r3414.html -#usr/share/doc/fontconfig/fontconfig-devel/r3435.html -#usr/share/doc/fontconfig/fontconfig-devel/r344.html -#usr/share/doc/fontconfig/fontconfig-devel/r3460.html -#usr/share/doc/fontconfig/fontconfig-devel/r3496.html -#usr/share/doc/fontconfig/fontconfig-devel/r3518.html -#usr/share/doc/fontconfig/fontconfig-devel/r3553.html -#usr/share/doc/fontconfig/fontconfig-devel/r3581.html -#usr/share/doc/fontconfig/fontconfig-devel/r3607.html -#usr/share/doc/fontconfig/fontconfig-devel/r3629.html -#usr/share/doc/fontconfig/fontconfig-devel/r3656.html -#usr/share/doc/fontconfig/fontconfig-devel/r3683.html -#usr/share/doc/fontconfig/fontconfig-devel/r369.html -#usr/share/doc/fontconfig/fontconfig-devel/r3708.html -#usr/share/doc/fontconfig/fontconfig-devel/r3733.html -#usr/share/doc/fontconfig/fontconfig-devel/r3755.html -#usr/share/doc/fontconfig/fontconfig-devel/r3778.html -#usr/share/doc/fontconfig/fontconfig-devel/r3805.html -#usr/share/doc/fontconfig/fontconfig-devel/r3827.html -#usr/share/doc/fontconfig/fontconfig-devel/r3852.html -#usr/share/doc/fontconfig/fontconfig-devel/r3873.html -#usr/share/doc/fontconfig/fontconfig-devel/r3898.html -#usr/share/doc/fontconfig/fontconfig-devel/r3923.html -#usr/share/doc/fontconfig/fontconfig-devel/r3948.html -#usr/share/doc/fontconfig/fontconfig-devel/r397.html -#usr/share/doc/fontconfig/fontconfig-devel/r3973.html -#usr/share/doc/fontconfig/fontconfig-devel/r3999.html -#usr/share/doc/fontconfig/fontconfig-devel/r4021.html -#usr/share/doc/fontconfig/fontconfig-devel/r4043.html -#usr/share/doc/fontconfig/fontconfig-devel/r4065.html -#usr/share/doc/fontconfig/fontconfig-devel/r4090.html -#usr/share/doc/fontconfig/fontconfig-devel/r4119.html -#usr/share/doc/fontconfig/fontconfig-devel/r4144.html -#usr/share/doc/fontconfig/fontconfig-devel/r4176.html -#usr/share/doc/fontconfig/fontconfig-devel/r418.html -#usr/share/doc/fontconfig/fontconfig-devel/r4209.html -#usr/share/doc/fontconfig/fontconfig-devel/r4245.html -#usr/share/doc/fontconfig/fontconfig-devel/r4267.html -#usr/share/doc/fontconfig/fontconfig-devel/r4289.html -#usr/share/doc/fontconfig/fontconfig-devel/r4311.html -#usr/share/doc/fontconfig/fontconfig-devel/r4334.html -#usr/share/doc/fontconfig/fontconfig-devel/r4356.html -#usr/share/doc/fontconfig/fontconfig-devel/r4380.html -#usr/share/doc/fontconfig/fontconfig-devel/r4405.html -#usr/share/doc/fontconfig/fontconfig-devel/r4430.html -#usr/share/doc/fontconfig/fontconfig-devel/r4457.html -#usr/share/doc/fontconfig/fontconfig-devel/r446.html -#usr/share/doc/fontconfig/fontconfig-devel/r4484.html -#usr/share/doc/fontconfig/fontconfig-devel/r4509.html -#usr/share/doc/fontconfig/fontconfig-devel/r4530.html -#usr/share/doc/fontconfig/fontconfig-devel/r475.html -#usr/share/doc/fontconfig/fontconfig-devel/r570.html -#usr/share/doc/fontconfig/fontconfig-devel/r600.html -#usr/share/doc/fontconfig/fontconfig-devel/r707.html -#usr/share/doc/fontconfig/fontconfig-devel/r759.html -#usr/share/doc/fontconfig/fontconfig-devel/r782.html -#usr/share/doc/fontconfig/fontconfig-devel/r807.html -#usr/share/doc/fontconfig/fontconfig-devel/r828.html -#usr/share/doc/fontconfig/fontconfig-devel/r856.html -#usr/share/doc/fontconfig/fontconfig-devel/r878.html -#usr/share/doc/fontconfig/fontconfig-devel/r902.html -#usr/share/doc/fontconfig/fontconfig-devel/r923.html -#usr/share/doc/fontconfig/fontconfig-devel/r944.html -#usr/share/doc/fontconfig/fontconfig-devel/r967.html -#usr/share/doc/fontconfig/fontconfig-devel/r999.html -#usr/share/doc/fontconfig/fontconfig-devel/x102.html -#usr/share/doc/fontconfig/fontconfig-devel/x19.html -#usr/share/doc/fontconfig/fontconfig-devel/x31.html -#usr/share/doc/fontconfig/fontconfig-user.html -#usr/share/doc/fontconfig/fontconfig-user.pdf -#usr/share/doc/fontconfig/fontconfig-user.txt -#usr/share/man/man1/fc-cache.1 -#usr/share/man/man1/fc-cat.1 -#usr/share/man/man1/fc-list.1 -#usr/share/man/man1/fc-match.1 -#usr/share/man/man3/FcAtomicCreate.3 -#usr/share/man/man3/FcAtomicDeleteNew.3 -#usr/share/man/man3/FcAtomicDestroy.3 -#usr/share/man/man3/FcAtomicLock.3 -#usr/share/man/man3/FcAtomicNewFile.3 -#usr/share/man/man3/FcAtomicOrigFile.3 -#usr/share/man/man3/FcAtomicReplaceOrig.3 -#usr/share/man/man3/FcAtomicUnlock.3 -#usr/share/man/man3/FcBlanksAdd.3 -#usr/share/man/man3/FcBlanksCreate.3 -#usr/share/man/man3/FcBlanksDestroy.3 -#usr/share/man/man3/FcBlanksIsMember.3 -#usr/share/man/man3/FcCacheCopySet.3 -#usr/share/man/man3/FcCacheDir.3 -#usr/share/man/man3/FcCacheNumFont.3 -#usr/share/man/man3/FcCacheNumSubdir.3 -#usr/share/man/man3/FcCacheSubdir.3 -#usr/share/man/man3/FcCharSetAddChar.3 -#usr/share/man/man3/FcCharSetCopy.3 -#usr/share/man/man3/FcCharSetCount.3 -#usr/share/man/man3/FcCharSetCoverage.3 -#usr/share/man/man3/FcCharSetCreate.3 -#usr/share/man/man3/FcCharSetDestroy.3 -#usr/share/man/man3/FcCharSetEqual.3 -#usr/share/man/man3/FcCharSetFirstPage.3 -#usr/share/man/man3/FcCharSetHasChar.3 -#usr/share/man/man3/FcCharSetIntersect.3 -#usr/share/man/man3/FcCharSetIntersectCount.3 -#usr/share/man/man3/FcCharSetIsSubset.3 -#usr/share/man/man3/FcCharSetNew.3 -#usr/share/man/man3/FcCharSetNextPage.3 -#usr/share/man/man3/FcCharSetSubtract.3 -#usr/share/man/man3/FcCharSetSubtractCount.3 -#usr/share/man/man3/FcCharSetUnion.3 -#usr/share/man/man3/FcConfigAppFontAddDir.3 -#usr/share/man/man3/FcConfigAppFontAddFile.3 -#usr/share/man/man3/FcConfigAppFontClear.3 -#usr/share/man/man3/FcConfigBuildFonts.3 -#usr/share/man/man3/FcConfigCreate.3 -#usr/share/man/man3/FcConfigDestroy.3 -#usr/share/man/man3/FcConfigEnableHome.3 -#usr/share/man/man3/FcConfigFilename.3 -#usr/share/man/man3/FcConfigGetBlanks.3 -#usr/share/man/man3/FcConfigGetCache.3 -#usr/share/man/man3/FcConfigGetCacheDirs.3 -#usr/share/man/man3/FcConfigGetConfigDirs.3 -#usr/share/man/man3/FcConfigGetConfigFiles.3 -#usr/share/man/man3/FcConfigGetCurrent.3 -#usr/share/man/man3/FcConfigGetFontDirs.3 -#usr/share/man/man3/FcConfigGetFonts.3 -#usr/share/man/man3/FcConfigGetRescanInterval.3 -#usr/share/man/man3/FcConfigHome.3 -#usr/share/man/man3/FcConfigParseAndLoad.3 -#usr/share/man/man3/FcConfigSetCurrent.3 -#usr/share/man/man3/FcConfigSetRescanInterval.3 -#usr/share/man/man3/FcConfigSubstitute.3 -#usr/share/man/man3/FcConfigSubstituteWithPat.3 -#usr/share/man/man3/FcConfigUptoDate.3 -#usr/share/man/man3/FcDefaultSubstitute.3 -#usr/share/man/man3/FcDirCacheLoad.3 -#usr/share/man/man3/FcDirCacheLoadFile.3 -#usr/share/man/man3/FcDirCacheRead.3 -#usr/share/man/man3/FcDirCacheUnlink.3 -#usr/share/man/man3/FcDirCacheUnload.3 -#usr/share/man/man3/FcDirCacheValid.3 -#usr/share/man/man3/FcDirSave.3 -#usr/share/man/man3/FcDirScan.3 -#usr/share/man/man3/FcFileIsDir.3 -#usr/share/man/man3/FcFileScan.3 -#usr/share/man/man3/FcFini.3 -#usr/share/man/man3/FcFontList.3 -#usr/share/man/man3/FcFontMatch.3 -#usr/share/man/man3/FcFontRenderPrepare.3 -#usr/share/man/man3/FcFontSetAdd.3 -#usr/share/man/man3/FcFontSetCreate.3 -#usr/share/man/man3/FcFontSetDestroy.3 -#usr/share/man/man3/FcFontSetList.3 -#usr/share/man/man3/FcFontSetMatch.3 -#usr/share/man/man3/FcFontSetPrint.3 -#usr/share/man/man3/FcFontSetSort.3 -#usr/share/man/man3/FcFontSetSortDestroy.3 -#usr/share/man/man3/FcFontSort.3 -#usr/share/man/man3/FcFreeTypeCharIndex.3 -#usr/share/man/man3/FcFreeTypeCharSet.3 -#usr/share/man/man3/FcFreeTypeCharSetAndSpacing.3 -#usr/share/man/man3/FcFreeTypeQuery.3 -#usr/share/man/man3/FcFreeTypeQueryFace.3 -#usr/share/man/man3/FcGetLangs.3 -#usr/share/man/man3/FcGetVersion.3 -#usr/share/man/man3/FcInit.3 -#usr/share/man/man3/FcInitBringUptoDate.3 -#usr/share/man/man3/FcInitLoadConfig.3 -#usr/share/man/man3/FcInitLoadConfigAndFonts.3 -#usr/share/man/man3/FcInitReinitialize.3 -#usr/share/man/man3/FcIsLower.3 -#usr/share/man/man3/FcIsUpper.3 -#usr/share/man/man3/FcLangGetCharSet.3 -#usr/share/man/man3/FcLangSetAdd.3 -#usr/share/man/man3/FcLangSetCompare.3 -#usr/share/man/man3/FcLangSetContains.3 -#usr/share/man/man3/FcLangSetCopy.3 -#usr/share/man/man3/FcLangSetCreate.3 -#usr/share/man/man3/FcLangSetDestroy.3 -#usr/share/man/man3/FcLangSetEqual.3 -#usr/share/man/man3/FcLangSetHasLang.3 -#usr/share/man/man3/FcLangSetHash.3 -#usr/share/man/man3/FcMatrixCopy.3 -#usr/share/man/man3/FcMatrixEqual.3 -#usr/share/man/man3/FcMatrixInit.3 -#usr/share/man/man3/FcMatrixMultiply.3 -#usr/share/man/man3/FcMatrixRotate.3 -#usr/share/man/man3/FcMatrixScale.3 -#usr/share/man/man3/FcMatrixShear.3 -#usr/share/man/man3/FcNameConstant.3 -#usr/share/man/man3/FcNameGetConstant.3 -#usr/share/man/man3/FcNameGetObjectType.3 -#usr/share/man/man3/FcNameParse.3 -#usr/share/man/man3/FcNameRegisterConstants.3 -#usr/share/man/man3/FcNameRegisterObjectTypes.3 -#usr/share/man/man3/FcNameUnparse.3 -#usr/share/man/man3/FcNameUnregisterConstants.3 -#usr/share/man/man3/FcNameUnregisterObjectTypes.3 -#usr/share/man/man3/FcObjectSetAdd.3 -#usr/share/man/man3/FcObjectSetBuild.3 -#usr/share/man/man3/FcObjectSetCreate.3 -#usr/share/man/man3/FcObjectSetDestroy.3 -#usr/share/man/man3/FcPatternAdd-Type.3 -#usr/share/man/man3/FcPatternAdd.3 -#usr/share/man/man3/FcPatternAddWeak.3 -#usr/share/man/man3/FcPatternBuild.3 -#usr/share/man/man3/FcPatternCreate.3 -#usr/share/man/man3/FcPatternDel.3 -#usr/share/man/man3/FcPatternDestroy.3 -#usr/share/man/man3/FcPatternDuplicate.3 -#usr/share/man/man3/FcPatternEqual.3 -#usr/share/man/man3/FcPatternEqualSubset.3 -#usr/share/man/man3/FcPatternGet-Type.3 -#usr/share/man/man3/FcPatternGet.3 -#usr/share/man/man3/FcPatternHash.3 -#usr/share/man/man3/FcPatternPrint.3 -#usr/share/man/man3/FcPatternReference.3 -#usr/share/man/man3/FcPatternRemove.3 -#usr/share/man/man3/FcStrBasename.3 -#usr/share/man/man3/FcStrCmp.3 -#usr/share/man/man3/FcStrCmpIgnoreCase.3 -#usr/share/man/man3/FcStrCopy.3 -#usr/share/man/man3/FcStrCopyFilename.3 -#usr/share/man/man3/FcStrDowncase.3 -#usr/share/man/man3/FcStrFree.3 -#usr/share/man/man3/FcStrListCreate.3 -#usr/share/man/man3/FcStrListDone.3 -#usr/share/man/man3/FcStrListNext.3 -#usr/share/man/man3/FcStrPlus.3 -#usr/share/man/man3/FcStrSetAdd.3 -#usr/share/man/man3/FcStrSetAddFilename.3 -#usr/share/man/man3/FcStrSetCreate.3 -#usr/share/man/man3/FcStrSetDel.3 -#usr/share/man/man3/FcStrSetDestroy.3 -#usr/share/man/man3/FcStrSetEqual.3 -#usr/share/man/man3/FcStrSetMember.3 -#usr/share/man/man3/FcStrStr.3 -#usr/share/man/man3/FcStrStrIgnoreCase.3 -#usr/share/man/man3/FcToLower.3 -#usr/share/man/man3/FcUcs4ToUtf8.3 -#usr/share/man/man3/FcUtf16Len.3 -#usr/share/man/man3/FcUtf16ToUcs4.3 -#usr/share/man/man3/FcUtf8Len.3 -#usr/share/man/man3/FcUtf8ToUcs4.3 -#usr/share/man/man3/FcValueDestroy.3 -#usr/share/man/man3/FcValueEqual.3 -#usr/share/man/man3/FcValuePrint.3 -#usr/share/man/man3/FcValueSave.3 -#usr/share/man/man5/fonts-conf.5 -#usr/var/cache diff --git a/config/rootfiles/packages/glib b/config/rootfiles/packages/glib deleted file mode 100644 index d4913a2..0000000 --- a/config/rootfiles/packages/glib +++ /dev/null @@ -1,641 +0,0 @@ -#usr/bin/glib-genmarshal -#usr/bin/glib-gettextize -#usr/bin/glib-mkenums -#usr/bin/gobject-query -#usr/bin/gtester -#usr/bin/gtester-report -#usr/include/gio-unix-2.0 -#usr/include/gio-unix-2.0/gio -#usr/include/gio-unix-2.0/gio/gdesktopappinfo.h -#usr/include/gio-unix-2.0/gio/gunixconnection.h -#usr/include/gio-unix-2.0/gio/gunixfdmessage.h -#usr/include/gio-unix-2.0/gio/gunixinputstream.h -#usr/include/gio-unix-2.0/gio/gunixmounts.h -#usr/include/gio-unix-2.0/gio/gunixoutputstream.h -#usr/include/gio-unix-2.0/gio/gunixsocketaddress.h -#usr/include/glib-2.0 -#usr/include/glib-2.0/gio -#usr/include/glib-2.0/gio/gappinfo.h -#usr/include/glib-2.0/gio/gasyncinitable.h -#usr/include/glib-2.0/gio/gasyncresult.h -#usr/include/glib-2.0/gio/gbufferedinputstream.h -#usr/include/glib-2.0/gio/gbufferedoutputstream.h -#usr/include/glib-2.0/gio/gcancellable.h -#usr/include/glib-2.0/gio/gcontenttype.h -#usr/include/glib-2.0/gio/gdatainputstream.h -#usr/include/glib-2.0/gio/gdataoutputstream.h -#usr/include/glib-2.0/gio/gdrive.h -#usr/include/glib-2.0/gio/gemblem.h -#usr/include/glib-2.0/gio/gemblemedicon.h -#usr/include/glib-2.0/gio/gfile.h -#usr/include/glib-2.0/gio/gfileattribute.h -#usr/include/glib-2.0/gio/gfileenumerator.h -#usr/include/glib-2.0/gio/gfileicon.h -#usr/include/glib-2.0/gio/gfileinfo.h -#usr/include/glib-2.0/gio/gfileinputstream.h -#usr/include/glib-2.0/gio/gfileiostream.h -#usr/include/glib-2.0/gio/gfilemonitor.h -#usr/include/glib-2.0/gio/gfilenamecompleter.h -#usr/include/glib-2.0/gio/gfileoutputstream.h -#usr/include/glib-2.0/gio/gfilterinputstream.h -#usr/include/glib-2.0/gio/gfilteroutputstream.h -#usr/include/glib-2.0/gio/gicon.h -#usr/include/glib-2.0/gio/ginetaddress.h -#usr/include/glib-2.0/gio/ginetsocketaddress.h -#usr/include/glib-2.0/gio/ginitable.h -#usr/include/glib-2.0/gio/ginputstream.h -#usr/include/glib-2.0/gio/gio.h -#usr/include/glib-2.0/gio/gioenums.h -#usr/include/glib-2.0/gio/gioenumtypes.h -#usr/include/glib-2.0/gio/gioerror.h -#usr/include/glib-2.0/gio/giomodule.h -#usr/include/glib-2.0/gio/gioscheduler.h -#usr/include/glib-2.0/gio/giostream.h -#usr/include/glib-2.0/gio/giotypes.h -#usr/include/glib-2.0/gio/gloadableicon.h -#usr/include/glib-2.0/gio/gmemoryinputstream.h -#usr/include/glib-2.0/gio/gmemoryoutputstream.h -#usr/include/glib-2.0/gio/gmount.h -#usr/include/glib-2.0/gio/gmountoperation.h -#usr/include/glib-2.0/gio/gnativevolumemonitor.h -#usr/include/glib-2.0/gio/gnetworkaddress.h -#usr/include/glib-2.0/gio/gnetworkservice.h -#usr/include/glib-2.0/gio/goutputstream.h -#usr/include/glib-2.0/gio/gresolver.h -#usr/include/glib-2.0/gio/gseekable.h -#usr/include/glib-2.0/gio/gsimpleasyncresult.h -#usr/include/glib-2.0/gio/gsocket.h -#usr/include/glib-2.0/gio/gsocketaddress.h -#usr/include/glib-2.0/gio/gsocketaddressenumerator.h -#usr/include/glib-2.0/gio/gsocketclient.h -#usr/include/glib-2.0/gio/gsocketconnectable.h -#usr/include/glib-2.0/gio/gsocketconnection.h -#usr/include/glib-2.0/gio/gsocketcontrolmessage.h -#usr/include/glib-2.0/gio/gsocketlistener.h -#usr/include/glib-2.0/gio/gsocketservice.h -#usr/include/glib-2.0/gio/gsrvtarget.h -#usr/include/glib-2.0/gio/gtcpconnection.h -#usr/include/glib-2.0/gio/gthemedicon.h -#usr/include/glib-2.0/gio/gthreadedsocketservice.h -#usr/include/glib-2.0/gio/gvfs.h -#usr/include/glib-2.0/gio/gvolume.h -#usr/include/glib-2.0/gio/gvolumemonitor.h -#usr/include/glib-2.0/glib -#usr/include/glib-2.0/glib-object.h -#usr/include/glib-2.0/glib.h -#usr/include/glib-2.0/glib/galloca.h -#usr/include/glib-2.0/glib/garray.h -#usr/include/glib-2.0/glib/gasyncqueue.h -#usr/include/glib-2.0/glib/gatomic.h -#usr/include/glib-2.0/glib/gbacktrace.h -#usr/include/glib-2.0/glib/gbase64.h -#usr/include/glib-2.0/glib/gbookmarkfile.h -#usr/include/glib-2.0/glib/gcache.h -#usr/include/glib-2.0/glib/gchecksum.h -#usr/include/glib-2.0/glib/gcompletion.h -#usr/include/glib-2.0/glib/gconvert.h -#usr/include/glib-2.0/glib/gdataset.h -#usr/include/glib-2.0/glib/gdate.h -#usr/include/glib-2.0/glib/gdir.h -#usr/include/glib-2.0/glib/gerror.h -#usr/include/glib-2.0/glib/gfileutils.h -#usr/include/glib-2.0/glib/ghash.h -#usr/include/glib-2.0/glib/ghook.h -#usr/include/glib-2.0/glib/ghostutils.h -#usr/include/glib-2.0/glib/gi18n-lib.h -#usr/include/glib-2.0/glib/gi18n.h -#usr/include/glib-2.0/glib/giochannel.h -#usr/include/glib-2.0/glib/gkeyfile.h -#usr/include/glib-2.0/glib/glist.h -#usr/include/glib-2.0/glib/gmacros.h -#usr/include/glib-2.0/glib/gmain.h -#usr/include/glib-2.0/glib/gmappedfile.h -#usr/include/glib-2.0/glib/gmarkup.h -#usr/include/glib-2.0/glib/gmem.h -#usr/include/glib-2.0/glib/gmessages.h -#usr/include/glib-2.0/glib/gnode.h -#usr/include/glib-2.0/glib/goption.h -#usr/include/glib-2.0/glib/gpattern.h -#usr/include/glib-2.0/glib/gpoll.h -#usr/include/glib-2.0/glib/gprimes.h -#usr/include/glib-2.0/glib/gprintf.h -#usr/include/glib-2.0/glib/gqsort.h -#usr/include/glib-2.0/glib/gquark.h -#usr/include/glib-2.0/glib/gqueue.h -#usr/include/glib-2.0/glib/grand.h -#usr/include/glib-2.0/glib/gregex.h -#usr/include/glib-2.0/glib/grel.h -#usr/include/glib-2.0/glib/gscanner.h -#usr/include/glib-2.0/glib/gsequence.h -#usr/include/glib-2.0/glib/gshell.h -#usr/include/glib-2.0/glib/gslice.h -#usr/include/glib-2.0/glib/gslist.h -#usr/include/glib-2.0/glib/gspawn.h -#usr/include/glib-2.0/glib/gstdio.h -#usr/include/glib-2.0/glib/gstrfuncs.h -#usr/include/glib-2.0/glib/gstring.h -#usr/include/glib-2.0/glib/gtestutils.h -#usr/include/glib-2.0/glib/gthread.h -#usr/include/glib-2.0/glib/gthreadpool.h -#usr/include/glib-2.0/glib/gtimer.h -#usr/include/glib-2.0/glib/gtree.h -#usr/include/glib-2.0/glib/gtypes.h -#usr/include/glib-2.0/glib/gunicode.h -#usr/include/glib-2.0/glib/gurifuncs.h -#usr/include/glib-2.0/glib/gutils.h -#usr/include/glib-2.0/glib/gwin32.h -#usr/include/glib-2.0/gmodule.h -#usr/include/glib-2.0/gobject -#usr/include/glib-2.0/gobject/gboxed.h -#usr/include/glib-2.0/gobject/gclosure.h -#usr/include/glib-2.0/gobject/genums.h -#usr/include/glib-2.0/gobject/gmarshal.h -#usr/include/glib-2.0/gobject/gobject.h -#usr/include/glib-2.0/gobject/gobjectnotifyqueue.c -#usr/include/glib-2.0/gobject/gparam.h -#usr/include/glib-2.0/gobject/gparamspecs.h -#usr/include/glib-2.0/gobject/gsignal.h -#usr/include/glib-2.0/gobject/gsourceclosure.h -#usr/include/glib-2.0/gobject/gtype.h -#usr/include/glib-2.0/gobject/gtypemodule.h -#usr/include/glib-2.0/gobject/gtypeplugin.h -#usr/include/glib-2.0/gobject/gvalue.h -#usr/include/glib-2.0/gobject/gvaluearray.h -#usr/include/glib-2.0/gobject/gvaluecollector.h -#usr/include/glib-2.0/gobject/gvaluetypes.h -#usr/lib/gio -#usr/lib/gio/modules -#usr/lib/glib-2.0 -#usr/lib/glib-2.0/include -#usr/lib/glib-2.0/include/glibconfig.h -#usr/lib/libgio-2.0.la -usr/lib/libgio-2.0.so -usr/lib/libgio-2.0.so.0 -usr/lib/libgio-2.0.so.0.2200.2 -#usr/lib/libglib-2.0.la -usr/lib/libglib-2.0.so -usr/lib/libglib-2.0.so.0 -usr/lib/libglib-2.0.so.0.2200.2 -#usr/lib/libgmodule-2.0.la -usr/lib/libgmodule-2.0.so -usr/lib/libgmodule-2.0.so.0 -usr/lib/libgmodule-2.0.so.0.2200.2 -#usr/lib/libgobject-2.0.la -usr/lib/libgobject-2.0.so -usr/lib/libgobject-2.0.so.0 -usr/lib/libgobject-2.0.so.0.2200.2 -#usr/lib/libgthread-2.0.la -usr/lib/libgthread-2.0.so -usr/lib/libgthread-2.0.so.0 -usr/lib/libgthread-2.0.so.0.2200.2 -#usr/lib/pkgconfig/gio-2.0.pc -#usr/lib/pkgconfig/gio-unix-2.0.pc -#usr/lib/pkgconfig/glib-2.0.pc -#usr/lib/pkgconfig/gmodule-2.0.pc -#usr/lib/pkgconfig/gmodule-export-2.0.pc -#usr/lib/pkgconfig/gmodule-no-export-2.0.pc -#usr/lib/pkgconfig/gobject-2.0.pc -#usr/lib/pkgconfig/gthread-2.0.pc -#usr/share/aclocal/glib-2.0.m4 -#usr/share/aclocal/glib-gettext.m4 -#usr/share/gdb -#usr/share/gdb/auto-load -usr/share/gdb/auto-load/libglib-2.0.so.0.2200.2-gdb.py -usr/share/gdb/auto-load/libgobject-2.0.so.0.2200.2-gdb.py -#usr/share/glib-2.0 -#usr/share/glib-2.0/gdb -usr/share/glib-2.0/gdb/glib.py -usr/share/glib-2.0/gdb/gobject.py -#usr/share/glib-2.0/gettext -#usr/share/glib-2.0/gettext/mkinstalldirs -#usr/share/glib-2.0/gettext/po -#usr/share/glib-2.0/gettext/po/Makefile.in.in -#usr/share/gtk-doc/html/gio -#usr/share/gtk-doc/html/gio/GAppInfo.html -#usr/share/gtk-doc/html/gio/GAsyncInitable.html -#usr/share/gtk-doc/html/gio/GAsyncResult.html -#usr/share/gtk-doc/html/gio/GBufferedInputStream.html -#usr/share/gtk-doc/html/gio/GBufferedOutputStream.html -#usr/share/gtk-doc/html/gio/GCancellable.html -#usr/share/gtk-doc/html/gio/GDataInputStream.html -#usr/share/gtk-doc/html/gio/GDataOutputStream.html -#usr/share/gtk-doc/html/gio/GDrive.html -#usr/share/gtk-doc/html/gio/GEmblem.html -#usr/share/gtk-doc/html/gio/GEmblemedIcon.html -#usr/share/gtk-doc/html/gio/GFile.html -#usr/share/gtk-doc/html/gio/GFileEnumerator.html -#usr/share/gtk-doc/html/gio/GFileIOStream.html -#usr/share/gtk-doc/html/gio/GFileIcon.html -#usr/share/gtk-doc/html/gio/GFileInfo.html -#usr/share/gtk-doc/html/gio/GFileInputStream.html -#usr/share/gtk-doc/html/gio/GFileMonitor.html -#usr/share/gtk-doc/html/gio/GFileOutputStream.html -#usr/share/gtk-doc/html/gio/GFilenameCompleter.html -#usr/share/gtk-doc/html/gio/GFilterInputStream.html -#usr/share/gtk-doc/html/gio/GFilterOutputStream.html -#usr/share/gtk-doc/html/gio/GIOModule.html -#usr/share/gtk-doc/html/gio/GIOStream.html -#usr/share/gtk-doc/html/gio/GIcon.html -#usr/share/gtk-doc/html/gio/GInetAddress.html -#usr/share/gtk-doc/html/gio/GInetSocketAddress.html -#usr/share/gtk-doc/html/gio/GInitable.html -#usr/share/gtk-doc/html/gio/GInputStream.html -#usr/share/gtk-doc/html/gio/GLoadableIcon.html -#usr/share/gtk-doc/html/gio/GMemoryInputStream.html -#usr/share/gtk-doc/html/gio/GMemoryOutputStream.html -#usr/share/gtk-doc/html/gio/GMount.html -#usr/share/gtk-doc/html/gio/GMountOperation.html -#usr/share/gtk-doc/html/gio/GNetworkAddress.html -#usr/share/gtk-doc/html/gio/GNetworkService.html -#usr/share/gtk-doc/html/gio/GOutputStream.html -#usr/share/gtk-doc/html/gio/GResolver.html -#usr/share/gtk-doc/html/gio/GSeekable.html -#usr/share/gtk-doc/html/gio/GSimpleAsyncResult.html -#usr/share/gtk-doc/html/gio/GSocket.html -#usr/share/gtk-doc/html/gio/GSocketAddress.html -#usr/share/gtk-doc/html/gio/GSocketClient.html -#usr/share/gtk-doc/html/gio/GSocketConnectable.html -#usr/share/gtk-doc/html/gio/GSocketConnection.html -#usr/share/gtk-doc/html/gio/GSocketControlMessage.html -#usr/share/gtk-doc/html/gio/GSocketListener.html -#usr/share/gtk-doc/html/gio/GSocketService.html -#usr/share/gtk-doc/html/gio/GThemedIcon.html -#usr/share/gtk-doc/html/gio/GThreadedSocketService.html -#usr/share/gtk-doc/html/gio/GUnixFDMessage.html -#usr/share/gtk-doc/html/gio/GUnixInputStream.html -#usr/share/gtk-doc/html/gio/GUnixOutputStream.html -#usr/share/gtk-doc/html/gio/GUnixSocketAddress.html -#usr/share/gtk-doc/html/gio/GVfs.html -#usr/share/gtk-doc/html/gio/GVolume.html -#usr/share/gtk-doc/html/gio/GVolumeMonitor.html -#usr/share/gtk-doc/html/gio/async.html -#usr/share/gtk-doc/html/gio/ch01.html -#usr/share/gtk-doc/html/gio/ch02.html -#usr/share/gtk-doc/html/gio/ch03.html -#usr/share/gtk-doc/html/gio/ch18.html -#usr/share/gtk-doc/html/gio/ch19.html -#usr/share/gtk-doc/html/gio/ch19s02.html -#usr/share/gtk-doc/html/gio/ch19s03.html -#usr/share/gtk-doc/html/gio/extending-gio.html -#usr/share/gtk-doc/html/gio/extending.html -#usr/share/gtk-doc/html/gio/failable_initialization.html -#usr/share/gtk-doc/html/gio/file_mon.html -#usr/share/gtk-doc/html/gio/file_ops.html -#usr/share/gtk-doc/html/gio/gio-Desktop-file-based-GAppInfo.html -#usr/share/gtk-doc/html/gio/gio-Extension-Points.html -#usr/share/gtk-doc/html/gio/gio-GContentType.html -#usr/share/gtk-doc/html/gio/gio-GFileAttribute.html -#usr/share/gtk-doc/html/gio/gio-GIOError.html -#usr/share/gtk-doc/html/gio/gio-GIOScheduler.html -#usr/share/gtk-doc/html/gio/gio-GSrvTarget.html -#usr/share/gtk-doc/html/gio/gio-Unix-Mounts.html -#usr/share/gtk-doc/html/gio/gio-hierarchy.html -#usr/share/gtk-doc/html/gio/gio.devhelp -#usr/share/gtk-doc/html/gio/gio.devhelp2 -#usr/share/gtk-doc/html/gio/gvfs-overview.png -#usr/share/gtk-doc/html/gio/highlevel-socket.html -#usr/share/gtk-doc/html/gio/home.png -#usr/share/gtk-doc/html/gio/icons.html -#usr/share/gtk-doc/html/gio/index.html -#usr/share/gtk-doc/html/gio/index.sgml -#usr/share/gtk-doc/html/gio/ix01.html -#usr/share/gtk-doc/html/gio/ix02.html -#usr/share/gtk-doc/html/gio/ix03.html -#usr/share/gtk-doc/html/gio/ix04.html -#usr/share/gtk-doc/html/gio/ix05.html -#usr/share/gtk-doc/html/gio/left.png -#usr/share/gtk-doc/html/gio/migrating.html -#usr/share/gtk-doc/html/gio/networking.html -#usr/share/gtk-doc/html/gio/pt01.html -#usr/share/gtk-doc/html/gio/pt02.html -#usr/share/gtk-doc/html/gio/resolver.html -#usr/share/gtk-doc/html/gio/right.png -#usr/share/gtk-doc/html/gio/streaming.html -#usr/share/gtk-doc/html/gio/style.css -#usr/share/gtk-doc/html/gio/types.html -#usr/share/gtk-doc/html/gio/up.png -#usr/share/gtk-doc/html/gio/utils.html -#usr/share/gtk-doc/html/gio/volume_mon.html -#usr/share/gtk-doc/html/glib -#usr/share/gtk-doc/html/glib/file-name-encodings.png -#usr/share/gtk-doc/html/glib/glib-Arrays.html -#usr/share/gtk-doc/html/glib/glib-Asynchronous-Queues.html -#usr/share/gtk-doc/html/glib/glib-Atomic-Operations.html -#usr/share/gtk-doc/html/glib/glib-Automatic-String-Completion.html -#usr/share/gtk-doc/html/glib/glib-Balanced-Binary-Trees.html -#usr/share/gtk-doc/html/glib/glib-Base64-Encoding.html -#usr/share/gtk-doc/html/glib/glib-Basic-Types.html -#usr/share/gtk-doc/html/glib/glib-Bookmark-file-parser.html -#usr/share/gtk-doc/html/glib/glib-Byte-Arrays.html -#usr/share/gtk-doc/html/glib/glib-Byte-Order-Macros.html -#usr/share/gtk-doc/html/glib/glib-Caches.html -#usr/share/gtk-doc/html/glib/glib-Character-Set-Conversion.html -#usr/share/gtk-doc/html/glib/glib-Commandline-option-parser.html -#usr/share/gtk-doc/html/glib/glib-Data-Checksums.html -#usr/share/gtk-doc/html/glib/glib-Datasets.html -#usr/share/gtk-doc/html/glib/glib-Date-and-Time-Functions.html -#usr/share/gtk-doc/html/glib/glib-Double-ended-Queues.html -#usr/share/gtk-doc/html/glib/glib-Doubly-Linked-Lists.html -#usr/share/gtk-doc/html/glib/glib-Dynamic-Loading-of-Modules.html -#usr/share/gtk-doc/html/glib/glib-Error-Reporting.html -#usr/share/gtk-doc/html/glib/glib-File-Utilities.html -#usr/share/gtk-doc/html/glib/glib-Glob-style-pattern-matching.html -#usr/share/gtk-doc/html/glib/glib-Hash-Tables.html -#usr/share/gtk-doc/html/glib/glib-Hook-Functions.html -#usr/share/gtk-doc/html/glib/glib-Hostname-Utilities.html -#usr/share/gtk-doc/html/glib/glib-I18N.html -#usr/share/gtk-doc/html/glib/glib-IO-Channels.html -#usr/share/gtk-doc/html/glib/glib-Key-value-file-parser.html -#usr/share/gtk-doc/html/glib/glib-Keyed-Data-Lists.html -#usr/share/gtk-doc/html/glib/glib-Lexical-Scanner.html -#usr/share/gtk-doc/html/glib/glib-Limits-of-Basic-Types.html -#usr/share/gtk-doc/html/glib/glib-Memory-Allocation.html -#usr/share/gtk-doc/html/glib/glib-Memory-Allocators.html -#usr/share/gtk-doc/html/glib/glib-Memory-Chunks.html -#usr/share/gtk-doc/html/glib/glib-Memory-Slices.html -#usr/share/gtk-doc/html/glib/glib-Message-Logging.html -#usr/share/gtk-doc/html/glib/glib-Miscellaneous-Macros.html -#usr/share/gtk-doc/html/glib/glib-Miscellaneous-Utility-Functions.html -#usr/share/gtk-doc/html/glib/glib-N-ary-Trees.html -#usr/share/gtk-doc/html/glib/glib-Numerical-Definitions.html -#usr/share/gtk-doc/html/glib/glib-Perl-compatible-regular-expressions.html -#usr/share/gtk-doc/html/glib/glib-Pointer-Arrays.html -#usr/share/gtk-doc/html/glib/glib-Quarks.html -#usr/share/gtk-doc/html/glib/glib-Random-Numbers.html -#usr/share/gtk-doc/html/glib/glib-Relations-and-Tuples.html -#usr/share/gtk-doc/html/glib/glib-Sequences.html -#usr/share/gtk-doc/html/glib/glib-Shell-related-Utilities.html -#usr/share/gtk-doc/html/glib/glib-Simple-XML-Subset-Parser.html -#usr/share/gtk-doc/html/glib/glib-Singly-Linked-Lists.html -#usr/share/gtk-doc/html/glib/glib-Spawning-Processes.html -#usr/share/gtk-doc/html/glib/glib-Standard-Macros.html -#usr/share/gtk-doc/html/glib/glib-String-Chunks.html -#usr/share/gtk-doc/html/glib/glib-String-Utility-Functions.html -#usr/share/gtk-doc/html/glib/glib-Strings.html -#usr/share/gtk-doc/html/glib/glib-Testing.html -#usr/share/gtk-doc/html/glib/glib-The-Main-Event-Loop.html -#usr/share/gtk-doc/html/glib/glib-Thread-Pools.html -#usr/share/gtk-doc/html/glib/glib-Threads.html -#usr/share/gtk-doc/html/glib/glib-Timers.html -#usr/share/gtk-doc/html/glib/glib-Trash-Stacks.html -#usr/share/gtk-doc/html/glib/glib-Type-Conversion-Macros.html -#usr/share/gtk-doc/html/glib/glib-URI-Functions.html -#usr/share/gtk-doc/html/glib/glib-Unicode-Manipulation.html -#usr/share/gtk-doc/html/glib/glib-Version-Information.html -#usr/share/gtk-doc/html/glib/glib-Warnings-and-Assertions.html -#usr/share/gtk-doc/html/glib/glib-Windows-Compatibility-Functions.html -#usr/share/gtk-doc/html/glib/glib-building.html -#usr/share/gtk-doc/html/glib/glib-changes.html -#usr/share/gtk-doc/html/glib/glib-compiling.html -#usr/share/gtk-doc/html/glib/glib-core.html -#usr/share/gtk-doc/html/glib/glib-cross-compiling.html -#usr/share/gtk-doc/html/glib/glib-data-types.html -#usr/share/gtk-doc/html/glib/glib-fundamentals.html -#usr/share/gtk-doc/html/glib/glib-gettextize.html -#usr/share/gtk-doc/html/glib/glib-regex-syntax.html -#usr/share/gtk-doc/html/glib/glib-resources.html -#usr/share/gtk-doc/html/glib/glib-running.html -#usr/share/gtk-doc/html/glib/glib-utilities.html -#usr/share/gtk-doc/html/glib/glib.devhelp -#usr/share/gtk-doc/html/glib/glib.devhelp2 -#usr/share/gtk-doc/html/glib/glib.html -#usr/share/gtk-doc/html/glib/gtester-report.html -#usr/share/gtk-doc/html/glib/gtester.html -#usr/share/gtk-doc/html/glib/home.png -#usr/share/gtk-doc/html/glib/index.html -#usr/share/gtk-doc/html/glib/index.sgml -#usr/share/gtk-doc/html/glib/ix01.html -#usr/share/gtk-doc/html/glib/ix02.html -#usr/share/gtk-doc/html/glib/ix03.html -#usr/share/gtk-doc/html/glib/ix04.html -#usr/share/gtk-doc/html/glib/ix05.html -#usr/share/gtk-doc/html/glib/ix06.html -#usr/share/gtk-doc/html/glib/ix07.html -#usr/share/gtk-doc/html/glib/ix08.html -#usr/share/gtk-doc/html/glib/ix09.html -#usr/share/gtk-doc/html/glib/ix10.html -#usr/share/gtk-doc/html/glib/ix11.html -#usr/share/gtk-doc/html/glib/ix12.html -#usr/share/gtk-doc/html/glib/ix13.html -#usr/share/gtk-doc/html/glib/left.png -#usr/share/gtk-doc/html/glib/mainloop-states.gif -#usr/share/gtk-doc/html/glib/right.png -#usr/share/gtk-doc/html/glib/style.css -#usr/share/gtk-doc/html/glib/tools.html -#usr/share/gtk-doc/html/glib/up.png -#usr/share/gtk-doc/html/gobject -#usr/share/gtk-doc/html/gobject/GTypeModule.html -#usr/share/gtk-doc/html/gobject/GTypePlugin.html -#usr/share/gtk-doc/html/gobject/ch01s02.html -#usr/share/gtk-doc/html/gobject/ch06s03.html -#usr/share/gtk-doc/html/gobject/chapter-gobject.html -#usr/share/gtk-doc/html/gobject/chapter-gtype.html -#usr/share/gtk-doc/html/gobject/chapter-intro.html -#usr/share/gtk-doc/html/gobject/chapter-signal.html -#usr/share/gtk-doc/html/gobject/glib-genmarshal.html -#usr/share/gtk-doc/html/gobject/glib-mkenums.html -#usr/share/gtk-doc/html/gobject/glue.png -#usr/share/gtk-doc/html/gobject/gobject-Boxed-Types.html -#usr/share/gtk-doc/html/gobject/gobject-Closures.html -#usr/share/gtk-doc/html/gobject/gobject-Enumeration-and-Flag-Types.html -#usr/share/gtk-doc/html/gobject/gobject-GParamSpec.html -#usr/share/gtk-doc/html/gobject/gobject-Generic-values.html -#usr/share/gtk-doc/html/gobject/gobject-Signals.html -#usr/share/gtk-doc/html/gobject/gobject-Standard-Parameter-and-Value-Types.html -#usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html -#usr/share/gtk-doc/html/gobject/gobject-Type-Information.html -#usr/share/gtk-doc/html/gobject/gobject-Value-arrays.html -#usr/share/gtk-doc/html/gobject/gobject-Varargs-Value-Collection.html -#usr/share/gtk-doc/html/gobject/gobject-memory.html -#usr/share/gtk-doc/html/gobject/gobject-properties.html -#usr/share/gtk-doc/html/gobject/gobject-query.html -#usr/share/gtk-doc/html/gobject/gobject.devhelp -#usr/share/gtk-doc/html/gobject/gobject.devhelp2 -#usr/share/gtk-doc/html/gobject/gtype-conventions.html -#usr/share/gtk-doc/html/gobject/gtype-instantiable-classed.html -#usr/share/gtk-doc/html/gobject/gtype-non-instantiable-classed.html -#usr/share/gtk-doc/html/gobject/gtype-non-instantiable.html -#usr/share/gtk-doc/html/gobject/home.png -#usr/share/gtk-doc/html/gobject/howto-gobject-chainup.html -#usr/share/gtk-doc/html/gobject/howto-gobject-code.html -#usr/share/gtk-doc/html/gobject/howto-gobject-construction.html -#usr/share/gtk-doc/html/gobject/howto-gobject-destruction.html -#usr/share/gtk-doc/html/gobject/howto-gobject-methods.html -#usr/share/gtk-doc/html/gobject/howto-gobject.html -#usr/share/gtk-doc/html/gobject/howto-interface-implement.html -#usr/share/gtk-doc/html/gobject/howto-interface-properties.html -#usr/share/gtk-doc/html/gobject/howto-interface.html -#usr/share/gtk-doc/html/gobject/howto-signals.html -#usr/share/gtk-doc/html/gobject/index.html -#usr/share/gtk-doc/html/gobject/index.sgml -#usr/share/gtk-doc/html/gobject/ix01.html -#usr/share/gtk-doc/html/gobject/ix02.html -#usr/share/gtk-doc/html/gobject/ix03.html -#usr/share/gtk-doc/html/gobject/ix04.html -#usr/share/gtk-doc/html/gobject/ix05.html -#usr/share/gtk-doc/html/gobject/ix06.html -#usr/share/gtk-doc/html/gobject/ix07.html -#usr/share/gtk-doc/html/gobject/ix08.html -#usr/share/gtk-doc/html/gobject/ix09.html -#usr/share/gtk-doc/html/gobject/ix10.html -#usr/share/gtk-doc/html/gobject/ix11.html -#usr/share/gtk-doc/html/gobject/left.png -#usr/share/gtk-doc/html/gobject/pr01.html -#usr/share/gtk-doc/html/gobject/pt01.html -#usr/share/gtk-doc/html/gobject/pt02.html -#usr/share/gtk-doc/html/gobject/pt03.html -#usr/share/gtk-doc/html/gobject/right.png -#usr/share/gtk-doc/html/gobject/rn01.html -#usr/share/gtk-doc/html/gobject/rn02.html -#usr/share/gtk-doc/html/gobject/signal.html -#usr/share/gtk-doc/html/gobject/style.css -#usr/share/gtk-doc/html/gobject/tools-ginspector.html -#usr/share/gtk-doc/html/gobject/tools-gob.html -#usr/share/gtk-doc/html/gobject/tools-gtkdoc.html -#usr/share/gtk-doc/html/gobject/tools-refdb.html -#usr/share/gtk-doc/html/gobject/tools-vala.html -#usr/share/gtk-doc/html/gobject/up.png -#usr/share/locale/am -#usr/share/locale/am/LC_MESSAGES -#usr/share/locale/am/LC_MESSAGES/glib20.mo -#usr/share/locale/ar/LC_MESSAGES/glib20.mo -#usr/share/locale/as/LC_MESSAGES/glib20.mo -#usr/share/locale/az -#usr/share/locale/az/LC_MESSAGES -#usr/share/locale/az/LC_MESSAGES/glib20.mo -#usr/share/locale/be/LC_MESSAGES/glib20.mo -#usr/share/locale/be@latin -#usr/share/locale/be@latin/LC_MESSAGES -#usr/share/locale/be@latin/LC_MESSAGES/glib20.mo -#usr/share/locale/bg/LC_MESSAGES/glib20.mo -#usr/share/locale/bn/LC_MESSAGES/glib20.mo -#usr/share/locale/bn_IN/LC_MESSAGES/glib20.mo -#usr/share/locale/bs/LC_MESSAGES/glib20.mo -#usr/share/locale/ca/LC_MESSAGES/glib20.mo -#usr/share/locale/ca@valencia -#usr/share/locale/ca@valencia/LC_MESSAGES -#usr/share/locale/ca@valencia/LC_MESSAGES/glib20.mo -#usr/share/locale/cs/LC_MESSAGES/glib20.mo -#usr/share/locale/cy/LC_MESSAGES/glib20.mo -#usr/share/locale/da/LC_MESSAGES/glib20.mo -#usr/share/locale/de/LC_MESSAGES/glib20.mo -#usr/share/locale/dz -#usr/share/locale/dz/LC_MESSAGES -#usr/share/locale/dz/LC_MESSAGES/glib20.mo -#usr/share/locale/el/LC_MESSAGES/glib20.mo -#usr/share/locale/en_CA -#usr/share/locale/en_CA/LC_MESSAGES -#usr/share/locale/en_CA/LC_MESSAGES/glib20.mo -#usr/share/locale/en_GB/LC_MESSAGES/glib20.mo -#usr/share/locale/eo -#usr/share/locale/eo/LC_MESSAGES -#usr/share/locale/eo/LC_MESSAGES/glib20.mo -#usr/share/locale/es/LC_MESSAGES/glib20.mo -#usr/share/locale/et/LC_MESSAGES/glib20.mo -#usr/share/locale/eu -#usr/share/locale/eu/LC_MESSAGES -#usr/share/locale/eu/LC_MESSAGES/glib20.mo -#usr/share/locale/fa -#usr/share/locale/fa/LC_MESSAGES -#usr/share/locale/fa/LC_MESSAGES/glib20.mo -#usr/share/locale/fi/LC_MESSAGES/glib20.mo -#usr/share/locale/fr/LC_MESSAGES/glib20.mo -#usr/share/locale/ga -#usr/share/locale/ga/LC_MESSAGES -#usr/share/locale/ga/LC_MESSAGES/glib20.mo -#usr/share/locale/gl/LC_MESSAGES/glib20.mo -#usr/share/locale/gu/LC_MESSAGES/glib20.mo -#usr/share/locale/he/LC_MESSAGES/glib20.mo -#usr/share/locale/hi/LC_MESSAGES/glib20.mo -#usr/share/locale/hr/LC_MESSAGES/glib20.mo -#usr/share/locale/hu/LC_MESSAGES/glib20.mo -#usr/share/locale/hy/LC_MESSAGES/glib20.mo -#usr/share/locale/id/LC_MESSAGES/glib20.mo -#usr/share/locale/is/LC_MESSAGES/glib20.mo -#usr/share/locale/it/LC_MESSAGES/glib20.mo -#usr/share/locale/ja/LC_MESSAGES/glib20.mo -#usr/share/locale/ka/LC_MESSAGES/glib20.mo -#usr/share/locale/kn/LC_MESSAGES/glib20.mo -#usr/share/locale/ko/LC_MESSAGES/glib20.mo -#usr/share/locale/ku/LC_MESSAGES/glib20.mo -#usr/share/locale/lt/LC_MESSAGES/glib20.mo -#usr/share/locale/lv/LC_MESSAGES/glib20.mo -#usr/share/locale/mai -#usr/share/locale/mai/LC_MESSAGES -#usr/share/locale/mai/LC_MESSAGES/glib20.mo -#usr/share/locale/mg -#usr/share/locale/mg/LC_MESSAGES -#usr/share/locale/mg/LC_MESSAGES/glib20.mo -#usr/share/locale/mk/LC_MESSAGES/glib20.mo -#usr/share/locale/ml/LC_MESSAGES/glib20.mo -#usr/share/locale/mn -#usr/share/locale/mn/LC_MESSAGES -#usr/share/locale/mn/LC_MESSAGES/glib20.mo -#usr/share/locale/mr/LC_MESSAGES/glib20.mo -#usr/share/locale/ms/LC_MESSAGES/glib20.mo -#usr/share/locale/nb/LC_MESSAGES/glib20.mo -#usr/share/locale/ne -#usr/share/locale/ne/LC_MESSAGES -#usr/share/locale/ne/LC_MESSAGES/glib20.mo -#usr/share/locale/nl/LC_MESSAGES/glib20.mo -#usr/share/locale/nn/LC_MESSAGES/glib20.mo -#usr/share/locale/oc -#usr/share/locale/oc/LC_MESSAGES -#usr/share/locale/oc/LC_MESSAGES/glib20.mo -#usr/share/locale/or/LC_MESSAGES/glib20.mo -#usr/share/locale/pa/LC_MESSAGES/glib20.mo -#usr/share/locale/pl/LC_MESSAGES/glib20.mo -#usr/share/locale/ps -#usr/share/locale/ps/LC_MESSAGES -#usr/share/locale/ps/LC_MESSAGES/glib20.mo -#usr/share/locale/pt/LC_MESSAGES/glib20.mo -#usr/share/locale/pt_BR/LC_MESSAGES/glib20.mo -#usr/share/locale/ro/LC_MESSAGES/glib20.mo -#usr/share/locale/ru/LC_MESSAGES/glib20.mo -#usr/share/locale/rw -#usr/share/locale/rw/LC_MESSAGES -#usr/share/locale/rw/LC_MESSAGES/glib20.mo -#usr/share/locale/si/LC_MESSAGES/glib20.mo -#usr/share/locale/sk/LC_MESSAGES/glib20.mo -#usr/share/locale/sl/LC_MESSAGES/glib20.mo -#usr/share/locale/sq/LC_MESSAGES/glib20.mo -#usr/share/locale/sr/LC_MESSAGES/glib20.mo -#usr/share/locale/sr@ije -#usr/share/locale/sr@ije/LC_MESSAGES -#usr/share/locale/sr@ije/LC_MESSAGES/glib20.mo -#usr/share/locale/sr@latin -#usr/share/locale/sr@latin/LC_MESSAGES -#usr/share/locale/sr@latin/LC_MESSAGES/glib20.mo -#usr/share/locale/sv/LC_MESSAGES/glib20.mo -#usr/share/locale/ta/LC_MESSAGES/glib20.mo -#usr/share/locale/te/LC_MESSAGES/glib20.mo -#usr/share/locale/th -#usr/share/locale/th/LC_MESSAGES -#usr/share/locale/th/LC_MESSAGES/glib20.mo -#usr/share/locale/tl -#usr/share/locale/tl/LC_MESSAGES -#usr/share/locale/tl/LC_MESSAGES/glib20.mo -#usr/share/locale/tr/LC_MESSAGES/glib20.mo -#usr/share/locale/tt -#usr/share/locale/tt/LC_MESSAGES -#usr/share/locale/tt/LC_MESSAGES/glib20.mo -#usr/share/locale/uk/LC_MESSAGES/glib20.mo -#usr/share/locale/vi/LC_MESSAGES/glib20.mo -#usr/share/locale/wa/LC_MESSAGES/glib20.mo -#usr/share/locale/xh -#usr/share/locale/xh/LC_MESSAGES -#usr/share/locale/xh/LC_MESSAGES/glib20.mo -#usr/share/locale/yi -#usr/share/locale/yi/LC_MESSAGES -#usr/share/locale/yi/LC_MESSAGES/glib20.mo -#usr/share/locale/zh_CN/LC_MESSAGES/glib20.mo -#usr/share/locale/zh_HK -#usr/share/locale/zh_HK/LC_MESSAGES -#usr/share/locale/zh_HK/LC_MESSAGES/glib20.mo -#usr/share/locale/zh_TW/LC_MESSAGES/glib20.mo -#usr/share/man/man1/glib-genmarshal.1 -#usr/share/man/man1/glib-gettextize.1 -#usr/share/man/man1/glib-mkenums.1 -#usr/share/man/man1/gobject-query.1 -#usr/share/man/man1/gtester-report.1 -#usr/share/man/man1/gtester.1 diff --git a/config/rootfiles/packages/gnump3d b/config/rootfiles/packages/gnump3d index f7b18a7..450adfb 100644 --- a/config/rootfiles/packages/gnump3d +++ b/config/rootfiles/packages/gnump3d @@ -1,9 +1,9 @@ +etc/fcron.daily/gnump3d-index #etc/gnump3d etc/gnump3d/file.types etc/gnump3d/gnump3d.conf etc/gnump3d/mime.types etc/rc.d/init.d/gnump3d -etc/fcron.daily/gnump3d-index usr/bin/gnump3d usr/bin/gnump3d-index usr/bin/gnump3d-top @@ -43,7 +43,8 @@ usr/lib/perl5/5.12.3/gnump3d/readtags.pm usr/lib/perl5/5.12.3/gnump3d/sorting.pm usr/lib/perl5/5.12.3/gnump3d/tagcache.pm usr/lib/perl5/5.12.3/gnump3d/url.pm -usr/lib/perl5/5.12.3/Pod +#usr/local/man +#usr/local/man/man1 #usr/local/man/man1/gnump3d-index.1 #usr/local/man/man1/gnump3d-top.1 #usr/local/man/man1/gnump3d.1 @@ -53,7 +54,6 @@ usr/share/gnump3d #usr/share/gnump3d/Avalon/AUTHOR #usr/share/gnump3d/Avalon/COPYING.html #usr/share/gnump3d/Avalon/base.css -#usr/share/gnump3d/Avalon/bug.html #usr/share/gnump3d/Avalon/error.html #usr/share/gnump3d/Avalon/gnump3d-logo.jpg #usr/share/gnump3d/Avalon/html_footer.tmpl @@ -77,7 +77,6 @@ usr/share/gnump3d #usr/share/gnump3d/BlueBox/AUTHOR #usr/share/gnump3d/BlueBox/BlueBox.css #usr/share/gnump3d/BlueBox/COPYING.html -#usr/share/gnump3d/BlueBox/bug.html #usr/share/gnump3d/BlueBox/error.html #usr/share/gnump3d/BlueBox/extras.html #usr/share/gnump3d/BlueBox/footer.tmpl @@ -99,7 +98,6 @@ usr/share/gnump3d #usr/share/gnump3d/Clean #usr/share/gnump3d/Clean/AUTHOR #usr/share/gnump3d/Clean/COPYING.html -#usr/share/gnump3d/Clean/bug.html #usr/share/gnump3d/Clean/error.html #usr/share/gnump3d/Clean/index.html #usr/share/gnump3d/Clean/info.html @@ -118,7 +116,6 @@ usr/share/gnump3d #usr/share/gnump3d/LaFrere #usr/share/gnump3d/LaFrere/AUTHOR #usr/share/gnump3d/LaFrere/COPYING.html -#usr/share/gnump3d/LaFrere/bug.html #usr/share/gnump3d/LaFrere/error.html #usr/share/gnump3d/LaFrere/index.html #usr/share/gnump3d/LaFrere/info.html @@ -137,7 +134,6 @@ usr/share/gnump3d #usr/share/gnump3d/Liquid/AUTHOR #usr/share/gnump3d/Liquid/COPYING.html #usr/share/gnump3d/Liquid/bck.gif -#usr/share/gnump3d/Liquid/bug.html #usr/share/gnump3d/Liquid/cel-bar-anthrazite-act.gif #usr/share/gnump3d/Liquid/cel-bar-anthrazite.gif #usr/share/gnump3d/Liquid/cel-bar-aqua-act.gif @@ -188,7 +184,6 @@ usr/share/gnump3d #usr/share/gnump3d/Musicus #usr/share/gnump3d/Musicus/AUTHOR #usr/share/gnump3d/Musicus/COPYING.html -#usr/share/gnump3d/Musicus/bug.html #usr/share/gnump3d/Musicus/error.html #usr/share/gnump3d/Musicus/extras.html #usr/share/gnump3d/Musicus/footer.tmpl @@ -214,7 +209,6 @@ usr/share/gnump3d #usr/share/gnump3d/Nomad/Nomad_theme.css #usr/share/gnump3d/Nomad/SmallHome.gif #usr/share/gnump3d/Nomad/bg.gif -#usr/share/gnump3d/Nomad/bug.html #usr/share/gnump3d/Nomad/error.html #usr/share/gnump3d/Nomad/gnump3d_themes_footer.tmpl #usr/share/gnump3d/Nomad/gnump3d_themes_header.tmpl @@ -235,7 +229,6 @@ usr/share/gnump3d #usr/share/gnump3d/SchwartzNGrau #usr/share/gnump3d/SchwartzNGrau/AUTHOR #usr/share/gnump3d/SchwartzNGrau/COPYING.html -#usr/share/gnump3d/SchwartzNGrau/bug.html #usr/share/gnump3d/SchwartzNGrau/clear.gif #usr/share/gnump3d/SchwartzNGrau/error.html #usr/share/gnump3d/SchwartzNGrau/index.html @@ -254,7 +247,6 @@ usr/share/gnump3d #usr/share/gnump3d/Tabular #usr/share/gnump3d/Tabular/AUTHOR #usr/share/gnump3d/Tabular/COPYING.html -#usr/share/gnump3d/Tabular/bug.html #usr/share/gnump3d/Tabular/error.html #usr/share/gnump3d/Tabular/extras.html #usr/share/gnump3d/Tabular/footer.tmpl @@ -276,7 +268,6 @@ usr/share/gnump3d #usr/share/gnump3d/Thexder #usr/share/gnump3d/Thexder/AUTHOR #usr/share/gnump3d/Thexder/COPYING.html -#usr/share/gnump3d/Thexder/bug.html #usr/share/gnump3d/Thexder/dig_temp2_01.jpg #usr/share/gnump3d/Thexder/dig_temp2_02.jpg #usr/share/gnump3d/Thexder/dig_temp2_03.gif @@ -308,7 +299,6 @@ usr/share/gnump3d #usr/share/gnump3d/default #usr/share/gnump3d/default/AUTHOR #usr/share/gnump3d/default/COPYING.html -#usr/share/gnump3d/default/bug.html #usr/share/gnump3d/default/error.html #usr/share/gnump3d/default/footer.tmpl #usr/share/gnump3d/default/header.tmpl @@ -328,7 +318,6 @@ usr/share/gnump3d #usr/share/gnump3d/dotNET #usr/share/gnump3d/dotNET/AUTHOR #usr/share/gnump3d/dotNET/COPYING.html -#usr/share/gnump3d/dotNET/bug.html #usr/share/gnump3d/dotNET/content.tmpl #usr/share/gnump3d/dotNET/error.html #usr/share/gnump3d/dotNET/header.tmpl @@ -365,7 +354,6 @@ usr/share/gnump3d #usr/share/gnump3d/nausicaa #usr/share/gnump3d/nausicaa/AUTHOR #usr/share/gnump3d/nausicaa/COPYING.html -#usr/share/gnump3d/nausicaa/bug.html #usr/share/gnump3d/nausicaa/error.html #usr/share/gnump3d/nausicaa/extras.html #usr/share/gnump3d/nausicaa/index.html @@ -382,7 +370,6 @@ usr/share/gnump3d #usr/share/gnump3d/redgrey #usr/share/gnump3d/redgrey/AUTHOR #usr/share/gnump3d/redgrey/COPYING.html -#usr/share/gnump3d/redgrey/bug.html #usr/share/gnump3d/redgrey/error.html #usr/share/gnump3d/redgrey/header.tmpl #usr/share/gnump3d/redgrey/index.html @@ -400,5 +387,4 @@ usr/share/gnump3d var/cache/gnump3d var/cache/gnump3d/serving var/log/gnump3d -#var/mp3 var/mp3/info diff --git a/config/rootfiles/packages/hplip b/config/rootfiles/packages/hplip index 551afa7..74a2711 100644 --- a/config/rootfiles/packages/hplip +++ b/config/rootfiles/packages/hplip @@ -1,289 +1,242 @@ -usr/bin/hpijs -#usr/share/doc/hplip-2.7.10 -#usr/share/doc/hplip-2.7.10/COPYING -#usr/share/doc/hplip-2.7.10/README_LIBJPG -#usr/share/doc/hplip-2.7.10/about.html -#usr/share/doc/hplip-2.7.10/contacts.html -#usr/share/doc/hplip-2.7.10/downloads.html -#usr/share/doc/hplip-2.7.10/faqs.html -#usr/share/doc/hplip-2.7.10/features.html -#usr/share/doc/hplip-2.7.10/howtos -#usr/share/doc/hplip-2.7.10/howtos/build.html -#usr/share/doc/hplip-2.7.10/howtos/faxing.html -#usr/share/doc/hplip-2.7.10/howtos/index.html -#usr/share/doc/hplip-2.7.10/howtos/install.html -#usr/share/doc/hplip-2.7.10/howtos/io.html -#usr/share/doc/hplip-2.7.10/howtos/known.html -#usr/share/doc/hplip-2.7.10/howtos/negative.html -#usr/share/doc/hplip-2.7.10/howtos/other.html -#usr/share/doc/hplip-2.7.10/howtos/pcard.html -#usr/share/doc/hplip-2.7.10/howtos/printing.html -#usr/share/doc/hplip-2.7.10/howtos/scanning.html -#usr/share/doc/hplip-2.7.10/howtos/toolbox.html -#usr/share/doc/hplip-2.7.10/howtos/uninstall.html -#usr/share/doc/hplip-2.7.10/images -#usr/share/doc/hplip-2.7.10/images/Screenshot-xsane.png -#usr/share/doc/hplip-2.7.10/images/back.png -#usr/share/doc/hplip-2.7.10/images/button.png -#usr/share/doc/hplip-2.7.10/images/circular.gif -#usr/share/doc/hplip-2.7.10/images/cups_device_list.png -#usr/share/doc/hplip-2.7.10/images/cups_left.png -#usr/share/doc/hplip-2.7.10/images/cups_model_list.png -#usr/share/doc/hplip-2.7.10/images/cups_opening.png -#usr/share/doc/hplip-2.7.10/images/cups_printer_model.png -#usr/share/doc/hplip-2.7.10/images/download.png -#usr/share/doc/hplip-2.7.10/images/favicon.ico -#usr/share/doc/hplip-2.7.10/images/favicon2.ico -#usr/share/doc/hplip-2.7.10/images/fullbleed_1.png -#usr/share/doc/hplip-2.7.10/images/fullbleed_2.png -#usr/share/doc/hplip-2.7.10/images/fullbleed_3.png -#usr/share/doc/hplip-2.7.10/images/fullbleed_4.png -#usr/share/doc/hplip-2.7.10/images/gs_hpijs.png -#usr/share/doc/hplip-2.7.10/images/hp-tux-printer.png -#usr/share/doc/hplip-2.7.10/images/hp_invent_logo.png -#usr/share/doc/hplip-2.7.10/images/hplip_overview.png -#usr/share/doc/hplip-2.7.10/images/hpliplogo.png -#usr/share/doc/hplip-2.7.10/images/hplogo.png -#usr/share/doc/hplip-2.7.10/images/hplogo2.png -#usr/share/doc/hplip-2.7.10/images/linux_printing_logo.png -#usr/share/doc/hplip-2.7.10/images/linuxlogo.png -#usr/share/doc/hplip-2.7.10/images/network_appssocket.png -#usr/share/doc/hplip-2.7.10/images/network_device_list.png -#usr/share/doc/hplip-2.7.10/images/network_device_uri.png -#usr/share/doc/hplip-2.7.10/images/network_model_list.png -#usr/share/doc/hplip-2.7.10/images/osi_certified.png -#usr/share/doc/hplip-2.7.10/images/python-logo.png -#usr/share/doc/hplip-2.7.10/images/rest2web.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_functions_copies.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_functions_fax.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_functions_unload.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_functions_xsane.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_hp_setup_step1.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_hp_setup_step2.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_hp_setup_step3.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_hp_setup_step4.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_hp_setup_step5.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_hp_setup_step6.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_installer_1.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_installer_10_postfix.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_installer_11.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_installer_12.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_installer_13.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_installer_14.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_installer_15.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_installer_2.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_installer_3.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_installer_4.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_installer_5.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_installer_6.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_installer_7_postfix.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_installer_9_postfix.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_toolbox_emailalerts.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_toolbox_functions.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_toolbox_functions_autorefresh.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_toolbox_functions_commands.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_toolbox_print_control.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_toolbox_print_functions.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_toolbox_print_print.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_toolbox_print_print1.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_toolbox_print_settings.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_toolbox_settings.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_toolbox_status.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_toolbox_supplies.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_toolbox_tools.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_functions_copies.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_functions_fax.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_functions_unload.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_functions_xsane.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_hp_setup_step1.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_hp_setup_step2.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_hp_setup_step3.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_hp_setup_step4.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_hp_setup_step5.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_hp_setup_step6.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_installer_1.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_installer_10_postfix.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_installer_11.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_installer_12.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_installer_13.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_installer_14.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_installer_15.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_installer_2.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_installer_3.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_installer_4.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_installer_5.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_installer_6.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_installer_7_postfix.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_installer_9_postfix.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_toolbox_emailalerts.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_toolbox_functions.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_toolbox_functions_autorefresh.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_toolbox_functions_commands.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_toolbox_print_control.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_toolbox_print_functions.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_toolbox_print_print.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_toolbox_print_print1.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_toolbox_print_settings.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_toolbox_settings.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_toolbox_status.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_toolbox_supplies.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_toolbox_tools.png -#usr/share/doc/hplip-2.7.10/images/sflogo.png -#usr/share/doc/hplip-2.7.10/images/topbar.png -#usr/share/doc/hplip-2.7.10/images/tux.png -#usr/share/doc/hplip-2.7.10/images/tuxlogo.png -#usr/share/doc/hplip-2.7.10/images/tuxlogo2.png -#usr/share/doc/hplip-2.7.10/images/view.png -#usr/share/doc/hplip-2.7.10/images/yast_hardware.png -#usr/share/doc/hplip-2.7.10/images/yast_opening_hw.png -#usr/share/doc/hplip-2.7.10/images/yast_other_configure.png -#usr/share/doc/hplip-2.7.10/images/yast_other_kind.png -#usr/share/doc/hplip-2.7.10/images/yast_other_printer.png -#usr/share/doc/hplip-2.7.10/images/yast_printer_model.png -#usr/share/doc/hplip-2.7.10/index.html -#usr/share/doc/hplip-2.7.10/install -#usr/share/doc/hplip-2.7.10/install/index.html -#usr/share/doc/hplip-2.7.10/install/install -#usr/share/doc/hplip-2.7.10/install/install/index.html -#usr/share/doc/hplip-2.7.10/install/manual -#usr/share/doc/hplip-2.7.10/install/manual/configure.html -#usr/share/doc/hplip-2.7.10/install/manual/distros -#usr/share/doc/hplip-2.7.10/install/manual/distros/centos.html -#usr/share/doc/hplip-2.7.10/install/manual/distros/debian.html -#usr/share/doc/hplip-2.7.10/install/manual/distros/fedora_core.html -#usr/share/doc/hplip-2.7.10/install/manual/distros/freebsd.html -#usr/share/doc/hplip-2.7.10/install/manual/distros/gentoo.html -#usr/share/doc/hplip-2.7.10/install/manual/distros/index.html -#usr/share/doc/hplip-2.7.10/install/manual/distros/lfs.html -#usr/share/doc/hplip-2.7.10/install/manual/distros/linspire.html -#usr/share/doc/hplip-2.7.10/install/manual/distros/mac.html -#usr/share/doc/hplip-2.7.10/install/manual/distros/mandriva.html -#usr/share/doc/hplip-2.7.10/install/manual/distros/mepis.html -#usr/share/doc/hplip-2.7.10/install/manual/distros/novell.html -#usr/share/doc/hplip-2.7.10/install/manual/distros/other.html -#usr/share/doc/hplip-2.7.10/install/manual/distros/redhat.html -#usr/share/doc/hplip-2.7.10/install/manual/distros/redhatenterprise.html -#usr/share/doc/hplip-2.7.10/install/manual/distros/slackware.html -#usr/share/doc/hplip-2.7.10/install/manual/distros/ubuntu.html -#usr/share/doc/hplip-2.7.10/install/manual/distros/windows.html -#usr/share/doc/hplip-2.7.10/install/manual/distros/xandros.html -#usr/share/doc/hplip-2.7.10/install/manual/download.html -#usr/share/doc/hplip-2.7.10/install/manual/final.html -#usr/share/doc/hplip-2.7.10/install/manual/hp_setup.html -#usr/share/doc/hplip-2.7.10/install/manual/index.html -#usr/share/doc/hplip-2.7.10/install/manual/make.html -#usr/share/doc/hplip-2.7.10/install/manual/make_install.html -#usr/share/doc/hplip-2.7.10/install/manual/permissions.html -#usr/share/doc/hplip-2.7.10/install/step1 -#usr/share/doc/hplip-2.7.10/install/step1/apt.html -#usr/share/doc/hplip-2.7.10/install/step1/index.html -#usr/share/doc/hplip-2.7.10/install/step1/rpm.html -#usr/share/doc/hplip-2.7.10/install/step2 -#usr/share/doc/hplip-2.7.10/install/step2/debian.html -#usr/share/doc/hplip-2.7.10/install/step2/fc4.html -#usr/share/doc/hplip-2.7.10/install/step2/freebsd.html -#usr/share/doc/hplip-2.7.10/install/step2/index.html -#usr/share/doc/hplip-2.7.10/install/step2/mandriva06.html -#usr/share/doc/hplip-2.7.10/install/step2/other.html -#usr/share/doc/hplip-2.7.10/install/step2/slackware.html -#usr/share/doc/hplip-2.7.10/install/step2/suse10.html -#usr/share/doc/hplip-2.7.10/install/step2/ubuntu510.html -#usr/share/doc/hplip-2.7.10/install/step2/ubuntu606.html -#usr/share/doc/hplip-2.7.10/install/step3 -#usr/share/doc/hplip-2.7.10/install/step3/index.html -#usr/share/doc/hplip-2.7.10/install/step4 -#usr/share/doc/hplip-2.7.10/install/step4/cups -#usr/share/doc/hplip-2.7.10/install/step4/cups/index.html -#usr/share/doc/hplip-2.7.10/install/step4/cups/local.html -#usr/share/doc/hplip-2.7.10/install/step4/cups/net.html -#usr/share/doc/hplip-2.7.10/install/step4/index.html -#usr/share/doc/hplip-2.7.10/install/step4/setup -#usr/share/doc/hplip-2.7.10/install/step4/setup/index.html -#usr/share/doc/hplip-2.7.10/install/step4/setup/local.html -#usr/share/doc/hplip-2.7.10/install/step4/setup/net.html -#usr/share/doc/hplip-2.7.10/install/step4/suse -#usr/share/doc/hplip-2.7.10/install/step4/suse/index.html -#usr/share/doc/hplip-2.7.10/legal.html -#usr/share/doc/hplip-2.7.10/license.html -#usr/share/doc/hplip-2.7.10/mailing_lists.html -#usr/share/doc/hplip-2.7.10/other_support.html -#usr/share/doc/hplip-2.7.10/release_notes.html -#usr/share/doc/hplip-2.7.10/screenshots.html -#usr/share/doc/hplip-2.7.10/styles -#usr/share/doc/hplip-2.7.10/styles/default.css -#usr/share/doc/hplip-2.7.10/styles/rest.css -#usr/share/doc/hplip-2.7.10/support_statement.html -#usr/share/doc/hplip-2.7.10/supported_devices -#usr/share/doc/hplip-2.7.10/supported_devices/color_laser.html -#usr/share/doc/hplip-2.7.10/supported_devices/color_laser_mfp.html -#usr/share/doc/hplip-2.7.10/supported_devices/combined.html -#usr/share/doc/hplip-2.7.10/supported_devices/edgeline.html -#usr/share/doc/hplip-2.7.10/supported_devices/index.html -#usr/share/doc/hplip-2.7.10/supported_devices/inkjet.html -#usr/share/doc/hplip-2.7.10/supported_devices/inkjet_aio.html -#usr/share/doc/hplip-2.7.10/supported_devices/laser.html -#usr/share/doc/hplip-2.7.10/supported_devices/mono_laser_mfp.html -#usr/share/doc/hplip-2.7.10/supported_devices/photosmart.html -#usr/share/doc/hplip-2.7.10/supported_devices/scanjet.html -#usr/share/doc/hplip-2.7.10/supported_devices/unsupported.html -#usr/share/doc/hplip-2.7.10/system_requirements.html -#usr/share/doc/hplip-2.7.10/tech_docs -#usr/share/doc/hplip-2.7.10/tech_docs/device_classes.html -#usr/share/doc/hplip-2.7.10/tech_docs/hpijs.html -#usr/share/doc/hplip-2.7.10/tech_docs/index.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/align.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/check.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/clean.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/colorcal.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/fab.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/firmware.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/hpssd.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/index.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/info.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/install.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/levels.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/makecopies.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/makeuri.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/print.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/probe.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/scan.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/sendfax.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/setup.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/testpage.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/timedate.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/toolbox.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/unload.html -#usr/share/doc/hplip-2.7.10/tech_docs/overview.html -#usr/share/doc/hplip-2.7.10/tech_docs/page_sizes.html -#usr/share/doc/hplip-2.7.10/tech_docs/printable_areas.html -#usr/share/doc/hplip-2.7.10/tech_docs/tarball_install.html -#usr/share/doc/hplip-2.7.10/troubleshooting -#usr/share/doc/hplip-2.7.10/troubleshooting/build.html -#usr/share/doc/hplip-2.7.10/troubleshooting/distro.html -#usr/share/doc/hplip-2.7.10/troubleshooting/faxing.html -#usr/share/doc/hplip-2.7.10/troubleshooting/index.html -#usr/share/doc/hplip-2.7.10/troubleshooting/install.html -#usr/share/doc/hplip-2.7.10/troubleshooting/io.html -#usr/share/doc/hplip-2.7.10/troubleshooting/network.html -#usr/share/doc/hplip-2.7.10/troubleshooting/other.html -#usr/share/doc/hplip-2.7.10/troubleshooting/parallel.html -#usr/share/doc/hplip-2.7.10/troubleshooting/pcard.html -#usr/share/doc/hplip-2.7.10/troubleshooting/printing.html -#usr/share/doc/hplip-2.7.10/troubleshooting/scanning.html -#usr/share/doc/hplip-2.7.10/troubleshooting/toolbox.html -usr/share/foomatic/db/source/PPD/HP/HP_Color_LaserJet_3800.ppd.gz -usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_4Si_v2011.110.ppd.gz -usr/share/foomatic/db/source/PPD/HP/hp_LaserJet_4200_Series.ppd.gz -usr/share/foomatic/db/source/printer/HP-OfficeJet_J3600.xml -usr/share/foomatic/db/source/printer/HP-OfficeJet_J5500.xml -usr/share/foomatic/db/source/printer/HP-OfficeJet_Pro_K8600.xml -usr/share/foomatic/db/source/printer/HP-Officejet_K7100.xml -usr/share/foomatic/db/source/printer/HP-PhotoSmart_C4380.xml -usr/share/foomatic/db/source/printer/HP-PhotoSmart_C6200.xml -usr/share/foomatic/db/source/printer/HP-PhotoSmart_C7200.xml -usr/share/foomatic/db/source/printer/HP-PhotoSmart_C8100.xml -usr/share/foomatic/db/source/printer/HP-PhotoSmart_D5300.xml -usr/share/foomatic/db/source/printer/HP-PhotoSmart_D7200.xml -usr/share/foomatic/db/source/printer/HP-PhotoSmart_D7400.xml +#usr/share/doc/hplip-3.12.6 +#usr/share/doc/hplip-3.12.6/COPYING +#usr/share/doc/hplip-3.12.6/README_LIBJPG +#usr/share/doc/hplip-3.12.6/commandline.html +#usr/share/doc/hplip-3.12.6/copying.html +#usr/share/doc/hplip-3.12.6/copyright +#usr/share/doc/hplip-3.12.6/devicemanager.html +#usr/share/doc/hplip-3.12.6/faxtrouble.html +#usr/share/doc/hplip-3.12.6/gettinghelp.html +#usr/share/doc/hplip-3.12.6/hpscan.html +#usr/share/doc/hplip-3.12.6/images +#usr/share/doc/hplip-3.12.6/images/favicon.ico +#usr/share/doc/hplip-3.12.6/images/print.png +#usr/share/doc/hplip-3.12.6/images/toolbox_actions.png +#usr/share/doc/hplip-3.12.6/images/toolbox_fax.png +#usr/share/doc/hplip-3.12.6/images/toolbox_print_control.png +#usr/share/doc/hplip-3.12.6/images/toolbox_print_settings.png +#usr/share/doc/hplip-3.12.6/images/toolbox_status.png +#usr/share/doc/hplip-3.12.6/images/toolbox_supplies.png +#usr/share/doc/hplip-3.12.6/images/xsane.png +#usr/share/doc/hplip-3.12.6/index.html +#usr/share/doc/hplip-3.12.6/mainttask.html +#usr/share/doc/hplip-3.12.6/plugins.html +#usr/share/doc/hplip-3.12.6/print.html +#usr/share/doc/hplip-3.12.6/printing.html +#usr/share/doc/hplip-3.12.6/printoptions.html +#usr/share/doc/hplip-3.12.6/printtroubleshooting.html +#usr/share/doc/hplip-3.12.6/scanning.html +#usr/share/doc/hplip-3.12.6/scantrouble.html +#usr/share/doc/hplip-3.12.6/sendfax.html +#usr/share/doc/hplip-3.12.6/setup.html +#usr/share/doc/hplip-3.12.6/styles +#usr/share/doc/hplip-3.12.6/styles/css.css +#usr/share/doc/hplip-3.12.6/systray.html +#usr/share/doc/hplip-3.12.6/troubleshooting.html +#usr/share/doc/hplip-3.12.6/uninstalling.html +#usr/share/doc/hplip-3.12.6/upgrading.html usr/share/hplip +#usr/share/ppd +usr/share/ppd/HP +#usr/share/ppd/HP/hp-business_inkjet_2250-ps.ppd.gz +#usr/share/ppd/HP/hp-business_inkjet_2280-ps.ppd.gz +#usr/share/ppd/HP/hp-business_inkjet_2300-ps.ppd.gz +#usr/share/ppd/HP/hp-business_inkjet_2600-ps.ppd.gz +#usr/share/ppd/HP/hp-business_inkjet_2800-ps.ppd.gz +#usr/share/ppd/HP/hp-business_inkjet_3000-ps.ppd.gz +#usr/share/ppd/HP/hp-cm8050_mfp_with_edgeline-ps.ppd.gz +#usr/share/ppd/HP/hp-cm8060_mfp_with_edgeline-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_2500-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_2500_series-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_2550_series-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_2605-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_2605dn-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_2605dtn-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_2700-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_2700n-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_2800-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_2820-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_2830-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_2840-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_3000-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_3700-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_3700n-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_3800-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_4500-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_4550-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_4600-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_4600_series-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_4610-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_4650-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_4700-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_4730mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_5500-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_5550-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_5m-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_8500-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_8550-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_9500-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_9500_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cm1015-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cm1017-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cm1312_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cm1312nfi_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cm2320_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cm2320fxi_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cm2320n_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cm2320nf_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cm3530_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cm4540_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cm4730_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cm6030_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cm6040_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cm6049_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cp1514n-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cp1515n-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cp1518ni-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cp2025-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cp2025dn-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cp2025n-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cp2025x-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cp3505-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cp3525-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cp4005-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cp4020_series-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cp4520_series-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cp5225-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cp5225dn-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cp5225n-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cp5520_series-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cp6015-ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_4000ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_4020ps-ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_4500mfp.ppd.gz +#usr/share/ppd/HP/hp-designjet_4500ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_4520mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_4520ps-ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_t1100ps_24in-ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_t1100ps_44in-ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_t1120ps_24in-ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_t1120ps_44in-ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_t1200_postscript-ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_t1300_postscript-ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_t2300_postscript-ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_t7100ps-ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_t7100ps_monochrome-ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_t770_postscript-ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_t770ps_24in-ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_t790ps_24in-ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_t790ps_44in-ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_z6100ps_42in_photo-ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_z6100ps_60in_photo-ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_z6200_42in_photo-ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_z6200_60in_photo-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_100_color_mfp_m175-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_1200-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_1200n-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_1220-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_1220se-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_1300-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_1300n-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_1300xi-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_1320-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_1320_series-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_1320n-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_1320nw-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_1320tn-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_200_colormfp_m275-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_2100-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_2100_series-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_2200-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_2200_series-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_2300-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_2300_series-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_2410-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_2420-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_2430-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_3015-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_3020-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_3030-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_3050-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_3052-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_3200m-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_3300_3310_3320-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_3380-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_3390-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_4-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_4000_series-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_400_m401-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_400_m401d-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_400_mfp_m425-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_4050_series-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_4100_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_4100_series-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_4200-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_4240-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_4250-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_4300-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_4345_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_4350-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_4_plus-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_4ml-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_4mp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_4si-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_4v-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_5000-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_5000_series-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_500_color_m551-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_500_color_mfp_m575-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_500_mfp_m525-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_5100_series-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_5200-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_5200l-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_5200lx-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_5mp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_5p-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_5si-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_5si_mopier-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_600_m601_m602_m603-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_6mp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_6p-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_8000-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_8000_series-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_8100_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_8100_series-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_8150_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_9000_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_9000_series-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_9040-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_9040_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_9050-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_9050_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_9055mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_9065mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_cm1410_series-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_cp1520_series-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_m1522_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_m1522n_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_m1522nf_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_m1530_mfp_series-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_m2727_mfp_series-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_m3027_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_m3035_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_m4345_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_m4349_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_m4555_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_m5025_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_m5035_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_m9040_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_m9050_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_m9059_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_p2015_series-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_p2055_series-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_p3004-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_p3005-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_p3010_series-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_p4010_series-ps.ppd.gz +#usr/share/ppd/HP/hp-lj_300_400_color_m351_m451-ps.ppd.gz +#usr/share/ppd/HP/hp-lj_300_400_color_mfp_m375_m475-ps.ppd.gz +#usr/share/ppd/HP/hp-mopier_240-ps.ppd.gz +#usr/share/ppd/HP/hp-mopier_320-ps.ppd.gz +#usr/share/ppd/HP/hp-officejet_pro_8000_enterprise_a811a-ps.ppd.gz diff --git a/config/rootfiles/packages/libexif b/config/rootfiles/packages/libexif new file mode 100644 index 0000000..9efbc1f --- /dev/null +++ b/config/rootfiles/packages/libexif @@ -0,0 +1,64 @@ +#usr/include/libexif +#usr/include/libexif/_stdint.h +#usr/include/libexif/exif-byte-order.h +#usr/include/libexif/exif-content.h +#usr/include/libexif/exif-data-type.h +#usr/include/libexif/exif-data.h +#usr/include/libexif/exif-entry.h +#usr/include/libexif/exif-format.h +#usr/include/libexif/exif-ifd.h +#usr/include/libexif/exif-loader.h +#usr/include/libexif/exif-log.h +#usr/include/libexif/exif-mem.h +#usr/include/libexif/exif-mnote-data.h +#usr/include/libexif/exif-tag.h +#usr/include/libexif/exif-utils.h +#usr/lib/libexif.la +#usr/lib/libexif.so +usr/lib/libexif.so.12 +usr/lib/libexif.so.12.3.3 +usr/lib/pkgconfig/libexif.pc +#usr/share/doc/libexif +#usr/share/doc/libexif/ABOUT-NLS +#usr/share/doc/libexif/AUTHORS +#usr/share/doc/libexif/COPYING +#usr/share/doc/libexif/ChangeLog +#usr/share/doc/libexif/NEWS +#usr/share/doc/libexif/README +#usr/share/locale/be/LC_MESSAGES/libexif-12.mo +#usr/share/locale/bs +#usr/share/locale/bs/LC_MESSAGES +#usr/share/locale/bs/LC_MESSAGES/libexif-12.mo +#usr/share/locale/cs/LC_MESSAGES/libexif-12.mo +#usr/share/locale/da/LC_MESSAGES/libexif-12.mo +#usr/share/locale/de/LC_MESSAGES/libexif-12.mo +#usr/share/locale/en_AU +#usr/share/locale/en_AU/LC_MESSAGES +#usr/share/locale/en_AU/LC_MESSAGES/libexif-12.mo +#usr/share/locale/en_CA +#usr/share/locale/en_CA/LC_MESSAGES +#usr/share/locale/en_CA/LC_MESSAGES/libexif-12.mo +#usr/share/locale/en_GB/LC_MESSAGES/libexif-12.mo +#usr/share/locale/es/LC_MESSAGES/libexif-12.mo +#usr/share/locale/fr/LC_MESSAGES/libexif-12.mo +#usr/share/locale/it/LC_MESSAGES/libexif-12.mo +#usr/share/locale/ja/LC_MESSAGES/libexif-12.mo +#usr/share/locale/nl/LC_MESSAGES/libexif-12.mo +#usr/share/locale/pl/LC_MESSAGES/libexif-12.mo +#usr/share/locale/pt +#usr/share/locale/pt/LC_MESSAGES +#usr/share/locale/pt/LC_MESSAGES/libexif-12.mo +#usr/share/locale/pt_BR/LC_MESSAGES/libexif-12.mo +#usr/share/locale/ru/LC_MESSAGES/libexif-12.mo +#usr/share/locale/sk/LC_MESSAGES/libexif-12.mo +#usr/share/locale/sq +#usr/share/locale/sq/LC_MESSAGES +#usr/share/locale/sq/LC_MESSAGES/libexif-12.mo +#usr/share/locale/sr +#usr/share/locale/sr/LC_MESSAGES +#usr/share/locale/sr/LC_MESSAGES/libexif-12.mo +#usr/share/locale/sv/LC_MESSAGES/libexif-12.mo +#usr/share/locale/tr/LC_MESSAGES/libexif-12.mo +#usr/share/locale/uk/LC_MESSAGES/libexif-12.mo +#usr/share/locale/vi/LC_MESSAGES/libexif-12.mo +#usr/share/locale/zh_CN/LC_MESSAGES/libexif-12.mo diff --git a/config/rootfiles/packages/libogg b/config/rootfiles/packages/libogg index e9ba57a..21a8d63 100644 --- a/config/rootfiles/packages/libogg +++ b/config/rootfiles/packages/libogg @@ -4,85 +4,83 @@ #usr/include/ogg/os_types.h #usr/lib/libogg.a #usr/lib/libogg.la -usr/lib/libogg.so +#usr/lib/libogg.so usr/lib/libogg.so.0 -usr/lib/libogg.so.0.6.0 +usr/lib/libogg.so.0.8.0 #usr/lib/pkgconfig/ogg.pc #usr/share/aclocal/ogg.m4 -#usr/share/doc/libogg-1.1.4 -#usr/share/doc/libogg-1.1.4/framing.html -#usr/share/doc/libogg-1.1.4/index.html -#usr/share/doc/libogg-1.1.4/ogg -#usr/share/doc/libogg-1.1.4/ogg-multiplex.html -#usr/share/doc/libogg-1.1.4/ogg/bitpacking.html -#usr/share/doc/libogg-1.1.4/ogg/datastructures.html -#usr/share/doc/libogg-1.1.4/ogg/decoding.html -#usr/share/doc/libogg-1.1.4/ogg/encoding.html -#usr/share/doc/libogg-1.1.4/ogg/general.html -#usr/share/doc/libogg-1.1.4/ogg/index.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_packet.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_packet_clear.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_page.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_page_bos.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_page_checksum_set.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_page_continued.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_page_eos.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_page_granulepos.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_page_packets.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_page_pageno.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_page_serialno.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_page_version.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_stream_clear.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_stream_destroy.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_stream_eos.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_stream_flush.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_stream_init.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_stream_packetin.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_stream_packetout.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_stream_packetpeek.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_stream_pagein.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_stream_pageout.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_stream_reset.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_stream_reset_serialno.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_stream_state.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_sync_buffer.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_sync_clear.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_sync_destroy.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_sync_init.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_sync_pageout.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_sync_pageseek.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_sync_reset.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_sync_state.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_sync_wrote.html -#usr/share/doc/libogg-1.1.4/ogg/oggpack_adv.html -#usr/share/doc/libogg-1.1.4/ogg/oggpack_adv1.html -#usr/share/doc/libogg-1.1.4/ogg/oggpack_bits.html -#usr/share/doc/libogg-1.1.4/ogg/oggpack_buffer.html -#usr/share/doc/libogg-1.1.4/ogg/oggpack_bytes.html -#usr/share/doc/libogg-1.1.4/ogg/oggpack_get_buffer.html -#usr/share/doc/libogg-1.1.4/ogg/oggpack_look.html -#usr/share/doc/libogg-1.1.4/ogg/oggpack_look1.html -#usr/share/doc/libogg-1.1.4/ogg/oggpack_read.html -#usr/share/doc/libogg-1.1.4/ogg/oggpack_read1.html -#usr/share/doc/libogg-1.1.4/ogg/oggpack_readinit.html -#usr/share/doc/libogg-1.1.4/ogg/oggpack_reset.html -#usr/share/doc/libogg-1.1.4/ogg/oggpack_write.html -#usr/share/doc/libogg-1.1.4/ogg/oggpack_writealign.html -#usr/share/doc/libogg-1.1.4/ogg/oggpack_writeclear.html -#usr/share/doc/libogg-1.1.4/ogg/oggpack_writecopy.html -#usr/share/doc/libogg-1.1.4/ogg/oggpack_writeinit.html -#usr/share/doc/libogg-1.1.4/ogg/oggpack_writetrunc.html -#usr/share/doc/libogg-1.1.4/ogg/overview.html -#usr/share/doc/libogg-1.1.4/ogg/reference.html -#usr/share/doc/libogg-1.1.4/ogg/style.css -#usr/share/doc/libogg-1.1.4/ogg/vorbis_comment.html -#usr/share/doc/libogg-1.1.4/ogg/vorbis_info.html -#usr/share/doc/libogg-1.1.4/oggstream.html -#usr/share/doc/libogg-1.1.4/rfc3533.txt -#usr/share/doc/libogg-1.1.4/rfc3534.txt -#usr/share/doc/libogg-1.1.4/stream.png -#usr/share/doc/libogg-1.1.4/vorbisword2.png -#usr/share/doc/libogg-1.1.4/white-ogg.png -#usr/share/doc/libogg-1.1.4/white-xifish.png -#usr/share/doc/libogg-1.1.4/rfc5334.txt -#usr/share/doc/libogg-1.1.4/skeleton.html +#usr/share/doc/libogg-1.3.0 +#usr/share/doc/libogg-1.3.0/framing.html +#usr/share/doc/libogg-1.3.0/index.html +#usr/share/doc/libogg-1.3.0/ogg +#usr/share/doc/libogg-1.3.0/ogg-multiplex.html +#usr/share/doc/libogg-1.3.0/ogg/bitpacking.html +#usr/share/doc/libogg-1.3.0/ogg/datastructures.html +#usr/share/doc/libogg-1.3.0/ogg/decoding.html +#usr/share/doc/libogg-1.3.0/ogg/encoding.html +#usr/share/doc/libogg-1.3.0/ogg/general.html +#usr/share/doc/libogg-1.3.0/ogg/index.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_packet.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_packet_clear.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_page.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_page_bos.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_page_checksum_set.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_page_continued.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_page_eos.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_page_granulepos.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_page_packets.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_page_pageno.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_page_serialno.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_page_version.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_stream_clear.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_stream_destroy.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_stream_eos.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_stream_flush.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_stream_init.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_stream_packetin.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_stream_packetout.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_stream_packetpeek.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_stream_pagein.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_stream_pageout.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_stream_pageout_fill.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_stream_reset.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_stream_reset_serialno.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_stream_state.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_sync_buffer.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_sync_clear.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_sync_destroy.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_sync_init.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_sync_pageout.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_sync_pageseek.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_sync_reset.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_sync_state.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_sync_wrote.html +#usr/share/doc/libogg-1.3.0/ogg/oggpack_adv.html +#usr/share/doc/libogg-1.3.0/ogg/oggpack_adv1.html +#usr/share/doc/libogg-1.3.0/ogg/oggpack_bits.html +#usr/share/doc/libogg-1.3.0/ogg/oggpack_buffer.html +#usr/share/doc/libogg-1.3.0/ogg/oggpack_bytes.html +#usr/share/doc/libogg-1.3.0/ogg/oggpack_get_buffer.html +#usr/share/doc/libogg-1.3.0/ogg/oggpack_look.html +#usr/share/doc/libogg-1.3.0/ogg/oggpack_look1.html +#usr/share/doc/libogg-1.3.0/ogg/oggpack_read.html +#usr/share/doc/libogg-1.3.0/ogg/oggpack_read1.html +#usr/share/doc/libogg-1.3.0/ogg/oggpack_readinit.html +#usr/share/doc/libogg-1.3.0/ogg/oggpack_reset.html +#usr/share/doc/libogg-1.3.0/ogg/oggpack_write.html +#usr/share/doc/libogg-1.3.0/ogg/oggpack_writealign.html +#usr/share/doc/libogg-1.3.0/ogg/oggpack_writeclear.html +#usr/share/doc/libogg-1.3.0/ogg/oggpack_writecopy.html +#usr/share/doc/libogg-1.3.0/ogg/oggpack_writeinit.html +#usr/share/doc/libogg-1.3.0/ogg/oggpack_writetrunc.html +#usr/share/doc/libogg-1.3.0/ogg/overview.html +#usr/share/doc/libogg-1.3.0/ogg/reference.html +#usr/share/doc/libogg-1.3.0/ogg/style.css +#usr/share/doc/libogg-1.3.0/oggstream.html +#usr/share/doc/libogg-1.3.0/rfc3533.txt +#usr/share/doc/libogg-1.3.0/rfc5334.txt +#usr/share/doc/libogg-1.3.0/skeleton.html +#usr/share/doc/libogg-1.3.0/stream.png +#usr/share/doc/libogg-1.3.0/vorbisword2.png +#usr/share/doc/libogg-1.3.0/white-ogg.png +#usr/share/doc/libogg-1.3.0/white-xifish.png diff --git a/config/rootfiles/packages/libsolv b/config/rootfiles/packages/libsolv index 587d514..de1d12d 100644 --- a/config/rootfiles/packages/libsolv +++ b/config/rootfiles/packages/libsolv @@ -1,13 +1,13 @@ #usr/include/solv #usr/include/solv/bitmap.h #usr/include/solv/chksum.h +#usr/include/solv/dataiterator.h #usr/include/solv/dirpool.h #usr/include/solv/evr.h #usr/include/solv/hash.h #usr/include/solv/knownid.h #usr/include/solv/policy.h #usr/include/solv/pool.h -#usr/include/solv/pool_fileconflicts.h #usr/include/solv/poolarch.h #usr/include/solv/poolid.h #usr/include/solv/pooltypes.h @@ -15,22 +15,9 @@ #usr/include/solv/problems.h #usr/include/solv/queue.h #usr/include/solv/repo.h -#usr/include/solv/repo_content.h -#usr/include/solv/repo_deb.h -#usr/include/solv/repo_deltainfoxml.h -#usr/include/solv/repo_helix.h -#usr/include/solv/repo_products.h -#usr/include/solv/repo_releasefile_products.h -#usr/include/solv/repo_repomdxml.h -#usr/include/solv/repo_rpmdb.h -#usr/include/solv/repo_rpmmd.h #usr/include/solv/repo_solv.h -#usr/include/solv/repo_susetags.h -#usr/include/solv/repo_updateinfoxml.h #usr/include/solv/repo_write.h -#usr/include/solv/repo_zyppdb.h #usr/include/solv/repodata.h -#usr/include/solv/repopage.h #usr/include/solv/rules.h #usr/include/solv/solv_xfopen.h #usr/include/solv/solvable.h @@ -38,10 +25,14 @@ #usr/include/solv/solverdebug.h #usr/include/solv/solvversion.h #usr/include/solv/strpool.h +#usr/include/solv/testcase.h #usr/include/solv/tools_util.h #usr/include/solv/transaction.h #usr/include/solv/util.h -usr/lib/libsolv.so +#usr/lib/libsolv.so usr/lib/libsolv.so.0 -usr/lib/libsolvext.so +#usr/lib/libsolvext.so usr/lib/libsolvext.so.0 +#usr/share/cmake +#usr/share/cmake/Modules +#usr/share/cmake/Modules/FindLibSolv.cmake diff --git a/config/rootfiles/packages/libvorbis b/config/rootfiles/packages/libvorbis index 212e864..e7f7c3c 100644 --- a/config/rootfiles/packages/libvorbis +++ b/config/rootfiles/packages/libvorbis @@ -4,128 +4,167 @@ #usr/include/vorbis/vorbisfile.h #usr/lib/libvorbis.a #usr/lib/libvorbis.la -usr/lib/libvorbis.so +#usr/lib/libvorbis.so usr/lib/libvorbis.so.0 -usr/lib/libvorbis.so.0.4.3 +usr/lib/libvorbis.so.0.4.6 #usr/lib/libvorbisenc.a #usr/lib/libvorbisenc.la -usr/lib/libvorbisenc.so +#usr/lib/libvorbisenc.so usr/lib/libvorbisenc.so.2 -usr/lib/libvorbisenc.so.2.0.6 +usr/lib/libvorbisenc.so.2.0.9 #usr/lib/libvorbisfile.a #usr/lib/libvorbisfile.la -usr/lib/libvorbisfile.so +#usr/lib/libvorbisfile.so usr/lib/libvorbisfile.so.3 -usr/lib/libvorbisfile.so.3.3.2 +usr/lib/libvorbisfile.so.3.3.5 #usr/lib/pkgconfig/vorbis.pc #usr/lib/pkgconfig/vorbisenc.pc #usr/lib/pkgconfig/vorbisfile.pc #usr/share/aclocal/vorbis.m4 -#usr/share/doc/libvorbis-1.2.3 -#usr/share/doc/libvorbis-1.2.3/Vorbis_I_spec.cfg -#usr/share/doc/libvorbis-1.2.3/Vorbis_I_spec.css -#usr/share/doc/libvorbis-1.2.3/Vorbis_I_spec.html -#usr/share/doc/libvorbis-1.2.3/Vorbis_I_spec.pdf -#usr/share/doc/libvorbis-1.2.3/Vorbis_I_spec.tex -#usr/share/doc/libvorbis-1.2.3/eightphase.png -#usr/share/doc/libvorbis-1.2.3/evenlsp.png -#usr/share/doc/libvorbis-1.2.3/fish_xiph_org.png -#usr/share/doc/libvorbis-1.2.3/floor1_inverse_dB_table.html -#usr/share/doc/libvorbis-1.2.3/floorval.png -#usr/share/doc/libvorbis-1.2.3/fourphase.png -#usr/share/doc/libvorbis-1.2.3/framing.html -#usr/share/doc/libvorbis-1.2.3/helper.html -#usr/share/doc/libvorbis-1.2.3/index.html -#usr/share/doc/libvorbis-1.2.3/lspmap.png -#usr/share/doc/libvorbis-1.2.3/oddlsp.png -#usr/share/doc/libvorbis-1.2.3/oggstream.html -#usr/share/doc/libvorbis-1.2.3/programming.html -#usr/share/doc/libvorbis-1.2.3/rfc5215.txt -#usr/share/doc/libvorbis-1.2.3/rfc5215.xml -#usr/share/doc/libvorbis-1.2.3/squarepolar.png -#usr/share/doc/libvorbis-1.2.3/stereo.html -#usr/share/doc/libvorbis-1.2.3/stream.png -#usr/share/doc/libvorbis-1.2.3/v-comment.html -#usr/share/doc/libvorbis-1.2.3/vorbis-clip.txt -#usr/share/doc/libvorbis-1.2.3/vorbis-errors.txt -#usr/share/doc/libvorbis-1.2.3/vorbis-fidelity.html -#usr/share/doc/libvorbis-1.2.3/vorbis.html -#usr/share/doc/libvorbis-1.2.3/vorbisenc -#usr/share/doc/libvorbis-1.2.3/vorbisenc/changes.html -#usr/share/doc/libvorbis-1.2.3/vorbisenc/examples.html -#usr/share/doc/libvorbis-1.2.3/vorbisenc/index.html -#usr/share/doc/libvorbis-1.2.3/vorbisenc/ov_ectl_ratemanage2_arg.html -#usr/share/doc/libvorbis-1.2.3/vorbisenc/ov_ectl_ratemanage_arg.html -#usr/share/doc/libvorbis-1.2.3/vorbisenc/overview.html -#usr/share/doc/libvorbis-1.2.3/vorbisenc/reference.html -#usr/share/doc/libvorbis-1.2.3/vorbisenc/style.css -#usr/share/doc/libvorbis-1.2.3/vorbisenc/vorbis_encode_ctl.html -#usr/share/doc/libvorbis-1.2.3/vorbisenc/vorbis_encode_init.html -#usr/share/doc/libvorbis-1.2.3/vorbisenc/vorbis_encode_init_vbr.html -#usr/share/doc/libvorbis-1.2.3/vorbisenc/vorbis_encode_setup_init.html -#usr/share/doc/libvorbis-1.2.3/vorbisenc/vorbis_encode_setup_managed.html -#usr/share/doc/libvorbis-1.2.3/vorbisenc/vorbis_encode_setup_vbr.html -#usr/share/doc/libvorbis-1.2.3/vorbisenc/vorbis_info.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile -#usr/share/doc/libvorbis-1.2.3/vorbisfile/OggVorbis_File.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/callbacks.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/chaining_example_c.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/chainingexample.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/crosslap.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/datastructures.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/decoding.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/example.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/exampleindex.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/fileinfo.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/index.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/initialization.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_bitrate.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_bitrate_instant.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_callbacks.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_clear.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_comment.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_crosslap.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_fopen.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_info.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_open.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_open_callbacks.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_pcm_seek.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_pcm_seek_lap.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_pcm_seek_page.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_pcm_seek_page_lap.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_pcm_tell.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_pcm_total.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_raw_seek.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_raw_seek_lap.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_raw_tell.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_raw_total.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_read.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_read_float.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_seekable.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_serialnumber.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_streams.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_test.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_test_callbacks.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_test_open.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_time_seek.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_time_seek_lap.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_time_seek_page.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_time_seek_page_lap.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_time_tell.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_time_total.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/overview.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/reference.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/return.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/seekexample.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/seeking.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/seeking_example_c.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/seeking_test_c.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/seekingexample.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/style.css -#usr/share/doc/libvorbis-1.2.3/vorbisfile/threads.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/vorbis_comment.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/vorbis_info.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/vorbisfile_example_c.html -#usr/share/doc/libvorbis-1.2.3/vorbisword2.png -#usr/share/doc/libvorbis-1.2.3/wait.png -#usr/share/doc/libvorbis-1.2.3/white-xifish.png +#usr/share/doc/libvorbis-1.3.3 +#usr/share/doc/libvorbis-1.3.3/doxygen-build.stamp +#usr/share/doc/libvorbis-1.3.3/eightphase.png +#usr/share/doc/libvorbis-1.3.3/evenlsp.png +#usr/share/doc/libvorbis-1.3.3/fish_xiph_org.png +#usr/share/doc/libvorbis-1.3.3/floor1_inverse_dB_table.html +#usr/share/doc/libvorbis-1.3.3/floorval.png +#usr/share/doc/libvorbis-1.3.3/fourphase.png +#usr/share/doc/libvorbis-1.3.3/framing.html +#usr/share/doc/libvorbis-1.3.3/helper.html +#usr/share/doc/libvorbis-1.3.3/index.html +#usr/share/doc/libvorbis-1.3.3/libvorbis +#usr/share/doc/libvorbis-1.3.3/libvorbis/index.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/overview.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/reference.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/return.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/style.css +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_analysis.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_analysis_blockout.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_analysis_buffer.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_analysis_headerout.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_analysis_init.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_analysis_wrote.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_bitrate_addblock.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_bitrate_flushpacket.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_block.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_block_clear.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_block_init.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_comment.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_comment_add.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_comment_add_tag.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_comment_clear.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_comment_init.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_comment_query.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_comment_query_count.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_commentheader_out.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_dsp_clear.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_dsp_state.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_granule_time.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_info.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_info_blocksize.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_info_clear.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_info_init.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_packet_blocksize.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_synthesis.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_synthesis_blockin.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_synthesis_halfrate.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_synthesis_halfrate_p.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_synthesis_headerin.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_synthesis_idheader.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_synthesis_init.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_synthesis_lapout.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_synthesis_pcmout.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_synthesis_read.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_synthesis_restart.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_synthesis_trackonly.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_version_string.html +#usr/share/doc/libvorbis-1.3.3/lspmap.png +#usr/share/doc/libvorbis-1.3.3/oddlsp.png +#usr/share/doc/libvorbis-1.3.3/oggstream.html +#usr/share/doc/libvorbis-1.3.3/programming.html +#usr/share/doc/libvorbis-1.3.3/rfc5215.txt +#usr/share/doc/libvorbis-1.3.3/rfc5215.xml +#usr/share/doc/libvorbis-1.3.3/squarepolar.png +#usr/share/doc/libvorbis-1.3.3/stereo.html +#usr/share/doc/libvorbis-1.3.3/stream.png +#usr/share/doc/libvorbis-1.3.3/v-comment.html +#usr/share/doc/libvorbis-1.3.3/vorbis-clip.txt +#usr/share/doc/libvorbis-1.3.3/vorbis-errors.txt +#usr/share/doc/libvorbis-1.3.3/vorbis-fidelity.html +#usr/share/doc/libvorbis-1.3.3/vorbis.html +#usr/share/doc/libvorbis-1.3.3/vorbisenc +#usr/share/doc/libvorbis-1.3.3/vorbisenc/changes.html +#usr/share/doc/libvorbis-1.3.3/vorbisenc/examples.html +#usr/share/doc/libvorbis-1.3.3/vorbisenc/index.html +#usr/share/doc/libvorbis-1.3.3/vorbisenc/ovectl_ratemanage2_arg.html +#usr/share/doc/libvorbis-1.3.3/vorbisenc/ovectl_ratemanage_arg.html +#usr/share/doc/libvorbis-1.3.3/vorbisenc/overview.html +#usr/share/doc/libvorbis-1.3.3/vorbisenc/reference.html +#usr/share/doc/libvorbis-1.3.3/vorbisenc/style.css +#usr/share/doc/libvorbis-1.3.3/vorbisenc/vorbis_encode_ctl.html +#usr/share/doc/libvorbis-1.3.3/vorbisenc/vorbis_encode_init.html +#usr/share/doc/libvorbis-1.3.3/vorbisenc/vorbis_encode_init_vbr.html +#usr/share/doc/libvorbis-1.3.3/vorbisenc/vorbis_encode_setup_init.html +#usr/share/doc/libvorbis-1.3.3/vorbisenc/vorbis_encode_setup_managed.html +#usr/share/doc/libvorbis-1.3.3/vorbisenc/vorbis_encode_setup_vbr.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile +#usr/share/doc/libvorbis-1.3.3/vorbisfile/OggVorbis_File.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/callbacks.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/chaining_example_c.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/chainingexample.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/crosslap.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/datastructures.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/decoding.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/example.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/exampleindex.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/fileinfo.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/index.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/initialization.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_bitrate.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_bitrate_instant.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_callbacks.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_clear.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_comment.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_crosslap.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_fopen.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_info.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_open.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_open_callbacks.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_pcm_seek.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_pcm_seek_lap.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_pcm_seek_page.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_pcm_seek_page_lap.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_pcm_tell.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_pcm_total.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_raw_seek.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_raw_seek_lap.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_raw_tell.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_raw_total.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_read.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_read_filter.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_read_float.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_seekable.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_serialnumber.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_streams.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_test.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_test_callbacks.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_test_open.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_time_seek.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_time_seek_lap.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_time_seek_page.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_time_seek_page_lap.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_time_tell.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_time_total.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/overview.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/reference.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/seekexample.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/seeking.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/seeking_example_c.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/seeking_test_c.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/seekingexample.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/style.css +#usr/share/doc/libvorbis-1.3.3/vorbisfile/threads.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/vorbisfile_example_c.html +#usr/share/doc/libvorbis-1.3.3/vorbisword2.png +#usr/share/doc/libvorbis-1.3.3/wait.png +#usr/share/doc/libvorbis-1.3.3/white-xifish.png diff --git a/config/rootfiles/packages/minidlna b/config/rootfiles/packages/minidlna new file mode 100644 index 0000000..e53330e --- /dev/null +++ b/config/rootfiles/packages/minidlna @@ -0,0 +1,2 @@ +etc/minidlna.conf +usr/sbin/minidlna diff --git a/config/rootfiles/packages/splix b/config/rootfiles/packages/splix deleted file mode 100644 index f9c7579..0000000 --- a/config/rootfiles/packages/splix +++ /dev/null @@ -1,87 +0,0 @@ -usr/lib/cups/filter/pstoqpdl -usr/lib/cups/filter/rastertoqpdl -usr/share/cups/model/dell -usr/share/cups/model/dell/1100.ppd -usr/share/cups/model/dell/1100fr.ppd -usr/share/cups/model/dell/1110.ppd -usr/share/cups/model/dell/1110fr.ppd -usr/share/cups/model/samsung -usr/share/cups/model/samsung/clp200.ppd -usr/share/cups/model/samsung/clp200fr.ppd -usr/share/cups/model/samsung/clp300.ppd -usr/share/cups/model/samsung/clp300fr.ppd -usr/share/cups/model/samsung/clp500.ppd -usr/share/cups/model/samsung/clp500fr.ppd -usr/share/cups/model/samsung/clp510.ppd -usr/share/cups/model/samsung/clp510fr.ppd -usr/share/cups/model/samsung/clp550.ppd -usr/share/cups/model/samsung/clp550fr.ppd -usr/share/cups/model/samsung/clp600.ppd -usr/share/cups/model/samsung/clp600fr.ppd -usr/share/cups/model/samsung/clp610.ppd -usr/share/cups/model/samsung/clp610fr.ppd -usr/share/cups/model/samsung/clx216x.ppd -usr/share/cups/model/samsung/clx216xfr.ppd -usr/share/cups/model/samsung/clx2170.ppd -usr/share/cups/model/samsung/clx2170fr.ppd -usr/share/cups/model/samsung/clx3160.ppd -usr/share/cups/model/samsung/clx3160fr.ppd -usr/share/cups/model/samsung/ml1510.ppd -usr/share/cups/model/samsung/ml1510fr.ppd -usr/share/cups/model/samsung/ml1520.ppd -usr/share/cups/model/samsung/ml1520fr.ppd -usr/share/cups/model/samsung/ml1610.ppd -usr/share/cups/model/samsung/ml1610fr.ppd -usr/share/cups/model/samsung/ml1630.ppd -usr/share/cups/model/samsung/ml1630fr.ppd -usr/share/cups/model/samsung/ml1710.ppd -usr/share/cups/model/samsung/ml1710fr.ppd -usr/share/cups/model/samsung/ml1740.ppd -usr/share/cups/model/samsung/ml1740fr.ppd -usr/share/cups/model/samsung/ml1750.ppd -usr/share/cups/model/samsung/ml1750fr.ppd -usr/share/cups/model/samsung/ml2010.ppd -usr/share/cups/model/samsung/ml2010fr.ppd -usr/share/cups/model/samsung/ml2150.ppd -usr/share/cups/model/samsung/ml2150fr.ppd -usr/share/cups/model/samsung/ml2250.ppd -usr/share/cups/model/samsung/ml2250fr.ppd -usr/share/cups/model/samsung/ml2251.ppd -usr/share/cups/model/samsung/ml2251fr.ppd -usr/share/cups/model/samsung/ml2510.ppd -usr/share/cups/model/samsung/ml2510fr.ppd -usr/share/cups/model/samsung/ml2550.ppd -usr/share/cups/model/samsung/ml2550fr.ppd -usr/share/cups/model/samsung/ml3050.ppd -usr/share/cups/model/samsung/ml3050fr.ppd -usr/share/cups/model/samsung/ml3560.ppd -usr/share/cups/model/samsung/ml3560fr.ppd -usr/share/cups/model/xerox -usr/share/cups/model/xerox/ph3115.ppd -usr/share/cups/model/xerox/ph3115fr.ppd -usr/share/cups/model/xerox/ph3116.ppd -usr/share/cups/model/xerox/ph3116fr.ppd -usr/share/cups/model/xerox/ph3117.ppd -usr/share/cups/model/xerox/ph3117fr.ppd -usr/share/cups/model/xerox/ph3120.ppd -usr/share/cups/model/xerox/ph3120fr.ppd -usr/share/cups/model/xerox/ph3121.ppd -usr/share/cups/model/xerox/ph3121fr.ppd -usr/share/cups/model/xerox/ph3122.ppd -usr/share/cups/model/xerox/ph3122fr.ppd -usr/share/cups/model/xerox/ph3130.ppd -usr/share/cups/model/xerox/ph3130fr.ppd -usr/share/cups/model/xerox/ph3150.ppd -usr/share/cups/model/xerox/ph3150fr.ppd -usr/share/cups/model/xerox/ph3160.ppd -usr/share/cups/model/xerox/ph3160fr.ppd -usr/share/cups/model/xerox/ph3420.ppd -usr/share/cups/model/xerox/ph3420fr.ppd -usr/share/cups/model/xerox/ph3425.ppd -usr/share/cups/model/xerox/ph3425fr.ppd -usr/share/cups/model/xerox/ph5500.ppd -usr/share/cups/model/xerox/ph5500fr.ppd -usr/share/cups/model/xerox/ph6100.ppd -usr/share/cups/model/xerox/ph6100fr.ppd -usr/share/cups/model/xerox/ph6110.ppd -usr/share/cups/model/xerox/ph6110fr.ppd diff --git a/config/syslinux/syslinux.cfg b/config/syslinux/syslinux.cfg index 68ad82a..ee258cc 100644 --- a/config/syslinux/syslinux.cfg +++ b/config/syslinux/syslinux.cfg @@ -2,13 +2,13 @@ TIMEOUT 5000 DISPLAY boot.msg PROMPT 1 DEFAULT vmlinuz - APPEND initrd=instroot vga=791 splash=silent ro + APPEND initrd=instroot vga=791 quiet rhgb ro LABEL novga KERNEL vmlinuz - APPEND initrd=instroot ro + APPEND initrd=instroot quiet rhgb ro LABEL unattended KERNEL vmlinuz - APPEND initrd=instroot vga=791 splash=silent unattended ro + APPEND initrd=instroot vga=791 quiet rhgb unattended ro LABEL memtest KERNEL memtest APPEND - diff --git a/config/uClibc/busybox.config b/config/uClibc/busybox.config deleted file mode 100644 index 9682385..0000000 --- a/config/uClibc/busybox.config +++ /dev/null @@ -1,643 +0,0 @@ -# -# Automatically generated make config: don't edit -# -HAVE_DOT_CONFIG=y - -# -# Busybox Settings -# - -# -# General Configuration -# -# CONFIG_NITPICK is not set -# CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set -# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set -# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set -CONFIG_SHOW_USAGE=y -CONFIG_FEATURE_VERBOSE_USAGE=y -CONFIG_FEATURE_COMPRESS_USAGE=y -# CONFIG_FEATURE_INSTALLER is not set -# CONFIG_LOCALE_SUPPORT is not set -CONFIG_GETOPT_LONG=y -# CONFIG_FEATURE_DEVPTS is not set -# CONFIG_FEATURE_CLEAN_UP is not set -# CONFIG_FEATURE_SUID is not set -# CONFIG_FEATURE_SUID_CONFIG is not set -# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set -# CONFIG_SELINUX is not set -CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe" - -# -# Build Options -# -# CONFIG_STATIC is not set -# CONFIG_BUILD_LIBBUSYBOX is not set -# CONFIG_FEATURE_FULL_LIBBUSYBOX is not set -# CONFIG_FEATURE_SHARED_BUSYBOX is not set -CONFIG_LFS=y -USING_CROSS_COMPILER=y -CROSS_COMPILER_PREFIX="/opt/i586-uClibc/bin/i586-linux-" -# CONFIG_BUILD_AT_ONCE is not set - -# -# Debugging Options -# -# CONFIG_DEBUG is not set -# CONFIG_DEBUG_PESSIMIZE is not set -# CONFIG_NO_DEBUG_LIB is not set -# CONFIG_DMALLOC is not set -# CONFIG_EFENCE is not set -# CONFIG_DEBUG_YANK_SUSv2 is not set - -# -# Installation Options -# -CONFIG_INSTALL_NO_USR=y -CONFIG_INSTALL_APPLET_SYMLINKS=y -# CONFIG_INSTALL_APPLET_HARDLINKS is not set -# CONFIG_INSTALL_APPLET_DONT is not set -PREFIX="/install/initrd" - -# -# Busybox Library Tuning -# -CONFIG_MD5_SIZE_VS_SPEED=3 - -# -# Applets -# - -# -# Archival Utilities -# -# CONFIG_AR is not set -# CONFIG_FEATURE_AR_LONG_FILENAMES is not set -# CONFIG_BUNZIP2 is not set -# CONFIG_CPIO is not set -# CONFIG_DPKG is not set -# CONFIG_DPKG_DEB is not set -# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set -# CONFIG_GUNZIP is not set -# CONFIG_FEATURE_GUNZIP_UNCOMPRESS is not set -CONFIG_GZIP=y -# CONFIG_RPM2CPIO is not set -# CONFIG_RPM is not set -CONFIG_TAR=y -# CONFIG_FEATURE_TAR_CREATE is not set -CONFIG_FEATURE_TAR_BZIP2=y -CONFIG_FEATURE_TAR_LZMA=y -# CONFIG_FEATURE_TAR_FROM is not set -CONFIG_FEATURE_TAR_GZIP=y -# CONFIG_FEATURE_TAR_COMPRESS is not set -CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY=y -CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y -CONFIG_FEATURE_TAR_LONG_OPTIONS=y -# CONFIG_UNCOMPRESS is not set -# CONFIG_UNLZMA is not set -# CONFIG_FEATURE_LZMA_FAST is not set -CONFIG_UNZIP=y - -# -# Common options for cpio and tar -# -# CONFIG_FEATURE_UNARCHIVE_TAPE is not set -# CONFIG_FEATURE_DEB_TAR_GZ is not set -# CONFIG_FEATURE_DEB_TAR_BZ2 is not set -# CONFIG_FEATURE_DEB_TAR_LZMA is not set - -# -# Coreutils -# -CONFIG_BASENAME=y -# CONFIG_CAL is not set -CONFIG_CAT=y -# CONFIG_CATV is not set -# CONFIG_CHGRP is not set -CONFIG_CHMOD=y -CONFIG_CHOWN=y -CONFIG_CHROOT=y -# CONFIG_CKSUM is not set -# CONFIG_CMP is not set -# CONFIG_COMM is not set -CONFIG_CP=y -CONFIG_CUT=y -CONFIG_DATE=y -CONFIG_FEATURE_DATE_ISOFMT=y -CONFIG_DD=y -CONFIG_FEATURE_DD_SIGNAL_HANDLING=y -# CONFIG_FEATURE_DD_IBS_OBS is not set -CONFIG_DF=y -# CONFIG_DIFF is not set -# CONFIG_FEATURE_DIFF_BINARY is not set -# CONFIG_FEATURE_DIFF_DIR is not set -# CONFIG_FEATURE_DIFF_MINIMAL is not set -# CONFIG_DIRNAME is not set -# CONFIG_DOS2UNIX is not set -# CONFIG_UNIX2DOS is not set -CONFIG_DU=y -CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y -CONFIG_ECHO=y -CONFIG_FEATURE_FANCY_ECHO=y -# CONFIG_ENV is not set -# CONFIG_FEATURE_ENV_LONG_OPTIONS is not set -# CONFIG_EXPR is not set -# CONFIG_EXPR_MATH_SUPPORT_64 is not set -# CONFIG_FALSE is not set -# CONFIG_FOLD is not set -CONFIG_HEAD=y -# CONFIG_FEATURE_FANCY_HEAD is not set -# CONFIG_HOSTID is not set -# CONFIG_ID is not set -# CONFIG_INSTALL is not set -# CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set -# CONFIG_LENGTH is not set -CONFIG_LN=y -# CONFIG_LOGNAME is not set -CONFIG_LS=y -CONFIG_FEATURE_LS_FILETYPES=y -CONFIG_FEATURE_LS_FOLLOWLINKS=y -CONFIG_FEATURE_LS_RECURSIVE=y -CONFIG_FEATURE_LS_SORTFILES=y -CONFIG_FEATURE_LS_TIMESTAMPS=y -CONFIG_FEATURE_LS_USERNAME=y -CONFIG_FEATURE_LS_COLOR=y -# CONFIG_FEATURE_LS_COLOR_IS_DEFAULT is not set -CONFIG_MD5SUM=y -CONFIG_MKDIR=y -# CONFIG_FEATURE_MKDIR_LONG_OPTIONS is not set -CONFIG_MKFIFO=y -CONFIG_MKNOD=y -CONFIG_MV=y -CONFIG_FEATURE_MV_LONG_OPTIONS=y -CONFIG_NICE=y -# CONFIG_NOHUP is not set -# CONFIG_OD is not set -# CONFIG_PRINTENV is not set -# CONFIG_PRINTF is not set -# CONFIG_PWD is not set -# CONFIG_REALPATH is not set -CONFIG_RM=y -# CONFIG_RMDIR is not set -CONFIG_SEQ=y -# CONFIG_SHA1SUM is not set -CONFIG_SLEEP=y -# CONFIG_FEATURE_FANCY_SLEEP is not set -CONFIG_SORT=y -CONFIG_FEATURE_SORT_BIG=y -# CONFIG_STAT is not set -# CONFIG_FEATURE_STAT_FORMAT is not set -# CONFIG_STTY is not set -# CONFIG_SUM is not set -CONFIG_SYNC=y -CONFIG_TAIL=y -CONFIG_FEATURE_FANCY_TAIL=y -CONFIG_TEE=y -# CONFIG_FEATURE_TEE_USE_BLOCK_IO is not set -CONFIG_TEST=y -# CONFIG_FEATURE_TEST_64 is not set -CONFIG_TOUCH=y -CONFIG_TR=y -CONFIG_FEATURE_TR_CLASSES=y -CONFIG_FEATURE_TR_EQUIV=y -CONFIG_TRUE=y -# CONFIG_TTY is not set -CONFIG_UNAME=y -CONFIG_UNIQ=y -# CONFIG_USLEEP is not set -# CONFIG_UUDECODE is not set -# CONFIG_UUENCODE is not set -# CONFIG_WATCH is not set -CONFIG_WC=y -# CONFIG_WHO is not set -# CONFIG_WHOAMI is not set -CONFIG_YES=y - -# -# Common options for cp and mv -# -CONFIG_FEATURE_PRESERVE_HARDLINKS=y - -# -# Common options for ls, more and telnet -# -CONFIG_FEATURE_AUTOWIDTH=y - -# -# Common options for df, du, ls -# -CONFIG_FEATURE_HUMAN_READABLE=y - -# -# Common options for md5sum, sha1sum -# -# CONFIG_FEATURE_MD5_SHA1_SUM_CHECK is not set - -# -# Console Utilities -# -CONFIG_CHVT=y -CONFIG_CLEAR=y -# CONFIG_DEALLOCVT is not set -# CONFIG_DUMPKMAP is not set -CONFIG_LOADFONT=y -CONFIG_LOADKMAP=y -# CONFIG_OPENVT is not set -# CONFIG_RESET is not set -CONFIG_SETCONSOLE=y -# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set -CONFIG_SETKEYCODES=y -# CONFIG_SETLOGCONS is not set - -# -# Debian Utilities -# -# CONFIG_MKTEMP is not set -# CONFIG_PIPE_PROGRESS is not set -# CONFIG_READLINK is not set -# CONFIG_FEATURE_READLINK_FOLLOW is not set -# CONFIG_RUN_PARTS is not set -# CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set -# CONFIG_START_STOP_DAEMON is not set -# CONFIG_FEATURE_START_STOP_DAEMON_FANCY is not set -# CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS is not set -CONFIG_WHICH=y - -# -# Editors -# -CONFIG_AWK=y -# CONFIG_FEATURE_AWK_MATH is not set -# CONFIG_ED is not set -# CONFIG_PATCH is not set -CONFIG_SED=y -CONFIG_VI=y -CONFIG_FEATURE_VI_COLON=y -CONFIG_FEATURE_VI_YANKMARK=y -CONFIG_FEATURE_VI_SEARCH=y -CONFIG_FEATURE_VI_USE_SIGNALS=y -CONFIG_FEATURE_VI_DOT_CMD=y -CONFIG_FEATURE_VI_READONLY=y -CONFIG_FEATURE_VI_SETOPTS=y -CONFIG_FEATURE_VI_SET=y -CONFIG_FEATURE_VI_WIN_RESIZE=y -CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y - -# -# Finding Utilities -# -CONFIG_FIND=y -CONFIG_FEATURE_FIND_PRINT0=y -CONFIG_FEATURE_FIND_MTIME=y -CONFIG_FEATURE_FIND_MMIN=y -CONFIG_FEATURE_FIND_PERM=y -CONFIG_FEATURE_FIND_TYPE=y -CONFIG_FEATURE_FIND_XDEV=y -CONFIG_FEATURE_FIND_NEWER=y -CONFIG_FEATURE_FIND_INUM=y -CONFIG_FEATURE_FIND_EXEC=y -CONFIG_GREP=y -CONFIG_FEATURE_GREP_EGREP_ALIAS=y -CONFIG_FEATURE_GREP_FGREP_ALIAS=y -CONFIG_FEATURE_GREP_CONTEXT=y -CONFIG_XARGS=y -# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set -# CONFIG_FEATURE_XARGS_SUPPORT_QUOTES is not set -# CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT is not set -# CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM is not set - -# -# Init Utilities -# -CONFIG_INIT=y -# CONFIG_DEBUG_INIT is not set -CONFIG_FEATURE_USE_INITTAB=y -# CONFIG_FEATURE_INIT_SCTTY is not set -CONFIG_FEATURE_EXTRA_QUIET=y -# CONFIG_FEATURE_INIT_COREDUMPS is not set -CONFIG_FEATURE_INITRD=y -CONFIG_HALT=y -# CONFIG_MESG is not set - -# -# Login/Password Management Utilities -# -# CONFIG_FEATURE_SHADOWPASSWDS is not set -# CONFIG_USE_BB_SHADOW is not set -# CONFIG_USE_BB_PWD_GRP is not set -# CONFIG_ADDGROUP is not set -# CONFIG_DELGROUP is not set -# CONFIG_ADDUSER is not set -# CONFIG_DELUSER is not set -CONFIG_GETTY=y -# CONFIG_FEATURE_UTMP is not set -# CONFIG_FEATURE_WTMP is not set -# CONFIG_LOGIN is not set -# CONFIG_FEATURE_SECURETTY is not set -# CONFIG_PASSWD is not set -# CONFIG_SU is not set -# CONFIG_SULOGIN is not set -# CONFIG_VLOCK is not set - -# -# Linux Ext2 FS Progs -# -# CONFIG_CHATTR is not set -CONFIG_E2FSCK=y -CONFIG_FSCK=y -# CONFIG_LSATTR is not set -CONFIG_MKE2FS=y -CONFIG_TUNE2FS=y -CONFIG_E2LABEL=y -# CONFIG_FINDFS is not set - -# -# Linux Module Utilities -# -CONFIG_INSMOD=y -# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set -# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set -# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set -# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set -# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set -CONFIG_RMMOD=y -CONFIG_LSMOD=y -CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y -CONFIG_MODPROBE=y -CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS=y - -# -# Options common to multiple modutils -# -# CONFIG_FEATURE_CHECK_TAINTED_MODULE is not set -# CONFIG_FEATURE_2_4_MODULES is not set -CONFIG_FEATURE_2_6_MODULES=y -# CONFIG_FEATURE_QUERY_MODULE_INTERFACE is not set - -# -# Linux System Utilities -# -CONFIG_DMESG=y -# CONFIG_FBSET is not set -# CONFIG_FEATURE_FBSET_FANCY is not set -# CONFIG_FEATURE_FBSET_READMODE is not set -# CONFIG_FDFLUSH is not set -# CONFIG_FDFORMAT is not set -CONFIG_FDISK=y -FDISK_SUPPORT_LARGE_DISKS=y -CONFIG_FEATURE_FDISK_WRITABLE=y -# CONFIG_FEATURE_AIX_LABEL is not set -# CONFIG_FEATURE_SGI_LABEL is not set -# CONFIG_FEATURE_SUN_LABEL is not set -# CONFIG_FEATURE_OSF_LABEL is not set -# CONFIG_FEATURE_FDISK_ADVANCED is not set -# CONFIG_FREERAMDISK is not set -# CONFIG_FSCK_MINIX is not set -# CONFIG_MKFS_MINIX is not set -# CONFIG_FEATURE_MINIX2 is not set -# CONFIG_GETOPT is not set -# CONFIG_HEXDUMP is not set -# CONFIG_HWCLOCK is not set -# CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS is not set -# CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS is not set -# CONFIG_IPCRM is not set -# CONFIG_IPCS is not set -CONFIG_LOSETUP=y -# CONFIG_MDEV is not set -# CONFIG_FEATURE_MDEV_CONF is not set -# CONFIG_FEATURE_MDEV_EXEC is not set -CONFIG_MKSWAP=y -# CONFIG_FEATURE_MKSWAP_V0 is not set -CONFIG_MORE=y -CONFIG_FEATURE_USE_TERMIOS=y -CONFIG_MOUNT=y -# CONFIG_FEATURE_MOUNT_NFS is not set -CONFIG_PIVOT_ROOT=y -# CONFIG_RDATE is not set -# CONFIG_READPROFILE is not set -# CONFIG_SETARCH is not set -CONFIG_SWAPONOFF=y -# CONFIG_SWITCH_ROOT is not set -CONFIG_UMOUNT=y -CONFIG_FEATURE_UMOUNT_ALL=y - -# -# Common options for mount/umount -# -CONFIG_FEATURE_MOUNT_LOOP=y -# CONFIG_FEATURE_MTAB_SUPPORT is not set - -# -# Miscellaneous Utilities -# -# CONFIG_ADJTIMEX is not set -# CONFIG_BBCONFIG is not set -# CONFIG_CROND is not set -# CONFIG_DEBUG_CROND_OPTION is not set -# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set -# CONFIG_CRONTAB is not set -# CONFIG_DC is not set -# CONFIG_DEVFSD is not set -# CONFIG_DEVFSD_MODLOAD is not set -# CONFIG_DEVFSD_FG_NP is not set -# CONFIG_DEVFSD_VERBOSE is not set -# CONFIG_FEATURE_DEVFS is not set -CONFIG_EJECT=y -# CONFIG_LAST is not set -CONFIG_LESS=y -CONFIG_FEATURE_LESS_BRACKETS=y -CONFIG_FEATURE_LESS_FLAGS=y -# CONFIG_FEATURE_LESS_FLAGCS is not set -# CONFIG_FEATURE_LESS_MARKS is not set -# CONFIG_FEATURE_LESS_REGEXP is not set -# CONFIG_HDPARM is not set -# CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set -# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set -# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set -# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set -# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set -# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set -# CONFIG_MAKEDEVS is not set -# CONFIG_FEATURE_MAKEDEVS_LEAF is not set -# CONFIG_FEATURE_MAKEDEVS_TABLE is not set -# CONFIG_MOUNTPOINT is not set -# CONFIG_MT is not set -# CONFIG_RUNLEVEL is not set -# CONFIG_RX is not set -# CONFIG_STRINGS is not set -# CONFIG_SETSID is not set -# CONFIG_TASKSET is not set -# CONFIG_TIME is not set -# CONFIG_WATCHDOG is not set - -# -# Networking Utilities -# -# CONFIG_FEATURE_IPV6 is not set -# CONFIG_ARPING is not set -# CONFIG_DNSD is not set -# CONFIG_ETHER_WAKE is not set -# CONFIG_FAKEIDENTD is not set -# CONFIG_FTPGET is not set -# CONFIG_FTPPUT is not set -# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set -CONFIG_HOSTNAME=y -# CONFIG_HTTPD is not set -# CONFIG_FEATURE_HTTPD_WITHOUT_INETD is not set -# CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP is not set -# CONFIG_FEATURE_HTTPD_SETUID is not set -# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set -# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set -# CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES is not set -# CONFIG_FEATURE_HTTPD_CGI is not set -# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set -# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set -# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set -CONFIG_IFCONFIG=y -CONFIG_FEATURE_IFCONFIG_STATUS=y -# CONFIG_FEATURE_IFCONFIG_SLIP is not set -# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set -# CONFIG_FEATURE_IFCONFIG_HW is not set -CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y -# CONFIG_IFUPDOWN is not set -# CONFIG_FEATURE_IFUPDOWN_IP is not set -# CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN is not set -# CONFIG_FEATURE_IFUPDOWN_IPV4 is not set -# CONFIG_FEATURE_IFUPDOWN_IPV6 is not set -# CONFIG_FEATURE_IFUPDOWN_IPX is not set -# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set -# CONFIG_INETD is not set -# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set -# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set -# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set -# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set -# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set -# CONFIG_FEATURE_INETD_RPC is not set -CONFIG_IP=y -CONFIG_FEATURE_IP_ADDRESS=y -CONFIG_FEATURE_IP_LINK=y -CONFIG_FEATURE_IP_ROUTE=y -# CONFIG_FEATURE_IP_TUNNEL is not set -CONFIG_FEATURE_IP_SHORT_FORMS=y -CONFIG_IPADDR=y -CONFIG_IPLINK=y -CONFIG_IPROUTE=y -# CONFIG_IPTUNNEL is not set -# CONFIG_IPCALC is not set -# CONFIG_FEATURE_IPCALC_FANCY is not set -# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set -# CONFIG_NAMEIF is not set -# CONFIG_NC is not set -# CONFIG_NC_GAPING_SECURITY_HOLE is not set -# CONFIG_NETSTAT is not set -# CONFIG_NSLOOKUP is not set -CONFIG_PING=y -# CONFIG_FEATURE_FANCY_PING is not set -# CONFIG_PING6 is not set -# CONFIG_FEATURE_FANCY_PING6 is not set -CONFIG_ROUTE=y -# CONFIG_TELNET is not set -# CONFIG_FEATURE_TELNET_TTYPE is not set -# CONFIG_FEATURE_TELNET_AUTOLOGIN is not set -# CONFIG_TELNETD is not set -# CONFIG_FEATURE_TELNETD_INETD is not set -# CONFIG_TFTP is not set -# CONFIG_FEATURE_TFTP_GET is not set -# CONFIG_FEATURE_TFTP_PUT is not set -# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set -# CONFIG_DEBUG_TFTP is not set -# CONFIG_TRACEROUTE is not set -# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set -# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set -# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set - -# -# udhcp Server/Client -# -# CONFIG_APP_UDHCPD is not set -CONFIG_APP_UDHCPC=y -# CONFIG_APP_DUMPLEASES is not set -CONFIG_FEATURE_UDHCP_SYSLOG=y -# CONFIG_FEATURE_UDHCP_DEBUG is not set -CONFIG_VCONFIG=y -# CONFIG_WGET is not set -# CONFIG_FEATURE_WGET_STATUSBAR is not set -# CONFIG_FEATURE_WGET_AUTHENTICATION is not set -# CONFIG_FEATURE_WGET_IP6_LITERAL is not set -# CONFIG_FEATURE_WGET_LONG_OPTIONS is not set -# CONFIG_ZCIP is not set - -# -# Process Utilities -# -CONFIG_FREE=y -# CONFIG_FUSER is not set -CONFIG_KILL=y -CONFIG_KILLALL=y -# CONFIG_PIDOF is not set -# CONFIG_FEATURE_PIDOF_SINGLE is not set -# CONFIG_FEATURE_PIDOF_OMIT is not set -CONFIG_PS=y -CONFIG_FEATURE_PS_WIDE=y -CONFIG_RENICE=y -# CONFIG_BB_SYSCTL is not set -CONFIG_TOP=y -CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y -CONFIG_UPTIME=y - -# -# Shells -# -CONFIG_FEATURE_SH_IS_ASH=y -# CONFIG_FEATURE_SH_IS_HUSH is not set -# CONFIG_FEATURE_SH_IS_LASH is not set -# CONFIG_FEATURE_SH_IS_MSH is not set -# CONFIG_FEATURE_SH_IS_NONE is not set -CONFIG_ASH=y - -# -# Ash Shell Options -# -CONFIG_ASH_JOB_CONTROL=y -# CONFIG_ASH_READ_NCHARS is not set -# CONFIG_ASH_READ_TIMEOUT is not set -CONFIG_ASH_ALIAS=y -CONFIG_ASH_MATH_SUPPORT=y -# CONFIG_ASH_MATH_SUPPORT_64 is not set -CONFIG_ASH_GETOPTS=y -CONFIG_ASH_BUILTIN_ECHO=y -CONFIG_ASH_BUILTIN_TEST=y -# CONFIG_ASH_CMDCMD is not set -# CONFIG_ASH_MAIL is not set -CONFIG_ASH_OPTIMIZE_FOR_SIZE=y -# CONFIG_ASH_RANDOM_SUPPORT is not set -CONFIG_ASH_EXPAND_PRMT=y -# CONFIG_HUSH is not set -# CONFIG_LASH is not set -# CONFIG_MSH is not set - -# -# Bourne Shell Options -# -# CONFIG_FEATURE_SH_EXTRA_QUIET is not set -# CONFIG_FEATURE_SH_STANDALONE_SHELL is not set -CONFIG_FEATURE_COMMAND_EDITING=y -# CONFIG_FEATURE_COMMAND_EDITING_VI is not set -CONFIG_FEATURE_COMMAND_HISTORY=15 -CONFIG_FEATURE_COMMAND_SAVEHISTORY=y -CONFIG_FEATURE_COMMAND_TAB_COMPLETION=y -# CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION is not set -CONFIG_FEATURE_SH_FANCY_PROMPT=y - -# -# System Logging Utilities -# -CONFIG_SYSLOGD=y -# CONFIG_FEATURE_ROTATE_LOGFILE is not set -# CONFIG_FEATURE_REMOTE_LOG is not set -# CONFIG_FEATURE_IPC_SYSLOG is not set -CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0 -# CONFIG_LOGREAD is not set -# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set -CONFIG_KLOGD=y -CONFIG_LOGGER=y diff --git a/config/uClibc/codesets.txt b/config/uClibc/codesets.txt deleted file mode 100644 index 98530d3..0000000 --- a/config/uClibc/codesets.txt +++ /dev/null @@ -1,2 +0,0 @@ -./charmaps/ASCII.pairs -./charmaps/ISO-8859-1.pairs diff --git a/config/uClibc/locales.txt b/config/uClibc/locales.txt deleted file mode 100644 index a3100ec..0000000 --- a/config/uClibc/locales.txt +++ /dev/null @@ -1,8 +0,0 @@ -@euro e -@cyrillic c -#--------------------------------------------------------------------------- -UTF-8 yes -8-BIT yes -#--------------------------------------------------------------------------- -en_US ISO-8859-1 -en_US.UTF-8 UTF-8 diff --git a/config/uClibc/uClibc.config-i586 b/config/uClibc/uClibc.config-i586 deleted file mode 100644 index f46b1fe..0000000 --- a/config/uClibc/uClibc.config-i586 +++ /dev/null @@ -1,175 +0,0 @@ -# -# Automatically generated make config: don't edit -# -# TARGET_alpha is not set -# TARGET_arm is not set -# TARGET_bfin is not set -# TARGET_cris is not set -# TARGET_e1 is not set -# TARGET_frv is not set -# TARGET_h8300 is not set -TARGET_i386=y -# TARGET_i960 is not set -# TARGET_m68k is not set -# TARGET_microblaze is not set -# TARGET_mips is not set -# TARGET_nios is not set -# TARGET_nios2 is not set -# TARGET_powerpc is not set -# TARGET_sh is not set -# TARGET_sh64 is not set -# TARGET_sparc is not set -# TARGET_v850 is not set -# TARGET_x86_64 is not set - -# -# Target Architecture Features and Options -# -HAVE_ELF=y -ARCH_SUPPORTS_LITTLE_ENDIAN=y -TARGET_ARCH="i386" -# CONFIG_GENERIC_386 is not set -# CONFIG_386 is not set -# CONFIG_486 is not set -CONFIG_586=y -# CONFIG_586MMX is not set -# CONFIG_686 is not set -# CONFIG_PENTIUMII is not set -# CONFIG_PENTIUMIII is not set -# CONFIG_PENTIUM4 is not set -# CONFIG_K6 is not set -# CONFIG_K7 is not set -# CONFIG_ELAN is not set -# CONFIG_CRUSOE is not set -# CONFIG_WINCHIPC6 is not set -# CONFIG_WINCHIP2 is not set -# CONFIG_CYRIXIII is not set -# CONFIG_NEHEMIAH is not set -ARCH_LITTLE_ENDIAN=y -# ARCH_BIG_ENDIAN is not set -# ARCH_HAS_NO_MMU is not set -ARCH_HAS_MMU=y -UCLIBC_HAS_FLOATS=y -HAS_FPU=y -DO_C99_MATH=y -KERNEL_SOURCE="/usr" -C_SYMBOL_PREFIX="" -HAVE_DOT_CONFIG=y - -# -# General Library Settings -# -# HAVE_NO_PIC is not set -DOPIC=y -# HAVE_NO_SHARED is not set -HAVE_SHARED=y -# ARCH_HAS_NO_LDSO is not set -BUILD_UCLIBC_LDSO=y -FORCE_SHAREABLE_TEXT_SEGMENTS=y -LDSO_LDD_SUPPORT=y -LDSO_CACHE_SUPPORT=y -# LDSO_PRELOAD_FILE_SUPPORT is not set -LDSO_BASE_FILENAME="ld.so" -LDSO_RUNPATH=y -# DL_FINI_CRT_COMPAT is not set -UCLIBC_CTOR_DTOR=y -# HAS_NO_THREADS is not set -UCLIBC_HAS_THREADS=y -# PTHREADS_DEBUG_SUPPORT is not set -UCLIBC_HAS_LFS=y -# UCLIBC_STATIC_LDCONFIG is not set -# MALLOC is not set -# MALLOC_SIMPLE is not set -MALLOC_STANDARD=y -MALLOC_GLIBC_COMPAT=y -UCLIBC_DYNAMIC_ATEXIT=y -HAS_SHADOW=y -UNIX98PTY_ONLY=y -ASSUME_DEVPTS=y -UCLIBC_HAS_TM_EXTENSIONS=y -UCLIBC_HAS_TZ_CACHING=y -UCLIBC_HAS_TZ_FILE=y -UCLIBC_HAS_TZ_FILE_READ_MANY=y -UCLIBC_TZ_FILE_PATH="/etc/TZ" - -# -# Networking Support -# -# UCLIBC_HAS_IPV6 is not set -# UCLIBC_HAS_RPC is not set - -# -# String and Stdio Support -# -UCLIBC_HAS_STRING_GENERIC_OPT=y -UCLIBC_HAS_STRING_ARCH_OPT=y -UCLIBC_HAS_CTYPE_TABLES=y -UCLIBC_HAS_CTYPE_SIGNED=y -UCLIBC_HAS_CTYPE_UNSAFE=y -# UCLIBC_HAS_CTYPE_CHECKED is not set -# UCLIBC_HAS_CTYPE_ENFORCED is not set -UCLIBC_HAS_WCHAR=y -UCLIBC_HAS_LOCALE=y -UCLIBC_PREGENERATED_LOCALE_DATA=y -# UCLIBC_DOWNLOAD_PREGENERATED_LOCALE_DATA is not set -UCLIBC_HAS_XLOCALE=y -# UCLIBC_HAS_HEXADECIMAL_FLOATS is not set -# UCLIBC_HAS_GLIBC_DIGIT_GROUPING is not set -UCLIBC_HAS_GLIBC_CUSTOM_PRINTF=y -UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9 -# UCLIBC_HAS_SCANF_GLIBC_A_FLAG is not set -# UCLIBC_HAS_STDIO_BUFSIZ_NONE is not set -# UCLIBC_HAS_STDIO_BUFSIZ_256 is not set -# UCLIBC_HAS_STDIO_BUFSIZ_512 is not set -# UCLIBC_HAS_STDIO_BUFSIZ_1024 is not set -# UCLIBC_HAS_STDIO_BUFSIZ_2048 is not set -UCLIBC_HAS_STDIO_BUFSIZ_4096=y -# UCLIBC_HAS_STDIO_BUFSIZ_8192 is not set -UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE=y -# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set -# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8 is not set -# UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT is not set -UCLIBC_HAS_STDIO_GETC_MACRO=y -UCLIBC_HAS_STDIO_PUTC_MACRO=y -UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION=y -# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set -# UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE is not set -# UCLIBC_HAS_GLIBC_CUSTOM_STREAMS is not set -# UCLIBC_HAS_PRINTF_M_SPEC is not set -UCLIBC_HAS_ERRNO_MESSAGES=y -# UCLIBC_HAS_SYS_ERRLIST is not set -UCLIBC_HAS_SIGNUM_MESSAGES=y -UCLIBC_HAS_SYS_SIGLIST=y -UCLIBC_HAS_GNU_GETOPT=y - -# -# Big and Tall -# -UCLIBC_HAS_REGEX=y -# UCLIBC_HAS_WORDEXP is not set -UCLIBC_HAS_FTW=y -UCLIBC_HAS_GLOB=y - -# -# Library Installation Options -# -SHARED_LIB_LOADER_PREFIX="/lib" -RUNTIME_PREFIX="/" -DEVEL_PREFIX="/usr/" - -# -# uClibc security related options -# -# UCLIBC_SECURITY is not set - -# -# uClibc development/debugging options -# -CROSS_COMPILER_PREFIX="" -# DODEBUG is not set -# DODEBUG_PT is not set -# DOASSERTS is not set -# SUPPORT_LD_DEBUG is not set -# SUPPORT_LD_DEBUG_EARLY is not set -WARNINGS="-Wall" -# UCLIBC_MJN3_ONLY is not set diff --git a/html/cgi-bin/connections.cgi b/html/cgi-bin/connections.cgi index fbd7fcd..1edf3e5 100644 --- a/html/cgi-bin/connections.cgi +++ b/html/cgi-bin/connections.cgi @@ -133,6 +133,11 @@ if ($netsettings{'BLUE_DEV'}) { } }
+# Add Orange Firewall Interface +push(@network, $netsettings{'ORANGE_ADDRESS'}); +push(@masklen, "255.255.255.255" ); +push(@colour, ${Header::colourfw} ); + # Add Orange Network if ($netsettings{'ORANGE_DEV'}) { push(@network, $netsettings{'ORANGE_NETADDRESS'}); @@ -326,9 +331,13 @@ foreach my $line (@conntrack) {
# Source and destination. my $sip; + my $sip_ret; my $dip; + my $dip_ret; my $sport; + my $sport_ret; my $dport; + my $dport_ret; my @packets; my @bytes;
@@ -344,16 +353,32 @@ foreach my $line (@conntrack) {
switch ($key) { case "src" { - $sip = $val; + if ($sip == "") { + $sip = $val; + } else { + $dip_ret = $val; + } } case "dst" { - $dip = $val; + if ($dip == "") { + $dip = $val; + } else { + $sip_ret = $val; + } } case "sport" { - $sport = $val; + if ($sport == "") { + $sport = $val; + } else { + $dport_ret = $val; + } } case "dport" { - $dport = $val; + if ($dport == "") { + $dport = $val; + } else { + $sport_ret = $val; + } } case "packets" { push(@packets, $val); @@ -370,17 +395,11 @@ foreach my $line (@conntrack) { my $sserv = ''; if ($sport < 1024) { $sserv = uc(getservbyport($sport, lc($l4proto))); - if ($sserv ne '') { - $sserv = " ($sserv)"; - } }
my $dserv = ''; if ($dport < 1024) { $dserv = uc(getservbyport($dport, lc($l4proto))); - if ($dserv ne '') { - $dserv = " ($dserv)"; - } }
my $bytes_in = format_bytes($bytes[0]); @@ -389,6 +408,49 @@ foreach my $line (@conntrack) { # Format TTL $ttl = format_time($ttl);
+ my $sip_extra; + if ($sip ne $sip_ret) { + $sip_extra = "<font color='#FFFFFF'>></font> "; + $sip_extra .= "<a href='/cgi-bin/ipinfo.cgi?ip=$sip_ret'>"; + $sip_extra .= " <font color='#FFFFFF'>$sip_ret</font>"; + $sip_extra .= "</a>"; + } + + my $dip_extra; + if ($dip ne $dip_ret) { + $dip_extra = "<font color='#FFFFFF'>></font> "; + $dip_extra .= "<a href='/cgi-bin/ipinfo.cgi?ip=$dip_ret'>"; + $dip_extra .= " <font color='#FFFFFF'>$dip_ret</font>"; + $dip_extra .= "</a>"; + } + + + my $sport_extra; + if ($sport ne $sport_ret) { + my $sserv_ret = ''; + if ($sport_ret < 1024) { + $sserv_ret = uc(getservbyport($sport_ret, lc($l4proto))); + } + + $sport_extra = "<font color='#FFFFFF'>></font> "; + $sport_extra .= "<a href='http://isc.sans.org/port_details.php?port=$sport_ret' target='top' title='$sserv_ret'>"; + $sport_extra .= " <font color='#FFFFFF'>$sport_ret</font>"; + $sport_extra .= "</a>"; + } + + my $dport_extra; + if ($dport ne $dport_ret) { + my $dserv_ret = ''; + if ($dport_ret < 1024) { + $dserv_ret = uc(getservbyport($dport_ret, lc($l4proto))); + } + + $dport_extra = "<font color='#FFFFFF'>></font> "; + $dport_extra .= "<a href='http://isc.sans.org/port_details.php?port=$dport_ret' target='top' title='$dserv_ret'>"; + $dport_extra .= " <font color='#FFFFFF'>$dport_ret</font>"; + $dport_extra .= "</a>"; + } + print <<END; <tr> <td align='center'>$l4proto</td> @@ -396,21 +458,25 @@ foreach my $line (@conntrack) { <a href='/cgi-bin/ipinfo.cgi?ip=$sip'> <font color='#FFFFFF'>$sip</font> </a> + $sip_extra </td> <td align='center' bgcolor='$sip_colour'> - <a href='http://isc.sans.org/port_details.php?port=$sport' target='top'> - <font color='#FFFFFF'>$sport$sserv</font> + <a href='http://isc.sans.org/port_details.php?port=$sport' target='top' title='$sserv'> + <font color='#FFFFFF'>$sport</font> </a> + $sport_extra </td> <td align='center' bgcolor='$dip_colour'> <a href='/cgi-bin/ipinfo.cgi?ip=$dip'> <font color='#FFFFFF'>$dip</font> </a> + $dip_extra </td> <td align='center' bgcolor='$dip_colour'> - <a href='http://isc.sans.org/port_details.php?port=$dport' target='top'> - <font color='#FFFFFF'>$dport$dserv</font> + <a href='http://isc.sans.org/port_details.php?port=$dport' target='top' title='$dserv'> + <font color='#FFFFFF'>$dport</font> </a> + $dport_extra </td> <td align='center'> $bytes_in / $bytes_out diff --git a/lfs/Config b/lfs/Config index 2bc0754..7360ac6 100644 --- a/lfs/Config +++ b/lfs/Config @@ -96,6 +96,8 @@ endif # ifeq "$(ROOT)" "" define POSTBUILD + @echo "Updating linker cache..." + @type -p ldconfig >/dev/null && ldconfig || : @echo "Install done; saving file list to $(TARGET) ..." @$(FIND_FILES) > $(DIR_SRC)/lsalrnew @diff $(DIR_SRC)/lsalr $(DIR_SRC)/lsalrnew | grep '^> ' | sed 's/^> //' > $(TARGET)_diff diff --git a/lfs/acpid b/lfs/acpid new file mode 100644 index 0000000..ff85e1c --- /dev/null +++ b/lfs/acpid @@ -0,0 +1,84 @@ +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see http://www.gnu.org/licenses/. # +# # +############################################################################### + +############################################################################### +# Definitions +############################################################################### + +include Config + +VER = 2.0.16 + +THISAPP = acpid-$(VER) +DL_FILE = $(THISAPP).tar.xz +DL_FROM = $(URL_IPFIRE) +DIR_APP = $(DIR_SRC)/$(THISAPP) +TARGET = $(DIR_INFO)/$(THISAPP) +SUP_ARCH = i586 + +############################################################################### +# Top-level Rules +############################################################################### + +objects = $(DL_FILE) + +$(DL_FILE) = $(DL_FROM)/$(DL_FILE) + +$(DL_FILE)_MD5 = d59fc02c9c34f0d5c137495302e2c074 + +install : $(TARGET) + +check : $(patsubst %,$(DIR_CHK)/%,$(objects)) + +download :$(patsubst %,$(DIR_DL)/%,$(objects)) + +md5 : $(subst %,%_MD5,$(objects)) + +############################################################################### +# Downloading, checking, md5sum +############################################################################### + +$(patsubst %,$(DIR_CHK)/%,$(objects)) : + @$(CHECK) + +$(patsubst %,$(DIR_DL)/%,$(objects)) : + @$(LOAD) + +$(subst %,%_MD5,$(objects)) : + @$(MD5) + +############################################################################### +# Installation Details +############################################################################### + +$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) + @$(PREBUILD) + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && ./configure --prefix=/usr + cd $(DIR_APP) && make $(MAKETUNING) OPT="$(CFLAGS)" + cd $(DIR_APP) && make install + + # Install configuration. + mkdir -pv /etc/acpi/{actions,events} + cp -vf $(DIR_SRC)/config/acpid/power /etc/acpi/events/ + cp -vf $(DIR_SRC)/config/acpid/power.sh /etc/acpi/actions/ + chmod 755 /etc/acpi/actions/power.sh + @rm -rf $(DIR_APP) + @$(POSTBUILD) diff --git a/lfs/apcupsd b/lfs/apcupsd index 5638cab..a0da935 100644 --- a/lfs/apcupsd +++ b/lfs/apcupsd @@ -77,6 +77,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/apcupsd-3.14.4-fix-gcc44.patch cd $(DIR_APP) && ./configure --prefix=/usr --enable-usb --enable-cgi \ --with-cgi-bin=/srv/web/ipfire/cgi-bin cd $(DIR_APP) && make $(MAKETUNING) diff --git a/lfs/applejuice b/lfs/applejuice deleted file mode 100644 index 12e58a6..0000000 --- a/lfs/applejuice +++ /dev/null @@ -1,90 +0,0 @@ -############################################################################### -# # -# IPFire.org - A linux based firewall # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt # -# # -# This program is free software: you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation, either version 3 of the License, or # -# (at your option) any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program. If not, see http://www.gnu.org/licenses/. # -# # -############################################################################### - - -############################################################################### -# Definitions -############################################################################### - -include Config - -VER = 0.31 - -THISAPP = applejuice-$(VER) -DL_FILE = $(THISAPP).tar.gz -DL_FROM = $(URL_IPFIRE) -DIR_APP = $(DIR_SRC)/$(THISAPP) -TARGET = $(DIR_INFO)/$(THISAPP) -PROG = applejuice -PAK_VER = 2 - -DEPS = "java" - -############################################################################### -# Top-level Rules -############################################################################### - -objects = $(DL_FILE) - -$(DL_FILE) = $(DL_FROM)/$(DL_FILE) - -$(DL_FILE)_MD5 = dc4ac444ff9ec9e1e841e856564d0234 - -install : $(TARGET) - -check : $(patsubst %,$(DIR_CHK)/%,$(objects)) - -download :$(patsubst %,$(DIR_DL)/%,$(objects)) - -md5 : $(subst %,%_MD5,$(objects)) - -dist: - @$(PAK) - -############################################################################### -# Downloading, checking, md5sum -############################################################################### - -$(patsubst %,$(DIR_CHK)/%,$(objects)) : - @$(CHECK) - -$(patsubst %,$(DIR_DL)/%,$(objects)) : - @$(LOAD) - -$(subst %,%_MD5,$(objects)) : - @$(MD5) - -############################################################################### -# Installation Details -############################################################################### - -$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) - @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && mkdir -p /opt/applejuice && mv -fv ajcore.jar /opt/applejuice - cd $(DIR_APP) && mv -fv libajnetmask.so /opt/applejuice - ln -svf ../../opt/applejuice/libajnetmask.so /usr/lib - cd $(DIR_APP) && cp -afv phpaj /srv/web - chown nobody.nobody /srv/web/phpaj -Rv - -mkdir /var/ipfire/applejuice - echo "RAMSIZE=64M" > /var/ipfire/applejuice/settings - chown nobody.nobody /var/ipfire/applejuice -Rv - @rm -rf $(DIR_APP) - @$(POSTBUILD) diff --git a/lfs/bash b/lfs/bash index afdb511..34bf075 100644 --- a/lfs/bash +++ b/lfs/bash @@ -24,7 +24,7 @@
include Config
-VER = 3.1 +VER = 3.2
THISAPP = bash-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -48,7 +48,7 @@ else EXTRA_INSTALL = endif
-EXTRA_CONFIG += --build=$(BUILDTARGET) +EXTRA_CONFIG += ac_cv_func_working_mktime=yes
############################################################################### # Top-level Rules @@ -58,7 +58,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = ef5304c4b22aaa5088972c792ed45d72 +$(DL_FILE)_MD5 = 00bfa16d58e034e3c2aa27f390390d30
install : $(TARGET)
@@ -88,8 +88,11 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-fixes-8.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-login.patch + + for i in $$(seq 1 51); do \ + cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/bash/bash32-$$(printf "%03d" "$${i}") || exit 1; \ + done + cd $(DIR_APP) && ./configure $(EXTRA_CONFIG) cd $(DIR_APP) && make $(EXTRA_MAKE) cd $(DIR_APP) && make $(EXTRA_INSTALL) install diff --git a/lfs/binutils b/lfs/binutils index 073ee23..48aee5c 100644 --- a/lfs/binutils +++ b/lfs/binutils @@ -24,40 +24,51 @@
include Config
-VER = 2.18 +VER = 2.22
THISAPP = binutils-$(VER) DL_FILE = $(THISAPP).tar.bz2 DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP)
-# XXX maybe we can remove that ugly MACHINE= by this -#unexport MACHINE - # Normal build or /tools build. # ifeq "$(ROOT)" "" TARGET = $(DIR_INFO)/$(THISAPP) - EXTRA_CONFIG = --prefix=/usr --enable-shared --disable-nls + EXTRA_CONFIG = \ + --prefix=/usr \ + --enable-shared \ + --disable-nls EXTRA_MAKE = tooldir=/usr EXTRA_INSTALL = tooldir=/usr else ifeq "$(PASS)" "1" + CFLAGS := $(patsubst -march=%,,$(CFLAGS)) TARGET = $(DIR_INFO)/$(THISAPP)-tools1 - CFLAGS = - EXTRA_CONFIG = --prefix=/tools --disable-nls --disable-werror --disable-gprof - #EXTRA_MAKE = LDFLAGS="-all-static" + EXTRA_CONFIG = \ + --target=$(CROSSTARGET) \ + --prefix=/tools \ + --disable-nls \ + --disable-werror + EXTRA_MAKE = EXTRA_INSTALL = else TARGET = $(DIR_INFO)/$(THISAPP)-tools2 - EXTRA_CONFIG = --prefix=/tools --with-lib-path=/tools/lib --disable-nls + EXTRA_ENV = \ + CC="$(CROSSTARGET)-gcc -B/tools/lib/" \ + AR="$(CROSSTARGET)-ar" \ + RANLIB="$(CROSSTARGET)-ranlib" + EXTRA_CONFIG = \ + --host=$(BUILDTARGET) \ + --build=$(BUILDTARGET) \ + --prefix=/tools \ + --with-lib-path=/tools/lib \ + --disable-nls EXTRA_MAKE = EXTRA_INSTALL = endif endif
-EXTRA_CONFIG += --build=$(BUILDTARGET) - ifeq "$(MACHINE_TYPE)" "arm" EXTRA_CONFIG += \ --with-abi=aapcs-linux \ @@ -72,7 +83,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = 9d22ee4dafa3a194457caf4706f9cf01 +$(DL_FILE)_MD5 = ee0f10756c84979622b992a4a61ea3f5
install : $(TARGET)
@@ -103,21 +114,17 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) $(DIR_SRC)/binutils-build && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) @mkdir $(DIR_SRC)/binutils-build - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-configure-1.patch - cd $(DIR_SRC)/binutils-build && MACHINE= $(DIR_APP)/configure $(EXTRA_CONFIG) -ifeq "$(PASS)" "1" - cd $(DIR_SRC)/binutils-build && make configure-host MAKEINFO=makeinfo MACHINE= -endif - cd $(DIR_SRC)/binutils-build && make $(EXTRA_MAKE) $(MAKETUNING) MAKEINFO=makeinfo MACHINE= - cd $(DIR_SRC)/binutils-build && make $(EXTRA_INSTALL) install MAKEINFO=makeinfo MACHINE= + + # Prevent installing libiberty to lib64. + cd $(DIR_APP) && sed -i 's%(^MULTIOSDIR = ).*%\1 ../lib%' libiberty/Makefile.in + + cd $(DIR_SRC)/binutils-build && $(EXTRA_ENV) MACHINE= $(DIR_APP)/configure $(EXTRA_CONFIG) + cd $(DIR_SRC)/binutils-build && make $(EXTRA_MAKE) $(MAKETUNING) MACHINE= + cd $(DIR_SRC)/binutils-build && make $(EXTRA_INSTALL) install MACHINE= ifeq "$(ROOT)" "" cp -v $(DIR_APP)/include/libiberty.h /usr/include else -ifeq "$(PASS)" "1" - cd $(DIR_SRC)/binutils-build && make -C ld clean MACHINE= - cd $(DIR_SRC)/binutils-build && make -C ld LIB_PATH=/tools/lib MACHINE= - cd $(DIR_SRC)/binutils-build && cp -v ld/ld-new /tools/bin -else +ifeq "$(PASS)" "2" cd $(DIR_SRC)/binutils-build && make -C ld clean MACHINE= cd $(DIR_SRC)/binutils-build && make -C ld LIB_PATH=/usr/lib:/lib MACHINE= cd $(DIR_SRC)/binutils-build && cp -v ld/ld-new /tools/bin diff --git a/lfs/cairo b/lfs/cairo new file mode 100644 index 0000000..591549a --- /dev/null +++ b/lfs/cairo @@ -0,0 +1,77 @@ +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see http://www.gnu.org/licenses/. # +# # +############################################################################### + +############################################################################### +# Definitions +############################################################################### + +include Config + +VER = 1.10.2 + +THISAPP = cairo-$(VER) +DL_FILE = $(THISAPP).tar.gz +DL_FROM = $(URL_IPFIRE) +DIR_APP = $(DIR_SRC)/$(THISAPP) +TARGET = $(DIR_INFO)/$(THISAPP) + +############################################################################### +# Top-level Rules +############################################################################### + +objects = $(DL_FILE) + +$(DL_FILE) = $(DL_FROM)/$(DL_FILE) + +$(DL_FILE)_MD5 = f101a9e88b783337b20b2e26dfd26d5f + +install : $(TARGET) + +check : $(patsubst %,$(DIR_CHK)/%,$(objects)) + +download :$(patsubst %,$(DIR_DL)/%,$(objects)) + +md5 : $(subst %,%_MD5,$(objects)) + +############################################################################### +# Downloading, checking, md5sum +############################################################################### + +$(patsubst %,$(DIR_CHK)/%,$(objects)) : + @$(CHECK) + +$(patsubst %,$(DIR_DL)/%,$(objects)) : + @$(LOAD) + +$(subst %,%_MD5,$(objects)) : + @$(MD5) + +############################################################################### +# Installation Details +############################################################################### + +$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) + @$(PREBUILD) + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && ./configure --prefix=/usr --disable-win32 --disable-os2 --disable-beos + cd $(DIR_APP) && make $(MAKETUNING) + cd $(DIR_APP) && make install + @rm -rf $(DIR_APP) + @$(POSTBUILD) diff --git a/lfs/capi4k-utils b/lfs/capi4k-utils index 9546c43..b82c156 100644 --- a/lfs/capi4k-utils +++ b/lfs/capi4k-utils @@ -76,6 +76,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP)/capiinit && make install cd $(DIR_APP)/capi20 && sed -i -e 's/include <linux/capi.h>/include <linux/types.h>\n#include <linux/capi.h>/' capidyn.c cd $(DIR_APP)/capi20 && sed -i -e 's/include <linux/capi.h>/include <linux/types.h>\n#include <linux/capi.h>/' capi20.c + cd $(DIR_APP)/capi20 && sed -i "/include/a #include <stddef.h>" capi20.h cd $(DIR_APP)/capi20 && sed -i -e 's/-O2/$(CFLAGS)/' configure cd $(DIR_APP)/capi20 && SED=sed ./configure cd $(DIR_APP)/capi20 && SED=sed make $(MAKETUNING) diff --git a/lfs/ccache b/lfs/ccache index 3a8dc6e..b4ef607 100644 --- a/lfs/ccache +++ b/lfs/ccache @@ -24,7 +24,7 @@
include Config
-VER = 3.1.7 +VER = 3.1.8
THISAPP = ccache-$(VER) DL_FILE = $(THISAPP).tar.bz2 @@ -32,6 +32,13 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP)-pass$(PASS)
+ifeq "$(PASS)" "1" + CFLAGS := $(patsubst -march=%,,$(CFLAGS)) +endif + +# Set max cache size to 5GB +CFLAGS += -DDEFAULT_MAXSIZE=5242880 + ############################################################################### # Top-level Rules ############################################################################### @@ -40,7 +47,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = 82257745eac54826527946e9e3d046f4 +$(DL_FILE)_MD5 = 0e0f25fb342dcb1196d9c2986a7323cf
install : $(TARGET)
@@ -70,15 +77,28 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && CFLAGS="-O2 -static -DDEFAULT_MAXSIZE=5242880" ./configure --prefix=$(ROOT)/usr/local + cd $(DIR_APP) && ./configure --prefix=/tools cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) cd $(DIR_APP) && make install - ln -sf ccache $(ROOT)/usr/local/bin/gcc - ln -sf ccache $(ROOT)/usr/local/bin/g++ - ln -sf ccache $(ROOT)/usr/local/bin/cc - ln -sf ccache $(ROOT)/usr/local/bin/$(BUILDTARGET)-gcc - ln -sf ccache $(ROOT)/usr/local/bin/$(BUILDTARGET)-g++ - ln -sf ccache $(ROOT)/usr/local/bin/$(BUILDTARGET)-cc - $(ROOT)/usr/local/bin/ccache -z + +ifeq "$(PASS)" "1" + mkdir -pv /tools/ccache/bin + ln -svf ../../bin/ccache /tools/ccache/bin/gcc + ln -svf ../../bin/ccache /tools/ccache/bin/g++ + ln -svf ../../bin/ccache /tools/ccache/bin/cc + ln -svf ../../bin/ccache /tools/ccache/bin/c++ + ln -svf ../../bin/ccache /tools/ccache/bin/$(CROSSTARGET)-gcc + ln -svf ../../bin/ccache /tools/ccache/bin/$(CROSSTARGET)-g++ + ln -svf ../../bin/ccache /tools/ccache/bin/$(CROSSTARGET)-cc + ln -svf ../../bin/ccache /tools/ccache/bin/$(CROSSTARGET)-c++ +endif + +ifeq "$(PASS)" "2" + ln -svf ../../bin/ccache /tools/ccache/bin/$(BUILDTARGET)-gcc + ln -svf ../../bin/ccache /tools/ccache/bin/$(BUILDTARGET)-g++ + ln -svf ../../bin/ccache /tools/ccache/bin/$(BUILDTARGET)-cc + ln -svf ../../bin/ccache /tools/ccache/bin/$(BUILDTARGET)-c++ +endif + @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/centerim b/lfs/centerim deleted file mode 100644 index 8e874a7..0000000 --- a/lfs/centerim +++ /dev/null @@ -1,84 +0,0 @@ -############################################################################### -# # -# IPFire.org - A linux based firewall # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt # -# # -# This program is free software: you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation, either version 3 of the License, or # -# (at your option) any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program. If not, see http://www.gnu.org/licenses/. # -# # -############################################################################### - -############################################################################### -# Definitions -############################################################################### - -include Config - -VER = 4.22.1 - -THISAPP = centerim-$(VER) -DL_FILE = $(THISAPP).tar.gz -DL_FROM = $(URL_IPFIRE) -DIR_APP = $(DIR_SRC)/$(THISAPP) -TARGET = $(DIR_INFO)/$(THISAPP) -PROG = centerim -PAK_VER = 1 - -DEPS = "" - -############################################################################### -# Top-level Rules -############################################################################### - -objects = $(DL_FILE) - -$(DL_FILE) = $(DL_FROM)/$(DL_FILE) - -$(DL_FILE)_MD5 = d128b54e3cc04a6ee651c51682a497a9 - -install : $(TARGET) - -check : $(patsubst %,$(DIR_CHK)/%,$(objects)) - -download :$(patsubst %,$(DIR_DL)/%,$(objects)) - -md5 : $(subst %,%_MD5,$(objects)) - -dist: - $(PAK) - -############################################################################### -# Downloading, checking, md5sum -############################################################################### - -$(patsubst %,$(DIR_CHK)/%,$(objects)) : - @$(CHECK) - -$(patsubst %,$(DIR_DL)/%,$(objects)) : - @$(LOAD) - -$(subst %,%_MD5,$(objects)) : - @$(MD5) - -############################################################################### -# Installation Details -############################################################################### - -$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) - @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && ./configure --prefix=/usr --disable-nls - cd $(DIR_APP) && make $(MAKETUNING) - cd $(DIR_APP) && make install - @rm -rf $(DIR_APP) - @$(POSTBUILD) diff --git a/lfs/cleanup-toolchain b/lfs/cleanup-toolchain index 306b781..0b3252f 100644 --- a/lfs/cleanup-toolchain +++ b/lfs/cleanup-toolchain @@ -52,30 +52,39 @@ md5 : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) ifeq "$(PASS)" "1" - mv -v /tools/bin/{ld,ld-old} - mv -v /tools/$(BUILDTARGET)/bin/{ld,ld-old} - cp -v /tools/bin/{ld-new,ld} - ln -sv /tools/bin/ld /tools/$(BUILDTARGET)/bin/ld - gcc -dumpspecs > /tools/lib/gcc/$(BUILDTARGET)/$(GCC_VER)/specs - sed 's@/lib/ld-linux.so@/tools&@g' /tools/lib/gcc/$(BUILDTARGET)/$(GCC_VER)/specs > tempspecfile - mv -vf tempspecfile /tools/lib/gcc/$(BUILDTARGET)/$(GCC_VER)/specs - find /tools/lib/gcc/$(BUILDTARGET)/$(GCC_VER)/include/* -maxdepth 0 -xtype d -exec rm -rvf '{}' ; - rm -vf `grep -l "DO NOT EDIT THIS FILE" /tools/lib/gcc/$(BUILDTARGET)/$(GCC_VER)/include/*` + SPECS=$$(dirname $$(/tools/bin/$(CROSSTARGET)-gcc -print-libgcc-file-name))/specs; \ + /tools/bin/$(CROSSTARGET)-gcc -dumpspecs | sed \ + -e 's@/lib(64)?/ld@/tools&@g' \ + -e "/^*cpp:$$/{n;s,$$, -isystem /tools/include,}" > $$SPECS endif + ifeq "$(PASS)" "2" - -strip --strip-debug /tools/lib/* - -strip --strip-unneeded /tools/{,s}bin/* - rm -rfv /tools/{info,man} /usr/local/man - chown -R root:root /tools + # Remove the first cross compiler which is not needed anymore. + find /tools/ -name "$(CROSSTARGET)*" | xargs rm -rfv + + # Remove man and info pages. + rm -rfv /tools/{,share}/{info,man} + + # Strip all binaries. + STRIP="/usr/bin/strip" $(DIR_SRC)/src/stripper /tools/ + + # Fix ownership of the toolchain. + chown -R root:root /tools/ + + # Update/create linker cache. + /tools/sbin/ldconfig endif + ifeq "$(PASS)" "3" mv -v /tools/bin/{ld,ld-old} mv -v /tools/$(BUILDTARGET)/bin/{ld,ld-old} mv -v /tools/bin/{ld-new,ld} ln -sv /tools/bin/ld /tools/$(BUILDTARGET)/bin/ld - gcc -dumpspecs | \ - perl -p -e 's@/tools/lib/ld-linux.so@/lib/ld-linux.so@g;' \ - -e 's@*startfile_prefix_spec:\n@$$_/usr/lib/ @g;' > \ - /tools/lib/gcc/$(BUILDTARGET)/$(GCC_VER)/specs + + gcc -dumpspecs | sed \ + -e 's@/tools@@g' \ + -e '/*startfile_prefix_spec:/{n;s@.*@/usr/lib/ @}' \ + -e '/*cpp:/{n;s@$$@ -isystem /usr/include@}' > \ + $$(dirname $$(gcc -print-libgcc-file-name))/specs endif @$(POSTBUILD) diff --git a/lfs/cmake b/lfs/cmake index 6b7aff6..5873965 100644 --- a/lfs/cmake +++ b/lfs/cmake @@ -70,7 +70,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && ./bootstrap + cd $(DIR_APP) && ./bootstrap --prefix=/usr cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install @rm -rf $(DIR_APP) diff --git a/lfs/coreutils b/lfs/coreutils index 7bdc0ec..c8b4d28 100644 --- a/lfs/coreutils +++ b/lfs/coreutils @@ -45,7 +45,7 @@ else EXTRA_INSTALL = endif
-EXTRA_CONFIG += --build=$(BUILDTARGET) +EXTRA_CONFIG += ac_cv_func_working_mktime=yes
############################################################################### # Top-level Rules @@ -86,6 +86,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/coreutils-5.96-rename-tee.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/coreutils-5.96-futimes.patch ifeq "$(ROOT)" "" ifeq "$(MACHINE)" "i586" cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-uname-1.patch diff --git a/lfs/cyrus-sasl b/lfs/cyrus-sasl index 1f8282e..749011f 100644 --- a/lfs/cyrus-sasl +++ b/lfs/cyrus-sasl @@ -82,6 +82,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/cyrus-sasl-2.1.22-bad-elif.patch cd $(DIR_APP) && sed -i '/sasl_global/s/^static //' lib/client.c cd $(DIR_APP) && sed -i 's/cat8/man8/' saslauthd/Makefile.in
diff --git a/lfs/dahdi b/lfs/dahdi index 0ae424c..48840bd 100644 --- a/lfs/dahdi +++ b/lfs/dahdi @@ -26,8 +26,8 @@ include Config
VERSUFIX=ipfire$(KCFG)
-VER = 2.2.1 -TVER = 2.2.1 +VER = 2.6.1 +TVER = 2.6.1
DL_FILE = dahdi-linux-$(VER).tar.gz DL_FILE1 = dahdi-tools-$(TVER).tar.gz @@ -38,32 +38,29 @@ DIR_APP = $(DIR_SRC)/dahdi-linux-$(VER) DIR_APP1 = $(DIR_SRC)/dahdi-tools-$(TVER)
PROG = dahdi -PAK_VER = 2 +PAK_VER = 3
DEPS = ""
- ifeq "$(KMOD)" "1" TARGET = $(DIR_INFO)/$(THISAPP)-kmod-$(KVER)-$(VERSUFIX) else TARGET = $(DIR_INFO)/$(THISAPP) endif
- ############################################################################### # Top-level Rules ###############################################################################
-objects = $(DL_FILE) $(DL_FILE1) dahdi-linux-2.2.1-firmware.tar.bz2 +objects = $(DL_FILE) $(DL_FILE1) dahdi-linux-2.6.1-firmware.tar.gz
$(DL_FILE) = $(DL_FROM)/$(DL_FILE) $(DL_FILE1) = $(DL_FROM)/$(DL_FILE1) -dahdi-linux-2.2.1-firmware.tar.bz2 = $(DL_FROM)/dahdi-linux-2.2.1-firmware.tar.bz2 - -$(DL_FILE)_MD5 = 46e4abbe743830045364fc716d293e88 -$(DL_FILE1)_MD5 = 04e7097929851f744f777400125180db -dahdi-linux-2.2.1-firmware.tar.bz2_MD5 = ccc50ded1641cd619e8d3a4615a6ad19 +dahdi-linux-2.6.1-firmware.tar.gz = $(DL_FROM)/dahdi-linux-2.6.1-firmware.tar.gz
+$(DL_FILE)_MD5 = 75932fe3d4a6e656165aaaa7a1377305 +$(DL_FILE1)_MD5 = c2e4f476a8e7f96a5cad46dd9b648446 +dahdi-linux-2.6.1-firmware.tar.gz_MD5 = cb804d1b4dd1b644d3c1638daa12dcf5
install : $(TARGET)
@@ -97,8 +94,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD)
rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_SRC) && tar jxf $(DIR_DL)/dahdi-linux-2.2.1-firmware.tar.bz2 - cd $(DIR_APP) && make $(MAKETUNING) clean all KVERS=$(KVER) + cd $(DIR_SRC) && tar axf $(DIR_DL)/dahdi-linux-2.6.1-firmware.tar.gz + cd $(DIR_APP) && make $(MAKETUNING) clean all KVERS=$(KVER)-$(VERSUFIX)
ifeq "$(KMOD)" "1" cd $(DIR_APP) && make install-modules KVERS=$(KVER)-$(VERSUFIX) @@ -141,4 +138,3 @@ else echo "dahdi_dummy" >> /etc/dahdi/modules endif @$(POSTBUILD) - diff --git a/lfs/dbus b/lfs/dbus index 818b89e..3a43106 100644 --- a/lfs/dbus +++ b/lfs/dbus @@ -77,6 +77,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_SRC)/dbus* cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/dbus-1.0.3-compile-fix-1.patch cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/etc \ --localstatedir=/var cd $(DIR_APP) && make $(MAKETUNING) diff --git a/lfs/directfb b/lfs/directfb index e406af8..34acb59 100644 --- a/lfs/directfb +++ b/lfs/directfb @@ -79,6 +79,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/directfb-1.1.1-fix-mknod.patch cd $(DIR_APP) && sed -i "s/checkfor_matrox=yes/checkfor_matrox=no/g" configure cd $(DIR_APP) && sed -i "s/checkfor_cle266=no/checkfor_cle266=yes/g" configure cd $(DIR_APP) && sed -i "s/checkfor_omap=.*/checkfor_omap=no/g" configure diff --git a/lfs/fake-environ b/lfs/fake-environ index b724912..978a90d 100644 --- a/lfs/fake-environ +++ b/lfs/fake-environ @@ -28,7 +28,7 @@ VER = 1.0
THISAPP = fake-environ DIR_APP = $(DIR_SRC)/$(THISAPP) -TARGET = $(DIR_INFO)/$(THISAPP)-tools$(PASS) +TARGET = $(DIR_INFO)/$(THISAPP)-tools
############################################################################### # Top-level Rules diff --git a/lfs/flac b/lfs/flac new file mode 100644 index 0000000..2143d36 --- /dev/null +++ b/lfs/flac @@ -0,0 +1,95 @@ +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see http://www.gnu.org/licenses/. # +# # +############################################################################### + +############################################################################### +# Definitions +############################################################################### + +include Config + +VER = 1.2.1 + +THISAPP = flac-$(VER) +DL_FILE = $(THISAPP).tar.gz +DL_FROM = $(URL_IPFIRE) +DIR_APP = $(DIR_SRC)/$(THISAPP) +TARGET = $(DIR_INFO)/$(THISAPP) +PROG = flac +PAK_VER = 1 + +DEPS = "libogg" + +############################################################################### +# Top-level Rules +############################################################################### + +objects = $(DL_FILE) + +$(DL_FILE) = $(DL_FROM)/$(DL_FILE) + +$(DL_FILE)_MD5 = 153c8b15a54da428d1f0fadc756c22c7 + +install : $(TARGET) + +check : $(patsubst %,$(DIR_CHK)/%,$(objects)) + +download :$(patsubst %,$(DIR_DL)/%,$(objects)) + +md5 : $(subst %,%_MD5,$(objects)) + +dist: + @$(PAK) + +############################################################################### +# Downloading, checking, md5sum +############################################################################### + +$(patsubst %,$(DIR_CHK)/%,$(objects)) : + @$(CHECK) + +$(patsubst %,$(DIR_DL)/%,$(objects)) : + @$(LOAD) + +$(subst %,%_MD5,$(objects)) : + @$(MD5) + +############################################################################### +# Installation Details +############################################################################### + +$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) + @$(PREBUILD) + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/flac-1.2.1-asm.patch + cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/flac-1.2.1-bitreader.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/flac-1.2.1-cflags.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/flac-1.2.1-gcc43.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/flac-1.2.1-hidesyms.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/flac-1.2.1-tests.patch + cd $(DIR_APP) && ./autogen.sh -V + cd $(DIR_APP) && \ + ./configure \ + --prefix=/usr \ + --disable-xmms-plugin \ + --disable-thorough-tests + cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) + cd $(DIR_APP) && make install + @rm -rf $(DIR_APP) + @$(POSTBUILD) diff --git a/lfs/fontconfig b/lfs/fontconfig index d5b020c..6f0850b 100644 --- a/lfs/fontconfig +++ b/lfs/fontconfig @@ -31,10 +31,6 @@ DL_FILE = $(THISAPP).tar.gz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) -PROG = fontconfig -PAK_VER = 1 - -DEPS = ""
############################################################################### # Top-level Rules @@ -54,9 +50,6 @@ download :$(patsubst %,$(DIR_DL)/%,$(objects))
md5 : $(subst %,%_MD5,$(objects))
-dist: - $(PAK) - ############################################################################### # Downloading, checking, md5sum ############################################################################### diff --git a/lfs/gawk b/lfs/gawk index 7bf7044..66bbfac 100644 --- a/lfs/gawk +++ b/lfs/gawk @@ -45,6 +45,8 @@ else EXTRA_INSTALL = endif
+EXTRA_CONFIG += ac_cv_func_working_mktime=yes + ############################################################################### # Top-level Rules ############################################################################### diff --git a/lfs/gcc b/lfs/gcc index 7665074..400cf26 100644 --- a/lfs/gcc +++ b/lfs/gcc @@ -24,48 +24,75 @@
include Config
-VER = 4.1.2 +VER = 4.4.7 + +GMP_VER = 5.0.5 +MPFR_VER = 2.4.2
THISAPP = gcc-$(VER) DL_FILE = $(THISAPP).tar.bz2 DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP)
+CFLAGS := $(patsubst -march=%,,$(CFLAGS)) +CFLAGS := $(patsubst -mtune=%,,$(CFLAGS)) + # Normal build or /tools build. # ifeq "$(ROOT)" "" TARGET = $(DIR_INFO)/$(THISAPP) - EXTRA_CONFIG = --prefix=/usr \ - --libexecdir=/usr/lib \ - --enable-shared \ - --enable-threads=posix \ - --enable-__cxa_atexit \ - --enable-clocale=gnu \ - --enable-languages=c,c++ \ - --disable-nls + EXTRA_CONFIG = \ + --prefix=/usr \ + --libexecdir=/usr/lib \ + --enable-shared \ + --enable-threads=posix \ + --enable-__cxa_atexit \ + --enable-clocale=gnu \ + --enable-languages=c,c++ \ + --disable-bootstrap \ + --disable-nls EXTRA_MAKE = EXTRA_INSTALL = else ifeq "$(PASS)" "1" TARGET = $(DIR_INFO)/$(THISAPP)-tools1 - EXTRA_CONFIG = --prefix=/tools \ - --with-local-prefix=/tools \ - --disable-nls \ - --enable-shared \ - --enable-languages=c \ - --enable-bootstrap + EXTRA_CONFIG = \ + --target=$(CROSSTARGET) \ + --prefix=/tools \ + --disable-nls \ + --disable-shared \ + --disable-decimal-float \ + --disable-threads \ + --disable-libmudflap \ + --disable-libssp \ + --disable-libgomp \ + --disable-libquadmath \ + --with-newlib \ + --without-headers \ + --without-ppl \ + --without-cloog \ + --enable-languages=c EXTRA_MAKE = EXTRA_INSTALL = else TARGET = $(DIR_INFO)/$(THISAPP)-tools2 - EXTRA_CONFIG = --prefix=/tools \ - --with-local-prefix=/tools \ - --enable-clocale=gnu \ - --enable-shared \ - --enable-threads=posix \ - --enable-__cxa_atexit \ - --enable-languages=c,c++ \ - --disable-libstdcxx-pch + EXTRA_ENV = \ + CC="$(CROSSTARGET)-gcc -B/tools/lib/" \ + AR="$(CROSSTARGET)-ar" \ + RANLIB="$(CROSSTARGET)-ranlib" + EXTRA_CONFIG = \ + --host=$(BUILDTARGET) \ + --build=$(BUILDTARGET) \ + --target=$(BUILDTARGET) \ + --prefix=/tools \ + --with-local-prefix=/tools \ + --enable-clocale=gnu \ + --enable-shared \ + --enable-threads=posix \ + --enable-__cxa_atexit \ + --enable-languages=c,c++ \ + --disable-libstdcxx-pch \ + --disable-bootstrap EXTRA_MAKE = EXTRA_INSTALL = endif @@ -73,23 +100,21 @@ endif
ifeq "$(MACHINE_TYPE)" "arm" EXTRA_CONFIG += \ - --build=$(BUILDTARGET) \ - --host=$(BUILDTARGET) \ - --target=$(BUILDTARGET) \ --with-float=soft \ - --disable-libmudflap \ - --disable-libssp \ - --disable-libgomp \ - --enable-threads=posix \ - --enable-long-long \ - --enable-c99 \ - --enable-__cxa_atexit \ - --disable-multilib -else - EXTRA_CONFIG += --build=$(BUILDTARGET) --host=$(BUILDTARGET) \ - --target=$(BUILDTARGET) + --disable-sjlj-exceptions +endif + +ifeq "$(MACHINE)" "i586" + EXTRA_CONFIG += \ + --with-arch=i586 \ + --with-tune=generic endif
+EXTRA_CONFIG += \ + --with-bugurl=http://bugtracker.ipfire.org \ + --disable-libunwind-exceptions \ + --enable-gnu-unique-object + export XCFLAGS = $(CFLAGS) export TCFLAGS = $(CFLAGS)
@@ -100,11 +125,18 @@ endif ############################################################################### # Top-level Rules ############################################################################### -objects = $(DL_FILE) + +objects = $(DL_FILE) \ + gmp-$(GMP_VER).tar.bz2 \ + mpfr-$(MPFR_VER).tar.bz2
$(DL_FILE) = $(DL_FROM)/$(DL_FILE) +gmp-$(GMP_VER).tar.bz2 = $(DL_FROM)/gmp-$(GMP_VER).tar.bz2 +mpfr-$(MPFR_VER).tar.bz2 = $(DL_FROM)/mpfr-$(MPFR_VER).tar.bz2
-$(DL_FILE)_MD5 = a4a3eb15c96030906d8494959eeda23c +$(DL_FILE)_MD5 = 295709feb4441b04e87dea3f1bab4281 +gmp-$(GMP_VER).tar.bz2_MD5 = 041487d25e9c230b0c42b106361055fe +mpfr-$(MPFR_VER).tar.bz2_MD5 = 89e59fe665e2b3ad44a6789f40b059a0
install : $(TARGET)
@@ -134,42 +166,71 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) $(DIR_SRC)/gcc-build && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-fix_linker_version_detection.patch @mkdir $(DIR_SRC)/gcc-build
- cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/gcc-4.1.2-gcc_eh.patch - cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/gcc-4.1.2-arm-linux-soft-float.patch + # Apply patches. + cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/gcc/gcc44-build-id.patch + cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/gcc/gcc44-c++-builtin-redecl.patch + cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/gcc/gcc44-i386-libgomp.patch + cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/gcc/gcc44-libtool-no-rpath.patch + cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/gcc/gcc44-no-add-needed.patch + cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/gcc/gcc44-pr33763.patch + cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/gcc/gcc44-rh330771.patch + cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/gcc/gcc44-rh533181.patch + cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/gcc/gcc44-rh610785.patch + cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/gcc/gcc44-unwind-debug-hook.patch + +ifneq "$(ROOT)" "" + # Build gmp and mpfr internally in toolchain. + cd $(DIR_APP) && tar xfa $(DIR_DL)/gmp-$(GMP_VER).tar.bz2 + cd $(DIR_APP) && mv -v gmp-$(GMP_VER) gmp + cd $(DIR_APP) && tar xfa $(DIR_DL)/mpfr-$(MPFR_VER).tar.bz2 + cd $(DIR_APP) && mv -v mpfr-$(MPFR_VER) mpfr + +ifeq "$(PASS)" "1" + # GCC does not detect stack protection correctly, which causes problems + # for the build of libresolv_pic.a. + cd $(DIR_APP) && sed -i '/k prot/agcc_cv_libc_provides_ssp=yes' gcc/configure +endif
-ifeq "$(ROOT)" "" - cd $(DIR_APP) && sed -i 's/install_to_$$(INSTALL_DEST) //' libiberty/Makefile.in - cd $(DIR_APP) && sed -i 's/^XCFLAGS =$$/& -fomit-frame-pointer/' gcc/Makefile.in - cd $(DIR_APP) && sed -i 's@./fixinc.sh@-c true@' gcc/Makefile.in - cd $(DIR_APP) && sed -i 's/@have_mktemp_command@/yes/' gcc/gccbug.in +ifeq "$(PASS)" "2" + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/gcc-4.4.3-startfiles_fix-1.patch + + for file in $$(find $(DIR_APP)/gcc/config -name linux64.h -o -name linux.h \ + -o -name sysv4.h -o -name linux-eabi.h -o -name linux-elf.h); do \ + echo "Processing $${file}..."; \ + sed -i $${file} \ + -e 's@/lib(64)?(32)?/ld@/tools&@g' \ + -e 's@/usr@/tools@g'; \ + echo '#undef STANDARD_INCLUDE_DIR' >> $${file}; \ + echo '#define STANDARD_INCLUDE_DIR 0' >> $${file}; \ + echo '#define STANDARD_STARTFILE_PREFIX_1 ""' >> $${file}; \ + echo '#define STANDARD_STARTFILE_PREFIX_2 ""' >> $${file}; \ + done +endif +endif
- cd $(DIR_SRC)/gcc-build && $(DIR_APP)/configure $(EXTRA_CONFIG) + cd $(DIR_APP) && sed -i 's/install_to_$$(INSTALL_DEST) //' libiberty/Makefile.in + cd $(DIR_APP) && sed -i gcc/Makefile.in \ + -e 's@./fixinc.sh@-c true@' \ + -e 's/^T_CFLAGS =$$/& -fomit-frame-pointer/' + + # The actual build. + cd $(DIR_SRC)/gcc-build && \ + $(EXTRA_ENV) \ + $(DIR_APP)/configure \ + $(EXTRA_CONFIG) cd $(DIR_SRC)/gcc-build && make $(MAKETUNING) $(EXTRA_MAKE) cd $(DIR_SRC)/gcc-build && make $(EXTRA_INSTALL) install - ln -sfv ../usr/bin/cpp /lib - ln -sfv gcc /usr/bin/cc + +ifeq "$(ROOT)" "" + ln -svf ../usr/bin/cpp /lib + ln -svf gcc /usr/bin/cc else -ifeq "$(PASS)" "1" - cd $(DIR_SRC)/gcc-build && $(DIR_APP)/configure $(EXTRA_CONFIG) - cd $(DIR_SRC)/gcc-build && make $(MAKETUNING) $(EXTRA_MAKE) - cd $(DIR_SRC)/gcc-build && make $(EXTRA_INSTALL) install - ln -sfv gcc /tools/bin/cc - ln -sf ccache $(ROOT)/usr/local/bin/$(BUILDTARGET)-gcc - ln -sf ccache $(ROOT)/usr/local/bin/$(BUILDTARGET)-g++ - ln -sf ccache $(ROOT)/usr/local/bin/$(BUILDTARGET)-cc +ifeq "$(PASS)" "1" + ln -svf libgcc.a $$(/tools/bin/$(CROSSTARGET)-gcc -print-libgcc-file-name | sed 's/libgcc/&_eh/') else - cd $(DIR_APP) && cp -v gcc/Makefile.in{,.orig} - cd $(DIR_APP) && sed 's@./fixinc.sh@-c true@' gcc/Makefile.in.orig > gcc/Makefile.in - cd $(DIR_APP) && cp -v gcc/Makefile.in{,.tmp} - cd $(DIR_APP) && sed 's/^XCFLAGS =$/& -fomit-frame-pointer/' gcc/Makefile.in.tmp \ - > gcc/Makefile.in - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-specs-1.patch - cd $(DIR_SRC)/gcc-build && $(DIR_APP)/configure $(EXTRA_CONFIG) - cd $(DIR_SRC)/gcc-build && make $(MAKETUNING) $(EXTRA_MAKE) - cd $(DIR_SRC)/gcc-build && make $(EXTRA_INSTALL) install + ln -svf gcc /tools/bin/cc endif endif @rm -rf $(DIR_APP) $(DIR_SRC)/gcc-build diff --git a/lfs/gettext b/lfs/gettext index 43e7552..0865dff 100644 --- a/lfs/gettext +++ b/lfs/gettext @@ -24,7 +24,7 @@
include Config
-VER = 0.14.5 +VER = 0.18.1.1
THISAPP = gettext-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -34,14 +34,10 @@ DIR_APP = $(DIR_SRC)/$(THISAPP) # Normal build or /tools build. # ifeq "$(ROOT)" "" -ifeq "$(LFS_PASS)" "install" - TARGET = $(DIR_INFO)/$(THISAPP)-install -else TARGET = $(DIR_INFO)/$(THISAPP) EXTRA_CONFIG = --prefix=/usr --disable-nls EXTRA_MAKE = EXTRA_INSTALL = -endif else TARGET = $(DIR_INFO)/$(THISAPP)-tools EXTRA_CONFIG = --prefix=/tools --disable-shared --disable-nls @@ -57,7 +53,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = e2f6581626a22a0de66dce1d81d00de3 +$(DL_FILE)_MD5 = 3dd55b952826d2b32f51308f2f91aa89
install : $(TARGET)
@@ -88,18 +84,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) ifeq "$(ROOT)" "" -ifeq "$(LFS_PASS)" "install" - cd $(DIR_APP) && ./configure --prefix=/ --libdir=/lib \ - --with-included-gettext --disable-rpath \ - --enable-relocatable --disable-shared - cd $(DIR_APP)/gettext-runtime && make CFLAGS="-Os -fomit-frame-pointer" -C intl/ - cd $(DIR_APP)/gettext-runtime && make CFLAGS="-Os -fomit-frame-pointer" \ - DESTDIR=/opt/$(MACHINE)-uClibc -C intl/ install -else cd $(DIR_APP) && ./configure $(EXTRA_CONFIG) cd $(DIR_APP) && make $(EXTRA_MAKE) cd $(DIR_APP) && make $(EXTRA_INSTALL) install -endif else cd $(DIR_APP)/gettext-tools && ./configure $(EXTRA_CONFIG) cd $(DIR_APP)/gettext-tools && make -C lib diff --git a/lfs/glib b/lfs/glib index 2c41905..1b43287 100644 --- a/lfs/glib +++ b/lfs/glib @@ -24,17 +24,13 @@
include Config
-VER = 2.22.2 +VER = 2.32.3
THISAPP = glib-$(VER) -DL_FILE = $(THISAPP).tar.bz2 +DL_FILE = $(THISAPP).tar.xz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) -PROG = glib -PAK_VER = 3 - -DEPS = ""
############################################################################### # Top-level Rules @@ -44,7 +40,8 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = 846a86c74b74d5b16826aa5508940f9b +$(DL_FILE)_MD5 = 9bd3ac535c24b6c162be13b2c43c5adc + install : $(TARGET)
check : $(patsubst %,$(DIR_CHK)/%,$(objects)) @@ -53,9 +50,6 @@ download :$(patsubst %,$(DIR_DL)/%,$(objects))
md5 : $(subst %,%_MD5,$(objects))
-dist: - @$(PAK) - ############################################################################### # Downloading, checking, md5sum ############################################################################### @@ -75,8 +69,9 @@ $(subst %,%_MD5,$(objects)) :
$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && ./configure --prefix=/usr --disable-nls + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/etc \ + --with-pcre=system cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install @rm -rf $(DIR_APP) diff --git a/lfs/glibc b/lfs/glibc index 2e0b7f9..234a7ce 100644 --- a/lfs/glibc +++ b/lfs/glibc @@ -24,7 +24,8 @@
include Config
-VER = 2.5 +VER = 2.12-2-gc4ccff1 +PORTS_VER = 2.12.1
THISAPP = glibc-$(VER) DL_FILE = $(THISAPP).tar.bz2 @@ -35,23 +36,33 @@ DIR_APP = $(DIR_SRC)/$(THISAPP) # ifeq "$(ROOT)" "" TARGET = $(DIR_INFO)/$(THISAPP) - EXTRA_CONFIG = --prefix=/usr \ - --disable-profile --enable-add-ons \ - --enable-kernel=2.6.0 --libexecdir=/usr/lib/glibc + EXTRA_CONFIG = \ + --build=$(BUILDTARGET) \ + --prefix=/usr \ + --libexecdir=/usr/lib/glibc EXTRA_MAKE = EXTRA_INSTALL = else TARGET = $(DIR_INFO)/$(THISAPP)-tools - EXTRA_CONFIG = --prefix=/tools \ - --disable-profile --enable-add-ons \ - --enable-kernel=2.6.0 --with-binutils=/tools/bin \ - --without-gd --with-headers=/tools/include \ - --without-selinux + EXTRA_CONFIG = \ + --host=$(CROSSTARGET) \ + --build=$(BUILDTARGET) \ + --prefix=/tools \ + --with-headers=/tools/include \ + libc_cv_forced_unwind=yes \ + libc_cv_ctors_header=yes \ + libc_cv_c_cleanup=yes EXTRA_MAKE = EXTRA_INSTALL = endif
-EXTRA_CONFIG += --build=$(BUILDTARGET) +# Enable some extra optimization for the glibc code. +CFLAGS = -O3 -DNDEBUG -fasynchronous-unwind-tables -fPIC -DPIC \ + -DNO_CTORS_DTORS_SECTIONS + +ifeq "$(MACHINE)" "i586" + CFLAGS += -march=i586 -mtune=generic -mno-tls-direct-seg-refs +endif
ifeq "$(MACHINE_TYPE)" "arm" # Disable hardware FP for ARM. @@ -59,24 +70,30 @@ ifeq "$(MACHINE_TYPE)" "arm" --without-fp endif
+# Add some general configuration flags +EXTRA_CONFIG += \ + --disable-profile \ + --enable-kernel=2.6.0 \ + --enable-add-ons \ + --without-selinux \ + --enable-experimental-malloc \ + --enable-bind-now + ############################################################################### # Top-level Rules ###############################################################################
-objects = $(DL_FILE) \ - glibc-libidn-$(VER).tar.bz2 +objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE) -glibc-libidn-$(VER).tar.bz2 = $(DL_FROM)/glibc-libidn-$(VER).tar.bz2
-$(DL_FILE)_MD5 = 1fb29764a6a650a4d5b409dda227ac9f -glibc-libidn-$(VER).tar.bz2_MD5 = 8787868ba8962d9b125997ec2f25ac01 +$(DL_FILE)_MD5 = 450958ad3d3b5a432b356376904c96b0
# ARM needs glibc-ports ifeq "$(MACHINE_TYPE)" "arm" - objects += glibc-ports-$(VER).tar.bz2 - glibc-ports-$(VER).tar.bz2 = $(DL_FROM)/glibc-ports-$(VER).tar.bz2 - glibc-ports-$(VER).tar.bz2_MD5 = 183f6d46e8fa5e4b2aff240ab1586c2e + objects += glibc-ports-$(PORTS_VER).tar.bz2 + glibc-ports-$(PORTS_VER).tar.bz2 = $(DL_FROM)/glibc-ports-$(PORTS_VER).tar.bz2 + glibc-ports-$(PORTS_VER).tar.bz2_MD5 = cb01ab976180e98287cef5079e35359e endif
install : $(TARGET) @@ -108,20 +125,126 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) $(DIR_SRC)/glibc-build && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) @mkdir $(DIR_SRC)/glibc-build -ifeq "$(MACHINE_TYPE)" "arm" - cd $(DIR_APP) && tar jxf $(DIR_DL)/glibc-ports-$(VER).tar.bz2 - cd $(DIR_APP) && mv -v glibc-ports-$(VER) ports
- cd $(DIR_APP)/ports && patch -Np1 -i $(DIR_SRC)/src/patches/glibc-ports-avoid-using-asm-procinfo.patch - cd $(DIR_APP)/ports && patch -Np1 -i $(DIR_SRC)/src/patches/glibc-arm-dont-use-swp.patch +ifeq "$(MACHINE_TYPE)" "arm" + cd $(DIR_APP) && tar jxf $(DIR_DL)/glibc-ports-$(PORTS_VER).tar.bz2 + cd $(DIR_APP) && mv -v glibc-ports-$(PORTS_VER) ports
- # asm/page.h should not be included in sysdeps/unix/sysv/linux/arm/ioperm.c. - cd $(DIR_APP) && sed "/asm/page.h/d" -i ports/sysdeps/unix/sysv/linux/arm/ioperm.c + # http://sourceware.org/bugzilla/show_bug.cgi?id=12354 + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc-cfi-entry-not-closed.patch endif
+ # Apply all patches. + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-aliasing.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-fedora.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-getlogin-r.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-localedata.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-recvmmsg.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh580498.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh582738.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh587360.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh593396.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh593686.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh601686.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh607010.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh607461.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh615090.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh615701.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh621959.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh623187.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh625893.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh630801.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh631011.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh641128.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh642584.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh643822.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh645672.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh646954.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh647448.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh652661.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh656014.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh656530.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh657572.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh661982.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh667974.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh676076.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh676591.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh681054.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh688720.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh688980.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh689471.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh692177.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh692838.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh694386.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh695595.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh695963.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh696472.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh697421.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh699724.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh700507.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh703480.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh703481.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh705465.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh711927.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh711987.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh712248.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh713134.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh714823.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh718057.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh726517.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh730379.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh731042.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh736346.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh737778.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh738665.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh738763.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh739184.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh739971.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh740506.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh740506-2.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh749188.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh750531.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh751750.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh752122.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh757888.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh766513.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh767146.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh767693.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh767693-2.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh767746.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh771342.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh782585.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh784402.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh785984.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh788959.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh788959-2.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh789189.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh789209.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh789238.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh789238-2.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh794817.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh794817-2.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh795498.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh797094-1.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh797094-2.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh804630.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh804689.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh808337.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh808545.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh809602.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh833716.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh837026.patch + + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc-resolv-stack_chk_fail.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc-remove-ctors-dtors-output-sections.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc-test-installation.pl-nss_test1.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc-test-installation.pl-libgcc_s.patch + + # Fixes: + # Makefile:235: *** mixed implicit and normal rules. Stop. + cd $(DIR_APP) && sed -i 's/ot $$/ot:\n\ttouch $$@\n$$/' manual/Makefile + ifeq "$(ROOT)" "" - # This locale causes a loop on bash login - exclude it - cd $(DIR_APP) && sed -i '/vi_VN.TCVN/d' localedata/SUPPORTED ifeq "$(MACHINE_TYPE)" "arm" cd $(DIR_APP) && sed -i 's|libs -o|libs -L/usr/lib -Wl,-dynamic-linker=/lib/ld-linux.so.3 -o|' \ scripts/test-installation.pl @@ -130,21 +253,16 @@ else scripts/test-installation.pl endif endif - cd $(DIR_SRC)/glibc-build && CFLAGS="$(CFLAGS)" $(DIR_APP)/configure $(EXTRA_CONFIG)
-ifeq "$(ROOT)" "" - touch /etc/ld.so.conf - cd $(DIR_SRC)/glibc-build && make $(MAKETUNING) $(EXTRA_MAKE) - cd $(DIR_SRC)/glibc-build && make $(EXTRA_INSTALL) install -else - -mkdir /tools/etc - touch /tools/etc/ld.so.conf - cd $(DIR_SRC)/glibc-build && make $(MAKETUNING) $(EXTRA_MAKE) + cd $(DIR_SRC)/glibc-build && \ + CFLAGS="$(CFLAGS) -fno-asynchronous-unwind-tables" \ + $(DIR_APP)/configure $(EXTRA_CONFIG) + cd $(DIR_SRC)/glibc-build && make PARALLELMFLAGS=$(MAKETUNING) \ + CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" cd $(DIR_SRC)/glibc-build && make $(EXTRA_INSTALL) install -endif
- # Creating the locales ifeq "$(ROOT)" "" + # Creating the locales mkdir -p /usr/lib/locale cd $(DIR_SRC)/glibc-build && localedef -i en_US -f ISO-8859-1 en_US cd $(DIR_SRC)/glibc-build && localedef -i en_US -f UTF-8 en_US.utf8 diff --git a/lfs/gmp b/lfs/gmp index 5b50081..cf52276 100644 --- a/lfs/gmp +++ b/lfs/gmp @@ -24,7 +24,7 @@
include Config
-VER = 4.2.4 +VER = 5.0.5
THISAPP = gmp-$(VER) DL_FILE = $(THISAPP).tar.bz2 @@ -44,7 +44,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = fc1e3b3a2a5038d4d74138d0b9cf8dbe +$(DL_FILE)_MD5 = 041487d25e9c230b0c42b106361055fe
install : $(TARGET)
diff --git a/lfs/gmp-compat b/lfs/gmp-compat new file mode 100644 index 0000000..3d20e88 --- /dev/null +++ b/lfs/gmp-compat @@ -0,0 +1,83 @@ +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see http://www.gnu.org/licenses/. # +# # +############################################################################### + +############################################################################### +# Definitions +############################################################################### + +include Config + +VER = 4.3.2 + +THISAPP = gmp-$(VER) +DL_FILE = $(THISAPP).tar.bz2 +DL_FROM = $(URL_IPFIRE) +DIR_APP = $(DIR_SRC)/$(THISAPP) +TARGET = $(DIR_INFO)/$(THISAPP) + +ifeq "$(MACHINE)" "i586" + CONFIGURE_ARGS = ABI=32 +endif + +############################################################################### +# Top-level Rules +############################################################################### + +objects = $(DL_FILE) + +$(DL_FILE) = $(DL_FROM)/$(DL_FILE) + +$(DL_FILE)_MD5 = dd60683d7057917e34630b4a787932e8 + +install : $(TARGET) + +check : $(patsubst %,$(DIR_CHK)/%,$(objects)) + +download :$(patsubst %,$(DIR_DL)/%,$(objects)) + +md5 : $(subst %,%_MD5,$(objects)) + +############################################################################### +# Downloading, checking, md5sum +############################################################################### + +$(patsubst %,$(DIR_CHK)/%,$(objects)) : + @$(CHECK) + +$(patsubst %,$(DIR_DL)/%,$(objects)) : + @$(LOAD) + +$(subst %,%_MD5,$(objects)) : + @$(MD5) + +############################################################################### +# Installation Details +############################################################################### + +$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) + @$(PREBUILD) + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && $(CONFIGURE_ARGS) ./configure --prefix=/usr \ + --enable-cxx --enable-mpbsd --disable-nls + cd $(DIR_APP) && make $(MAKETUNING) + cd $(DIR_APP) && install -m 644 .libs/libgmp.so.3.5.2 /usr/lib + ln -svf libgmp.so.3.5.2 /usr/lib/libgmp.so.3 + @rm -rf $(DIR_APP) + @$(POSTBUILD) diff --git a/lfs/gnupg b/lfs/gnupg index c596a5f..5e5ead9 100644 --- a/lfs/gnupg +++ b/lfs/gnupg @@ -24,7 +24,7 @@
include Config
-VER = 1.4.5 +VER = 1.4.12
THISAPP = gnupg-$(VER) DL_FILE = $(THISAPP).tar.bz2 @@ -40,7 +40,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = 811525965b4c0987e6418a7729a6444d +$(DL_FILE)_MD5 = ce3742e5c7912559cab7894ad8ba7f6b
install : $(TARGET)
diff --git a/lfs/grep b/lfs/grep index 4b3e1e1..e9b0b18 100644 --- a/lfs/grep +++ b/lfs/grep @@ -24,10 +24,10 @@
include Config
-VER = 2.5.1a +VER = 2.14
THISAPP = grep-$(VER) -DL_FILE = $(THISAPP).tar.bz2 +DL_FILE = $(THISAPP).tar.xz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP)
@@ -41,7 +41,7 @@ ifeq "$(ROOT)" "" else TARGET = $(DIR_INFO)/$(THISAPP)-tools EXTRA_CONFIG = --prefix=/tools --disable-nls \ - --disable-perl-regexp + --disable-perl-regexp --without-included-regex EXTRA_MAKE = EXTRA_INSTALL = endif @@ -54,7 +54,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = 52202fe462770fa6be1bb667bd6cf30c +$(DL_FILE)_MD5 = d4a3f03849d1e17ce56ab76aa5a24cab
install : $(TARGET)
@@ -83,11 +83,7 @@ $(subst %,%_MD5,$(objects)) :
$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) -ifeq "$(ROOT)" "" - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-redhat_fixes-2.patch - cd $(DIR_APP) && chmod +x tests/fmbtest.sh -endif + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && ./configure $(EXTRA_CONFIG) cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) cd $(DIR_APP) && make $(EXTRA_INSTALL) install diff --git a/lfs/grub b/lfs/grub index ad6e304..56935f0 100644 --- a/lfs/grub +++ b/lfs/grub @@ -32,7 +32,8 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) SUP_ARCH = i586 -CFLAGS = +CFLAGS = -O0 -fno-reorder-functions -fno-strict-aliasing -Wall -Werror \ + -Wno-shadow -Wno-unused -Wno-pointer-sign CXXFLAGS =
############################################################################### @@ -73,54 +74,15 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.97-disk_geometry-1.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.90-append.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.90-symlinkmenulst.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.91-splashimagehelp.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.93-configfile.patch - cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/grub-0.93-endedit.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.93-graphics-bootterm.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.93-special-device-names.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.94-i2o.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.95-graphics.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.95-hiddenmenu-tweak.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.95-md.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.95-md-rework.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.95-md-mbr.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.95-moreraid.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.95-nonmbr.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.95-odirect.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.95-recheck-bad.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.95-staticcurses.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.95-xpmjunk.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.97-cmdline-size.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.97-datadir.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.97-dmraid.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.97-dmraid-partition-names.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.97-install.in.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.97-mactel-kbd.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.97-mpath.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.97-nxstack.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.97-nx-multiinstall.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.97-once.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.95-splash-error-term.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.94-installcopyonly.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.97-prototypes.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.97-stderr.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.97-bz429187-cciss.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.97-dmraid-recheck-bad.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.97-mdadm-path.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.97_grub-install_virtio.patch - - # XXX Does not work anymore - #cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.97_grub-install_virtio.patch - - cd $(DIR_APP) && perl -pi -e 's,/usr/lib/grub/i386-pc,/usr/share/grub/i386-pc,' docs/grub.texi - cd $(DIR_APP) && sed -i 's/AM_INIT_AUTOMAKE/&\nAM_PROG_AS/' configure.ac - - cd $(DIR_APP) && aclocal && autoheader && autoconf && automake --add-missing - cd $(DIR_APP) && CFLAGS="-Os -s -fno-strict-aliasing" ./configure --prefix=/usr
+ # Applying patches. + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-fedora-18.patch + cd $(DIR_APP) && autoreconf + cd $(DIR_APP) && autoconf + + # Build. + cd $(DIR_APP) && CFLAGS="$(CFLAGS)" ./configure --prefix=/usr \ + --disable-auto-linux-mem-opt cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install
diff --git a/lfs/hddtemp b/lfs/hddtemp deleted file mode 100644 index 9533f67..0000000 --- a/lfs/hddtemp +++ /dev/null @@ -1,76 +0,0 @@ -############################################################################### -# # -# IPFire.org - A linux based firewall # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt # -# # -# This program is free software: you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation, either version 3 of the License, or # -# (at your option) any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program. If not, see http://www.gnu.org/licenses/. # -# # -############################################################################### - -############################################################################### -# Definitions -############################################################################### - -include Config - -VER = 0.3-beta14 - -THISAPP = hddtemp-$(VER) -DL_FILE = $(THISAPP).tar.bz2 -DL_FROM = $(URL_IPFIRE) -DIR_APP = $(DIR_SRC)/$(THISAPP) -TARGET = $(DIR_INFO)/$(THISAPP) - -############################################################################### -# Top-level Rules -############################################################################### - -objects = $(DL_FILE) - -$(DL_FILE) = $(DL_FROM)/$(DL_FILE) - -$(DL_FILE)_MD5 = bbf8be4539495e18bec54af77511a680 - -install : $(TARGET) - -check : $(patsubst %,$(DIR_CHK)/%,$(objects)) - -download :$(patsubst %,$(DIR_DL)/%,$(objects)) - -md5 : $(subst %,%_MD5,$(objects)) - -############################################################################### -# Downloading, checking, md5sum -############################################################################### - -$(patsubst %,$(DIR_CHK)/%,$(objects)) : - @$(CHECK) - -$(patsubst %,$(DIR_DL)/%,$(objects)) : - @$(LOAD) - -$(subst %,%_MD5,$(objects)) : - @$(MD5) - -############################################################################### -# Installation Details -############################################################################### - -$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) - @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && ./configure --prefix=/usr --with-db-path=/etc/hddtemp.db - cd $(DIR_APP) && make $(MAKETUNING) && make install - @rm -rf $(DIR_APP) - @$(POSTBUILD) diff --git a/lfs/hplip b/lfs/hplip index 1f86586..cfcdeef 100644 --- a/lfs/hplip +++ b/lfs/hplip @@ -24,7 +24,7 @@
include Config
-VER = 2.7.10 +VER = 3.12.6
THISAPP = hplip-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = hplip -PAK_VER = 1 +PAK_VER = 2
DEPS = ""
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = eafb815ca4b4bb5a2f35a76ee3c2dc72 +$(DL_FILE)_MD5 = 5303938e8630775ea6fb383af85775e5
install : $(TARGET)
diff --git a/lfs/hwdata b/lfs/hwdata index 6716a95..6804849 100644 --- a/lfs/hwdata +++ b/lfs/hwdata @@ -27,11 +27,7 @@ include Config VER = ipfire
THISAPP = hwdata -ifeq "$(LFS_PASS)" "install" - TARGET = $(DIR_INFO)/$(THISAPP)-install -else - TARGET = $(DIR_INFO)/$(THISAPP) -endif +TARGET = $(DIR_INFO)/$(THISAPP)
############################################################################### # Top-level Rules @@ -53,11 +49,6 @@ md5 :
$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) -ifeq "$(LFS_PASS)" "install" - -mkdir -p -m 755 /install/initrd/usr/share/hwdata - install -m 644 $(DIR_SRC)/src/hwdata/*.ids /install/initrd/usr/share/hwdata -else -mkdir -p -m 755 /usr/share/hwdata install -m 644 $(DIR_SRC)/src/hwdata/*.ids /usr/share/hwdata -endif @$(POSTBUILD) diff --git a/lfs/icecc b/lfs/icecc index d661b19..9c9651c 100644 --- a/lfs/icecc +++ b/lfs/icecc @@ -24,7 +24,7 @@
include Config
-VER = 0.9.6 +VER = 0.9.7
THISAPP = icecc-$(VER) DL_FILE = $(THISAPP).tar.bz2 @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = icecc -PAK_VER = 2 +PAK_VER = 3
DEPS = ""
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = c6dacb3f28eade45f603a99245cde4fd +$(DL_FILE)_MD5 = c06900c2f4011428d0d48826a04f74fb
install : $(TARGET)
@@ -78,6 +78,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/icecream-rename-scheduler.patch + cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/icecream-0.9.7-platform-arm.patch cd $(DIR_APP) && ./configure \ --prefix=/opt/icecream cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) diff --git a/lfs/imspector b/lfs/imspector index 092211b..51654c5 100644 --- a/lfs/imspector +++ b/lfs/imspector @@ -77,6 +77,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_SRC)/imspector && sed -e "s/^SSL_LIBS.*/& -lcrypto/" -i Makefile cd $(DIR_SRC)/imspector && make install -mv /usr/etc/imspector /etc/imspector -mv /etc/imspector/imspector /etc/imspector diff --git a/lfs/inetutils b/lfs/inetutils index 03cf5de..87a137e 100644 --- a/lfs/inetutils +++ b/lfs/inetutils @@ -72,6 +72,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-gcc4_fixes-3.patch cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-daemon_fixes-1.patch + cd $(DIR_APP) && sed -i '/#include/a #include <stdlib.h>' libicmp/icmp_timestamp.c cd $(DIR_APP) && ./configure --prefix=/usr --libexecdir=/usr/sbin \ --sysconfdir=/etc --localstatedir=/var \ --mandir=/usr/share/man --infodir=/usr/share/info \ diff --git a/lfs/iproute2 b/lfs/iproute2 index 50ccf40..42a8184 100644 --- a/lfs/iproute2 +++ b/lfs/iproute2 @@ -24,10 +24,10 @@
include Config
-VER = 2.6.16-060323 +VER = 3.5.1
THISAPP = iproute2-$(VER) -DL_FILE = $(THISAPP).tar.gz +DL_FILE = $(THISAPP).tar.xz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) @@ -35,13 +35,12 @@ TARGET = $(DIR_INFO)/$(THISAPP) ############################################################################### # Top-level Rules ############################################################################### -objects = $(DL_FILE) htb3.6-020525.tgz + +objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE) -htb3.6-020525.tgz = $(DL_FROM)/htb3.6-020525.tgz
-$(DL_FILE)_MD5 = f31d4516b35bbfeaa72c762f5959e97c -htb3.6-020525.tgz_MD5 = 3064fd8642ce6a7e155a29c5205b99d4 +$(DL_FILE)_MD5 = d4425b44edd5eacd6099e672e4baacbf
install : $(TARGET)
@@ -70,9 +69,7 @@ $(subst %,%_MD5,$(objects)) :
$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) -# cd $(DIR_APP) && tar xfz $(DIR_DL)/htb3.6-020525.tgz *.diff -# cd $(DIR_APP) && for i in htb3*tc.diff ; do patch -Np1 < $$i; done + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && make $(MAKETUNING) SBINDIR=/sbin cd $(DIR_APP) && make SBINDIR=/sbin install cd $(DIR_APP) && mv -v /sbin/arpd /usr/sbin diff --git a/lfs/iptstate b/lfs/iptstate deleted file mode 100644 index ee50367..0000000 --- a/lfs/iptstate +++ /dev/null @@ -1,76 +0,0 @@ -############################################################################### -# # -# IPFire.org - A linux based firewall # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt # -# # -# This program is free software: you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation, either version 3 of the License, or # -# (at your option) any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program. If not, see http://www.gnu.org/licenses/. # -# # -############################################################################### - -############################################################################### -# Definitions -############################################################################### - -include Config - -VER = 2.1 - -THISAPP = iptstate-$(VER) -DL_FILE = $(THISAPP).tar.bz2 -DL_FROM = $(URL_IPFIRE) -DIR_APP = $(DIR_SRC)/$(THISAPP) -TARGET = $(DIR_INFO)/$(THISAPP) - -############################################################################### -# Top-level Rules -############################################################################### - -objects = $(DL_FILE) - -$(DL_FILE) = $(DL_FROM)/$(DL_FILE) - -$(DL_FILE)_MD5 = c99e19c66645689b44a871428e003ec7 - -install : $(TARGET) - -check : $(patsubst %,$(DIR_CHK)/%,$(objects)) - -download :$(patsubst %,$(DIR_DL)/%,$(objects)) - -md5 : $(subst %,%_MD5,$(objects)) - -############################################################################### -# Downloading, checking, md5sum -############################################################################### - -$(patsubst %,$(DIR_CHK)/%,$(objects)) : - @$(CHECK) - -$(patsubst %,$(DIR_DL)/%,$(objects)) : - @$(LOAD) - -$(subst %,%_MD5,$(objects)) : - @$(MD5) - -############################################################################### -# Installation Details -############################################################################### - -$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) - @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && make $(MAKETUNING) - cd $(DIR_APP) && make install - @rm -rf $(DIR_APP) - @$(POSTBUILD) diff --git a/lfs/kbd b/lfs/kbd index 72e509f..1c99242 100644 --- a/lfs/kbd +++ b/lfs/kbd @@ -30,11 +30,7 @@ THISAPP = kbd-$(VER) DL_FILE = $(THISAPP).tar.bz2 DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) -ifeq "$(LFS_PASS)" "install" - TARGET = $(DIR_INFO)/$(THISAPP)-install -else - TARGET = $(DIR_INFO)/$(THISAPP) -endif +TARGET = $(DIR_INFO)/$(THISAPP)
############################################################################### # Top-level Rules @@ -78,21 +74,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-more-programs-1.patch cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-backspace-1.patch cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-gcc4_fixes-1.patch -ifeq "$(LFS_PASS)" "install" - cd $(DIR_APP) && CFLAGS="-Os -fomit-frame-pointer" ./configure --disable-nls - cd $(DIR_APP)/src && make CFLAGS="-Os -fomit-frame-pointer" DATA_DIR=/lib/kbd BINDIR=/bin setfont kbd_mode dumpkeys loadkeys loadunimap showconsolefont - cd $(DIR_APP)/src && install -m 0755 setfont loadunimap kbd_mode dumpkeys loadkeys showconsolefont unicode_start unicode_stop /install/initrd/bin - mkdir -p /install/initrd/lib/kbd/consolefonts - cd $(DIR_APP) && install -m 0644 data/consolefonts/lat0-16.psfu /install/initrd/lib/kbd/consolefonts - cd $(DIR_APP) && install -m 0644 data/consolefonts/lat1-16.psfu /install/initrd/lib/kbd/consolefonts - cd $(DIR_APP) && install -m 0644 data/consolefonts/lat2-16.psfu /install/initrd/lib/kbd/consolefonts - cd $(DIR_APP) && install -m 0644 data/consolefonts/lat5-16.psfu /install/initrd/lib/kbd/consolefonts - cd $(DIR_APP) && install -m 0644 data/consolefonts/iso07u-16.psfu /install/initrd/lib/kbd/consolefonts -else cd $(DIR_APP) && ./configure --datadir=/lib/kbd --disable-nls cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install mv -v /usr/bin/{kbd_mode,openvt,setfont} /bin -endif @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/kudzu b/lfs/kudzu index f66c325..bc5ed02 100644 --- a/lfs/kudzu +++ b/lfs/kudzu @@ -30,11 +30,7 @@ THISAPP = kudzu-$(VER) DL_FILE = kudzu-$(VER).tar.gz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) -ifeq "$(LFS_PASS)" "install" - TARGET = $(DIR_INFO)/$(THISAPP)-install -else - TARGET = $(DIR_INFO)/$(THISAPP) -endif +TARGET = $(DIR_INFO)/$(THISAPP)
############################################################################### # Top-level Rules @@ -75,18 +71,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kudzu-usbnet.patch -ifeq "$(LFS_PASS)" "install" - cd $(DIR_APP) && patch -N < $(DIR_SRC)/src/patches/kudzu-link-lintl.diff - cd $(DIR_APP) && make RPM_OPT_FLAGS="-O2 -I/opt/$(MACHINE)-uClibc/include" \ - ARCH=$(MACHINE) - cd $(DIR_APP) && install -m 0755 kudzu /install/initrd/bin/kudzu - #cd $(DIR_APP) && install -m 0644 libkudzu.a /install/initrd/lib - #cd $(DIR_APP) && install -m 0644 libkudzu_loader.a /install/initrd/lib -else rm -rf /usr/sbin/kudzu cd $(DIR_APP) && ARCH=$(MACHINE) RPM_OPT_FLAGS="$(CFLAGS)" make cd $(DIR_APP) && ARCH=$(MACHINE) RPM_OPT_FLAGS="$(CFLAGS)" make install cd $(DIR_APP) && ARCH=$(MACHINE) RPM_OPT_FLAGS="$(CFLAGS)" make install-program -endif @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/libaal b/lfs/libaal deleted file mode 100644 index 08d8ac1..0000000 --- a/lfs/libaal +++ /dev/null @@ -1,77 +0,0 @@ -############################################################################### -# # -# IPFire.org - A linux based firewall # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt # -# # -# This program is free software: you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation, either version 3 of the License, or # -# (at your option) any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program. If not, see http://www.gnu.org/licenses/. # -# # -############################################################################### - -############################################################################### -# Definitions -############################################################################### - -include Config - -VER = 1.0.5 - -THISAPP = libaal-$(VER) -DL_FILE = $(THISAPP).tar.gz -DL_FROM = $(URL_IPFIRE) -DIR_APP = $(DIR_SRC)/$(THISAPP) -TARGET = $(DIR_INFO)/$(THISAPP) - -############################################################################### -# Top-level Rules -############################################################################### - -objects = $(DL_FILE) - -$(DL_FILE) = $(DL_FROM)/$(DL_FILE) - -$(DL_FILE)_MD5 = 6c55201acd2a2c0a1f46addf248da6a2 - -install : $(TARGET) - -check : $(patsubst %,$(DIR_CHK)/%,$(objects)) - -download :$(patsubst %,$(DIR_DL)/%,$(objects)) - -md5 : $(subst %,%_MD5,$(objects)) - -############################################################################### -# Downloading, checking, md5sum -############################################################################### - -$(patsubst %,$(DIR_CHK)/%,$(objects)) : - @$(CHECK) - -$(patsubst %,$(DIR_DL)/%,$(objects)) : - @$(LOAD) - -$(subst %,%_MD5,$(objects)) : - @$(MD5) - -############################################################################### -# Installation Details -############################################################################### - -$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) - @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && ./configure --prefix=/usr - cd $(DIR_APP) && make $(MAKETUNING) - cd $(DIR_APP) && make install - @rm -rf $(DIR_APP) - @$(POSTBUILD) diff --git a/lfs/libexif b/lfs/libexif new file mode 100644 index 0000000..e39508d --- /dev/null +++ b/lfs/libexif @@ -0,0 +1,84 @@ +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see http://www.gnu.org/licenses/. # +# # +############################################################################### + +############################################################################### +# Definitions +############################################################################### + +include Config + +VER = 0.6.21 + +THISAPP = libexif-$(VER) +DL_FILE = $(THISAPP).tar.bz2 +DL_FROM = $(URL_IPFIRE) +DIR_APP = $(DIR_SRC)/$(THISAPP) +TARGET = $(DIR_INFO)/$(THISAPP) +PROG = libexif +PAK_VER = 1 + +DEPS = "" + +############################################################################### +# Top-level Rules +############################################################################### + +objects = $(DL_FILE) + +$(DL_FILE) = $(DL_FROM)/$(DL_FILE) + +$(DL_FILE)_MD5 = 27339b89850f28c8f1c237f233e05b27 + +install : $(TARGET) + +check : $(patsubst %,$(DIR_CHK)/%,$(objects)) + +download :$(patsubst %,$(DIR_DL)/%,$(objects)) + +md5 : $(subst %,%_MD5,$(objects)) + +dist: + @$(PAK) + +############################################################################### +# Downloading, checking, md5sum +############################################################################### + +$(patsubst %,$(DIR_CHK)/%,$(objects)) : + @$(CHECK) + +$(patsubst %,$(DIR_DL)/%,$(objects)) : + @$(LOAD) + +$(subst %,%_MD5,$(objects)) : + @$(MD5) + +############################################################################### +# Installation Details +############################################################################### + +$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) + @$(PREBUILD) + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && ./configure --prefix=/usr --disable-static + cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) + cd $(DIR_APP) && make install + @rm -rf $(DIR_APP) + @$(POSTBUILD) diff --git a/lfs/libffi b/lfs/libffi new file mode 100644 index 0000000..0e94b31 --- /dev/null +++ b/lfs/libffi @@ -0,0 +1,79 @@ +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see http://www.gnu.org/licenses/. # +# # +############################################################################### + +############################################################################### +# Definitions +############################################################################### + +include Config + +VER = 3.0.11 + +THISAPP = libffi-$(VER) +DL_FILE = $(THISAPP).tar.gz +DL_FROM = $(URL_IPFIRE) +DIR_APP = $(DIR_SRC)/$(THISAPP) +TARGET = $(DIR_INFO)/$(THISAPP) + +############################################################################### +# Top-level Rules +############################################################################### + +objects = $(DL_FILE) + +$(DL_FILE) = $(DL_FROM)/$(DL_FILE) + +$(DL_FILE)_MD5 = f69b9693227d976835b4857b1ba7d0e3 +install : $(TARGET) + +check : $(patsubst %,$(DIR_CHK)/%,$(objects)) + +download :$(patsubst %,$(DIR_DL)/%,$(objects)) + +md5 : $(subst %,%_MD5,$(objects)) + +dist: + @$(PAK) + +############################################################################### +# Downloading, checking, md5sum +############################################################################### + +$(patsubst %,$(DIR_CHK)/%,$(objects)) : + @$(CHECK) + +$(patsubst %,$(DIR_DL)/%,$(objects)) : + @$(LOAD) + +$(subst %,%_MD5,$(objects)) : + @$(MD5) + +############################################################################### +# Installation Details +############################################################################### + +$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) + @$(PREBUILD) + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && ./configure --prefix=/usr + cd $(DIR_APP) && make $(MAKETUNING) + cd $(DIR_APP) && make install + @rm -rf $(DIR_APP) + @$(POSTBUILD) diff --git a/lfs/libmad b/lfs/libmad index 548374d..ea0491e 100644 --- a/lfs/libmad +++ b/lfs/libmad @@ -77,6 +77,10 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/libmad-0.15.1b-cflags.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/libmad-0.15.1b-cflags-O2.patch + cd $(DIR_APP) && autoconf + cd $(DIR_APP) && ./configure --prefix=/usr cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) cd $(DIR_APP) && make install diff --git a/lfs/libnl b/lfs/libnl index d174775..ea557d9 100644 --- a/lfs/libnl +++ b/lfs/libnl @@ -73,6 +73,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/libnl-1.1-ULONG_MAX.patch cd $(DIR_APP) && ln -s /usr/src/linux/include/linux/if_vlan.h \ include/linux/if_vlan.h cd $(DIR_APP) && ln -s /usr/src/linux/include/linux/netfilter/nf_conntrack_common.h \ diff --git a/lfs/libogg b/lfs/libogg index bd9c022..41a1c7f 100644 --- a/lfs/libogg +++ b/lfs/libogg @@ -24,15 +24,15 @@
include Config
-VER = 1.1.4 +VER = 1.3.0
THISAPP = libogg-$(VER) -DL_FILE = $(THISAPP).tar.gz +DL_FILE = $(THISAPP).tar.xz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = libogg -PAK_VER = 2 +PAK_VER = 3
DEPS = ""
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = 10200ec22543841d9d1c23e0aed4e5e9 +$(DL_FILE)_MD5 = 84a35715170f2cd4c77a4448772b95d5
install : $(TARGET)
@@ -76,7 +76,7 @@ $(subst %,%_MD5,$(objects)) :
$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && ./configure --prefix=/usr cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) cd $(DIR_APP) && make install diff --git a/lfs/libsafe b/lfs/libsafe deleted file mode 100644 index 24c398c..0000000 --- a/lfs/libsafe +++ /dev/null @@ -1,78 +0,0 @@ -############################################################################### -# # -# IPFire.org - A linux based firewall # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt # -# # -# This program is free software: you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation, either version 3 of the License, or # -# (at your option) any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program. If not, see http://www.gnu.org/licenses/. # -# # -############################################################################### - -############################################################################### -# Definitions -############################################################################### - -include Config - -VER = 2.0-16 - -THISAPP = libsafe_$(VER) -DL_FILE = $(THISAPP).orig.tar.gz -DL_FROM = $(URL_IPFIRE) -DIR_APP = $(DIR_SRC)/libsafe-$(VER) -TARGET = $(DIR_INFO)/$(THISAPP) - -############################################################################### -# Top-level Rules -############################################################################### - -objects = $(DL_FILE) - -$(DL_FILE) = $(DL_FROM)/$(DL_FILE) - -$(DL_FILE)_MD5 = 6b7b6e6df84d4afb469ccc66d04fc24d - -install : $(TARGET) - -check : $(patsubst %,$(DIR_CHK)/%,$(objects)) - -download :$(patsubst %,$(DIR_DL)/%,$(objects)) - -md5 : $(subst %,%_MD5,$(objects)) - -############################################################################### -# Downloading, checking, md5sum -############################################################################### - -$(patsubst %,$(DIR_CHK)/%,$(objects)) : - @$(CHECK) - -$(patsubst %,$(DIR_DL)/%,$(objects)) : - @$(LOAD) - -$(subst %,%_MD5,$(objects)) : - @$(MD5) - -############################################################################### -# Installation Details -############################################################################### - -$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) - @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/libsafe-functioncaching.diff - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/libsafe-alpha.diff - cd $(DIR_APP) && make libsafe $(MAKETUNING) - cd $(DIR_APP) && yes | make install - @rm -rf $(DIR_APP) - @$(POSTBUILD) diff --git a/lfs/libsigc++ b/lfs/libsigc++ index 3635c6e..0d90f4c 100644 --- a/lfs/libsigc++ +++ b/lfs/libsigc++ @@ -24,7 +24,7 @@
include Config
-VER = 2.0.17 +VER = 2.0.18
THISAPP = libsigc++-$(VER) DL_FILE = $(THISAPP).tar.bz2 @@ -40,7 +40,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = fde0ee69e3125e982746d9fe005763e1 +$(DL_FILE)_MD5 = ddebf5aafc8525d10366a8724abc9f28
install : $(TARGET)
@@ -70,6 +70,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/libsigc++-gcc43.patch cd $(DIR_APP) && ./configure --prefix=/usr cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install diff --git a/lfs/libsolv b/lfs/libsolv index b602095..7651be7 100644 --- a/lfs/libsolv +++ b/lfs/libsolv @@ -24,7 +24,7 @@
include Config
-VER = 0.0.0-0db9d7f +VER = 0.0.0-c02d759
THISAPP = libsolv-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -34,7 +34,7 @@ TARGET = $(DIR_INFO)/$(THISAPP)
PROG = libsolv DEPS = "" -PAK_VER = 1 +PAK_VER = 2
############################################################################### # Top-level Rules @@ -44,7 +44,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = ba95c404d807bc71297c508a7127a3d9 +$(DL_FILE)_MD5 = a8ba49ca49c309d61836fe78b0e0f83a
install : $(TARGET)
@@ -86,26 +86,15 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && sed "/examples/d" -i CMakeLists.txt cd $(DIR_APP) && sed "/tools/d" -i CMakeLists.txt
- # Make sure that libsatsolverext is linked properly to all needed - # libraries. - cd $(DIR_APP) && echo "TARGET_LINK_LIBRARIES(libsolvext libsolv $${EXPAT_LIBRARY} $${ZLIB_LIBRARY})" \ - >> ext/CMakeLists.txt - - # Remove the RPM stuff when we build with -DFEDORA=1 because we - # do not support RPM. - cd $(DIR_APP) && sed -e "s/DEBIAN/FEDORA/g" -i ext/CMakeLists.txt - - # Our version of glibc has no __qsort_r - cd $(DIR_APP) && echo "#define USE_OWN_QSORT" >> src/util.h - cd $(DIR_APP) && mkdir build - cd $(DIR_APP)/build && cmake .. -DFEDORA=1 \ + cd $(DIR_APP)/build && cmake .. \ -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_SKIP_RPATH=1 + -DCMAKE_SKIP_RPATH=1 \ + -DENABLE_PERL=0 \ + -DENABLE_PYTHON=0 \ + -DENABLE_RUBY=0 cd $(DIR_APP)/build && make $(PARALELLISMFLAGS) - cd $(DIR_APP)/build && make install - @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/libvorbis b/lfs/libvorbis index 3b6d0f9..8213e39 100644 --- a/lfs/libvorbis +++ b/lfs/libvorbis @@ -24,15 +24,15 @@
include Config
-VER = 1.2.3 +VER = 1.3.3
THISAPP = libvorbis-$(VER) -DL_FILE = $(THISAPP).tar.bz2 +DL_FILE = $(THISAPP).tar.xz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = libvorbis -PAK_VER = 3 +PAK_VER = 4
DEPS = "libogg"
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = 67beb237faf97d74782ec7071756b2b6 +$(DL_FILE)_MD5 = 71b649d3e08e63ece16649df906ce8b9
install : $(TARGET)
@@ -76,11 +76,9 @@ $(subst %,%_MD5,$(objects)) :
$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && ./configure --prefix=/usr cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) - #cd $(DIR_APP) && sed -i.bak -e 's/-mno-ieee-fp//' lib/Makefile cd $(DIR_APP) && make install - cd $(DIR_APP) && install -v -m644 doc/Vorbis* /usr/share/doc/libvorbis-1.2.3 @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/linux2 b/lfs/linux2 index f6df2b4..7f8b76b 100644 --- a/lfs/linux2 +++ b/lfs/linux2 @@ -74,19 +74,19 @@ objects =$(DL_FILE) \ netfilter-layer7-v2.22.tar.gz \ patch-2.6.16-nath323-1.3.bz2 \ reiser4-for-2.6.32.patch.bz2 \ - xen-patches-2.6.32-2f.tar.bz2 + xen-patches-2.6.32-2g.tar.bz2
$(DL_FILE) = $(URL_IPFIRE)/$(DL_FILE) netfilter-layer7-v2.22.tar.gz = $(URL_IPFIRE)/netfilter-layer7-v2.22.tar.gz patch-2.6.16-nath323-1.3.bz2 = $(URL_IPFIRE)/patch-2.6.16-nath323-1.3.bz2 reiser4-for-2.6.32.patch.bz2 = $(URL_IPFIRE)/reiser4-for-2.6.32.patch.bz2 -xen-patches-2.6.32-2f.tar.bz2 = $(URL_IPFIRE)/xen-patches-2.6.32-2f.tar.bz2 +xen-patches-2.6.32-2g.tar.bz2 = $(URL_IPFIRE)/xen-patches-2.6.32-2g.tar.bz2
$(DL_FILE)_MD5 = 69c68c4a8eb0f04b051a7dbcff16f6d0 netfilter-layer7-v2.22.tar.gz_MD5 = 98dff8a3d5a31885b73341633f69501f patch-2.6.16-nath323-1.3.bz2_MD5 = f926409ff703a307baf54b57ab75d138 reiser4-for-2.6.32.patch.bz2_MD5 = 3246397973d9271eb8e6d7c97c5d2d91 -xen-patches-2.6.32-2f.tar.bz2_MD5 = b59d6f89e11accb9d40354418e13f31b +xen-patches-2.6.32-2g.tar.bz2_MD5 = d259a847c9aa73cd6e5c3605d9657d66
install : $(TARGET)
@@ -124,7 +124,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) ifeq "$(KCFG)" "-xen" # Apply gentoo Xen patches mkdir -p $(DIR_SRC)/xen-patches - cd $(DIR_SRC)/xen-patches && tar jxf $(DIR_DL)/xen-patches-2.6.32-2f.tar.bz2 + cd $(DIR_SRC)/xen-patches && tar jxf $(DIR_DL)/xen-patches-2.6.32-2g.tar.bz2
for x in `ls -1 $(DIR_SRC)/xen-patches/*.patch1`; do \ echo "*********** [Patch: $$x]"; \ diff --git a/lfs/m4 b/lfs/m4 index df4b6a9..4620221 100644 --- a/lfs/m4 +++ b/lfs/m4 @@ -36,13 +36,11 @@ DIR_APP = $(DIR_SRC)/$(THISAPP) ifeq "$(ROOT)" "" TARGET = $(DIR_INFO)/$(THISAPP) EXTRA_CONFIG = --prefix=/usr --disable-nls - EXTRA_LDFLAGS = EXTRA_MAKE = EXTRA_INSTALL = else TARGET = $(DIR_INFO)/$(THISAPP)-tools EXTRA_CONFIG = --prefix=/tools --disable-nls - EXTRA_LDFLAGS = -static EXTRA_MAKE = EXTRA_INSTALL = endif @@ -85,7 +83,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && LDFLAGS="$(EXTRA_LDFLAGS)" ./configure $(EXTRA_CONFIG) + cd $(DIR_APP) && ./configure $(EXTRA_CONFIG) cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) cd $(DIR_APP) && make $(EXTRA_INSTALL) install @rm -rf $(DIR_APP) diff --git a/lfs/make b/lfs/make index 13968fb..5650230 100644 --- a/lfs/make +++ b/lfs/make @@ -43,7 +43,7 @@ ifeq "$(ROOT)" "" EXTRA_MAKE = EXTRA_INSTALL = else - TARGET = $(DIR_INFO)/$(THISAPP)-tools-pass$(PASS) + TARGET = $(DIR_INFO)/$(THISAPP)-tools EXTRA_CONFIG = --prefix=/tools --disable-nls EXTRA_MAKE = EXTRA_INSTALL = diff --git a/lfs/minidlna b/lfs/minidlna new file mode 100644 index 0000000..47fe270 --- /dev/null +++ b/lfs/minidlna @@ -0,0 +1,87 @@ +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see http://www.gnu.org/licenses/. # +# # +############################################################################### + +############################################################################### +# Definitions +############################################################################### + +include Config + +VER = 1.0.25 + +THISAPP = minidlna-$(VER) +DL_FILE = minidlna_$(VER)_src.tar.gz +DL_FROM = $(URL_IPFIRE) +DIR_APP = $(DIR_SRC)/$(THISAPP) +TARGET = $(DIR_INFO)/$(THISAPP) +PROG = minidlna +PAK_VER = 1 + +DEPS = "ffmpeg flac libexif libid3tag libogg" + +############################################################################### +# Top-level Rules +############################################################################### + +objects = $(DL_FILE) + +$(DL_FILE) = $(DL_FROM)/$(DL_FILE) + +$(DL_FILE)_MD5 = d966256baf2f9b068b9de871ab5dade5 + +install : $(TARGET) + +check : $(patsubst %,$(DIR_CHK)/%,$(objects)) + +download :$(patsubst %,$(DIR_DL)/%,$(objects)) + +md5 : $(subst %,%_MD5,$(objects)) + +dist: + @$(PAK) + +############################################################################### +# Downloading, checking, md5sum +############################################################################### + +$(patsubst %,$(DIR_CHK)/%,$(objects)) : + @$(CHECK) + +$(patsubst %,$(DIR_DL)/%,$(objects)) : + @$(LOAD) + +$(subst %,%_MD5,$(objects)) : + @$(MD5) + +############################################################################### +# Installation Details +############################################################################### + +$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) + @$(PREBUILD) + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && sed -i '/include/a #include <limits.h>/' metadata.c + cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) + cd $(DIR_APP) && make install + + # Install configuration. + install -m 644 $(DIR_SRC)/config/minidlna/minidlna.conf /etc + @rm -rf $(DIR_APP) + @$(POSTBUILD) diff --git a/lfs/miniupnpd b/lfs/miniupnpd index c7ba937..7129ed5 100644 --- a/lfs/miniupnpd +++ b/lfs/miniupnpd @@ -24,7 +24,7 @@
include Config
-VER = 1.4 +VER = 1.7
THISAPP = miniupnpd-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -42,7 +42,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = ffa33d4ed8732c662bdb7d511e86db76 +$(DL_FILE)_MD5 = 5af9e8332d34a7b490d0d2ed3e674196
install : $(TARGET)
@@ -75,11 +75,8 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/miniupnpd-iptcrdr.patch - cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/miniupnpd-1.4_use_XT_ALIGN.patch cd $(DIR_APP) && make -f Makefile.linux \ CFLAGS="$(CFLAGS) -DIPTABLES_143 -I/usr/src/linux/include" - cd $(DIR_APP) && install -m 755 miniupnpd /usr/sbin -mkdir -pv /etc/miniupnpd cp -vf $(DIR_SRC)/config/miniupnpd/miniupnpd.conf /etc/miniupnpd/miniupnpd.conf diff --git a/lfs/misc-progs b/lfs/misc-progs index e59b305..6902cca 100644 --- a/lfs/misc-progs +++ b/lfs/misc-progs @@ -28,11 +28,7 @@ VER = ipfire
THISAPP = misc-progs DIR_APP = $(DIR_SRC)/$(THISAPP) -ifeq "$(LFS_PASS)" "install" - TARGET = $(DIR_INFO)/$(THISAPP)-install -else - TARGET = $(DIR_INFO)/$(THISAPP) -endif +TARGET = $(DIR_INFO)/$(THISAPP)
############################################################################### # Top-level Rules @@ -53,10 +49,6 @@ md5 : $(TARGET) : @$(PREBUILD) @rm -rf $(DIR_APP) $(DIR_SRC)/install+setup && cp -R $(DIR_SRC)/src/misc-progs/ $(DIR_SRC) -ifeq "$(LFS_PASS)" "install" - cd $(DIR_APP) && make CFLAGS="-Os -fomit-frame-pointer" iowrap - cd $(DIR_APP) && install -m 0755 iowrap /install/initrd/bin -else cp -R $(DIR_SRC)/src/install+setup/ $(DIR_SRC) for i in $(DIR_SRC)/langs/*/install/lang_*.c ; do \ cp $$i $(DIR_SRC)/install+setup/libsmooth; \ @@ -67,6 +59,5 @@ else -DSLOGAN='"$(SLOGAN)"' -DCONFIG_ROOT='"$(CONFIG_ROOT)"'" cd $(DIR_APP) && make CFLAGS="$(CFLAGS) -Wall -DCONFIG_ROOT='"$(CONFIG_ROOT)"' -DSNAME='"$(SNAME)"'" cd $(DIR_APP) && make install -endif @rm -rf $(DIR_APP) $(DIR_SRC)/install+setup @$(POSTBUILD) diff --git a/lfs/mpfr b/lfs/mpfr new file mode 100644 index 0000000..de5e006 --- /dev/null +++ b/lfs/mpfr @@ -0,0 +1,78 @@ +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see http://www.gnu.org/licenses/. # +# # +############################################################################### + +############################################################################### +# Definitions +############################################################################### + +include Config + +VER = 2.4.2 + +THISAPP = mpfr-$(VER) +DL_FILE = $(THISAPP).tar.bz2 +DL_FROM = $(URL_IPFIRE) +DIR_APP = $(DIR_SRC)/$(THISAPP) +TARGET = $(DIR_INFO)/$(THISAPP) + +############################################################################### +# Top-level Rules +############################################################################### + +objects = $(DL_FILE) + +$(DL_FILE) = $(DL_FROM)/$(DL_FILE) + +$(DL_FILE)_MD5 = 89e59fe665e2b3ad44a6789f40b059a0 + +install : $(TARGET) + +check : $(patsubst %,$(DIR_CHK)/%,$(objects)) + +download :$(patsubst %,$(DIR_DL)/%,$(objects)) + +md5 : $(subst %,%_MD5,$(objects)) + +############################################################################### +# Downloading, checking, md5sum +############################################################################### + +$(patsubst %,$(DIR_CHK)/%,$(objects)) : + @$(CHECK) + +$(patsubst %,$(DIR_DL)/%,$(objects)) : + @$(LOAD) + +$(subst %,%_MD5,$(objects)) : + @$(MD5) + +############################################################################### +# Installation Details +############################################################################### + +$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) + @$(PREBUILD) + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && $(CONFIGURE_ARGS) ./configure --prefix=/usr \ + --enable-thread-safe --disable-nls + cd $(DIR_APP) && make $(MAKETUNING) + cd $(DIR_APP) && make install + @rm -rf $(DIR_APP) + @$(POSTBUILD) diff --git a/lfs/nasm b/lfs/nasm index 9d5ad08..f6aeac7 100644 --- a/lfs/nasm +++ b/lfs/nasm @@ -24,10 +24,10 @@
include Config
-VER = 0.98.39 +VER = 2.10.03
THISAPP = nasm-$(VER) -DL_FILE = $(THISAPP).tar.bz2 +DL_FILE = $(THISAPP).tar.xz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) @@ -40,7 +40,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = 2032ad44c7359f7a9a166a40a633e772 +$(DL_FILE)_MD5 = a5d0ed070476a7c5b4f0893dc4a4ea4b
install : $(TARGET)
@@ -69,8 +69,7 @@ $(subst %,%_MD5,$(objects)) :
$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-security_fix-1.patch + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && ./configure --prefix=/usr --disable-nls cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install diff --git a/lfs/ncurses b/lfs/ncurses index 0b7bbb7..1c0fb04 100644 --- a/lfs/ncurses +++ b/lfs/ncurses @@ -24,7 +24,7 @@
include Config
-VER = 5.5 +VER = 5.9
THISAPP = ncurses-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -35,20 +35,25 @@ DIR_APP = $(DIR_SRC)/$(THISAPP) # ifeq "$(ROOT)" "" TARGET = $(DIR_INFO)/$(THISAPP) - EXTRA_CONFIG = --prefix=/usr --with-shared \ - --without-debug --enable-widec --disable-nls - EXTRA_MAKE = - EXTRA_INSTALL = + PREFIX = /usr else TARGET = $(DIR_INFO)/$(THISAPP)-tools - EXTRA_CONFIG = --prefix=/tools --with-shared \ - --without-debug --without-ada --enable-overwrite \ - --disable-nls - EXTRA_MAKE = - EXTRA_INSTALL = + PREFIX = /tools endif
-EXTRA_CONFIG += --build=$(BUILDTARGET) +EXTRA_CONFIG += \ + --prefix=$(PREFIX) \ + --with-shared \ + --without-debug \ + --without-ada \ + --with-ospeed=unsigned \ + --with-chtype=long \ + --enable-hard-tabs \ + --enable-xmc-glitch \ + --enable-colorfgbg \ + --enable-overwrite \ + --with-termlib=tinfo \ + --disable-nls
############################################################################### # Top-level Rules @@ -58,7 +63,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = e73c1ac10b4bfc46db43b2ddfd6244ef +$(DL_FILE)_MD5 = 8cb9c412e5f2d96bc6f459aa8c6282a1
install : $(TARGET)
@@ -88,25 +93,35 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/ncurses-5.5-fixes-1.patch - cd $(DIR_APP) && ./configure $(EXTRA_CONFIG) - cd $(DIR_APP) && make $(EXTRA_MAKE) #$(MAKETUNING) # Causes an error! - cd $(DIR_APP) && make $(EXTRA_INSTALL) install -ifeq "$(ROOT)" "" - chmod -v 755 /usr/lib/*.5.5 - chmod -v 644 /usr/lib/libncurses++w.a - mv -v /usr/lib/libncursesw.so.5* /lib - ln -sfv ../../lib/libncursesw.so.5 /usr/lib/libncursesw.so - cd $(DIR_APP) && for lib in curses ncurses form panel menu ; do \ - rm -vf /usr/lib/lib$${lib}.so ; \ - echo "INPUT(-l$${lib}w)" >/usr/lib/lib$${lib}.so ; \ - ln -sfv lib$${lib}w.a /usr/lib/lib$${lib}.a ; \ + cd $(DIR_APP) && mkdir -pv narrowc widec + + # Build narrowc version. + cd $(DIR_APP)/narrowc && ln -svf ../configure . + cd $(DIR_APP)/narrowc && ./configure $(EXTRA_CONFIG) --with-ticlib + cd $(DIR_APP)/narrowc && make libs + cd $(DIR_APP)/narrowc && make -C progs + + # Build widec version. + cd $(DIR_APP)/widec && ln -svf ../configure . + cd $(DIR_APP)/widec && ./configure $(EXTRA_CONFIG) \ + --enable-widec --without-progs + cd $(DIR_APP)/widec && make libs + + # Install everything. + cd $(DIR_APP) && make -C narrowc install.{libs,progs,data} + rm -vf $(PREFIX)/lib/libtinfo.* + cd $(DIR_APP) && make -C widec install.{libs,includes,man} + + # don't require -ltinfo when linking with --no-add-needed + for l in $(PREFIX)/lib/libncurses{,w}.so; do \ + soname=$$(basename $$(readlink $$l)); \ + rm -f $$l; \ + echo "INPUT($$soname -ltinfo)" > $$l; \ done - ln -sfv libncurses++w.a /usr/lib/libncurses++.a4 - echo "INPUT(-lncursesw)" >/usr/lib/libcursesw.so - ln -sfv libncurses.so /usr/lib/libcurses.so - ln -sfv libncursesw.a /usr/lib/libcursesw.a - ln -sfv libncurses.a /usr/lib/libcurses.a -endif + + rm -vf $(PREFIX)/lib/libcurses{,w}.so + echo "INPUT(-lncurses)" > $(PREFIX)/lib/libcurses.so + echo "INPUT(-lncursesw)" > $(PREFIX)/lib/libcursesw.so + echo "INPUT(-ltinfo)" > $(PREFIX)/lib/libtermcap.so @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/netpbm b/lfs/netpbm index 7ee4a19..5af5e47 100644 --- a/lfs/netpbm +++ b/lfs/netpbm @@ -77,6 +77,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP)/converter && patch -Np1 < $(DIR_SRC)/src/patches/netpbm-10.26.46-getline.patch cp $(DIR_SRC)/config/netpbm/Makefile.config $(DIR_APP) cd $(DIR_APP) && make cd $(DIR_APP) && make package PKGDIR=/usr/local/netpbm diff --git a/lfs/newt b/lfs/newt index 34b0f69..b5c57d0 100644 --- a/lfs/newt +++ b/lfs/newt @@ -30,11 +30,7 @@ THISAPP = newt-$(VER) DL_FILE = $(THISAPP).tar.gz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) -ifeq "$(LFS_PASS)" "install" - TARGET = $(DIR_INFO)/$(THISAPP)-install -else - TARGET = $(DIR_INFO)/$(THISAPP) -endif +TARGET = $(DIR_INFO)/$(THISAPP)
############################################################################### # Top-level Rules @@ -75,20 +71,11 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/newt-0.51.6-if1close.patch -ifeq "$(LFS_PASS)" "install" - cd $(DIR_APP) && ./configure --without-gpm-support --host $(MACHINE)-uclibc - cd $(DIR_APP) && sed -i 's%^CFLAGS.*$$%CFLAGS = -Os -fomit-frame-pointer -Wall -D_GNU_SOURCE -DUTF8 -I/opt/i586-uClibc/include%' Makefile - cd $(DIR_APP) && make libnewt.a - -mkdir -p /opt/$(MACHINE)-uClibc/{include,lib} - cd $(DIR_APP) && install -m 0644 libnewt.a /opt/$(MACHINE)-uClibc/lib/libnewt.a - cd $(DIR_APP) && install -m 0644 newt.h /opt/$(MACHINE)-uClibc/include/newt.h -else cd $(DIR_APP) && ./configure --without-gpm-support cd $(DIR_APP) && sed -i 's%^CFLAGS.*$$%CFLAGS = $(CFLAGS) -Wall -D_GNU_SOURCE%' Makefile cd $(DIR_APP) && make cd $(DIR_APP) && make install cd $(DIR_APP) && install -m 0644 newt.h /usr/include ln -sf libnewt.so.0.51 /usr/lib/libnewt.so -endif @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/openldap b/lfs/openldap index 9771ae4..a18d7e1 100644 --- a/lfs/openldap +++ b/lfs/openldap @@ -32,10 +32,12 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = openldap -PAK_VER = 2 +PAK_VER = 3
DEPS = ""
+export CPPFLAGS = -D_GNU_SOURCE + ############################################################################### # Top-level Rules ############################################################################### @@ -77,23 +79,24 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && ./configure --prefix=/usr \ - --libexecdir=/usr/sbin \ - --sysconfdir=/etc \ - --localstatedir=/srv/ldap \ - --disable-debug \ - --enable-dynamic \ - --enable-crypt \ - --enable-modules \ - --enable-ldap \ - --enable-ldbm \ - --enable-dyngroup \ - --enable-dynlist \ - --enable-ppolicy \ - --enable-valsort - cd $(DIR_APP) && make depend + cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/openldap-gcc44-fixes.patch + cd $(DIR_APP) && ./configure \ + --prefix=/usr \ + --libexecdir=/usr/lib \ + --sysconfdir=/etc \ + --localstatedir=/srv/ldap \ + --with-threads=posix \ + --disable-perl \ + --enable-dynamic \ + --enable-crypt \ + --enable-modules \ + --enable-rlookups \ + --enable-backends=mod \ + --enable-overlays=mod \ + --enable-sql=no \ + --enable-ndb=no \ + --disable-static cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) cd $(DIR_APP) && make install - chmod -v 755 /usr/lib/libl*-2.3.so.0.2.8 @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/pango b/lfs/pango new file mode 100644 index 0000000..bd5d5f8 --- /dev/null +++ b/lfs/pango @@ -0,0 +1,77 @@ +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see http://www.gnu.org/licenses/. # +# # +############################################################################### + +############################################################################### +# Definitions +############################################################################### + +include Config + +VER = 1.30.1 + +THISAPP = pango-$(VER) +DL_FILE = $(THISAPP).tar.xz +DL_FROM = $(URL_IPFIRE) +DIR_APP = $(DIR_SRC)/$(THISAPP) +TARGET = $(DIR_INFO)/$(THISAPP) + +############################################################################### +# Top-level Rules +############################################################################### + +objects = $(DL_FILE) + +$(DL_FILE) = $(DL_FROM)/$(DL_FILE) + +$(DL_FILE)_MD5 = ec3c1f236ee9bd4a982a5f46fcaff7b9 + +install : $(TARGET) + +check : $(patsubst %,$(DIR_CHK)/%,$(objects)) + +download :$(patsubst %,$(DIR_DL)/%,$(objects)) + +md5 : $(subst %,%_MD5,$(objects)) + +############################################################################### +# Downloading, checking, md5sum +############################################################################### + +$(patsubst %,$(DIR_CHK)/%,$(objects)) : + @$(CHECK) + +$(patsubst %,$(DIR_DL)/%,$(objects)) : + @$(LOAD) + +$(subst %,%_MD5,$(objects)) : + @$(MD5) + +############################################################################### +# Installation Details +############################################################################### + +$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) + @$(PREBUILD) + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/etc + cd $(DIR_APP) && make $(MAKETUNING) + cd $(DIR_APP) && make install + @rm -rf $(DIR_APP) + @$(POSTBUILD) diff --git a/lfs/pciutils b/lfs/pciutils index a17b692..164a027 100644 --- a/lfs/pciutils +++ b/lfs/pciutils @@ -30,11 +30,7 @@ THISAPP = pciutils-$(VER) DL_FILE = $(THISAPP).tar.bz2 DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) -ifeq "$(LFS_PASS)" "install" - TARGET = $(DIR_INFO)/$(THISAPP)-install -else - TARGET = $(DIR_INFO)/$(THISAPP) -endif +TARGET = $(DIR_INFO)/$(THISAPP)
############################################################################### # Top-level Rules diff --git a/lfs/pcmciautils b/lfs/pcmciautils index 67ad560..c80208e 100644 --- a/lfs/pcmciautils +++ b/lfs/pcmciautils @@ -30,13 +30,7 @@ THISAPP = pcmciautils-$(VER) DL_FILE = $(THISAPP).tar.bz2 DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) - -ifeq "$(LFS_PASS)" "install" - TARGET = $(DIR_INFO)/$(THISAPP)-install -else - TARGET = $(DIR_INFO)/$(THISAPP) -endif - +TARGET = $(DIR_INFO)/$(THISAPP) PROG = pcmciautils PAK_VER = 1 DEPS = "" @@ -82,21 +76,8 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) - -ifeq "$(LFS_PASS)" "install" - ln -f -s ../../../../../include/sysfs /opt/$(MACHINE)-uClibc/lib/gcc/$(MACHINE)-linux-uclibc/4.0.4/include/sysfs - cd $(DIR_APP) && make - cd $(DIR_APP) && install -m 755 pccardctl /install/initrd/sbin/ - ln -f -s pccardctl /install/initrd/sbin/lspcmcia - cd $(DIR_APP) && install -m 755 pcmcia-check-broken-cis /install/initrd/sbin/ - cd $(DIR_APP) && install -m 755 pcmcia-socket-startup /install/initrd/sbin/ - cp -f /etc/udev/rules.d/60-pcmcia.rules /install/initrd/etc/udev/rules.d/60-pcmcia.rules - mkdir -p /install/initrd/etc/pcmcia - cp -f /etc/pcmcia/config.opts /install/initrd/etc/pcmcia/config.opts -else cd $(DIR_APP) && make cd $(DIR_APP) && make install @sed -i -e 's/ MODALIAS=="?[*]",//g' /etc/udev/rules.d/60-pcmcia.rules -endif @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/pcre b/lfs/pcre index f99abf3..5aa40bd 100644 --- a/lfs/pcre +++ b/lfs/pcre @@ -24,10 +24,10 @@
include Config
-VER = 7.7 +VER = 8.31
THISAPP = pcre-$(VER) -DL_FILE = $(THISAPP).tar.bz2 +DL_FILE = $(THISAPP).tar.gz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) @@ -40,7 +40,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = 4b2e9cde1f7227448dddba59843efa0b +$(DL_FILE)_MD5 = fab1bb3b91a4c35398263a5c1e0858c1
install : $(TARGET)
@@ -69,11 +69,14 @@ $(subst %,%_MD5,$(objects)) :
$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && ./configure --prefix=/usr --enable-utf8 + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && ./configure \ + --prefix=/usr \ + --disable-static \ + --enable-utf8 \ + --enable-jit \ + --enable-unicode-properties cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install - cd $(DIR_APP) && mv -v /usr/lib/libpcre.so.* /lib/ - cd $(DIR_APP) && ln -v -sf ../../lib/libpcre.so.0 /usr/lib/libpcre.so @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/pcre-compat b/lfs/pcre-compat new file mode 100644 index 0000000..6b20bca --- /dev/null +++ b/lfs/pcre-compat @@ -0,0 +1,79 @@ +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see http://www.gnu.org/licenses/. # +# # +############################################################################### + +############################################################################### +# Definitions +############################################################################### + +include Config + +VER = 7.7 + +THISAPP = pcre-$(VER) +DL_FILE = $(THISAPP).tar.bz2 +DL_FROM = $(URL_IPFIRE) +DIR_APP = $(DIR_SRC)/$(THISAPP) +TARGET = $(DIR_INFO)/$(THISAPP) + +############################################################################### +# Top-level Rules +############################################################################### + +objects = $(DL_FILE) + +$(DL_FILE) = $(DL_FROM)/$(DL_FILE) + +$(DL_FILE)_MD5 = 4b2e9cde1f7227448dddba59843efa0b + +install : $(TARGET) + +check : $(patsubst %,$(DIR_CHK)/%,$(objects)) + +download :$(patsubst %,$(DIR_DL)/%,$(objects)) + +md5 : $(subst %,%_MD5,$(objects)) + +############################################################################### +# Downloading, checking, md5sum +############################################################################### + +$(patsubst %,$(DIR_CHK)/%,$(objects)) : + @$(CHECK) + +$(patsubst %,$(DIR_DL)/%,$(objects)) : + @$(LOAD) + +$(subst %,%_MD5,$(objects)) : + @$(MD5) + +############################################################################### +# Installation Details +############################################################################### + +$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) + @$(PREBUILD) + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && ./configure --prefix=/usr --enable-utf8 + cd $(DIR_APP) && make $(MAKETUNING) + + install -m 755 $(DIR_APP)/.libs/libpcre.so.0.0.1 /lib + ln -svf libpcre.so.0.0.1 /lib/libpcre.so.0 + @rm -rf $(DIR_APP) + @$(POSTBUILD) diff --git a/lfs/php b/lfs/php index 3fcac17..f068035 100644 --- a/lfs/php +++ b/lfs/php @@ -24,7 +24,7 @@
include Config
-VER = 5.3.14 +VER = 5.3.15
THISAPP = php-$(VER) DL_FILE = $(THISAPP).tar.bz2 @@ -42,7 +42,7 @@ $(DL_FILE) = $(DL_FROM)/$(DL_FILE) idn-0.1.tgz = $(DL_FROM)/idn-0.1.tgz Log-1.9.11.tgz = $(DL_FROM)/Log-1.9.11.tgz
-$(DL_FILE)_MD5 = 7caac4f71e2f21426c11ac153e538392 +$(DL_FILE)_MD5 = 5cfcfd0fa4c4da7576f397073e7993cc idn-0.1.tgz_MD5 = ef8635ec22348325a76abd2abddca4a1 Log-1.9.11.tgz_MD5 = fb7c648b212f12fdb5ce1ab687793513
diff --git a/lfs/pixman b/lfs/pixman new file mode 100644 index 0000000..1cb2a08 --- /dev/null +++ b/lfs/pixman @@ -0,0 +1,77 @@ +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see http://www.gnu.org/licenses/. # +# # +############################################################################### + +############################################################################### +# Definitions +############################################################################### + +include Config + +VER = 0.26.0 + +THISAPP = pixman-$(VER) +DL_FILE = $(THISAPP).tar.gz +DL_FROM = $(URL_IPFIRE) +DIR_APP = $(DIR_SRC)/$(THISAPP) +TARGET = $(DIR_INFO)/$(THISAPP) + +############################################################################### +# Top-level Rules +############################################################################### + +objects = $(DL_FILE) + +$(DL_FILE) = $(DL_FROM)/$(DL_FILE) + +$(DL_FILE)_MD5 = 6563b6400b9fa23b47fd52105faf72b4 + +install : $(TARGET) + +check : $(patsubst %,$(DIR_CHK)/%,$(objects)) + +download :$(patsubst %,$(DIR_DL)/%,$(objects)) + +md5 : $(subst %,%_MD5,$(objects)) + +############################################################################### +# Downloading, checking, md5sum +############################################################################### + +$(patsubst %,$(DIR_CHK)/%,$(objects)) : + @$(CHECK) + +$(patsubst %,$(DIR_DL)/%,$(objects)) : + @$(LOAD) + +$(subst %,%_MD5,$(objects)) : + @$(MD5) + +############################################################################### +# Installation Details +############################################################################### + +$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) + @$(PREBUILD) + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && ./configure --prefix=/usr + cd $(DIR_APP) && make $(MAKETUNING) + cd $(DIR_APP) && make install + @rm -rf $(DIR_APP) + @$(POSTBUILD) diff --git a/lfs/popt b/lfs/popt index 25fcc69..ee4c3f9 100644 --- a/lfs/popt +++ b/lfs/popt @@ -30,11 +30,7 @@ THISAPP = popt-$(VER) DL_FILE = $(THISAPP).tar.gz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) -ifeq "$(LFS_PASS)" "install" - TARGET = $(DIR_INFO)/$(THISAPP)-install -else - TARGET = $(DIR_INFO)/$(THISAPP) -endif +TARGET = $(DIR_INFO)/$(THISAPP)
############################################################################### # Top-level Rules @@ -74,16 +70,9 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) -ifeq "$(LFS_PASS)" "install" - cd $(DIR_APP) && ./configure --prefix=/ --disable-nls - cd $(DIR_APP) && make $(MAKETUNING) - cd $(DIR_APP) && make DESTDIR=/opt/$(MACHINE)-uClibc install -else cd $(DIR_APP) && sed -i -e "/*origOptString ==/c 0)" popt.c - cd $(DIR_APP) && autoreconf -f -i cd $(DIR_APP) && ./configure --prefix=/usr --disable-nls cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install -endif @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/postfix b/lfs/postfix index bbb9b0c..5866b97 100644 --- a/lfs/postfix +++ b/lfs/postfix @@ -36,6 +36,9 @@ PAK_VER = 6
DEPS = "amavisd mysql"
+# Fake kernel release +export UTS_RELEASE = 2.6.32-ipfire + ############################################################################### # Top-level Rules ############################################################################### diff --git a/lfs/pptp b/lfs/pptp index e3237c3..8edb89b 100644 --- a/lfs/pptp +++ b/lfs/pptp @@ -70,6 +70,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/pptp-1.7.2-compat.patch cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install @rm -rf $(DIR_APP) diff --git a/lfs/qemu b/lfs/qemu index da2ea34..d68b97d 100644 --- a/lfs/qemu +++ b/lfs/qemu @@ -78,12 +78,10 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - - cd $(DIR_APP) && sed -i -e 's|CFLAGS+="-march=i486"|CFLAGS+=""|g' configure cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/qemu-0.15.0_missing_definitions_hack.patch - cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/etc \ - --target-list="i386-linux-user i386-softmmu arm-softmmu" + --target-list="i386-linux-user i386-softmmu arm-softmmu" \ + --extra-cflags="$(CFLAGS)" cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install @rm -rf $(DIR_APP) diff --git a/lfs/readline b/lfs/readline index e2d6248..7b88adf 100644 --- a/lfs/readline +++ b/lfs/readline @@ -24,7 +24,7 @@
include Config
-VER = 5.1 +VER = 6.2
THISAPP = readline-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = 7ee5a692db88b30ca48927a13fd60e46 +$(DL_FILE)_MD5 = 67948acb2ca081f23359d0256e9a271c
install : $(TARGET)
@@ -70,16 +70,15 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/readline-5.1-fixes-3.patch - cd $(DIR_APP) && sed -i '/MV.*old/d' Makefile.in - cd $(DIR_APP) && sed -i '/{OLDSUFF}/c:' support/shlib-install - cd $(DIR_APP) && ./configure --prefix=/usr --libdir=/lib + + for i in $$(seq 1 4); do \ + cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/readline/readline62-$$(printf "%03d" "$${i}") || exit 1; \ + done + + cd $(DIR_APP) && ./configure --prefix=/usr --disable-static cd $(DIR_APP) && make $(MAKETUNING) SHLIB_LIBS=-lncurses cd $(DIR_APP) && make install - chmod -v 755 /lib/lib{readline,history}.so* - mv -v /lib/lib{readline,history}.a /usr/lib - rm -v /lib/lib{readline,history}.so - ln -sfv ../../lib/libreadline.so.5 /usr/lib/libreadline.so - ln -sfv ../../lib/libhistory.so.5 /usr/lib/libhistory.so + + rm -rfv /usr/share/readline @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/readline-compat b/lfs/readline-compat new file mode 100644 index 0000000..2f4388c --- /dev/null +++ b/lfs/readline-compat @@ -0,0 +1,86 @@ +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see http://www.gnu.org/licenses/. # +# # +############################################################################### + +############################################################################### +# Definitions +############################################################################### + +include Config + +VER = 5.2 + +THISAPP = readline-$(VER) +DL_FILE = $(THISAPP).tar.gz +DL_FROM = $(URL_IPFIRE) +DIR_APP = $(DIR_SRC)/$(THISAPP) +TARGET = $(DIR_INFO)/$(THISAPP) + +############################################################################### +# Top-level Rules +############################################################################### + +objects = $(DL_FILE) + +$(DL_FILE) = $(DL_FROM)/$(DL_FILE) + +$(DL_FILE)_MD5 = e39331f32ad14009b9ff49cc10c5e751 + +install : $(TARGET) + +check : $(patsubst %,$(DIR_CHK)/%,$(objects)) + +download :$(patsubst %,$(DIR_DL)/%,$(objects)) + +md5 : $(subst %,%_MD5,$(objects)) + +############################################################################### +# Downloading, checking, md5sum +############################################################################### + +$(patsubst %,$(DIR_CHK)/%,$(objects)) : + @$(CHECK) + +$(patsubst %,$(DIR_DL)/%,$(objects)) : + @$(LOAD) + +$(subst %,%_MD5,$(objects)) : + @$(MD5) + +############################################################################### +# Installation Details +############################################################################### + +$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) + @$(PREBUILD) + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + + for i in $$(seq 1 14); do \ + cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/readline/readline52-$$(printf "%03d" "$${i}") || exit 1; \ + done + + cd $(DIR_APP) && ./configure --prefix=/usr --libdir=/lib --disable-static + cd $(DIR_APP) && make $(MAKETUNING) SHLIB_LIBS=-lncurses + + cd $(DIR_APP)/shlib && install -m 755 libreadline.so.$(VER) /lib + cd $(DIR_APP)/shlib && install -m 755 libhistory.so.$(VER) /lib + ln -svf libreadline.so.$(VER) /lib/libreadline.so.5 + ln -svf libhistory.so.$(VER) /lib/libhistory.so.5 + @rm -rf $(DIR_APP) + @$(POSTBUILD) diff --git a/lfs/reiser4progs b/lfs/reiser4progs deleted file mode 100644 index 99cbb84..0000000 --- a/lfs/reiser4progs +++ /dev/null @@ -1,77 +0,0 @@ -############################################################################### -# # -# IPFire.org - A linux based firewall # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt # -# # -# This program is free software: you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation, either version 3 of the License, or # -# (at your option) any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program. If not, see http://www.gnu.org/licenses/. # -# # -############################################################################### - -############################################################################### -# Definitions -############################################################################### - -include Config - -VER = 1.0.6 - -THISAPP = reiser4progs-$(VER) -DL_FILE = $(THISAPP).tar.bz2 -DL_FROM = $(URL_IPFIRE) -DIR_APP = $(DIR_SRC)/$(THISAPP) -TARGET = $(DIR_INFO)/$(THISAPP) - -############################################################################### -# Top-level Rules -############################################################################### - -objects = $(DL_FILE) - -$(DL_FILE) = $(DL_FROM)/$(DL_FILE) - -$(DL_FILE)_MD5 = d408cfeac40c266623bd51afa008caf6 - -install : $(TARGET) - -check : $(patsubst %,$(DIR_CHK)/%,$(objects)) - -download :$(patsubst %,$(DIR_DL)/%,$(objects)) - -md5 : $(subst %,%_MD5,$(objects)) - -############################################################################### -# Downloading, checking, md5sum -############################################################################### - -$(patsubst %,$(DIR_CHK)/%,$(objects)) : - @$(CHECK) - -$(patsubst %,$(DIR_DL)/%,$(objects)) : - @$(LOAD) - -$(subst %,%_MD5,$(objects)) : - @$(MD5) - -############################################################################### -# Installation Details -############################################################################### - -$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) - @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && ./configure --prefix=/usr --sbindir=/sbin --enable-static - cd $(DIR_APP) && make $(MAKETUNING) - cd $(DIR_APP) && make install - @rm -rf $(DIR_APP) - @$(POSTBUILD) diff --git a/lfs/reiserfsprogs b/lfs/reiserfsprogs index b78baef..402753e 100644 --- a/lfs/reiserfsprogs +++ b/lfs/reiserfsprogs @@ -30,11 +30,7 @@ THISAPP = reiserfsprogs-$(VER) DL_FILE = $(THISAPP).tar.bz2 DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) -ifeq "$(LFS_PASS)" "install" - TARGET = $(DIR_INFO)/$(THISAPP)-install -else - TARGET = $(DIR_INFO)/$(THISAPP) -endif +TARGET = $(DIR_INFO)/$(THISAPP)
############################################################################### # Top-level Rules @@ -74,16 +70,10 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) -ifeq "$(LFS_PASS)" "install" - cd $(DIR_APP) && ./configure --prefix=/ --sbindir=/sbin - cd $(DIR_APP) && make $(MAKETUNING) - cd $(DIR_APP) && install -v -m 755 mkreiserfs/mkreiserfs /install/initrd/sbin/mkreiserfs -else cd $(DIR_APP) && ./configure --prefix=/usr --sbindir=/sbin cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install ln -svf reiserfsck /sbin/fsck.reiserfs ln -svf mkreiserfs /sbin/mkfs.reiserfs -endif @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/rrdtool b/lfs/rrdtool index db44716..0237b89 100644 --- a/lfs/rrdtool +++ b/lfs/rrdtool @@ -24,7 +24,7 @@
include Config
-VER = 1.2.30 +VER = 1.4.7
THISAPP = rrdtool-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = 19b24f7184a8dbf7b48c1bbb565ad9fb +$(DL_FILE)_MD5 = ffe369d8921b4dfdeaaf43812100c38f
install : $(TARGET)
@@ -70,13 +70,16 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && ./configure --prefix=/usr/share/$(THISAPP) \ - --exec-prefix=/usr --mandir=/usr/share/man --enable-perl-site-install \ - --enable-local-libpng --enable-local-zlib --with-pic --enable-latin2 \ - --disable-python --disable-tcl + cd $(DIR_APP) && ./configure \ + --prefix=/usr \ + --disable-rrdcgi \ + --enable-perl \ + --enable-perl-site-install \ + --disable-tcl \ + --disable-ruby \ + --disable-python cd $(DIR_APP) && make cd $(DIR_APP) && make install - cd $(DIR_APP) && make site-perl-install -mkdir -p /srv/web/ipfire/html/graphs/ chmod 777 /srv/web/ipfire/html/graphs/ -mkdir -p /var/log/rrd/ diff --git a/lfs/screen b/lfs/screen index eef5862..b94d62e 100644 --- a/lfs/screen +++ b/lfs/screen @@ -70,6 +70,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/screen-4.0.3-stropts.patch cd $(DIR_APP) && ./configure --prefix=/usr --with-socket-dir=/var/run/screen --with-sys-screenrc=/etc/screenrc cd $(DIR_APP) && sed -i -e "s%/usr/local/etc/screenrc%/etc/screenrc%" {etc,doc}/* cd $(DIR_APP) && make $(MAKETUNING) diff --git a/lfs/sed b/lfs/sed index 22b8204..8904fd4 100644 --- a/lfs/sed +++ b/lfs/sed @@ -24,7 +24,7 @@
include Config
-VER = 4.1.5 +VER = 4.2.1
THISAPP = sed-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -36,13 +36,11 @@ DIR_APP = $(DIR_SRC)/$(THISAPP) ifeq "$(ROOT)" "" TARGET = $(DIR_INFO)/$(THISAPP) EXTRA_CONFIG = --prefix=/usr --bindir=/bin --disable-nls - EXTRA_LDFLAGS = EXTRA_MAKE = EXTRA_INSTALL = else TARGET = $(DIR_INFO)/$(THISAPP)-tools EXTRA_CONFIG = --prefix=/tools --disable-nls - EXTRA_LDFLAGS = EXTRA_MAKE = EXTRA_INSTALL = endif @@ -55,7 +53,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = 7a1cbbbb3341287308e140bd4834c3ba +$(DL_FILE)_MD5 = f0fd4d7da574d4707e442285fd2d3b86
install : $(TARGET)
@@ -85,7 +83,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && LDFLAGS="$(EXTRA_LDFLAGS)" ./configure $(EXTRA_CONFIG) + cd $(DIR_APP) && ./configure $(EXTRA_CONFIG) cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) cd $(DIR_APP) && make $(EXTRA_INSTALL) install @rm -rf $(DIR_APP) diff --git a/lfs/slang b/lfs/slang index 542d32f..e6c8cc8 100644 --- a/lfs/slang +++ b/lfs/slang @@ -30,11 +30,7 @@ THISAPP = slang-$(VER) DL_FILE = $(THISAPP).tar.bz2 DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) -ifeq "$(LFS_PASS)" "install" - TARGET = $(DIR_INFO)/$(THISAPP)-install -else - TARGET = $(DIR_INFO)/$(THISAPP) -endif +TARGET = $(DIR_INFO)/$(THISAPP)
############################################################################### # Top-level Rules @@ -78,13 +74,6 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/slang-utf8-acs.patch cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/slang-1.4.5-utf8-segv.patch cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/slang-utf8-fix.patch -ifeq "$(LFS_PASS)" "install" - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/slang-1.4.9-uclibc.patch - cd $(DIR_APP) && ./configure --prefix="" - cd $(DIR_APP)/src && make $(MAKETUNING) $(EXTRA_MAKE) - cd $(DIR_APP)/src && make install DESTDIR="/opt/$(MACHINE)-uClibc" - ln -sf libslang-utf8.a /opt/$(MACHINE)-uClibc/lib/libslang.a -else perl -p -i -e 's/(ELF_CFLAGS="[^"]*)-O2([^"]*".*)/$1'"$(CFLAGS)"' $2/gs' configure cd $(DIR_APP) && ./configure --prefix=/usr cd $(DIR_APP) && make elf all @@ -92,6 +81,5 @@ else ln -sf libslang-utf8.so.1.4.9 /usr/lib/libslang-utf8.so.1 ln -sf libslang-utf8.so /usr/lib/libslang.so ln -sf libslang-utf8.a /usr/lib/libslang.a -endif @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/splix b/lfs/splix deleted file mode 100644 index c9e8e47..0000000 --- a/lfs/splix +++ /dev/null @@ -1,86 +0,0 @@ -############################################################################### -# # -# IPFire.org - A linux based firewall # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt # -# # -# This program is free software: you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation, either version 3 of the License, or # -# (at your option) any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program. If not, see http://www.gnu.org/licenses/. # -# # -############################################################################### - -############################################################################### -# Definitions -############################################################################### - -include Config - -VER = 2.0.0-rc2 - -THISAPP = splix-$(VER) -DL_FILE = $(THISAPP).tar.bz2 -DL_FROM = $(URL_IPFIRE) -DIR_APP = $(DIR_SRC)/$(THISAPP) -TARGET = $(DIR_INFO)/$(THISAPP) -PROG = splix -PAK_VER = 2 - -DEPS = "cups" - -############################################################################### -# Top-level Rules -############################################################################### - -objects = $(DL_FILE) - -$(DL_FILE) = $(DL_FROM)/$(DL_FILE) - -$(DL_FILE)_MD5 = 4381ccf9a38b08012dbdc3c0f28414fd - -install : $(TARGET) - -check : $(patsubst %,$(DIR_CHK)/%,$(objects)) - -download :$(patsubst %,$(DIR_DL)/%,$(objects)) - -md5 : $(subst %,%_MD5,$(objects)) - -dist: - $(PAK) - -############################################################################### -# Downloading, checking, md5sum -############################################################################### - -$(patsubst %,$(DIR_CHK)/%,$(objects)) : - @$(CHECK) - -$(patsubst %,$(DIR_DL)/%,$(objects)) : - @$(LOAD) - -$(subst %,%_MD5,$(objects)) : - @$(MD5) - -############################################################################### -# Installation Details -############################################################################### - -$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) - @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) -ifeq "$(MACHINE_TYPE)" "arm" - cd $(DIR_APP) && sed -e "s/ceill/ceil/g" -i src/*.cpp -endif - cd $(DIR_APP) && make DISABLE_JBIG=1 $(MAKETUNING) $(EXTRA_MAKE) - cd $(DIR_APP) && make install - @rm -rf $(DIR_APP) - @$(POSTBUILD) diff --git a/lfs/stage2 b/lfs/stage2 index 5f038c3..04291d6 100644 --- a/lfs/stage2 +++ b/lfs/stage2 @@ -63,9 +63,11 @@ $(TARGET) : # Symlinks # for this reason, stage2 rebuild will broke the iso:perl, grubbatch - -ln -sv /tools/bin/{bash,cat,grep,pwd,stty} /bin + -ln -sv /tools/bin/{bash,cat,echo,pwd,stty} /bin -ln -sv /tools/bin/perl /usr/bin -ln -sv /tools/lib/libgcc_s.so{,.1} /usr/lib + -ln -sv /tools/lib/libstdc++.so{,.6} /usr/lib + sed 's/tools/usr/' /tools/lib/libstdc++.la > /usr/lib/libstdc++.la -ln -sv bash /bin/sh
# Config files diff --git a/lfs/strip b/lfs/strip index 169419e..30cb9b3 100644 --- a/lfs/strip +++ b/lfs/strip @@ -46,25 +46,5 @@ md5 : ###############################################################################
$(TARGET) : - -ifeq "$(LFS_PASS)" "toolchain" - -find $(TOOLS_DIR)/lib -type f -exec $(TOOLS_DIR)/bin/strip --strip-debug '{}' ';' - -find $(TOOLS_DIR)/{bin,sbin,libexec} -type f -exec $(TOOLS_DIR)/bin/strip --strip-all '{}' ';' - rm -rf $(TOOLS_DIR)/{,share/}{doc,info,man} -endif - -ifeq "$(LFS_PASS)" "install" - # Add -ls before -exec if you want to verify what files are in the path to be stripped - # A running binary can't be stripped, so use the version from /tools - # It may fail (signal 11) under circonstance not identified by me (Gilles), - # to strip libc again so ignore the error now. Probably need a static strip for libc - # Don't use --strip-all on libraries, or they'll be destroyed. Don't use --strip-unneeded, either. - -/tools/bin/find /lib /usr/lib /usr/share/rrdtool-* /install/initrd/lib \ - -type f ( -name '*.so' -o -name '*.so[.0-9]*' ) \ - -exec /tools/bin/strip --strip-debug {} ; 2>/dev/null - - -/tools/bin/strip --strip-all /{,usr/}{,local/}{bin,sbin}/* /install/{initrd,misc}/bin/* /usr/lib/cyrus/* 2>/dev/null - -/tools/bin/strip --strip-all /usr/lib/awk/{grcat,pwcat} 2>/dev/null - -/tools/bin/strip --strip-all /usr/lib/gcc/*-linux-gnu/4.0.4/{cc1*,collect2} 2>/dev/null -endif - + STRIP="/tools/bin/strip" $(DIR_SRC)/src/stripper / \ + --exclude=/usr/src --exclude=/tools diff --git a/lfs/sysfsutils b/lfs/sysfsutils index 297f770..4980f5e 100644 --- a/lfs/sysfsutils +++ b/lfs/sysfsutils @@ -31,11 +31,7 @@ DL_FILE = $(THISAPP).tar.gz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP)
-ifeq "$(LFS_PASS)" "install" - TARGET = $(DIR_INFO)/$(THISAPP)-install -else - TARGET = $(DIR_INFO)/$(THISAPP) -endif +TARGET = $(DIR_INFO)/$(THISAPP)
############################################################################### # Top-level Rules @@ -75,15 +71,8 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) -ifeq "$(LFS_PASS)" "install" - cd $(DIR_APP) && ./configure --prefix="" --disable-shared - cd $(DIR_APP) && make $(MAKETUNING) - cd $(DIR_APP) && make DESTDIR=/opt/$(MACHINE)-uClibc install - mv -v /opt/$(MACHINE)-uClibc/usr/include/sysfs /opt/$(MACHINE)-uClibc/include -else cd $(DIR_APP) && ./configure --prefix="" cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install -endif @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/sysvinit b/lfs/sysvinit index 2167b99..3f16dd9 100644 --- a/lfs/sysvinit +++ b/lfs/sysvinit @@ -30,11 +30,7 @@ THISAPP = sysvinit-$(VER) DL_FILE = $(THISAPP).tar.gz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) -ifeq "$(LFS_PASS)" "install" - TARGET = $(DIR_INFO)/$(THISAPP)-install -else - TARGET = $(DIR_INFO)/$(THISAPP) -endif +TARGET = $(DIR_INFO)/$(THISAPP)
############################################################################### # Top-level Rules @@ -74,16 +70,10 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) -ifeq "$(LFS_PASS)" "install" - cd $(DIR_APP)/src && sed -i s'/-O2/-Os\ -fomit-frame-pointer/' Makefile - cd $(DIR_APP)/src && make killall5 - cd $(DIR_APP)/src && install -m 0755 killall5 /install/initrd/bin -else cd $(DIR_APP) && cp src/init.c{,.backup} cd $(DIR_APP) && sed -i 's@Sending processes@& started by init@g' \ src/init.c cd $(DIR_APP) && make $(MAKETUNING) -C src cd $(DIR_APP) && make -C src install -endif @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/udev b/lfs/udev index 5b8b602..6e31c90 100644 --- a/lfs/udev +++ b/lfs/udev @@ -30,11 +30,7 @@ THISAPP = udev-$(VER) DL_FILE = $(THISAPP).tar.gz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) -ifeq "$(LFS_PASS)" "install" - TARGET = $(DIR_INFO)/$(THISAPP)-install -else - TARGET = $(DIR_INFO)/$(THISAPP) -endif +TARGET = $(DIR_INFO)/$(THISAPP)
############################################################################### # Top-level Rules diff --git a/lfs/util-linux b/lfs/util-linux index 3dac54d..a394166 100644 --- a/lfs/util-linux +++ b/lfs/util-linux @@ -30,18 +30,7 @@ THISAPP = util-linux-$(VER) DL_FILE = $(THISAPP).tar.bz2 DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) - -# Normal build or /tools build. -# -ifeq "$(ROOT)" "" -ifeq "$(LFS_PASS)" "install" - TARGET = $(DIR_INFO)/$(THISAPP)-install -else - TARGET = $(DIR_INFO)/$(THISAPP) -endif -else - TARGET = $(DIR_INFO)/$(THISAPP)-tools -endif +TARGET = $(DIR_INFO)/$(THISAPP)
############################################################################### # Top-level Rules @@ -82,16 +71,6 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/util-linux-2.12r-umount-no-special.patch -ifeq "$(ROOT)" "" -ifeq "$(LFS_PASS)" "install" - cd $(DIR_APP) && CFLAGS="-Os -fomit-frame-pointer" ./configure - cd $(DIR_APP) && echo "HAVE_SLANG=yes" >> make_include - cd $(DIR_APP) && echo "SLANGFLAGS=-I/opt/$(MACHINE)-uClibc/include" >> make_include - cd $(DIR_APP)/fdisk && make cfdisk - cd $(DIR_APP)/fdisk && make sfdisk - cd $(DIR_APP)/fdisk && install -m 0755 cfdisk /install/initrd/bin - cd $(DIR_APP)/fdisk && install -m 0755 sfdisk /install/initrd/bin -else cd $(DIR_APP) && sed -i 's@etc/adjtime@var/lib/hwclock/adjtime@g' \ hwclock/hwclock.c -mkdir -p /var/lib/hwclock @@ -100,14 +79,5 @@ else cd $(DIR_APP) && ./configure cd $(DIR_APP) && make $(MAKETUNING) HAVE_KILL=yes HAVE_SLN=yes cd $(DIR_APP) && make HAVE_KILL=yes HAVE_SLN=yes install -endif -else - cd $(DIR_APP) && sed -i 's@/usr/include@/tools/include@g' configure - cd $(DIR_APP) && ./configure - cd $(DIR_APP) && make $(MAKETUNING) -C lib - cd $(DIR_APP) && make $(MAKETUNING) -C mount mount umount - cd $(DIR_APP) && make $(MAKETUNING) -C text-utils more - cd $(DIR_APP) && cp mount/{,u}mount text-utils/more /tools/bin -endif @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/vdr b/lfs/vdr index af5b921..6907e00 100644 --- a/lfs/vdr +++ b/lfs/vdr @@ -104,6 +104,10 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP)/PLUGINS/src && tar xvf $(DIR_DL)/$(DL_FILE4) cd $(DIR_APP)/PLUGINS/src && ln -s epgsearch-0.9.24 epgsearch cd $(DIR_APP) && patch -Np1 -i PLUGINS/src/epgsearch/patches/MainMenuHooks-v1_0.patch + cd $(DIR_APP)/PLUGINS/src/epgsearch && sed -i '/include/a #include <langinfo.h>/' \ + epgsearch.c + cd $(DIR_APP)/PLUGINS/src/epgsearch && patch -Np1 < $(DIR_SRC)/src/patches/vdr-plugin-epgsearch-gcc44.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/vdr-1.6.0-gcc44-fixes.patch cd $(DIR_APP) && make VIDEODIR=/var/video plugins $(MAKETUNING) $(EXTRA_MAKE) cd $(DIR_APP) && make VIDEODIR=/var/video vdr $(MAKETUNING) $(EXTRA_MAKE) cd $(DIR_APP) && make DFB_SUPPORT=1 FB_SUPPORT=1 VIDIX_SUPPORT=1 $(MAKETUNING) $(EXTRA_MAKE) diff --git a/lfs/wget b/lfs/wget index 0c29155..ce55e76 100644 --- a/lfs/wget +++ b/lfs/wget @@ -30,11 +30,7 @@ THISAPP = wget-$(VER) DL_FILE = $(THISAPP).tar.gz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) -ifeq "$(LFS_PASS)" "install" - TARGET = $(DIR_INFO)/$(THISAPP)-install -else - TARGET = $(DIR_INFO)/$(THISAPP) -endif +TARGET = $(DIR_INFO)/$(THISAPP)
############################################################################### # Top-level Rules @@ -74,15 +70,9 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) -ifeq "$(LFS_PASS)" "install" - cd $(DIR_APP) && ./configure --prefix=/ --disable-nls --disable-ipv6 - cd $(DIR_APP) && make $(MAKETUNING) - cd $(DIR_APP)/src && install -m 755 wget /install/initrd/bin -else cd $(DIR_APP) && ./configure --prefix=/usr --with-ssl \ --disable-nls --disable-ipv6 cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install -endif @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/xfsprogs b/lfs/xfsprogs index 0dd83d3..2a548be 100644 --- a/lfs/xfsprogs +++ b/lfs/xfsprogs @@ -77,6 +77,9 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && sed -i "/include/a #include <sys/stat.h>" \ + libxfs/xfs_ialloc.c quota/quot.c mdrestore/xfs_mdrestore.c \ + rtcp/xfs_rtcp.c cd $(DIR_APP) && make DEBUG=-DNDEBUG INSTALL_USER=root INSTALL_GROUP=root \ LOCAL_CONFIGURE_OPTIONS="--enable-readline=yes" cd $(DIR_APP) && make install diff --git a/lfs/xz b/lfs/xz index 4845227..cff9bb3 100644 --- a/lfs/xz +++ b/lfs/xz @@ -31,7 +31,13 @@ DL_FILE = $(THISAPP).tar.bz2 DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP)
-TARGET = $(DIR_INFO)/$(THISAPP) +ifeq "$(ROOT)" "" + PREFIX = /usr + TARGET = $(DIR_INFO)/$(THISAPP) +else + PREFIX = /tools + TARGET = $(DIR_INFO)/$(THISAPP)-tools +endif
############################################################################### # Top-level Rules @@ -43,7 +49,6 @@ $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
$(DL_FILE)_MD5 = cc4044fcc073b8bcf3164d1d0df82161
- install : $(TARGET)
check : $(patsubst %,$(DIR_CHK)/%,$(objects)) @@ -72,7 +77,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && ./configure --prefix=/usr + cd $(DIR_APP) && ./configure --prefix=$(PREFIX) cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install @rm -rf $(DIR_APP) diff --git a/lfs/zlib b/lfs/zlib index a5a6849..5337c77 100644 --- a/lfs/zlib +++ b/lfs/zlib @@ -24,18 +24,15 @@
include Config
-VER = 1.2.3 +VER = 1.2.7
THISAPP = zlib-$(VER) -DL_FILE = $(THISAPP).tar.bz2 +DL_FILE = $(THISAPP).tar.gz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) -ifeq "$(LFS_PASS)" "install" - TARGET = $(DIR_INFO)/$(THISAPP)-install -else - TARGET = $(DIR_INFO)/$(THISAPP) -endif -CFLAGS += -fPIC +TARGET = $(DIR_INFO)/$(THISAPP) + +CFLAGS += -fPIC -DPIC
############################################################################### # Top-level Rules @@ -44,7 +41,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = dee233bf288ee795ac96a98cc2e369b6 +$(DL_FILE)_MD5 = 60df6a37c56e7c1366cca812414f7b85
install : $(TARGET)
@@ -73,23 +70,14 @@ $(subst %,%_MD5,$(objects)) :
$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) -ifeq "$(LFS_PASS)" "install" - cd $(DIR_APP) && ./configure --prefix=/opt/$(MACHINE)-uClibc - cd $(DIR_APP) && make $(MAKETUNING) - cd $(DIR_APP) && make install - chmod -v 644 /opt/$(MACHINE)-uClibc/lib/libz.a -else - cd $(DIR_APP) && ./configure --prefix=/usr --shared --libdir=/lib + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && ./configure --prefix=/usr --shared cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install - rm -v /lib/libz.so - ln -sfv ../../lib/libz.so.1.2.3 /usr/lib/libz.so - cd $(DIR_APP) && make clean - cd $(DIR_APP) && ./configure --prefix=/usr - cd $(DIR_APP) && make $(MAKETUNING) - cd $(DIR_APP) && make install - chmod -v 644 /usr/lib/libz.a -endif + + mv -v /usr/lib/libz.so.$(VER) /lib/libz.so.$(VER) + ln -svf libz.so.$(VER) /lib/libz.so.1 + rm -vf /usr/lib/libz.so.1 + @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/make.sh b/make.sh index 58f2dfa..07e93de 100755 --- a/make.sh +++ b/make.sh @@ -37,12 +37,11 @@ KVER=`grep --max-count=1 VER lfs/linux | awk '{ print $3 }'` MACHINE=`uname -m` GIT_TAG=$(git tag | tail -1) # Git Tag GIT_LASTCOMMIT=$(git log | head -n1 | cut -d" " -f2 |head -c8) # Last commit -TOOLCHAINVER=4 +TOOLCHAINVER=5
BUILDMACHINE=$MACHINE if [ "$MACHINE" = "x86_64" ]; then BUILDMACHINE="i686"; - linux32="linux32"; fi
@@ -214,11 +213,6 @@ prepareenv() { mount --bind $BASEDIR/log $BASEDIR/build/usr/src/log mount --bind $BASEDIR/src $BASEDIR/build/usr/src/src
- # This is a temporary hack!!! - if [ ! -f /tools/bin/hostname ]; then - cp -f /bin/hostname /tools/bin/hostname 2>/dev/null - fi - # Run LFS static binary creation scripts one by one export CCACHE_DIR=$BASEDIR/ccache export CCACHE_COMPRESS=1 @@ -232,7 +226,7 @@ buildtoolchain() { local error=false case "${MACHINE}:$(uname -m)" in # x86 - i586:i586|i586:i686) + i586:i586|i586:i686|i586:x86_64) # These are working. ;; i586:*) @@ -251,38 +245,28 @@ buildtoolchain() { ${error} && \ exiterror "Cannot build ${MACHINE} toolchain on $(uname -m). Please use the download if any."
- if [ "$(uname -r | grep ipfire)" ]; then - exiterror "Cannot build toolchain on ipfire. Please use the download." - fi - - if [ ! -e /usr/include/asm -o ! -e /usr/include/bits -o ! -e /usr/include/gnu -o ! -e /usr/include/sys ]; then - exiterror "Cannot build toolchain without (asm, bits, gnu or sys includes). Please fix or use the download." - fi - - if [ ! -e /usr/lib/libc.so ]; then - exiterror "Cannot build toolchain without (/usr/lib/libc.so). Please fix or use the download." + local gcc=$(type -p gcc) + if [ -z "${gcc}" ]; then + exiterror "Could not find GCC. You will need a working build enviroment in order to build the toolchain." fi
LOGFILE="$BASEDIR/log/_build.toolchain.log" export LOGFILE - NATIVEGCC=`gcc --version | grep GCC | awk {'print $3'}` - export NATIVEGCC GCCmajor=${NATIVEGCC:0:1} GCCminor=${NATIVEGCC:2:1} GCCrelease=${NATIVEGCC:4:1} - ORG_PATH=$PATH - lfsmake1 ccache PASS=1 - lfsmake1 make PASS=1 - lfsmake1 linux2 TOOLS=1 HEADERS=1 - lfsmake1 binutils PASS=1 - lfsmake1 gcc PASS=1 - export PATH=$BASEDIR/build/usr/local/bin:$BASEDIR/build/tools/bin:$PATH + + local ORG_PATH=$PATH + export PATH="/tools/ccache/bin:/tools/bin:$PATH" + lfsmake1 ccache PASS=1 + lfsmake1 binutils PASS=1 + lfsmake1 gcc PASS=1 + lfsmake1 linux2 TOOLS=1 HEADERS=1 lfsmake1 glibc - lfsmake1 cleanup-toolchain PASS=1 - lfsmake1 fake-environ + lfsmake1 cleanup-toolchain PASS=1 + lfsmake1 binutils PASS=2 + lfsmake1 gcc PASS=2 + lfsmake1 ccache PASS=2 lfsmake1 tcl lfsmake1 expect lfsmake1 dejagnu - lfsmake1 gcc PASS=2 - lfsmake1 binutils PASS=2 - lfsmake1 ccache PASS=2 lfsmake1 ncurses lfsmake1 bash lfsmake1 bzip2 @@ -294,15 +278,15 @@ buildtoolchain() { lfsmake1 grep lfsmake1 gzip lfsmake1 m4 - lfsmake1 make PASS=2 + lfsmake1 make lfsmake1 patch lfsmake1 perl lfsmake1 sed lfsmake1 tar lfsmake1 texinfo - lfsmake1 util-linux - lfsmake1 strip - lfsmake1 cleanup-toolchain PASS=2 + lfsmake1 xz + lfsmake1 fake-environ + lfsmake1 cleanup-toolchain PASS=2 export PATH=$ORG_PATH }
@@ -310,13 +294,19 @@ buildbase() { LOGFILE="$BASEDIR/log/_build.base.log" export LOGFILE lfsmake2 stage2 - lfsmake2 linux2 HEADERS=1 + lfsmake2 linux2 HEADERS=1 lfsmake2 man-pages lfsmake2 glibc lfsmake2 tzdata - lfsmake2 cleanup-toolchain PASS=3 + lfsmake2 cleanup-toolchain PASS=3 + lfsmake2 zlib lfsmake2 binutils + lfsmake2 gmp + lfsmake2 gmp-compat + lfsmake2 mpfr + lfsmake2 file lfsmake2 gcc + lfsmake2 sed lfsmake2 berkeley lfsmake2 coreutils lfsmake2 iana-etc @@ -324,11 +314,12 @@ buildbase() { lfsmake2 bison lfsmake2 ncurses lfsmake2 procps - lfsmake2 sed lfsmake2 libtool lfsmake2 perl lfsmake2 readline - lfsmake2 zlib + lfsmake2 readline-compat + lfsmake2 pcre + lfsmake2 pcre-compat lfsmake2 autoconf lfsmake2 automake lfsmake2 bash @@ -336,7 +327,6 @@ buildbase() { lfsmake2 diffutils lfsmake2 e2fsprogs lfsmake2 ed - lfsmake2 file lfsmake2 findutils lfsmake2 flex lfsmake2 gawk @@ -348,7 +338,6 @@ buildbase() { lfsmake2 iproute2 lfsmake2 kbd lfsmake2 less - lfsmake2 libaal lfsmake2 make lfsmake2 man lfsmake2 mktemp @@ -356,7 +345,6 @@ buildbase() { lfsmake2 net-tools lfsmake2 patch lfsmake2 psmisc - lfsmake2 reiser4progs lfsmake2 shadow lfsmake2 sysklogd lfsmake2 sysvinit @@ -365,6 +353,7 @@ buildbase() { lfsmake2 udev lfsmake2 util-linux lfsmake2 vim + lfsmake2 xz lfsmake2 grub }
@@ -381,7 +370,6 @@ buildipfire() { ipfiremake pptp ipfiremake unzip ipfiremake which - ipfiremake xz ipfiremake linux-firmware ipfiremake zd1211-firmware ipfiremake rpi-firmware @@ -393,7 +381,7 @@ buildipfire() { ipfiremake linux2 KCFG="-xen" # ipfiremake v4l-dvb KCFG="-xen" # ipfiremake mISDN KCFG="-xen" -# ipfiremake dahdi KCFG="-xen" KMOD=1 + ipfiremake dahdi KCFG="-xen" KMOD=1 ipfiremake cryptodev KCFG="-xen" ipfiremake compat-wireless KCFG="-xen" # ipfiremake r8169 KCFG="-xen" @@ -408,7 +396,7 @@ buildipfire() { # ipfiremake v4l-dvb KCFG="-pae" ipfiremake alsa KCFG="-pae" KMOD=1 # ipfiremake mISDN KCFG="-pae" -# ipfiremake dahdi KCFG="-pae" KMOD=1 + ipfiremake dahdi KCFG="-pae" KMOD=1 ipfiremake cryptodev KCFG="-pae" ipfiremake compat-wireless KCFG="-pae" # ipfiremake r8169 KCFG="-pae" @@ -423,7 +411,7 @@ buildipfire() { # ipfiremake v4l-dvb KCFG="" ipfiremake alsa KCFG="" KMOD=1 # ipfiremake mISDN KCFG="" -# ipfiremake dahdi KCFG="" KMOD=1 + ipfiremake dahdi KCFG="" KMOD=1 ipfiremake cryptodev KCFG="" ipfiremake compat-wireless KCFG="" # ipfiremake r8169 KCFG="" @@ -484,7 +472,6 @@ buildipfire() { ipfiremake dracut ipfiremake expat ipfiremake gdbm - ipfiremake gmp ipfiremake pam ipfiremake openssl ipfiremake curl @@ -496,6 +483,7 @@ buildipfire() { ipfiremake libnl ipfiremake libidn ipfiremake libjpeg + ipfiremake libexif ipfiremake libpng ipfiremake libtiff ipfiremake libart @@ -545,7 +533,6 @@ buildipfire() { ipfiremake iptables ipfiremake libupnp ipfiremake ipaddr - ipfiremake iptstate ipfiremake iputils ipfiremake l7-protocols ipfiremake mISDNuser @@ -587,12 +574,18 @@ buildipfire() { ipfiremake python-mechanize ipfiremake python-feedparser ipfiremake python-rssdler + ipfiremake libffi ipfiremake glib ipfiremake GeoIP ipfiremake fwhits ipfiremake noip_updater ipfiremake ntp ipfiremake openssh + ipfiremake fontconfig + ipfiremake freefont + ipfiremake pixman + ipfiremake cairo + ipfiremake pango ipfiremake rrdtool ipfiremake setserial ipfiremake setup @@ -607,7 +600,6 @@ buildipfire() { ipfiremake traceroute ipfiremake vlan ipfiremake wireless - ipfiremake libsafe ipfiremake pakfire ipfiremake spandsp ipfiremake lzo @@ -623,10 +615,9 @@ buildipfire() { ipfiremake wget ipfiremake bridge-utils ipfiremake screen - ipfiremake hddtemp ipfiremake smartmontools ipfiremake htop -# ipfiremake postfix # unknown system type linux 3.2.x + ipfiremake postfix ipfiremake fetchmail ipfiremake cyrus-imapd ipfiremake openmailadmin @@ -641,6 +632,7 @@ buildipfire() { ipfiremake libogg ipfiremake libvorbis ipfiremake libdvbpsi + ipfiremake flac ipfiremake lame ipfiremake sox ipfiremake libshout @@ -649,7 +641,6 @@ buildipfire() { ipfiremake cmake ipfiremake gnump3d ipfiremake libsigc++ - ipfiremake applejuice ipfiremake libtorrent ipfiremake rtorrent ipfiremake ipfireseeder @@ -668,7 +659,6 @@ buildipfire() { ipfiremake vsftpd ipfiremake strongswan ipfiremake lsof - ipfiremake centerim ipfiremake br2684ctl ipfiremake pcmciautils ipfiremake lm_sensors @@ -687,8 +677,6 @@ buildipfire() { ipfiremake nagios ipfiremake nagios_nrpe ipfiremake ebtables - ipfiremake fontconfig - ipfiremake freefont ipfiremake directfb ipfiremake dfb++ ipfiremake faad2 @@ -721,7 +709,6 @@ buildipfire() { ipfiremake netcat ipfiremake 7zip ipfiremake lynis - ipfiremake splix ipfiremake streamripper ipfiremake sshfs ipfiremake taglib @@ -743,9 +730,9 @@ buildipfire() { ipfiremake nut ipfiremake watchdog ipfiremake libpri -# ipfiremake dahdi # update needed for 3.2.x -# ipfiremake asterisk -# ipfiremake lcr + ipfiremake dahdi + ipfiremake asterisk + ipfiremake lcr ipfiremake usb_modeswitch ipfiremake usb_modeswitch_data ipfiremake zerofree @@ -755,7 +742,7 @@ buildipfire() { ipfiremake minicom ipfiremake ddrescue ipfiremake imspector -# ipfiremake miniupnpd # will not build + ipfiremake miniupnpd ipfiremake client175 ipfiremake powertop ipfiremake parted @@ -775,6 +762,8 @@ buildipfire() { ipfiremake lcd4linux ipfiremake mtr ipfiremake tcpick + ipfiremake minidlna + ipfiremake acpid echo Build on $HOSTNAME > $BASEDIR/build/var/ipfire/firebuild cat /proc/version >> $BASEDIR/build/var/ipfire/firebuild echo >> $BASEDIR/build/var/ipfire/firebuild @@ -799,7 +788,6 @@ buildinstaller() { ipfiremake mbr ipfiremake memtest ipfiremake installer - cp -f $BASEDIR/doc/COPYING $BASEDIR/build/install/initrd/ installmake strip ipfiremake initrd } @@ -1041,9 +1029,7 @@ toolchain) echo "`date -u '+%b %e %T'`: Create toolchain tar.gz for $MACHINE" | tee -a $LOGFILE test -d $BASEDIR/cache/toolchains || mkdir -p $BASEDIR/cache/toolchains cd $BASEDIR && tar -zc --exclude='log/_build.*.log' -f cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$MACHINE.tar.gz \ - build/{bin,etc,usr/bin,usr/local} \ - build/tools/{bin,etc,*-linux-gnu*,include,lib,libexec,sbin,share,var} \ - log >> $LOGFILE + build/tools build/bin/sh log >> $LOGFILE md5sum cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$MACHINE.tar.gz \ > cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$MACHINE.md5 stdumount diff --git a/src/fake-environ/Makefile b/src/fake-environ/Makefile index a75bdf2..3c3a3b4 100644 --- a/src/fake-environ/Makefile +++ b/src/fake-environ/Makefile @@ -19,7 +19,7 @@ all: $(LIB) $(CC) $(CFLAGS) -o $@ -c $<
$(LIB): $(OBJECTS) - $(CC) $(CFLAGS) -shared -o $@ $? -ldl + $(CC) $(CFLAGS) -shared -o $@ $? -ldl -static-libgcc
.PHONY: install install: all diff --git a/src/install+setup/install/Makefile b/src/install+setup/install/Makefile index a3c95f7..89106de 100644 --- a/src/install+setup/install/Makefile +++ b/src/install+setup/install/Makefile @@ -21,10 +21,10 @@
CC = gcc CFLAGS = -Os -Wall -INCLUDE = -I/opt/i586-uClibc/include +INCLUDE =
LD = gcc -LDFLAGS = -L/install/lib +LDFLAGS = LIBS = -lnewt -lslang -lpci
COMPILE = $(CC) -c $(INCLUDE) $(CFLAGS) diff --git a/src/install+setup/install/main.c b/src/install+setup/install/main.c index c181e4a..e1b9161 100644 --- a/src/install+setup/install/main.c +++ b/src/install+setup/install/main.c @@ -510,6 +510,15 @@ int main(int argc, char *argv[])
system("/bin/sed -e 's#/harddisk#/#g' -e 's#//#/#g' < /proc/mounts > /harddisk/etc/mtab");
+ /* + * Generate device.map to help grub finding the device to install itself on. + */ + FILE *f = NULL; + if (f = fopen("/harddisk/boot/grub/device.map", "w")) { + fprintf(f, "(hd0) %s\n", hdparams.devnode_part); + fclose(f); + } + snprintf(commandstring, STRING_SIZE, "/usr/sbin/chroot /harddisk /usr/sbin/grub-install --no-floppy %s", hdparams.devnode_disk); if (runcommandwithstatus(commandstring, ctr[TR_INSTALLING_GRUB])) { diff --git a/src/install+setup/install/mountdest.sh b/src/install+setup/install/mountdest.sh index 700b838..42e2c76 100644 --- a/src/install+setup/install/mountdest.sh +++ b/src/install+setup/install/mountdest.sh @@ -23,7 +23,7 @@ echo "Scanning for possible destination drives"
# scan sd? echo "--> sd?" -for DEVICE in `find /sys/block/* -maxdepth 0 -name sd* -exec basename {} ; | sort | uniq` +for DEVICE in `find /sys/block/* -maxdepth 0 -name sd* -or -name vd* -exec basename {} ; | sort | uniq` do if [ "$(grep ${DEVICE} /proc/partitions)" = "" ]; then umount /harddisk 2> /dev/null diff --git a/src/install+setup/libsmooth/Makefile b/src/install+setup/libsmooth/Makefile index bc09aa6..5ce869a 100644 --- a/src/install+setup/libsmooth/Makefile +++ b/src/install+setup/libsmooth/Makefile @@ -20,7 +20,7 @@
CC = gcc CFLAGS = -O2 -Wall -INCLUDE = -I/opt/i586-uClibc/include +INCLUDE =
LD = ld LDFLAGS = -i diff --git a/src/misc-progs/Makefile b/src/misc-progs/Makefile index 300e9ec..33d1d66 100644 --- a/src/misc-progs/Makefile +++ b/src/misc-progs/Makefile @@ -29,7 +29,7 @@ SUID_PROGS = setdmzholes setportfw setxtaccess \ ipsecctrl timectrl dhcpctrl snortctrl \ applejuicectrl rebuildhosts backupctrl \ logwatch openvpnctrl outgoingfwctrl \ - wirelessctrl getipstat getiptstate qosctrl launch-ether-wake \ + wirelessctrl getipstat qosctrl launch-ether-wake \ redctrl syslogdctrl extrahdctrl sambactrl upnpctrl tripwirectrl \ smartctrl clamavctrl addonctrl pakfire mpfirectrl wlanapctrl \ setaliases urlfilterctrl updxlratorctrl fireinfoctrl rebuildroutes \ diff --git a/src/misc-progs/getiptstate.c b/src/misc-progs/getiptstate.c deleted file mode 100644 index 338b531..0000000 --- a/src/misc-progs/getiptstate.c +++ /dev/null @@ -1,24 +0,0 @@ -/* IPFire helper program - IPStat - * - * Get the list from IPTABLES -L - * - */ - -#include <stdio.h> -#include <string.h> -#include <unistd.h> -#include <stdlib.h> -#include <sys/types.h> -#include <fcntl.h> -#include "setuid.h" - - -int main(void) -{ - if (!(initsetuid())) - exit(1); - - safe_system("/usr/sbin/iptstate -1rbt"); - return 0; -} - diff --git a/src/paks/applejuice/install.sh b/src/paks/applejuice/install.sh deleted file mode 100644 index 92cd67f..0000000 --- a/src/paks/applejuice/install.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash -############################################################################ -# # -# This file is part of the IPFire Firewall. # -# # -# IPFire is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 2 of the License, or # -# (at your option) any later version. # -# # -# IPFire is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with IPFire; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Copyright (C) 2007 IPFire-Team info@ipfire.org. # -# # -############################################################################ -# -. /opt/pakfire/lib/functions.sh -extract_files -sleep 60 && /etc/init.d/applejuice start & -ln -svf ../init.d/applejuice /etc/rc.d/rc0.d/K05applejuice -ln -svf ../init.d/applejuice /etc/rc.d/rc3.d/S98applejuice -ln -svf ../init.d/applejuice /etc/rc.d/rc6.d/K05applejuice -/etc/init.d/apache reload diff --git a/src/paks/applejuice/uninstall.sh b/src/paks/applejuice/uninstall.sh deleted file mode 100644 index e14e422..0000000 --- a/src/paks/applejuice/uninstall.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash -############################################################################ -# # -# This file is part of the IPFire Firewall. # -# # -# IPFire is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 2 of the License, or # -# (at your option) any later version. # -# # -# IPFire is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with IPFire; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Copyright (C) 2007 IPFire-Team info@ipfire.org. # -# # -############################################################################ -# -. /opt/pakfire/lib/functions.sh -/etc/init.d/applejuice stop -remove_files -rm -rf /etc/rc.d/rc*.d/*applejuice diff --git a/src/paks/applejuice/update.sh b/src/paks/applejuice/update.sh deleted file mode 100644 index 89c40d0..0000000 --- a/src/paks/applejuice/update.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -############################################################################ -# # -# This file is part of the IPFire Firewall. # -# # -# IPFire is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 2 of the License, or # -# (at your option) any later version. # -# # -# IPFire is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with IPFire; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Copyright (C) 2007 IPFire-Team info@ipfire.org. # -# # -############################################################################ -# -. /opt/pakfire/lib/functions.sh -./uninstall.sh -./install.sh diff --git a/src/patches/apcupsd-3.14.4-fix-gcc44.patch b/src/patches/apcupsd-3.14.4-fix-gcc44.patch new file mode 100644 index 0000000..0052098 --- /dev/null +++ b/src/patches/apcupsd-3.14.4-fix-gcc44.patch @@ -0,0 +1,17 @@ +diff -up apcupsd-3.14.5/src/apcaccess.c.gcc44 apcupsd-3.14.5/src/apcaccess.c +--- apcupsd-3.14.5/src/apcaccess.c.gcc44 2009-02-24 10:36:35.781325750 +0100 ++++ apcupsd-3.14.5/src/apcaccess.c 2009-02-24 10:38:12.416285478 +0100 +@@ -86,10 +86,10 @@ int main(int argc, char **argv) + } + + if (argc > 2) { /* assume host:port */ +- char *p; ++ char *p = argv[2]; + +- host = argv[2]; +- p = strchr(host, ':'); ++ host = p; ++ p = strchr(p, ':'); + if (p) { + *p++ = 0; + port = atoi(p); diff --git a/src/patches/bash-3.1-fixes-8.patch b/src/patches/bash-3.1-fixes-8.patch deleted file mode 100644 index 449f076..0000000 --- a/src/patches/bash-3.1-fixes-8.patch +++ /dev/null @@ -1,723 +0,0 @@ -Submitted By: Jeremy Huntwork (jhuntwork at linuxfromscratch dot org) -Date: 2006-04-11 -Initial Package Version: 3.1 -Origin: http://ftp.gnu.org/gnu/bash/bash-3.1-patches/ -Upstream Status: From Upstream -Description: Contains patches 001-017 from upstream - -diff -Naur bash-3.1.orig/arrayfunc.c bash-3.1/arrayfunc.c ---- bash-3.1.orig/arrayfunc.c 2005-07-04 17:25:58.000000000 -0700 -+++ bash-3.1/arrayfunc.c 2006-04-19 15:59:29.000000000 -0700 -@@ -592,11 +592,7 @@ - exp = (char *)xmalloc (len); - strncpy (exp, s, len - 1); - exp[len - 1] = '\0'; --#if 0 -- t = expand_string_to_string (exp, 0); --#else -- t = expand_string_to_string (exp, Q_DOUBLE_QUOTES); --#endif -+ t = expand_arith_string (exp, 0); - this_command_name = (char *)NULL; - val = evalexp (t, &expok); - free (t); -diff -Naur bash-3.1.orig/doc/bash.1 bash-3.1/doc/bash.1 ---- bash-3.1.orig/doc/bash.1 2005-10-12 08:40:52.000000000 -0700 -+++ bash-3.1/doc/bash.1 2006-04-19 15:58:34.000000000 -0700 -@@ -6,12 +6,12 @@ - ." Case Western Reserve University - ." chet@po.cwru.edu - ." --." Last Change: Sat Aug 27 13:28:44 EDT 2005 -+." Last Change: Wed Dec 28 19:58:45 EST 2005 - ." - ." bash_builtins, strip all but Built-Ins section - .if \n(zZ=1 .ig zZ - .if \n(zY=1 .ig zY --.TH BASH 1 "2005 Aug 27" "GNU Bash-3.1-beta1" -+.TH BASH 1 "2005 Dec 28" "GNU Bash-3.1" - ." - ." There's some problem with having a `@' - ." in a tagged paragraph with the BSD man macros. -@@ -677,8 +677,8 @@ - .B nocasematch - is enabled, the match is performed without regard to the case - of alphabetic characters. --The return value is 0 if the string matches or does not match --the pattern, respectively, and 1 otherwise. -+The return value is 0 if the string matches (\fB==\fP) or does not match -+(\fB!=\fP) the pattern, and 1 otherwise. - Any part of the pattern may be quoted to force it to be matched as a - string. - .if t .sp 0.5 -@@ -807,6 +807,12 @@ - as for pathname expansion (see - .B Pathname Expansion - below). -+The \fIword\fP is expanded using tilde -+expansion, parameter and variable expansion, arithmetic substituion, -+command substitution, process substitution and quote removal. -+Each \fIpattern\fP examined is expanded using tilde -+expansion, parameter and variable expansion, arithmetic substituion, -+command substitution, and process substitution. - If the shell option - .B nocasematch - is enabled, the match is performed without regard to the case -@@ -8484,7 +8490,7 @@ - returns true if any of the arguments are found, false if - none are found. - .TP --\fBulimit\fP [\fB-SHacdflmnpstuv\fP [\fIlimit\fP]] -+\fBulimit\fP [\fB-SHacdfilmnpqstuvx\fP [\fIlimit\fP]] - Provides control over the resources available to the shell and to - processes started by it, on systems that allow such control. - The \fB-H\fP and \fB-S\fP options specify that the hard or soft limit is -@@ -8523,6 +8529,9 @@ - .B -f - The maximum size of files created by the shell - .TP -+.B -i -+The maximum number of pending signals -+.TP - .B -l - The maximum size that may be locked into memory - .TP -@@ -8536,6 +8545,9 @@ - .B -p - The pipe size in 512-byte blocks (this may not be set) - .TP -+.B -q -+The maximum number of bytes in POSIX message queues -+.TP - .B -s - The maximum stack size - .TP -@@ -8547,6 +8559,9 @@ - .TP - .B -v - The maximum amount of virtual memory available to the shell -+.TP -+.B -x -+The maximum number of file locks - .PD - .PP - If -diff -Naur bash-3.1.orig/doc/bashref.texi bash-3.1/doc/bashref.texi ---- bash-3.1.orig/doc/bashref.texi 2005-10-03 12:07:21.000000000 -0700 -+++ bash-3.1/doc/bashref.texi 2006-04-19 15:58:34.000000000 -0700 -@@ -961,8 +961,8 @@ - (see the description of @code{shopt} in @ref{Bash Builtins}) - is enabled, the match is performed without regard to the case - of alphabetic characters. --The return value is 0 if the string matches or does not match --the pattern, respectively, and 1 otherwise. -+The return value is 0 if the string matches (@samp{==}) or does not -+match (@samp{!=})the pattern, and 1 otherwise. - Any part of the pattern may be quoted to force it to be matched as a - string. - -@@ -2598,7 +2598,7 @@ - Builtin commands are necessary to implement functionality impossible - or inconvenient to obtain with separate utilities. - --This section briefly the builtins which Bash inherits from -+This section briefly describes the builtins which Bash inherits from - the Bourne Shell, as well as the builtin commands which are unique - to or have been extended in Bash. - -@@ -3833,7 +3833,7 @@ - @item ulimit - @btindex ulimit - @example --ulimit [-acdflmnpstuvSH] [@var{limit}] -+ulimit [-acdfilmnpqstuvxSH] [@var{limit}] - @end example - @code{ulimit} provides control over the resources available to processes - started by the shell, on systems that allow such control. If an -@@ -3857,6 +3857,9 @@ - @item -f - The maximum size of files created by the shell. - -+@item -i -+The maximum number of pending signals. -+ - @item -l - The maximum size that may be locked into memory. - -@@ -3869,6 +3872,9 @@ - @item -p - The pipe buffer size. - -+@item -q -+The maximum number of bytes in POSIX message queues. -+ - @item -s - The maximum stack size. - -@@ -3881,6 +3887,9 @@ - @item -v - The maximum amount of virtual memory available to the process. - -+@item -x -+The maximum number of file locks. -+ - @end table - - If @var{limit} is given, it is the new value of the specified resource; -@@ -4089,8 +4098,8 @@ - Print shell input lines as they are read. - - @item -x --Print a trace of simple commands, \fBfor\fP commands, \fBcase\fP --commands, \fBselect\fP commands, and arithmetic \fBfor\fP commands -+Print a trace of simple commands, @code{for} commands, @code{case} -+commands, @code{select} commands, and arithmetic @code{for} commands - and their arguments or associated word lists after they are - expanded and before they are executed. The value of the @env{PS4} - variable is expanded and the resultant value is printed before -diff -Naur bash-3.1.orig/doc/version.texi bash-3.1/doc/version.texi ---- bash-3.1.orig/doc/version.texi 2005-09-20 11:52:56.000000000 -0700 -+++ bash-3.1/doc/version.texi 2006-04-19 15:58:34.000000000 -0700 -@@ -2,9 +2,9 @@ - Copyright (C) 1988-2005 Free Software Foundation, Inc. - @end ignore - --@set LASTCHANGE Mon Sep 5 11:47:04 EDT 2005 -+@set LASTCHANGE Fri Dec 30 10:50:51 EST 2005 - --@set EDITION 3.1-beta1 --@set VERSION 3.1-beta1 --@set UPDATED 5 September 2005 --@set UPDATED-MONTH September 2005 -+@set EDITION 3.1 -+@set VERSION 3.1 -+@set UPDATED 30 December 2005 -+@set UPDATED-MONTH December 2005 -diff -Naur bash-3.1.orig/jobs.c bash-3.1/jobs.c ---- bash-3.1.orig/jobs.c 2005-11-11 20:13:27.000000000 -0800 -+++ bash-3.1/jobs.c 2006-04-19 15:58:34.000000000 -0700 -@@ -619,8 +619,11 @@ - * once in the parent and once in each child. This is where - * the parent gives it away. - * -+ * Don't give the terminal away if this shell is an asynchronous -+ * subshell. -+ * - */ -- if (job_control && newjob->pgrp) -+ if (job_control && newjob->pgrp && (subshell_environment&SUBSHELL_ASYNC) == 0) - give_terminal_to (newjob->pgrp, 0); - } - } -@@ -844,9 +847,10 @@ - realloc_jobs_list () - { - sigset_t set, oset; -- int nsize, i, j; -+ int nsize, i, j, ncur, nprev; - JOB **nlist; - -+ ncur = nprev = NO_JOB; - nsize = ((js.j_njobs + JOB_SLOTS - 1) / JOB_SLOTS); - nsize *= JOB_SLOTS; - i = js.j_njobs % JOB_SLOTS; -@@ -854,17 +858,51 @@ - nsize += JOB_SLOTS; - - BLOCK_CHILD (set, oset); -- nlist = (JOB **) xmalloc (nsize * sizeof (JOB *)); -+ nlist = (js.j_jobslots == nsize) ? jobs : (JOB **) xmalloc (nsize * sizeof (JOB *)); -+ - for (i = j = 0; i < js.j_jobslots; i++) - if (jobs[i]) -- nlist[j++] = jobs[i]; -+ { -+ if (i == js.j_current) -+ ncur = j; -+ if (i == js.j_previous) -+ nprev = j; -+ nlist[j++] = jobs[i]; -+ } -+ -+#if defined (DEBUG) -+ itrace ("realloc_jobs_list: resize jobs list from %d to %d", js.j_jobslots, nsize); -+ itrace ("realloc_jobs_list: j_lastj changed from %d to %d", js.j_lastj, (j > 0) ? j - 1 : 0); -+ itrace ("realloc_jobs_list: j_njobs changed from %d to %d", js.j_njobs, (j > 0) ? j - 1 : 0); -+#endif - - js.j_firstj = 0; -- js.j_lastj = (j > 0) ? j - 1: 0; -+ js.j_lastj = (j > 0) ? j - 1 : 0; -+ js.j_njobs = j; - js.j_jobslots = nsize; - -- free (jobs); -- jobs = nlist; -+ /* Zero out remaining slots in new jobs list */ -+ for ( ; j < nsize; j++) -+ nlist[j] = (JOB *)NULL; -+ -+ if (jobs != nlist) -+ { -+ free (jobs); -+ jobs = nlist; -+ } -+ -+ if (ncur != NO_JOB) -+ js.j_current = ncur; -+ if (nprev != NO_JOB) -+ js.j_previous = nprev; -+ -+ /* Need to reset these */ -+ if (js.j_current == NO_JOB || js.j_previous == NO_JOB || js.j_current > js.j_lastj || js.j_previous > js.j_lastj) -+ reset_current (); -+ -+#ifdef DEBUG -+ itrace ("realloc_jobs_list: reset js.j_current (%d) and js.j_previous (%d)", js.j_current, js.j_previous); -+#endif - - UNBLOCK_CHILD (oset); - } -@@ -1655,7 +1693,7 @@ - In this case, we don't want to give the terminal to the - shell's process group (we could be in the middle of a - pipeline, for example). */ -- if (async_p == 0 && pipeline_pgrp != shell_pgrp) -+ if (async_p == 0 && pipeline_pgrp != shell_pgrp && ((subshell_environment&SUBSHELL_ASYNC) == 0)) - give_terminal_to (pipeline_pgrp, 0); - - #if defined (PGRP_PIPE) -@@ -2198,7 +2236,11 @@ - /* This is possibly a race condition -- should it go in stop_pipeline? */ - wait_sigint_received = 0; - if (job_control == 0) -- old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler); -+ { -+ old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler); -+ if (old_sigint_handler == SIG_IGN) -+ set_signal_handler (SIGINT, old_sigint_handler); -+ } - - termination_state = last_command_exit_value; - -diff -Naur bash-3.1.orig/lib/glob/glob.c bash-3.1/lib/glob/glob.c ---- bash-3.1.orig/lib/glob/glob.c 2005-03-24 09:42:27.000000000 -0800 -+++ bash-3.1/lib/glob/glob.c 2006-04-19 15:58:34.000000000 -0700 -@@ -360,6 +360,7 @@ - count = lose = skip = 0; - - firstmalloc = 0; -+ nalloca = 0; - - /* If PAT is empty, skip the loop, but return one (empty) filename. */ - if (pat == 0 || *pat == '\0') -@@ -546,6 +547,8 @@ - firstmalloc = 0; - tmplink = lastlink; - } -+ else -+ tmplink = 0; - free (lastlink->name); - lastlink = lastlink->next; - FREE (tmplink); -diff -Naur bash-3.1.orig/lib/glob/sm_loop.c bash-3.1/lib/glob/sm_loop.c ---- bash-3.1.orig/lib/glob/sm_loop.c 2005-10-16 18:21:04.000000000 -0700 -+++ bash-3.1/lib/glob/sm_loop.c 2006-04-19 15:58:34.000000000 -0700 -@@ -638,12 +638,13 @@ - CHAR *psub; /* pointer to sub-pattern */ - CHAR *pnext; /* pointer to next sub-pattern */ - CHAR *srest; /* pointer to rest of string */ -- int m1, m2; -+ int m1, m2, xflags; /* xflags = flags passed to recursive matches */ - - #if DEBUG_MATCHING - fprintf(stderr, "extmatch: xc = %c\n", xc); - fprintf(stderr, "extmatch: s = %s; se = %s\n", s, se); - fprintf(stderr, "extmatch: p = %s; pe = %s\n", p, pe); -+fprintf(stderr, "extmatch: flags = %d\n", flags); - #endif - - prest = PATSCAN (p + (*p == L('(')), pe, 0); /* ) */ -@@ -677,8 +678,12 @@ - string matches the rest of the pattern. Also handle - multiple matches of the pattern. */ - if (m1) -- m2 = (GMATCH (srest, se, prest, pe, flags) == 0) || -- (s != srest && GMATCH (srest, se, p - 1, pe, flags) == 0); -+ { -+ /* if srest > s, we are not at start of string */ -+ xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags; -+ m2 = (GMATCH (srest, se, prest, pe, xflags) == 0) || -+ (s != srest && GMATCH (srest, se, p - 1, pe, xflags) == 0); -+ } - if (m1 && m2) - return (0); - } -@@ -704,8 +709,10 @@ - srest = (prest == pe) ? se : s; - for ( ; srest <= se; srest++) - { -+ /* if srest > s, we are not at start of string */ -+ xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags; - if (GMATCH (s, srest, psub, pnext - 1, flags) == 0 && -- GMATCH (srest, se, prest, pe, flags) == 0) -+ GMATCH (srest, se, prest, pe, xflags) == 0) - return (0); - } - if (pnext == prest) -@@ -726,7 +733,9 @@ - if (pnext == prest) - break; - } -- if (m1 == 0 && GMATCH (srest, se, prest, pe, flags) == 0) -+ /* if srest > s, we are not at start of string */ -+ xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags; -+ if (m1 == 0 && GMATCH (srest, se, prest, pe, xflags) == 0) - return (0); - } - return (FNM_NOMATCH); -diff -Naur bash-3.1.orig/lib/readline/display.c bash-3.1/lib/readline/display.c ---- bash-3.1.orig/lib/readline/display.c 2005-11-30 11:05:02.000000000 -0800 -+++ bash-3.1/lib/readline/display.c 2006-04-19 15:58:34.000000000 -0700 -@@ -1983,11 +1983,15 @@ - int pchar; - { - int len; -- char *pmt; -+ char *pmt, *p; - - rl_save_prompt (); - -- if (saved_local_prompt == 0) -+ /* We've saved the prompt, and can do anything with the various prompt -+ strings we need before they're restored. We want the unexpanded -+ portion of the prompt string after any final newline. */ -+ p = rl_prompt ? strrchr (rl_prompt, '\n') : 0; -+ if (p == 0) - { - len = (rl_prompt && *rl_prompt) ? strlen (rl_prompt) : 0; - pmt = (char *)xmalloc (len + 2); -@@ -1998,19 +2002,17 @@ - } - else - { -- len = *saved_local_prompt ? strlen (saved_local_prompt) : 0; -+ p++; -+ len = strlen (p); - pmt = (char *)xmalloc (len + 2); - if (len) -- strcpy (pmt, saved_local_prompt); -+ strcpy (pmt, p); - pmt[len] = pchar; - pmt[len+1] = '\0'; -- local_prompt = savestring (pmt); -- prompt_last_invisible = saved_last_invisible; -- prompt_visible_length = saved_visible_length + 1; -- } -+ } - -+ /* will be overwritten by expand_prompt, called from rl_message */ - prompt_physical_chars = saved_physical_chars + 1; -- - return pmt; - } - -diff -Naur bash-3.1.orig/lib/readline/readline.c bash-3.1/lib/readline/readline.c ---- bash-3.1.orig/lib/readline/readline.c 2005-07-04 19:29:35.000000000 -0700 -+++ bash-3.1/lib/readline/readline.c 2006-04-19 15:58:34.000000000 -0700 -@@ -282,6 +282,7 @@ - { - FREE (rl_prompt); - rl_prompt = prompt ? savestring (prompt) : (char *)NULL; -+ rl_display_prompt = rl_prompt ? rl_prompt : ""; - - rl_visible_prompt_length = rl_expand_prompt (rl_prompt); - return 0; -diff -Naur bash-3.1.orig/lib/readline/terminal.c bash-3.1/lib/readline/terminal.c ---- bash-3.1.orig/lib/readline/terminal.c 2005-11-12 17:46:54.000000000 -0800 -+++ bash-3.1/lib/readline/terminal.c 2006-04-19 15:58:34.000000000 -0700 -@@ -122,7 +122,7 @@ - static char *_rl_visible_bell; - - /* Non-zero means the terminal can auto-wrap lines. */ --int _rl_term_autowrap; -+int _rl_term_autowrap = -1; - - /* Non-zero means that this terminal has a meta key. */ - static int term_has_meta; -@@ -274,6 +274,9 @@ - _rl_set_screen_size (rows, cols) - int rows, cols; - { -+ if (_rl_term_autowrap == -1) -+ _rl_init_terminal_io (rl_terminal_name); -+ - if (rows > 0) - _rl_screenheight = rows; - if (cols > 0) -diff -Naur bash-3.1.orig/parse.y bash-3.1/parse.y ---- bash-3.1.orig/parse.y 2005-11-11 20:14:18.000000000 -0800 -+++ bash-3.1/parse.y 2006-04-19 15:58:34.000000000 -0700 -@@ -2716,6 +2716,7 @@ - #define P_ALLOWESC 0x02 - #define P_DQUOTE 0x04 - #define P_COMMAND 0x08 /* parsing a command, so look for comments */ -+#define P_BACKQUOTE 0x10 /* parsing a backquoted command substitution */ - - static char matched_pair_error; - static char * -@@ -2725,12 +2726,12 @@ - int *lenp, flags; - { - int count, ch, was_dollar, in_comment, check_comment; -- int pass_next_character, nestlen, ttranslen, start_lineno; -+ int pass_next_character, backq_backslash, nestlen, ttranslen, start_lineno; - char *ret, *nestret, *ttrans; - int retind, retsize, rflags; - - count = 1; -- pass_next_character = was_dollar = in_comment = 0; -+ pass_next_character = backq_backslash = was_dollar = in_comment = 0; - check_comment = (flags & P_COMMAND) && qc != ''' && qc != '"' && (flags & P_DQUOTE) == 0; - - /* RFLAGS is the set of flags we want to pass to recursive calls. */ -@@ -2742,11 +2743,8 @@ - start_lineno = line_number; - while (count) - { --#if 0 -- ch = shell_getc ((qc != ''' || (flags & P_ALLOWESC)) && pass_next_character == 0); --#else -- ch = shell_getc (qc != ''' && pass_next_character == 0); --#endif -+ ch = shell_getc (qc != ''' && pass_next_character == 0 && backq_backslash == 0); -+ - if (ch == EOF) - { - free (ret); -@@ -2771,9 +2769,16 @@ - continue; - } - /* Not exactly right yet */ -- else if (check_comment && in_comment == 0 && ch == '#' && (retind == 0 || ret[retind-1] == '\n' || whitespace (ret[retind -1]))) -+ else if MBTEST(check_comment && in_comment == 0 && ch == '#' && (retind == 0 || ret[retind-1] == '\n' || whitespace (ret[retind - 1]))) - in_comment = 1; - -+ /* last char was backslash inside backquoted command substitution */ -+ if (backq_backslash) -+ { -+ backq_backslash = 0; -+ /* Placeholder for adding special characters */ -+ } -+ - if (pass_next_character) /* last char was backslash */ - { - pass_next_character = 0; -@@ -2814,6 +2819,8 @@ - { - if MBTEST((flags & P_ALLOWESC) && ch == '\') - pass_next_character++; -+ else if MBTEST((flags & P_BACKQUOTE) && ch == '\') -+ backq_backslash++; - continue; - } - -@@ -2898,7 +2905,11 @@ - } - else if MBTEST(qc == '`' && (ch == '"' || ch == ''') && in_comment == 0) - { -- nestret = parse_matched_pair (0, ch, ch, &nestlen, rflags); -+ /* Add P_BACKQUOTE so backslash quotes the next character and -+ shell_getc does the right thing with <newline>. We do this for -+ a measure of backwards compatibility -- it's not strictly the -+ right POSIX thing. */ -+ nestret = parse_matched_pair (0, ch, ch, &nestlen, rflags|P_BACKQUOTE); - goto add_nestret; - } - else if MBTEST(was_dollar && (ch == '(' || ch == '{' || ch == '[')) /* ) } ] */ -@@ -2907,7 +2918,7 @@ - if (open == ch) /* undo previous increment */ - count--; - if (ch == '(') /* ) */ -- nestret = parse_matched_pair (0, '(', ')', &nestlen, rflags); -+ nestret = parse_matched_pair (0, '(', ')', &nestlen, rflags & ~P_DQUOTE); - else if (ch == '{') /* } */ - nestret = parse_matched_pair (0, '{', '}', &nestlen, P_FIRSTCLOSE|rflags); - else if (ch == '[') /* ] */ -@@ -3578,7 +3589,7 @@ - FREE (ttok); - all_digit_token = 0; - compound_assignment = 1; --#if 0 -+#if 1 - goto next_character; - #else - goto got_token; /* ksh93 seems to do this */ -@@ -3695,7 +3706,9 @@ - struct builtin *b; - b = builtin_address_internal (token, 0); - if (b && (b->flags & ASSIGNMENT_BUILTIN)) -- parser_state |= PST_ASSIGNOK; -+ parser_state |= PST_ASSIGNOK; -+ else if (STREQ (token, "eval") || STREQ (token, "let")) -+ parser_state |= PST_ASSIGNOK; - } - - yylval.word = the_word; -@@ -4686,18 +4699,21 @@ - int *retlenp; - { - WORD_LIST *wl, *rl; -- int tok, orig_line_number, orig_token_size; -+ int tok, orig_line_number, orig_token_size, orig_last_token, assignok; - char *saved_token, *ret; - - saved_token = token; - orig_token_size = token_buffer_size; - orig_line_number = line_number; -+ orig_last_token = last_read_token; - - last_read_token = WORD; /* WORD to allow reserved words here */ - - token = (char *)NULL; - token_buffer_size = 0; - -+ assignok = parser_state&PST_ASSIGNOK; /* XXX */ -+ - wl = (WORD_LIST *)NULL; /* ( */ - parser_state |= PST_COMPASSIGN; - -@@ -4740,7 +4756,7 @@ - jump_to_top_level (DISCARD); - } - -- last_read_token = WORD; -+ last_read_token = orig_last_token; /* XXX - was WORD? */ - if (wl) - { - rl = REVERSE_LIST (wl, WORD_LIST *); -@@ -4752,6 +4768,10 @@ - - if (retlenp) - *retlenp = (ret && *ret) ? strlen (ret) : 0; -+ -+ if (assignok) -+ parser_state |= PST_ASSIGNOK; -+ - return ret; - } - -diff -Naur bash-3.1.orig/patchlevel.h bash-3.1/patchlevel.h ---- bash-3.1.orig/patchlevel.h 2005-07-20 10:58:20.000000000 -0700 -+++ bash-3.1/patchlevel.h 2006-04-19 15:59:29.000000000 -0700 -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 0 -+#define PATCHLEVEL 17 - - #endif /* _PATCHLEVEL_H_ */ -diff -Naur bash-3.1.orig/subst.c bash-3.1/subst.c ---- bash-3.1.orig/subst.c 2005-10-24 06:51:13.000000000 -0700 -+++ bash-3.1/subst.c 2006-04-19 15:59:29.000000000 -0700 -@@ -2187,7 +2187,7 @@ - if (mklocal && variable_context) - { - v = find_variable (name); -- if (v == 0 || array_p (v) == 0) -+ if (v == 0 || array_p (v) == 0 || v->context != variable_context) - v = make_local_array_variable (name); - v = assign_array_var_from_string (v, value, flags); - } -@@ -2575,6 +2575,13 @@ - return (expand_string_to_string_internal (string, quoted, expand_string_assignment)); - } - -+char * -+expand_arith_string (string, quoted) -+ char *string; -+{ -+ return (expand_string_if_necessary (string, quoted, expand_string)); -+} -+ - #if defined (COND_COMMAND) - /* Just remove backslashes in STRING. Returns a new string. */ - char * -@@ -5248,7 +5255,7 @@ - else - t = (char *)0; - -- temp1 = expand_string_if_necessary (substr, Q_DOUBLE_QUOTES, expand_string); -+ temp1 = expand_arith_string (substr, Q_DOUBLE_QUOTES); - *e1p = evalexp (temp1, &expok); - free (temp1); - if (expok == 0) -@@ -5293,7 +5300,7 @@ - { - t++; - temp2 = savestring (t); -- temp1 = expand_string_if_necessary (temp2, Q_DOUBLE_QUOTES, expand_string); -+ temp1 = expand_arith_string (temp2, Q_DOUBLE_QUOTES); - free (temp2); - t[-1] = ':'; - *e2p = evalexp (temp1, &expok); -@@ -6435,7 +6442,7 @@ - temp2[t_index] = '\0'; - - /* Expand variables found inside the expression. */ -- temp1 = expand_string_if_necessary (temp2, Q_DOUBLE_QUOTES, expand_string); -+ temp1 = expand_arith_string (temp2, Q_DOUBLE_QUOTES); - free (temp2); - - arithsub: -@@ -6477,7 +6484,7 @@ - zindex = t_index; - - /* Do initial variable expansion. */ -- temp1 = expand_string_if_necessary (temp, Q_DOUBLE_QUOTES, expand_string); -+ temp1 = expand_arith_string (temp, Q_DOUBLE_QUOTES); - - goto arithsub; - -@@ -6795,6 +6802,12 @@ - if (temp && *temp && t_index > 0) - { - temp1 = bash_tilde_expand (temp, tflag); -+ if (temp1 && *temp1 == '~' && STREQ (temp, temp1)) -+ { -+ FREE (temp); -+ FREE (temp1); -+ goto add_character; /* tilde expansion failed */ -+ } - free (temp); - temp = temp1; - sindex += t_index; -diff -Naur bash-3.1.orig/subst.h bash-3.1/subst.h ---- bash-3.1.orig/subst.h 2004-11-07 12:12:28.000000000 -0800 -+++ bash-3.1/subst.h 2006-04-19 15:59:29.000000000 -0700 -@@ -151,6 +151,9 @@ - extern char *expand_string_unsplit_to_string __P((char *, int)); - extern char *expand_assignment_string_to_string __P((char *, int)); - -+/* Expand an arithmetic expression string */ -+extern char *expand_arith_string __P((char *, int)); -+ - /* De-quoted quoted characters in STRING. */ - extern char *dequote_string __P((char *)); - -diff -Naur bash-3.1.orig/variables.c bash-3.1/variables.c ---- bash-3.1.orig/variables.c 2005-11-12 18:22:37.000000000 -0800 -+++ bash-3.1/variables.c 2006-04-19 15:58:34.000000000 -0700 -@@ -860,9 +860,11 @@ - { - char val[INT_STRLEN_BOUND(int) + 1], *v; - -+#if defined (READLINE) - /* If we are currently assigning to LINES or COLUMNS, don't do anything. */ - if (winsize_assignment) - return; -+#endif - - v = inttostr (lines, val, sizeof (val)); - bind_variable ("LINES", v, 0); diff --git a/src/patches/bash-3.1-login.patch b/src/patches/bash-3.1-login.patch deleted file mode 100644 index 8e950ba..0000000 --- a/src/patches/bash-3.1-login.patch +++ /dev/null @@ -1,15 +0,0 @@ ---- bash-3.1/shell.c.login 2006-01-13 16:52:14.000000000 +0000 -+++ bash-3.1/shell.c 2006-01-13 16:52:15.000000000 +0000 -@@ -1543,9 +1543,10 @@ - any startup files; just try to be more like /bin/sh. */ - shell_name = argv0 ? base_pathname (argv0) : PROGRAM; - -- if (*shell_name == '-') -+ if (argv0 && *argv0 == '-') - { -- shell_name++; -+ if (*shell_name == '-') -+ shell_name++; - login_shell++; - } - diff --git a/src/patches/bash/bash32-001 b/src/patches/bash/bash32-001 new file mode 100644 index 0000000..b7d1f1e --- /dev/null +++ b/src/patches/bash/bash32-001 @@ -0,0 +1,47 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-001 + +Bug-Reported-by: Greg Schafer gschafer@zip.com.au +Bug-Reference-ID: 20061012084940.GA15768@tigers.local +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-10/msg00046.html + +Bug-Description: + +When using historical ``-style command substitution, bash incorrectly attempts +to interpret shell comments while scanning for the closing backquote. + +Patch: + +*** ../bash-3.2/parse.y Tue Sep 19 16:37:21 2006 +--- parse.y Thu Oct 12 10:30:57 2006 +*************** +*** 2736,2740 **** + count = 1; + pass_next_character = backq_backslash = was_dollar = in_comment = 0; +! check_comment = (flags & P_COMMAND) && qc != ''' && qc != '"' && (flags & P_DQUOTE) == 0; + + /* RFLAGS is the set of flags we want to pass to recursive calls. */ +--- 2736,2740 ---- + count = 1; + pass_next_character = backq_backslash = was_dollar = in_comment = 0; +! check_comment = (flags & P_COMMAND) && qc != '`' && qc != ''' && qc != '"' && (flags & P_DQUOTE) == 0; + + /* RFLAGS is the set of flags we want to pass to recursive calls. */ +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 0 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 1 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-002 b/src/patches/bash/bash32-002 new file mode 100644 index 0000000..b934df9 --- /dev/null +++ b/src/patches/bash/bash32-002 @@ -0,0 +1,48 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-002 + +Bug-Reported-by: Jim Gifford jim@jg555.com +Bug-Reference-ID: 12j2pc3aq35mb04@corp.supernews.com +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-10/msg00082.html + +Bug-Description: + +An incorrect encoding specification in the Content-Type header causes msgfmt +to fail, which causes `make install' to fail. + +Patch: + +*** ../bash-3.2/po/ru.po Tue Jan 10 17:51:03 2006 +--- po/ru.po Mon Oct 16 15:13:23 2006 +*************** +*** 13,17 **** + "Language-Team: Russian ru@li.org\n" + "MIME-Version: 1.0\n" +! "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" + "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +--- 13,17 ---- + "Language-Team: Russian ru@li.org\n" + "MIME-Version: 1.0\n" +! "Content-Type: text/plain; charset=KOI8-R\n" + "Content-Transfer-Encoding: 8bit\n" + "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 1 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 2 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-003 b/src/patches/bash/bash32-003 new file mode 100644 index 0000000..922041b --- /dev/null +++ b/src/patches/bash/bash32-003 @@ -0,0 +1,147 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-003 + +Bug-Reported-by: John Gatewood Ham zappaman@buraphalinux.org +Bug-Reference-ID: Pine.LNX.4.64.0610121334140.15558@www.buraphalinux.org +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-10/msg00045.html + +Bug-Description: + +When using the conditional command's `=~' operator to match regular +expressions, the parser did not skip over shell metacharacters in the +regular expression, leading to syntax errors. + +Patch: + +*** ../bash-3.2-patched/parse.y Tue Oct 17 11:45:20 2006 +--- parse.y Sat Oct 14 14:56:16 2006 +*************** +*** 1029,1034 **** +--- 1029,1035 ---- + #define PST_CMDTOKEN 0x1000 /* command token OK - unused */ + #define PST_COMPASSIGN 0x2000 /* parsing x=(...) compound assignment */ + #define PST_ASSIGNOK 0x4000 /* assignment statement ok in this context */ ++ #define PST_REGEXP 0x8000 /* parsing an ERE/BRE as a single word */ + + /* Initial size to allocate for tokens, and the + amount to grow them by. */ +*************** +*** 2591,2596 **** +--- 2592,2600 ---- + return (character); + } + ++ if (parser_state & PST_REGEXP) ++ goto tokword; ++ + /* Shell meta-characters. */ + if MBTEST(shellmeta (character) && ((parser_state & PST_DBLPAREN) == 0)) + { +*************** +*** 2698,2703 **** +--- 2702,2708 ---- + if MBTEST(character == '-' && (last_read_token == LESS_AND || last_read_token == GREATER_AND)) + return (character); + ++ tokword: + /* Okay, if we got this far, we have to read a word. Read one, + and then check it against the known ones. */ + result = read_token_word (character); +*************** +*** 3202,3209 **** + if (tok == WORD && test_binop (yylval.word->word)) + op = yylval.word; + #if defined (COND_REGEXP) +! else if (tok == WORD && STREQ (yylval.word->word,"=~")) +! op = yylval.word; + #endif + else if (tok == '<' || tok == '>') + op = make_word_from_token (tok); /* ( */ +--- 3207,3217 ---- + if (tok == WORD && test_binop (yylval.word->word)) + op = yylval.word; + #if defined (COND_REGEXP) +! else if (tok == WORD && STREQ (yylval.word->word, "=~")) +! { +! op = yylval.word; +! parser_state |= PST_REGEXP; +! } + #endif + else if (tok == '<' || tok == '>') + op = make_word_from_token (tok); /* ( */ +*************** +*** 3234,3239 **** +--- 3242,3248 ---- + + /* rhs */ + tok = read_token (READ); ++ parser_state &= ~PST_REGEXP; + if (tok == WORD) + { + tright = make_cond_node (COND_TERM, yylval.word, (COND_COM *)NULL, (COND_COM *)NULL); +*************** +*** 3419,3427 **** + goto next_character; + } + + #ifdef EXTENDED_GLOB + /* Parse a ksh-style extended pattern matching specification. */ +! if (extended_glob && PATTERN_CHAR (character)) + { + peek_char = shell_getc (1); + if MBTEST(peek_char == '(') /* ) */ +--- 3428,3461 ---- + goto next_character; + } + ++ #ifdef COND_REGEXP ++ /* When parsing a regexp as a single word inside a conditional command, ++ we need to special-case characters special to both the shell and ++ regular expressions. Right now, that is only '(' and '|'. */ /*)*/ ++ if MBTEST((parser_state & PST_REGEXP) && (character == '(' || character == '|')) /*)*/ ++ { ++ if (character == '|') ++ goto got_character; ++ ++ push_delimiter (dstack, character); ++ ttok = parse_matched_pair (cd, '(', ')', &ttoklen, 0); ++ pop_delimiter (dstack); ++ if (ttok == &matched_pair_error) ++ return -1; /* Bail immediately. */ ++ RESIZE_MALLOCED_BUFFER (token, token_index, ttoklen + 2, ++ token_buffer_size, TOKEN_DEFAULT_GROW_SIZE); ++ token[token_index++] = character; ++ strcpy (token + token_index, ttok); ++ token_index += ttoklen; ++ FREE (ttok); ++ dollar_present = all_digit_token = 0; ++ goto next_character; ++ } ++ #endif /* COND_REGEXP */ ++ + #ifdef EXTENDED_GLOB + /* Parse a ksh-style extended pattern matching specification. */ +! if MBTEST(extended_glob && PATTERN_CHAR (character)) + { + peek_char = shell_getc (1); + if MBTEST(peek_char == '(') /* ) */ + +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 2 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 3 + + #endif /* _PATCHLEVEL_H_ */ + diff --git a/src/patches/bash/bash32-004 b/src/patches/bash/bash32-004 new file mode 100644 index 0000000..cd2accf --- /dev/null +++ b/src/patches/bash/bash32-004 @@ -0,0 +1,96 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-004 + +Bug-Reported-by: Stuart Shelton srcshelton@gmail.com +Bug-Reference-ID: 619141e40610261203y6cda5aa6i23cb24c7aeba996e@mail.gmail.com +Bug-Reference-URL: + +Bug-Description: + +A bug in the parameter pattern substitution implementation treated a pattern +whose first character was `/' (after expansion) as specifying global +replacement. + +Patch: + +*** ../bash-3.2/subst.c Tue Sep 19 08:35:09 2006 +--- subst.c Thu Oct 26 09:17:50 2006 +*************** +*** 5707,5712 **** +--- 5707,5717 ---- + vtype &= ~VT_STARSUB; + + mflags = 0; ++ if (patsub && *patsub == '/') ++ { ++ mflags |= MATCH_GLOBREP; ++ patsub++; ++ } + + /* Malloc this because expand_string_if_necessary or one of the expansion + functions in its call chain may free it on a substitution error. */ +*************** +*** 5741,5753 **** + } + + /* ksh93 doesn't allow the match specifier to be a part of the expanded +! pattern. This is an extension. */ + p = pat; +! if (pat && pat[0] == '/') +! { +! mflags |= MATCH_GLOBREP|MATCH_ANY; +! p++; +! } + else if (pat && pat[0] == '#') + { + mflags |= MATCH_BEG; +--- 5746,5757 ---- + } + + /* ksh93 doesn't allow the match specifier to be a part of the expanded +! pattern. This is an extension. Make sure we don't anchor the pattern +! at the beginning or end of the string if we're doing global replacement, +! though. */ + p = pat; +! if (mflags & MATCH_GLOBREP) +! mflags |= MATCH_ANY; + else if (pat && pat[0] == '#') + { + mflags |= MATCH_BEG; +*** ../bash-3.2/tests/new-exp.right Thu Aug 10 12:00:00 2006 +--- tests/new-exp.right Sun Oct 29 16:03:36 2006 +*************** +*** 430,436 **** + Case06---1---A B C::--- + Case07---3---A:B:C--- + Case08---3---A:B:C--- +! ./new-exp.tests: line 506: /${$(($#-1))}: bad substitution + argv[1] = <a> + argv[2] = <b> + argv[3] = <c> +--- 430,436 ---- + Case06---1---A B C::--- + Case07---3---A:B:C--- + Case08---3---A:B:C--- +! ./new-exp.tests: line 506: ${$(($#-1))}: bad substitution + argv[1] = <a> + argv[2] = <b> + argv[3] = <c> +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 3 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 4 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-005 b/src/patches/bash/bash32-005 new file mode 100644 index 0000000..903ec58 --- /dev/null +++ b/src/patches/bash/bash32-005 @@ -0,0 +1,223 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-005 + +Bug-Reported-by: Stuart Shelton stuart@openobjects.com +Bug-Reference-ID: 453F7CC8.6030907@openobjects.com +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-10/msg00127.html + +Bug-Description: + +A missing extern declaration for `asprintf' caused `double' arguments to be +passed as `0', leading to incorrect results. Additionally, a bug in the +replacement asprintf/snprintf function caused an infinite loop when passed +0 arguments to the floating point conversions under some circumstances. + +Patch: + +*** ../bash-3.2/builtins/printf.def Mon Sep 18 08:48:42 2006 +--- builtins/printf.def Tue Oct 31 08:19:44 2006 +*************** +*** 49,54 **** +--- 49,60 ---- + # define INT_MIN (-2147483647-1) + #endif + ++ #if defined (PREFER_STDARG) ++ # include <stdarg.h> ++ #else ++ # include <varargs.h> ++ #endif ++ + #include <stdio.h> + #include <chartypes.h> + +*************** +*** 151,156 **** +--- 157,166 ---- + #define SKIP1 "#'-+ 0" + #define LENMODS "hjlLtz" + ++ #ifndef HAVE_ASPRINTF ++ extern int asprintf __P((char **, const char *, ...)) __attribute__((__format__ (printf, 2, 3))); ++ #endif ++ + static void printf_erange __P((char *)); + static int printstr __P((char *, char *, int, int, int)); + static int tescape __P((char *, char *, int *)); + + +*** ../bash-3.2/lib/sh/snprintf.c Thu Apr 6 09:48:40 2006 +--- lib/sh/snprintf.c Sat Oct 28 00:00:13 2006 +*************** +*** 471,476 **** +--- 476,483 ---- + 10^x ~= r + * log_10(200) = 2; + * log_10(250) = 2; ++ * ++ * NOTE: do not call this with r == 0 -- an infinite loop results. + */ + static int + log_10(r) +*************** +*** 576,583 **** + { + integral_part[0] = '0'; + integral_part[1] = '\0'; +! fraction_part[0] = '0'; +! fraction_part[1] = '\0'; + if (fract) + *fract = fraction_part; + return integral_part; +--- 583,593 ---- + { + integral_part[0] = '0'; + integral_part[1] = '\0'; +! /* The fractional part has to take the precision into account */ +! for (ch = 0; ch < precision-1; ch++) +! fraction_part[ch] = '0'; +! fraction_part[ch] = '0'; +! fraction_part[ch+1] = '\0'; + if (fract) + *fract = fraction_part; + return integral_part; +*************** +*** 805,810 **** +--- 815,821 ---- + PUT_CHAR(*tmp, p); + tmp++; + } ++ + PAD_LEFT(p); + } + +*************** +*** 972,982 **** + if ((p->flags & PF_THOUSANDS) && grouping && (t = groupnum (tmp))) + tmp = t; + + /* calculate the padding. 1 for the dot */ + p->width = p->width - + ((d > 0. && p->justify == RIGHT) ? 1:0) - + ((p->flags & PF_SPACE) ? 1:0) - +! strlen(tmp) - p->precision - 1; + PAD_RIGHT(p); + PUT_PLUS(d, p, 0.); + PUT_SPACE(d, p, 0.); +--- 983,1003 ---- + if ((p->flags & PF_THOUSANDS) && grouping && (t = groupnum (tmp))) + tmp = t; + ++ if ((*p->pf == 'g' || *p->pf == 'G') && (p->flags & PF_ALTFORM) == 0) ++ { ++ /* smash the trailing zeros unless altform */ ++ for (i = strlen(tmp2) - 1; i >= 0 && tmp2[i] == '0'; i--) ++ tmp2[i] = '\0'; ++ if (tmp2[0] == '\0') ++ p->precision = 0; ++ } ++ + /* calculate the padding. 1 for the dot */ + p->width = p->width - + ((d > 0. && p->justify == RIGHT) ? 1:0) - + ((p->flags & PF_SPACE) ? 1:0) - +! strlen(tmp) - p->precision - +! ((p->precision != 0 || (p->flags & PF_ALTFORM)) ? 1 : 0); /* radix char */ + PAD_RIGHT(p); + PUT_PLUS(d, p, 0.); + PUT_SPACE(d, p, 0.); +*************** +*** 991,1001 **** + if (p->precision != 0 || (p->flags & PF_ALTFORM)) + PUT_CHAR(decpoint, p); /* put the '.' */ + +- if ((*p->pf == 'g' || *p->pf == 'G') && (p->flags & PF_ALTFORM) == 0) +- /* smash the trailing zeros unless altform */ +- for (i = strlen(tmp2) - 1; i >= 0 && tmp2[i] == '0'; i--) +- tmp2[i] = '\0'; +- + for (; *tmp2; tmp2++) + PUT_CHAR(*tmp2, p); /* the fraction */ + +--- 1012,1017 ---- +*************** +*** 1011,1024 **** + char *tmp, *tmp2; + int j, i; + +! if (chkinfnan(p, d, 1) || chkinfnan(p, d, 2)) + return; /* already printed nan or inf */ + + GETLOCALEDATA(decpoint, thoussep, grouping); + DEF_PREC(p); +! j = log_10(d); +! d = d / pow_10(j); /* get the Mantissa */ +! d = ROUND(d, p); + tmp = dtoa(d, p->precision, &tmp2); + + /* 1 for unit, 1 for the '.', 1 for 'e|E', +--- 1027,1045 ---- + char *tmp, *tmp2; + int j, i; + +! if (d != 0 && (chkinfnan(p, d, 1) || chkinfnan(p, d, 2))) + return; /* already printed nan or inf */ + + GETLOCALEDATA(decpoint, thoussep, grouping); + DEF_PREC(p); +! if (d == 0.) +! j = 0; +! else +! { +! j = log_10(d); +! d = d / pow_10(j); /* get the Mantissa */ +! d = ROUND(d, p); +! } + tmp = dtoa(d, p->precision, &tmp2); + + /* 1 for unit, 1 for the '.', 1 for 'e|E', +*************** +*** 1076,1081 **** +--- 1097,1103 ---- + PUT_CHAR(*tmp, p); + tmp++; + } ++ + PAD_LEFT(p); + } + #endif +*************** +*** 1358,1364 **** + STAR_ARGS(data); + DEF_PREC(data); + d = GETDOUBLE(data); +! i = log_10(d); + /* + * for '%g|%G' ANSI: use f if exponent + * is in the range or [-4,p] exclusively +--- 1380,1386 ---- + STAR_ARGS(data); + DEF_PREC(data); + d = GETDOUBLE(data); +! i = (d != 0.) ? log_10(d) : -1; + /* + * for '%g|%G' ANSI: use f if exponent + * is in the range or [-4,p] exclusively +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 4 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 5 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-006 b/src/patches/bash/bash32-006 new file mode 100644 index 0000000..589db9e --- /dev/null +++ b/src/patches/bash/bash32-006 @@ -0,0 +1,45 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-006 + +Bug-Reported-by: ebb9@byu.net +Bug-Reference-ID: 45540862.9030900@byu.net +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-11/msg00017.html + http://lists.gnu.org/archive/html/bug-bash/2006-11/msg00016.html + +Bug-Description: + +In some cases, code that is intended to be used in the presence of multibyte +characters is called when no such characters are present, leading to incorrect +display position calculations and incorrect redisplay. + +Patch: + +*** ../bash-3.2-patched/lib/readline/display.c Thu Sep 14 14:20:12 2006 +--- lib/readline/display.c Mon Nov 13 17:55:57 2006 +*************** +*** 2381,2384 **** +--- 2409,2414 ---- + if (end <= start) + return 0; ++ if (MB_CUR_MAX == 1 || rl_byte_oriented) ++ return (end - start); + + memset (&ps, 0, sizeof (mbstate_t)); +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 5 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 6 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-007 b/src/patches/bash/bash32-007 new file mode 100644 index 0000000..9b86f4a --- /dev/null +++ b/src/patches/bash/bash32-007 @@ -0,0 +1,55 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-007 + +Bug-Reported-by: jidanni@jidanni.org +Bug-Reference-ID: E1Gkg12-00017D-Fm@jidanni.org +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-11/msg00039.html + +Bug-Description: + +When removing the current or previous job from the jobs list, bash incorrectly +resets the current job under some circumstances. + +Patch: + +*** ../bash-3.2-patched/jobs.c Sat Jul 29 16:40:48 2006 +--- jobs.c Fri Nov 24 14:50:01 2006 +*************** +*** 985,990 **** + if (temp == 0) + return; +- if (job_index == js.j_current || job_index == js.j_previous) +- reset_current (); + + if ((dflags & DEL_NOBGPID) == 0) +--- 985,988 ---- +*************** +*** 1029,1032 **** +--- 1027,1033 ---- + else if (jobs[js.j_firstj] == 0 || jobs[js.j_lastj] == 0) + reset_job_indices (); ++ ++ if (job_index == js.j_current || job_index == js.j_previous) ++ reset_current (); + } + +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 6 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 7 + + #endif /* _PATCHLEVEL_H_ */ + + diff --git a/src/patches/bash/bash32-008 b/src/patches/bash/bash32-008 new file mode 100644 index 0000000..7ec07ff --- /dev/null +++ b/src/patches/bash/bash32-008 @@ -0,0 +1,48 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-008 + +Bug-Reported-by: Linda Walsh bash@tlinx.org +Bug-Reference-ID: 456041FD.8000605@tlinx.org +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-11/msg00040.html + +Bug-Description: + +When checking pathnames from the command hash table (e.g., when the `checkhash' +shell option is enabled), a bug causes bash to delete and re-lookup each +command. + +Patch: + +*** ../bash-3.2-patched/findcmd.c Wed Aug 17 16:49:54 2005 +--- findcmd.c Fri Nov 24 10:48:37 2006 +*************** +*** 309,313 **** + { + st = file_status (hashed_file); +! if ((st ^ (FS_EXISTS | FS_EXECABLE)) != 0) + { + phash_remove (pathname); +--- 309,313 ---- + { + st = file_status (hashed_file); +! if ((st & (FS_EXISTS|FS_EXECABLE)) != (FS_EXISTS|FS_EXECABLE)) + { + phash_remove (pathname); +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 7 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 8 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-009 b/src/patches/bash/bash32-009 new file mode 100644 index 0000000..9cfd16e --- /dev/null +++ b/src/patches/bash/bash32-009 @@ -0,0 +1,61 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-009 + +Bug-Reported-by: James.M.Botte@lowes.com +Bug-Reference-ID: BA9FF90F7E5B424998F98EDA9F1F94BE01FA9853@msexchdb01.lowes.com +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-12/msg00000.html + +Bug-Description: + +When using its built-in replacement for snprintf/asprintf, bash does not +treat the %x, %X, and %o format specifiers as unsigned numbers. + +Patch: + +*** ../bash-3.2-patched/lib/sh/snprintf.c Mon Nov 13 08:58:52 2006 +--- lib/sh/snprintf.c Wed Dec 6 11:15:04 2006 +*************** +*** 669,673 **** + + sd = d; /* signed for ' ' padding in base 10 */ +! flags = (*p->pf == 'u' || *p->pf == 'U') ? FL_UNSIGNED : 0; + if (*p->pf == 'X') + flags |= FL_HEXUPPER; +--- 674,679 ---- + + sd = d; /* signed for ' ' padding in base 10 */ +! flags = 0; +! flags = (*p->pf == 'x' || *p->pf == 'X' || *p->pf == 'o' || *p->pf == 'u' || *p->pf == 'U') ? FL_UNSIGNED : 0; + if (*p->pf == 'X') + flags |= FL_HEXUPPER; +*************** +*** 739,743 **** + + sd = d; /* signed for ' ' padding in base 10 */ +! flags = (*p->pf == 'u' || *p->pf == 'U') ? FL_UNSIGNED : 0; + if (*p->pf == 'X') + flags |= FL_HEXUPPER; +--- 745,749 ---- + + sd = d; /* signed for ' ' padding in base 10 */ +! flags = (*p->pf == 'x' || *p->pf == 'X' || *p->pf == 'o' || *p->pf == 'u' || *p->pf == 'U') ? FL_UNSIGNED : 0; + if (*p->pf == 'X') + flags |= FL_HEXUPPER; +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 8 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 9 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-010 b/src/patches/bash/bash32-010 new file mode 100644 index 0000000..88de575 --- /dev/null +++ b/src/patches/bash/bash32-010 @@ -0,0 +1,207 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-010 + +Bug-Reported-by: Ryan Waldron rew@erebor.com +Bug-Reference-ID: 20070119065603.546D011E9C@kansas.erebor.com +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-01/msg00059.html + +Bug-Description: + +The glibc implementation of regcomp/regexec does not allow backslashes to +escape "ordinary" pattern characters when matching. Bash used backslashes +to quote all characters when the pattern argument to the [[ special +command's =~ operator was quoted. This caused the match to fail on Linux +and other systems using GNU libc. + +Patch: + +*** ../bash-3.2.9/pathexp.h Sat Feb 19 17:23:18 2005 +--- pathexp.h Wed Jan 31 22:53:16 2007 +*************** +*** 1,5 **** + /* pathexp.h -- The shell interface to the globbing library. */ + +! /* Copyright (C) 1987-2005 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. +--- 1,5 ---- + /* pathexp.h -- The shell interface to the globbing library. */ + +! /* Copyright (C) 1987-2007 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. +*************** +*** 33,36 **** +--- 33,37 ---- + #define QGLOB_CVTNULL 0x01 /* convert QUOTED_NULL strings to '\0' */ + #define QGLOB_FILENAME 0x02 /* do correct quoting for matching filenames */ ++ #define QGLOB_REGEXP 0x04 /* quote an ERE for regcomp/regexec */ + + #if defined (EXTENDED_GLOB) +*** ../bash-3.2.9/pathexp.c Mon May 6 13:43:05 2002 +--- pathexp.c Mon Feb 26 16:59:23 2007 +*************** +*** 1,5 **** + /* pathexp.c -- The shell interface to the globbing library. */ + +! /* Copyright (C) 1995-2002 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. +--- 1,5 ---- + /* pathexp.c -- The shell interface to the globbing library. */ + +! /* Copyright (C) 1995-2007 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. +*************** +*** 111,114 **** +--- 111,141 ---- + } + ++ /* Return 1 if C is a character that is `special' in a POSIX ERE and needs to ++ be quoted to match itself. */ ++ static inline int ++ ere_char (c) ++ int c; ++ { ++ switch (c) ++ { ++ case '.': ++ case '[': ++ case '\': ++ case '(': ++ case ')': ++ case '*': ++ case '+': ++ case '?': ++ case '{': ++ case '|': ++ case '^': ++ case '$': ++ return 1; ++ default: ++ return 0; ++ } ++ return (0); ++ } ++ + /* PATHNAME can contain characters prefixed by CTLESC; this indicates + that the character is to be quoted. We quote it here in the style +*************** +*** 143,146 **** +--- 170,175 ---- + if ((qflags & QGLOB_FILENAME) && pathname[i+1] == '/') + continue; ++ if ((qflags & QGLOB_REGEXP) && ere_char (pathname[i+1]) == 0) ++ continue; + temp[j++] = '\'; + i++; +*** ../bash-3.2.9/subst.c Tue Nov 7 16:14:41 2006 +--- subst.c Wed Jan 31 23:09:58 2007 +*************** +*** 5,9 **** + beauty, but, hey, you're alright.'' */ + +! /* Copyright (C) 1987-2006 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. +--- 5,9 ---- + beauty, but, hey, you're alright.'' */ + +! /* Copyright (C) 1987-2007 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. +*************** +*** 2647,2655 **** + /* This needs better error handling. */ + /* Expand W for use as an argument to a unary or binary operator in a +! [[...]] expression. If SPECIAL is nonzero, this is the rhs argument + to the != or == operator, and should be treated as a pattern. In +! this case, we quote the string specially for the globbing code. The +! caller is responsible for removing the backslashes if the unquoted +! words is needed later. */ + char * + cond_expand_word (w, special) +--- 2647,2656 ---- + /* This needs better error handling. */ + /* Expand W for use as an argument to a unary or binary operator in a +! [[...]] expression. If SPECIAL is 1, this is the rhs argument + to the != or == operator, and should be treated as a pattern. In +! this case, we quote the string specially for the globbing code. If +! SPECIAL is 2, this is an rhs argument for the =~ operator, and should +! be quoted appropriately for regcomp/regexec. The caller is responsible +! for removing the backslashes if the unquoted word is needed later. */ + char * + cond_expand_word (w, special) +*************** +*** 2659,2662 **** +--- 2660,2664 ---- + char *r, *p; + WORD_LIST *l; ++ int qflags; + + if (w->word == 0 || w->word[0] == '\0') +*************** +*** 2673,2678 **** + else + { + p = string_list (l); +! r = quote_string_for_globbing (p, QGLOB_CVTNULL); + free (p); + } +--- 2675,2683 ---- + else + { ++ qflags = QGLOB_CVTNULL; ++ if (special == 2) ++ qflags |= QGLOB_REGEXP; + p = string_list (l); +! r = quote_string_for_globbing (p, qflags); + free (p); + } +*** ../bash-3.2.9/execute_cmd.c Sat Aug 26 00:23:17 2006 +--- execute_cmd.c Wed Jan 31 23:12:06 2007 +*************** +*** 1,5 **** + /* execute_cmd.c -- Execute a COMMAND structure. */ + +! /* Copyright (C) 1987-2005 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. +--- 1,5 ---- + /* execute_cmd.c -- Execute a COMMAND structure. */ + +! /* Copyright (C) 1987-2007 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. +*************** +*** 2547,2551 **** + if (arg1 == 0) + arg1 = nullstr; +! arg2 = cond_expand_word (cond->right->op, patmatch||rmatch); + if (arg2 == 0) + arg2 = nullstr; +--- 2547,2551 ---- + if (arg1 == 0) + arg1 = nullstr; +! arg2 = cond_expand_word (cond->right->op, rmatch ? 2 : (patmatch ? 1 : 0)); + if (arg2 == 0) + arg2 = nullstr; +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 9 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 10 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-011 b/src/patches/bash/bash32-011 new file mode 100644 index 0000000..c021f52 --- /dev/null +++ b/src/patches/bash/bash32-011 @@ -0,0 +1,138 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-011 + +Bug-Reported-by: Petr Sumbera Petr.Sumbera@Sun.COM +Bug-Reference-ID: 45AF5F4B.1020800@sun.com +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-01/msg00049.html + +Bug-Description: + +Under certain circumstances (loopback mounts), the bash getcwd does not +return correct results. This patch allows the use of the Solaris libc +getcwd even though it doesn't dynamically allocate memory. + +Run `touch configure' to make sure make doesn't try to run autoconf. +Then run configure with whatever options you like. + +Patch: + +*** ../bash-3.2-patched/configure.in Tue Sep 26 11:05:45 2006 +--- configure.in Wed Jan 31 09:48:00 2007 +*************** +*** 6,10 **** + dnl Process this file with autoconf to produce a configure script. + +! # Copyright (C) 1987-2006 Free Software Foundation, Inc. + + # This program is free software; you can redistribute it and/or modify +--- 6,10 ---- + dnl Process this file with autoconf to produce a configure script. + +! # Copyright (C) 1987-2007 Free Software Foundation, Inc. + + # This program is free software; you can redistribute it and/or modify +*************** +*** 992,996 **** + sco3.2*) LOCAL_CFLAGS=-DMUST_UNBLOCK_CHLD ;; + sunos4*) LOCAL_CFLAGS=-DSunOS4 ;; +! solaris2.5*) LOCAL_CFLAGS=-DSunOS5 ;; + lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;; + linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading +--- 992,997 ---- + sco3.2*) LOCAL_CFLAGS=-DMUST_UNBLOCK_CHLD ;; + sunos4*) LOCAL_CFLAGS=-DSunOS4 ;; +! solaris2.5*) LOCAL_CFLAGS="-DSunOS5 -DSOLARIS" ;; +! solaris2*) LOCAL_CFLAGS=-DSOLARIS ;; + lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;; + linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading +*** ../bash-3.2-patched/config-bot.h Tue Sep 12 16:43:04 2006 +--- config-bot.h Tue Mar 6 10:41:31 2007 +*************** +*** 2,6 **** + /* modify settings or make new ones based on what autoconf tells us. */ + +! /* Copyright (C) 1989-2002 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. +--- 2,6 ---- + /* modify settings or make new ones based on what autoconf tells us. */ + +! /* Copyright (C) 1989-2007 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. +*************** +*** 71,77 **** + #endif + +! /* If we have a getcwd(3), but it calls popen(), #undef HAVE_GETCWD so +! the replacement in getcwd.c will be built. */ +! #if defined (HAVE_GETCWD) && defined (GETCWD_BROKEN) + # undef HAVE_GETCWD + #endif +--- 71,79 ---- + #endif + +! /* If we have a getcwd(3), but one that does not dynamically allocate memory, +! #undef HAVE_GETCWD so the replacement in getcwd.c will be built. We do +! not do this on Solaris, because their implementation of loopback mounts +! breaks the traditional file system assumptions that getcwd uses. */ +! #if defined (HAVE_GETCWD) && defined (GETCWD_BROKEN) && !defined (SOLARIS) + # undef HAVE_GETCWD + #endif +*** ../bash-3.2-patched/builtins/common.c Thu Jul 27 09:39:51 2006 +--- builtins/common.c Tue Mar 6 10:43:27 2007 +*************** +*** 1,3 **** +! /* Copyright (C) 1987-2005 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. +--- 1,3 ---- +! /* Copyright (C) 1987-2007 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. +*************** +*** 476,480 **** +--- 476,484 ---- + if (the_current_working_directory == 0) + { ++ #if defined (GETCWD_BROKEN) ++ the_current_working_directory = getcwd (0, PATH_MAX); ++ #else + the_current_working_directory = getcwd (0, 0); ++ #endif + if (the_current_working_directory == 0) + { +*** ../bash-3.2-patched/configure Tue Sep 26 11:06:01 2006 +--- configure Tue Mar 6 10:59:20 2007 +*************** +*** 27317,27321 **** + sco3.2*) LOCAL_CFLAGS=-DMUST_UNBLOCK_CHLD ;; + sunos4*) LOCAL_CFLAGS=-DSunOS4 ;; +! solaris2.5*) LOCAL_CFLAGS=-DSunOS5 ;; + lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;; + linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading +--- 27317,27322 ---- + sco3.2*) LOCAL_CFLAGS=-DMUST_UNBLOCK_CHLD ;; + sunos4*) LOCAL_CFLAGS=-DSunOS4 ;; +! solaris2.5*) LOCAL_CFLAGS="-DSunOS5 -DSOLARIS" ;; +! solaris2*) LOCAL_CFLAGS=-DSOLARIS ;; + lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;; + linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 10 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 11 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-012 b/src/patches/bash/bash32-012 new file mode 100644 index 0000000..8d669d2 --- /dev/null +++ b/src/patches/bash/bash32-012 @@ -0,0 +1,96 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-012 + +Bug-Reported-by: John Wyman JohnWyman@celink.com +Bug-Reference-ID: 5E7DEFC094C35044B87FAE761D9F0EE20143A3B7@exchange2k.celink.com +Bug-Reference-URL: + +Bug-Description: + +Some systems (AIX 4.x) don't implement the PRI_xxx macros correctly, +causing syntax errors when attempting to compile bash on those systems. +This patch adds support for the PRI_MACROS_BROKEN define. + +You will need to re-run `configure' after applying the patch. Run +`touch configure' so make doesn't try to run autoconf. + +Patch: + +*** ../bash-3.2.11/config.h.in Tue Sep 12 16:00:54 2006 +--- config.h.in Tue Mar 6 11:17:55 2007 +*************** +*** 1,5 **** + /* config.h -- Configuration file for bash. */ + +! /* Copyright (C) 1987-2006 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. +--- 1,5 ---- + /* config.h -- Configuration file for bash. */ + +! /* Copyright (C) 1987-2007 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. +*************** +*** 414,417 **** +--- 414,419 ---- + #undef HAVE_DECL_STRTOLD + ++ #undef PRI_MACROS_BROKEN ++ + #undef STRTOLD_BROKEN + +*************** +*** 1007,1010 **** +--- 1009,1015 ---- + #undef HAVE_DCGETTEXT + ++ /* Define if you have the `localeconv' function. */ ++ #undef HAVE_LOCALECONV ++ + /* Define if your system has a working `malloc' function. */ + /* #undef HAVE_MALLOC */ +*** ../bash-3.2.11/builtins/printf.def Mon Nov 13 08:58:52 2006 +--- builtins/printf.def Sun Feb 4 13:58:59 2007 +*************** +*** 2,6 **** + It implements the builtin "printf" in Bash. + +! Copyright (C) 1997-2005 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. +--- 2,6 ---- + It implements the builtin "printf" in Bash. + +! Copyright (C) 1997-2007 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. +*************** +*** 71,74 **** +--- 71,78 ---- + #include "common.h" + ++ #if defined (PRI_MACROS_BROKEN) ++ # undef PRIdMAX ++ #endif ++ + #if !defined (PRIdMAX) + # if HAVE_LONG_LONG +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 11 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 12 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-013 b/src/patches/bash/bash32-013 new file mode 100644 index 0000000..d47bc1a --- /dev/null +++ b/src/patches/bash/bash32-013 @@ -0,0 +1,65 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-013 + +Bug-Reported-by: Magnus Svensson msvensson@mysql.com +Bug-Reference-ID: 45BDC44D.80609@mysql.com +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2007-01/msg00002.html + +Bug-Description: + +Readline neglects to reallocate the array it uses to keep track of wrapped +screen lines when increasing its size. This will eventually result in +segmentation faults when given sufficiently long input. + +Patch: + +*** ../bash-3.2-patched/lib/readline/display.c Thu Sep 14 14:20:12 2006 +--- lib/readline/display.c Fri Feb 2 20:23:17 2007 +*************** +*** 561,574 **** +--- 561,586 ---- + wrap_offset = prompt_invis_chars_first_line = 0; + } + ++ #if defined (HANDLE_MULTIBYTE) + #define CHECK_INV_LBREAKS() \ + do { \ + if (newlines >= (inv_lbsize - 2)) \ + { \ + inv_lbsize *= 2; \ + inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \ ++ _rl_wrapped_line = (int *)xrealloc (_rl_wrapped_line, inv_lbsize * sizeof (int)); \ + } \ + } while (0) ++ #else ++ #define CHECK_INV_LBREAKS() \ ++ do { \ ++ if (newlines >= (inv_lbsize - 2)) \ ++ { \ ++ inv_lbsize *= 2; \ ++ inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \ ++ } \ ++ } while (0) ++ #endif /* HANDLE_MULTIBYTE */ + + #if defined (HANDLE_MULTIBYTE) + #define CHECK_LPOS() \ + +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 12 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 13 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-014 b/src/patches/bash/bash32-014 new file mode 100644 index 0000000..b706505 --- /dev/null +++ b/src/patches/bash/bash32-014 @@ -0,0 +1,307 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-014 + +Bug-Reported-by: Brett Stahlman brettstahlman@comcast.net +Bug-Reference-ID: 000701c72d29$a227e0e0$5ec7cf47@computerroom +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-12/msg00065.html + +Bug-Description: + +Bash mishandles word splitting under certain circumstances when IFS is +null (IFS=). Constructs affected include ${param/pat/sub} and others +when expanding arrays (array[@]). + +Patch: + +*** ../bash-3.2-patched/array.c Wed Jun 1 16:39:22 2005 +--- array.c Mon Jan 15 22:58:00 2007 +*************** +*** 121,125 **** + } + +- #ifdef INCLUDE_UNUSED + /* + * Make and return a new array composed of the elements in array A from +--- 121,124 ---- +*************** +*** 142,146 **** + n = array_create_element (element_index(p), element_value(p)); + ADD_BEFORE(a->head, n); +! mi = element_index(ae); + } + a->num_elements = i; +--- 141,145 ---- + n = array_create_element (element_index(p), element_value(p)); + ADD_BEFORE(a->head, n); +! mi = element_index(n); + } + a->num_elements = i; +*************** +*** 148,152 **** + return a; + } +- #endif + + /* +--- 147,150 ---- +*************** +*** 301,304 **** +--- 299,319 ---- + } + ++ ARRAY * ++ array_quote_escapes(array) ++ ARRAY *array; ++ { ++ ARRAY_ELEMENT *a; ++ char *t; ++ ++ if (array == 0 || array_head(array) == 0 || array_empty(array)) ++ return (ARRAY *)NULL; ++ for (a = element_forw(array->head); a != array->head; a = element_forw(a)) { ++ t = quote_escapes (a->value); ++ FREE(a->value); ++ a->value = t; ++ } ++ return array; ++ } ++ + /* + * Return a string whose elements are the members of array A beginning at +*************** +*** 312,318 **** + int starsub, quoted; + { + ARRAY_ELEMENT *h, *p; + arrayind_t i; +! char *ifs, sep[2]; + + p = a ? array_head (a) : 0; +--- 327,334 ---- + int starsub, quoted; + { ++ ARRAY *a2; + ARRAY_ELEMENT *h, *p; + arrayind_t i; +! char *ifs, sep[2], *t; + + p = a ? array_head (a) : 0; +*************** +*** 337,340 **** +--- 353,363 ---- + ; + ++ a2 = array_slice(a, h, p); ++ ++ if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) ++ array_quote(a2); ++ else ++ array_quote_escapes(a2); ++ + if (starsub && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))) { + ifs = getifs(); +*************** +*** 344,348 **** + sep[1] = '\0'; + +! return (array_to_string_internal (h, p, sep, quoted)); + } + +--- 367,374 ---- + sep[1] = '\0'; + +! t = array_to_string (a2, sep, 0); +! array_dispose(a2); +! +! return t; + } + +*************** +*** 368,372 **** + + if (mflags & MATCH_QUOTED) +! array_quote (a2); + if (mflags & MATCH_STARSUB) { + ifs = getifs(); +--- 394,400 ---- + + if (mflags & MATCH_QUOTED) +! array_quote(a2); +! else +! array_quote_escapes(a2); + if (mflags & MATCH_STARSUB) { + ifs = getifs(); +*** ../bash-3.2-patched/array.h Sun Jun 1 15:50:30 2003 +--- array.h Mon Jan 15 22:35:35 2007 +*************** +*** 56,59 **** +--- 56,60 ---- + extern int array_shift_element __P((ARRAY *, char *)); + extern ARRAY *array_quote __P((ARRAY *)); ++ extern ARRAY *array_quote_escapes __P((ARRAY *)); + + extern char *array_subrange __P((ARRAY *, arrayind_t, arrayind_t, int, int)); +*** ../bash-3.2-patched/subst.c Fri Mar 2 16:20:50 2007 +--- subst.c Tue Mar 6 11:40:55 2007 +*************** +*** 1888,1892 **** +--- 1889,1899 ---- + #endif + ++ /* XXX -- why call quote_list if ifs == 0? we can get away without doing ++ it now that quote_escapes quotes spaces */ ++ #if 0 + tlist = ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || (ifs && *ifs == 0)) ++ #else ++ tlist = (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ++ #endif + ? quote_list (list) + : list_quote_escapes (list); +*************** +*** 2922,2926 **** + /* Quote escape characters in string s, but no other characters. This is + used to protect CTLESC and CTLNUL in variable values from the rest of +! the word expansion process after the variable is expanded. */ + char * + quote_escapes (string) +--- 2935,2944 ---- + /* Quote escape characters in string s, but no other characters. This is + used to protect CTLESC and CTLNUL in variable values from the rest of +! the word expansion process after the variable is expanded. If IFS is +! null, we quote spaces as well, just in case we split on spaces later +! (in the case of unquoted $@, we will eventually attempt to split the +! entire word on spaces). Corresponding code exists in dequote_escapes. +! Even if we don't end up splitting on spaces, quoting spaces is not a +! problem. */ + char * + quote_escapes (string) +*************** +*** 2930,2933 **** +--- 2948,2952 ---- + size_t slen; + char *result, *send; ++ int quote_spaces; + DECLARE_MBSTATE; + +*************** +*** 2935,2938 **** +--- 2954,2958 ---- + send = string + slen; + ++ quote_spaces = (ifs_value && *ifs_value == 0); + t = result = (char *)xmalloc ((slen * 2) + 1); + s = string; +*************** +*** 2940,2944 **** + while (*s) + { +! if (*s == CTLESC || *s == CTLNUL) + *t++ = CTLESC; + COPY_CHAR_P (t, s, send); +--- 2960,2964 ---- + while (*s) + { +! if (*s == CTLESC || *s == CTLNUL || (quote_spaces && *s == ' ')) + *t++ = CTLESC; + COPY_CHAR_P (t, s, send); +*************** +*** 2982,2985 **** +--- 3002,3006 ---- + size_t slen; + char *result, *send; ++ int quote_spaces; + DECLARE_MBSTATE; + +*************** +*** 2996,3002 **** + return (strcpy (result, s)); + + while (*s) + { +! if (*s == CTLESC && (s[1] == CTLESC || s[1] == CTLNUL)) + { + s++; +--- 3017,3024 ---- + return (strcpy (result, s)); + ++ quote_spaces = (ifs_value && *ifs_value == 0); + while (*s) + { +! if (*s == CTLESC && (s[1] == CTLESC || s[1] == CTLNUL || (quote_spaces && s[1] == ' '))) + { + s++; +*************** +*** 4462,4466 **** + RESIZE_MALLOCED_BUFFER (istring, istring_index, 2, istring_size, DEFAULT_ARRAY_SIZE); + +! if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || c == CTLESC || c == CTLNUL) + istring[istring_index++] = CTLESC; + +--- 4498,4510 ---- + RESIZE_MALLOCED_BUFFER (istring, istring_index, 2, istring_size, DEFAULT_ARRAY_SIZE); + +! /* This is essentially quote_string inline */ +! if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) /* || c == CTLESC || c == CTLNUL */) +! istring[istring_index++] = CTLESC; +! /* Escape CTLESC and CTLNUL in the output to protect those characters +! from the rest of the word expansions (word splitting and globbing.) +! This is essentially quote_escapes inline. */ +! else if (c == CTLESC) +! istring[istring_index++] = CTLESC; +! else if (c == CTLNUL || (c == ' ' && (ifs_value && *ifs_value == 0))) + istring[istring_index++] = CTLESC; + +*************** +*** 5552,5555 **** +--- 5610,5616 ---- + rely on array_subrange to understand how to deal with them). */ + tt = array_subrange (array_cell (v), e1, e2, starsub, quoted); ++ #if 0 ++ /* array_subrange now calls array_quote_escapes as appropriate, so the ++ caller no longer needs to. */ + if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) == 0) + { +*************** +*** 5558,5561 **** +--- 5619,5623 ---- + } + else ++ #endif + temp = tt; + break; +*************** +*** 5808,5811 **** +--- 5870,5876 ---- + case VT_ARRAYVAR: + temp = array_patsub (array_cell (v), p, rep, mflags); ++ #if 0 ++ /* Don't need to do this anymore; array_patsub calls array_quote_escapes ++ as appropriate before adding the space separators. */ + if (temp && (mflags & MATCH_QUOTED) == 0) + { +*************** +*** 5814,5817 **** +--- 5879,5883 ---- + temp = tt; + } ++ #endif + break; + #endif +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 13 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 14 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-015 b/src/patches/bash/bash32-015 new file mode 100644 index 0000000..d887f6e --- /dev/null +++ b/src/patches/bash/bash32-015 @@ -0,0 +1,95 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-015 + +Bug-Reported-by: +Bug-Reference-ID: +Bug-Reference-URL: + +Bug-Description: + +Under certain circumstances, when using FIFOs for process substitution, +bash fails to unlink the FIFOs. This leaves open file descriptors that +can cause the shell to hang and litters the file system. + +Patch: + +*** ../bash-3.2-patched/execute_cmd.c Fri Mar 2 16:20:50 2007 +--- execute_cmd.c Wed Jan 31 23:12:06 2007 +*************** +*** 3051,3054 **** +--- 3051,3059 ---- + command_line = savestring (the_printed_command_except_trap); + ++ #if defined (PROCESS_SUBSTITUTION) ++ if ((subshell_environment & SUBSHELL_COMSUB) && (simple_command->flags & CMD_NO_FORK) && fifos_pending() > 0) ++ simple_command->flags &= ~CMD_NO_FORK; ++ #endif ++ + execute_disk_command (words, simple_command->redirects, command_line, + pipe_in, pipe_out, async, fds_to_close, +*** ../bash-3.2-patched/subst.c Fri Mar 2 16:20:50 2007 +--- subst.c Tue Mar 6 11:40:55 2007 +*************** +*** 4129,4132 **** +--- 4151,4160 ---- + } + ++ int ++ fifos_pending () ++ { ++ return nfifo; ++ } ++ + static char * + make_named_pipe () +*************** +*** 4178,4181 **** +--- 4206,4215 ---- + } + ++ int ++ fifos_pending () ++ { ++ return 0; /* used for cleanup; not needed with /dev/fd */ ++ } ++ + void + unlink_fifo_list () +*************** +*** 4671,4674 **** +--- 4719,4725 ---- + last_command_exit_value = rc; + rc = run_exit_trap (); ++ #if defined (PROCESS_SUBSTITUTION) ++ unlink_fifo_list (); ++ #endif + exit (rc); + } +*** ../bash-3.2-patched/subst.h Tue Sep 19 08:34:41 2006 +--- subst.h Wed Jan 10 09:46:47 2007 +*************** +*** 223,226 **** +--- 223,227 ---- + extern char *pat_subst __P((char *, char *, char *, int)); + ++ extern int fifos_pending __P((void)); + extern void unlink_fifo_list __P((void)); + +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 14 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 15 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-016 b/src/patches/bash/bash32-016 new file mode 100644 index 0000000..a0f065a --- /dev/null +++ b/src/patches/bash/bash32-016 @@ -0,0 +1,52 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-016 + +Bug-Reported-by: Peter Volkov torre_cremata@mail.ru +Bug-Reference-ID: 1171795523.8021.18.camel@localhost +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-02/msg00054.html + +Bug-Description: + +When moving the cursor, bash sometimes misplaces the cursor when the prompt +contains two or more multibyte characters. The particular circumstance that +uncovered the problem was having the (multibyte) current directory name in +the prompt string. + +Patch: + +*** ../bash-3.2/lib/readline/display.c Fri Jan 19 13:34:50 2007 +--- lib/readline/display.c Sat Mar 10 17:25:44 2007 +*************** +*** 1745,1749 **** + { + dpos = _rl_col_width (data, 0, new); +! if (dpos > prompt_last_invisible) /* XXX - don't use woff here */ + { + dpos -= woff; +--- 1745,1752 ---- + { + dpos = _rl_col_width (data, 0, new); +! /* Use NEW when comparing against the last invisible character in the +! prompt string, since they're both buffer indices and DPOS is a +! desired display position. */ +! if (new > prompt_last_invisible) /* XXX - don't use woff here */ + { + dpos -= woff; +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 15 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 16 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-017 b/src/patches/bash/bash32-017 new file mode 100644 index 0000000..99e5e70 --- /dev/null +++ b/src/patches/bash/bash32-017 @@ -0,0 +1,85 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-017 + +Bug-Reported-by: Peter Volkov torre_cremata@mail.ru +Bug-Reference-ID: 1173636022.7039.36.camel@localhost +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-03/msg00039.html + +Bug-Description: + +When restoring the original prompt after finishing an incremental search, +bash sometimes places the cursor incorrectly if the primary prompt contains +invisible characters. + +Patch: + +*** ../bash-3.2.16/lib/readline/display.c Fri Apr 20 13:30:16 2007 +--- lib/readline/display.c Fri Apr 20 15:17:01 2007 +*************** +*** 1599,1604 **** + if (temp > 0) + { + _rl_output_some_chars (nfd, temp); +! _rl_last_c_pos += _rl_col_width (nfd, 0, temp);; + } + } +--- 1599,1618 ---- + if (temp > 0) + { ++ /* If nfd begins at the prompt, or before the invisible ++ characters in the prompt, we need to adjust _rl_last_c_pos ++ in a multibyte locale to account for the wrap offset and ++ set cpos_adjusted accordingly. */ + _rl_output_some_chars (nfd, temp); +! if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) +! { +! _rl_last_c_pos += _rl_col_width (nfd, 0, temp); +! if (current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible)) +! { +! _rl_last_c_pos -= wrap_offset; +! cpos_adjusted = 1; +! } +! } +! else +! _rl_last_c_pos += temp; + } + } +*************** +*** 1608,1613 **** +--- 1622,1639 ---- + if (temp > 0) + { ++ /* If nfd begins at the prompt, or before the invisible ++ characters in the prompt, we need to adjust _rl_last_c_pos ++ in a multibyte locale to account for the wrap offset and ++ set cpos_adjusted accordingly. */ + _rl_output_some_chars (nfd, temp); + _rl_last_c_pos += col_temp; /* XXX */ ++ if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) ++ { ++ if (current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible)) ++ { ++ _rl_last_c_pos -= wrap_offset; ++ cpos_adjusted = 1; ++ } ++ } + } + lendiff = (oe - old) - (ne - new); +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 16 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 17 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-018 b/src/patches/bash/bash32-018 new file mode 100644 index 0000000..d729aaf --- /dev/null +++ b/src/patches/bash/bash32-018 @@ -0,0 +1,98 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-018 + +Bug-Reported-by: osicka@post.cz +Bug-Reference-ID: 228.177-19682-1132061412-1179356692@post.cz +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-05/msg00061.html + +Bug-Description: + +In certain cases, bash can lose the saved status of a background job, though +it should still be reported by `wait'. Bash can also loop infinitely after +creating and waiting for 4096 jobs. + +Patch: + +*** ../bash-20070510/jobs.c Thu Mar 8 16:05:50 2007 +--- jobs.c Fri May 18 11:40:14 2007 +*************** +*** 784,792 **** + { + old = js.j_firstj++; + while (js.j_firstj != old) + { + if (js.j_firstj >= js.j_jobslots) + js.j_firstj = 0; +! if (jobs[js.j_firstj]) + break; + js.j_firstj++; +--- 784,794 ---- + { + old = js.j_firstj++; ++ if (old >= js.j_jobslots) ++ old = js.j_jobslots - 1; + while (js.j_firstj != old) + { + if (js.j_firstj >= js.j_jobslots) + js.j_firstj = 0; +! if (jobs[js.j_firstj] || js.j_firstj == old) /* needed if old == 0 */ + break; + js.j_firstj++; +*************** +*** 798,806 **** + { + old = js.j_lastj--; + while (js.j_lastj != old) + { + if (js.j_lastj < 0) + js.j_lastj = js.j_jobslots - 1; +! if (jobs[js.j_lastj]) + break; + js.j_lastj--; +--- 800,810 ---- + { + old = js.j_lastj--; ++ if (old < 0) ++ old = 0; + while (js.j_lastj != old) + { + if (js.j_lastj < 0) + js.j_lastj = js.j_jobslots - 1; +! if (jobs[js.j_lastj] || js.j_lastj == old) /* needed if old == js.j_jobslots */ + break; + js.j_lastj--; +*************** +*** 964,968 **** + realloc_jobs_list (); + +! return (js.j_lastj); + } + +--- 975,983 ---- + realloc_jobs_list (); + +! #ifdef DEBUG +! itrace("compact_jobs_list: returning %d", (js.j_lastj || jobs[js.j_lastj]) ? js.j_lastj + 1 : 0); +! #endif +! +! return ((js.j_lastj || jobs[js.j_lastj]) ? js.j_lastj + 1 : 0); + } + +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 17 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 18 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-019 b/src/patches/bash/bash32-019 new file mode 100644 index 0000000..647bd1f --- /dev/null +++ b/src/patches/bash/bash32-019 @@ -0,0 +1,343 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-019 + +Bug-Reported-by: Thomas Loeber ifp@loeber1.de +Bug-Reference-ID: 200703082223.08919.ifp@loeber1.de +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-03/msg00036.html + +Bug-Description: + +When rl_read_key returns -1, indicating that bash's controlling terminal +has been invalidated for some reason (e.g., receiving a SIGHUP), the error +status was not reported correctly to the caller. This could cause input +loops. + +Patch: + +*** ../bash-3.2-patched/lib/readline/complete.c Fri Jul 28 11:35:49 2006 +--- lib/readline/complete.c Tue Mar 13 08:50:16 2007 +*************** +*** 429,433 **** + if (c == 'n' || c == 'N' || c == RUBOUT) + return (0); +! if (c == ABORT_CHAR) + _rl_abort_internal (); + if (for_pager && (c == NEWLINE || c == RETURN)) +--- 440,444 ---- + if (c == 'n' || c == 'N' || c == RUBOUT) + return (0); +! if (c == ABORT_CHAR || c < 0) + _rl_abort_internal (); + if (for_pager && (c == NEWLINE || c == RETURN)) +*** ../bash-3.2-patched/lib/readline/input.c Wed Aug 16 15:15:16 2006 +--- lib/readline/input.c Wed May 2 16:07:59 2007 +*************** +*** 514,518 **** + int size; + { +! int mb_len = 0; + size_t mbchar_bytes_length; + wchar_t wc; +--- 522,526 ---- + int size; + { +! int mb_len, c; + size_t mbchar_bytes_length; + wchar_t wc; +*************** +*** 521,531 **** + memset(&ps, 0, sizeof (mbstate_t)); + memset(&ps_back, 0, sizeof (mbstate_t)); +! + while (mb_len < size) + { + RL_SETSTATE(RL_STATE_MOREINPUT); +! mbchar[mb_len++] = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); + + mbchar_bytes_length = mbrtowc (&wc, mbchar, mb_len, &ps); + if (mbchar_bytes_length == (size_t)(-1)) +--- 529,545 ---- + memset(&ps, 0, sizeof (mbstate_t)); + memset(&ps_back, 0, sizeof (mbstate_t)); +! +! mb_len = 0; + while (mb_len < size) + { + RL_SETSTATE(RL_STATE_MOREINPUT); +! c = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); + ++ if (c < 0) ++ break; ++ ++ mbchar[mb_len++] = c; ++ + mbchar_bytes_length = mbrtowc (&wc, mbchar, mb_len, &ps); + if (mbchar_bytes_length == (size_t)(-1)) +*************** +*** 565,569 **** + c = first; + memset (mb, 0, mlen); +! for (i = 0; i < mlen; i++) + { + mb[i] = (char)c; +--- 579,583 ---- + c = first; + memset (mb, 0, mlen); +! for (i = 0; c >= 0 && i < mlen; i++) + { + mb[i] = (char)c; +*** ../bash-3.2-patched/lib/readline/isearch.c Mon Dec 26 17:18:53 2005 +--- lib/readline/isearch.c Fri Mar 9 14:30:59 2007 +*************** +*** 328,333 **** + + f = (rl_command_func_t *)NULL; +! +! /* Translate the keys we do something with to opcodes. */ + if (c >= 0 && _rl_keymap[c].type == ISFUNC) + { +--- 328,340 ---- + + f = (rl_command_func_t *)NULL; +! +! if (c < 0) +! { +! cxt->sflags |= SF_FAILED; +! cxt->history_pos = cxt->last_found_line; +! return -1; +! } +! +! /* Translate the keys we do something with to opcodes. */ + if (c >= 0 && _rl_keymap[c].type == ISFUNC) + { +*** ../bash-3.2-patched/lib/readline/misc.c Mon Dec 26 17:20:46 2005 +--- lib/readline/misc.c Fri Mar 9 14:44:11 2007 +*************** +*** 147,150 **** +--- 147,152 ---- + rl_clear_message (); + RL_UNSETSTATE(RL_STATE_NUMERICARG); ++ if (key < 0) ++ return -1; + return (_rl_dispatch (key, _rl_keymap)); + } +*** ../bash-3.2-patched/lib/readline/readline.c Wed Aug 16 15:00:36 2006 +--- lib/readline/readline.c Fri Mar 9 14:47:24 2007 +*************** +*** 646,649 **** +--- 669,677 ---- + { + nkey = _rl_subseq_getchar (cxt->okey); ++ if (nkey < 0) ++ { ++ _rl_abort_internal (); ++ return -1; ++ } + r = _rl_dispatch_subseq (nkey, cxt->dmap, cxt->subseq_arg); + cxt->flags |= KSEQ_DISPATCHED; +*** ../bash-3.2-patched/lib/readline/text.c Fri Jul 28 11:55:27 2006 +--- lib/readline/text.c Sun Mar 25 13:41:38 2007 +*************** +*** 858,861 **** +--- 864,870 ---- + RL_UNSETSTATE(RL_STATE_MOREINPUT); + ++ if (c < 0) ++ return -1; ++ + #if defined (HANDLE_SIGNALS) + if (RL_ISSTATE (RL_STATE_CALLBACK) == 0) +*************** +*** 1521,1524 **** +--- 1530,1536 ---- + mb_len = _rl_read_mbchar (mbchar, MB_LEN_MAX); + ++ if (mb_len <= 0) ++ return -1; ++ + if (count < 0) + return (_rl_char_search_internal (-count, bdir, mbchar, mb_len)); +*************** +*** 1537,1540 **** +--- 1549,1555 ---- + RL_UNSETSTATE(RL_STATE_MOREINPUT); + ++ if (c < 0) ++ return -1; ++ + if (count < 0) + return (_rl_char_search_internal (-count, bdir, c)); +*** ../bash-3.2-patched/lib/readline/vi_mode.c Sat Jul 29 16:42:28 2006 +--- lib/readline/vi_mode.c Fri Mar 9 15:02:11 2007 +*************** +*** 887,890 **** +--- 887,897 ---- + c = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); ++ ++ if (c < 0) ++ { ++ *nextkey = 0; ++ return -1; ++ } ++ + *nextkey = c; + +*************** +*** 903,906 **** +--- 910,918 ---- + c = rl_read_key (); /* real command */ + RL_UNSETSTATE(RL_STATE_MOREINPUT); ++ if (c < 0) ++ { ++ *nextkey = 0; ++ return -1; ++ } + *nextkey = c; + } +*************** +*** 1225,1236 **** + _rl_callback_generic_arg *data; + { + #if defined (HANDLE_MULTIBYTE) +! _rl_vi_last_search_mblen = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX); + #else + RL_SETSTATE(RL_STATE_MOREINPUT); +! _rl_vi_last_search_char = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); + #endif + + _rl_callback_func = 0; + _rl_want_redisplay = 1; +--- 1243,1262 ---- + _rl_callback_generic_arg *data; + { ++ int c; + #if defined (HANDLE_MULTIBYTE) +! c = _rl_vi_last_search_mblen = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX); + #else + RL_SETSTATE(RL_STATE_MOREINPUT); +! c = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); + #endif + ++ if (c <= 0) ++ return -1; ++ ++ #if !defined (HANDLE_MULTIBYTE) ++ _rl_vi_last_search_char = c; ++ #endif ++ + _rl_callback_func = 0; + _rl_want_redisplay = 1; +*************** +*** 1248,1251 **** +--- 1274,1278 ---- + int count, key; + { ++ int c; + #if defined (HANDLE_MULTIBYTE) + static char *target; +*************** +*** 1294,1302 **** + { + #if defined (HANDLE_MULTIBYTE) +! _rl_vi_last_search_mblen = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX); + #else + RL_SETSTATE(RL_STATE_MOREINPUT); +! _rl_vi_last_search_char = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); + #endif + } +--- 1321,1335 ---- + { + #if defined (HANDLE_MULTIBYTE) +! c = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX); +! if (c <= 0) +! return -1; +! _rl_vi_last_search_mblen = c; + #else + RL_SETSTATE(RL_STATE_MOREINPUT); +! c = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); ++ if (c < 0) ++ return -1; ++ _rl_vi_last_search_char = c; + #endif + } +*************** +*** 1468,1471 **** +--- 1501,1507 ---- + RL_UNSETSTATE(RL_STATE_MOREINPUT); + ++ if (c < 0) ++ return -1; ++ + #if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) +*************** +*** 1486,1489 **** +--- 1522,1528 ---- + _rl_vi_last_replacement = c = _rl_vi_callback_getchar (mb, MB_LEN_MAX); + ++ if (c < 0) ++ return -1; ++ + _rl_callback_func = 0; + _rl_want_redisplay = 1; +*************** +*** 1517,1520 **** +--- 1556,1562 ---- + _rl_vi_last_replacement = c = _rl_vi_callback_getchar (mb, MB_LEN_MAX); + ++ if (c < 0) ++ return -1; ++ + return (_rl_vi_change_char (count, c, mb)); + } +*************** +*** 1651,1655 **** + RL_UNSETSTATE(RL_STATE_MOREINPUT); + +! if (ch < 'a' || ch > 'z') + { + rl_ding (); +--- 1693,1697 ---- + RL_UNSETSTATE(RL_STATE_MOREINPUT); + +! if (ch < 0 || ch < 'a' || ch > 'z') /* make test against 0 explicit */ + { + rl_ding (); +*************** +*** 1703,1707 **** + return 0; + } +! else if (ch < 'a' || ch > 'z') + { + rl_ding (); +--- 1745,1749 ---- + return 0; + } +! else if (ch < 0 || ch < 'a' || ch > 'z') /* make test against 0 explicit */ + { + rl_ding (); +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 18 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 19 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-020 b/src/patches/bash/bash32-020 new file mode 100644 index 0000000..8c7e328 --- /dev/null +++ b/src/patches/bash/bash32-020 @@ -0,0 +1,183 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-020 + +Bug-Reported-by: Ian A Watson WATSON_IAN_A@LILLY.COM +Bug-Reference-ID: OFEC551808.69D02C7F-ON8525729A.0045708D-8525729A.0046150B@EliLilly.lilly.com +Bug-Reference-URL: + +Bug-Description: + +In some cases of error processing, a jump back to the top-level processing +loop from a builtin command would leave the shell in an inconsistent state. + +Patch: + +*** ../bash-3.2-patched/sig.c Wed Jan 25 14:57:59 2006 +--- sig.c Sat Mar 10 11:11:30 2007 +*************** +*** 351,354 **** +--- 351,373 ---- + #undef XHANDLER + ++ /* Run some of the cleanups that should be performed when we run ++ jump_to_top_level from a builtin command context. XXX - might want to ++ also call reset_parser here. */ ++ void ++ top_level_cleanup () ++ { ++ /* Clean up string parser environment. */ ++ while (parse_and_execute_level) ++ parse_and_execute_cleanup (); ++ ++ #if defined (PROCESS_SUBSTITUTION) ++ unlink_fifo_list (); ++ #endif /* PROCESS_SUBSTITUTION */ ++ ++ run_unwind_protects (); ++ loop_level = continuing = breaking = 0; ++ return_catch_flag = 0; ++ } ++ + /* What to do when we've been interrupted, and it is safe to handle it. */ + void +*** ../bash-3.2-patched/sig.h Wed Jan 25 14:50:27 2006 +--- sig.h Sat Mar 10 11:14:18 2007 +*************** +*** 122,125 **** +--- 122,126 ---- + extern void initialize_terminating_signals __P((void)); + extern void reset_terminating_signals __P((void)); ++ extern void top_level_cleanup __P((void)); + extern void throw_to_top_level __P((void)); + extern void jump_to_top_level __P((int)) __attribute__((__noreturn__)); +*** ../bash-3.2-patched/builtins/common.c Tue Apr 3 16:47:13 2007 +--- builtins/common.c Mon Apr 30 15:01:33 2007 +*************** +*** 132,135 **** +--- 132,136 ---- + { + builtin_error (_("too many arguments")); ++ top_level_cleanup (); + jump_to_top_level (DISCARD); + } +*************** +*** 396,400 **** + throw_to_top_level (); + else +! jump_to_top_level (DISCARD); + } + no_args (list->next); +--- 410,417 ---- + throw_to_top_level (); + else +! { +! top_level_cleanup (); +! jump_to_top_level (DISCARD); +! } + } + no_args (list->next); +*** ../bash-3.2-patched/subst.c Tue Apr 3 16:47:19 2007 +--- subst.c Tue Jul 17 09:45:11 2007 +*************** +*** 1279,1283 **** + if (no_longjmp_on_fatal_error == 0) + { /* { */ +! report_error ("bad substitution: no closing `%s' in %s", "}", string); + last_command_exit_value = EXECUTION_FAILURE; + exp_jump_to_top_level (DISCARD); +--- 1290,1294 ---- + if (no_longjmp_on_fatal_error == 0) + { /* { */ +! report_error (_("bad substitution: no closing `%s' in %s"), "}", string); + last_command_exit_value = EXECUTION_FAILURE; + exp_jump_to_top_level (DISCARD); +*************** +*** 7662,7665 **** +--- 7706,7711 ---- + expand_no_split_dollar_star = 0; /* XXX */ + expanding_redir = 0; ++ ++ top_level_cleanup (); /* from sig.c */ + + jump_to_top_level (v); +*************** +*** 7880,7884 **** + { + report_error (_("no match: %s"), tlist->word->word); +! jump_to_top_level (DISCARD); + } + else if (allow_null_glob_expansion == 0) +--- 7927,7931 ---- + { + report_error (_("no match: %s"), tlist->word->word); +! exp_jump_to_top_level (DISCARD); + } + else if (allow_null_glob_expansion == 0) +*** ../bash-3.2-patched/arrayfunc.c Thu Jul 27 09:37:59 2006 +--- arrayfunc.c Thu May 31 11:55:46 2007 +*************** +*** 619,622 **** +--- 619,624 ---- + { + last_command_exit_value = EXECUTION_FAILURE; ++ ++ top_level_cleanup (); + jump_to_top_level (DISCARD); + } +*** ../bash-3.2-patched/expr.c Wed Dec 28 17:47:03 2005 +--- expr.c Tue Apr 24 14:17:59 2007 +*************** +*** 930,933 **** +--- 930,934 ---- + { + expr_unwind (); ++ top_level_cleanup (); + jump_to_top_level (DISCARD); + } +*** ../bash-3.2-patched/variables.c Fri Sep 8 13:33:32 2006 +--- variables.c Tue Jul 17 09:54:59 2007 +*************** +*** 1822,1830 **** + lval = evalexp (oval, &expok); /* ksh93 seems to do this */ + if (expok == 0) +! jump_to_top_level (DISCARD); + } + rval = evalexp (value, &expok); + if (expok == 0) +! jump_to_top_level (DISCARD); + if (flags & ASS_APPEND) + rval += lval; +--- 1855,1869 ---- + lval = evalexp (oval, &expok); /* ksh93 seems to do this */ + if (expok == 0) +! { +! top_level_cleanup (); +! jump_to_top_level (DISCARD); +! } + } + rval = evalexp (value, &expok); + if (expok == 0) +! { +! top_level_cleanup (); +! jump_to_top_level (DISCARD); +! } + if (flags & ASS_APPEND) + rval += lval; +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 19 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 20 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-021 b/src/patches/bash/bash32-021 new file mode 100644 index 0000000..003489c --- /dev/null +++ b/src/patches/bash/bash32-021 @@ -0,0 +1,72 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-021 + +Bug-Reported-by: BAGSHAW Paul RD-TECH-REN paul.bagshaw@orange-ftgroup.com +Bug-Reference-ID: 941BA0BF46DB8F4983FF7C8AFE800BC205EA7D4B@ftrdmel3.rd.francetelecom.fr +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-03/msg00065.html + +Bug-Description: + +When the parser read a backslash-escaped character that would be treated +internally as an escape, it would double the number of escape characters. + +Patch: + +*** ../bash-3.2-patched/parse.y Mon Oct 30 17:22:00 2006 +--- parse.y Sat Mar 24 17:13:20 2007 +*************** +*** 3377,3381 **** + { + pass_next_character = 0; +! goto got_character; + } + +--- 3377,3381 ---- + { + pass_next_character = 0; +! goto got_escaped_character; + } + +*************** +*** 3651,3660 **** + got_character: + +- all_digit_token &= DIGIT (character); +- dollar_present |= character == '$'; +- + if (character == CTLESC || character == CTLNUL) + token[token_index++] = CTLESC; + + token[token_index++] = character; + +--- 3651,3662 ---- + got_character: + + if (character == CTLESC || character == CTLNUL) + token[token_index++] = CTLESC; + ++ got_escaped_character: ++ ++ all_digit_token &= DIGIT (character); ++ dollar_present |= character == '$'; ++ + token[token_index++] = character; + +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 20 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 21 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-022 b/src/patches/bash/bash32-022 new file mode 100644 index 0000000..d3679e6 --- /dev/null +++ b/src/patches/bash/bash32-022 @@ -0,0 +1,126 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-022 + +Bug-Reported-by: Chet Ramey chet.ramey@cwru.edu +Bug-Reference-ID: +Bug-Reference-URL: + +Bug-Description: + +POSIX specifies that the `read' builtin invoked from an interative shell +must prompt with $PS2 when a line is continued using a backslash while +reading from a terminal. + +Patch: + +*** ../bash-3.2-patched/builtins/read.def Tue Sep 19 08:45:48 2006 +--- builtins/read.def Thu May 24 16:03:30 2007 +*************** +*** 128,133 **** + { + register char *varname; +! int size, i, nr, pass_next, saw_escape, eof, opt, retval, code; +! int input_is_tty, input_is_pipe, unbuffered_read; + int raw, edit, nchars, silent, have_timeout, fd; + unsigned int tmout; +--- 131,136 ---- + { + register char *varname; +! int size, i, nr, pass_next, saw_escape, eof, opt, retval, code, print_ps2; +! int input_is_tty, input_is_pipe, unbuffered_read, skip_ctlesc, skip_ctlnul; + int raw, edit, nchars, silent, have_timeout, fd; + unsigned int tmout; +*************** +*** 135,139 **** + char c; + char *input_string, *orig_input_string, *ifs_chars, *prompt, *arrayname; +! char *e, *t, *t1; + struct stat tsb; + SHELL_VAR *var; +--- 138,142 ---- + char c; + char *input_string, *orig_input_string, *ifs_chars, *prompt, *arrayname; +! char *e, *t, *t1, *ps2; + struct stat tsb; + SHELL_VAR *var; +*************** +*** 149,152 **** +--- 152,156 ---- + USE_VAR(i); + USE_VAR(pass_next); ++ USE_VAR(print_ps2); + USE_VAR(saw_escape); + USE_VAR(input_is_pipe); +*************** +*** 164,167 **** +--- 168,172 ---- + #endif + USE_VAR(list); ++ USE_VAR(ps2); + + i = 0; /* Index into the string that we are reading. */ +*************** +*** 387,391 **** + #endif + +! for (eof = retval = 0;;) + { + #if defined (READLINE) +--- 394,399 ---- + #endif + +! ps2 = 0; +! for (print_ps2 = eof = retval = 0;;) + { + #if defined (READLINE) +*************** +*** 413,416 **** +--- 421,433 ---- + #endif + ++ if (print_ps2) ++ { ++ if (ps2 == 0) ++ ps2 = get_string_value ("PS2"); ++ fprintf (stderr, "%s", ps2 ? ps2 : ""); ++ fflush (stderr); ++ print_ps2 = 0; ++ } ++ + if (unbuffered_read) + retval = zread (fd, &c, 1); +*************** +*** 441,445 **** + pass_next = 0; + if (c == '\n') +! i--; /* back up over the CTLESC */ + else + goto add_char; +--- 458,466 ---- + pass_next = 0; + if (c == '\n') +! { +! i--; /* back up over the CTLESC */ +! if (interactive && input_is_tty && raw == 0) +! print_ps2 = 1; +! } + else + goto add_char; +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 21 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 22 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-023 b/src/patches/bash/bash32-023 new file mode 100644 index 0000000..34a6394 --- /dev/null +++ b/src/patches/bash/bash32-023 @@ -0,0 +1,51 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-023 + +Bug-Reported-by: Chet Ramey chet.ramey@cwru.edu +Bug-Reference-ID: +Bug-Reference-URL: + +Bug-Description: + +When an error occurs during the pattern removal word expansion, the shell +can free unallocated memory or free memory multiple times. + +Patch: + +*** ../bash-3.2-patched/subst.c Tue Apr 3 16:47:19 2007 +--- subst.c Tue Jul 17 09:45:11 2007 +*************** +*** 3975,3979 **** + patstr++; + +! pattern = getpattern (patstr, quoted, 1); + + temp1 = (char *)NULL; /* shut up gcc */ +--- 4008,4016 ---- + patstr++; + +! /* Need to pass getpattern newly-allocated memory in case of expansion -- +! the expansion code will free the passed string on an error. */ +! temp1 = savestring (patstr); +! pattern = getpattern (temp1, quoted, 1); +! free (temp1); + + temp1 = (char *)NULL; /* shut up gcc */ +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 22 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 23 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-024 b/src/patches/bash/bash32-024 new file mode 100644 index 0000000..1575f37 --- /dev/null +++ b/src/patches/bash/bash32-024 @@ -0,0 +1,77 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-024 + +Bug-Reported-by: Peter Volkov torre_cremata@mail.ru +Bug-Reference-ID: 1178376645.9063.25.camel@localhost +Bug-Reference-URL: http://bugs.gentoo.org/177095 + +Bug-Description: + +The readline display code miscalculated the screen position when performing +a redisplay in which the new text occupies more screen space that the old, +but takes fewer bytes to do so (e.g., when replacing a shorter string +containing multibyte characters with a longer one containing only ASCII). + +Patch: + +*** ../bash-3.2-patched/lib/readline/display.c Thu Apr 26 11:38:22 2007 +--- lib/readline/display.c Thu Jul 12 23:10:10 2007 +*************** +*** 1519,1527 **** + /* Non-zero if we're increasing the number of lines. */ + int gl = current_line >= _rl_vis_botlin && inv_botlin > _rl_vis_botlin; + /* Sometimes it is cheaper to print the characters rather than + use the terminal's capabilities. If we're growing the number + of lines, make sure we actually cause the new line to wrap + around on auto-wrapping terminals. */ +! if (_rl_terminal_can_insert && ((2 * col_temp) >= col_lendiff || _rl_term_IC) && (!_rl_term_autowrap || !gl)) + { + /* If lendiff > prompt_visible_length and _rl_last_c_pos == 0 and +--- 1568,1596 ---- + /* Non-zero if we're increasing the number of lines. */ + int gl = current_line >= _rl_vis_botlin && inv_botlin > _rl_vis_botlin; ++ /* If col_lendiff is > 0, implying that the new string takes up more ++ screen real estate than the old, but lendiff is < 0, meaning that it ++ takes fewer bytes, we need to just output the characters starting ++ from the first difference. These will overwrite what is on the ++ display, so there's no reason to do a smart update. This can really ++ only happen in a multibyte environment. */ ++ if (lendiff < 0) ++ { ++ _rl_output_some_chars (nfd, temp); ++ _rl_last_c_pos += _rl_col_width (nfd, 0, temp); ++ /* If nfd begins before any invisible characters in the prompt, ++ adjust _rl_last_c_pos to account for wrap_offset and set ++ cpos_adjusted to let the caller know. */ ++ if (current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible)) ++ { ++ _rl_last_c_pos -= wrap_offset; ++ cpos_adjusted = 1; ++ } ++ return; ++ } + /* Sometimes it is cheaper to print the characters rather than + use the terminal's capabilities. If we're growing the number + of lines, make sure we actually cause the new line to wrap + around on auto-wrapping terminals. */ +! else if (_rl_terminal_can_insert && ((2 * col_temp) >= col_lendiff || _rl_term_IC) && (!_rl_term_autowrap || !gl)) + { + /* If lendiff > prompt_visible_length and _rl_last_c_pos == 0 and +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 23 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 24 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-025 b/src/patches/bash/bash32-025 new file mode 100644 index 0000000..4d53d89 --- /dev/null +++ b/src/patches/bash/bash32-025 @@ -0,0 +1,79 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-025 + +Bug-Reported-by: Tom Bjorkholm tom.bjorkholm@ericsson.com +Bug-Reference-ID: AEA1A32F001C6B4F98614B5B80D7647D01C075E9@esealmw115.eemea.ericsson.se +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2007-04/msg00004.html + +Bug-Description: + +An off-by-one error in readline's input buffering caused readline to drop +each 511th character of buffered input (e.g., when pasting a large amount +of data into a terminal window). + +Patch: + +*** ../bash-3.2-patched/lib/readline/input.c Wed Aug 16 15:15:16 2006 +--- lib/readline/input.c Tue Jul 17 09:24:21 2007 +*************** +*** 134,139 **** + + *key = ibuffer[pop_index++]; +! + if (pop_index >= ibuffer_len) + pop_index = 0; + +--- 134,142 ---- + + *key = ibuffer[pop_index++]; +! #if 0 + if (pop_index >= ibuffer_len) ++ #else ++ if (pop_index > ibuffer_len) ++ #endif + pop_index = 0; + +*************** +*** 251,255 **** + { + k = (*rl_getc_function) (rl_instream); +! rl_stuff_char (k); + if (k == NEWLINE || k == RETURN) + break; +--- 254,259 ---- + { + k = (*rl_getc_function) (rl_instream); +! if (rl_stuff_char (k) == 0) +! break; /* some problem; no more room */ + if (k == NEWLINE || k == RETURN) + break; +*************** +*** 374,378 **** +--- 378,386 ---- + } + ibuffer[push_index++] = key; ++ #if 0 + if (push_index >= ibuffer_len) ++ #else ++ if (push_index > ibuffer_len) ++ #endif + push_index = 0; + +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 24 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 25 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-026 b/src/patches/bash/bash32-026 new file mode 100644 index 0000000..ba7de50 --- /dev/null +++ b/src/patches/bash/bash32-026 @@ -0,0 +1,82 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-026 + +Bug-Reported-by: Chet Ramey chet.ramey@case.edu +Bug-Reference-ID: +Bug-Reference-URL: + +Bug-Description: + +This keeps the Apple linker from attempting to link bash against Apple's +readline library "replacement" rather than the one shipped with bash. It +extends the configure workaround to Mac OS X Leopard (10.5). + +As a side effect, the patch updates the copyright date displayed in the +version string. + +You must re-run configure after applying the patch, and before rebuilding +bash. + +Patch: + +*** ../bash-3.2-patched/configure.in 2007-03-06 11:07:38.000000000 -0500 +--- configure.in 2007-11-23 15:37:41.000000000 -0500 +*************** +*** 519,523 **** + # dynamic version + case "${host_os}" in +! darwin8*) READLINE_LIB='${READLINE_LIBRARY}' ;; + *) READLINE_LIB=-lreadline ;; + esac +--- 519,523 ---- + # dynamic version + case "${host_os}" in +! darwin[[89]]*) READLINE_LIB='${READLINE_LIBRARY}' ;; + *) READLINE_LIB=-lreadline ;; + esac +*** ../bash-3.2-patched/configure 2007-03-24 14:51:22.000000000 -0400 +--- configure 2007-11-23 15:46:15.000000000 -0500 +*************** +*** 4872,4876 **** + # dynamic version + case "${host_os}" in +! darwin8*) READLINE_LIB='${READLINE_LIBRARY}' ;; + *) READLINE_LIB=-lreadline ;; + esac +--- 4872,4876 ---- + # dynamic version + case "${host_os}" in +! darwin[89]*) READLINE_LIB='${READLINE_LIBRARY}' ;; + *) READLINE_LIB=-lreadline ;; + esac +*** ../bash-3.2-patched/version.c 2005-05-16 11:58:34.000000000 -0400 +--- version.c 2007-11-23 16:03:40.000000000 -0500 +*************** +*** 80,83 **** + printf ("GNU bash, version %s (%s)\n", shell_version_string (), MACHTYPE); + if (extended) +! printf (_("Copyright (C) 2005 Free Software Foundation, Inc.\n")); + } +--- 80,83 ---- + printf ("GNU bash, version %s (%s)\n", shell_version_string (), MACHTYPE); + if (extended) +! printf (_("Copyright (C) 2007 Free Software Foundation, Inc.\n")); + } +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 25 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 26 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-027 b/src/patches/bash/bash32-027 new file mode 100644 index 0000000..5e110cb --- /dev/null +++ b/src/patches/bash/bash32-027 @@ -0,0 +1,85 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-027 + +Bug-Reported-by: dAniel hAhler ubuntu@thequod.de +Bug-Reference-ID: 4702ED8A.5000503@thequod.de +Bug-Reference-URL: https://bugs.launchpad.net/ubuntu/+source/bash/+bug/119938 + +Bug-Description: + +When updating the display after displaying, for instance, a list of possible +completions, readline will place the cursor at the wrong position if the +prompt contains invisible characters and a newline. + +Patch: + +*** ../bash-3.2.25/lib/readline/display.c Mon Aug 6 14:26:29 2007 +--- lib/readline/display.c Wed Oct 10 22:43:58 2007 +*************** +*** 1049,1053 **** + else + tx = nleft; +! if (_rl_last_c_pos > tx) + { + _rl_backspace (_rl_last_c_pos - tx); /* XXX */ +--- 1049,1053 ---- + else + tx = nleft; +! if (tx >= 0 && _rl_last_c_pos > tx) + { + _rl_backspace (_rl_last_c_pos - tx); /* XXX */ +*************** +*** 1205,1209 **** + { + register char *ofd, *ols, *oe, *nfd, *nls, *ne; +! int temp, lendiff, wsatend, od, nd; + int current_invis_chars; + int col_lendiff, col_temp; +--- 1205,1209 ---- + { + register char *ofd, *ols, *oe, *nfd, *nls, *ne; +! int temp, lendiff, wsatend, od, nd, o_cpos; + int current_invis_chars; + int col_lendiff, col_temp; +*************** +*** 1466,1469 **** +--- 1466,1471 ---- + } + ++ o_cpos = _rl_last_c_pos; ++ + /* When this function returns, _rl_last_c_pos is correct, and an absolute + cursor postion in multibyte mode, but a buffer index when not in a +*************** +*** 1475,1479 **** + invisible characters in the prompt string. Let's see if setting this when + we make sure we're at the end of the drawn prompt string works. */ +! if (current_line == 0 && MB_CUR_MAX > 1 && rl_byte_oriented == 0 && _rl_last_c_pos == prompt_physical_chars) + cpos_adjusted = 1; + #endif +--- 1477,1483 ---- + invisible characters in the prompt string. Let's see if setting this when + we make sure we're at the end of the drawn prompt string works. */ +! if (current_line == 0 && MB_CUR_MAX > 1 && rl_byte_oriented == 0 && +! (_rl_last_c_pos > 0 || o_cpos > 0) && +! _rl_last_c_pos == prompt_physical_chars) + cpos_adjusted = 1; + #endif +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 26 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 27 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-028 b/src/patches/bash/bash32-028 new file mode 100644 index 0000000..e818294 --- /dev/null +++ b/src/patches/bash/bash32-028 @@ -0,0 +1,60 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-028 + +Bug-Reported-by: dAniel hAhler ubuntu@thequod.de +Bug-Reference-ID: +Bug-Reference-URL: + +Bug-Description: + +Under some circumstances, readline will incorrectly display a prompt string +containing invisible characters after the final newline. + +Patch: + +*** ../bash-3.2-patched/lib/readline/display.c 2007-08-25 13:47:08.000000000 -0400 +--- lib/readline/display.c 2007-11-10 17:51:29.000000000 -0500 +*************** +*** 392,396 **** + local_prompt = expand_prompt (p, &prompt_visible_length, + &prompt_last_invisible, +! (int *)NULL, + &prompt_physical_chars); + c = *t; *t = '\0'; +--- 420,424 ---- + local_prompt = expand_prompt (p, &prompt_visible_length, + &prompt_last_invisible, +! &prompt_invis_chars_first_line, + &prompt_physical_chars); + c = *t; *t = '\0'; +*************** +*** 399,403 **** + local_prompt_prefix = expand_prompt (prompt, &prompt_prefix_length, + (int *)NULL, +! &prompt_invis_chars_first_line, + (int *)NULL); + *t = c; +--- 427,431 ---- + local_prompt_prefix = expand_prompt (prompt, &prompt_prefix_length, + (int *)NULL, +! (int *)NULL, + (int *)NULL); + *t = c; +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 27 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 28 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-029 b/src/patches/bash/bash32-029 new file mode 100644 index 0000000..9de2085 --- /dev/null +++ b/src/patches/bash/bash32-029 @@ -0,0 +1,52 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-029 + +Bug-Reported-by: Tomas Janousek tjanouse@redhat.com +Bug-Reference-ID: 20071102104034.GA26893@redhat.com +Bug-Reference-URL: https://bugzilla.redhat.com/show_bug.cgi?id=286861 + +Bug-Description: + +When the bash arithmetic expression evaluator has temporarily turned off +evalation, such as when parsing a pre- or post-decrement or -increment +operator, and an error occurs, evaluation is not re-enabled. + +Patch: + +*** ../bash-3.2-patched/expr.c 2007-08-25 13:47:05.000000000 -0400 +--- expr.c 2007-10-18 08:08:44.000000000 -0400 +*************** +*** 287,290 **** +--- 287,292 ---- + } + free (expr_stack[expr_depth]); /* free the allocated EXPR_CONTEXT */ ++ ++ noeval = 0; /* XXX */ + } + +*************** +*** 320,323 **** +--- 322,326 ---- + + val = 0; ++ noeval = 0; + + FASTCOPY (evalbuf, oevalbuf, sizeof (evalbuf)); +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 28 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 29 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-030 b/src/patches/bash/bash32-030 new file mode 100644 index 0000000..3f12c28 --- /dev/null +++ b/src/patches/bash/bash32-030 @@ -0,0 +1,50 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-030 + +Bug-Reported-by: Paul Eggert eggert@cs.ucla.edu Andreas Schwab schwab@suse.de +Bug-Reference-ID: 877il0nu84.fsf_-_@penguin.cs.ucla.edu m28x5gparz.fsf@igel.home +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-11/msg00023.html http://lists.gnu.org/archive/html/bug-bash/2007-11/msg00022.htmlhttp://lists... + +Bug-Description: + +If redirections attached to a compound command fail, bash does not set the +command's exit status correctly. This only happens when the command is the +first in a sequential list. + +Patch: + +*** ../bash-3.2-patched/execute_cmd.c 2007-03-24 14:51:05.000000000 -0400 +--- execute_cmd.c 2007-11-05 22:31:14.000000000 -0500 +*************** +*** 615,619 **** + redirection_undo_list = (REDIRECT *)NULL; + dispose_exec_redirects (); +! return (EXECUTION_FAILURE); + } + +--- 620,624 ---- + redirection_undo_list = (REDIRECT *)NULL; + dispose_exec_redirects (); +! return (last_command_exit_value = EXECUTION_FAILURE); + } + +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 29 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 30 + + #endif /* _PATCHLEVEL_H_ */ + + diff --git a/src/patches/bash/bash32-031 b/src/patches/bash/bash32-031 new file mode 100644 index 0000000..6c96fb9 --- /dev/null +++ b/src/patches/bash/bash32-031 @@ -0,0 +1,62 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-031 + +Bug-Reported-by: Miroslav Lichvar mlichvar@redhat.com +Bug-Reference-ID: Fri, 02 Nov 2007 14:07:45 +0100 +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2007-11/msg00000.html + +Bug-Description: + +In certain cases when outputting characters at the end of the line, +e.g., when displaying the prompt string, readline positions the cursor +incorrectly if the prompt string contains invisible characters and the +text being drawn begins before the last invisible character in the line. + +Patch: + +*** ../bash-3.2-patched/lib/readline/display.c 2007-08-25 13:47:08.000000000 -0400 +--- lib/readline/display.c 2007-11-10 17:51:29.000000000 -0500 +*************** +*** 1566,1574 **** + else + { +- /* We have horizontal scrolling and we are not inserting at +- the end. We have invisible characters in this line. This +- is a dumb update. */ + _rl_output_some_chars (nfd, temp); + _rl_last_c_pos += col_temp; + return; + } +--- 1619,1632 ---- + else + { + _rl_output_some_chars (nfd, temp); + _rl_last_c_pos += col_temp; ++ /* If nfd begins before any invisible characters in the prompt, ++ adjust _rl_last_c_pos to account for wrap_offset and set ++ cpos_adjusted to let the caller know. */ ++ if (current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible)) ++ { ++ _rl_last_c_pos -= wrap_offset; ++ cpos_adjusted = 1; ++ } + return; + } +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 30 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 31 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-032 b/src/patches/bash/bash32-032 new file mode 100644 index 0000000..5e53e29 --- /dev/null +++ b/src/patches/bash/bash32-032 @@ -0,0 +1,47 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-032 + +Bug-Reported-by: Uwe Doering gemini@geminix.org +Bug-Reference-ID: 46F3DD72.2090801@geminix.org +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-09/msg00102.html + +Bug-Description: + +There is an off-by-one error in the code that buffers characters received +very quickly in succession, causing characters to be dropped. + +Patch: + +*** ../bash-3.2-patched/lib/readline/input.c 2007-08-25 13:47:10.000000000 -0400 +--- lib/readline/input.c 2007-10-12 22:55:25.000000000 -0400 +*************** +*** 155,159 **** + pop_index--; + if (pop_index < 0) +! pop_index = ibuffer_len - 1; + ibuffer[pop_index] = key; + return (1); +--- 155,159 ---- + pop_index--; + if (pop_index < 0) +! pop_index = ibuffer_len; + ibuffer[pop_index] = key; + return (1); +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 31 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 32 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-033 b/src/patches/bash/bash32-033 new file mode 100644 index 0000000..0d69810 --- /dev/null +++ b/src/patches/bash/bash32-033 @@ -0,0 +1,88 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-033 + +Bug-Reported-by: Christophe Martin schplurtz@free.fr +Bug-Reference-ID: 465ABA4A.3030805@free.fr +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-05/msg00104.html + +Bug-Description: + +References made within a function to an uninitialized local array variable +using the [*] subscript in a double-quoted string can result in spurious +ASCII 127 characters in the expanded value. + +Patch: + +*** ../bash-3.2-patched/arrayfunc.c 2007-08-25 13:47:05.000000000 -0400 +--- arrayfunc.c 2007-05-31 11:55:46.000000000 -0400 +*************** +*** 723,727 **** + { + if (rtype) +! *rtype = 1; + if (allow_all == 0) + { +--- 723,727 ---- + { + if (rtype) +! *rtype = (t[0] == '*') ? 1 : 2; + if (allow_all == 0) + { +*** ../bash-3.2-patched/subst.c 2007-08-25 13:47:08.000000000 -0400 +--- subst.c 2007-11-14 15:43:00.000000000 -0500 +*************** +*** 4908,4915 **** + intmax_t arg_index; + SHELL_VAR *var; +! int atype; + + ret = 0; + temp = 0; + + /* Handle multiple digit arguments, as in ${11}. */ +--- 4973,4981 ---- + intmax_t arg_index; + SHELL_VAR *var; +! int atype, rflags; + + ret = 0; + temp = 0; ++ rflags = 0; + + /* Handle multiple digit arguments, as in ${11}. */ +*************** +*** 4944,4947 **** +--- 5010,5015 ---- + ? quote_string (temp) + : quote_escapes (temp); ++ else if (atype == 1 && temp && QUOTED_NULL (temp) && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))) ++ rflags |= W_HASQUOTEDNULL; + } + #endif +*************** +*** 4971,4974 **** +--- 5039,5043 ---- + ret = alloc_word_desc (); + ret->word = temp; ++ ret->flags |= rflags; + } + return ret; +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 32 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 33 + + #endif /* _PATCHLEVEL_H_ */ + diff --git a/src/patches/bash/bash32-034 b/src/patches/bash/bash32-034 new file mode 100644 index 0000000..4f08162 --- /dev/null +++ b/src/patches/bash/bash32-034 @@ -0,0 +1,74 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-034 + +Bug-Reported-by: Ian Campbell ian.campbell@xensource.com +Bug-Reference-ID: EXCHPAFExU3l5bhn1ow00001dfe@rpc.xensource.com +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-10/msg00060.html + +Bug-Description: + +The bash getcwd replacement will write past the end of allocated memory +when it allocates the buffer itself if it uses the buffer size passed as +an argument, and that size is less than the length of the pathname. + +Patch: + +*** ../bash-3.2-patched/lib/sh/getcwd.c 2004-07-21 17:15:19.000000000 -0400 +--- lib/sh/getcwd.c 2007-12-31 19:26:36.000000000 -0500 +*************** +*** 252,268 **** + { + size_t len = pathbuf + pathsize - pathp; + if (buf == NULL) + { +! if (len < (size_t) size) +! len = size; +! buf = (char *) malloc (len); + if (buf == NULL) + goto lose2; + } +! else if ((size_t) size < len) +! { +! errno = ERANGE; +! goto lose2; +! } + (void) memcpy((PTR_T) buf, (PTR_T) pathp, len); + } +--- 287,305 ---- + { + size_t len = pathbuf + pathsize - pathp; ++ if (buf == NULL && size <= 0) ++ size = len; ++ ++ if ((size_t) size < len) ++ { ++ errno = ERANGE; ++ goto lose2; ++ } + if (buf == NULL) + { +! buf = (char *) malloc (size); + if (buf == NULL) + goto lose2; + } +! + (void) memcpy((PTR_T) buf, (PTR_T) pathp, len); + } +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 33 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 34 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-035 b/src/patches/bash/bash32-035 new file mode 100644 index 0000000..55506ba --- /dev/null +++ b/src/patches/bash/bash32-035 @@ -0,0 +1,159 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-035 + +Bug-Reported-by: Ingo Molnar mingo@elte.hu +Bug-Reference-ID: 20071205202901.GA25202@elte.hu +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-12/msg00014.html + +Bug-Description: + +Bash incorrectly puts the second and subsequent children spawned by a +shell forked to run a command substitution in the wrong process group. + +Patch: + +*** ../bash-3.2-patched/subst.c 2007-12-13 22:31:21.000000000 -0500 +--- subst.c 2008-01-17 22:48:15.000000000 -0500 +*************** +*** 4621,4627 **** + + #if defined (JOB_CONTROL) + set_sigchld_handler (); + stop_making_children (); +! pipeline_pgrp = old_pipeline_pgrp; + #else + stop_making_children (); +--- 4721,4728 ---- + + #if defined (JOB_CONTROL) + set_sigchld_handler (); + stop_making_children (); +! if (pid != 0) +! pipeline_pgrp = old_pipeline_pgrp; + #else + stop_making_children (); +*** ../bash-3.2-patched/jobs.c 2007-08-25 13:46:59.000000000 -0400 +--- jobs.c 2007-12-08 16:47:43.000000000 -0500 +*************** +*** 251,254 **** +--- 251,255 ---- + static int set_job_status_and_cleanup __P((int)); + ++ static WAIT job_signal_status __P((int)); + static WAIT raw_job_exit_status __P((int)); + +*************** +*** 2220,2223 **** +--- 2238,2261 ---- + } + ++ static WAIT ++ job_signal_status (job) ++ int job; ++ { ++ register PROCESS *p; ++ WAIT s; ++ ++ p = jobs[job]->pipe; ++ do ++ { ++ s = p->status; ++ if (WIFSIGNALED(s) || WIFSTOPPED(s)) ++ break; ++ p = p->next; ++ } ++ while (p != jobs[job]->pipe); ++ ++ return s; ++ } ++ + /* Return the exit status of the last process in the pipeline for job JOB. + This is the exit status of the entire job. */ +*************** +*** 2302,2310 **** + received, only if one of the jobs run is killed via SIGINT. If + job control is not set, the job will be run in the same pgrp as +! the shell, and the shell will see any signals the job gets. */ + + /* This is possibly a race condition -- should it go in stop_pipeline? */ + wait_sigint_received = 0; +! if (job_control == 0) + { + old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler); +--- 2343,2354 ---- + received, only if one of the jobs run is killed via SIGINT. If + job control is not set, the job will be run in the same pgrp as +! the shell, and the shell will see any signals the job gets. In +! fact, we want this set every time the waiting shell and the waited- +! for process are in the same process group, including command +! substitution. */ + + /* This is possibly a race condition -- should it go in stop_pipeline? */ + wait_sigint_received = 0; +! if (job_control == 0 || (subshell_environment&SUBSHELL_COMSUB)) + { + old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler); +*************** +*** 2452,2464 **** + the last process in the pipeline. If no process exits due to a + signal, S is left as the status of the last job in the pipeline. */ +! p = jobs[job]->pipe; +! do +! { +! s = p->status; +! if (WIFSIGNALED(s) || WIFSTOPPED(s)) +! break; +! p = p->next; +! } +! while (p != jobs[job]->pipe); + + if (WIFSIGNALED (s) || WIFSTOPPED (s)) +--- 2496,2500 ---- + the last process in the pipeline. If no process exits due to a + signal, S is left as the status of the last job in the pipeline. */ +! s = job_signal_status (job); + + if (WIFSIGNALED (s) || WIFSTOPPED (s)) +*************** +*** 2494,2497 **** +--- 2530,2551 ---- + } + } ++ else if ((subshell_environment & SUBSHELL_COMSUB) && wait_sigint_received) ++ { ++ /* If waiting for a job in a subshell started to do command ++ substitution, simulate getting and being killed by the SIGINT to ++ pass the status back to our parent. */ ++ s = job_signal_status (job); ++ ++ if (WIFSIGNALED (s) && WTERMSIG (s) == SIGINT && signal_is_trapped (SIGINT) == 0) ++ { ++ UNBLOCK_CHILD (oset); ++ restore_sigint_handler (); ++ old_sigint_handler = set_signal_handler (SIGINT, SIG_DFL); ++ if (old_sigint_handler == SIG_IGN) ++ restore_sigint_handler (); ++ else ++ kill (getpid (), SIGINT); ++ } ++ } + + /* Moved here from set_job_status_and_cleanup, which is in the SIGCHLD +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 34 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 35 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-036 b/src/patches/bash/bash32-036 new file mode 100644 index 0000000..ef22e60 --- /dev/null +++ b/src/patches/bash/bash32-036 @@ -0,0 +1,44 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-036 + +Bug-Reported-by: Len Lattanzi llattanzi@apple.com +Bug-Reference-ID: 87493131-7AEC-4301-A684-E6CC6D06E3E1@apple.com +Bug-Reference-URL: + +Bug-Description: + +When initializing a subshell, bash did not reset a sentinel keeping track +of the number of command substitutions, leading to an infinite loop if +an error was encountered in the subshell. + +Patch: + +*** ../bash-3.2-patched/execute_cmd.c 2007-12-13 22:31:14.000000000 -0500 +--- execute_cmd.c 2007-12-20 08:52:34.000000000 -0500 +*************** +*** 3881,3884 **** +--- 3916,3921 ---- + + clear_unwind_protect_list (0); ++ /* XXX -- are there other things we should be resetting here? */ ++ parse_and_execute_level = 0; /* nothing left to restore it */ + + /* We're no longer inside a shell function. */ +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 35 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 36 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-037 b/src/patches/bash/bash32-037 new file mode 100644 index 0000000..376bd93 --- /dev/null +++ b/src/patches/bash/bash32-037 @@ -0,0 +1,110 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-037 + +Bug-Reported-by: jared r r spiegel jrrs@iorek.ice-nine.org +Bug-Reference-ID: 200801152201.m0FM1lDp021260@iorek.ice-nine.org +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2008-01/msg00049.html + +Bug-Description: + +Bash inappropriately evaluates command substitutions while expanding +directory names as part of command substitution. + +Patch: + +*** ../bash-3.2-patched/subst.c 2007-12-13 22:31:21.000000000 -0500 +--- subst.c 2008-01-17 22:48:15.000000000 -0500 +*************** +*** 2815,2821 **** + to jump_to_top_level here so we don't endlessly loop. */ + WORD_LIST * +! expand_prompt_string (string, quoted) + char *string; + int quoted; + { + WORD_LIST *value; +--- 2895,2902 ---- + to jump_to_top_level here so we don't endlessly loop. */ + WORD_LIST * +! expand_prompt_string (string, quoted, wflags) + char *string; + int quoted; ++ int wflags; + { + WORD_LIST *value; +*************** +*** 2825,2829 **** + return ((WORD_LIST *)NULL); + +! td.flags = 0; + td.word = savestring (string); + +--- 2906,2910 ---- + return ((WORD_LIST *)NULL); + +! td.flags = wflags; + td.word = savestring (string); + +*** ../bash-3.2-patched/subst.h 2007-03-24 14:51:05.000000000 -0400 +--- subst.h 2008-01-17 22:46:08.000000000 -0500 +*************** +*** 136,140 **** + + /* Expand a prompt string. */ +! extern WORD_LIST *expand_prompt_string __P((char *, int)); + + /* Expand STRING just as if you were expanding a word. This also returns +--- 137,141 ---- + + /* Expand a prompt string. */ +! extern WORD_LIST *expand_prompt_string __P((char *, int, int)); + + /* Expand STRING just as if you were expanding a word. This also returns +*** ../bash-3.2-patched/parse.y 2007-08-25 13:47:06.000000000 -0400 +--- parse.y 2008-01-17 22:46:30.000000000 -0500 +*************** +*** 4367,4371 **** + { + last_exit_value = last_command_exit_value; +! list = expand_prompt_string (result, Q_DOUBLE_QUOTES); + free (result); + result = string_list (list); +--- 4367,4371 ---- + { + last_exit_value = last_command_exit_value; +! list = expand_prompt_string (result, Q_DOUBLE_QUOTES, 0); + free (result); + result = string_list (list); +*** ../bash-3.2-patched/bashline.c 2006-07-29 16:39:30.000000000 -0400 +--- bashline.c 2008-02-17 12:53:42.000000000 -0500 +*************** +*** 2358,2362 **** + { + new_dirname = savestring (local_dirname); +! wl = expand_prompt_string (new_dirname, 0); /* does the right thing */ + if (wl) + { +--- 2376,2380 ---- + { + new_dirname = savestring (local_dirname); +! wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB); /* does the right thing */ + if (wl) + { +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 36 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 37 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-038 b/src/patches/bash/bash32-038 new file mode 100644 index 0000000..842b1b5 --- /dev/null +++ b/src/patches/bash/bash32-038 @@ -0,0 +1,80 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-038 + +Bug-Reported-by: Wojciech Puchar wojtek@wojtek.tensor.gdynia.pl +Bug-Reference-ID: 200803131141.m2DBf9vo001136@wojtek.tensor.gdynia.pl +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2008-03/msg00029.html + +Bug-Description: + +When reading input lines into a single variable using the `read' builtin, +bash did not free the memory it read after assigining it to the named +variable, causing a memory leak noticable when reading large amounts of +data. + + +Patch: + +*** ../bash-3.2-patched/builtins/read.def 2007-08-25 13:47:07.000000000 -0400 +--- builtins/read.def 2008-03-07 12:55:47.000000000 -0500 +*************** +*** 135,139 **** + char c; + char *input_string, *orig_input_string, *ifs_chars, *prompt, *arrayname; +! char *e, *t, *t1, *ps2; + struct stat tsb; + SHELL_VAR *var; +--- 152,156 ---- + char c; + char *input_string, *orig_input_string, *ifs_chars, *prompt, *arrayname; +! char *e, *t, *t1, *ps2, *tofree; + struct stat tsb; + SHELL_VAR *var; +*************** +*** 675,678 **** +--- 728,732 ---- + /* Check whether or not the number of fields is exactly the same as the + number of variables. */ ++ tofree = NULL; + if (*input_string) + { +*************** +*** 680,684 **** + t = get_word_from_string (&input_string, ifs_chars, &e); + if (*input_string == 0) +! input_string = t; + else + input_string = strip_trailing_ifs_whitespace (t1, ifs_chars, saw_escape); +--- 734,738 ---- + t = get_word_from_string (&input_string, ifs_chars, &e); + if (*input_string == 0) +! tofree = input_string = t; + else + input_string = strip_trailing_ifs_whitespace (t1, ifs_chars, saw_escape); +*************** +*** 695,698 **** +--- 749,754 ---- + var = bind_read_variable (list->word->word, input_string); + stupidly_hack_special_variables (list->word->word); ++ FREE (tofree); ++ + if (var) + VUNSETATTR (var, att_invisible); +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 37 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 38 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-039 b/src/patches/bash/bash32-039 new file mode 100644 index 0000000..c225a5a --- /dev/null +++ b/src/patches/bash/bash32-039 @@ -0,0 +1,175 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-039 + +Bug-Reported-by: rew@erebor.com +Bug-Reference-ID: 20070119065603.546D011E9C@kansas.erebor.com +Bug-Reference-URL: + +Bug-Description: + +Bash-3.2 changed the behavior of the [[ command's `=~' operator when the +right-hand side was quoted: it matched the quoted portions as strings. +This patch introduces a new shell option: compat31. When enabled, it +restores the bash-3.1 behavior with respect to evaluating quoted arguments +to the =~ operator. + +Patch: + +*** ../bash-3.2-patched/execute_cmd.c 2007-12-14 21:12:39.000000000 -0500 +--- execute_cmd.c 2008-02-22 21:20:40.000000000 -0500 +*************** +*** 2547,2551 **** + if (arg1 == 0) + arg1 = nullstr; +! arg2 = cond_expand_word (cond->right->op, rmatch ? 2 : (patmatch ? 1 : 0)); + if (arg2 == 0) + arg2 = nullstr; +--- 2552,2557 ---- + if (arg1 == 0) + arg1 = nullstr; +! arg2 = cond_expand_word (cond->right->op, +! (rmatch && shell_compatibility_level > 31) ? 2 : (patmatch ? 1 : 0)); + if (arg2 == 0) + arg2 = nullstr; +*** ../bash-3.2-patched/shell.h 2003-06-01 15:04:36.000000000 -0400 +--- shell.h 2008-02-22 21:16:48.000000000 -0500 +*************** +*** 90,93 **** +--- 90,94 ---- + extern int interactive, interactive_shell; + extern int startup_state; ++ extern int shell_compatibility_level; + + /* Structure to pass around that holds a bitmap of file descriptors +*** ../bash-3.2-patched/version.c 2007-12-14 21:12:29.000000000 -0500 +--- version.c 2008-04-10 08:22:22.000000000 -0400 +*************** +*** 44,47 **** +--- 44,50 ---- + const char *sccs_version = SCCSVERSION; + ++ /* If == 31, shell compatible with bash-3.1, == 32 with bash-3.2, and so on */ ++ int shell_compatibility_level = 32; ++ + /* Functions for getting, setting, and displaying the shell version. */ + +*** ../bash-3.2-patched/builtins/shopt.def 2005-02-19 17:25:03.000000000 -0500 +--- builtins/shopt.def 2008-04-10 08:13:32.000000000 -0400 +*************** +*** 102,105 **** +--- 102,107 ---- + static int set_shellopts_after_change __P((int)); + ++ static int set_compatibility_level __P((int)); ++ + #if defined (RESTRICTED_SHELL) + static int set_restricted_shell __P((int)); +*************** +*** 107,110 **** +--- 109,113 ---- + + static int shopt_login_shell; ++ static int shopt_compat31; + + typedef int shopt_set_func_t __P((int)); +*************** +*** 122,125 **** +--- 125,129 ---- + { "cmdhist", &command_oriented_history, (shopt_set_func_t *)NULL }, + #endif ++ { "compat31", &shopt_compat31, set_compatibility_level }, + { "dotglob", &glob_dot_filenames, (shopt_set_func_t *)NULL }, + { "execfail", &no_exit_on_failed_exec, (shopt_set_func_t *)NULL }, +*************** +*** 460,463 **** +--- 464,479 ---- + } + ++ static int ++ set_compatibility_level (mode) ++ int mode; ++ { ++ /* Need to change logic here as we add more compatibility levels */ ++ if (shopt_compat31) ++ shell_compatibility_level = 31; ++ else ++ shell_compatibility_level = 32; ++ return 0; ++ } ++ + #if defined (RESTRICTED_SHELL) + /* Don't allow the value of restricted_shell to be modified. */ +*** ../bash-3.2-patched/doc/bash.1 2006-09-28 10:26:05.000000000 -0400 +--- doc/bash.1 2008-04-25 12:32:49.000000000 -0400 +*************** +*** 7978,7981 **** +--- 8200,8209 ---- + easy re-editing of multi-line commands. + .TP 8 ++ .B compat31 ++ If set, ++ .B bash ++ changes its behavior to that of version 3.1 with respect to quoted ++ arguments to the conditional command's =~ operator. ++ .TP 8 + .B dotglob + If set, +*** ../bash-20080214/doc/bashref.texi 2008-02-08 21:28:35.000000000 -0500 +--- doc/bashref.texi 2008-02-22 21:44:51.000000000 -0500 +*************** +*** 4053,4056 **** +--- 4061,4069 ---- + easy re-editing of multi-line commands. + ++ @item compat31 ++ If set, Bash ++ changes its behavior to that of version 3.1 with respect to quoted ++ arguments to the conditional command's =~ operator. ++ + @item dotglob + If set, Bash includes filenames beginning with a `.' in +*** ../bash-3.2-patched/tests/shopt.right 2005-02-19 17:46:09.000000000 -0500 +--- tests/shopt.right 2008-04-28 09:13:07.000000000 -0400 +*************** +*** 7,10 **** +--- 7,11 ---- + shopt -u checkwinsize + shopt -s cmdhist ++ shopt -u compat31 + shopt -u dotglob + shopt -u execfail +*************** +*** 54,57 **** +--- 55,59 ---- + shopt -u checkhash + shopt -u checkwinsize ++ shopt -u compat31 + shopt -u dotglob + shopt -u execfail +*************** +*** 78,81 **** +--- 80,84 ---- + checkhash off + checkwinsize off ++ compat31 off + dotglob off + execfail off + +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 38 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 39 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-040 b/src/patches/bash/bash32-040 new file mode 100644 index 0000000..50b85bb --- /dev/null +++ b/src/patches/bash/bash32-040 @@ -0,0 +1,47 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-040 + +Bug-Reported-by: John McCabe-Dansted +Bug-Reference-ID: +Bug-Reference-URL: https://bugs.launchpad.net/ubuntu/+source/bash/+bug/202885 + +Bug-Description: + +When using the `set' builtin to list all shell variables, the shell uses +the wrong variable when computing the length of a variable's value. + +Patch: + +*** ../bash-3.2-patched/array.c 2007-03-24 14:51:03.000000000 -0400 +--- array.c 2008-08-17 13:07:04.000000000 -0400 +*************** +*** 684,688 **** + valstr = element_value (ae) ? sh_double_quote (element_value(ae)) + : (char *)NULL; +! elen = STRLEN (indstr) + 8 + STRLEN (valstr); + RESIZE_MALLOCED_BUFFER (result, rlen, (elen + 1), rsize, rsize); + +--- 809,813 ---- + valstr = element_value (ae) ? sh_double_quote (element_value(ae)) + : (char *)NULL; +! elen = STRLEN (is) + 8 + STRLEN (valstr); + RESIZE_MALLOCED_BUFFER (result, rlen, (elen + 1), rsize, rsize); + +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 39 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 40 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-041 b/src/patches/bash/bash32-041 new file mode 100644 index 0000000..3c05c04 --- /dev/null +++ b/src/patches/bash/bash32-041 @@ -0,0 +1,154 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-041 + +Bug-Reported-by: Dan Jacobson jidanni@jidanni.org +Bug-Reference-ID: 873arjs11h.fsf@jidanni.org +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2008-02/msg00049.html + +Bug-Description: + +Bash saved and restored the value of `set -o history' while sourcing files, +preventing users from turning off history with `set +o history' in .bashrc. + +Patch: + +*** ../bash-3.2-patched/bashhist.c 2005-12-26 13:31:16.000000000 -0500 +--- bashhist.c 2008-08-17 13:07:40.000000000 -0400 +*************** +*** 81,84 **** +--- 81,85 ---- + becomes zero when we read lines from a file, for example. */ + int remember_on_history = 1; ++ int enable_history_list = 1; /* value for `set -o history' */ + + /* The number of lines that Bash has added to this history session. The +*************** +*** 235,239 **** + history_expansion_inhibited = 1; + #endif +! remember_on_history = interact != 0; + history_inhibit_expansion_function = bash_history_inhibit_expansion; + } +--- 236,240 ---- + history_expansion_inhibited = 1; + #endif +! remember_on_history = enable_history_list = interact != 0; + history_inhibit_expansion_function = bash_history_inhibit_expansion; + } +*** ../bash-3.2-patched/builtins/set.def 2006-07-27 09:41:43.000000000 -0400 +--- builtins/set.def 2008-08-14 16:33:41.000000000 -0400 +*************** +*** 190,194 **** + #endif /* BANG_HISTORY */ + #if defined (HISTORY) +! { "history", '\0', &remember_on_history, bash_set_history, (setopt_get_func_t *)NULL }, + #endif + { "ignoreeof", '\0', &ignoreeof, set_ignoreeof, (setopt_get_func_t *)NULL }, +--- 198,202 ---- + #endif /* BANG_HISTORY */ + #if defined (HISTORY) +! { "history", '\0', &enable_history_list, bash_set_history, (setopt_get_func_t *)NULL }, + #endif + { "ignoreeof", '\0', &ignoreeof, set_ignoreeof, (setopt_get_func_t *)NULL }, +*************** +*** 382,385 **** +--- 390,394 ---- + if (on_or_off == FLAG_ON) + { ++ enable_history_list = 1; + bash_history_enable (); + if (history_lines_this_session == 0) +*************** +*** 387,392 **** + } + else +! bash_history_disable (); +! return (1 - remember_on_history); + } + #endif +--- 396,404 ---- + } + else +! { +! enable_history_list = 0; +! bash_history_disable (); +! } +! return (1 - enable_history_list); + } + #endif +*************** +*** 566,570 **** + { + #if defined (HISTORY) +! remember_on_history = 1; + #endif + ignoreeof = 0; +--- 578,582 ---- + { + #if defined (HISTORY) +! remember_on_history = enable_history_list = 1; + #endif + ignoreeof = 0; +*** ../bash-3.2-patched/builtins/evalstring.c 2006-07-28 15:12:16.000000000 -0400 +--- builtins/evalstring.c 2008-11-10 21:17:16.000000000 -0500 +*************** +*** 68,71 **** +--- 68,79 ---- + static int cat_file __P((REDIRECT *)); + ++ #if defined (HISTORY) ++ static void ++ set_history_remembering () ++ { ++ remember_on_history = enable_history_list; ++ } ++ #endif ++ + /* How to force parse_and_execute () to clean up after itself. */ + void +*************** +*** 116,120 **** + + #if defined (HISTORY) +! unwind_protect_int (remember_on_history); /* can be used in scripts */ + # if defined (BANG_HISTORY) + if (interactive_shell) +--- 124,131 ---- + + #if defined (HISTORY) +! if (parse_and_execute_level == 0) +! add_unwind_protect (set_history_remembering, (char *)NULL); +! else +! unwind_protect_int (remember_on_history); /* can be used in scripts */ + # if defined (BANG_HISTORY) + if (interactive_shell) +*** ../bash-3.2-patched/bashhist.h 2005-07-01 15:44:41.000000000 -0400 +--- bashhist.h 2008-08-17 12:51:07.000000000 -0400 +*************** +*** 32,35 **** +--- 32,38 ---- + + extern int remember_on_history; ++ extern int enable_history_list; /* value for `set -o history' */ ++ extern int literal_history; /* controlled by `shopt lithist' */ ++ extern int force_append_history; + extern int history_lines_this_session; + extern int history_lines_in_file; +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 40 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 41 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-042 b/src/patches/bash/bash32-042 new file mode 100644 index 0000000..4c9f4d6 --- /dev/null +++ b/src/patches/bash/bash32-042 @@ -0,0 +1,48 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-042 + +Bug-Reported-by: Archimerged Ark Submedes archimerged@gmail.com +Bug-Reference-ID: 5ba4bef00804182116g65ff71e0qdffcf672f205e708@mail.gmail.com +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2008-04/msg00041.html + +Bug-Description: + +An operator precedence error prevented the bash arithmetic evaluator from +parsing conditional commands correctly. + +Patch: + +*** ../bash-3.2-patched/expr.c 2007-12-13 22:30:43.000000000 -0500 +--- expr.c 2008-08-17 13:09:59.000000000 -0400 +*************** +*** 521,525 **** + noeval++; + } +! val2 = explor (); + if (set_noeval) + noeval--; +--- 521,526 ---- + noeval++; + } +! +! val2 = expcond (); + if (set_noeval) + noeval--; +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 41 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 42 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-043 b/src/patches/bash/bash32-043 new file mode 100644 index 0000000..5a51843 --- /dev/null +++ b/src/patches/bash/bash32-043 @@ -0,0 +1,62 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-043 + +Bug-Reported-by: Morita Sho morita-pub-en-debian@inz.sakura.ne.jp +Bug-Reference-ID: +Bug-Reference-URL: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=478096 + +Bug-Description: + +Side effects caused by setting function-local versions of variables bash +handles specially persisted after the function returned. + +Patch: + +*** ../bash-3.2-patched/variables.c 2007-08-25 13:47:05.000000000 -0400 +--- variables.c 2008-11-09 17:47:31.000000000 -0500 +*************** +*** 3459,3465 **** + var->attributes &= ~(att_tempvar|att_propagate); + else +! shell_variables->flags |= VC_HASTMPVAR; + v->attributes |= var->attributes; + } + + dispose_variable (var); +--- 3771,3779 ---- + var->attributes &= ~(att_tempvar|att_propagate); + else +! shell_variables->flags |= VC_HASTMPVAR; + v->attributes |= var->attributes; + } ++ else ++ stupidly_hack_special_variables (var->name); /* XXX */ + + dispose_variable (var); +*************** +*** 3548,3551 **** +--- 3862,3867 ---- + v->attributes |= var->attributes; + } ++ else ++ stupidly_hack_special_variables (var->name); /* XXX */ + + dispose_variable (var); +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 42 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 43 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-044 b/src/patches/bash/bash32-044 new file mode 100644 index 0000000..3e7a392 --- /dev/null +++ b/src/patches/bash/bash32-044 @@ -0,0 +1,150 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-044 + +Bug-Reported-by: slinkp stuff@slinkp.com +Bug-Reference-ID: da52a26a-9f38-4861-a918-14d3482b539d@c65g2000hsa.googlegroups.com +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2008-05/msg00085.html + +Bug-Description: + +The presence of invisible characters in a prompt longer than the screenwidth +with invisible characters on the first and last prompt lines caused readline +to place the cursor in the wrong physical location. + +Patch: + +*** ../bash-3.2-patched/lib/readline/display.c 2007-12-14 21:12:40.000000000 -0500 +--- lib/readline/display.c 2008-10-23 09:39:46.000000000 -0400 +*************** +*** 911,914 **** +--- 944,951 ---- + OFFSET (which has already been calculated above). */ + ++ #define INVIS_FIRST() (prompt_physical_chars > _rl_screenwidth ? prompt_invis_chars_first_line : wrap_offset) ++ #define WRAP_OFFSET(line, offset) ((line == 0) \ ++ ? (offset ? INVIS_FIRST() : 0) \ ++ : ((line == prompt_last_screen_line) ? wrap_offset-prompt_invis_chars_first_line : 0)) + #define W_OFFSET(line, offset) ((line) == 0 ? offset : 0) + #define VIS_LLEN(l) ((l) > _rl_vis_botlin ? 0 : (vis_lbreaks[l+1] - vis_lbreaks[l])) +*************** +*** 945,949 **** + _rl_last_c_pos > wrap_offset && + o_cpos < prompt_last_invisible) +! _rl_last_c_pos -= wrap_offset; + + /* If this is the line with the prompt, we might need to +--- 982,992 ---- + _rl_last_c_pos > wrap_offset && + o_cpos < prompt_last_invisible) +! _rl_last_c_pos -= prompt_invis_chars_first_line; /* XXX - was wrap_offset */ +! else if (linenum == prompt_last_screen_line && prompt_physical_chars > _rl_screenwidth && +! (MB_CUR_MAX > 1 && rl_byte_oriented == 0) && +! cpos_adjusted == 0 && +! _rl_last_c_pos != o_cpos && +! _rl_last_c_pos > (prompt_last_invisible - _rl_screenwidth - prompt_invis_chars_first_line)) +! _rl_last_c_pos -= (wrap_offset-prompt_invis_chars_first_line); + + /* If this is the line with the prompt, we might need to +*************** +*** 1205,1209 **** + { + register char *ofd, *ols, *oe, *nfd, *nls, *ne; +! int temp, lendiff, wsatend, od, nd, o_cpos; + int current_invis_chars; + int col_lendiff, col_temp; +--- 1264,1268 ---- + { + register char *ofd, *ols, *oe, *nfd, *nls, *ne; +! int temp, lendiff, wsatend, od, nd, twidth, o_cpos; + int current_invis_chars; + int col_lendiff, col_temp; +*************** +*** 1221,1225 **** + temp = _rl_last_c_pos; + else +! temp = _rl_last_c_pos - W_OFFSET(_rl_last_v_pos, visible_wrap_offset); + if (temp == _rl_screenwidth && _rl_term_autowrap && !_rl_horizontal_scroll_mode + && _rl_last_v_pos == current_line - 1) +--- 1280,1284 ---- + temp = _rl_last_c_pos; + else +! temp = _rl_last_c_pos - WRAP_OFFSET (_rl_last_v_pos, visible_wrap_offset); + if (temp == _rl_screenwidth && _rl_term_autowrap && !_rl_horizontal_scroll_mode + && _rl_last_v_pos == current_line - 1) +*************** +*** 1587,1599 **** + { + _rl_output_some_chars (nfd + lendiff, temp - lendiff); +- #if 1 + /* XXX -- this bears closer inspection. Fixes a redisplay bug + reported against bash-3.0-alpha by Andreas Schwab involving + multibyte characters and prompt strings with invisible + characters, but was previously disabled. */ +! _rl_last_c_pos += _rl_col_width (nfd+lendiff, 0, temp-col_lendiff); +! #else +! _rl_last_c_pos += _rl_col_width (nfd+lendiff, 0, temp-lendiff); +! #endif + } + } +--- 1648,1660 ---- + { + _rl_output_some_chars (nfd + lendiff, temp - lendiff); + /* XXX -- this bears closer inspection. Fixes a redisplay bug + reported against bash-3.0-alpha by Andreas Schwab involving + multibyte characters and prompt strings with invisible + characters, but was previously disabled. */ +! if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) +! twidth = _rl_col_width (nfd+lendiff, 0, temp-col_lendiff); +! else +! twidth = temp - lendiff; +! _rl_last_c_pos += twidth; + } + } +*************** +*** 1789,1793 **** + int cpos, dpos; /* current and desired cursor positions */ + +! woff = W_OFFSET (_rl_last_v_pos, wrap_offset); + cpos = _rl_last_c_pos; + #if defined (HANDLE_MULTIBYTE) +--- 1850,1854 ---- + int cpos, dpos; /* current and desired cursor positions */ + +! woff = WRAP_OFFSET (_rl_last_v_pos, wrap_offset); + cpos = _rl_last_c_pos; + #if defined (HANDLE_MULTIBYTE) +*************** +*** 1803,1807 **** + prompt string, since they're both buffer indices and DPOS is a + desired display position. */ +! if (new > prompt_last_invisible) /* XXX - don't use woff here */ + { + dpos -= woff; +--- 1864,1872 ---- + prompt string, since they're both buffer indices and DPOS is a + desired display position. */ +! if ((new > prompt_last_invisible) || /* XXX - don't use woff here */ +! (prompt_physical_chars > _rl_screenwidth && +! _rl_last_v_pos == prompt_last_screen_line && +! wrap_offset != woff && +! new > (prompt_last_invisible-_rl_screenwidth-wrap_offset))) + { + dpos -= woff; +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 43 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 44 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-045 b/src/patches/bash/bash32-045 new file mode 100644 index 0000000..68b91ff --- /dev/null +++ b/src/patches/bash/bash32-045 @@ -0,0 +1,50 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-045 + +Bug-Reported-by: Roman Rakus rrakus@redhat.com +Bug-Reference-ID: 4864B4A0.1060402@redhat.com +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2008-06/msg00098.html + +Bug-Description: + +When short-circuiting execution due to the `break' or `continue' builtins, +bash did not preserve the value of $?. + +Patch: + +*** ../bash-3.2-patched/execute_cmd.c 2008-04-28 22:00:24.000000000 -0400 +--- execute_cmd.c 2008-10-18 14:35:03.000000000 -0400 +*************** +*** 502,507 **** +--- 514,526 ---- + volatile int save_line_number; + ++ #if 0 + if (command == 0 || breaking || continuing || read_but_dont_execute) + return (EXECUTION_SUCCESS); ++ #else ++ if (breaking || continuing) ++ return (last_command_exit_value); ++ if (command == 0 || read_but_dont_execute) ++ return (EXECUTION_SUCCESS); ++ #endif + + QUIT; +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 44 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 45 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-046 b/src/patches/bash/bash32-046 new file mode 100644 index 0000000..78aaf01 --- /dev/null +++ b/src/patches/bash/bash32-046 @@ -0,0 +1,47 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-046 + +Bug-Reported-by: Wang Xin wxinee@gmail.com +Bug-Reference-ID: 9a73e1570807062042ide16698m10e1b18036c95592@mail.gmail.com +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2008-07/msg00014.html + +Bug-Description: + +Bash did not compute the length of multibyte characters correctly when +performing array element length references (e.g., ${#var[subscript]}). + +Patch: + +*** /usr/src/local/bash/bash-3.2-patched/subst.c 2008-04-28 22:00:20.000000000 -0400 +--- subst.c 2008-11-10 22:02:38.000000000 -0500 +*************** +*** 4813,4817 **** + t = (ind == 0) ? value_cell (var) : (char *)NULL; + +! len = STRLEN (t); + return (len); + } +--- 4813,4817 ---- + t = (ind == 0) ? value_cell (var) : (char *)NULL; + +! len = MB_STRLEN (t); + return (len); + } +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 45 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 46 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-047 b/src/patches/bash/bash32-047 new file mode 100644 index 0000000..b8272b1 --- /dev/null +++ b/src/patches/bash/bash32-047 @@ -0,0 +1,65 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-047 + +Bug-Reported-by: Roman Rakus rrakus@redhat.com +Bug-Reference-ID: 48A89EBC.906@redhat.com +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2008-08/msg00026.html + +Bug-Description: + +When using the `.' (source) builtin, under certain circumstances bash was +too careful in discarding state to preserve internal consistency. One +effect was that assignments to readonly variables would cause entire scripts +to be aborted instead of execution of the offending command. This behavior +was introduced by bash-3.2 patch 20. + +Patch: + +*** /usr/src/local/chet/src/bash/bash-3.2-patched/subst.c 2008-04-29 21:24:55.000000000 -0400 +--- subst.c 2008-11-13 17:44:25.000000000 -0500 +*************** +*** 138,142 **** + extern int last_command_exit_value, last_command_exit_signal; + extern int subshell_environment; +! extern int subshell_level; + extern int eof_encountered; + extern int return_catch_flag, return_catch_value; +--- 138,142 ---- + extern int last_command_exit_value, last_command_exit_signal; + extern int subshell_environment; +! extern int subshell_level, parse_and_execute_level; + extern int eof_encountered; + extern int return_catch_flag, return_catch_value; +*************** +*** 7673,7677 **** + expanding_redir = 0; + +! top_level_cleanup (); /* from sig.c */ + + jump_to_top_level (v); +--- 7673,7679 ---- + expanding_redir = 0; + +! if (parse_and_execute_level == 0) +! top_level_cleanup (); /* from sig.c */ +! + + jump_to_top_level (v); +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 46 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 47 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-048 b/src/patches/bash/bash32-048 new file mode 100644 index 0000000..551dade --- /dev/null +++ b/src/patches/bash/bash32-048 @@ -0,0 +1,56 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-048 + +Bug-Reported-by: Steffen Kiess s-kiess@web.de +Bug-Reference-ID: 1223929957.5383.6.camel@fips +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2008-10/msg00047.html + +Bug-Description: + +When invoked as `bash -c', bash did not execute an EXIT trap when the last +command in the executed list was a command run from the file system. + +Patch: + +*** /Users/chet/src/bash/bash-3.2-patched/builtins/evalstring.c 2006-07-28 15:12:16.000000000 -0400 +--- builtins/evalstring.c 2008-11-13 18:38:45.000000000 -0500 +*************** +*** 249,252 **** +--- 249,253 ---- + * we're not running a trap AND + * we have parsed the full command (string == '\0') AND ++ * we're not going to run the exit trap AND + * we have a simple command without redirections AND + * the command is not being timed AND +*************** +*** 259,263 **** + *bash_input.location.string == '\0' && + command->type == cm_simple && +! !command->redirects && !command->value.Simple->redirects && + ((command->flags & CMD_TIME_PIPELINE) == 0) && + ((command->flags & CMD_INVERT_RETURN) == 0)) +--- 260,265 ---- + *bash_input.location.string == '\0' && + command->type == cm_simple && +! signal_is_trapped (EXIT_TRAP) == 0 && +! command->redirects == 0 && command->value.Simple->redirects == 0 && + ((command->flags & CMD_TIME_PIPELINE) == 0) && + ((command->flags & CMD_INVERT_RETURN) == 0)) +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 47 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 48 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-049 b/src/patches/bash/bash32-049 new file mode 100644 index 0000000..469c4c8 --- /dev/null +++ b/src/patches/bash/bash32-049 @@ -0,0 +1,64 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-049 + +Bug-Reported-by: Len Lattanzi llattanzi@apple.com +Bug-Reference-ID: 52B1297F-6675-45CC-B63E-24745337D006@apple.com +Bug-Reference-URL: + +Bug-Description: + +On systems where mbrtowc() returns -2 when passed a length argument with +value 0, when using a multibyte locale, Readline's emacs-mode forward-char +at the end of a line will leave the point beyond the end of the line. + +Patch: + +*** ../bash-3.2-patched/lib/readline/mbutil.c 2009-05-29 23:09:26.000000000 -0400 +--- lib/readline/mbutil.c 2009-05-29 23:10:12.000000000 -0400 +*************** +*** 78,82 **** + int seed, count, find_non_zero; + { +! size_t tmp; + mbstate_t ps; + int point; +--- 78,82 ---- + int seed, count, find_non_zero; + { +! size_t tmp, len; + mbstate_t ps; + int point; +*************** +*** 99,103 **** + while (count > 0) + { +! tmp = mbrtowc (&wc, string+point, strlen(string + point), &ps); + if (MB_INVALIDCH ((size_t)tmp)) + { +--- 99,106 ---- + while (count > 0) + { +! len = strlen (string + point); +! if (len == 0) +! break; +! tmp = mbrtowc (&wc, string+point, len, &ps); + if (MB_INVALIDCH ((size_t)tmp)) + { +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 48 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 49 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-050 b/src/patches/bash/bash32-050 new file mode 100644 index 0000000..aef537e --- /dev/null +++ b/src/patches/bash/bash32-050 @@ -0,0 +1,56 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-050 + +Bug-Reported-by: Jan Hnatek Jan.Hnatek@Sun.COM +Bug-Reference-ID: 4A44991F.8010005@sun.com +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-06/msg00084.html + +Bug-Description: + +On systems where mbrtowc() returns -2 when passed a length argument with +value 0, when using a multibyte locale, Readline's emacs-mode forward-char +at the end of a line will leave the point beyond the end of the line. + +Patch: + +*** ../bash-3.2-patched/lib/readline/mbutil.c 2009-06-16 11:26:50.000000000 -0400 +--- lib/readline/mbutil.c 2009-01-04 14:32:33.000000000 -0500 +*************** +*** 132,141 **** + { + tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps); +! while (tmp > 0 && wcwidth (wc) == 0) + { + point += tmp; + tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps); +- if (MB_NULLWCH (tmp) || MB_INVALIDCH (tmp)) +- break; + } + } +--- 130,137 ---- + { + tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps); +! while (MB_NULLWCH (tmp) == 0 && MB_INVALIDCH (tmp) == 0 && wcwidth (wc) == 0) + { + point += tmp; + tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps); + } + } +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 49 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 50 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-051 b/src/patches/bash/bash32-051 new file mode 100644 index 0000000..404fbd6 --- /dev/null +++ b/src/patches/bash/bash32-051 @@ -0,0 +1,46 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-051 + +Bug-Reported-by: werner@suse.de +Bug-Reference-ID: 201002251238.o1PCcYcg016893@boole.suse.de +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2010-02/msg00132.html + +Bug-Description: + +When the `read' builtin times out after the timeout specified with -t is +exceeded, it does not reset the flags that tell signal handlers to process +signals immediately instead of deferring their handling. This can result +in unsafe functions being called from signal handlers, which can cause bash +to hang or dump core. + +Patch: + +*** ../bash-3.2-patched/builtins/read.def 2008-04-29 21:25:00.000000000 -0400 +--- builtins/read.def 2010-03-17 09:50:51.000000000 -0400 +*************** +*** 327,330 **** +--- 327,332 ---- + if (code) + { ++ interrupt_immediately--; ++ terminate_immediately = 0; + run_unwind_frame ("read_builtin"); + return (EXECUTION_FAILURE); +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 50 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 51 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/binutils-2.18-configure-1.patch b/src/patches/binutils-2.18-configure-1.patch deleted file mode 100644 index ae6aaa3..0000000 --- a/src/patches/binutils-2.18-configure-1.patch +++ /dev/null @@ -1,19 +0,0 @@ -Submitted By: Matt Burgess (matthew at linuxfromscratch dot org) -Date: 2007-11-19 -Initial Package Version: 2.18 -Origin: Upstream (http://sourceware.org/cgi-bin/cvsweb.cgi/src/configure.diff?r1=1.268&r2=...) -Upstream Status: Applied -Description: Fixes the configure script to correctly dictate Texinfo > 4.9. - -diff -Naur binutils-2.18.orig/configure binutils-2.18/configure ---- binutils-2.18.orig/configure 2007-08-06 20:29:40.000000000 +0000 -+++ binutils-2.18/configure 2007-11-18 22:37:58.000000000 +0000 -@@ -6128,7 +6128,7 @@ - # For an installed makeinfo, we require it to be from texinfo 4.4 or - # higher, else we use the "missing" dummy. - if ${MAKEINFO} --version \ -- | egrep 'texinfo[^0-9]*([1-3][0-9]|4.[4-9]|[5-9])' >/dev/null 2>&1; then -+ | egrep 'texinfo[^0-9]*(4.([4-9]|[1-9][0-9])|[5-9]|[1-9][0-9])' >/dev/null 2>&1; then - : - else - MAKEINFO="$MISSING makeinfo" diff --git a/src/patches/coreutils-5.96-futimes.patch b/src/patches/coreutils-5.96-futimes.patch new file mode 100644 index 0000000..e91f1df --- /dev/null +++ b/src/patches/coreutils-5.96-futimes.patch @@ -0,0 +1,56 @@ +--- coreutils-6.0.orig/lib/utimens.c 2006-06-11 09:14:31.000000000 +0200 ++++ coreutils-6.0/lib/utimens.c 2007-07-17 00:41:08.000000000 +0200 +@@ -75,7 +75,7 @@ + Return 0 on success, -1 (setting errno) on failure. */ + + int +-futimens (int fd ATTRIBUTE_UNUSED, ++cu_futimens (int fd ATTRIBUTE_UNUSED, + char const *file, struct timespec const timespec[2]) + { + /* There's currently no interface to set file timestamps with +@@ -168,5 +168,5 @@ + int + utimens (char const *file, struct timespec const timespec[2]) + { +- return futimens (-1, file, timespec); ++ return cu_futimens (-1, file, timespec); + } +--- coreutils-6.0.orig/lib/utimens.h 2004-11-23 21:41:51.000000000 +0100 ++++ coreutils-6.0/lib/utimens.h 2007-07-17 00:41:31.000000000 +0200 +@@ -1,3 +1,3 @@ + #include "timespec.h" +-int futimens (int, char const *, struct timespec const [2]); ++int cu_futimens (int, char const *, struct timespec const [2]); + int utimens (char const *, struct timespec const [2]); +--- coreutils-6.0.orig/src/copy.c 2007-07-16 23:18:42.000000000 +0200 ++++ coreutils-6.0/src/copy.c 2007-07-17 00:43:10.000000000 +0200 +@@ -648,7 +648,7 @@ + timespec[0] = get_stat_atime (src_sb); + timespec[1] = get_stat_mtime (src_sb); + +- if (futimens (dest_desc, dst_name, timespec) != 0) ++ if (cu_futimens (dest_desc, dst_name, timespec) != 0) + { + error (0, errno, _("preserving times for %s"), quote (dst_name)); + if (x->require_preserve) +--- coreutils-6.0.orig/src/touch.c 2005-11-02 11:01:07.000000000 +0100 ++++ coreutils-6.0/src/touch.c 2007-07-17 00:43:51.000000000 +0200 +@@ -167,7 +167,7 @@ + + if (amtime_now) + { +- /* Pass NULL to futimens so it will not fail if we have ++ /* Pass NULL to cu_futimens so it will not fail if we have + write access to the file, but don't own it. */ + t = NULL; + } +@@ -182,7 +182,7 @@ + t = timespec; + } + +- ok = (futimens (fd, (fd == STDOUT_FILENO ? NULL : file), t) == 0); ++ ok = (cu_futimens (fd, (fd == STDOUT_FILENO ? NULL : file), t) == 0); + + if (fd == STDIN_FILENO) + { diff --git a/src/patches/cyrus-sasl-2.1.22-bad-elif.patch b/src/patches/cyrus-sasl-2.1.22-bad-elif.patch new file mode 100644 index 0000000..33550c4 --- /dev/null +++ b/src/patches/cyrus-sasl-2.1.22-bad-elif.patch @@ -0,0 +1,21 @@ +diff -up cyrus-sasl-2.1.22/plugins/digestmd5.c.elif cyrus-sasl-2.1.22/plugins/digestmd5.c +--- cyrus-sasl-2.1.22/plugins/digestmd5.c.elif 2009-01-23 09:40:31.000000000 +0100 ++++ cyrus-sasl-2.1.22/plugins/digestmd5.c 2009-02-06 15:20:15.000000000 +0100 +@@ -2743,7 +2743,7 @@ static sasl_server_plug_t digestmd5_serv + "DIGEST-MD5", /* mech_name */ + #ifdef WITH_RC4 + 128, /* max_ssf */ +-#elif WITH_DES ++#elif defined(WITH_DES) + 112, + #else + 1, +@@ -4071,7 +4071,7 @@ static sasl_client_plug_t digestmd5_clie + "DIGEST-MD5", + #ifdef WITH_RC4 /* mech_name */ + 128, /* max ssf */ +-#elif WITH_DES ++#elif defined(WITH_DES) + 112, + #else + 1, diff --git a/src/patches/dbus-1.0.3-compile-fix-1.patch b/src/patches/dbus-1.0.3-compile-fix-1.patch new file mode 100644 index 0000000..86fd2b3 --- /dev/null +++ b/src/patches/dbus-1.0.3-compile-fix-1.patch @@ -0,0 +1,11 @@ +--- dbus-1.0.1.orig/dbus/dbus-sysdeps-unix.c 2009-01-01 03:50:33.000000000 +0200 ++++ dbus-1.0.1.orig/dbus/dbus-sysdeps-unix.c 2009-01-01 04:09:24.000000000 +0200 +@@ -992,7 +992,7 @@ + _dbus_verbose ("read credentials byte\n"); + + { +-#ifdef SO_PEERCRED ++#if defined(SO_PEERCRED) && defined(HAVE_GETPEERUCRED) + struct ucred cr; + int cr_len = sizeof (cr); + diff --git a/src/patches/directfb-1.1.1-fix-mknod.patch b/src/patches/directfb-1.1.1-fix-mknod.patch new file mode 100644 index 0000000..97633e2 --- /dev/null +++ b/src/patches/directfb-1.1.1-fix-mknod.patch @@ -0,0 +1,26 @@ +Description: directfb ftbfs on armel. Implicit declaration error + Fix for ARM builds failing on: + ../../../gfxdrivers/davinci/davinci_c64x.c: In function 'davinci_c64x_open': + ../../../gfxdrivers/davinci/davinci_c64x.c:1900:6: error: implicit declaration of function 'mknod' [-Werror=implicit-function-declaration] + cc1: some warnings being treated as errors + . + directfb (1.2.10.0-4.3) unstable; urgency=low + . + * Non-maintainer upload. + * Fix "directfb ftbfs on armel. Implicit declaration error" + - Thanks Peter Green for bug report and patch (Closes: #644782) + * Remove m4 macros when calling clean target +Author: Hector Oron zumbi@debian.org +Bug-Debian: http://bugs.debian.org/644782 + +--- directfb-1.2.10.0.orig/gfxdrivers/davinci/davinci_c64x.c ++++ directfb-1.2.10.0/gfxdrivers/davinci/davinci_c64x.c +@@ -37,6 +37,8 @@ + #include <sys/ioctl.h> + #include <sys/mman.h> + #include <sys/types.h> ++#include <sys/stat.h> ++ + #include <unistd.h> + + #include <directfb_util.h> diff --git a/src/patches/flac-1.2.1-asm.patch b/src/patches/flac-1.2.1-asm.patch new file mode 100644 index 0000000..932a761 --- /dev/null +++ b/src/patches/flac-1.2.1-asm.patch @@ -0,0 +1,73 @@ +diff -up flac-1.2.1/src/libFLAC/stream_decoder.c.asm flac-1.2.1/src/libFLAC/stream_decoder.c +--- flac-1.2.1/src/libFLAC/stream_decoder.c.asm 2007-09-13 17:38:05.000000000 +0200 ++++ flac-1.2.1/src/libFLAC/stream_decoder.c 2008-01-29 10:32:17.000000000 +0100 +@@ -421,7 +421,7 @@ static FLAC__StreamDecoderInitStatus ini + #ifdef FLAC__CPU_IA32 + FLAC__ASSERT(decoder->private_->cpuinfo.type == FLAC__CPUINFO_TYPE_IA32); + #ifdef FLAC__HAS_NASM +-#if 1 /*@@@@@@ OPT: not clearly faster, needs more testing */ ++#if 0 /*@@@@@@ OPT: not clearly faster, needs more testing */ + if(decoder->private_->cpuinfo.data.ia32.bswap) + decoder->private_->local_bitreader_read_rice_signed_block = FLAC__bitreader_read_rice_signed_block_asm_ia32_bswap; + #endif +diff -up flac-1.2.1/src/libFLAC/ia32/lpc_asm.nasm.asm flac-1.2.1/src/libFLAC/ia32/lpc_asm.nasm +--- flac-1.2.1/src/libFLAC/ia32/lpc_asm.nasm.asm 2007-03-22 05:13:05.000000000 +0100 ++++ flac-1.2.1/src/libFLAC/ia32/lpc_asm.nasm 2008-01-29 10:34:09.000000000 +0100 +@@ -1507,5 +1507,5 @@ cident FLAC__lpc_restore_signal_asm_ia32 + end + + %ifdef OBJ_FORMAT_elf +- section .note.GNU-stack noalloc ++ section .note.GNU-stack progbits noalloc noexec nowrite align=1 + %endif +diff -up flac-1.2.1/src/libFLAC/ia32/Makefile.am.asm flac-1.2.1/src/libFLAC/ia32/Makefile.am +--- flac-1.2.1/src/libFLAC/ia32/Makefile.am.asm 2007-04-04 02:01:13.000000000 +0200 ++++ flac-1.2.1/src/libFLAC/ia32/Makefile.am 2008-03-17 14:04:37.000000000 +0100 +@@ -37,7 +37,6 @@ STRIP_NON_ASM = sh $(top_srcdir)/strip_n + + noinst_LTLIBRARIES = libFLAC-asm.la + libFLAC_asm_la_SOURCES = \ +- bitreader_asm.nasm \ + cpu_asm.nasm \ + fixed_asm.nasm \ + lpc_asm.nasm \ +diff -up flac-1.2.1/src/libFLAC/ia32/bitreader_asm.nasm.asm flac-1.2.1/src/libFLAC/ia32/bitreader_asm.nasm +--- flac-1.2.1/src/libFLAC/ia32/bitreader_asm.nasm.asm 2007-03-30 02:54:53.000000000 +0200 ++++ flac-1.2.1/src/libFLAC/ia32/bitreader_asm.nasm 2008-01-29 10:32:57.000000000 +0100 +@@ -564,5 +564,5 @@ cident FLAC__bitreader_read_rice_signed_ + end + + %ifdef OBJ_FORMAT_elf +- section .note.GNU-stack noalloc ++ section .note.GNU-stack progbits noalloc noexec nowrite align=1 + %endif +diff -up flac-1.2.1/src/libFLAC/ia32/fixed_asm.nasm.asm flac-1.2.1/src/libFLAC/ia32/fixed_asm.nasm +--- flac-1.2.1/src/libFLAC/ia32/fixed_asm.nasm.asm 2007-03-22 05:13:05.000000000 +0100 ++++ flac-1.2.1/src/libFLAC/ia32/fixed_asm.nasm 2008-01-29 10:33:52.000000000 +0100 +@@ -308,5 +308,5 @@ cident FLAC__fixed_compute_best_predicto + end + + %ifdef OBJ_FORMAT_elf +- section .note.GNU-stack noalloc ++ section .note.GNU-stack progbits noalloc noexec nowrite align=1 + %endif +diff -up flac-1.2.1/src/libFLAC/ia32/cpu_asm.nasm.asm flac-1.2.1/src/libFLAC/ia32/cpu_asm.nasm +--- flac-1.2.1/src/libFLAC/ia32/cpu_asm.nasm.asm 2007-03-22 05:13:05.000000000 +0100 ++++ flac-1.2.1/src/libFLAC/ia32/cpu_asm.nasm 2008-01-29 10:33:24.000000000 +0100 +@@ -117,5 +117,5 @@ cident FLAC__cpu_info_extended_amd_asm_i + end + + %ifdef OBJ_FORMAT_elf +- section .note.GNU-stack noalloc ++ section .note.GNU-stack progbits noalloc noexec nowrite align=1 + %endif +diff -up flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm.asm flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm +--- flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm.asm 2007-06-19 22:01:27.000000000 +0200 ++++ flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm 2008-01-29 10:34:40.000000000 +0100 +@@ -155,5 +155,5 @@ cident precompute_partition_info_sums_32 + end + + %ifdef OBJ_FORMAT_elf +- section .note.GNU-stack noalloc ++ section .note.GNU-stack progbits noalloc noexec nowrite align=1 + %endif diff --git a/src/patches/flac-1.2.1-bitreader.patch b/src/patches/flac-1.2.1-bitreader.patch new file mode 100644 index 0000000..9d47af3 --- /dev/null +++ b/src/patches/flac-1.2.1-bitreader.patch @@ -0,0 +1,558 @@ +Index: src/libFLAC/bitreader.c +=================================================================== +RCS file: /cvsroot/flac/flac/src/libFLAC/bitreader.c,v +retrieving revision 1.15 +diff -u -r1.15 bitreader.c +--- src/libFLAC/bitreader.c 28 Feb 2008 05:34:26 -0000 1.15 ++++ src/libFLAC/bitreader.c 14 Mar 2008 11:07:07 -0000 +@@ -69,13 +69,12 @@ + #endif + /* counts the # of zero MSBs in a word */ + #define COUNT_ZERO_MSBS(word) ( \ +- (word) <= 0xffff ? \ +- ( (word) <= 0xff? byte_to_unary_table[word] + 24 : byte_to_unary_table[(word) >> 8] + 16 ) : \ +- ( (word) <= 0xffffff? byte_to_unary_table[word >> 16] + 8 : byte_to_unary_table[(word) >> 24] ) \ ++ word > 0xffffff ? byte_to_unary_table[(word) >> 24] : \ ++ !word ? 32 : \ ++ word > 0xffff ? byte_to_unary_table[word >> 16] + 8 : \ ++ word > 0xff ? byte_to_unary_table[(word) >> 8] + 16 : \ ++ byte_to_unary_table[word] + 24 \ + ) +-/* this alternate might be slightly faster on some systems/compilers: */ +-#define COUNT_ZERO_MSBS2(word) ( (word) <= 0xff ? byte_to_unary_table[word] + 24 : ((word) <= 0xffff ? byte_to_unary_table[(word) >> 8] + 16 : ((word) <= 0xffffff ? byte_to_unary_table[(word) >> 16] + 8 : byte_to_unary_table[(word) >> 24])) ) +- + + /* + * This should be at least twice as large as the largest number of words +Index: src/libFLAC/bitreader.c +=================================================================== +RCS file: /cvsroot/flac/flac/src/libFLAC/bitreader.c,v +retrieving revision 1.15 +diff -u -r1.15 bitreader.c +--- src/libFLAC/bitreader.c 28 Feb 2008 05:34:26 -0000 1.15 ++++ src/libFLAC/bitreader.c 14 Mar 2008 13:19:46 -0000 +@@ -149,6 +148,7 @@ + FLAC__CPUInfo cpu_info; + }; + ++#if FLAC__BYTES_PER_WORD == 4 && FLAC__CPU_IA32 + #ifdef _MSC_VER + /* OPT: an MSVC built-in would be better */ + static _inline FLAC__uint32 local_swap32_(FLAC__uint32 x) +@@ -173,6 +173,15 @@ + done1: + } + } ++#elif __GNUC__ ++static void local_swap32_block_(FLAC__uint32 *start, FLAC__uint32 len) ++{ ++ FLAC__uint32 *end; ++ ++ for(end = start + len; start < end; start++) ++ asm ("bswap %0" : "=r"(*start) : "0"(*start)); ++} ++#endif + #endif + + static FLaC__INLINE void crc16_update_word_(FLAC__BitReader *br, brword word) +@@ -263,7 +272,7 @@ + #if WORDS_BIGENDIAN + #else + end = (br->words*FLAC__BYTES_PER_WORD + br->bytes + bytes + (FLAC__BYTES_PER_WORD-1)) / FLAC__BYTES_PER_WORD; +-# if defined(_MSC_VER) && (FLAC__BYTES_PER_WORD == 4) ++# if FLAC__CPU_IA32 && (__GNUC__ || defined(_MSC_VER)) && FLAC__BYTES_PER_WORD == 4 + if(br->cpu_info.type == FLAC__CPUINFO_TYPE_IA32 && br->cpu_info.data.ia32.bswap) { + start = br->words; + local_swap32_block_(br->buffer + start, end - start); +Index: src/libFLAC/bitreader.c +=================================================================== +RCS file: /cvsroot/flac/flac/src/libFLAC/bitreader.c,v +retrieving revision 1.15 +diff -u -r1.15 bitreader.c +--- src/libFLAC/bitreader.c 28 Feb 2008 05:34:26 -0000 1.15 ++++ src/libFLAC/bitreader.c 17 Mar 2008 15:42:57 -0000 +@@ -803,379 +812,144 @@ + } + + /* this is by far the most heavily used reader call. it ain't pretty but it's fast */ +-/* a lot of the logic is copied, then adapted, from FLAC__bitreader_read_unary_unsigned() and FLAC__bitreader_read_raw_uint32() */ + FLAC__bool FLAC__bitreader_read_rice_signed_block(FLAC__BitReader *br, int vals[], unsigned nvals, unsigned parameter) +-/* OPT: possibly faster version for use with MSVC */ +-#ifdef _MSC_VER + { +- unsigned i; +- unsigned uval = 0; +- unsigned bits; /* the # of binary LSBs left to read to finish a rice codeword */ +- + /* try and get br->consumed_words and br->consumed_bits into register; + * must remember to flush them back to *br before calling other +- * bitwriter functions that use them, and before returning */ +- register unsigned cwords; +- register unsigned cbits; ++ * bitreader functions that use them, and before returning */ ++ unsigned cwords, words, lsbs, msbs, x, y; ++ unsigned ucbits; /* keep track of the number of unconsumed bits in word */ ++ brword b; ++ int *val, *end; + + FLAC__ASSERT(0 != br); + FLAC__ASSERT(0 != br->buffer); + /* WATCHOUT: code does not work with <32bit words; we can make things much faster with this assertion */ + FLAC__ASSERT(FLAC__BITS_PER_WORD >= 32); + FLAC__ASSERT(parameter < 32); +- /* the above two asserts also guarantee that the binary part never straddles more that 2 words, so we don't have to loop to read it */ +- +- if(nvals == 0) +- return true; +- +- cbits = br->consumed_bits; +- cwords = br->consumed_words; ++ /* the above two asserts also guarantee that the binary part never straddles more than 2 words, so we don't have to loop to read it */ + +- while(1) { ++ val = vals; ++ end = vals + nvals; + +- /* read unary part */ +- while(1) { +- while(cwords < br->words) { /* if we've not consumed up to a partial tail word... */ +- brword b = br->buffer[cwords] << cbits; +- if(b) { +-#if 0 /* slower, probably due to bad register allocation... */ && defined FLAC__CPU_IA32 && !defined FLAC__NO_ASM && FLAC__BITS_PER_WORD == 32 +- __asm { +- bsr eax, b +- not eax +- and eax, 31 +- mov i, eax +- } +-#else +- i = COUNT_ZERO_MSBS(b); +-#endif +- uval += i; +- bits = parameter; +- i++; +- cbits += i; +- if(cbits == FLAC__BITS_PER_WORD) { +- crc16_update_word_(br, br->buffer[cwords]); +- cwords++; +- cbits = 0; +- } +- goto break1; +- } +- else { +- uval += FLAC__BITS_PER_WORD - cbits; +- crc16_update_word_(br, br->buffer[cwords]); +- cwords++; +- cbits = 0; +- /* didn't find stop bit yet, have to keep going... */ +- } +- } +- /* at this point we've eaten up all the whole words; have to try +- * reading through any tail bytes before calling the read callback. +- * this is a repeat of the above logic adjusted for the fact we +- * don't have a whole word. note though if the client is feeding +- * us data a byte at a time (unlikely), br->consumed_bits may not +- * be zero. +- */ +- if(br->bytes) { +- const unsigned end = br->bytes * 8; +- brword b = (br->buffer[cwords] & (FLAC__WORD_ALL_ONES << (FLAC__BITS_PER_WORD-end))) << cbits; +- if(b) { +- i = COUNT_ZERO_MSBS(b); +- uval += i; +- bits = parameter; +- i++; +- cbits += i; +- FLAC__ASSERT(cbits < FLAC__BITS_PER_WORD); +- goto break1; +- } +- else { +- uval += end - cbits; +- cbits += end; +- FLAC__ASSERT(cbits < FLAC__BITS_PER_WORD); +- /* didn't find stop bit yet, have to keep going... */ +- } +- } +- /* flush registers and read; bitreader_read_from_client_() does +- * not touch br->consumed_bits at all but we still need to set +- * it in case it fails and we have to return false. +- */ +- br->consumed_bits = cbits; +- br->consumed_words = cwords; +- if(!bitreader_read_from_client_(br)) ++ if(parameter == 0) { ++ while(val < end) { ++ /* read the unary MSBs and end bit */ ++ if(!FLAC__bitreader_read_unary_unsigned(br, &msbs)) + return false; +- cwords = br->consumed_words; +- } +-break1: +- /* read binary part */ +- FLAC__ASSERT(cwords <= br->words); +- +- if(bits) { +- while((br->words-cwords)*FLAC__BITS_PER_WORD + br->bytes*8 - cbits < bits) { +- /* flush registers and read; bitreader_read_from_client_() does +- * not touch br->consumed_bits at all but we still need to set +- * it in case it fails and we have to return false. +- */ +- br->consumed_bits = cbits; +- br->consumed_words = cwords; +- if(!bitreader_read_from_client_(br)) +- return false; +- cwords = br->consumed_words; +- } +- if(cwords < br->words) { /* if we've not consumed up to a partial tail word... */ +- if(cbits) { +- /* this also works when consumed_bits==0, it's just a little slower than necessary for that case */ +- const unsigned n = FLAC__BITS_PER_WORD - cbits; +- const brword word = br->buffer[cwords]; +- if(bits < n) { +- uval <<= bits; +- uval |= (word & (FLAC__WORD_ALL_ONES >> cbits)) >> (n-bits); +- cbits += bits; +- goto break2; +- } +- uval <<= n; +- uval |= word & (FLAC__WORD_ALL_ONES >> cbits); +- bits -= n; +- crc16_update_word_(br, word); +- cwords++; +- cbits = 0; +- if(bits) { /* if there are still bits left to read, there have to be less than 32 so they will all be in the next word */ +- uval <<= bits; +- uval |= (br->buffer[cwords] >> (FLAC__BITS_PER_WORD-bits)); +- cbits = bits; +- } +- goto break2; +- } +- else { +- FLAC__ASSERT(bits < FLAC__BITS_PER_WORD); +- uval <<= bits; +- uval |= br->buffer[cwords] >> (FLAC__BITS_PER_WORD-bits); +- cbits = bits; +- goto break2; +- } +- } +- else { +- /* in this case we're starting our read at a partial tail word; +- * the reader has guaranteed that we have at least 'bits' bits +- * available to read, which makes this case simpler. +- */ +- uval <<= bits; +- if(cbits) { +- /* this also works when consumed_bits==0, it's just a little slower than necessary for that case */ +- FLAC__ASSERT(cbits + bits <= br->bytes*8); +- uval |= (br->buffer[cwords] & (FLAC__WORD_ALL_ONES >> cbits)) >> (FLAC__BITS_PER_WORD-cbits-bits); +- cbits += bits; +- goto break2; +- } +- else { +- uval |= br->buffer[cwords] >> (FLAC__BITS_PER_WORD-bits); +- cbits += bits; +- goto break2; +- } +- } +- } +-break2: +- /* compose the value */ +- *vals = (int)(uval >> 1 ^ -(int)(uval & 1)); + +- /* are we done? */ +- --nvals; +- if(nvals == 0) { +- br->consumed_bits = cbits; +- br->consumed_words = cwords; +- return true; ++ *val++ = (int)(msbs >> 1) ^ -(int)(msbs & 1); + } + +- uval = 0; +- ++vals; +- ++ return true; + } +-} +-#else +-{ +- unsigned i; +- unsigned uval = 0; + +- /* try and get br->consumed_words and br->consumed_bits into register; +- * must remember to flush them back to *br before calling other +- * bitwriter functions that use them, and before returning */ +- register unsigned cwords; +- register unsigned cbits; +- unsigned ucbits; /* keep track of the number of unconsumed bits in the buffer */ ++ FLAC__ASSERT(parameter > 0); + +- FLAC__ASSERT(0 != br); +- FLAC__ASSERT(0 != br->buffer); +- /* WATCHOUT: code does not work with <32bit words; we can make things much faster with this assertion */ +- FLAC__ASSERT(FLAC__BITS_PER_WORD >= 32); +- FLAC__ASSERT(parameter < 32); +- /* the above two asserts also guarantee that the binary part never straddles more than 2 words, so we don't have to loop to read it */ ++ cwords = br->consumed_words; ++ words = br->words; + +- if(nvals == 0) +- return true; ++ /* if we've not consumed up to a partial tail word... */ ++ if(cwords >= words) { ++ x = 0; ++ goto process_tail; ++ } ++ ++ ucbits = FLAC__BITS_PER_WORD - br->consumed_bits; ++ b = br->buffer[cwords] << br->consumed_bits; /* keep unconsumed bits aligned to left */ ++ ++ while(val < end) { ++ /* read the unary MSBs and end bit */ ++ x = y = COUNT_ZERO_MSBS(b); ++ if(x == FLAC__BITS_PER_WORD) { ++ x = ucbits; ++ do { ++ /* didn't find stop bit yet, have to keep going... */ ++ crc16_update_word_(br, br->buffer[cwords++]); ++ if (cwords >= words) ++ goto incomplete_msbs; ++ b = br->buffer[cwords]; ++ y = COUNT_ZERO_MSBS(b); ++ x += y; ++ } while(y == FLAC__BITS_PER_WORD); ++ } ++ b <<= y; ++ b <<= 1; /* account for stop bit */ ++ ucbits = (ucbits - x - 1) % FLAC__BITS_PER_WORD; ++ msbs = x; ++ ++ /* read the binary LSBs */ ++ x = b >> (FLAC__BITS_PER_WORD - parameter); ++ if(parameter <= ucbits) { ++ ucbits -= parameter; ++ b <<= parameter; ++ } else { ++ /* there are still bits left to read, they will all be in the next word */ ++ crc16_update_word_(br, br->buffer[cwords++]); ++ if (cwords >= words) ++ goto incomplete_lsbs; ++ b = br->buffer[cwords]; ++ ucbits += FLAC__BITS_PER_WORD - parameter; ++ x |= b >> ucbits; ++ b <<= FLAC__BITS_PER_WORD - ucbits; ++ } ++ lsbs = x; + +- cbits = br->consumed_bits; +- cwords = br->consumed_words; +- ucbits = (br->words-cwords)*FLAC__BITS_PER_WORD + br->bytes*8 - cbits; ++ /* compose the value */ ++ x = (msbs << parameter) | lsbs; ++ *val++ = (int)(x >> 1) ^ -(int)(x & 1); + +- while(1) { ++ continue; + +- /* read unary part */ +- while(1) { +- while(cwords < br->words) { /* if we've not consumed up to a partial tail word... */ +- brword b = br->buffer[cwords] << cbits; +- if(b) { +-#if 0 /* is not discernably faster... */ && defined FLAC__CPU_IA32 && !defined FLAC__NO_ASM && FLAC__BITS_PER_WORD == 32 && defined __GNUC__ +- asm volatile ( +- "bsrl %1, %0;" +- "notl %0;" +- "andl $31, %0;" +- : "=r"(i) +- : "r"(b) +- ); +-#else +- i = COUNT_ZERO_MSBS(b); +-#endif +- uval += i; +- cbits += i; +- cbits++; /* skip over stop bit */ +- if(cbits >= FLAC__BITS_PER_WORD) { /* faster way of testing if(cbits == FLAC__BITS_PER_WORD) */ +- crc16_update_word_(br, br->buffer[cwords]); +- cwords++; +- cbits = 0; +- } +- goto break1; +- } +- else { +- uval += FLAC__BITS_PER_WORD - cbits; +- crc16_update_word_(br, br->buffer[cwords]); +- cwords++; +- cbits = 0; +- /* didn't find stop bit yet, have to keep going... */ +- } +- } +- /* at this point we've eaten up all the whole words; have to try +- * reading through any tail bytes before calling the read callback. +- * this is a repeat of the above logic adjusted for the fact we +- * don't have a whole word. note though if the client is feeding +- * us data a byte at a time (unlikely), br->consumed_bits may not +- * be zero. +- */ +- if(br->bytes) { +- const unsigned end = br->bytes * 8; +- brword b = (br->buffer[cwords] & ~(FLAC__WORD_ALL_ONES >> end)) << cbits; +- if(b) { +- i = COUNT_ZERO_MSBS(b); +- uval += i; +- cbits += i; +- cbits++; /* skip over stop bit */ +- FLAC__ASSERT(cbits < FLAC__BITS_PER_WORD); +- goto break1; +- } +- else { +- uval += end - cbits; +- cbits += end; +- FLAC__ASSERT(cbits < FLAC__BITS_PER_WORD); +- /* didn't find stop bit yet, have to keep going... */ +- } ++ /* at this point we've eaten up all the whole words */ ++process_tail: ++ do { ++ if(0) { ++incomplete_msbs: ++ br->consumed_bits = 0; ++ br->consumed_words = cwords; + } +- /* flush registers and read; bitreader_read_from_client_() does +- * not touch br->consumed_bits at all but we still need to set +- * it in case it fails and we have to return false. +- */ +- br->consumed_bits = cbits; +- br->consumed_words = cwords; +- if(!bitreader_read_from_client_(br)) ++ ++ /* read the unary MSBs and end bit */ ++ if(!FLAC__bitreader_read_unary_unsigned(br, &msbs)) + return false; +- cwords = br->consumed_words; +- ucbits = (br->words-cwords)*FLAC__BITS_PER_WORD + br->bytes*8 - cbits + uval; +- /* + uval to offset our count by the # of unary bits already +- * consumed before the read, because we will add these back +- * in all at once at break1 +- */ +- } +-break1: +- ucbits -= uval; +- ucbits--; /* account for stop bit */ +- +- /* read binary part */ +- FLAC__ASSERT(cwords <= br->words); +- +- if(parameter) { +- while(ucbits < parameter) { +- /* flush registers and read; bitreader_read_from_client_() does +- * not touch br->consumed_bits at all but we still need to set +- * it in case it fails and we have to return false. +- */ +- br->consumed_bits = cbits; ++ msbs += x; ++ x = ucbits = 0; ++ ++ if(0) { ++incomplete_lsbs: ++ br->consumed_bits = 0; + br->consumed_words = cwords; +- if(!bitreader_read_from_client_(br)) +- return false; +- cwords = br->consumed_words; +- ucbits = (br->words-cwords)*FLAC__BITS_PER_WORD + br->bytes*8 - cbits; +- } +- if(cwords < br->words) { /* if we've not consumed up to a partial tail word... */ +- if(cbits) { +- /* this also works when consumed_bits==0, it's just slower than necessary for that case */ +- const unsigned n = FLAC__BITS_PER_WORD - cbits; +- const brword word = br->buffer[cwords]; +- if(parameter < n) { +- uval <<= parameter; +- uval |= (word & (FLAC__WORD_ALL_ONES >> cbits)) >> (n-parameter); +- cbits += parameter; +- } +- else { +- uval <<= n; +- uval |= word & (FLAC__WORD_ALL_ONES >> cbits); +- crc16_update_word_(br, word); +- cwords++; +- cbits = parameter - n; +- if(cbits) { /* parameter > n, i.e. if there are still bits left to read, there have to be less than 32 so they will all be in the next word */ +- uval <<= cbits; +- uval |= (br->buffer[cwords] >> (FLAC__BITS_PER_WORD-cbits)); +- } +- } +- } +- else { +- cbits = parameter; +- uval <<= parameter; +- uval |= br->buffer[cwords] >> (FLAC__BITS_PER_WORD-cbits); +- } + } +- else { +- /* in this case we're starting our read at a partial tail word; +- * the reader has guaranteed that we have at least 'parameter' +- * bits available to read, which makes this case simpler. +- */ +- uval <<= parameter; +- if(cbits) { +- /* this also works when consumed_bits==0, it's just a little slower than necessary for that case */ +- FLAC__ASSERT(cbits + parameter <= br->bytes*8); +- uval |= (br->buffer[cwords] & (FLAC__WORD_ALL_ONES >> cbits)) >> (FLAC__BITS_PER_WORD-cbits-parameter); +- cbits += parameter; +- } +- else { +- cbits = parameter; +- uval |= br->buffer[cwords] >> (FLAC__BITS_PER_WORD-cbits); +- } +- } +- } + +- ucbits -= parameter; +- +- /* compose the value */ +- *vals = (int)(uval >> 1 ^ -(int)(uval & 1)); ++ /* read the binary LSBs */ ++ if(!FLAC__bitreader_read_raw_uint32(br, &lsbs, parameter - ucbits)) ++ return false; ++ lsbs = x | lsbs; + +- /* are we done? */ +- --nvals; +- if(nvals == 0) { +- br->consumed_bits = cbits; +- br->consumed_words = cwords; +- return true; +- } ++ /* compose the value */ ++ x = (msbs << parameter) | lsbs; ++ *val++ = (int)(x >> 1) ^ -(int)(x & 1); ++ x = 0; + +- uval = 0; +- ++vals; ++ cwords = br->consumed_words; ++ words = br->words; ++ ucbits = FLAC__BITS_PER_WORD - br->consumed_bits; ++ b = br->buffer[cwords] << br->consumed_bits; ++ } while(cwords >= words && val < end); ++ } + ++ if(ucbits == 0 && cwords < words) { ++ /* don't leave the head word with no unconsumed bits */ ++ crc16_update_word_(br, br->buffer[cwords++]); ++ ucbits = FLAC__BITS_PER_WORD; + } ++ ++ br->consumed_bits = FLAC__BITS_PER_WORD - ucbits; ++ br->consumed_words = cwords; ++ ++ return true; + } +-#endif + + #if 0 /* UNUSED */ + FLAC__bool FLAC__bitreader_read_golomb_signed(FLAC__BitReader *br, int *val, unsigned parameter) diff --git a/src/patches/flac-1.2.1-cflags.patch b/src/patches/flac-1.2.1-cflags.patch new file mode 100644 index 0000000..032fa5e --- /dev/null +++ b/src/patches/flac-1.2.1-cflags.patch @@ -0,0 +1,45 @@ +diff -up flac-1.2.1/src/libFLAC/Makefile.am.cflags flac-1.2.1/src/libFLAC/Makefile.am +--- flac-1.2.1/src/libFLAC/Makefile.am.cflags 2007-09-14 23:06:17.000000000 +0200 ++++ flac-1.2.1/src/libFLAC/Makefile.am 2008-03-17 14:19:29.000000000 +0100 +@@ -41,7 +41,7 @@ CPUCFLAGS = -faltivec -force_cpusubtype_ + else + # Linux-gcc for PPC does not have -force_cpusubtype_ALL, it is Darwin-specific + #@@@ PPC optimizations temporarily disabled +-CPUCFLAGS = -maltivec -mabi=altivec -DFLAC__NO_ASM ++CPUCFLAGS = -DFLAC__NO_ASM + endif + endif + +@@ -69,7 +69,7 @@ endif + endif + endif + +-libFLAC_la_LIBADD = $(LOCAL_EXTRA_LIBADD) @OGG_LIBS@ ++libFLAC_la_LIBADD = $(LOCAL_EXTRA_LIBADD) @OGG_LIBS@ libFLAC_extracflags.la + + SUBDIRS = $(ARCH_SUBDIRS) include . + +@@ -112,7 +112,10 @@ libFLAC_la_SOURCES = \ + metadata_iterators.c \ + metadata_object.c \ + stream_decoder.c \ +- stream_encoder.c \ + stream_encoder_framing.c \ + window.c \ + $(extra_ogg_sources) ++ ++noinst_LTLIBRARIES = libFLAC_extracflags.la ++libFLAC_extracflags_la_SOURCES = stream_encoder.c ++libFLAC_extracflags_la_CFLAGS = $(AM_CFLAGS) -funroll-loops +diff -up flac-1.2.1/configure.in.cflags flac-1.2.1/configure.in +--- flac-1.2.1/configure.in.cflags 2007-09-13 17:48:42.000000000 +0200 ++++ flac-1.2.1/configure.in 2008-03-17 14:17:08.000000000 +0100 +@@ -301,7 +301,7 @@ else + CPPFLAGS="-DNDEBUG $CPPFLAGS" + if test "x$GCC" = xyes; then + CPPFLAGS="-DFLaC__INLINE=__inline__ $CPPFLAGS" +- CFLAGS="-O3 -funroll-loops -finline-functions -Wall -W -Winline $CFLAGS" ++ CFLAGS="-Wall -W -Winline $CFLAGS" + fi + fi + diff --git a/src/patches/flac-1.2.1-gcc43.patch b/src/patches/flac-1.2.1-gcc43.patch new file mode 100644 index 0000000..7fdbf80 --- /dev/null +++ b/src/patches/flac-1.2.1-gcc43.patch @@ -0,0 +1,11 @@ +diff -up flac-1.2.1/examples/cpp/encode/file/main.cpp.gcc43 flac-1.2.1/examples/cpp/encode/file/main.cpp +--- flac-1.2.1/examples/cpp/encode/file/main.cpp.gcc43 2007-09-13 17:58:03.000000000 +0200 ++++ flac-1.2.1/examples/cpp/encode/file/main.cpp 2008-01-08 10:27:39.000000000 +0100 +@@ -29,6 +29,7 @@ + #endif + + #include <stdio.h> ++#include <string.h> + #include <stdlib.h> + #include "FLAC++/metadata.h" + #include "FLAC++/encoder.h" diff --git a/src/patches/flac-1.2.1-hidesyms.patch b/src/patches/flac-1.2.1-hidesyms.patch new file mode 100644 index 0000000..0f4c104 --- /dev/null +++ b/src/patches/flac-1.2.1-hidesyms.patch @@ -0,0 +1,39 @@ +diff -up flac-1.2.1/src/libFLAC/include/private/ogg_helper.h.hidesyms flac-1.2.1/src/libFLAC/include/private/ogg_helper.h +--- flac-1.2.1/src/libFLAC/include/private/ogg_helper.h.hidesyms 2007-02-02 07:22:40.000000000 +0100 ++++ flac-1.2.1/src/libFLAC/include/private/ogg_helper.h 2008-01-29 15:27:13.000000000 +0100 +@@ -35,9 +35,13 @@ + #include <ogg/ogg.h> + #include "FLAC/stream_encoder.h" /* for FLAC__StreamEncoder */ + ++__attribute__((__visibility__("hidden"))) + void simple_ogg_page__init(ogg_page *page); ++__attribute__((__visibility__("hidden"))) + void simple_ogg_page__clear(ogg_page *page); ++__attribute__((__visibility__("hidden"))) + FLAC__bool simple_ogg_page__get_at(FLAC__StreamEncoder *encoder, FLAC__uint64 position, ogg_page *page, FLAC__StreamEncoderSeekCallback seek_callback, FLAC__StreamEncoderReadCallback read_callback, void *client_data); ++__attribute__((__visibility__("hidden"))) + FLAC__bool simple_ogg_page__set_at(FLAC__StreamEncoder *encoder, FLAC__uint64 position, ogg_page *page, FLAC__StreamEncoderSeekCallback seek_callback, FLAC__StreamEncoderWriteCallback write_callback, void *client_data); + + #endif +diff -up flac-1.2.1/src/libFLAC/include/private/bitreader.h.hidesyms flac-1.2.1/src/libFLAC/include/private/bitreader.h +--- flac-1.2.1/src/libFLAC/include/private/bitreader.h.hidesyms 2007-07-10 22:22:19.000000000 +0200 ++++ flac-1.2.1/src/libFLAC/include/private/bitreader.h 2008-01-29 15:27:13.000000000 +0100 +@@ -95,5 +95,6 @@ FLAC__bool FLAC__bitreader_read_golomb_u + FLAC__bool FLAC__bitreader_read_utf8_uint32(FLAC__BitReader *br, FLAC__uint32 *val, FLAC__byte *raw, unsigned *rawlen); + FLAC__bool FLAC__bitreader_read_utf8_uint64(FLAC__BitReader *br, FLAC__uint64 *val, FLAC__byte *raw, unsigned *rawlen); + ++__attribute__((__visibility__("hidden"))) + FLAC__bool bitreader_read_from_client_(FLAC__BitReader *br); + #endif +diff -up flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm.hidesyms flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm +--- flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm.hidesyms 2008-01-29 15:27:13.000000000 +0100 ++++ flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm 2008-01-29 15:28:32.000000000 +0100 +@@ -34,7 +34,7 @@ + + data_section + +-cglobal precompute_partition_info_sums_32bit_asm_ia32_ ++cglobal precompute_partition_info_sums_32bit_asm_ia32_:function hidden + + code_section + diff --git a/src/patches/flac-1.2.1-tests.patch b/src/patches/flac-1.2.1-tests.patch new file mode 100644 index 0000000..89c5921 --- /dev/null +++ b/src/patches/flac-1.2.1-tests.patch @@ -0,0 +1,41 @@ +diff -up flac-1.2.1/test/test_seeking.sh.tests flac-1.2.1/test/test_seeking.sh +--- flac-1.2.1/test/test_seeking.sh.tests 2007-09-11 09:33:04.000000000 +0200 ++++ flac-1.2.1/test/test_seeking.sh 2008-01-29 13:52:03.000000000 +0100 +@@ -103,7 +103,7 @@ tiny_seek_count=100 + if [ "$FLAC__TEST_LEVEL" -gt 1 ] ; then + small_seek_count=10000 + else +- small_seek_count=100000 ++ small_seek_count=100 + fi + + for suffix in '' '-s' ; do +diff -up flac-1.2.1/test/test_streams.sh.tests flac-1.2.1/test/test_streams.sh +--- flac-1.2.1/test/test_streams.sh.tests 2007-06-16 21:58:39.000000000 +0200 ++++ flac-1.2.1/test/test_streams.sh 2008-03-17 13:57:39.000000000 +0100 +@@ -39,6 +39,10 @@ if [ x"$FLAC__TEST_LEVEL" = x ] ; then + FLAC__TEST_LEVEL=1 + fi + ++if [ "$FLAC__TEST_LEVEL" -eq 0 ] ; then ++ exit 0 ++fi ++ + flac --help 1>/dev/null 2>/dev/null || die "ERROR can't find flac executable" + + run_flac () +diff -up flac-1.2.1/src/test_streams/main.c.tests flac-1.2.1/src/test_streams/main.c +--- flac-1.2.1/src/test_streams/main.c.tests 2007-08-31 07:54:49.000000000 +0200 ++++ flac-1.2.1/src/test_streams/main.c 2008-01-29 13:53:46.000000000 +0100 +@@ -898,9 +898,9 @@ int main(int argc, char *argv[]) + if(!generate_noise("noise.raw", 65536 * 8 * 3)) return 1; + if(!generate_noise("noise8m32.raw", 32)) return 1; + if(!generate_wackywavs()) return 1; +- for(channels = 1; channels <= 8; channels++) { ++ for(channels = 1; channels <= 2; channels++) { + unsigned bits_per_sample; +- for(bits_per_sample = 4; bits_per_sample <= 24; bits_per_sample++) { ++ for(bits_per_sample = 8; bits_per_sample <= 24; bits_per_sample += 8) { + static const unsigned nsamples[] = { 1, 111, 4777 } ; + unsigned samples; + for(samples = 0; samples < sizeof(nsamples)/sizeof(nsamples[0]); samples++) { diff --git a/src/patches/gcc-4.0.4-specs-1.patch b/src/patches/gcc-4.0.4-specs-1.patch deleted file mode 100644 index 46521e1..0000000 --- a/src/patches/gcc-4.0.4-specs-1.patch +++ /dev/null @@ -1,336 +0,0 @@ -Submitted By: Robert Connolly <robert at linuxfromscratch dot org> (ashes) -Date: 2006-01-16 -Initial Package Version: 4.0.0 -Upstream Status: Not Sent - LFS Specfic -Origin: Idea originally developed by Ryan Oliver and Greg Schafer for - the Pure LFS project. - More architectures added by Zack Winkles. - Further fine tunings by Greg Schafer. - Modified for gcc 3.3.2 by Oliver Brakmann. -Rediffed against gcc 3.4.0 by Zack Winkles. - Rediffed against gcc 3.4.3 by Jim Gifford. - Rediffed against gcc 4.0.0 by Robert Connolly. -Description: This patch modifies the location of the dynamic linker for - the GCC Pass 2 build in LFS Chapter 5. - -diff -Naur gcc-20050116.orig/gcc/config/alpha/linux-elf.h gcc-20050116/gcc/config/alpha/linux-elf.h ---- gcc-20050116.orig/gcc/config/alpha/linux-elf.h 2005-01-17 00:45:16.000000000 +0000 -+++ gcc-20050116/gcc/config/alpha/linux-elf.h 2005-01-17 00:46:14.560651027 +0000 -@@ -27,7 +27,7 @@ - #define SUBTARGET_EXTRA_SPECS \ - { "elf_dynamic_linker", ELF_DYNAMIC_LINKER }, - --#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2" -+#define ELF_DYNAMIC_LINKER "/tools/lib/ld-linux.so.2" - - #define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax} \ - %{O*:-O3} %{!O*:-O1} \ -diff -Naur gcc-20050116.orig/gcc/config/arm/linux-elf.h gcc-20050116/gcc/config/arm/linux-elf.h ---- gcc-20050116.orig/gcc/config/arm/linux-elf.h 2005-01-17 00:45:16.000000000 +0000 -+++ gcc-20050116/gcc/config/arm/linux-elf.h 2005-01-17 00:46:50.538578614 +0000 -@@ -87,7 +87,7 @@ - %{shared:-shared} \ - %{symbolic:-Bsymbolic} \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux.so.2} \ - -X \ - %{mbig-endian:-EB}" \ - SUBTARGET_EXTRA_LINK_SPEC -diff -Naur gcc-20050116.orig/gcc/config/frv/linux.h gcc-20050116/gcc/config/frv/linux.h ---- gcc-20050116.orig/gcc/config/frv/linux.h 2005-01-17 00:45:16.000000000 +0000 -+++ gcc-20050116/gcc/config/frv/linux.h 2005-01-17 01:33:50.600805260 +0000 -@@ -41,7 +41,7 @@ - %{mfdpic: -m elf32frvfd -z text} %{shared} %{pie} \ - %{!shared: %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}} \ - %{static}}" - - /* Support for compile-time default CPU. */ -diff -Naur gcc-20050116.orig/gcc/config/i386/gnu.h gcc-20050116/gcc/config/i386/gnu.h ---- gcc-20050116.orig/gcc/config/i386/gnu.h 2005-01-17 00:45:16.000000000 +0000 -+++ gcc-20050116/gcc/config/i386/gnu.h 2005-01-17 01:34:11.142021939 +0000 -@@ -27,7 +27,7 @@ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so}} \ - %{static:-static}}" - - #undef STARTFILE_SPEC -diff -Naur gcc-20050116.orig/gcc/config/i386/linux.h gcc-20050116/gcc/config/i386/linux.h ---- gcc-20050116.orig/gcc/config/i386/linux.h 2005-01-17 00:45:16.000000000 +0000 -+++ gcc-20050116/gcc/config/i386/linux.h 2005-01-17 00:49:27.412667132 +0000 -@@ -105,7 +105,7 @@ - /* If ELF is the default format, we should not use /lib/elf. */ - - #define LINK_EMULATION "elf_i386" --#define DYNAMIC_LINKER "/lib/ld-linux.so.2" -+#define DYNAMIC_LINKER "/tools/lib/ld-linux.so.2" - - #undef SUBTARGET_EXTRA_SPECS - #define SUBTARGET_EXTRA_SPECS \ -diff -Naur gcc-20050116.orig/gcc/config/i386/linux64.h gcc-20050116/gcc/config/i386/linux64.h ---- gcc-20050116.orig/gcc/config/i386/linux64.h 2005-01-17 00:45:16.000000000 +0000 -+++ gcc-20050116/gcc/config/i386/linux64.h 2005-01-17 00:50:23.055094690 +0000 -@@ -60,8 +60,8 @@ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{m32:%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -- %{!m32:%{!dynamic-linker:-dynamic-linker /lib64/ld-linux-x86-64.so.2}}} \ -+ %{m32:%{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux.so.2}} \ -+ %{!m32:%{!dynamic-linker:-dynamic-linker /tools/lib64/ld-linux-x86-64.so.2}}} \ - %{static:-static}}" - - #define MULTILIB_DEFAULTS { "m64" } -diff -Naur gcc-20050116.orig/gcc/config/ia64/linux.h gcc-20050116/gcc/config/ia64/linux.h ---- gcc-20050116.orig/gcc/config/ia64/linux.h 2005-01-17 00:45:17.000000000 +0000 -+++ gcc-20050116/gcc/config/ia64/linux.h 2005-01-17 00:50:43.146472133 +0000 -@@ -43,7 +43,7 @@ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux-ia64.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux-ia64.so.2}} \ - %{static:-static}}" - - -diff -Naur gcc-20050116.orig/gcc/config/linux.h gcc-20050116/gcc/config/linux.h ---- gcc-20050116.orig/gcc/config/linux.h 2005-01-17 00:45:16.000000000 +0000 -+++ gcc-20050116/gcc/config/linux.h 2005-01-17 00:51:14.101809663 +0000 -@@ -104,3 +104,7 @@ - #define TARGET_C99_FUNCTIONS 1 - - #define TARGET_HAS_F_SETLKW -+ -+/* Remove /usr/include from the end of the include search path. */ -+#undef STANDARD_INCLUDE_DIR -+#define STANDARD_INCLUDE_DIR 0 -diff -Naur gcc-20050116.orig/gcc/config/m32r/linux.h gcc-20050116/gcc/config/m32r/linux.h ---- gcc-20050116.orig/gcc/config/m32r/linux.h 2005-01-17 00:45:17.000000000 +0000 -+++ gcc-20050116/gcc/config/m32r/linux.h 2005-01-17 00:51:39.720640870 +0000 -@@ -66,7 +66,7 @@ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux.so.2}} \ - %{static:-static}}}" - #else - #define LINK_SPEC "%(link_cpu) -m m32relf_linux %{shared:-shared} \ -@@ -74,7 +74,7 @@ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux.so.2}} \ - %{static:-static}}}" - #endif - -diff -Naur gcc-20050116.orig/gcc/config/m68k/linux.h gcc-20050116/gcc/config/m68k/linux.h ---- gcc-20050116.orig/gcc/config/m68k/linux.h 2005-01-17 00:45:17.000000000 +0000 -+++ gcc-20050116/gcc/config/m68k/linux.h 2005-01-17 00:52:07.633830392 +0000 -@@ -132,7 +132,7 @@ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker*:-dynamic-linker /lib/ld.so.1}} \ -+ %{!dynamic-linker*:-dynamic-linker /tools/lib/ld.so.1}} \ - %{static}}" - - /* For compatibility with linux/a.out */ -diff -Naur gcc-20050116.orig/gcc/config/mips/linux.h gcc-20050116/gcc/config/mips/linux.h ---- gcc-20050116.orig/gcc/config/mips/linux.h 2005-01-17 00:45:17.000000000 +0000 -+++ gcc-20050116/gcc/config/mips/linux.h 2005-01-17 00:52:28.348034505 +0000 -@@ -115,7 +115,7 @@ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}} \ - %{static:-static}}}" - - #undef SUBTARGET_ASM_SPEC -diff -Naur gcc-20050116.orig/gcc/config/mips/linux64.h gcc-20050116/gcc/config/mips/linux64.h ---- gcc-20050116.orig/gcc/config/mips/linux64.h 2005-01-17 00:45:17.000000000 +0000 -+++ gcc-20050116/gcc/config/mips/linux64.h 2005-01-17 00:53:04.645878728 +0000 -@@ -60,9 +60,9 @@ - %{!static: \ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker: \ -- %{mabi=n32: -dynamic-linker /lib32/ld.so.1} \ -- %{mabi=64: -dynamic-linker /lib64/ld.so.1} \ -- %{mabi=32: -dynamic-linker /lib/ld.so.1}}} \ -+ %{mabi=n32: -dynamic-linker /tools/lib32/ld.so.1} \ -+ %{mabi=64: -dynamic-linker /tools/lib64/ld.so.1} \ -+ %{mabi=32: -dynamic-linker /tools/lib/ld.so.1}}} \ - %{static:-static}}} \ - %{mabi=n32:-melf32%{EB:b}%{EL:l}tsmipn32} \ - %{mabi=64:-melf64%{EB:b}%{EL:l}tsmip} \ -diff -Naur gcc-20050116.orig/gcc/config/mn10300/linux.h gcc-20050116/gcc/config/mn10300/linux.h ---- gcc-20050116.orig/gcc/config/mn10300/linux.h 2005-01-17 00:45:17.000000000 +0000 -+++ gcc-20050116/gcc/config/mn10300/linux.h 2005-01-17 00:53:23.477610026 +0000 -@@ -37,7 +37,7 @@ - #define LINK_SPEC "%{mrelax:--relax} %{shared:-shared} \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}} \ - %{static:-static}" - - #undef LIB_SPEC -diff -Naur gcc-20050116.orig/gcc/config/pa/pa-linux.h gcc-20050116/gcc/config/pa/pa-linux.h ---- gcc-20050116.orig/gcc/config/pa/pa-linux.h 2005-01-17 00:45:17.000000000 +0000 -+++ gcc-20050116/gcc/config/pa/pa-linux.h 2005-01-17 00:53:45.334495141 +0000 -@@ -88,7 +88,7 @@ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}} \ - %{static:-static}}" - - /* glibc's profiling functions don't need gcc to allocate counters. */ -diff -Naur gcc-20050116.orig/gcc/config/rs6000/linux64.h gcc-20050116/gcc/config/rs6000/linux64.h ---- gcc-20050116.orig/gcc/config/rs6000/linux64.h 2005-01-17 00:45:17.000000000 +0000 -+++ gcc-20050116/gcc/config/rs6000/linux64.h 2005-01-17 00:54:28.524412534 +0000 -@@ -351,11 +351,11 @@ - - #define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux %{!shared: %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}" -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}}}" - - #define LINK_OS_LINUX_SPEC64 "-m elf64ppc %{!shared: %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib64/ld64.so.1}}}" -+ %{!dynamic-linker:-dynamic-linker /tools/lib64/ld64.so.1}}}" - - #undef TOC_SECTION_ASM_OP - #define TOC_SECTION_ASM_OP \ -diff -Naur gcc-20050116.orig/gcc/config/rs6000/sysv4.h gcc-20050116/gcc/config/rs6000/sysv4.h ---- gcc-20050116.orig/gcc/config/rs6000/sysv4.h 2005-01-17 00:45:17.000000000 +0000 -+++ gcc-20050116/gcc/config/rs6000/sysv4.h 2005-01-17 01:26:39.126999460 +0000 -@@ -1131,7 +1131,7 @@ - - #define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}" -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}}}" - - #if defined(HAVE_LD_EH_FRAME_HDR) - # define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " -@@ -1162,7 +1162,7 @@ - - #define LINK_OS_GNU_SPEC "-m elf32ppclinux %{!shared: %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}" -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}}}" - - #define CPP_OS_GNU_SPEC "-D__unix__ -D__gnu_hurd__ -D__GNU__ \ - %{!undef: \ -diff -Naur gcc-20050116.orig/gcc/config/s390/linux.h gcc-20050116/gcc/config/s390/linux.h ---- gcc-20050116.orig/gcc/config/s390/linux.h 2005-01-17 00:45:17.000000000 +0000 -+++ gcc-20050116/gcc/config/s390/linux.h 2005-01-17 01:26:58.672523211 +0000 -@@ -86,8 +86,8 @@ - %{!static: \ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker: \ -- %{m31:-dynamic-linker /lib/ld.so.1} \ -- %{m64:-dynamic-linker /lib/ld64.so.1}}}}" -+ %{m31:-dynamic-linker /tools/lib/ld.so.1} \ -+ %{m64:-dynamic-linker /tools/lib/ld64.so.1}}}}" - - - #define TARGET_ASM_FILE_END file_end_indicate_exec_stack -diff -Naur gcc-20050116.orig/gcc/config/sh/linux.h gcc-20050116/gcc/config/sh/linux.h ---- gcc-20050116.orig/gcc/config/sh/linux.h 2005-01-17 00:45:18.000000000 +0000 -+++ gcc-20050116/gcc/config/sh/linux.h 2005-01-17 01:27:19.588663163 +0000 -@@ -70,7 +70,7 @@ - "%{shared:-shared} \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux.so.2}} \ - %{static:-static}" - - #undef LIB_SPEC -diff -Naur gcc-20050116.orig/gcc/config/sparc/linux.h gcc-20050116/gcc/config/sparc/linux.h ---- gcc-20050116.orig/gcc/config/sparc/linux.h 2005-01-17 00:45:18.000000000 +0000 -+++ gcc-20050116/gcc/config/sparc/linux.h 2005-01-17 01:30:07.282688639 +0000 -@@ -131,13 +131,13 @@ - /* If ELF is the default format, we should not use /lib/elf. */ - - #undef LINK_SPEC --#define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \ -+#define LINK_SPEC "-m elf32_sparc -Y P,/tools/lib %{shared:-shared} \ - %{!mno-relax:%{!r:-relax}} \ - %{!shared: \ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux.so.2}} \ - %{static:-static}}}" - - /* The sun bundled assembler doesn't accept -Yd, (and neither does gas). -diff -Naur gcc-20050116.orig/gcc/config/sparc/linux64.h gcc-20050116/gcc/config/sparc/linux64.h ---- gcc-20050116.orig/gcc/config/sparc/linux64.h 2005-01-17 00:45:18.000000000 +0000 -+++ gcc-20050116/gcc/config/sparc/linux64.h 2005-01-17 01:31:18.242712476 +0000 -@@ -167,21 +167,21 @@ - { "link_arch_default", LINK_ARCH_DEFAULT_SPEC }, \ - { "link_arch", LINK_ARCH_SPEC }, - --#define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \ -+#define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,/tools/lib %{shared:-shared} \ - %{!shared: \ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux.so.2}} \ - %{static:-static}}} \ - " - --#define LINK_ARCH64_SPEC "-m elf64_sparc -Y P,/usr/lib64 %{shared:-shared} \ -+#define LINK_ARCH64_SPEC "-m elf64_sparc -Y P,/tools/lib64 %{shared:-shared} \ - %{!shared: \ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib64/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib64/ld-linux.so.2}} \ - %{static:-static}}} \ - " - -@@ -257,12 +257,12 @@ - #else /* !SPARC_BI_ARCH */ - - #undef LINK_SPEC --#define LINK_SPEC "-m elf64_sparc -Y P,/usr/lib64 %{shared:-shared} \ -+#define LINK_SPEC "-m elf64_sparc -Y P,/tools/lib64 %{shared:-shared} \ - %{!shared: \ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib64/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib64/ld-linux.so.2}} \ - %{static:-static}}} \ - %{mlittle-endian:-EL} \ - %{!mno-relax:%{!r:-relax}} \ -diff -Naur gcc-20050116.orig/gcc/config/xtensa/linux.h gcc-20050116/gcc/config/xtensa/linux.h ---- gcc-20050116.orig/gcc/config/xtensa/linux.h 2005-01-17 00:45:18.000000000 +0000 -+++ gcc-20050116/gcc/config/xtensa/linux.h 2005-01-17 01:32:08.951429623 +0000 -@@ -50,7 +50,7 @@ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}} \ - %{static:-static}}}" - - #undef LOCAL_LABEL_PREFIX diff --git a/src/patches/gcc-4.1.2-arm-linux-soft-float.patch b/src/patches/gcc-4.1.2-arm-linux-soft-float.patch deleted file mode 100644 index c22bc38..0000000 --- a/src/patches/gcc-4.1.2-arm-linux-soft-float.patch +++ /dev/null @@ -1,30 +0,0 @@ -diff -u -r gcc-4.0.2/gcc/config/arm/t-linux gcc-4.0.2/gcc/config/arm.new/t-linux ---- gcc-4.0.2/gcc/config/arm/t-linux 2005-10-18 22:04:44.000000000 +1000 -+++ gcc-4.0.2/gcc/config/arm.new/t-linux 2005-10-18 22:05:03.000000000 +1000 -@@ -4,7 +4,12 @@ TARGET_LIBGCC2_CFLAGS = -fomit-frame-poi - LIBGCC2_DEBUG_CFLAGS = -g0 - - LIB1ASMSRC = arm/lib1funcs.asm --LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx -+LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx \ -+ _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \ -+ _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \ -+ _fixsfsi _fixunssfsi _floatdidf _floatdisf \ -+ _bb_init_func _call_via_rX _interwork_call_via_rX \ -+ _lshrdi3 _ashrdi3 _ashldi3 - - # MULTILIB_OPTIONS = mhard-float/msoft-float - # MULTILIB_DIRNAMES = hard-float soft-float - - ---- gcc-4.1.1/gcc/config/arm/linux-elf.h 2007-01-06 11:17:51.000000000 +0000 -+++ gcc-4.1.1/gcc/config/arm/linux-elf-soft.h 2007-01-06 11:22:01.000000000 +0000 -@@ -49,7 +49,7 @@ - %{shared:-lc} \ - %{!shared:%{profile:-lc_p}%{!profile:-lc}}" - --#define LIBGCC_SPEC "%{msoft-float:-lfloat} %{mfloat-abi=soft*:-lfloat} -lgcc" -+/* #define LIBGCC_SPEC "%{msoft-float:-lfloat} %{mfloat-abi=soft*:-lfloat} -lgcc" */ - - #define LINUX_TARGET_INTERPRETER "/lib/ld-linux.so.2" - diff --git a/src/patches/gcc-4.1.2-fix_linker_version_detection.patch b/src/patches/gcc-4.1.2-fix_linker_version_detection.patch deleted file mode 100644 index 36a756c..0000000 --- a/src/patches/gcc-4.1.2-fix_linker_version_detection.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -Naur gcc-4.1.2.org/libstdc++-v3/configure gcc-4.1.2/libstdc++-v3/configure ---- gcc-4.1.2.org/libstdc++-v3/configure 2007-01-29 11:51:01.000000000 +0100 -+++ gcc-4.1.2/libstdc++-v3/configure 2011-08-29 19:25:22.973430586 +0200 -@@ -8281,7 +8281,7 @@ - if test x"$with_gnu_ld" = x"yes"; then - - ldver=`$LD --version 2>/dev/null | head -1 | \ -- sed -e 's/GNU ld version ([0-9.][0-9.]*).*/\1/'` -+ sed -e 's/GNU ld .*) ([0-9.][0-9.]*).*/\1/'` - - glibcxx_gnu_ld_version=`echo $ldver | \ - $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'` diff --git a/src/patches/gcc-4.1.2-gcc_eh.patch b/src/patches/gcc-4.1.2-gcc_eh.patch deleted file mode 100644 index 9a2589a..0000000 --- a/src/patches/gcc-4.1.2-gcc_eh.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff -ur gcc-4.1.2/gcc/cp/g++spec.c gcc-4.1.2-gcc_eh/gcc/cp/g++spec.c ---- gcc-4.1.2/gcc/cp/g++spec.c 2005-06-25 02:59:41.000000000 +0200 -+++ gcc-4.1.2-gcc_eh/gcc/cp/g++spec.c 2007-08-03 14:46:03.000000000 +0200 -@@ -251,7 +251,7 @@ - #endif - - /* Make sure to have room for the trailing NULL argument. */ -- num_args = argc + added + need_math + shared_libgcc + (library > 0) + 1; -+ num_args = argc + added + need_math + shared_libgcc + 2 * (library > 0) + 1; - arglist = xmalloc (num_args * sizeof (char *)); - - i = 0; -@@ -311,7 +311,10 @@ - { - arglist[j] = saw_profile_flag ? LIBSTDCXX_PROFILE : LIBSTDCXX; - if (arglist[j][0] != '-' || arglist[j][1] == 'l') -- added_libraries++; -+ { -+ arglist[++j] = "-lgcc_eh"; -+ added_libraries += 2; -+ } - j++; - } - if (saw_math) diff --git a/src/patches/gcc-4.1.2-specs-1.patch b/src/patches/gcc-4.1.2-specs-1.patch deleted file mode 100644 index 28ebb43..0000000 --- a/src/patches/gcc-4.1.2-specs-1.patch +++ /dev/null @@ -1,507 +0,0 @@ -diff -Naur gcc-4.1.2.orig/gcc/config/alpha/linux-elf.h gcc-4.1.2/gcc/config/alpha/linux-elf.h ---- gcc-4.1.2.orig/gcc/config/alpha/linux-elf.h 2005-06-25 01:22:41.000000000 +0000 -+++ gcc-4.1.2/gcc/config/alpha/linux-elf.h 2011-09-01 17:11:11.000000000 +0000 -@@ -27,7 +27,7 @@ - #define SUBTARGET_EXTRA_SPECS \ - { "elf_dynamic_linker", ELF_DYNAMIC_LINKER }, - --#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2" -+#define ELF_DYNAMIC_LINKER "/tools/lib/ld-linux.so.2" - - #define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax} \ - %{O*:-O3} %{!O*:-O1} \ -diff -Naur gcc-4.1.2.orig/gcc/config/arm/linux-eabi.h gcc-4.1.2/gcc/config/arm/linux-eabi.h ---- gcc-4.1.2.orig/gcc/config/arm/linux-eabi.h 2005-11-15 14:32:13.000000000 +0000 -+++ gcc-4.1.2/gcc/config/arm/linux-eabi.h 2011-09-01 17:11:47.000000000 +0000 -@@ -53,7 +53,7 @@ - /* Use ld-linux.so.3 so that it will be possible to run "classic" - GNU/Linux binaries on an EABI system. */ - #undef LINUX_TARGET_INTERPRETER --#define LINUX_TARGET_INTERPRETER "/lib/ld-linux.so.3" -+#define LINUX_TARGET_INTERPRETER "/tools/lib/ld-linux.so.3" - - /* At this point, bpabi.h will have clobbered LINK_SPEC. We want to - use the GNU/Linux version, not the generic BPABI version. */ -diff -Naur gcc-4.1.2.orig/gcc/config/arm/linux-elf.h gcc-4.1.2/gcc/config/arm/linux-elf.h ---- gcc-4.1.2.orig/gcc/config/arm/linux-elf.h 2005-10-10 01:04:31.000000000 +0000 -+++ gcc-4.1.2/gcc/config/arm/linux-elf.h 2011-09-01 17:11:11.000000000 +0000 -@@ -51,7 +51,7 @@ - - #define LIBGCC_SPEC "%{msoft-float:-lfloat} %{mfloat-abi=soft*:-lfloat} -lgcc" - --#define LINUX_TARGET_INTERPRETER "/lib/ld-linux.so.2" -+#define LINUX_TARGET_INTERPRETER "/tools/lib/ld-linux.so.2" - - #define LINUX_TARGET_LINK_SPEC "%{h*} %{version:-v} \ - %{b} \ -diff -Naur gcc-4.1.2.orig/gcc/config/frv/linux.h gcc-4.1.2/gcc/config/frv/linux.h ---- gcc-4.1.2.orig/gcc/config/frv/linux.h 2005-06-25 01:22:41.000000000 +0000 -+++ gcc-4.1.2/gcc/config/frv/linux.h 2011-09-01 17:11:11.000000000 +0000 -@@ -41,7 +41,7 @@ - %{mfdpic: -m elf32frvfd -z text} %{shared} %{pie} \ - %{!shared: %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}} \ - %{static}}" - - /* Support for compile-time default CPU. */ -diff -Naur gcc-4.1.2.orig/gcc/config/i386/gnu.h gcc-4.1.2/gcc/config/i386/gnu.h ---- gcc-4.1.2.orig/gcc/config/i386/gnu.h 2004-09-08 00:17:19.000000000 +0000 -+++ gcc-4.1.2/gcc/config/i386/gnu.h 2011-09-01 17:11:11.000000000 +0000 -@@ -27,7 +27,7 @@ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so}} \ - %{static:-static}}" - - #undef STARTFILE_SPEC -diff -Naur gcc-4.1.2.orig/gcc/config/i386/linux64.h gcc-4.1.2/gcc/config/i386/linux64.h ---- gcc-4.1.2.orig/gcc/config/i386/linux64.h 2005-08-10 17:53:01.000000000 +0000 -+++ gcc-4.1.2/gcc/config/i386/linux64.h 2011-09-01 17:11:11.000000000 +0000 -@@ -60,8 +60,8 @@ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{m32:%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -- %{!m32:%{!dynamic-linker:-dynamic-linker /lib64/ld-linux-x86-64.so.2}}} \ -+ %{m32:%{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux.so.2}} \ -+ %{!m32:%{!dynamic-linker:-dynamic-linker /tools/lib64/ld-linux-x86-64.so.2}}} \ - %{static:-static}}" - - /* Similar to standard Linux, but adding -ffast-math support. */ -diff -Naur gcc-4.1.2.orig/gcc/config/i386/linux.h gcc-4.1.2/gcc/config/i386/linux.h ---- gcc-4.1.2.orig/gcc/config/i386/linux.h 2005-08-10 17:53:01.000000000 +0000 -+++ gcc-4.1.2/gcc/config/i386/linux.h 2011-09-01 17:11:11.000000000 +0000 -@@ -105,7 +105,7 @@ - /* If ELF is the default format, we should not use /lib/elf. */ - - #define LINK_EMULATION "elf_i386" --#define DYNAMIC_LINKER "/lib/ld-linux.so.2" -+#define DYNAMIC_LINKER "/tools/lib/ld-linux.so.2" - - #undef SUBTARGET_EXTRA_SPECS - #define SUBTARGET_EXTRA_SPECS \ -diff -Naur gcc-4.1.2.orig/gcc/config/ia64/linux.h gcc-4.1.2/gcc/config/ia64/linux.h ---- gcc-4.1.2.orig/gcc/config/ia64/linux.h 2006-12-12 15:24:07.000000000 +0000 -+++ gcc-4.1.2/gcc/config/ia64/linux.h 2011-09-01 17:11:11.000000000 +0000 -@@ -43,7 +43,7 @@ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux-ia64.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux-ia64.so.2}} \ - %{static:-static}}" - - #define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}" -diff -Naur gcc-4.1.2.orig/gcc/config/ia64/linux.h.orig gcc-4.1.2/gcc/config/ia64/linux.h.orig ---- gcc-4.1.2.orig/gcc/config/ia64/linux.h.orig 1970-01-01 00:00:00.000000000 +0000 -+++ gcc-4.1.2/gcc/config/ia64/linux.h.orig 2006-12-12 15:24:07.000000000 +0000 -@@ -0,0 +1,59 @@ -+/* Definitions for ia64-linux target. */ -+ -+/* This macro is a C statement to print on `stderr' a string describing the -+ particular machine description choice. */ -+ -+#define TARGET_VERSION fprintf (stderr, " (IA-64) Linux"); -+ -+/* This is for -profile to use -lc_p instead of -lc. */ -+#undef CC1_SPEC -+#define CC1_SPEC "%{profile:-p} %{G*}" -+ -+/* Target OS builtins. */ -+#define TARGET_OS_CPP_BUILTINS() \ -+do { \ -+ LINUX_TARGET_OS_CPP_BUILTINS(); \ -+ builtin_define("_LONGLONG"); \ -+} while (0) -+ -+/* Need to override linux.h STARTFILE_SPEC, since it has crtbeginT.o in. */ -+#undef STARTFILE_SPEC -+#ifdef HAVE_LD_PIE -+#define STARTFILE_SPEC \ -+ "%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}}\ -+ crti.o%s %{shared|pie:crtbeginS.o%s;:crtbegin.o%s}" -+#else -+#define STARTFILE_SPEC \ -+ "%{!shared: %{pg|p|profile:gcrt1.o%s;:crt1.o%s}}\ -+ crti.o%s %{shared|pie:crtbeginS.o%s;:crtbegin.o%s}" -+#endif -+ -+/* Similar to standard Linux, but adding -ffast-math support. */ -+#undef ENDFILE_SPEC -+#define ENDFILE_SPEC \ -+ "%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \ -+ %{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s" -+ -+/* Define this for shared library support because it isn't in the main -+ linux.h file. */ -+ -+#undef LINK_SPEC -+#define LINK_SPEC "\ -+ %{shared:-shared} \ -+ %{!shared: \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-linux-ia64.so.2}} \ -+ %{static:-static}}" -+ -+#define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}" -+ -+#define JMP_BUF_SIZE 76 -+ -+/* Override linux.h LINK_EH_SPEC definition. -+ Signalize that because we have fde-glibc, we don't need all C shared libs -+ linked against -lgcc_s. */ -+#undef LINK_EH_SPEC -+#define LINK_EH_SPEC "" -+ -+#define MD_UNWIND_SUPPORT "config/ia64/linux-unwind.h" -diff -Naur gcc-4.1.2.orig/gcc/config/linux.h gcc-4.1.2/gcc/config/linux.h ---- gcc-4.1.2.orig/gcc/config/linux.h 2005-08-06 13:26:35.000000000 +0000 -+++ gcc-4.1.2/gcc/config/linux.h 2011-09-01 17:11:11.000000000 +0000 -@@ -104,3 +104,7 @@ - #define TARGET_C99_FUNCTIONS 1 - - #define TARGET_POSIX_IO -+ -+/* Remove /usr/include from the end of the include search path. */ -+#undef STANDARD_INCLUDE_DIR -+#define STANDARD_INCLUDE_DIR 0 -diff -Naur gcc-4.1.2.orig/gcc/config/m32r/linux.h gcc-4.1.2/gcc/config/m32r/linux.h ---- gcc-4.1.2.orig/gcc/config/m32r/linux.h 2005-07-08 10:00:15.000000000 +0000 -+++ gcc-4.1.2/gcc/config/m32r/linux.h 2011-09-01 17:11:11.000000000 +0000 -@@ -66,7 +66,7 @@ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux.so.2}} \ - %{static:-static}}}" - #else - #define LINK_SPEC "%(link_cpu) -m m32relf_linux %{shared:-shared} \ -@@ -74,7 +74,7 @@ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux.so.2}} \ - %{static:-static}}}" - #endif - -diff -Naur gcc-4.1.2.orig/gcc/config/m68k/linux.h gcc-4.1.2/gcc/config/m68k/linux.h ---- gcc-4.1.2.orig/gcc/config/m68k/linux.h 2005-06-25 01:22:41.000000000 +0000 -+++ gcc-4.1.2/gcc/config/m68k/linux.h 2011-09-01 17:11:11.000000000 +0000 -@@ -128,7 +128,7 @@ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker*:-dynamic-linker /lib/ld.so.1}} \ -+ %{!dynamic-linker*:-dynamic-linker /tools/lib/ld.so.1}} \ - %{static}}" - - /* For compatibility with linux/a.out */ -diff -Naur gcc-4.1.2.orig/gcc/config/mips/linux64.h gcc-4.1.2/gcc/config/mips/linux64.h ---- gcc-4.1.2.orig/gcc/config/mips/linux64.h 2005-06-25 01:22:41.000000000 +0000 -+++ gcc-4.1.2/gcc/config/mips/linux64.h 2011-09-01 17:11:11.000000000 +0000 -@@ -47,9 +47,9 @@ - %{!static: \ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker: \ -- %{mabi=n32: -dynamic-linker /lib32/ld.so.1} \ -- %{mabi=64: -dynamic-linker /lib64/ld.so.1} \ -- %{mabi=32: -dynamic-linker /lib/ld.so.1}}} \ -+ %{mabi=n32: -dynamic-linker /tools/lib32/ld.so.1} \ -+ %{mabi=64: -dynamic-linker /tools/lib64/ld.so.1} \ -+ %{mabi=32: -dynamic-linker /tools/lib/ld.so.1}}} \ - %{static:-static}}} \ - %{mabi=n32:-melf32%{EB:b}%{EL:l}tsmipn32} \ - %{mabi=64:-melf64%{EB:b}%{EL:l}tsmip} \ -diff -Naur gcc-4.1.2.orig/gcc/config/mips/linux.h gcc-4.1.2/gcc/config/mips/linux.h ---- gcc-4.1.2.orig/gcc/config/mips/linux.h 2006-12-17 13:57:31.000000000 +0000 -+++ gcc-4.1.2/gcc/config/mips/linux.h 2011-09-01 17:11:11.000000000 +0000 -@@ -112,7 +112,7 @@ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}} \ - %{static:-static}}}" - - #undef SUBTARGET_ASM_SPEC -diff -Naur gcc-4.1.2.orig/gcc/config/mn10300/linux.h gcc-4.1.2/gcc/config/mn10300/linux.h ---- gcc-4.1.2.orig/gcc/config/mn10300/linux.h 2005-06-25 01:22:41.000000000 +0000 -+++ gcc-4.1.2/gcc/config/mn10300/linux.h 2011-09-01 17:11:11.000000000 +0000 -@@ -37,7 +37,7 @@ - #define LINK_SPEC "%{mrelax:--relax} %{shared:-shared} \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}} \ - %{static:-static}" - - #undef PROCESSOR_DEFAULT -diff -Naur gcc-4.1.2.orig/gcc/config/pa/pa-linux.h gcc-4.1.2/gcc/config/pa/pa-linux.h ---- gcc-4.1.2.orig/gcc/config/pa/pa-linux.h 2007-01-12 02:23:38.000000000 +0000 -+++ gcc-4.1.2/gcc/config/pa/pa-linux.h 2011-09-01 17:11:11.000000000 +0000 -@@ -55,7 +55,7 @@ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}} \ - %{static:-static}}" - - /* glibc's profiling functions don't need gcc to allocate counters. */ -diff -Naur gcc-4.1.2.orig/gcc/config/rs6000/linux64.h gcc-4.1.2/gcc/config/rs6000/linux64.h ---- gcc-4.1.2.orig/gcc/config/rs6000/linux64.h 2006-02-10 20:58:33.000000000 +0000 -+++ gcc-4.1.2/gcc/config/rs6000/linux64.h 2011-09-01 17:11:11.000000000 +0000 -@@ -339,11 +339,11 @@ - - #define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux %{!shared: %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}" -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}}}" - - #define LINK_OS_LINUX_SPEC64 "-m elf64ppc %{!shared: %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib64/ld64.so.1}}}" -+ %{!dynamic-linker:-dynamic-linker /tools/lib64/ld64.so.1}}}" - - #undef TOC_SECTION_ASM_OP - #define TOC_SECTION_ASM_OP \ -diff -Naur gcc-4.1.2.orig/gcc/config/rs6000/sysv4.h gcc-4.1.2/gcc/config/rs6000/sysv4.h ---- gcc-4.1.2.orig/gcc/config/rs6000/sysv4.h 2006-02-10 20:58:33.000000000 +0000 -+++ gcc-4.1.2/gcc/config/rs6000/sysv4.h 2011-09-01 17:11:11.000000000 +0000 -@@ -1041,7 +1041,7 @@ - - #define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}" -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}}}" - - #if defined(HAVE_LD_EH_FRAME_HDR) - # define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " -@@ -1072,7 +1072,7 @@ - - #define LINK_OS_GNU_SPEC "-m elf32ppclinux %{!shared: %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}" -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}}}" - - #define CPP_OS_GNU_SPEC "-D__unix__ -D__gnu_hurd__ -D__GNU__ \ - %{!undef: \ -diff -Naur gcc-4.1.2.orig/gcc/config/s390/linux.h gcc-4.1.2/gcc/config/s390/linux.h ---- gcc-4.1.2.orig/gcc/config/s390/linux.h 2006-12-12 15:24:07.000000000 +0000 -+++ gcc-4.1.2/gcc/config/s390/linux.h 2011-09-01 17:11:11.000000000 +0000 -@@ -86,8 +86,8 @@ - %{!static: \ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker: \ -- %{m31:-dynamic-linker /lib/ld.so.1} \ -- %{m64:-dynamic-linker /lib/ld64.so.1}}}}" -+ %{m31:-dynamic-linker /tools/lib/ld.so.1} \ -+ %{m64:-dynamic-linker /tools/lib/ld64.so.1}}}}" - - #define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}" - -diff -Naur gcc-4.1.2.orig/gcc/config/s390/linux.h.orig gcc-4.1.2/gcc/config/s390/linux.h.orig ---- gcc-4.1.2.orig/gcc/config/s390/linux.h.orig 1970-01-01 00:00:00.000000000 +0000 -+++ gcc-4.1.2/gcc/config/s390/linux.h.orig 2006-12-12 15:24:07.000000000 +0000 -@@ -0,0 +1,107 @@ -+/* Definitions for Linux for S/390. -+ Copyright (C) 1999, 2000, 2001, 2002, 2004 Free Software Foundation, Inc. -+ Contributed by Hartmut Penner (hpenner@de.ibm.com) and -+ Ulrich Weigand (uweigand@de.ibm.com). -+ -+This file is part of GCC. -+ -+GCC is free software; you can redistribute it and/or modify it under -+the terms of the GNU General Public License as published by the Free -+Software Foundation; either version 2, or (at your option) any later -+version. -+ -+GCC is distributed in the hope that it will be useful, but WITHOUT ANY -+WARRANTY; without even the implied warranty of MERCHANTABILITY or -+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+for more details. -+ -+You should have received a copy of the GNU General Public License -+along with GCC; see the file COPYING. If not, write to the Free -+Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA -+02110-1301, USA. */ -+ -+#ifndef _LINUX_H -+#define _LINUX_H -+ -+/* Target specific version string. */ -+ -+#ifdef DEFAULT_TARGET_64BIT -+#undef TARGET_VERSION -+#define TARGET_VERSION fprintf (stderr, " (Linux for zSeries)"); -+#else -+#undef TARGET_VERSION -+#define TARGET_VERSION fprintf (stderr, " (Linux for S/390)"); -+#endif -+ -+ -+/* Target specific type definitions. */ -+ -+/* ??? Do we really want long as size_t on 31-bit? */ -+#undef SIZE_TYPE -+#define SIZE_TYPE (TARGET_64BIT ? "long unsigned int" : "long unsigned int") -+#undef PTRDIFF_TYPE -+#define PTRDIFF_TYPE (TARGET_64BIT ? "long int" : "int") -+ -+#undef WCHAR_TYPE -+#define WCHAR_TYPE "int" -+#undef WCHAR_TYPE_SIZE -+#define WCHAR_TYPE_SIZE 32 -+ -+ -+/* Target specific preprocessor settings. */ -+ -+#define TARGET_OS_CPP_BUILTINS() \ -+ do \ -+ { \ -+ LINUX_TARGET_OS_CPP_BUILTINS(); \ -+ if (flag_pic) \ -+ { \ -+ builtin_define ("__PIC__"); \ -+ builtin_define ("__pic__"); \ -+ } \ -+ } \ -+ while (0) -+ -+ -+/* Target specific assembler settings. */ -+ -+#undef ASM_SPEC -+#define ASM_SPEC "%{m31&m64}%{mesa&mzarch}%{march=*}" -+ -+ -+/* Target specific linker settings. */ -+ -+#ifdef DEFAULT_TARGET_64BIT -+#define MULTILIB_DEFAULTS { "m64" } -+#else -+#define MULTILIB_DEFAULTS { "m31" } -+#endif -+ -+#undef LINK_SPEC -+#define LINK_SPEC \ -+ "%{m31:-m elf_s390}%{m64:-m elf64_s390} \ -+ %{shared:-shared} \ -+ %{!shared: \ -+ %{static:-static} \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker: \ -+ %{m31:-dynamic-linker /lib/ld.so.1} \ -+ %{m64:-dynamic-linker /lib/ld64.so.1}}}}" -+ -+#define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}" -+ -+#define TARGET_ASM_FILE_END file_end_indicate_exec_stack -+ -+#define MD_UNWIND_SUPPORT "config/s390/linux-unwind.h" -+ -+#ifdef TARGET_LIBC_PROVIDES_SSP -+/* s390 glibc provides __stack_chk_guard in 0x14(tp), -+ s390x glibc provides it at 0x28(tp). */ -+#define TARGET_THREAD_SSP_OFFSET (TARGET_64BIT ? 0x28 : 0x14) -+#endif -+ -+/* Define if long doubles should be mangled as 'g'. */ -+#define TARGET_ALTERNATE_LONG_DOUBLE_MANGLING -+ -+#endif -diff -Naur gcc-4.1.2.orig/gcc/config/sh/linux.h gcc-4.1.2/gcc/config/sh/linux.h ---- gcc-4.1.2.orig/gcc/config/sh/linux.h 2005-06-25 01:22:41.000000000 +0000 -+++ gcc-4.1.2/gcc/config/sh/linux.h 2011-09-01 17:11:11.000000000 +0000 -@@ -60,7 +60,7 @@ - "%{shared:-shared} \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux.so.2}} \ - %{static:-static}" - - /* Output assembler code to STREAM to call the profiler. */ -diff -Naur gcc-4.1.2.orig/gcc/config/sparc/linux64.h gcc-4.1.2/gcc/config/sparc/linux64.h ---- gcc-4.1.2.orig/gcc/config/sparc/linux64.h 2006-02-11 08:38:51.000000000 +0000 -+++ gcc-4.1.2/gcc/config/sparc/linux64.h 2011-09-01 17:11:11.000000000 +0000 -@@ -162,21 +162,21 @@ - { "link_arch_default", LINK_ARCH_DEFAULT_SPEC }, \ - { "link_arch", LINK_ARCH_SPEC }, - --#define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \ -+#define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,/tools/lib %{shared:-shared} \ - %{!shared: \ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux.so.2}} \ - %{static:-static}}} \ - " - --#define LINK_ARCH64_SPEC "-m elf64_sparc -Y P,/usr/lib64 %{shared:-shared} \ -+#define LINK_ARCH64_SPEC "-m elf64_sparc -Y P,/tools/lib64 %{shared:-shared} \ - %{!shared: \ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib64/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib64/ld-linux.so.2}} \ - %{static:-static}}} \ - " - -@@ -252,12 +252,12 @@ - #else /* !SPARC_BI_ARCH */ - - #undef LINK_SPEC --#define LINK_SPEC "-m elf64_sparc -Y P,/usr/lib64 %{shared:-shared} \ -+#define LINK_SPEC "-m elf64_sparc -Y P,/tools/lib64 %{shared:-shared} \ - %{!shared: \ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib64/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib64/ld-linux.so.2}} \ - %{static:-static}}} \ - %{mlittle-endian:-EL} \ - %{!mno-relax:%{!r:-relax}} \ -diff -Naur gcc-4.1.2.orig/gcc/config/sparc/linux.h gcc-4.1.2/gcc/config/sparc/linux.h ---- gcc-4.1.2.orig/gcc/config/sparc/linux.h 2006-02-11 08:38:51.000000000 +0000 -+++ gcc-4.1.2/gcc/config/sparc/linux.h 2011-09-01 17:11:11.000000000 +0000 -@@ -126,13 +126,13 @@ - /* If ELF is the default format, we should not use /lib/elf. */ - - #undef LINK_SPEC --#define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \ -+#define LINK_SPEC "-m elf32_sparc -Y P,/tools/lib %{shared:-shared} \ - %{!mno-relax:%{!r:-relax}} \ - %{!shared: \ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux.so.2}} \ - %{static:-static}}}" - - /* The sun bundled assembler doesn't accept -Yd, (and neither does gas). -diff -Naur gcc-4.1.2.orig/gcc/config/xtensa/linux.h gcc-4.1.2/gcc/config/xtensa/linux.h ---- gcc-4.1.2.orig/gcc/config/xtensa/linux.h 2005-06-25 01:22:41.000000000 +0000 -+++ gcc-4.1.2/gcc/config/xtensa/linux.h 2011-09-01 17:11:11.000000000 +0000 -@@ -50,7 +50,7 @@ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}} \ - %{static:-static}}}" - - #undef LOCAL_LABEL_PREFIX diff --git a/src/patches/gcc-4.4.3-startfiles_fix-1.patch b/src/patches/gcc-4.4.3-startfiles_fix-1.patch new file mode 100644 index 0000000..a2eac9e --- /dev/null +++ b/src/patches/gcc-4.4.3-startfiles_fix-1.patch @@ -0,0 +1,33 @@ +Submitted By: Jeremy Huntwork (jhuntwork AT linuxfromscratch DOT org) +Date: 2008-12-05 +Initial Package Version: 4.3.2 +Upstream Status: See below. +Origin: DIY Linux, See below. +Description: Original patch follows: + +# DIY Linux Patch +Date: 2008-09-09 +Author: Refer Origin. +Origin: Partial revert of http://gcc.gnu.org/ml/gcc-cvs/2006-11/msg00416.html +Maker: Greg Schafer gschafer@zip.com.au +Upstream Status: Not applicable. Tweak only for Temptools phase GCC-Pass2. +Description: Partially revert GCC driver to pre-GCC-4.3 state to allow startfiles to be + found in $prefix when GCC is configured for a non-standard prefix eg: /temptools. Full + background info in thread starting here: http://gcc.gnu.org/ml/gcc/2008-03/msg00095.html + and GCC bugzilla here: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35532 + +diff -Naur gcc-4.3.0-RC-20080222.orig/gcc/gcc.c gcc-4.3.0-RC-20080222/gcc/gcc.c +--- gcc-4.3.0-RC-20080222.orig/gcc/gcc.c 2008-01-24 18:57:12.000000000 +0000 ++++ gcc-4.3.0-RC-20080222/gcc/gcc.c 2008-03-02 06:07:36.000000000 +0000 +@@ -6370,6 +6370,11 @@ + machine_suffix, + standard_startfile_prefix, NULL), + NULL, PREFIX_PRIORITY_LAST, 0, 1); ++ add_prefix (&startfile_prefixes, ++ concat (standard_exec_prefix, ++ machine_suffix, ++ standard_startfile_prefix, NULL), ++ NULL, PREFIX_PRIORITY_LAST, 0, 1); + } + + /* Sysrooted prefixes are relocated because target_system_root is diff --git a/src/patches/gcc-libstdc++-pic.patch b/src/patches/gcc-libstdc++-pic.patch deleted file mode 100644 index a9d6e71..0000000 --- a/src/patches/gcc-libstdc++-pic.patch +++ /dev/null @@ -1,45 +0,0 @@ ---- gcc-4.0.0/libstdc++-v3/src/Makefile.am -+++ gcc-4.0.0/libstdc++-v3/src/Makefile.am -@@ -214,6 +214,10 @@ - $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LDFLAGS) -o $@ - - -+install-exec-local: -+ $(AR) cru libstdc++_pic.a *.o $(top_builddir)/libsupc++/*.o -+ $(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir) -+ - # Added bits to build debug library. - if GLIBCXX_BUILD_DEBUG - all-local: build_debug ---- gcc-4.0.0/libstdc++-v3/src/Makefile.in -+++ gcc-4.0.0/libstdc++-v3/src/Makefile.in -@@ -625,7 +625,7 @@ - - install-data-am: install-data-local - --install-exec-am: install-toolexeclibLTLIBRARIES -+install-exec-am: install-toolexeclibLTLIBRARIES install-exec-local - - install-info: install-info-am - -@@ -664,7 +664,7 @@ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-info-am \ -- uninstall-toolexeclibLTLIBRARIES -+ uninstall-toolexeclibLTLIBRARIES install-exec-local - - @GLIBCXX_BUILD_VERSIONED_SHLIB_TRUE@libstdc++-symbol.ver: ${glibcxx_srcdir}/$(SYMVER_MAP) - @GLIBCXX_BUILD_VERSIONED_SHLIB_TRUE@ cp ${glibcxx_srcdir}/$(SYMVER_MAP) ./libstdc++-symbol.ver -@@ -743,6 +743,11 @@ - install_debug: - (cd ${debugdir} && $(MAKE) \ - toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install) -+ -+install-exec-local: -+ $(AR) cru libstdc++_pic.a *.o $(top_builddir)/libsupc++/*.o -+ $(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir) -+ - # Tell versions [3.59,3.63) of GNU make to not export all variables. - # Otherwise a system limit (for SysV at least) may be exceeded. - .NOEXPORT: diff --git a/src/patches/gcc-sdk-libstdc++-includes.patch b/src/patches/gcc-sdk-libstdc++-includes.patch deleted file mode 100644 index c7676ae..0000000 --- a/src/patches/gcc-sdk-libstdc++-includes.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff -urN gcc-4.0.0-100/libstdc++-v3/fragment.am gcc-4.0.0/libstdc++-v3/fragment.am ---- gcc-4.0.0-100/libstdc++-v3/fragment.am 2004-10-25 15:32:40.000000000 -0500 -+++ gcc-4.0.0/libstdc++-v3/fragment.am 2005-04-28 21:48:43.000000000 -0500 -@@ -18,5 +18,5 @@ - $(WARN_FLAGS) $(WERROR) -fdiagnostics-show-location=once - - # -I/-D flags to pass when compiling. --AM_CPPFLAGS = $(GLIBCXX_INCLUDES) -+AM_CPPFLAGS = $(GLIBCXX_INCLUDES) -I$(toplevel_srcdir)/include - -diff -urN gcc-4.0.0-100/libstdc++-v3/libmath/Makefile.am gcc-4.0.0/libstdc++-v3/libmath/Makefile.am ---- gcc-4.0.0-100/libstdc++-v3/libmath/Makefile.am 2003-08-27 16:29:42.000000000 -0500 -+++ gcc-4.0.0/libstdc++-v3/libmath/Makefile.am 2005-04-28 21:48:43.000000000 -0500 -@@ -32,7 +32,7 @@ - - libmath_la_SOURCES = stubs.c - --AM_CPPFLAGS = $(CANADIAN_INCLUDES) -+AM_CPPFLAGS = $(CANADIAN_INCLUDES) -I$(toplevel_srcdir)/include - - # Only compiling "C" sources in this directory. - LIBTOOL = @LIBTOOL@ --tag CC diff --git a/src/patches/gcc-uclibc-conf.patch b/src/patches/gcc-uclibc-conf.patch deleted file mode 100644 index 3be7d09..0000000 --- a/src/patches/gcc-uclibc-conf.patch +++ /dev/null @@ -1,553 +0,0 @@ ---- gcc-4.0.2/gcc/config/t-linux-uclibc -+++ gcc-4.0.2/gcc/config/t-linux-uclibc -@@ -0,0 +1,5 @@ -+# Remove glibc specific files added in t-linux -+SHLIB_MAPFILES := $(filter-out $(srcdir)/config/libgcc-glibc.ver, $(SHLIB_MAPFILES)) -+ -+# Use unwind-dw2-fde instead of unwind-dw2-fde-glibc -+LIB2ADDEH := $(subst unwind-dw2-fde-glibc.c,unwind-dw2-fde.c,$(LIB2ADDEH)) ---- gcc-4.0.2/gcc/config.gcc -+++ gcc-4.0.2/gcc/config.gcc -@@ -1778,7 +1778,7 @@ - ;; - sh-*-elf* | sh[12346l]*-*-elf* | sh*-*-kaos* | \ - sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | \ -- sh-*-linux* | sh[346lbe]*-*-linux* | \ -+ sh*-*-linux* | sh[346lbe]*-*-linux* | \ - sh-*-netbsdelf* | shl*-*-netbsdelf* | sh5-*-netbsd* | sh5l*-*-netbsd* | \ - sh64-*-netbsd* | sh64l*-*-netbsd*) - tmake_file="${tmake_file} sh/t-sh sh/t-elf" -@@ -2234,10 +2234,16 @@ - *) - echo "*** Configuration ${target} not supported" 1>&2 - exit 1 - ;; - esac -+ -+# Rather than hook into each target, just do it after all the linux -+# targets have been processed -+case ${target} in -+*-linux-uclibc*) tm_defines="${tm_defines} USE_UCLIBC" ; tmake_file="${tmake_file} t-linux-uclibc" -+esac - - case ${target} in - i[34567]86-*-linux*aout* | i[34567]86-*-linux*libc1) - tmake_file="${tmake_file} i386/t-gmm_malloc" - ;; ---- gcc-4.0.2/gcc/config/alpha/linux-elf.h -+++ gcc-4.0.2/gcc/config/alpha/linux-elf.h -@@ -27,7 +27,11 @@ - #define SUBTARGET_EXTRA_SPECS \ - { "elf_dynamic_linker", ELF_DYNAMIC_LINKER }, - -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else - #define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2" -+#endif - - #define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax} \ - %{O*:-O3} %{!O*:-O1} \ ---- gcc-4.0.2/gcc/config/arm/linux-elf.h -+++ gcc-4.0.2/gcc/config/arm/linux-elf.h -@@ -81,14 +81,19 @@ - #define ENDFILE_SPEC \ - "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s" - -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else -+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2" -+#endif - #undef LINK_SPEC - #define LINK_SPEC "%{h*} %{version:-v} \ - %{b} %{Wl,*:%*} \ - %{static:-Bstatic} \ - %{shared:-shared} \ - %{symbolic:-Bsymbolic} \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2} \ -+ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "} \ - -X \ - %{mbig-endian:-EB}" \ - SUBTARGET_EXTRA_LINK_SPEC ---- gcc-4.0.2/gcc/config/cris/linux.h -+++ gcc-4.0.2/gcc/config/cris/linux.h -@@ -79,6 +79,25 @@ - #undef CRIS_DEFAULT_CPU_VERSION - #define CRIS_DEFAULT_CPU_VERSION CRIS_CPU_NG - -+#ifdef USE_UCLIBC -+ -+#undef CRIS_SUBTARGET_VERSION -+#define CRIS_SUBTARGET_VERSION " - cris-axis-linux-uclibc" -+ -+#undef CRIS_LINK_SUBTARGET_SPEC -+#define CRIS_LINK_SUBTARGET_SPEC \ -+ "-mcrislinux\ -+ -rpath-link include/asm/../..%s\ -+ %{shared} %{static}\ -+ %{symbolic:-Bdynamic} %{shlib:-Bdynamic} %{static:-Bstatic}\ -+ %{!shared: \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}} \ -+ %{!r:%{O2|O3: --gc-sections}}" -+ -+#else /* USE_UCLIBC */ -+ - #undef CRIS_SUBTARGET_VERSION - #define CRIS_SUBTARGET_VERSION " - cris-axis-linux-gnu" - -@@ -93,6 +112,8 @@ - %{!shared:%{!static:%{rdynamic:-export-dynamic}}}\ - %{!r:%{O2|O3: --gc-sections}}" - -+#endif /* USE_UCLIBC */ -+ - - /* Node: Run-time Target */ - ---- gcc-4.0.2/gcc/config/i386/linux.h -+++ gcc-4.0.2/gcc/config/i386/linux.h -@@ -107,6 +107,11 @@ - #define LINK_EMULATION "elf_i386" - #define DYNAMIC_LINKER "/lib/ld-linux.so.2" - -+#ifdef USE_UCLIBC -+#undef DYNAMIC_LINKER -+#define DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#endif -+ - #undef SUBTARGET_EXTRA_SPECS - #define SUBTARGET_EXTRA_SPECS \ - { "link_emulation", LINK_EMULATION },\ ---- gcc-4.0.2/gcc/config/i386/linux64.h -+++ gcc-4.0.2/gcc/config/i386/linux64.h -@@ -54,14 +54,21 @@ - When the -shared link option is used a final link is not being - done. */ - -+#ifdef USE_UCLIBC -+#define ELF32_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#define ELF64_DYNAMIC_LINKER "/lib/ld64-uClibc.so.0" -+#else -+#define ELF32_DYNAMIC_LINKER "/lib/ld-linux.so.2" -+#define ELF64_DYNAMIC_LINKER "/lib64/ld-linux-x86-64.so.2" -+#endif - #undef LINK_SPEC - #define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} \ - %{shared:-shared} \ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{m32:%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -- %{!m32:%{!dynamic-linker:-dynamic-linker /lib64/ld-linux-x86-64.so.2}}} \ -+ %{m32:%{!dynamic-linker:-dynamic-linker " ELF32_DYNAMIC_LINKER "}} \ -+ %{!m32:%{!dynamic-linker:-dynamic-linker " ELF64_DYNAMIC_LINKER "}}} \ - %{static:-static}}" - - #define MULTILIB_DEFAULTS { "m64" } ---- gcc-4.0.2/gcc/config/ia64/linux.h -+++ gcc-4.0.2/gcc/config/ia64/linux.h -@@ -37,13 +37,18 @@ - /* Define this for shared library support because it isn't in the main - linux.h file. */ - -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else -+#define ELF_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2" -+#endif - #undef LINK_SPEC - #define LINK_SPEC "\ - %{shared:-shared} \ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux-ia64.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ - %{static:-static}}" - - ---- gcc-4.0.2/gcc/config/m68k/linux.h -+++ gcc-4.0.2/gcc/config/m68k/linux.h -@@ -127,12 +127,17 @@ - - /* If ELF is the default format, we should not use /lib/elf. */ - -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else -+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1" -+#endif - #undef LINK_SPEC - #define LINK_SPEC "-m m68kelf %{shared} \ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker*:-dynamic-linker /lib/ld.so.1}} \ -+ %{!dynamic-linker*:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ - %{static}}" - - /* For compatibility with linux/a.out */ ---- gcc-4.0.2/gcc/config/mips/linux.h -+++ gcc-4.0.2/gcc/config/mips/linux.h -@@ -108,14 +108,19 @@ - - /* Borrowed from sparc/linux.h */ - #undef LINK_SPEC -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else -+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1" -+#endif - #define LINK_SPEC \ - "%(endian_spec) \ - %{shared:-shared} \ - %{!shared: \ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ -+ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ - %{static:-static}}}" - - #undef SUBTARGET_ASM_SPEC ---- gcc-4.0.2/gcc/config/pa/pa-linux.h -+++ gcc-4.0.2/gcc/config/pa/pa-linux.h -@@ -82,13 +82,18 @@ - /* Define this for shared library support because it isn't in the main - linux.h file. */ - -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else -+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1" -+#endif - #undef LINK_SPEC - #define LINK_SPEC "\ - %{shared:-shared} \ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ -+ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ - %{static:-static}}" - - /* glibc's profiling functions don't need gcc to allocate counters. */ ---- gcc-4.0.2/gcc/config/rs6000/linux.h -+++ gcc-4.0.2/gcc/config/rs6000/linux.h -@@ -69,7 +69,11 @@ - #define LINK_START_DEFAULT_SPEC "%(link_start_linux)" - - #undef LINK_OS_DEFAULT_SPEC -+#ifdef USE_UCLIBC -+#define LINK_OS_DEFAULT_SPEC "%(link_os_linux_uclibc)" -+#else - #define LINK_OS_DEFAULT_SPEC "%(link_os_linux)" -+#endif - - #define LINK_GCC_C_SEQUENCE_SPEC \ - "%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}" ---- gcc-4.0.2/gcc/config/rs6000/sysv4.h -+++ gcc-4.0.2/gcc/config/rs6000/sysv4.h -@@ -949,6 +949,7 @@ - mcall-linux : %(link_os_linux) ; \ - mcall-gnu : %(link_os_gnu) ; \ - mcall-netbsd : %(link_os_netbsd) ; \ -+ mcall-linux-uclibc : %(link_os_linux_uclibc); \ - mcall-openbsd: %(link_os_openbsd) ; \ - : %(link_os_default) }" - -@@ -1127,6 +1128,10 @@ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}" - -+#define LINK_OS_LINUX_UCLIBC_SPEC "-m elf32ppclinux %{!shared: %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}}" -+ - #if defined(HAVE_LD_EH_FRAME_HDR) - # define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " - #endif -@@ -1293,6 +1298,7 @@ - { "link_os_sim", LINK_OS_SIM_SPEC }, \ - { "link_os_freebsd", LINK_OS_FREEBSD_SPEC }, \ - { "link_os_linux", LINK_OS_LINUX_SPEC }, \ -+ { "link_os_linux_uclibc", LINK_OS_LINUX_UCLIBC_SPEC }, \ - { "link_os_gnu", LINK_OS_GNU_SPEC }, \ - { "link_os_netbsd", LINK_OS_NETBSD_SPEC }, \ - { "link_os_openbsd", LINK_OS_OPENBSD_SPEC }, \ ---- gcc-4.0.2/gcc/config/s390/linux.h -+++ gcc-4.0.2/gcc/config/s390/linux.h -@@ -77,6 +77,13 @@ - #define MULTILIB_DEFAULTS { "m31" } - #endif - -+#ifdef USE_UCLIBC -+#define ELF31_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#define ELF64_DYNAMIC_LINKER "/lib/ld64-uClibc.so.0" -+#else -+#define ELF31_DYNAMIC_LINKER "/lib/ld.so.1" -+#define ELF64_DYNAMIC_LINKER "/lib/ld64.so.1" -+#endif - #undef LINK_SPEC - #define LINK_SPEC \ - "%{m31:-m elf_s390}%{m64:-m elf64_s390} \ -@@ -86,8 +93,8 @@ - %{!static: \ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker: \ -- %{m31:-dynamic-linker /lib/ld.so.1} \ -- %{m64:-dynamic-linker /lib/ld64.so.1}}}}" -+ %{m31:-dynamic-linker " ELF31_DYNAMIC_LINKER "} \ -+ %{m64:-dynamic-linker " ELF64_DYNAMIC_LINKER "}}}}" - - - #define TARGET_ASM_FILE_END file_end_indicate_exec_stack ---- gcc-4.0.2/gcc/config/sh/linux.h -+++ gcc-4.0.2/gcc/config/sh/linux.h -@@ -67,11 +67,16 @@ - #undef SUBTARGET_LINK_EMUL_SUFFIX - #define SUBTARGET_LINK_EMUL_SUFFIX "_linux" - #undef SUBTARGET_LINK_SPEC -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else -+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2" -+#endif - #define SUBTARGET_LINK_SPEC \ - "%{shared:-shared} \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ - %{static:-static}" - - #undef LIB_SPEC ---- gcc-4.0.2/gcc/config/sparc/linux.h -+++ gcc-4.0.2/gcc/config/sparc/linux.h -@@ -130,14 +130,19 @@ - - /* If ELF is the default format, we should not use /lib/elf. */ - -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else -+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2" -+#endif - #undef LINK_SPEC - #define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \ - %{!mno-relax:%{!r:-relax}} \ - %{!shared: \ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ - %{static:-static}}}" - - /* The sun bundled assembler doesn't accept -Yd, (and neither does gas). ---- gcc-4.0.2/gcc/config/sparc/linux64.h -+++ gcc-4.0.2/gcc/config/sparc/linux64.h -@@ -167,12 +166,17 @@ - { "link_arch_default", LINK_ARCH_DEFAULT_SPEC }, \ - { "link_arch", LINK_ARCH_SPEC }, - -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else -+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2" -+#endif - #define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \ - %{!shared: \ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ - %{static:-static}}} \ - " - ---- gcc-4.0.2/libtool.m4 -+++ gcc-4.0.2/libtool.m4 -@@ -682,6 +682,11 @@ - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - [lt_cv_deplibs_check_method='match_pattern /lib[^/.]+.so.[0-9]+.[0-9]+$'] ---- gcc-4.0.2/ltconfig -+++ gcc-4.0.2/ltconfig -@@ -603,6 +603,7 @@ - - # Transform linux* to *-*-linux-gnu*, to support old configure scripts. - case $host_os in -+linux-uclibc*) ;; - linux-gnu*) ;; - linux*) host=`echo $host | sed 's/^(.*-.*-linux)(.*)$/\1-gnu\2/'` - esac -@@ -1274,6 +1275,23 @@ - dynamic_linker='GNU/Linux ld.so' - ;; - -+linux-uclibc*) -+ version_type=linux -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -+ soname_spec='${libname}${release}.so$major' -+ finish_cmds='PATH="$PATH:/sbin" ldconfig -n $libdir' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ # This implies no fast_install, which is unacceptable. -+ # Some rework will be needed to allow for fast_install -+ # before this can be enabled. -+ hardcode_into_libs=yes -+ # Assume using the uClibc dynamic linker. -+ dynamic_linker="uClibc ld.so" -+ ;; -+ - netbsd*) - need_lib_prefix=no - need_version=no ---- gcc-4.0.2/libffi/configure -+++ gcc-4.0.2/libffi/configure -@@ -3457,6 +3457,11 @@ - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/.]+.so.[0-9]+.[0-9]+$' ---- gcc-4.0.2/libgfortran/configure -+++ gcc-4.0.2/libgfortran/configure -@@ -3681,6 +3681,11 @@ - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/.]+.so.[0-9]+.[0-9]+$' ---- gcc-4.0.2/libjava/configure -+++ gcc-4.0.2/libjava/configure -@@ -4351,6 +4351,11 @@ - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/.]+.so.[0-9]+.[0-9]+$' ---- gcc-4.0.2/libmudflap/configure -+++ gcc-4.0.2/libmudflap/configure -@@ -5380,6 +5380,11 @@ - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/.]+.so.[0-9]+.[0-9]+$' ---- gcc-4.0.2/libobjc/configure -+++ gcc-4.0.2/libobjc/configure -@@ -3283,6 +3283,11 @@ - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/.]+.so.[0-9]+.[0-9]+$' ---- gcc-4.0.2/boehm-gc/configure -+++ gcc-4.0.2/boehm-gc/configure -@@ -4320,6 +4320,11 @@ - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/.]+.so.[0-9]+.[0-9]+$' ---- gcc-4.0.2/configure -+++ gcc-4.0.2/configure -@@ -1141,7 +1141,7 @@ - ;; - "") - case "${target}" in -- *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu) -+ *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu | *-*-linux-uclibc*) - # Enable libmudflap by default in GNU and friends. - ;; - *-*-freebsd*) ---- gcc-4.0.2/configure.in -+++ gcc-4.0.2/configure.in -@@ -350,7 +350,7 @@ - ;; - "") - case "${target}" in -- *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu) -+ *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu | *-*-linux-uclibc*) - # Enable libmudflap by default in GNU and friends. - ;; - *-*-freebsd*) ---- gcc-4.0.2/contrib/regression/objs-gcc.sh -+++ gcc-4.0.2/contrib/regression/objs-gcc.sh -@@ -105,6 +105,10 @@ - then - make all-gdb all-dejagnu all-ld || exit 1 - make install-gdb install-dejagnu install-ld || exit 1 -+elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ] -+ then -+ make all-gdb all-dejagnu all-ld || exit 1 -+ make install-gdb install-dejagnu install-ld || exit 1 - elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then - make bootstrap || exit 1 - make install || exit 1 ---- gcc-4.0.2/zlib/configure -+++ gcc-4.0.2/zlib/configure -@@ -3426,6 +3426,11 @@ - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/.]+.so.[0-9]+.[0-9]+$' diff --git a/src/patches/gcc-uclibc-locale.patch b/src/patches/gcc-uclibc-locale.patch deleted file mode 100644 index ac4cf97..0000000 --- a/src/patches/gcc-uclibc-locale.patch +++ /dev/null @@ -1,3237 +0,0 @@ -diff -urN gcc-4.0.0-100/libstdc++-v3/acinclude.m4 gcc-4.0.0/libstdc++-v3/acinclude.m4 ---- gcc-4.0.0-100/libstdc++-v3/acinclude.m4 2005-04-30 13:06:53.000000000 -0500 -+++ gcc-4.0.0/libstdc++-v3/acinclude.m4 2005-04-28 20:19:01.000000000 -0500 -@@ -1104,7 +1104,7 @@ - AC_MSG_CHECKING([for C locale to use]) - GLIBCXX_ENABLE(clocale,auto,[@<:@=MODEL@:>@], - [use MODEL for target locale package], -- [permit generic|gnu|ieee_1003.1-2001|yes|no|auto]) -+ [permit generic|gnu|ieee_1003.1-2001|uclibc|yes|no|auto]) - - # If they didn't use this option switch, or if they specified --enable - # with no specific model, we'll have to look for one. If they -@@ -1120,6 +1120,9 @@ - # Default to "generic". - if test $enable_clocale_flag = auto; then - case ${target_os} in -+ *-uclibc*) -+ enable_clocale_flag=uclibc -+ ;; - linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu) - AC_EGREP_CPP([_GLIBCXX_ok], [ - #include <features.h> -@@ -1263,6 +1266,40 @@ - CTIME_CC=config/locale/generic/time_members.cc - CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h - ;; -+ uclibc) -+ AC_MSG_RESULT(uclibc) -+ -+ # Declare intention to use gettext, and add support for specific -+ # languages. -+ # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT -+ ALL_LINGUAS="de fr" -+ -+ # Don't call AM-GNU-GETTEXT here. Instead, assume glibc. -+ AC_CHECK_PROG(check_msgfmt, msgfmt, yes, no) -+ if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then -+ USE_NLS=yes -+ fi -+ # Export the build objects. -+ for ling in $ALL_LINGUAS; do \ -+ glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \ -+ glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \ -+ done -+ AC_SUBST(glibcxx_MOFILES) -+ AC_SUBST(glibcxx_POFILES) -+ -+ CLOCALE_H=config/locale/uclibc/c_locale.h -+ CLOCALE_CC=config/locale/uclibc/c_locale.cc -+ CCODECVT_CC=config/locale/uclibc/codecvt_members.cc -+ CCOLLATE_CC=config/locale/uclibc/collate_members.cc -+ CCTYPE_CC=config/locale/uclibc/ctype_members.cc -+ CMESSAGES_H=config/locale/uclibc/messages_members.h -+ CMESSAGES_CC=config/locale/uclibc/messages_members.cc -+ CMONEY_CC=config/locale/uclibc/monetary_members.cc -+ CNUMERIC_CC=config/locale/uclibc/numeric_members.cc -+ CTIME_H=config/locale/uclibc/time_members.h -+ CTIME_CC=config/locale/uclibc/time_members.cc -+ CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h -+ ;; - esac - - # This is where the testsuite looks for locale catalogs, using the -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/c++locale_internal.h gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c++locale_internal.h ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/c++locale_internal.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c++locale_internal.h 2005-04-28 01:13:15.000000000 -0500 -@@ -0,0 +1,59 @@ -+// Prototypes for GLIBC thread locale __-prefixed functions -*- C++ -*- -+ -+// Copyright (C) 2002, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// Written by Jakub Jelinek jakub@redhat.com -+ -+#include <clocale> -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning clean this up -+#endif -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ -+extern "C" __typeof(iswctype_l) __iswctype_l; -+extern "C" __typeof(nl_langinfo_l) __nl_langinfo_l; -+extern "C" __typeof(strcoll_l) __strcoll_l; -+extern "C" __typeof(strftime_l) __strftime_l; -+extern "C" __typeof(strtod_l) __strtod_l; -+extern "C" __typeof(strtof_l) __strtof_l; -+extern "C" __typeof(strtold_l) __strtold_l; -+extern "C" __typeof(strxfrm_l) __strxfrm_l; -+extern "C" __typeof(towlower_l) __towlower_l; -+extern "C" __typeof(towupper_l) __towupper_l; -+extern "C" __typeof(wcscoll_l) __wcscoll_l; -+extern "C" __typeof(wcsftime_l) __wcsftime_l; -+extern "C" __typeof(wcsxfrm_l) __wcsxfrm_l; -+extern "C" __typeof(wctype_l) __wctype_l; -+extern "C" __typeof(newlocale) __newlocale; -+extern "C" __typeof(freelocale) __freelocale; -+extern "C" __typeof(duplocale) __duplocale; -+extern "C" __typeof(uselocale) __uselocale; -+ -+#endif // GLIBC 2.3 and later -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/c_locale.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c_locale.cc ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/c_locale.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c_locale.cc 2005-04-28 01:13:15.000000000 -0500 -@@ -0,0 +1,160 @@ -+// Wrapper for underlying C-language localization -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.8 Standard locale categories. -+// -+ -+// Written by Benjamin Kosnik bkoz@redhat.com -+ -+#include <cerrno> // For errno -+#include <locale> -+#include <stdexcept> -+#include <langinfo.h> -+#include <bits/c++locale_internal.h> -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __strtol_l(S, E, B, L) strtol((S), (E), (B)) -+#define __strtoul_l(S, E, B, L) strtoul((S), (E), (B)) -+#define __strtoll_l(S, E, B, L) strtoll((S), (E), (B)) -+#define __strtoull_l(S, E, B, L) strtoull((S), (E), (B)) -+#define __strtof_l(S, E, L) strtof((S), (E)) -+#define __strtod_l(S, E, L) strtod((S), (E)) -+#define __strtold_l(S, E, L) strtold((S), (E)) -+#warning should dummy __newlocale check for C|POSIX ? -+#define __newlocale(a, b, c) NULL -+#define __freelocale(a) ((void)0) -+#define __duplocale(a) __c_locale() -+#endif -+ -+namespace std -+{ -+ template<> -+ void -+ __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err, -+ const __c_locale& __cloc) -+ { -+ if (!(__err & ios_base::failbit)) -+ { -+ char* __sanity; -+ errno = 0; -+ float __f = __strtof_l(__s, &__sanity, __cloc); -+ if (__sanity != __s && errno != ERANGE) -+ __v = __f; -+ else -+ __err |= ios_base::failbit; -+ } -+ } -+ -+ template<> -+ void -+ __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err, -+ const __c_locale& __cloc) -+ { -+ if (!(__err & ios_base::failbit)) -+ { -+ char* __sanity; -+ errno = 0; -+ double __d = __strtod_l(__s, &__sanity, __cloc); -+ if (__sanity != __s && errno != ERANGE) -+ __v = __d; -+ else -+ __err |= ios_base::failbit; -+ } -+ } -+ -+ template<> -+ void -+ __convert_to_v(const char* __s, long double& __v, ios_base::iostate& __err, -+ const __c_locale& __cloc) -+ { -+ if (!(__err & ios_base::failbit)) -+ { -+ char* __sanity; -+ errno = 0; -+ long double __ld = __strtold_l(__s, &__sanity, __cloc); -+ if (__sanity != __s && errno != ERANGE) -+ __v = __ld; -+ else -+ __err |= ios_base::failbit; -+ } -+ } -+ -+ void -+ locale::facet::_S_create_c_locale(__c_locale& __cloc, const char* __s, -+ __c_locale __old) -+ { -+ __cloc = __newlocale(1 << LC_ALL, __s, __old); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ if (!__cloc) -+ { -+ // This named locale is not supported by the underlying OS. -+ __throw_runtime_error(__N("locale::facet::_S_create_c_locale " -+ "name not valid")); -+ } -+#endif -+ } -+ -+ void -+ locale::facet::_S_destroy_c_locale(__c_locale& __cloc) -+ { -+ if (_S_get_c_locale() != __cloc) -+ __freelocale(__cloc); -+ } -+ -+ __c_locale -+ locale::facet::_S_clone_c_locale(__c_locale& __cloc) -+ { return __duplocale(__cloc); } -+} // namespace std -+ -+namespace __gnu_cxx -+{ -+ const char* const category_names[6 + _GLIBCXX_NUM_CATEGORIES] = -+ { -+ "LC_CTYPE", -+ "LC_NUMERIC", -+ "LC_TIME", -+ "LC_COLLATE", -+ "LC_MONETARY", -+ "LC_MESSAGES", -+#if _GLIBCXX_NUM_CATEGORIES != 0 -+ "LC_PAPER", -+ "LC_NAME", -+ "LC_ADDRESS", -+ "LC_TELEPHONE", -+ "LC_MEASUREMENT", -+ "LC_IDENTIFICATION" -+#endif -+ }; -+} -+ -+namespace std -+{ -+ const char* const* const locale::_S_categories = __gnu_cxx::category_names; -+} // namespace std -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/c_locale.h gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c_locale.h ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/c_locale.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c_locale.h 2005-04-28 01:13:15.000000000 -0500 -@@ -0,0 +1,115 @@ -+// Wrapper for underlying C-language localization -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.8 Standard locale categories. -+// -+ -+// Written by Benjamin Kosnik bkoz@redhat.com -+ -+#ifndef _C_LOCALE_H -+#define _C_LOCALE_H 1 -+ -+#pragma GCC system_header -+ -+#include <cstring> // get std::strlen -+#include <cstdio> // get std::snprintf or std::sprintf -+#include <clocale> -+#include <langinfo.h> // For codecvt -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this -+#endif -+#ifdef __UCLIBC_HAS_LOCALE__ -+#include <iconv.h> // For codecvt using iconv, iconv_t -+#endif -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ -+#include <libintl.h> // For messages -+#endif -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning what is _GLIBCXX_C_LOCALE_GNU for -+#endif -+#define _GLIBCXX_C_LOCALE_GNU 1 -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix categories -+#endif -+// #define _GLIBCXX_NUM_CATEGORIES 6 -+#define _GLIBCXX_NUM_CATEGORIES 0 -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+namespace __gnu_cxx -+{ -+ extern "C" __typeof(uselocale) __uselocale; -+} -+#endif -+ -+namespace std -+{ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ typedef __locale_t __c_locale; -+#else -+ typedef int* __c_locale; -+#endif -+ -+ // Convert numeric value of type _Tv to string and return length of -+ // string. If snprintf is available use it, otherwise fall back to -+ // the unsafe sprintf which, in general, can be dangerous and should -+ // be avoided. -+ template<typename _Tv> -+ int -+ __convert_from_v(char* __out, const int __size, const char* __fmt, -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ _Tv __v, const __c_locale& __cloc, int __prec) -+ { -+ __c_locale __old = __gnu_cxx::__uselocale(__cloc); -+#else -+ _Tv __v, const __c_locale&, int __prec) -+ { -+# ifdef __UCLIBC_HAS_LOCALE__ -+ char* __old = std::setlocale(LC_ALL, NULL); -+ char* __sav = new char[std::strlen(__old) + 1]; -+ std::strcpy(__sav, __old); -+ std::setlocale(LC_ALL, "C"); -+# endif -+#endif -+ -+ const int __ret = std::snprintf(__out, __size, __fmt, __prec, __v); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __gnu_cxx::__uselocale(__old); -+#elif defined __UCLIBC_HAS_LOCALE__ -+ std::setlocale(LC_ALL, __sav); -+ delete [] __sav; -+#endif -+ return __ret; -+ } -+} -+ -+#endif -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/codecvt_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/codecvt_members.cc ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/codecvt_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/codecvt_members.cc 2005-04-28 01:13:15.000000000 -0500 -@@ -0,0 +1,306 @@ -+// std::codecvt implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.1.5 - Template class codecvt -+// -+ -+// Written by Benjamin Kosnik bkoz@redhat.com -+ -+#include <locale> -+#include <bits/c++locale_internal.h> -+ -+namespace std -+{ -+ // Specializations. -+#ifdef _GLIBCXX_USE_WCHAR_T -+ codecvt_base::result -+ codecvt<wchar_t, char, mbstate_t>:: -+ do_out(state_type& __state, const intern_type* __from, -+ const intern_type* __from_end, const intern_type*& __from_next, -+ extern_type* __to, extern_type* __to_end, -+ extern_type*& __to_next) const -+ { -+ result __ret = ok; -+ state_type __tmp_state(__state); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ -+ // wcsnrtombs is *very* fast but stops if encounters NUL characters: -+ // in case we fall back to wcrtomb and then continue, in a loop. -+ // NB: wcsnrtombs is a GNU extension -+ for (__from_next = __from, __to_next = __to; -+ __from_next < __from_end && __to_next < __to_end -+ && __ret == ok;) -+ { -+ const intern_type* __from_chunk_end = wmemchr(__from_next, L'\0', -+ __from_end - __from_next); -+ if (!__from_chunk_end) -+ __from_chunk_end = __from_end; -+ -+ __from = __from_next; -+ const size_t __conv = wcsnrtombs(__to_next, &__from_next, -+ __from_chunk_end - __from_next, -+ __to_end - __to_next, &__state); -+ if (__conv == static_cast<size_t>(-1)) -+ { -+ // In case of error, in order to stop at the exact place we -+ // have to start again from the beginning with a series of -+ // wcrtomb. -+ for (; __from < __from_next; ++__from) -+ __to_next += wcrtomb(__to_next, *__from, &__tmp_state); -+ __state = __tmp_state; -+ __ret = error; -+ } -+ else if (__from_next && __from_next < __from_chunk_end) -+ { -+ __to_next += __conv; -+ __ret = partial; -+ } -+ else -+ { -+ __from_next = __from_chunk_end; -+ __to_next += __conv; -+ } -+ -+ if (__from_next < __from_end && __ret == ok) -+ { -+ extern_type __buf[MB_LEN_MAX]; -+ __tmp_state = __state; -+ const size_t __conv = wcrtomb(__buf, *__from_next, &__tmp_state); -+ if (__conv > static_cast<size_t>(__to_end - __to_next)) -+ __ret = partial; -+ else -+ { -+ memcpy(__to_next, __buf, __conv); -+ __state = __tmp_state; -+ __to_next += __conv; -+ ++__from_next; -+ } -+ } -+ } -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ -+ return __ret; -+ } -+ -+ codecvt_base::result -+ codecvt<wchar_t, char, mbstate_t>:: -+ do_in(state_type& __state, const extern_type* __from, -+ const extern_type* __from_end, const extern_type*& __from_next, -+ intern_type* __to, intern_type* __to_end, -+ intern_type*& __to_next) const -+ { -+ result __ret = ok; -+ state_type __tmp_state(__state); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ -+ // mbsnrtowcs is *very* fast but stops if encounters NUL characters: -+ // in case we store a L'\0' and then continue, in a loop. -+ // NB: mbsnrtowcs is a GNU extension -+ for (__from_next = __from, __to_next = __to; -+ __from_next < __from_end && __to_next < __to_end -+ && __ret == ok;) -+ { -+ const extern_type* __from_chunk_end; -+ __from_chunk_end = static_cast<const extern_type*>(memchr(__from_next, '\0', -+ __from_end -+ - __from_next)); -+ if (!__from_chunk_end) -+ __from_chunk_end = __from_end; -+ -+ __from = __from_next; -+ size_t __conv = mbsnrtowcs(__to_next, &__from_next, -+ __from_chunk_end - __from_next, -+ __to_end - __to_next, &__state); -+ if (__conv == static_cast<size_t>(-1)) -+ { -+ // In case of error, in order to stop at the exact place we -+ // have to start again from the beginning with a series of -+ // mbrtowc. -+ for (;; ++__to_next, __from += __conv) -+ { -+ __conv = mbrtowc(__to_next, __from, __from_end - __from, -+ &__tmp_state); -+ if (__conv == static_cast<size_t>(-1) -+ || __conv == static_cast<size_t>(-2)) -+ break; -+ } -+ __from_next = __from; -+ __state = __tmp_state; -+ __ret = error; -+ } -+ else if (__from_next && __from_next < __from_chunk_end) -+ { -+ // It is unclear what to return in this case (see DR 382). -+ __to_next += __conv; -+ __ret = partial; -+ } -+ else -+ { -+ __from_next = __from_chunk_end; -+ __to_next += __conv; -+ } -+ -+ if (__from_next < __from_end && __ret == ok) -+ { -+ if (__to_next < __to_end) -+ { -+ // XXX Probably wrong for stateful encodings -+ __tmp_state = __state; -+ ++__from_next; -+ *__to_next++ = L'\0'; -+ } -+ else -+ __ret = partial; -+ } -+ } -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ -+ return __ret; -+ } -+ -+ int -+ codecvt<wchar_t, char, mbstate_t>:: -+ do_encoding() const throw() -+ { -+ // XXX This implementation assumes that the encoding is -+ // stateless and is either single-byte or variable-width. -+ int __ret = 0; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ if (MB_CUR_MAX == 1) -+ __ret = 1; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return __ret; -+ } -+ -+ int -+ codecvt<wchar_t, char, mbstate_t>:: -+ do_max_length() const throw() -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ // XXX Probably wrong for stateful encodings. -+ int __ret = MB_CUR_MAX; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return __ret; -+ } -+ -+ int -+ codecvt<wchar_t, char, mbstate_t>:: -+ do_length(state_type& __state, const extern_type* __from, -+ const extern_type* __end, size_t __max) const -+ { -+ int __ret = 0; -+ state_type __tmp_state(__state); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ -+ // mbsnrtowcs is *very* fast but stops if encounters NUL characters: -+ // in case we advance past it and then continue, in a loop. -+ // NB: mbsnrtowcs is a GNU extension -+ -+ // A dummy internal buffer is needed in order for mbsnrtocws to consider -+ // its fourth parameter (it wouldn't with NULL as first parameter). -+ wchar_t* __to = static_cast<wchar_t*>(__builtin_alloca(sizeof(wchar_t) -+ * __max)); -+ while (__from < __end && __max) -+ { -+ const extern_type* __from_chunk_end; -+ __from_chunk_end = static_cast<const extern_type*>(memchr(__from, '\0', -+ __end -+ - __from)); -+ if (!__from_chunk_end) -+ __from_chunk_end = __end; -+ -+ const extern_type* __tmp_from = __from; -+ size_t __conv = mbsnrtowcs(__to, &__from, -+ __from_chunk_end - __from, -+ __max, &__state); -+ if (__conv == static_cast<size_t>(-1)) -+ { -+ // In case of error, in order to stop at the exact place we -+ // have to start again from the beginning with a series of -+ // mbrtowc. -+ for (__from = __tmp_from;; __from += __conv) -+ { -+ __conv = mbrtowc(NULL, __from, __end - __from, -+ &__tmp_state); -+ if (__conv == static_cast<size_t>(-1) -+ || __conv == static_cast<size_t>(-2)) -+ break; -+ } -+ __state = __tmp_state; -+ __ret += __from - __tmp_from; -+ break; -+ } -+ if (!__from) -+ __from = __from_chunk_end; -+ -+ __ret += __from - __tmp_from; -+ __max -= __conv; -+ -+ if (__from < __end && __max) -+ { -+ // XXX Probably wrong for stateful encodings -+ __tmp_state = __state; -+ ++__from; -+ ++__ret; -+ --__max; -+ } -+ } -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ -+ return __ret; -+ } -+#endif -+} -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/collate_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/collate_members.cc ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/collate_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/collate_members.cc 2005-04-28 01:13:15.000000000 -0500 -@@ -0,0 +1,80 @@ -+// std::collate implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.4.1.2 collate virtual functions -+// -+ -+// Written by Benjamin Kosnik bkoz@redhat.com -+ -+#include <locale> -+#include <bits/c++locale_internal.h> -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __strcoll_l(S1, S2, L) strcoll((S1), (S2)) -+#define __strxfrm_l(S1, S2, N, L) strxfrm((S1), (S2), (N)) -+#define __wcscoll_l(S1, S2, L) wcscoll((S1), (S2)) -+#define __wcsxfrm_l(S1, S2, N, L) wcsxfrm((S1), (S2), (N)) -+#endif -+ -+namespace std -+{ -+ // These are basically extensions to char_traits, and perhaps should -+ // be put there instead of here. -+ template<> -+ int -+ collate<char>::_M_compare(const char* __one, const char* __two) const -+ { -+ int __cmp = __strcoll_l(__one, __two, _M_c_locale_collate); -+ return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0); -+ } -+ -+ template<> -+ size_t -+ collate<char>::_M_transform(char* __to, const char* __from, -+ size_t __n) const -+ { return __strxfrm_l(__to, __from, __n, _M_c_locale_collate); } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ int -+ collate<wchar_t>::_M_compare(const wchar_t* __one, -+ const wchar_t* __two) const -+ { -+ int __cmp = __wcscoll_l(__one, __two, _M_c_locale_collate); -+ return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0); -+ } -+ -+ template<> -+ size_t -+ collate<wchar_t>::_M_transform(wchar_t* __to, const wchar_t* __from, -+ size_t __n) const -+ { return __wcsxfrm_l(__to, __from, __n, _M_c_locale_collate); } -+#endif -+} -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/ctype_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/ctype_members.cc ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/ctype_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/ctype_members.cc 2005-04-28 01:13:15.000000000 -0500 -@@ -0,0 +1,300 @@ -+// std::ctype implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.1.1.2 ctype virtual functions. -+// -+ -+// Written by Benjamin Kosnik bkoz@redhat.com -+ -+#define _LIBC -+#include <locale> -+#undef _LIBC -+#include <bits/c++locale_internal.h> -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __wctype_l(S, L) wctype((S)) -+#define __towupper_l(C, L) towupper((C)) -+#define __towlower_l(C, L) towlower((C)) -+#define __iswctype_l(C, M, L) iswctype((C), (M)) -+#endif -+ -+namespace std -+{ -+ // NB: The other ctype<char> specializations are in src/locale.cc and -+ // various /config/os/* files. -+ template<> -+ ctype_byname<char>::ctype_byname(const char* __s, size_t __refs) -+ : ctype<char>(0, false, __refs) -+ { -+ if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0) -+ { -+ this->_S_destroy_c_locale(this->_M_c_locale_ctype); -+ this->_S_create_c_locale(this->_M_c_locale_ctype, __s); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ this->_M_toupper = this->_M_c_locale_ctype->__ctype_toupper; -+ this->_M_tolower = this->_M_c_locale_ctype->__ctype_tolower; -+ this->_M_table = this->_M_c_locale_ctype->__ctype_b; -+#endif -+ } -+ } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ ctype<wchar_t>::__wmask_type -+ ctype<wchar_t>::_M_convert_to_wmask(const mask __m) const -+ { -+ __wmask_type __ret; -+ switch (__m) -+ { -+ case space: -+ __ret = __wctype_l("space", _M_c_locale_ctype); -+ break; -+ case print: -+ __ret = __wctype_l("print", _M_c_locale_ctype); -+ break; -+ case cntrl: -+ __ret = __wctype_l("cntrl", _M_c_locale_ctype); -+ break; -+ case upper: -+ __ret = __wctype_l("upper", _M_c_locale_ctype); -+ break; -+ case lower: -+ __ret = __wctype_l("lower", _M_c_locale_ctype); -+ break; -+ case alpha: -+ __ret = __wctype_l("alpha", _M_c_locale_ctype); -+ break; -+ case digit: -+ __ret = __wctype_l("digit", _M_c_locale_ctype); -+ break; -+ case punct: -+ __ret = __wctype_l("punct", _M_c_locale_ctype); -+ break; -+ case xdigit: -+ __ret = __wctype_l("xdigit", _M_c_locale_ctype); -+ break; -+ case alnum: -+ __ret = __wctype_l("alnum", _M_c_locale_ctype); -+ break; -+ case graph: -+ __ret = __wctype_l("graph", _M_c_locale_ctype); -+ break; -+ default: -+ __ret = __wmask_type(); -+ } -+ return __ret; -+ } -+ -+ wchar_t -+ ctype<wchar_t>::do_toupper(wchar_t __c) const -+ { return __towupper_l(__c, _M_c_locale_ctype); } -+ -+ const wchar_t* -+ ctype<wchar_t>::do_toupper(wchar_t* __lo, const wchar_t* __hi) const -+ { -+ while (__lo < __hi) -+ { -+ *__lo = __towupper_l(*__lo, _M_c_locale_ctype); -+ ++__lo; -+ } -+ return __hi; -+ } -+ -+ wchar_t -+ ctype<wchar_t>::do_tolower(wchar_t __c) const -+ { return __towlower_l(__c, _M_c_locale_ctype); } -+ -+ const wchar_t* -+ ctype<wchar_t>::do_tolower(wchar_t* __lo, const wchar_t* __hi) const -+ { -+ while (__lo < __hi) -+ { -+ *__lo = __towlower_l(*__lo, _M_c_locale_ctype); -+ ++__lo; -+ } -+ return __hi; -+ } -+ -+ bool -+ ctype<wchar_t>:: -+ do_is(mask __m, wchar_t __c) const -+ { -+ // Highest bitmask in ctype_base == 10, but extra in "C" -+ // library for blank. -+ bool __ret = false; -+ const size_t __bitmasksize = 11; -+ for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur) -+ if (__m & _M_bit[__bitcur] -+ && __iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype)) -+ { -+ __ret = true; -+ break; -+ } -+ return __ret; -+ } -+ -+ const wchar_t* -+ ctype<wchar_t>:: -+ do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __vec) const -+ { -+ for (; __lo < __hi; ++__vec, ++__lo) -+ { -+ // Highest bitmask in ctype_base == 10, but extra in "C" -+ // library for blank. -+ const size_t __bitmasksize = 11; -+ mask __m = 0; -+ for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur) -+ if (__iswctype_l(*__lo, _M_wmask[__bitcur], _M_c_locale_ctype)) -+ __m |= _M_bit[__bitcur]; -+ *__vec = __m; -+ } -+ return __hi; -+ } -+ -+ const wchar_t* -+ ctype<wchar_t>:: -+ do_scan_is(mask __m, const wchar_t* __lo, const wchar_t* __hi) const -+ { -+ while (__lo < __hi && !this->do_is(__m, *__lo)) -+ ++__lo; -+ return __lo; -+ } -+ -+ const wchar_t* -+ ctype<wchar_t>:: -+ do_scan_not(mask __m, const char_type* __lo, const char_type* __hi) const -+ { -+ while (__lo < __hi && this->do_is(__m, *__lo) != 0) -+ ++__lo; -+ return __lo; -+ } -+ -+ wchar_t -+ ctype<wchar_t>:: -+ do_widen(char __c) const -+ { return _M_widen[static_cast<unsigned char>(__c)]; } -+ -+ const char* -+ ctype<wchar_t>:: -+ do_widen(const char* __lo, const char* __hi, wchar_t* __dest) const -+ { -+ while (__lo < __hi) -+ { -+ *__dest = _M_widen[static_cast<unsigned char>(*__lo)]; -+ ++__lo; -+ ++__dest; -+ } -+ return __hi; -+ } -+ -+ char -+ ctype<wchar_t>:: -+ do_narrow(wchar_t __wc, char __dfault) const -+ { -+ if (__wc >= 0 && __wc < 128 && _M_narrow_ok) -+ return _M_narrow[__wc]; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_ctype); -+#endif -+ const int __c = wctob(__wc); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return (__c == EOF ? __dfault : static_cast<char>(__c)); -+ } -+ -+ const wchar_t* -+ ctype<wchar_t>:: -+ do_narrow(const wchar_t* __lo, const wchar_t* __hi, char __dfault, -+ char* __dest) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_ctype); -+#endif -+ if (_M_narrow_ok) -+ while (__lo < __hi) -+ { -+ if (*__lo >= 0 && *__lo < 128) -+ *__dest = _M_narrow[*__lo]; -+ else -+ { -+ const int __c = wctob(*__lo); -+ *__dest = (__c == EOF ? __dfault : static_cast<char>(__c)); -+ } -+ ++__lo; -+ ++__dest; -+ } -+ else -+ while (__lo < __hi) -+ { -+ const int __c = wctob(*__lo); -+ *__dest = (__c == EOF ? __dfault : static_cast<char>(__c)); -+ ++__lo; -+ ++__dest; -+ } -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return __hi; -+ } -+ -+ void -+ ctype<wchar_t>::_M_initialize_ctype() -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_ctype); -+#endif -+ wint_t __i; -+ for (__i = 0; __i < 128; ++__i) -+ { -+ const int __c = wctob(__i); -+ if (__c == EOF) -+ break; -+ else -+ _M_narrow[__i] = static_cast<char>(__c); -+ } -+ if (__i == 128) -+ _M_narrow_ok = true; -+ else -+ _M_narrow_ok = false; -+ for (size_t __j = 0; -+ __j < sizeof(_M_widen) / sizeof(wint_t); ++__j) -+ _M_widen[__j] = btowc(__j); -+ -+ for (size_t __k = 0; __k <= 11; ++__k) -+ { -+ _M_bit[__k] = static_cast<mask>(_ISbit(__k)); -+ _M_wmask[__k] = _M_convert_to_wmask(_M_bit[__k]); -+ } -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ } -+#endif // _GLIBCXX_USE_WCHAR_T -+} -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/messages_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/messages_members.cc ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/messages_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/messages_members.cc 2005-04-28 01:13:15.000000000 -0500 -@@ -0,0 +1,100 @@ -+// std::messages implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.7.1.2 messages virtual functions -+// -+ -+// Written by Benjamin Kosnik bkoz@redhat.com -+ -+#include <locale> -+#include <bits/c++locale_internal.h> -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix gettext stuff -+#endif -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ -+extern "C" char *__dcgettext(const char *domainname, -+ const char *msgid, int category); -+#undef gettext -+#define gettext(msgid) __dcgettext(NULL, msgid, LC_MESSAGES) -+#else -+#undef gettext -+#define gettext(msgid) (msgid) -+#endif -+ -+namespace std -+{ -+ // Specializations. -+ template<> -+ string -+ messages<char>::do_get(catalog, int, int, const string& __dfault) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_messages); -+ const char* __msg = const_cast<const char*>(gettext(__dfault.c_str())); -+ __uselocale(__old); -+ return string(__msg); -+#elif defined __UCLIBC_HAS_LOCALE__ -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_messages); -+ const char* __msg = gettext(__dfault.c_str()); -+ setlocale(LC_ALL, __old); -+ free(__old); -+ return string(__msg); -+#else -+ const char* __msg = gettext(__dfault.c_str()); -+ return string(__msg); -+#endif -+ } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ wstring -+ messages<wchar_t>::do_get(catalog, int, int, const wstring& __dfault) const -+ { -+# ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_messages); -+ char* __msg = gettext(_M_convert_to_char(__dfault)); -+ __uselocale(__old); -+ return _M_convert_from_char(__msg); -+# elif defined __UCLIBC_HAS_LOCALE__ -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_messages); -+ char* __msg = gettext(_M_convert_to_char(__dfault)); -+ setlocale(LC_ALL, __old); -+ free(__old); -+ return _M_convert_from_char(__msg); -+# else -+ char* __msg = gettext(_M_convert_to_char(__dfault)); -+ return _M_convert_from_char(__msg); -+# endif -+ } -+#endif -+} -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/messages_members.h gcc-4.0.0/libstdc++-v3/config/locale/uclibc/messages_members.h ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/messages_members.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/messages_members.h 2005-04-28 01:13:15.000000000 -0500 -@@ -0,0 +1,118 @@ -+// std::messages implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.7.1.2 messages functions -+// -+ -+// Written by Benjamin Kosnik bkoz@redhat.com -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix prototypes for *textdomain funcs -+#endif -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ -+extern "C" char *__textdomain(const char *domainname); -+extern "C" char *__bindtextdomain(const char *domainname, -+ const char *dirname); -+#else -+#undef __textdomain -+#undef __bindtextdomain -+#define __textdomain(D) ((void)0) -+#define __bindtextdomain(D,P) ((void)0) -+#endif -+ -+ // Non-virtual member functions. -+ template<typename _CharT> -+ messages<_CharT>::messages(size_t __refs) -+ : facet(__refs), _M_c_locale_messages(_S_get_c_locale()), -+ _M_name_messages(_S_get_c_name()) -+ { } -+ -+ template<typename _CharT> -+ messages<_CharT>::messages(__c_locale __cloc, const char* __s, -+ size_t __refs) -+ : facet(__refs), _M_c_locale_messages(_S_clone_c_locale(__cloc)), -+ _M_name_messages(__s) -+ { -+ char* __tmp = new char[std::strlen(__s) + 1]; -+ std::strcpy(__tmp, __s); -+ _M_name_messages = __tmp; -+ } -+ -+ template<typename _CharT> -+ typename messages<_CharT>::catalog -+ messages<_CharT>::open(const basic_string<char>& __s, const locale& __loc, -+ const char* __dir) const -+ { -+ __bindtextdomain(__s.c_str(), __dir); -+ return this->do_open(__s, __loc); -+ } -+ -+ // Virtual member functions. -+ template<typename _CharT> -+ messages<_CharT>::~messages() -+ { -+ if (_M_name_messages != _S_get_c_name()) -+ delete [] _M_name_messages; -+ _S_destroy_c_locale(_M_c_locale_messages); -+ } -+ -+ template<typename _CharT> -+ typename messages<_CharT>::catalog -+ messages<_CharT>::do_open(const basic_string<char>& __s, -+ const locale&) const -+ { -+ // No error checking is done, assume the catalog exists and can -+ // be used. -+ __textdomain(__s.c_str()); -+ return 0; -+ } -+ -+ template<typename _CharT> -+ void -+ messages<_CharT>::do_close(catalog) const -+ { } -+ -+ // messages_byname -+ template<typename _CharT> -+ messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) -+ : messages<_CharT>(__refs) -+ { -+ if (this->_M_name_messages != locale::facet::_S_get_c_name()) -+ delete [] this->_M_name_messages; -+ char* __tmp = new char[std::strlen(__s) + 1]; -+ std::strcpy(__tmp, __s); -+ this->_M_name_messages = __tmp; -+ -+ if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0) -+ { -+ this->_S_destroy_c_locale(this->_M_c_locale_messages); -+ this->_S_create_c_locale(this->_M_c_locale_messages, __s); -+ } -+ } -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/monetary_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/monetary_members.cc ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/monetary_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/monetary_members.cc 2005-04-28 01:23:02.000000000 -0500 -@@ -0,0 +1,692 @@ -+// std::moneypunct implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.6.3.2 moneypunct virtual functions -+// -+ -+// Written by Benjamin Kosnik bkoz@redhat.com -+ -+#define _LIBC -+#include <locale> -+#undef _LIBC -+#include <bits/c++locale_internal.h> -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning optimize this for uclibc -+#warning tailor for stub locale support -+#endif -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __nl_langinfo_l(N, L) nl_langinfo((N)) -+#endif -+ -+namespace std -+{ -+ // Construct and return valid pattern consisting of some combination of: -+ // space none symbol sign value -+ money_base::pattern -+ money_base::_S_construct_pattern(char __precedes, char __space, char __posn) -+ { -+ pattern __ret; -+ -+ // This insanely complicated routine attempts to construct a valid -+ // pattern for use with monyepunct. A couple of invariants: -+ -+ // if (__precedes) symbol -> value -+ // else value -> symbol -+ -+ // if (__space) space -+ // else none -+ -+ // none == never first -+ // space never first or last -+ -+ // Any elegant implementations of this are welcome. -+ switch (__posn) -+ { -+ case 0: -+ case 1: -+ // 1 The sign precedes the value and symbol. -+ __ret.field[0] = sign; -+ if (__space) -+ { -+ // Pattern starts with sign. -+ if (__precedes) -+ { -+ __ret.field[1] = symbol; -+ __ret.field[3] = value; -+ } -+ else -+ { -+ __ret.field[1] = value; -+ __ret.field[3] = symbol; -+ } -+ __ret.field[2] = space; -+ } -+ else -+ { -+ // Pattern starts with sign and ends with none. -+ if (__precedes) -+ { -+ __ret.field[1] = symbol; -+ __ret.field[2] = value; -+ } -+ else -+ { -+ __ret.field[1] = value; -+ __ret.field[2] = symbol; -+ } -+ __ret.field[3] = none; -+ } -+ break; -+ case 2: -+ // 2 The sign follows the value and symbol. -+ if (__space) -+ { -+ // Pattern either ends with sign. -+ if (__precedes) -+ { -+ __ret.field[0] = symbol; -+ __ret.field[2] = value; -+ } -+ else -+ { -+ __ret.field[0] = value; -+ __ret.field[2] = symbol; -+ } -+ __ret.field[1] = space; -+ __ret.field[3] = sign; -+ } -+ else -+ { -+ // Pattern ends with sign then none. -+ if (__precedes) -+ { -+ __ret.field[0] = symbol; -+ __ret.field[1] = value; -+ } -+ else -+ { -+ __ret.field[0] = value; -+ __ret.field[1] = symbol; -+ } -+ __ret.field[2] = sign; -+ __ret.field[3] = none; -+ } -+ break; -+ case 3: -+ // 3 The sign immediately precedes the symbol. -+ if (__precedes) -+ { -+ __ret.field[0] = sign; -+ __ret.field[1] = symbol; -+ if (__space) -+ { -+ __ret.field[2] = space; -+ __ret.field[3] = value; -+ } -+ else -+ { -+ __ret.field[2] = value; -+ __ret.field[3] = none; -+ } -+ } -+ else -+ { -+ __ret.field[0] = value; -+ if (__space) -+ { -+ __ret.field[1] = space; -+ __ret.field[2] = sign; -+ __ret.field[3] = symbol; -+ } -+ else -+ { -+ __ret.field[1] = sign; -+ __ret.field[2] = symbol; -+ __ret.field[3] = none; -+ } -+ } -+ break; -+ case 4: -+ // 4 The sign immediately follows the symbol. -+ if (__precedes) -+ { -+ __ret.field[0] = symbol; -+ __ret.field[1] = sign; -+ if (__space) -+ { -+ __ret.field[2] = space; -+ __ret.field[3] = value; -+ } -+ else -+ { -+ __ret.field[2] = value; -+ __ret.field[3] = none; -+ } -+ } -+ else -+ { -+ __ret.field[0] = value; -+ if (__space) -+ { -+ __ret.field[1] = space; -+ __ret.field[2] = symbol; -+ __ret.field[3] = sign; -+ } -+ else -+ { -+ __ret.field[1] = symbol; -+ __ret.field[2] = sign; -+ __ret.field[3] = none; -+ } -+ } -+ break; -+ default: -+ __ret = pattern(); -+ } -+ return __ret; -+ } -+ -+ template<> -+ void -+ moneypunct<char, true>::_M_initialize_moneypunct(__c_locale __cloc, -+ const char*) -+ { -+ if (!_M_data) -+ _M_data = new __moneypunct_cache<char, true>; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_decimal_point = '.'; -+ _M_data->_M_thousands_sep = ','; -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_curr_symbol = ""; -+ _M_data->_M_curr_symbol_size = 0; -+ _M_data->_M_positive_sign = ""; -+ _M_data->_M_positive_sign_size = 0; -+ _M_data->_M_negative_sign = ""; -+ _M_data->_M_negative_sign_size = 0; -+ _M_data->_M_frac_digits = 0; -+ _M_data->_M_pos_format = money_base::_S_default_pattern; -+ _M_data->_M_neg_format = money_base::_S_default_pattern; -+ -+ for (size_t __i = 0; __i < money_base::_S_end; ++__i) -+ _M_data->_M_atoms[__i] = money_base::_S_atoms[__i]; -+ } -+ else -+ { -+ // Named locale. -+ _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, -+ __cloc)); -+ _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, -+ __cloc)); -+ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign); -+ -+ char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc)); -+ if (!__nposn) -+ _M_data->_M_negative_sign = "()"; -+ else -+ _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN, -+ __cloc); -+ _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign); -+ -+ // _Intl == true -+ _M_data->_M_curr_symbol = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc); -+ _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol); -+ _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, -+ __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc)); -+ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, -+ __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc)); -+ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, -+ __nposn); -+ } -+ } -+ -+ template<> -+ void -+ moneypunct<char, false>::_M_initialize_moneypunct(__c_locale __cloc, -+ const char*) -+ { -+ if (!_M_data) -+ _M_data = new __moneypunct_cache<char, false>; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_decimal_point = '.'; -+ _M_data->_M_thousands_sep = ','; -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_curr_symbol = ""; -+ _M_data->_M_curr_symbol_size = 0; -+ _M_data->_M_positive_sign = ""; -+ _M_data->_M_positive_sign_size = 0; -+ _M_data->_M_negative_sign = ""; -+ _M_data->_M_negative_sign_size = 0; -+ _M_data->_M_frac_digits = 0; -+ _M_data->_M_pos_format = money_base::_S_default_pattern; -+ _M_data->_M_neg_format = money_base::_S_default_pattern; -+ -+ for (size_t __i = 0; __i < money_base::_S_end; ++__i) -+ _M_data->_M_atoms[__i] = money_base::_S_atoms[__i]; -+ } -+ else -+ { -+ // Named locale. -+ _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, -+ __cloc)); -+ _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, -+ __cloc)); -+ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign); -+ -+ char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc)); -+ if (!__nposn) -+ _M_data->_M_negative_sign = "()"; -+ else -+ _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN, -+ __cloc); -+ _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign); -+ -+ // _Intl == false -+ _M_data->_M_curr_symbol = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc); -+ _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol); -+ _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc)); -+ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, -+ __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc)); -+ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, -+ __nposn); -+ } -+ } -+ -+ template<> -+ moneypunct<char, true>::~moneypunct() -+ { delete _M_data; } -+ -+ template<> -+ moneypunct<char, false>::~moneypunct() -+ { delete _M_data; } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ void -+ moneypunct<wchar_t, true>::_M_initialize_moneypunct(__c_locale __cloc, -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ const char*) -+#else -+ const char* __name) -+#endif -+ { -+ if (!_M_data) -+ _M_data = new __moneypunct_cache<wchar_t, true>; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_decimal_point = L'.'; -+ _M_data->_M_thousands_sep = L','; -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_curr_symbol = L""; -+ _M_data->_M_curr_symbol_size = 0; -+ _M_data->_M_positive_sign = L""; -+ _M_data->_M_positive_sign_size = 0; -+ _M_data->_M_negative_sign = L""; -+ _M_data->_M_negative_sign_size = 0; -+ _M_data->_M_frac_digits = 0; -+ _M_data->_M_pos_format = money_base::_S_default_pattern; -+ _M_data->_M_neg_format = money_base::_S_default_pattern; -+ -+ // Use ctype::widen code without the facet... -+ for (size_t __i = 0; __i < money_base::_S_end; ++__i) -+ _M_data->_M_atoms[__i] = -+ static_cast<wchar_t>(money_base::_S_atoms[__i]); -+ } -+ else -+ { -+ // Named locale. -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(__cloc); -+#else -+ // Switch to named locale so that mbsrtowcs will work. -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, __name); -+#endif -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this... should be monetary -+#endif -+#ifdef __UCLIBC__ -+# ifdef __UCLIBC_HAS_XLOCALE__ -+ _M_data->_M_decimal_point = __cloc->decimal_point_wc; -+ _M_data->_M_thousands_sep = __cloc->thousands_sep_wc; -+# else -+ _M_data->_M_decimal_point = __global_locale->decimal_point_wc; -+ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc; -+# endif -+#else -+ union { char *__s; wchar_t __w; } __u; -+ __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc); -+ _M_data->_M_decimal_point = __u.__w; -+ -+ __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc); -+ _M_data->_M_thousands_sep = __u.__w; -+#endif -+ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ -+ const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc); -+ const char* __ccurr = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc); -+ -+ wchar_t* __wcs_ps = 0; -+ wchar_t* __wcs_ns = 0; -+ const char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc)); -+ try -+ { -+ mbstate_t __state; -+ size_t __len = strlen(__cpossign); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ __wcs_ps = new wchar_t[__len]; -+ mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state); -+ _M_data->_M_positive_sign = __wcs_ps; -+ } -+ else -+ _M_data->_M_positive_sign = L""; -+ _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign); -+ -+ __len = strlen(__cnegsign); -+ if (!__nposn) -+ _M_data->_M_negative_sign = L"()"; -+ else if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ __wcs_ns = new wchar_t[__len]; -+ mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state); -+ _M_data->_M_negative_sign = __wcs_ns; -+ } -+ else -+ _M_data->_M_negative_sign = L""; -+ _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign); -+ -+ // _Intl == true. -+ __len = strlen(__ccurr); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ wchar_t* __wcs = new wchar_t[__len]; -+ mbsrtowcs(__wcs, &__ccurr, __len, &__state); -+ _M_data->_M_curr_symbol = __wcs; -+ } -+ else -+ _M_data->_M_curr_symbol = L""; -+ _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol); -+ } -+ catch (...) -+ { -+ delete _M_data; -+ _M_data = 0; -+ delete __wcs_ps; -+ delete __wcs_ns; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#else -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ __throw_exception_again; -+ } -+ -+ _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, -+ __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc)); -+ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, -+ __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc)); -+ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, -+ __nposn); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#else -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ } -+ } -+ -+ template<> -+ void -+ moneypunct<wchar_t, false>::_M_initialize_moneypunct(__c_locale __cloc, -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ const char*) -+#else -+ const char* __name) -+#endif -+ { -+ if (!_M_data) -+ _M_data = new __moneypunct_cache<wchar_t, false>; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_decimal_point = L'.'; -+ _M_data->_M_thousands_sep = L','; -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_curr_symbol = L""; -+ _M_data->_M_curr_symbol_size = 0; -+ _M_data->_M_positive_sign = L""; -+ _M_data->_M_positive_sign_size = 0; -+ _M_data->_M_negative_sign = L""; -+ _M_data->_M_negative_sign_size = 0; -+ _M_data->_M_frac_digits = 0; -+ _M_data->_M_pos_format = money_base::_S_default_pattern; -+ _M_data->_M_neg_format = money_base::_S_default_pattern; -+ -+ // Use ctype::widen code without the facet... -+ for (size_t __i = 0; __i < money_base::_S_end; ++__i) -+ _M_data->_M_atoms[__i] = -+ static_cast<wchar_t>(money_base::_S_atoms[__i]); -+ } -+ else -+ { -+ // Named locale. -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(__cloc); -+#else -+ // Switch to named locale so that mbsrtowcs will work. -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, __name); -+#endif -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this... should be monetary -+#endif -+#ifdef __UCLIBC__ -+# ifdef __UCLIBC_HAS_XLOCALE__ -+ _M_data->_M_decimal_point = __cloc->decimal_point_wc; -+ _M_data->_M_thousands_sep = __cloc->thousands_sep_wc; -+# else -+ _M_data->_M_decimal_point = __global_locale->decimal_point_wc; -+ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc; -+# endif -+#else -+ union { char *__s; wchar_t __w; } __u; -+ __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc); -+ _M_data->_M_decimal_point = __u.__w; -+ -+ __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc); -+ _M_data->_M_thousands_sep = __u.__w; -+#endif -+ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ -+ const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc); -+ const char* __ccurr = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc); -+ -+ wchar_t* __wcs_ps = 0; -+ wchar_t* __wcs_ns = 0; -+ const char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc)); -+ try -+ { -+ mbstate_t __state; -+ size_t __len; -+ __len = strlen(__cpossign); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ __wcs_ps = new wchar_t[__len]; -+ mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state); -+ _M_data->_M_positive_sign = __wcs_ps; -+ } -+ else -+ _M_data->_M_positive_sign = L""; -+ _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign); -+ -+ __len = strlen(__cnegsign); -+ if (!__nposn) -+ _M_data->_M_negative_sign = L"()"; -+ else if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ __wcs_ns = new wchar_t[__len]; -+ mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state); -+ _M_data->_M_negative_sign = __wcs_ns; -+ } -+ else -+ _M_data->_M_negative_sign = L""; -+ _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign); -+ -+ // _Intl == true. -+ __len = strlen(__ccurr); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ wchar_t* __wcs = new wchar_t[__len]; -+ mbsrtowcs(__wcs, &__ccurr, __len, &__state); -+ _M_data->_M_curr_symbol = __wcs; -+ } -+ else -+ _M_data->_M_curr_symbol = L""; -+ _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol); -+ } -+ catch (...) -+ { -+ delete _M_data; -+ _M_data = 0; -+ delete __wcs_ps; -+ delete __wcs_ns; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#else -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ __throw_exception_again; -+ } -+ -+ _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc)); -+ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, -+ __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc)); -+ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, -+ __nposn); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#else -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ } -+ } -+ -+ template<> -+ moneypunct<wchar_t, true>::~moneypunct() -+ { -+ if (_M_data->_M_positive_sign_size) -+ delete [] _M_data->_M_positive_sign; -+ if (_M_data->_M_negative_sign_size -+ && wcscmp(_M_data->_M_negative_sign, L"()") != 0) -+ delete [] _M_data->_M_negative_sign; -+ if (_M_data->_M_curr_symbol_size) -+ delete [] _M_data->_M_curr_symbol; -+ delete _M_data; -+ } -+ -+ template<> -+ moneypunct<wchar_t, false>::~moneypunct() -+ { -+ if (_M_data->_M_positive_sign_size) -+ delete [] _M_data->_M_positive_sign; -+ if (_M_data->_M_negative_sign_size -+ && wcscmp(_M_data->_M_negative_sign, L"()") != 0) -+ delete [] _M_data->_M_negative_sign; -+ if (_M_data->_M_curr_symbol_size) -+ delete [] _M_data->_M_curr_symbol; -+ delete _M_data; -+ } -+#endif -+} -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/numeric_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/numeric_members.cc ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/numeric_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/numeric_members.cc 2005-04-28 01:20:20.000000000 -0500 -@@ -0,0 +1,173 @@ -+// std::numpunct implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.3.1.2 numpunct virtual functions -+// -+ -+// Written by Benjamin Kosnik bkoz@redhat.com -+ -+#define _LIBC -+#include <locale> -+#undef _LIBC -+#include <bits/c++locale_internal.h> -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning tailor for stub locale support -+#endif -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __nl_langinfo_l(N, L) nl_langinfo((N)) -+#endif -+ -+namespace std -+{ -+ template<> -+ void -+ numpunct<char>::_M_initialize_numpunct(__c_locale __cloc) -+ { -+ if (!_M_data) -+ _M_data = new __numpunct_cache<char>; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_use_grouping = false; -+ -+ _M_data->_M_decimal_point = '.'; -+ _M_data->_M_thousands_sep = ','; -+ -+ for (size_t __i = 0; __i < __num_base::_S_oend; ++__i) -+ _M_data->_M_atoms_out[__i] = __num_base::_S_atoms_out[__i]; -+ -+ for (size_t __j = 0; __j < __num_base::_S_iend; ++__j) -+ _M_data->_M_atoms_in[__j] = __num_base::_S_atoms_in[__j]; -+ } -+ else -+ { -+ // Named locale. -+ _M_data->_M_decimal_point = *(__nl_langinfo_l(DECIMAL_POINT, -+ __cloc)); -+ _M_data->_M_thousands_sep = *(__nl_langinfo_l(THOUSANDS_SEP, -+ __cloc)); -+ -+ // Check for NULL, which implies no grouping. -+ if (_M_data->_M_thousands_sep == '\0') -+ _M_data->_M_grouping = ""; -+ else -+ _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ } -+ -+ // NB: There is no way to extact this info from posix locales. -+ // _M_truename = __nl_langinfo_l(YESSTR, __cloc); -+ _M_data->_M_truename = "true"; -+ _M_data->_M_truename_size = 4; -+ // _M_falsename = __nl_langinfo_l(NOSTR, __cloc); -+ _M_data->_M_falsename = "false"; -+ _M_data->_M_falsename_size = 5; -+ } -+ -+ template<> -+ numpunct<char>::~numpunct() -+ { delete _M_data; } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ void -+ numpunct<wchar_t>::_M_initialize_numpunct(__c_locale __cloc) -+ { -+ if (!_M_data) -+ _M_data = new __numpunct_cache<wchar_t>; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_use_grouping = false; -+ -+ _M_data->_M_decimal_point = L'.'; -+ _M_data->_M_thousands_sep = L','; -+ -+ // Use ctype::widen code without the facet... -+ for (size_t __i = 0; __i < __num_base::_S_oend; ++__i) -+ _M_data->_M_atoms_out[__i] = -+ static_cast<wchar_t>(__num_base::_S_atoms_out[__i]); -+ -+ for (size_t __j = 0; __j < __num_base::_S_iend; ++__j) -+ _M_data->_M_atoms_in[__j] = -+ static_cast<wchar_t>(__num_base::_S_atoms_in[__j]); -+ } -+ else -+ { -+ // Named locale. -+ // NB: In the GNU model wchar_t is always 32 bit wide. -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this -+#endif -+#ifdef __UCLIBC__ -+# ifdef __UCLIBC_HAS_XLOCALE__ -+ _M_data->_M_decimal_point = __cloc->decimal_point_wc; -+ _M_data->_M_thousands_sep = __cloc->thousands_sep_wc; -+# else -+ _M_data->_M_decimal_point = __global_locale->decimal_point_wc; -+ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc; -+# endif -+#else -+ union { char *__s; wchar_t __w; } __u; -+ __u.__s = __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc); -+ _M_data->_M_decimal_point = __u.__w; -+ -+ __u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc); -+ _M_data->_M_thousands_sep = __u.__w; -+#endif -+ -+ if (_M_data->_M_thousands_sep == L'\0') -+ _M_data->_M_grouping = ""; -+ else -+ _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ } -+ -+ // NB: There is no way to extact this info from posix locales. -+ // _M_truename = __nl_langinfo_l(YESSTR, __cloc); -+ _M_data->_M_truename = L"true"; -+ _M_data->_M_truename_size = 4; -+ // _M_falsename = __nl_langinfo_l(NOSTR, __cloc); -+ _M_data->_M_falsename = L"false"; -+ _M_data->_M_falsename_size = 5; -+ } -+ -+ template<> -+ numpunct<wchar_t>::~numpunct() -+ { delete _M_data; } -+ #endif -+} -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/time_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/time_members.cc ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/time_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/time_members.cc 2005-04-28 01:13:15.000000000 -0500 -@@ -0,0 +1,406 @@ -+// std::time_get, std::time_put implementation, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.5.1.2 - time_get virtual functions -+// ISO C++ 14882: 22.2.5.3.2 - time_put virtual functions -+// -+ -+// Written by Benjamin Kosnik bkoz@redhat.com -+ -+#include <locale> -+#include <bits/c++locale_internal.h> -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning tailor for stub locale support -+#endif -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __nl_langinfo_l(N, L) nl_langinfo((N)) -+#endif -+ -+namespace std -+{ -+ template<> -+ void -+ __timepunct<char>:: -+ _M_put(char* __s, size_t __maxlen, const char* __format, -+ const tm* __tm) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ const size_t __len = __strftime_l(__s, __maxlen, __format, __tm, -+ _M_c_locale_timepunct); -+#else -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_timepunct); -+ const size_t __len = strftime(__s, __maxlen, __format, __tm); -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ // Make sure __s is null terminated. -+ if (__len == 0) -+ __s[0] = '\0'; -+ } -+ -+ template<> -+ void -+ __timepunct<char>::_M_initialize_timepunct(__c_locale __cloc) -+ { -+ if (!_M_data) -+ _M_data = new __timepunct_cache<char>; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_c_locale_timepunct = _S_get_c_locale(); -+ -+ _M_data->_M_date_format = "%m/%d/%y"; -+ _M_data->_M_date_era_format = "%m/%d/%y"; -+ _M_data->_M_time_format = "%H:%M:%S"; -+ _M_data->_M_time_era_format = "%H:%M:%S"; -+ _M_data->_M_date_time_format = ""; -+ _M_data->_M_date_time_era_format = ""; -+ _M_data->_M_am = "AM"; -+ _M_data->_M_pm = "PM"; -+ _M_data->_M_am_pm_format = ""; -+ -+ // Day names, starting with "C"'s Sunday. -+ _M_data->_M_day1 = "Sunday"; -+ _M_data->_M_day2 = "Monday"; -+ _M_data->_M_day3 = "Tuesday"; -+ _M_data->_M_day4 = "Wednesday"; -+ _M_data->_M_day5 = "Thursday"; -+ _M_data->_M_day6 = "Friday"; -+ _M_data->_M_day7 = "Saturday"; -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ _M_data->_M_aday1 = "Sun"; -+ _M_data->_M_aday2 = "Mon"; -+ _M_data->_M_aday3 = "Tue"; -+ _M_data->_M_aday4 = "Wed"; -+ _M_data->_M_aday5 = "Thu"; -+ _M_data->_M_aday6 = "Fri"; -+ _M_data->_M_aday7 = "Sat"; -+ -+ // Month names, starting with "C"'s January. -+ _M_data->_M_month01 = "January"; -+ _M_data->_M_month02 = "February"; -+ _M_data->_M_month03 = "March"; -+ _M_data->_M_month04 = "April"; -+ _M_data->_M_month05 = "May"; -+ _M_data->_M_month06 = "June"; -+ _M_data->_M_month07 = "July"; -+ _M_data->_M_month08 = "August"; -+ _M_data->_M_month09 = "September"; -+ _M_data->_M_month10 = "October"; -+ _M_data->_M_month11 = "November"; -+ _M_data->_M_month12 = "December"; -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ _M_data->_M_amonth01 = "Jan"; -+ _M_data->_M_amonth02 = "Feb"; -+ _M_data->_M_amonth03 = "Mar"; -+ _M_data->_M_amonth04 = "Apr"; -+ _M_data->_M_amonth05 = "May"; -+ _M_data->_M_amonth06 = "Jun"; -+ _M_data->_M_amonth07 = "Jul"; -+ _M_data->_M_amonth08 = "Aug"; -+ _M_data->_M_amonth09 = "Sep"; -+ _M_data->_M_amonth10 = "Oct"; -+ _M_data->_M_amonth11 = "Nov"; -+ _M_data->_M_amonth12 = "Dec"; -+ } -+ else -+ { -+ _M_c_locale_timepunct = _S_clone_c_locale(__cloc); -+ -+ _M_data->_M_date_format = __nl_langinfo_l(D_FMT, __cloc); -+ _M_data->_M_date_era_format = __nl_langinfo_l(ERA_D_FMT, __cloc); -+ _M_data->_M_time_format = __nl_langinfo_l(T_FMT, __cloc); -+ _M_data->_M_time_era_format = __nl_langinfo_l(ERA_T_FMT, __cloc); -+ _M_data->_M_date_time_format = __nl_langinfo_l(D_T_FMT, __cloc); -+ _M_data->_M_date_time_era_format = __nl_langinfo_l(ERA_D_T_FMT, -+ __cloc); -+ _M_data->_M_am = __nl_langinfo_l(AM_STR, __cloc); -+ _M_data->_M_pm = __nl_langinfo_l(PM_STR, __cloc); -+ _M_data->_M_am_pm_format = __nl_langinfo_l(T_FMT_AMPM, __cloc); -+ -+ // Day names, starting with "C"'s Sunday. -+ _M_data->_M_day1 = __nl_langinfo_l(DAY_1, __cloc); -+ _M_data->_M_day2 = __nl_langinfo_l(DAY_2, __cloc); -+ _M_data->_M_day3 = __nl_langinfo_l(DAY_3, __cloc); -+ _M_data->_M_day4 = __nl_langinfo_l(DAY_4, __cloc); -+ _M_data->_M_day5 = __nl_langinfo_l(DAY_5, __cloc); -+ _M_data->_M_day6 = __nl_langinfo_l(DAY_6, __cloc); -+ _M_data->_M_day7 = __nl_langinfo_l(DAY_7, __cloc); -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ _M_data->_M_aday1 = __nl_langinfo_l(ABDAY_1, __cloc); -+ _M_data->_M_aday2 = __nl_langinfo_l(ABDAY_2, __cloc); -+ _M_data->_M_aday3 = __nl_langinfo_l(ABDAY_3, __cloc); -+ _M_data->_M_aday4 = __nl_langinfo_l(ABDAY_4, __cloc); -+ _M_data->_M_aday5 = __nl_langinfo_l(ABDAY_5, __cloc); -+ _M_data->_M_aday6 = __nl_langinfo_l(ABDAY_6, __cloc); -+ _M_data->_M_aday7 = __nl_langinfo_l(ABDAY_7, __cloc); -+ -+ // Month names, starting with "C"'s January. -+ _M_data->_M_month01 = __nl_langinfo_l(MON_1, __cloc); -+ _M_data->_M_month02 = __nl_langinfo_l(MON_2, __cloc); -+ _M_data->_M_month03 = __nl_langinfo_l(MON_3, __cloc); -+ _M_data->_M_month04 = __nl_langinfo_l(MON_4, __cloc); -+ _M_data->_M_month05 = __nl_langinfo_l(MON_5, __cloc); -+ _M_data->_M_month06 = __nl_langinfo_l(MON_6, __cloc); -+ _M_data->_M_month07 = __nl_langinfo_l(MON_7, __cloc); -+ _M_data->_M_month08 = __nl_langinfo_l(MON_8, __cloc); -+ _M_data->_M_month09 = __nl_langinfo_l(MON_9, __cloc); -+ _M_data->_M_month10 = __nl_langinfo_l(MON_10, __cloc); -+ _M_data->_M_month11 = __nl_langinfo_l(MON_11, __cloc); -+ _M_data->_M_month12 = __nl_langinfo_l(MON_12, __cloc); -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ _M_data->_M_amonth01 = __nl_langinfo_l(ABMON_1, __cloc); -+ _M_data->_M_amonth02 = __nl_langinfo_l(ABMON_2, __cloc); -+ _M_data->_M_amonth03 = __nl_langinfo_l(ABMON_3, __cloc); -+ _M_data->_M_amonth04 = __nl_langinfo_l(ABMON_4, __cloc); -+ _M_data->_M_amonth05 = __nl_langinfo_l(ABMON_5, __cloc); -+ _M_data->_M_amonth06 = __nl_langinfo_l(ABMON_6, __cloc); -+ _M_data->_M_amonth07 = __nl_langinfo_l(ABMON_7, __cloc); -+ _M_data->_M_amonth08 = __nl_langinfo_l(ABMON_8, __cloc); -+ _M_data->_M_amonth09 = __nl_langinfo_l(ABMON_9, __cloc); -+ _M_data->_M_amonth10 = __nl_langinfo_l(ABMON_10, __cloc); -+ _M_data->_M_amonth11 = __nl_langinfo_l(ABMON_11, __cloc); -+ _M_data->_M_amonth12 = __nl_langinfo_l(ABMON_12, __cloc); -+ } -+ } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ void -+ __timepunct<wchar_t>:: -+ _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format, -+ const tm* __tm) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __wcsftime_l(__s, __maxlen, __format, __tm, _M_c_locale_timepunct); -+ const size_t __len = __wcsftime_l(__s, __maxlen, __format, __tm, -+ _M_c_locale_timepunct); -+#else -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_timepunct); -+ const size_t __len = wcsftime(__s, __maxlen, __format, __tm); -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ // Make sure __s is null terminated. -+ if (__len == 0) -+ __s[0] = L'\0'; -+ } -+ -+ template<> -+ void -+ __timepunct<wchar_t>::_M_initialize_timepunct(__c_locale __cloc) -+ { -+ if (!_M_data) -+ _M_data = new __timepunct_cache<wchar_t>; -+ -+#warning wide time stuff -+// if (!__cloc) -+ { -+ // "C" locale -+ _M_c_locale_timepunct = _S_get_c_locale(); -+ -+ _M_data->_M_date_format = L"%m/%d/%y"; -+ _M_data->_M_date_era_format = L"%m/%d/%y"; -+ _M_data->_M_time_format = L"%H:%M:%S"; -+ _M_data->_M_time_era_format = L"%H:%M:%S"; -+ _M_data->_M_date_time_format = L""; -+ _M_data->_M_date_time_era_format = L""; -+ _M_data->_M_am = L"AM"; -+ _M_data->_M_pm = L"PM"; -+ _M_data->_M_am_pm_format = L""; -+ -+ // Day names, starting with "C"'s Sunday. -+ _M_data->_M_day1 = L"Sunday"; -+ _M_data->_M_day2 = L"Monday"; -+ _M_data->_M_day3 = L"Tuesday"; -+ _M_data->_M_day4 = L"Wednesday"; -+ _M_data->_M_day5 = L"Thursday"; -+ _M_data->_M_day6 = L"Friday"; -+ _M_data->_M_day7 = L"Saturday"; -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ _M_data->_M_aday1 = L"Sun"; -+ _M_data->_M_aday2 = L"Mon"; -+ _M_data->_M_aday3 = L"Tue"; -+ _M_data->_M_aday4 = L"Wed"; -+ _M_data->_M_aday5 = L"Thu"; -+ _M_data->_M_aday6 = L"Fri"; -+ _M_data->_M_aday7 = L"Sat"; -+ -+ // Month names, starting with "C"'s January. -+ _M_data->_M_month01 = L"January"; -+ _M_data->_M_month02 = L"February"; -+ _M_data->_M_month03 = L"March"; -+ _M_data->_M_month04 = L"April"; -+ _M_data->_M_month05 = L"May"; -+ _M_data->_M_month06 = L"June"; -+ _M_data->_M_month07 = L"July"; -+ _M_data->_M_month08 = L"August"; -+ _M_data->_M_month09 = L"September"; -+ _M_data->_M_month10 = L"October"; -+ _M_data->_M_month11 = L"November"; -+ _M_data->_M_month12 = L"December"; -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ _M_data->_M_amonth01 = L"Jan"; -+ _M_data->_M_amonth02 = L"Feb"; -+ _M_data->_M_amonth03 = L"Mar"; -+ _M_data->_M_amonth04 = L"Apr"; -+ _M_data->_M_amonth05 = L"May"; -+ _M_data->_M_amonth06 = L"Jun"; -+ _M_data->_M_amonth07 = L"Jul"; -+ _M_data->_M_amonth08 = L"Aug"; -+ _M_data->_M_amonth09 = L"Sep"; -+ _M_data->_M_amonth10 = L"Oct"; -+ _M_data->_M_amonth11 = L"Nov"; -+ _M_data->_M_amonth12 = L"Dec"; -+ } -+#if 0 -+ else -+ { -+ _M_c_locale_timepunct = _S_clone_c_locale(__cloc); -+ -+ union { char *__s; wchar_t *__w; } __u; -+ -+ __u.__s = __nl_langinfo_l(_NL_WD_FMT, __cloc); -+ _M_data->_M_date_format = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WERA_D_FMT, __cloc); -+ _M_data->_M_date_era_format = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WT_FMT, __cloc); -+ _M_data->_M_time_format = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WERA_T_FMT, __cloc); -+ _M_data->_M_time_era_format = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WD_T_FMT, __cloc); -+ _M_data->_M_date_time_format = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WERA_D_T_FMT, __cloc); -+ _M_data->_M_date_time_era_format = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WAM_STR, __cloc); -+ _M_data->_M_am = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WPM_STR, __cloc); -+ _M_data->_M_pm = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WT_FMT_AMPM, __cloc); -+ _M_data->_M_am_pm_format = __u.__w; -+ -+ // Day names, starting with "C"'s Sunday. -+ __u.__s = __nl_langinfo_l(_NL_WDAY_1, __cloc); -+ _M_data->_M_day1 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WDAY_2, __cloc); -+ _M_data->_M_day2 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WDAY_3, __cloc); -+ _M_data->_M_day3 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WDAY_4, __cloc); -+ _M_data->_M_day4 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WDAY_5, __cloc); -+ _M_data->_M_day5 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WDAY_6, __cloc); -+ _M_data->_M_day6 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WDAY_7, __cloc); -+ _M_data->_M_day7 = __u.__w; -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ __u.__s = __nl_langinfo_l(_NL_WABDAY_1, __cloc); -+ _M_data->_M_aday1 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABDAY_2, __cloc); -+ _M_data->_M_aday2 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABDAY_3, __cloc); -+ _M_data->_M_aday3 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABDAY_4, __cloc); -+ _M_data->_M_aday4 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABDAY_5, __cloc); -+ _M_data->_M_aday5 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABDAY_6, __cloc); -+ _M_data->_M_aday6 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABDAY_7, __cloc); -+ _M_data->_M_aday7 = __u.__w; -+ -+ // Month names, starting with "C"'s January. -+ __u.__s = __nl_langinfo_l(_NL_WMON_1, __cloc); -+ _M_data->_M_month01 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_2, __cloc); -+ _M_data->_M_month02 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_3, __cloc); -+ _M_data->_M_month03 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_4, __cloc); -+ _M_data->_M_month04 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_5, __cloc); -+ _M_data->_M_month05 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_6, __cloc); -+ _M_data->_M_month06 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_7, __cloc); -+ _M_data->_M_month07 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_8, __cloc); -+ _M_data->_M_month08 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_9, __cloc); -+ _M_data->_M_month09 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_10, __cloc); -+ _M_data->_M_month10 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_11, __cloc); -+ _M_data->_M_month11 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_12, __cloc); -+ _M_data->_M_month12 = __u.__w; -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ __u.__s = __nl_langinfo_l(_NL_WABMON_1, __cloc); -+ _M_data->_M_amonth01 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_2, __cloc); -+ _M_data->_M_amonth02 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_3, __cloc); -+ _M_data->_M_amonth03 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_4, __cloc); -+ _M_data->_M_amonth04 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_5, __cloc); -+ _M_data->_M_amonth05 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_6, __cloc); -+ _M_data->_M_amonth06 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_7, __cloc); -+ _M_data->_M_amonth07 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_8, __cloc); -+ _M_data->_M_amonth08 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_9, __cloc); -+ _M_data->_M_amonth09 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_10, __cloc); -+ _M_data->_M_amonth10 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_11, __cloc); -+ _M_data->_M_amonth11 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_12, __cloc); -+ _M_data->_M_amonth12 = __u.__w; -+ } -+#endif // 0 -+ } -+#endif -+} -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/time_members.h gcc-4.0.0/libstdc++-v3/config/locale/uclibc/time_members.h ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/time_members.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/time_members.h 2004-05-22 18:46:31.000000000 -0500 -@@ -0,0 +1,68 @@ -+// std::time_get, std::time_put implementation, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.5.1.2 - time_get functions -+// ISO C++ 14882: 22.2.5.3.2 - time_put functions -+// -+ -+// Written by Benjamin Kosnik bkoz@redhat.com -+ -+ template<typename _CharT> -+ __timepunct<_CharT>::__timepunct(size_t __refs) -+ : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL), -+ _M_name_timepunct(_S_get_c_name()) -+ { _M_initialize_timepunct(); } -+ -+ template<typename _CharT> -+ __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) -+ : facet(__refs), _M_data(__cache), _M_c_locale_timepunct(NULL), -+ _M_name_timepunct(_S_get_c_name()) -+ { _M_initialize_timepunct(); } -+ -+ template<typename _CharT> -+ __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, -+ size_t __refs) -+ : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL), -+ _M_name_timepunct(__s) -+ { -+ char* __tmp = new char[std::strlen(__s) + 1]; -+ std::strcpy(__tmp, __s); -+ _M_name_timepunct = __tmp; -+ _M_initialize_timepunct(__cloc); -+ } -+ -+ template<typename _CharT> -+ __timepunct<_CharT>::~__timepunct() -+ { -+ if (_M_name_timepunct != _S_get_c_name()) -+ delete [] _M_name_timepunct; -+ delete _M_data; -+ _S_destroy_c_locale(_M_c_locale_timepunct); -+ } -diff -urN gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_base.h gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_base.h ---- gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_base.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_base.h 2005-04-28 01:10:27.000000000 -0500 -@@ -0,0 +1,64 @@ -+// Locale support -*- C++ -*- -+ -+// Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003, 2004 -+// Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.1 Locales -+// -+ -+/** @file ctype_base.h -+ * This is an internal header file, included by other library headers. -+ * You should not attempt to use it directly. -+ */ -+ -+// Information as gleaned from /usr/include/ctype.h -+ -+ /// @brief Base class for ctype. -+ struct ctype_base -+ { -+ // Note: In uClibc, the following two types depend on configuration. -+ -+ // Non-standard typedefs. -+ typedef const __ctype_touplow_t* __to_type; -+ -+ // NB: Offsets into ctype<char>::_M_table force a particular size -+ // on the mask type. Because of this, we don't use an enum. -+ typedef __ctype_mask_t mask; -+ static const mask upper = _ISupper; -+ static const mask lower = _ISlower; -+ static const mask alpha = _ISalpha; -+ static const mask digit = _ISdigit; -+ static const mask xdigit = _ISxdigit; -+ static const mask space = _ISspace; -+ static const mask print = _ISprint; -+ static const mask graph = _ISalpha | _ISdigit | _ISpunct; -+ static const mask cntrl = _IScntrl; -+ static const mask punct = _ISpunct; -+ static const mask alnum = _ISalpha | _ISdigit; -+ }; -diff -urN gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_inline.h gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_inline.h ---- gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_inline.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_inline.h 2002-06-24 00:49:19.000000000 -0500 -@@ -0,0 +1,69 @@ -+// Locale support -*- C++ -*- -+ -+// Copyright (C) 2000, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.1 Locales -+// -+ -+// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) -+// functions go in ctype.cc -+ -+ bool -+ ctype<char>:: -+ is(mask __m, char __c) const -+ { return _M_table[static_cast<unsigned char>(__c)] & __m; } -+ -+ const char* -+ ctype<char>:: -+ is(const char* __low, const char* __high, mask* __vec) const -+ { -+ while (__low < __high) -+ *__vec++ = _M_table[static_cast<unsigned char>(*__low++)]; -+ return __high; -+ } -+ -+ const char* -+ ctype<char>:: -+ scan_is(mask __m, const char* __low, const char* __high) const -+ { -+ while (__low < __high -+ && !(_M_table[static_cast<unsigned char>(*__low)] & __m)) -+ ++__low; -+ return __low; -+ } -+ -+ const char* -+ ctype<char>:: -+ scan_not(mask __m, const char* __low, const char* __high) const -+ { -+ while (__low < __high -+ && (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0) -+ ++__low; -+ return __low; -+ } -diff -urN gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_noninline.h gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_noninline.h ---- gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_noninline.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_noninline.h 2005-04-28 01:10:27.000000000 -0500 -@@ -0,0 +1,92 @@ -+// Locale support -*- C++ -*- -+ -+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004 -+// Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.1 Locales -+// -+ -+// Information as gleaned from /usr/include/ctype.h -+ -+ const ctype_base::mask* -+ ctype<char>::classic_table() throw() -+ { return __C_ctype_b; } -+ -+ ctype<char>::ctype(__c_locale, const mask* __table, bool __del, -+ size_t __refs) -+ : facet(__refs), _M_c_locale_ctype(_S_get_c_locale()), -+ _M_del(__table != 0 && __del), _M_widen_ok(0), _M_narrow_ok(0) -+ { -+ _M_toupper = __C_ctype_toupper; -+ _M_tolower = __C_ctype_tolower; -+ _M_table = __table ? __table : __C_ctype_b; -+ memset(_M_widen, 0, sizeof(_M_widen)); -+ memset(_M_narrow, 0, sizeof(_M_narrow)); -+ } -+ -+ ctype<char>::ctype(const mask* __table, bool __del, size_t __refs) -+ : facet(__refs), _M_c_locale_ctype(_S_get_c_locale()), -+ _M_del(__table != 0 && __del), _M_widen_ok(0), _M_narrow_ok(0) -+ { -+ _M_toupper = __C_ctype_toupper; -+ _M_tolower = __C_ctype_tolower; -+ _M_table = __table ? __table : __C_ctype_b; -+ memset(_M_widen, 0, sizeof(_M_widen)); -+ memset(_M_narrow, 0, sizeof(_M_narrow)); -+ } -+ -+ char -+ ctype<char>::do_toupper(char __c) const -+ { return _M_toupper[static_cast<unsigned char>(__c)]; } -+ -+ const char* -+ ctype<char>::do_toupper(char* __low, const char* __high) const -+ { -+ while (__low < __high) -+ { -+ *__low = _M_toupper[static_cast<unsigned char>(*__low)]; -+ ++__low; -+ } -+ return __high; -+ } -+ -+ char -+ ctype<char>::do_tolower(char __c) const -+ { return _M_tolower[static_cast<unsigned char>(__c)]; } -+ -+ const char* -+ ctype<char>::do_tolower(char* __low, const char* __high) const -+ { -+ while (__low < __high) -+ { -+ *__low = _M_tolower[static_cast<unsigned char>(*__low)]; -+ ++__low; -+ } -+ return __high; -+ } -diff -urN gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/os_defines.h gcc-4.0.0/libstdc++-v3/config/os/uclibc/os_defines.h ---- gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/os_defines.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/os/uclibc/os_defines.h 2005-04-28 01:10:27.000000000 -0500 -@@ -0,0 +1,44 @@ -+// Specific definitions for GNU/Linux -*- C++ -*- -+ -+// Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+#ifndef _GLIBCXX_OS_DEFINES -+#define _GLIBCXX_OS_DEFINES 1 -+ -+// System-specific #define, typedefs, corrections, etc, go here. This -+// file will come before all others. -+ -+// This keeps isanum, et al from being propagated as macros. -+#define __NO_CTYPE 1 -+ -+#include <features.h> -+ -+// We must not see the optimized string functions GNU libc defines. -+#define __NO_STRING_INLINES -+ -+#endif -diff -urN gcc-4.0.0-100/libstdc++-v3/configure gcc-4.0.0/libstdc++-v3/configure ---- gcc-4.0.0-100/libstdc++-v3/configure 2005-04-30 13:06:53.683055232 -0500 -+++ gcc-4.0.0/libstdc++-v3/configure 2005-04-30 12:24:24.000000000 -0500 -@@ -3998,6 +3998,11 @@ - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/.]+.so.[0-9]+.[0-9]+$' -@@ -5672,7 +5677,7 @@ - enableval="$enable_clocale" - - case "$enableval" in -- generic|gnu|ieee_1003.1-2001|yes|no|auto) ;; -+ generic|gnu|ieee_1003.1-2001|uclibc|yes|no|auto) ;; - *) { { echo "$as_me:$LINENO: error: Unknown argument to enable/disable clocale" >&5 - echo "$as_me: error: Unknown argument to enable/disable clocale" >&2;} - { (exit 1); exit 1; }; } ;; -@@ -5697,6 +5702,9 @@ - # Default to "generic". - if test $enable_clocale_flag = auto; then - case ${target_os} in -+ linux-uclibc*) -+ enable_clocale_flag=uclibc -+ ;; - linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu) - cat >conftest.$ac_ext <<_ACEOF - /* confdefs.h. */ -@@ -5927,6 +5935,76 @@ - CTIME_CC=config/locale/generic/time_members.cc - CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h - ;; -+ uclibc) -+ echo "$as_me:$LINENO: result: uclibc" >&5 -+echo "${ECHO_T}uclibc" >&6 -+ -+ # Declare intention to use gettext, and add support for specific -+ # languages. -+ # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT -+ ALL_LINGUAS="de fr" -+ -+ # Don't call AM-GNU-GETTEXT here. Instead, assume glibc. -+ # Extract the first word of "msgfmt", so it can be a program name with args. -+set dummy msgfmt; ac_word=$2 -+echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -+if test "${ac_cv_prog_check_msgfmt+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$check_msgfmt"; then -+ ac_cv_prog_check_msgfmt="$check_msgfmt" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_prog_check_msgfmt="yes" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+ -+ test -z "$ac_cv_prog_check_msgfmt" && ac_cv_prog_check_msgfmt="no" -+fi -+fi -+check_msgfmt=$ac_cv_prog_check_msgfmt -+if test -n "$check_msgfmt"; then -+ echo "$as_me:$LINENO: result: $check_msgfmt" >&5 -+echo "${ECHO_T}$check_msgfmt" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+ -+ if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then -+ USE_NLS=yes -+ fi -+ # Export the build objects. -+ for ling in $ALL_LINGUAS; do \ -+ glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \ -+ glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \ -+ done -+ -+ -+ -+ CLOCALE_H=config/locale/uclibc/c_locale.h -+ CLOCALE_CC=config/locale/uclibc/c_locale.cc -+ CCODECVT_CC=config/locale/uclibc/codecvt_members.cc -+ CCOLLATE_CC=config/locale/uclibc/collate_members.cc -+ CCTYPE_CC=config/locale/uclibc/ctype_members.cc -+ CMESSAGES_H=config/locale/uclibc/messages_members.h -+ CMESSAGES_CC=config/locale/uclibc/messages_members.cc -+ CMONEY_CC=config/locale/uclibc/monetary_members.cc -+ CNUMERIC_CC=config/locale/uclibc/numeric_members.cc -+ CTIME_H=config/locale/uclibc/time_members.h -+ CTIME_CC=config/locale/uclibc/time_members.cc -+ CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h -+ ;; - esac - - # This is where the testsuite looks for locale catalogs, using the -diff -urN gcc-4.0.0-100/libstdc++-v3/configure.host gcc-4.0.0/libstdc++-v3/configure.host ---- gcc-4.0.0-100/libstdc++-v3/configure.host 2005-04-30 13:06:53.688054472 -0500 -+++ gcc-4.0.0/libstdc++-v3/configure.host 2005-04-28 20:20:32.000000000 -0500 -@@ -249,6 +249,12 @@ - ;; - esac - -+# Override for uClibc since linux-uclibc gets mishandled above. -+case "${host_os}" in -+ *-uclibc*) -+ os_include_dir="os/uclibc" -+ ;; -+esac - - # Set any OS-dependent and CPU-dependent bits. - # THIS TABLE IS SORTED. KEEP IT THAT WAY. -diff -urN gcc-4.0.0-100/libstdc++-v3/crossconfig.m4 gcc-4.0.0/libstdc++-v3/crossconfig.m4 ---- gcc-4.0.0-100/libstdc++-v3/crossconfig.m4 2005-04-30 13:06:53.689054320 -0500 -+++ gcc-4.0.0/libstdc++-v3/crossconfig.m4 2005-04-28 20:27:15.000000000 -0500 -@@ -142,6 +142,98 @@ - ;; - esac - ;; -+ *-uclibc*) -+# Temporary hack until we implement the float versions of the libm funcs -+ AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \ -+ machine/endian.h machine/param.h sys/machine.h sys/types.h \ -+ fp.h float.h endian.h inttypes.h locale.h float.h stdint.h]) -+ SECTION_FLAGS='-ffunction-sections -fdata-sections' -+ AC_SUBST(SECTION_FLAGS) -+ GLIBCXX_CHECK_LINKER_FEATURES -+ GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT -+ GLIBCXX_CHECK_WCHAR_T_SUPPORT -+ -+ # For LFS. -+ AC_DEFINE(HAVE_INT64_T) -+ case "$target" in -+ *-uclinux*) -+ # Don't enable LFS with uClinux -+ ;; -+ *) -+ AC_DEFINE(_GLIBCXX_USE_LFS) -+ esac -+ -+ # For showmanyc_helper(). -+ AC_CHECK_HEADERS(sys/ioctl.h sys/filio.h) -+ GLIBCXX_CHECK_POLL -+ GLIBCXX_CHECK_S_ISREG_OR_S_IFREG -+ -+ # For xsputn_2(). -+ AC_CHECK_HEADERS(sys/uio.h) -+ GLIBCXX_CHECK_WRITEV -+ -+# AC_DEFINE(HAVE_ACOSF) -+# AC_DEFINE(HAVE_ASINF) -+# AC_DEFINE(HAVE_ATANF) -+# AC_DEFINE(HAVE_ATAN2F) -+ AC_DEFINE(HAVE_CEILF) -+ AC_DEFINE(HAVE_COPYSIGN) -+# AC_DEFINE(HAVE_COPYSIGNF) -+# AC_DEFINE(HAVE_COSF) -+# AC_DEFINE(HAVE_COSHF) -+# AC_DEFINE(HAVE_EXPF) -+# AC_DEFINE(HAVE_FABSF) -+ AC_DEFINE(HAVE_FINITE) -+ AC_DEFINE(HAVE_FINITEF) -+ AC_DEFINE(HAVE_FLOORF) -+# AC_DEFINE(HAVE_FMODF) -+# AC_DEFINE(HAVE_FREXPF) -+ AC_DEFINE(HAVE_HYPOT) -+# AC_DEFINE(HAVE_HYPOTF) -+ AC_DEFINE(HAVE_ISINF) -+ AC_DEFINE(HAVE_ISINFF) -+ AC_DEFINE(HAVE_ISNAN) -+ AC_DEFINE(HAVE_ISNANF) -+# AC_DEFINE(HAVE_LOGF) -+# AC_DEFINE(HAVE_LOG10F) -+# AC_DEFINE(HAVE_MODFF) -+# AC_DEFINE(HAVE_SINF) -+# AC_DEFINE(HAVE_SINHF) -+# AC_DEFINE(HAVE_SINCOS) -+# AC_DEFINE(HAVE_SINCOSF) -+ AC_DEFINE(HAVE_SQRTF) -+# AC_DEFINE(HAVE_TANF) -+# AC_DEFINE(HAVE_TANHF) -+ if test x"long_double_math_on_this_cpu" = x"yes"; then -+# AC_DEFINE(HAVE_ACOSL) -+# AC_DEFINE(HAVE_ASINL) -+# AC_DEFINE(HAVE_ATANL) -+# AC_DEFINE(HAVE_ATAN2L) -+# AC_DEFINE(HAVE_CEILL) -+# AC_DEFINE(HAVE_COPYSIGNL) -+# AC_DEFINE(HAVE_COSL) -+# AC_DEFINE(HAVE_COSHL) -+# AC_DEFINE(HAVE_EXPL) -+# AC_DEFINE(HAVE_FABSL) -+# AC_DEFINE(HAVE_FINITEL) -+# AC_DEFINE(HAVE_FLOORL) -+# AC_DEFINE(HAVE_FMODL) -+# AC_DEFINE(HAVE_FREXPL) -+# AC_DEFINE(HAVE_HYPOTL) -+# AC_DEFINE(HAVE_ISINFL) -+# AC_DEFINE(HAVE_ISNANL) -+# AC_DEFINE(HAVE_LOGL) -+# AC_DEFINE(HAVE_LOG10L) -+# AC_DEFINE(HAVE_MODFL) -+# AC_DEFINE(HAVE_POWL) -+# AC_DEFINE(HAVE_SINL) -+# AC_DEFINE(HAVE_SINHL) -+# AC_DEFINE(HAVE_SINCOSL) -+# AC_DEFINE(HAVE_SQRTL) -+# AC_DEFINE(HAVE_TANL) -+# AC_DEFINE(HAVE_TANHL) -+ fi -+ ;; - *-linux* | *-uclinux* | *-gnu* | *-kfreebsd*-gnu | *-knetbsd*-gnu) - AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \ - machine/endian.h machine/param.h sys/machine.h sys/types.h \ -@@ -156,7 +248,7 @@ - AC_DEFINE(HAVE_INT64_T) - case "$target" in - *-uclinux*) -- # Don't enable LFS with uClibc -+ # Don't enable LFS with uClinux - ;; - *) - AC_DEFINE(_GLIBCXX_USE_LFS) -diff -urN gcc-4.0.0-100/libstdc++-v3/include/c_compatibility/wchar.h gcc-4.0.0/libstdc++-v3/include/c_compatibility/wchar.h ---- gcc-4.0.0-100/libstdc++-v3/include/c_compatibility/wchar.h 2005-04-30 13:06:53.690054168 -0500 -+++ gcc-4.0.0/libstdc++-v3/include/c_compatibility/wchar.h 2005-04-28 20:15:56.000000000 -0500 -@@ -101,7 +101,9 @@ - using std::wmemcpy; - using std::wmemmove; - using std::wmemset; -+#if _GLIBCXX_HAVE_WCSFTIME - using std::wcsftime; -+#endif - - #if _GLIBCXX_USE_C99 - using std::wcstold; -diff -urN gcc-4.0.0-100/libstdc++-v3/include/c_std/std_cwchar.h gcc-4.0.0/libstdc++-v3/include/c_std/std_cwchar.h ---- gcc-4.0.0-100/libstdc++-v3/include/c_std/std_cwchar.h 2005-04-30 13:06:53.691054016 -0500 -+++ gcc-4.0.0/libstdc++-v3/include/c_std/std_cwchar.h 2005-04-28 20:15:56.000000000 -0500 -@@ -179,7 +179,9 @@ - using ::wcscoll; - using ::wcscpy; - using ::wcscspn; -+#if _GLIBCXX_HAVE_WCSFTIME - using ::wcsftime; -+#endif - using ::wcslen; - using ::wcsncat; - using ::wcsncmp; diff --git a/src/patches/gcc/gcc44-build-id.patch b/src/patches/gcc/gcc44-build-id.patch new file mode 100644 index 0000000..f76f939 --- /dev/null +++ b/src/patches/gcc/gcc44-build-id.patch @@ -0,0 +1,52 @@ +2007-07-22 Roland McGrath roland@redhat.com + + * config/rs6000/sysv4.h (LINK_EH_SPEC): Add --build-id for + non-relocatable link. + * config/linux.h (LINK_EH_SPEC): Likewise. + * config/alpha/elf.h (LINK_EH_SPEC): Likewise. + * config/ia64/linux.h (LINK_EH_SPEC): Likewise. + +--- gcc/config/rs6000/sysv4.h.~1~ ++++ gcc/config/rs6000/sysv4.h +@@ -906,7 +906,7 @@ extern int fixuplabelno; + %{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER "}}}" + + #if defined(HAVE_LD_EH_FRAME_HDR) +-# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " ++# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} " + #endif + + #define CPP_OS_LINUX_SPEC "-D__unix__ -D__gnu_linux__ -D__linux__ \ +--- gcc/config/linux.h.~1~ ++++ gcc/config/linux.h +@@ -85,7 +85,7 @@ Boston, MA 02110-1301, USA. */ + } while (0) + + #if defined(HAVE_LD_EH_FRAME_HDR) +-#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " ++#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} " + #endif + + /* Define this so we can compile MS code for use with WINE. */ +--- gcc/config/alpha/elf.h.~1~ ++++ gcc/config/alpha/elf.h +@@ -421,7 +421,7 @@ extern int alpha_this_gpdisp_sequence_nu + I imagine that other systems will catch up. In the meantime, it + doesn't harm to make sure that the data exists to be used later. */ + #if defined(HAVE_LD_EH_FRAME_HDR) +-#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " ++#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} " + #endif + + /* A C statement (sans semicolon) to output to the stdio stream STREAM +--- gcc/config/ia64/linux.h.~1~ ++++ gcc/config/ia64/linux.h +@@ -56,7 +56,7 @@ do { \ + Signalize that because we have fde-glibc, we don't need all C shared libs + linked against -lgcc_s. */ + #undef LINK_EH_SPEC +-#define LINK_EH_SPEC "" ++#define LINK_EH_SPEC "%{!r:--build-id} " + + #define MD_UNWIND_SUPPORT "config/ia64/linux-unwind.h" + diff --git a/src/patches/gcc/gcc44-c++-builtin-redecl.patch b/src/patches/gcc/gcc44-c++-builtin-redecl.patch new file mode 100644 index 0000000..1f36f1f --- /dev/null +++ b/src/patches/gcc/gcc44-c++-builtin-redecl.patch @@ -0,0 +1,102 @@ +2007-10-02 Jakub Jelinek jakub@redhat.com + + * decl.c (duplicate_decls): When redeclaring a builtin function, + keep the merged decl builtin whenever types match, even if new + decl defines a function. + + * gcc.dg/builtins-65.c: New test. + * g++.dg/ext/builtin10.C: New test. + +--- gcc/cp/decl.c.jj 2007-10-01 22:11:09.000000000 +0200 ++++ gcc/cp/decl.c 2007-10-02 11:39:46.000000000 +0200 +@@ -2001,23 +2001,21 @@ duplicate_decls (tree newdecl, tree oldd + DECL_ARGUMENTS (olddecl) = DECL_ARGUMENTS (newdecl); + DECL_RESULT (olddecl) = DECL_RESULT (newdecl); + } ++ /* If redeclaring a builtin function, it stays built in. */ ++ if (types_match && DECL_BUILT_IN (olddecl)) ++ { ++ DECL_BUILT_IN_CLASS (newdecl) = DECL_BUILT_IN_CLASS (olddecl); ++ DECL_FUNCTION_CODE (newdecl) = DECL_FUNCTION_CODE (olddecl); ++ /* If we're keeping the built-in definition, keep the rtl, ++ regardless of declaration matches. */ ++ COPY_DECL_RTL (olddecl, newdecl); ++ } + if (new_defines_function) + /* If defining a function declared with other language + linkage, use the previously declared language linkage. */ + SET_DECL_LANGUAGE (newdecl, DECL_LANGUAGE (olddecl)); + else if (types_match) + { +- /* If redeclaring a builtin function, and not a definition, +- it stays built in. */ +- if (DECL_BUILT_IN (olddecl)) +- { +- DECL_BUILT_IN_CLASS (newdecl) = DECL_BUILT_IN_CLASS (olddecl); +- DECL_FUNCTION_CODE (newdecl) = DECL_FUNCTION_CODE (olddecl); +- /* If we're keeping the built-in definition, keep the rtl, +- regardless of declaration matches. */ +- COPY_DECL_RTL (olddecl, newdecl); +- } +- + DECL_RESULT (newdecl) = DECL_RESULT (olddecl); + /* Don't clear out the arguments if we're just redeclaring a + function. */ +--- gcc/testsuite/gcc.dg/builtins-65.c.jj 2007-10-02 11:23:51.000000000 +0200 ++++ gcc/testsuite/gcc.dg/builtins-65.c 2007-10-02 11:24:12.000000000 +0200 +@@ -0,0 +1,25 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++typedef __SIZE_TYPE__ size_t; ++extern void __chk_fail (void); ++extern int snprintf (char *, size_t, const char *, ...); ++extern inline __attribute__((gnu_inline, always_inline)) int snprintf (char *a, size_t b, const char *fmt, ...) ++{ ++ if (__builtin_object_size (a, 0) != -1UL && __builtin_object_size (a, 0) < b) ++ __chk_fail (); ++ return __builtin_snprintf (a, b, fmt, __builtin_va_arg_pack ()); ++} ++extern int snprintf (char *, size_t, const char *, ...) __asm ("mysnprintf"); ++ ++char buf[10]; ++ ++int ++main (void) ++{ ++ snprintf (buf, 10, "%d%d\n", 10, 10); ++ return 0; ++} ++ ++/* { dg-final { scan-assembler "mysnprintf" } } */ ++/* { dg-final { scan-assembler-not "__chk_fail" } } */ +--- gcc/testsuite/g++.dg/ext/builtin10.C.jj 2007-10-02 11:19:45.000000000 +0200 ++++ gcc/testsuite/g++.dg/ext/builtin10.C 2007-10-02 11:23:26.000000000 +0200 +@@ -0,0 +1,27 @@ ++// { dg-do compile } ++// { dg-options "-O2" } ++ ++typedef __SIZE_TYPE__ size_t; ++extern "C" { ++extern void __chk_fail (void); ++extern int snprintf (char *, size_t, const char *, ...); ++extern inline __attribute__((gnu_inline, always_inline)) int snprintf (char *a, size_t b, const char *fmt, ...) ++{ ++ if (__builtin_object_size (a, 0) != -1UL && __builtin_object_size (a, 0) < b) ++ __chk_fail (); ++ return __builtin_snprintf (a, b, fmt, __builtin_va_arg_pack ()); ++} ++extern int snprintf (char *, size_t, const char *, ...) __asm ("mysnprintf"); ++} ++ ++char buf[10]; ++ ++int ++main (void) ++{ ++ snprintf (buf, 10, "%d%d\n", 10, 10); ++ return 0; ++} ++ ++// { dg-final { scan-assembler "mysnprintf" } } ++// { dg-final { scan-assembler-not "__chk_fail" } } diff --git a/src/patches/gcc/gcc44-i386-libgomp.patch b/src/patches/gcc/gcc44-i386-libgomp.patch new file mode 100644 index 0000000..5d1eea8 --- /dev/null +++ b/src/patches/gcc/gcc44-i386-libgomp.patch @@ -0,0 +1,61 @@ +Build i386.rpm libgomp and libsupc++.a(guard.o) as i486+, pre-i486 +hardware isn't supported because NPTL doesn't support it anyway. + +--- libgomp/configure.tgt.jj 2008-01-10 20:53:48.000000000 +0100 ++++ libgomp/configure.tgt 2008-03-27 12:44:51.000000000 +0100 +@@ -44,14 +44,14 @@ if test $enable_linux_futex = yes; then + ;; + + # Note that bare i386 is not included here. We need cmpxchg. +- i[456]86-*-linux*) ++ i[3456]86-*-linux*) + config_path="linux/x86 linux posix" + case " ${CC} ${CFLAGS} " in + *" -m64 "*) + ;; + *) + if test -z "$with_arch"; then +- XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}" ++ XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic" + fi + esac + ;; +@@ -63,7 +63,7 @@ if test $enable_linux_futex = yes; then + config_path="linux/x86 linux posix" + case " ${CC} ${CFLAGS} " in + *" -m32 "*) +- XCFLAGS="${XCFLAGS} -march=i486 -mtune=i686" ++ XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic" + ;; + esac + ;; +--- libstdc++-v3/libsupc++/guard.cc.jj 2008-03-01 00:58:24.000000000 +0100 ++++ libstdc++-v3/libsupc++/guard.cc 2008-03-27 14:08:44.000000000 +0100 +@@ -35,6 +35,27 @@ + #include <new> + #include <ext/atomicity.h> + #include <ext/concurrence.h> ++#if defined __i386__ && !defined _GLIBCXX_ATOMIC_BUILTINS_4 ++# define _GLIBCXX_ATOMIC_BUILTINS_4 1 ++# define __sync_val_compare_and_swap(a, b, c) \ ++ ({ \ ++ typedef char sltast[sizeof (*a) == sizeof (int) ? 1 : -1]; \ ++ int sltas; \ ++ __asm __volatile ("lock; cmpxchgl %3, (%1)" \ ++ : "=a" (sltas) \ ++ : "r" (a), "0" (b), "r" (c) : "memory"); \ ++ sltas; \ ++ }) ++# define __sync_lock_test_and_set(a, b) \ ++ ({ \ ++ typedef char sltast[sizeof (*a) == sizeof (int) ? 1 : -1]; \ ++ int sltas; \ ++ __asm __volatile ("xchgl (%1), %0" \ ++ : "=r" (sltas) \ ++ : "r" (a), "0" (b) : "memory"); \ ++ sltas; \ ++ }) ++#endif + #if defined(__GTHREADS) && defined(__GTHREAD_HAS_COND) \ + && defined(_GLIBCXX_ATOMIC_BUILTINS_4) && defined(_GLIBCXX_HAVE_LINUX_FUTEX) + # include <climits> diff --git a/src/patches/gcc/gcc44-libtool-no-rpath.patch b/src/patches/gcc/gcc44-libtool-no-rpath.patch new file mode 100644 index 0000000..466c661 --- /dev/null +++ b/src/patches/gcc/gcc44-libtool-no-rpath.patch @@ -0,0 +1,27 @@ +libtool sucks. +--- ltmain.sh.jj 2007-12-07 14:53:21.000000000 +0100 ++++ ltmain.sh 2008-09-05 21:51:48.000000000 +0200 +@@ -5394,6 +5394,7 @@ EOF + rpath="$finalize_rpath" + test "$mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $rpath; do ++ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then +@@ -6071,6 +6072,7 @@ EOF + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do ++ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then +@@ -6120,6 +6122,7 @@ EOF + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do ++ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then diff --git a/src/patches/gcc/gcc44-no-add-needed.patch b/src/patches/gcc/gcc44-no-add-needed.patch new file mode 100644 index 0000000..4570c0c --- /dev/null +++ b/src/patches/gcc/gcc44-no-add-needed.patch @@ -0,0 +1,52 @@ +2010-02-08 Roland McGrath roland@redhat.com + + * config/rs6000/sysv4.h (LINK_EH_SPEC): Pass --no-add-needed to the + linker. + * config/linux.h (LINK_EH_SPEC): Likewise. + * config/alpha/elf.h (LINK_EH_SPEC): Likewise. + * config/ia64/linux.h (LINK_EH_SPEC): Likewise. + +--- gcc/config/alpha/elf.h.~1~ ++++ gcc/config/alpha/elf.h +@@ -421,7 +421,7 @@ extern int alpha_this_gpdisp_sequence_nu + I imagine that other systems will catch up. In the meantime, it + doesn't harm to make sure that the data exists to be used later. */ + #if defined(HAVE_LD_EH_FRAME_HDR) +-#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} " ++#define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} %{!r:--build-id} " + #endif + + /* A C statement (sans semicolon) to output to the stdio stream STREAM +--- gcc/config/ia64/linux.h.~1~ ++++ gcc/config/ia64/linux.h +@@ -58,7 +58,7 @@ do { \ + Signalize that because we have fde-glibc, we don't need all C shared libs + linked against -lgcc_s. */ + #undef LINK_EH_SPEC +-#define LINK_EH_SPEC "%{!r:--build-id} " ++#define LINK_EH_SPEC "--no-add-needed %{!r:--build-id} " + + #define MD_UNWIND_SUPPORT "config/ia64/linux-unwind.h" + +--- gcc/config/linux.h.~1~ ++++ gcc/config/linux.h +@@ -89,7 +89,7 @@ see the files COPYING3 and COPYING.RUNTI + } while (0) + + #if defined(HAVE_LD_EH_FRAME_HDR) +-#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} " ++#define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} %{!r:--build-id} " + #endif + + /* Define this so we can compile MS code for use with WINE. */ +--- gcc/config/rs6000/sysv4.h.~1~ ++++ gcc/config/rs6000/sysv4.h +@@ -917,7 +917,7 @@ SVR4_ASM_SPEC \ + %{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER "}}}" + + #if defined(HAVE_LD_EH_FRAME_HDR) +-# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} " ++# define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} %{!r:--build-id} " + #endif + + #define CPP_OS_LINUX_SPEC "-D__unix__ -D__gnu_linux__ -D__linux__ \ diff --git a/src/patches/gcc/gcc44-pr33763.patch b/src/patches/gcc/gcc44-pr33763.patch new file mode 100644 index 0000000..86c8ac7 --- /dev/null +++ b/src/patches/gcc/gcc44-pr33763.patch @@ -0,0 +1,153 @@ +2007-11-06 Jakub Jelinek jakub@redhat.com + + PR tree-optimization/33763 + * gcc.dg/pr33763.c: New test. + * g++.dg/opt/inline13.C: New test. + +2007-11-06 Jan Hubicka jh@suse.cz + + PR tree-optimization/33763 + * tree-inline.c (expand_call_inline): Silently ignore always_inline + attribute for redefined extern inline functions. + +--- gcc/tree-inline.c.jj 2007-11-06 09:29:04.000000000 +0100 ++++ gcc/tree-inline.c 2007-11-06 16:19:12.000000000 +0100 +@@ -3157,6 +3157,12 @@ expand_call_inline (basic_block bb, gimp + goto egress; + + if (lookup_attribute ("always_inline", DECL_ATTRIBUTES (fn)) ++ /* For extern inline functions that get redefined we always ++ silently ignored alway_inline flag. Better behaviour would ++ be to be able to keep both bodies and use extern inline body ++ for inlining, but we can't do that because frontends overwrite ++ the body. */ ++ && !cg_edge->callee->local.redefined_extern_inline + /* Avoid warnings during early inline pass. */ + && cgraph_global_info_ready) + { +--- gcc/testsuite/gcc.dg/pr33763.c.jj 2007-11-06 16:19:12.000000000 +0100 ++++ gcc/testsuite/gcc.dg/pr33763.c 2007-11-06 16:19:12.000000000 +0100 +@@ -0,0 +1,60 @@ ++/* PR tree-optimization/33763 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++typedef struct ++{ ++ void *a; ++ void *b; ++} T; ++extern void *foo (const char *, const char *); ++extern void *bar (void *, const char *, T); ++extern int baz (const char *, int); ++ ++extern inline __attribute__ ((always_inline, gnu_inline)) int ++baz (const char *x, int y) ++{ ++ return 2; ++} ++ ++int ++baz (const char *x, int y) ++{ ++ return 1; ++} ++ ++int xa, xb; ++ ++static void * ++inl (const char *x, const char *y) ++{ ++ T t = { &xa, &xb }; ++ int *f = (int *) __builtin_malloc (sizeof (int)); ++ const char *z; ++ int o = 0; ++ void *r = 0; ++ ++ for (z = y; *z; z++) ++ { ++ if (*z == 'r') ++ o |= 1; ++ if (*z == 'w') ++ o |= 2; ++ } ++ if (o == 1) ++ *f = baz (x, 0); ++ if (o == 2) ++ *f = baz (x, 1); ++ if (o == 3) ++ *f = baz (x, 2); ++ ++ if (o && *f > 0) ++ r = bar (f, "w", t); ++ return r; ++} ++ ++void * ++foo (const char *x, const char *y) ++{ ++ return inl (x, y); ++} +--- gcc/testsuite/g++.dg/opt/inline13.C.jj 2007-11-06 16:20:20.000000000 +0100 ++++ gcc/testsuite/g++.dg/opt/inline13.C 2007-11-06 16:21:30.000000000 +0100 +@@ -0,0 +1,60 @@ ++// PR tree-optimization/33763 ++// { dg-do compile } ++// { dg-options "-O2" } ++ ++typedef struct ++{ ++ void *a; ++ void *b; ++} T; ++extern void *foo (const char *, const char *); ++extern void *bar (void *, const char *, T); ++extern int baz (const char *, int); ++ ++extern inline __attribute__ ((always_inline, gnu_inline)) int ++baz (const char *x, int y) ++{ ++ return 2; ++} ++ ++int ++baz (const char *x, int y) ++{ ++ return 1; ++} ++ ++int xa, xb; ++ ++static void * ++inl (const char *x, const char *y) ++{ ++ T t = { &xa, &xb }; ++ int *f = (int *) __builtin_malloc (sizeof (int)); ++ const char *z; ++ int o = 0; ++ void *r = 0; ++ ++ for (z = y; *z; z++) ++ { ++ if (*z == 'r') ++ o |= 1; ++ if (*z == 'w') ++ o |= 2; ++ } ++ if (o == 1) ++ *f = baz (x, 0); ++ if (o == 2) ++ *f = baz (x, 1); ++ if (o == 3) ++ *f = baz (x, 2); ++ ++ if (o && *f > 0) ++ r = bar (f, "w", t); ++ return r; ++} ++ ++void * ++foo (const char *x, const char *y) ++{ ++ return inl (x, y); ++} diff --git a/src/patches/gcc/gcc44-rh330771.patch b/src/patches/gcc/gcc44-rh330771.patch new file mode 100644 index 0000000..f7c365d --- /dev/null +++ b/src/patches/gcc/gcc44-rh330771.patch @@ -0,0 +1,34 @@ +2007-10-16 Jakub Jelinek jakub@redhat.com + + * Makefile.am (libgcj_tools_la_LIBADD): Add. + * Makefile.in: Regenerated. + +--- libjava/Makefile.am.jj 2009-05-06 08:14:50.000000000 +0200 ++++ libjava/Makefile.am 2009-05-06 10:26:43.000000000 +0200 +@@ -314,6 +314,8 @@ libgcj_tools_la_SOURCES = classpath/tool + libgcj_tools_la_GCJFLAGS = $(AM_GCJFLAGS) -findirect-dispatch \ + -fno-bootstrap-classes -fno-indirect-classes \ + -fsource-filename=$(here)/classpath/tools/all-classes.lst ++## See jv_convert_LDADD. ++libgcj_tools_la_LIBADD = -L$(here)/.libs libgcj.la + libgcj_tools_la_LDFLAGS = -rpath $(toolexeclibdir) \ + -version-info `grep -v '^#' $(srcdir)/libtool-version` \ + $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) +--- libjava/Makefile.in.jj 2009-05-06 08:14:49.000000000 +0200 ++++ libjava/Makefile.in 2009-05-06 10:27:18.000000000 +0200 +@@ -160,7 +160,6 @@ am__objects_1 = gnu/gcj/xlib/lib_gnu_awt + am_lib_gnu_awt_xlib_la_OBJECTS = $(am__objects_1) + lib_gnu_awt_xlib_la_OBJECTS = $(am_lib_gnu_awt_xlib_la_OBJECTS) + @XLIB_AWT_TRUE@am_lib_gnu_awt_xlib_la_rpath = -rpath $(toolexeclibdir) +-libgcj_tools_la_LIBADD = + am_libgcj_tools_la_OBJECTS = classpath/tools/libgcj_tools_la-tools.lo + libgcj_tools_la_OBJECTS = $(am_libgcj_tools_la_OBJECTS) + @INTERPRETER_TRUE@am__DEPENDENCIES_1 = gnu/classpath/jdwp.lo \ +@@ -1041,6 +1040,7 @@ libgcj_tools_la_GCJFLAGS = $(AM_GCJFLAGS + -fno-bootstrap-classes -fno-indirect-classes \ + -fsource-filename=$(here)/classpath/tools/all-classes.lst + ++libgcj_tools_la_LIBADD = -L$(here)/.libs libgcj.la + libgcj_tools_la_LDFLAGS = -rpath $(toolexeclibdir) \ + -version-info `grep -v '^#' $(srcdir)/libtool-version` \ + $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) diff --git a/src/patches/gcc/gcc44-rh533181.patch b/src/patches/gcc/gcc44-rh533181.patch new file mode 100644 index 0000000..76326e2 --- /dev/null +++ b/src/patches/gcc/gcc44-rh533181.patch @@ -0,0 +1,153 @@ +2010-07-22 Jakub Jelinek jakub@redhat.com + + * gimplify.c (enum gimplify_omp_var_data): Add + GOVD_THREADPRIVATE_WARNED. + (gimplify_bind_expr): Add GOVD_LOCAL | GOVD_SEEN even for global vars. + (omp_notice_threadprivate_variable): Note used threadprivate vars + with current function's context in shared clauses. + (gimplify_adjust_omp_clauses_1): Allow globals with current function's + context in taskreg shared clause. + * omp-low.c (lower_rec_input_clauses): For function-local is_global_var + VAR_DECLs in shared clauses add a decl copy with DECL_VALUE_EXPR + pointing to the original. + + * trans-openmp.c (gfc_omp_private_debug_clause): Return false for + threadprivate decls. + + * gcc.dg/gomp/tls-3.c: New test. + +--- gcc/fortran/trans-openmp.c.jj 2010-06-24 21:47:09.908230044 +0200 ++++ gcc/fortran/trans-openmp.c 2010-07-26 10:45:15.830229443 +0200 +@@ -351,6 +351,18 @@ gfc_omp_disregard_value_expr (tree decl, + bool + gfc_omp_private_debug_clause (tree decl, bool shared) + { ++ if (TREE_STATIC (decl) || DECL_EXTERNAL (decl)) ++ { ++ if (DECL_THREAD_LOCAL_P (decl)) ++ return false; ++ if (DECL_HAS_VALUE_EXPR_P (decl)) ++ { ++ tree value = get_base_address (DECL_VALUE_EXPR (decl)); ++ if (value && DECL_P (value) && DECL_THREAD_LOCAL_P (value)) ++ return false; ++ } ++ } ++ + if (GFC_DECL_CRAY_POINTEE (decl)) + return true; + +--- gcc/gimplify.c.jj 2010-07-09 09:01:37.049604412 +0200 ++++ gcc/gimplify.c 2010-07-26 10:50:05.646291216 +0200 +@@ -66,6 +66,7 @@ enum gimplify_omp_var_data + GOVD_LOCAL = 128, + GOVD_DEBUG_PRIVATE = 256, + GOVD_PRIVATE_OUTER_REF = 512, ++ GOVD_THREADPRIVATE_WARNED = 1024, + GOVD_DATA_SHARE_CLASS = (GOVD_SHARED | GOVD_PRIVATE | GOVD_FIRSTPRIVATE + | GOVD_LASTPRIVATE | GOVD_REDUCTION | GOVD_LOCAL) + }; +@@ -1234,7 +1235,7 @@ gimplify_bind_expr (tree *expr_p, gimple + struct gimplify_omp_ctx *ctx = gimplify_omp_ctxp; + + /* Mark variable as local. */ +- if (ctx && !is_global_var (t) ++ if (ctx + && (! DECL_SEEN_IN_BIND_EXPR_P (t) + || splay_tree_lookup (ctx->variables, + (splay_tree_key) t) == NULL)) +@@ -5339,18 +5340,36 @@ omp_notice_threadprivate_variable (struc + { + splay_tree_node n; + +- if (ctx->region_type != ORT_UNTIED_TASK) ++ while (ctx && ctx->region_type == ORT_WORKSHARE) ++ { ++ n = splay_tree_lookup (ctx->variables, (splay_tree_key)decl); ++ if (n != NULL) ++ { ++ gcc_assert (n->value & GOVD_LOCAL); ++ return false; ++ } ++ ctx = ctx->outer_context; ++ } ++ if (ctx == NULL) + return false; ++ + n = splay_tree_lookup (ctx->variables, (splay_tree_key)decl); + if (n == NULL) ++ n = splay_tree_insert (ctx->variables, (splay_tree_key)decl, ++ DECL_CONTEXT (decl) == current_function_decl ++ ? GOVD_SHARED | GOVD_SEEN : 0); ++ if (ctx->region_type == ORT_UNTIED_TASK ++ && (n->value & GOVD_THREADPRIVATE_WARNED) == 0) + { + error ("threadprivate variable %qs used in untied task", + IDENTIFIER_POINTER (DECL_NAME (decl))); + error ("%Henclosing task", &ctx->location); +- splay_tree_insert (ctx->variables, (splay_tree_key)decl, 0); ++ n->value |= GOVD_THREADPRIVATE_WARNED; + } + if (decl2) +- splay_tree_insert (ctx->variables, (splay_tree_key)decl2, 0); ++ splay_tree_insert (ctx->variables, (splay_tree_key)decl2, ++ DECL_CONTEXT (decl2) == current_function_decl ++ ? GOVD_SHARED | GOVD_SEEN : 0); + return false; + } + +@@ -5779,7 +5798,9 @@ gimplify_adjust_omp_clauses_1 (splay_tre + break; + ctx = ctx->outer_context; + } +- if (ctx == NULL) ++ if (ctx == NULL ++ && (DECL_CONTEXT (decl) != current_function_decl ++ || gimplify_omp_ctxp->region_type == ORT_WORKSHARE)) + return 0; + } + code = OMP_CLAUSE_SHARED; +--- gcc/omp-low.c.jj 2010-06-11 11:06:00.913659301 +0200 ++++ gcc/omp-low.c 2010-07-26 10:45:15.866229447 +0200 +@@ -2222,6 +2222,17 @@ lower_rec_input_clauses (tree clauses, g + continue; + break; + case OMP_CLAUSE_SHARED: ++ if (pass == 0 ++ && is_global_var (OMP_CLAUSE_DECL (c)) ++ && (DECL_CONTEXT (OMP_CLAUSE_DECL (c)) ++ == current_function_decl) ++ && is_taskreg_ctx (ctx) ++ && !DECL_IGNORED_P (OMP_CLAUSE_DECL (c))) ++ { ++ new_var = omp_copy_decl_1 (OMP_CLAUSE_DECL (c), ctx); ++ SET_DECL_VALUE_EXPR (new_var, OMP_CLAUSE_DECL (c)); ++ DECL_HAS_VALUE_EXPR_P (new_var) = 1; ++ } + if (maybe_lookup_decl (OMP_CLAUSE_DECL (c), ctx) == NULL) + { + gcc_assert (is_global_var (OMP_CLAUSE_DECL (c))); +--- gcc/testsuite/gcc.dg/gomp/tls-3.c.jj 2010-07-26 10:45:15.868228753 +0200 ++++ gcc/testsuite/gcc.dg/gomp/tls-3.c 2010-07-26 10:45:15.868228753 +0200 +@@ -0,0 +1,21 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target tls_native } */ ++ ++int thr; ++#pragma omp threadprivate(thr) ++ ++void ++foo (void) ++{ ++ #pragma omp task untied /* { dg-error "enclosing task" } */ ++ { ++ static int thr2; ++ #pragma omp threadprivate(thr2) ++ static int thr3; ++ #pragma omp threadprivate(thr3) ++ thr++; /* { dg-error "used in untied task" } */ ++ thr2++; /* { dg-error "used in untied task" } */ ++ thr++; ++ thr2++; ++ } ++} diff --git a/src/patches/gcc/gcc44-rh610785.patch b/src/patches/gcc/gcc44-rh610785.patch new file mode 100644 index 0000000..91d0934 --- /dev/null +++ b/src/patches/gcc/gcc44-rh610785.patch @@ -0,0 +1,74 @@ +2010-07-07 Jakub Jelinek jakub@redhat.com + + * tree-sra.c (sra_build_assignment): Don't add BIT_XOR_EXPR/MINUS_EXPR + of signbit if signbit is the most significant bit of utype already. + + * gcc.c-torture/execute/20100707-1.c: New test. + +--- gcc/tree-sra.c.jj 2010-05-13 13:08:52.000000000 +0200 ++++ gcc/tree-sra.c 2010-07-06 19:50:09.000000000 +0200 +@@ -2211,7 +2211,10 @@ sra_build_assignment (tree dst, tree src + + /* Perform sign extension, if required. + ??? This should never be necessary. */ +- if (!unsignedp) ++ if (!unsignedp ++ && (TREE_INT_CST_LOW (width) != TYPE_PRECISION (utype) ++ || (TREE_INT_CST_LOW (width) ++ != GET_MODE_BITSIZE (TYPE_MODE (utype))))) + { + tree signbit = int_const_binop (LSHIFT_EXPR, + build_int_cst_wide (utype, 1, 0), +--- gcc/testsuite/gcc.c-torture/execute/20100707-1.c 2010-05-27 15:41:40.446237053 +0200 ++++ gcc/testsuite/gcc.c-torture/execute/20100707-1.c 2010-07-06 13:55:35.000000000 +0200 +@@ -0,0 +1,50 @@ ++struct S { int s; }; ++struct T { int w; int h; }; ++int vr; ++ ++inline struct T ++bar (const struct S * x) ++{ ++ struct T t; ++ t.w = vr; ++ t.h = x->s; ++ return t; ++} ++ ++__attribute__ ((noinline)) ++void foo (struct S * w, unsigned char *x, int y, int *z[2]) ++{ ++ struct T t; ++ int i, j, k; ++ t = bar (w); ++ k = t.w + 2; ++ for (i = 0; i <= t.h; i++) ++ { ++ int *u = z[i > 0] + 1; ++ unsigned char *v; ++ int q = 0; ++ v = x + k * i + 1; ++ for (j = 0; j < t.w; j++) ++ { ++ int m = u[j]; ++ if (m > y && !q && v[j - k] != 2) ++ v[j] = 0; ++ } ++ } ++} ++ ++unsigned char b[64]; ++ ++int ++main (void) ++{ ++ int v[32], *z[2]; ++ struct S s; ++ __builtin_memset (v, 0, sizeof (v)); ++ vr = 16; ++ s.s = 16; ++ z[0] = v; ++ z[1] = v; ++ foo (&s, b + 32, -1, z); ++ return 0; ++} diff --git a/src/patches/gcc/gcc44-unwind-debug-hook.patch b/src/patches/gcc/gcc44-unwind-debug-hook.patch new file mode 100644 index 0000000..9b7c59e --- /dev/null +++ b/src/patches/gcc/gcc44-unwind-debug-hook.patch @@ -0,0 +1,51 @@ +2010-04-27 Jakub Jelinek jakub@redhat.com + + * unwind-dw2.c (_Unwind_DebugHook): Add used attribute. + +2009-05-27 Tom Tromey tromey@redhat.com + + * unwind-dw2.c (_Unwind_DebugHook): New function. + (uw_install_context): Call _Unwind_DebugHook. + +--- gcc/unwind-dw2.c (revision 147933) ++++ gcc/unwind-dw2.c (revision 147934) +@@ -1473,18 +1473,32 @@ uw_init_context_1 (struct _Unwind_Contex + context->ra = __builtin_extract_return_addr (outer_ra); + } + ++static void _Unwind_DebugHook (void *, void *) ++ __attribute__ ((__noinline__, __used__)); ++ ++/* This function is called during unwinding. It is intended as a hook ++ for a debugger to intercept exceptions. CFA is the CFA of the ++ target frame. HANDLER is the PC to which control will be ++ transferred. */ ++static void ++_Unwind_DebugHook (void *cfa __attribute__ ((__unused__)), ++ void *handler __attribute__ ((__unused__))) ++{ ++ asm (""); ++} + + /* Install TARGET into CURRENT so that we can return to it. This is a + macro because __builtin_eh_return must be invoked in the context of + our caller. */ + +-#define uw_install_context(CURRENT, TARGET) \ +- do \ +- { \ +- long offset = uw_install_context_1 ((CURRENT), (TARGET)); \ +- void *handler = __builtin_frob_return_addr ((TARGET)->ra); \ +- __builtin_eh_return (offset, handler); \ +- } \ ++#define uw_install_context(CURRENT, TARGET) \ ++ do \ ++ { \ ++ long offset = uw_install_context_1 ((CURRENT), (TARGET)); \ ++ void *handler = __builtin_frob_return_addr ((TARGET)->ra); \ ++ _Unwind_DebugHook ((TARGET)->cfa, handler); \ ++ __builtin_eh_return (offset, handler); \ ++ } \ + while (0) + + static long diff --git a/src/patches/glibc-cfi-entry-not-closed.patch b/src/patches/glibc-cfi-entry-not-closed.patch new file mode 100644 index 0000000..02cfe8f --- /dev/null +++ b/src/patches/glibc-cfi-entry-not-closed.patch @@ -0,0 +1,23 @@ +--- glibc-2.12.2/ports/sysdeps/unix/sysv/linux/arm/sigrestorer.S 2011-09-08 22:22:41.000000000 +0400 ++++ glibc-2.12.2/ports/sysdeps/unix/sysv/linux/arm/sigrestorer.S 2011-09-08 21:44:49.000000000 +0400 +@@ -18,16 +18,20 @@ + + #include <sysdep.h> + ++ .text ++ + /* If no SA_RESTORER function was specified by the application we use + one of these. This avoids the need for the kernel to synthesise a return + instruction on the stack, which would involve expensive cache flushes. */ + + ENTRY(__default_sa_restorer) + swi SYS_ify(sigreturn) ++PSEUDO_END (__default_sa_restorer) + + #ifdef __NR_rt_sigreturn + + ENTRY(__default_rt_sa_restorer) + swi SYS_ify(rt_sigreturn) ++PSEUDO_END (__default_rt_sa_restorer) + + #endif diff --git a/src/patches/glibc-ports-avoid-using-asm-procinfo.patch b/src/patches/glibc-ports-avoid-using-asm-procinfo.patch deleted file mode 100644 index 53a6d1b..0000000 --- a/src/patches/glibc-ports-avoid-using-asm-procinfo.patch +++ /dev/null @@ -1,340 +0,0 @@ -# -# Submitted-By: Marc Kleine-Budde, 2006-11-22 -# Committed-By: Marc Kleine-Budde -# -# Error: -# -# try to compile glibc-ports with sanitized headers -# -# arm-v4t-linux-gnueabi-gcc ../ports/sysdeps/arm/eabi/setfpucw.c -c -#-std=gnu99 -O2 -Wall -Winline -Wwrite-strings -fmerge-all-constants -#-g -Wstrict-prototypes -Wno-uninitialized -D__NO_MATH_INLINES -#-D__LIBC_INTERNAL_MATH_INLINES -DNO_LONG_DOUBLE -#-D_Mlong_double_=double -I../include -#-I/home/mkl/pengutronix/ptxdist/build/OSELAS.Toolchain-trunk-headers/build-target/glibc-2.5-build/math -#-I/home/mkl/pengutronix/ptxdist/build/OSELAS.Toolchain-trunk-headers/build-target/glibc-2.5-build -#-I../ports/sysdeps/arm/elf -#-I../ports/sysdeps/unix/sysv/linux/arm/eabi/nptl -#-I../ports/sysdeps/unix/sysv/linux/arm/eabi -#-I../ports/sysdeps/unix/sysv/linux/arm/nptl -#-I../ports/sysdeps/unix/sysv/linux/arm -#-I../ports/sysdeps/unix/sysv/linux -I../nptl/sysdeps/unix/sysv/linux -#-I../nptl/sysdeps/pthread -I../sysdeps/pthread -#-I../sysdeps/unix/sysv/linux -I../sysdeps/gnu -#-I../sysdeps/unix/common -I../sysdeps/unix/mman -#-I../sysdeps/unix/inet -I../ports/sysdeps/unix/sysv -#-I../nptl/sysdeps/unix/sysv -I../sysdeps/unix/sysv -#-I../ports/sysdeps/unix/arm -I../ports/sysdeps/unix -#-I../nptl/sysdeps/unix -I../sysdeps/unix -I../sysdeps/posix -#-I../ports/sysdeps/arm/eabi -I../ports/sysdeps/arm/nptl -#-I../ports/sysdeps/arm -I../sysdeps/wordsize-32 -#-I../sysdeps/ieee754/flt-32 -I../sysdeps/ieee754/dbl-64 -#-I../sysdeps/ieee754 -I../sysdeps/generic/elf -I../sysdeps/generic -#-I../ports -I../nptl -I.. -I../libio -I. -nostdinc -isystem -#/ptx/work/mkl/ptxdist/build/OSELAS.Toolchain-trunk-headers/install/arm-v4t-linux-gnueabi/gcc-4.1.1-glibc-2.5-linux-2.6.19-rc6-s/bin/../lib/gcc/arm-v4t-linux-gnueabi/4.1.1/include -#-isystem -#/home/mkl/pengutronix/ptxdist/build/OSELAS.Toolchain-trunk-headers/install/arm-v4t-linux-gnueabi/gcc-4.1.1-glibc-2.5-linux-2.6.19-rc6-s/sysroot-arm-v4t-linux-gnueabi/usr/include -#-D_LIBC_REENTRANT -include ../include/libc-symbols.h -o -#/home/mkl/pengutronix/ptxdist/build/OSELAS.Toolchain-trunk-headers/build-target/glibc-2.5-build/math/setfpucw.o -#-MD -MP -MF -#/home/mkl/pengutronix/ptxdist/build/OSELAS.Toolchain-trunk-headers/build-target/glibc-2.5-build/math/setfpucw.o.dt -#-MT -#/home/mkl/pengutronix/ptxdist/build/OSELAS.Toolchain-trunk-headers/build-target/glibc-2.5-build/math/setfpucw.o -# ../ports/sysdeps/arm/eabi/setfpucw.c:26:26: error: asm/procinfo.h: No such file or directory -# ../ports/sysdeps/arm/eabi/setfpucw.c: In function '__setfpucw': -# ../ports/sysdeps/arm/eabi/setfpucw.c:31: error: 'HWCAP_VFP' undeclared (first use in this function) -# ../ports/sysdeps/arm/eabi/setfpucw.c:31: error: (Each undeclared identifier is reported only once -# ../ports/sysdeps/arm/eabi/setfpucw.c:31: error: for each function it appears in.) -# -# Description: -# -# http://sourceware.org/ml/libc-ports/2006-10/msg00040.html -# -# State: -# -# added to glibc-ports on 10/31/2006 06:20 PM -# -Date: Tue, 24 Oct 2006 19:25:12 +0000 (UTC) -From: "Joseph S. Myers" joseph@codesourcery.com -To: libc-ports@sourceware.org -Subject: Avoid using asm/procinfo.h - -I previously noted -http://sourceware.org/ml/libc-ports/2006-08/msg00023.html that the -use of <asm/procinfo.h>, a Linux-specific kernel header, in -sysdeps/arm/eabi, is an abstraction violation, and that in principle -all the files in sysdeps/arm/eabi should use sysdep.h not -asm/procinfo.h for HWCAP_VFP. - -The ARM kernel maintainers have now declared that <asm/procinfo.h> -should not be used outside the kernel at all (and in particular that -headers_install is correct in not exporting it), and that these -definitions will move to a different kernel header. This gives a -concrete reason for making the change to use glibc's internal -definitions, which this patch does, thereby allowing glibc to build -with the exported headers. - -2006-10-24 Joseph S. Myers joseph@codesourcery.com - - * sysdeps/arm/eabi/fclrexcpt.c: Include <sysdep.h> instead of - <asm/procinfo.h>. Use HWCAP_ARM_VFP instead of HWCAP_VFP. - * sysdeps/arm/eabi/fedisblxcpt.c: Likewise. - * sysdeps/arm/eabi/feenablxcpt.c: Likewise. - * sysdeps/arm/eabi/fegetenv.c: Likewise. - * sysdeps/arm/eabi/fegetexcept.c: Likewise. - * sysdeps/arm/eabi/fegetround.c: Likewise. - * sysdeps/arm/eabi/feholdexcpt.c: Likewise. - * sysdeps/arm/eabi/fesetenv.c: Likewise. - * sysdeps/arm/eabi/fesetround.c: Likewise. - * sysdeps/arm/eabi/fraiseexcpt.c: Likewise. - * sysdeps/arm/eabi/fsetexcptflg.c: Likewise. - * sysdeps/arm/eabi/ftestexcept.c: Likewise. - * sysdeps/arm/eabi/setfpucw.c: Likewise. - -Index: glibc-ports-2.5/sysdeps/arm/eabi/fclrexcpt.c -=================================================================== ---- glibc-ports-2.5.orig/sysdeps/arm/eabi/fclrexcpt.c -+++ glibc-ports-2.5/sysdeps/arm/eabi/fclrexcpt.c -@@ -23,12 +23,12 @@ - #include <unistd.h> - #include <ldsodefs.h> - #include <dl-procinfo.h> --#include <asm/procinfo.h> -+#include <sysdep.h> - - int - __feclearexcept (int excepts) - { -- if (GLRO (dl_hwcap) & HWCAP_VFP) -+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP) - { - unsigned long int temp; - -Index: glibc-ports-2.5/sysdeps/arm/eabi/fedisblxcpt.c -=================================================================== ---- glibc-ports-2.5.orig/sysdeps/arm/eabi/fedisblxcpt.c -+++ glibc-ports-2.5/sysdeps/arm/eabi/fedisblxcpt.c -@@ -24,12 +24,12 @@ - #include <unistd.h> - #include <ldsodefs.h> - #include <dl-procinfo.h> --#include <asm/procinfo.h> -+#include <sysdep.h> - - int - fedisableexcept (int excepts) - { -- if (GLRO (dl_hwcap) & HWCAP_VFP) -+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP) - { - unsigned long int new_exc, old_exc; - -Index: glibc-ports-2.5/sysdeps/arm/eabi/feenablxcpt.c -=================================================================== ---- glibc-ports-2.5.orig/sysdeps/arm/eabi/feenablxcpt.c -+++ glibc-ports-2.5/sysdeps/arm/eabi/feenablxcpt.c -@@ -24,12 +24,12 @@ - #include <unistd.h> - #include <ldsodefs.h> - #include <dl-procinfo.h> --#include <asm/procinfo.h> -+#include <sysdep.h> - - int - feenableexcept (int excepts) - { -- if (GLRO (dl_hwcap) & HWCAP_VFP) -+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP) - { - unsigned long int new_exc, old_exc; - -Index: glibc-ports-2.5/sysdeps/arm/eabi/fegetenv.c -=================================================================== ---- glibc-ports-2.5.orig/sysdeps/arm/eabi/fegetenv.c -+++ glibc-ports-2.5/sysdeps/arm/eabi/fegetenv.c -@@ -23,12 +23,12 @@ - #include <unistd.h> - #include <ldsodefs.h> - #include <dl-procinfo.h> --#include <asm/procinfo.h> -+#include <sysdep.h> - - int - __fegetenv (fenv_t *envp) - { -- if (GLRO (dl_hwcap) & HWCAP_VFP) -+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP) - { - unsigned long int temp; - _FPU_GETCW (temp); -Index: glibc-ports-2.5/sysdeps/arm/eabi/fegetexcept.c -=================================================================== ---- glibc-ports-2.5.orig/sysdeps/arm/eabi/fegetexcept.c -+++ glibc-ports-2.5/sysdeps/arm/eabi/fegetexcept.c -@@ -24,12 +24,12 @@ - #include <unistd.h> - #include <ldsodefs.h> - #include <dl-procinfo.h> --#include <asm/procinfo.h> -+#include <sysdep.h> - - int - fegetexcept (void) - { -- if (GLRO (dl_hwcap) & HWCAP_VFP) -+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP) - { - unsigned long temp; - -Index: glibc-ports-2.5/sysdeps/arm/eabi/fegetround.c -=================================================================== ---- glibc-ports-2.5.orig/sysdeps/arm/eabi/fegetround.c -+++ glibc-ports-2.5/sysdeps/arm/eabi/fegetround.c -@@ -23,12 +23,12 @@ - #include <unistd.h> - #include <ldsodefs.h> - #include <dl-procinfo.h> --#include <asm/procinfo.h> -+#include <sysdep.h> - - int - fegetround (void) - { -- if (GLRO (dl_hwcap) & HWCAP_VFP) -+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP) - { - unsigned int temp; - -Index: glibc-ports-2.5/sysdeps/arm/eabi/feholdexcpt.c -=================================================================== ---- glibc-ports-2.5.orig/sysdeps/arm/eabi/feholdexcpt.c -+++ glibc-ports-2.5/sysdeps/arm/eabi/feholdexcpt.c -@@ -23,12 +23,12 @@ - #include <unistd.h> - #include <ldsodefs.h> - #include <dl-procinfo.h> --#include <asm/procinfo.h> -+#include <sysdep.h> - - int - feholdexcept (fenv_t *envp) - { -- if (GLRO (dl_hwcap) & HWCAP_VFP) -+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP) - { - unsigned long int temp; - -Index: glibc-ports-2.5/sysdeps/arm/eabi/fesetenv.c -=================================================================== ---- glibc-ports-2.5.orig/sysdeps/arm/eabi/fesetenv.c -+++ glibc-ports-2.5/sysdeps/arm/eabi/fesetenv.c -@@ -23,12 +23,12 @@ - #include <unistd.h> - #include <ldsodefs.h> - #include <dl-procinfo.h> --#include <asm/procinfo.h> -+#include <sysdep.h> - - int - __fesetenv (const fenv_t *envp) - { -- if (GLRO (dl_hwcap) & HWCAP_VFP) -+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP) - { - unsigned int temp; - -Index: glibc-ports-2.5/sysdeps/arm/eabi/fesetround.c -=================================================================== ---- glibc-ports-2.5.orig/sysdeps/arm/eabi/fesetround.c -+++ glibc-ports-2.5/sysdeps/arm/eabi/fesetround.c -@@ -23,12 +23,12 @@ - #include <unistd.h> - #include <ldsodefs.h> - #include <dl-procinfo.h> --#include <asm/procinfo.h> -+#include <sysdep.h> - - int - fesetround (int round) - { -- if (GLRO (dl_hwcap) & HWCAP_VFP) -+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP) - { - fpu_control_t temp; - -Index: glibc-ports-2.5/sysdeps/arm/eabi/fraiseexcpt.c -=================================================================== ---- glibc-ports-2.5.orig/sysdeps/arm/eabi/fraiseexcpt.c -+++ glibc-ports-2.5/sysdeps/arm/eabi/fraiseexcpt.c -@@ -24,12 +24,12 @@ - #include <unistd.h> - #include <ldsodefs.h> - #include <dl-procinfo.h> --#include <asm/procinfo.h> -+#include <sysdep.h> - - int - feraiseexcept (int excepts) - { -- if (GLRO (dl_hwcap) & HWCAP_VFP) -+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP) - { - int fpscr; - const float fp_zero = 0.0, fp_one = 1.0, fp_max = FLT_MAX, -Index: glibc-ports-2.5/sysdeps/arm/eabi/fsetexcptflg.c -=================================================================== ---- glibc-ports-2.5.orig/sysdeps/arm/eabi/fsetexcptflg.c -+++ glibc-ports-2.5/sysdeps/arm/eabi/fsetexcptflg.c -@@ -24,12 +24,12 @@ - #include <unistd.h> - #include <ldsodefs.h> - #include <dl-procinfo.h> --#include <asm/procinfo.h> -+#include <sysdep.h> - - int - __fesetexceptflag (const fexcept_t *flagp, int excepts) - { -- if (GLRO (dl_hwcap) & HWCAP_VFP) -+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP) - { - fexcept_t temp; - -Index: glibc-ports-2.5/sysdeps/arm/eabi/ftestexcept.c -=================================================================== ---- glibc-ports-2.5.orig/sysdeps/arm/eabi/ftestexcept.c -+++ glibc-ports-2.5/sysdeps/arm/eabi/ftestexcept.c -@@ -23,12 +23,12 @@ - #include <unistd.h> - #include <ldsodefs.h> - #include <dl-procinfo.h> --#include <asm/procinfo.h> -+#include <sysdep.h> - - int - fetestexcept (int excepts) - { -- if (GLRO (dl_hwcap) & HWCAP_VFP) -+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP) - { - fexcept_t temp; - -Index: glibc-ports-2.5/sysdeps/arm/eabi/setfpucw.c -=================================================================== ---- glibc-ports-2.5.orig/sysdeps/arm/eabi/setfpucw.c -+++ glibc-ports-2.5/sysdeps/arm/eabi/setfpucw.c -@@ -23,12 +23,12 @@ - #include <unistd.h> - #include <ldsodefs.h> - #include <dl-procinfo.h> --#include <asm/procinfo.h> -+#include <sysdep.h> - - void - __setfpucw (fpu_control_t set) - { -- if (GLRO (dl_hwcap) & HWCAP_VFP) -+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP) - { - fpu_control_t cw; - diff --git a/src/patches/glibc-remove-ctors-dtors-output-sections.patch b/src/patches/glibc-remove-ctors-dtors-output-sections.patch new file mode 100644 index 0000000..91155c9 --- /dev/null +++ b/src/patches/glibc-remove-ctors-dtors-output-sections.patch @@ -0,0 +1,150 @@ +From 4a531bb0b3b582cb693de9f76d2d97d970f9a5d5 Mon Sep 17 00:00:00 2001 +From: H.J. Lu hongjiu.lu@intel.com +Date: Fri, 24 Dec 2010 20:14:37 -0500 +Subject: [PATCH] Remove `.ctors' and `.dtors' output sections + +--- + config.h.in | 3 + + configure.in | 2 + + elf/sofini.c | 2 + + elf/soinit.c | 2 + + sysdeps/i386/init-first.c | 2 + + sysdeps/mach/hurd/i386/init-first.c | 2 +- + sysdeps/mach/hurd/powerpc/init-first.c | 2 +- + sysdeps/sh/init-first.c | 2 + + sysdeps/unix/sysv/linux/init-first.c | 2 +- + 9 files changed, 16 insertions(+), 3 deletions(-) + +diff --git a/config.h.in b/config.h.in +index 18bf01a..9e797eb 100644 +--- a/config.h.in ++++ b/config.h.in +@@ -201,6 +201,9 @@ + /* Define if multi-arch DSOs should be generated. */ + #undef USE_MULTIARCH + ++/* Define if `.ctors' and `.dtors' sections shouldn't be used. */ ++#undef NO_CTORS_DTORS_SECTIONS ++ + /* + */ + +diff --git a/configure.in b/configure.in +index d8cd5f1..ad25b9b 100644 +--- a/configure.in ++++ b/configure.in +@@ -1497,6 +1497,8 @@ EOF + rm -f conftest*]) + if test $libc_cv_initfini_array != yes; then + AC_MSG_ERROR([Need linker with .init_array/.fini_array support.]) ++ elif AC_TRY_COMMAND([${CC-cc} -Wl,--verbose 2>&1|grep SORT_BY_INIT_PRIORITY 1>&AS_MESSAGE_LOG_FD]); then ++ AC_DEFINE(NO_CTORS_DTORS_SECTIONS) + fi + + AC_CACHE_CHECK(for libunwind-support in compiler, +diff --git a/elf/sofini.c b/elf/sofini.c +index 5e06f0c..13e74b7 100644 +--- a/elf/sofini.c ++++ b/elf/sofini.c +@@ -1,12 +1,14 @@ + /* Finalizer module for ELF shared C library. This provides terminating + null pointer words in the `.ctors' and `.dtors' sections. */ + ++#ifndef NO_CTORS_DTORS_SECTIONS + static void (*const __CTOR_END__[1]) (void) + __attribute__ ((used, section (".ctors"))) + = { 0 }; + static void (*const __DTOR_END__[1]) (void) + __attribute__ ((used, section (".dtors"))) + = { 0 }; ++#endif + + /* Terminate the frame unwind info section with a 4byte 0 as a sentinel; + this would be the 'length' field in a real FDE. */ +diff --git a/elf/soinit.c b/elf/soinit.c +index 6fecbb5..1db676a 100644 +--- a/elf/soinit.c ++++ b/elf/soinit.c +@@ -3,6 +3,7 @@ + the `.ctors' and `.dtors' sections so the lists are terminated, and + calling those lists of functions. */ + ++#ifndef NO_CTORS_DTORS_SECTIONS + #include <libc-internal.h> + #include <stdlib.h> + +@@ -40,3 +41,4 @@ __libc_fini (void) + + void (*_fini_ptr) (void) __attribute__ ((section (".fini_array"))) + = &__libc_fini; ++#endif +diff --git a/sysdeps/i386/init-first.c b/sysdeps/i386/init-first.c +index c6355a8..2af042f 100644 +--- a/sysdeps/i386/init-first.c ++++ b/sysdeps/i386/init-first.c +@@ -59,7 +59,9 @@ _init (int argc, ...) + { + init (&argc); + ++#ifndef NO_CTORS_DTORS_SECTIONS + __libc_global_ctors (); ++#endif + } + #endif + +diff --git a/sysdeps/mach/hurd/i386/init-first.c b/sysdeps/mach/hurd/i386/init-first.c +index f9a7a58..60823bd 100644 +--- a/sysdeps/mach/hurd/i386/init-first.c ++++ b/sysdeps/mach/hurd/i386/init-first.c +@@ -92,7 +92,7 @@ posixland_init (int argc, char **argv, char **envp) + __getopt_clean_environment (envp); + #endif + +-#ifdef SHARED ++#if defined SHARED && !defined NO_CTORS_DTORS_SECTIONS + __libc_global_ctors (); + #endif + } +diff --git a/sysdeps/mach/hurd/powerpc/init-first.c b/sysdeps/mach/hurd/powerpc/init-first.c +index 20fa1d4..21b5054 100644 +--- a/sysdeps/mach/hurd/powerpc/init-first.c ++++ b/sysdeps/mach/hurd/powerpc/init-first.c +@@ -82,7 +82,7 @@ posixland_init (int argc, char **argv, char **envp) + __getopt_clean_environment (__environ); + #endif + +-#ifdef SHARED ++#if defined SHARED && !defined NO_CTORS_DTORS_SECTIONS + __libc_global_ctors (); + #endif + } +diff --git a/sysdeps/sh/init-first.c b/sysdeps/sh/init-first.c +index d816625..1f3a821 100644 +--- a/sysdeps/sh/init-first.c ++++ b/sysdeps/sh/init-first.c +@@ -59,7 +59,9 @@ _init (int argc, ...) + { + init (&argc); + ++#ifndef NO_CTORS_DTORS_SECTIONS + __libc_global_ctors (); ++#endif + } + #endif + +diff --git a/sysdeps/unix/sysv/linux/init-first.c b/sysdeps/unix/sysv/linux/init-first.c +index 7b2333d..a60212f 100644 +--- a/sysdeps/unix/sysv/linux/init-first.c ++++ b/sysdeps/unix/sysv/linux/init-first.c +@@ -93,7 +93,7 @@ _init (int argc, char **argv, char **envp) + __getopt_clean_environment (envp); + #endif + +-#ifdef SHARED ++#if defined SHARED && !defined NO_CTORS_DTORS_SECTIONS + __libc_global_ctors (); + #endif + } +-- +1.7.3.4 + diff --git a/src/patches/glibc-resolv-stack_chk_fail.patch b/src/patches/glibc-resolv-stack_chk_fail.patch new file mode 100644 index 0000000..00bb710 --- /dev/null +++ b/src/patches/glibc-resolv-stack_chk_fail.patch @@ -0,0 +1,35 @@ +From e057a1b5930ec538c2b8abbba700a436ef2c81d5 Mon Sep 17 00:00:00 2001 +From: Joseph Myers joseph@codesourcery.com +Date: Wed, 21 Sep 2011 13:27:50 -0700 +Subject: [PATCH] Link libresolv.so with ld.so for __stack_chk_guard. + +--- + resolv/Makefile | 8 +++++++- + 1 files changed, 7 insertions(+), 1 deletions(-) + +diff --git a/resolv/Makefile b/resolv/Makefile +index ec3788f..b4287de 100644 +--- a/resolv/Makefile ++++ b/resolv/Makefile +@@ -1,4 +1,5 @@ +-# Copyright (C) 1994-2001,2003,2004,2007,2008 Free Software Foundation, Inc. ++# Copyright (C) 1994-2001,2003,2004,2007,2008,2011 ++# Free Software Foundation, Inc. + # This file is part of the GNU C Library. + + # The GNU C Library is free software; you can redistribute it and/or +@@ -88,6 +89,11 @@ CFLAGS-res_hconf.c = -fexceptions + # This ensures they will load libc.so for needed symbols if loaded by + # a statically-linked program that hasn't already loaded it. + $(objpfx)libresolv.so: $(common-objpfx)libc.so $(common-objpfx)libc_nonshared.a ++# Some hosts need '__stack_chk_guard', so pull in the definition from ++# ld.so if required. ++ifeq (yesyes,$(have-ssp)$(elf)) ++LDLIBS-resolv.so += $(as-needed) $(elfobjdir)/ld.so $(no-as-needed) ++endif + + # The DNS NSS modules needs the resolver. + $(objpfx)libnss_dns.so: $(objpfx)libresolv.so $(common-objpfx)libc.so \ +-- +1.7.3.4 + diff --git a/src/patches/glibc-test-installation.pl-libgcc_s.patch b/src/patches/glibc-test-installation.pl-libgcc_s.patch new file mode 100644 index 0000000..a63d5d8 --- /dev/null +++ b/src/patches/glibc-test-installation.pl-libgcc_s.patch @@ -0,0 +1,97 @@ +From 6e236b92765cdafb46d19e4907471699accc8269 Mon Sep 17 00:00:00 2001 +From: Siddhesh Poyarekar siddhesh@redhat.com +Date: Thu, 26 Apr 2012 09:18:48 +0530 +Subject: [PATCH] move libgcc_s soname definition to shlib-versions + +diff --git a/nptl/sysdeps/pthread/unwind-forcedunwind.c b/nptl/sysdeps/pthread/unwind-forcedunwind.c +index adce6e7..60dfbe6 100644 +--- a/nptl/sysdeps/pthread/unwind-forcedunwind.c ++++ b/nptl/sysdeps/pthread/unwind-forcedunwind.c +@@ -21,7 +21,7 @@ + #include <unwind.h> + #include <pthreadP.h> + #include <sysdep.h> +-#include <libgcc_s.h> ++#include <gnu/lib-names.h> + + static void *libgcc_s_handle; + static void (*libgcc_s_resume) (struct _Unwind_Exception *exc); +diff --git a/scripts/test-installation.pl b/scripts/test-installation.pl +index c4f3d6d..1b22086 100755 +--- a/scripts/test-installation.pl ++++ b/scripts/test-installation.pl + +@@ -105,9 +105,10 @@ while (<SOVERSIONS>) { + # - libnss1_* from glibc-compat add-on + # - libthread_db since it contains unresolved references + # - it's just a test NSS module ++ # - We don't provide the libgcc so we don't test it + if ($name ne "nss_ldap" && $name ne "db1" + && !($name =~/^nss1_/) && $name ne "thread_db" +- && $name ne "nss_test1") { ++ && $name ne "nss_test1" && $name ne "libgcc_s") { + $link_libs .= " -l$name"; + $versions{$name} = $version; + } +diff --git a/shlib-versions b/shlib-versions +index c530a44..840e08f 100644 +--- a/shlib-versions ++++ b/shlib-versions +@@ -124,3 +124,7 @@ sparc64.*-.*-.* libBrokenLocale=1 GLIBC_2.2 + + # The asynchronous name lookup library. + .*-.*-.* libanl=1 ++ ++# This defines the libgcc soname version this glibc is to load for ++# asynchronous cancellation to work correctly. ++.*-.*-.* libgcc_s=1 +diff --git a/sysdeps/generic/framestate.c b/sysdeps/generic/framestate.c +index 3638bbe..3bad5b5 100644 +--- a/sysdeps/generic/framestate.c ++++ b/sysdeps/generic/framestate.c +@@ -1,5 +1,5 @@ + /* __frame_state_for unwinder helper function wrapper. +- Copyright (C) 2001, 2003 Free Software Foundation, Inc. ++ Copyright (C) 2001-2012 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Jakub Jelinek jakub@redhat.com, 2001. + +@@ -23,7 +23,7 @@ + #define __frame_state_for fallback_frame_state_for + #include <unwind-dw2.c> + #undef __frame_state_for +-#include <libgcc_s.h> ++#include <gnu/lib-names.h> + + typedef struct frame_state * (*framesf)(void *pc, struct frame_state *); + struct frame_state *__frame_state_for (void *pc, +diff --git a/sysdeps/generic/libgcc_s.h b/sysdeps/generic/libgcc_s.h +deleted file mode 100644 +index e74a103..0000000 +--- a/sysdeps/generic/libgcc_s.h ++++ /dev/null +@@ -1,2 +0,0 @@ +-/* Name of libgcc_s library provided by gcc. */ +-#define LIBGCC_S_SO "libgcc_s.so.1" +diff --git a/sysdeps/gnu/unwind-resume.c b/sysdeps/gnu/unwind-resume.c +index 1d3e33f..6afaebd 100644 +--- a/sysdeps/gnu/unwind-resume.c ++++ b/sysdeps/gnu/unwind-resume.c +@@ -1,4 +1,4 @@ +-/* Copyright (C) 2003 Free Software Foundation, Inc. ++/* Copyright (C) 2003-2012 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Jakub Jelinek jakub@redhat.com. + +@@ -19,7 +19,7 @@ + #include <dlfcn.h> + #include <stdio.h> + #include <unwind.h> +-#include <libgcc_s.h> ++#include <gnu/lib-names.h> + + static void (*libgcc_s_resume) (struct _Unwind_Exception *exc); + static _Unwind_Reason_Code (*libgcc_s_personality) +-- +1.7.3.4 + diff --git a/src/patches/glibc-test-installation.pl-nss_test1.patch b/src/patches/glibc-test-installation.pl-nss_test1.patch new file mode 100644 index 0000000..8881d94 --- /dev/null +++ b/src/patches/glibc-test-installation.pl-nss_test1.patch @@ -0,0 +1,31 @@ +From 9191c04a7e19fffbea0a08523e579cd8e55142df Mon Sep 17 00:00:00 2001 +From: Ulrich Drepper drepper@gmail.com +Date: Sat, 23 Jul 2011 15:28:31 -0400 +Subject: [PATCH] Adjust test for correct installation + +diff --git a/scripts/test-installation.pl b/scripts/test-installation.pl +index 90cd9d7..25a919b 100755 +--- a/scripts/test-installation.pl ++++ b/scripts/test-installation.pl +@@ -1,5 +1,5 @@ + #! /usr/bin/perl -w +-# Copyright (C) 1997, 1998, 1999, 2004 Free Software Foundation, Inc. ++# Copyright (C) 1997, 1998, 1999, 2004, 2011 Free Software Foundation, Inc. + # This file is part of the GNU C Library. + # Contributed by Andreas Jaeger aj@arthur.rhein-neckar.de, 1997. + +@@ -105,8 +105,10 @@ while (<SOVERSIONS>) { + # - libdb1 since it conflicts with libdb + # - libnss1_* from glibc-compat add-on + # - libthread_db since it contains unresolved references ++ # - it's just a test NSS module + if ($name ne "nss_ldap" && $name ne "db1" +- && !($name =~/^nss1_/) && $name ne "thread_db") { ++ && !($name =~/^nss1_/) && $name ne "thread_db" ++ && $name ne "nss_test1") { + $link_libs .= " -l$name"; + $versions{$name} = $version; + } +-- +1.7.3.4 + diff --git a/src/patches/glibc/glibc-aliasing.patch b/src/patches/glibc/glibc-aliasing.patch new file mode 100644 index 0000000..016a4d4 --- /dev/null +++ b/src/patches/glibc/glibc-aliasing.patch @@ -0,0 +1,87 @@ +Index: glibc-2.12-2-gc4ccff1/elf/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/Makefile ++++ glibc-2.12-2-gc4ccff1/elf/Makefile +@@ -129,6 +129,7 @@ include ../Makeconfig + ifeq ($(unwind-find-fde),yes) + routines += unwind-dw2-fde-glibc + shared-only-routines += unwind-dw2-fde-glibc ++CFLAGS-unwind-dw2-fde-glibc.c += -fno-strict-aliasing + endif + + before-compile = $(objpfx)trusted-dirs.h +Index: glibc-2.12-2-gc4ccff1/inet/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/inet/Makefile ++++ glibc-2.12-2-gc4ccff1/inet/Makefile +@@ -57,6 +57,8 @@ tests := htontest test_ifindex tst-ntoa + + include ../Rules + ++CFLAGS-tst-inet6_rth.c += -fno-strict-aliasing ++ + ifeq ($(have-thread-library),yes) + + CFLAGS-gethstbyad_r.c = -DUSE_NSCD=1 -fexceptions +Index: glibc-2.12-2-gc4ccff1/nis/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nis/Makefile ++++ glibc-2.12-2-gc4ccff1/nis/Makefile +@@ -69,6 +69,8 @@ libnss_nisplus-inhibit-o = $(filter-out + + include ../Rules + ++CFLAGS-nis_findserv.c += -fno-strict-aliasing ++CFLAGS-ypclnt.c += -fno-strict-aliasing + + $(objpfx)libnss_compat.so: $(objpfx)libnsl.so$(libnsl.so-version) + $(objpfx)libnss_nis.so: $(objpfx)libnsl.so$(libnsl.so-version) \ +Index: glibc-2.12-2-gc4ccff1/nss/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nss/Makefile ++++ glibc-2.12-2-gc4ccff1/nss/Makefile +@@ -74,6 +74,7 @@ endif + + include ../Rules + ++CFLAGS-files-hosts.c += -fno-strict-aliasing + + ifeq (yes,$(build-static-nss)) + $(objpfx)getent: $(objpfx)libnss_files.a +Index: glibc-2.12-2-gc4ccff1/resolv/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/resolv/Makefile ++++ glibc-2.12-2-gc4ccff1/resolv/Makefile +@@ -77,6 +77,7 @@ CPPFLAGS += -Dgethostbyname=res_gethostb + -Dgetnetbyaddr=res_getnetbyaddr + + CFLAGS-res_hconf.c = -fexceptions ++CFLAGS-res_send.c += -fno-strict-aliasing + + # The BIND code elicits some harmless warnings. + +cflags += -Wno-strict-prototypes -Wno-write-strings +Index: glibc-2.12-2-gc4ccff1/sunrpc/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sunrpc/Makefile ++++ glibc-2.12-2-gc4ccff1/sunrpc/Makefile +@@ -129,6 +129,10 @@ CFLAGS-openchild.c = -fexceptions + + CPPFLAGS += -D_RPC_THREAD_SAFE_ + ++CFLAGS-clnt_tcp.c += -fno-strict-aliasing ++CFLAGS-clnt_udp.c += -fno-strict-aliasing ++CFLAGS-clnt_unix.c += -fno-strict-aliasing ++ + include ../Rules + + $(objpfx)rpcgen: $(addprefix $(objpfx),$(rpcgen-objs)) \ +Index: glibc-2.12-2-gc4ccff1/sysdeps/powerpc/powerpc64/elf/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/powerpc/powerpc64/elf/Makefile ++++ glibc-2.12-2-gc4ccff1/sysdeps/powerpc/powerpc64/elf/Makefile +@@ -9,3 +9,5 @@ CFLAGS-rtld-mempcpy.os = $(no-special-re + CFLAGS-rtld-memmove.os = $(no-special-regs) + CFLAGS-rtld-memchr.os = $(no-special-regs) + CFLAGS-rtld-strnlen.os = $(no-special-regs) ++ ++CFLAGS-gmon-start.c += -fno-strict-aliasing diff --git a/src/patches/glibc/glibc-fedora.patch b/src/patches/glibc/glibc-fedora.patch new file mode 100644 index 0000000..5a7fce9 --- /dev/null +++ b/src/patches/glibc/glibc-fedora.patch @@ -0,0 +1,2106 @@ +--- glibc-2.12-2-gc4ccff1/ChangeLog ++++ glibc-2.12-1/ChangeLog +@@ -241,6 +241,12 @@ + + * Makerules (libc-abis): Fix search for libc-abis in add-ons. + ++2010-04-06 Ulrich Drepper drepper@redhat.com ++ ++ * sysdeps/posix/getaddrinfo.c (default_scopes): Assign global ++ scope to RFC 1918 addresses. ++ * posix/gai.conf: Document difference from RFC 3484. ++ + 2010-04-05 Thomas Schwinge thomas@schwinge.name + + * sysdeps/gnu/unwind-resume.c: New, moved from nptl/sysdeps/pthread/. +@@ -995,6 +1001,19 @@ + * sysdeps/x86_64/fpu/fegetenv.c: Likewise + * sysdeps/s390/fpu/fegetenv.c: Likewise. Remove unused headers. + ++2009-10-27 Aurelien Jarno aurelien@aurel32.net ++ ++ [BZ #10855] ++ * locale/programs/locarchive.c: use MMAP_SHARED to reserve memory ++ used later with MMAP_FIXED | MMAP_SHARED to cope with different ++ alignment restrictions. ++ ++2010-02-08 Andreas Schwab schwab@redhat.com ++ ++ [BZ #11155] ++ * sysdeps/unix/sysv/linux/sparc/sparc64/fxstat.c: Include i386 ++ version. ++ + 2010-02-05 H.J. Lu hongjiu.lu@intel.com + + [BZ #11230] +@@ -2938,6 +2957,11 @@ d2009-10-30 Ulrich Drepper <drepper@re + * sysdeps/generic/ldsodefs.h (struct rtld_global): The map element in + the unique symbol hash table should not be const. + ++2009-07-22 Jakub Jelinek jakub@redhat.com ++ ++ * Makeconfig (ASFLAGS): Append $(sysdep-ASFLAGS). ++ * sysdeps/i386/Makefile (sysdep-ASFLAGS): Add -U__i686. ++ + 2009-07-21 Ulrich Drepper drepper@redhat.com + + * sysdeps/x86_64/multiarch/strstr.c: Minor cleanups. Remove +@@ -3203,6 +3227,11 @@ d2009-10-30 Ulrich Drepper <drepper@re + out common code into new function get_common_indeces. Determine + extended family and model for Intel processors. + ++2009-06-26 Andreas Schwab aschwab@redhat.com ++ ++ * timezone/zic.c (stringzone): Don't try to generate a POSIX TZ ++ string when the timezone ends in DST. ++ + 2009-06-26 Ulrich Drepper drepper@redhat.com + + * resolv/resolv.h: Define RES_SNGLKUPREOP. +@@ -11896,6 +11925,10 @@ d2009-10-30 Ulrich Drepper <drepper@re + [BZ #4368] + * stdlib/stdlib.h: Remove obsolete part of comment for realpath. + ++2007-04-16 Jakub Jelinek jakub@redhat.com ++ ++ * locale/programs/locarchive.c (add_alias, insert_name): Remove static. ++ + 2007-04-16 Ulrich Drepper drepper@redhat.com + + [BZ #4364] +@@ -13153,6 +13186,15 @@ d2009-10-30 Ulrich Drepper <drepper@re + separators also if no non-zero digits found. + * stdlib/Makefile (tests): Add tst-strtod3. + ++2006-12-10 Jakub Jelinek jakub@redhat.com ++ ++ * sysdeps/unix/sysv/linux/netlinkaccess.h: Include linux/if_addr.h ++ if IFA_MAX is not defined. ++ (IFA_RTA, IFA_PAYLOAD, IFLA_RTA, IFLA_PAYLOAD): Define if not ++ defined. ++ * sysdeps/unix/sysv/linux/check_pf.c: Include netlinkaccess.h ++ instead of asm/types.h, linux/netlink.h and linux/rtnetlink.h. ++ + 2006-12-09 Ulrich Drepper drepper@redhat.com + + [BZ #3632] +--- glibc-2.12-2-gc4ccff1/ChangeLog.15 ++++ glibc-2.12-1/ChangeLog.15 +@@ -477,6 +477,14 @@ + + 2004-11-26 Jakub Jelinek jakub@redhat.com + ++ * posix/Makefile (generated: Add getconf.speclist. ++ ($(inst_libexecdir)/getconf): Use getconf.speclist instead of ++ getconf output. ++ ($(objpfx)getconf.speclist): New rule. ++ * posix/getconf.speclist.h: New file. ++ ++2004-11-26 Jakub Jelinek jakub@redhat.com ++ + * sysdeps/generic/unsecvars.h (UNSECURE_ENVVARS): Add GETCONF_DIR. + + 2004-11-26 Kaz Kojima kkojima@rr.iij4u.or.jp +@@ -1103,6 +1111,13 @@ + * sysdeps/generic/tempname.c (__path_search): Add missing argument + TRY_TMPDIR. + ++2004-11-02 Jakub Jelinek jakub@redhat.com ++ ++ * include/features.h (__USE_FORTIFY_LEVEL): Also set for Red Hat ++ GCC 3.4.x-RH >= 3.4.2-8. ++ * debug/tst-chk1.c (do_test): Deal with GCC 3.4.x-RH not ++ being able to recognize subobjects. ++ + 2004-10-31 Mariusz Mazur mmazur@kernel.pl + + * sysdeps/unix/sysv/linux/alpha/setregid.c: New file. +@@ -1443,6 +1458,11 @@ + * sysdeps/generic/readonly-area.c (__readonly_str): Renamed to ... + (__readonly_area): ... this. + ++2004-10-19 Jakub Jelinek jakub@redhat.com ++ ++ * include/features.h (__USE_FORTIFY_LEVEL): Enable even with ++ Red Hat gcc4 4.0.0 and above. ++ + 2004-10-18 Jakub Jelinek jakub@redhat.com + + * sysdeps/generic/strcpy_chk.c (__strcpy_chk): Speed up by checking +@@ -3182,6 +3202,23 @@ + before return type. + * locale/localename.c (__current_locale_name): Likewise. + ++2004-08-31 Jakub Jelinek jakub@redhat.com ++ ++ * elf/ldconfig.c (parse_conf): Add prefix argument, prepend it ++ before arguments to add_dir and pass to parse_conf_include. ++ (parse_conf_include): Add prefix argument, pass it down to ++ parse_conf. ++ (main): Call arch_startup. Adjust parse_conf caller. ++ Call add_arch_dirs. ++ * sysdeps/generic/dl-cache.h (arch_startup, add_arch_dirs): Define. ++ * sysdeps/unix/sysv/linux/i386/dl-cache.h: New file. ++ * sysdeps/unix/sysv/linux/ia64/dl-cache.h (EMUL_HACK, arch_startup, ++ add_arch_dirs): Define. ++ * sysdeps/unix/sysv/linux/ia64/ldd-rewrite.sed: Prepend ++ /emul/ia32-linux before the 32-bit ld.so pathname. ++ * sysdeps/unix/sysv/linux/ia64/dl-procinfo.c: New file. ++ * sysdeps/unix/sysv/linux/ia64/dl-procinfo.h: New file. ++ + 2004-08-30 Roland McGrath roland@frob.com + + * scripts/extract-abilist.awk: If `lastversion' variable defined, omit +--- glibc-2.12-2-gc4ccff1/ChangeLog.16 ++++ glibc-2.12-1/ChangeLog.16 +@@ -2042,6 +2042,9 @@ + (__MATHDECL_2): Use __REDIRECT_NTH instead of __REDIRECT + followed by __THROW. + ++ * sysdeps/unix/sysv/linux/futimesat.c (futimesat): If ++ file == NULL, use __futimes unconditionally. ++ + 2006-02-02 Ulrich Drepper drepper@redhat.com + + * sysdeps/unix/sysv/linux/futimesat.c [__NR_futimesat] +@@ -2101,6 +2104,11 @@ + * sysdeps/ieee754/ldbl-128/s_llrintl.c (__llrintl): Fix a typo. + * sysdeps/s390/fpu/libm-test-ulps: Remove llrint ulps. + ++2006-01-30 Jakub Jelinek jakub@redhat.com ++ ++ * include/bits/stdlib-ldbl.h: New file. ++ * include/bits/wchar-ldbl.h: New file. ++ + 2006-01-19 Thomas Schwinge tschwinge@gnu.org + + * libio/genops.c: Include <stdbool.h>. +@@ -8922,6 +8930,12 @@ + * argp/argp-help.c (__argp_error): __asprintf -> vasprintf. + (__argp_failure): Likewise. + ++2005-08-08 Jakub Jelinek jakub@redhat.com ++ ++ * sysdeps/unix/sysv/linux/dl-osinfo.h (_dl_setup_stack_chk_guard): ++ Shift marked &errno down on big-endian instead of up. ++ * elf/tst-stackguard1.c (do_test): Fix a typo. ++ + 2005-08-08 Ulrich Drepper drepper@redhat.com + + * nscd/cache.c (cache_add): Commit hash table and header to disk. +@@ -9046,6 +9060,17 @@ + __syslog_chk. + * misc/Versions: Export __syslog_chk and __vsyslog_chk. + ++2005-07-29 Jakub Jelinek jakub@redhat.com ++ ++ * sysdeps/unix/sysv/linux/dl-osinfo.h: Include errno.h, hp-timing.h, ++ endian.h. ++ (_dl_setup_stack_chk_guard): Even without ++ --enable-stackguard-randomization attempt to do some guard ++ randomization using hp-timing (if available) and kernel stack and ++ mmap randomization. ++ * elf/tst-stackguard1.c (do_test): Don't fail if the poor man's ++ randomization doesn't work well enough. ++ + 2005-07-28 Thomas Schwinge schwinge@nic-nac-project.de + + [BZ #1137] +--- glibc-2.12-2-gc4ccff1/Makeconfig ++++ glibc-2.12-1/Makeconfig +@@ -789,12 +789,12 @@ endif + # The assembler can generate debug information too. + ifndef ASFLAGS + ifeq ($(have-cpp-asm-debuginfo),yes) +-ASFLAGS := $(filter -g% -fdebug-prefix-map=%,$(CFLAGS)) ++ASFLAGS = $(filter -g% -fdebug-prefix-map=%,$(CFLAGS)) + else +-ASFLAGS := ++ASFLAGS = + endif + endif +-ASFLAGS += $(ASFLAGS-config) $(asflags-cpu) ++ASFLAGS += $(ASFLAGS-config) $(asflags-cpu) $(sysdep-ASFLAGS) + + ifndef BUILD_CC + BUILD_CC = $(CC) +--- glibc-2.12-2-gc4ccff1/csu/Makefile ++++ glibc-2.12-1/csu/Makefile +@@ -93,7 +93,8 @@ omit-deps += $(crtstuff) + $(crtstuff:%=$(objpfx)%.o): %.o: %.S $(objpfx)defs.h + $(compile.S) -g0 $(ASFLAGS-.os) -o $@ + +-CFLAGS-initfini.s = -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time) ++CFLAGS-initfini.s = -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time) \ ++ -fno-asynchronous-unwind-tables + + vpath initfini.c $(sysdirs) + +--- glibc-2.12-2-gc4ccff1/csu/elf-init.c ++++ glibc-2.12-1/csu/elf-init.c +@@ -63,6 +63,23 @@ extern void (*__init_array_end []) (int, + extern void (*__fini_array_start []) (void) attribute_hidden; + extern void (*__fini_array_end []) (void) attribute_hidden; + ++#if defined HAVE_VISIBILITY_ATTRIBUTE \ ++ && (defined SHARED || defined LIBC_NONSHARED) ++# define hidden_undef_2(x) #x ++# define hidden_undef_1(x) hidden_undef_2 (x) ++# define hidden_undef(x) \ ++ __asm (hidden_undef_1 (ASM_GLOBAL_DIRECTIVE) " " #x); \ ++ __asm (".hidden " #x); ++#else ++# define hidden_undef(x) ++#endif ++ ++hidden_undef (__preinit_array_start) ++hidden_undef (__preinit_array_end) ++hidden_undef (__init_array_start) ++hidden_undef (__init_array_end) ++hidden_undef (__fini_array_start) ++hidden_undef (__fini_array_end) + + /* These function symbols are provided for the .init/.fini section entry + points automagically by the linker. */ +--- glibc-2.12-2-gc4ccff1/debug/tst-chk1.c ++++ glibc-2.12-1/debug/tst-chk1.c +@@ -17,6 +17,9 @@ + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + ++/* Hack: make sure GCC doesn't know __chk_fail () will not return. */ ++#define __noreturn__ ++ + #include <assert.h> + #include <fcntl.h> + #include <locale.h> +@@ -242,7 +245,7 @@ do_test (void) + if (memcmp (a.buf1, "aabcdabcjj", 10)) + FAIL (); + +-#if __USE_FORTIFY_LEVEL < 2 ++#if __USE_FORTIFY_LEVEL < 2 || !__GNUC_PREREQ (4, 0) + /* The following tests are supposed to crash with -D_FORTIFY_SOURCE=2 + and sufficient GCC support, as the string operations overflow + from a.buf1 into a.buf2. */ +@@ -357,7 +360,7 @@ do_test (void) + memset (a.buf1 + 9, 'j', l0 + 2); + CHK_FAIL_END + +-# if __USE_FORTIFY_LEVEL >= 2 ++# if __USE_FORTIFY_LEVEL >= 2 && __GNUC_PREREQ (4, 0) + # define O 0 + # else + # define O 1 +--- glibc-2.12-2-gc4ccff1/elf/ldconfig.c ++++ glibc-2.12-1/elf/ldconfig.c +@@ -1031,17 +1031,19 @@ search_dirs (void) + + + static void parse_conf_include (const char *config_file, unsigned int lineno, +- bool do_chroot, const char *pattern); ++ const char *prefix, bool do_chroot, ++ const char *pattern); + + /* Parse configuration file. */ + static void +-parse_conf (const char *filename, bool do_chroot) ++parse_conf (const char *filename, const char *prefix, bool do_chroot) + { + FILE *file = NULL; + char *line = NULL; + const char *canon; + size_t len = 0; + unsigned int lineno; ++ size_t prefix_len = prefix ? strlen (prefix) : 0; + + if (do_chroot && opt_chroot) + { +@@ -1102,7 +1104,14 @@ parse_conf (const char *filename, bool d + cp += 8; + while ((dir = strsep (&cp, " \t")) != NULL) + if (dir[0] != '\0') +- parse_conf_include (filename, lineno, do_chroot, dir); ++ parse_conf_include (filename, lineno, prefix, do_chroot, dir); ++ } ++ else if (prefix != NULL) ++ { ++ size_t cp_len = strlen (cp); ++ char new_cp [prefix_len + cp_len + 1]; ++ memcpy (mempcpy (new_cp, prefix, prefix_len), cp, cp_len + 1); ++ add_dir (new_cp); + } + else if (!strncasecmp (cp, "hwcap", 5) && isblank (cp[5])) + { +@@ -1165,7 +1174,7 @@ parse_conf (const char *filename, bool d + config files to read. */ + static void + parse_conf_include (const char *config_file, unsigned int lineno, +- bool do_chroot, const char *pattern) ++ const char *prefix, bool do_chroot, const char *pattern) + { + if (opt_chroot && pattern[0] != '/') + error (EXIT_FAILURE, 0, +@@ -1197,7 +1206,7 @@ parse_conf_include (const char *config_f + { + case 0: + for (size_t i = 0; i < gl.gl_pathc; ++i) +- parse_conf (gl.gl_pathv[i], false); ++ parse_conf (gl.gl_pathv[i], prefix, false); + globfree64 (&gl); + break; + +@@ -1240,6 +1249,8 @@ main (int argc, char **argv) + /* Set the text message domain. */ + textdomain (_libc_intl_domainname); + ++ arch_startup (argc, argv); ++ + /* Parse and process arguments. */ + int remaining; + argp_parse (&argp, argc, argv, 0, &remaining, NULL); +@@ -1349,12 +1360,14 @@ main (int argc, char **argv) + + if (!opt_only_cline) + { +- parse_conf (config_file, true); ++ parse_conf (config_file, NULL, true); + + /* Always add the standard search paths. */ + add_system_dir (SLIBDIR); + if (strcmp (SLIBDIR, LIBDIR)) + add_system_dir (LIBDIR); ++ ++ add_arch_dirs (config_file); + } + + char *aux_cache_file = _PATH_LDCONFIG_AUX_CACHE; +--- glibc-2.12-2-gc4ccff1/elf/tst-stackguard1.c ++++ glibc-2.12-1/elf/tst-stackguard1.c +@@ -160,17 +160,21 @@ do_test (void) + the 16 runs, something is very wrong. */ + int ndifferences = 0; + int ndefaults = 0; ++ int npartlyrandomized = 0; + for (i = 0; i < N; ++i) + { + if (child_stack_chk_guards[i] != child_stack_chk_guards[i+1]) + ndifferences++; + else if (child_stack_chk_guards[i] == default_guard) + ndefaults++; ++ else if (*(char *) &child_stack_chk_guards[i] == 0) ++ npartlyrandomized++; + } + +- printf ("differences %d defaults %d\n", ndifferences, ndefaults); ++ printf ("differences %d defaults %d partly randomized %d\n", ++ ndifferences, ndefaults, npartlyrandomized); + +- if (ndifferences < N / 2 && ndefaults < N / 2) ++ if ((ndifferences + ndefaults + npartlyrandomized) < 3 * N / 4) + { + puts ("stack guard canaries are not randomized enough"); + puts ("nor equal to the default canary value"); +--- glibc-2.12-2-gc4ccff1/include/bits/stdlib-ldbl.h ++++ glibc-2.12-1/include/bits/stdlib-ldbl.h +@@ -0,0 +1 @@ ++#include <stdlib/bits/stdlib-ldbl.h> +--- glibc-2.12-2-gc4ccff1/include/bits/wchar-ldbl.h ++++ glibc-2.12-1/include/bits/wchar-ldbl.h +@@ -0,0 +1 @@ ++#include <wcsmbs/bits/wchar-ldbl.h> +--- glibc-2.12-2-gc4ccff1/include/features.h ++++ glibc-2.12-1/include/features.h +@@ -308,8 +308,13 @@ + #endif + + #if defined _FORTIFY_SOURCE && _FORTIFY_SOURCE > 0 \ +- && __GNUC_PREREQ (4, 1) && defined __OPTIMIZE__ && __OPTIMIZE__ > 0 +-# if _FORTIFY_SOURCE > 1 ++ && defined __OPTIMIZE__ && __OPTIMIZE__ > 0 ++# if !__GNUC_PREREQ (4, 1) ++# ifdef __GNUC_RH_RELEASE__ ++# warning _FORTIFY_SOURCE supported only with GCC 4.1 and later ++# endif ++# define __USE_FORTIFY_LEVEL 0 ++# elif _FORTIFY_SOURCE > 1 + # define __USE_FORTIFY_LEVEL 2 + # else + # define __USE_FORTIFY_LEVEL 1 +--- glibc-2.12-2-gc4ccff1/intl/locale.alias ++++ glibc-2.12-1/intl/locale.alias +@@ -57,8 +57,6 @@ korean ko_KR.eucKR + korean.euc ko_KR.eucKR + ko_KR ko_KR.eucKR + lithuanian lt_LT.ISO-8859-13 +-no_NO nb_NO.ISO-8859-1 +-no_NO.ISO-8859-1 nb_NO.ISO-8859-1 + norwegian nb_NO.ISO-8859-1 + nynorsk nn_NO.ISO-8859-1 + polish pl_PL.ISO-8859-2 +--- glibc-2.12-2-gc4ccff1/libio/stdio.h ++++ glibc-2.12-1/libio/stdio.h +@@ -165,10 +165,12 @@ typedef _G_fpos64_t fpos64_t; + extern struct _IO_FILE *stdin; /* Standard input stream. */ + extern struct _IO_FILE *stdout; /* Standard output stream. */ + extern struct _IO_FILE *stderr; /* Standard error output stream. */ ++#ifdef __STDC__ + /* C89/C99 say they're macros. Make them happy. */ + #define stdin stdin + #define stdout stdout + #define stderr stderr ++#endif + + __BEGIN_NAMESPACE_STD + /* Remove file FILENAME. */ +--- glibc-2.12-2-gc4ccff1/locale/iso-4217.def ++++ glibc-2.12-1/locale/iso-4217.def +@@ -8,6 +8,7 @@ + * + * !!! The list has to be sorted !!! + */ ++DEFINE_INT_CURR("ADP") /* Andorran Peseta -> EUR */ + DEFINE_INT_CURR("AED") /* United Arab Emirates Dirham */ + DEFINE_INT_CURR("AFN") /* Afghanistan Afgani */ + DEFINE_INT_CURR("ALL") /* Albanian Lek */ +@@ -15,12 +16,14 @@ DEFINE_INT_CURR("AMD") /* Armenia Dram + DEFINE_INT_CURR("ANG") /* Netherlands Antilles */ + DEFINE_INT_CURR("AOA") /* Angolan Kwanza */ + DEFINE_INT_CURR("ARS") /* Argentine Peso */ ++DEFINE_INT_CURR("ATS") /* Austrian Schilling -> EUR */ + DEFINE_INT_CURR("AUD") /* Australian Dollar */ + DEFINE_INT_CURR("AWG") /* Aruba Guilder */ + DEFINE_INT_CURR("AZM") /* Azerbaijan Manat */ + DEFINE_INT_CURR("BAM") /* Bosnian and Herzegovina Convertible Mark */ + DEFINE_INT_CURR("BBD") /* Barbados Dollar */ + DEFINE_INT_CURR("BDT") /* Bangladesh Taka */ ++DEFINE_INT_CURR("BEF") /* Belgian Franc -> EUR */ + DEFINE_INT_CURR("BGN") /* Bulgarian Lev */ + DEFINE_INT_CURR("BHD") /* Bahraini Dinar */ + DEFINE_INT_CURR("BIF") /* Burundi Franc */ +@@ -44,6 +47,7 @@ DEFINE_INT_CURR("CUP") /* Cuban Peso * + DEFINE_INT_CURR("CVE") /* Cape Verde Escudo */ + DEFINE_INT_CURR("CYP") /* Cypriot Pound */ + DEFINE_INT_CURR("CZK") /* Czech Koruna */ ++DEFINE_INT_CURR("DEM") /* German Mark -> EUR */ + DEFINE_INT_CURR("DJF") /* Djibouti Franc */ + DEFINE_INT_CURR("DKK") /* Danish Krone (Faroe Islands, Greenland) */ + DEFINE_INT_CURR("DOP") /* Dominican Republic */ +@@ -51,16 +55,20 @@ DEFINE_INT_CURR("DZD") /* Algerian Dina + DEFINE_INT_CURR("EEK") /* Estonian Kroon */ + DEFINE_INT_CURR("EGP") /* Egyptian Pound */ + DEFINE_INT_CURR("ERN") /* Eritrean Nakfa */ ++DEFINE_INT_CURR("ESP") /* Spanish Peseta -> EUR */ + DEFINE_INT_CURR("ETB") /* Ethiopian Birr */ + DEFINE_INT_CURR("EUR") /* European Union Euro */ ++DEFINE_INT_CURR("FIM") /* Finnish Markka -> EUR */ + DEFINE_INT_CURR("FJD") /* Fiji Dollar */ + DEFINE_INT_CURR("FKP") /* Falkland Islands Pound (Malvinas) */ ++DEFINE_INT_CURR("FRF") /* French Franc -> EUR */ + DEFINE_INT_CURR("GBP") /* British Pound */ + DEFINE_INT_CURR("GEL") /* Georgia Lari */ + DEFINE_INT_CURR("GHC") /* Ghana Cedi */ + DEFINE_INT_CURR("GIP") /* Gibraltar Pound */ + DEFINE_INT_CURR("GMD") /* Gambian Dalasi */ + DEFINE_INT_CURR("GNF") /* Guinea Franc */ ++DEFINE_INT_CURR("GRD") /* Greek Drachma -> EUR */ + DEFINE_INT_CURR("GTQ") /* Guatemala Quetzal */ + DEFINE_INT_CURR("GYD") /* Guyana Dollar */ + DEFINE_INT_CURR("HKD") /* Hong Kong Dollar */ +@@ -69,12 +77,14 @@ DEFINE_INT_CURR("HRK") /* Croatia Kuna + DEFINE_INT_CURR("HTG") /* Haiti Gourde */ + DEFINE_INT_CURR("HUF") /* Hungarian Forint */ + DEFINE_INT_CURR("IDR") /* Indonesia Rupiah */ ++DEFINE_INT_CURR("IEP") /* Irish Pound -> EUR */ + DEFINE_INT_CURR("ILS") /* Israeli Shekel */ + DEFINE_INT_CURR("IMP") /* Isle of Man Pounds */ + DEFINE_INT_CURR("INR") /* Indian Rupee (Bhutan) */ + DEFINE_INT_CURR("IQD") /* Iraqi Dinar */ + DEFINE_INT_CURR("IRR") /* Iranian Rial */ + DEFINE_INT_CURR("ISK") /* Iceland Krona */ ++DEFINE_INT_CURR("ITL") /* Italian Lira -> EUR */ + DEFINE_INT_CURR("JEP") /* Jersey Pound */ + DEFINE_INT_CURR("JMD") /* Jamaican Dollar */ + DEFINE_INT_CURR("JOD") /* Jordanian Dinar */ +@@ -94,6 +104,7 @@ DEFINE_INT_CURR("LKR") /* Sri Lankan Ru + DEFINE_INT_CURR("LRD") /* Liberian Dollar */ + DEFINE_INT_CURR("LSL") /* Lesotho Maloti */ + DEFINE_INT_CURR("LTL") /* Lithuanian Litas */ ++DEFINE_INT_CURR("LUF") /* Luxembourg Franc -> EUR */ + DEFINE_INT_CURR("LVL") /* Latvia Lat */ + DEFINE_INT_CURR("LYD") /* Libyan Arab Jamahiriya Dinar */ + DEFINE_INT_CURR("MAD") /* Moroccan Dirham */ +@@ -114,6 +125,7 @@ DEFINE_INT_CURR("MZM") /* Mozambique Me + DEFINE_INT_CURR("NAD") /* Namibia Dollar */ + DEFINE_INT_CURR("NGN") /* Nigeria Naira */ + DEFINE_INT_CURR("NIO") /* Nicaragua Cordoba Oro */ ++DEFINE_INT_CURR("NLG") /* Netherlands Guilder -> EUR */ + DEFINE_INT_CURR("NOK") /* Norwegian Krone */ + DEFINE_INT_CURR("NPR") /* Nepalese Rupee */ + DEFINE_INT_CURR("NZD") /* New Zealand Dollar */ +@@ -124,6 +136,7 @@ DEFINE_INT_CURR("PGK") /* Papau New Gui + DEFINE_INT_CURR("PHP") /* Philippines Peso */ + DEFINE_INT_CURR("PKR") /* Pakistan Rupee */ + DEFINE_INT_CURR("PLN") /* Polish Zloty */ ++DEFINE_INT_CURR("PTE") /* Portugese Escudo -> EUR */ + DEFINE_INT_CURR("PYG") /* Paraguay Guarani */ + DEFINE_INT_CURR("QAR") /* Qatar Rial */ + DEFINE_INT_CURR("ROL") /* Romanian Leu */ +--- glibc-2.12-2-gc4ccff1/locale/programs/locarchive.c ++++ glibc-2.12-1/locale/programs/locarchive.c +@@ -134,7 +134,7 @@ create_archive (const char *archivefname + size_t reserved = RESERVE_MMAP_SIZE; + int xflags = 0; + if (total < reserved +- && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_PRIVATE | MAP_ANON, ++ && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_SHARED | MAP_ANON, + -1, 0)) != MAP_FAILED)) + xflags = MAP_FIXED; + else +@@ -241,9 +241,9 @@ oldlocrecentcmp (const void *a, const vo + /* forward decls for below */ + static uint32_t add_locale (struct locarhandle *ah, const char *name, + locale_data_t data, bool replace); +-static void add_alias (struct locarhandle *ah, const char *alias, +- bool replace, const char *oldname, +- uint32_t *locrec_offset_p); ++void add_alias (struct locarhandle *ah, const char *alias, ++ bool replace, const char *oldname, ++ uint32_t *locrec_offset_p); + + + static bool +@@ -396,7 +396,7 @@ enlarge_archive (struct locarhandle *ah, + size_t reserved = RESERVE_MMAP_SIZE; + int xflags = 0; + if (total < reserved +- && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_PRIVATE | MAP_ANON, ++ && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_SHARED | MAP_ANON, + -1, 0)) != MAP_FAILED)) + xflags = MAP_FIXED; + else +@@ -614,7 +614,7 @@ open_archive (struct locarhandle *ah, bo + int xflags = 0; + void *p; + if (st.st_size < reserved +- && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_PRIVATE | MAP_ANON, ++ && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_SHARED | MAP_ANON, + -1, 0)) != MAP_FAILED)) + xflags = MAP_FIXED; + else +@@ -649,7 +649,7 @@ close_archive (struct locarhandle *ah) + #include "../../intl/explodename.c" + #include "../../intl/l10nflist.c" + +-static struct namehashent * ++struct namehashent * + insert_name (struct locarhandle *ah, + const char *name, size_t name_len, bool replace) + { +@@ -707,7 +707,7 @@ insert_name (struct locarhandle *ah, + return &namehashtab[idx]; + } + +-static void ++void + add_alias (struct locarhandle *ah, const char *alias, bool replace, + const char *oldname, uint32_t *locrec_offset_p) + { +--- glibc-2.12-2-gc4ccff1/localedata/Makefile ++++ glibc-2.12-1/localedata/Makefile +@@ -227,6 +227,7 @@ $(INSTALL-SUPPORTED-LOCALES): install-lo + echo -n '...'; \ + input=`echo $$locale | sed 's/([^.]*)[^@]*(.*)/\1\2/'`; \ + $(LOCALEDEF) --alias-file=../intl/locale.alias \ ++ --no-archive \ + -i locales/$$input -c -f charmaps/$$charset \ + $(addprefix --prefix=,$(install_root)) $$locale; \ + echo ' done'; \ +--- glibc-2.12-2-gc4ccff1/localedata/SUPPORTED ++++ glibc-2.12-1/localedata/SUPPORTED +@@ -85,6 +85,7 @@ cy_GB.UTF-8/UTF-8 \ + cy_GB/ISO-8859-14 \ + da_DK.UTF-8/UTF-8 \ + da_DK/ISO-8859-1 \ ++da_DK.ISO-8859-15/ISO-8859-15 \ + de_AT.UTF-8/UTF-8 \ + de_AT/ISO-8859-1 \ + de_AT@euro/ISO-8859-15 \ +@@ -116,6 +117,7 @@ en_DK.UTF-8/UTF-8 \ + en_DK/ISO-8859-1 \ + en_GB.UTF-8/UTF-8 \ + en_GB/ISO-8859-1 \ ++en_GB.ISO-8859-15/ISO-8859-15 \ + en_HK.UTF-8/UTF-8 \ + en_HK/ISO-8859-1 \ + en_IE.UTF-8/UTF-8 \ +@@ -131,6 +133,7 @@ en_SG.UTF-8/UTF-8 \ + en_SG/ISO-8859-1 \ + en_US.UTF-8/UTF-8 \ + en_US/ISO-8859-1 \ ++en_US.ISO-8859-15/ISO-8859-15 \ + en_ZA.UTF-8/UTF-8 \ + en_ZA/ISO-8859-1 \ + en_ZW.UTF-8/UTF-8 \ +@@ -307,6 +310,8 @@ nl_NL/ISO-8859-1 \ + nl_NL@euro/ISO-8859-15 \ + nn_NO.UTF-8/UTF-8 \ + nn_NO/ISO-8859-1 \ ++no_NO.UTF-8/UTF-8 \ ++no_NO/ISO-8859-1 \ + nr_ZA/UTF-8 \ + nso_ZA/UTF-8 \ + oc_FR.UTF-8/UTF-8 \ +@@ -367,6 +372,7 @@ sv_FI/ISO-8859-1 \ + sv_FI@euro/ISO-8859-15 \ + sv_SE.UTF-8/UTF-8 \ + sv_SE/ISO-8859-1 \ ++sv_SE.ISO-8859-15/ISO-8859-15 \ + ta_IN/UTF-8 \ + te_IN/UTF-8 \ + tg_TJ.UTF-8/UTF-8 \ +--- glibc-2.12-2-gc4ccff1/localedata/locales/cy_GB ++++ glibc-2.12-1/localedata/locales/cy_GB +@@ -248,8 +248,11 @@ mon "<U0049><U006F><U006E><U0061 + d_t_fmt "<U0044><U0079><U0064><U0064><U0020><U0025><U0041><U0020><U0025><U0064><U0020><U006d><U0069><U0073><U0020><U0025><U0042><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" + d_fmt "<U0025><U0064><U002E><U0025><U006D><U002E><U0025><U0079>" + t_fmt "<U0025><U0054>" +-am_pm "";"" +-t_fmt_ampm "" ++am_pm "<U0041><U004D>";"<U0050><U004D>" ++t_fmt_ampm "<U0025><U006C><U003A><U0025><U004D><U003A><U0025><U0053><U0020><U0025><U0050><U0020><U0025><U005A>" ++date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/ ++<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/ ++<U0025><U005A><U0020><U0025><U0059>" + END LC_TIME + + LC_MESSAGES +--- glibc-2.12-2-gc4ccff1/localedata/locales/en_GB ++++ glibc-2.12-1/localedata/locales/en_GB +@@ -116,8 +116,8 @@ mon "<U004A><U0061><U006E><U0075 + d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" + d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>" + t_fmt "<U0025><U0054>" +-am_pm "";"" +-t_fmt_ampm "" ++am_pm "<U0041><U004D>";"<U0050><U004D>" ++t_fmt_ampm "<U0025><U006C><U003A><U0025><U004D><U003A><U0025><U0053><U0020><U0025><U0050><U0020><U0025><U005A>" + date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/ + <U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/ + <U0025><U005A><U0020><U0025><U0059>" +--- glibc-2.12-2-gc4ccff1/localedata/locales/no_NO ++++ glibc-2.12-1/localedata/locales/no_NO +@@ -0,0 +1,69 @@ ++escape_char / ++comment_char % ++ ++% Norwegian language locale for Norway ++% Source: Norsk Standardiseringsforbund ++% Address: University Library, ++% Drammensveien 41, N-9242 Oslo, Norge ++% Contact: Kolbjoern Aamboe ++% Tel: +47 - 22859109 ++% Fax: +47 - 22434497 ++% Email: kolbjorn.aambo@usit.uio.no ++% Language: no ++% Territory: NO ++% Revision: 4.3 ++% Date: 1996-10-15 ++% Application: general ++% Users: general ++% Repertoiremap: mnemonic.ds ++% Charset: ISO-8859-1 ++% Distribution and use is free, also ++% for commercial purposes. ++ ++LC_IDENTIFICATION ++copy "nb_NO" ++END LC_IDENTIFICATION ++ ++LC_COLLATE ++copy "nb_NO" ++END LC_COLLATE ++ ++LC_CTYPE ++copy "nb_NO" ++END LC_CTYPE ++ ++LC_MONETARY ++copy "nb_NO" ++END LC_MONETARY ++ ++LC_NUMERIC ++copy "nb_NO" ++END LC_NUMERIC ++ ++LC_TIME ++copy "nb_NO" ++END LC_TIME ++ ++LC_MESSAGES ++copy "nb_NO" ++END LC_MESSAGES ++ ++LC_PAPER ++copy "nb_NO" ++END LC_PAPER ++ ++LC_TELEPHONE ++copy "nb_NO" ++END LC_TELEPHONE ++ ++LC_MEASUREMENT ++copy "nb_NO" ++END LC_MEASUREMENT ++ ++LC_NAME ++copy "nb_NO" ++END LC_NAME ++ ++LC_ADDRESS ++copy "nb_NO" ++END LC_ADDRESS +--- glibc-2.12-2-gc4ccff1/localedata/locales/zh_TW ++++ glibc-2.12-1/localedata/locales/zh_TW +@@ -1,7 +1,7 @@ + comment_char % + escape_char / + % +-% Chinese language locale for Taiwan R.O.C. ++% Chinese language locale for Taiwan + % charmap: BIG5-CP950 + % + % Original Author: +@@ -17,7 +17,7 @@ escape_char / + % Reference: http://wwwold.dkuug.dk/JTC1/SC22/WG20/docs/n690.pdf + + LC_IDENTIFICATION +-title "Chinese locale for Taiwan R.O.C." ++title "Chinese locale for Taiwan" + source "" + address "" + contact "" +@@ -25,7 +25,7 @@ email "bug-glibc-locales@gnu.org" + tel "" + fax "" + language "Chinese" +-territory "Taiwan R.O.C." ++territory "Taiwan" + revision "0.2" + date "2000-08-02" + % +--- glibc-2.12-2-gc4ccff1/malloc/mcheck.c ++++ glibc-2.12-1/malloc/mcheck.c +@@ -24,9 +24,25 @@ + # include <mcheck.h> + # include <stdint.h> + # include <stdio.h> ++# include <stdlib.h> + # include <libintl.h> + #endif + ++#ifdef _LIBC ++extern __typeof (malloc) __libc_malloc; ++extern __typeof (free) __libc_free; ++extern __typeof (realloc) __libc_realloc; ++libc_hidden_proto (__libc_malloc) ++libc_hidden_proto (__libc_realloc) ++libc_hidden_proto (__libc_free) ++libc_hidden_proto (__libc_memalign) ++#else ++# define __libc_malloc(sz) malloc (sz) ++# define __libc_free(ptr) free (ptr) ++# define __libc_realloc(ptr, sz) realloc (ptr, sz) ++# define __libc_memalign(al, sz) memalign (al, sz) ++#endif ++ + /* Old hook values. */ + static void (*old_free_hook) (__ptr_t ptr, __const __ptr_t); + static __ptr_t (*old_malloc_hook) (__malloc_size_t size, const __ptr_t); +@@ -197,7 +213,7 @@ freehook (__ptr_t ptr, const __ptr_t cal + if (old_free_hook != NULL) + (*old_free_hook) (ptr, caller); + else +- free (ptr); ++ __libc_free (ptr); + __free_hook = freehook; + } + +@@ -214,7 +230,7 @@ mallochook (__malloc_size_t size, const + hdr = (struct hdr *) (*old_malloc_hook) (sizeof (struct hdr) + size + 1, + caller); + else +- hdr = (struct hdr *) malloc (sizeof (struct hdr) + size + 1); ++ hdr = (struct hdr *) __libc_malloc (sizeof (struct hdr) + size + 1); + __malloc_hook = mallochook; + if (hdr == NULL) + return NULL; +@@ -245,7 +261,7 @@ memalignhook (__malloc_size_t alignment, + if (old_memalign_hook != NULL) + block = (*old_memalign_hook) (alignment, slop + size + 1, caller); + else +- block = memalign (alignment, slop + size + 1); ++ block = __libc_memalign (alignment, slop + size + 1); + __memalign_hook = memalignhook; + if (block == NULL) + return NULL; +@@ -300,8 +316,8 @@ reallochook (__ptr_t ptr, __malloc_size_ + sizeof (struct hdr) + size + 1, + caller); + else +- hdr = (struct hdr *) realloc ((__ptr_t) hdr, +- sizeof (struct hdr) + size + 1); ++ hdr = (struct hdr *) __libc_realloc ((__ptr_t) hdr, ++ sizeof (struct hdr) + size + 1); + __free_hook = freehook; + __malloc_hook = mallochook; + __memalign_hook = memalignhook; +@@ -361,8 +377,8 @@ mcheck (func) + if (__malloc_initialized <= 0 && !mcheck_used) + { + /* We call malloc() once here to ensure it is initialized. */ +- void *p = malloc (0); +- free (p); ++ void *p = __libc_malloc (0); ++ __libc_free (p); + + old_free_hook = __free_hook; + __free_hook = freehook; +--- glibc-2.12-2-gc4ccff1/manual/libc.texinfo ++++ glibc-2.12-1/manual/libc.texinfo +@@ -5,7 +5,7 @@ + @c setchapternewpage odd + + @comment Tell install-info what to do. +-@dircategory Software libraries ++@dircategory Libraries + @direntry + * Libc: (libc). C library. + @end direntry +--- glibc-2.12-2-gc4ccff1/misc/sys/cdefs.h ++++ glibc-2.12-1/misc/sys/cdefs.h +@@ -132,7 +132,10 @@ + #define __bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1) + #define __bos0(ptr) __builtin_object_size (ptr, 0) + +-#if __GNUC_PREREQ (4,3) ++#if __GNUC_PREREQ (4,3) \ ++ || (defined __GNUC_RH_RELEASE__ && __GNUC__ == 4 \ ++ && __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ == 2 \ ++ && __GNUC_RH_RELEASE__ >= 31) + # define __warndecl(name, msg) \ + extern void name (void) __attribute__((__warning__ (msg))) + # define __warnattr(msg) __attribute__((__warning__ (msg))) +@@ -291,10 +294,16 @@ + + /* GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99 + inline semantics, unless -fgnu89-inline is used. */ +-#if !defined __cplusplus || __GNUC_PREREQ (4,3) ++#if !defined __cplusplus || __GNUC_PREREQ (4,3) \ ++ || (defined __GNUC_RH_RELEASE__ && __GNUC__ == 4 \ ++ && __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ == 2 \ ++ && __GNUC_RH_RELEASE__ >= 31) + # if defined __GNUC_STDC_INLINE__ || defined __cplusplus + # define __extern_inline extern __inline __attribute__ ((__gnu_inline__)) +-# if __GNUC_PREREQ (4,3) ++# if __GNUC_PREREQ (4,3) \ ++ || (defined __GNUC_RH_RELEASE__ && __GNUC__ == 4 \ ++ && __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ == 2 \ ++ && __GNUC_RH_RELEASE__ >= 31) + # define __extern_always_inline \ + extern __always_inline __attribute__ ((__gnu_inline__, __artificial__)) + # else +@@ -314,7 +323,10 @@ + + /* GCC 4.3 and above allow passing all anonymous arguments of an + __extern_always_inline function to some other vararg function. */ +-#if __GNUC_PREREQ (4,3) ++#if __GNUC_PREREQ (4,3) \ ++ || (defined __GNUC_RH_RELEASE__ && __GNUC__ == 4 \ ++ && __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ == 2 \ ++ && __GNUC_RH_RELEASE__ >= 31) + # define __va_arg_pack() __builtin_va_arg_pack () + # define __va_arg_pack_len() __builtin_va_arg_pack_len () + #endif +--- glibc-2.12-2-gc4ccff1/nis/nss ++++ glibc-2.12-1/nis/nss +@@ -25,7 +25,7 @@ + # memory with every getXXent() call. Otherwise each getXXent() call + # might result into a network communication with the server to get + # the next entry. +-#SETENT_BATCH_READ=TRUE ++SETENT_BATCH_READ=TRUE + # + # ADJUNCT_AS_SHADOW + # If set to TRUE, the passwd routines in the NIS NSS module will not +--- glibc-2.12-2-gc4ccff1/nptl/ChangeLog ++++ glibc-2.12-1/nptl/ChangeLog +@@ -3884,6 +3884,15 @@ + Use __sigfillset. Document that sigfillset does the right thing wrt + to SIGSETXID. + ++2005-08-08 Jakub Jelinek jakub@redhat.com ++ ++ * tst-stackguard1.c (do_test): Likewise. ++ ++2005-07-29 Jakub Jelinek jakub@redhat.com ++ ++ * tst-stackguard1.c (do_test): Don't fail if the poor man's ++ randomization doesn't work well enough. ++ + 2005-07-11 Jakub Jelinek jakub@redhat.com + + [BZ #1102] +@@ -4620,6 +4629,11 @@ + Move definition inside libpthread, libc, librt check. Provide + definition for rtld. + ++2004-09-02 Jakub Jelinek jakub@redhat.com ++ ++ * pthread_cond_destroy.c (__pthread_cond_destroy): If there are ++ waiters, awake all waiters on the associated mutex. ++ + 2004-09-02 Ulrich Drepper drepper@redhat.com + + * sysdeps/alpha/jmpbuf-unwind.h: Define __libc_unwind_longjmp. +@@ -6694,6 +6708,11 @@ + + * Makefile [$(build-shared) = yes] (tests): Depend on $(test-modules). + ++2003-07-22 Jakub Jelinek jakub@redhat.com ++ ++ * descr.h: Don't include lowlevellock.h, pthreaddef.h and dl-sysdep.h ++ if __need_struct_pthread_size, instead define lll_lock_t. ++ + 2003-07-25 Jakub Jelinek jakub@redhat.com + + * tst-cancel17.c (do_test): Check if aio_cancel failed. +--- glibc-2.12-2-gc4ccff1/nptl/Makefile ++++ glibc-2.12-1/nptl/Makefile +@@ -341,7 +341,8 @@ endif + extra-objs += $(crti-objs) $(crtn-objs) + omit-deps += crti crtn + +-CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time) ++CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time) \ ++ -fno-asynchronous-unwind-tables + endif + + CFLAGS-flockfile.c = -D_IO_MTSAFE_IO +@@ -527,15 +528,19 @@ $(addprefix $(objpfx), \ + $(tests) $(xtests) $(test-srcs))): $(objpfx)libpthread.so \ + $(objpfx)libpthread_nonshared.a + $(objpfx)tst-unload: $(common-objpfx)dlfcn/libdl.so +-# $(objpfx)../libc.so is used instead of $(common-objpfx)libc.so, ++# $(objpfx)linklibc.so is used instead of $(common-objpfx)libc.so, + # since otherwise libpthread.so comes before libc.so when linking. + $(addprefix $(objpfx), $(tests-reverse)): \ +- $(objpfx)../libc.so $(objpfx)libpthread.so \ ++ $(objpfx)linklibc.so $(objpfx)libpthread.so \ + $(objpfx)libpthread_nonshared.a + $(objpfx)../libc.so: $(common-objpfx)libc.so ; + $(addprefix $(objpfx),$(tests-static) $(xtests-static)): $(objpfx)libpthread.a + + $(objpfx)tst-atfork2.out: $(objpfx)tst-atfork2mod.so ++ ++$(objpfx)linklibc.so: $(common-objpfx)libc.so ++ ln -s ../libc.so $@ ++generated += libclink.so + else + $(addprefix $(objpfx),$(tests) $(test-srcs)): $(objpfx)libpthread.a + endif +--- glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h ++++ glibc-2.12-1/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h +@@ -189,4 +189,7 @@ + /* Typed memory objects are not available. */ + #define _POSIX_TYPED_MEMORY_OBJECTS -1 + ++/* Streams are not available. */ ++#define _XOPEN_STREAMS -1 ++ + #endif /* bits/posix_opt.h */ +--- glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/kernel-features.h ++++ glibc-2.12-1/nptl/sysdeps/unix/sysv/linux/kernel-features.h +@@ -0,0 +1,6 @@ ++#include_next <kernel-features.h> ++ ++/* NPTL can always assume all clone thread flags work. */ ++#ifndef __ASSUME_CLONE_THREAD_FLAGS ++# define __ASSUME_CLONE_THREAD_FLAGS 1 ++#endif +--- glibc-2.12-2-gc4ccff1/nptl/tst-stackguard1.c ++++ glibc-2.12-1/nptl/tst-stackguard1.c +@@ -190,17 +190,21 @@ do_test (void) + the 16 runs, something is very wrong. */ + int ndifferences = 0; + int ndefaults = 0; ++ int npartlyrandomized = 0; + for (i = 0; i < N; ++i) + { + if (child_stack_chk_guards[i] != child_stack_chk_guards[i+1]) + ndifferences++; + else if (child_stack_chk_guards[i] == default_guard) + ndefaults++; ++ else if (*(char *) &child_stack_chk_guards[i] == 0) ++ npartlyrandomized++; + } + +- printf ("differences %d defaults %d\n", ndifferences, ndefaults); ++ printf ("differences %d defaults %d partly randomized %d\n", ++ ndifferences, ndefaults, npartlyrandomized); + +- if (ndifferences < N / 2 && ndefaults < N / 2) ++ if ((ndifferences + ndefaults + npartlyrandomized) < 3 * N / 4) + { + puts ("stack guard canaries are not randomized enough"); + puts ("nor equal to the default canary value"); +--- glibc-2.12-2-gc4ccff1/nscd/nscd.conf ++++ glibc-2.12-1/nscd/nscd.conf +@@ -33,7 +33,7 @@ + # logfile /var/log/nscd.log + # threads 4 + # max-threads 32 +-# server-user nobody ++ server-user nscd + # stat-user somebody + debug-level 0 + # reload-count 5 +--- glibc-2.12-2-gc4ccff1/nscd/nscd.init ++++ glibc-2.12-1/nscd/nscd.init +@@ -9,6 +9,7 @@ + # slow naming services like NIS, NIS+, LDAP, or hesiod. + # processname: /usr/sbin/nscd + # config: /etc/nscd.conf ++# config: /etc/sysconfig/nscd + # + ### BEGIN INIT INFO + # Provides: nscd +@@ -28,20 +29,8 @@ + # Source function library. + . /etc/init.d/functions + +-# nscd does not run on any kernel lower than 2.2.0 because of threading +-# problems, so we require that in first place. +-case $(uname -r) in +- 2.[2-9].*) +- # this is okay +- ;; +- [3-9]*) +- # these are of course also okay +- ;; +- *) +- #this is not +- exit 1 +- ;; +-esac ++# Source an auxiliary options file if we have one, and pick up NSCD_OPTIONS. ++[ -r /etc/sysconfig/nscd ] && . /etc/sysconfig/nscd + + RETVAL=0 + prog=nscd +@@ -50,7 +39,7 @@ start () { + [ -d /var/run/nscd ] || mkdir /var/run/nscd + [ -d /var/db/nscd ] || mkdir /var/db/nscd + echo -n $"Starting $prog: " +- daemon /usr/sbin/nscd ++ daemon /usr/sbin/nscd $NSCD_OPTIONS + RETVAL=$? + echo + [ $RETVAL -eq 0 ] && touch /var/lock/subsys/nscd +@@ -83,7 +72,7 @@ restart() { + # See how we were called. + case "$1" in + start) +- start ++ [ -e /var/lock/subsys/nscd ] || start + RETVAL=$? + ;; + stop) +@@ -99,14 +88,17 @@ case "$1" in + RETVAL=$? + ;; + try-restart | condrestart) +- [ -e /var/lock/subsys/nscd ] && restart ++ [ ! -e /var/lock/subsys/nscd ] || restart + RETVAL=$? + ;; + force-reload | reload) + echo -n $"Reloading $prog: " +- killproc /usr/sbin/nscd -HUP +- RETVAL=$? +- echo ++ RETVAL=0 ++ /usr/sbin/nscd -i passwd || RETVAL=$? ++ /usr/sbin/nscd -i group || RETVAL=$? ++ /usr/sbin/nscd -i hosts || RETVAL=$? ++ /usr/sbin/nscd -i services || RETVAL=$? ++ echo + ;; + *) + echo $"Usage: $0 {start|stop|status|restart|reload|condrestart}" +--- glibc-2.12-2-gc4ccff1/posix/Makefile ++++ glibc-2.12-1/posix/Makefile +@@ -305,15 +305,8 @@ $(inst_libexecdir)/getconf: $(inst_bindi + mv -f $@/$$spec.new $@/$$spec; \ + done < $(objpfx)getconf.speclist + +-$(objpfx)getconf.speclist: $(objpfx)getconf +-ifeq (no,$(cross-compiling)) +- LC_ALL=C GETCONF_DIR=/dev/null \ +- $(run-program-prefix) $< _POSIX_V7_WIDTH_RESTRICTED_ENVS > $@.new +- LC_ALL=C GETCONF_DIR=/dev/null \ +- $(run-program-prefix) $< _POSIX_V6_WIDTH_RESTRICTED_ENVS >> $@.new +- LC_ALL=C GETCONF_DIR=/dev/null \ +- $(run-program-prefix) $< _XBS5_WIDTH_RESTRICTED_ENVS >> $@.new +-else +- > $@.new +-endif ++$(objpfx)getconf.speclist: getconf.speclist.h ++ $(CC) -E $(CFLAGS) $(CPPFLAGS) $< \ ++ | sed -n -e '/START_OF_STRINGS/,$${/(POSIX_V[67]|_XBS5)_/{s/^[^"]*"//;s/".*$$//;p}}' \ ++ > $@.new + mv -f $@.new $@ +--- glibc-2.12-2-gc4ccff1/posix/gai.conf ++++ glibc-2.12-1/posix/gai.conf +@@ -41,7 +41,7 @@ + # + # precedence <mask> <value> + # Add another rule to the RFC 3484 precedence table. See section 2.1 +-# and 10.3 in RFC 3484. The default is: ++# and 10.3 in RFC 3484. The RFC requires: + # + #precedence ::1/128 50 + #precedence ::/0 40 +@@ -58,7 +58,7 @@ + # Add another rule to the RFC 3484 scope table for IPv4 addresses. + # By default the scope IDs described in section 3.2 in RFC 3484 are + # used. Changing these defaults should hardly ever be necessary. +-# The defaults are equivalent to: ++# The definitions in RFC 1918 are equivalent to: + # + #scopev4 ::ffff:169.254.0.0/112 2 + #scopev4 ::ffff:127.0.0.0/104 2 +@@ -75,3 +75,5 @@ + #scopev4 ::ffff:169.254.0.0/112 2 + #scopev4 ::ffff:127.0.0.0/104 2 + #scopev4 ::ffff:0.0.0.0/96 14 ++# ++# This is what the Red Hat setting currently uses. +--- glibc-2.12-2-gc4ccff1/posix/getconf.speclist.h ++++ glibc-2.12-1/posix/getconf.speclist.h +@@ -0,0 +1,39 @@ ++#include <unistd.h> ++const char *START_OF_STRINGS = ++#if _POSIX_V7_ILP32_OFF32 == 1 ++"POSIX_V7_ILP32_OFF32" ++#endif ++#if _POSIX_V7_ILP32_OFFBIG == 1 ++"POSIX_V7_ILP32_OFFBIG" ++#endif ++#if _POSIX_V7_LP64_OFF64 == 1 ++"POSIX_V7_LP64_OFF64" ++#endif ++#if _POSIX_V7_LPBIG_OFFBIG == 1 ++"POSIX_V7_LPBIG_OFFBIG" ++#endif ++#if _POSIX_V6_ILP32_OFF32 == 1 ++"POSIX_V6_ILP32_OFF32" ++#endif ++#if _POSIX_V6_ILP32_OFFBIG == 1 ++"POSIX_V6_ILP32_OFFBIG" ++#endif ++#if _POSIX_V6_LP64_OFF64 == 1 ++"POSIX_V6_LP64_OFF64" ++#endif ++#if _POSIX_V6_LPBIG_OFFBIG == 1 ++"POSIX_V6_LPBIG_OFFBIG" ++#endif ++#if _XBS5_ILP32_OFF32 == 1 ++"XBS5_ILP32_OFF32" ++#endif ++#if _XBS5_ILP32_OFFBIG == 1 ++"XBS5_ILP32_OFFBIG" ++#endif ++#if _XBS5_LP64_OFF64 == 1 ++"XBS5_LP64_OFF64" ++#endif ++#if _XBS5_LPBIG_OFFBIG == 1 ++"XBS5_LPBIG_OFFBIG" ++#endif ++""; +--- glibc-2.12-2-gc4ccff1/streams/Makefile ++++ glibc-2.12-1/streams/Makefile +@@ -21,7 +21,7 @@ + # + subdir := streams + +-headers = stropts.h sys/stropts.h bits/stropts.h bits/xtitypes.h ++#headers = stropts.h sys/stropts.h bits/stropts.h bits/xtitypes.h + routines = isastream getmsg getpmsg putmsg putpmsg fattach fdetach + + include ../Rules +--- glibc-2.12-2-gc4ccff1/sysdeps/generic/dl-cache.h ++++ glibc-2.12-1/sysdeps/generic/dl-cache.h +@@ -36,6 +36,14 @@ + # define add_system_dir(dir) add_dir (dir) + #endif + ++#ifndef arch_startup ++# define arch_startup(argc, argv) do { } while (0) ++#endif ++ ++#ifndef add_arch_dirs ++# define add_arch_dirs(config_file) do { } while (0) ++#endif ++ + #define CACHEMAGIC "ld.so-1.7.0" + + /* libc5 and glibc 2.0/2.1 use the same format. For glibc 2.2 another +--- glibc-2.12-2-gc4ccff1/sysdeps/i386/Makefile ++++ glibc-2.12-1/sysdeps/i386/Makefile +@@ -2,6 +2,8 @@ + # Every i386 port in use uses gas syntax (I think). + asm-CPPFLAGS += -DGAS_SYNTAX + ++sysdep-ASFLAGS += -U__i686 ++ + # The i386 `long double' is a distinct type we support. + long-double-fcts = yes + +@@ -64,6 +66,14 @@ endif + + ifneq (,$(filter -mno-tls-direct-seg-refs,$(CFLAGS))) + defines += -DNO_TLS_DIRECT_SEG_REFS ++else ++# .a libraries are not performance critical and so we ++# build them without direct TLS segment references ++# always. ++CPPFLAGS-.o += -DNO_TLS_DIRECT_SEG_REFS ++CFLAGS-.o += -mno-tls-direct-seg-refs ++CPPFLAGS-.oS += -DNO_TLS_DIRECT_SEG_REFS ++CFLAGS-.oS += -mno-tls-direct-seg-refs + endif + + ifeq ($(subdir),elf) +--- glibc-2.12-2-gc4ccff1/sysdeps/ia64/Makefile ++++ glibc-2.12-1/sysdeps/ia64/Makefile +@@ -12,8 +12,8 @@ elide-routines.os += hp-timing + + ifeq (yes,$(build-shared)) + # Compatibility +-sysdep_routines += ia64libgcc +-shared-only-routines += ia64libgcc ++sysdep_routines += libgcc-compat ++shared-only-routines += libgcc-compat + endif + endif + +--- glibc-2.12-2-gc4ccff1/sysdeps/ia64/ia64libgcc.S ++++ glibc-2.12-1/sysdeps/ia64/ia64libgcc.S +@@ -1,350 +0,0 @@ +-/* From the Intel IA-64 Optimization Guide, choose the minimum latency +- alternative. */ +- +-#include <sysdep.h> +-#undef ret +- +-#include <shlib-compat.h> +- +-#if SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_2_6) +- +-/* __divtf3 +- Compute a 80-bit IEEE double-extended quotient. +- farg0 holds the dividend. farg1 holds the divisor. */ +- +-ENTRY(___divtf3) +- cmp.eq p7, p0 = r0, r0 +- frcpa.s0 f10, p6 = farg0, farg1 +- ;; +-(p6) cmp.ne p7, p0 = r0, r0 +- .pred.rel.mutex p6, p7 +-(p6) fnma.s1 f11 = farg1, f10, f1 +-(p6) fma.s1 f12 = farg0, f10, f0 +- ;; +-(p6) fma.s1 f13 = f11, f11, f0 +-(p6) fma.s1 f14 = f11, f11, f11 +- ;; +-(p6) fma.s1 f11 = f13, f13, f11 +-(p6) fma.s1 f13 = f14, f10, f10 +- ;; +-(p6) fma.s1 f10 = f13, f11, f10 +-(p6) fnma.s1 f11 = farg1, f12, farg0 +- ;; +-(p6) fma.s1 f11 = f11, f10, f12 +-(p6) fnma.s1 f12 = farg1, f10, f1 +- ;; +-(p6) fma.s1 f10 = f12, f10, f10 +-(p6) fnma.s1 f12 = farg1, f11, farg0 +- ;; +-(p6) fma.s0 fret0 = f12, f10, f11 +-(p7) mov fret0 = f10 +- br.ret.sptk rp +-END(___divtf3) +- .symver ___divtf3, __divtf3@GLIBC_2.2 +- +-/* __divdf3 +- Compute a 64-bit IEEE double quotient. +- farg0 holds the dividend. farg1 holds the divisor. */ +- +-ENTRY(___divdf3) +- cmp.eq p7, p0 = r0, r0 +- frcpa.s0 f10, p6 = farg0, farg1 +- ;; +-(p6) cmp.ne p7, p0 = r0, r0 +- .pred.rel.mutex p6, p7 +-(p6) fmpy.s1 f11 = farg0, f10 +-(p6) fnma.s1 f12 = farg1, f10, f1 +- ;; +-(p6) fma.s1 f11 = f12, f11, f11 +-(p6) fmpy.s1 f13 = f12, f12 +- ;; +-(p6) fma.s1 f10 = f12, f10, f10 +-(p6) fma.s1 f11 = f13, f11, f11 +- ;; +-(p6) fmpy.s1 f12 = f13, f13 +-(p6) fma.s1 f10 = f13, f10, f10 +- ;; +-(p6) fma.d.s1 f11 = f12, f11, f11 +-(p6) fma.s1 f10 = f12, f10, f10 +- ;; +-(p6) fnma.d.s1 f8 = farg1, f11, farg0 +- ;; +-(p6) fma.d fret0 = f8, f10, f11 +-(p7) mov fret0 = f10 +- br.ret.sptk rp +- ;; +-END(___divdf3) +- .symver ___divdf3, __divdf3@GLIBC_2.2 +- +-/* __divsf3 +- Compute a 32-bit IEEE float quotient. +- farg0 holds the dividend. farg1 holds the divisor. */ +- +-ENTRY(___divsf3) +- cmp.eq p7, p0 = r0, r0 +- frcpa.s0 f10, p6 = farg0, farg1 +- ;; +-(p6) cmp.ne p7, p0 = r0, r0 +- .pred.rel.mutex p6, p7 +-(p6) fmpy.s1 f8 = farg0, f10 +-(p6) fnma.s1 f9 = farg1, f10, f1 +- ;; +-(p6) fma.s1 f8 = f9, f8, f8 +-(p6) fmpy.s1 f9 = f9, f9 +- ;; +-(p6) fma.s1 f8 = f9, f8, f8 +-(p6) fmpy.s1 f9 = f9, f9 +- ;; +-(p6) fma.d.s1 f10 = f9, f8, f8 +- ;; +-(p6) fnorm.s.s0 fret0 = f10 +-(p7) mov fret0 = f10 +- br.ret.sptk rp +- ;; +-END(___divsf3) +- .symver ___divsf3, __divsf3@GLIBC_2.2 +- +-/* __divdi3 +- Compute a 64-bit integer quotient. +- in0 holds the dividend. in1 holds the divisor. */ +- +-ENTRY(___divdi3) +- .regstk 2,0,0,0 +- /* Transfer inputs to FP registers. */ +- setf.sig f8 = in0 +- setf.sig f9 = in1 +- ;; +- /* Convert the inputs to FP, so that they won't be treated as +- unsigned. */ +- fcvt.xf f8 = f8 +- fcvt.xf f9 = f9 +- ;; +- /* Compute the reciprocal approximation. */ +- frcpa.s1 f10, p6 = f8, f9 +- ;; +- /* 3 Newton-Raphson iterations. */ +-(p6) fnma.s1 f11 = f9, f10, f1 +-(p6) fmpy.s1 f12 = f8, f10 +- ;; +-(p6) fmpy.s1 f13 = f11, f11 +-(p6) fma.s1 f12 = f11, f12, f12 +- ;; +-(p6) fma.s1 f10 = f11, f10, f10 +-(p6) fma.s1 f11 = f13, f12, f12 +- ;; +-(p6) fma.s1 f10 = f13, f10, f10 +-(p6) fnma.s1 f12 = f9, f11, f8 +- ;; +-(p6) fma.s1 f10 = f12, f10, f11 +- ;; +- /* Round quotient to an integer. */ +- fcvt.fx.trunc.s1 f10 = f10 +- ;; +- /* Transfer result to GP registers. */ +- getf.sig ret0 = f10 +- br.ret.sptk rp +- ;; +-END(___divdi3) +- .symver ___divdi3, __divdi3@GLIBC_2.2 +- +-/* __moddi3 +- Compute a 64-bit integer modulus. +- in0 holds the dividend (a). in1 holds the divisor (b). */ +- +-ENTRY(___moddi3) +- .regstk 2,0,0,0 +- /* Transfer inputs to FP registers. */ +- setf.sig f14 = in0 +- setf.sig f9 = in1 +- ;; +- /* Convert the inputs to FP, so that they won't be treated as +- unsigned. */ +- fcvt.xf f8 = f14 +- fcvt.xf f9 = f9 +- ;; +- /* Compute the reciprocal approximation. */ +- frcpa.s1 f10, p6 = f8, f9 +- ;; +- /* 3 Newton-Raphson iterations. */ +-(p6) fmpy.s1 f12 = f8, f10 +-(p6) fnma.s1 f11 = f9, f10, f1 +- ;; +-(p6) fma.s1 f12 = f11, f12, f12 +-(p6) fmpy.s1 f13 = f11, f11 +- ;; +-(p6) fma.s1 f10 = f11, f10, f10 +-(p6) fma.s1 f11 = f13, f12, f12 +- ;; +- sub in1 = r0, in1 +-(p6) fma.s1 f10 = f13, f10, f10 +-(p6) fnma.s1 f12 = f9, f11, f8 +- ;; +- setf.sig f9 = in1 +-(p6) fma.s1 f10 = f12, f10, f11 +- ;; +- fcvt.fx.trunc.s1 f10 = f10 +- ;; +- /* r = q * (-b) + a */ +- xma.l f10 = f10, f9, f14 +- ;; +- /* Transfer result to GP registers. */ +- getf.sig ret0 = f10 +- br.ret.sptk rp +- ;; +-END(___moddi3) +- .symver ___moddi3, __moddi3@GLIBC_2.2 +- +-/* __udivdi3 +- Compute a 64-bit unsigned integer quotient. +- in0 holds the dividend. in1 holds the divisor. */ +- +-ENTRY(___udivdi3) +- .regstk 2,0,0,0 +- /* Transfer inputs to FP registers. */ +- setf.sig f8 = in0 +- setf.sig f9 = in1 +- ;; +- /* Convert the inputs to FP, to avoid FP software-assist faults. */ +- fcvt.xuf.s1 f8 = f8 +- fcvt.xuf.s1 f9 = f9 +- ;; +- /* Compute the reciprocal approximation. */ +- frcpa.s1 f10, p6 = f8, f9 +- ;; +- /* 3 Newton-Raphson iterations. */ +-(p6) fnma.s1 f11 = f9, f10, f1 +-(p6) fmpy.s1 f12 = f8, f10 +- ;; +-(p6) fmpy.s1 f13 = f11, f11 +-(p6) fma.s1 f12 = f11, f12, f12 +- ;; +-(p6) fma.s1 f10 = f11, f10, f10 +-(p6) fma.s1 f11 = f13, f12, f12 +- ;; +-(p6) fma.s1 f10 = f13, f10, f10 +-(p6) fnma.s1 f12 = f9, f11, f8 +- ;; +-(p6) fma.s1 f10 = f12, f10, f11 +- ;; +- /* Round quotient to an unsigned integer. */ +- fcvt.fxu.trunc.s1 f10 = f10 +- ;; +- /* Transfer result to GP registers. */ +- getf.sig ret0 = f10 +- br.ret.sptk rp +- ;; +-END(___udivdi3) +- .symver ___udivdi3, __udivdi3@GLIBC_2.2 +- +-/* __umoddi3 +- Compute a 64-bit unsigned integer modulus. +- in0 holds the dividend (a). in1 holds the divisor (b). */ +- +-ENTRY(___umoddi3) +- .regstk 2,0,0,0 +- /* Transfer inputs to FP registers. */ +- setf.sig f14 = in0 +- setf.sig f9 = in1 +- ;; +- /* Convert the inputs to FP, to avoid FP software assist faults. */ +- fcvt.xuf.s1 f8 = f14 +- fcvt.xuf.s1 f9 = f9 +- ;; +- /* Compute the reciprocal approximation. */ +- frcpa.s1 f10, p6 = f8, f9 +- ;; +- /* 3 Newton-Raphson iterations. */ +-(p6) fmpy.s1 f12 = f8, f10 +-(p6) fnma.s1 f11 = f9, f10, f1 +- ;; +-(p6) fma.s1 f12 = f11, f12, f12 +-(p6) fmpy.s1 f13 = f11, f11 +- ;; +-(p6) fma.s1 f10 = f11, f10, f10 +-(p6) fma.s1 f11 = f13, f12, f12 +- ;; +- sub in1 = r0, in1 +-(p6) fma.s1 f10 = f13, f10, f10 +-(p6) fnma.s1 f12 = f9, f11, f8 +- ;; +- setf.sig f9 = in1 +-(p6) fma.s1 f10 = f12, f10, f11 +- ;; +- /* Round quotient to an unsigned integer. */ +- fcvt.fxu.trunc.s1 f10 = f10 +- ;; +- /* r = q * (-b) + a */ +- xma.l f10 = f10, f9, f14 +- ;; +- /* Transfer result to GP registers. */ +- getf.sig ret0 = f10 +- br.ret.sptk rp +- ;; +-END(___umoddi3) +- .symver ___umoddi3, __umoddi3@GLIBC_2.2 +- +-/* __multi3 +- Compute a 128-bit multiply of 128-bit multiplicands. +- in0/in1 holds one multiplicand (a), in2/in3 holds the other one (b). */ +- +-ENTRY(___multi3) +- .regstk 4,0,0,0 +- setf.sig f6 = in1 +- movl r19 = 0xffffffff +- setf.sig f7 = in2 +- ;; +- and r14 = r19, in0 +- ;; +- setf.sig f10 = r14 +- and r14 = r19, in2 +- xmpy.l f9 = f6, f7 +- ;; +- setf.sig f6 = r14 +- shr.u r14 = in0, 32 +- ;; +- setf.sig f7 = r14 +- shr.u r14 = in2, 32 +- ;; +- setf.sig f8 = r14 +- xmpy.l f11 = f10, f6 +- xmpy.l f6 = f7, f6 +- ;; +- getf.sig r16 = f11 +- xmpy.l f7 = f7, f8 +- ;; +- shr.u r14 = r16, 32 +- and r16 = r19, r16 +- getf.sig r17 = f6 +- setf.sig f6 = in0 +- ;; +- setf.sig f11 = r14 +- getf.sig r21 = f7 +- setf.sig f7 = in3 +- ;; +- xma.l f11 = f10, f8, f11 +- xma.l f6 = f6, f7, f9 +- ;; +- getf.sig r18 = f11 +- ;; +- add r18 = r18, r17 +- ;; +- and r15 = r19, r18 +- cmp.ltu p7, p6 = r18, r17 +- ;; +- getf.sig r22 = f6 +-(p7) adds r14 = 1, r19 +- ;; +-(p7) add r21 = r21, r14 +- shr.u r14 = r18, 32 +- shl r15 = r15, 32 +- ;; +- add r20 = r21, r14 +- ;; +- add ret0 = r15, r16 +- add ret1 = r22, r20 +- br.ret.sptk rp +- ;; +-END(___multi3) +- .symver ___multi3, __multi3@GLIBC_2.2 +- +-#endif +--- glibc-2.12-2-gc4ccff1/sysdeps/ia64/libgcc-compat.c ++++ glibc-2.12-1/sysdeps/ia64/libgcc-compat.c +@@ -0,0 +1,84 @@ ++/* pre-.hidden libgcc compatibility ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++ ++#include <stdint.h> ++#include <shlib-compat.h> ++ ++#if SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_2_6) ++ ++typedef int int128_t __attribute__((__mode__(TI))); ++ ++extern long double __divtf3 (long double, long double) attribute_hidden; ++long double INTUSE (__divtf3) (long double x, long double y) ++{ ++ return __divtf3 (x, y); ++} ++symbol_version (INTUSE (__divtf3), __divtf3, GLIBC_2.2); ++ ++extern double __divdf3 (double, double) attribute_hidden; ++double INTUSE (__divdf3) (double x, double y) ++{ ++ return __divdf3 (x, y); ++} ++symbol_version (INTUSE (__divdf3), __divdf3, GLIBC_2.2); ++ ++extern float __divsf3 (float, float) attribute_hidden; ++float INTUSE (__divsf3) (float x, float y) ++{ ++ return __divsf3 (x, y); ++} ++symbol_version (INTUSE (__divsf3), __divsf3, GLIBC_2.2); ++ ++extern int64_t __divdi3 (int64_t, int64_t) attribute_hidden; ++int64_t INTUSE (__divdi3) (int64_t x, int64_t y) ++{ ++ return __divdi3 (x, y); ++} ++symbol_version (INTUSE (__divdi3), __divdi3, GLIBC_2.2); ++ ++extern int64_t __moddi3 (int64_t, int64_t) attribute_hidden; ++int64_t INTUSE (__moddi3) (int64_t x, int64_t y) ++{ ++ return __moddi3 (x, y); ++} ++symbol_version (INTUSE (__moddi3), __moddi3, GLIBC_2.2); ++ ++extern uint64_t __udivdi3 (uint64_t, uint64_t) attribute_hidden; ++uint64_t INTUSE (__udivdi3) (uint64_t x, uint64_t y) ++{ ++ return __udivdi3 (x, y); ++} ++symbol_version (INTUSE (__udivdi3), __udivdi3, GLIBC_2.2); ++ ++extern uint64_t __umoddi3 (uint64_t, uint64_t) attribute_hidden; ++uint64_t INTUSE (__umoddi3) (uint64_t x, uint64_t y) ++{ ++ return __umoddi3 (x, y); ++} ++symbol_version (INTUSE (__umoddi3), __umoddi3, GLIBC_2.2); ++ ++extern int128_t __multi3 (int128_t, int128_t) attribute_hidden; ++int128_t INTUSE (__multi3) (int128_t x, int128_t y) ++{ ++ return __multi3 (x, y); ++} ++symbol_version (INTUSE (__multi3), __multi3, GLIBC_2.2); ++ ++#endif +--- glibc-2.12-2-gc4ccff1/sysdeps/posix/getaddrinfo.c ++++ glibc-2.12-1/sysdeps/posix/getaddrinfo.c +@@ -1099,10 +1099,12 @@ static const struct scopeentry + /* Link-local addresses: scope 2. */ + { { { 169, 254, 0, 0 } }, htonl_c (0xffff0000), 2 }, + { { { 127, 0, 0, 0 } }, htonl_c (0xff000000), 2 }, ++#if 0 + /* Site-local addresses: scope 5. */ + { { { 10, 0, 0, 0 } }, htonl_c (0xff000000), 5 }, + { { { 172, 16, 0, 0 } }, htonl_c (0xfff00000), 5 }, + { { { 192, 168, 0, 0 } }, htonl_c (0xffff0000), 5 }, ++#endif + /* Default: scope 14. */ + { { { 0, 0, 0, 0 } }, htonl_c (0x00000000), 14 } + }; +--- glibc-2.12-2-gc4ccff1/sysdeps/powerpc/powerpc64/Makefile ++++ glibc-2.12-1/sysdeps/powerpc/powerpc64/Makefile +@@ -30,6 +30,7 @@ ifneq ($(elf),no) + # we use -fpic instead which is much better. + CFLAGS-initfini.s += -fpic -O1 + endif ++CFLAGS-libc-start.c += -fno-asynchronous-unwind-tables + endif + + ifeq ($(subdir),elf) +--- glibc-2.12-2-gc4ccff1/sysdeps/unix/nice.c ++++ glibc-2.12-1/sysdeps/unix/nice.c +@@ -42,7 +42,12 @@ nice (int incr) + __set_errno (save); + } + +- result = setpriority (PRIO_PROCESS, 0, prio + incr); ++ prio += incr; ++ if (prio < PRIO_MIN) ++ prio = PRIO_MIN; ++ else if (prio >= PRIO_MAX) ++ prio = PRIO_MAX - 1; ++ result = setpriority (PRIO_PROCESS, 0, prio); + if (result == -1) + { + if (errno == EACCES) +--- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/check_pf.c ++++ glibc-2.12-1/sysdeps/unix/sysv/linux/check_pf.c +@@ -27,13 +27,10 @@ + #include <unistd.h> + #include <sys/socket.h> + +-#include <asm/types.h> +-#include <linux/netlink.h> +-#include <linux/rtnetlink.h> +- + #include <not-cancel.h> + #include <kernel-features.h> + ++#include "netlinkaccess.h" + + #ifndef IFA_F_HOMEADDRESS + # define IFA_F_HOMEADDRESS 0 +--- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/dl-osinfo.h ++++ glibc-2.12-1/sysdeps/unix/sysv/linux/dl-osinfo.h +@@ -17,10 +17,13 @@ + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + ++#include <errno.h> + #include <kernel-features.h> + #include <dl-sysdep.h> + #include <fcntl.h> + #include <stdint.h> ++#include <hp-timing.h> ++#include <endian.h> + + #ifndef MIN + # define MIN(a,b) (((a)<(b))?(a):(b)) +@@ -80,6 +83,32 @@ _dl_setup_stack_chk_guard (void *dl_rand + unsigned char *p = (unsigned char *) &ret; + p[sizeof (ret) - 1] = 255; + p[sizeof (ret) - 2] = '\n'; ++#ifdef HP_TIMING_NOW ++ hp_timing_t hpt; ++ HP_TIMING_NOW (hpt); ++ hpt = (hpt & 0xffff) << 8; ++ ret ^= hpt; ++#endif ++ uintptr_t stk; ++ /* Avoid GCC being too smart. */ ++ asm ("" : "=r" (stk) : "r" (p)); ++ stk &= 0x7ffff0; ++#if __BYTE_ORDER == __LITTLE_ENDIAN ++ stk <<= (__WORDSIZE - 23); ++#elif __WORDSIZE == 64 ++ stk <<= 31; ++#endif ++ ret ^= stk; ++ /* Avoid GCC being too smart. */ ++ p = (unsigned char *) &errno; ++ asm ("" : "=r" (stk) : "r" (p)); ++ stk &= 0x7fff00; ++#if __BYTE_ORDER == __LITTLE_ENDIAN ++ stk <<= (__WORDSIZE - 29); ++#else ++ stk >>= 8; ++#endif ++ ret ^= stk; + } + else + #endif +--- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/futimesat.c ++++ glibc-2.12-1/sysdeps/unix/sysv/linux/futimesat.c +@@ -37,14 +37,14 @@ futimesat (fd, file, tvp) + { + int result; + ++ if (file == NULL) ++ return __futimes (fd, tvp); ++ + #ifdef __NR_futimesat + # ifndef __ASSUME_ATFCTS + if (__have_atfcts >= 0) + # endif + { +- if (file == NULL) +- return __futimes (fd, tvp); +- + result = INLINE_SYSCALL (futimesat, 3, fd, file, tvp); + # ifndef __ASSUME_ATFCTS + if (result == -1 && errno == ENOSYS) +@@ -58,22 +58,7 @@ futimesat (fd, file, tvp) + #ifndef __ASSUME_ATFCTS + char *buf = NULL; + +- if (file == NULL) +- { +- static const char procfd[] = "/proc/self/fd/%d"; +- /* Buffer for the path name we are going to use. It consists of +- - the string /proc/self/fd/ +- - the file descriptor number. +- The final NUL is included in the sizeof. A bit of overhead +- due to the format elements compensates for possible negative +- numbers. */ +- size_t buflen = sizeof (procfd) + sizeof (int) * 3; +- buf = alloca (buflen); +- +- __snprintf (buf, buflen, procfd, fd); +- file = buf; +- } +- else if (fd != AT_FDCWD && file[0] != '/') ++ if (fd != AT_FDCWD && file[0] != '/') + { + size_t filelen = strlen (file); + if (__builtin_expect (filelen == 0, 0)) +--- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/i386/dl-cache.h ++++ glibc-2.12-1/sysdeps/unix/sysv/linux/i386/dl-cache.h +@@ -0,0 +1,59 @@ ++/* Support for reading /etc/ld.so.cache files written by Linux ldconfig. ++ Copyright (C) 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++static inline int ++is_ia64 (void) ++{ ++ unsigned int fl1, fl2; ++ ++ /* See if we can use cpuid. */ ++ __asm__ ("pushfl; pushfl; popl %0; movl %0,%1; xorl %2,%0;" ++ "pushl %0; popfl; pushfl; popl %0; popfl" ++ : "=&r" (fl1), "=&r" (fl2) ++ : "i" (0x00200000)); ++ if (((fl1 ^ fl2) & 0x00200000) == 0) ++ return 0; ++ ++ /* Host supports cpuid. See if cpuid gives capabilities, try ++ CPUID(0). Preserve %ebx and %ecx; cpuid insn clobbers these, we ++ don't need their CPUID values here, and %ebx may be the PIC ++ register. */ ++ __asm__ ("pushl %%ecx; pushl %%ebx; cpuid; popl %%ebx; popl %%ecx" ++ : "=a" (fl1) : "0" (0) : "edx", "cc"); ++ if (fl1 == 0) ++ return 0; ++ ++ /* Invoke CPUID(1), return %edx; caller can examine bits to ++ determine what's supported. */ ++ __asm__ ("pushl %%ecx; pushl %%ebx; cpuid; popl %%ebx; popl %%ecx" ++ : "=d" (fl2), "=a" (fl1) : "1" (1) : "cc"); ++ return (fl2 & (1 << 30)) != 0; ++} ++ ++#define arch_startup(argc, argv) \ ++ do { \ ++ /* On IA-64, try to execute 64-bit ldconfig if possible. \ ++ This is because the badly designed /emul/ia32-linux hack \ ++ will cause 32-bit ldconfig to do all sorts of weird things. */ \ ++ if (is_ia64 ()) \ ++ execv ("/emul/ia32-linux/../../sbin/ldconfig", \ ++ (char *const *) argv); \ ++ } while (0) ++ ++#include_next <dl-cache.h> +--- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/ia64/dl-cache.h ++++ glibc-2.12-1/sysdeps/unix/sysv/linux/ia64/dl-cache.h +@@ -22,4 +22,31 @@ + #define _dl_cache_check_flags(flags) \ + ((flags) == _DL_CACHE_DEFAULT_ID) + ++#define EMUL_HACK "/emul/ia32-linux" ++ ++#define arch_startup(argc, argv) unlink (EMUL_HACK LD_SO_CACHE) ++ ++#define add_arch_dirs(config_file) \ ++ do { \ ++ int save_verbose = opt_verbose; \ ++ opt_verbose = 0; \ ++ \ ++ parse_conf (config_file, EMUL_HACK, true); \ ++ \ ++ /* Always add the standard search paths. */ \ ++ add_system_dir (EMUL_HACK SLIBDIR); \ ++ if (strcmp (SLIBDIR, LIBDIR)) \ ++ add_system_dir (EMUL_HACK LIBDIR); \ ++ \ ++ char emul_config_file[strlen (config_file) \ ++ + sizeof EMUL_HACK]; \ ++ strcpy (mempcpy (emul_config_file, EMUL_HACK, \ ++ strlen (EMUL_HACK)), config_file); \ ++ \ ++ if (! access (emul_config_file, R_OK)) \ ++ parse_conf (emul_config_file, EMUL_HACK, true); \ ++ \ ++ opt_verbose = save_verbose; \ ++ } while (0) ++ + #include_next <dl-cache.h> +--- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/ia64/dl-procinfo.c ++++ glibc-2.12-1/sysdeps/unix/sysv/linux/ia64/dl-procinfo.c +@@ -0,0 +1,5 @@ ++#ifdef IS_IN_ldconfig ++#include <sysdeps/i386/dl-procinfo.c> ++#else ++#include <sysdeps/generic/dl-procinfo.c> ++#endif +--- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/ia64/dl-procinfo.h ++++ glibc-2.12-1/sysdeps/unix/sysv/linux/ia64/dl-procinfo.h +@@ -0,0 +1,5 @@ ++#ifdef IS_IN_ldconfig ++#include <sysdeps/unix/sysv/linux/i386/dl-procinfo.h> ++#else ++#include <sysdeps/generic/dl-procinfo.h> ++#endif +--- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/ia64/ldd-rewrite.sed ++++ glibc-2.12-1/sysdeps/unix/sysv/linux/ia64/ldd-rewrite.sed +@@ -1 +1 @@ +-s_^(RTLDLIST=)([^ ]*)-ia64(.so.[0-9.]*)[ ]*$_\1"\2-ia64\3 \2\3"_ ++s_^(RTLDLIST=)([^ ]*)-ia64(.so.[0-9.]*)[ ]*$_\1"\2-ia64\3 /emul/ia32-linux\2\3"_ +--- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/netlinkaccess.h ++++ glibc-2.12-1/sysdeps/unix/sysv/linux/netlinkaccess.h +@@ -25,6 +25,24 @@ + + #include <kernel-features.h> + ++#ifndef IFA_MAX ++/* 2.6.19 kernel headers helpfully removed some macros and ++ moved lots of stuff into new headers, some of which aren't ++ included by linux/rtnetlink.h. */ ++#include <linux/if_addr.h> ++#endif ++ ++#ifndef IFA_RTA ++# define IFA_RTA(r) \ ++ ((struct rtattr*) ((char*)(r) + NLMSG_ALIGN (sizeof (struct ifaddrmsg)))) ++# define IFA_PAYLOAD(n) NLMSG_PAYLOAD (n, sizeof (struct ifaddrmsg)) ++#endif ++ ++#ifndef IFLA_RTA ++# define IFLA_RTA(r) \ ++ ((struct rtattr*) ((char*)(r) + NLMSG_ALIGN (sizeof (struct ifinfomsg)))) ++# define IFLA_PAYLOAD(n) NLMSG_PAYLOAD (n, sizeof (struct ifinfomsg)) ++#endif + + struct netlink_res + { +--- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/paths.h ++++ glibc-2.12-1/sysdeps/unix/sysv/linux/paths.h +@@ -62,7 +62,7 @@ + #define _PATH_TTY "/dev/tty" + #define _PATH_UNIX "/boot/vmlinux" + #define _PATH_UTMP "/var/run/utmp" +-#define _PATH_VI "/usr/bin/vi" ++#define _PATH_VI "/bin/vi" + #define _PATH_WTMP "/var/log/wtmp" + + /* Provide trailing slash, since mostly used for building pathnames. */ +--- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/sparc/sparc64/fxstat.c ++++ glibc-2.12-1/sysdeps/unix/sysv/linux/sparc/sparc64/fxstat.c +@@ -1 +1 @@ +-#include "../../fxstat.c" ++#include "../../i386/fxstat.c" +--- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/tcsetattr.c ++++ glibc-2.12-1/sysdeps/unix/sysv/linux/tcsetattr.c +@@ -49,6 +49,7 @@ tcsetattr (fd, optional_actions, termios + { + struct __kernel_termios k_termios; + unsigned long int cmd; ++ int retval; + + switch (optional_actions) + { +@@ -80,6 +81,35 @@ tcsetattr (fd, optional_actions, termios + memcpy (&k_termios.c_cc[0], &termios_p->c_cc[0], + __KERNEL_NCCS * sizeof (cc_t)); + +- return INLINE_SYSCALL (ioctl, 3, fd, cmd, &k_termios); ++ retval = INLINE_SYSCALL (ioctl, 3, fd, cmd, &k_termios); ++ ++ if (retval == 0 && cmd == TCSETS) ++ { ++ /* The Linux kernel has a bug which silently ignore the invalid ++ c_cflag on pty. We have to check it here. */ ++ int save = errno; ++ retval = INLINE_SYSCALL (ioctl, 3, fd, TCGETS, &k_termios); ++ if (retval) ++ { ++ /* We cannot verify if the setting is ok. We don't return ++ an error (?). */ ++ __set_errno (save); ++ retval = 0; ++ } ++ else if ((termios_p->c_cflag & (PARENB | CREAD)) ++ != (k_termios.c_cflag & (PARENB | CREAD)) ++ || ((termios_p->c_cflag & CSIZE) ++ && ((termios_p->c_cflag & CSIZE) ++ != (k_termios.c_cflag & CSIZE)))) ++ { ++ /* It looks like the Linux kernel silently changed the ++ PARENB/CREAD/CSIZE bits in c_cflag. Report it as an ++ error. */ ++ __set_errno (EINVAL); ++ retval = -1; ++ } ++ } ++ ++ return retval; + } + libc_hidden_def (tcsetattr) +--- glibc-2.12-2-gc4ccff1/timezone/zic.c ++++ glibc-2.12-1/timezone/zic.c +@@ -1921,7 +1921,7 @@ const int zonecount; + if (stdrp != NULL && stdrp->r_hiyear == 2037) + return; + } +- if (stdrp == NULL && zp->z_nrules != 0) ++ if (stdrp == NULL && (zp->z_nrules != 0 || zp->z_stdoff != 0)) + return; + abbrvar = (stdrp == NULL) ? "" : stdrp->r_abbrvar; + doabbr(result, zp->z_format, abbrvar, FALSE, TRUE); diff --git a/src/patches/glibc/glibc-getlogin-r.patch b/src/patches/glibc/glibc-getlogin-r.patch new file mode 100644 index 0000000..9181ce1 --- /dev/null +++ b/src/patches/glibc/glibc-getlogin-r.patch @@ -0,0 +1,36 @@ +2010-05-05 Ulrich Drepper drepper@redhat.com + + [BZ #11571] + * sysdeps/unix/sysv/linux/getlogin_r.c (__getlogin_r_loginuid): Handle + too small buffers according to the standard. + +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/getlogin_r.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/getlogin_r.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/getlogin_r.c +@@ -81,13 +81,22 @@ __getlogin_r_loginuid (name, namesize) + if (tpwd == NULL) + goto fail; + +- strncpy (name, pwd.pw_name, namesize - 1); +- name[namesize - 1] = '\0'; ++ int result = 0; ++ size_t needed = strlen (pwd.pw_name) + 1; ++ if (needed > namesize) ++ { ++ __set_errno (ERANGE); ++ result = ERANGE; ++ goto out; ++ } + ++ memcpy (name, pwd.pw_name, needed); ++ ++ out: + if (use_malloc) + free (buf); + +- return 0; ++ return result; + } + + diff --git a/src/patches/glibc/glibc-localedata.patch b/src/patches/glibc/glibc-localedata.patch new file mode 100644 index 0000000..15de7c6 --- /dev/null +++ b/src/patches/glibc/glibc-localedata.patch @@ -0,0 +1,18 @@ +2010-05-04 Andreas Schwab schwab@redhat.com + + * SUPPORTED (SUPPORTED-LOCALES): Fix name of tt_RU.UTF-8@iqtelif + locale. + +Index: glibc-2.12-2-gc4ccff1/localedata/SUPPORTED +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/SUPPORTED ++++ glibc-2.12-2-gc4ccff1/localedata/SUPPORTED +@@ -392,7 +392,7 @@ tr_TR.UTF-8/UTF-8 \ + tr_TR/ISO-8859-9 \ + ts_ZA/UTF-8 \ + tt_RU.UTF-8/UTF-8 \ +-tt_RU@iqtelif.UTF-8/UTF-8 \ ++tt_RU.UTF-8@iqtelif/UTF-8 \ + ug_CN/UTF-8 \ + uk_UA.UTF-8/UTF-8 \ + uk_UA/KOI8-U \ diff --git a/src/patches/glibc/glibc-recvmmsg.patch b/src/patches/glibc/glibc-recvmmsg.patch new file mode 100644 index 0000000..9e3aa7a --- /dev/null +++ b/src/patches/glibc/glibc-recvmmsg.patch @@ -0,0 +1,182 @@ +2010-05-21 Andreas Schwab schwab@redhat.com + + * sysdeps/unix/sysv/linux/Makefile (sysdep_routines): Add recvmmsg + and internal_recvmmsg. + * sysdeps/unix/sysv/linux/recvmmsg.c: New file. + * sysdeps/unix/sysv/linux/internal_recvmmsg.S: New file. + * sysdeps/unix/sysv/linux/socketcall.h (SOCKOP_recvmmsg): Define. + * sysdeps/unix/sysv/linux/syscalls.list (recvmmsg): Remove. + +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/Makefile ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/Makefile +@@ -12,7 +12,7 @@ CFLAGS-malloc.c += -DMORECORE_CLEARS=2 + endif + + ifeq ($(subdir),socket) +-sysdep_routines += internal_accept4 ++sysdep_routines += internal_accept4 recvmmsg internal_recvmmsg + endif + + ifeq ($(subdir),misc) +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/internal_recvmmsg.S +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/internal_recvmmsg.S +@@ -0,0 +1,14 @@ ++#include <kernel-features.h> ++#include <sys/syscall.h> ++#if !defined __NR_recvmmsg && defined __NR_socketcall ++# define socket recvmmsg ++# ifdef __ASSUME_RECVMMSG ++# define __socket recvmmsg ++# else ++# define __socket __internal_recvmmsg ++# endif ++# define NARGS 5 ++# define NEED_CANCELLATION ++# define NO_WEAK_ALIAS ++# include <socket.S> ++#endif +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/kernel-features.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/kernel-features.h ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/kernel-features.h +@@ -547,3 +547,8 @@ + #if __LINUX_KERNEL_VERSION >= 0x020620 + # define __ASSUME_F_GETOWN_EX 1 + #endif ++ ++/* Support for the recvmmsg syscall was added in 2.6.33. */ ++#if __LINUX_KERNEL_VERSION >= 0x020621 ++# define __ASSUME_RECVMMSG 1 ++#endif +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/recvmmsg.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/recvmmsg.c +@@ -0,0 +1,100 @@ ++/* Copyright (C) 2010 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Andreas Schwab schwab@redhat.com, 2010. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include <errno.h> ++#include <sys/socket.h> ++ ++#include <sysdep-cancel.h> ++#include <sys/syscall.h> ++#include <kernel-features.h> ++ ++ ++#ifdef __NR_recvmmsg ++int ++recvmmsg (int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags, ++ const struct timespec *tmo) ++{ ++ if (SINGLE_THREAD_P) ++ return INLINE_SYSCALL (recvmmsg, 5, fd, vmessages, vlen, flags, tmo); ++ ++ int oldtype = LIBC_CANCEL_ASYNC (); ++ ++ int result = INLINE_SYSCALL (recvmmsg, 5, fd, vmessages, vlen, flags, tmo); ++ ++ LIBC_CANCEL_RESET (oldtype); ++ ++ return result; ++} ++#elif defined __NR_socketcall ++# ifndef __ASSUME_RECVMMSG ++extern int __internal_recvmmsg (int fd, struct mmsghdr *vmessages, ++ unsigned int vlen, int flags, ++ const struct timespec *tmo) ++ attribute_hidden; ++ ++static int have_recvmmsg; ++ ++int ++recvmmsg (int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags, ++ const struct timespec *tmo) ++{ ++ if (__builtin_expect (have_recvmmsg >= 0, 1)) ++ { ++ int ret = __internal_recvmmsg (fd, vmessages, vlen, flags, tmo); ++ /* The kernel returns -EINVAL for unknown socket operations. ++ We need to convert that error to an ENOSYS error. */ ++ if (__builtin_expect (ret < 0, 0) ++ && have_recvmmsg == 0 ++ && errno == EINVAL) ++ { ++ /* Try another call, this time with an invalid file ++ descriptor and all other parameters cleared. This call ++ will not cause any harm and it will return ++ immediately. */ ++ ret = __internal_recvmmsg (-1, 0, 0, 0, 0); ++ if (errno == EINVAL) ++ { ++ have_recvmmsg = -1; ++ __set_errno (ENOSYS); ++ } ++ else ++ { ++ have_recvmmsg = 1; ++ __set_errno (EINVAL); ++ } ++ return -1; ++ } ++ return ret; ++ } ++ __set_errno (ENOSYS); ++ return -1; ++} ++# else ++/* When __ASSUME_RECVMMSG recvmmsg is defined in internal_recvmmsg.S. */ ++# endif ++#else ++int ++recvmmsg (int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags, ++ const struct timespec *tmo) ++{ ++ __set_errno (ENOSYS); ++ return -1; ++} ++stub_warning (recvmmsg) ++#endif +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/socketcall.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/socketcall.h ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/socketcall.h +@@ -44,5 +44,6 @@ + #define SOCKOP_sendmsg 16 + #define SOCKOP_recvmsg 17 + #define SOCKOP_accept4 18 ++#define SOCKOP_recvmmsg 19 + + #endif /* sys/socketcall.h */ +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/syscalls.list +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/syscalls.list ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/syscalls.list +@@ -53,7 +53,6 @@ prctl EXTRA prctl i:iiiii __prctl prc + putpmsg - putpmsg i:ippii putpmsg + query_module EXTRA query_module i:sipip query_module + quotactl EXTRA quotactl i:isip quotactl +-recvmmsg EXTRA recvmmsg Ci:ipiip recvmmsg + remap_file_pages - remap_file_pages i:piiii __remap_file_pages remap_file_pages + sched_getp - sched_getparam i:ip __sched_getparam sched_getparam + sched_gets - sched_getscheduler i:i __sched_getscheduler sched_getscheduler diff --git a/src/patches/glibc/glibc-rh580498.patch b/src/patches/glibc/glibc-rh580498.patch new file mode 100644 index 0000000..05b673a --- /dev/null +++ b/src/patches/glibc/glibc-rh580498.patch @@ -0,0 +1,296 @@ +2010-07-03 Ulrich Drepper drepper@redhat.com + + * tst-abstime.c (do_test): Some more cleanups + +2010-07-02 Ulrich Drepper drepper@redhat.com + + * tst-abstime.c: Correct testing and add test for sem_timedwait. + +2010-07-01 Andreas Schwab schwab@redhat.com + Ulrich Drepper drepper@redhat.com + + * Makefile (tests): Add tst-abstime. + * tst-abstime.c: New file. + * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S + (__lll_timedlock_wait): Check for timestamp before the Epoch. + * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S + (__lll_timedlock_wait): Likewise. + * sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S + (__lll_robust_timedlock_wait): Likewise. + * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S + (__pthread_cond_timedwait): Likewise. + * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S + (pthread_rwlock_timedrdlock): Likewise. + * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S + (pthread_rwlock_timedwrlock): Likewise. + * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S (sem_timedwait): + Likewise. + +Index: glibc-2.12-2-gc4ccff1/nptl/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/Makefile ++++ glibc-2.12-2-gc4ccff1/nptl/Makefile +@@ -256,6 +256,7 @@ tests = tst-typesizes \ + tst-sched1 \ + tst-backtrace1 \ + tst-oddstacklimit \ ++ tst-abstime \ + tst-vfork1 tst-vfork2 tst-vfork1x tst-vfork2x \ + tst-getpid1 tst-getpid2 tst-getpid3 \ + tst-initializers1 $(patsubst %,tst-initializers1-%,c89 gnu89 c99 gnu99) +Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S ++++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S +@@ -188,6 +188,9 @@ __lll_timedlock_wait: + je .Lreltmo + # endif + ++ cmpl $0, (%edx) ++ js 8f ++ + movl %ecx, %ebx + movl %esi, %ecx + movl %edx, %esi +@@ -223,6 +226,9 @@ __lll_timedlock_wait: + cfi_restore(%ebp) + ret + ++8: movl $ETIMEDOUT, %eax ++ jmp 7b ++ + # ifndef __ASSUME_FUTEX_CLOCK_REALTIME + .Lreltmo: + /* Check for a valid timeout value. */ +Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S ++++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S +@@ -169,9 +169,13 @@ __lll_timedlock_wait: + je .Lreltmo + # endif + ++ cmpq $0, (%rdx) ++ js 5f ++ + pushq %r9 + cfi_adjust_cfa_offset(8) + cfi_rel_offset(%r9, 0) ++ + movq %rdx, %r10 + movl $0xffffffff, %r9d + LOAD_FUTEX_WAIT_ABS (%esi) +@@ -202,6 +206,9 @@ __lll_timedlock_wait: + cfi_restore(%r9) + retq + ++5: movl $ETIMEDOUT, %eax ++ retq ++ + # ifndef __ASSUME_FUTEX_CLOCK_REALTIME + .Lreltmo: + /* Check for a valid timeout value. */ +Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S ++++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S +@@ -125,6 +125,9 @@ __lll_robust_timedlock_wait: + je .Lreltmo + # endif + ++ cmpq $0, (%rdx) ++ js 7f ++ + pushq %r9 + cfi_adjust_cfa_offset(8) + cfi_rel_offset(%r9, 0) +@@ -180,6 +183,9 @@ __lll_robust_timedlock_wait: + cfi_adjust_cfa_offset(-8) + cfi_restore(%r9) + ++7: movl $ETIMEDOUT, %eax ++ retq ++ + + # ifndef __ASSUME_FUTEX_CLOCK_REALTIME + .Lreltmo: +Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S ++++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S +@@ -144,6 +144,10 @@ __pthread_cond_timedwait: + movq %r9, 24(%rsp) + movl %edx, 4(%rsp) + ++ cmpq $0, (%r13) ++ movq $-ETIMEDOUT, %r14 ++ js 36f ++ + 38: movl cond_futex(%rdi), %r12d + + /* Unlock. */ +Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S ++++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S +@@ -102,6 +102,9 @@ pthread_rwlock_timedrdlock: + je .Lreltmo + #endif + ++ cmpq $0, (%r13) ++ js 16f /* Time is already up. */ ++ + movl $FUTEX_PRIVATE_FLAG|FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME, %esi + xorl PSHARED(%r12), %esi + movq %r13, %r10 +Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S ++++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S +@@ -99,6 +99,9 @@ pthread_rwlock_timedwrlock: + je .Lreltmo + #endif + ++ cmpq $0, (%r13) ++ js 16f /* Time is already up. */ ++ + movl $FUTEX_PRIVATE_FLAG|FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME, %esi + xorl PSHARED(%r12), %esi + movq %r13, %r10 +Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S ++++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S +@@ -77,6 +77,9 @@ sem_timedwait: + je .Lreltmo + #endif + ++ cmpq $0, (%rsi) ++ js 16f ++ + /* This push is only needed to store the sem_t pointer for the + exception handler. */ + pushq %rdi +@@ -169,6 +172,19 @@ sem_timedwait: + + retq + ++16: ++#if USE___THREAD ++ movq errno@gottpoff(%rip), %rdx ++ movl $ETIMEDOUT, %fs:(%rdx) ++#else ++ callq __errno_location@plt ++ movl $ETIMEDOUT, (%rax) ++#endif ++ ++ orl $-1, %eax ++ ++ retq ++ + #ifndef __ASSUME_FUTEX_CLOCK_REALTIME + .Lreltmo: + pushq %r12 +Index: glibc-2.12-2-gc4ccff1/nptl/tst-abstime.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/nptl/tst-abstime.c +@@ -0,0 +1,98 @@ ++/* Copyright (C) 2010 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Andreas Schwab schwab@redhat.com, 2010. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include <errno.h> ++#include <pthread.h> ++#include <semaphore.h> ++#include <stdio.h> ++ ++static pthread_cond_t c = PTHREAD_COND_INITIALIZER; ++static pthread_mutex_t m1 = PTHREAD_MUTEX_INITIALIZER; ++static pthread_mutex_t m2 = PTHREAD_MUTEX_INITIALIZER; ++static pthread_rwlock_t rw1 = PTHREAD_RWLOCK_INITIALIZER; ++static pthread_rwlock_t rw2 = PTHREAD_RWLOCK_INITIALIZER; ++static sem_t sem; ++ ++static void * ++th (void *arg) ++{ ++ long int res = 0; ++ int r; ++ struct timespec t = { -2, 0 }; ++ ++ r = pthread_mutex_timedlock (&m1, &t); ++ if (r != ETIMEDOUT) ++ { ++ puts ("pthread_mutex_timedlock did not return ETIMEDOUT"); ++ res = 1; ++ } ++ r = pthread_rwlock_timedrdlock (&rw1, &t); ++ if (r != ETIMEDOUT) ++ { ++ puts ("pthread_rwlock_timedrdlock did not return ETIMEDOUT"); ++ res = 1; ++ } ++ r = pthread_rwlock_timedwrlock (&rw2, &t); ++ if (r != ETIMEDOUT) ++ { ++ puts ("pthread_rwlock_timedwrlock did not return ETIMEDOUT"); ++ res = 1; ++ } ++ return (void *) res; ++} ++ ++static int ++do_test (void) ++{ ++ int res = 0; ++ int r; ++ struct timespec t = { -2, 0 }; ++ pthread_t pth; ++ ++ sem_init (&sem, 0, 0); ++ r = sem_timedwait (&sem, &t); ++ if (r != -1 || errno != ETIMEDOUT) ++ { ++ puts ("sem_timedwait did not fail with ETIMEDOUT"); ++ res = 1; ++ } ++ ++ pthread_mutex_lock (&m1); ++ pthread_rwlock_wrlock (&rw1); ++ pthread_rwlock_rdlock (&rw2); ++ pthread_mutex_lock (&m2); ++ if (pthread_create (&pth, 0, th, 0) != 0) ++ { ++ puts ("cannot create thread"); ++ return 1; ++ } ++ r = pthread_cond_timedwait (&c, &m2, &t); ++ if (r != ETIMEDOUT) ++ { ++ puts ("pthread_cond_timedwait did not return ETIMEDOUT"); ++ res = 1; ++ } ++ void *thres; ++ pthread_join (pth, &thres); ++ return res | (thres != NULL); ++} ++ ++ ++#define TEST_FUNCTION do_test () ++#include "../test-skeleton.c" diff --git a/src/patches/glibc/glibc-rh582738.patch b/src/patches/glibc/glibc-rh582738.patch new file mode 100644 index 0000000..40f7b80 --- /dev/null +++ b/src/patches/glibc/glibc-rh582738.patch @@ -0,0 +1,13 @@ +Index: glibc-2.11-382-g1cdb215/nscd/nscd.init +=================================================================== +--- glibc-2.11-382-g1cdb215.orig/nscd/nscd.init ++++ glibc-2.11-382-g1cdb215/nscd/nscd.init +@@ -76,7 +76,7 @@ case "$1" in + RETVAL=$? + ;; + stop) +- stop ++ [ ! -e /var/lock/subsys/nscd ] || stop + RETVAL=$? + ;; + status) diff --git a/src/patches/glibc/glibc-rh587360.patch b/src/patches/glibc/glibc-rh587360.patch new file mode 100644 index 0000000..07b62e6 --- /dev/null +++ b/src/patches/glibc/glibc-rh587360.patch @@ -0,0 +1,13 @@ +Index: glibc-2.11-382-g1cdb215/posix/regexec.c +=================================================================== +--- glibc-2.11-382-g1cdb215.orig/posix/regexec.c ++++ glibc-2.11-382-g1cdb215/posix/regexec.c +@@ -4031,7 +4031,7 @@ find_collation_sequence_value (const uns + /* Skip the collation sequence value. */ + idx += sizeof (uint32_t); + /* Skip the wide char sequence of the collating element. */ +- idx = idx + sizeof (uint32_t) * (extra[idx] + 1); ++ idx = idx + sizeof (uint32_t) * (*(int32_t *) (extra + idx) + 1); + /* If we found the entry, return the sequence value. */ + if (found) + return *(uint32_t *) (extra + idx); diff --git a/src/patches/glibc/glibc-rh593396.patch b/src/patches/glibc/glibc-rh593396.patch new file mode 100644 index 0000000..b907a36 --- /dev/null +++ b/src/patches/glibc/glibc-rh593396.patch @@ -0,0 +1,42 @@ +2010-05-06 Ulrich Drepper drepper@redhat.com + + * malloc/malloc.c (_int_free): Possible race in the most recently + added check. Only act on the data if no current modification + happened. + +Index: glibc-2.12-2-gc4ccff1/malloc/malloc.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/malloc/malloc.c ++++ glibc-2.12-2-gc4ccff1/malloc/malloc.c +@@ -4859,6 +4859,7 @@ _int_free(mstate av, mchunkptr p) + #ifdef ATOMIC_FASTBINS + mchunkptr fd; + mchunkptr old = *fb; ++ unsigned int old_idx = ~0u; + do + { + /* Another simple check: make sure the top of the bin is not the +@@ -4868,15 +4869,17 @@ _int_free(mstate av, mchunkptr p) + errstr = "double free or corruption (fasttop)"; + goto errout; + } +- if (old != NULL +- && __builtin_expect (fastbin_index(chunksize(old)) != idx, 0)) +- { +- errstr = "invalid fastbin entry (free)"; +- goto errout; +- } ++ if (old != NULL) ++ old_idx = fastbin_index(chunksize(old)); + p->fd = fd = old; + } + while ((old = catomic_compare_and_exchange_val_rel (fb, p, fd)) != fd); ++ ++ if (fd != NULL && __builtin_expect (old_idx != idx, 0)) ++ { ++ errstr = "invalid fastbin entry (free)"; ++ goto errout; ++ } + #else + /* Another simple check: make sure the top of the bin is not the + record we are going to add (i.e., double free). */ diff --git a/src/patches/glibc/glibc-rh593686.patch b/src/patches/glibc/glibc-rh593686.patch new file mode 100644 index 0000000..3eceb68 --- /dev/null +++ b/src/patches/glibc/glibc-rh593686.patch @@ -0,0 +1,179 @@ +2010-05-26 Andreas Schwab schwab@redhat.com + + * elf/Makefile: Add rules to build and run unload8 test. + * elf/unload8.c: New file. + * elf/unload8mod1.c: New file. + * elf/unload8mod1x.c: New file. + * elf/unload8mod2.c: New file. + * elf/unload8mod3.c: New file. + + * elf/dl-close.c (_dl_close_worker): Reset private search list if + it wasn't used. + +Index: glibc-2.12-2-gc4ccff1/elf/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/Makefile ++++ glibc-2.12-2-gc4ccff1/elf/Makefile +@@ -89,6 +89,7 @@ distribute := rtld-Rules \ + unload4mod1.c unload4mod2.c unload4mod3.c unload4mod4.c \ + unload6mod1.c unload6mod2.c unload6mod3.c \ + unload7mod1.c unload7mod2.c \ ++ unload8mod1.c unload8mod1x.c unload8mod2.c unload8mod3.c \ + tst-audit1.c tst-audit2.c tst-audit3.c tst-audit4.c \ + tst-auditmod1.c tst-auditmod3a.c tst-auditmod3b.c \ + tst-auditmod4a.c tst-auditmod4b.c \ +@@ -196,7 +197,7 @@ tests += loadtest restest1 preloadtest l + tst-align tst-align2 $(tests-execstack-$(have-z-execstack)) \ + tst-dlmodcount tst-dlopenrpath tst-deep1 \ + tst-dlmopen1 tst-dlmopen2 tst-dlmopen3 \ +- unload3 unload4 unload5 unload6 unload7 tst-global1 order2 \ ++ unload3 unload4 unload5 unload6 unload7 unload8 tst-global1 order2 \ + tst-audit1 tst-audit2 \ + tst-stackguard1 tst-addr1 tst-thrlock \ + tst-unique1 tst-unique2 +@@ -247,6 +248,7 @@ modules-names = testobj1 testobj2 testob + unload4mod1 unload4mod2 unload4mod3 unload4mod4 \ + unload6mod1 unload6mod2 unload6mod3 \ + unload7mod1 unload7mod2 \ ++ unload8mod1 unload8mod1x unload8mod2 unload8mod3 \ + order2mod1 order2mod2 order2mod3 order2mod4 \ + tst-unique1mod1 tst-unique1mod2 \ + tst-unique2mod1 tst-unique2mod2 +@@ -522,6 +524,9 @@ $(objpfx)unload6mod2.so: $(libdl) + $(objpfx)unload6mod3.so: $(libdl) + $(objpfx)unload7mod1.so: $(libdl) + $(objpfx)unload7mod2.so: $(objpfx)unload7mod1.so ++$(objpfx)unload8mod1.so: $(objpfx)unload8mod2.so ++$(objpfx)unload8mod2.so: $(objpfx)unload8mod3.so ++$(objpfx)unload8mod3.so: $(libdl) + + LDFLAGS-tst-tlsmod5.so = -nostdlib + LDFLAGS-tst-tlsmod6.so = -nostdlib +@@ -823,6 +828,9 @@ $(objpfx)unload7: $(libdl) + $(objpfx)unload7.out: $(objpfx)unload7mod1.so $(objpfx)unload7mod2.so + unload7-ENV = MALLOC_PERTURB_=85 + ++$(objpfx)unload8: $(libdl) ++$(objpfx)unload8.out: $(objpfx)unload8mod1.so $(objpfx)unload8mod1x.so ++ + ifdef libdl + $(objpfx)tst-tls9-static: $(common-objpfx)dlfcn/libdl.a + $(objpfx)tst-tls9-static.out: $(objpfx)tst-tlsmod5.so $(objpfx)tst-tlsmod6.so +Index: glibc-2.12-2-gc4ccff1/elf/dl-close.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/dl-close.c ++++ glibc-2.12-2-gc4ccff1/elf/dl-close.c +@@ -421,6 +421,13 @@ _dl_close_worker (struct link_map *map) + + imap->l_scope_max = new_size; + } ++ else if (new_list != NULL) ++ { ++ /* We didn't change the scope array, so reset the search ++ list. */ ++ imap->l_searchlist.r_list = NULL; ++ imap->l_searchlist.r_nlist = 0; ++ } + + /* The loader is gone, so mark the object as not having one. + Note: l_idx != IDX_STILL_USED -> object will be removed. */ +Index: glibc-2.12-2-gc4ccff1/elf/unload8.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/elf/unload8.c +@@ -0,0 +1,33 @@ ++#include <dlfcn.h> ++#include <stdio.h> ++ ++int ++main (void) ++{ ++ void *h = dlopen ("$ORIGIN/unload8mod1.so", RTLD_LAZY); ++ if (h == NULL) ++ { ++ puts ("dlopen unload8mod1.so failed"); ++ return 1; ++ } ++ ++ void *h2 = dlopen ("$ORIGIN/unload8mod1x.so", RTLD_LAZY); ++ if (h2 == NULL) ++ { ++ puts ("dlopen unload8mod1x.so failed"); ++ return 1; ++ } ++ dlclose (h2); ++ ++ int (*mod1) (void) = dlsym (h, "mod1"); ++ if (mod1 == NULL) ++ { ++ puts ("dlsym failed"); ++ return 1; ++ } ++ ++ mod1 (); ++ dlclose (h); ++ ++ return 0; ++} +Index: glibc-2.12-2-gc4ccff1/elf/unload8mod1.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/elf/unload8mod1.c +@@ -0,0 +1,7 @@ ++extern void mod2 (void); ++ ++void ++mod1 (void) ++{ ++ mod2 (); ++} +Index: glibc-2.12-2-gc4ccff1/elf/unload8mod1x.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/elf/unload8mod1x.c +@@ -0,0 +1 @@ ++int mod1x; +Index: glibc-2.12-2-gc4ccff1/elf/unload8mod2.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/elf/unload8mod2.c +@@ -0,0 +1,7 @@ ++extern void mod3 (void); ++ ++void ++mod2 (void) ++{ ++ mod3 (); ++} +Index: glibc-2.12-2-gc4ccff1/elf/unload8mod3.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/elf/unload8mod3.c +@@ -0,0 +1,27 @@ ++#include <dlfcn.h> ++#include <stdio.h> ++#include <stdlib.h> ++ ++void ++mod3_fini2 (void) ++{ ++} ++ ++void ++mod3_fini (void) ++{ ++ mod3_fini2 (); ++} ++ ++void ++mod3 (void) ++{ ++ void *h = dlopen ("$ORIGIN/unload8mod2.so", RTLD_LAZY); ++ if (h == NULL) ++ { ++ puts ("dlopen unload8mod2.so failed"); ++ exit (1); ++ } ++ ++ atexit (mod3_fini); ++} diff --git a/src/patches/glibc/glibc-rh601686.patch b/src/patches/glibc/glibc-rh601686.patch new file mode 100644 index 0000000..01e42dc --- /dev/null +++ b/src/patches/glibc/glibc-rh601686.patch @@ -0,0 +1,4640 @@ +2010-11-09 H.J. Lu hongjiu.lu@intel.com + + [BZ #12205] + * string/test-strncasecmp.c (check_result): New function. + (do_one_test): Use it. + (check1): New function. + (test_main): Use it. + * sysdeps/i386/i686/multiarch/strcmp.S (nibble_ashr_use_sse4_2_exit): + Support strcasecmp and strncasecmp. + +2010-10-03 Ulrich Drepper drepper@gmail.com + + [BZ #12077] + * sysdeps/x86_64/strcmp.S: Fix handling of remaining bytes in buffer + for strncmp and strncasecmp. + * string/stratcliff.c: Add tests for strcmp and strncmp. + * wcsmbs/wcsatcliff.c: Adjust for stratcliff change. + +2010-09-20 Ulrich Drepper drepper@redhat.com + + * sysdeps/x86_64/strcmp.S: Fix another type in strncasecmp limit + detection. + +2010-08-19 Ulrich Drepper drepper@redhat.com + + * sysdeps/x86_64/multiarch/strcmp.S: Fix two typos in strncasecmp + handling. + +2010-08-15 Ulrich Drepper drepper@redhat.com + + * sysdeps/x86_64/strcmp.S: Use correct register for fourth parameter + of strncasecmp_l. + * sysdeps/multiarch/strcmp.S: Likewise. + +2010-08-14 Ulrich Drepper drepper@redhat.com + + * sysdeps/x86_64/Makefile [subdir=string] (sysdep_routines): Add + strncase_l-nonascii. + * sysdeps/x86_64/multiarch/Makefile [subdir=string] (sysdep_routines): + Add strncase_l-ssse3. + * sysdeps/x86_64/multiarch/strcmp.S: Prepare for use as strncasecmp. + * sysdeps/x86_64/strcmp.S: Likewise. + * sysdeps/x86_64/multiarch/strncase_l-ssse3.S: New file. + * sysdeps/x86_64/multiarch/strncase_l.S: New file. + * sysdeps/x86_64/strncase.S: New file. + * sysdeps/x86_64/strncase_l-nonascii.c: New file. + * sysdeps/x86_64/strncase_l.S: New file. + * string/Makefile (strop-tests): Add strncasecmp. + * string/test-strncasecmp.c: New file. + + * sysdeps/x86_64/strcasecmp_l-nonascii.c: Add prototype to avoid + warning. + + * sysdeps/x86_64/strcmp.S: Move definition of NO_NOLOCALE_ALIAS to... + * sysdeps/x86_64/multiarch/strcasecmp_l-ssse3.S: ... here. + +2010-07-31 Ulrich Drepper drepper@redhat.com + + * sysdeps/x86_64/multiarch/Makefile [subdir=string] (sysdep_routines): + Add strcasecmp_l-ssse3. + * sysdeps/x86_64/multiarch/strcmp.S: Add support to compile for + strcasecmp. + * sysdeps/x86_64/strcmp.S: Allow more flexible compiling of strcasecmp. + * sysdeps/x86_64/multiarch/strcasecmp_l.S: New file. + * sysdeps/x86_64/multiarch/strcasecmp_l-ssse3.S: New file. + +2010-07-30 Ulrich Drepper drepper@redhat.com + + * sysdeps/x86_64/multiarch/strcmp.S: Pretty printing. + + * string/Makefile (strop-tests): Add strcasecmp. + * sysdeps/x86_64/Makefile [subdir=string] (sysdep_routines): Add + strcasecmp_l-nonascii. + (gen-as-const-headers): Add locale-defines.sym. + * sysdeps/x86_64/strcmp.S: Add support for strcasecmp implementation. + * sysdeps/x86_64/strcasecmp.S: New file. + * sysdeps/x86_64/strcasecmp_l.S: New file. + * sysdeps/x86_64/strcasecmp_l-nonascii.c: New file. + * sysdeps/x86_64/locale-defines.sym: New file. + * string/test-strcasecmp.c: New file. + + * string/test-strcasestr.c: Test both ends of the range of characters. + * sysdeps/x86_64/multiarch/strstr.c: Fix UCHIGH definition. + +2010-07-26 Ulrich Drepper drepper@redhat.com + + * string/test-strnlen.c: New file. + * string/Makefile (strop-tests): Add strnlen. + * string/tester.c (test_strnlen): Add a few more test cases. + * string/tst-strlen.c: Better error reporting. + + * sysdeps/x86_64/strnlen.S: New file. + +2010-07-24 Ulrich Drepper drepper@redhat.com + + * sysdeps/x86_64/multiarch/strstr.c (__m128i_strloadu_tolower): Use + lower-latency instructions. + +2010-07-23 Ulrich Drepper drepper@redhat.com + + * string/test-strcasestr.c: New file. + * string/test-strstr.c: New file. + * string/Makefile (strop-tests): Add strstr and strcasestr. + * string/str-two-way.h: Don't undefine MAX. + * string/strcasestr.c: Don't define alias if NO_ALIAS is defined. + +2010-07-21 Andreas Schwab schwab@redhat.com + + * sysdeps/i386/i686/multiarch/Makefile (sysdep_routines): Add + strcasestr-nonascii. + (CFLAGS-strcasestr-nonascii.c): Define. + * sysdeps/i386/i686/multiarch/strcasestr-nonascii.c: New file. + * sysdeps/x86_64/multiarch/strcasestr-nonascii.c (STRSTR_SSE42): + Remove unused attribute. + +2010-07-16 Ulrich Drepper drepper@redhat.com + + * sysdeps/x86_64/multiarch/strstr.c: Rewrite to avoid indirect function + call in strcasestr. + * sysdeps/x86_64/multiarch/strcasestr.c: Declare + __strcasestr_sse42_nonascii. + * sysdeps/x86_64/multiarch/Makefile: Add rules to build + strcasestr-nonascii.c. + * sysdeps/x86_64/multiarch/strcasestr-nonascii.c: New file. + +Index: glibc-2.12-2-gc4ccff1/string/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/string/Makefile ++++ glibc-2.12-2-gc4ccff1/string/Makefile +@@ -48,7 +48,8 @@ o-objects.ob := memcpy.o memset.o memchr + + strop-tests := memchr memcmp memcpy memmove mempcpy memset memccpy \ + stpcpy stpncpy strcat strchr strcmp strcpy strcspn \ +- strlen strncmp strncpy strpbrk strrchr strspn memmem ++ strlen strncmp strncpy strpbrk strrchr strspn memmem \ ++ strstr strcasestr strnlen strcasecmp strncasecmp + tests := tester inl-tester noinl-tester testcopy test-ffs \ + tst-strlen stratcliff tst-svc tst-inlcall \ + bug-strncat1 bug-strspn1 bug-strpbrk1 tst-bswap \ +Index: glibc-2.12-2-gc4ccff1/string/str-two-way.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/string/str-two-way.h ++++ glibc-2.12-2-gc4ccff1/string/str-two-way.h +@@ -426,5 +426,4 @@ two_way_long_needle (const unsigned char + #undef AVAILABLE + #undef CANON_ELEMENT + #undef CMP_FUNC +-#undef MAX + #undef RETURN_TYPE +Index: glibc-2.12-2-gc4ccff1/string/stratcliff.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/string/stratcliff.c ++++ glibc-2.12-2-gc4ccff1/string/stratcliff.c +@@ -47,6 +47,8 @@ + # define MEMCPY memcpy + # define MEMPCPY mempcpy + # define MEMCHR memchr ++# define STRCMP strcmp ++# define STRNCMP strncmp + #endif + + +@@ -277,7 +279,74 @@ do_test (void) + + adr[inner] = L('T'); + } +- } ++ } ++ ++ /* strcmp/wcscmp tests */ ++ for (outer = 1; outer < 32; ++outer) ++ for (middle = 0; middle < 16; ++middle) ++ { ++ MEMSET (adr + middle, L('T'), 256); ++ adr[256] = L('\0'); ++ MEMSET (dest + nchars - outer, L('T'), outer - 1); ++ dest[nchars - 1] = L('\0'); ++ ++ if (STRCMP (adr + middle, dest + nchars - outer) <= 0) ++ { ++ printf ("%s 1 flunked for outer = %d, middle = %d\n", ++ STRINGIFY (STRCMP), outer, middle); ++ result = 1; ++ } ++ ++ if (STRCMP (dest + nchars - outer, adr + middle) >= 0) ++ { ++ printf ("%s 2 flunked for outer = %d, middle = %d\n", ++ STRINGIFY (STRCMP), outer, middle); ++ result = 1; ++ } ++ } ++ ++ /* strncmp/wcsncmp tests */ ++ for (outer = 1; outer < 32; ++outer) ++ for (middle = 0; middle < 16; ++middle) ++ { ++ MEMSET (adr + middle, L('T'), 256); ++ adr[256] = L('\0'); ++ MEMSET (dest + nchars - outer, L('T'), outer - 1); ++ dest[nchars - 1] = L('U'); ++ ++ for (inner = 0; inner < outer; ++inner) ++ { ++ if (STRNCMP (adr + middle, dest + nchars - outer, inner) != 0) ++ { ++ printf ("%s 1 flunked for outer = %d, middle = %d, " ++ "inner = %d\n", ++ STRINGIFY (STRNCMP), outer, middle, inner); ++ result = 1; ++ } ++ ++ if (STRNCMP (dest + nchars - outer, adr + middle, inner) != 0) ++ { ++ printf ("%s 2 flunked for outer = %d, middle = %d, " ++ "inner = %d\n", ++ STRINGIFY (STRNCMP), outer, middle, inner); ++ result = 1; ++ } ++ } ++ ++ if (STRNCMP (adr + middle, dest + nchars - outer, outer) >= 0) ++ { ++ printf ("%s 1 flunked for outer = %d, middle = %d, full\n", ++ STRINGIFY (STRNCMP), outer, middle); ++ result = 1; ++ } ++ ++ if (STRNCMP (dest + nchars - outer, adr + middle, outer) <= 0) ++ { ++ printf ("%s 2 flunked for outer = %d, middle = %d, full\n", ++ STRINGIFY (STRNCMP), outer, middle); ++ result = 1; ++ } ++ } + + /* strncpy/wcsncpy tests */ + adr[nchars - 1] = L('T'); +Index: glibc-2.12-2-gc4ccff1/string/strcasestr.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/string/strcasestr.c ++++ glibc-2.12-2-gc4ccff1/string/strcasestr.c +@@ -103,4 +103,6 @@ STRCASESTR (const char *haystack_start, + + #undef LONG_NEEDLE_THRESHOLD + ++#ifndef NO_ALIAS + weak_alias (__strcasestr, strcasestr) ++#endif +Index: glibc-2.12-2-gc4ccff1/string/test-strcasecmp.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/string/test-strcasecmp.c +@@ -0,0 +1,276 @@ ++/* Test and measure strcasecmp functions. ++ Copyright (C) 1999, 2002, 2003, 2005, 2010 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Written by Jakub Jelinek jakub@redhat.com, 1999. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include <ctype.h> ++#define TEST_MAIN ++#include "test-string.h" ++ ++typedef int (*proto_t) (const char *, const char *); ++static int simple_strcasecmp (const char *, const char *); ++static int stupid_strcasecmp (const char *, const char *); ++ ++IMPL (stupid_strcasecmp, 0) ++IMPL (simple_strcasecmp, 0) ++IMPL (strcasecmp, 1) ++ ++static int ++simple_strcasecmp (const char *s1, const char *s2) ++{ ++ int ret; ++ ++ while ((ret = ((unsigned char) tolower (*s1) ++ - (unsigned char) tolower (*s2))) == 0 ++ && *s1++) ++ ++s2; ++ return ret; ++} ++ ++static int ++stupid_strcasecmp (const char *s1, const char *s2) ++{ ++ size_t ns1 = strlen (s1) + 1, ns2 = strlen (s2) + 1; ++ size_t n = ns1 < ns2 ? ns1 : ns2; ++ int ret = 0; ++ ++ while (n--) ++ { ++ if ((ret = ((unsigned char) tolower (*s1) ++ - (unsigned char) tolower (*s2))) != 0) ++ break; ++ ++s1; ++ ++s2; ++ } ++ return ret; ++} ++ ++static void ++do_one_test (impl_t *impl, const char *s1, const char *s2, int exp_result) ++{ ++ int result = CALL (impl, s1, s2); ++ if ((exp_result == 0 && result != 0) ++ || (exp_result < 0 && result >= 0) ++ || (exp_result > 0 && result <= 0)) ++ { ++ error (0, 0, "Wrong result in function %s %d %d", impl->name, ++ result, exp_result); ++ ret = 1; ++ return; ++ } ++ ++ if (HP_TIMING_AVAIL) ++ { ++ hp_timing_t start __attribute ((unused)); ++ hp_timing_t stop __attribute ((unused)); ++ hp_timing_t best_time = ~ (hp_timing_t) 0; ++ size_t i; ++ ++ for (i = 0; i < 32; ++i) ++ { ++ HP_TIMING_NOW (start); ++ CALL (impl, s1, s2); ++ HP_TIMING_NOW (stop); ++ HP_TIMING_BEST (best_time, start, stop); ++ } ++ ++ printf ("\t%zd", (size_t) best_time); ++ } ++} ++ ++static void ++do_test (size_t align1, size_t align2, size_t len, int max_char, ++ int exp_result) ++{ ++ size_t i; ++ char *s1, *s2; ++ ++ if (len == 0) ++ return; ++ ++ align1 &= 7; ++ if (align1 + len + 1 >= page_size) ++ return; ++ ++ align2 &= 7; ++ if (align2 + len + 1 >= page_size) ++ return; ++ ++ s1 = (char *) (buf1 + align1); ++ s2 = (char *) (buf2 + align2); ++ ++ for (i = 0; i < len; i++) ++ { ++ s1[i] = toupper (1 + 23 * i % max_char); ++ s2[i] = tolower (s1[i]); ++ } ++ ++ s1[len] = s2[len] = 0; ++ s1[len + 1] = 23; ++ s2[len + 1] = 24 + exp_result; ++ if ((s2[len - 1] == 'z' && exp_result == -1) ++ || (s2[len - 1] == 'a' && exp_result == 1)) ++ s1[len - 1] += exp_result; ++ else ++ s2[len - 1] -= exp_result; ++ ++ if (HP_TIMING_AVAIL) ++ printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2); ++ ++ FOR_EACH_IMPL (impl, 0) ++ do_one_test (impl, s1, s2, exp_result); ++ ++ if (HP_TIMING_AVAIL) ++ putchar ('\n'); ++} ++ ++static void ++do_random_tests (void) ++{ ++ size_t i, j, n, align1, align2, pos, len1, len2; ++ int result; ++ long r; ++ unsigned char *p1 = buf1 + page_size - 512; ++ unsigned char *p2 = buf2 + page_size - 512; ++ ++ for (n = 0; n < ITERATIONS; n++) ++ { ++ align1 = random () & 31; ++ if (random () & 1) ++ align2 = random () & 31; ++ else ++ align2 = align1 + (random () & 24); ++ pos = random () & 511; ++ j = align1 > align2 ? align1 : align2; ++ if (pos + j >= 511) ++ pos = 510 - j - (random () & 7); ++ len1 = random () & 511; ++ if (pos >= len1 && (random () & 1)) ++ len1 = pos + (random () & 7); ++ if (len1 + j >= 512) ++ len1 = 511 - j - (random () & 7); ++ if (pos >= len1) ++ len2 = len1; ++ else ++ len2 = len1 + (len1 != 511 - j ? random () % (511 - j - len1) : 0); ++ j = (pos > len2 ? pos : len2) + align1 + 64; ++ if (j > 512) ++ j = 512; ++ for (i = 0; i < j; ++i) ++ { ++ p1[i] = tolower (random () & 255); ++ if (i < len1 + align1 && !p1[i]) ++ { ++ p1[i] = tolower (random () & 255); ++ if (!p1[i]) ++ p1[i] = tolower (1 + (random () & 127)); ++ } ++ } ++ for (i = 0; i < j; ++i) ++ { ++ p2[i] = toupper (random () & 255); ++ if (i < len2 + align2 && !p2[i]) ++ { ++ p2[i] = toupper (random () & 255); ++ if (!p2[i]) ++ toupper (p2[i] = 1 + (random () & 127)); ++ } ++ } ++ ++ result = 0; ++ memcpy (p2 + align2, p1 + align1, pos); ++ if (pos < len1) ++ { ++ if (tolower (p2[align2 + pos]) == p1[align1 + pos]) ++ { ++ p2[align2 + pos] = toupper (random () & 255); ++ if (tolower (p2[align2 + pos]) == p1[align1 + pos]) ++ p2[align2 + pos] = toupper (p1[align1 + pos] ++ + 3 + (random () & 127)); ++ } ++ ++ if (p1[align1 + pos] < tolower (p2[align2 + pos])) ++ result = -1; ++ else ++ result = 1; ++ } ++ p1[len1 + align1] = 0; ++ p2[len2 + align2] = 0; ++ ++ FOR_EACH_IMPL (impl, 1) ++ { ++ r = CALL (impl, (char *) (p1 + align1), (char *) (p2 + align2)); ++ /* Test whether on 64-bit architectures where ABI requires ++ callee to promote has the promotion been done. */ ++ asm ("" : "=g" (r) : "0" (r)); ++ if ((r == 0 && result) ++ || (r < 0 && result >= 0) ++ || (r > 0 && result <= 0)) ++ { ++ error (0, 0, "Iteration %zd - wrong result in function %s (%zd, %zd, %zd, %zd, %zd) %ld != %d, p1 %p p2 %p", ++ n, impl->name, align1, align2, len1, len2, pos, r, result, p1, p2); ++ ret = 1; ++ } ++ } ++ } ++} ++ ++int ++test_main (void) ++{ ++ size_t i; ++ ++ test_init (); ++ ++ printf ("%23s", ""); ++ FOR_EACH_IMPL (impl, 0) ++ printf ("\t%s", impl->name); ++ putchar ('\n'); ++ ++ for (i = 1; i < 16; ++i) ++ { ++ do_test (i, i, i, 127, 0); ++ do_test (i, i, i, 127, 1); ++ do_test (i, i, i, 127, -1); ++ } ++ ++ for (i = 1; i < 10; ++i) ++ { ++ do_test (0, 0, 2 << i, 127, 0); ++ do_test (0, 0, 2 << i, 254, 0); ++ do_test (0, 0, 2 << i, 127, 1); ++ do_test (0, 0, 2 << i, 254, 1); ++ do_test (0, 0, 2 << i, 127, -1); ++ do_test (0, 0, 2 << i, 254, -1); ++ } ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (i, 2 * i, 8 << i, 127, 0); ++ do_test (2 * i, i, 8 << i, 254, 0); ++ do_test (i, 2 * i, 8 << i, 127, 1); ++ do_test (2 * i, i, 8 << i, 254, 1); ++ do_test (i, 2 * i, 8 << i, 127, -1); ++ do_test (2 * i, i, 8 << i, 254, -1); ++ } ++ ++ do_random_tests (); ++ return ret; ++} ++ ++#include "../test-skeleton.c" +Index: glibc-2.12-2-gc4ccff1/string/test-strcasestr.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/string/test-strcasestr.c +@@ -0,0 +1,197 @@ ++/* Test and measure strcasestr functions. ++ Copyright (C) 2010 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Written by Ulrich Drepper drepper@redhat.com, 2010. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#define TEST_MAIN ++#include "test-string.h" ++ ++ ++#define STRCASESTR simple_strcasestr ++#define NO_ALIAS ++#define __strncasecmp strncasecmp ++#include "strcasestr.c" ++ ++ ++static char * ++stupid_strcasestr (const char *s1, const char *s2) ++{ ++ ssize_t s1len = strlen (s1); ++ ssize_t s2len = strlen (s2); ++ ++ if (s2len > s1len) ++ return NULL; ++ ++ for (ssize_t i = 0; i <= s1len - s2len; ++i) ++ { ++ size_t j; ++ for (j = 0; j < s2len; ++j) ++ if (tolower (s1[i + j]) != tolower (s2[j])) ++ break; ++ if (j == s2len) ++ return (char *) s1 + i; ++ } ++ ++ return NULL; ++} ++ ++ ++typedef char *(*proto_t) (const char *, const char *); ++ ++IMPL (stupid_strcasestr, 0) ++IMPL (simple_strcasestr, 0) ++IMPL (strcasestr, 1) ++ ++ ++static void ++do_one_test (impl_t *impl, const char *s1, const char *s2, char *exp_result) ++{ ++ char *result = CALL (impl, s1, s2); ++ if (result != exp_result) ++ { ++ error (0, 0, "Wrong result in function %s %s %s", impl->name, ++ result, exp_result); ++ ret = 1; ++ return; ++ } ++ ++ if (HP_TIMING_AVAIL) ++ { ++ hp_timing_t start __attribute ((unused)); ++ hp_timing_t stop __attribute ((unused)); ++ hp_timing_t best_time = ~(hp_timing_t) 0; ++ size_t i; ++ ++ for (i = 0; i < 32; ++i) ++ { ++ HP_TIMING_NOW (start); ++ CALL (impl, s1, s2); ++ HP_TIMING_NOW (stop); ++ HP_TIMING_BEST (best_time, start, stop); ++ } ++ ++ printf ("\t%zd", (size_t) best_time); ++ } ++} ++ ++ ++static void ++do_test (size_t align1, size_t align2, size_t len1, size_t len2, ++ int fail) ++{ ++ char *s1 = (char *) (buf1 + align1); ++ char *s2 = (char *) (buf2 + align2); ++ ++ static const char d[] = "1234567890abcxyz"; ++#define dl (sizeof (d) - 1) ++ char *ss2 = s2; ++ for (size_t l = len2; l > 0; l = l > dl ? l - dl : 0) ++ { ++ size_t t = l > dl ? dl : l; ++ ss2 = mempcpy (ss2, d, t); ++ } ++ s2[len2] = '\0'; ++ ++ if (fail) ++ { ++ char *ss1 = s1; ++ for (size_t l = len1; l > 0; l = l > dl ? l - dl : 0) ++ { ++ size_t t = l > dl ? dl : l; ++ memcpy (ss1, d, t); ++ ++ss1[len2 > 7 ? 7 : len2 - 1]; ++ ss1 += t; ++ } ++ } ++ else ++ { ++ memset (s1, '0', len1); ++ for (size_t i = 0; i < len2; ++i) ++ s1[len1 - len2 + i] = toupper (s2[i]); ++ } ++ s1[len1] = '\0'; ++ ++ if (HP_TIMING_AVAIL) ++ printf ("Length %4zd/%zd, alignment %2zd/%2zd, %s:", ++ len1, len2, align1, align2, fail ? "fail" : "found"); ++ ++ FOR_EACH_IMPL (impl, 0) ++ do_one_test (impl, s1, s2, fail ? NULL : s1 + len1 - len2); ++ ++ if (HP_TIMING_AVAIL) ++ putchar ('\n'); ++} ++ ++ ++static int ++test_main (void) ++{ ++ test_init (); ++ ++ printf ("%23s", ""); ++ FOR_EACH_IMPL (impl, 0) ++ printf ("\t%s", impl->name); ++ putchar ('\n'); ++ ++ for (size_t klen = 2; klen < 32; ++klen) ++ for (size_t hlen = 2 * klen; hlen < 16 * klen; hlen += klen) ++ { ++ do_test (0, 0, hlen, klen, 0); ++ do_test (0, 0, hlen, klen, 1); ++ do_test (0, 3, hlen, klen, 0); ++ do_test (0, 3, hlen, klen, 1); ++ do_test (0, 9, hlen, klen, 0); ++ do_test (0, 9, hlen, klen, 1); ++ do_test (0, 15, hlen, klen, 0); ++ do_test (0, 15, hlen, klen, 1); ++ ++ do_test (3, 0, hlen, klen, 0); ++ do_test (3, 0, hlen, klen, 1); ++ do_test (3, 3, hlen, klen, 0); ++ do_test (3, 3, hlen, klen, 1); ++ do_test (3, 9, hlen, klen, 0); ++ do_test (3, 9, hlen, klen, 1); ++ do_test (3, 15, hlen, klen, 0); ++ do_test (3, 15, hlen, klen, 1); ++ ++ do_test (9, 0, hlen, klen, 0); ++ do_test (9, 0, hlen, klen, 1); ++ do_test (9, 3, hlen, klen, 0); ++ do_test (9, 3, hlen, klen, 1); ++ do_test (9, 9, hlen, klen, 0); ++ do_test (9, 9, hlen, klen, 1); ++ do_test (9, 15, hlen, klen, 0); ++ do_test (9, 15, hlen, klen, 1); ++ ++ do_test (15, 0, hlen, klen, 0); ++ do_test (15, 0, hlen, klen, 1); ++ do_test (15, 3, hlen, klen, 0); ++ do_test (15, 3, hlen, klen, 1); ++ do_test (15, 9, hlen, klen, 0); ++ do_test (15, 9, hlen, klen, 1); ++ do_test (15, 15, hlen, klen, 0); ++ do_test (15, 15, hlen, klen, 1); ++ } ++ ++ do_test (0, 0, page_size - 1, 16, 0); ++ do_test (0, 0, page_size - 1, 16, 1); ++ ++ return ret; ++} ++ ++#include "../test-skeleton.c" +Index: glibc-2.12-2-gc4ccff1/string/test-strncasecmp.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/string/test-strncasecmp.c +@@ -0,0 +1,349 @@ ++/* Test and measure strncasecmp functions. ++ Copyright (C) 1999, 2002, 2003, 2005, 2010 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Written by Jakub Jelinek jakub@redhat.com, 1999. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include <ctype.h> ++#define TEST_MAIN ++#include "test-string.h" ++ ++typedef int (*proto_t) (const char *, const char *, size_t); ++static int simple_strncasecmp (const char *, const char *, size_t); ++static int stupid_strncasecmp (const char *, const char *, size_t); ++ ++IMPL (stupid_strncasecmp, 0) ++IMPL (simple_strncasecmp, 0) ++IMPL (strncasecmp, 1) ++ ++static int ++simple_strncasecmp (const char *s1, const char *s2, size_t n) ++{ ++ int ret; ++ ++ if (n == 0) ++ return 0; ++ ++ while ((ret = ((unsigned char) tolower (*s1) ++ - (unsigned char) tolower (*s2))) == 0 ++ && *s1++) ++ { ++ if (--n == 0) ++ return 0; ++ ++s2; ++ } ++ return ret; ++} ++ ++static int ++stupid_strncasecmp (const char *s1, const char *s2, size_t max) ++{ ++ size_t ns1 = strlen (s1) + 1; ++ size_t ns2 = strlen (s2) + 1; ++ size_t n = ns1 < ns2 ? ns1 : ns2; ++ if (n > max) ++ n = max; ++ int ret = 0; ++ ++ while (n--) ++ { ++ if ((ret = ((unsigned char) tolower (*s1) ++ - (unsigned char) tolower (*s2))) != 0) ++ break; ++ ++s1; ++ ++s2; ++ } ++ return ret; ++} ++ ++static int ++check_result (impl_t *impl, const char *s1, const char *s2, size_t n, ++ int exp_result) ++{ ++ int result = CALL (impl, s1, s2, n); ++ if ((exp_result == 0 && result != 0) ++ || (exp_result < 0 && result >= 0) ++ || (exp_result > 0 && result <= 0)) ++ { ++ error (0, 0, "Wrong result in function %s %d %d", impl->name, ++ result, exp_result); ++ ret = 1; ++ return -1; ++ } ++ ++ return 0; ++} ++ ++static void ++do_one_test (impl_t *impl, const char *s1, const char *s2, size_t n, ++ int exp_result) ++{ ++ if (check_result (impl, s1, s2, n, exp_result) < 0) ++ return; ++ ++ if (HP_TIMING_AVAIL) ++ { ++ hp_timing_t start __attribute ((unused)); ++ hp_timing_t stop __attribute ((unused)); ++ hp_timing_t best_time = ~ (hp_timing_t) 0; ++ size_t i; ++ ++ for (i = 0; i < 32; ++i) ++ { ++ HP_TIMING_NOW (start); ++ CALL (impl, s1, s2, n); ++ HP_TIMING_NOW (stop); ++ HP_TIMING_BEST (best_time, start, stop); ++ } ++ ++ printf ("\t%zd", (size_t) best_time); ++ } ++} ++ ++static void ++do_test (size_t align1, size_t align2, size_t n, size_t len, int max_char, ++ int exp_result) ++{ ++ size_t i; ++ char *s1, *s2; ++ ++ if (len == 0) ++ return; ++ ++ align1 &= 7; ++ if (align1 + len + 1 >= page_size) ++ return; ++ ++ align2 &= 7; ++ if (align2 + len + 1 >= page_size) ++ return; ++ ++ s1 = (char *) (buf1 + align1); ++ s2 = (char *) (buf2 + align2); ++ ++ for (i = 0; i < len; i++) ++ { ++ s1[i] = toupper (1 + 23 * i % max_char); ++ s2[i] = tolower (s1[i]); ++ } ++ ++ s1[len] = s2[len] = 0; ++ s1[len + 1] = 23; ++ s2[len + 1] = 24 + exp_result; ++ if ((s2[len - 1] == 'z' && exp_result == -1) ++ || (s2[len - 1] == 'a' && exp_result == 1)) ++ s1[len - 1] += exp_result; ++ else ++ s2[len - 1] -= exp_result; ++ ++ if (HP_TIMING_AVAIL) ++ printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2); ++ ++ FOR_EACH_IMPL (impl, 0) ++ do_one_test (impl, s1, s2, n, exp_result); ++ ++ if (HP_TIMING_AVAIL) ++ putchar ('\n'); ++} ++ ++static void ++do_random_tests (void) ++{ ++ size_t i, j, n, align1, align2, pos, len1, len2; ++ int result; ++ long r; ++ unsigned char *p1 = buf1 + page_size - 512; ++ unsigned char *p2 = buf2 + page_size - 512; ++ ++ for (n = 0; n < ITERATIONS; n++) ++ { ++ align1 = random () & 31; ++ if (random () & 1) ++ align2 = random () & 31; ++ else ++ align2 = align1 + (random () & 24); ++ pos = random () & 511; ++ j = align1 > align2 ? align1 : align2; ++ if (pos + j >= 511) ++ pos = 510 - j - (random () & 7); ++ len1 = random () & 511; ++ if (pos >= len1 && (random () & 1)) ++ len1 = pos + (random () & 7); ++ if (len1 + j >= 512) ++ len1 = 511 - j - (random () & 7); ++ if (pos >= len1) ++ len2 = len1; ++ else ++ len2 = len1 + (len1 != 511 - j ? random () % (511 - j - len1) : 0); ++ j = (pos > len2 ? pos : len2) + align1 + 64; ++ if (j > 512) ++ j = 512; ++ for (i = 0; i < j; ++i) ++ { ++ p1[i] = tolower (random () & 255); ++ if (i < len1 + align1 && !p1[i]) ++ { ++ p1[i] = tolower (random () & 255); ++ if (!p1[i]) ++ p1[i] = tolower (1 + (random () & 127)); ++ } ++ } ++ for (i = 0; i < j; ++i) ++ { ++ p2[i] = toupper (random () & 255); ++ if (i < len2 + align2 && !p2[i]) ++ { ++ p2[i] = toupper (random () & 255); ++ if (!p2[i]) ++ toupper (p2[i] = 1 + (random () & 127)); ++ } ++ } ++ ++ result = 0; ++ memcpy (p2 + align2, p1 + align1, pos); ++ if (pos < len1) ++ { ++ if (tolower (p2[align2 + pos]) == p1[align1 + pos]) ++ { ++ p2[align2 + pos] = toupper (random () & 255); ++ if (tolower (p2[align2 + pos]) == p1[align1 + pos]) ++ p2[align2 + pos] = toupper (p1[align1 + pos] ++ + 3 + (random () & 127)); ++ } ++ ++ if (p1[align1 + pos] < tolower (p2[align2 + pos])) ++ result = -1; ++ else ++ result = 1; ++ } ++ p1[len1 + align1] = 0; ++ p2[len2 + align2] = 0; ++ ++ FOR_EACH_IMPL (impl, 1) ++ { ++ r = CALL (impl, (char *) (p1 + align1), (char *) (p2 + align2), ++ pos + 1 + (random () & 255)); ++ /* Test whether on 64-bit architectures where ABI requires ++ callee to promote has the promotion been done. */ ++ asm ("" : "=g" (r) : "0" (r)); ++ if ((r == 0 && result) ++ || (r < 0 && result >= 0) ++ || (r > 0 && result <= 0)) ++ { ++ error (0, 0, "Iteration %zd - wrong result in function %s (%zd, %zd, %zd, %zd, %zd) %ld != %d, p1 %p p2 %p", ++ n, impl->name, align1, align2, len1, len2, pos, r, result, p1, p2); ++ ret = 1; ++ } ++ } ++ } ++} ++ ++ ++static void ++check1 (void) ++{ ++ static char cp [4096+16] __attribute__ ((aligned(4096))); ++ static char gotrel[4096] __attribute__ ((aligned(4096))); ++ char *s1 = cp + 0xffa; ++ char *s2 = gotrel + 0xcbe; ++ int exp_result; ++ size_t n = 6; ++ ++ strcpy (s1, "gottpoff"); ++ strcpy (s2, "GOTPLT"); ++ ++ exp_result = simple_strncasecmp (s1, s2, n); ++ FOR_EACH_IMPL (impl, 0) ++ check_result (impl, s1, s2, n, exp_result); ++} ++ ++int ++test_main (void) ++{ ++ size_t i; ++ ++ test_init (); ++ ++ check1 (); ++ ++ printf ("%23s", ""); ++ FOR_EACH_IMPL (impl, 0) ++ printf ("\t%s", impl->name); ++ putchar ('\n'); ++ ++ for (i = 1; i < 16; ++i) ++ { ++ do_test (i, i, i - 1, i, 127, 0); ++ ++ do_test (i, i, i, i, 127, 0); ++ do_test (i, i, i, i, 127, 1); ++ do_test (i, i, i, i, 127, -1); ++ ++ do_test (i, i, i + 1, i, 127, 0); ++ do_test (i, i, i + 1, i, 127, 1); ++ do_test (i, i, i + 1, i, 127, -1); ++ } ++ ++ for (i = 1; i < 10; ++i) ++ { ++ do_test (0, 0, (2 << i) - 1, 2 << i, 127, 0); ++ do_test (0, 0, 2 << i, 2 << i, 254, 0); ++ do_test (0, 0, (2 << i) + 1, 2 << i, 127, 0); ++ ++ do_test (0, 0, (2 << i) + 1, 2 << i, 254, 0); ++ ++ do_test (0, 0, 2 << i, 2 << i, 127, 1); ++ do_test (0, 0, (2 << i) + 10, 2 << i, 127, 1); ++ ++ do_test (0, 0, 2 << i, 2 << i, 254, 1); ++ do_test (0, 0, (2 << i) + 10, 2 << i, 254, 1); ++ ++ do_test (0, 0, 2 << i, 2 << i, 127, -1); ++ do_test (0, 0, (2 << i) + 10, 2 << i, 127, -1); ++ ++ do_test (0, 0, 2 << i, 2 << i, 254, -1); ++ do_test (0, 0, (2 << i) + 10, 2 << i, 254, -1); ++ } ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (i, 2 * i, (8 << i) - 1, 8 << i, 127, 0); ++ do_test (i, 2 * i, 8 << i, 8 << i, 127, 0); ++ do_test (i, 2 * i, (8 << i) + 100, 8 << i, 127, 0); ++ ++ do_test (2 * i, i, (8 << i) - 1, 8 << i, 254, 0); ++ do_test (2 * i, i, 8 << i, 8 << i, 254, 0); ++ do_test (2 * i, i, (8 << i) + 100, 8 << i, 254, 0); ++ ++ do_test (i, 2 * i, 8 << i, 8 << i, 127, 1); ++ do_test (i, 2 * i, (8 << i) + 100, 8 << i, 127, 1); ++ ++ do_test (2 * i, i, 8 << i, 8 << i, 254, 1); ++ do_test (2 * i, i, (8 << i) + 100, 8 << i, 254, 1); ++ ++ do_test (i, 2 * i, 8 << i, 8 << i, 127, -1); ++ do_test (i, 2 * i, (8 << i) + 100, 8 << i, 127, -1); ++ ++ do_test (2 * i, i, 8 << i, 8 << i, 254, -1); ++ do_test (2 * i, i, (8 << i) + 100, 8 << i, 254, -1); ++ } ++ ++ do_random_tests (); ++ return ret; ++} ++ ++#include "../test-skeleton.c" +Index: glibc-2.12-2-gc4ccff1/string/test-strnlen.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/string/test-strnlen.c +@@ -0,0 +1,197 @@ ++/* Test and measure strlen functions. ++ Copyright (C) 1999, 2002, 2003, 2005, 2010 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Written by Jakub Jelinek jakub@redhat.com, 1999. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#define TEST_MAIN ++#include "test-string.h" ++ ++typedef size_t (*proto_t) (const char *, size_t); ++size_t simple_strnlen (const char *, size_t); ++ ++IMPL (simple_strnlen, 0) ++IMPL (strnlen, 1) ++ ++size_t ++simple_strnlen (const char *s, size_t maxlen) ++{ ++ size_t i; ++ ++ for (i = 0; i < maxlen && s[i]; ++i); ++ return i; ++} ++ ++static void ++do_one_test (impl_t *impl, const char *s, size_t maxlen, size_t exp_len) ++{ ++ size_t len = CALL (impl, s, maxlen); ++ if (len != exp_len) ++ { ++ error (0, 0, "Wrong result in function %s %zd %zd", impl->name, ++ len, exp_len); ++ ret = 1; ++ return; ++ } ++ ++ if (HP_TIMING_AVAIL) ++ { ++ hp_timing_t start __attribute ((unused)); ++ hp_timing_t stop __attribute ((unused)); ++ hp_timing_t best_time = ~ (hp_timing_t) 0; ++ size_t i; ++ ++ for (i = 0; i < 32; ++i) ++ { ++ HP_TIMING_NOW (start); ++ CALL (impl, s, maxlen); ++ HP_TIMING_NOW (stop); ++ HP_TIMING_BEST (best_time, start, stop); ++ } ++ ++ printf ("\t%zd", (size_t) best_time); ++ } ++} ++ ++static void ++do_test (size_t align, size_t len, size_t maxlen, int max_char) ++{ ++ size_t i; ++ ++ align &= 7; ++ if (align + len >= page_size) ++ return; ++ ++ for (i = 0; i < len; ++i) ++ buf1[align + i] = 1 + 7 * i % max_char; ++ buf1[align + len] = 0; ++ ++ if (HP_TIMING_AVAIL) ++ printf ("Length %4zd, alignment %2zd:", len, align); ++ ++ FOR_EACH_IMPL (impl, 0) ++ do_one_test (impl, (char *) (buf1 + align), maxlen, MIN (len, maxlen)); ++ ++ if (HP_TIMING_AVAIL) ++ putchar ('\n'); ++} ++ ++static void ++do_random_tests (void) ++{ ++ size_t i, j, n, align, len; ++ unsigned char *p = buf1 + page_size - 512; ++ ++ for (n = 0; n < ITERATIONS; n++) ++ { ++ align = random () & 15; ++ len = random () & 511; ++ if (len + align > 510) ++ len = 511 - align - (random () & 7); ++ j = len + align + 64; ++ if (j > 512) ++ j = 512; ++ ++ for (i = 0; i < j; i++) ++ { ++ if (i == len + align) ++ p[i] = 0; ++ else ++ { ++ p[i] = random () & 255; ++ if (i >= align && i < len + align && !p[i]) ++ p[i] = (random () & 127) + 1; ++ } ++ } ++ ++ FOR_EACH_IMPL (impl, 1) ++ { ++ if (len > 0 ++ && CALL (impl, (char *) (p + align), len - 1) != len - 1) ++ { ++ error (0, 0, "Iteration %zd (limited) - wrong result in function %s (%zd) %zd != %zd, p %p", ++ n, impl->name, align, ++ CALL (impl, (char *) (p + align), len - 1), len - 1, p); ++ ret = 1; ++ } ++ if (CALL (impl, (char *) (p + align), len) != len) ++ { ++ error (0, 0, "Iteration %zd (exact) - wrong result in function %s (%zd) %zd != %zd, p %p", ++ n, impl->name, align, ++ CALL (impl, (char *) (p + align), len), len, p); ++ ret = 1; ++ } ++ if (CALL (impl, (char *) (p + align), len + 1) != len) ++ { ++ error (0, 0, "Iteration %zd (long) - wrong result in function %s (%zd) %zd != %zd, p %p", ++ n, impl->name, align, ++ CALL (impl, (char *) (p + align), len + 1), len, p); ++ ret = 1; ++ } ++ } ++ } ++} ++ ++int ++test_main (void) ++{ ++ size_t i; ++ ++ test_init (); ++ ++ printf ("%20s", ""); ++ FOR_EACH_IMPL (impl, 0) ++ printf ("\t%s", impl->name); ++ putchar ('\n'); ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (0, i, i - 1, 127); ++ do_test (0, i, i, 127); ++ do_test (0, i, i + 1, 127); ++ } ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (i, i, i - 1, 127); ++ do_test (i, i, i, 127); ++ do_test (i, i, i + 1, 127); ++ } ++ ++ for (i = 2; i <= 10; ++i) ++ { ++ do_test (0, 1 << i, 5000, 127); ++ do_test (1, 1 << i, 5000, 127); ++ } ++ ++ for (i = 1; i < 8; ++i) ++ do_test (0, i, 5000, 255); ++ ++ for (i = 1; i < 8; ++i) ++ do_test (i, i, 5000, 255); ++ ++ for (i = 2; i <= 10; ++i) ++ { ++ do_test (0, 1 << i, 5000, 255); ++ do_test (1, 1 << i, 5000, 255); ++ } ++ ++ do_random_tests (); ++ return ret; ++} ++ ++#include "../test-skeleton.c" +Index: glibc-2.12-2-gc4ccff1/string/test-strstr.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/string/test-strstr.c +@@ -0,0 +1,194 @@ ++/* Test and measure strstr functions. ++ Copyright (C) 2010 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Written by Ulrich Drepper drepper@redhat.com, 2010. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#define TEST_MAIN ++#include "test-string.h" ++ ++ ++#define STRSTR simple_strstr ++#include "strstr.c" ++ ++ ++static char * ++stupid_strstr (const char *s1, const char *s2) ++{ ++ ssize_t s1len = strlen (s1); ++ ssize_t s2len = strlen (s2); ++ ++ if (s2len > s1len) ++ return NULL; ++ ++ for (ssize_t i = 0; i <= s1len - s2len; ++i) ++ { ++ size_t j; ++ for (j = 0; j < s2len; ++j) ++ if (s1[i + j] != s2[j]) ++ break; ++ if (j == s2len) ++ return (char *) s1 + i; ++ } ++ ++ return NULL; ++} ++ ++ ++typedef char *(*proto_t) (const char *, const char *); ++ ++IMPL (stupid_strstr, 0) ++IMPL (simple_strstr, 0) ++IMPL (strstr, 1) ++ ++ ++static void ++do_one_test (impl_t *impl, const char *s1, const char *s2, char *exp_result) ++{ ++ char *result = CALL (impl, s1, s2); ++ if (result != exp_result) ++ { ++ error (0, 0, "Wrong result in function %s %s %s", impl->name, ++ result, exp_result); ++ ret = 1; ++ return; ++ } ++ ++ if (HP_TIMING_AVAIL) ++ { ++ hp_timing_t start __attribute ((unused)); ++ hp_timing_t stop __attribute ((unused)); ++ hp_timing_t best_time = ~(hp_timing_t) 0; ++ size_t i; ++ ++ for (i = 0; i < 32; ++i) ++ { ++ HP_TIMING_NOW (start); ++ CALL (impl, s1, s2); ++ HP_TIMING_NOW (stop); ++ HP_TIMING_BEST (best_time, start, stop); ++ } ++ ++ printf ("\t%zd", (size_t) best_time); ++ } ++} ++ ++ ++static void ++do_test (size_t align1, size_t align2, size_t len1, size_t len2, ++ int fail) ++{ ++ char *s1 = (char *) (buf1 + align1); ++ char *s2 = (char *) (buf2 + align2); ++ ++ static const char d[] = "1234567890abcdef"; ++#define dl (sizeof (d) - 1) ++ char *ss2 = s2; ++ for (size_t l = len2; l > 0; l = l > dl ? l - dl : 0) ++ { ++ size_t t = l > dl ? dl : l; ++ ss2 = mempcpy (ss2, d, t); ++ } ++ s2[len2] = '\0'; ++ ++ if (fail) ++ { ++ char *ss1 = s1; ++ for (size_t l = len1; l > 0; l = l > dl ? l - dl : 0) ++ { ++ size_t t = l > dl ? dl : l; ++ memcpy (ss1, d, t); ++ ++ss1[len2 > 7 ? 7 : len2 - 1]; ++ ss1 += t; ++ } ++ } ++ else ++ { ++ memset (s1, '0', len1); ++ memcpy (s1 + len1 - len2, s2, len2); ++ } ++ s1[len1] = '\0'; ++ ++ if (HP_TIMING_AVAIL) ++ printf ("Length %4zd/%zd, alignment %2zd/%2zd, %s:", ++ len1, len2, align1, align2, fail ? "fail" : "found"); ++ ++ FOR_EACH_IMPL (impl, 0) ++ do_one_test (impl, s1, s2, fail ? NULL : s1 + len1 - len2); ++ ++ if (HP_TIMING_AVAIL) ++ putchar ('\n'); ++} ++ ++ ++static int ++test_main (void) ++{ ++ test_init (); ++ ++ printf ("%23s", ""); ++ FOR_EACH_IMPL (impl, 0) ++ printf ("\t%s", impl->name); ++ putchar ('\n'); ++ ++ for (size_t klen = 2; klen < 32; ++klen) ++ for (size_t hlen = 2 * klen; hlen < 16 * klen; hlen += klen) ++ { ++ do_test (0, 0, hlen, klen, 0); ++ do_test (0, 0, hlen, klen, 1); ++ do_test (0, 3, hlen, klen, 0); ++ do_test (0, 3, hlen, klen, 1); ++ do_test (0, 9, hlen, klen, 0); ++ do_test (0, 9, hlen, klen, 1); ++ do_test (0, 15, hlen, klen, 0); ++ do_test (0, 15, hlen, klen, 1); ++ ++ do_test (3, 0, hlen, klen, 0); ++ do_test (3, 0, hlen, klen, 1); ++ do_test (3, 3, hlen, klen, 0); ++ do_test (3, 3, hlen, klen, 1); ++ do_test (3, 9, hlen, klen, 0); ++ do_test (3, 9, hlen, klen, 1); ++ do_test (3, 15, hlen, klen, 0); ++ do_test (3, 15, hlen, klen, 1); ++ ++ do_test (9, 0, hlen, klen, 0); ++ do_test (9, 0, hlen, klen, 1); ++ do_test (9, 3, hlen, klen, 0); ++ do_test (9, 3, hlen, klen, 1); ++ do_test (9, 9, hlen, klen, 0); ++ do_test (9, 9, hlen, klen, 1); ++ do_test (9, 15, hlen, klen, 0); ++ do_test (9, 15, hlen, klen, 1); ++ ++ do_test (15, 0, hlen, klen, 0); ++ do_test (15, 0, hlen, klen, 1); ++ do_test (15, 3, hlen, klen, 0); ++ do_test (15, 3, hlen, klen, 1); ++ do_test (15, 9, hlen, klen, 0); ++ do_test (15, 9, hlen, klen, 1); ++ do_test (15, 15, hlen, klen, 0); ++ do_test (15, 15, hlen, klen, 1); ++ } ++ ++ do_test (0, 0, page_size - 1, 16, 0); ++ do_test (0, 0, page_size - 1, 16, 1); ++ ++ return ret; ++} ++ ++#include "../test-skeleton.c" +Index: glibc-2.12-2-gc4ccff1/string/tester.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/string/tester.c ++++ glibc-2.12-2-gc4ccff1/string/tester.c +@@ -441,20 +441,21 @@ test_strnlen (void) + check (strnlen ("", 10) == 0, 1); /* Empty. */ + check (strnlen ("a", 10) == 1, 2); /* Single char. */ + check (strnlen ("abcd", 10) == 4, 3); /* Multiple chars. */ +- check (strnlen ("foo", (size_t)-1) == 3, 4); /* limits of n. */ ++ check (strnlen ("foo", (size_t) -1) == 3, 4); /* limits of n. */ ++ check (strnlen ("abcd", 0) == 0, 5); /* Restricted. */ ++ check (strnlen ("abcd", 1) == 1, 6); /* Restricted. */ ++ check (strnlen ("abcd", 2) == 2, 7); /* Restricted. */ ++ check (strnlen ("abcd", 3) == 3, 8); /* Restricted. */ ++ check (strnlen ("abcd", 4) == 4, 9); /* Restricted. */ + +- { +- char buf[4096]; +- int i; +- char *p; +- for (i=0; i < 0x100; i++) +- { +- p = (char *) ((unsigned long int)(buf + 0xff) & ~0xff) + i; +- strcpy (p, "OK"); +- strcpy (p+3, "BAD/WRONG"); +- check (strnlen (p, 100) == 2, 5+i); +- } +- } ++ char buf[4096]; ++ for (int i = 0; i < 0x100; ++i) ++ { ++ char *p = (char *) ((unsigned long int)(buf + 0xff) & ~0xff) + i; ++ strcpy (p, "OK"); ++ strcpy (p + 3, "BAD/WRONG"); ++ check (strnlen (p, 100) == 2, 10 + i); ++ } + } + + static void +Index: glibc-2.12-2-gc4ccff1/string/tst-strlen.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/string/tst-strlen.c ++++ glibc-2.12-2-gc4ccff1/string/tst-strlen.c +@@ -31,11 +31,21 @@ main(int argc, char *argv[]) + buf[words * 4 + 3] = (last & 8) != 0 ? 'e' : '\0'; + buf[words * 4 + 4] = '\0'; + +- if (strlen (buf) != words * 4 + lens[last] +- || strnlen (buf, -1) != words * 4 + lens[last]) ++ if (strlen (buf) != words * 4 + lens[last]) + { +- printf ("failed for base=%Zu, words=%Zu, and last=%Zu\n", +- base, words, last); ++ printf ("\ ++strlen failed for base=%Zu, words=%Zu, and last=%Zu (is %zd, expected %zd)\n", ++ base, words, last, ++ strlen (buf), words * 4 + lens[last]); ++ return 1; ++ } ++ ++ if (strnlen (buf, -1) != words * 4 + lens[last]) ++ { ++ printf ("\ ++strnlen failed for base=%Zu, words=%Zu, and last=%Zu (is %zd, expected %zd)\n", ++ base, words, last, ++ strnlen (buf, -1), words * 4 + lens[last]); + return 1; + } + } +Index: glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/i386/i686/multiarch/Makefile ++++ glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/Makefile +@@ -9,7 +9,7 @@ sysdep_routines += bzero-sse2 memset-sse + memmove-ssse3-rep bcopy-ssse3 bcopy-ssse3-rep \ + memset-sse2-rep bzero-sse2-rep strcmp-ssse3 \ + strcmp-sse4 strncmp-c strncmp-ssse3 strncmp-sse4 \ +- memcmp-ssse3 memcmp-sse4 ++ memcmp-ssse3 memcmp-sse4 strcasestr-nonascii + ifeq (yes,$(config-cflags-sse4)) + sysdep_routines += strcspn-c strpbrk-c strspn-c strstr-c strcasestr-c + CFLAGS-strcspn-c.c += -msse4 +@@ -17,6 +17,7 @@ CFLAGS-strpbrk-c.c += -msse4 + CFLAGS-strspn-c.c += -msse4 + CFLAGS-strstr.c += -msse4 + CFLAGS-strcasestr.c += -msse4 ++CFLAGS-strcasestr-nonascii.c += -msse4 + endif + endif + +Index: glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/strcasestr-nonascii.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/strcasestr-nonascii.c +@@ -0,0 +1,2 @@ ++#include <nmmintrin.h> ++#include <sysdeps/x86_64/multiarch/strcasestr-nonascii.c> +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/Makefile ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/Makefile +@@ -12,7 +12,8 @@ sysdep_routines += _mcount + endif + + ifeq ($(subdir),string) +-sysdep_routines += cacheinfo ++sysdep_routines += cacheinfo strcasecmp_l-nonascii strncase_l-nonascii ++gen-as-const-headers += locale-defines.sym + endif + + ifeq ($(subdir),elf) +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/locale-defines.sym +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/locale-defines.sym +@@ -0,0 +1,11 @@ ++#include <locale/localeinfo.h> ++#include <langinfo.h> ++#include <stddef.h> ++ ++-- ++ ++LOCALE_T___LOCALES offsetof (struct __locale_struct, __locales) ++LC_CTYPE ++_NL_CTYPE_NONASCII_CASE ++LOCALE_DATA_VALUES offsetof (struct __locale_data, values) ++SIZEOF_VALUES sizeof (((struct __locale_data *) 0)->values[0]) +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/Makefile ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/Makefile +@@ -5,7 +5,9 @@ endif + + ifeq ($(subdir),string) + sysdep_routines += stpncpy-c strncpy-c strcmp-ssse3 strncmp-ssse3 \ +- strend-sse4 memcmp-sse4 ++ strend-sse4 memcmp-sse4 \ ++ strcasestr-nonascii strcasecmp_l-ssse3 \ ++ strncase_l-ssse3 + ifeq (yes,$(config-cflags-sse4)) + sysdep_routines += strcspn-c strpbrk-c strspn-c strstr-c strcasestr-c + CFLAGS-strcspn-c.c += -msse4 +@@ -13,5 +15,6 @@ CFLAGS-strpbrk-c.c += -msse4 + CFLAGS-strspn-c.c += -msse4 + CFLAGS-strstr.c += -msse4 + CFLAGS-strcasestr.c += -msse4 ++CFLAGS-strcasestr-nonascii.c += -msse4 + endif + endif +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcasecmp_l-ssse3.S +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcasecmp_l-ssse3.S +@@ -0,0 +1,6 @@ ++#define USE_SSSE3 1 ++#define USE_AS_STRCASECMP_L ++#define NO_NOLOCALE_ALIAS ++#define STRCMP __strcasecmp_l_ssse3 ++#define __strcasecmp __strcasecmp_ssse3 ++#include "../strcmp.S" +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcasecmp_l.S +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcasecmp_l.S +@@ -0,0 +1,6 @@ ++#define STRCMP __strcasecmp_l ++#define USE_AS_STRCASECMP_L ++#include "strcmp.S" ++ ++weak_alias (__strcasecmp_l, strcasecmp_l) ++libc_hidden_def (strcasecmp_l) +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcasestr-nonascii.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcasestr-nonascii.c +@@ -0,0 +1,50 @@ ++/* strstr with SSE4.2 intrinsics ++ Copyright (C) 2010 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++# include <ctype.h> ++ ++ ++/* Similar to __m128i_strloadu. Convert to lower case for none-POSIX/C ++ locale. */ ++static inline __m128i ++__m128i_strloadu_tolower (const unsigned char *p) ++{ ++ union ++ { ++ char b[16]; ++ __m128i x; ++ } u; ++ ++ for (int i = 0; i < 16; ++i) ++ if (p[i] == 0) ++ { ++ u.b[i] = 0; ++ break; ++ } ++ else ++ u.b[i] = tolower (p[i]); ++ ++ return u.x; ++} ++ ++ ++#define STRCASESTR_NONASCII ++#define USE_AS_STRCASESTR ++#define STRSTR_SSE42 __strcasestr_sse42_nonascii ++#include "strstr.c" +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcasestr.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/strcasestr.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcasestr.c +@@ -1,3 +1,7 @@ ++extern char *__strcasestr_sse42_nonascii (const unsigned char *s1, ++ const unsigned char *s2) ++ attribute_hidden; ++ + #define USE_AS_STRCASESTR + #define STRSTR_SSE42 __strcasestr_sse42 + #include "strstr.c" +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcmp.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/strcmp.S ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcmp.S +@@ -24,7 +24,7 @@ + #ifdef USE_AS_STRNCMP + /* Since the counter, %r11, is unsigned, we branch to strcmp_exitz + if the new counter > the old one or is 0. */ +-#define UPDATE_STRNCMP_COUNTER \ ++# define UPDATE_STRNCMP_COUNTER \ + /* calculate left number to compare */ \ + lea -16(%rcx, %r11), %r9; \ + cmp %r9, %r11; \ +@@ -33,23 +33,50 @@ + je LABEL(strcmp_exitz_sse4_2); \ + mov %r9, %r11 + +-#define STRCMP_SSE42 __strncmp_sse42 +-#define STRCMP_SSSE3 __strncmp_ssse3 +-#define STRCMP_SSE2 __strncmp_sse2 +-#define __GI_STRCMP __GI_strncmp ++# define STRCMP_SSE42 __strncmp_sse42 ++# define STRCMP_SSSE3 __strncmp_ssse3 ++# define STRCMP_SSE2 __strncmp_sse2 ++# define __GI_STRCMP __GI_strncmp ++#elif defined USE_AS_STRCASECMP_L ++# include "locale-defines.h" ++ ++# define UPDATE_STRNCMP_COUNTER ++ ++# define STRCMP_SSE42 __strcasecmp_l_sse42 ++# define STRCMP_SSSE3 __strcasecmp_l_ssse3 ++# define STRCMP_SSE2 __strcasecmp_l_sse2 ++# define __GI_STRCMP __GI___strcasecmp_l ++#elif defined USE_AS_STRNCASECMP_L ++# include "locale-defines.h" ++ ++/* Since the counter, %r11, is unsigned, we branch to strcmp_exitz ++ if the new counter > the old one or is 0. */ ++# define UPDATE_STRNCMP_COUNTER \ ++ /* calculate left number to compare */ \ ++ lea -16(%rcx, %r11), %r9; \ ++ cmp %r9, %r11; \ ++ jb LABEL(strcmp_exitz_sse4_2); \ ++ test %r9, %r9; \ ++ je LABEL(strcmp_exitz_sse4_2); \ ++ mov %r9, %r11 ++ ++# define STRCMP_SSE42 __strncasecmp_l_sse42 ++# define STRCMP_SSSE3 __strncasecmp_l_ssse3 ++# define STRCMP_SSE2 __strncasecmp_l_sse2 ++# define __GI_STRCMP __GI___strncasecmp_l + #else +-#define UPDATE_STRNCMP_COUNTER +-#ifndef STRCMP +-#define STRCMP strcmp +-#define STRCMP_SSE42 __strcmp_sse42 +-#define STRCMP_SSSE3 __strcmp_ssse3 +-#define STRCMP_SSE2 __strcmp_sse2 +-#define __GI_STRCMP __GI_strcmp +-#endif ++# define UPDATE_STRNCMP_COUNTER ++# ifndef STRCMP ++# define STRCMP strcmp ++# define STRCMP_SSE42 __strcmp_sse42 ++# define STRCMP_SSSE3 __strcmp_ssse3 ++# define STRCMP_SSE2 __strcmp_sse2 ++# define __GI_STRCMP __GI_strcmp ++# endif + #endif + + #ifndef LABEL +-#define LABEL(l) L(l) ++# define LABEL(l) L(l) + #endif + + /* Define multiple versions only for the definition in libc. Don't +@@ -73,6 +100,43 @@ ENTRY(STRCMP) + 2: ret + END(STRCMP) + ++# ifdef USE_AS_STRCASECMP_L ++ENTRY(__strcasecmp) ++ .type __strcasecmp, @gnu_indirect_function ++ cmpl $0, __cpu_features+KIND_OFFSET(%rip) ++ jne 1f ++ call __init_cpu_features ++1: ++ leaq __strcasecmp_sse42(%rip), %rax ++ testl $bit_SSE4_2, __cpu_features+CPUID_OFFSET+index_SSE4_2(%rip) ++ jnz 2f ++ leaq __strcasecmp_ssse3(%rip), %rax ++ testl $bit_SSSE3, __cpu_features+CPUID_OFFSET+index_SSSE3(%rip) ++ jnz 2f ++ leaq __strcasecmp_sse2(%rip), %rax ++2: ret ++END(__strcasecmp) ++weak_alias (__strcasecmp, strcasecmp) ++# endif ++# ifdef USE_AS_STRNCASECMP_L ++ENTRY(__strncasecmp) ++ .type __strncasecmp, @gnu_indirect_function ++ cmpl $0, __cpu_features+KIND_OFFSET(%rip) ++ jne 1f ++ call __init_cpu_features ++1: ++ leaq __strncasecmp_sse42(%rip), %rax ++ testl $bit_SSE4_2, __cpu_features+CPUID_OFFSET+index_SSE4_2(%rip) ++ jnz 2f ++ leaq __strncasecmp_ssse3(%rip), %rax ++ testl $bit_SSSE3, __cpu_features+CPUID_OFFSET+index_SSSE3(%rip) ++ jnz 2f ++ leaq __strncasecmp_sse2(%rip), %rax ++2: ret ++END(__strncasecmp) ++weak_alias (__strncasecmp, strncasecmp) ++# endif ++ + /* We use 0x1a: + _SIDD_SBYTE_OPS + | _SIDD_CMP_EQUAL_EACH +@@ -101,8 +165,31 @@ END(STRCMP) + + /* Put all SSE 4.2 functions together. */ + .section .text.sse4.2,"ax",@progbits +- .align 16 ++ .align 16 + .type STRCMP_SSE42, @function ++# ifdef USE_AS_STRCASECMP_L ++ENTRY (__strcasecmp_sse42) ++ movq __libc_tsd_LOCALE@gottpoff(%rip),%rax ++ movq %fs:(%rax),%rdx ++ ++ // XXX 5 byte should be before the function ++ /* 5-byte NOP. */ ++ .byte 0x0f,0x1f,0x44,0x00,0x00 ++END (__strcasecmp_sse42) ++ /* FALLTHROUGH to strcasecmp_l. */ ++# endif ++# ifdef USE_AS_STRNCASECMP_L ++ENTRY (__strncasecmp_sse42) ++ movq __libc_tsd_LOCALE@gottpoff(%rip),%rax ++ movq %fs:(%rax),%rcx ++ ++ // XXX 5 byte should be before the function ++ /* 5-byte NOP. */ ++ .byte 0x0f,0x1f,0x44,0x00,0x00 ++END (__strncasecmp_sse42) ++ /* FALLTHROUGH to strncasecmp_l. */ ++# endif ++ + STRCMP_SSE42: + cfi_startproc + CALL_MCOUNT +@@ -110,24 +197,87 @@ STRCMP_SSE42: + /* + * This implementation uses SSE to compare up to 16 bytes at a time. + */ +-#ifdef USE_AS_STRNCMP ++# ifdef USE_AS_STRCASECMP_L ++ /* We have to fall back on the C implementation for locales ++ with encodings not matching ASCII for single bytes. */ ++# if LOCALE_T___LOCALES != 0 || LC_CTYPE != 0 ++ movq LOCALE_T___LOCALES+LC_CTYPE*8(%rdx), %rax ++# else ++ movq (%rdx), %rax ++# endif ++ testl $0, LOCALE_DATA_VALUES+_NL_CTYPE_NONASCII_CASE*SIZEOF_VALUES(%rax) ++ jne __strcasecmp_l_nonascii ++# endif ++# ifdef USE_AS_STRNCASECMP_L ++ /* We have to fall back on the C implementation for locales ++ with encodings not matching ASCII for single bytes. */ ++# if LOCALE_T___LOCALES != 0 || LC_CTYPE != 0 ++ movq LOCALE_T___LOCALES+LC_CTYPE*8(%rcx), %rax ++# else ++ movq (%rcx), %rax ++# endif ++ testl $0, LOCALE_DATA_VALUES+_NL_CTYPE_NONASCII_CASE*SIZEOF_VALUES(%rax) ++ jne __strncasecmp_l_nonascii ++# endif ++ ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + test %rdx, %rdx + je LABEL(strcmp_exitz_sse4_2) + cmp $1, %rdx + je LABEL(Byte0_sse4_2) + mov %rdx, %r11 +-#endif ++# endif + mov %esi, %ecx + mov %edi, %eax + /* Use 64bit AND here to avoid long NOP padding. */ + and $0x3f, %rcx /* rsi alignment in cache line */ + and $0x3f, %rax /* rdi alignment in cache line */ ++# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L ++ .section .rodata.cst16,"aM",@progbits,16 ++ .align 16 ++.Lbelowupper_sse4: ++ .quad 0x4040404040404040 ++ .quad 0x4040404040404040 ++.Ltopupper_sse4: ++ .quad 0x5b5b5b5b5b5b5b5b ++ .quad 0x5b5b5b5b5b5b5b5b ++.Ltouppermask_sse4: ++ .quad 0x2020202020202020 ++ .quad 0x2020202020202020 ++ .previous ++ movdqa .Lbelowupper_sse4(%rip), %xmm4 ++# define UCLOW_reg %xmm4 ++ movdqa .Ltopupper_sse4(%rip), %xmm5 ++# define UCHIGH_reg %xmm5 ++ movdqa .Ltouppermask_sse4(%rip), %xmm6 ++# define LCQWORD_reg %xmm6 ++# endif + cmp $0x30, %ecx + ja LABEL(crosscache_sse4_2)/* rsi: 16-byte load will cross cache line */ + cmp $0x30, %eax + ja LABEL(crosscache_sse4_2)/* rdi: 16-byte load will cross cache line */ + movdqu (%rdi), %xmm1 + movdqu (%rsi), %xmm2 ++# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L ++# define TOLOWER(reg1, reg2) \ ++ movdqa reg1, %xmm7; \ ++ movdqa UCHIGH_reg, %xmm8; \ ++ movdqa reg2, %xmm9; \ ++ movdqa UCHIGH_reg, %xmm10; \ ++ pcmpgtb UCLOW_reg, %xmm7; \ ++ pcmpgtb reg1, %xmm8; \ ++ pcmpgtb UCLOW_reg, %xmm9; \ ++ pcmpgtb reg2, %xmm10; \ ++ pand %xmm8, %xmm7; \ ++ pand %xmm10, %xmm9; \ ++ pand LCQWORD_reg, %xmm7; \ ++ pand LCQWORD_reg, %xmm9; \ ++ por %xmm7, reg1; \ ++ por %xmm9, reg2 ++ TOLOWER (%xmm1, %xmm2) ++# else ++# define TOLOWER(reg1, reg2) ++# endif + pxor %xmm0, %xmm0 /* clear %xmm0 for null char checks */ + pcmpeqb %xmm1, %xmm0 /* Any null chars? */ + pcmpeqb %xmm2, %xmm1 /* compare first 16 bytes for equality */ +@@ -135,10 +285,10 @@ STRCMP_SSE42: + pmovmskb %xmm1, %edx + sub $0xffff, %edx /* if first 16 bytes are same, edx == 0xffff */ + jnz LABEL(less16bytes_sse4_2)/* If not, find different value or null char */ +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2)/* finish comparision */ +-#endif ++# endif + add $16, %rsi /* prepare to search next 16 bytes */ + add $16, %rdi /* prepare to search next 16 bytes */ + +@@ -180,7 +330,13 @@ LABEL(ashr_0_sse4_2): + movdqa (%rsi), %xmm1 + pxor %xmm0, %xmm0 /* clear %xmm0 for null char check */ + pcmpeqb %xmm1, %xmm0 /* Any null chars? */ ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L + pcmpeqb (%rdi), %xmm1 /* compare 16 bytes for equality */ ++# else ++ movdqa (%rdi), %xmm2 ++ TOLOWER (%xmm1, %xmm2) ++ pcmpeqb %xmm2, %xmm1 /* compare 16 bytes for equality */ ++# endif + psubb %xmm0, %xmm1 /* packed sub of comparison results*/ + pmovmskb %xmm1, %r9d + shr %cl, %edx /* adjust 0xffff for offset */ +@@ -204,44 +360,60 @@ LABEL(ashr_0_sse4_2): + .p2align 4 + LABEL(ashr_0_use_sse4_2): + movdqa (%rdi,%rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L + pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + lea 16(%rdx), %rdx + jbe LABEL(ashr_0_use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + + movdqa (%rdi,%rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L + pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + lea 16(%rdx), %rdx + jbe LABEL(ashr_0_use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + jmp LABEL(ashr_0_use_sse4_2) + + + .p2align 4 + LABEL(ashr_0_use_sse4_2_exit): + jnc LABEL(strcmp_exitz_sse4_2) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub %rcx, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + lea -16(%rdx, %rcx), %rcx + movzbl (%rdi, %rcx), %eax + movzbl (%rsi, %rcx), %edx ++# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L ++ leaq _nl_C_LC_CTYPE_tolower+128*4(%rip), %rcx ++ movl (%rcx,%rax,4), %eax ++ movl (%rcx,%rdx,4), %edx ++# endif + sub %edx, %eax + ret + + + +- + /* + * The following cases will be handled by ashr_1 +- * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case ++ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case + * n(15) n -15 0(15 +(n-15) - n) ashr_1 + */ + .p2align 4 +@@ -251,6 +423,7 @@ LABEL(ashr_1_sse4_2): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 /* Any null chars? */ + pslldq $15, %xmm2 /* shift first string to align with second */ ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 /* compare 16 bytes for equality */ + psubb %xmm0, %xmm2 /* packed sub of comparison results*/ + pmovmskb %xmm2, %r9d +@@ -281,12 +454,18 @@ LABEL(loop_ashr_1_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $1, -16(%rdi, %rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L + pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + + add $16, %rdx + add $16, %r10 +@@ -294,12 +473,18 @@ LABEL(loop_ashr_1_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $1, -16(%rdi, %rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L + pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + add $16, %rdx + jmp LABEL(loop_ashr_1_use_sse4_2) + +@@ -309,10 +494,10 @@ LABEL(nibble_ashr_1_use_sse4_2): + movdqa -16(%rdi, %rdx), %xmm0 + psrldq $1, %xmm0 + pcmpistri $0x3a,%xmm0, %xmm0 +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + cmp %r11, %rcx + jae LABEL(nibble_ashr_use_sse4_2_exit) +-#endif ++# endif + cmp $14, %ecx + ja LABEL(loop_ashr_1_use_sse4_2) + +@@ -320,7 +505,7 @@ LABEL(nibble_ashr_1_use_sse4_2): + + /* + * The following cases will be handled by ashr_2 +- * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case ++ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case + * n(14~15) n -14 1(15 +(n-14) - n) ashr_2 + */ + .p2align 4 +@@ -330,6 +515,7 @@ LABEL(ashr_2_sse4_2): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $14, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -360,12 +546,18 @@ LABEL(loop_ashr_2_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $2, -16(%rdi, %rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L + pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + + add $16, %rdx + add $16, %r10 +@@ -373,12 +565,18 @@ LABEL(loop_ashr_2_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $2, -16(%rdi, %rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L + pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + add $16, %rdx + jmp LABEL(loop_ashr_2_use_sse4_2) + +@@ -388,10 +586,10 @@ LABEL(nibble_ashr_2_use_sse4_2): + movdqa -16(%rdi, %rdx), %xmm0 + psrldq $2, %xmm0 + pcmpistri $0x3a,%xmm0, %xmm0 +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + cmp %r11, %rcx + jae LABEL(nibble_ashr_use_sse4_2_exit) +-#endif ++# endif + cmp $13, %ecx + ja LABEL(loop_ashr_2_use_sse4_2) + +@@ -409,6 +607,7 @@ LABEL(ashr_3_sse4_2): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $13, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -439,12 +638,18 @@ LABEL(loop_ashr_3_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $3, -16(%rdi, %rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L + pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + + add $16, %rdx + add $16, %r10 +@@ -452,12 +657,18 @@ LABEL(loop_ashr_3_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $3, -16(%rdi, %rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L + pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + add $16, %rdx + jmp LABEL(loop_ashr_3_use_sse4_2) + +@@ -467,10 +678,10 @@ LABEL(nibble_ashr_3_use_sse4_2): + movdqa -16(%rdi, %rdx), %xmm0 + psrldq $3, %xmm0 + pcmpistri $0x3a,%xmm0, %xmm0 +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + cmp %r11, %rcx + jae LABEL(nibble_ashr_use_sse4_2_exit) +-#endif ++# endif + cmp $12, %ecx + ja LABEL(loop_ashr_3_use_sse4_2) + +@@ -488,6 +699,7 @@ LABEL(ashr_4_sse4_2): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $12, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -519,12 +731,18 @@ LABEL(loop_ashr_4_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $4, -16(%rdi, %rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L + pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + + add $16, %rdx + add $16, %r10 +@@ -532,12 +750,18 @@ LABEL(loop_ashr_4_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $4, -16(%rdi, %rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L + pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + add $16, %rdx + jmp LABEL(loop_ashr_4_use_sse4_2) + +@@ -547,10 +771,10 @@ LABEL(nibble_ashr_4_use_sse4_2): + movdqa -16(%rdi, %rdx), %xmm0 + psrldq $4, %xmm0 + pcmpistri $0x3a,%xmm0, %xmm0 +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + cmp %r11, %rcx + jae LABEL(nibble_ashr_use_sse4_2_exit) +-#endif ++# endif + cmp $11, %ecx + ja LABEL(loop_ashr_4_use_sse4_2) + +@@ -559,7 +783,7 @@ LABEL(nibble_ashr_4_use_sse4_2): + /* + * The following cases will be handled by ashr_5 + * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case +- * n(11~15) n - 11 4(15 +(n-11) - n) ashr_5 ++ * n(11~15) n - 11 4(15 +(n-11) - n) ashr_5 + */ + .p2align 4 + LABEL(ashr_5_sse4_2): +@@ -568,6 +792,7 @@ LABEL(ashr_5_sse4_2): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $11, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -599,12 +824,18 @@ LABEL(loop_ashr_5_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $5, -16(%rdi, %rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L + pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + + add $16, %rdx + add $16, %r10 +@@ -613,12 +844,18 @@ LABEL(loop_ashr_5_use_sse4_2): + movdqa (%rdi, %rdx), %xmm0 + + palignr $5, -16(%rdi, %rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L + pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + add $16, %rdx + jmp LABEL(loop_ashr_5_use_sse4_2) + +@@ -628,10 +865,10 @@ LABEL(nibble_ashr_5_use_sse4_2): + movdqa -16(%rdi, %rdx), %xmm0 + psrldq $5, %xmm0 + pcmpistri $0x3a,%xmm0, %xmm0 +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + cmp %r11, %rcx + jae LABEL(nibble_ashr_use_sse4_2_exit) +-#endif ++# endif + cmp $10, %ecx + ja LABEL(loop_ashr_5_use_sse4_2) + +@@ -640,7 +877,7 @@ LABEL(nibble_ashr_5_use_sse4_2): + /* + * The following cases will be handled by ashr_6 + * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case +- * n(10~15) n - 10 5(15 +(n-10) - n) ashr_6 ++ * n(10~15) n - 10 5(15 +(n-10) - n) ashr_6 + */ + .p2align 4 + LABEL(ashr_6_sse4_2): +@@ -649,6 +886,7 @@ LABEL(ashr_6_sse4_2): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $10, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -680,12 +918,18 @@ LABEL(loop_ashr_6_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $6, -16(%rdi, %rdx), %xmm0 +- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L ++ pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + + add $16, %rdx + add $16, %r10 +@@ -693,12 +937,18 @@ LABEL(loop_ashr_6_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $6, -16(%rdi, %rdx), %xmm0 +- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L ++ pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + add $16, %rdx + jmp LABEL(loop_ashr_6_use_sse4_2) + +@@ -708,10 +958,10 @@ LABEL(nibble_ashr_6_use_sse4_2): + movdqa -16(%rdi, %rdx), %xmm0 + psrldq $6, %xmm0 + pcmpistri $0x3a,%xmm0, %xmm0 +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + cmp %r11, %rcx + jae LABEL(nibble_ashr_use_sse4_2_exit) +-#endif ++# endif + cmp $9, %ecx + ja LABEL(loop_ashr_6_use_sse4_2) + +@@ -720,7 +970,7 @@ LABEL(nibble_ashr_6_use_sse4_2): + /* + * The following cases will be handled by ashr_7 + * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case +- * n(9~15) n - 9 6(15 +(n - 9) - n) ashr_7 ++ * n(9~15) n - 9 6(15 +(n - 9) - n) ashr_7 + */ + .p2align 4 + LABEL(ashr_7_sse4_2): +@@ -729,6 +979,7 @@ LABEL(ashr_7_sse4_2): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $9, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -760,12 +1011,18 @@ LABEL(loop_ashr_7_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $7, -16(%rdi, %rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L + pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + + add $16, %rdx + add $16, %r10 +@@ -773,12 +1030,18 @@ LABEL(loop_ashr_7_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $7, -16(%rdi, %rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L + pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + add $16, %rdx + jmp LABEL(loop_ashr_7_use_sse4_2) + +@@ -788,10 +1051,10 @@ LABEL(nibble_ashr_7_use_sse4_2): + movdqa -16(%rdi, %rdx), %xmm0 + psrldq $7, %xmm0 + pcmpistri $0x3a,%xmm0, %xmm0 +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + cmp %r11, %rcx + jae LABEL(nibble_ashr_use_sse4_2_exit) +-#endif ++# endif + cmp $8, %ecx + ja LABEL(loop_ashr_7_use_sse4_2) + +@@ -800,7 +1063,7 @@ LABEL(nibble_ashr_7_use_sse4_2): + /* + * The following cases will be handled by ashr_8 + * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case +- * n(8~15) n - 8 7(15 +(n - 8) - n) ashr_8 ++ * n(8~15) n - 8 7(15 +(n - 8) - n) ashr_8 + */ + .p2align 4 + LABEL(ashr_8_sse4_2): +@@ -809,6 +1072,7 @@ LABEL(ashr_8_sse4_2): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $8, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -840,12 +1104,18 @@ LABEL(loop_ashr_8_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $8, -16(%rdi, %rdx), %xmm0 +- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L ++ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + + add $16, %rdx + add $16, %r10 +@@ -853,12 +1123,18 @@ LABEL(loop_ashr_8_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $8, -16(%rdi, %rdx), %xmm0 +- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L ++ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + add $16, %rdx + jmp LABEL(loop_ashr_8_use_sse4_2) + +@@ -868,10 +1144,10 @@ LABEL(nibble_ashr_8_use_sse4_2): + movdqa -16(%rdi, %rdx), %xmm0 + psrldq $8, %xmm0 + pcmpistri $0x3a,%xmm0, %xmm0 +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + cmp %r11, %rcx + jae LABEL(nibble_ashr_use_sse4_2_exit) +-#endif ++# endif + cmp $7, %ecx + ja LABEL(loop_ashr_8_use_sse4_2) + +@@ -880,7 +1156,7 @@ LABEL(nibble_ashr_8_use_sse4_2): + /* + * The following cases will be handled by ashr_9 + * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case +- * n(7~15) n - 7 8(15 +(n - 7) - n) ashr_9 ++ * n(7~15) n - 7 8(15 +(n - 7) - n) ashr_9 + */ + .p2align 4 + LABEL(ashr_9_sse4_2): +@@ -889,6 +1165,7 @@ LABEL(ashr_9_sse4_2): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $7, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -921,12 +1198,18 @@ LABEL(loop_ashr_9_use_sse4_2): + movdqa (%rdi, %rdx), %xmm0 + + palignr $9, -16(%rdi, %rdx), %xmm0 +- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L ++ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + + add $16, %rdx + add $16, %r10 +@@ -934,12 +1217,18 @@ LABEL(loop_ashr_9_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $9, -16(%rdi, %rdx), %xmm0 +- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L ++ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + add $16, %rdx + jmp LABEL(loop_ashr_9_use_sse4_2) + +@@ -949,10 +1238,10 @@ LABEL(nibble_ashr_9_use_sse4_2): + movdqa -16(%rdi, %rdx), %xmm0 + psrldq $9, %xmm0 + pcmpistri $0x3a,%xmm0, %xmm0 +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + cmp %r11, %rcx + jae LABEL(nibble_ashr_use_sse4_2_exit) +-#endif ++# endif + cmp $6, %ecx + ja LABEL(loop_ashr_9_use_sse4_2) + +@@ -961,7 +1250,7 @@ LABEL(nibble_ashr_9_use_sse4_2): + /* + * The following cases will be handled by ashr_10 + * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case +- * n(6~15) n - 6 9(15 +(n - 6) - n) ashr_10 ++ * n(6~15) n - 6 9(15 +(n - 6) - n) ashr_10 + */ + .p2align 4 + LABEL(ashr_10_sse4_2): +@@ -970,6 +1259,7 @@ LABEL(ashr_10_sse4_2): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $6, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -1001,12 +1291,18 @@ LABEL(loop_ashr_10_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $10, -16(%rdi, %rdx), %xmm0 +- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L ++ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + + add $16, %rdx + add $16, %r10 +@@ -1014,12 +1310,18 @@ LABEL(loop_ashr_10_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $10, -16(%rdi, %rdx), %xmm0 +- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L ++ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + add $16, %rdx + jmp LABEL(loop_ashr_10_use_sse4_2) + +@@ -1029,10 +1331,10 @@ LABEL(nibble_ashr_10_use_sse4_2): + movdqa -16(%rdi, %rdx), %xmm0 + psrldq $10, %xmm0 + pcmpistri $0x3a,%xmm0, %xmm0 +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + cmp %r11, %rcx + jae LABEL(nibble_ashr_use_sse4_2_exit) +-#endif ++# endif + cmp $5, %ecx + ja LABEL(loop_ashr_10_use_sse4_2) + +@@ -1041,7 +1343,7 @@ LABEL(nibble_ashr_10_use_sse4_2): + /* + * The following cases will be handled by ashr_11 + * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case +- * n(5~15) n - 5 10(15 +(n - 5) - n) ashr_11 ++ * n(5~15) n - 5 10(15 +(n - 5) - n) ashr_11 + */ + .p2align 4 + LABEL(ashr_11_sse4_2): +@@ -1050,6 +1352,7 @@ LABEL(ashr_11_sse4_2): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $5, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -1081,12 +1384,18 @@ LABEL(loop_ashr_11_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $11, -16(%rdi, %rdx), %xmm0 +- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L ++ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + + add $16, %rdx + add $16, %r10 +@@ -1094,12 +1403,18 @@ LABEL(loop_ashr_11_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $11, -16(%rdi, %rdx), %xmm0 +- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L ++ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + add $16, %rdx + jmp LABEL(loop_ashr_11_use_sse4_2) + +@@ -1109,10 +1424,10 @@ LABEL(nibble_ashr_11_use_sse4_2): + movdqa -16(%rdi, %rdx), %xmm0 + psrldq $11, %xmm0 + pcmpistri $0x3a,%xmm0, %xmm0 +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + cmp %r11, %rcx + jae LABEL(nibble_ashr_use_sse4_2_exit) +-#endif ++# endif + cmp $4, %ecx + ja LABEL(loop_ashr_11_use_sse4_2) + +@@ -1121,7 +1436,7 @@ LABEL(nibble_ashr_11_use_sse4_2): + /* + * The following cases will be handled by ashr_12 + * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case +- * n(4~15) n - 4 11(15 +(n - 4) - n) ashr_12 ++ * n(4~15) n - 4 11(15 +(n - 4) - n) ashr_12 + */ + .p2align 4 + LABEL(ashr_12_sse4_2): +@@ -1130,6 +1445,7 @@ LABEL(ashr_12_sse4_2): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $4, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -1161,12 +1477,18 @@ LABEL(loop_ashr_12_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $12, -16(%rdi, %rdx), %xmm0 +- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L ++ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + + add $16, %rdx + add $16, %r10 +@@ -1174,12 +1496,18 @@ LABEL(loop_ashr_12_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $12, -16(%rdi, %rdx), %xmm0 +- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L ++ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + add $16, %rdx + jmp LABEL(loop_ashr_12_use_sse4_2) + +@@ -1189,10 +1517,10 @@ LABEL(nibble_ashr_12_use_sse4_2): + movdqa -16(%rdi, %rdx), %xmm0 + psrldq $12, %xmm0 + pcmpistri $0x3a,%xmm0, %xmm0 +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + cmp %r11, %rcx + jae LABEL(nibble_ashr_use_sse4_2_exit) +-#endif ++# endif + cmp $3, %ecx + ja LABEL(loop_ashr_12_use_sse4_2) + +@@ -1201,7 +1529,7 @@ LABEL(nibble_ashr_12_use_sse4_2): + /* + * The following cases will be handled by ashr_13 + * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case +- * n(3~15) n - 3 12(15 +(n - 3) - n) ashr_13 ++ * n(3~15) n - 3 12(15 +(n - 3) - n) ashr_13 + */ + .p2align 4 + LABEL(ashr_13_sse4_2): +@@ -1210,6 +1538,7 @@ LABEL(ashr_13_sse4_2): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $3, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -1242,12 +1571,18 @@ LABEL(loop_ashr_13_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $13, -16(%rdi, %rdx), %xmm0 +- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L ++ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + + add $16, %rdx + add $16, %r10 +@@ -1255,12 +1590,18 @@ LABEL(loop_ashr_13_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $13, -16(%rdi, %rdx), %xmm0 +- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L ++ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + add $16, %rdx + jmp LABEL(loop_ashr_13_use_sse4_2) + +@@ -1270,10 +1611,10 @@ LABEL(nibble_ashr_13_use_sse4_2): + movdqa -16(%rdi, %rdx), %xmm0 + psrldq $13, %xmm0 + pcmpistri $0x3a,%xmm0, %xmm0 +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + cmp %r11, %rcx + jae LABEL(nibble_ashr_use_sse4_2_exit) +-#endif ++# endif + cmp $2, %ecx + ja LABEL(loop_ashr_13_use_sse4_2) + +@@ -1282,7 +1623,7 @@ LABEL(nibble_ashr_13_use_sse4_2): + /* + * The following cases will be handled by ashr_14 + * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case +- * n(2~15) n - 2 13(15 +(n - 2) - n) ashr_14 ++ * n(2~15) n - 2 13(15 +(n - 2) - n) ashr_14 + */ + .p2align 4 + LABEL(ashr_14_sse4_2): +@@ -1291,6 +1632,7 @@ LABEL(ashr_14_sse4_2): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $2, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -1323,12 +1665,18 @@ LABEL(loop_ashr_14_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $14, -16(%rdi, %rdx), %xmm0 +- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L ++ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + + add $16, %rdx + add $16, %r10 +@@ -1336,12 +1684,18 @@ LABEL(loop_ashr_14_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $14, -16(%rdi, %rdx), %xmm0 +- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L ++ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + add $16, %rdx + jmp LABEL(loop_ashr_14_use_sse4_2) + +@@ -1351,10 +1705,10 @@ LABEL(nibble_ashr_14_use_sse4_2): + movdqa -16(%rdi, %rdx), %xmm0 + psrldq $14, %xmm0 + pcmpistri $0x3a,%xmm0, %xmm0 +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + cmp %r11, %rcx + jae LABEL(nibble_ashr_use_sse4_2_exit) +-#endif ++# endif + cmp $1, %ecx + ja LABEL(loop_ashr_14_use_sse4_2) + +@@ -1363,7 +1717,7 @@ LABEL(nibble_ashr_14_use_sse4_2): + /* + * The following cases will be handled by ashr_15 + * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case +- * n(1~15) n - 1 14(15 +(n - 1) - n) ashr_15 ++ * n(1~15) n - 1 14(15 +(n - 1) - n) ashr_15 + */ + .p2align 4 + LABEL(ashr_15_sse4_2): +@@ -1372,6 +1726,7 @@ LABEL(ashr_15_sse4_2): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $1, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -1406,12 +1761,18 @@ LABEL(loop_ashr_15_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $15, -16(%rdi, %rdx), %xmm0 +- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L ++ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + + add $16, %rdx + add $16, %r10 +@@ -1419,12 +1780,18 @@ LABEL(loop_ashr_15_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $15, -16(%rdi, %rdx), %xmm0 +- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L ++ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + add $16, %rdx + jmp LABEL(loop_ashr_15_use_sse4_2) + +@@ -1434,22 +1801,28 @@ LABEL(nibble_ashr_15_use_sse4_2): + movdqa -16(%rdi, %rdx), %xmm0 + psrldq $15, %xmm0 + pcmpistri $0x3a,%xmm0, %xmm0 +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + cmp %r11, %rcx + jae LABEL(nibble_ashr_use_sse4_2_exit) +-#endif ++# endif + cmp $0, %ecx + ja LABEL(loop_ashr_15_use_sse4_2) + + LABEL(nibble_ashr_use_sse4_2_exit): ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L + pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + .p2align 4 + LABEL(use_sse4_2_exit): + jnc LABEL(strcmp_exitz_sse4_2) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub %rcx, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + add %rcx, %rdx + lea -16(%rdi, %r9), %rdi + movzbl (%rdi, %rdx), %eax +@@ -1458,6 +1831,12 @@ LABEL(use_sse4_2_exit): + jz LABEL(use_sse4_2_ret_sse4_2) + xchg %eax, %edx + LABEL(use_sse4_2_ret_sse4_2): ++# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L ++ leaq _nl_C_LC_CTYPE_tolower+128*4(%rip), %rcx ++ movl (%rcx,%rdx,4), %edx ++ movl (%rcx,%rax,4), %eax ++# endif ++ + sub %edx, %eax + ret + +@@ -1473,13 +1852,19 @@ LABEL(ret_sse4_2): + LABEL(less16bytes_sse4_2): + bsf %rdx, %rdx /* find and store bit index in %rdx */ + +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub %rdx, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + movzbl (%rsi, %rdx), %ecx + movzbl (%rdi, %rdx), %eax + ++# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L ++ leaq _nl_C_LC_CTYPE_tolower+128*4(%rip), %rdx ++ movl (%rdx,%rcx,4), %ecx ++ movl (%rdx,%rax,4), %eax ++# endif ++ + sub %ecx, %eax + ret + +@@ -1488,15 +1873,27 @@ LABEL(strcmp_exitz_sse4_2): + ret + + .p2align 4 ++ // XXX Same as code above + LABEL(Byte0_sse4_2): + movzx (%rsi), %ecx + movzx (%rdi), %eax + ++# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L ++ leaq _nl_C_LC_CTYPE_tolower+128*4(%rip), %rdx ++ movl (%rdx,%rcx,4), %ecx ++ movl (%rdx,%rax,4), %eax ++# endif ++ + sub %ecx, %eax + ret + cfi_endproc + .size STRCMP_SSE42, .-STRCMP_SSE42 + ++# undef UCLOW_reg ++# undef UCHIGH_reg ++# undef LCQWORD_reg ++# undef TOLOWER ++ + /* Put all SSE 4.2 functions together. */ + .section .rodata.sse4.2,"a",@progbits + .p2align 3 +@@ -1528,6 +1925,27 @@ LABEL(unaligned_table_sse4_2): + # undef END + # define END(name) \ + cfi_endproc; .size STRCMP_SSE2, .-STRCMP_SSE2 ++ ++# ifdef USE_AS_STRCASECMP_L ++# define ENTRY2(name) \ ++ .type __strcasecmp_sse2, @function; \ ++ .align 16; \ ++ __strcasecmp_sse2: cfi_startproc; \ ++ CALL_MCOUNT ++# define END2(name) \ ++ cfi_endproc; .size __strcasecmp_sse2, .-__strcasecmp_sse2 ++# endif ++ ++# ifdef USE_AS_STRNCASECMP_L ++# define ENTRY2(name) \ ++ .type __strncasecmp_sse2, @function; \ ++ .align 16; \ ++ __strncasecmp_sse2: cfi_startproc; \ ++ CALL_MCOUNT ++# define END2(name) \ ++ cfi_endproc; .size __strncasecmp_sse2, .-__strncasecmp_sse2 ++# endif ++ + # undef libc_hidden_builtin_def + /* It doesn't make sense to send libc-internal strcmp calls through a PLT. + The speedup we get from using SSE4.2 instruction is likely eaten away +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strncase_l-ssse3.S +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strncase_l-ssse3.S +@@ -0,0 +1,6 @@ ++#define USE_SSSE3 1 ++#define USE_AS_STRNCASECMP_L ++#define NO_NOLOCALE_ALIAS ++#define STRCMP __strncasecmp_l_ssse3 ++#define __strncasecmp __strncasecmp_ssse3 ++#include "../strcmp.S" +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strncase_l.S +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strncase_l.S +@@ -0,0 +1,6 @@ ++#define STRCMP __strncasecmp_l ++#define USE_AS_STRNCASECMP_L ++#include "strcmp.S" ++ ++weak_alias (__strncasecmp_l, strncasecmp_l) ++libc_hidden_def (strncasecmp_l) +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strstr.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/strstr.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strstr.c +@@ -67,10 +67,10 @@ + + case ECX CFlag ZFlag SFlag + 3 X 1 0 0/1 +- 4a 0 1 0 0 +- 4b 0 1 0 1 +- 4c 0 < X 1 0 0/1 +- 5 16 0 1 0 ++ 4a 0 1 0 0 ++ 4b 0 1 0 1 ++ 4c 0 < X 1 0 0/1 ++ 5 16 0 1 0 + + 3. An initial ordered-comparison fragment match, we fix up to do + subsequent string comparison +@@ -147,8 +147,7 @@ __m128i_shift_right (__m128i value, int + If EOS occurs within less than 16B before 4KB boundary, we don't + cross to next page. */ + +-static __m128i +-__attribute__ ((section (".text.sse4.2"))) ++static inline __m128i + __m128i_strloadu (const unsigned char * p) + { + int offset = ((size_t) p & (16 - 1)); +@@ -164,59 +163,36 @@ __m128i_strloadu (const unsigned char * + return _mm_loadu_si128 ((__m128i *) p); + } + +-#ifdef USE_AS_STRCASESTR ++#if defined USE_AS_STRCASESTR && !defined STRCASESTR_NONASCII + + /* Similar to __m128i_strloadu. Convert to lower case for POSIX/C + locale. */ +- +-static __m128i +-__attribute__ ((section (".text.sse4.2"))) +-__m128i_strloadu_tolower_posix (const unsigned char * p) ++static inline __m128i ++__m128i_strloadu_tolower (const unsigned char *p, __m128i rangeuc, ++ __m128i u2ldelta) + { + __m128i frag = __m128i_strloadu (p); + +- /* Convert frag to lower case for POSIX/C locale. */ +- __m128i rangeuc = _mm_set_epi64x (0x0, 0x5a41); +- __m128i u2ldelta = _mm_set1_epi64x (0xe0e0e0e0e0e0e0e0); +- __m128i mask1 = _mm_cmpistrm (rangeuc, frag, 0x44); +- __m128i mask2 = _mm_blendv_epi8 (u2ldelta, frag, mask1); +- mask2 = _mm_sub_epi8 (mask2, u2ldelta); +- return _mm_blendv_epi8 (frag, mask2, mask1); ++#define UCLOW 0x4040404040404040ULL ++#define UCHIGH 0x5b5b5b5b5b5b5b5bULL ++#define LCQWORD 0x2020202020202020ULL ++ /* Compare if 'Z' > bytes. Inverted way to get a mask for byte <= 'Z'. */ ++ __m128i r2 = _mm_cmpgt_epi8 (_mm_set1_epi64x (UCHIGH), frag); ++ /* Compare if bytes are > 'A' - 1. */ ++ __m128i r1 = _mm_cmpgt_epi8 (frag, _mm_set1_epi64x (UCLOW)); ++ /* Mask byte == ff if byte(r2) <= 'Z' and byte(r1) > 'A' - 1. */ ++ __m128i mask = _mm_and_si128 (r2, r1); ++ /* Apply lowercase bit 6 mask for above mask bytes == ff. */ ++ return _mm_or_si128 (frag, _mm_and_si128 (mask, _mm_set1_epi64x (LCQWORD))); + } + +-/* Similar to __m128i_strloadu. Convert to lower case for none-POSIX/C +- locale. */ +- +-static __m128i +-__attribute__ ((section (".text.sse4.2"))) +-__m128i_strloadu_tolower (const unsigned char * p) +-{ +- union +- { +- char b[16]; +- __m128i x; +- } u; +- +- for (int i = 0; i < 16; i++) +- if (p[i] == 0) +- { +- u.b[i] = 0; +- break; +- } +- else +- u.b[i] = tolower (p[i]); +- +- return u.x; +-} + #endif + + /* Calculate Knuth-Morris-Pratt string searching algorithm (or KMP + algorithm) overlap for a fully populated 16B vector. + Input parameter: 1st 16Byte loaded from the reference string of a + strstr function. +- We don't use KMP algorithm if reference string is less than 16B. +- */ +- ++ We don't use KMP algorithm if reference string is less than 16B. */ + static int + __inline__ __attribute__ ((__always_inline__,)) + KMP16Bovrlap (__m128i s2) +@@ -236,7 +212,7 @@ KMP16Bovrlap (__m128i s2) + return 1; + else if (!k1) + { +- /* There are al least two ditinct char in s2. If byte 0 and 1 are ++ /* There are al least two distinct chars in s2. If byte 0 and 1 are + idential and the distinct value lies farther down, we can deduce + the next byte offset to restart full compare is least no earlier + than byte 3. */ +@@ -256,23 +232,30 @@ STRSTR_SSE42 (const unsigned char *s1, c + #define p1 s1 + const unsigned char *p2 = s2; + +- if (p2[0] == '\0') ++#ifndef STRCASESTR_NONASCII ++ if (__builtin_expect (p2[0] == '\0', 0)) + return (char *) p1; + +- if (p1[0] == '\0') ++ if (__builtin_expect (p1[0] == '\0', 0)) + return NULL; + + /* Check if p1 length is 1 byte long. */ +- if (p1[1] == '\0') ++ if (__builtin_expect (p1[1] == '\0', 0)) + return p2[1] == '\0' && CMPBYTE (p1[0], p2[0]) ? (char *) p1 : NULL; ++#endif + + #ifdef USE_AS_STRCASESTR +- __m128i (*strloadu) (const unsigned char *); +- +- if (_NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_NONASCII_CASE) == 0) +- strloadu = __m128i_strloadu_tolower_posix; +- else +- strloadu = __m128i_strloadu_tolower; ++# ifndef STRCASESTR_NONASCII ++ if (__builtin_expect (_NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_NONASCII_CASE) ++ != 0, 0)) ++ return __strcasestr_sse42_nonascii (s1, s2); ++ ++ const __m128i rangeuc = _mm_set_epi64x (0x0, 0x5a41); ++ const __m128i u2ldelta = _mm_set1_epi64x (0xe0e0e0e0e0e0e0e0); ++# define strloadu(p) __m128i_strloadu_tolower (p, rangeuc, u2ldelta) ++# else ++# define strloadu __m128i_strloadu_tolower ++# endif + #else + # define strloadu __m128i_strloadu + #endif +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strcasecmp.S +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strcasecmp.S +@@ -0,0 +1 @@ ++/* In strcasecmp_l.S. */ +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strcasecmp_l-nonascii.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strcasecmp_l-nonascii.c +@@ -0,0 +1,8 @@ ++#include <string.h> ++ ++extern int __strcasecmp_l_nonascii (__const char *__s1, __const char *__s2, ++ __locale_t __loc); ++ ++#define __strcasecmp_l __strcasecmp_l_nonascii ++#define USE_IN_EXTENDED_LOCALE_MODEL 1 ++#include <string/strcasecmp.c> +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strcasecmp_l.S +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strcasecmp_l.S +@@ -0,0 +1,6 @@ ++#define STRCMP __strcasecmp_l ++#define USE_AS_STRCASECMP_L ++#include "strcmp.S" ++ ++weak_alias (__strcasecmp_l, strcasecmp_l) ++libc_hidden_def (strcasecmp_l) +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strcmp.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/strcmp.S ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strcmp.S +@@ -51,6 +51,31 @@ + je LABEL(strcmp_exitz); \ + mov %r9, %r11 + ++#elif defined USE_AS_STRCASECMP_L ++# include "locale-defines.h" ++ ++/* No support for strcasecmp outside libc so far since it is not needed. */ ++# ifdef NOT_IN_lib ++# error "strcasecmp_l not implemented so far" ++# endif ++ ++# define UPDATE_STRNCMP_COUNTER ++#elif defined USE_AS_STRNCASECMP_L ++# include "locale-defines.h" ++ ++/* No support for strncasecmp outside libc so far since it is not needed. */ ++# ifdef NOT_IN_lib ++# error "strncasecmp_l not implemented so far" ++# endif ++ ++# define UPDATE_STRNCMP_COUNTER \ ++ /* calculate left number to compare */ \ ++ lea -16(%rcx, %r11), %r9; \ ++ cmp %r9, %r11; \ ++ jb LABEL(strcmp_exitz); \ ++ test %r9, %r9; \ ++ je LABEL(strcmp_exitz); \ ++ mov %r9, %r11 + #else + # define UPDATE_STRNCMP_COUNTER + # ifndef STRCMP +@@ -64,6 +89,46 @@ + .section .text.ssse3,"ax",@progbits + #endif + ++#ifdef USE_AS_STRCASECMP_L ++# ifndef ENTRY2 ++# define ENTRY2(name) ENTRY (name) ++# define END2(name) END (name) ++# endif ++ ++ENTRY2 (__strcasecmp) ++ movq __libc_tsd_LOCALE@gottpoff(%rip),%rax ++ movq %fs:(%rax),%rdx ++ ++ // XXX 5 byte should be before the function ++ /* 5-byte NOP. */ ++ .byte 0x0f,0x1f,0x44,0x00,0x00 ++END2 (__strcasecmp) ++# ifndef NO_NOLOCALE_ALIAS ++weak_alias (__strcasecmp, strcasecmp) ++libc_hidden_def (__strcasecmp) ++# endif ++ /* FALLTHROUGH to strcasecmp_l. */ ++#elif defined USE_AS_STRNCASECMP_L ++# ifndef ENTRY2 ++# define ENTRY2(name) ENTRY (name) ++# define END2(name) END (name) ++# endif ++ ++ENTRY2 (__strncasecmp) ++ movq __libc_tsd_LOCALE@gottpoff(%rip),%rax ++ movq %fs:(%rax),%rcx ++ ++ // XXX 5 byte should be before the function ++ /* 5-byte NOP. */ ++ .byte 0x0f,0x1f,0x44,0x00,0x00 ++END2 (__strncasecmp) ++# ifndef NO_NOLOCALE_ALIAS ++weak_alias (__strncasecmp, strncasecmp) ++libc_hidden_def (__strncasecmp) ++# endif ++ /* FALLTHROUGH to strncasecmp_l. */ ++#endif ++ + ENTRY (BP_SYM (STRCMP)) + #ifdef NOT_IN_libc + /* Simple version since we can't use SSE registers in ld.so. */ +@@ -84,10 +149,32 @@ L(neq): movl $1, %eax + ret + END (BP_SYM (STRCMP)) + #else /* NOT_IN_libc */ ++# ifdef USE_AS_STRCASECMP_L ++ /* We have to fall back on the C implementation for locales ++ with encodings not matching ASCII for single bytes. */ ++# if LOCALE_T___LOCALES != 0 || LC_CTYPE != 0 ++ movq LOCALE_T___LOCALES+LC_CTYPE*8(%rdx), %rax ++# else ++ movq (%rdx), %rax ++# endif ++ testl $0, LOCALE_DATA_VALUES+_NL_CTYPE_NONASCII_CASE*SIZEOF_VALUES(%rax) ++ jne __strcasecmp_l_nonascii ++# elif defined USE_AS_STRNCASECMP_L ++ /* We have to fall back on the C implementation for locales ++ with encodings not matching ASCII for single bytes. */ ++# if LOCALE_T___LOCALES != 0 || LC_CTYPE != 0 ++ movq LOCALE_T___LOCALES+LC_CTYPE*8(%rcx), %rax ++# else ++ movq (%rcx), %rax ++# endif ++ testl $0, LOCALE_DATA_VALUES+_NL_CTYPE_NONASCII_CASE*SIZEOF_VALUES(%rax) ++ jne __strncasecmp_l_nonascii ++# endif ++ + /* + * This implementation uses SSE to compare up to 16 bytes at a time. + */ +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + test %rdx, %rdx + je LABEL(strcmp_exitz) + cmp $1, %rdx +@@ -99,6 +186,26 @@ END (BP_SYM (STRCMP)) + /* Use 64bit AND here to avoid long NOP padding. */ + and $0x3f, %rcx /* rsi alignment in cache line */ + and $0x3f, %rax /* rdi alignment in cache line */ ++# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L ++ .section .rodata.cst16,"aM",@progbits,16 ++ .align 16 ++.Lbelowupper: ++ .quad 0x4040404040404040 ++ .quad 0x4040404040404040 ++.Ltopupper: ++ .quad 0x5b5b5b5b5b5b5b5b ++ .quad 0x5b5b5b5b5b5b5b5b ++.Ltouppermask: ++ .quad 0x2020202020202020 ++ .quad 0x2020202020202020 ++ .previous ++ movdqa .Lbelowupper(%rip), %xmm5 ++# define UCLOW_reg %xmm5 ++ movdqa .Ltopupper(%rip), %xmm6 ++# define UCHIGH_reg %xmm6 ++ movdqa .Ltouppermask(%rip), %xmm7 ++# define LCQWORD_reg %xmm7 ++# endif + cmp $0x30, %ecx + ja LABEL(crosscache) /* rsi: 16-byte load will cross cache line */ + cmp $0x30, %eax +@@ -107,6 +214,26 @@ END (BP_SYM (STRCMP)) + movlpd (%rsi), %xmm2 + movhpd 8(%rdi), %xmm1 + movhpd 8(%rsi), %xmm2 ++# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L ++# define TOLOWER(reg1, reg2) \ ++ movdqa reg1, %xmm8; \ ++ movdqa UCHIGH_reg, %xmm9; \ ++ movdqa reg2, %xmm10; \ ++ movdqa UCHIGH_reg, %xmm11; \ ++ pcmpgtb UCLOW_reg, %xmm8; \ ++ pcmpgtb reg1, %xmm9; \ ++ pcmpgtb UCLOW_reg, %xmm10; \ ++ pcmpgtb reg2, %xmm11; \ ++ pand %xmm9, %xmm8; \ ++ pand %xmm11, %xmm10; \ ++ pand LCQWORD_reg, %xmm8; \ ++ pand LCQWORD_reg, %xmm10; \ ++ por %xmm8, reg1; \ ++ por %xmm10, reg2 ++ TOLOWER (%xmm1, %xmm2) ++# else ++# define TOLOWER(reg1, reg2) ++# endif + pxor %xmm0, %xmm0 /* clear %xmm0 for null char checks */ + pcmpeqb %xmm1, %xmm0 /* Any null chars? */ + pcmpeqb %xmm2, %xmm1 /* compare first 16 bytes for equality */ +@@ -114,7 +241,7 @@ END (BP_SYM (STRCMP)) + pmovmskb %xmm1, %edx + sub $0xffff, %edx /* if first 16 bytes are same, edx == 0xffff */ + jnz LABEL(less16bytes) /* If not, find different value or null char */ +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) /* finish comparision */ + # endif +@@ -159,7 +286,13 @@ LABEL(ashr_0): + movdqa (%rsi), %xmm1 + pxor %xmm0, %xmm0 /* clear %xmm0 for null char check */ + pcmpeqb %xmm1, %xmm0 /* Any null chars? */ ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L + pcmpeqb (%rdi), %xmm1 /* compare 16 bytes for equality */ ++# else ++ movdqa (%rdi), %xmm2 ++ TOLOWER (%xmm1, %xmm2) ++ pcmpeqb %xmm2, %xmm1 /* compare 16 bytes for equality */ ++# endif + psubb %xmm0, %xmm1 /* packed sub of comparison results*/ + pmovmskb %xmm1, %r9d + shr %cl, %edx /* adjust 0xffff for offset */ +@@ -183,6 +316,7 @@ LABEL(ashr_0): + LABEL(loop_ashr_0): + movdqa (%rsi, %rcx), %xmm1 + movdqa (%rdi, %rcx), %xmm2 ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -191,13 +325,14 @@ LABEL(loop_ashr_0): + sub $0xffff, %edx + jnz LABEL(exit) /* mismatch or null char seen */ + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif + add $16, %rcx + movdqa (%rsi, %rcx), %xmm1 + movdqa (%rdi, %rcx), %xmm2 ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -205,7 +340,7 @@ LABEL(loop_ashr_0): + pmovmskb %xmm1, %edx + sub $0xffff, %edx + jnz LABEL(exit) +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -214,7 +349,7 @@ LABEL(loop_ashr_0): + + /* + * The following cases will be handled by ashr_1 +- * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case ++ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case + * n(15) n -15 0(15 +(n-15) - n) ashr_1 + */ + .p2align 4 +@@ -224,6 +359,7 @@ LABEL(ashr_1): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 /* Any null chars? */ + pslldq $15, %xmm2 /* shift first string to align with second */ ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 /* compare 16 bytes for equality */ + psubb %xmm0, %xmm2 /* packed sub of comparison results*/ + pmovmskb %xmm2, %r9d +@@ -263,6 +399,7 @@ LABEL(gobble_ashr_1): + # else + palignr $1, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -271,7 +408,7 @@ LABEL(gobble_ashr_1): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -292,6 +429,7 @@ LABEL(gobble_ashr_1): + # else + palignr $1, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -300,7 +438,7 @@ LABEL(gobble_ashr_1): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -319,8 +457,8 @@ LABEL(nibble_ashr_1): + test $0xfffe, %edx + jnz LABEL(ashr_1_exittail) /* find null char*/ + +-# ifdef USE_AS_STRNCMP +- cmp $14, %r11 ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L ++ cmp $15, %r11 + jbe LABEL(ashr_1_exittail) + # endif + +@@ -351,6 +489,7 @@ LABEL(ashr_2): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $14, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -390,6 +529,7 @@ LABEL(gobble_ashr_2): + # else + palignr $2, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -398,7 +538,7 @@ LABEL(gobble_ashr_2): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -420,6 +560,7 @@ LABEL(gobble_ashr_2): + # else + palignr $2, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -428,7 +569,7 @@ LABEL(gobble_ashr_2): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -444,8 +585,8 @@ LABEL(nibble_ashr_2): + test $0xfffc, %edx + jnz LABEL(ashr_2_exittail) + +-# ifdef USE_AS_STRNCMP +- cmp $13, %r11 ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L ++ cmp $14, %r11 + jbe LABEL(ashr_2_exittail) + # endif + +@@ -472,6 +613,7 @@ LABEL(ashr_3): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $13, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -512,6 +654,7 @@ LABEL(gobble_ashr_3): + # else + palignr $3, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -520,7 +663,7 @@ LABEL(gobble_ashr_3): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -542,6 +685,7 @@ LABEL(gobble_ashr_3): + # else + palignr $3, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -550,7 +694,7 @@ LABEL(gobble_ashr_3): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -566,8 +710,8 @@ LABEL(nibble_ashr_3): + test $0xfff8, %edx + jnz LABEL(ashr_3_exittail) + +-# ifdef USE_AS_STRNCMP +- cmp $12, %r11 ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L ++ cmp $13, %r11 + jbe LABEL(ashr_3_exittail) + # endif + +@@ -594,6 +738,7 @@ LABEL(ashr_4): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $12, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -634,6 +779,7 @@ LABEL(gobble_ashr_4): + # else + palignr $4, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -642,7 +788,7 @@ LABEL(gobble_ashr_4): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -664,6 +810,7 @@ LABEL(gobble_ashr_4): + # else + palignr $4, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -672,7 +819,7 @@ LABEL(gobble_ashr_4): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -688,8 +835,8 @@ LABEL(nibble_ashr_4): + test $0xfff0, %edx + jnz LABEL(ashr_4_exittail) + +-# ifdef USE_AS_STRNCMP +- cmp $11, %r11 ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L ++ cmp $12, %r11 + jbe LABEL(ashr_4_exittail) + # endif + +@@ -716,6 +863,7 @@ LABEL(ashr_5): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $11, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -756,6 +904,7 @@ LABEL(gobble_ashr_5): + # else + palignr $5, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -764,7 +913,7 @@ LABEL(gobble_ashr_5): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -786,6 +935,7 @@ LABEL(gobble_ashr_5): + # else + palignr $5, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -794,7 +944,7 @@ LABEL(gobble_ashr_5): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -810,8 +960,8 @@ LABEL(nibble_ashr_5): + test $0xffe0, %edx + jnz LABEL(ashr_5_exittail) + +-# ifdef USE_AS_STRNCMP +- cmp $10, %r11 ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L ++ cmp $11, %r11 + jbe LABEL(ashr_5_exittail) + # endif + +@@ -838,6 +988,7 @@ LABEL(ashr_6): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $10, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -878,6 +1029,7 @@ LABEL(gobble_ashr_6): + # else + palignr $6, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -886,7 +1038,7 @@ LABEL(gobble_ashr_6): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -908,6 +1060,7 @@ LABEL(gobble_ashr_6): + # else + palignr $6, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -916,7 +1069,7 @@ LABEL(gobble_ashr_6): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -932,8 +1085,8 @@ LABEL(nibble_ashr_6): + test $0xffc0, %edx + jnz LABEL(ashr_6_exittail) + +-# ifdef USE_AS_STRNCMP +- cmp $9, %r11 ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L ++ cmp $10, %r11 + jbe LABEL(ashr_6_exittail) + # endif + +@@ -960,6 +1113,7 @@ LABEL(ashr_7): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $9, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -1000,6 +1154,7 @@ LABEL(gobble_ashr_7): + # else + palignr $7, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -1008,7 +1163,7 @@ LABEL(gobble_ashr_7): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -1030,6 +1185,7 @@ LABEL(gobble_ashr_7): + # else + palignr $7, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -1038,7 +1194,7 @@ LABEL(gobble_ashr_7): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -1054,8 +1210,8 @@ LABEL(nibble_ashr_7): + test $0xff80, %edx + jnz LABEL(ashr_7_exittail) + +-# ifdef USE_AS_STRNCMP +- cmp $8, %r11 ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L ++ cmp $9, %r11 + jbe LABEL(ashr_7_exittail) + # endif + +@@ -1082,6 +1238,7 @@ LABEL(ashr_8): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $8, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -1122,6 +1279,7 @@ LABEL(gobble_ashr_8): + # else + palignr $8, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -1130,7 +1288,7 @@ LABEL(gobble_ashr_8): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -1152,6 +1310,7 @@ LABEL(gobble_ashr_8): + # else + palignr $8, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -1160,7 +1319,7 @@ LABEL(gobble_ashr_8): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -1176,8 +1335,8 @@ LABEL(nibble_ashr_8): + test $0xff00, %edx + jnz LABEL(ashr_8_exittail) + +-# ifdef USE_AS_STRNCMP +- cmp $7, %r11 ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L ++ cmp $8, %r11 + jbe LABEL(ashr_8_exittail) + # endif + +@@ -1204,6 +1363,7 @@ LABEL(ashr_9): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $7, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -1244,6 +1404,7 @@ LABEL(gobble_ashr_9): + # else + palignr $9, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -1252,7 +1413,7 @@ LABEL(gobble_ashr_9): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -1274,6 +1435,7 @@ LABEL(gobble_ashr_9): + # else + palignr $9, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -1282,7 +1444,7 @@ LABEL(gobble_ashr_9): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -1298,8 +1460,8 @@ LABEL(nibble_ashr_9): + test $0xfe00, %edx + jnz LABEL(ashr_9_exittail) + +-# ifdef USE_AS_STRNCMP +- cmp $6, %r11 ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L ++ cmp $7, %r11 + jbe LABEL(ashr_9_exittail) + # endif + +@@ -1326,6 +1488,7 @@ LABEL(ashr_10): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $6, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -1366,6 +1529,7 @@ LABEL(gobble_ashr_10): + # else + palignr $10, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -1374,7 +1538,7 @@ LABEL(gobble_ashr_10): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -1396,6 +1560,7 @@ LABEL(gobble_ashr_10): + # else + palignr $10, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -1404,7 +1569,7 @@ LABEL(gobble_ashr_10): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -1420,8 +1585,8 @@ LABEL(nibble_ashr_10): + test $0xfc00, %edx + jnz LABEL(ashr_10_exittail) + +-# ifdef USE_AS_STRNCMP +- cmp $5, %r11 ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L ++ cmp $6, %r11 + jbe LABEL(ashr_10_exittail) + # endif + +@@ -1448,6 +1613,7 @@ LABEL(ashr_11): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $5, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -1488,6 +1654,7 @@ LABEL(gobble_ashr_11): + # else + palignr $11, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -1496,7 +1663,7 @@ LABEL(gobble_ashr_11): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -1518,6 +1685,7 @@ LABEL(gobble_ashr_11): + # else + palignr $11, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -1526,7 +1694,7 @@ LABEL(gobble_ashr_11): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -1542,8 +1710,8 @@ LABEL(nibble_ashr_11): + test $0xf800, %edx + jnz LABEL(ashr_11_exittail) + +-# ifdef USE_AS_STRNCMP +- cmp $4, %r11 ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L ++ cmp $5, %r11 + jbe LABEL(ashr_11_exittail) + # endif + +@@ -1570,6 +1738,7 @@ LABEL(ashr_12): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $4, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -1610,6 +1779,7 @@ LABEL(gobble_ashr_12): + # else + palignr $12, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -1618,7 +1788,7 @@ LABEL(gobble_ashr_12): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -1640,6 +1810,7 @@ LABEL(gobble_ashr_12): + # else + palignr $12, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -1648,7 +1819,7 @@ LABEL(gobble_ashr_12): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -1664,8 +1835,8 @@ LABEL(nibble_ashr_12): + test $0xf000, %edx + jnz LABEL(ashr_12_exittail) + +-# ifdef USE_AS_STRNCMP +- cmp $3, %r11 ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L ++ cmp $4, %r11 + jbe LABEL(ashr_12_exittail) + # endif + +@@ -1692,6 +1863,7 @@ LABEL(ashr_13): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $3, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -1732,6 +1904,7 @@ LABEL(gobble_ashr_13): + # else + palignr $13, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -1740,7 +1913,7 @@ LABEL(gobble_ashr_13): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -1762,6 +1935,7 @@ LABEL(gobble_ashr_13): + # else + palignr $13, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -1770,7 +1944,7 @@ LABEL(gobble_ashr_13): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -1786,8 +1960,8 @@ LABEL(nibble_ashr_13): + test $0xe000, %edx + jnz LABEL(ashr_13_exittail) + +-# ifdef USE_AS_STRNCMP +- cmp $2, %r11 ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L ++ cmp $3, %r11 + jbe LABEL(ashr_13_exittail) + # endif + +@@ -1814,6 +1988,7 @@ LABEL(ashr_14): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $2, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -1854,6 +2029,7 @@ LABEL(gobble_ashr_14): + # else + palignr $14, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -1862,7 +2038,7 @@ LABEL(gobble_ashr_14): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -1884,6 +2060,7 @@ LABEL(gobble_ashr_14): + # else + palignr $14, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -1892,7 +2069,7 @@ LABEL(gobble_ashr_14): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP | defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -1908,8 +2085,8 @@ LABEL(nibble_ashr_14): + test $0xc000, %edx + jnz LABEL(ashr_14_exittail) + +-# ifdef USE_AS_STRNCMP +- cmp $1, %r11 ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L ++ cmp $2, %r11 + jbe LABEL(ashr_14_exittail) + # endif + +@@ -1936,6 +2113,7 @@ LABEL(ashr_15): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $1, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -1978,6 +2156,7 @@ LABEL(gobble_ashr_15): + # else + palignr $15, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -1986,7 +2165,7 @@ LABEL(gobble_ashr_15): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -2008,6 +2187,7 @@ LABEL(gobble_ashr_15): + # else + palignr $15, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -2016,7 +2196,7 @@ LABEL(gobble_ashr_15): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -2032,9 +2212,9 @@ LABEL(nibble_ashr_15): + test $0x8000, %edx + jnz LABEL(ashr_15_exittail) + +-# ifdef USE_AS_STRNCMP +- test %r11, %r11 +- je LABEL(ashr_15_exittail) ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L ++ cmpq $1, %r11 ++ jbe LABEL(ashr_15_exittail) + # endif + + pxor %xmm0, %xmm0 +@@ -2049,6 +2229,7 @@ LABEL(ashr_15_exittail): + + .p2align 4 + LABEL(aftertail): ++ TOLOWER (%xmm1, %xmm3) + pcmpeqb %xmm3, %xmm1 + psubb %xmm0, %xmm1 + pmovmskb %xmm1, %edx +@@ -2069,13 +2250,19 @@ LABEL(ret): + LABEL(less16bytes): + bsf %rdx, %rdx /* find and store bit index in %rdx */ + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub %rdx, %r11 + jbe LABEL(strcmp_exitz) + # endif + movzbl (%rsi, %rdx), %ecx + movzbl (%rdi, %rdx), %eax + ++# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L ++ leaq _nl_C_LC_CTYPE_tolower+128*4(%rip), %rdx ++ movl (%rdx,%rcx,4), %ecx ++ movl (%rdx,%rax,4), %eax ++# endif ++ + sub %ecx, %eax + ret + +@@ -2088,6 +2275,12 @@ LABEL(Byte0): + movzx (%rsi), %ecx + movzx (%rdi), %eax + ++# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L ++ leaq _nl_C_LC_CTYPE_tolower+128*4(%rip), %rdx ++ movl (%rdx,%rcx,4), %ecx ++ movl (%rdx,%rax,4), %eax ++# endif ++ + sub %ecx, %eax + ret + END (BP_SYM (STRCMP)) +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strncase.S +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strncase.S +@@ -0,0 +1 @@ ++/* In strncase_l.S. */ +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strncase_l-nonascii.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strncase_l-nonascii.c +@@ -0,0 +1,8 @@ ++#include <string.h> ++ ++extern int __strncasecmp_l_nonascii (__const char *__s1, __const char *__s2, ++ size_t __n, __locale_t __loc); ++ ++#define __strncasecmp_l __strncasecmp_l_nonascii ++#define USE_IN_EXTENDED_LOCALE_MODEL 1 ++#include <string/strncase.c> +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strncase_l.S +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strncase_l.S +@@ -0,0 +1,6 @@ ++#define STRCMP __strncasecmp_l ++#define USE_AS_STRNCASECMP_L ++#include "strcmp.S" ++ ++weak_alias (__strncasecmp_l, strncasecmp_l) ++libc_hidden_def (strncasecmp_l) +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strnlen.S +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strnlen.S +@@ -0,0 +1,64 @@ ++/* strnlen(str,maxlen) -- determine the length of the string STR up to MAXLEN. ++ Copyright (C) 2010 Free Software Foundation, Inc. ++ Contributed by Ulrich Drepper drepper@redhat.com. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include <sysdep.h> ++ ++ ++ .text ++ENTRY(__strnlen) ++ movq %rsi, %rax ++ testq %rsi, %rsi ++ jz 3f ++ pxor %xmm2, %xmm2 ++ movq %rdi, %rcx ++ movq %rdi, %r8 ++ movq $16, %r9 ++ andq $~15, %rdi ++ movdqa %xmm2, %xmm1 ++ pcmpeqb (%rdi), %xmm2 ++ orl $0xffffffff, %r10d ++ subq %rdi, %rcx ++ shll %cl, %r10d ++ subq %rcx, %r9 ++ pmovmskb %xmm2, %edx ++ andl %r10d, %edx ++ jnz 1f ++ subq %r9, %rsi ++ jbe 3f ++ ++2: movdqa 16(%rdi), %xmm0 ++ leaq 16(%rdi), %rdi ++ pcmpeqb %xmm1, %xmm0 ++ pmovmskb %xmm0, %edx ++ testl %edx, %edx ++ jnz 1f ++ subq $16, %rsi ++ jnbe 2b ++3: ret ++ ++1: subq %r8, %rdi ++ bsfl %edx, %edx ++ addq %rdi, %rdx ++ cmpq %rdx, %rax ++ cmovnbq %rdx, %rax ++ ret ++END(__strnlen) ++weak_alias (__strnlen, strnlen) ++libc_hidden_def (strnlen) +Index: glibc-2.12-2-gc4ccff1/wcsmbs/wcsatcliff.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/wcsmbs/wcsatcliff.c ++++ glibc-2.12-2-gc4ccff1/wcsmbs/wcsatcliff.c +@@ -16,6 +16,8 @@ + #define MEMCPY wmemcpy + #define MEMPCPY wmempcpy + #define MEMCHR wmemchr ++#define STRCMP wcscmp ++#define STRNCMP wcsncmp + + + #include "../string/stratcliff.c" diff --git a/src/patches/glibc/glibc-rh607010.patch b/src/patches/glibc/glibc-rh607010.patch new file mode 100644 index 0000000..6952dad --- /dev/null +++ b/src/patches/glibc/glibc-rh607010.patch @@ -0,0 +1,26 @@ +2010-09-07 H.J. Lu hongjiu.lu@intel.com + + * sysdeps/x86_64/cacheinfo.c (init_cacheinfo): Round cache sizes + up to multiple of 256 bytes. + +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/cacheinfo.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/cacheinfo.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/cacheinfo.c +@@ -661,12 +661,16 @@ init_cacheinfo (void) + + if (data > 0) + { ++ /* Round data cache size up to multiple of 256 bytes. */ ++ data = (data + 255) & ~255L; + __x86_64_data_cache_size_half = data / 2; + __x86_64_data_cache_size = data; + } + + if (shared > 0) + { ++ /* Round shared cache size up to multiple of 256 bytes. */ ++ shared = (shared + 255) & ~255L; + __x86_64_shared_cache_size_half = shared / 2; + __x86_64_shared_cache_size = shared; + } diff --git a/src/patches/glibc/glibc-rh607461.patch b/src/patches/glibc/glibc-rh607461.patch new file mode 100644 index 0000000..79fc72c --- /dev/null +++ b/src/patches/glibc/glibc-rh607461.patch @@ -0,0 +1,22 @@ +Index: glibc-2.12-2-gc4ccff1/nptl/allocatestack.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/allocatestack.c ++++ glibc-2.12-2-gc4ccff1/nptl/allocatestack.c +@@ -994,7 +994,16 @@ setxid_mark_thread (struct xid_command * + + /* If the thread is exiting right now, ignore it. */ + if ((ch & EXITING_BITMASK) != 0) +- return; ++ { ++ /* Release the futex if there is no other setxid in ++ progress. */ ++ if ((ch & SETXID_BITMASK) == 0) ++ { ++ t->setxid_futex = 1; ++ lll_futex_wake (&t->setxid_futex, 1, LLL_PRIVATE); ++ } ++ return; ++ } + } + while (atomic_compare_and_exchange_bool_acq (&t->cancelhandling, + ch | SETXID_BITMASK, ch)); diff --git a/src/patches/glibc/glibc-rh615090.patch b/src/patches/glibc/glibc-rh615090.patch new file mode 100644 index 0000000..e6c00f0 --- /dev/null +++ b/src/patches/glibc/glibc-rh615090.patch @@ -0,0 +1,21 @@ +2010-07-27 Andreas Schwab schwab@redhat.com + + * manual/memory.texi (Malloc Tunable Parameters): Document + M_PERTURB. + +Index: glibc-2.12-2-gc4ccff1/manual/memory.texi +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/manual/memory.texi ++++ glibc-2.12-2-gc4ccff1/manual/memory.texi +@@ -702,6 +702,11 @@ be allocated via @code{mmap}. + @item M_MMAP_MAX + The maximum number of chunks to allocate with @code{mmap}. Setting this + to zero disables all use of @code{mmap}. ++@item M_PERTURB ++If non-zero, memory blocks are filled with values depending on some ++low order bits of this parameter when they are allocated (except when ++allocated by @code{calloc}) and freed. This can be used to debug the ++use of uninitialized or freed heap memory. + @end table + + @end deftypefun diff --git a/src/patches/glibc/glibc-rh615701.patch b/src/patches/glibc/glibc-rh615701.patch new file mode 100644 index 0000000..283e3fe --- /dev/null +++ b/src/patches/glibc/glibc-rh615701.patch @@ -0,0 +1,23 @@ +2010-07-20 Roland McGrath roland@redhat.com + + * elf/dl-sysdep.c (_dl_important_hwcaps): Add dsocaps mask to + dl_hwcap_mask as well as dl_hwcap. Without this, dsocaps matching in + ld.so.cache was broken. With it, there is no way to disable dsocaps + like LD_HWCAP_MASK can disable hwcaps. + +Index: glibc-2.12-2-gc4ccff1/elf/dl-sysdep.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/dl-sysdep.c ++++ glibc-2.12-2-gc4ccff1/elf/dl-sysdep.c +@@ -425,6 +425,11 @@ _dl_important_hwcaps (const char *platfo + { + const ElfW(Word) mask = ((const ElfW(Word) *) dsocaps)[-1]; + GLRO(dl_hwcap) |= (uint64_t) mask << _DL_FIRST_EXTRA; ++ /* Note that we add the dsocaps to the set already chosen by the ++ LD_HWCAP_MASK environment variable (or default HWCAP_IMPORTANT). ++ So there is no way to request ignoring an OS-supplied dsocap ++ string and bit like you can ignore an OS-supplied HWCAP bit. */ ++ GLRO(dl_hwcap_mask) |= (uint64_t) mask << _DL_FIRST_EXTRA; + size_t len; + for (const char *p = dsocaps; p < dsocaps + dsocapslen; p += len + 1) + { diff --git a/src/patches/glibc/glibc-rh621959.patch b/src/patches/glibc/glibc-rh621959.patch new file mode 100644 index 0000000..315521f --- /dev/null +++ b/src/patches/glibc/glibc-rh621959.patch @@ -0,0 +1,120 @@ +2010-08-06 Ulrich Drepper drepper@redhat.com + + * sysdeps/unix/sysv/linux/getlogin_r.c (__getlogin_r_loginuid): + Also fail if tpwd after pwuid call is NULL. + +2010-06-21 Andreas Schwab schwab@redhat.com + + * sysdeps/unix/sysv/linux/getlogin_r.c (__getlogin_r_loginuid): + Restore proper fallback handling. + +2010-06-19 Ulrich Drepper drepper@redhat.com + + * sysdeps/unix/sysv/linux/getlogin_r.c (__getlogin_r_loginuid): Handle + OOM in getpwuid_r correctly. Return error number when the caller + should return, otherwise -1. + (getlogin_r): Adjust to return also for result of __getlogin_r_loginuid + call returning > 0 value. + * sysdeps/unix/sysv/linux/getlogin.c (getlogin): Likewise. + +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/getlogin.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/getlogin.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/getlogin.c +@@ -32,8 +32,9 @@ + char * + getlogin (void) + { +- if (__getlogin_r_loginuid (name, sizeof (name)) == 0) +- return name; ++ int res = __getlogin_r_loginuid (name, sizeof (name)); ++ if (res >= 0) ++ return res == 0 ? name : NULL; + + return getlogin_fd0 (); + } +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/getlogin_r.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/getlogin_r.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/getlogin_r.c +@@ -27,6 +27,10 @@ static int getlogin_r_fd0 (char *name, s + #undef getlogin_r + + ++/* Try to determine login name from /proc/self/loginuid and return 0 ++ if successful. If /proc/self/loginuid cannot be read return -1. ++ Otherwise return the error number. */ ++ + int + attribute_hidden + __getlogin_r_loginuid (name, namesize) +@@ -35,7 +39,7 @@ __getlogin_r_loginuid (name, namesize) + { + int fd = open_not_cancel_2 ("/proc/self/loginuid", O_RDONLY); + if (fd == -1) +- return 1; ++ return -1; + + /* We are reading a 32-bit number. 12 bytes are enough for the text + representation. If not, something is wrong. */ +@@ -51,37 +55,38 @@ __getlogin_r_loginuid (name, namesize) + || (uidbuf[n] = '\0', + uid = strtoul (uidbuf, &endp, 10), + endp == uidbuf || *endp != '\0')) +- return 1; ++ return -1; + + size_t buflen = 1024; + char *buf = alloca (buflen); + bool use_malloc = false; + struct passwd pwd; + struct passwd *tpwd; ++ int result = 0; + int res; + +- while ((res = __getpwuid_r (uid, &pwd, buf, buflen, &tpwd)) != 0) ++ while ((res = __getpwuid_r (uid, &pwd, buf, buflen, &tpwd)) == ERANGE) + if (__libc_use_alloca (2 * buflen)) +- extend_alloca (buf, buflen, 2 * buflen); ++ buf = extend_alloca (buf, buflen, 2 * buflen); + else + { + buflen *= 2; + char *newp = realloc (use_malloc ? buf : NULL, buflen); + if (newp == NULL) + { +- fail: +- if (use_malloc) +- free (buf); +- return 1; ++ result = ENOMEM; ++ goto out; + } + buf = newp; + use_malloc = true; + } + +- if (tpwd == NULL) +- goto fail; ++ if (res != 0 || tpwd == NULL) ++ { ++ result = -1; ++ goto out; ++ } + +- int result = 0; + size_t needed = strlen (pwd.pw_name) + 1; + if (needed > namesize) + { +@@ -109,8 +114,9 @@ getlogin_r (name, namesize) + char *name; + size_t namesize; + { +- if (__getlogin_r_loginuid (name, namesize) == 0) +- return 0; ++ int res = __getlogin_r_loginuid (name, namesize); ++ if (res >= 0) ++ return res; + + return getlogin_r_fd0 (name, namesize); + } diff --git a/src/patches/glibc/glibc-rh623187.patch b/src/patches/glibc/glibc-rh623187.patch new file mode 100644 index 0000000..596fdd6 --- /dev/null +++ b/src/patches/glibc/glibc-rh623187.patch @@ -0,0 +1,18 @@ +2010-08-10 Dinakar Guniguntala dino@in.ibm.com + Stefan Hajnoczi stefanha@linux.vnet.ibm.com + + * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S: If + FUTEX_WAKE_OP fails make sure to call FUTEX_WAKE instead. + +Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S ++++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S +@@ -163,7 +163,6 @@ __pthread_cond_signal: + #endif + orl $FUTEX_WAKE, %ecx + +- xorl $(FUTEX_WAKE ^ FUTEX_WAKE_OP), %ecx + movl $SYS_futex, %eax + /* %edx should be 1 already from $FUTEX_WAKE_OP syscall. + movl $1, %edx */ diff --git a/src/patches/glibc/glibc-rh625893.patch b/src/patches/glibc/glibc-rh625893.patch new file mode 100644 index 0000000..5337a42 --- /dev/null +++ b/src/patches/glibc/glibc-rh625893.patch @@ -0,0 +1,79 @@ +2010-08-12 Andreas Schwab schwab@redhat.com + + [BZ #11904] + * locale/programs/locale.c (print_assignment): New function. + (show_locale_vars): Use it. + +Index: glibc-2.12-2-gc4ccff1/locale/programs/locale.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/locale/programs/locale.c ++++ glibc-2.12-2-gc4ccff1/locale/programs/locale.c +@@ -762,6 +762,29 @@ write_charmaps (void) + twalk (all_data, print_names); + } + ++/* Print a properly quoted assignment of NAME with VAL, using double ++ quotes iff DQUOTE is true. */ ++static void ++print_assignment (const char *name, const char *val, bool dquote) ++{ ++ printf ("%s=", name); ++ if (dquote) ++ putchar ('"'); ++ while (*val != '\0') ++ { ++ size_t segment ++ = strcspn (val, dquote ? "$`"\" : "~|&;<>()$`\"' \t\n"); ++ printf ("%.*s", (int) segment, val); ++ val += segment; ++ if (*val == '\0') ++ break; ++ putchar ('\'); ++ putchar (*val++); ++ } ++ if (dquote) ++ putchar ('"'); ++ putchar ('\n'); ++} + + /* We have to show the contents of the environments determining the + locale. */ +@@ -769,7 +792,7 @@ static void + show_locale_vars (void) + { + size_t cat_no; +- const char *lcall = getenv ("LC_ALL"); ++ const char *lcall = getenv ("LC_ALL") ? : ""; + const char *lang = getenv ("LANG") ? : ""; + + auto void get_source (const char *name); +@@ -778,15 +801,15 @@ show_locale_vars (void) + { + char *val = getenv (name); + +- if ((lcall ?: "")[0] != '\0' || val == NULL) +- printf ("%s="%s"\n", name, +- (lcall ?: "")[0] ? lcall : (lang ?: "")[0] ? lang : "POSIX"); ++ if (lcall[0] != '\0' || val == NULL) ++ print_assignment (name, lcall[0] ? lcall : lang[0] ? lang : "POSIX", ++ true); + else +- printf ("%s=%s\n", name, val); ++ print_assignment (name, val, false); + } + + /* LANG has to be the first value. */ +- printf ("LANG=%s\n", lang); ++ print_assignment ("LANG", lang, false); + + /* Now all categories in an unspecified order. */ + for (cat_no = 0; cat_no < NCATEGORIES; ++cat_no) +@@ -794,7 +817,7 @@ show_locale_vars (void) + get_source (category[cat_no].name); + + /* The last is the LC_ALL value. */ +- printf ("LC_ALL=%s\n", lcall ? : ""); ++ print_assignment ("LC_ALL", lcall, false); + } + + diff --git a/src/patches/glibc/glibc-rh630801.patch b/src/patches/glibc/glibc-rh630801.patch new file mode 100644 index 0000000..5bd3c66 --- /dev/null +++ b/src/patches/glibc/glibc-rh630801.patch @@ -0,0 +1,29 @@ +2010-05-26 H.J. Lu hongjiu.lu@intel.com + + [BZ #11640] + * sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features): + Properly check family and model. + +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/init-arch.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/init-arch.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/init-arch.c +@@ -62,15 +62,15 @@ __init_cpu_features (void) + unsigned int eax = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].eax; + unsigned int extended_family = (eax >> 20) & 0xff; + unsigned int extended_model = (eax >> 12) & 0xf0; +- if (__cpu_features.family == 0x0f) ++ if (family == 0x0f) + { + family += extended_family; + model += extended_model; + } +- else if (__cpu_features.family == 0x06) ++ else if (family == 0x06) + { + model += extended_model; +- switch (__cpu_features.model) ++ switch (model) + { + case 0x1a: + case 0x1e: diff --git a/src/patches/glibc/glibc-rh631011.patch b/src/patches/glibc/glibc-rh631011.patch new file mode 100644 index 0000000..42a1a56 --- /dev/null +++ b/src/patches/glibc/glibc-rh631011.patch @@ -0,0 +1,17 @@ +2010-08-19 Andreas Schwab schwab@redhat.com + + * sysdeps/i386/i686/multiarch/strspn.S [!SHARED]: Fix SSE4.2 check. + +Index: glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/strspn.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/i386/i686/multiarch/strspn.S ++++ glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/strspn.S +@@ -65,7 +65,7 @@ ENTRY(strspn) + jne 1f + call __init_cpu_features + 1: leal __strspn_ia32, %eax +- testl $index_SSE2, CPUID_OFFSET+index_SSE4_2+__cpu_features ++ testl $bit_SSE4_2, CPUID_OFFSET+index_SSE4_2+__cpu_features + jz 2f + leal __strspn_sse42, %eax + 2: ret diff --git a/src/patches/glibc/glibc-rh641128.patch b/src/patches/glibc/glibc-rh641128.patch new file mode 100644 index 0000000..52df4ae --- /dev/null +++ b/src/patches/glibc/glibc-rh641128.patch @@ -0,0 +1,78 @@ +2010-10-06 Ulrich Drepper drepper@gmail.com + + * string/bug-strstr1.c: New file. + * string/Makefile: Add rules to build and run bug-strstr1. + +2010-10-05 Eric Blake eblake@redhat.com + + [BZ #12092] + * string/str-two-way.h (two_way_long_needle): Always clear memory + when skipping input due to the shift table. + +Index: glibc-2.12-2-gc4ccff1/string/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/string/Makefile ++++ glibc-2.12-2-gc4ccff1/string/Makefile +@@ -54,7 +54,8 @@ tests := tester inl-tester noinl-tester + bug-strncat1 bug-strspn1 bug-strpbrk1 tst-bswap \ + tst-strtok tst-strxfrm bug-strcoll1 tst-strfry \ + bug-strtok1 $(addprefix test-,$(strop-tests)) \ +- bug-envz1 tst-strxfrm2 tst-endian tst-svc2 ++ bug-envz1 tst-strxfrm2 tst-endian tst-svc2 \ ++ bug-strstr1 + distribute := memcopy.h pagecopy.h tst-svc.expect test-string.h \ + str-two-way.h + +@@ -73,6 +74,7 @@ CFLAGS-tst-strlen.c = -fno-builtin + CFLAGS-stratcliff.c = -fno-builtin + CFLAGS-test-ffs.c = -fno-builtin + CFLAGS-tst-inlcall.c = -fno-builtin ++CFLAGS-bug-strstr1.c = -fno-builtin + + ifeq ($(cross-compiling),no) + tests: $(objpfx)tst-svc.out +Index: glibc-2.12-2-gc4ccff1/string/bug-strstr1.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/string/bug-strstr1.c +@@ -0,0 +1,26 @@ ++#include <stdio.h> ++#include <string.h> ++ ++int main (int argc, char** argv) ++{ ++ const char haystack[] = ++ "F_BD_CE_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD_C3_88_20_EF_BF_BD_EF_BF_BD_EF_BF_BD_C3_A7_20_EF_BF_BD"; ++ ++ const char needle[] = ++ "_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD"; ++ ++ const char* sub = strstr (haystack, needle); ++ ++ if (sub != NULL) ++ { ++ int j; ++ ++ fprintf (stderr, "BUG: expected NULL, got:\n%s\n%s\n", sub, needle); ++ for (j = 0; needle[j] != '\0'; ++j) ++ putchar (needle[j] == sub[j] ? ' ' : '^'); ++ puts (""); ++ return 1; ++ } ++ ++ return 0; ++} +Index: glibc-2.12-2-gc4ccff1/string/str-two-way.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/string/str-two-way.h ++++ glibc-2.12-2-gc4ccff1/string/str-two-way.h +@@ -350,8 +350,8 @@ two_way_long_needle (const unsigned char + a byte out of place, there can be no match until + after the mismatch. */ + shift = needle_len - period; +- memory = 0; + } ++ memory = 0; + j += shift; + continue; + } diff --git a/src/patches/glibc/glibc-rh642584.patch b/src/patches/glibc/glibc-rh642584.patch new file mode 100644 index 0000000..7fd390d --- /dev/null +++ b/src/patches/glibc/glibc-rh642584.patch @@ -0,0 +1,41 @@ +2010-10-13 H.J. Lu hongjiu.lu@intel.com + + [BZ #12113] + * sysdeps/x86_64/pthreaddef.h (TCB_ALIGNMENT): Changed to 32. + * sysdeps/x86_64/tls.h (TLS_TCB_ALIGN): Defined with alignment + of "struct pthread". + +Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/x86_64/pthreaddef.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/x86_64/pthreaddef.h ++++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/x86_64/pthreaddef.h +@@ -27,8 +27,9 @@ + /* Minimal stack size after allocating thread descriptor and guard size. */ + #define MINIMAL_REST_STACK 2048 + +-/* Alignment requirement for TCB. */ +-#define TCB_ALIGNMENT 16 ++/* Alignment requirement for TCB. Need to store post-AVX vector registers ++ in the TCB and we want the storage to be aligned at 32-byte. */ ++#define TCB_ALIGNMENT 32 + + + /* Location of current stack frame. The frame pointer is not usable. */ +Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/x86_64/tls.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/x86_64/tls.h ++++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/x86_64/tls.h +@@ -117,12 +117,7 @@ typedef struct + # define TLS_TCB_SIZE sizeof (struct pthread) + + /* Alignment requirements for the TCB. */ +-//# define TLS_TCB_ALIGN __alignof__ (struct pthread) +-// Normally the above would be correct But we have to store post-AVX +-// vector registers in the TCB and we want the storage to be aligned. +-// unfortunately there isn't yet a type for these values and hence no +-// 32-byte alignment requirement. Make this explicit, for now. +-# define TLS_TCB_ALIGN 32 ++# define TLS_TCB_ALIGN __alignof__ (struct pthread) + + /* The TCB can have any size and the memory following the address the + thread pointer points to is unspecified. Allocate the TCB there. */ diff --git a/src/patches/glibc/glibc-rh643822.patch b/src/patches/glibc/glibc-rh643822.patch new file mode 100644 index 0000000..c32c1fe --- /dev/null +++ b/src/patches/glibc/glibc-rh643822.patch @@ -0,0 +1,64 @@ +2010-12-09 Andreas Schwab schwab@redhat.com + + * elf/dl-object.c (_dl_new_object): Ignore origin of privileged + program. + +2010-10-18 Andreas Schwab schwab@redhat.com + + * elf/dl-open.c (dl_open_worker): Don't expand DST here, let + _dl_map_object do it. + +Index: glibc-2.12-2-gc4ccff1/elf/dl-object.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/dl-object.c ++++ glibc-2.12-2-gc4ccff1/elf/dl-object.c +@@ -214,6 +214,9 @@ _dl_new_object (char *realname, const ch + out: + new->l_origin = origin; + } ++ else if (INTUSE(__libc_enable_secure) && type == lt_executable) ++ /* The origin of a privileged program cannot be trusted. */ ++ new->l_origin = (char *) -1; + + return new; + } +Index: glibc-2.12-2-gc4ccff1/elf/dl-open.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/dl-open.c ++++ glibc-2.12-2-gc4ccff1/elf/dl-open.c +@@ -221,35 +221,6 @@ dl_open_worker (void *a) + + assert (_dl_debug_initialize (0, args->nsid)->r_state == RT_CONSISTENT); + +- /* Maybe we have to expand a DST. */ +- if (__builtin_expect (dst != NULL, 0)) +- { +- size_t len = strlen (file); +- +- /* Determine how much space we need. We have to allocate the +- memory locally. */ +- size_t required = DL_DST_REQUIRED (call_map, file, len, +- _dl_dst_count (dst, 0)); +- +- /* Get space for the new file name. */ +- char *new_file = (char *) alloca (required + 1); +- +- /* Generate the new file name. */ +- _dl_dst_substitute (call_map, file, new_file, 0); +- +- /* If the substitution failed don't try to load. */ +- if (*new_file == '\0') +- _dl_signal_error (0, "dlopen", NULL, +- N_("empty dynamic string token substitution")); +- +- /* Now we have a new file name. */ +- file = new_file; +- +- /* It does not matter whether call_map is set even if we +- computed it only because of the DST. Since the path contains +- a slash the value is not used. See dl-load.c. */ +- } +- + /* Load the named object. */ + struct link_map *new; + args->map = new = _dl_map_object (call_map, file, 0, lt_loaded, 0, diff --git a/src/patches/glibc/glibc-rh645672.patch b/src/patches/glibc/glibc-rh645672.patch new file mode 100644 index 0000000..644614e --- /dev/null +++ b/src/patches/glibc/glibc-rh645672.patch @@ -0,0 +1,215 @@ +2010-10-22 Andreas Schwab schwab@redhat.com + + * include/dlfcn.h (__RTLD_SECURE): Define. + * elf/dl-load.c (_dl_map_object): Remove preloaded parameter. Use + mode & __RTLD_SECURE instead. + (open_path): Remove preloaded parameter to secure. + * sysdeps/generic/ldsodefs.h (_dl_map_object): Adjust declaration. + * elf/dl-open.c (dl_open_worker): Adjust call to _dl_map_object. + * elf/dl-deps.c (openaux): Likewise. + * elf/rtld.c (struct map_args): Remove is_preloaded. + (map_doit): Don't use it. + (dl_main): Likewise. + (do_preload): Use __RTLD_SECURE instead of is_preloaded. + (dlmopen_doit): Add __RTLD_SECURE to mode bits. + +Index: glibc-2.12-2-gc4ccff1/elf/dl-deps.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/dl-deps.c ++++ glibc-2.12-2-gc4ccff1/elf/dl-deps.c +@@ -62,7 +62,7 @@ openaux (void *a) + { + struct openaux_args *args = (struct openaux_args *) a; + +- args->aux = _dl_map_object (args->map, args->name, 0, ++ args->aux = _dl_map_object (args->map, args->name, + (args->map->l_type == lt_executable + ? lt_library : args->map->l_type), + args->trace_mode, args->open_mode, +Index: glibc-2.12-2-gc4ccff1/elf/dl-load.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/dl-load.c ++++ glibc-2.12-2-gc4ccff1/elf/dl-load.c +@@ -1811,7 +1811,7 @@ open_verify (const char *name, struct fi + if MAY_FREE_DIRS is true. */ + + static int +-open_path (const char *name, size_t namelen, int preloaded, ++open_path (const char *name, size_t namelen, int secure, + struct r_search_path_struct *sps, char **realname, + struct filebuf *fbp, struct link_map *loader, int whatcode, + bool *found_other_class) +@@ -1893,7 +1893,7 @@ open_path (const char *name, size_t name + /* Remember whether we found any existing directory. */ + here_any |= this_dir->status[cnt] != nonexisting; + +- if (fd != -1 && __builtin_expect (preloaded, 0) ++ if (fd != -1 && __builtin_expect (secure, 0) + && INTUSE(__libc_enable_secure)) + { + /* This is an extra security effort to make sure nobody can +@@ -1962,7 +1962,7 @@ open_path (const char *name, size_t name + + struct link_map * + internal_function +-_dl_map_object (struct link_map *loader, const char *name, int preloaded, ++_dl_map_object (struct link_map *loader, const char *name, + int type, int trace_mode, int mode, Lmid_t nsid) + { + int fd; +@@ -2066,7 +2066,8 @@ _dl_map_object (struct link_map *loader, + for (l = loader; l; l = l->l_loader) + if (cache_rpath (l, &l->l_rpath_dirs, DT_RPATH, "RPATH")) + { +- fd = open_path (name, namelen, preloaded, &l->l_rpath_dirs, ++ fd = open_path (name, namelen, mode & __RTLD_SECURE, ++ &l->l_rpath_dirs, + &realname, &fb, loader, LA_SER_RUNPATH, + &found_other_class); + if (fd != -1) +@@ -2081,14 +2082,15 @@ _dl_map_object (struct link_map *loader, + && main_map != NULL && main_map->l_type != lt_loaded + && cache_rpath (main_map, &main_map->l_rpath_dirs, DT_RPATH, + "RPATH")) +- fd = open_path (name, namelen, preloaded, &main_map->l_rpath_dirs, ++ fd = open_path (name, namelen, mode & __RTLD_SECURE, ++ &main_map->l_rpath_dirs, + &realname, &fb, loader ?: main_map, LA_SER_RUNPATH, + &found_other_class); + } + + /* Try the LD_LIBRARY_PATH environment variable. */ + if (fd == -1 && env_path_list.dirs != (void *) -1) +- fd = open_path (name, namelen, preloaded, &env_path_list, ++ fd = open_path (name, namelen, mode & __RTLD_SECURE, &env_path_list, + &realname, &fb, + loader ?: GL(dl_ns)[LM_ID_BASE]._ns_loaded, + LA_SER_LIBPATH, &found_other_class); +@@ -2097,12 +2099,12 @@ _dl_map_object (struct link_map *loader, + if (fd == -1 && loader != NULL + && cache_rpath (loader, &loader->l_runpath_dirs, + DT_RUNPATH, "RUNPATH")) +- fd = open_path (name, namelen, preloaded, ++ fd = open_path (name, namelen, mode & __RTLD_SECURE, + &loader->l_runpath_dirs, &realname, &fb, loader, + LA_SER_RUNPATH, &found_other_class); + + if (fd == -1 +- && (__builtin_expect (! preloaded, 1) ++ && (__builtin_expect (! (mode & __RTLD_SECURE), 1) + || ! INTUSE(__libc_enable_secure))) + { + /* Check the list of libraries in the file /etc/ld.so.cache, +@@ -2168,7 +2170,7 @@ _dl_map_object (struct link_map *loader, + && ((l = loader ?: GL(dl_ns)[nsid]._ns_loaded) == NULL + || __builtin_expect (!(l->l_flags_1 & DF_1_NODEFLIB), 1)) + && rtld_search_dirs.dirs != (void *) -1) +- fd = open_path (name, namelen, preloaded, &rtld_search_dirs, ++ fd = open_path (name, namelen, mode & __RTLD_SECURE, &rtld_search_dirs, + &realname, &fb, l, LA_SER_DEFAULT, &found_other_class); + + /* Add another newline when we are tracing the library loading. */ +Index: glibc-2.12-2-gc4ccff1/elf/dl-open.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/dl-open.c ++++ glibc-2.12-2-gc4ccff1/elf/dl-open.c +@@ -252,7 +252,7 @@ dl_open_worker (void *a) + + /* Load the named object. */ + struct link_map *new; +- args->map = new = _dl_map_object (call_map, file, 0, lt_loaded, 0, ++ args->map = new = _dl_map_object (call_map, file, lt_loaded, 0, + mode | __RTLD_CALLMAP, args->nsid); + + /* If the pointer returned is NULL this means the RTLD_NOLOAD flag is +Index: glibc-2.12-2-gc4ccff1/elf/rtld.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/rtld.c ++++ glibc-2.12-2-gc4ccff1/elf/rtld.c +@@ -589,7 +589,6 @@ struct map_args + /* Argument to map_doit. */ + char *str; + struct link_map *loader; +- int is_preloaded; + int mode; + /* Return value of map_doit. */ + struct link_map *map; +@@ -627,16 +626,17 @@ static void + map_doit (void *a) + { + struct map_args *args = (struct map_args *) a; +- args->map = _dl_map_object (args->loader, args->str, +- args->is_preloaded, lt_library, 0, args->mode, +- LM_ID_BASE); ++ args->map = _dl_map_object (args->loader, args->str, lt_library, 0, ++ args->mode, LM_ID_BASE); + } + + static void + dlmopen_doit (void *a) + { + struct dlmopen_args *args = (struct dlmopen_args *) a; +- args->map = _dl_open (args->fname, RTLD_LAZY | __RTLD_DLOPEN | __RTLD_AUDIT, ++ args->map = _dl_open (args->fname, ++ (RTLD_LAZY | __RTLD_DLOPEN | __RTLD_AUDIT ++ | __RTLD_SECURE), + dl_main, LM_ID_NEWLM, _dl_argc, INTUSE(_dl_argv), + __environ); + } +@@ -806,8 +806,7 @@ do_preload (char *fname, struct link_map + + args.str = fname; + args.loader = main_map; +- args.is_preloaded = 1; +- args.mode = 0; ++ args.mode = __RTLD_SECURE; + + unsigned int old_nloaded = GL(dl_ns)[LM_ID_BASE]._ns_nloaded; + +@@ -1054,7 +1053,6 @@ of this helper program; chances are you + + args.str = rtld_progname; + args.loader = NULL; +- args.is_preloaded = 0; + args.mode = __RTLD_OPENEXEC; + (void) _dl_catch_error (&objname, &err_str, &malloced, map_doit, + &args); +@@ -1066,7 +1064,7 @@ of this helper program; chances are you + else + { + HP_TIMING_NOW (start); +- _dl_map_object (NULL, rtld_progname, 0, lt_library, 0, ++ _dl_map_object (NULL, rtld_progname, lt_library, 0, + __RTLD_OPENEXEC, LM_ID_BASE); + HP_TIMING_NOW (stop); + +Index: glibc-2.12-2-gc4ccff1/include/dlfcn.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/include/dlfcn.h ++++ glibc-2.12-2-gc4ccff1/include/dlfcn.h +@@ -9,6 +9,7 @@ + #define __RTLD_OPENEXEC 0x20000000 + #define __RTLD_CALLMAP 0x10000000 + #define __RTLD_AUDIT 0x08000000 ++#define __RTLD_SECURE 0x04000000 /* Apply additional security checks. */ + + #define __LM_ID_CALLER -2 + +Index: glibc-2.12-2-gc4ccff1/sysdeps/generic/ldsodefs.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/generic/ldsodefs.h ++++ glibc-2.12-2-gc4ccff1/sysdeps/generic/ldsodefs.h +@@ -824,11 +824,9 @@ extern void _dl_receive_error (receiver_ + + /* Open the shared object NAME and map in its segments. + LOADER's DT_RPATH is used in searching for NAME. +- If the object is already opened, returns its existing map. +- For preloaded shared objects PRELOADED is set to a non-zero +- value to allow additional security checks. */ ++ If the object is already opened, returns its existing map. */ + extern struct link_map *_dl_map_object (struct link_map *loader, +- const char *name, int preloaded, ++ const char *name, + int type, int trace_mode, int mode, + Lmid_t nsid) + internal_function attribute_hidden; diff --git a/src/patches/glibc/glibc-rh646954.patch b/src/patches/glibc/glibc-rh646954.patch new file mode 100644 index 0000000..bbb959e --- /dev/null +++ b/src/patches/glibc/glibc-rh646954.patch @@ -0,0 +1,216 @@ +2010-10-26 Ulrich Drepper drepper@gmail.com + + * elf/rtld.c (dl_main): Move assertion after the point where rtld map + is added to the list. + +2010-10-20 Andreas Krebbel Andreas.Krebbel@de.ibm.com + Ulrich Drepper drepper@gmail.com + + * elf/dl-object.c (_dl_new_object): Don't append the new object to + the global list here. Move code to... + (_dl_add_to_namespace_list): ...here. New function. + * elf/rtld.c (dl_main): Invoke _dl_add_to_namespace_list. + * sysdeps/generic/ldsodefs.h (_dl_add_to_namespace_list): Declare. + * elf/dl-load.c (lose): Don't remove the element from the list. + (_dl_map_object_from_fd): Invoke _dl_add_to_namespace_list. + (_dl_map_object): Likewise. + +Index: glibc-2.12-2-gc4ccff1/elf/dl-load.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/dl-load.c ++++ glibc-2.12-2-gc4ccff1/elf/dl-load.c +@@ -797,22 +797,7 @@ lose (int code, int fd, const char *name + /* The file might already be closed. */ + if (fd != -1) + (void) __close (fd); +- if (l != NULL) +- { +- /* We modify the list of loaded objects. */ +- __rtld_lock_lock_recursive (GL(dl_load_write_lock)); +- /* Remove the stillborn object from the list and free it. */ +- assert (l->l_next == NULL); +- if (l->l_prev == NULL) +- /* No other module loaded. This happens only in the static library, +- or in rtld under --verify. */ +- GL(dl_ns)[l->l_ns]._ns_loaded = NULL; +- else +- l->l_prev->l_next = NULL; +- --GL(dl_ns)[l->l_ns]._ns_nloaded; +- free (l); +- __rtld_lock_unlock_recursive (GL(dl_load_write_lock)); +- } ++ free (l); + free (realname); + + if (r != NULL) +@@ -897,6 +882,9 @@ _dl_map_object_from_fd (const char *name + never be unloaded. */ + __close (fd); + ++ /* Add the map for the mirrored object to the object list. */ ++ _dl_add_to_namespace_list (l, nsid); ++ + return l; + } + #endif +@@ -1491,6 +1479,9 @@ cannot enable executable stack as shared + add_name_to_object (l, ((const char *) D_PTR (l, l_info[DT_STRTAB]) + + l->l_info[DT_SONAME]->d_un.d_val)); + ++ /* Now that the object is fully initialized add it to the object list. */ ++ _dl_add_to_namespace_list (l, nsid); ++ + #ifdef SHARED + /* Auditing checkpoint: we have a new object. */ + if (__builtin_expect (GLRO(dl_naudit) > 0, 0) +@@ -2215,7 +2206,7 @@ _dl_map_object (struct link_map *loader, + have. */ + static const Elf_Symndx dummy_bucket = STN_UNDEF; + +- /* Enter the new object in the list of loaded objects. */ ++ /* Allocate a new object map. */ + if ((name_copy = local_strdup (name)) == NULL + || (l = _dl_new_object (name_copy, name, type, loader, + mode, nsid)) == NULL) +@@ -2233,6 +2224,9 @@ _dl_map_object (struct link_map *loader, + l->l_nbuckets = 1; + l->l_relocated = 1; + ++ /* Enter the object in the object list. */ ++ _dl_add_to_namespace_list (l, nsid); ++ + return l; + } + else if (found_other_class) +Index: glibc-2.12-2-gc4ccff1/elf/dl-object.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/dl-object.c ++++ glibc-2.12-2-gc4ccff1/elf/dl-object.c +@@ -26,16 +26,41 @@ + #include <assert.h> + + ++/* Add the new link_map NEW to the end of the namespace list. */ ++void ++internal_function ++_dl_add_to_namespace_list (struct link_map *new, Lmid_t nsid) ++{ ++ /* We modify the list of loaded objects. */ ++ __rtld_lock_lock_recursive (GL(dl_load_write_lock)); ++ ++ if (GL(dl_ns)[nsid]._ns_loaded != NULL) ++ { ++ struct link_map *l = GL(dl_ns)[nsid]._ns_loaded; ++ while (l->l_next != NULL) ++ l = l->l_next; ++ new->l_prev = l; ++ /* new->l_next = NULL; Would be necessary but we use calloc. */ ++ l->l_next = new; ++ } ++ else ++ GL(dl_ns)[nsid]._ns_loaded = new; ++ ++GL(dl_ns)[nsid]._ns_nloaded; ++ new->l_serial = GL(dl_load_adds); ++ ++GL(dl_load_adds); ++ ++ __rtld_lock_unlock_recursive (GL(dl_load_write_lock)); ++} ++ ++ + /* Allocate a `struct link_map' for a new object being loaded, + and enter it into the _dl_loaded list. */ +- + struct link_map * + internal_function + _dl_new_object (char *realname, const char *libname, int type, + struct link_map *loader, int mode, Lmid_t nsid) + { + struct link_map *l; +- int idx; + size_t libname_len = strlen (libname) + 1; + struct link_map *new; + struct libname_list *newname; +@@ -93,31 +118,12 @@ _dl_new_object (char *realname, const ch + new->l_scope = new->l_scope_mem; + new->l_scope_max = sizeof (new->l_scope_mem) / sizeof (new->l_scope_mem[0]); + +- /* We modify the list of loaded objects. */ +- __rtld_lock_lock_recursive (GL(dl_load_write_lock)); +- + /* Counter for the scopes we have to handle. */ +- idx = 0; ++ int idx = 0; + + if (GL(dl_ns)[nsid]._ns_loaded != NULL) +- { +- l = GL(dl_ns)[nsid]._ns_loaded; +- while (l->l_next != NULL) +- l = l->l_next; +- new->l_prev = l; +- /* new->l_next = NULL; Would be necessary but we use calloc. */ +- l->l_next = new; +- +- /* Add the global scope. */ +- new->l_scope[idx++] = &GL(dl_ns)[nsid]._ns_loaded->l_searchlist; +- } +- else +- GL(dl_ns)[nsid]._ns_loaded = new; +- ++GL(dl_ns)[nsid]._ns_nloaded; +- new->l_serial = GL(dl_load_adds); +- ++GL(dl_load_adds); +- +- __rtld_lock_unlock_recursive (GL(dl_load_write_lock)); ++ /* Add the global scope. */ ++ new->l_scope[idx++] = &GL(dl_ns)[nsid]._ns_loaded->l_searchlist; + + /* If we have no loader the new object acts as it. */ + if (loader == NULL) +Index: glibc-2.12-2-gc4ccff1/elf/rtld.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/rtld.c ++++ glibc-2.12-2-gc4ccff1/elf/rtld.c +@@ -1108,11 +1108,15 @@ of this helper program; chances are you + main_map = _dl_new_object ((char *) "", "", lt_executable, NULL, + __RTLD_OPENEXEC, LM_ID_BASE); + assert (main_map != NULL); +- assert (main_map == GL(dl_ns)[LM_ID_BASE]._ns_loaded); + main_map->l_phdr = phdr; + main_map->l_phnum = phnum; + main_map->l_entry = *user_entry; + ++ /* Even though the link map is not yet fully initialized we can add ++ it to the map list since there are no possible users running yet. */ ++ _dl_add_to_namespace_list (main_map, LM_ID_BASE); ++ assert (main_map == GL(dl_ns)[LM_ID_BASE]._ns_loaded); ++ + /* At this point we are in a bit of trouble. We would have to + fill in the values for l_dev and l_ino. But in general we + do not know where the file is. We also do not handle AT_EXECFD +@@ -1380,6 +1384,9 @@ of this helper program; chances are you + l->l_libname->name = memcpy (copy, dsoname, len); + } + ++ /* Add the vDSO to the object list. */ ++ _dl_add_to_namespace_list (l, LM_ID_BASE); ++ + /* Rearrange the list so this DSO appears after rtld_map. */ + assert (l->l_next == NULL); + assert (l->l_prev == main_map); +Index: glibc-2.12-2-gc4ccff1/sysdeps/generic/ldsodefs.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/generic/ldsodefs.h ++++ glibc-2.12-2-gc4ccff1/sysdeps/generic/ldsodefs.h +@@ -891,8 +891,11 @@ extern lookup_t _dl_lookup_symbol_x (con + extern ElfW(Addr) _dl_symbol_value (struct link_map *map, const char *name) + internal_function; + +-/* Allocate a `struct link_map' for a new object being loaded, +- and enter it into the _dl_main_map list. */ ++/* Add the new link_map NEW to the end of the namespace list. */ ++extern void _dl_add_to_namespace_list (struct link_map *new, Lmid_t nsid) ++ internal_function attribute_hidden; ++ ++/* Allocate a `struct link_map' for a new object being loaded. */ + extern struct link_map *_dl_new_object (char *realname, const char *libname, + int type, struct link_map *loader, + int mode, Lmid_t nsid) diff --git a/src/patches/glibc/glibc-rh647448.patch b/src/patches/glibc/glibc-rh647448.patch new file mode 100644 index 0000000..ff55945 --- /dev/null +++ b/src/patches/glibc/glibc-rh647448.patch @@ -0,0 +1,58 @@ +2010-10-25 Ulrich Drepper drepper@redhat.com + + [BZ #12159] + * sysdeps/x86_64/multiarch/strchr.S: Fix propagation of search byte + into all bytes of SSE register. + Patch by Richard Li richardpku@gmail.com. + +Index: glibc-2.12-2-gc4ccff1/string/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/string/Makefile ++++ glibc-2.12-2-gc4ccff1/string/Makefile +@@ -55,7 +55,7 @@ tests := tester inl-tester noinl-tester + tst-strtok tst-strxfrm bug-strcoll1 tst-strfry \ + bug-strtok1 $(addprefix test-,$(strop-tests)) \ + bug-envz1 tst-strxfrm2 tst-endian tst-svc2 \ +- bug-strstr1 ++ bug-strstr1 bug-strchr1 + distribute := memcopy.h pagecopy.h tst-svc.expect test-string.h \ + str-two-way.h + +Index: glibc-2.12-2-gc4ccff1/string/bug-strchr1.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/string/bug-strchr1.c +@@ -0,0 +1,14 @@ ++#include <stdio.h> ++#include <string.h> ++ ++static int ++do_test (void) ++{ ++ char s[] __attribute__((aligned(16))) = "\xff"; ++ char *p = strchr (s, '\xfe'); ++ printf ("%p\n", p); ++ return p != NULL; ++} ++ ++#define TEST_FUNCTION do_test () ++#include "../test-skeleton.c" +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strchr.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/strchr.S ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strchr.S +@@ -87,13 +87,13 @@ __strchr_sse42: + pxor %xmm2, %xmm2 + movd %esi, %xmm1 + movl %edi, %ecx ++ pshufb %xmm2, %xmm1 + andl $15, %ecx + movq %rdi, %r8 + je L(aligned_start) + + /* Handle unaligned string. */ + andq $-16, %r8 +- pshufb %xmm2, %xmm1 + movdqa (%r8), %xmm0 + pcmpeqb %xmm0, %xmm2 + pcmpeqb %xmm1, %xmm0 diff --git a/src/patches/glibc/glibc-rh652661.patch b/src/patches/glibc/glibc-rh652661.patch new file mode 100644 index 0000000..79a3212 --- /dev/null +++ b/src/patches/glibc/glibc-rh652661.patch @@ -0,0 +1,21 @@ +2010-05-20 Andreas Schwab schwab@redhat.com + + * sysdeps/unix/sysv/linux/sys/timex.h: Use __REDIRECT_NTH. + +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/sys/timex.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/sys/timex.h ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/sys/timex.h +@@ -140,9 +140,9 @@ __BEGIN_DECLS + extern int __adjtimex (struct timex *__ntx) __THROW; + extern int adjtimex (struct timex *__ntx) __THROW; + +-#if defined __GNUC__ && __GNUC__ >= 2 +-extern int ntp_gettime (struct ntptimeval *__ntv) +- __asm__ ("ntp_gettimex") __THROW; ++#ifdef __REDIRECT_NTH ++extern int __REDIRECT_NTH (ntp_gettime, (struct ntptimeval *__ntv), ++ ntp_gettimex); + #else + extern int ntp_gettimex (struct ntptimeval *__ntv) __THROW; + # define ntp_gettime ntp_gettimex diff --git a/src/patches/glibc/glibc-rh656014.patch b/src/patches/glibc/glibc-rh656014.patch new file mode 100644 index 0000000..5ef68dc --- /dev/null +++ b/src/patches/glibc/glibc-rh656014.patch @@ -0,0 +1,45 @@ +2010-11-24 Andreas Schwab schwab@redhat.com + + * resolv/nss_dns/dns-host.c (getanswer_r): Don't handle ttl == 0 + specially. + (gaih_getanswer_slice): Likewise. + +Index: glibc-2.12-2-gc4ccff1/resolv/nss_dns/dns-host.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/resolv/nss_dns/dns-host.c ++++ glibc-2.12-2-gc4ccff1/resolv/nss_dns/dns-host.c +@@ -599,7 +599,6 @@ getanswer_r (const querybuf *answer, int + int (*name_ok) (const char *); + u_char packtmp[NS_MAXCDNAME]; + int have_to_map = 0; +- int32_t ttl = 0; + uintptr_t pad = -(uintptr_t) buffer % __alignof__ (struct host_data); + buffer += pad; + if (__builtin_expect (buflen < sizeof (struct host_data) + pad, 0)) +@@ -733,7 +732,7 @@ getanswer_r (const querybuf *answer, int + cp += INT16SZ; /* type */ + class = __ns_get16 (cp); + cp += INT16SZ; /* class */ +- ttl = __ns_get32 (cp); ++ int32_t ttl = __ns_get32 (cp); + cp += INT32SZ; /* TTL */ + n = __ns_get16 (cp); + cp += INT16SZ; /* len */ +@@ -907,7 +906,7 @@ getanswer_r (const querybuf *answer, int + { + register int nn; + +- if (ttlp != NULL && ttl != 0) ++ if (ttlp != NULL) + *ttlp = ttl; + if (canonp != NULL) + *canonp = bp; +@@ -1163,7 +1162,7 @@ gaih_getanswer_slice (const querybuf *an + + if (*firstp) + { +- if (ttl != 0 && ttlp != NULL) ++ if (ttlp != NULL) + *ttlp = ttl; + + (*pat)->name = canon ?: h_name; diff --git a/src/patches/glibc/glibc-rh656530.patch b/src/patches/glibc/glibc-rh656530.patch new file mode 100644 index 0000000..f101430 --- /dev/null +++ b/src/patches/glibc/glibc-rh656530.patch @@ -0,0 +1,21 @@ +2010-11-10 Luis Machado luisgpm@br.ibm.com + + * sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c (__ieee754_sqrtl): Force + signed comparison. + +Index: glibc-2.12-2-gc4ccff1/sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c +@@ -73,9 +73,9 @@ long double __ieee754_sqrtl(long double + m = ((a.i[2] >> 20) & 0x7ff) - 54; + } + m += n; +- if (m > 0) ++ if ((int) m > 0) + a.i[2] = (a.i[2] & 0x800fffff) | (m << 20); +- else if (m <= -54) { ++ else if ((int) m <= -54) { + a.i[2] &= 0x80000000; + a.i[3] = 0; + } else { diff --git a/src/patches/glibc/glibc-rh657572.patch b/src/patches/glibc/glibc-rh657572.patch new file mode 100644 index 0000000..a720130 --- /dev/null +++ b/src/patches/glibc/glibc-rh657572.patch @@ -0,0 +1,141 @@ +commit 42c5011242e48f846111237552d3bf3ca18c4885 +Author: Ulrich Drepper drepper@gmail.com +Date: Fri Dec 23 09:51:10 2011 -0500 + + Various fixes to fi_FI + + 2011-12-23 Ulrich Drepper drepper@gmail.com + + [BZ #12962] + * locales/fi_FI: Various fixups. + Patch by Marko Myllynen myllynen@redhat.com. + +diff --git a/localedata/locales/fi_FI b/localedata/locales/fi_FI +index acc9ce6..f51700c 100644 +--- a/localedata/locales/fi_FI ++++ b/localedata/locales/fi_FI +@@ -1,4 +1,4 @@ +-escape_char / ++escape_char / + comment_char % + + % Finnish language locale for Finland +@@ -45,10 +45,10 @@ category "fi_FI:2000";LC_NUMERIC + category "fi_FI:2000";LC_MONETARY + category "fi_FI:2000";LC_MESSAGES + category "fi_FI:2000";LC_PAPER ++category "fi_FI:2000";LC_MEASUREMENT + category "fi_FI:2000";LC_NAME + category "fi_FI:2000";LC_ADDRESS + category "fi_FI:2000";LC_TELEPHONE +- + END LC_IDENTIFICATION + + LC_COLLATE +@@ -125,7 +125,6 @@ reorder-after <U0044> + <U0110> <d>;<OBL>;<CAP>;IGNORE + + reorder-end +- + END LC_COLLATE + + LC_CTYPE +@@ -146,12 +145,10 @@ positive_sign "" + negative_sign "<U002D>" + int_frac_digits 2 + frac_digits 2 +-% int_curr_symbol precedes +-% curr_symbol succeeds + p_cs_precedes 0 +-p_sep_by_space 2 ++p_sep_by_space 1 + n_cs_precedes 0 +-n_sep_by_space 2 ++n_sep_by_space 1 + p_sign_posn 1 + n_sign_posn 1 + END LC_MONETARY +@@ -173,18 +170,18 @@ day "<U0073><U0075><U006E><U006E><U0075><U006E><U0074><U0061><U0069>";/ + "<U0074><U006F><U0072><U0073><U0074><U0061><U0069>";/ + "<U0070><U0065><U0072><U006A><U0061><U006E><U0074><U0061><U0069>";/ + "<U006C><U0061><U0075><U0061><U006E><U0074><U0061><U0069>" +-abmon "<U0074><U0061><U006D><U006D><U0069><U00A0>";/ +- "<U0068><U0065><U006C><U006D><U0069><U00A0>";/ ++abmon "<U0074><U0061><U006D><U006D><U0069>";/ ++ "<U0068><U0065><U006C><U006D><U0069>";/ + "<U006D><U0061><U0061><U006C><U0069><U0073>";/ +- "<U0068><U0075><U0068><U0074><U0069><U00A0>";/ +- "<U0074><U006F><U0075><U006B><U006F><U00A0>";/ +- "<U006B><U0065><U0073><U00E4><U00A0><U00A0>";/ +- "<U0068><U0065><U0069><U006E><U00E4><U00A0>";/ +- "<U0065><U006C><U006F><U00A0><U00A0><U00A0>";/ +- "<U0073><U0079><U0079><U0073><U00A0><U00A0>";/ +- "<U006C><U006F><U006B><U0061><U00A0><U00A0>";/ ++ "<U0068><U0075><U0068><U0074><U0069>";/ ++ "<U0074><U006F><U0075><U006B><U006F>";/ ++ "<U006B><U0065><U0073><U00E4>";/ ++ "<U0068><U0065><U0069><U006E><U00E4>";/ ++ "<U0065><U006C><U006F>";/ ++ "<U0073><U0079><U0079><U0073>";/ ++ "<U006C><U006F><U006B><U0061>";/ + "<U006D><U0061><U0072><U0072><U0061><U0073>";/ +- "<U006A><U006F><U0075><U006C><U0075><U00A0>" ++ "<U006A><U006F><U0075><U006C><U0075>" + mon "<U0074><U0061><U006D><U006D><U0069><U006B><U0075><U0075>";/ + "<U0068><U0065><U006C><U006D><U0069><U006B><U0075><U0075>";/ + "<U006D><U0061><U0061><U006C><U0069><U0073><U006B><U0075><U0075>";/ +@@ -207,13 +204,14 @@ t_fmt_ampm "" + date_fmt "<U0025><U0061><U0020><U0025><U002D><U0064><U002E><U0025>/ + <U002D><U006D><U002E><U0025><U0059><U0020><U0025><U0048><U002E><U0025>/ + <U004D><U002E><U0025><U0053><U0020><U0025><U007A>" ++week 7;19971130;4 + first_weekday 2 % Monday + first_workday 2 % Monday + END LC_TIME + + LC_MESSAGES +-yesexpr "<U005E><U005B><U004B><U006B><U004A><U006A><U0059><U0079><U005D><U002E><U002A>" +-noexpr "<U005E><U005B><U004E><U006E><U0045><U0065><U005D><U002E><U002A>" ++yesexpr "<U005E><U005B><U004B><U006B><U0059><U0079><U005D><U002E><U002A>" ++noexpr "<U005E><U005B><U0045><U0065><U004E><U006E><U005D><U002E><U002A>" + END LC_MESSAGES + + LC_PAPER +@@ -222,6 +220,7 @@ width 210 + END LC_PAPER + + LC_TELEPHONE ++tel_dom_fmt "<U0028><U0025><U0041><U0029><U0020><U0025><U006C>" + tel_int_fmt "<U002B><U0025><U0063><U0020><U0025><U0061><U0020><U0025>/ + <U006C>" + int_prefix "<U0033><U0035><U0038>" +@@ -235,15 +234,25 @@ END LC_MEASUREMENT + LC_NAME + name_fmt "<U0025><U0064><U0025><U0074><U0025><U0067><U0025><U0074>/ + <U0025><U006D><U0025><U0074><U0025><U0066>" ++% Finnish equivalents for Mr/Mrs/Miss/Ms are herra/rouva/rouva/neiti ++% but they are practically never used, thus we don't define them here. + END LC_NAME + + LC_ADDRESS +-postal_fmt "<U0025><U0066><U0025><U004E><U0025><U0061><U0025><U004E>/ +-<U0025><U0064><U0025><U004E><U0025><U0062><U0025><U004E><U0025><U0073>/ +-<U0020><U0025><U0068><U0020><U0025><U0065><U0020><U0025><U0072><U0025>/ +-<U004E><U0025><U007A><U0020><U0025><U0054><U0025>/ ++postal_fmt "<U0025><U0066><U0025><U004E><U0025><U0064><U0025><U004E>/ ++<U0025><U0062><U0025><U004E><U0025><U0061><U0025><U004E><U0025><U0073>/ ++<U0020><U0025><U0068><U0025><U0074><U0025><U0065><U0025><U0074><U0025>/ ++<U0072><U0025><U004E><U0025><U007A><U0020><U0025><U0054><U0025>/ + <U004E><U0025><U0063><U0025><U004E>" + country_ab2 "<U0046><U0049>" + country_ab3 "<U0046><U0049><U004E>" + country_num 246 ++country_name "<U0053><U0075><U006F><U006D><U0069>" ++country_post "<U0046><U0049>" ++country_car "<U0046><U0049><U004E>" ++country_isbn 952 ++lang_name "<U0073><U0075><U006F><U006D><U0069>" ++lang_ab "<U0066><U0069>" ++lang_term "<U0066><U0069><U006E>" ++lang_lib "<U0066><U0069><U006E>" + END LC_ADDRESS diff --git a/src/patches/glibc/glibc-rh661982.patch b/src/patches/glibc/glibc-rh661982.patch new file mode 100644 index 0000000..60b840b --- /dev/null +++ b/src/patches/glibc/glibc-rh661982.patch @@ -0,0 +1,188 @@ +2010-12-10 Andreas Schwab schwab@redhat.com + + * wcsmbs/wchar.h (wcpcpy, wcpncpy): Only declare under + _GNU_SOURCE. + +2010-12-10 Andreas Schwab schwab@redhat.com + + * wcsmbs/wchar.h (wcpcpy, wcpncpy): Add __restrict. + * wcsmbs/bits/wchar2.h (__wmemmove_chk_warn, wmemmove, wmemset): + Remove __restrict. + (wcscpy, __wcpcpy_chk, __wcpcpy_alias, wcpcpy, wcsncpy, wcpncpy) + (wcscat, wcsncat, __wcrtomb_chk, wcrtomb): Add __restrict. + +2010-12-09 Jakub Jelinek jakub@redhat.com + + * string/bits/string3.h (memmove, bcopy): Remove __restrict. + +Index: glibc-2.12-2-gc4ccff1/string/bits/string3.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/string/bits/string3.h ++++ glibc-2.12-2-gc4ccff1/string/bits/string3.h +@@ -53,8 +53,7 @@ __NTH (memcpy (void *__restrict __dest, + } + + __extern_always_inline void * +-__NTH (memmove (void *__restrict __dest, __const void *__restrict __src, +- size_t __len)) ++__NTH (memmove (void *__dest, __const void *__src, size_t __len)) + { + return __builtin___memmove_chk (__dest, __src, __len, __bos0 (__dest)); + } +@@ -88,8 +87,7 @@ __NTH (memset (void *__dest, int __ch, s + + #ifdef __USE_BSD + __extern_always_inline void +-__NTH (bcopy (__const void *__restrict __src, void *__restrict __dest, +- size_t __len)) ++__NTH (bcopy (__const void *__src, void *__dest, size_t __len)) + { + (void) __builtin___memmove_chk (__dest, __src, __len, __bos0 (__dest)); + } +Index: glibc-2.12-2-gc4ccff1/wcsmbs/bits/wchar2.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/wcsmbs/bits/wchar2.h ++++ glibc-2.12-2-gc4ccff1/wcsmbs/bits/wchar2.h +@@ -60,15 +60,13 @@ extern wchar_t *__REDIRECT_NTH (__wmemmo + __const wchar_t *__s2, + size_t __n), wmemmove); + extern wchar_t *__REDIRECT_NTH (__wmemmove_chk_warn, +- (wchar_t *__restrict __s1, +- __const wchar_t *__restrict __s2, size_t __n, +- size_t __ns1), __wmemmove_chk) ++ (wchar_t *__s1, __const wchar_t *__s2, ++ size_t __n, size_t __ns1), __wmemmove_chk) + __warnattr ("wmemmove called with length bigger than size of destination " + "buffer"); + + __extern_always_inline wchar_t * +-__NTH (wmemmove (wchar_t *__restrict __s1, __const wchar_t *__restrict __s2, +- size_t __n)) ++__NTH (wmemmove (wchar_t *__s1, __const wchar_t *__s2, size_t __n)) + { + if (__bos0 (__s1) != (size_t) -1) + { +@@ -129,7 +127,7 @@ extern wchar_t *__REDIRECT_NTH (__wmemse + "buffer"); + + __extern_always_inline wchar_t * +-__NTH (wmemset (wchar_t *__restrict __s, wchar_t __c, size_t __n)) ++__NTH (wmemset (wchar_t *__s, wchar_t __c, size_t __n)) + { + if (__bos0 (__s) != (size_t) -1) + { +@@ -152,7 +150,7 @@ extern wchar_t *__REDIRECT_NTH (__wcscpy + __const wchar_t *__restrict __src), wcscpy); + + __extern_always_inline wchar_t * +-__NTH (wcscpy (wchar_t *__dest, __const wchar_t *__src)) ++__NTH (wcscpy (wchar_t *__restrict __dest, __const wchar_t *__restrict __src)) + { + if (__bos (__dest) != (size_t) -1) + return __wcscpy_chk (__dest, __src, __bos (__dest) / sizeof (wchar_t)); +@@ -160,14 +158,15 @@ __NTH (wcscpy (wchar_t *__dest, __const + } + + +-extern wchar_t *__wcpcpy_chk (wchar_t *__dest, __const wchar_t *__src, ++extern wchar_t *__wcpcpy_chk (wchar_t *__restrict __dest, ++ __const wchar_t *__restrict __src, + size_t __destlen) __THROW; +-extern wchar_t *__REDIRECT_NTH (__wcpcpy_alias, (wchar_t *__dest, +- __const wchar_t *__src), +- wcpcpy); ++extern wchar_t *__REDIRECT_NTH (__wcpcpy_alias, ++ (wchar_t *__restrict __dest, ++ __const wchar_t *__restrict __src), wcpcpy); + + __extern_always_inline wchar_t * +-__NTH (wcpcpy (wchar_t *__dest, __const wchar_t *__src)) ++__NTH (wcpcpy (wchar_t *__restrict __dest, __const wchar_t *__restrict __src)) + { + if (__bos (__dest) != (size_t) -1) + return __wcpcpy_chk (__dest, __src, __bos (__dest) / sizeof (wchar_t)); +@@ -190,7 +189,8 @@ extern wchar_t *__REDIRECT_NTH (__wcsncp + "buffer"); + + __extern_always_inline wchar_t * +-__NTH (wcsncpy (wchar_t *__dest, __const wchar_t *__src, size_t __n)) ++__NTH (wcsncpy (wchar_t *__restrict __dest, __const wchar_t *__restrict __src, ++ size_t __n)) + { + if (__bos (__dest) != (size_t) -1) + { +@@ -220,7 +220,8 @@ extern wchar_t *__REDIRECT_NTH (__wcpncp + "buffer"); + + __extern_always_inline wchar_t * +-__NTH (wcpncpy (wchar_t *__dest, __const wchar_t *__src, size_t __n)) ++__NTH (wcpncpy (wchar_t *__restrict __dest, __const wchar_t *__restrict __src, ++ size_t __n)) + { + if (__bos (__dest) != (size_t) -1) + { +@@ -243,7 +244,7 @@ extern wchar_t *__REDIRECT_NTH (__wcscat + __const wchar_t *__restrict __src), wcscat); + + __extern_always_inline wchar_t * +-__NTH (wcscat (wchar_t *__dest, __const wchar_t *__src)) ++__NTH (wcscat (wchar_t *__restrict __dest, __const wchar_t *__restrict __src)) + { + if (__bos (__dest) != (size_t) -1) + return __wcscat_chk (__dest, __src, __bos (__dest) / sizeof (wchar_t)); +@@ -260,7 +261,8 @@ extern wchar_t *__REDIRECT_NTH (__wcsnca + size_t __n), wcsncat); + + __extern_always_inline wchar_t * +-__NTH (wcsncat (wchar_t *__dest, __const wchar_t *__src, size_t __n)) ++__NTH (wcsncat (wchar_t *__restrict __dest, __const wchar_t *__restrict __src, ++ size_t __n)) + { + if (__bos (__dest) != (size_t) -1) + return __wcsncat_chk (__dest, __src, __n, +@@ -428,14 +430,16 @@ fgetws_unlocked (wchar_t *__restrict __s + #endif + + +-extern size_t __wcrtomb_chk (char *__s, wchar_t __wchar, mbstate_t *__p, +- size_t __buflen) __THROW __wur; ++extern size_t __wcrtomb_chk (char *__restrict __s, wchar_t __wchar, ++ mbstate_t *__restrict __p, ++ size_t __buflen) __THROW __wur; + extern size_t __REDIRECT_NTH (__wcrtomb_alias, + (char *__restrict __s, wchar_t __wchar, + mbstate_t *__restrict __ps), wcrtomb) __wur; + + __extern_always_inline __wur size_t +-__NTH (wcrtomb (char *__s, wchar_t __wchar, mbstate_t *__ps)) ++__NTH (wcrtomb (char *__restrict __s, wchar_t __wchar, ++ mbstate_t *__restrict __ps)) + { + /* We would have to include <limits.h> to get a definition of MB_LEN_MAX. + But this would only disturb the namespace. So we define our own +Index: glibc-2.12-2-gc4ccff1/wcsmbs/wchar.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/wcsmbs/wchar.h ++++ glibc-2.12-2-gc4ccff1/wcsmbs/wchar.h +@@ -555,17 +555,17 @@ extern float wcstof_l (__const wchar_t * + extern long double wcstold_l (__const wchar_t *__restrict __nptr, + wchar_t **__restrict __endptr, + __locale_t __loc) __THROW; +-#endif /* GNU */ + + +-#ifdef __USE_XOPEN2K8 + /* Copy SRC to DEST, returning the address of the terminating L'\0' in + DEST. */ +-extern wchar_t *wcpcpy (wchar_t *__dest, __const wchar_t *__src) __THROW; ++extern wchar_t *wcpcpy (wchar_t *__restrict __dest, ++ __const wchar_t *__restrict __src) __THROW; + + /* Copy no more than N characters of SRC to DEST, returning the address of + the last character written into DEST. */ +-extern wchar_t *wcpncpy (wchar_t *__dest, __const wchar_t *__src, size_t __n) ++extern wchar_t *wcpncpy (wchar_t *__restrict __dest, ++ __const wchar_t *__restrict __src, size_t __n) + __THROW; + #endif /* use GNU */ + diff --git a/src/patches/glibc/glibc-rh667974.patch b/src/patches/glibc/glibc-rh667974.patch new file mode 100644 index 0000000..48aacac --- /dev/null +++ b/src/patches/glibc/glibc-rh667974.patch @@ -0,0 +1,160 @@ +2011-03-14 Andreas Schwab schwab@redhat.com + + * elf/dl-load.c (is_dst): Remove parameter secure, all callers + changed. Don't check for isolated use. + (_dl_dst_substitute): Ignore rpath elements containing + non-isolated use of $ORIGIN when privileged. + + * elf/dl-load.c (_dl_dst_substitute): When skipping the first + rpath element also skip the following colon. + (expand_dynamic_string_token): Add is_path parameter and pass + down to DL_DST_REQUIRED and _dl_dst_substitute. + (decompose_rpath): Call expand_dynamic_string_token with + non-zero is_path. Ignore empty rpaths. + (_dl_map_object_from_fd): Call expand_dynamic_string_token + with zero is_path. + +Index: glibc-2.12-2-gc4ccff1/elf/dl-load.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/dl-load.c ++++ glibc-2.12-2-gc4ccff1/elf/dl-load.c +@@ -169,8 +169,7 @@ local_strdup (const char *s) + + + static size_t +-is_dst (const char *start, const char *name, const char *str, +- int is_path, int secure) ++is_dst (const char *start, const char *name, const char *str, int is_path) + { + size_t len; + bool is_curly = false; +@@ -199,11 +198,6 @@ is_dst (const char *start, const char *n + && (!is_path || name[len] != ':')) + return 0; + +- if (__builtin_expect (secure, 0) +- && ((name[len] != '\0' && (!is_path || name[len] != ':')) +- || (name != start + 1 && (!is_path || name[-2] != ':')))) +- return 0; +- + return len; + } + +@@ -218,13 +212,10 @@ _dl_dst_count (const char *name, int is_ + { + size_t len; + +- /* $ORIGIN is not expanded for SUID/GUID programs (except if it +- is $ORIGIN alone) and it must always appear first in path. */ + ++name; +- if ((len = is_dst (start, name, "ORIGIN", is_path, +- INTUSE(__libc_enable_secure))) != 0 +- || (len = is_dst (start, name, "PLATFORM", is_path, 0)) != 0 +- || (len = is_dst (start, name, "LIB", is_path, 0)) != 0) ++ if ((len = is_dst (start, name, "ORIGIN", is_path)) != 0 ++ || (len = is_dst (start, name, "PLATFORM", is_path)) != 0 ++ || (len = is_dst (start, name, "LIB", is_path)) != 0) + ++cnt; + + name = strchr (name + len, '$'); +@@ -256,9 +247,16 @@ _dl_dst_substitute (struct link_map *l, + size_t len; + + ++name; +- if ((len = is_dst (start, name, "ORIGIN", is_path, +- INTUSE(__libc_enable_secure))) != 0) ++ if ((len = is_dst (start, name, "ORIGIN", is_path)) != 0) + { ++ /* $ORIGIN is not expanded for SUID/GUID programs ++ (except if it is $ORIGIN alone) and it must always ++ appear first in path. */ ++ if (__builtin_expect (INTUSE(__libc_enable_secure), 0) ++ && ((name[len] != '\0' && (!is_path || name[len] != ':')) ++ || (name != start + 1 && (!is_path || name[-2] != ':')))) ++ repl = (const char *) -1; ++ else + #ifndef SHARED + if (l == NULL) + repl = _dl_get_origin (); +@@ -266,9 +264,9 @@ _dl_dst_substitute (struct link_map *l, + #endif + repl = l->l_origin; + } +- else if ((len = is_dst (start, name, "PLATFORM", is_path, 0)) != 0) ++ else if ((len = is_dst (start, name, "PLATFORM", is_path)) != 0) + repl = GLRO(dl_platform); +- else if ((len = is_dst (start, name, "LIB", is_path, 0)) != 0) ++ else if ((len = is_dst (start, name, "LIB", is_path)) != 0) + repl = DL_DST_LIB; + + if (repl != NULL && repl != (const char *) -1) +@@ -284,6 +282,10 @@ _dl_dst_substitute (struct link_map *l, + name += len; + while (*name != '\0' && (!is_path || *name != ':')) + ++name; ++ /* Also skip following colon if this is the first rpath ++ element, but keep an empty element at the end. */ ++ if (wp == result && is_path && *name == ':' && name[1] != '\0') ++ ++name; + } + else + /* No DST we recognize. */ +@@ -310,7 +312,7 @@ _dl_dst_substitute (struct link_map *l, + belonging to the map is loaded. In this case the path element + containing $ORIGIN is left out. */ + static char * +-expand_dynamic_string_token (struct link_map *l, const char *s) ++expand_dynamic_string_token (struct link_map *l, const char *s, int is_path) + { + /* We make two runs over the string. First we determine how large the + resulting string is and then we copy it over. Since this is no +@@ -321,7 +323,7 @@ expand_dynamic_string_token (struct link + char *result; + + /* Determine the number of DST elements. */ +- cnt = DL_DST_COUNT (s, 1); ++ cnt = DL_DST_COUNT (s, is_path); + + /* If we do not have to replace anything simply copy the string. */ + if (__builtin_expect (cnt, 0) == 0) +@@ -335,7 +337,7 @@ expand_dynamic_string_token (struct link + if (result == NULL) + return NULL; + +- return _dl_dst_substitute (l, s, result, 1); ++ return _dl_dst_substitute (l, s, result, is_path); + } + + +@@ -551,13 +553,21 @@ decompose_rpath (struct r_search_path_st + + /* Make a writable copy. At the same time expand possible dynamic + string tokens. */ +- copy = expand_dynamic_string_token (l, rpath); ++ copy = expand_dynamic_string_token (l, rpath, 1); + if (copy == NULL) + { + errstring = N_("cannot create RUNPATH/RPATH copy"); + goto signal_error; + } + ++ /* Ignore empty rpaths. */ ++ if (*copy == 0) ++ { ++ free (copy); ++ sps->dirs = (char *) -1; ++ return false; ++ } ++ + /* Count the number of necessary elements in the result array. */ + nelems = 0; + for (cp = copy; *cp != '\0'; ++cp) +@@ -2176,7 +2186,7 @@ _dl_map_object (struct link_map *loader, + { + /* The path may contain dynamic string tokens. */ + realname = (loader +- ? expand_dynamic_string_token (loader, name) ++ ? expand_dynamic_string_token (loader, name, 0) + : local_strdup (name)); + if (realname == NULL) + fd = -1; diff --git a/src/patches/glibc/glibc-rh676076.patch b/src/patches/glibc/glibc-rh676076.patch new file mode 100644 index 0000000..c5aa2d4 --- /dev/null +++ b/src/patches/glibc/glibc-rh676076.patch @@ -0,0 +1,714 @@ +2011-03-02 Harsha Jagasia harsha.jagasia@amd.com + Ulrich Drepper drepper@gmail.com + + * sysdeps/x86_64/memset.S: After aligning destination, code + branches to different locations depending on the value of + misalignment, when multiarch is enabled. Fix this. + +2011-03-02 Harsha Jagasia harsha.jagasia@amd.com + + * sysdeps/x86_64/cacheinfo.c (init_cacheinfo): + Set _x86_64_preferred_memory_instruction for AMD processsors. + * sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features): + Set bit_Prefer_SSE_for_memop for AMD processors. + +2010-11-07 H.J. Lu hongjiu.lu@intel.com + + * sysdeps/x86_64/memset.S: Check USE_MULTIARCH and USE_SSE2 for + IFUNC support. + * sysdeps/x86_64/multiarch/Makefile (sysdep_routines): Add + memset-x86-64. + * sysdeps/x86_64/multiarch/bzero.S: New file. + * sysdeps/x86_64/multiarch/cacheinfo.c: New file. + * sysdeps/x86_64/multiarch/memset-x86-64.S: New file. + * sysdeps/x86_64/multiarch/memset.S: New file. + * sysdeps/x86_64/multiarch/memset_chk.S: New file. + * sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features): + Set bit_Prefer_SSE_for_memop for Intel processors. + * sysdeps/x86_64/multiarch/init-arch.h (bit_Prefer_SSE_for_memop): + Define. + (index_Prefer_SSE_for_memop): Define. + (HAS_PREFER_SSE_FOR_MEMOP): Define. + +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/cacheinfo.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/cacheinfo.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/cacheinfo.c +@@ -613,6 +613,25 @@ init_cacheinfo (void) + long int core = handle_amd (_SC_LEVEL2_CACHE_SIZE); + shared = handle_amd (_SC_LEVEL3_CACHE_SIZE); + ++#ifndef DISABLE_PREFERRED_MEMORY_INSTRUCTION ++# ifdef USE_MULTIARCH ++ eax = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].eax; ++ ebx = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].ebx; ++ ecx = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].ecx; ++ edx = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].edx; ++# else ++ __cpuid (1, eax, ebx, ecx, edx); ++# endif ++ ++ /* AMD prefers SSSE3 instructions for memory/string routines ++ if they are avaiable, otherwise it prefers integer ++ instructions. */ ++ if ((ecx & 0x200)) ++ __x86_64_preferred_memory_instruction = 3; ++ else ++ __x86_64_preferred_memory_instruction = 0; ++#endif ++ + /* Get maximum extended function. */ + __cpuid (0x80000000, max_cpuid_ex, ebx, ecx, edx); + +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/memset.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/memset.S ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/memset.S +@@ -24,7 +24,7 @@ + #define __STOS_UPPER_BOUNDARY $65536 + + .text +-#ifndef NOT_IN_libc ++#if !defined NOT_IN_libc && !defined USE_MULTIARCH + ENTRY(__bzero) + mov %rsi,%rdx /* Adjust parameter. */ + xorl %esi,%esi /* Fill with 0s. */ +@@ -34,10 +34,10 @@ weak_alias (__bzero, bzero) + #endif + + #if defined PIC && !defined NOT_IN_libc +-ENTRY (__memset_chk) ++ENTRY_CHK (__memset_chk) + cmpq %rdx, %rcx + jb HIDDEN_JUMPTARGET (__chk_fail) +-END (__memset_chk) ++END_CHK (__memset_chk) + #endif + ENTRY (memset) + L(memset_entry): +@@ -591,157 +591,15 @@ L(A6Q1): mov %dx,-0xe(%rdi) + L(A7Q0): mov %dl,-0x7(%rdi) + L(A6Q0): mov %dx,-0x6(%rdi) + mov %edx,-0x4(%rdi) +- jmp L(aligned_now) +- +- .balign 16 +-L(aligned_now): +- +- cmpl $0x1,__x86_64_preferred_memory_instruction(%rip) +- jg L(SSE_pre) +- +-L(8byte_move_try): +- cmpq __STOS_LOWER_BOUNDARY,%r8 +- jae L(8byte_stos_try) +- +- .balign 16 +-L(8byte_move): +- movq %r8,%rcx +- shrq $7,%rcx +- jz L(8byte_move_skip) +- +- .p2align 4 +- +-L(8byte_move_loop): +- decq %rcx +- +- movq %rdx, (%rdi) +- movq %rdx, 8 (%rdi) +- movq %rdx, 16 (%rdi) +- movq %rdx, 24 (%rdi) +- movq %rdx, 32 (%rdi) +- movq %rdx, 40 (%rdi) +- movq %rdx, 48 (%rdi) +- movq %rdx, 56 (%rdi) +- movq %rdx, 64 (%rdi) +- movq %rdx, 72 (%rdi) +- movq %rdx, 80 (%rdi) +- movq %rdx, 88 (%rdi) +- movq %rdx, 96 (%rdi) +- movq %rdx, 104 (%rdi) +- movq %rdx, 112 (%rdi) +- movq %rdx, 120 (%rdi) +- +- leaq 128 (%rdi),%rdi +- +- jnz L(8byte_move_loop) +- +-L(8byte_move_skip): +- andl $127,%r8d +- lea (%rdi,%r8,1),%rdi +- +-#ifndef PIC +- lea L(setPxQx)(%rip),%r11 +- jmpq *(%r11,%r8,8) # old scheme remained for nonPIC +-#else +- lea L(Got0)(%rip),%r11 +- lea L(setPxQx)(%rip),%rcx +- movswq (%rcx,%r8,2),%rcx +- lea (%rcx,%r11,1),%r11 +- jmpq *%r11 +-#endif +- +- .balign 16 +-L(8byte_stos_try): +- mov __x86_64_shared_cache_size(%rip),%r9d // ck largest cache size +- cmpq %r8,%r9 // calculate the lesser of remaining +- cmovaq %r8,%r9 // bytes and largest cache size +- jbe L(8byte_stos) +- +-L(8byte_move_reuse_try): +- cmp __STOS_UPPER_BOUNDARY,%r8 +- jae L(8byte_move) +- +- .balign 16 +-L(8byte_stos): +- movq %r9,%rcx +- andq $-8,%r9 +- +- shrq $3,%rcx +- jz L(8byte_stos_skip) +- +- xchgq %rax,%rdx +- +- rep +- stosq +- +- xchgq %rax,%rdx +- +-L(8byte_stos_skip): +- subq %r9,%r8 +- ja L(8byte_nt_move) +- +- andl $7,%r8d +- lea (%rdi,%r8,1),%rdi +-#ifndef PIC +- lea L(setPxQx)(%rip),%r11 +- jmpq *(%r11,%r8,8) # old scheme remained for nonPIC +-#else +- lea L(Got0)(%rip),%r11 +- lea L(setPxQx)(%rip),%rcx +- movswq (%rcx,%r8,2),%rcx +- lea (%rcx,%r11,1),%r11 +- jmpq *%r11 +-#endif + +- .balign 16 +-L(8byte_nt_move): +- movq %r8,%rcx +- shrq $7,%rcx +- jz L(8byte_nt_move_skip) +- +- .balign 16 +-L(8byte_nt_move_loop): +- decq %rcx +- +- movntiq %rdx, (%rdi) +- movntiq %rdx, 8 (%rdi) +- movntiq %rdx, 16 (%rdi) +- movntiq %rdx, 24 (%rdi) +- movntiq %rdx, 32 (%rdi) +- movntiq %rdx, 40 (%rdi) +- movntiq %rdx, 48 (%rdi) +- movntiq %rdx, 56 (%rdi) +- movntiq %rdx, 64 (%rdi) +- movntiq %rdx, 72 (%rdi) +- movntiq %rdx, 80 (%rdi) +- movntiq %rdx, 88 (%rdi) +- movntiq %rdx, 96 (%rdi) +- movntiq %rdx, 104 (%rdi) +- movntiq %rdx, 112 (%rdi) +- movntiq %rdx, 120 (%rdi) +- +- leaq 128 (%rdi),%rdi +- +- jnz L(8byte_nt_move_loop) +- +- sfence +- +-L(8byte_nt_move_skip): +- andl $127,%r8d ++#ifndef USE_MULTIARCH ++ jmp L(aligned_now) + +- lea (%rdi,%r8,1),%rdi +-#ifndef PIC +- lea L(setPxQx)(%rip),%r11 +- jmpq *(%r11,%r8,8) # old scheme remained for nonPIC ++L(SSE_pre): + #else +- lea L(Got0)(%rip),%r11 +- lea L(setPxQx)(%rip),%rcx +- movswq (%rcx,%r8,2),%rcx +- lea (%rcx,%r11,1),%r11 +- jmpq *%r11 ++L(aligned_now): + #endif +- +-L(SSE_pre): ++#if !defined USE_MULTIARCH || defined USE_SSE2 + # fill RegXMM0 with the pattern + movd %rdx,%xmm0 + punpcklqdq %xmm0,%xmm0 +@@ -1342,11 +1200,162 @@ L(SSExDx): + .short L(SSE15QB)-L(SSE0Q0) + #endif + .popsection ++#endif /* !defined USE_MULTIARCH || defined USE_SSE2 */ ++ ++ .balign 16 ++#ifndef USE_MULTIARCH ++L(aligned_now): ++ ++ cmpl $0x1,__x86_64_preferred_memory_instruction(%rip) ++ jg L(SSE_pre) ++#endif /* USE_MULTIARCH */ ++ ++L(8byte_move_try): ++ cmpq __STOS_LOWER_BOUNDARY,%r8 ++ jae L(8byte_stos_try) ++ ++ .balign 16 ++L(8byte_move): ++ movq %r8,%rcx ++ shrq $7,%rcx ++ jz L(8byte_move_skip) ++ ++ .p2align 4 ++ ++L(8byte_move_loop): ++ decq %rcx ++ ++ movq %rdx, (%rdi) ++ movq %rdx, 8 (%rdi) ++ movq %rdx, 16 (%rdi) ++ movq %rdx, 24 (%rdi) ++ movq %rdx, 32 (%rdi) ++ movq %rdx, 40 (%rdi) ++ movq %rdx, 48 (%rdi) ++ movq %rdx, 56 (%rdi) ++ movq %rdx, 64 (%rdi) ++ movq %rdx, 72 (%rdi) ++ movq %rdx, 80 (%rdi) ++ movq %rdx, 88 (%rdi) ++ movq %rdx, 96 (%rdi) ++ movq %rdx, 104 (%rdi) ++ movq %rdx, 112 (%rdi) ++ movq %rdx, 120 (%rdi) ++ ++ leaq 128 (%rdi),%rdi ++ ++ jnz L(8byte_move_loop) ++ ++L(8byte_move_skip): ++ andl $127,%r8d ++ lea (%rdi,%r8,1),%rdi ++ ++#ifndef PIC ++ lea L(setPxQx)(%rip),%r11 ++ jmpq *(%r11,%r8,8) # old scheme remained for nonPIC ++#else ++ lea L(Got0)(%rip),%r11 ++ lea L(setPxQx)(%rip),%rcx ++ movswq (%rcx,%r8,2),%rcx ++ lea (%rcx,%r11,1),%r11 ++ jmpq *%r11 ++#endif ++ ++ .balign 16 ++L(8byte_stos_try): ++ mov __x86_64_shared_cache_size(%rip),%r9d // ck largest cache size ++ cmpq %r8,%r9 // calculate the lesser of remaining ++ cmovaq %r8,%r9 // bytes and largest cache size ++ jbe L(8byte_stos) ++ ++L(8byte_move_reuse_try): ++ cmp __STOS_UPPER_BOUNDARY,%r8 ++ jae L(8byte_move) ++ ++ .balign 16 ++L(8byte_stos): ++ movq %r9,%rcx ++ andq $-8,%r9 ++ ++ shrq $3,%rcx ++ jz L(8byte_stos_skip) ++ ++ xchgq %rax,%rdx ++ ++ rep ++ stosq ++ ++ xchgq %rax,%rdx ++ ++L(8byte_stos_skip): ++ subq %r9,%r8 ++ ja L(8byte_nt_move) ++ ++ andl $7,%r8d ++ lea (%rdi,%r8,1),%rdi ++#ifndef PIC ++ lea L(setPxQx)(%rip),%r11 ++ jmpq *(%r11,%r8,8) # old scheme remained for nonPIC ++#else ++ lea L(Got0)(%rip),%r11 ++ lea L(setPxQx)(%rip),%rcx ++ movswq (%rcx,%r8,2),%rcx ++ lea (%rcx,%r11,1),%r11 ++ jmpq *%r11 ++#endif ++ ++ .balign 16 ++L(8byte_nt_move): ++ movq %r8,%rcx ++ shrq $7,%rcx ++ jz L(8byte_nt_move_skip) ++ ++ .balign 16 ++L(8byte_nt_move_loop): ++ decq %rcx ++ ++ movntiq %rdx, (%rdi) ++ movntiq %rdx, 8 (%rdi) ++ movntiq %rdx, 16 (%rdi) ++ movntiq %rdx, 24 (%rdi) ++ movntiq %rdx, 32 (%rdi) ++ movntiq %rdx, 40 (%rdi) ++ movntiq %rdx, 48 (%rdi) ++ movntiq %rdx, 56 (%rdi) ++ movntiq %rdx, 64 (%rdi) ++ movntiq %rdx, 72 (%rdi) ++ movntiq %rdx, 80 (%rdi) ++ movntiq %rdx, 88 (%rdi) ++ movntiq %rdx, 96 (%rdi) ++ movntiq %rdx, 104 (%rdi) ++ movntiq %rdx, 112 (%rdi) ++ movntiq %rdx, 120 (%rdi) ++ ++ leaq 128 (%rdi),%rdi ++ ++ jnz L(8byte_nt_move_loop) ++ ++ sfence ++ ++L(8byte_nt_move_skip): ++ andl $127,%r8d ++ ++ lea (%rdi,%r8,1),%rdi ++#ifndef PIC ++ lea L(setPxQx)(%rip),%r11 ++ jmpq *(%r11,%r8,8) # old scheme remained for nonPIC ++#else ++ lea L(Got0)(%rip),%r11 ++ lea L(setPxQx)(%rip),%rcx ++ movswq (%rcx,%r8,2),%rcx ++ lea (%rcx,%r11,1),%r11 ++ jmpq *%r11 ++#endif + + END (memset) + libc_hidden_builtin_def (memset) + +-#if defined PIC && !defined NOT_IN_libc ++#if defined PIC && !defined NOT_IN_libc && !defined USE_MULTIARCH + strong_alias (__memset_chk, __memset_zero_constant_len_parameter) + .section .gnu.warning.__memset_zero_constant_len_parameter + .string "memset used with constant zero length parameter; this could be due to transposed parameters" +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/Makefile ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/Makefile +@@ -7,7 +7,8 @@ ifeq ($(subdir),string) + sysdep_routines += stpncpy-c strncpy-c strcmp-ssse3 strncmp-ssse3 \ + strend-sse4 memcmp-sse4 \ + strcasestr-nonascii strcasecmp_l-ssse3 \ +- strncase_l-ssse3 ++ strncase_l-ssse3 \ ++ memset-x86-64 + ifeq (yes,$(config-cflags-sse4)) + sysdep_routines += strcspn-c strpbrk-c strspn-c strstr-c strcasestr-c + CFLAGS-strcspn-c.c += -msse4 +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/bzero.S +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/bzero.S +@@ -0,0 +1,56 @@ ++/* Multiple versions of bzero ++ Copyright (C) 2010 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include <sysdep.h> ++#include <init-arch.h> ++ ++ .text ++ENTRY(__bzero) ++ .type __bzero, @gnu_indirect_function ++ cmpl $0, __cpu_features+KIND_OFFSET(%rip) ++ jne 1f ++ call __init_cpu_features ++1: leaq __bzero_x86_64(%rip), %rax ++ testl $bit_Prefer_SSE_for_memop, __cpu_features+FEATURE_OFFSET+index_Prefer_SSE_for_memop(%rip) ++ jz 2f ++ leaq __bzero_sse2(%rip), %rax ++2: ret ++END(__bzero) ++ ++ .type __bzero_sse2, @function ++__bzero_sse2: ++ cfi_startproc ++ CALL_MCOUNT ++ mov %rsi,%rdx /* Adjust parameter. */ ++ xorl %esi,%esi /* Fill with 0s. */ ++ jmp __memset_sse2 ++ cfi_endproc ++ .size __bzero_sse2, .-__bzero_sse2 ++ ++ .type __bzero_x86_64, @function ++__bzero_x86_64: ++ cfi_startproc ++ CALL_MCOUNT ++ mov %rsi,%rdx /* Adjust parameter. */ ++ xorl %esi,%esi /* Fill with 0s. */ ++ jmp __memset_x86_64 ++ cfi_endproc ++ .size __bzero_x86_64, .-__bzero_x86_64 ++ ++weak_alias (__bzero, bzero) +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/cacheinfo.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/cacheinfo.c +@@ -0,0 +1,2 @@ ++#define DISABLE_PREFERRED_MEMORY_INSTRUCTION ++#include "../cacheinfo.c" +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/init-arch.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/init-arch.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/init-arch.c +@@ -59,6 +59,11 @@ __init_cpu_features (void) + + get_common_indeces (&family, &model); + ++ /* Intel processors prefer SSE instruction for memory/string ++ routines if they are avaiable. */ ++ __cpu_features.feature[index_Prefer_SSE_for_memop] ++ |= bit_Prefer_SSE_for_memop; ++ + unsigned int eax = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].eax; + unsigned int extended_family = (eax >> 20) & 0xff; + unsigned int extended_model = (eax >> 12) & 0xf0; +@@ -92,6 +97,14 @@ __init_cpu_features (void) + kind = arch_kind_amd; + + get_common_indeces (&family, &model); ++ ++ unsigned int ecx = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].ecx; ++ ++ /* AMD processors prefer SSE instructions for memory/string routines ++ if they are available, otherwise they prefer integer instructions. */ ++ if ((ecx & 0x200)) ++ __cpu_features.feature[index_Prefer_SSE_for_memop] ++ |= bit_Prefer_SSE_for_memop; + } + else + kind = arch_kind_other; +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/init-arch.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/init-arch.h ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/init-arch.h +@@ -16,7 +16,8 @@ + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +-#define bit_Fast_Rep_String (1 << 0) ++#define bit_Fast_Rep_String (1 << 0) ++#define bit_Prefer_SSE_for_memop (1 << 3) + + #ifdef __ASSEMBLER__ + +@@ -33,6 +34,7 @@ + # define index_SSE4_2 COMMON_CPUID_INDEX_1*CPUID_SIZE+CPUID_ECX_OFFSET + + #define index_Fast_Rep_String FEATURE_INDEX_1*FEATURE_SIZE ++# define index_Prefer_SSE_for_memop FEATURE_INDEX_1*FEATURE_SIZE + + #else /* __ASSEMBLER__ */ + +@@ -103,5 +105,12 @@ extern const struct cpu_features *__get_ + # define HAS_FMA HAS_CPU_FEATURE (COMMON_CPUID_INDEX_1, ecx, 12) + + # define index_Fast_Rep_String FEATURE_INDEX_1 ++# define index_Prefer_SSE_for_memop FEATURE_INDEX_1 ++ ++#define HAS_ARCH_FEATURE(idx, bit) \ ++ ((__get_cpu_features ()->feature[idx] & (bit)) != 0) ++ ++#define HAS_PREFER_SSE_FOR_MEMOP \ ++ HAS_ARCH_FEATURE (index_Prefer_SSE_for_memop, bit_Prefer_SSE_for_memop) + + #endif /* __ASSEMBLER__ */ +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/memset-x86-64.S +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/memset-x86-64.S +@@ -0,0 +1,18 @@ ++#include <sysdep.h> ++ ++#ifndef NOT_IN_libc ++# undef ENTRY_CHK ++# define ENTRY_CHK(name) \ ++ .type __memset_chk_x86_64, @function; \ ++ .globl __memset_chk_x86_64; \ ++ .p2align 4; \ ++ __memset_chk_x86_64: cfi_startproc; \ ++ CALL_MCOUNT ++# undef END_CHK ++# define END_CHK(name) \ ++ cfi_endproc; .size __memset_chk_x86_64, .-__memset_chk_x86_64 ++ ++# define libc_hidden_builtin_def(name) ++# define memset __memset_x86_64 ++# include "../memset.S" ++#endif +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/memset.S +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/memset.S +@@ -0,0 +1,74 @@ ++/* Multiple versions of memset ++ Copyright (C) 2010 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include <sysdep.h> ++#include <init-arch.h> ++ ++/* Define multiple versions only for the definition in lib. */ ++#ifndef NOT_IN_libc ++ENTRY(memset) ++ .type memset, @gnu_indirect_function ++ cmpl $0, __cpu_features+KIND_OFFSET(%rip) ++ jne 1f ++ call __init_cpu_features ++1: leaq __memset_x86_64(%rip), %rax ++ testl $bit_Prefer_SSE_for_memop, __cpu_features+FEATURE_OFFSET+index_Prefer_SSE_for_memop(%rip) ++ jz 2f ++ leaq __memset_sse2(%rip), %rax ++2: ret ++END(memset) ++ ++# define USE_SSE2 1 ++ ++# undef ENTRY ++# define ENTRY(name) \ ++ .type __memset_sse2, @function; \ ++ .globl __memset_sse2; \ ++ .p2align 4; \ ++ __memset_sse2: cfi_startproc; \ ++ CALL_MCOUNT ++# undef END ++# define END(name) \ ++ cfi_endproc; .size __memset_sse2, .-__memset_sse2 ++ ++# undef ENTRY_CHK ++# define ENTRY_CHK(name) \ ++ .type __memset_chk_sse2, @function; \ ++ .globl __memset_chk_sse2; \ ++ .p2align 4; \ ++ __memset_chk_sse2: cfi_startproc; \ ++ CALL_MCOUNT ++# undef END_CHK ++# define END_CHK(name) \ ++ cfi_endproc; .size __memset_chk_sse2, .-__memset_chk_sse2 ++ ++# ifdef SHARED ++# undef libc_hidden_builtin_def ++/* It doesn't make sense to send libc-internal memset calls through a PLT. ++ The speedup we get from using GPR instruction is likely eaten away ++ by the indirect call in the PLT. */ ++# define libc_hidden_builtin_def(name) \ ++ .globl __GI_memset; __GI_memset = __memset_sse2 ++# endif ++ ++# undef strong_alias ++# define strong_alias(original, alias) ++#endif ++ ++#include "../memset.S" +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/memset_chk.S +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/memset_chk.S +@@ -0,0 +1,44 @@ ++/* Multiple versions of __memset_chk ++ Copyright (C) 2010 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include <sysdep.h> ++#include <init-arch.h> ++ ++/* Define multiple versions only for the definition in lib. */ ++#ifndef NOT_IN_libc ++# ifdef SHARED ++ENTRY(__memset_chk) ++ .type __memset_chk, @gnu_indirect_function ++ cmpl $0, __cpu_features+KIND_OFFSET(%rip) ++ jne 1f ++ call __init_cpu_features ++1: leaq __memset_chk_x86_64(%rip), %rax ++ testl $bit_Prefer_SSE_for_memop, __cpu_features+FEATURE_OFFSET+index_Prefer_SSE_for_memop(%rip) ++ jz 2f ++ leaq __memset_chk_sse2(%rip), %rax ++2: ret ++END(__memset_chk) ++ ++strong_alias (__memset_chk, __memset_zero_constant_len_parameter) ++ .section .gnu.warning.__memset_zero_constant_len_parameter ++ .string "memset used with constant zero length parameter; this could be due to transposed parameters" ++# else ++# include "../memset_chk.S" ++# endif ++#endif diff --git a/src/patches/glibc/glibc-rh676591.patch b/src/patches/glibc/glibc-rh676591.patch new file mode 100644 index 0000000..fd6df1e --- /dev/null +++ b/src/patches/glibc/glibc-rh676591.patch @@ -0,0 +1,352 @@ +2011-05-15 Ulrich Drepper drepper@gmail.com + + [BZ #11901] + * include/stdlib.h: Move include protection to the right place. + Define abort_msg_s. Declare __abort_msg with it. + * stdlib/abort.c (__abort_msg): Adjust type. + * assert/assert.c (__assert_fail_base): New function. Majority + of code from __assert_fail. Allocate memory for __abort_msg with + mmap. + (__assert_fail): Now call __assert_fail_base. + * assert/assert-perr.c: Remove bulk of implementation. Use + __assert_fail_base. + * include/assert.hL Declare __assert_fail_base. + * sysdeps/posix/libc_fatal.c: Allocate memory for __abort_msg with + mmap. + * sysdeps/unix/sysv/linux/libc_fatal.c: Likewise. + +Index: glibc-2.12-2-gc4ccff1/assert/assert-perr.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/assert/assert-perr.c ++++ glibc-2.12-2-gc4ccff1/assert/assert-perr.c +@@ -17,66 +17,23 @@ + 02111-1307 USA. */ + + #include <assert.h> +-#include <atomic.h> + #include <libintl.h> +-#include <stdio.h> +-#include <stdlib.h> + #include <string.h> +-#include <sysdep.h> +-#include <unistd.h> + + +-extern const char *__progname; +- +-#ifdef USE_IN_LIBIO +-# include <wchar.h> +-# include <libio/iolibio.h> +-# define fflush(s) INTUSE(_IO_fflush) (s) +-#endif +- + /* This function, when passed an error number, a filename, and a line + number, prints a message on the standard error stream of the form: +- a.c:10: foobar: Unexpected error: Computer bought the farm ++ a.c:10: foobar: Unexpected error: Computer bought the farm + It then aborts program execution via a call to `abort'. */ +- +-#ifdef FATAL_PREPARE_INCLUDE +-# include FATAL_PREPARE_INCLUDE +-#endif +- + void + __assert_perror_fail (int errnum, + const char *file, unsigned int line, + const char *function) + { + char errbuf[1024]; +- char *buf; +- +-#ifdef FATAL_PREPARE +- FATAL_PREPARE; +-#endif +- +- if (__asprintf (&buf, _("%s%s%s:%u: %s%sUnexpected error: %s.\n"), +- __progname, __progname[0] ? ": " : "", +- file, line, +- function ? function : "", function ? ": " : "", +- __strerror_r (errnum, errbuf, sizeof errbuf)) >= 0) +- { +- /* Print the message. */ +- (void) __fxprintf (NULL, "%s", buf); +- (void) fflush (stderr); +- +- /* We have to free the old buffer since the application might +- catch the SIGABRT signal. */ +- char *old = atomic_exchange_acq (&__abort_msg, buf); +- free (old); +- } +- else +- { +- /* At least print a minimal message. */ +- static const char errstr[] = "Unexpected error.\n"; +- __libc_write (STDERR_FILENO, errstr, sizeof (errstr) - 1); +- } + +- abort (); ++ char *e = __strerror_r (errnum, errbuf, sizeof errbuf); ++ __assert_fail_base (_("%s%s%s:%u: %s%sUnexpected error: %s.\n"), ++ e, file, line, function); + } + libc_hidden_def (__assert_perror_fail) +Index: glibc-2.12-2-gc4ccff1/assert/assert.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/assert/assert.c ++++ glibc-2.12-2-gc4ccff1/assert/assert.c +@@ -19,11 +19,13 @@ + + #include <assert.h> + #include <atomic.h> ++#include <ldsodefs.h> + #include <libintl.h> + #include <stdio.h> + #include <stdlib.h> + #include <sysdep.h> + #include <unistd.h> ++#include <sys/mman.h> + + + extern const char *__progname; +@@ -45,31 +47,44 @@ extern const char *__progname; + #endif + + +-#undef __assert_fail + void +-__assert_fail (const char *assertion, const char *file, unsigned int line, +- const char *function) ++__assert_fail_base (const char *fmt, const char *assertion, const char *file, ++ unsigned int line, const char *function) + { +- char *buf; ++ char *str; + + #ifdef FATAL_PREPARE + FATAL_PREPARE; + #endif + +- if (__asprintf (&buf, _("%s%s%s:%u: %s%sAssertion `%s' failed.\n"), ++ int total; ++ if (__asprintf (&str, fmt, + __progname, __progname[0] ? ": " : "", + file, line, + function ? function : "", function ? ": " : "", +- assertion) >= 0) ++ assertion, &total) >= 0) + { + /* Print the message. */ +- (void) __fxprintf (NULL, "%s", buf); ++ (void) __fxprintf (NULL, "%s", str); + (void) fflush (stderr); + +- /* We have to free the old buffer since the application might +- catch the SIGABRT signal. */ +- char *old = atomic_exchange_acq (&__abort_msg, buf); +- free (old); ++ total = (total + 1 + GLRO(dl_pagesize) - 1) & ~(GLRO(dl_pagesize) - 1); ++ struct abort_msg_s *buf = __mmap (NULL, total, PROT_READ | PROT_WRITE, ++ MAP_ANON | MAP_PRIVATE, -1, 0); ++ if (__builtin_expect (buf != MAP_FAILED, 1)) ++ { ++ buf->size = total; ++ strcpy (buf->msg, str); ++ ++ /* We have to free the old buffer since the application might ++ catch the SIGABRT signal. */ ++ struct abort_msg_s *old = atomic_exchange_acq (&__abort_msg, buf); ++ ++ if (old != NULL) ++ __munmap (old, old->size); ++ } ++ ++ free (str); + } + else + { +@@ -80,4 +95,14 @@ __assert_fail (const char *assertion, co + + abort (); + } ++ ++ ++#undef __assert_fail ++void ++__assert_fail (const char *assertion, const char *file, unsigned int line, ++ const char *function) ++{ ++ __assert_fail_base (_("%s%s%s:%u: %s%sAssertion `%s' failed.\n%n"), ++ assertion, file, line, function); ++} + hidden_def(__assert_fail) +Index: glibc-2.12-2-gc4ccff1/include/assert.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/include/assert.h ++++ glibc-2.12-2-gc4ccff1/include/assert.h +@@ -13,6 +13,12 @@ extern void __assert_perror_fail (int __ + __const char *__function) + __THROW __attribute__ ((__noreturn__)); + ++/* The real implementation of the two functions above. */ ++extern void __assert_fail_base (const char *fmt, const char *assertion, ++ const char *file, unsigned int line, ++ const char *function) ++ __THROW __attribute__ ((__noreturn__)); ++ + #if !defined NOT_IN_libc || defined IS_IN_rtld + hidden_proto (__assert_fail) + hidden_proto (__assert_perror_fail) +Index: glibc-2.12-2-gc4ccff1/include/stdlib.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/include/stdlib.h ++++ glibc-2.12-2-gc4ccff1/include/stdlib.h +@@ -223,16 +223,21 @@ extern int __qfcvt_r (long double __valu + # define __cxa_atexit(func, arg, d) INTUSE(__cxa_atexit) (func, arg, d) + # endif + +-#endif +- + extern void *__default_morecore (ptrdiff_t) __THROW; + libc_hidden_proto (__default_morecore) + +-extern char *__abort_msg; ++struct abort_msg_s ++{ ++ unsigned int size; ++ char msg[0]; ++}; ++extern struct abort_msg_s *__abort_msg; + libc_hidden_proto (__abort_msg) + + __END_DECLS + ++#endif ++ + #undef __Need_M_And_C + + #endif /* include/stdlib.h */ +Index: glibc-2.12-2-gc4ccff1/stdlib/abort.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/stdlib/abort.c ++++ glibc-2.12-2-gc4ccff1/stdlib/abort.c +@@ -37,7 +37,7 @@ + #endif + + /* Exported variable to locate abort message in core files etc. */ +-char *__abort_msg __attribute__ ((nocommon)); ++struct abort_msg_s *__abort_msg __attribute__ ((nocommon)); + libc_hidden_def (__abort_msg) + + /* We must avoid to run in circles. Therefore we remember how far we +Index: glibc-2.12-2-gc4ccff1/sysdeps/posix/libc_fatal.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/posix/libc_fatal.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/posix/libc_fatal.c +@@ -20,6 +20,7 @@ + #include <atomic.h> + #include <errno.h> + #include <fcntl.h> ++#include <ldsodefs.h> + #include <paths.h> + #include <stdarg.h> + #include <stdbool.h> +@@ -125,18 +126,28 @@ __libc_message (int do_abort, const char + if (TEMP_FAILURE_RETRY (__writev (fd, iov, nlist)) == total) + written = true; + +- char *buf = do_abort ? malloc (total + 1) : NULL; +- if (buf != NULL) ++ if (do_abort) + { +- char *wp = buf; +- for (int cnt = 0; cnt < nlist; ++cnt) +- wp = mempcpy (wp, iov[cnt].iov_base, iov[cnt].iov_len); +- *wp = '\0'; +- +- /* We have to free the old buffer since the application might +- catch the SIGABRT signal. */ +- char *old = atomic_exchange_acq (&__abort_msg, buf); +- free (old); ++ total = ((total + 1 + GLRO(dl_pagesize) - 1) ++ & ~(GLRO(dl_pagesize) - 1)); ++ struct abort_msg_s *buf = __mmap (NULL, total, ++ PROT_READ | PROT_WRITE, ++ MAP_ANON | MAP_PRIVATE, -1, 0); ++ if (buf != MAP_FAILED) ++ { ++ buf->size = total; ++ char *wp = buf->msg; ++ for (int cnt = 0; cnt < nlist; ++cnt) ++ wp = mempcpy (wp, iov[cnt].iov_base, iov[cnt].iov_len); ++ *wp = '\0'; ++ ++ /* We have to free the old buffer since the application might ++ catch the SIGABRT signal. */ ++ struct abort_msg_s *old = atomic_exchange_acq (&__abort_msg, ++ buf); ++ if (old != NULL) ++ __munmap (old, old->size); ++ } + } + } + +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/libc_fatal.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/libc_fatal.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/libc_fatal.c +@@ -20,6 +20,7 @@ + #include <atomic.h> + #include <errno.h> + #include <fcntl.h> ++#include <ldsodefs.h> + #include <paths.h> + #include <stdarg.h> + #include <stdbool.h> +@@ -28,6 +29,7 @@ + #include <string.h> + #include <sysdep.h> + #include <unistd.h> ++#include <sys/mman.h> + #include <sys/syslog.h> + #include <execinfo.h> + +@@ -134,18 +136,28 @@ __libc_message (int do_abort, const char + if (cnt == total) + written = true; + +- char *buf = do_abort ? malloc (total + 1) : NULL; +- if (buf != NULL) ++ if (do_abort) + { +- char *wp = buf; +- for (int cnt = 0; cnt < nlist; ++cnt) +- wp = mempcpy (wp, iov[cnt].iov_base, iov[cnt].iov_len); +- *wp = '\0'; +- +- /* We have to free the old buffer since the application might +- catch the SIGABRT signal. */ +- char *old = atomic_exchange_acq (&__abort_msg, buf); +- free (old); ++ total = ((total + 1 + GLRO(dl_pagesize) - 1) ++ & ~(GLRO(dl_pagesize) - 1)); ++ struct abort_msg_s *buf = __mmap (NULL, total, ++ PROT_READ | PROT_WRITE, ++ MAP_ANON | MAP_PRIVATE, -1, 0); ++ if (__builtin_expect (buf != MAP_FAILED, 1)) ++ { ++ buf->size = total; ++ char *wp = buf->msg; ++ for (int cnt = 0; cnt < nlist; ++cnt) ++ wp = mempcpy (wp, iov[cnt].iov_base, iov[cnt].iov_len); ++ *wp = '\0'; ++ ++ /* We have to free the old buffer since the application might ++ catch the SIGABRT signal. */ ++ struct abort_msg_s *old = atomic_exchange_acq (&__abort_msg, ++ buf); ++ if (old != NULL) ++ __munmap (old, old->size); ++ } + } + } + diff --git a/src/patches/glibc/glibc-rh681054.patch b/src/patches/glibc/glibc-rh681054.patch new file mode 100644 index 0000000..27b7361 --- /dev/null +++ b/src/patches/glibc/glibc-rh681054.patch @@ -0,0 +1,514 @@ +2011-03-18 Ulrich Drepper drepper@gmail.com + + * posix/fnmatch.c (fnmatch): Check size of pattern in wide + character representation. + Partly based on a patch by Tomas Hoger thoger@redhat.com. + +2010-11-11 Andreas Schwab schwab@redhat.com + + * posix/fnmatch_loop.c (NEW_PATTERN): Fix use of alloca. + * posix/Makefile (tests): Add $(objpfx)tst-fnmatch-mem. + (tst-fnmatch-ENV): Set MALLOC_TRACE. + ($(objpfx)tst-fnmatch-mem): New rule. + (generated): Add tst-fnmatch-mem and tst-fnmatch.mtrace. + * posix/tst-fnmatch.c (main): Call mtrace. + +2010-08-09 Ulrich Drepper drepper@redhat.com + + [BZ #11883] + * posix/fnmatch.c: Keep track of alloca use and fall back on malloc. + * posix/fnmatch_loop.c: Likewise. + +Index: glibc-2.12-2-gc4ccff1/posix/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/posix/Makefile ++++ glibc-2.12-2-gc4ccff1/posix/Makefile +@@ -114,7 +114,8 @@ generated := $(addprefix wordexp-test-re + tst-rxspencer-mem tst-rxspencer.mtrace tst-getconf.out \ + tst-pcre-mem tst-pcre.mtrace tst-boost-mem tst-boost.mtrace \ + bug-ga2.mtrace bug-ga2-mem bug-glob2.mtrace bug-glob2-mem \ +- tst-vfork3-mem tst-vfork3.mtrace getconf.speclist ++ tst-vfork3-mem tst-vfork3.mtrace getconf.speclist \ ++ tst-fnmatch-mem tst-fnmatch.mtrace + + include ../Rules + +@@ -226,7 +227,7 @@ ifeq (no,$(cross-compiling)) + tests: $(objpfx)bug-regex2-mem $(objpfx)bug-regex14-mem \ + $(objpfx)bug-regex21-mem $(objpfx)tst-rxspencer-mem \ + $(objpfx)tst-pcre-mem $(objpfx)tst-boost-mem $(objpfx)tst-getconf.out \ +- $(objpfx)bug-glob2-mem $(objpfx)tst-vfork3-mem ++ $(objpfx)bug-glob2-mem $(objpfx)tst-vfork3-mem $(objpfx)tst-fnmatch-mem + xtests: $(objpfx)bug-ga2-mem + endif + +@@ -238,6 +239,11 @@ annexc-CFLAGS = -O + $(objpfx)annexc: annexc.c + $(native-compile) + ++tst-fnmatch-ENV += MALLOC_TRACE=$(objpfx)tst-fnmatch.mtrace ++ ++$(objpfx)tst-fnmatch-mem: $(objpfx)tst-fnmatch.out ++ $(common-objpfx)malloc/mtrace $(objpfx)tst-fnmatch.mtrace > $@ ++ + bug-regex2-ENV = MALLOC_TRACE=$(objpfx)bug-regex2.mtrace + + $(objpfx)bug-regex2-mem: $(objpfx)bug-regex2.out +Index: glibc-2.12-2-gc4ccff1/posix/fnmatch.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/posix/fnmatch.c ++++ glibc-2.12-2-gc4ccff1/posix/fnmatch.c +@@ -41,6 +41,12 @@ + # include <stdlib.h> + #endif + ++#ifdef _LIBC ++# include <alloca.h> ++#else ++# define alloca_account(size., var) alloca (size) ++#endif ++ + /* For platform which support the ISO C amendement 1 functionality we + support user defined character classes. */ + #if defined _LIBC || (defined HAVE_WCTYPE_H && defined HAVE_WCHAR_H) +@@ -330,8 +336,11 @@ fnmatch (pattern, string, flags) + mbstate_t ps; + size_t n; + const char *p; ++ wchar_t *wpattern_malloc = NULL; + wchar_t *wpattern; ++ wchar_t *wstring_malloc = NULL; + wchar_t *wstring; ++ size_t alloca_used = 0; + + /* Convert the strings into wide characters. */ + memset (&ps, '\0', sizeof (ps)); +@@ -343,7 +352,8 @@ fnmatch (pattern, string, flags) + #endif + if (__builtin_expect (n < 1024, 1)) + { +- wpattern = (wchar_t *) alloca ((n + 1) * sizeof (wchar_t)); ++ wpattern = (wchar_t *) alloca_account ((n + 1) * sizeof (wchar_t), ++ alloca_used); + n = mbsrtowcs (wpattern, &p, n + 1, &ps); + if (__builtin_expect (n == (size_t) -1, 0)) + /* Something wrong. +@@ -365,8 +375,16 @@ fnmatch (pattern, string, flags) + XXX Do we have to set `errno' to something which mbsrtows hasn't + already done? */ + return -1; +- wpattern = (wchar_t *) alloca ((n + 1) * sizeof (wchar_t)); ++ if (__builtin_expect (n >= (size_t) -1 / sizeof (wchar_t), 0)) ++ { ++ __set_errno (ENOMEM); ++ return -2; ++ } ++ wpattern_malloc = wpattern ++ = (wchar_t *) malloc ((n + 1) * sizeof (wchar_t)); + assert (mbsinit (&ps)); ++ if (wpattern == NULL) ++ return -2; + (void) mbsrtowcs (wpattern, &pattern, n + 1, &ps); + } + +@@ -379,13 +397,18 @@ fnmatch (pattern, string, flags) + p = string; + if (__builtin_expect (n < 1024, 1)) + { +- wstring = (wchar_t *) alloca ((n + 1) * sizeof (wchar_t)); ++ wstring = (wchar_t *) alloca_account ((n + 1) * sizeof (wchar_t), ++ alloca_used); + n = mbsrtowcs (wstring, &p, n + 1, &ps); + if (__builtin_expect (n == (size_t) -1, 0)) +- /* Something wrong. +- XXX Do we have to set `errno' to something which mbsrtows hasn't +- already done? */ +- return -1; ++ { ++ /* Something wrong. ++ XXX Do we have to set `errno' to something which ++ mbsrtows hasn't already done? */ ++ free_return: ++ free (wpattern_malloc); ++ return -1; ++ } + if (p) + { + memset (&ps, '\0', sizeof (ps)); +@@ -400,19 +423,38 @@ fnmatch (pattern, string, flags) + /* Something wrong. + XXX Do we have to set `errno' to something which mbsrtows hasn't + already done? */ +- return -1; +- wstring = (wchar_t *) alloca ((n + 1) * sizeof (wchar_t)); ++ goto free_return; ++ if (__builtin_expect (n >= (size_t) -1 / sizeof (wchar_t), 0)) ++ { ++ free (wpattern_malloc); ++ __set_errno (ENOMEM); ++ return -2; ++ } ++ ++ wstring_malloc = wstring ++ = (wchar_t *) malloc ((n + 1) * sizeof (wchar_t)); ++ if (wstring == NULL) ++ { ++ free (wpattern_malloc); ++ return -2; ++ } + assert (mbsinit (&ps)); + (void) mbsrtowcs (wstring, &string, n + 1, &ps); + } + +- return internal_fnwmatch (wpattern, wstring, wstring + n, +- flags & FNM_PERIOD, flags, NULL); ++ int res = internal_fnwmatch (wpattern, wstring, wstring + n, ++ flags & FNM_PERIOD, flags, NULL, ++ alloca_used); ++ ++ free (wstring_malloc); ++ free (wpattern_malloc); ++ ++ return res; + } + # endif /* mbstate_t and mbsrtowcs or _LIBC. */ + + return internal_fnmatch (pattern, string, string + strlen (string), +- flags & FNM_PERIOD, flags, NULL); ++ flags & FNM_PERIOD, flags, NULL, 0); + } + + # ifdef _LIBC +Index: glibc-2.12-2-gc4ccff1/posix/fnmatch_loop.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/posix/fnmatch_loop.c ++++ glibc-2.12-2-gc4ccff1/posix/fnmatch_loop.c +@@ -28,22 +28,24 @@ struct STRUCT + it matches, nonzero if not. */ + static int FCT (const CHAR *pattern, const CHAR *string, + const CHAR *string_end, int no_leading_period, int flags, +- struct STRUCT *ends) ++ struct STRUCT *ends, size_t alloca_used) + internal_function; + static int EXT (INT opt, const CHAR *pattern, const CHAR *string, +- const CHAR *string_end, int no_leading_period, int flags) ++ const CHAR *string_end, int no_leading_period, int flags, ++ size_t alloca_used) + internal_function; + static const CHAR *END (const CHAR *patternp) internal_function; + + static int + internal_function +-FCT (pattern, string, string_end, no_leading_period, flags, ends) ++FCT (pattern, string, string_end, no_leading_period, flags, ends, alloca_used) + const CHAR *pattern; + const CHAR *string; + const CHAR *string_end; + int no_leading_period; + int flags; + struct STRUCT *ends; ++ size_t alloca_used; + { + register const CHAR *p = pattern, *n = string; + register UCHAR c; +@@ -67,10 +69,8 @@ FCT (pattern, string, string_end, no_lea + case L('?'): + if (__builtin_expect (flags & FNM_EXTMATCH, 0) && *p == '(') + { +- int res; +- +- res = EXT (c, p, n, string_end, no_leading_period, +- flags); ++ int res = EXT (c, p, n, string_end, no_leading_period, ++ flags, alloca_used); + if (res != -1) + return res; + } +@@ -99,10 +99,8 @@ FCT (pattern, string, string_end, no_lea + case L('*'): + if (__builtin_expect (flags & FNM_EXTMATCH, 0) && *p == '(') + { +- int res; +- +- res = EXT (c, p, n, string_end, no_leading_period, +- flags); ++ int res = EXT (c, p, n, string_end, no_leading_period, ++ flags, alloca_used); + if (res != -1) + return res; + } +@@ -191,7 +189,7 @@ FCT (pattern, string, string_end, no_lea + + for (--p; n < endp; ++n, no_leading_period = 0) + if (FCT (p, n, string_end, no_leading_period, flags2, +- &end) == 0) ++ &end, alloca_used) == 0) + goto found; + } + else if (c == L('/') && (flags & FNM_FILE_NAME)) +@@ -200,7 +198,7 @@ FCT (pattern, string, string_end, no_lea + ++n; + if (n < string_end && *n == L('/') + && (FCT (p, n + 1, string_end, flags & FNM_PERIOD, flags, +- NULL) == 0)) ++ NULL, alloca_used) == 0)) + return 0; + } + else +@@ -214,7 +212,7 @@ FCT (pattern, string, string_end, no_lea + for (--p; n < endp; ++n, no_leading_period = 0) + if (FOLD ((UCHAR) *n) == c + && (FCT (p, n, string_end, no_leading_period, flags2, +- &end) == 0)) ++ &end, alloca_used) == 0)) + { + found: + if (end.pattern == NULL) +@@ -749,7 +747,7 @@ FCT (pattern, string, string_end, no_lea + _NL_COLLATE_SYMB_EXTRAMB); + + /* Locate the character in the hashing +- table. */ ++ table. */ + hash = elem_hash (str, c1); + + idx = 0; +@@ -971,9 +969,8 @@ FCT (pattern, string, string_end, no_lea + case L('!'): + if (__builtin_expect (flags & FNM_EXTMATCH, 0) && *p == '(') + { +- int res; +- +- res = EXT (c, p, n, string_end, no_leading_period, flags); ++ int res = EXT (c, p, n, string_end, no_leading_period, flags, ++ alloca_used); + if (res != -1) + return res; + } +@@ -1052,26 +1049,32 @@ END (const CHAR *pattern) + static int + internal_function + EXT (INT opt, const CHAR *pattern, const CHAR *string, const CHAR *string_end, +- int no_leading_period, int flags) ++ int no_leading_period, int flags, size_t alloca_used) + { + const CHAR *startp; + int level; + struct patternlist + { + struct patternlist *next; ++ CHAR malloced; + CHAR str[0]; + } *list = NULL; + struct patternlist **lastp = &list; + size_t pattern_len = STRLEN (pattern); ++ int any_malloced = 0; + const CHAR *p; + const CHAR *rs; ++ int retval = 0; + + /* Parse the pattern. Store the individual parts in the list. */ + level = 0; + for (startp = p = pattern + 1; level >= 0; ++p) + if (*p == L('\0')) +- /* This is an invalid pattern. */ +- return -1; ++ { ++ /* This is an invalid pattern. */ ++ retval = -1; ++ goto out; ++ } + else if (*p == L('[')) + { + /* Handle brackets special. */ +@@ -1088,8 +1091,11 @@ EXT (INT opt, const CHAR *pattern, const + /* Skip over all characters of the list. */ + while (*p != L(']')) + if (*p++ == L('\0')) +- /* This is no valid pattern. */ +- return -1; ++ { ++ /* This is no valid pattern. */ ++ retval = -1; ++ goto out; ++ } + } + else if ((*p == L('?') || *p == L('*') || *p == L('+') || *p == L('@') + || *p == L('!')) && p[1] == L('(')) +@@ -1102,15 +1108,25 @@ EXT (INT opt, const CHAR *pattern, const + /* This means we found the end of the pattern. */ + #define NEW_PATTERN \ + struct patternlist *newp; \ +- \ +- if (opt == L('?') || opt == L('@')) \ +- newp = alloca (sizeof (struct patternlist) \ +- + (pattern_len * sizeof (CHAR))); \ ++ size_t slen = (opt == L('?') || opt == L('@') \ ++ ? pattern_len : (p - startp + 1)); \ ++ slen = sizeof (struct patternlist) + (slen * sizeof (CHAR)); \ ++ int malloced = ! __libc_use_alloca (alloca_used + slen); \ ++ if (__builtin_expect (malloced, 0)) \ ++ { \ ++ newp = malloc (slen); \ ++ if (newp == NULL) \ ++ { \ ++ retval = -2; \ ++ goto out; \ ++ } \ ++ any_malloced = 1; \ ++ } \ + else \ +- newp = alloca (sizeof (struct patternlist) \ +- + ((p - startp + 1) * sizeof (CHAR))); \ +- *((CHAR *) MEMPCPY (newp->str, startp, p - startp)) = L('\0'); \ ++ newp = alloca_account (slen, alloca_used); \ + newp->next = NULL; \ ++ newp->malloced = malloced; \ ++ *((CHAR *) MEMPCPY (newp->str, startp, p - startp)) = L('\0'); \ + *lastp = newp; \ + lastp = &newp->next + NEW_PATTERN; +@@ -1131,8 +1147,9 @@ EXT (INT opt, const CHAR *pattern, const + switch (opt) + { + case L('*'): +- if (FCT (p, string, string_end, no_leading_period, flags, NULL) == 0) +- return 0; ++ if (FCT (p, string, string_end, no_leading_period, flags, NULL, ++ alloca_used) == 0) ++ goto success; + /* FALLTHROUGH */ + + case L('+'): +@@ -1143,7 +1160,7 @@ EXT (INT opt, const CHAR *pattern, const + current pattern. */ + if (FCT (list->str, string, rs, no_leading_period, + flags & FNM_FILE_NAME ? flags : flags & ~FNM_PERIOD, +- NULL) == 0 ++ NULL, alloca_used) == 0 + /* This was successful. Now match the rest with the rest + of the pattern. */ + && (FCT (p, rs, string_end, +@@ -1151,7 +1168,7 @@ EXT (INT opt, const CHAR *pattern, const + ? no_leading_period + : rs[-1] == '/' && NO_LEADING_PERIOD (flags) ? 1 : 0, + flags & FNM_FILE_NAME +- ? flags : flags & ~FNM_PERIOD, NULL) == 0 ++ ? flags : flags & ~FNM_PERIOD, NULL, alloca_used) == 0 + /* This didn't work. Try the whole pattern. */ + || (rs != string + && FCT (pattern - 1, rs, string_end, +@@ -1160,18 +1177,21 @@ EXT (INT opt, const CHAR *pattern, const + : (rs[-1] == '/' && NO_LEADING_PERIOD (flags) + ? 1 : 0), + flags & FNM_FILE_NAME +- ? flags : flags & ~FNM_PERIOD, NULL) == 0))) ++ ? flags : flags & ~FNM_PERIOD, NULL, ++ alloca_used) == 0))) + /* It worked. Signal success. */ +- return 0; ++ goto success; + } + while ((list = list->next) != NULL); + + /* None of the patterns lead to a match. */ +- return FNM_NOMATCH; ++ retval = FNM_NOMATCH; ++ break; + + case L('?'): +- if (FCT (p, string, string_end, no_leading_period, flags, NULL) == 0) +- return 0; ++ if (FCT (p, string, string_end, no_leading_period, flags, NULL, ++ alloca_used) == 0) ++ goto success; + /* FALLTHROUGH */ + + case L('@'): +@@ -1183,13 +1203,14 @@ EXT (INT opt, const CHAR *pattern, const + if (FCT (STRCAT (list->str, p), string, string_end, + no_leading_period, + flags & FNM_FILE_NAME ? flags : flags & ~FNM_PERIOD, +- NULL) == 0) ++ NULL, alloca_used) == 0) + /* It worked. Signal success. */ +- return 0; ++ goto success; + while ((list = list->next) != NULL); + + /* None of the patterns lead to a match. */ +- return FNM_NOMATCH; ++ retval = FNM_NOMATCH; ++ break; + + case L('!'): + for (rs = string; rs <= string_end; ++rs) +@@ -1199,7 +1220,7 @@ EXT (INT opt, const CHAR *pattern, const + for (runp = list; runp != NULL; runp = runp->next) + if (FCT (runp->str, string, rs, no_leading_period, + flags & FNM_FILE_NAME ? flags : flags & ~FNM_PERIOD, +- NULL) == 0) ++ NULL, alloca_used) == 0) + break; + + /* If none of the patterns matched see whether the rest does. */ +@@ -1209,21 +1230,34 @@ EXT (INT opt, const CHAR *pattern, const + ? no_leading_period + : rs[-1] == '/' && NO_LEADING_PERIOD (flags) ? 1 : 0, + flags & FNM_FILE_NAME ? flags : flags & ~FNM_PERIOD, +- NULL) == 0)) ++ NULL, alloca_used) == 0)) + /* This is successful. */ +- return 0; ++ goto success; + } + + /* None of the patterns together with the rest of the pattern + lead to a match. */ +- return FNM_NOMATCH; ++ retval = FNM_NOMATCH; ++ break; + + default: + assert (! "Invalid extended matching operator"); ++ retval = -1; + break; + } + +- return -1; ++ success: ++ out: ++ if (any_malloced) ++ while (list != NULL) ++ { ++ struct patternlist *old = list; ++ list = list->next; ++ if (old->malloced) ++ free (old); ++ } ++ ++ return retval; + } + + +Index: glibc-2.12-2-gc4ccff1/posix/tst-fnmatch.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/posix/tst-fnmatch.c ++++ glibc-2.12-2-gc4ccff1/posix/tst-fnmatch.c +@@ -25,6 +25,7 @@ + #include <stdlib.h> + #include <string.h> + #include <sys/types.h> ++#include <mcheck.h> + + + static char *next_input (char **line, int first, int last); +@@ -46,6 +47,8 @@ main (void) + size_t escpatternlen = 0; + int nr = 0; + ++ mtrace (); ++ + /* Read lines from stdin with the following format: + + locale input-string match-string flags result diff --git a/src/patches/glibc/glibc-rh688720.patch b/src/patches/glibc/glibc-rh688720.patch new file mode 100644 index 0000000..0c86f25 --- /dev/null +++ b/src/patches/glibc/glibc-rh688720.patch @@ -0,0 +1,1638 @@ +2011-11-11 Ulrich Drepper drepper@gmail.com + + [BZ #13147] + * locales/de_AT: Use de_DE for LC_NUMERIC. + * locales/es_BO: Use es_ES for LC_MESSAGES and LC_NUMERIC. + * locales/es_CL: Likewise. + * locales/es_CO: Likewise. + * locales/es_DO: Likewise. + * locales/es_EC: Likewise. + * locales/es_GT: Likewise. + * locales/es_HN: Likewise. + * locales/es_MX: Likewise. + * locales/es_NI: Likewise. + * locales/es_PA: Likewise. + * locales/es_PE: Likewise. + * locales/es_PR: Likewise. + * locales/es_PY: Likewise. + * locales/es_SV: Likewise. + * locales/es_UY: Likewise. + * locales/es_VE: Likewise. + * locales/es_ES: Fix LC_NUMERIC. + * locales/es_CR: Use es_ES for LC_MESSAGES. + * locales/fr_BE: Actually use grouping in LC_NUMERIC. + * locales/fr_CA: Use fr_FR for LC_MESSAGES and LC_NUMERIC. + * locales/fr_CH: Use de_CH for LC_NUMERIC. + * locales/fr_LU: Use same grouping in LC_NUMERIC as in LC_MONETARY. + +2010-05-17 Andreas Schwab schwab@redhat.com + + * locales/es_CR (LC_ADDRESS): Fix character names in lang_ab. + +Index: glibc-2.12-2-gc4ccff1/localedata/locales/de_AT +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/de_AT ++++ glibc-2.12-2-gc4ccff1/localedata/locales/de_AT +@@ -78,41 +78,39 @@ n_sign_posn 1 + END LC_MONETARY + + LC_NUMERIC +-decimal_point "<U002C>" +-thousands_sep "" +-grouping 0;0 ++copy "de_DE" + END LC_NUMERIC + + LC_TIME + abday "<U0053><U006F><U006E>";"<U004D><U006F><U006E>";/ +- "<U0044><U0069><U0065>";"<U004D><U0069><U0074>";/ +- "<U0044><U006F><U006E>";"<U0046><U0072><U0065>";/ +- "<U0053><U0061><U006D>" ++ "<U0044><U0069><U0065>";"<U004D><U0069><U0074>";/ ++ "<U0044><U006F><U006E>";"<U0046><U0072><U0065>";/ ++ "<U0053><U0061><U006D>" + day "<U0053><U006F><U006E><U006E><U0074><U0061><U0067>";/ +- "<U004D><U006F><U006E><U0074><U0061><U0067>";/ +- "<U0044><U0069><U0065><U006E><U0073><U0074><U0061><U0067>";/ +- "<U004D><U0069><U0074><U0074><U0077><U006F><U0063><U0068>";/ +- "<U0044><U006F><U006E><U006E><U0065><U0072><U0073><U0074><U0061><U0067>";/ +- "<U0046><U0072><U0065><U0069><U0074><U0061><U0067>";/ +- "<U0053><U0061><U006D><U0073><U0074><U0061><U0067>" ++ "<U004D><U006F><U006E><U0074><U0061><U0067>";/ ++ "<U0044><U0069><U0065><U006E><U0073><U0074><U0061><U0067>";/ ++ "<U004D><U0069><U0074><U0074><U0077><U006F><U0063><U0068>";/ ++ "<U0044><U006F><U006E><U006E><U0065><U0072><U0073><U0074><U0061><U0067>";/ ++ "<U0046><U0072><U0065><U0069><U0074><U0061><U0067>";/ ++ "<U0053><U0061><U006D><U0073><U0074><U0061><U0067>" + abmon "<U004A><U00E4><U006E>";"<U0046><U0065><U0062>";/ +- "<U004D><U00E4><U0072>";"<U0041><U0070><U0072>";/ +- "<U004D><U0061><U0069>";"<U004A><U0075><U006E>";/ +- "<U004A><U0075><U006C>";"<U0041><U0075><U0067>";/ +- "<U0053><U0065><U0070>";"<U004F><U006B><U0074>";/ +- "<U004E><U006F><U0076>";"<U0044><U0065><U007A>" ++ "<U004D><U00E4><U0072>";"<U0041><U0070><U0072>";/ ++ "<U004D><U0061><U0069>";"<U004A><U0075><U006E>";/ ++ "<U004A><U0075><U006C>";"<U0041><U0075><U0067>";/ ++ "<U0053><U0065><U0070>";"<U004F><U006B><U0074>";/ ++ "<U004E><U006F><U0076>";"<U0044><U0065><U007A>" + mon "<U004A><U00E4><U006E><U006E><U0065><U0072>";/ +- "<U0046><U0065><U0062><U0065><U0072>";/ +- "<U004D><U00E4><U0072><U007A>";/ +- "<U0041><U0070><U0072><U0069><U006C>";/ +- "<U004D><U0061><U0069>";/ +- "<U004A><U0075><U006E><U0069>";/ +- "<U004A><U0075><U006C><U0069>";/ +- "<U0041><U0075><U0067><U0075><U0073><U0074>";/ +- "<U0053><U0065><U0070><U0074><U0065><U006D><U0062><U0065><U0072>";/ +- "<U004F><U006B><U0074><U006F><U0062><U0065><U0072>";/ +- "<U004E><U006F><U0076><U0065><U006D><U0062><U0065><U0072>";/ +- "<U0044><U0065><U007A><U0065><U006D><U0062><U0065><U0072>" ++ "<U0046><U0065><U0062><U0065><U0072>";/ ++ "<U004D><U00E4><U0072><U007A>";/ ++ "<U0041><U0070><U0072><U0069><U006C>";/ ++ "<U004D><U0061><U0069>";/ ++ "<U004A><U0075><U006E><U0069>";/ ++ "<U004A><U0075><U006C><U0069>";/ ++ "<U0041><U0075><U0067><U0075><U0073><U0074>";/ ++ "<U0053><U0065><U0070><U0074><U0065><U006D><U0062><U0065><U0072>";/ ++ "<U004F><U006B><U0074><U006F><U0062><U0065><U0072>";/ ++ "<U004E><U006F><U0076><U0065><U006D><U0062><U0065><U0072>";/ ++ "<U0044><U0065><U007A><U0065><U006D><U0062><U0065><U0072>" + d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" + d_fmt "<U0025><U0059><U002D><U0025><U006D><U002D><U0025><U0064>" + t_fmt "<U0025><U0054>" +Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_BO +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_BO ++++ glibc-2.12-2-gc4ccff1/localedata/locales/es_BO +@@ -56,8 +56,7 @@ copy "es_ES" + END LC_CTYPE + + LC_MESSAGES +-yesexpr "<U005E><U005B><U0073><U0053><U0079><U0059><U005D><U002E><U002A>" +-noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>" ++copy "es_ES" + END LC_MESSAGES + + LC_MONETARY +@@ -79,41 +78,39 @@ n_sign_posn 1 + END LC_MONETARY + + LC_NUMERIC +-decimal_point "<U002C>" +-thousands_sep "" +-grouping 0;0 ++copy "es_ES" + END LC_NUMERIC + + LC_TIME + abday "<U0064><U006F><U006D>";"<U006C><U0075><U006E>";/ +- "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ +- "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ +- "<U0073><U00E1><U0062>" ++ "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ ++ "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ ++ "<U0073><U00E1><U0062>" + day "<U0064><U006F><U006D><U0069><U006E><U0067><U006F>";/ +- "<U006C><U0075><U006E><U0065><U0073>";/ +- "<U006D><U0061><U0072><U0074><U0065><U0073>";/ +- "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ +- "<U006A><U0075><U0065><U0076><U0065><U0073>";/ +- "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ +- "<U0073><U00E1><U0062><U0061><U0064><U006F>" ++ "<U006C><U0075><U006E><U0065><U0073>";/ ++ "<U006D><U0061><U0072><U0074><U0065><U0073>";/ ++ "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ ++ "<U006A><U0075><U0065><U0076><U0065><U0073>";/ ++ "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ ++ "<U0073><U00E1><U0062><U0061><U0064><U006F>" + abmon "<U0065><U006E><U0065>";"<U0066><U0065><U0062>";/ +- "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ +- "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ +- "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ +- "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ +- "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" ++ "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ ++ "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ ++ "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ ++ "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ ++ "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" + mon "<U0065><U006E><U0065><U0072><U006F>";/ +- "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ +- "<U006D><U0061><U0072><U007A><U006F>";/ +- "<U0061><U0062><U0072><U0069><U006C>";/ +- "<U006D><U0061><U0079><U006F>";/ +- "<U006A><U0075><U006E><U0069><U006F>";/ +- "<U006A><U0075><U006C><U0069><U006F>";/ +- "<U0061><U0067><U006F><U0073><U0074><U006F>";/ +- "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ +- "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ +- "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ +- "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" ++ "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ ++ "<U006D><U0061><U0072><U007A><U006F>";/ ++ "<U0061><U0062><U0072><U0069><U006C>";/ ++ "<U006D><U0061><U0079><U006F>";/ ++ "<U006A><U0075><U006E><U0069><U006F>";/ ++ "<U006A><U0075><U006C><U0069><U006F>";/ ++ "<U0061><U0067><U006F><U0073><U0074><U006F>";/ ++ "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ ++ "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ ++ "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ ++ "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" + d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" + d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>" + t_fmt "<U0025><U0054>" +Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_CL +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_CL ++++ glibc-2.12-2-gc4ccff1/localedata/locales/es_CL +@@ -56,8 +56,7 @@ copy "es_ES" + END LC_CTYPE + + LC_MESSAGES +-yesexpr "<U005E><U005B><U0073><U0053><U0079><U0059><U005D><U002E><U002A>" +-noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>" ++copy "es_ES" + END LC_MESSAGES + + LC_MONETARY +@@ -79,41 +78,39 @@ n_sign_posn 1 + END LC_MONETARY + + LC_NUMERIC +-decimal_point "<U002C>" +-thousands_sep "" +-grouping 0;0 ++copy "es_ES" + END LC_NUMERIC + + LC_TIME + abday "<U0064><U006F><U006D>";"<U006C><U0075><U006E>";/ +- "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ +- "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ +- "<U0073><U00E1><U0062>" ++ "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ ++ "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ ++ "<U0073><U00E1><U0062>" + day "<U0064><U006F><U006D><U0069><U006E><U0067><U006F>";/ +- "<U006C><U0075><U006E><U0065><U0073>";/ +- "<U006D><U0061><U0072><U0074><U0065><U0073>";/ +- "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ +- "<U006A><U0075><U0065><U0076><U0065><U0073>";/ +- "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ +- "<U0073><U00E1><U0062><U0061><U0064><U006F>" ++ "<U006C><U0075><U006E><U0065><U0073>";/ ++ "<U006D><U0061><U0072><U0074><U0065><U0073>";/ ++ "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ ++ "<U006A><U0075><U0065><U0076><U0065><U0073>";/ ++ "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ ++ "<U0073><U00E1><U0062><U0061><U0064><U006F>" + abmon "<U0065><U006E><U0065>";"<U0066><U0065><U0062>";/ +- "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ +- "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ +- "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ +- "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ +- "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" ++ "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ ++ "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ ++ "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ ++ "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ ++ "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" + mon "<U0065><U006E><U0065><U0072><U006F>";/ +- "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ +- "<U006D><U0061><U0072><U007A><U006F>";/ +- "<U0061><U0062><U0072><U0069><U006C>";/ +- "<U006D><U0061><U0079><U006F>";/ +- "<U006A><U0075><U006E><U0069><U006F>";/ +- "<U006A><U0075><U006C><U0069><U006F>";/ +- "<U0061><U0067><U006F><U0073><U0074><U006F>";/ +- "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ +- "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ +- "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ +- "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" ++ "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ ++ "<U006D><U0061><U0072><U007A><U006F>";/ ++ "<U0061><U0062><U0072><U0069><U006C>";/ ++ "<U006D><U0061><U0079><U006F>";/ ++ "<U006A><U0075><U006E><U0069><U006F>";/ ++ "<U006A><U0075><U006C><U0069><U006F>";/ ++ "<U0061><U0067><U006F><U0073><U0074><U006F>";/ ++ "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ ++ "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ ++ "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ ++ "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" + d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" + d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>" + t_fmt "<U0025><U0054>" +Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_CO +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_CO ++++ glibc-2.12-2-gc4ccff1/localedata/locales/es_CO +@@ -56,8 +56,7 @@ copy "es_ES" + END LC_CTYPE + + LC_MESSAGES +-yesexpr "<U005E><U005B><U0073><U0053><U0079><U0059><U005D><U002E><U002A>" +-noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>" ++copy "es_ES" + END LC_MESSAGES + + LC_MONETARY +@@ -79,41 +78,39 @@ n_sign_posn 1 + END LC_MONETARY + + LC_NUMERIC +-decimal_point "<U002C>" +-thousands_sep "" +-grouping 0;0 ++copy "es_ES" + END LC_NUMERIC + + LC_TIME + abday "<U0064><U006F><U006D>";"<U006C><U0075><U006E>";/ +- "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ +- "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ +- "<U0073><U00E1><U0062>" ++ "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ ++ "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ ++ "<U0073><U00E1><U0062>" + day "<U0064><U006F><U006D><U0069><U006E><U0067><U006F>";/ +- "<U006C><U0075><U006E><U0065><U0073>";/ +- "<U006D><U0061><U0072><U0074><U0065><U0073>";/ +- "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ +- "<U006A><U0075><U0065><U0076><U0065><U0073>";/ +- "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ +- "<U0073><U00E1><U0062><U0061><U0064><U006F>" ++ "<U006C><U0075><U006E><U0065><U0073>";/ ++ "<U006D><U0061><U0072><U0074><U0065><U0073>";/ ++ "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ ++ "<U006A><U0075><U0065><U0076><U0065><U0073>";/ ++ "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ ++ "<U0073><U00E1><U0062><U0061><U0064><U006F>" + abmon "<U0065><U006E><U0065>";"<U0066><U0065><U0062>";/ +- "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ +- "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ +- "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ +- "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ +- "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" ++ "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ ++ "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ ++ "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ ++ "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ ++ "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" + mon "<U0065><U006E><U0065><U0072><U006F>";/ +- "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ +- "<U006D><U0061><U0072><U007A><U006F>";/ +- "<U0061><U0062><U0072><U0069><U006C>";/ +- "<U006D><U0061><U0079><U006F>";/ +- "<U006A><U0075><U006E><U0069><U006F>";/ +- "<U006A><U0075><U006C><U0069><U006F>";/ +- "<U0061><U0067><U006F><U0073><U0074><U006F>";/ +- "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ +- "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ +- "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ +- "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" ++ "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ ++ "<U006D><U0061><U0072><U007A><U006F>";/ ++ "<U0061><U0062><U0072><U0069><U006C>";/ ++ "<U006D><U0061><U0079><U006F>";/ ++ "<U006A><U0075><U006E><U0069><U006F>";/ ++ "<U006A><U0075><U006C><U0069><U006F>";/ ++ "<U0061><U0067><U006F><U0073><U0074><U006F>";/ ++ "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ ++ "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ ++ "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ ++ "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" + d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" + d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>" + t_fmt "<U0025><U0054>" +Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_CR +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_CR ++++ glibc-2.12-2-gc4ccff1/localedata/locales/es_CR +@@ -47,8 +47,7 @@ copy "es_ES" + END LC_CTYPE + + LC_MESSAGES +-yesexpr "<U005E><U005B><U0073><U0053><U0079><U0059><U005D><U002E><U002A>" +-noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>" ++copy "es_ES" + END LC_MESSAGES + + LC_MONETARY +@@ -79,34 +78,34 @@ END LC_NUMERIC + + LC_TIME + abday "<U0064><U006F><U006D>";"<U006C><U0075><U006E>";/ +- "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ +- "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ +- "<U0073><U00E1><U0062>" ++ "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ ++ "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ ++ "<U0073><U00E1><U0062>" + day "<U0064><U006F><U006D><U0069><U006E><U0067><U006F>";/ +- "<U006C><U0075><U006E><U0065><U0073>";/ +- "<U006D><U0061><U0072><U0074><U0065><U0073>";/ +- "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ +- "<U006A><U0075><U0065><U0076><U0065><U0073>";/ +- "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ +- "<U0073><U00E1><U0062><U0061><U0064><U006F>" ++ "<U006C><U0075><U006E><U0065><U0073>";/ ++ "<U006D><U0061><U0072><U0074><U0065><U0073>";/ ++ "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ ++ "<U006A><U0075><U0065><U0076><U0065><U0073>";/ ++ "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ ++ "<U0073><U00E1><U0062><U0061><U0064><U006F>" + abmon "<U0065><U006E><U0065>";"<U0066><U0065><U0062>";/ +- "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ +- "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ +- "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ +- "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ +- "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" ++ "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ ++ "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ ++ "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ ++ "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ ++ "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" + mon "<U0065><U006E><U0065><U0072><U006F>";/ +- "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ +- "<U006D><U0061><U0072><U007A><U006F>";/ +- "<U0061><U0062><U0072><U0069><U006C>";/ +- "<U006D><U0061><U0079><U006F>";/ +- "<U006A><U0075><U006E><U0069><U006F>";/ +- "<U006A><U0075><U006C><U0069><U006F>";/ +- "<U0061><U0067><U006F><U0073><U0074><U006F>";/ +- "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ +- "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ +- "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ +- "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" ++ "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ ++ "<U006D><U0061><U0072><U007A><U006F>";/ ++ "<U0061><U0062><U0072><U0069><U006C>";/ ++ "<U006D><U0061><U0079><U006F>";/ ++ "<U006A><U0075><U006E><U0069><U006F>";/ ++ "<U006A><U0075><U006C><U0069><U006F>";/ ++ "<U0061><U0067><U006F><U0073><U0074><U006F>";/ ++ "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ ++ "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ ++ "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ ++ "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" + d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" + d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0059>" + t_fmt "<U0025><U0054>" +@@ -157,7 +156,7 @@ country_post "<U0043><U0052>" + country_car "<U0043><U0052>" + country_isbn "9930,9977,9968" + lang_name "<U0045><U0073><U0070><U0061><U00F1><U006F><U006C>" +-lang_ab "<0065><0073>" ++lang_ab "<U0065><U0073>" + lang_term "<U0073><U0070><U0061>" + country_ab2 "<U0043><U0052>" + country_ab3 "<U0043><U0052><U0049>" +Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_DO +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_DO ++++ glibc-2.12-2-gc4ccff1/localedata/locales/es_DO +@@ -56,8 +56,7 @@ copy "es_ES" + END LC_CTYPE + + LC_MESSAGES +-yesexpr "<U005E><U005B><U0073><U0053><U0079><U0059><U005D><U002E><U002A>" +-noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>" ++copy "es_ES" + END LC_MESSAGES + + LC_MONETARY +@@ -79,41 +78,39 @@ n_sign_posn 1 + END LC_MONETARY + + LC_NUMERIC +-decimal_point "<U002E>" +-thousands_sep "" +-grouping 0;0 ++copy "es_ES" + END LC_NUMERIC + + LC_TIME + abday "<U0064><U006F><U006D>";"<U006C><U0075><U006E>";/ +- "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ +- "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ +- "<U0073><U00E1><U0062>" ++ "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ ++ "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ ++ "<U0073><U00E1><U0062>" + day "<U0064><U006F><U006D><U0069><U006E><U0067><U006F>";/ +- "<U006C><U0075><U006E><U0065><U0073>";/ +- "<U006D><U0061><U0072><U0074><U0065><U0073>";/ +- "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ +- "<U006A><U0075><U0065><U0076><U0065><U0073>";/ +- "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ +- "<U0073><U00E1><U0062><U0061><U0064><U006F>" ++ "<U006C><U0075><U006E><U0065><U0073>";/ ++ "<U006D><U0061><U0072><U0074><U0065><U0073>";/ ++ "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ ++ "<U006A><U0075><U0065><U0076><U0065><U0073>";/ ++ "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ ++ "<U0073><U00E1><U0062><U0061><U0064><U006F>" + abmon "<U0065><U006E><U0065>";"<U0066><U0065><U0062>";/ +- "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ +- "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ +- "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ +- "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ +- "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" ++ "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ ++ "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ ++ "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ ++ "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ ++ "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" + mon "<U0065><U006E><U0065><U0072><U006F>";/ +- "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ +- "<U006D><U0061><U0072><U007A><U006F>";/ +- "<U0061><U0062><U0072><U0069><U006C>";/ +- "<U006D><U0061><U0079><U006F>";/ +- "<U006A><U0075><U006E><U0069><U006F>";/ +- "<U006A><U0075><U006C><U0069><U006F>";/ +- "<U0061><U0067><U006F><U0073><U0074><U006F>";/ +- "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ +- "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ +- "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ +- "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" ++ "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ ++ "<U006D><U0061><U0072><U007A><U006F>";/ ++ "<U0061><U0062><U0072><U0069><U006C>";/ ++ "<U006D><U0061><U0079><U006F>";/ ++ "<U006A><U0075><U006E><U0069><U006F>";/ ++ "<U006A><U0075><U006C><U0069><U006F>";/ ++ "<U0061><U0067><U006F><U0073><U0074><U006F>";/ ++ "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ ++ "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ ++ "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ ++ "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" + d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" + d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>" + t_fmt "<U0025><U0054>" +Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_EC +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_EC ++++ glibc-2.12-2-gc4ccff1/localedata/locales/es_EC +@@ -56,8 +56,7 @@ copy "es_ES" + END LC_CTYPE + + LC_MESSAGES +-yesexpr "<U005E><U005B><U0073><U0053><U0079><U0059><U005D><U002E><U002A>" +-noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>" ++copy "es_ES" + END LC_MESSAGES + + LC_MONETARY +@@ -79,41 +78,39 @@ n_sign_posn 1 + END LC_MONETARY + + LC_NUMERIC +-decimal_point "<U002C>" +-thousands_sep "" +-grouping 0;0 ++copy "es_ES" + END LC_NUMERIC + + LC_TIME + abday "<U0064><U006F><U006D>";"<U006C><U0075><U006E>";/ +- "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ +- "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ +- "<U0073><U00E1><U0062>" ++ "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ ++ "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ ++ "<U0073><U00E1><U0062>" + day "<U0064><U006F><U006D><U0069><U006E><U0067><U006F>";/ +- "<U006C><U0075><U006E><U0065><U0073>";/ +- "<U006D><U0061><U0072><U0074><U0065><U0073>";/ +- "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ +- "<U006A><U0075><U0065><U0076><U0065><U0073>";/ +- "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ +- "<U0073><U00E1><U0062><U0061><U0064><U006F>" ++ "<U006C><U0075><U006E><U0065><U0073>";/ ++ "<U006D><U0061><U0072><U0074><U0065><U0073>";/ ++ "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ ++ "<U006A><U0075><U0065><U0076><U0065><U0073>";/ ++ "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ ++ "<U0073><U00E1><U0062><U0061><U0064><U006F>" + abmon "<U0065><U006E><U0065>";"<U0066><U0065><U0062>";/ +- "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ +- "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ +- "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ +- "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ +- "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" ++ "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ ++ "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ ++ "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ ++ "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ ++ "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" + mon "<U0065><U006E><U0065><U0072><U006F>";/ +- "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ +- "<U006D><U0061><U0072><U007A><U006F>";/ +- "<U0061><U0062><U0072><U0069><U006C>";/ +- "<U006D><U0061><U0079><U006F>";/ +- "<U006A><U0075><U006E><U0069><U006F>";/ +- "<U006A><U0075><U006C><U0069><U006F>";/ +- "<U0061><U0067><U006F><U0073><U0074><U006F>";/ +- "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ +- "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ +- "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ +- "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" ++ "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ ++ "<U006D><U0061><U0072><U007A><U006F>";/ ++ "<U0061><U0062><U0072><U0069><U006C>";/ ++ "<U006D><U0061><U0079><U006F>";/ ++ "<U006A><U0075><U006E><U0069><U006F>";/ ++ "<U006A><U0075><U006C><U0069><U006F>";/ ++ "<U0061><U0067><U006F><U0073><U0074><U006F>";/ ++ "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ ++ "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ ++ "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ ++ "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" + d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" + d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>" + t_fmt "<U0025><U0054>" +Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_ES +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_ES ++++ glibc-2.12-2-gc4ccff1/localedata/locales/es_ES +@@ -85,40 +85,40 @@ END LC_MONETARY + + LC_NUMERIC + decimal_point "<U002C>" +-thousands_sep "" +-grouping 0;0 ++thousands_sep "<U002E>" ++grouping 3;3 + END LC_NUMERIC + + LC_TIME + abday "<U0064><U006F><U006D>";"<U006C><U0075><U006E>";/ +- "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ +- "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ +- "<U0073><U00E1><U0062>" ++ "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ ++ "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ ++ "<U0073><U00E1><U0062>" + day "<U0064><U006F><U006D><U0069><U006E><U0067><U006F>";/ +- "<U006C><U0075><U006E><U0065><U0073>";/ +- "<U006D><U0061><U0072><U0074><U0065><U0073>";/ +- "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ +- "<U006A><U0075><U0065><U0076><U0065><U0073>";/ +- "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ +- "<U0073><U00E1><U0062><U0061><U0064><U006F>" ++ "<U006C><U0075><U006E><U0065><U0073>";/ ++ "<U006D><U0061><U0072><U0074><U0065><U0073>";/ ++ "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ ++ "<U006A><U0075><U0065><U0076><U0065><U0073>";/ ++ "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ ++ "<U0073><U00E1><U0062><U0061><U0064><U006F>" + abmon "<U0065><U006E><U0065>";"<U0066><U0065><U0062>";/ +- "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ +- "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ +- "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ +- "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ +- "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" ++ "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ ++ "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ ++ "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ ++ "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ ++ "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" + mon "<U0065><U006E><U0065><U0072><U006F>";/ +- "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ +- "<U006D><U0061><U0072><U007A><U006F>";/ +- "<U0061><U0062><U0072><U0069><U006C>";/ +- "<U006D><U0061><U0079><U006F>";/ +- "<U006A><U0075><U006E><U0069><U006F>";/ +- "<U006A><U0075><U006C><U0069><U006F>";/ +- "<U0061><U0067><U006F><U0073><U0074><U006F>";/ +- "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ +- "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ +- "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ +- "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" ++ "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ ++ "<U006D><U0061><U0072><U007A><U006F>";/ ++ "<U0061><U0062><U0072><U0069><U006C>";/ ++ "<U006D><U0061><U0079><U006F>";/ ++ "<U006A><U0075><U006E><U0069><U006F>";/ ++ "<U006A><U0075><U006C><U0069><U006F>";/ ++ "<U0061><U0067><U006F><U0073><U0074><U006F>";/ ++ "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ ++ "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ ++ "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ ++ "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" + d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" + d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>" + t_fmt "<U0025><U0054>" +Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_GT +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_GT ++++ glibc-2.12-2-gc4ccff1/localedata/locales/es_GT +@@ -55,8 +55,7 @@ copy "es_ES" + END LC_CTYPE + + LC_MESSAGES +-yesexpr "<U005E><U005B><U0073><U0053><U0079><U0059><U005D><U002E><U002A>" +-noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>" ++copy "es_ES" + END LC_MESSAGES + + LC_MONETARY +@@ -78,9 +77,7 @@ n_sign_posn 1 + END LC_MONETARY + + LC_NUMERIC +-decimal_point "<U002E>" +-thousands_sep "" +-grouping 0;0 ++copy "es_ES" + END LC_NUMERIC + + LC_TIME +Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_HN +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_HN ++++ glibc-2.12-2-gc4ccff1/localedata/locales/es_HN +@@ -56,8 +56,7 @@ copy "es_ES" + END LC_CTYPE + + LC_MESSAGES +-yesexpr "<U005E><U005B><U0073><U0053><U0079><U0059><U005D><U002E><U002A>" +-noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>" ++copy "es_ES" + END LC_MESSAGES + + LC_MONETARY +@@ -79,41 +78,39 @@ n_sign_posn 1 + END LC_MONETARY + + LC_NUMERIC +-decimal_point "<U002E>" +-thousands_sep "" +-grouping 0;0 ++copy "es_ES" + END LC_NUMERIC + + LC_TIME + abday "<U0064><U006F><U006D>";"<U006C><U0075><U006E>";/ +- "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ +- "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ +- "<U0073><U00E1><U0062>" ++ "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ ++ "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ ++ "<U0073><U00E1><U0062>" + day "<U0064><U006F><U006D><U0069><U006E><U0067><U006F>";/ +- "<U006C><U0075><U006E><U0065><U0073>";/ +- "<U006D><U0061><U0072><U0074><U0065><U0073>";/ +- "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ +- "<U006A><U0075><U0065><U0076><U0065><U0073>";/ +- "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ +- "<U0073><U00E1><U0062><U0061><U0064><U006F>" ++ "<U006C><U0075><U006E><U0065><U0073>";/ ++ "<U006D><U0061><U0072><U0074><U0065><U0073>";/ ++ "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ ++ "<U006A><U0075><U0065><U0076><U0065><U0073>";/ ++ "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ ++ "<U0073><U00E1><U0062><U0061><U0064><U006F>" + abmon "<U0065><U006E><U0065>";"<U0066><U0065><U0062>";/ +- "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ +- "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ +- "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ +- "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ +- "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" ++ "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ ++ "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ ++ "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ ++ "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ ++ "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" + mon "<U0065><U006E><U0065><U0072><U006F>";/ +- "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ +- "<U006D><U0061><U0072><U007A><U006F>";/ +- "<U0061><U0062><U0072><U0069><U006C>";/ +- "<U006D><U0061><U0079><U006F>";/ +- "<U006A><U0075><U006E><U0069><U006F>";/ +- "<U006A><U0075><U006C><U0069><U006F>";/ +- "<U0061><U0067><U006F><U0073><U0074><U006F>";/ +- "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ +- "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ +- "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ +- "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" ++ "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ ++ "<U006D><U0061><U0072><U007A><U006F>";/ ++ "<U0061><U0062><U0072><U0069><U006C>";/ ++ "<U006D><U0061><U0079><U006F>";/ ++ "<U006A><U0075><U006E><U0069><U006F>";/ ++ "<U006A><U0075><U006C><U0069><U006F>";/ ++ "<U0061><U0067><U006F><U0073><U0074><U006F>";/ ++ "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ ++ "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ ++ "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ ++ "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" + d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" + d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>" + t_fmt "<U0025><U0054>" +Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_MX +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_MX ++++ glibc-2.12-2-gc4ccff1/localedata/locales/es_MX +@@ -56,8 +56,7 @@ copy "es_ES" + END LC_CTYPE + + LC_MESSAGES +-yesexpr "<U005E><U005B><U0073><U0053><U0079><U0059><U005D><U002E><U002A>" +-noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>" ++copy "es_ES" + END LC_MESSAGES + + LC_MONETARY +@@ -79,41 +78,39 @@ n_sign_posn 1 + END LC_MONETARY + + LC_NUMERIC +-decimal_point "<U002E>" +-thousands_sep "" +-grouping 0;0 ++copy "es_ES" + END LC_NUMERIC + + LC_TIME + abday "<U0064><U006F><U006D>";"<U006C><U0075><U006E>";/ +- "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ +- "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ +- "<U0073><U00E1><U0062>" ++ "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ ++ "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ ++ "<U0073><U00E1><U0062>" + day "<U0064><U006F><U006D><U0069><U006E><U0067><U006F>";/ +- "<U006C><U0075><U006E><U0065><U0073>";/ +- "<U006D><U0061><U0072><U0074><U0065><U0073>";/ +- "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ +- "<U006A><U0075><U0065><U0076><U0065><U0073>";/ +- "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ +- "<U0073><U00E1><U0062><U0061><U0064><U006F>" ++ "<U006C><U0075><U006E><U0065><U0073>";/ ++ "<U006D><U0061><U0072><U0074><U0065><U0073>";/ ++ "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ ++ "<U006A><U0075><U0065><U0076><U0065><U0073>";/ ++ "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ ++ "<U0073><U00E1><U0062><U0061><U0064><U006F>" + abmon "<U0065><U006E><U0065>";"<U0066><U0065><U0062>";/ +- "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ +- "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ +- "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ +- "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ +- "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" ++ "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ ++ "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ ++ "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ ++ "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ ++ "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" + mon "<U0065><U006E><U0065><U0072><U006F>";/ +- "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ +- "<U006D><U0061><U0072><U007A><U006F>";/ +- "<U0061><U0062><U0072><U0069><U006C>";/ +- "<U006D><U0061><U0079><U006F>";/ +- "<U006A><U0075><U006E><U0069><U006F>";/ +- "<U006A><U0075><U006C><U0069><U006F>";/ +- "<U0061><U0067><U006F><U0073><U0074><U006F>";/ +- "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ +- "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ +- "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ +- "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" ++ "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ ++ "<U006D><U0061><U0072><U007A><U006F>";/ ++ "<U0061><U0062><U0072><U0069><U006C>";/ ++ "<U006D><U0061><U0079><U006F>";/ ++ "<U006A><U0075><U006E><U0069><U006F>";/ ++ "<U006A><U0075><U006C><U0069><U006F>";/ ++ "<U0061><U0067><U006F><U0073><U0074><U006F>";/ ++ "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ ++ "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ ++ "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ ++ "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" + d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" + d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>" + t_fmt "<U0025><U0054>" +Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_NI +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_NI ++++ glibc-2.12-2-gc4ccff1/localedata/locales/es_NI +@@ -47,8 +47,7 @@ copy "es_ES" + END LC_CTYPE + + LC_MESSAGES +-yesexpr "<U005E><U005B><U0073><U0053><U0079><U0059><U005D><U002E><U002A>" +-noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>" ++copy "es_ES" + END LC_MESSAGES + + LC_MONETARY +@@ -70,9 +69,7 @@ n_sign_posn 1 + END LC_MONETARY + + LC_NUMERIC +-decimal_point "<U002E>" +-thousands_sep "" +-grouping 0;0 ++copy "es_ES" + END LC_NUMERIC + + LC_TIME +Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_PA +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_PA ++++ glibc-2.12-2-gc4ccff1/localedata/locales/es_PA +@@ -56,8 +56,7 @@ copy "es_ES" + END LC_CTYPE + + LC_MESSAGES +-yesexpr "<U005E><U005B><U0073><U0053><U0079><U0059><U005D><U002E><U002A>" +-noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>" ++copy "es_ES" + END LC_MESSAGES + + LC_MONETARY +@@ -79,41 +78,39 @@ n_sign_posn 1 + END LC_MONETARY + + LC_NUMERIC +-decimal_point "<U002E>" +-thousands_sep "" +-grouping 0;0 ++copy "es_ES" + END LC_NUMERIC + + LC_TIME + abday "<U0064><U006F><U006D>";"<U006C><U0075><U006E>";/ +- "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ +- "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ +- "<U0073><U00E1><U0062>" ++ "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ ++ "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ ++ "<U0073><U00E1><U0062>" + day "<U0064><U006F><U006D><U0069><U006E><U0067><U006F>";/ +- "<U006C><U0075><U006E><U0065><U0073>";/ +- "<U006D><U0061><U0072><U0074><U0065><U0073>";/ +- "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ +- "<U006A><U0075><U0065><U0076><U0065><U0073>";/ +- "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ +- "<U0073><U00E1><U0062><U0061><U0064><U006F>" ++ "<U006C><U0075><U006E><U0065><U0073>";/ ++ "<U006D><U0061><U0072><U0074><U0065><U0073>";/ ++ "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ ++ "<U006A><U0075><U0065><U0076><U0065><U0073>";/ ++ "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ ++ "<U0073><U00E1><U0062><U0061><U0064><U006F>" + abmon "<U0065><U006E><U0065>";"<U0066><U0065><U0062>";/ +- "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ +- "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ +- "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ +- "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ +- "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" ++ "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ ++ "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ ++ "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ ++ "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ ++ "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" + mon "<U0065><U006E><U0065><U0072><U006F>";/ +- "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ +- "<U006D><U0061><U0072><U007A><U006F>";/ +- "<U0061><U0062><U0072><U0069><U006C>";/ +- "<U006D><U0061><U0079><U006F>";/ +- "<U006A><U0075><U006E><U0069><U006F>";/ +- "<U006A><U0075><U006C><U0069><U006F>";/ +- "<U0061><U0067><U006F><U0073><U0074><U006F>";/ +- "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ +- "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ +- "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ +- "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" ++ "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ ++ "<U006D><U0061><U0072><U007A><U006F>";/ ++ "<U0061><U0062><U0072><U0069><U006C>";/ ++ "<U006D><U0061><U0079><U006F>";/ ++ "<U006A><U0075><U006E><U0069><U006F>";/ ++ "<U006A><U0075><U006C><U0069><U006F>";/ ++ "<U0061><U0067><U006F><U0073><U0074><U006F>";/ ++ "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ ++ "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ ++ "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ ++ "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" + d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" + d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>" + t_fmt "<U0025><U0054>" +Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_PE +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_PE ++++ glibc-2.12-2-gc4ccff1/localedata/locales/es_PE +@@ -56,8 +56,7 @@ copy "es_ES" + END LC_CTYPE + + LC_MESSAGES +-yesexpr "<U005E><U005B><U0073><U0053><U0079><U0059><U005D><U002E><U002A>" +-noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>" ++copy "es_ES" + END LC_MESSAGES + + LC_MONETARY +@@ -79,41 +78,39 @@ n_sign_posn 1 + END LC_MONETARY + + LC_NUMERIC +-decimal_point "<U002E>" +-thousands_sep "" +-grouping 0;0 ++copy "es_ES" + END LC_NUMERIC + + LC_TIME + abday "<U0064><U006F><U006D>";"<U006C><U0075><U006E>";/ +- "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ +- "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ +- "<U0073><U00E1><U0062>" ++ "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ ++ "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ ++ "<U0073><U00E1><U0062>" + day "<U0064><U006F><U006D><U0069><U006E><U0067><U006F>";/ +- "<U006C><U0075><U006E><U0065><U0073>";/ +- "<U006D><U0061><U0072><U0074><U0065><U0073>";/ +- "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ +- "<U006A><U0075><U0065><U0076><U0065><U0073>";/ +- "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ +- "<U0073><U00E1><U0062><U0061><U0064><U006F>" ++ "<U006C><U0075><U006E><U0065><U0073>";/ ++ "<U006D><U0061><U0072><U0074><U0065><U0073>";/ ++ "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ ++ "<U006A><U0075><U0065><U0076><U0065><U0073>";/ ++ "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ ++ "<U0073><U00E1><U0062><U0061><U0064><U006F>" + abmon "<U0065><U006E><U0065>";"<U0066><U0065><U0062>";/ +- "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ +- "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ +- "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ +- "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ +- "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" ++ "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ ++ "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ ++ "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ ++ "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ ++ "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" + mon "<U0065><U006E><U0065><U0072><U006F>";/ +- "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ +- "<U006D><U0061><U0072><U007A><U006F>";/ +- "<U0061><U0062><U0072><U0069><U006C>";/ +- "<U006D><U0061><U0079><U006F>";/ +- "<U006A><U0075><U006E><U0069><U006F>";/ +- "<U006A><U0075><U006C><U0069><U006F>";/ +- "<U0061><U0067><U006F><U0073><U0074><U006F>";/ +- "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ +- "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ +- "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ +- "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" ++ "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ ++ "<U006D><U0061><U0072><U007A><U006F>";/ ++ "<U0061><U0062><U0072><U0069><U006C>";/ ++ "<U006D><U0061><U0079><U006F>";/ ++ "<U006A><U0075><U006E><U0069><U006F>";/ ++ "<U006A><U0075><U006C><U0069><U006F>";/ ++ "<U0061><U0067><U006F><U0073><U0074><U006F>";/ ++ "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ ++ "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ ++ "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ ++ "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" + d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" + d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>" + t_fmt "<U0025><U0054>" +Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_PR +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_PR ++++ glibc-2.12-2-gc4ccff1/localedata/locales/es_PR +@@ -47,8 +47,7 @@ copy "es_ES" + END LC_CTYPE + + LC_MESSAGES +-yesexpr "<U005E><U005B><U0073><U0053><U0079><U0059><U005D><U002E><U002A>" +-noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>" ++copy "es_ES" + END LC_MESSAGES + + LC_MONETARY +@@ -70,41 +69,39 @@ n_sign_posn 1 + END LC_MONETARY + + LC_NUMERIC +-decimal_point "<U002E>" +-thousands_sep "" +-grouping 0;0 ++copy "es_ES" + END LC_NUMERIC + + LC_TIME + abday "<U0064><U006F><U006D>";"<U006C><U0075><U006E>";/ +- "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ +- "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ +- "<U0073><U00E1><U0062>" ++ "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ ++ "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ ++ "<U0073><U00E1><U0062>" + day "<U0064><U006F><U006D><U0069><U006E><U0067><U006F>";/ +- "<U006C><U0075><U006E><U0065><U0073>";/ +- "<U006D><U0061><U0072><U0074><U0065><U0073>";/ +- "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ +- "<U006A><U0075><U0065><U0076><U0065><U0073>";/ +- "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ +- "<U0073><U00E1><U0062><U0061><U0064><U006F>" ++ "<U006C><U0075><U006E><U0065><U0073>";/ ++ "<U006D><U0061><U0072><U0074><U0065><U0073>";/ ++ "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ ++ "<U006A><U0075><U0065><U0076><U0065><U0073>";/ ++ "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ ++ "<U0073><U00E1><U0062><U0061><U0064><U006F>" + abmon "<U0065><U006E><U0065>";"<U0066><U0065><U0062>";/ +- "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ +- "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ +- "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ +- "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ +- "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" ++ "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ ++ "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ ++ "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ ++ "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ ++ "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" + mon "<U0065><U006E><U0065><U0072><U006F>";/ +- "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ +- "<U006D><U0061><U0072><U007A><U006F>";/ +- "<U0061><U0062><U0072><U0069><U006C>";/ +- "<U006D><U0061><U0079><U006F>";/ +- "<U006A><U0075><U006E><U0069><U006F>";/ +- "<U006A><U0075><U006C><U0069><U006F>";/ +- "<U0061><U0067><U006F><U0073><U0074><U006F>";/ +- "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ +- "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ +- "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ +- "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" ++ "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ ++ "<U006D><U0061><U0072><U007A><U006F>";/ ++ "<U0061><U0062><U0072><U0069><U006C>";/ ++ "<U006D><U0061><U0079><U006F>";/ ++ "<U006A><U0075><U006E><U0069><U006F>";/ ++ "<U006A><U0075><U006C><U0069><U006F>";/ ++ "<U0061><U0067><U006F><U0073><U0074><U006F>";/ ++ "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ ++ "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ ++ "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ ++ "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" + d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" + d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>" + t_fmt "<U0025><U0054>" +Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_PY +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_PY ++++ glibc-2.12-2-gc4ccff1/localedata/locales/es_PY +@@ -56,8 +56,7 @@ copy "es_ES" + END LC_CTYPE + + LC_MESSAGES +-yesexpr "<U005E><U005B><U0073><U0053><U0079><U0059><U005D><U002E><U002A>" +-noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>" ++copy "es_ES" + END LC_MESSAGES + + LC_MONETARY +@@ -79,41 +78,39 @@ n_sign_posn 1 + END LC_MONETARY + + LC_NUMERIC +-decimal_point "<U002C>" +-thousands_sep "" +-grouping 0;0 ++copy "es_ES" + END LC_NUMERIC + + LC_TIME + abday "<U0064><U006F><U006D>";"<U006C><U0075><U006E>";/ +- "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ +- "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ +- "<U0073><U00E1><U0062>" ++ "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ ++ "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ ++ "<U0073><U00E1><U0062>" + day "<U0064><U006F><U006D><U0069><U006E><U0067><U006F>";/ +- "<U006C><U0075><U006E><U0065><U0073>";/ +- "<U006D><U0061><U0072><U0074><U0065><U0073>";/ +- "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ +- "<U006A><U0075><U0065><U0076><U0065><U0073>";/ +- "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ +- "<U0073><U00E1><U0062><U0061><U0064><U006F>" ++ "<U006C><U0075><U006E><U0065><U0073>";/ ++ "<U006D><U0061><U0072><U0074><U0065><U0073>";/ ++ "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ ++ "<U006A><U0075><U0065><U0076><U0065><U0073>";/ ++ "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ ++ "<U0073><U00E1><U0062><U0061><U0064><U006F>" + abmon "<U0065><U006E><U0065>";"<U0066><U0065><U0062>";/ +- "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ +- "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ +- "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ +- "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ +- "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" ++ "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ ++ "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ ++ "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ ++ "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ ++ "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" + mon "<U0065><U006E><U0065><U0072><U006F>";/ +- "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ +- "<U006D><U0061><U0072><U007A><U006F>";/ +- "<U0061><U0062><U0072><U0069><U006C>";/ +- "<U006D><U0061><U0079><U006F>";/ +- "<U006A><U0075><U006E><U0069><U006F>";/ +- "<U006A><U0075><U006C><U0069><U006F>";/ +- "<U0061><U0067><U006F><U0073><U0074><U006F>";/ +- "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ +- "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ +- "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ +- "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" ++ "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ ++ "<U006D><U0061><U0072><U007A><U006F>";/ ++ "<U0061><U0062><U0072><U0069><U006C>";/ ++ "<U006D><U0061><U0079><U006F>";/ ++ "<U006A><U0075><U006E><U0069><U006F>";/ ++ "<U006A><U0075><U006C><U0069><U006F>";/ ++ "<U0061><U0067><U006F><U0073><U0074><U006F>";/ ++ "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ ++ "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ ++ "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ ++ "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" + d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" + d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>" + t_fmt "<U0025><U0054>" +Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_SV +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_SV ++++ glibc-2.12-2-gc4ccff1/localedata/locales/es_SV +@@ -56,8 +56,7 @@ copy "es_ES" + END LC_CTYPE + + LC_MESSAGES +-yesexpr "<U005E><U005B><U0073><U0053><U0079><U0059><U005D><U002E><U002A>" +-noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>" ++copy "es_ES" + END LC_MESSAGES + + LC_MONETARY +@@ -79,9 +78,7 @@ n_sign_posn 1 + END LC_MONETARY + + LC_NUMERIC +-decimal_point "<U002E>" +-thousands_sep "" +-grouping 0;0 ++copy "es_ES" + END LC_NUMERIC + + LC_TIME +Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_UY +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_UY ++++ glibc-2.12-2-gc4ccff1/localedata/locales/es_UY +@@ -56,8 +56,7 @@ copy "es_ES" + END LC_CTYPE + + LC_MESSAGES +-yesexpr "<U005E><U005B><U0073><U0053><U0079><U0059><U005D><U002E><U002A>" +-noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>" ++copy "es_ES" + END LC_MESSAGES + + LC_MONETARY +@@ -79,41 +78,39 @@ n_sign_posn 1 + END LC_MONETARY + + LC_NUMERIC +-decimal_point "<U002C>" +-thousands_sep "" +-grouping 0;0 ++copy "es_ES" + END LC_NUMERIC + + LC_TIME + abday "<U0064><U006F><U006D>";"<U006C><U0075><U006E>";/ +- "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ +- "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ +- "<U0073><U00E1><U0062>" ++ "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ ++ "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ ++ "<U0073><U00E1><U0062>" + day "<U0064><U006F><U006D><U0069><U006E><U0067><U006F>";/ +- "<U006C><U0075><U006E><U0065><U0073>";/ +- "<U006D><U0061><U0072><U0074><U0065><U0073>";/ +- "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ +- "<U006A><U0075><U0065><U0076><U0065><U0073>";/ +- "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ +- "<U0073><U00E1><U0062><U0061><U0064><U006F>" ++ "<U006C><U0075><U006E><U0065><U0073>";/ ++ "<U006D><U0061><U0072><U0074><U0065><U0073>";/ ++ "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ ++ "<U006A><U0075><U0065><U0076><U0065><U0073>";/ ++ "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ ++ "<U0073><U00E1><U0062><U0061><U0064><U006F>" + abmon "<U0065><U006E><U0065>";"<U0066><U0065><U0062>";/ +- "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ +- "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ +- "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ +- "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ +- "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" ++ "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ ++ "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ ++ "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ ++ "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ ++ "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" + mon "<U0065><U006E><U0065><U0072><U006F>";/ +- "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ +- "<U006D><U0061><U0072><U007A><U006F>";/ +- "<U0061><U0062><U0072><U0069><U006C>";/ +- "<U006D><U0061><U0079><U006F>";/ +- "<U006A><U0075><U006E><U0069><U006F>";/ +- "<U006A><U0075><U006C><U0069><U006F>";/ +- "<U0061><U0067><U006F><U0073><U0074><U006F>";/ +- "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ +- "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ +- "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ +- "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" ++ "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ ++ "<U006D><U0061><U0072><U007A><U006F>";/ ++ "<U0061><U0062><U0072><U0069><U006C>";/ ++ "<U006D><U0061><U0079><U006F>";/ ++ "<U006A><U0075><U006E><U0069><U006F>";/ ++ "<U006A><U0075><U006C><U0069><U006F>";/ ++ "<U0061><U0067><U006F><U0073><U0074><U006F>";/ ++ "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ ++ "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ ++ "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ ++ "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" + d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" + d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>" + t_fmt "<U0025><U0054>" +Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_VE +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_VE ++++ glibc-2.12-2-gc4ccff1/localedata/locales/es_VE +@@ -56,8 +56,7 @@ copy "es_ES" + END LC_CTYPE + + LC_MESSAGES +-yesexpr "<U005E><U005B><U0073><U0053><U0079><U0059><U005D><U002E><U002A>" +-noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>" ++copy "es_ES" + END LC_MESSAGES + + LC_MONETARY +@@ -79,41 +78,39 @@ n_sign_posn 1 + END LC_MONETARY + + LC_NUMERIC +-decimal_point "<U002C>" +-thousands_sep "" +-grouping 0;0 ++copy "es_ES" + END LC_NUMERIC + + LC_TIME + abday "<U0064><U006F><U006D>";"<U006C><U0075><U006E>";/ +- "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ +- "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ +- "<U0073><U00E1><U0062>" ++ "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ ++ "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ ++ "<U0073><U00E1><U0062>" + day "<U0064><U006F><U006D><U0069><U006E><U0067><U006F>";/ +- "<U006C><U0075><U006E><U0065><U0073>";/ +- "<U006D><U0061><U0072><U0074><U0065><U0073>";/ +- "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ +- "<U006A><U0075><U0065><U0076><U0065><U0073>";/ +- "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ +- "<U0073><U00E1><U0062><U0061><U0064><U006F>" ++ "<U006C><U0075><U006E><U0065><U0073>";/ ++ "<U006D><U0061><U0072><U0074><U0065><U0073>";/ ++ "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ ++ "<U006A><U0075><U0065><U0076><U0065><U0073>";/ ++ "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ ++ "<U0073><U00E1><U0062><U0061><U0064><U006F>" + abmon "<U0065><U006E><U0065>";"<U0066><U0065><U0062>";/ +- "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ +- "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ +- "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ +- "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ +- "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" ++ "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ ++ "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ ++ "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ ++ "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ ++ "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" + mon "<U0065><U006E><U0065><U0072><U006F>";/ +- "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ +- "<U006D><U0061><U0072><U007A><U006F>";/ +- "<U0061><U0062><U0072><U0069><U006C>";/ +- "<U006D><U0061><U0079><U006F>";/ +- "<U006A><U0075><U006E><U0069><U006F>";/ +- "<U006A><U0075><U006C><U0069><U006F>";/ +- "<U0061><U0067><U006F><U0073><U0074><U006F>";/ +- "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ +- "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ +- "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ +- "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" ++ "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ ++ "<U006D><U0061><U0072><U007A><U006F>";/ ++ "<U0061><U0062><U0072><U0069><U006C>";/ ++ "<U006D><U0061><U0079><U006F>";/ ++ "<U006A><U0075><U006E><U0069><U006F>";/ ++ "<U006A><U0075><U006C><U0069><U006F>";/ ++ "<U0061><U0067><U006F><U0073><U0074><U006F>";/ ++ "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ ++ "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ ++ "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ ++ "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" + d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" + d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>" + t_fmt "<U0025><U0054>" +Index: glibc-2.12-2-gc4ccff1/localedata/locales/fr_BE +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/fr_BE ++++ glibc-2.12-2-gc4ccff1/localedata/locales/fr_BE +@@ -79,7 +79,7 @@ END LC_MONETARY + LC_NUMERIC + decimal_point "<U002C>" + thousands_sep "<U002E>" +-grouping 0;0 ++grouping 3;3 + END LC_NUMERIC + + LC_TIME +Index: glibc-2.12-2-gc4ccff1/localedata/locales/fr_CA +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/fr_CA ++++ glibc-2.12-2-gc4ccff1/localedata/locales/fr_CA +@@ -55,8 +55,7 @@ copy "en_CA" + END LC_COLLATE + + LC_MESSAGES +-yesexpr "<U005E><U005B><U006F><U004F><U0079><U0059><U005D><U002E><U002A>" +-noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>" ++copy "fr_FR" + END LC_MESSAGES + + LC_MONETARY +@@ -78,41 +77,39 @@ n_sign_posn 0 + END LC_MONETARY + + LC_NUMERIC +-decimal_point "<U002C>" +-thousands_sep "<U0020>" +-grouping 0;0 ++copy "fr_FR" + END LC_NUMERIC + + LC_TIME + abday "<U0064><U0069><U006D>";"<U006C><U0075><U006E>";/ +- "<U006D><U0061><U0072>";"<U006D><U0065><U0072>";/ +- "<U006A><U0065><U0075>";"<U0076><U0065><U006E>";/ +- "<U0073><U0061><U006D>" ++ "<U006D><U0061><U0072>";"<U006D><U0065><U0072>";/ ++ "<U006A><U0065><U0075>";"<U0076><U0065><U006E>";/ ++ "<U0073><U0061><U006D>" + day "<U0064><U0069><U006D><U0061><U006E><U0063><U0068><U0065>";/ +- "<U006C><U0075><U006E><U0064><U0069>";/ +- "<U006D><U0061><U0072><U0064><U0069>";/ +- "<U006D><U0065><U0072><U0063><U0072><U0065><U0064><U0069>";/ +- "<U006A><U0065><U0075><U0064><U0069>";/ +- "<U0076><U0065><U006E><U0064><U0072><U0065><U0064><U0069>";/ +- "<U0073><U0061><U006D><U0065><U0064><U0069>" ++ "<U006C><U0075><U006E><U0064><U0069>";/ ++ "<U006D><U0061><U0072><U0064><U0069>";/ ++ "<U006D><U0065><U0072><U0063><U0072><U0065><U0064><U0069>";/ ++ "<U006A><U0065><U0075><U0064><U0069>";/ ++ "<U0076><U0065><U006E><U0064><U0072><U0065><U0064><U0069>";/ ++ "<U0073><U0061><U006D><U0065><U0064><U0069>" + abmon "<U006A><U0061><U006E>";"<U0066><U00E9><U0076>";/ +- "<U006D><U0061><U0072>";"<U0061><U0076><U0072>";/ +- "<U006D><U0061><U0069>";"<U006A><U0075><U006E>";/ +- "<U006A><U0075><U0069>";"<U0061><U006F><U00FB>";/ +- "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ +- "<U006E><U006F><U0076>";"<U0064><U00E9><U0063>" ++ "<U006D><U0061><U0072>";"<U0061><U0076><U0072>";/ ++ "<U006D><U0061><U0069>";"<U006A><U0075><U006E>";/ ++ "<U006A><U0075><U0069>";"<U0061><U006F><U00FB>";/ ++ "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ ++ "<U006E><U006F><U0076>";"<U0064><U00E9><U0063>" + mon "<U006A><U0061><U006E><U0076><U0069><U0065><U0072>";/ +- "<U0066><U00E9><U0076><U0072><U0069><U0065><U0072>";/ +- "<U006D><U0061><U0072><U0073>";/ +- "<U0061><U0076><U0072><U0069><U006C>";/ +- "<U006D><U0061><U0069>";/ +- "<U006A><U0075><U0069><U006E>";/ +- "<U006A><U0075><U0069><U006C><U006C><U0065><U0074>";/ +- "<U0061><U006F><U00FB><U0074>";/ +- "<U0073><U0065><U0070><U0074><U0065><U006D><U0062><U0072><U0065>";/ +- "<U006F><U0063><U0074><U006F><U0062><U0072><U0065>";/ +- "<U006E><U006F><U0076><U0065><U006D><U0062><U0072><U0065>";/ +- "<U0064><U00E9><U0063><U0065><U006D><U0062><U0072><U0065>" ++ "<U0066><U00E9><U0076><U0072><U0069><U0065><U0072>";/ ++ "<U006D><U0061><U0072><U0073>";/ ++ "<U0061><U0076><U0072><U0069><U006C>";/ ++ "<U006D><U0061><U0069>";/ ++ "<U006A><U0075><U0069><U006E>";/ ++ "<U006A><U0075><U0069><U006C><U006C><U0065><U0074>";/ ++ "<U0061><U006F><U00FB><U0074>";/ ++ "<U0073><U0065><U0070><U0074><U0065><U006D><U0062><U0072><U0065>";/ ++ "<U006F><U0063><U0074><U006F><U0062><U0072><U0065>";/ ++ "<U006E><U006F><U0076><U0065><U006D><U0062><U0072><U0065>";/ ++ "<U0064><U00E9><U0063><U0065><U006D><U0062><U0072><U0065>" + d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" + d_fmt "<U0025><U0059><U002D><U0025><U006D><U002D><U0025><U0064>" + t_fmt "<U0025><U0054>" +Index: glibc-2.12-2-gc4ccff1/localedata/locales/fr_CH +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/fr_CH ++++ glibc-2.12-2-gc4ccff1/localedata/locales/fr_CH +@@ -64,41 +64,39 @@ copy "de_CH" + END LC_MONETARY + + LC_NUMERIC +-decimal_point "<U002C>" +-thousands_sep "" +-grouping 0;0 ++copy "de_CH" + END LC_NUMERIC + + LC_TIME + abday "<U0064><U0069><U006D>";"<U006C><U0075><U006E>";/ +- "<U006D><U0061><U0072>";"<U006D><U0065><U0072>";/ +- "<U006A><U0065><U0075>";"<U0076><U0065><U006E>";/ +- "<U0073><U0061><U006D>" ++ "<U006D><U0061><U0072>";"<U006D><U0065><U0072>";/ ++ "<U006A><U0065><U0075>";"<U0076><U0065><U006E>";/ ++ "<U0073><U0061><U006D>" + day "<U0064><U0069><U006D><U0061><U006E><U0063><U0068><U0065>";/ +- "<U006C><U0075><U006E><U0064><U0069>";/ +- "<U006D><U0061><U0072><U0064><U0069>";/ +- "<U006D><U0065><U0072><U0063><U0072><U0065><U0064><U0069>";/ +- "<U006A><U0065><U0075><U0064><U0069>";/ +- "<U0076><U0065><U006E><U0064><U0072><U0065><U0064><U0069>";/ +- "<U0073><U0061><U006D><U0065><U0064><U0069>" ++ "<U006C><U0075><U006E><U0064><U0069>";/ ++ "<U006D><U0061><U0072><U0064><U0069>";/ ++ "<U006D><U0065><U0072><U0063><U0072><U0065><U0064><U0069>";/ ++ "<U006A><U0065><U0075><U0064><U0069>";/ ++ "<U0076><U0065><U006E><U0064><U0072><U0065><U0064><U0069>";/ ++ "<U0073><U0061><U006D><U0065><U0064><U0069>" + abmon "<U006A><U0061><U006E>";"<U0066><U00E9><U0076>";/ +- "<U006D><U0061><U0072>";"<U0061><U0076><U0072>";/ +- "<U006D><U0061><U0069>";"<U006A><U0075><U006E>";/ +- "<U006A><U0075><U0069>";"<U0061><U006F><U00FB>";/ +- "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ +- "<U006E><U006F><U0076>";"<U0064><U00E9><U0063>" ++ "<U006D><U0061><U0072>";"<U0061><U0076><U0072>";/ ++ "<U006D><U0061><U0069>";"<U006A><U0075><U006E>";/ ++ "<U006A><U0075><U0069>";"<U0061><U006F><U00FB>";/ ++ "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ ++ "<U006E><U006F><U0076>";"<U0064><U00E9><U0063>" + mon "<U006A><U0061><U006E><U0076><U0069><U0065><U0072>";/ +- "<U0066><U00E9><U0076><U0072><U0069><U0065><U0072>";/ +- "<U006D><U0061><U0072><U0073>";/ +- "<U0061><U0076><U0072><U0069><U006C>";/ +- "<U006D><U0061><U0069>";/ +- "<U006A><U0075><U0069><U006E>";/ +- "<U006A><U0075><U0069><U006C><U006C><U0065><U0074>";/ +- "<U0061><U006F><U00FB><U0074>";/ +- "<U0073><U0065><U0070><U0074><U0065><U006D><U0062><U0072><U0065>";/ +- "<U006F><U0063><U0074><U006F><U0062><U0072><U0065>";/ +- "<U006E><U006F><U0076><U0065><U006D><U0062><U0072><U0065>";/ +- "<U0064><U00E9><U0063><U0065><U006D><U0062><U0072><U0065>" ++ "<U0066><U00E9><U0076><U0072><U0069><U0065><U0072>";/ ++ "<U006D><U0061><U0072><U0073>";/ ++ "<U0061><U0076><U0072><U0069><U006C>";/ ++ "<U006D><U0061><U0069>";/ ++ "<U006A><U0075><U0069><U006E>";/ ++ "<U006A><U0075><U0069><U006C><U006C><U0065><U0074>";/ ++ "<U0061><U006F><U00FB><U0074>";/ ++ "<U0073><U0065><U0070><U0074><U0065><U006D><U0062><U0072><U0065>";/ ++ "<U006F><U0063><U0074><U006F><U0062><U0072><U0065>";/ ++ "<U006E><U006F><U0076><U0065><U006D><U0062><U0072><U0065>";/ ++ "<U0064><U00E9><U0063><U0065><U006D><U0062><U0072><U0065>" + d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" + d_fmt "<U0025><U0064><U002E><U0020><U0025><U006D><U002E><U0020><U0025><U0079>" + t_fmt "<U0025><U0054>" +Index: glibc-2.12-2-gc4ccff1/localedata/locales/fr_LU +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/fr_LU ++++ glibc-2.12-2-gc4ccff1/localedata/locales/fr_LU +@@ -78,40 +78,40 @@ END LC_MONETARY + + LC_NUMERIC + decimal_point "<U002C>" +-thousands_sep "" +-grouping 0;0 ++thousands_sep "<U0020>" ++grouping 3;3 + END LC_NUMERIC + + LC_TIME + abday "<U0064><U0069><U006D>";"<U006C><U0075><U006E>";/ +- "<U006D><U0061><U0072>";"<U006D><U0065><U0072>";/ +- "<U006A><U0065><U0075>";"<U0076><U0065><U006E>";/ +- "<U0073><U0061><U006D>" ++ "<U006D><U0061><U0072>";"<U006D><U0065><U0072>";/ ++ "<U006A><U0065><U0075>";"<U0076><U0065><U006E>";/ ++ "<U0073><U0061><U006D>" + day "<U0064><U0069><U006D><U0061><U006E><U0063><U0068><U0065>";/ +- "<U006C><U0075><U006E><U0064><U0069>";/ +- "<U006D><U0061><U0072><U0064><U0069>";/ +- "<U006D><U0065><U0072><U0063><U0072><U0065><U0064><U0069>";/ +- "<U006A><U0065><U0075><U0064><U0069>";/ +- "<U0076><U0065><U006E><U0064><U0072><U0065><U0064><U0069>";/ +- "<U0073><U0061><U006D><U0065><U0064><U0069>" ++ "<U006C><U0075><U006E><U0064><U0069>";/ ++ "<U006D><U0061><U0072><U0064><U0069>";/ ++ "<U006D><U0065><U0072><U0063><U0072><U0065><U0064><U0069>";/ ++ "<U006A><U0065><U0075><U0064><U0069>";/ ++ "<U0076><U0065><U006E><U0064><U0072><U0065><U0064><U0069>";/ ++ "<U0073><U0061><U006D><U0065><U0064><U0069>" + abmon "<U006A><U0061><U006E>";"<U0066><U00E9><U0076>";/ +- "<U006D><U0061><U0072>";"<U0061><U0076><U0072>";/ +- "<U006D><U0061><U0069>";"<U006A><U0075><U006E>";/ +- "<U006A><U0075><U0069>";"<U0061><U006F><U00FB>";/ +- "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ +- "<U006E><U006F><U0076>";"<U0064><U00E9><U0063>" ++ "<U006D><U0061><U0072>";"<U0061><U0076><U0072>";/ ++ "<U006D><U0061><U0069>";"<U006A><U0075><U006E>";/ ++ "<U006A><U0075><U0069>";"<U0061><U006F><U00FB>";/ ++ "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ ++ "<U006E><U006F><U0076>";"<U0064><U00E9><U0063>" + mon "<U006A><U0061><U006E><U0076><U0069><U0065><U0072>";/ +- "<U0066><U00E9><U0076><U0072><U0069><U0065><U0072>";/ +- "<U006D><U0061><U0072><U0073>";/ +- "<U0061><U0076><U0072><U0069><U006C>";/ +- "<U006D><U0061><U0069>";/ +- "<U006A><U0075><U0069><U006E>";/ +- "<U006A><U0075><U0069><U006C><U006C><U0065><U0074>";/ +- "<U0061><U006F><U00FB><U0074>";/ +- "<U0073><U0065><U0070><U0074><U0065><U006D><U0062><U0072><U0065>";/ +- "<U006F><U0063><U0074><U006F><U0062><U0072><U0065>";/ +- "<U006E><U006F><U0076><U0065><U006D><U0062><U0072><U0065>";/ +- "<U0064><U00E9><U0063><U0065><U006D><U0062><U0072><U0065>" ++ "<U0066><U00E9><U0076><U0072><U0069><U0065><U0072>";/ ++ "<U006D><U0061><U0072><U0073>";/ ++ "<U0061><U0076><U0072><U0069><U006C>";/ ++ "<U006D><U0061><U0069>";/ ++ "<U006A><U0075><U0069><U006E>";/ ++ "<U006A><U0075><U0069><U006C><U006C><U0065><U0074>";/ ++ "<U0061><U006F><U00FB><U0074>";/ ++ "<U0073><U0065><U0070><U0074><U0065><U006D><U0062><U0072><U0065>";/ ++ "<U006F><U0063><U0074><U006F><U0062><U0072><U0065>";/ ++ "<U006E><U006F><U0076><U0065><U006D><U0062><U0072><U0065>";/ ++ "<U0064><U00E9><U0063><U0065><U006D><U0062><U0072><U0065>" + d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" + d_fmt "<U0025><U0064><U002E><U0025><U006D><U002E><U0025><U0059>" + t_fmt "<U0025><U0054>" diff --git a/src/patches/glibc/glibc-rh688980.patch b/src/patches/glibc/glibc-rh688980.patch new file mode 100644 index 0000000..ce98926 --- /dev/null +++ b/src/patches/glibc/glibc-rh688980.patch @@ -0,0 +1,20 @@ +2011-05-11 Ulrich Drepper drepper@gmail.com + + [BZ #12625] + * misc/mntent_r.c (addmntent): Flush the stream after the output + +Index: glibc-2.12-2-gc4ccff1/misc/mntent_r.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/misc/mntent_r.c ++++ glibc-2.12-2-gc4ccff1/misc/mntent_r.c +@@ -263,8 +263,8 @@ __addmntent (FILE *stream, const struct + mntcopy.mnt_type, + mntcopy.mnt_opts, + mntcopy.mnt_freq, +- mntcopy.mnt_passno) +- < 0 ? 1 : 0); ++ mntcopy.mnt_passno) < 0 ++ || fflush (stream) != 0); + } + weak_alias (__addmntent, addmntent) + diff --git a/src/patches/glibc/glibc-rh689471.patch b/src/patches/glibc/glibc-rh689471.patch new file mode 100644 index 0000000..4c7fc8a --- /dev/null +++ b/src/patches/glibc/glibc-rh689471.patch @@ -0,0 +1,333 @@ +2011-03-20 H.J. Lu hongjiu.lu@intel.com + + [BZ #12597] + * string/test-strncmp.c (do_page_test): New function. + (check2): Likewise. + (test_main): Call check2. + * sysdeps/x86_64/multiarch/strcmp.S: Properly cross page boundary. + +Index: glibc-2.12-2-gc4ccff1/string/test-strncmp.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/string/test-strncmp.c ++++ glibc-2.12-2-gc4ccff1/string/test-strncmp.c +@@ -200,6 +200,27 @@ do_test (size_t align1, size_t align2, s + } + + static void ++do_page_test (size_t offset1, size_t offset2, char *s2) ++{ ++ char *s1; ++ int exp_result; ++ ++ if (offset1 >= page_size || offset2 >= page_size) ++ return; ++ ++ s1 = (char *) (buf1 + offset1); ++ s2 += offset2; ++ ++ exp_result= *s1; ++ ++ FOR_EACH_IMPL (impl, 0) ++ { ++ check_result (impl, s1, s2, page_size, -exp_result); ++ check_result (impl, s2, s1, page_size, exp_result); ++ } ++} ++ ++static void + do_random_tests (void) + { + size_t i, j, n, align1, align2, pos, len1, len2, size; +@@ -312,6 +333,25 @@ check1 (void) + } + } + ++static void ++check2 (void) ++{ ++ size_t i; ++ char *s1, *s2; ++ ++ s1 = (char *) buf1; ++ for (i = 0; i < page_size - 1; i++) ++ s1[i] = 23; ++ s1[i] = 0; ++ ++ s2 = strdup (s1); ++ ++ for (i = 0; i < 64; ++i) ++ do_page_test (3990 + i, 2635, s2); ++ ++ free (s2); ++} ++ + int + test_main (void) + { +@@ -320,6 +360,7 @@ test_main (void) + test_init (); + + check1 (); ++ check2 (); + + printf ("%23s", ""); + FOR_EACH_IMPL (impl, 0) +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcmp.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/strcmp.S ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcmp.S +@@ -452,6 +452,7 @@ LABEL(loop_ashr_1_use_sse4_2): + add $16, %r10 + jg LABEL(nibble_ashr_1_use_sse4_2) + ++LABEL(nibble_ashr_1_use_sse4_2_restart): + movdqa (%rdi, %rdx), %xmm0 + palignr $1, -16(%rdi, %rdx), %xmm0 + # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L +@@ -499,7 +500,7 @@ LABEL(nibble_ashr_1_use_sse4_2): + jae LABEL(nibble_ashr_use_sse4_2_exit) + # endif + cmp $14, %ecx +- ja LABEL(loop_ashr_1_use_sse4_2) ++ ja LABEL(nibble_ashr_1_use_sse4_2_restart) + + jmp LABEL(nibble_ashr_use_sse4_2_exit) + +@@ -544,6 +545,7 @@ LABEL(loop_ashr_2_use_sse4_2): + add $16, %r10 + jg LABEL(nibble_ashr_2_use_sse4_2) + ++LABEL(nibble_ashr_2_use_sse4_2_restart): + movdqa (%rdi, %rdx), %xmm0 + palignr $2, -16(%rdi, %rdx), %xmm0 + # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L +@@ -591,7 +593,7 @@ LABEL(nibble_ashr_2_use_sse4_2): + jae LABEL(nibble_ashr_use_sse4_2_exit) + # endif + cmp $13, %ecx +- ja LABEL(loop_ashr_2_use_sse4_2) ++ ja LABEL(nibble_ashr_2_use_sse4_2_restart) + + jmp LABEL(nibble_ashr_use_sse4_2_exit) + +@@ -636,6 +638,7 @@ LABEL(loop_ashr_3_use_sse4_2): + add $16, %r10 + jg LABEL(nibble_ashr_3_use_sse4_2) + ++LABEL(nibble_ashr_3_use_sse4_2_restart): + movdqa (%rdi, %rdx), %xmm0 + palignr $3, -16(%rdi, %rdx), %xmm0 + # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L +@@ -683,7 +686,7 @@ LABEL(nibble_ashr_3_use_sse4_2): + jae LABEL(nibble_ashr_use_sse4_2_exit) + # endif + cmp $12, %ecx +- ja LABEL(loop_ashr_3_use_sse4_2) ++ ja LABEL(nibble_ashr_3_use_sse4_2_restart) + + jmp LABEL(nibble_ashr_use_sse4_2_exit) + +@@ -729,6 +732,7 @@ LABEL(loop_ashr_4_use_sse4_2): + add $16, %r10 + jg LABEL(nibble_ashr_4_use_sse4_2) + ++LABEL(nibble_ashr_4_use_sse4_2_restart): + movdqa (%rdi, %rdx), %xmm0 + palignr $4, -16(%rdi, %rdx), %xmm0 + # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L +@@ -776,7 +780,7 @@ LABEL(nibble_ashr_4_use_sse4_2): + jae LABEL(nibble_ashr_use_sse4_2_exit) + # endif + cmp $11, %ecx +- ja LABEL(loop_ashr_4_use_sse4_2) ++ ja LABEL(nibble_ashr_4_use_sse4_2_restart) + + jmp LABEL(nibble_ashr_use_sse4_2_exit) + +@@ -822,6 +826,7 @@ LABEL(loop_ashr_5_use_sse4_2): + add $16, %r10 + jg LABEL(nibble_ashr_5_use_sse4_2) + ++LABEL(nibble_ashr_5_use_sse4_2_restart): + movdqa (%rdi, %rdx), %xmm0 + palignr $5, -16(%rdi, %rdx), %xmm0 + # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L +@@ -870,7 +875,7 @@ LABEL(nibble_ashr_5_use_sse4_2): + jae LABEL(nibble_ashr_use_sse4_2_exit) + # endif + cmp $10, %ecx +- ja LABEL(loop_ashr_5_use_sse4_2) ++ ja LABEL(nibble_ashr_5_use_sse4_2_restart) + + jmp LABEL(nibble_ashr_use_sse4_2_exit) + +@@ -916,6 +921,7 @@ LABEL(loop_ashr_6_use_sse4_2): + add $16, %r10 + jg LABEL(nibble_ashr_6_use_sse4_2) + ++LABEL(nibble_ashr_6_use_sse4_2_restart): + movdqa (%rdi, %rdx), %xmm0 + palignr $6, -16(%rdi, %rdx), %xmm0 + # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L +@@ -963,7 +969,7 @@ LABEL(nibble_ashr_6_use_sse4_2): + jae LABEL(nibble_ashr_use_sse4_2_exit) + # endif + cmp $9, %ecx +- ja LABEL(loop_ashr_6_use_sse4_2) ++ ja LABEL(nibble_ashr_6_use_sse4_2_restart) + + jmp LABEL(nibble_ashr_use_sse4_2_exit) + +@@ -1009,6 +1015,7 @@ LABEL(loop_ashr_7_use_sse4_2): + add $16, %r10 + jg LABEL(nibble_ashr_7_use_sse4_2) + ++LABEL(nibble_ashr_7_use_sse4_2_restart): + movdqa (%rdi, %rdx), %xmm0 + palignr $7, -16(%rdi, %rdx), %xmm0 + # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L +@@ -1056,7 +1063,7 @@ LABEL(nibble_ashr_7_use_sse4_2): + jae LABEL(nibble_ashr_use_sse4_2_exit) + # endif + cmp $8, %ecx +- ja LABEL(loop_ashr_7_use_sse4_2) ++ ja LABEL(nibble_ashr_7_use_sse4_2_restart) + + jmp LABEL(nibble_ashr_use_sse4_2_exit) + +@@ -1102,6 +1109,7 @@ LABEL(loop_ashr_8_use_sse4_2): + add $16, %r10 + jg LABEL(nibble_ashr_8_use_sse4_2) + ++LABEL(nibble_ashr_8_use_sse4_2_restart): + movdqa (%rdi, %rdx), %xmm0 + palignr $8, -16(%rdi, %rdx), %xmm0 + # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L +@@ -1149,7 +1157,7 @@ LABEL(nibble_ashr_8_use_sse4_2): + jae LABEL(nibble_ashr_use_sse4_2_exit) + # endif + cmp $7, %ecx +- ja LABEL(loop_ashr_8_use_sse4_2) ++ ja LABEL(nibble_ashr_8_use_sse4_2_restart) + + jmp LABEL(nibble_ashr_use_sse4_2_exit) + +@@ -1195,6 +1203,7 @@ LABEL(loop_ashr_9_use_sse4_2): + add $16, %r10 + jg LABEL(nibble_ashr_9_use_sse4_2) + ++LABEL(nibble_ashr_9_use_sse4_2_restart): + movdqa (%rdi, %rdx), %xmm0 + + palignr $9, -16(%rdi, %rdx), %xmm0 +@@ -1243,7 +1252,7 @@ LABEL(nibble_ashr_9_use_sse4_2): + jae LABEL(nibble_ashr_use_sse4_2_exit) + # endif + cmp $6, %ecx +- ja LABEL(loop_ashr_9_use_sse4_2) ++ ja LABEL(nibble_ashr_9_use_sse4_2_restart) + + jmp LABEL(nibble_ashr_use_sse4_2_exit) + +@@ -1289,6 +1298,7 @@ LABEL(loop_ashr_10_use_sse4_2): + add $16, %r10 + jg LABEL(nibble_ashr_10_use_sse4_2) + ++LABEL(nibble_ashr_10_use_sse4_2_restart): + movdqa (%rdi, %rdx), %xmm0 + palignr $10, -16(%rdi, %rdx), %xmm0 + # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L +@@ -1336,7 +1346,7 @@ LABEL(nibble_ashr_10_use_sse4_2): + jae LABEL(nibble_ashr_use_sse4_2_exit) + # endif + cmp $5, %ecx +- ja LABEL(loop_ashr_10_use_sse4_2) ++ ja LABEL(nibble_ashr_10_use_sse4_2_restart) + + jmp LABEL(nibble_ashr_use_sse4_2_exit) + +@@ -1382,6 +1392,7 @@ LABEL(loop_ashr_11_use_sse4_2): + add $16, %r10 + jg LABEL(nibble_ashr_11_use_sse4_2) + ++LABEL(nibble_ashr_11_use_sse4_2_restart): + movdqa (%rdi, %rdx), %xmm0 + palignr $11, -16(%rdi, %rdx), %xmm0 + # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L +@@ -1429,7 +1440,7 @@ LABEL(nibble_ashr_11_use_sse4_2): + jae LABEL(nibble_ashr_use_sse4_2_exit) + # endif + cmp $4, %ecx +- ja LABEL(loop_ashr_11_use_sse4_2) ++ ja LABEL(nibble_ashr_11_use_sse4_2_restart) + + jmp LABEL(nibble_ashr_use_sse4_2_exit) + +@@ -1475,6 +1486,7 @@ LABEL(loop_ashr_12_use_sse4_2): + add $16, %r10 + jg LABEL(nibble_ashr_12_use_sse4_2) + ++LABEL(nibble_ashr_12_use_sse4_2_restart): + movdqa (%rdi, %rdx), %xmm0 + palignr $12, -16(%rdi, %rdx), %xmm0 + # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L +@@ -1522,7 +1534,7 @@ LABEL(nibble_ashr_12_use_sse4_2): + jae LABEL(nibble_ashr_use_sse4_2_exit) + # endif + cmp $3, %ecx +- ja LABEL(loop_ashr_12_use_sse4_2) ++ ja LABEL(nibble_ashr_12_use_sse4_2_restart) + + jmp LABEL(nibble_ashr_use_sse4_2_exit) + +@@ -1569,6 +1581,7 @@ LABEL(loop_ashr_13_use_sse4_2): + add $16, %r10 + jg LABEL(nibble_ashr_13_use_sse4_2) + ++LABEL(nibble_ashr_13_use_sse4_2_restart): + movdqa (%rdi, %rdx), %xmm0 + palignr $13, -16(%rdi, %rdx), %xmm0 + # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L +@@ -1616,7 +1629,7 @@ LABEL(nibble_ashr_13_use_sse4_2): + jae LABEL(nibble_ashr_use_sse4_2_exit) + # endif + cmp $2, %ecx +- ja LABEL(loop_ashr_13_use_sse4_2) ++ ja LABEL(nibble_ashr_13_use_sse4_2_restart) + + jmp LABEL(nibble_ashr_use_sse4_2_exit) + +@@ -1663,6 +1676,7 @@ LABEL(loop_ashr_14_use_sse4_2): + add $16, %r10 + jg LABEL(nibble_ashr_14_use_sse4_2) + ++LABEL(nibble_ashr_14_use_sse4_2_restart): + movdqa (%rdi, %rdx), %xmm0 + palignr $14, -16(%rdi, %rdx), %xmm0 + # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L +@@ -1710,7 +1724,7 @@ LABEL(nibble_ashr_14_use_sse4_2): + jae LABEL(nibble_ashr_use_sse4_2_exit) + # endif + cmp $1, %ecx +- ja LABEL(loop_ashr_14_use_sse4_2) ++ ja LABEL(nibble_ashr_14_use_sse4_2_restart) + + jmp LABEL(nibble_ashr_use_sse4_2_exit) + +@@ -1759,6 +1773,7 @@ LABEL(loop_ashr_15_use_sse4_2): + add $16, %r10 + jg LABEL(nibble_ashr_15_use_sse4_2) + ++LABEL(nibble_ashr_15_use_sse4_2_restart): + movdqa (%rdi, %rdx), %xmm0 + palignr $15, -16(%rdi, %rdx), %xmm0 + # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L +@@ -1806,7 +1821,7 @@ LABEL(nibble_ashr_15_use_sse4_2): + jae LABEL(nibble_ashr_use_sse4_2_exit) + # endif + cmp $0, %ecx +- ja LABEL(loop_ashr_15_use_sse4_2) ++ ja LABEL(nibble_ashr_15_use_sse4_2_restart) + + LABEL(nibble_ashr_use_sse4_2_exit): + # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L diff --git a/src/patches/glibc/glibc-rh692177.patch b/src/patches/glibc/glibc-rh692177.patch new file mode 100644 index 0000000..1036769 --- /dev/null +++ b/src/patches/glibc/glibc-rh692177.patch @@ -0,0 +1,137 @@ +2011-03-22 Ulrich Drepper drepper@gmail.com + + * sysdeps/unix/sysv/linux/i386/sysconf.c (intel_check_word): Increment + round counter. + * sysdeps/x86_64/cacheinfo.c (intel_check_word): Likewise. + +2011-03-20 Ulrich Drepper drepper@gmail.com + + [BZ #12587] + * sysdeps/unix/sysv/linux/i386/sysconf.c (intel_check_word): + Handle cache information in CPU leaf 4. + * sysdeps/x86_64/cacheinfo.c (intel_check_word): Likewise. + +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/i386/sysconf.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/i386/sysconf.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/i386/sysconf.c +@@ -186,6 +186,57 @@ intel_check_word (int name, unsigned int + /* No need to look further. */ + break; + } ++ else if (byte == 0xff) ++ { ++ /* CPUID leaf 0x4 contains all the information. We need to ++ iterate over it. */ ++ unsigned int eax; ++ unsigned int ebx; ++ unsigned int ecx; ++ unsigned int edx; ++ ++ unsigned int round = 0; ++ while (1) ++ { ++ asm volatile ("xchgl %%ebx, %1; cpuid; xchgl %%ebx, %1" ++ : "=a" (eax), "=r" (ebx), "=c" (ecx), "=d" (edx) ++ : "0" (4), "2" (round)); ++ ++ enum { null = 0, data = 1, inst = 2, uni = 3 } type = eax & 0x1f; ++ if (type == null) ++ /* That was the end. */ ++ break; ++ ++ unsigned int level = (eax >> 5) & 0x7; ++ ++ if ((level == 1 && type == data ++ && folded_rel_name == M(_SC_LEVEL1_DCACHE_SIZE)) ++ || (level == 1 && type == inst ++ && folded_rel_name == M(_SC_LEVEL1_ICACHE_SIZE)) ++ || (level == 2 && folded_rel_name == M(_SC_LEVEL2_CACHE_SIZE)) ++ || (level == 3 && folded_rel_name == M(_SC_LEVEL3_CACHE_SIZE)) ++ || (level == 4 && folded_rel_name == M(_SC_LEVEL4_CACHE_SIZE))) ++ { ++ unsigned int offset = M(name) - folded_rel_name; ++ ++ if (offset == 0) ++ /* Cache size. */ ++ return (((ebx >> 22) + 1) ++ * (((ebx >> 12) & 0x3ff) + 1) ++ * ((ebx & 0xfff) + 1) ++ * (ecx + 1)); ++ if (offset == 1) ++ return (ebx >> 22) + 1; ++ ++ assert (offset == 2); ++ return (ebx & 0xfff) + 1; ++ } ++ ++ ++round; ++ } ++ /* There is no other cache information anywhere else. */ ++ break; ++ } + else + { + if (byte == 0x49 && folded_rel_name == M(_SC_LEVEL3_CACHE_SIZE)) +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/cacheinfo.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/cacheinfo.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/cacheinfo.c +@@ -181,6 +181,57 @@ intel_check_word (int name, unsigned int + /* No need to look further. */ + break; + } ++ else if (byte == 0xff) ++ { ++ /* CPUID leaf 0x4 contains all the information. We need to ++ iterate over it. */ ++ unsigned int eax; ++ unsigned int ebx; ++ unsigned int ecx; ++ unsigned int edx; ++ ++ unsigned int round = 0; ++ while (1) ++ { ++ asm volatile ("xchgl %%ebx, %1; cpuid; xchgl %%ebx, %1" ++ : "=a" (eax), "=r" (ebx), "=c" (ecx), "=d" (edx) ++ : "0" (4), "2" (round)); ++ ++ enum { null = 0, data = 1, inst = 2, uni = 3 } type = eax & 0x1f; ++ if (type == null) ++ /* That was the end. */ ++ break; ++ ++ unsigned int level = (eax >> 5) & 0x7; ++ ++ if ((level == 1 && type == data ++ && folded_rel_name == M(_SC_LEVEL1_DCACHE_SIZE)) ++ || (level == 1 && type == inst ++ && folded_rel_name == M(_SC_LEVEL1_ICACHE_SIZE)) ++ || (level == 2 && folded_rel_name == M(_SC_LEVEL2_CACHE_SIZE)) ++ || (level == 3 && folded_rel_name == M(_SC_LEVEL3_CACHE_SIZE)) ++ || (level == 4 && folded_rel_name == M(_SC_LEVEL4_CACHE_SIZE))) ++ { ++ unsigned int offset = M(name) - folded_rel_name; ++ ++ if (offset == 0) ++ /* Cache size. */ ++ return (((ebx >> 22) + 1) ++ * (((ebx >> 12) & 0x3ff) + 1) ++ * ((ebx & 0xfff) + 1) ++ * (ecx + 1)); ++ if (offset == 1) ++ return (ebx >> 22) + 1; ++ ++ assert (offset == 2); ++ return (ebx & 0xfff) + 1; ++ } ++ ++ ++round; ++ } ++ /* There is no other cache information anywhere else. */ ++ break; ++ } + else + { + if (byte == 0x49 && folded_rel_name == M(_SC_LEVEL3_CACHE_SIZE)) diff --git a/src/patches/glibc/glibc-rh692838.patch b/src/patches/glibc/glibc-rh692838.patch new file mode 100644 index 0000000..aa2adf1 --- /dev/null +++ b/src/patches/glibc/glibc-rh692838.patch @@ -0,0 +1,6165 @@ +2011-05-09 Ulrich Drepper drepper@gmail.com + + [BZ #12541] + * locales/ar_IN: Update currency_symbol. + * locales/as_IN: Likewise. + * locales/bn_IN: Likewise. + * locales/en_IN: Likewise. + * locales/gu_IN: Likewise. + * locales/hi_IN: Likewise. + * locales/kn_IN: Likewise. + * locales/kok_IN: Likewise. + * locales/ks_IN: Likewise. + * locales/ml_IN: Likewise. + * locales/mr_IN: Likewise. + * locales/or_IN: Likewise. + * locales/pa_IN: Likewise. + * locales/sa_IN: Likewise. + * locales/sd_IN: Likewise. + * locales/ta_IN: Likewise. + * locales/te_IN: Likewise. + Patch by pravin.d.s@gmail.com. + +2011-05-09 Ulrich Drepper drepper@gmail.com + + [BZ #12711] + * locale/C-translit.h.in: Add entry for U20B9. + Patch by pravin.d.s@gmail.com. + +Index: glibc-2.12-2-gc4ccff1/locale/C-translit.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/locale/C-translit.h ++++ glibc-2.12-2-gc4ccff1/locale/C-translit.h +@@ -1,4 +1,4 @@ +-#define NTRANSLIT 1353 ++#define NTRANSLIT 1354 + static const uint32_t translit_from_idx[] = + { + 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, +@@ -113,7 +113,7 @@ static const uint32_t translit_from_idx[ + 2616, 2618, 2620, 2622, 2624, 2626, 2628, 2630, 2632, 2634, 2636, 2638, + 2640, 2642, 2644, 2646, 2648, 2650, 2652, 2654, 2656, 2658, 2660, 2662, + 2664, 2666, 2668, 2670, 2672, 2674, 2676, 2678, 2680, 2682, 2684, 2686, +- 2688, 2690, 2692, 2694, 2696, 2698, 2700, 2702, 2704 ++ 2688, 2690, 2692, 2694, 2696, 2698, 2700, 2702, 2704, 2706 + }; + static const wchar_t translit_from_tbl[] = + L"\x00a0" L"\0" L"\x00a9" L"\0" L"\x00ab" L"\0" L"\x00ad" L"\0" L"\x00ae" +@@ -134,334 +134,334 @@ static const wchar_t translit_from_tbl[] + L"\0" L"\x2035" L"\0" L"\x2036" L"\0" L"\x2037" L"\0" L"\x2039" L"\0" + L"\x203a" L"\0" L"\x203c" L"\0" L"\x2044" L"\0" L"\x2047" L"\0" L"\x2048" + L"\0" L"\x2049" L"\0" L"\x205f" L"\0" L"\x2060" L"\0" L"\x2061" L"\0" +- L"\x2062" L"\0" L"\x2063" L"\0" L"\x20a8" L"\0" L"\x20ac" L"\0" L"\x2100" +- L"\0" L"\x2101" L"\0" L"\x2102" L"\0" L"\x2105" L"\0" L"\x2106" L"\0" +- L"\x210a" L"\0" L"\x210b" L"\0" L"\x210c" L"\0" L"\x210d" L"\0" L"\x210e" +- L"\0" L"\x2110" L"\0" L"\x2111" L"\0" L"\x2112" L"\0" L"\x2113" L"\0" +- L"\x2115" L"\0" L"\x2116" L"\0" L"\x2119" L"\0" L"\x211a" L"\0" L"\x211b" +- L"\0" L"\x211c" L"\0" L"\x211d" L"\0" L"\x2121" L"\0" L"\x2122" L"\0" +- L"\x2124" L"\0" L"\x2126" L"\0" L"\x2128" L"\0" L"\x212c" L"\0" L"\x212d" +- L"\0" L"\x212e" L"\0" L"\x212f" L"\0" L"\x2130" L"\0" L"\x2131" L"\0" +- L"\x2133" L"\0" L"\x2134" L"\0" L"\x2139" L"\0" L"\x2145" L"\0" L"\x2146" +- L"\0" L"\x2147" L"\0" L"\x2148" L"\0" L"\x2149" L"\0" L"\x2153" L"\0" +- L"\x2154" L"\0" L"\x2155" L"\0" L"\x2156" L"\0" L"\x2157" L"\0" L"\x2158" +- L"\0" L"\x2159" L"\0" L"\x215a" L"\0" L"\x215b" L"\0" L"\x215c" L"\0" +- L"\x215d" L"\0" L"\x215e" L"\0" L"\x215f" L"\0" L"\x2160" L"\0" L"\x2161" +- L"\0" L"\x2162" L"\0" L"\x2163" L"\0" L"\x2164" L"\0" L"\x2165" L"\0" +- L"\x2166" L"\0" L"\x2167" L"\0" L"\x2168" L"\0" L"\x2169" L"\0" L"\x216a" +- L"\0" L"\x216b" L"\0" L"\x216c" L"\0" L"\x216d" L"\0" L"\x216e" L"\0" +- L"\x216f" L"\0" L"\x2170" L"\0" L"\x2171" L"\0" L"\x2172" L"\0" L"\x2173" +- L"\0" L"\x2174" L"\0" L"\x2175" L"\0" L"\x2176" L"\0" L"\x2177" L"\0" +- L"\x2178" L"\0" L"\x2179" L"\0" L"\x217a" L"\0" L"\x217b" L"\0" L"\x217c" +- L"\0" L"\x217d" L"\0" L"\x217e" L"\0" L"\x217f" L"\0" L"\x2190" L"\0" +- L"\x2192" L"\0" L"\x2194" L"\0" L"\x21d0" L"\0" L"\x21d2" L"\0" L"\x21d4" +- L"\0" L"\x2212" L"\0" L"\x2215" L"\0" L"\x2216" L"\0" L"\x2217" L"\0" +- L"\x2223" L"\0" L"\x2236" L"\0" L"\x223c" L"\0" L"\x2264" L"\0" L"\x2265" +- L"\0" L"\x226a" L"\0" L"\x226b" L"\0" L"\x22d8" L"\0" L"\x22d9" L"\0" +- L"\x2400" L"\0" L"\x2401" L"\0" L"\x2402" L"\0" L"\x2403" L"\0" L"\x2404" +- L"\0" L"\x2405" L"\0" L"\x2406" L"\0" L"\x2407" L"\0" L"\x2408" L"\0" +- L"\x2409" L"\0" L"\x240a" L"\0" L"\x240b" L"\0" L"\x240c" L"\0" L"\x240d" +- L"\0" L"\x240e" L"\0" L"\x240f" L"\0" L"\x2410" L"\0" L"\x2411" L"\0" +- L"\x2412" L"\0" L"\x2413" L"\0" L"\x2414" L"\0" L"\x2415" L"\0" L"\x2416" +- L"\0" L"\x2417" L"\0" L"\x2418" L"\0" L"\x2419" L"\0" L"\x241a" L"\0" +- L"\x241b" L"\0" L"\x241c" L"\0" L"\x241d" L"\0" L"\x241e" L"\0" L"\x241f" +- L"\0" L"\x2420" L"\0" L"\x2421" L"\0" L"\x2423" L"\0" L"\x2424" L"\0" +- L"\x2460" L"\0" L"\x2461" L"\0" L"\x2462" L"\0" L"\x2463" L"\0" L"\x2464" +- L"\0" L"\x2465" L"\0" L"\x2466" L"\0" L"\x2467" L"\0" L"\x2468" L"\0" +- L"\x2469" L"\0" L"\x246a" L"\0" L"\x246b" L"\0" L"\x246c" L"\0" L"\x246d" +- L"\0" L"\x246e" L"\0" L"\x246f" L"\0" L"\x2470" L"\0" L"\x2471" L"\0" +- L"\x2472" L"\0" L"\x2473" L"\0" L"\x2474" L"\0" L"\x2475" L"\0" L"\x2476" +- L"\0" L"\x2477" L"\0" L"\x2478" L"\0" L"\x2479" L"\0" L"\x247a" L"\0" +- L"\x247b" L"\0" L"\x247c" L"\0" L"\x247d" L"\0" L"\x247e" L"\0" L"\x247f" +- L"\0" L"\x2480" L"\0" L"\x2481" L"\0" L"\x2482" L"\0" L"\x2483" L"\0" +- L"\x2484" L"\0" L"\x2485" L"\0" L"\x2486" L"\0" L"\x2487" L"\0" L"\x2488" +- L"\0" L"\x2489" L"\0" L"\x248a" L"\0" L"\x248b" L"\0" L"\x248c" L"\0" +- L"\x248d" L"\0" L"\x248e" L"\0" L"\x248f" L"\0" L"\x2490" L"\0" L"\x2491" +- L"\0" L"\x2492" L"\0" L"\x2493" L"\0" L"\x2494" L"\0" L"\x2495" L"\0" +- L"\x2496" L"\0" L"\x2497" L"\0" L"\x2498" L"\0" L"\x2499" L"\0" L"\x249a" +- L"\0" L"\x249b" L"\0" L"\x249c" L"\0" L"\x249d" L"\0" L"\x249e" L"\0" +- L"\x249f" L"\0" L"\x24a0" L"\0" L"\x24a1" L"\0" L"\x24a2" L"\0" L"\x24a3" +- L"\0" L"\x24a4" L"\0" L"\x24a5" L"\0" L"\x24a6" L"\0" L"\x24a7" L"\0" +- L"\x24a8" L"\0" L"\x24a9" L"\0" L"\x24aa" L"\0" L"\x24ab" L"\0" L"\x24ac" +- L"\0" L"\x24ad" L"\0" L"\x24ae" L"\0" L"\x24af" L"\0" L"\x24b0" L"\0" +- L"\x24b1" L"\0" L"\x24b2" L"\0" L"\x24b3" L"\0" L"\x24b4" L"\0" L"\x24b5" +- L"\0" L"\x24b6" L"\0" L"\x24b7" L"\0" L"\x24b8" L"\0" L"\x24b9" L"\0" +- L"\x24ba" L"\0" L"\x24bb" L"\0" L"\x24bc" L"\0" L"\x24bd" L"\0" L"\x24be" +- L"\0" L"\x24bf" L"\0" L"\x24c0" L"\0" L"\x24c1" L"\0" L"\x24c2" L"\0" +- L"\x24c3" L"\0" L"\x24c4" L"\0" L"\x24c5" L"\0" L"\x24c6" L"\0" L"\x24c7" +- L"\0" L"\x24c8" L"\0" L"\x24c9" L"\0" L"\x24ca" L"\0" L"\x24cb" L"\0" +- L"\x24cc" L"\0" L"\x24cd" L"\0" L"\x24ce" L"\0" L"\x24cf" L"\0" L"\x24d0" +- L"\0" L"\x24d1" L"\0" L"\x24d2" L"\0" L"\x24d3" L"\0" L"\x24d4" L"\0" +- L"\x24d5" L"\0" L"\x24d6" L"\0" L"\x24d7" L"\0" L"\x24d8" L"\0" L"\x24d9" +- L"\0" L"\x24da" L"\0" L"\x24db" L"\0" L"\x24dc" L"\0" L"\x24dd" L"\0" +- L"\x24de" L"\0" L"\x24df" L"\0" L"\x24e0" L"\0" L"\x24e1" L"\0" L"\x24e2" +- L"\0" L"\x24e3" L"\0" L"\x24e4" L"\0" L"\x24e5" L"\0" L"\x24e6" L"\0" +- L"\x24e7" L"\0" L"\x24e8" L"\0" L"\x24e9" L"\0" L"\x24ea" L"\0" L"\x2500" +- L"\0" L"\x2502" L"\0" L"\x250c" L"\0" L"\x2510" L"\0" L"\x2514" L"\0" +- L"\x2518" L"\0" L"\x251c" L"\0" L"\x2524" L"\0" L"\x252c" L"\0" L"\x2534" +- L"\0" L"\x253c" L"\0" L"\x25e6" L"\0" L"\x2a74" L"\0" L"\x2a75" L"\0" +- L"\x2a76" L"\0" L"\x3000" L"\0" L"\x30a0" L"\0" L"\x3251" L"\0" L"\x3252" +- L"\0" L"\x3253" L"\0" L"\x3254" L"\0" L"\x3255" L"\0" L"\x3256" L"\0" +- L"\x3257" L"\0" L"\x3258" L"\0" L"\x3259" L"\0" L"\x325a" L"\0" L"\x325b" +- L"\0" L"\x325c" L"\0" L"\x325d" L"\0" L"\x325e" L"\0" L"\x325f" L"\0" +- L"\x32b1" L"\0" L"\x32b2" L"\0" L"\x32b3" L"\0" L"\x32b4" L"\0" L"\x32b5" +- L"\0" L"\x32b6" L"\0" L"\x32b7" L"\0" L"\x32b8" L"\0" L"\x32b9" L"\0" +- L"\x32ba" L"\0" L"\x32bb" L"\0" L"\x32bc" L"\0" L"\x32bd" L"\0" L"\x32be" +- L"\0" L"\x32bf" L"\0" L"\x3371" L"\0" L"\x3372" L"\0" L"\x3373" L"\0" +- L"\x3374" L"\0" L"\x3375" L"\0" L"\x3376" L"\0" L"\x3380" L"\0" L"\x3381" +- L"\0" L"\x3382" L"\0" L"\x3383" L"\0" L"\x3384" L"\0" L"\x3385" L"\0" +- L"\x3386" L"\0" L"\x3387" L"\0" L"\x3388" L"\0" L"\x3389" L"\0" L"\x338a" +- L"\0" L"\x338b" L"\0" L"\x338c" L"\0" L"\x338d" L"\0" L"\x338e" L"\0" +- L"\x338f" L"\0" L"\x3390" L"\0" L"\x3391" L"\0" L"\x3392" L"\0" L"\x3393" +- L"\0" L"\x3394" L"\0" L"\x3395" L"\0" L"\x3396" L"\0" L"\x3397" L"\0" +- L"\x3398" L"\0" L"\x3399" L"\0" L"\x339a" L"\0" L"\x339b" L"\0" L"\x339c" +- L"\0" L"\x339d" L"\0" L"\x339e" L"\0" L"\x339f" L"\0" L"\x33a0" L"\0" +- L"\x33a1" L"\0" L"\x33a2" L"\0" L"\x33a3" L"\0" L"\x33a4" L"\0" L"\x33a5" +- L"\0" L"\x33a6" L"\0" L"\x33a7" L"\0" L"\x33a8" L"\0" L"\x33a9" L"\0" +- L"\x33aa" L"\0" L"\x33ab" L"\0" L"\x33ac" L"\0" L"\x33ad" L"\0" L"\x33ae" +- L"\0" L"\x33af" L"\0" L"\x33b0" L"\0" L"\x33b1" L"\0" L"\x33b2" L"\0" +- L"\x33b3" L"\0" L"\x33b4" L"\0" L"\x33b5" L"\0" L"\x33b6" L"\0" L"\x33b7" +- L"\0" L"\x33b8" L"\0" L"\x33b9" L"\0" L"\x33ba" L"\0" L"\x33bb" L"\0" +- L"\x33bc" L"\0" L"\x33bd" L"\0" L"\x33be" L"\0" L"\x33bf" L"\0" L"\x33c2" +- L"\0" L"\x33c3" L"\0" L"\x33c4" L"\0" L"\x33c5" L"\0" L"\x33c6" L"\0" +- L"\x33c7" L"\0" L"\x33c8" L"\0" L"\x33c9" L"\0" L"\x33ca" L"\0" L"\x33cb" +- L"\0" L"\x33cc" L"\0" L"\x33cd" L"\0" L"\x33ce" L"\0" L"\x33cf" L"\0" +- L"\x33d0" L"\0" L"\x33d1" L"\0" L"\x33d2" L"\0" L"\x33d3" L"\0" L"\x33d4" +- L"\0" L"\x33d5" L"\0" L"\x33d6" L"\0" L"\x33d7" L"\0" L"\x33d8" L"\0" +- L"\x33d9" L"\0" L"\x33da" L"\0" L"\x33db" L"\0" L"\x33dc" L"\0" L"\x33dd" +- L"\0" L"\xfb00" L"\0" L"\xfb01" L"\0" L"\xfb02" L"\0" L"\xfb03" L"\0" +- L"\xfb04" L"\0" L"\xfb06" L"\0" L"\xfb29" L"\0" L"\xfe00" L"\0" L"\xfe01" +- L"\0" L"\xfe02" L"\0" L"\xfe03" L"\0" L"\xfe04" L"\0" L"\xfe05" L"\0" +- L"\xfe06" L"\0" L"\xfe07" L"\0" L"\xfe08" L"\0" L"\xfe09" L"\0" L"\xfe0a" +- L"\0" L"\xfe0b" L"\0" L"\xfe0c" L"\0" L"\xfe0d" L"\0" L"\xfe0e" L"\0" +- L"\xfe0f" L"\0" L"\xfe4d" L"\0" L"\xfe4e" L"\0" L"\xfe4f" L"\0" L"\xfe50" +- L"\0" L"\xfe52" L"\0" L"\xfe54" L"\0" L"\xfe55" L"\0" L"\xfe56" L"\0" +- L"\xfe57" L"\0" L"\xfe59" L"\0" L"\xfe5a" L"\0" L"\xfe5b" L"\0" L"\xfe5c" +- L"\0" L"\xfe5f" L"\0" L"\xfe60" L"\0" L"\xfe61" L"\0" L"\xfe62" L"\0" +- L"\xfe63" L"\0" L"\xfe64" L"\0" L"\xfe65" L"\0" L"\xfe66" L"\0" L"\xfe68" +- L"\0" L"\xfe69" L"\0" L"\xfe6a" L"\0" L"\xfe6b" L"\0" L"\xfeff" L"\0" +- L"\xff01" L"\0" L"\xff02" L"\0" L"\xff03" L"\0" L"\xff04" L"\0" L"\xff05" +- L"\0" L"\xff06" L"\0" L"\xff07" L"\0" L"\xff08" L"\0" L"\xff09" L"\0" +- L"\xff0a" L"\0" L"\xff0b" L"\0" L"\xff0c" L"\0" L"\xff0d" L"\0" L"\xff0e" +- L"\0" L"\xff0f" L"\0" L"\xff10" L"\0" L"\xff11" L"\0" L"\xff12" L"\0" +- L"\xff13" L"\0" L"\xff14" L"\0" L"\xff15" L"\0" L"\xff16" L"\0" L"\xff17" +- L"\0" L"\xff18" L"\0" L"\xff19" L"\0" L"\xff1a" L"\0" L"\xff1b" L"\0" +- L"\xff1c" L"\0" L"\xff1d" L"\0" L"\xff1e" L"\0" L"\xff1f" L"\0" L"\xff20" +- L"\0" L"\xff21" L"\0" L"\xff22" L"\0" L"\xff23" L"\0" L"\xff24" L"\0" +- L"\xff25" L"\0" L"\xff26" L"\0" L"\xff27" L"\0" L"\xff28" L"\0" L"\xff29" +- L"\0" L"\xff2a" L"\0" L"\xff2b" L"\0" L"\xff2c" L"\0" L"\xff2d" L"\0" +- L"\xff2e" L"\0" L"\xff2f" L"\0" L"\xff30" L"\0" L"\xff31" L"\0" L"\xff32" +- L"\0" L"\xff33" L"\0" L"\xff34" L"\0" L"\xff35" L"\0" L"\xff36" L"\0" +- L"\xff37" L"\0" L"\xff38" L"\0" L"\xff39" L"\0" L"\xff3a" L"\0" L"\xff3b" +- L"\0" L"\xff3c" L"\0" L"\xff3d" L"\0" L"\xff3e" L"\0" L"\xff3f" L"\0" +- L"\xff40" L"\0" L"\xff41" L"\0" L"\xff42" L"\0" L"\xff43" L"\0" L"\xff44" +- L"\0" L"\xff45" L"\0" L"\xff46" L"\0" L"\xff47" L"\0" L"\xff48" L"\0" +- L"\xff49" L"\0" L"\xff4a" L"\0" L"\xff4b" L"\0" L"\xff4c" L"\0" L"\xff4d" +- L"\0" L"\xff4e" L"\0" L"\xff4f" L"\0" L"\xff50" L"\0" L"\xff51" L"\0" +- L"\xff52" L"\0" L"\xff53" L"\0" L"\xff54" L"\0" L"\xff55" L"\0" L"\xff56" +- L"\0" L"\xff57" L"\0" L"\xff58" L"\0" L"\xff59" L"\0" L"\xff5a" L"\0" +- L"\xff5b" L"\0" L"\xff5c" L"\0" L"\xff5d" L"\0" L"\xff5e" L"\0" +- L"\x0001d400" L"\0" L"\x0001d401" L"\0" L"\x0001d402" L"\0" L"\x0001d403" +- L"\0" L"\x0001d404" L"\0" L"\x0001d405" L"\0" L"\x0001d406" L"\0" +- L"\x0001d407" L"\0" L"\x0001d408" L"\0" L"\x0001d409" L"\0" L"\x0001d40a" +- L"\0" L"\x0001d40b" L"\0" L"\x0001d40c" L"\0" L"\x0001d40d" L"\0" +- L"\x0001d40e" L"\0" L"\x0001d40f" L"\0" L"\x0001d410" L"\0" L"\x0001d411" +- L"\0" L"\x0001d412" L"\0" L"\x0001d413" L"\0" L"\x0001d414" L"\0" +- L"\x0001d415" L"\0" L"\x0001d416" L"\0" L"\x0001d417" L"\0" L"\x0001d418" +- L"\0" L"\x0001d419" L"\0" L"\x0001d41a" L"\0" L"\x0001d41b" L"\0" +- L"\x0001d41c" L"\0" L"\x0001d41d" L"\0" L"\x0001d41e" L"\0" L"\x0001d41f" +- L"\0" L"\x0001d420" L"\0" L"\x0001d421" L"\0" L"\x0001d422" L"\0" +- L"\x0001d423" L"\0" L"\x0001d424" L"\0" L"\x0001d425" L"\0" L"\x0001d426" +- L"\0" L"\x0001d427" L"\0" L"\x0001d428" L"\0" L"\x0001d429" L"\0" +- L"\x0001d42a" L"\0" L"\x0001d42b" L"\0" L"\x0001d42c" L"\0" L"\x0001d42d" +- L"\0" L"\x0001d42e" L"\0" L"\x0001d42f" L"\0" L"\x0001d430" L"\0" +- L"\x0001d431" L"\0" L"\x0001d432" L"\0" L"\x0001d433" L"\0" L"\x0001d434" +- L"\0" L"\x0001d435" L"\0" L"\x0001d436" L"\0" L"\x0001d437" L"\0" +- L"\x0001d438" L"\0" L"\x0001d439" L"\0" L"\x0001d43a" L"\0" L"\x0001d43b" +- L"\0" L"\x0001d43c" L"\0" L"\x0001d43d" L"\0" L"\x0001d43e" L"\0" +- L"\x0001d43f" L"\0" L"\x0001d440" L"\0" L"\x0001d441" L"\0" L"\x0001d442" +- L"\0" L"\x0001d443" L"\0" L"\x0001d444" L"\0" L"\x0001d445" L"\0" +- L"\x0001d446" L"\0" L"\x0001d447" L"\0" L"\x0001d448" L"\0" L"\x0001d449" +- L"\0" L"\x0001d44a" L"\0" L"\x0001d44b" L"\0" L"\x0001d44c" L"\0" +- L"\x0001d44d" L"\0" L"\x0001d44e" L"\0" L"\x0001d44f" L"\0" L"\x0001d450" +- L"\0" L"\x0001d451" L"\0" L"\x0001d452" L"\0" L"\x0001d453" L"\0" +- L"\x0001d454" L"\0" L"\x0001d456" L"\0" L"\x0001d457" L"\0" L"\x0001d458" +- L"\0" L"\x0001d459" L"\0" L"\x0001d45a" L"\0" L"\x0001d45b" L"\0" +- L"\x0001d45c" L"\0" L"\x0001d45d" L"\0" L"\x0001d45e" L"\0" L"\x0001d45f" +- L"\0" L"\x0001d460" L"\0" L"\x0001d461" L"\0" L"\x0001d462" L"\0" +- L"\x0001d463" L"\0" L"\x0001d464" L"\0" L"\x0001d465" L"\0" L"\x0001d466" +- L"\0" L"\x0001d467" L"\0" L"\x0001d468" L"\0" L"\x0001d469" L"\0" +- L"\x0001d46a" L"\0" L"\x0001d46b" L"\0" L"\x0001d46c" L"\0" L"\x0001d46d" +- L"\0" L"\x0001d46e" L"\0" L"\x0001d46f" L"\0" L"\x0001d470" L"\0" +- L"\x0001d471" L"\0" L"\x0001d472" L"\0" L"\x0001d473" L"\0" L"\x0001d474" +- L"\0" L"\x0001d475" L"\0" L"\x0001d476" L"\0" L"\x0001d477" L"\0" +- L"\x0001d478" L"\0" L"\x0001d479" L"\0" L"\x0001d47a" L"\0" L"\x0001d47b" +- L"\0" L"\x0001d47c" L"\0" L"\x0001d47d" L"\0" L"\x0001d47e" L"\0" +- L"\x0001d47f" L"\0" L"\x0001d480" L"\0" L"\x0001d481" L"\0" L"\x0001d482" +- L"\0" L"\x0001d483" L"\0" L"\x0001d484" L"\0" L"\x0001d485" L"\0" +- L"\x0001d486" L"\0" L"\x0001d487" L"\0" L"\x0001d488" L"\0" L"\x0001d489" +- L"\0" L"\x0001d48a" L"\0" L"\x0001d48b" L"\0" L"\x0001d48c" L"\0" +- L"\x0001d48d" L"\0" L"\x0001d48e" L"\0" L"\x0001d48f" L"\0" L"\x0001d490" +- L"\0" L"\x0001d491" L"\0" L"\x0001d492" L"\0" L"\x0001d493" L"\0" +- L"\x0001d494" L"\0" L"\x0001d495" L"\0" L"\x0001d496" L"\0" L"\x0001d497" +- L"\0" L"\x0001d498" L"\0" L"\x0001d499" L"\0" L"\x0001d49a" L"\0" +- L"\x0001d49b" L"\0" L"\x0001d49c" L"\0" L"\x0001d49e" L"\0" L"\x0001d49f" +- L"\0" L"\x0001d4a2" L"\0" L"\x0001d4a5" L"\0" L"\x0001d4a6" L"\0" +- L"\x0001d4a9" L"\0" L"\x0001d4aa" L"\0" L"\x0001d4ab" L"\0" L"\x0001d4ac" +- L"\0" L"\x0001d4ae" L"\0" L"\x0001d4af" L"\0" L"\x0001d4b0" L"\0" +- L"\x0001d4b1" L"\0" L"\x0001d4b2" L"\0" L"\x0001d4b3" L"\0" L"\x0001d4b4" +- L"\0" L"\x0001d4b5" L"\0" L"\x0001d4b6" L"\0" L"\x0001d4b7" L"\0" +- L"\x0001d4b8" L"\0" L"\x0001d4b9" L"\0" L"\x0001d4bb" L"\0" L"\x0001d4bd" +- L"\0" L"\x0001d4be" L"\0" L"\x0001d4bf" L"\0" L"\x0001d4c0" L"\0" +- L"\x0001d4c2" L"\0" L"\x0001d4c3" L"\0" L"\x0001d4c5" L"\0" L"\x0001d4c6" +- L"\0" L"\x0001d4c7" L"\0" L"\x0001d4c8" L"\0" L"\x0001d4c9" L"\0" +- L"\x0001d4ca" L"\0" L"\x0001d4cb" L"\0" L"\x0001d4cc" L"\0" L"\x0001d4cd" +- L"\0" L"\x0001d4ce" L"\0" L"\x0001d4cf" L"\0" L"\x0001d4d0" L"\0" +- L"\x0001d4d1" L"\0" L"\x0001d4d2" L"\0" L"\x0001d4d3" L"\0" L"\x0001d4d4" +- L"\0" L"\x0001d4d5" L"\0" L"\x0001d4d6" L"\0" L"\x0001d4d7" L"\0" +- L"\x0001d4d8" L"\0" L"\x0001d4d9" L"\0" L"\x0001d4da" L"\0" L"\x0001d4db" +- L"\0" L"\x0001d4dc" L"\0" L"\x0001d4dd" L"\0" L"\x0001d4de" L"\0" +- L"\x0001d4df" L"\0" L"\x0001d4e0" L"\0" L"\x0001d4e1" L"\0" L"\x0001d4e2" +- L"\0" L"\x0001d4e3" L"\0" L"\x0001d4e4" L"\0" L"\x0001d4e5" L"\0" +- L"\x0001d4e6" L"\0" L"\x0001d4e7" L"\0" L"\x0001d4e8" L"\0" L"\x0001d4e9" +- L"\0" L"\x0001d4ea" L"\0" L"\x0001d4eb" L"\0" L"\x0001d4ec" L"\0" +- L"\x0001d4ed" L"\0" L"\x0001d4ee" L"\0" L"\x0001d4ef" L"\0" L"\x0001d4f0" +- L"\0" L"\x0001d4f1" L"\0" L"\x0001d4f2" L"\0" L"\x0001d4f3" L"\0" +- L"\x0001d4f4" L"\0" L"\x0001d4f5" L"\0" L"\x0001d4f6" L"\0" L"\x0001d4f7" +- L"\0" L"\x0001d4f8" L"\0" L"\x0001d4f9" L"\0" L"\x0001d4fa" L"\0" +- L"\x0001d4fb" L"\0" L"\x0001d4fc" L"\0" L"\x0001d4fd" L"\0" L"\x0001d4fe" +- L"\0" L"\x0001d4ff" L"\0" L"\x0001d500" L"\0" L"\x0001d501" L"\0" +- L"\x0001d502" L"\0" L"\x0001d503" L"\0" L"\x0001d504" L"\0" L"\x0001d505" +- L"\0" L"\x0001d507" L"\0" L"\x0001d508" L"\0" L"\x0001d509" L"\0" +- L"\x0001d50a" L"\0" L"\x0001d50d" L"\0" L"\x0001d50e" L"\0" L"\x0001d50f" +- L"\0" L"\x0001d510" L"\0" L"\x0001d511" L"\0" L"\x0001d512" L"\0" +- L"\x0001d513" L"\0" L"\x0001d514" L"\0" L"\x0001d516" L"\0" L"\x0001d517" +- L"\0" L"\x0001d518" L"\0" L"\x0001d519" L"\0" L"\x0001d51a" L"\0" +- L"\x0001d51b" L"\0" L"\x0001d51c" L"\0" L"\x0001d51e" L"\0" L"\x0001d51f" +- L"\0" L"\x0001d520" L"\0" L"\x0001d521" L"\0" L"\x0001d522" L"\0" +- L"\x0001d523" L"\0" L"\x0001d524" L"\0" L"\x0001d525" L"\0" L"\x0001d526" +- L"\0" L"\x0001d527" L"\0" L"\x0001d528" L"\0" L"\x0001d529" L"\0" +- L"\x0001d52a" L"\0" L"\x0001d52b" L"\0" L"\x0001d52c" L"\0" L"\x0001d52d" +- L"\0" L"\x0001d52e" L"\0" L"\x0001d52f" L"\0" L"\x0001d530" L"\0" +- L"\x0001d531" L"\0" L"\x0001d532" L"\0" L"\x0001d533" L"\0" L"\x0001d534" +- L"\0" L"\x0001d535" L"\0" L"\x0001d536" L"\0" L"\x0001d537" L"\0" +- L"\x0001d538" L"\0" L"\x0001d539" L"\0" L"\x0001d53b" L"\0" L"\x0001d53c" +- L"\0" L"\x0001d53d" L"\0" L"\x0001d53e" L"\0" L"\x0001d540" L"\0" +- L"\x0001d541" L"\0" L"\x0001d542" L"\0" L"\x0001d543" L"\0" L"\x0001d544" +- L"\0" L"\x0001d546" L"\0" L"\x0001d54a" L"\0" L"\x0001d54b" L"\0" +- L"\x0001d54c" L"\0" L"\x0001d54d" L"\0" L"\x0001d54e" L"\0" L"\x0001d54f" +- L"\0" L"\x0001d550" L"\0" L"\x0001d552" L"\0" L"\x0001d553" L"\0" +- L"\x0001d554" L"\0" L"\x0001d555" L"\0" L"\x0001d556" L"\0" L"\x0001d557" +- L"\0" L"\x0001d558" L"\0" L"\x0001d559" L"\0" L"\x0001d55a" L"\0" +- L"\x0001d55b" L"\0" L"\x0001d55c" L"\0" L"\x0001d55d" L"\0" L"\x0001d55e" +- L"\0" L"\x0001d55f" L"\0" L"\x0001d560" L"\0" L"\x0001d561" L"\0" +- L"\x0001d562" L"\0" L"\x0001d563" L"\0" L"\x0001d564" L"\0" L"\x0001d565" +- L"\0" L"\x0001d566" L"\0" L"\x0001d567" L"\0" L"\x0001d568" L"\0" +- L"\x0001d569" L"\0" L"\x0001d56a" L"\0" L"\x0001d56b" L"\0" L"\x0001d56c" +- L"\0" L"\x0001d56d" L"\0" L"\x0001d56e" L"\0" L"\x0001d56f" L"\0" +- L"\x0001d570" L"\0" L"\x0001d571" L"\0" L"\x0001d572" L"\0" L"\x0001d573" +- L"\0" L"\x0001d574" L"\0" L"\x0001d575" L"\0" L"\x0001d576" L"\0" +- L"\x0001d577" L"\0" L"\x0001d578" L"\0" L"\x0001d579" L"\0" L"\x0001d57a" +- L"\0" L"\x0001d57b" L"\0" L"\x0001d57c" L"\0" L"\x0001d57d" L"\0" +- L"\x0001d57e" L"\0" L"\x0001d57f" L"\0" L"\x0001d580" L"\0" L"\x0001d581" +- L"\0" L"\x0001d582" L"\0" L"\x0001d583" L"\0" L"\x0001d584" L"\0" +- L"\x0001d585" L"\0" L"\x0001d586" L"\0" L"\x0001d587" L"\0" L"\x0001d588" +- L"\0" L"\x0001d589" L"\0" L"\x0001d58a" L"\0" L"\x0001d58b" L"\0" +- L"\x0001d58c" L"\0" L"\x0001d58d" L"\0" L"\x0001d58e" L"\0" L"\x0001d58f" +- L"\0" L"\x0001d590" L"\0" L"\x0001d591" L"\0" L"\x0001d592" L"\0" +- L"\x0001d593" L"\0" L"\x0001d594" L"\0" L"\x0001d595" L"\0" L"\x0001d596" +- L"\0" L"\x0001d597" L"\0" L"\x0001d598" L"\0" L"\x0001d599" L"\0" +- L"\x0001d59a" L"\0" L"\x0001d59b" L"\0" L"\x0001d59c" L"\0" L"\x0001d59d" +- L"\0" L"\x0001d59e" L"\0" L"\x0001d59f" L"\0" L"\x0001d5a0" L"\0" +- L"\x0001d5a1" L"\0" L"\x0001d5a2" L"\0" L"\x0001d5a3" L"\0" L"\x0001d5a4" +- L"\0" L"\x0001d5a5" L"\0" L"\x0001d5a6" L"\0" L"\x0001d5a7" L"\0" +- L"\x0001d5a8" L"\0" L"\x0001d5a9" L"\0" L"\x0001d5aa" L"\0" L"\x0001d5ab" +- L"\0" L"\x0001d5ac" L"\0" L"\x0001d5ad" L"\0" L"\x0001d5ae" L"\0" +- L"\x0001d5af" L"\0" L"\x0001d5b0" L"\0" L"\x0001d5b1" L"\0" L"\x0001d5b2" +- L"\0" L"\x0001d5b3" L"\0" L"\x0001d5b4" L"\0" L"\x0001d5b5" L"\0" +- L"\x0001d5b6" L"\0" L"\x0001d5b7" L"\0" L"\x0001d5b8" L"\0" L"\x0001d5b9" +- L"\0" L"\x0001d5ba" L"\0" L"\x0001d5bb" L"\0" L"\x0001d5bc" L"\0" +- L"\x0001d5bd" L"\0" L"\x0001d5be" L"\0" L"\x0001d5bf" L"\0" L"\x0001d5c0" +- L"\0" L"\x0001d5c1" L"\0" L"\x0001d5c2" L"\0" L"\x0001d5c3" L"\0" +- L"\x0001d5c4" L"\0" L"\x0001d5c5" L"\0" L"\x0001d5c6" L"\0" L"\x0001d5c7" +- L"\0" L"\x0001d5c8" L"\0" L"\x0001d5c9" L"\0" L"\x0001d5ca" L"\0" +- L"\x0001d5cb" L"\0" L"\x0001d5cc" L"\0" L"\x0001d5cd" L"\0" L"\x0001d5ce" +- L"\0" L"\x0001d5cf" L"\0" L"\x0001d5d0" L"\0" L"\x0001d5d1" L"\0" +- L"\x0001d5d2" L"\0" L"\x0001d5d3" L"\0" L"\x0001d5d4" L"\0" L"\x0001d5d5" +- L"\0" L"\x0001d5d6" L"\0" L"\x0001d5d7" L"\0" L"\x0001d5d8" L"\0" +- L"\x0001d5d9" L"\0" L"\x0001d5da" L"\0" L"\x0001d5db" L"\0" L"\x0001d5dc" +- L"\0" L"\x0001d5dd" L"\0" L"\x0001d5de" L"\0" L"\x0001d5df" L"\0" +- L"\x0001d5e0" L"\0" L"\x0001d5e1" L"\0" L"\x0001d5e2" L"\0" L"\x0001d5e3" +- L"\0" L"\x0001d5e4" L"\0" L"\x0001d5e5" L"\0" L"\x0001d5e6" L"\0" +- L"\x0001d5e7" L"\0" L"\x0001d5e8" L"\0" L"\x0001d5e9" L"\0" L"\x0001d5ea" +- L"\0" L"\x0001d5eb" L"\0" L"\x0001d5ec" L"\0" L"\x0001d5ed" L"\0" +- L"\x0001d5ee" L"\0" L"\x0001d5ef" L"\0" L"\x0001d5f0" L"\0" L"\x0001d5f1" +- L"\0" L"\x0001d5f2" L"\0" L"\x0001d5f3" L"\0" L"\x0001d5f4" L"\0" +- L"\x0001d5f5" L"\0" L"\x0001d5f6" L"\0" L"\x0001d5f7" L"\0" L"\x0001d5f8" +- L"\0" L"\x0001d5f9" L"\0" L"\x0001d5fa" L"\0" L"\x0001d5fb" L"\0" +- L"\x0001d5fc" L"\0" L"\x0001d5fd" L"\0" L"\x0001d5fe" L"\0" L"\x0001d5ff" +- L"\0" L"\x0001d600" L"\0" L"\x0001d601" L"\0" L"\x0001d602" L"\0" +- L"\x0001d603" L"\0" L"\x0001d604" L"\0" L"\x0001d605" L"\0" L"\x0001d606" +- L"\0" L"\x0001d607" L"\0" L"\x0001d608" L"\0" L"\x0001d609" L"\0" +- L"\x0001d60a" L"\0" L"\x0001d60b" L"\0" L"\x0001d60c" L"\0" L"\x0001d60d" +- L"\0" L"\x0001d60e" L"\0" L"\x0001d60f" L"\0" L"\x0001d610" L"\0" +- L"\x0001d611" L"\0" L"\x0001d612" L"\0" L"\x0001d613" L"\0" L"\x0001d614" +- L"\0" L"\x0001d615" L"\0" L"\x0001d616" L"\0" L"\x0001d617" L"\0" +- L"\x0001d618" L"\0" L"\x0001d619" L"\0" L"\x0001d61a" L"\0" L"\x0001d61b" +- L"\0" L"\x0001d61c" L"\0" L"\x0001d61d" L"\0" L"\x0001d61e" L"\0" +- L"\x0001d61f" L"\0" L"\x0001d620" L"\0" L"\x0001d621" L"\0" L"\x0001d622" +- L"\0" L"\x0001d623" L"\0" L"\x0001d624" L"\0" L"\x0001d625" L"\0" +- L"\x0001d626" L"\0" L"\x0001d627" L"\0" L"\x0001d628" L"\0" L"\x0001d629" +- L"\0" L"\x0001d62a" L"\0" L"\x0001d62b" L"\0" L"\x0001d62c" L"\0" +- L"\x0001d62d" L"\0" L"\x0001d62e" L"\0" L"\x0001d62f" L"\0" L"\x0001d630" +- L"\0" L"\x0001d631" L"\0" L"\x0001d632" L"\0" L"\x0001d633" L"\0" +- L"\x0001d634" L"\0" L"\x0001d635" L"\0" L"\x0001d636" L"\0" L"\x0001d637" +- L"\0" L"\x0001d638" L"\0" L"\x0001d639" L"\0" L"\x0001d63a" L"\0" +- L"\x0001d63b" L"\0" L"\x0001d63c" L"\0" L"\x0001d63d" L"\0" L"\x0001d63e" +- L"\0" L"\x0001d63f" L"\0" L"\x0001d640" L"\0" L"\x0001d641" L"\0" +- L"\x0001d642" L"\0" L"\x0001d643" L"\0" L"\x0001d644" L"\0" L"\x0001d645" +- L"\0" L"\x0001d646" L"\0" L"\x0001d647" L"\0" L"\x0001d648" L"\0" +- L"\x0001d649" L"\0" L"\x0001d64a" L"\0" L"\x0001d64b" L"\0" L"\x0001d64c" +- L"\0" L"\x0001d64d" L"\0" L"\x0001d64e" L"\0" L"\x0001d64f" L"\0" +- L"\x0001d650" L"\0" L"\x0001d651" L"\0" L"\x0001d652" L"\0" L"\x0001d653" +- L"\0" L"\x0001d654" L"\0" L"\x0001d655" L"\0" L"\x0001d656" L"\0" +- L"\x0001d657" L"\0" L"\x0001d658" L"\0" L"\x0001d659" L"\0" L"\x0001d65a" +- L"\0" L"\x0001d65b" L"\0" L"\x0001d65c" L"\0" L"\x0001d65d" L"\0" +- L"\x0001d65e" L"\0" L"\x0001d65f" L"\0" L"\x0001d660" L"\0" L"\x0001d661" +- L"\0" L"\x0001d662" L"\0" L"\x0001d663" L"\0" L"\x0001d664" L"\0" +- L"\x0001d665" L"\0" L"\x0001d666" L"\0" L"\x0001d667" L"\0" L"\x0001d668" +- L"\0" L"\x0001d669" L"\0" L"\x0001d66a" L"\0" L"\x0001d66b" L"\0" +- L"\x0001d66c" L"\0" L"\x0001d66d" L"\0" L"\x0001d66e" L"\0" L"\x0001d66f" +- L"\0" L"\x0001d670" L"\0" L"\x0001d671" L"\0" L"\x0001d672" L"\0" +- L"\x0001d673" L"\0" L"\x0001d674" L"\0" L"\x0001d675" L"\0" L"\x0001d676" +- L"\0" L"\x0001d677" L"\0" L"\x0001d678" L"\0" L"\x0001d679" L"\0" +- L"\x0001d67a" L"\0" L"\x0001d67b" L"\0" L"\x0001d67c" L"\0" L"\x0001d67d" +- L"\0" L"\x0001d67e" L"\0" L"\x0001d67f" L"\0" L"\x0001d680" L"\0" +- L"\x0001d681" L"\0" L"\x0001d682" L"\0" L"\x0001d683" L"\0" L"\x0001d684" +- L"\0" L"\x0001d685" L"\0" L"\x0001d686" L"\0" L"\x0001d687" L"\0" +- L"\x0001d688" L"\0" L"\x0001d689" L"\0" L"\x0001d68a" L"\0" L"\x0001d68b" +- L"\0" L"\x0001d68c" L"\0" L"\x0001d68d" L"\0" L"\x0001d68e" L"\0" +- L"\x0001d68f" L"\0" L"\x0001d690" L"\0" L"\x0001d691" L"\0" L"\x0001d692" +- L"\0" L"\x0001d693" L"\0" L"\x0001d694" L"\0" L"\x0001d695" L"\0" +- L"\x0001d696" L"\0" L"\x0001d697" L"\0" L"\x0001d698" L"\0" L"\x0001d699" +- L"\0" L"\x0001d69a" L"\0" L"\x0001d69b" L"\0" L"\x0001d69c" L"\0" +- L"\x0001d69d" L"\0" L"\x0001d69e" L"\0" L"\x0001d69f" L"\0" L"\x0001d6a0" +- L"\0" L"\x0001d6a1" L"\0" L"\x0001d6a2" L"\0" L"\x0001d6a3" L"\0" +- L"\x0001d7ce" L"\0" L"\x0001d7cf" L"\0" L"\x0001d7d0" L"\0" L"\x0001d7d1" +- L"\0" L"\x0001d7d2" L"\0" L"\x0001d7d3" L"\0" L"\x0001d7d4" L"\0" +- L"\x0001d7d5" L"\0" L"\x0001d7d6" L"\0" L"\x0001d7d7" L"\0" L"\x0001d7d8" +- L"\0" L"\x0001d7d9" L"\0" L"\x0001d7da" L"\0" L"\x0001d7db" L"\0" +- L"\x0001d7dc" L"\0" L"\x0001d7dd" L"\0" L"\x0001d7de" L"\0" L"\x0001d7df" +- L"\0" L"\x0001d7e0" L"\0" L"\x0001d7e1" L"\0" L"\x0001d7e2" L"\0" +- L"\x0001d7e3" L"\0" L"\x0001d7e4" L"\0" L"\x0001d7e5" L"\0" L"\x0001d7e6" +- L"\0" L"\x0001d7e7" L"\0" L"\x0001d7e8" L"\0" L"\x0001d7e9" L"\0" +- L"\x0001d7ea" L"\0" L"\x0001d7eb" L"\0" L"\x0001d7ec" L"\0" L"\x0001d7ed" +- L"\0" L"\x0001d7ee" L"\0" L"\x0001d7ef" L"\0" L"\x0001d7f0" L"\0" +- L"\x0001d7f1" L"\0" L"\x0001d7f2" L"\0" L"\x0001d7f3" L"\0" L"\x0001d7f4" +- L"\0" L"\x0001d7f5" L"\0" L"\x0001d7f6" L"\0" L"\x0001d7f7" L"\0" +- L"\x0001d7f8" L"\0" L"\x0001d7f9" L"\0" L"\x0001d7fa" L"\0" L"\x0001d7fb" +- L"\0" L"\x0001d7fc" L"\0" L"\x0001d7fd" L"\0" L"\x0001d7fe" L"\0" +- L"\x0001d7ff"; ++ L"\x2062" L"\0" L"\x2063" L"\0" L"\x20a8" L"\0" L"\x20ac" L"\0" L"\x20b9" ++ L"\0" L"\x2100" L"\0" L"\x2101" L"\0" L"\x2102" L"\0" L"\x2105" L"\0" ++ L"\x2106" L"\0" L"\x210a" L"\0" L"\x210b" L"\0" L"\x210c" L"\0" L"\x210d" ++ L"\0" L"\x210e" L"\0" L"\x2110" L"\0" L"\x2111" L"\0" L"\x2112" L"\0" ++ L"\x2113" L"\0" L"\x2115" L"\0" L"\x2116" L"\0" L"\x2119" L"\0" L"\x211a" ++ L"\0" L"\x211b" L"\0" L"\x211c" L"\0" L"\x211d" L"\0" L"\x2121" L"\0" ++ L"\x2122" L"\0" L"\x2124" L"\0" L"\x2126" L"\0" L"\x2128" L"\0" L"\x212c" ++ L"\0" L"\x212d" L"\0" L"\x212e" L"\0" L"\x212f" L"\0" L"\x2130" L"\0" ++ L"\x2131" L"\0" L"\x2133" L"\0" L"\x2134" L"\0" L"\x2139" L"\0" L"\x2145" ++ L"\0" L"\x2146" L"\0" L"\x2147" L"\0" L"\x2148" L"\0" L"\x2149" L"\0" ++ L"\x2153" L"\0" L"\x2154" L"\0" L"\x2155" L"\0" L"\x2156" L"\0" L"\x2157" ++ L"\0" L"\x2158" L"\0" L"\x2159" L"\0" L"\x215a" L"\0" L"\x215b" L"\0" ++ L"\x215c" L"\0" L"\x215d" L"\0" L"\x215e" L"\0" L"\x215f" L"\0" L"\x2160" ++ L"\0" L"\x2161" L"\0" L"\x2162" L"\0" L"\x2163" L"\0" L"\x2164" L"\0" ++ L"\x2165" L"\0" L"\x2166" L"\0" L"\x2167" L"\0" L"\x2168" L"\0" L"\x2169" ++ L"\0" L"\x216a" L"\0" L"\x216b" L"\0" L"\x216c" L"\0" L"\x216d" L"\0" ++ L"\x216e" L"\0" L"\x216f" L"\0" L"\x2170" L"\0" L"\x2171" L"\0" L"\x2172" ++ L"\0" L"\x2173" L"\0" L"\x2174" L"\0" L"\x2175" L"\0" L"\x2176" L"\0" ++ L"\x2177" L"\0" L"\x2178" L"\0" L"\x2179" L"\0" L"\x217a" L"\0" L"\x217b" ++ L"\0" L"\x217c" L"\0" L"\x217d" L"\0" L"\x217e" L"\0" L"\x217f" L"\0" ++ L"\x2190" L"\0" L"\x2192" L"\0" L"\x2194" L"\0" L"\x21d0" L"\0" L"\x21d2" ++ L"\0" L"\x21d4" L"\0" L"\x2212" L"\0" L"\x2215" L"\0" L"\x2216" L"\0" ++ L"\x2217" L"\0" L"\x2223" L"\0" L"\x2236" L"\0" L"\x223c" L"\0" L"\x2264" ++ L"\0" L"\x2265" L"\0" L"\x226a" L"\0" L"\x226b" L"\0" L"\x22d8" L"\0" ++ L"\x22d9" L"\0" L"\x2400" L"\0" L"\x2401" L"\0" L"\x2402" L"\0" L"\x2403" ++ L"\0" L"\x2404" L"\0" L"\x2405" L"\0" L"\x2406" L"\0" L"\x2407" L"\0" ++ L"\x2408" L"\0" L"\x2409" L"\0" L"\x240a" L"\0" L"\x240b" L"\0" L"\x240c" ++ L"\0" L"\x240d" L"\0" L"\x240e" L"\0" L"\x240f" L"\0" L"\x2410" L"\0" ++ L"\x2411" L"\0" L"\x2412" L"\0" L"\x2413" L"\0" L"\x2414" L"\0" L"\x2415" ++ L"\0" L"\x2416" L"\0" L"\x2417" L"\0" L"\x2418" L"\0" L"\x2419" L"\0" ++ L"\x241a" L"\0" L"\x241b" L"\0" L"\x241c" L"\0" L"\x241d" L"\0" L"\x241e" ++ L"\0" L"\x241f" L"\0" L"\x2420" L"\0" L"\x2421" L"\0" L"\x2423" L"\0" ++ L"\x2424" L"\0" L"\x2460" L"\0" L"\x2461" L"\0" L"\x2462" L"\0" L"\x2463" ++ L"\0" L"\x2464" L"\0" L"\x2465" L"\0" L"\x2466" L"\0" L"\x2467" L"\0" ++ L"\x2468" L"\0" L"\x2469" L"\0" L"\x246a" L"\0" L"\x246b" L"\0" L"\x246c" ++ L"\0" L"\x246d" L"\0" L"\x246e" L"\0" L"\x246f" L"\0" L"\x2470" L"\0" ++ L"\x2471" L"\0" L"\x2472" L"\0" L"\x2473" L"\0" L"\x2474" L"\0" L"\x2475" ++ L"\0" L"\x2476" L"\0" L"\x2477" L"\0" L"\x2478" L"\0" L"\x2479" L"\0" ++ L"\x247a" L"\0" L"\x247b" L"\0" L"\x247c" L"\0" L"\x247d" L"\0" L"\x247e" ++ L"\0" L"\x247f" L"\0" L"\x2480" L"\0" L"\x2481" L"\0" L"\x2482" L"\0" ++ L"\x2483" L"\0" L"\x2484" L"\0" L"\x2485" L"\0" L"\x2486" L"\0" L"\x2487" ++ L"\0" L"\x2488" L"\0" L"\x2489" L"\0" L"\x248a" L"\0" L"\x248b" L"\0" ++ L"\x248c" L"\0" L"\x248d" L"\0" L"\x248e" L"\0" L"\x248f" L"\0" L"\x2490" ++ L"\0" L"\x2491" L"\0" L"\x2492" L"\0" L"\x2493" L"\0" L"\x2494" L"\0" ++ L"\x2495" L"\0" L"\x2496" L"\0" L"\x2497" L"\0" L"\x2498" L"\0" L"\x2499" ++ L"\0" L"\x249a" L"\0" L"\x249b" L"\0" L"\x249c" L"\0" L"\x249d" L"\0" ++ L"\x249e" L"\0" L"\x249f" L"\0" L"\x24a0" L"\0" L"\x24a1" L"\0" L"\x24a2" ++ L"\0" L"\x24a3" L"\0" L"\x24a4" L"\0" L"\x24a5" L"\0" L"\x24a6" L"\0" ++ L"\x24a7" L"\0" L"\x24a8" L"\0" L"\x24a9" L"\0" L"\x24aa" L"\0" L"\x24ab" ++ L"\0" L"\x24ac" L"\0" L"\x24ad" L"\0" L"\x24ae" L"\0" L"\x24af" L"\0" ++ L"\x24b0" L"\0" L"\x24b1" L"\0" L"\x24b2" L"\0" L"\x24b3" L"\0" L"\x24b4" ++ L"\0" L"\x24b5" L"\0" L"\x24b6" L"\0" L"\x24b7" L"\0" L"\x24b8" L"\0" ++ L"\x24b9" L"\0" L"\x24ba" L"\0" L"\x24bb" L"\0" L"\x24bc" L"\0" L"\x24bd" ++ L"\0" L"\x24be" L"\0" L"\x24bf" L"\0" L"\x24c0" L"\0" L"\x24c1" L"\0" ++ L"\x24c2" L"\0" L"\x24c3" L"\0" L"\x24c4" L"\0" L"\x24c5" L"\0" L"\x24c6" ++ L"\0" L"\x24c7" L"\0" L"\x24c8" L"\0" L"\x24c9" L"\0" L"\x24ca" L"\0" ++ L"\x24cb" L"\0" L"\x24cc" L"\0" L"\x24cd" L"\0" L"\x24ce" L"\0" L"\x24cf" ++ L"\0" L"\x24d0" L"\0" L"\x24d1" L"\0" L"\x24d2" L"\0" L"\x24d3" L"\0" ++ L"\x24d4" L"\0" L"\x24d5" L"\0" L"\x24d6" L"\0" L"\x24d7" L"\0" L"\x24d8" ++ L"\0" L"\x24d9" L"\0" L"\x24da" L"\0" L"\x24db" L"\0" L"\x24dc" L"\0" ++ L"\x24dd" L"\0" L"\x24de" L"\0" L"\x24df" L"\0" L"\x24e0" L"\0" L"\x24e1" ++ L"\0" L"\x24e2" L"\0" L"\x24e3" L"\0" L"\x24e4" L"\0" L"\x24e5" L"\0" ++ L"\x24e6" L"\0" L"\x24e7" L"\0" L"\x24e8" L"\0" L"\x24e9" L"\0" L"\x24ea" ++ L"\0" L"\x2500" L"\0" L"\x2502" L"\0" L"\x250c" L"\0" L"\x2510" L"\0" ++ L"\x2514" L"\0" L"\x2518" L"\0" L"\x251c" L"\0" L"\x2524" L"\0" L"\x252c" ++ L"\0" L"\x2534" L"\0" L"\x253c" L"\0" L"\x25e6" L"\0" L"\x2a74" L"\0" ++ L"\x2a75" L"\0" L"\x2a76" L"\0" L"\x3000" L"\0" L"\x30a0" L"\0" L"\x3251" ++ L"\0" L"\x3252" L"\0" L"\x3253" L"\0" L"\x3254" L"\0" L"\x3255" L"\0" ++ L"\x3256" L"\0" L"\x3257" L"\0" L"\x3258" L"\0" L"\x3259" L"\0" L"\x325a" ++ L"\0" L"\x325b" L"\0" L"\x325c" L"\0" L"\x325d" L"\0" L"\x325e" L"\0" ++ L"\x325f" L"\0" L"\x32b1" L"\0" L"\x32b2" L"\0" L"\x32b3" L"\0" L"\x32b4" ++ L"\0" L"\x32b5" L"\0" L"\x32b6" L"\0" L"\x32b7" L"\0" L"\x32b8" L"\0" ++ L"\x32b9" L"\0" L"\x32ba" L"\0" L"\x32bb" L"\0" L"\x32bc" L"\0" L"\x32bd" ++ L"\0" L"\x32be" L"\0" L"\x32bf" L"\0" L"\x3371" L"\0" L"\x3372" L"\0" ++ L"\x3373" L"\0" L"\x3374" L"\0" L"\x3375" L"\0" L"\x3376" L"\0" L"\x3380" ++ L"\0" L"\x3381" L"\0" L"\x3382" L"\0" L"\x3383" L"\0" L"\x3384" L"\0" ++ L"\x3385" L"\0" L"\x3386" L"\0" L"\x3387" L"\0" L"\x3388" L"\0" L"\x3389" ++ L"\0" L"\x338a" L"\0" L"\x338b" L"\0" L"\x338c" L"\0" L"\x338d" L"\0" ++ L"\x338e" L"\0" L"\x338f" L"\0" L"\x3390" L"\0" L"\x3391" L"\0" L"\x3392" ++ L"\0" L"\x3393" L"\0" L"\x3394" L"\0" L"\x3395" L"\0" L"\x3396" L"\0" ++ L"\x3397" L"\0" L"\x3398" L"\0" L"\x3399" L"\0" L"\x339a" L"\0" L"\x339b" ++ L"\0" L"\x339c" L"\0" L"\x339d" L"\0" L"\x339e" L"\0" L"\x339f" L"\0" ++ L"\x33a0" L"\0" L"\x33a1" L"\0" L"\x33a2" L"\0" L"\x33a3" L"\0" L"\x33a4" ++ L"\0" L"\x33a5" L"\0" L"\x33a6" L"\0" L"\x33a7" L"\0" L"\x33a8" L"\0" ++ L"\x33a9" L"\0" L"\x33aa" L"\0" L"\x33ab" L"\0" L"\x33ac" L"\0" L"\x33ad" ++ L"\0" L"\x33ae" L"\0" L"\x33af" L"\0" L"\x33b0" L"\0" L"\x33b1" L"\0" ++ L"\x33b2" L"\0" L"\x33b3" L"\0" L"\x33b4" L"\0" L"\x33b5" L"\0" L"\x33b6" ++ L"\0" L"\x33b7" L"\0" L"\x33b8" L"\0" L"\x33b9" L"\0" L"\x33ba" L"\0" ++ L"\x33bb" L"\0" L"\x33bc" L"\0" L"\x33bd" L"\0" L"\x33be" L"\0" L"\x33bf" ++ L"\0" L"\x33c2" L"\0" L"\x33c3" L"\0" L"\x33c4" L"\0" L"\x33c5" L"\0" ++ L"\x33c6" L"\0" L"\x33c7" L"\0" L"\x33c8" L"\0" L"\x33c9" L"\0" L"\x33ca" ++ L"\0" L"\x33cb" L"\0" L"\x33cc" L"\0" L"\x33cd" L"\0" L"\x33ce" L"\0" ++ L"\x33cf" L"\0" L"\x33d0" L"\0" L"\x33d1" L"\0" L"\x33d2" L"\0" L"\x33d3" ++ L"\0" L"\x33d4" L"\0" L"\x33d5" L"\0" L"\x33d6" L"\0" L"\x33d7" L"\0" ++ L"\x33d8" L"\0" L"\x33d9" L"\0" L"\x33da" L"\0" L"\x33db" L"\0" L"\x33dc" ++ L"\0" L"\x33dd" L"\0" L"\xfb00" L"\0" L"\xfb01" L"\0" L"\xfb02" L"\0" ++ L"\xfb03" L"\0" L"\xfb04" L"\0" L"\xfb06" L"\0" L"\xfb29" L"\0" L"\xfe00" ++ L"\0" L"\xfe01" L"\0" L"\xfe02" L"\0" L"\xfe03" L"\0" L"\xfe04" L"\0" ++ L"\xfe05" L"\0" L"\xfe06" L"\0" L"\xfe07" L"\0" L"\xfe08" L"\0" L"\xfe09" ++ L"\0" L"\xfe0a" L"\0" L"\xfe0b" L"\0" L"\xfe0c" L"\0" L"\xfe0d" L"\0" ++ L"\xfe0e" L"\0" L"\xfe0f" L"\0" L"\xfe4d" L"\0" L"\xfe4e" L"\0" L"\xfe4f" ++ L"\0" L"\xfe50" L"\0" L"\xfe52" L"\0" L"\xfe54" L"\0" L"\xfe55" L"\0" ++ L"\xfe56" L"\0" L"\xfe57" L"\0" L"\xfe59" L"\0" L"\xfe5a" L"\0" L"\xfe5b" ++ L"\0" L"\xfe5c" L"\0" L"\xfe5f" L"\0" L"\xfe60" L"\0" L"\xfe61" L"\0" ++ L"\xfe62" L"\0" L"\xfe63" L"\0" L"\xfe64" L"\0" L"\xfe65" L"\0" L"\xfe66" ++ L"\0" L"\xfe68" L"\0" L"\xfe69" L"\0" L"\xfe6a" L"\0" L"\xfe6b" L"\0" ++ L"\xfeff" L"\0" L"\xff01" L"\0" L"\xff02" L"\0" L"\xff03" L"\0" L"\xff04" ++ L"\0" L"\xff05" L"\0" L"\xff06" L"\0" L"\xff07" L"\0" L"\xff08" L"\0" ++ L"\xff09" L"\0" L"\xff0a" L"\0" L"\xff0b" L"\0" L"\xff0c" L"\0" L"\xff0d" ++ L"\0" L"\xff0e" L"\0" L"\xff0f" L"\0" L"\xff10" L"\0" L"\xff11" L"\0" ++ L"\xff12" L"\0" L"\xff13" L"\0" L"\xff14" L"\0" L"\xff15" L"\0" L"\xff16" ++ L"\0" L"\xff17" L"\0" L"\xff18" L"\0" L"\xff19" L"\0" L"\xff1a" L"\0" ++ L"\xff1b" L"\0" L"\xff1c" L"\0" L"\xff1d" L"\0" L"\xff1e" L"\0" L"\xff1f" ++ L"\0" L"\xff20" L"\0" L"\xff21" L"\0" L"\xff22" L"\0" L"\xff23" L"\0" ++ L"\xff24" L"\0" L"\xff25" L"\0" L"\xff26" L"\0" L"\xff27" L"\0" L"\xff28" ++ L"\0" L"\xff29" L"\0" L"\xff2a" L"\0" L"\xff2b" L"\0" L"\xff2c" L"\0" ++ L"\xff2d" L"\0" L"\xff2e" L"\0" L"\xff2f" L"\0" L"\xff30" L"\0" L"\xff31" ++ L"\0" L"\xff32" L"\0" L"\xff33" L"\0" L"\xff34" L"\0" L"\xff35" L"\0" ++ L"\xff36" L"\0" L"\xff37" L"\0" L"\xff38" L"\0" L"\xff39" L"\0" L"\xff3a" ++ L"\0" L"\xff3b" L"\0" L"\xff3c" L"\0" L"\xff3d" L"\0" L"\xff3e" L"\0" ++ L"\xff3f" L"\0" L"\xff40" L"\0" L"\xff41" L"\0" L"\xff42" L"\0" L"\xff43" ++ L"\0" L"\xff44" L"\0" L"\xff45" L"\0" L"\xff46" L"\0" L"\xff47" L"\0" ++ L"\xff48" L"\0" L"\xff49" L"\0" L"\xff4a" L"\0" L"\xff4b" L"\0" L"\xff4c" ++ L"\0" L"\xff4d" L"\0" L"\xff4e" L"\0" L"\xff4f" L"\0" L"\xff50" L"\0" ++ L"\xff51" L"\0" L"\xff52" L"\0" L"\xff53" L"\0" L"\xff54" L"\0" L"\xff55" ++ L"\0" L"\xff56" L"\0" L"\xff57" L"\0" L"\xff58" L"\0" L"\xff59" L"\0" ++ L"\xff5a" L"\0" L"\xff5b" L"\0" L"\xff5c" L"\0" L"\xff5d" L"\0" L"\xff5e" ++ L"\0" L"\x0001d400" L"\0" L"\x0001d401" L"\0" L"\x0001d402" L"\0" ++ L"\x0001d403" L"\0" L"\x0001d404" L"\0" L"\x0001d405" L"\0" L"\x0001d406" ++ L"\0" L"\x0001d407" L"\0" L"\x0001d408" L"\0" L"\x0001d409" L"\0" ++ L"\x0001d40a" L"\0" L"\x0001d40b" L"\0" L"\x0001d40c" L"\0" L"\x0001d40d" ++ L"\0" L"\x0001d40e" L"\0" L"\x0001d40f" L"\0" L"\x0001d410" L"\0" ++ L"\x0001d411" L"\0" L"\x0001d412" L"\0" L"\x0001d413" L"\0" L"\x0001d414" ++ L"\0" L"\x0001d415" L"\0" L"\x0001d416" L"\0" L"\x0001d417" L"\0" ++ L"\x0001d418" L"\0" L"\x0001d419" L"\0" L"\x0001d41a" L"\0" L"\x0001d41b" ++ L"\0" L"\x0001d41c" L"\0" L"\x0001d41d" L"\0" L"\x0001d41e" L"\0" ++ L"\x0001d41f" L"\0" L"\x0001d420" L"\0" L"\x0001d421" L"\0" L"\x0001d422" ++ L"\0" L"\x0001d423" L"\0" L"\x0001d424" L"\0" L"\x0001d425" L"\0" ++ L"\x0001d426" L"\0" L"\x0001d427" L"\0" L"\x0001d428" L"\0" L"\x0001d429" ++ L"\0" L"\x0001d42a" L"\0" L"\x0001d42b" L"\0" L"\x0001d42c" L"\0" ++ L"\x0001d42d" L"\0" L"\x0001d42e" L"\0" L"\x0001d42f" L"\0" L"\x0001d430" ++ L"\0" L"\x0001d431" L"\0" L"\x0001d432" L"\0" L"\x0001d433" L"\0" ++ L"\x0001d434" L"\0" L"\x0001d435" L"\0" L"\x0001d436" L"\0" L"\x0001d437" ++ L"\0" L"\x0001d438" L"\0" L"\x0001d439" L"\0" L"\x0001d43a" L"\0" ++ L"\x0001d43b" L"\0" L"\x0001d43c" L"\0" L"\x0001d43d" L"\0" L"\x0001d43e" ++ L"\0" L"\x0001d43f" L"\0" L"\x0001d440" L"\0" L"\x0001d441" L"\0" ++ L"\x0001d442" L"\0" L"\x0001d443" L"\0" L"\x0001d444" L"\0" L"\x0001d445" ++ L"\0" L"\x0001d446" L"\0" L"\x0001d447" L"\0" L"\x0001d448" L"\0" ++ L"\x0001d449" L"\0" L"\x0001d44a" L"\0" L"\x0001d44b" L"\0" L"\x0001d44c" ++ L"\0" L"\x0001d44d" L"\0" L"\x0001d44e" L"\0" L"\x0001d44f" L"\0" ++ L"\x0001d450" L"\0" L"\x0001d451" L"\0" L"\x0001d452" L"\0" L"\x0001d453" ++ L"\0" L"\x0001d454" L"\0" L"\x0001d456" L"\0" L"\x0001d457" L"\0" ++ L"\x0001d458" L"\0" L"\x0001d459" L"\0" L"\x0001d45a" L"\0" L"\x0001d45b" ++ L"\0" L"\x0001d45c" L"\0" L"\x0001d45d" L"\0" L"\x0001d45e" L"\0" ++ L"\x0001d45f" L"\0" L"\x0001d460" L"\0" L"\x0001d461" L"\0" L"\x0001d462" ++ L"\0" L"\x0001d463" L"\0" L"\x0001d464" L"\0" L"\x0001d465" L"\0" ++ L"\x0001d466" L"\0" L"\x0001d467" L"\0" L"\x0001d468" L"\0" L"\x0001d469" ++ L"\0" L"\x0001d46a" L"\0" L"\x0001d46b" L"\0" L"\x0001d46c" L"\0" ++ L"\x0001d46d" L"\0" L"\x0001d46e" L"\0" L"\x0001d46f" L"\0" L"\x0001d470" ++ L"\0" L"\x0001d471" L"\0" L"\x0001d472" L"\0" L"\x0001d473" L"\0" ++ L"\x0001d474" L"\0" L"\x0001d475" L"\0" L"\x0001d476" L"\0" L"\x0001d477" ++ L"\0" L"\x0001d478" L"\0" L"\x0001d479" L"\0" L"\x0001d47a" L"\0" ++ L"\x0001d47b" L"\0" L"\x0001d47c" L"\0" L"\x0001d47d" L"\0" L"\x0001d47e" ++ L"\0" L"\x0001d47f" L"\0" L"\x0001d480" L"\0" L"\x0001d481" L"\0" ++ L"\x0001d482" L"\0" L"\x0001d483" L"\0" L"\x0001d484" L"\0" L"\x0001d485" ++ L"\0" L"\x0001d486" L"\0" L"\x0001d487" L"\0" L"\x0001d488" L"\0" ++ L"\x0001d489" L"\0" L"\x0001d48a" L"\0" L"\x0001d48b" L"\0" L"\x0001d48c" ++ L"\0" L"\x0001d48d" L"\0" L"\x0001d48e" L"\0" L"\x0001d48f" L"\0" ++ L"\x0001d490" L"\0" L"\x0001d491" L"\0" L"\x0001d492" L"\0" L"\x0001d493" ++ L"\0" L"\x0001d494" L"\0" L"\x0001d495" L"\0" L"\x0001d496" L"\0" ++ L"\x0001d497" L"\0" L"\x0001d498" L"\0" L"\x0001d499" L"\0" L"\x0001d49a" ++ L"\0" L"\x0001d49b" L"\0" L"\x0001d49c" L"\0" L"\x0001d49e" L"\0" ++ L"\x0001d49f" L"\0" L"\x0001d4a2" L"\0" L"\x0001d4a5" L"\0" L"\x0001d4a6" ++ L"\0" L"\x0001d4a9" L"\0" L"\x0001d4aa" L"\0" L"\x0001d4ab" L"\0" ++ L"\x0001d4ac" L"\0" L"\x0001d4ae" L"\0" L"\x0001d4af" L"\0" L"\x0001d4b0" ++ L"\0" L"\x0001d4b1" L"\0" L"\x0001d4b2" L"\0" L"\x0001d4b3" L"\0" ++ L"\x0001d4b4" L"\0" L"\x0001d4b5" L"\0" L"\x0001d4b6" L"\0" L"\x0001d4b7" ++ L"\0" L"\x0001d4b8" L"\0" L"\x0001d4b9" L"\0" L"\x0001d4bb" L"\0" ++ L"\x0001d4bd" L"\0" L"\x0001d4be" L"\0" L"\x0001d4bf" L"\0" L"\x0001d4c0" ++ L"\0" L"\x0001d4c2" L"\0" L"\x0001d4c3" L"\0" L"\x0001d4c5" L"\0" ++ L"\x0001d4c6" L"\0" L"\x0001d4c7" L"\0" L"\x0001d4c8" L"\0" L"\x0001d4c9" ++ L"\0" L"\x0001d4ca" L"\0" L"\x0001d4cb" L"\0" L"\x0001d4cc" L"\0" ++ L"\x0001d4cd" L"\0" L"\x0001d4ce" L"\0" L"\x0001d4cf" L"\0" L"\x0001d4d0" ++ L"\0" L"\x0001d4d1" L"\0" L"\x0001d4d2" L"\0" L"\x0001d4d3" L"\0" ++ L"\x0001d4d4" L"\0" L"\x0001d4d5" L"\0" L"\x0001d4d6" L"\0" L"\x0001d4d7" ++ L"\0" L"\x0001d4d8" L"\0" L"\x0001d4d9" L"\0" L"\x0001d4da" L"\0" ++ L"\x0001d4db" L"\0" L"\x0001d4dc" L"\0" L"\x0001d4dd" L"\0" L"\x0001d4de" ++ L"\0" L"\x0001d4df" L"\0" L"\x0001d4e0" L"\0" L"\x0001d4e1" L"\0" ++ L"\x0001d4e2" L"\0" L"\x0001d4e3" L"\0" L"\x0001d4e4" L"\0" L"\x0001d4e5" ++ L"\0" L"\x0001d4e6" L"\0" L"\x0001d4e7" L"\0" L"\x0001d4e8" L"\0" ++ L"\x0001d4e9" L"\0" L"\x0001d4ea" L"\0" L"\x0001d4eb" L"\0" L"\x0001d4ec" ++ L"\0" L"\x0001d4ed" L"\0" L"\x0001d4ee" L"\0" L"\x0001d4ef" L"\0" ++ L"\x0001d4f0" L"\0" L"\x0001d4f1" L"\0" L"\x0001d4f2" L"\0" L"\x0001d4f3" ++ L"\0" L"\x0001d4f4" L"\0" L"\x0001d4f5" L"\0" L"\x0001d4f6" L"\0" ++ L"\x0001d4f7" L"\0" L"\x0001d4f8" L"\0" L"\x0001d4f9" L"\0" L"\x0001d4fa" ++ L"\0" L"\x0001d4fb" L"\0" L"\x0001d4fc" L"\0" L"\x0001d4fd" L"\0" ++ L"\x0001d4fe" L"\0" L"\x0001d4ff" L"\0" L"\x0001d500" L"\0" L"\x0001d501" ++ L"\0" L"\x0001d502" L"\0" L"\x0001d503" L"\0" L"\x0001d504" L"\0" ++ L"\x0001d505" L"\0" L"\x0001d507" L"\0" L"\x0001d508" L"\0" L"\x0001d509" ++ L"\0" L"\x0001d50a" L"\0" L"\x0001d50d" L"\0" L"\x0001d50e" L"\0" ++ L"\x0001d50f" L"\0" L"\x0001d510" L"\0" L"\x0001d511" L"\0" L"\x0001d512" ++ L"\0" L"\x0001d513" L"\0" L"\x0001d514" L"\0" L"\x0001d516" L"\0" ++ L"\x0001d517" L"\0" L"\x0001d518" L"\0" L"\x0001d519" L"\0" L"\x0001d51a" ++ L"\0" L"\x0001d51b" L"\0" L"\x0001d51c" L"\0" L"\x0001d51e" L"\0" ++ L"\x0001d51f" L"\0" L"\x0001d520" L"\0" L"\x0001d521" L"\0" L"\x0001d522" ++ L"\0" L"\x0001d523" L"\0" L"\x0001d524" L"\0" L"\x0001d525" L"\0" ++ L"\x0001d526" L"\0" L"\x0001d527" L"\0" L"\x0001d528" L"\0" L"\x0001d529" ++ L"\0" L"\x0001d52a" L"\0" L"\x0001d52b" L"\0" L"\x0001d52c" L"\0" ++ L"\x0001d52d" L"\0" L"\x0001d52e" L"\0" L"\x0001d52f" L"\0" L"\x0001d530" ++ L"\0" L"\x0001d531" L"\0" L"\x0001d532" L"\0" L"\x0001d533" L"\0" ++ L"\x0001d534" L"\0" L"\x0001d535" L"\0" L"\x0001d536" L"\0" L"\x0001d537" ++ L"\0" L"\x0001d538" L"\0" L"\x0001d539" L"\0" L"\x0001d53b" L"\0" ++ L"\x0001d53c" L"\0" L"\x0001d53d" L"\0" L"\x0001d53e" L"\0" L"\x0001d540" ++ L"\0" L"\x0001d541" L"\0" L"\x0001d542" L"\0" L"\x0001d543" L"\0" ++ L"\x0001d544" L"\0" L"\x0001d546" L"\0" L"\x0001d54a" L"\0" L"\x0001d54b" ++ L"\0" L"\x0001d54c" L"\0" L"\x0001d54d" L"\0" L"\x0001d54e" L"\0" ++ L"\x0001d54f" L"\0" L"\x0001d550" L"\0" L"\x0001d552" L"\0" L"\x0001d553" ++ L"\0" L"\x0001d554" L"\0" L"\x0001d555" L"\0" L"\x0001d556" L"\0" ++ L"\x0001d557" L"\0" L"\x0001d558" L"\0" L"\x0001d559" L"\0" L"\x0001d55a" ++ L"\0" L"\x0001d55b" L"\0" L"\x0001d55c" L"\0" L"\x0001d55d" L"\0" ++ L"\x0001d55e" L"\0" L"\x0001d55f" L"\0" L"\x0001d560" L"\0" L"\x0001d561" ++ L"\0" L"\x0001d562" L"\0" L"\x0001d563" L"\0" L"\x0001d564" L"\0" ++ L"\x0001d565" L"\0" L"\x0001d566" L"\0" L"\x0001d567" L"\0" L"\x0001d568" ++ L"\0" L"\x0001d569" L"\0" L"\x0001d56a" L"\0" L"\x0001d56b" L"\0" ++ L"\x0001d56c" L"\0" L"\x0001d56d" L"\0" L"\x0001d56e" L"\0" L"\x0001d56f" ++ L"\0" L"\x0001d570" L"\0" L"\x0001d571" L"\0" L"\x0001d572" L"\0" ++ L"\x0001d573" L"\0" L"\x0001d574" L"\0" L"\x0001d575" L"\0" L"\x0001d576" ++ L"\0" L"\x0001d577" L"\0" L"\x0001d578" L"\0" L"\x0001d579" L"\0" ++ L"\x0001d57a" L"\0" L"\x0001d57b" L"\0" L"\x0001d57c" L"\0" L"\x0001d57d" ++ L"\0" L"\x0001d57e" L"\0" L"\x0001d57f" L"\0" L"\x0001d580" L"\0" ++ L"\x0001d581" L"\0" L"\x0001d582" L"\0" L"\x0001d583" L"\0" L"\x0001d584" ++ L"\0" L"\x0001d585" L"\0" L"\x0001d586" L"\0" L"\x0001d587" L"\0" ++ L"\x0001d588" L"\0" L"\x0001d589" L"\0" L"\x0001d58a" L"\0" L"\x0001d58b" ++ L"\0" L"\x0001d58c" L"\0" L"\x0001d58d" L"\0" L"\x0001d58e" L"\0" ++ L"\x0001d58f" L"\0" L"\x0001d590" L"\0" L"\x0001d591" L"\0" L"\x0001d592" ++ L"\0" L"\x0001d593" L"\0" L"\x0001d594" L"\0" L"\x0001d595" L"\0" ++ L"\x0001d596" L"\0" L"\x0001d597" L"\0" L"\x0001d598" L"\0" L"\x0001d599" ++ L"\0" L"\x0001d59a" L"\0" L"\x0001d59b" L"\0" L"\x0001d59c" L"\0" ++ L"\x0001d59d" L"\0" L"\x0001d59e" L"\0" L"\x0001d59f" L"\0" L"\x0001d5a0" ++ L"\0" L"\x0001d5a1" L"\0" L"\x0001d5a2" L"\0" L"\x0001d5a3" L"\0" ++ L"\x0001d5a4" L"\0" L"\x0001d5a5" L"\0" L"\x0001d5a6" L"\0" L"\x0001d5a7" ++ L"\0" L"\x0001d5a8" L"\0" L"\x0001d5a9" L"\0" L"\x0001d5aa" L"\0" ++ L"\x0001d5ab" L"\0" L"\x0001d5ac" L"\0" L"\x0001d5ad" L"\0" L"\x0001d5ae" ++ L"\0" L"\x0001d5af" L"\0" L"\x0001d5b0" L"\0" L"\x0001d5b1" L"\0" ++ L"\x0001d5b2" L"\0" L"\x0001d5b3" L"\0" L"\x0001d5b4" L"\0" L"\x0001d5b5" ++ L"\0" L"\x0001d5b6" L"\0" L"\x0001d5b7" L"\0" L"\x0001d5b8" L"\0" ++ L"\x0001d5b9" L"\0" L"\x0001d5ba" L"\0" L"\x0001d5bb" L"\0" L"\x0001d5bc" ++ L"\0" L"\x0001d5bd" L"\0" L"\x0001d5be" L"\0" L"\x0001d5bf" L"\0" ++ L"\x0001d5c0" L"\0" L"\x0001d5c1" L"\0" L"\x0001d5c2" L"\0" L"\x0001d5c3" ++ L"\0" L"\x0001d5c4" L"\0" L"\x0001d5c5" L"\0" L"\x0001d5c6" L"\0" ++ L"\x0001d5c7" L"\0" L"\x0001d5c8" L"\0" L"\x0001d5c9" L"\0" L"\x0001d5ca" ++ L"\0" L"\x0001d5cb" L"\0" L"\x0001d5cc" L"\0" L"\x0001d5cd" L"\0" ++ L"\x0001d5ce" L"\0" L"\x0001d5cf" L"\0" L"\x0001d5d0" L"\0" L"\x0001d5d1" ++ L"\0" L"\x0001d5d2" L"\0" L"\x0001d5d3" L"\0" L"\x0001d5d4" L"\0" ++ L"\x0001d5d5" L"\0" L"\x0001d5d6" L"\0" L"\x0001d5d7" L"\0" L"\x0001d5d8" ++ L"\0" L"\x0001d5d9" L"\0" L"\x0001d5da" L"\0" L"\x0001d5db" L"\0" ++ L"\x0001d5dc" L"\0" L"\x0001d5dd" L"\0" L"\x0001d5de" L"\0" L"\x0001d5df" ++ L"\0" L"\x0001d5e0" L"\0" L"\x0001d5e1" L"\0" L"\x0001d5e2" L"\0" ++ L"\x0001d5e3" L"\0" L"\x0001d5e4" L"\0" L"\x0001d5e5" L"\0" L"\x0001d5e6" ++ L"\0" L"\x0001d5e7" L"\0" L"\x0001d5e8" L"\0" L"\x0001d5e9" L"\0" ++ L"\x0001d5ea" L"\0" L"\x0001d5eb" L"\0" L"\x0001d5ec" L"\0" L"\x0001d5ed" ++ L"\0" L"\x0001d5ee" L"\0" L"\x0001d5ef" L"\0" L"\x0001d5f0" L"\0" ++ L"\x0001d5f1" L"\0" L"\x0001d5f2" L"\0" L"\x0001d5f3" L"\0" L"\x0001d5f4" ++ L"\0" L"\x0001d5f5" L"\0" L"\x0001d5f6" L"\0" L"\x0001d5f7" L"\0" ++ L"\x0001d5f8" L"\0" L"\x0001d5f9" L"\0" L"\x0001d5fa" L"\0" L"\x0001d5fb" ++ L"\0" L"\x0001d5fc" L"\0" L"\x0001d5fd" L"\0" L"\x0001d5fe" L"\0" ++ L"\x0001d5ff" L"\0" L"\x0001d600" L"\0" L"\x0001d601" L"\0" L"\x0001d602" ++ L"\0" L"\x0001d603" L"\0" L"\x0001d604" L"\0" L"\x0001d605" L"\0" ++ L"\x0001d606" L"\0" L"\x0001d607" L"\0" L"\x0001d608" L"\0" L"\x0001d609" ++ L"\0" L"\x0001d60a" L"\0" L"\x0001d60b" L"\0" L"\x0001d60c" L"\0" ++ L"\x0001d60d" L"\0" L"\x0001d60e" L"\0" L"\x0001d60f" L"\0" L"\x0001d610" ++ L"\0" L"\x0001d611" L"\0" L"\x0001d612" L"\0" L"\x0001d613" L"\0" ++ L"\x0001d614" L"\0" L"\x0001d615" L"\0" L"\x0001d616" L"\0" L"\x0001d617" ++ L"\0" L"\x0001d618" L"\0" L"\x0001d619" L"\0" L"\x0001d61a" L"\0" ++ L"\x0001d61b" L"\0" L"\x0001d61c" L"\0" L"\x0001d61d" L"\0" L"\x0001d61e" ++ L"\0" L"\x0001d61f" L"\0" L"\x0001d620" L"\0" L"\x0001d621" L"\0" ++ L"\x0001d622" L"\0" L"\x0001d623" L"\0" L"\x0001d624" L"\0" L"\x0001d625" ++ L"\0" L"\x0001d626" L"\0" L"\x0001d627" L"\0" L"\x0001d628" L"\0" ++ L"\x0001d629" L"\0" L"\x0001d62a" L"\0" L"\x0001d62b" L"\0" L"\x0001d62c" ++ L"\0" L"\x0001d62d" L"\0" L"\x0001d62e" L"\0" L"\x0001d62f" L"\0" ++ L"\x0001d630" L"\0" L"\x0001d631" L"\0" L"\x0001d632" L"\0" L"\x0001d633" ++ L"\0" L"\x0001d634" L"\0" L"\x0001d635" L"\0" L"\x0001d636" L"\0" ++ L"\x0001d637" L"\0" L"\x0001d638" L"\0" L"\x0001d639" L"\0" L"\x0001d63a" ++ L"\0" L"\x0001d63b" L"\0" L"\x0001d63c" L"\0" L"\x0001d63d" L"\0" ++ L"\x0001d63e" L"\0" L"\x0001d63f" L"\0" L"\x0001d640" L"\0" L"\x0001d641" ++ L"\0" L"\x0001d642" L"\0" L"\x0001d643" L"\0" L"\x0001d644" L"\0" ++ L"\x0001d645" L"\0" L"\x0001d646" L"\0" L"\x0001d647" L"\0" L"\x0001d648" ++ L"\0" L"\x0001d649" L"\0" L"\x0001d64a" L"\0" L"\x0001d64b" L"\0" ++ L"\x0001d64c" L"\0" L"\x0001d64d" L"\0" L"\x0001d64e" L"\0" L"\x0001d64f" ++ L"\0" L"\x0001d650" L"\0" L"\x0001d651" L"\0" L"\x0001d652" L"\0" ++ L"\x0001d653" L"\0" L"\x0001d654" L"\0" L"\x0001d655" L"\0" L"\x0001d656" ++ L"\0" L"\x0001d657" L"\0" L"\x0001d658" L"\0" L"\x0001d659" L"\0" ++ L"\x0001d65a" L"\0" L"\x0001d65b" L"\0" L"\x0001d65c" L"\0" L"\x0001d65d" ++ L"\0" L"\x0001d65e" L"\0" L"\x0001d65f" L"\0" L"\x0001d660" L"\0" ++ L"\x0001d661" L"\0" L"\x0001d662" L"\0" L"\x0001d663" L"\0" L"\x0001d664" ++ L"\0" L"\x0001d665" L"\0" L"\x0001d666" L"\0" L"\x0001d667" L"\0" ++ L"\x0001d668" L"\0" L"\x0001d669" L"\0" L"\x0001d66a" L"\0" L"\x0001d66b" ++ L"\0" L"\x0001d66c" L"\0" L"\x0001d66d" L"\0" L"\x0001d66e" L"\0" ++ L"\x0001d66f" L"\0" L"\x0001d670" L"\0" L"\x0001d671" L"\0" L"\x0001d672" ++ L"\0" L"\x0001d673" L"\0" L"\x0001d674" L"\0" L"\x0001d675" L"\0" ++ L"\x0001d676" L"\0" L"\x0001d677" L"\0" L"\x0001d678" L"\0" L"\x0001d679" ++ L"\0" L"\x0001d67a" L"\0" L"\x0001d67b" L"\0" L"\x0001d67c" L"\0" ++ L"\x0001d67d" L"\0" L"\x0001d67e" L"\0" L"\x0001d67f" L"\0" L"\x0001d680" ++ L"\0" L"\x0001d681" L"\0" L"\x0001d682" L"\0" L"\x0001d683" L"\0" ++ L"\x0001d684" L"\0" L"\x0001d685" L"\0" L"\x0001d686" L"\0" L"\x0001d687" ++ L"\0" L"\x0001d688" L"\0" L"\x0001d689" L"\0" L"\x0001d68a" L"\0" ++ L"\x0001d68b" L"\0" L"\x0001d68c" L"\0" L"\x0001d68d" L"\0" L"\x0001d68e" ++ L"\0" L"\x0001d68f" L"\0" L"\x0001d690" L"\0" L"\x0001d691" L"\0" ++ L"\x0001d692" L"\0" L"\x0001d693" L"\0" L"\x0001d694" L"\0" L"\x0001d695" ++ L"\0" L"\x0001d696" L"\0" L"\x0001d697" L"\0" L"\x0001d698" L"\0" ++ L"\x0001d699" L"\0" L"\x0001d69a" L"\0" L"\x0001d69b" L"\0" L"\x0001d69c" ++ L"\0" L"\x0001d69d" L"\0" L"\x0001d69e" L"\0" L"\x0001d69f" L"\0" ++ L"\x0001d6a0" L"\0" L"\x0001d6a1" L"\0" L"\x0001d6a2" L"\0" L"\x0001d6a3" ++ L"\0" L"\x0001d7ce" L"\0" L"\x0001d7cf" L"\0" L"\x0001d7d0" L"\0" ++ L"\x0001d7d1" L"\0" L"\x0001d7d2" L"\0" L"\x0001d7d3" L"\0" L"\x0001d7d4" ++ L"\0" L"\x0001d7d5" L"\0" L"\x0001d7d6" L"\0" L"\x0001d7d7" L"\0" ++ L"\x0001d7d8" L"\0" L"\x0001d7d9" L"\0" L"\x0001d7da" L"\0" L"\x0001d7db" ++ L"\0" L"\x0001d7dc" L"\0" L"\x0001d7dd" L"\0" L"\x0001d7de" L"\0" ++ L"\x0001d7df" L"\0" L"\x0001d7e0" L"\0" L"\x0001d7e1" L"\0" L"\x0001d7e2" ++ L"\0" L"\x0001d7e3" L"\0" L"\x0001d7e4" L"\0" L"\x0001d7e5" L"\0" ++ L"\x0001d7e6" L"\0" L"\x0001d7e7" L"\0" L"\x0001d7e8" L"\0" L"\x0001d7e9" ++ L"\0" L"\x0001d7ea" L"\0" L"\x0001d7eb" L"\0" L"\x0001d7ec" L"\0" ++ L"\x0001d7ed" L"\0" L"\x0001d7ee" L"\0" L"\x0001d7ef" L"\0" L"\x0001d7f0" ++ L"\0" L"\x0001d7f1" L"\0" L"\x0001d7f2" L"\0" L"\x0001d7f3" L"\0" ++ L"\x0001d7f4" L"\0" L"\x0001d7f5" L"\0" L"\x0001d7f6" L"\0" L"\x0001d7f7" ++ L"\0" L"\x0001d7f8" L"\0" L"\x0001d7f9" L"\0" L"\x0001d7fa" L"\0" ++ L"\x0001d7fb" L"\0" L"\x0001d7fc" L"\0" L"\x0001d7fd" L"\0" L"\x0001d7fe" ++ L"\0" L"\x0001d7ff"; + static const uint32_t translit_to_idx[] = + { + 0, 3, 8, 12, 15, 20, 23, 26, 30, 37, 44, 51, +@@ -471,22 +471,22 @@ static const uint32_t translit_to_idx[] + 180, 183, 186, 189, 192, 196, 199, 202, 205, 208, 211, 214, + 217, 221, 224, 227, 230, 233, 237, 242, 245, 248, 252, 257, + 260, 263, 267, 270, 274, 278, 282, 285, 287, 289, 291, 293, +- 297, 302, 307, 312, 315, 320, 325, 328, 331, 334, 337, 340, +- 343, 346, 349, 352, 355, 359, 362, 365, 368, 371, 374, 379, +- 385, 388, 393, 396, 399, 402, 405, 408, 411, 414, 417, 420, +- 423, 426, 429, 432, 435, 438, 445, 452, 459, 466, 473, 480, +- 487, 494, 501, 508, 515, 522, 527, 530, 534, 539, 543, 546, +- 550, 555, 561, 565, 568, 572, 577, 580, 583, 586, 589, 592, +- 596, 601, 605, 608, 612, 617, 623, 627, 630, 634, 639, 642, +- 645, 648, 651, 655, 659, 664, 668, 672, 677, 680, 683, 686, +- 689, 692, 695, 698, 702, 706, 710, 714, 719, 724, 729, 734, +- 739, 744, 749, 754, 759, 764, 768, 772, 776, 780, 784, 788, +- 792, 796, 801, 806, 811, 816, 821, 826, 831, 836, 841, 845, +- 850, 855, 859, 863, 867, 871, 875, 880, 883, 887, 892, 897, +- 902, 907, 912, 917, 922, 927, 932, 938, 944, 950, 956, 962, +- 968, 974, 980, 986, 992, 998, 1003, 1008, 1013, 1018, 1023, 1028, +- 1033, 1038, 1043, 1049, 1055, 1061, 1067, 1073, 1079, 1085, 1091, 1097, +- 1103, 1109, 1113, 1117, 1121, 1125, 1129, 1133, 1137, 1141, 1145, 1150, ++ 297, 302, 307, 312, 317, 320, 325, 330, 333, 336, 339, 342, ++ 345, 348, 351, 354, 357, 360, 364, 367, 370, 373, 376, 379, ++ 384, 390, 393, 398, 401, 404, 407, 410, 413, 416, 419, 422, ++ 425, 428, 431, 434, 437, 440, 443, 450, 457, 464, 471, 478, ++ 485, 492, 499, 506, 513, 520, 527, 532, 535, 539, 544, 548, ++ 551, 555, 560, 566, 570, 573, 577, 582, 585, 588, 591, 594, ++ 597, 601, 606, 610, 613, 617, 622, 628, 632, 635, 639, 644, ++ 647, 650, 653, 656, 660, 664, 669, 673, 677, 682, 685, 688, ++ 691, 694, 697, 700, 703, 707, 711, 715, 719, 724, 729, 734, ++ 739, 744, 749, 754, 759, 764, 769, 773, 777, 781, 785, 789, ++ 793, 797, 801, 806, 811, 816, 821, 826, 831, 836, 841, 846, ++ 850, 855, 860, 864, 868, 872, 876, 880, 885, 888, 892, 897, ++ 902, 907, 912, 917, 922, 927, 932, 937, 943, 949, 955, 961, ++ 967, 973, 979, 985, 991, 997, 1003, 1008, 1013, 1018, 1023, 1028, ++ 1033, 1038, 1043, 1048, 1054, 1060, 1066, 1072, 1078, 1084, 1090, 1096, ++ 1102, 1108, 1114, 1118, 1122, 1126, 1130, 1134, 1138, 1142, 1146, 1150, + 1155, 1160, 1165, 1170, 1175, 1180, 1185, 1190, 1195, 1200, 1205, 1210, + 1215, 1220, 1225, 1230, 1235, 1240, 1245, 1250, 1255, 1260, 1265, 1270, + 1275, 1280, 1285, 1290, 1295, 1300, 1305, 1310, 1315, 1320, 1325, 1330, +@@ -494,89 +494,89 @@ static const uint32_t translit_to_idx[] + 1395, 1400, 1405, 1410, 1415, 1420, 1425, 1430, 1435, 1440, 1445, 1450, + 1455, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495, 1500, 1505, 1510, + 1515, 1520, 1525, 1530, 1535, 1540, 1545, 1550, 1555, 1560, 1565, 1570, +- 1575, 1580, 1585, 1590, 1595, 1598, 1601, 1604, 1607, 1610, 1613, 1616, +- 1619, 1622, 1625, 1628, 1631, 1636, 1640, 1645, 1648, 1651, 1657, 1663, +- 1669, 1675, 1681, 1687, 1693, 1699, 1705, 1711, 1717, 1723, 1729, 1735, +- 1741, 1747, 1753, 1759, 1765, 1771, 1777, 1783, 1789, 1795, 1801, 1807, +- 1813, 1819, 1825, 1831, 1836, 1840, 1844, 1849, 1853, 1857, 1861, 1865, +- 1869, 1873, 1877, 1881, 1885, 1889, 1894, 1900, 1904, 1908, 1912, 1916, +- 1920, 1924, 1928, 1933, 1938, 1943, 1948, 1952, 1956, 1960, 1964, 1968, +- 1972, 1976, 1980, 1984, 1988, 1994, 2000, 2005, 2011, 2017, 2023, 2028, +- 2034, 2039, 2046, 2050, 2055, 2060, 2065, 2070, 2077, 2086, 2090, 2094, +- 2098, 2102, 2106, 2110, 2114, 2118, 2122, 2126, 2130, 2134, 2138, 2142, +- 2146, 2150, 2156, 2160, 2164, 2168, 2174, 2179, 2183, 2187, 2191, 2195, +- 2199, 2203, 2207, 2211, 2215, 2219, 2224, 2228, 2232, 2237, 2242, 2246, +- 2252, 2257, 2261, 2265, 2269, 2273, 2277, 2281, 2285, 2290, 2295, 2299, +- 2302, 2304, 2306, 2308, 2310, 2312, 2314, 2316, 2318, 2320, 2322, 2324, +- 2326, 2328, 2330, 2332, 2334, 2337, 2340, 2343, 2346, 2349, 2352, 2355, +- 2358, 2361, 2364, 2367, 2370, 2373, 2376, 2379, 2382, 2385, 2388, 2391, +- 2394, 2397, 2400, 2403, 2406, 2409, 2411, 2414, 2417, 2420, 2423, 2426, +- 2429, 2432, 2435, 2438, 2441, 2444, 2447, 2450, 2453, 2456, 2459, 2462, +- 2465, 2468, 2471, 2474, 2477, 2480, 2483, 2486, 2489, 2492, 2495, 2498, +- 2501, 2504, 2507, 2510, 2513, 2516, 2519, 2522, 2525, 2528, 2531, 2534, +- 2537, 2540, 2543, 2546, 2549, 2552, 2555, 2558, 2561, 2564, 2567, 2570, +- 2573, 2576, 2579, 2582, 2585, 2588, 2591, 2594, 2597, 2600, 2603, 2606, +- 2609, 2612, 2615, 2618, 2621, 2624, 2627, 2630, 2633, 2636, 2639, 2642, +- 2645, 2648, 2651, 2654, 2657, 2660, 2663, 2666, 2669, 2672, 2675, 2678, +- 2681, 2684, 2687, 2690, 2693, 2696, 2699, 2702, 2705, 2708, 2711, 2714, +- 2717, 2720, 2723, 2726, 2729, 2732, 2735, 2738, 2741, 2744, 2747, 2750, +- 2753, 2756, 2759, 2762, 2765, 2768, 2771, 2774, 2777, 2780, 2783, 2786, +- 2789, 2792, 2795, 2798, 2801, 2804, 2807, 2810, 2813, 2816, 2819, 2822, +- 2825, 2828, 2831, 2834, 2837, 2840, 2843, 2846, 2849, 2852, 2855, 2858, +- 2861, 2864, 2867, 2870, 2873, 2876, 2879, 2882, 2885, 2888, 2891, 2894, +- 2897, 2900, 2903, 2906, 2909, 2912, 2915, 2918, 2921, 2924, 2927, 2930, +- 2933, 2936, 2939, 2942, 2945, 2948, 2951, 2954, 2957, 2960, 2963, 2966, +- 2969, 2972, 2975, 2978, 2981, 2984, 2987, 2990, 2993, 2996, 2999, 3002, +- 3005, 3008, 3011, 3014, 3017, 3020, 3023, 3026, 3029, 3032, 3035, 3038, +- 3041, 3044, 3047, 3050, 3053, 3056, 3059, 3062, 3065, 3068, 3071, 3074, +- 3077, 3080, 3083, 3086, 3089, 3092, 3095, 3098, 3101, 3104, 3107, 3110, +- 3113, 3116, 3119, 3122, 3125, 3128, 3131, 3134, 3137, 3140, 3143, 3146, +- 3149, 3152, 3155, 3158, 3161, 3164, 3167, 3170, 3173, 3176, 3179, 3182, +- 3185, 3188, 3191, 3194, 3197, 3200, 3203, 3206, 3209, 3212, 3215, 3218, +- 3221, 3224, 3227, 3230, 3233, 3236, 3239, 3242, 3245, 3248, 3251, 3254, +- 3257, 3260, 3263, 3266, 3269, 3272, 3275, 3278, 3281, 3284, 3287, 3290, +- 3293, 3296, 3299, 3302, 3305, 3308, 3311, 3314, 3317, 3320, 3323, 3326, +- 3329, 3332, 3335, 3338, 3341, 3344, 3347, 3350, 3353, 3356, 3359, 3362, +- 3365, 3368, 3371, 3374, 3377, 3380, 3383, 3386, 3389, 3392, 3395, 3398, +- 3401, 3404, 3407, 3410, 3413, 3416, 3419, 3422, 3425, 3428, 3431, 3434, +- 3437, 3440, 3443, 3446, 3449, 3452, 3455, 3458, 3461, 3464, 3467, 3470, +- 3473, 3476, 3479, 3482, 3485, 3488, 3491, 3494, 3497, 3500, 3503, 3506, +- 3509, 3512, 3515, 3518, 3521, 3524, 3527, 3530, 3533, 3536, 3539, 3542, +- 3545, 3548, 3551, 3554, 3557, 3560, 3563, 3566, 3569, 3572, 3575, 3578, +- 3581, 3584, 3587, 3590, 3593, 3596, 3599, 3602, 3605, 3608, 3611, 3614, +- 3617, 3620, 3623, 3626, 3629, 3632, 3635, 3638, 3641, 3644, 3647, 3650, +- 3653, 3656, 3659, 3662, 3665, 3668, 3671, 3674, 3677, 3680, 3683, 3686, +- 3689, 3692, 3695, 3698, 3701, 3704, 3707, 3710, 3713, 3716, 3719, 3722, +- 3725, 3728, 3731, 3734, 3737, 3740, 3743, 3746, 3749, 3752, 3755, 3758, +- 3761, 3764, 3767, 3770, 3773, 3776, 3779, 3782, 3785, 3788, 3791, 3794, +- 3797, 3800, 3803, 3806, 3809, 3812, 3815, 3818, 3821, 3824, 3827, 3830, +- 3833, 3836, 3839, 3842, 3845, 3848, 3851, 3854, 3857, 3860, 3863, 3866, +- 3869, 3872, 3875, 3878, 3881, 3884, 3887, 3890, 3893, 3896, 3899, 3902, +- 3905, 3908, 3911, 3914, 3917, 3920, 3923, 3926, 3929, 3932, 3935, 3938, +- 3941, 3944, 3947, 3950, 3953, 3956, 3959, 3962, 3965, 3968, 3971, 3974, +- 3977, 3980, 3983, 3986, 3989, 3992, 3995, 3998, 4001, 4004, 4007, 4010, +- 4013, 4016, 4019, 4022, 4025, 4028, 4031, 4034, 4037, 4040, 4043, 4046, +- 4049, 4052, 4055, 4058, 4061, 4064, 4067, 4070, 4073, 4076, 4079, 4082, +- 4085, 4088, 4091, 4094, 4097, 4100, 4103, 4106, 4109, 4112, 4115, 4118, +- 4121, 4124, 4127, 4130, 4133, 4136, 4139, 4142, 4145, 4148, 4151, 4154, +- 4157, 4160, 4163, 4166, 4169, 4172, 4175, 4178, 4181, 4184, 4187, 4190, +- 4193, 4196, 4199, 4202, 4205, 4208, 4211, 4214, 4217, 4220, 4223, 4226, +- 4229, 4232, 4235, 4238, 4241, 4244, 4247, 4250, 4253, 4256, 4259, 4262, +- 4265, 4268, 4271, 4274, 4277, 4280, 4283, 4286, 4289, 4292, 4295, 4298, +- 4301, 4304, 4307, 4310, 4313, 4316, 4319, 4322, 4325, 4328, 4331, 4334, +- 4337, 4340, 4343, 4346, 4349, 4352, 4355, 4358, 4361, 4364, 4367, 4370, +- 4373, 4376, 4379, 4382, 4385, 4388, 4391, 4394, 4397, 4400, 4403, 4406, +- 4409, 4412, 4415, 4418, 4421, 4424, 4427, 4430, 4433, 4436, 4439, 4442, +- 4445, 4448, 4451, 4454, 4457, 4460, 4463, 4466, 4469, 4472, 4475, 4478, +- 4481, 4484, 4487, 4490, 4493, 4496, 4499, 4502, 4505, 4508, 4511, 4514, +- 4517, 4520, 4523, 4526, 4529, 4532, 4535, 4538, 4541, 4544, 4547, 4550, +- 4553, 4556, 4559, 4562, 4565, 4568, 4571, 4574, 4577, 4580, 4583, 4586, +- 4589, 4592, 4595, 4598, 4601, 4604, 4607, 4610, 4613, 4616, 4619, 4622, +- 4625, 4628, 4631, 4634, 4637, 4640, 4643, 4646, 4649, 4652, 4655, 4658, +- 4661, 4664, 4667, 4670, 4673, 4676, 4679, 4682, 4685, 4688, 4691, 4694, +- 4697, 4700, 4703, 4706, 4709, 4712, 4715, 4718, 4721, 4724, 4727, 4730, +- 4733, 4736, 4739, 4742, 4745, 4748, 4751, 4754, 4757, 4760, 4763, 4766, +- 4769, 4772, 4775, 4778, 4781, 4784, 4787, 4790, 4793 ++ 1575, 1580, 1585, 1590, 1595, 1600, 1603, 1606, 1609, 1612, 1615, 1618, ++ 1621, 1624, 1627, 1630, 1633, 1636, 1641, 1645, 1650, 1653, 1656, 1662, ++ 1668, 1674, 1680, 1686, 1692, 1698, 1704, 1710, 1716, 1722, 1728, 1734, ++ 1740, 1746, 1752, 1758, 1764, 1770, 1776, 1782, 1788, 1794, 1800, 1806, ++ 1812, 1818, 1824, 1830, 1836, 1841, 1845, 1849, 1854, 1858, 1862, 1866, ++ 1870, 1874, 1878, 1882, 1886, 1890, 1894, 1899, 1905, 1909, 1913, 1917, ++ 1921, 1925, 1929, 1933, 1938, 1943, 1948, 1953, 1957, 1961, 1965, 1969, ++ 1973, 1977, 1981, 1985, 1989, 1993, 1999, 2005, 2010, 2016, 2022, 2028, ++ 2033, 2039, 2044, 2051, 2055, 2060, 2065, 2070, 2075, 2082, 2091, 2095, ++ 2099, 2103, 2107, 2111, 2115, 2119, 2123, 2127, 2131, 2135, 2139, 2143, ++ 2147, 2151, 2155, 2161, 2165, 2169, 2173, 2179, 2184, 2188, 2192, 2196, ++ 2200, 2204, 2208, 2212, 2216, 2220, 2224, 2229, 2233, 2237, 2242, 2247, ++ 2251, 2257, 2262, 2266, 2270, 2274, 2278, 2282, 2286, 2290, 2295, 2300, ++ 2304, 2307, 2309, 2311, 2313, 2315, 2317, 2319, 2321, 2323, 2325, 2327, ++ 2329, 2331, 2333, 2335, 2337, 2339, 2342, 2345, 2348, 2351, 2354, 2357, ++ 2360, 2363, 2366, 2369, 2372, 2375, 2378, 2381, 2384, 2387, 2390, 2393, ++ 2396, 2399, 2402, 2405, 2408, 2411, 2414, 2416, 2419, 2422, 2425, 2428, ++ 2431, 2434, 2437, 2440, 2443, 2446, 2449, 2452, 2455, 2458, 2461, 2464, ++ 2467, 2470, 2473, 2476, 2479, 2482, 2485, 2488, 2491, 2494, 2497, 2500, ++ 2503, 2506, 2509, 2512, 2515, 2518, 2521, 2524, 2527, 2530, 2533, 2536, ++ 2539, 2542, 2545, 2548, 2551, 2554, 2557, 2560, 2563, 2566, 2569, 2572, ++ 2575, 2578, 2581, 2584, 2587, 2590, 2593, 2596, 2599, 2602, 2605, 2608, ++ 2611, 2614, 2617, 2620, 2623, 2626, 2629, 2632, 2635, 2638, 2641, 2644, ++ 2647, 2650, 2653, 2656, 2659, 2662, 2665, 2668, 2671, 2674, 2677, 2680, ++ 2683, 2686, 2689, 2692, 2695, 2698, 2701, 2704, 2707, 2710, 2713, 2716, ++ 2719, 2722, 2725, 2728, 2731, 2734, 2737, 2740, 2743, 2746, 2749, 2752, ++ 2755, 2758, 2761, 2764, 2767, 2770, 2773, 2776, 2779, 2782, 2785, 2788, ++ 2791, 2794, 2797, 2800, 2803, 2806, 2809, 2812, 2815, 2818, 2821, 2824, ++ 2827, 2830, 2833, 2836, 2839, 2842, 2845, 2848, 2851, 2854, 2857, 2860, ++ 2863, 2866, 2869, 2872, 2875, 2878, 2881, 2884, 2887, 2890, 2893, 2896, ++ 2899, 2902, 2905, 2908, 2911, 2914, 2917, 2920, 2923, 2926, 2929, 2932, ++ 2935, 2938, 2941, 2944, 2947, 2950, 2953, 2956, 2959, 2962, 2965, 2968, ++ 2971, 2974, 2977, 2980, 2983, 2986, 2989, 2992, 2995, 2998, 3001, 3004, ++ 3007, 3010, 3013, 3016, 3019, 3022, 3025, 3028, 3031, 3034, 3037, 3040, ++ 3043, 3046, 3049, 3052, 3055, 3058, 3061, 3064, 3067, 3070, 3073, 3076, ++ 3079, 3082, 3085, 3088, 3091, 3094, 3097, 3100, 3103, 3106, 3109, 3112, ++ 3115, 3118, 3121, 3124, 3127, 3130, 3133, 3136, 3139, 3142, 3145, 3148, ++ 3151, 3154, 3157, 3160, 3163, 3166, 3169, 3172, 3175, 3178, 3181, 3184, ++ 3187, 3190, 3193, 3196, 3199, 3202, 3205, 3208, 3211, 3214, 3217, 3220, ++ 3223, 3226, 3229, 3232, 3235, 3238, 3241, 3244, 3247, 3250, 3253, 3256, ++ 3259, 3262, 3265, 3268, 3271, 3274, 3277, 3280, 3283, 3286, 3289, 3292, ++ 3295, 3298, 3301, 3304, 3307, 3310, 3313, 3316, 3319, 3322, 3325, 3328, ++ 3331, 3334, 3337, 3340, 3343, 3346, 3349, 3352, 3355, 3358, 3361, 3364, ++ 3367, 3370, 3373, 3376, 3379, 3382, 3385, 3388, 3391, 3394, 3397, 3400, ++ 3403, 3406, 3409, 3412, 3415, 3418, 3421, 3424, 3427, 3430, 3433, 3436, ++ 3439, 3442, 3445, 3448, 3451, 3454, 3457, 3460, 3463, 3466, 3469, 3472, ++ 3475, 3478, 3481, 3484, 3487, 3490, 3493, 3496, 3499, 3502, 3505, 3508, ++ 3511, 3514, 3517, 3520, 3523, 3526, 3529, 3532, 3535, 3538, 3541, 3544, ++ 3547, 3550, 3553, 3556, 3559, 3562, 3565, 3568, 3571, 3574, 3577, 3580, ++ 3583, 3586, 3589, 3592, 3595, 3598, 3601, 3604, 3607, 3610, 3613, 3616, ++ 3619, 3622, 3625, 3628, 3631, 3634, 3637, 3640, 3643, 3646, 3649, 3652, ++ 3655, 3658, 3661, 3664, 3667, 3670, 3673, 3676, 3679, 3682, 3685, 3688, ++ 3691, 3694, 3697, 3700, 3703, 3706, 3709, 3712, 3715, 3718, 3721, 3724, ++ 3727, 3730, 3733, 3736, 3739, 3742, 3745, 3748, 3751, 3754, 3757, 3760, ++ 3763, 3766, 3769, 3772, 3775, 3778, 3781, 3784, 3787, 3790, 3793, 3796, ++ 3799, 3802, 3805, 3808, 3811, 3814, 3817, 3820, 3823, 3826, 3829, 3832, ++ 3835, 3838, 3841, 3844, 3847, 3850, 3853, 3856, 3859, 3862, 3865, 3868, ++ 3871, 3874, 3877, 3880, 3883, 3886, 3889, 3892, 3895, 3898, 3901, 3904, ++ 3907, 3910, 3913, 3916, 3919, 3922, 3925, 3928, 3931, 3934, 3937, 3940, ++ 3943, 3946, 3949, 3952, 3955, 3958, 3961, 3964, 3967, 3970, 3973, 3976, ++ 3979, 3982, 3985, 3988, 3991, 3994, 3997, 4000, 4003, 4006, 4009, 4012, ++ 4015, 4018, 4021, 4024, 4027, 4030, 4033, 4036, 4039, 4042, 4045, 4048, ++ 4051, 4054, 4057, 4060, 4063, 4066, 4069, 4072, 4075, 4078, 4081, 4084, ++ 4087, 4090, 4093, 4096, 4099, 4102, 4105, 4108, 4111, 4114, 4117, 4120, ++ 4123, 4126, 4129, 4132, 4135, 4138, 4141, 4144, 4147, 4150, 4153, 4156, ++ 4159, 4162, 4165, 4168, 4171, 4174, 4177, 4180, 4183, 4186, 4189, 4192, ++ 4195, 4198, 4201, 4204, 4207, 4210, 4213, 4216, 4219, 4222, 4225, 4228, ++ 4231, 4234, 4237, 4240, 4243, 4246, 4249, 4252, 4255, 4258, 4261, 4264, ++ 4267, 4270, 4273, 4276, 4279, 4282, 4285, 4288, 4291, 4294, 4297, 4300, ++ 4303, 4306, 4309, 4312, 4315, 4318, 4321, 4324, 4327, 4330, 4333, 4336, ++ 4339, 4342, 4345, 4348, 4351, 4354, 4357, 4360, 4363, 4366, 4369, 4372, ++ 4375, 4378, 4381, 4384, 4387, 4390, 4393, 4396, 4399, 4402, 4405, 4408, ++ 4411, 4414, 4417, 4420, 4423, 4426, 4429, 4432, 4435, 4438, 4441, 4444, ++ 4447, 4450, 4453, 4456, 4459, 4462, 4465, 4468, 4471, 4474, 4477, 4480, ++ 4483, 4486, 4489, 4492, 4495, 4498, 4501, 4504, 4507, 4510, 4513, 4516, ++ 4519, 4522, 4525, 4528, 4531, 4534, 4537, 4540, 4543, 4546, 4549, 4552, ++ 4555, 4558, 4561, 4564, 4567, 4570, 4573, 4576, 4579, 4582, 4585, 4588, ++ 4591, 4594, 4597, 4600, 4603, 4606, 4609, 4612, 4615, 4618, 4621, 4624, ++ 4627, 4630, 4633, 4636, 4639, 4642, 4645, 4648, 4651, 4654, 4657, 4660, ++ 4663, 4666, 4669, 4672, 4675, 4678, 4681, 4684, 4687, 4690, 4693, 4696, ++ 4699, 4702, 4705, 4708, 4711, 4714, 4717, 4720, 4723, 4726, 4729, 4732, ++ 4735, 4738, 4741, 4744, 4747, 4750, 4753, 4756, 4759, 4762, 4765, 4768, ++ 4771, 4774, 4777, 4780, 4783, 4786, 4789, 4792, 4795, 4798 + }; + static const wchar_t translit_to_tbl[] = + L" \0" L"\0" L"(C)\0" L"\0" L"<<\0" L"\0" L"-\0" L"\0" L"(R)\0" L"\0" L"u\0" +@@ -594,73 +594,73 @@ static const wchar_t translit_to_tbl[] = + L"\0" L"..\0" L"\0" L"...\0" L"\0" L" \0" L"\0" L"`\0" L"\0" L"``\0" L"\0" + L"```\0" L"\0" L"<\0" L"\0" L">\0" L"\0" L"!!\0" L"\0" L"/\0" L"\0" L"??\0" + L"\0" L"?!\0" L"\0" L"!?\0" L"\0" L" \0" L"\0" L"\0" L"\0" L"\0" L"\0" L"\0" +- L"\0" L"\0" L"\0" L"Rs\0" L"\0" L"EUR\0" L"\0" L"a/c\0" L"\0" L"a/s\0" L"\0" +- L"C\0" L"\0" L"c/o\0" L"\0" L"c/u\0" L"\0" L"g\0" L"\0" L"H\0" L"\0" L"H\0" +- L"\0" L"H\0" L"\0" L"h\0" L"\0" L"I\0" L"\0" L"I\0" L"\0" L"L\0" L"\0" +- L"l\0" L"\0" L"N\0" L"\0" L"No\0" L"\0" L"P\0" L"\0" L"Q\0" L"\0" L"R\0" +- L"\0" L"R\0" L"\0" L"R\0" L"\0" L"TEL\0" L"\0" L"(TM)\0" L"\0" L"Z\0" L"\0" +- L"Ohm\0" L"\0" L"Z\0" L"\0" L"B\0" L"\0" L"C\0" L"\0" L"e\0" L"\0" L"e\0" +- L"\0" L"E\0" L"\0" L"F\0" L"\0" L"M\0" L"\0" L"o\0" L"\0" L"i\0" L"\0" +- L"D\0" L"\0" L"d\0" L"\0" L"e\0" L"\0" L"i\0" L"\0" L"j\0" L"\0" L" 1/3 \0" +- L"\0" L" 2/3 \0" L"\0" L" 1/5 \0" L"\0" L" 2/5 \0" L"\0" L" 3/5 \0" L"\0" +- L" 4/5 \0" L"\0" L" 1/6 \0" L"\0" L" 5/6 \0" L"\0" L" 1/8 \0" L"\0" +- L" 3/8 \0" L"\0" L" 5/8 \0" L"\0" L" 7/8 \0" L"\0" L" 1/\0" L"\0" L"I\0" +- L"\0" L"II\0" L"\0" L"III\0" L"\0" L"IV\0" L"\0" L"V\0" L"\0" L"VI\0" L"\0" +- L"VII\0" L"\0" L"VIII\0" L"\0" L"IX\0" L"\0" L"X\0" L"\0" L"XI\0" L"\0" +- L"XII\0" L"\0" L"L\0" L"\0" L"C\0" L"\0" L"D\0" L"\0" L"M\0" L"\0" L"i\0" +- L"\0" L"ii\0" L"\0" L"iii\0" L"\0" L"iv\0" L"\0" L"v\0" L"\0" L"vi\0" L"\0" +- L"vii\0" L"\0" L"viii\0" L"\0" L"ix\0" L"\0" L"x\0" L"\0" L"xi\0" L"\0" +- L"xii\0" L"\0" L"l\0" L"\0" L"c\0" L"\0" L"d\0" L"\0" L"m\0" L"\0" L"<-\0" +- L"\0" L"->\0" L"\0" L"<->\0" L"\0" L"<=\0" L"\0" L"=>\0" L"\0" L"<=>\0" +- L"\0" L"-\0" L"\0" L"/\0" L"\0" L"\\0" L"\0" L"*\0" L"\0" L"|\0" L"\0" +- L":\0" L"\0" L"~\0" L"\0" L"<=\0" L"\0" L">=\0" L"\0" L"<<\0" L"\0" L">>\0" +- L"\0" L"<<<\0" L"\0" L">>>\0" L"\0" L"NUL\0" L"\0" L"SOH\0" L"\0" L"STX\0" +- L"\0" L"ETX\0" L"\0" L"EOT\0" L"\0" L"ENQ\0" L"\0" L"ACK\0" L"\0" L"BEL\0" +- L"\0" L"BS\0" L"\0" L"HT\0" L"\0" L"LF\0" L"\0" L"VT\0" L"\0" L"FF\0" L"\0" +- L"CR\0" L"\0" L"SO\0" L"\0" L"SI\0" L"\0" L"DLE\0" L"\0" L"DC1\0" L"\0" +- L"DC2\0" L"\0" L"DC3\0" L"\0" L"DC4\0" L"\0" L"NAK\0" L"\0" L"SYN\0" L"\0" +- L"ETB\0" L"\0" L"CAN\0" L"\0" L"EM\0" L"\0" L"SUB\0" L"\0" L"ESC\0" L"\0" +- L"FS\0" L"\0" L"GS\0" L"\0" L"RS\0" L"\0" L"US\0" L"\0" L"SP\0" L"\0" +- L"DEL\0" L"\0" L"_\0" L"\0" L"NL\0" L"\0" L"(1)\0" L"\0" L"(2)\0" L"\0" +- L"(3)\0" L"\0" L"(4)\0" L"\0" L"(5)\0" L"\0" L"(6)\0" L"\0" L"(7)\0" L"\0" +- L"(8)\0" L"\0" L"(9)\0" L"\0" L"(10)\0" L"\0" L"(11)\0" L"\0" L"(12)\0" +- L"\0" L"(13)\0" L"\0" L"(14)\0" L"\0" L"(15)\0" L"\0" L"(16)\0" L"\0" +- L"(17)\0" L"\0" L"(18)\0" L"\0" L"(19)\0" L"\0" L"(20)\0" L"\0" L"(1)\0" +- L"\0" L"(2)\0" L"\0" L"(3)\0" L"\0" L"(4)\0" L"\0" L"(5)\0" L"\0" L"(6)\0" +- L"\0" L"(7)\0" L"\0" L"(8)\0" L"\0" L"(9)\0" L"\0" L"(10)\0" L"\0" L"(11)\0" +- L"\0" L"(12)\0" L"\0" L"(13)\0" L"\0" L"(14)\0" L"\0" L"(15)\0" L"\0" +- L"(16)\0" L"\0" L"(17)\0" L"\0" L"(18)\0" L"\0" L"(19)\0" L"\0" L"(20)\0" +- L"\0" L"1.\0" L"\0" L"2.\0" L"\0" L"3.\0" L"\0" L"4.\0" L"\0" L"5.\0" L"\0" +- L"6.\0" L"\0" L"7.\0" L"\0" L"8.\0" L"\0" L"9.\0" L"\0" L"10.\0" L"\0" +- L"11.\0" L"\0" L"12.\0" L"\0" L"13.\0" L"\0" L"14.\0" L"\0" L"15.\0" L"\0" +- L"16.\0" L"\0" L"17.\0" L"\0" L"18.\0" L"\0" L"19.\0" L"\0" L"20.\0" L"\0" +- L"(a)\0" L"\0" L"(b)\0" L"\0" L"(c)\0" L"\0" L"(d)\0" L"\0" L"(e)\0" L"\0" +- L"(f)\0" L"\0" L"(g)\0" L"\0" L"(h)\0" L"\0" L"(i)\0" L"\0" L"(j)\0" L"\0" +- L"(k)\0" L"\0" L"(l)\0" L"\0" L"(m)\0" L"\0" L"(n)\0" L"\0" L"(o)\0" L"\0" +- L"(p)\0" L"\0" L"(q)\0" L"\0" L"(r)\0" L"\0" L"(s)\0" L"\0" L"(t)\0" L"\0" +- L"(u)\0" L"\0" L"(v)\0" L"\0" L"(w)\0" L"\0" L"(x)\0" L"\0" L"(y)\0" L"\0" +- L"(z)\0" L"\0" L"(A)\0" L"\0" L"(B)\0" L"\0" L"(C)\0" L"\0" L"(D)\0" L"\0" +- L"(E)\0" L"\0" L"(F)\0" L"\0" L"(G)\0" L"\0" L"(H)\0" L"\0" L"(I)\0" L"\0" +- L"(J)\0" L"\0" L"(K)\0" L"\0" L"(L)\0" L"\0" L"(M)\0" L"\0" L"(N)\0" L"\0" +- L"(O)\0" L"\0" L"(P)\0" L"\0" L"(Q)\0" L"\0" L"(R)\0" L"\0" L"(S)\0" L"\0" +- L"(T)\0" L"\0" L"(U)\0" L"\0" L"(V)\0" L"\0" L"(W)\0" L"\0" L"(X)\0" L"\0" +- L"(Y)\0" L"\0" L"(Z)\0" L"\0" L"(a)\0" L"\0" L"(b)\0" L"\0" L"(c)\0" L"\0" +- L"(d)\0" L"\0" L"(e)\0" L"\0" L"(f)\0" L"\0" L"(g)\0" L"\0" L"(h)\0" L"\0" +- L"(i)\0" L"\0" L"(j)\0" L"\0" L"(k)\0" L"\0" L"(l)\0" L"\0" L"(m)\0" L"\0" +- L"(n)\0" L"\0" L"(o)\0" L"\0" L"(p)\0" L"\0" L"(q)\0" L"\0" L"(r)\0" L"\0" +- L"(s)\0" L"\0" L"(t)\0" L"\0" L"(u)\0" L"\0" L"(v)\0" L"\0" L"(w)\0" L"\0" +- L"(x)\0" L"\0" L"(y)\0" L"\0" L"(z)\0" L"\0" L"(0)\0" L"\0" L"-\0" L"\0" +- L"|\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" +- L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"o\0" L"\0" +- L"::=\0" L"\0" L"==\0" L"\0" L"===\0" L"\0" L" \0" L"\0" L"=\0" L"\0" +- L"(21)\0" L"\0" L"(22)\0" L"\0" L"(23)\0" L"\0" L"(24)\0" L"\0" L"(25)\0" +- L"\0" L"(26)\0" L"\0" L"(27)\0" L"\0" L"(28)\0" L"\0" L"(29)\0" L"\0" +- L"(30)\0" L"\0" L"(31)\0" L"\0" L"(32)\0" L"\0" L"(33)\0" L"\0" L"(34)\0" +- L"\0" L"(35)\0" L"\0" L"(36)\0" L"\0" L"(37)\0" L"\0" L"(38)\0" L"\0" +- L"(39)\0" L"\0" L"(40)\0" L"\0" L"(41)\0" L"\0" L"(42)\0" L"\0" L"(43)\0" +- L"\0" L"(44)\0" L"\0" L"(45)\0" L"\0" L"(46)\0" L"\0" L"(47)\0" L"\0" +- L"(48)\0" L"\0" L"(49)\0" L"\0" L"(50)\0" L"\0" L"hPa\0" L"\0" L"da\0" L"\0" +- L"AU\0" L"\0" L"bar\0" L"\0" L"oV\0" L"\0" L"pc\0" L"\0" L"pA\0" L"\0" ++ L"\0" L"\0" L"\0" L"Rs\0" L"\0" L"EUR\0" L"\0" L"INR\0" L"\0" L"a/c\0" L"\0" ++ L"a/s\0" L"\0" L"C\0" L"\0" L"c/o\0" L"\0" L"c/u\0" L"\0" L"g\0" L"\0" ++ L"H\0" L"\0" L"H\0" L"\0" L"H\0" L"\0" L"h\0" L"\0" L"I\0" L"\0" L"I\0" ++ L"\0" L"L\0" L"\0" L"l\0" L"\0" L"N\0" L"\0" L"No\0" L"\0" L"P\0" L"\0" ++ L"Q\0" L"\0" L"R\0" L"\0" L"R\0" L"\0" L"R\0" L"\0" L"TEL\0" L"\0" L"(TM)\0" ++ L"\0" L"Z\0" L"\0" L"Ohm\0" L"\0" L"Z\0" L"\0" L"B\0" L"\0" L"C\0" L"\0" ++ L"e\0" L"\0" L"e\0" L"\0" L"E\0" L"\0" L"F\0" L"\0" L"M\0" L"\0" L"o\0" ++ L"\0" L"i\0" L"\0" L"D\0" L"\0" L"d\0" L"\0" L"e\0" L"\0" L"i\0" L"\0" ++ L"j\0" L"\0" L" 1/3 \0" L"\0" L" 2/3 \0" L"\0" L" 1/5 \0" L"\0" L" 2/5 \0" ++ L"\0" L" 3/5 \0" L"\0" L" 4/5 \0" L"\0" L" 1/6 \0" L"\0" L" 5/6 \0" L"\0" ++ L" 1/8 \0" L"\0" L" 3/8 \0" L"\0" L" 5/8 \0" L"\0" L" 7/8 \0" L"\0" L" 1/\0" ++ L"\0" L"I\0" L"\0" L"II\0" L"\0" L"III\0" L"\0" L"IV\0" L"\0" L"V\0" L"\0" ++ L"VI\0" L"\0" L"VII\0" L"\0" L"VIII\0" L"\0" L"IX\0" L"\0" L"X\0" L"\0" ++ L"XI\0" L"\0" L"XII\0" L"\0" L"L\0" L"\0" L"C\0" L"\0" L"D\0" L"\0" L"M\0" ++ L"\0" L"i\0" L"\0" L"ii\0" L"\0" L"iii\0" L"\0" L"iv\0" L"\0" L"v\0" L"\0" ++ L"vi\0" L"\0" L"vii\0" L"\0" L"viii\0" L"\0" L"ix\0" L"\0" L"x\0" L"\0" ++ L"xi\0" L"\0" L"xii\0" L"\0" L"l\0" L"\0" L"c\0" L"\0" L"d\0" L"\0" L"m\0" ++ L"\0" L"<-\0" L"\0" L"->\0" L"\0" L"<->\0" L"\0" L"<=\0" L"\0" L"=>\0" L"\0" ++ L"<=>\0" L"\0" L"-\0" L"\0" L"/\0" L"\0" L"\\0" L"\0" L"*\0" L"\0" L"|\0" ++ L"\0" L":\0" L"\0" L"~\0" L"\0" L"<=\0" L"\0" L">=\0" L"\0" L"<<\0" L"\0" ++ L">>\0" L"\0" L"<<<\0" L"\0" L">>>\0" L"\0" L"NUL\0" L"\0" L"SOH\0" L"\0" ++ L"STX\0" L"\0" L"ETX\0" L"\0" L"EOT\0" L"\0" L"ENQ\0" L"\0" L"ACK\0" L"\0" ++ L"BEL\0" L"\0" L"BS\0" L"\0" L"HT\0" L"\0" L"LF\0" L"\0" L"VT\0" L"\0" ++ L"FF\0" L"\0" L"CR\0" L"\0" L"SO\0" L"\0" L"SI\0" L"\0" L"DLE\0" L"\0" ++ L"DC1\0" L"\0" L"DC2\0" L"\0" L"DC3\0" L"\0" L"DC4\0" L"\0" L"NAK\0" L"\0" ++ L"SYN\0" L"\0" L"ETB\0" L"\0" L"CAN\0" L"\0" L"EM\0" L"\0" L"SUB\0" L"\0" ++ L"ESC\0" L"\0" L"FS\0" L"\0" L"GS\0" L"\0" L"RS\0" L"\0" L"US\0" L"\0" ++ L"SP\0" L"\0" L"DEL\0" L"\0" L"_\0" L"\0" L"NL\0" L"\0" L"(1)\0" L"\0" ++ L"(2)\0" L"\0" L"(3)\0" L"\0" L"(4)\0" L"\0" L"(5)\0" L"\0" L"(6)\0" L"\0" ++ L"(7)\0" L"\0" L"(8)\0" L"\0" L"(9)\0" L"\0" L"(10)\0" L"\0" L"(11)\0" L"\0" ++ L"(12)\0" L"\0" L"(13)\0" L"\0" L"(14)\0" L"\0" L"(15)\0" L"\0" L"(16)\0" ++ L"\0" L"(17)\0" L"\0" L"(18)\0" L"\0" L"(19)\0" L"\0" L"(20)\0" L"\0" ++ L"(1)\0" L"\0" L"(2)\0" L"\0" L"(3)\0" L"\0" L"(4)\0" L"\0" L"(5)\0" L"\0" ++ L"(6)\0" L"\0" L"(7)\0" L"\0" L"(8)\0" L"\0" L"(9)\0" L"\0" L"(10)\0" L"\0" ++ L"(11)\0" L"\0" L"(12)\0" L"\0" L"(13)\0" L"\0" L"(14)\0" L"\0" L"(15)\0" ++ L"\0" L"(16)\0" L"\0" L"(17)\0" L"\0" L"(18)\0" L"\0" L"(19)\0" L"\0" ++ L"(20)\0" L"\0" L"1.\0" L"\0" L"2.\0" L"\0" L"3.\0" L"\0" L"4.\0" L"\0" ++ L"5.\0" L"\0" L"6.\0" L"\0" L"7.\0" L"\0" L"8.\0" L"\0" L"9.\0" L"\0" ++ L"10.\0" L"\0" L"11.\0" L"\0" L"12.\0" L"\0" L"13.\0" L"\0" L"14.\0" L"\0" ++ L"15.\0" L"\0" L"16.\0" L"\0" L"17.\0" L"\0" L"18.\0" L"\0" L"19.\0" L"\0" ++ L"20.\0" L"\0" L"(a)\0" L"\0" L"(b)\0" L"\0" L"(c)\0" L"\0" L"(d)\0" L"\0" ++ L"(e)\0" L"\0" L"(f)\0" L"\0" L"(g)\0" L"\0" L"(h)\0" L"\0" L"(i)\0" L"\0" ++ L"(j)\0" L"\0" L"(k)\0" L"\0" L"(l)\0" L"\0" L"(m)\0" L"\0" L"(n)\0" L"\0" ++ L"(o)\0" L"\0" L"(p)\0" L"\0" L"(q)\0" L"\0" L"(r)\0" L"\0" L"(s)\0" L"\0" ++ L"(t)\0" L"\0" L"(u)\0" L"\0" L"(v)\0" L"\0" L"(w)\0" L"\0" L"(x)\0" L"\0" ++ L"(y)\0" L"\0" L"(z)\0" L"\0" L"(A)\0" L"\0" L"(B)\0" L"\0" L"(C)\0" L"\0" ++ L"(D)\0" L"\0" L"(E)\0" L"\0" L"(F)\0" L"\0" L"(G)\0" L"\0" L"(H)\0" L"\0" ++ L"(I)\0" L"\0" L"(J)\0" L"\0" L"(K)\0" L"\0" L"(L)\0" L"\0" L"(M)\0" L"\0" ++ L"(N)\0" L"\0" L"(O)\0" L"\0" L"(P)\0" L"\0" L"(Q)\0" L"\0" L"(R)\0" L"\0" ++ L"(S)\0" L"\0" L"(T)\0" L"\0" L"(U)\0" L"\0" L"(V)\0" L"\0" L"(W)\0" L"\0" ++ L"(X)\0" L"\0" L"(Y)\0" L"\0" L"(Z)\0" L"\0" L"(a)\0" L"\0" L"(b)\0" L"\0" ++ L"(c)\0" L"\0" L"(d)\0" L"\0" L"(e)\0" L"\0" L"(f)\0" L"\0" L"(g)\0" L"\0" ++ L"(h)\0" L"\0" L"(i)\0" L"\0" L"(j)\0" L"\0" L"(k)\0" L"\0" L"(l)\0" L"\0" ++ L"(m)\0" L"\0" L"(n)\0" L"\0" L"(o)\0" L"\0" L"(p)\0" L"\0" L"(q)\0" L"\0" ++ L"(r)\0" L"\0" L"(s)\0" L"\0" L"(t)\0" L"\0" L"(u)\0" L"\0" L"(v)\0" L"\0" ++ L"(w)\0" L"\0" L"(x)\0" L"\0" L"(y)\0" L"\0" L"(z)\0" L"\0" L"(0)\0" L"\0" ++ L"-\0" L"\0" L"|\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" ++ L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" ++ L"o\0" L"\0" L"::=\0" L"\0" L"==\0" L"\0" L"===\0" L"\0" L" \0" L"\0" L"=\0" ++ L"\0" L"(21)\0" L"\0" L"(22)\0" L"\0" L"(23)\0" L"\0" L"(24)\0" L"\0" ++ L"(25)\0" L"\0" L"(26)\0" L"\0" L"(27)\0" L"\0" L"(28)\0" L"\0" L"(29)\0" ++ L"\0" L"(30)\0" L"\0" L"(31)\0" L"\0" L"(32)\0" L"\0" L"(33)\0" L"\0" ++ L"(34)\0" L"\0" L"(35)\0" L"\0" L"(36)\0" L"\0" L"(37)\0" L"\0" L"(38)\0" ++ L"\0" L"(39)\0" L"\0" L"(40)\0" L"\0" L"(41)\0" L"\0" L"(42)\0" L"\0" ++ L"(43)\0" L"\0" L"(44)\0" L"\0" L"(45)\0" L"\0" L"(46)\0" L"\0" L"(47)\0" ++ L"\0" L"(48)\0" L"\0" L"(49)\0" L"\0" L"(50)\0" L"\0" L"hPa\0" L"\0" L"da\0" ++ L"\0" L"AU\0" L"\0" L"bar\0" L"\0" L"oV\0" L"\0" L"pc\0" L"\0" L"pA\0" L"\0" + L"nA\0" L"\0" L"uA\0" L"\0" L"mA\0" L"\0" L"kA\0" L"\0" L"KB\0" L"\0" + L"MB\0" L"\0" L"GB\0" L"\0" L"cal\0" L"\0" L"kcal\0" L"\0" L"pF\0" L"\0" + L"nF\0" L"\0" L"uF\0" L"\0" L"ug\0" L"\0" L"mg\0" L"\0" L"kg\0" L"\0" +Index: glibc-2.12-2-gc4ccff1/locale/C-translit.h.in +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/locale/C-translit.h.in ++++ glibc-2.12-2-gc4ccff1/locale/C-translit.h.in +@@ -105,6 +105,7 @@ + "\x2063" "" /* <U2063> INVISIBLE SEPARATOR */ + "\x20a8" "Rs" /* <U20A8> RUPEE SIGN */ + "\x20ac" "EUR" /* <U20AC> EURO SIGN */ ++"\x20b9" "INR" /* <U20B9> INDIAN RUPEE SIGN */ + "\x2100" "a/c" /* <U2100> ACCOUNT OF */ + "\x2101" "a/s" /* <U2101> ADDRESSED TO THE SUBJECT */ + "\x2102" "C" /* <U2102> DOUBLE-STRUCK CAPITAL C */ +Index: glibc-2.12-2-gc4ccff1/localedata/charmaps/UTF-8 +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/charmaps/UTF-8 ++++ glibc-2.12-2-gc4ccff1/localedata/charmaps/UTF-8 +@@ -1312,6 +1312,10 @@ CHARMAP + <U0521> /xd4/xa1 CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK + <U0522> /xd4/xa2 CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK + <U0523> /xd4/xa3 CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK ++<U0524> /xd4/xa4 CYRILLIC CAPITAL LETTER PE WITH DESCENDER ++<U0525> /xd4/xa5 CYRILLIC SMALL LETTER PE WITH DESCENDER ++<U0526> /xd4/xa6 CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER ++<U0527> /xd4/xa7 CYRILLIC SMALL LETTER SHHA WITH DESCENDER + <U0531> /xd4/xb1 ARMENIAN CAPITAL LETTER AYB + <U0532> /xd4/xb2 ARMENIAN CAPITAL LETTER BEN + <U0533> /xd4/xb3 ARMENIAN CAPITAL LETTER GIM +@@ -1513,6 +1517,7 @@ CHARMAP + <U061B> /xd8/x9b ARABIC SEMICOLON + <U061E> /xd8/x9e ARABIC TRIPLE DOT PUNCTUATION MARK + <U061F> /xd8/x9f ARABIC QUESTION MARK ++<U0620> /xd8/xa0 ARABIC LETTER KASHMIRI YEH + <U0621> /xd8/xa1 ARABIC LETTER HAMZA + <U0622> /xd8/xa2 ARABIC LETTER ALEF WITH MADDA ABOVE + <U0623> /xd8/xa3 ARABIC LETTER ALEF WITH HAMZA ABOVE +@@ -1575,6 +1580,7 @@ CHARMAP + <U065C> /xd9/x9c ARABIC VOWEL SIGN DOT BELOW + <U065D> /xd9/x9d ARABIC REVERSED DAMMA + <U065E> /xd9/x9e ARABIC FATHA WITH TWO DOTS ++<U065F> /xd9/x9f ARABIC WAVY HAMZA BELOW + <U0660> /xd9/xa0 ARABIC-INDIC DIGIT ZERO + <U0661> /xd9/xa1 ARABIC-INDIC DIGIT ONE + <U0662> /xd9/xa2 ARABIC-INDIC DIGIT TWO +@@ -1969,6 +1975,97 @@ CHARMAP + <U07F8> /xdf/xb8 NKO COMMA + <U07F9> /xdf/xb9 NKO EXCLAMATION MARK + <U07FA> /xdf/xba NKO LAJANYALAN ++<U0800> /xe0/xa0/x80 SAMARITAN LETTER ALAF ++<U0801> /xe0/xa0/x81 SAMARITAN LETTER BIT ++<U0802> /xe0/xa0/x82 SAMARITAN LETTER GAMAN ++<U0803> /xe0/xa0/x83 SAMARITAN LETTER DALAT ++<U0804> /xe0/xa0/x84 SAMARITAN LETTER IY ++<U0805> /xe0/xa0/x85 SAMARITAN LETTER BAA ++<U0806> /xe0/xa0/x86 SAMARITAN LETTER ZEN ++<U0807> /xe0/xa0/x87 SAMARITAN LETTER IT ++<U0808> /xe0/xa0/x88 SAMARITAN LETTER TIT ++<U0809> /xe0/xa0/x89 SAMARITAN LETTER YUT ++<U080A> /xe0/xa0/x8a SAMARITAN LETTER KAAF ++<U080B> /xe0/xa0/x8b SAMARITAN LETTER LABAT ++<U080C> /xe0/xa0/x8c SAMARITAN LETTER MIM ++<U080D> /xe0/xa0/x8d SAMARITAN LETTER NUN ++<U080E> /xe0/xa0/x8e SAMARITAN LETTER SINGAAT ++<U080F> /xe0/xa0/x8f SAMARITAN LETTER IN ++<U0810> /xe0/xa0/x90 SAMARITAN LETTER FI ++<U0811> /xe0/xa0/x91 SAMARITAN LETTER TSAADIY ++<U0812> /xe0/xa0/x92 SAMARITAN LETTER QUF ++<U0813> /xe0/xa0/x93 SAMARITAN LETTER RISH ++<U0814> /xe0/xa0/x94 SAMARITAN LETTER SHAN ++<U0815> /xe0/xa0/x95 SAMARITAN LETTER TAAF ++<U0816> /xe0/xa0/x96 SAMARITAN MARK IN ++<U0817> /xe0/xa0/x97 SAMARITAN MARK IN-ALAF ++<U0818> /xe0/xa0/x98 SAMARITAN MARK OCCLUSION ++<U0819> /xe0/xa0/x99 SAMARITAN MARK DAGESH ++<U081A> /xe0/xa0/x9a SAMARITAN MODIFIER LETTER EPENTHETIC YUT ++<U081B> /xe0/xa0/x9b SAMARITAN MARK EPENTHETIC YUT ++<U081C> /xe0/xa0/x9c SAMARITAN VOWEL SIGN LONG E ++<U081D> /xe0/xa0/x9d SAMARITAN VOWEL SIGN E ++<U081E> /xe0/xa0/x9e SAMARITAN VOWEL SIGN OVERLONG AA ++<U081F> /xe0/xa0/x9f SAMARITAN VOWEL SIGN LONG AA ++<U0820> /xe0/xa0/xa0 SAMARITAN VOWEL SIGN AA ++<U0821> /xe0/xa0/xa1 SAMARITAN VOWEL SIGN OVERLONG A ++<U0822> /xe0/xa0/xa2 SAMARITAN VOWEL SIGN LONG A ++<U0823> /xe0/xa0/xa3 SAMARITAN VOWEL SIGN A ++<U0824> /xe0/xa0/xa4 SAMARITAN MODIFIER LETTER SHORT A ++<U0825> /xe0/xa0/xa5 SAMARITAN VOWEL SIGN SHORT A ++<U0826> /xe0/xa0/xa6 SAMARITAN VOWEL SIGN LONG U ++<U0827> /xe0/xa0/xa7 SAMARITAN VOWEL SIGN U ++<U0828> /xe0/xa0/xa8 SAMARITAN MODIFIER LETTER I ++<U0829> /xe0/xa0/xa9 SAMARITAN VOWEL SIGN LONG I ++<U082A> /xe0/xa0/xaa SAMARITAN VOWEL SIGN I ++<U082B> /xe0/xa0/xab SAMARITAN VOWEL SIGN O ++<U082C> /xe0/xa0/xac SAMARITAN VOWEL SIGN SUKUN ++<U082D> /xe0/xa0/xad SAMARITAN MARK NEQUDAA ++<U0830> /xe0/xa0/xb0 SAMARITAN PUNCTUATION NEQUDAA ++<U0831> /xe0/xa0/xb1 SAMARITAN PUNCTUATION AFSAAQ ++<U0832> /xe0/xa0/xb2 SAMARITAN PUNCTUATION ANGED ++<U0833> /xe0/xa0/xb3 SAMARITAN PUNCTUATION BAU ++<U0834> /xe0/xa0/xb4 SAMARITAN PUNCTUATION ATMAAU ++<U0835> /xe0/xa0/xb5 SAMARITAN PUNCTUATION SHIYYAALAA ++<U0836> /xe0/xa0/xb6 SAMARITAN ABBREVIATION MARK ++<U0837> /xe0/xa0/xb7 SAMARITAN PUNCTUATION MELODIC QITSA ++<U0838> /xe0/xa0/xb8 SAMARITAN PUNCTUATION ZIQAA ++<U0839> /xe0/xa0/xb9 SAMARITAN PUNCTUATION QITSA ++<U083A> /xe0/xa0/xba SAMARITAN PUNCTUATION ZAEF ++<U083B> /xe0/xa0/xbb SAMARITAN PUNCTUATION TURU ++<U083C> /xe0/xa0/xbc SAMARITAN PUNCTUATION ARKAANU ++<U083D> /xe0/xa0/xbd SAMARITAN PUNCTUATION SOF MASHFAAT ++<U083E> /xe0/xa0/xbe SAMARITAN PUNCTUATION ANNAAU ++<U0840> /xe0/xa1/x80 MANDAIC LETTER HALQA ++<U0841> /xe0/xa1/x81 MANDAIC LETTER AB ++<U0842> /xe0/xa1/x82 MANDAIC LETTER AG ++<U0843> /xe0/xa1/x83 MANDAIC LETTER AD ++<U0844> /xe0/xa1/x84 MANDAIC LETTER AH ++<U0845> /xe0/xa1/x85 MANDAIC LETTER USHENNA ++<U0846> /xe0/xa1/x86 MANDAIC LETTER AZ ++<U0847> /xe0/xa1/x87 MANDAIC LETTER IT ++<U0848> /xe0/xa1/x88 MANDAIC LETTER ATT ++<U0849> /xe0/xa1/x89 MANDAIC LETTER AKSA ++<U084A> /xe0/xa1/x8a MANDAIC LETTER AK ++<U084B> /xe0/xa1/x8b MANDAIC LETTER AL ++<U084C> /xe0/xa1/x8c MANDAIC LETTER AM ++<U084D> /xe0/xa1/x8d MANDAIC LETTER AN ++<U084E> /xe0/xa1/x8e MANDAIC LETTER AS ++<U084F> /xe0/xa1/x8f MANDAIC LETTER IN ++<U0850> /xe0/xa1/x90 MANDAIC LETTER AP ++<U0851> /xe0/xa1/x91 MANDAIC LETTER ASZ ++<U0852> /xe0/xa1/x92 MANDAIC LETTER AQ ++<U0853> /xe0/xa1/x93 MANDAIC LETTER AR ++<U0854> /xe0/xa1/x94 MANDAIC LETTER ASH ++<U0855> /xe0/xa1/x95 MANDAIC LETTER AT ++<U0856> /xe0/xa1/x96 MANDAIC LETTER DUSHENNA ++<U0857> /xe0/xa1/x97 MANDAIC LETTER KAD ++<U0858> /xe0/xa1/x98 MANDAIC LETTER AIN ++<U0859> /xe0/xa1/x99 MANDAIC AFFRICATION MARK ++<U085A> /xe0/xa1/x9a MANDAIC VOCALIZATION MARK ++<U085B> /xe0/xa1/x9b MANDAIC GEMINATION MARK ++<U085E> /xe0/xa1/x9e MANDAIC PUNCTUATION ++<U0900> /xe0/xa4/x80 DEVANAGARI SIGN INVERTED CANDRABINDU + <U0901> /xe0/xa4/x81 DEVANAGARI SIGN CANDRABINDU + <U0902> /xe0/xa4/x82 DEVANAGARI SIGN ANUSVARA + <U0903> /xe0/xa4/x83 DEVANAGARI SIGN VISARGA +@@ -2026,6 +2123,8 @@ CHARMAP + <U0937> /xe0/xa4/xb7 DEVANAGARI LETTER SSA + <U0938> /xe0/xa4/xb8 DEVANAGARI LETTER SA + <U0939> /xe0/xa4/xb9 DEVANAGARI LETTER HA ++<U093A> /xe0/xa4/xba DEVANAGARI VOWEL SIGN OE ++<U093B> /xe0/xa4/xbb DEVANAGARI VOWEL SIGN OOE + <U093C> /xe0/xa4/xbc DEVANAGARI SIGN NUKTA + <U093D> /xe0/xa4/xbd DEVANAGARI SIGN AVAGRAHA + <U093E> /xe0/xa4/xbe DEVANAGARI VOWEL SIGN AA +@@ -2044,11 +2143,16 @@ CHARMAP + <U094B> /xe0/xa5/x8b DEVANAGARI VOWEL SIGN O + <U094C> /xe0/xa5/x8c DEVANAGARI VOWEL SIGN AU + <U094D> /xe0/xa5/x8d DEVANAGARI SIGN VIRAMA ++<U094E> /xe0/xa5/x8e DEVANAGARI VOWEL SIGN PRISHTHAMATRA E ++<U094F> /xe0/xa5/x8f DEVANAGARI VOWEL SIGN AW + <U0950> /xe0/xa5/x90 DEVANAGARI OM + <U0951> /xe0/xa5/x91 DEVANAGARI STRESS SIGN UDATTA + <U0952> /xe0/xa5/x92 DEVANAGARI STRESS SIGN ANUDATTA + <U0953> /xe0/xa5/x93 DEVANAGARI GRAVE ACCENT + <U0954> /xe0/xa5/x94 DEVANAGARI ACUTE ACCENT ++<U0955> /xe0/xa5/x95 DEVANAGARI VOWEL SIGN CANDRA LONG E ++<U0956> /xe0/xa5/x96 DEVANAGARI VOWEL SIGN UE ++<U0957> /xe0/xa5/x97 DEVANAGARI VOWEL SIGN UUE + <U0958> /xe0/xa5/x98 DEVANAGARI LETTER QA + <U0959> /xe0/xa5/x99 DEVANAGARI LETTER KHHA + <U095A> /xe0/xa5/x9a DEVANAGARI LETTER GHHA +@@ -2076,6 +2180,13 @@ CHARMAP + <U0970> /xe0/xa5/xb0 DEVANAGARI ABBREVIATION SIGN + <U0971> /xe0/xa5/xb1 DEVANAGARI SIGN HIGH SPACING DOT + <U0972> /xe0/xa5/xb2 DEVANAGARI LETTER CANDRA A ++<U0973> /xe0/xa5/xb3 DEVANAGARI LETTER OE ++<U0974> /xe0/xa5/xb4 DEVANAGARI LETTER OOE ++<U0975> /xe0/xa5/xb5 DEVANAGARI LETTER AW ++<U0976> /xe0/xa5/xb6 DEVANAGARI LETTER UE ++<U0977> /xe0/xa5/xb7 DEVANAGARI LETTER UUE ++<U0979> /xe0/xa5/xb9 DEVANAGARI LETTER ZHA ++<U097A> /xe0/xa5/xba DEVANAGARI LETTER HEAVY YA + <U097B> /xe0/xa5/xbb DEVANAGARI LETTER GGA + <U097C> /xe0/xa5/xbc DEVANAGARI LETTER JJA + <U097D> /xe0/xa5/xbd DEVANAGARI LETTER GLOTTAL STOP +@@ -2172,6 +2283,7 @@ CHARMAP + <U09F8> /xe0/xa7/xb8 BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR + <U09F9> /xe0/xa7/xb9 BENGALI CURRENCY DENOMINATOR SIXTEEN + <U09FA> /xe0/xa7/xba BENGALI ISSHAR ++<U09FB> /xe0/xa7/xbb BENGALI GANDA MARK + <U0A01> /xe0/xa8/x81 GURMUKHI SIGN ADAK BINDI + <U0A02> /xe0/xa8/x82 GURMUKHI SIGN BINDI + <U0A03> /xe0/xa8/x83 GURMUKHI SIGN VISARGA +@@ -2418,6 +2530,12 @@ CHARMAP + <U0B6F> /xe0/xad/xaf ORIYA DIGIT NINE + <U0B70> /xe0/xad/xb0 ORIYA ISSHAR + <U0B71> /xe0/xad/xb1 ORIYA LETTER WA ++<U0B72> /xe0/xad/xb2 ORIYA FRACTION ONE QUARTER ++<U0B73> /xe0/xad/xb3 ORIYA FRACTION ONE HALF ++<U0B74> /xe0/xad/xb4 ORIYA FRACTION THREE QUARTERS ++<U0B75> /xe0/xad/xb5 ORIYA FRACTION ONE SIXTEENTH ++<U0B76> /xe0/xad/xb6 ORIYA FRACTION ONE EIGHTH ++<U0B77> /xe0/xad/xb7 ORIYA FRACTION THREE SIXTEENTHS + <U0B82> /xe0/xae/x82 TAMIL SIGN ANUSVARA + <U0B83> /xe0/xae/x83 TAMIL SIGN VISARGA + <U0B85> /xe0/xae/x85 TAMIL LETTER A +@@ -2705,6 +2823,7 @@ CHARMAP + <U0D26> /xe0/xb4/xa6 MALAYALAM LETTER DA + <U0D27> /xe0/xb4/xa7 MALAYALAM LETTER DHA + <U0D28> /xe0/xb4/xa8 MALAYALAM LETTER NA ++<U0D29> /xe0/xb4/xa9 MALAYALAM LETTER NNNA + <U0D2A> /xe0/xb4/xaa MALAYALAM LETTER PA + <U0D2B> /xe0/xb4/xab MALAYALAM LETTER PHA + <U0D2C> /xe0/xb4/xac MALAYALAM LETTER BA +@@ -2721,6 +2840,7 @@ CHARMAP + <U0D37> /xe0/xb4/xb7 MALAYALAM LETTER SSA + <U0D38> /xe0/xb4/xb8 MALAYALAM LETTER SA + <U0D39> /xe0/xb4/xb9 MALAYALAM LETTER HA ++<U0D3A> /xe0/xb4/xba MALAYALAM LETTER TTTA + <U0D3D> /xe0/xb4/xbd MALAYALAM SIGN AVAGRAHA + <U0D3E> /xe0/xb4/xbe MALAYALAM VOWEL SIGN AA + <U0D3F> /xe0/xb4/xbf MALAYALAM VOWEL SIGN I +@@ -2736,6 +2856,7 @@ CHARMAP + <U0D4B> /xe0/xb5/x8b MALAYALAM VOWEL SIGN OO + <U0D4C> /xe0/xb5/x8c MALAYALAM VOWEL SIGN AU + <U0D4D> /xe0/xb5/x8d MALAYALAM SIGN VIRAMA ++<U0D4E> /xe0/xb5/x8e MALAYALAM LETTER DOT REPH + <U0D57> /xe0/xb5/x97 MALAYALAM AU LENGTH MARK + <U0D60> /xe0/xb5/xa0 MALAYALAM LETTER VOCALIC RR + <U0D61> /xe0/xb5/xa1 MALAYALAM LETTER VOCALIC LL +@@ -3131,6 +3252,10 @@ CHARMAP + <U0F89> /xe0/xbe/x89 TIBETAN SIGN MCHU CAN + <U0F8A> /xe0/xbe/x8a TIBETAN SIGN GRU CAN RGYINGS + <U0F8B> /xe0/xbe/x8b TIBETAN SIGN GRU MED RGYINGS ++<U0F8C> /xe0/xbe/x8c TIBETAN SIGN INVERTED MCHU CAN ++<U0F8D> /xe0/xbe/x8d TIBETAN SUBJOINED SIGN LCE TSA CAN ++<U0F8E> /xe0/xbe/x8e TIBETAN SUBJOINED SIGN MCHU CAN ++<U0F8F> /xe0/xbe/x8f TIBETAN SUBJOINED SIGN INVERTED MCHU CAN + <U0F90> /xe0/xbe/x90 TIBETAN SUBJOINED LETTER KA + <U0F91> /xe0/xbe/x91 TIBETAN SUBJOINED LETTER KHA + <U0F92> /xe0/xbe/x92 TIBETAN SUBJOINED LETTER GA +@@ -3197,6 +3322,12 @@ CHARMAP + <U0FD2> /xe0/xbf/x92 TIBETAN MARK NYIS TSHEG + <U0FD3> /xe0/xbf/x93 TIBETAN MARK INITIAL BRDA RNYING YIG MGO MDUN MA + <U0FD4> /xe0/xbf/x94 TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA ++<U0FD5> /xe0/xbf/x95 RIGHT-FACING SVASTI SIGN ++<U0FD6> /xe0/xbf/x96 LEFT-FACING SVASTI SIGN ++<U0FD7> /xe0/xbf/x97 RIGHT-FACING SVASTI SIGN WITH DOTS ++<U0FD8> /xe0/xbf/x98 LEFT-FACING SVASTI SIGN WITH DOTS ++<U0FD9> /xe0/xbf/x99 TIBETAN MARK LEADING MCHAN RTAGS ++<U0FDA> /xe0/xbf/x9a TIBETAN MARK TRAILING MCHAN RTAGS + <U1000> /xe1/x80/x80 MYANMAR LETTER KA + <U1001> /xe1/x80/x81 MYANMAR LETTER KHA + <U1002> /xe1/x80/x82 MYANMAR LETTER GA +@@ -3351,6 +3482,10 @@ CHARMAP + <U1097> /xe1/x82/x97 MYANMAR SHAN DIGIT SEVEN + <U1098> /xe1/x82/x98 MYANMAR SHAN DIGIT EIGHT + <U1099> /xe1/x82/x99 MYANMAR SHAN DIGIT NINE ++<U109A> /xe1/x82/x9a MYANMAR SIGN KHAMTI TONE-1 ++<U109B> /xe1/x82/x9b MYANMAR SIGN KHAMTI TONE-3 ++<U109C> /xe1/x82/x9c MYANMAR VOWEL SIGN AITON A ++<U109D> /xe1/x82/x9d MYANMAR VOWEL SIGN AITON AI + <U109E> /xe1/x82/x9e MYANMAR SYMBOL SHAN ONE + <U109F> /xe1/x82/x9f MYANMAR SYMBOL SHAN EXCLAMATION + <U10A0> /xe1/x82/xa0 GEORGIAN CAPITAL LETTER AN +@@ -3526,6 +3661,11 @@ CHARMAP + <U1157> /xe1/x85/x97 HANGUL CHOSEONG KAPYEOUNPHIEUPH + <U1158> /xe1/x85/x98 HANGUL CHOSEONG SSANGHIEUH + <U1159> /xe1/x85/x99 HANGUL CHOSEONG YEORINHIEUH ++<U115A> /xe1/x85/x9a HANGUL CHOSEONG KIYEOK-TIKEUT ++<U115B> /xe1/x85/x9b HANGUL CHOSEONG NIEUN-SIOS ++<U115C> /xe1/x85/x9c HANGUL CHOSEONG NIEUN-CIEUC ++<U115D> /xe1/x85/x9d HANGUL CHOSEONG NIEUN-HIEUH ++<U115E> /xe1/x85/x9e HANGUL CHOSEONG TIKEUT-RIEUL + <U115F> /xe1/x85/x9f HANGUL CHOSEONG FILLER + <U1160> /xe1/x85/xa0 HANGUL JUNGSEONG FILLER + <U1161> /xe1/x85/xa1 HANGUL JUNGSEONG A +@@ -3594,6 +3734,11 @@ CHARMAP + <U11A0> /xe1/x86/xa0 HANGUL JUNGSEONG ARAEA-U + <U11A1> /xe1/x86/xa1 HANGUL JUNGSEONG ARAEA-I + <U11A2> /xe1/x86/xa2 HANGUL JUNGSEONG SSANGARAEA ++<U11A3> /xe1/x86/xa3 HANGUL JUNGSEONG A-EU ++<U11A4> /xe1/x86/xa4 HANGUL JUNGSEONG YA-U ++<U11A5> /xe1/x86/xa5 HANGUL JUNGSEONG YEO-YA ++<U11A6> /xe1/x86/xa6 HANGUL JUNGSEONG O-YA ++<U11A7> /xe1/x86/xa7 HANGUL JUNGSEONG O-YAE + <U11A8> /xe1/x86/xa8 HANGUL JONGSEONG KIYEOK + <U11A9> /xe1/x86/xa9 HANGUL JONGSEONG SSANGKIYEOK + <U11AA> /xe1/x86/xaa HANGUL JONGSEONG KIYEOK-SIOS +@@ -3676,6 +3821,12 @@ CHARMAP + <U11F7> /xe1/x87/xb7 HANGUL JONGSEONG HIEUH-MIEUM + <U11F8> /xe1/x87/xb8 HANGUL JONGSEONG HIEUH-PIEUP + <U11F9> /xe1/x87/xb9 HANGUL JONGSEONG YEORINHIEUH ++<U11FA> /xe1/x87/xba HANGUL JONGSEONG KIYEOK-NIEUN ++<U11FB> /xe1/x87/xbb HANGUL JONGSEONG KIYEOK-PIEUP ++<U11FC> /xe1/x87/xbc HANGUL JONGSEONG KIYEOK-CHIEUCH ++<U11FD> /xe1/x87/xbd HANGUL JONGSEONG KIYEOK-KHIEUKH ++<U11FE> /xe1/x87/xbe HANGUL JONGSEONG KIYEOK-HIEUH ++<U11FF> /xe1/x87/xbf HANGUL JONGSEONG SSANGNIEUN + <U1200> /xe1/x88/x80 ETHIOPIC SYLLABLE HA + <U1201> /xe1/x88/x81 ETHIOPIC SYLLABLE HU + <U1202> /xe1/x88/x82 ETHIOPIC SYLLABLE HI +@@ -4002,6 +4153,8 @@ CHARMAP + <U1358> /xe1/x8d/x98 ETHIOPIC SYLLABLE RYA + <U1359> /xe1/x8d/x99 ETHIOPIC SYLLABLE MYA + <U135A> /xe1/x8d/x9a ETHIOPIC SYLLABLE FYA ++<U135D> /xe1/x8d/x9d ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK ++<U135E> /xe1/x8d/x9e ETHIOPIC COMBINING VOWEL LENGTH MARK + <U135F> /xe1/x8d/x9f ETHIOPIC COMBINING GEMINATION MARK + <U1360> /xe1/x8d/xa0 ETHIOPIC SECTION MARK + <U1361> /xe1/x8d/xa1 ETHIOPIC WORDSPACE +@@ -4143,6 +4296,7 @@ CHARMAP + <U13F2> /xe1/x8f/xb2 CHEROKEE LETTER YO + <U13F3> /xe1/x8f/xb3 CHEROKEE LETTER YU + <U13F4> /xe1/x8f/xb4 CHEROKEE LETTER YV ++<U1400> /xe1/x90/x80 CANADIAN SYLLABICS HYPHEN + <U1401> /xe1/x90/x81 CANADIAN SYLLABICS E + <U1402> /xe1/x90/x82 CANADIAN SYLLABICS AAI + <U1403> /xe1/x90/x83 CANADIAN SYLLABICS I +@@ -4773,6 +4927,15 @@ CHARMAP + <U1674> /xe1/x99/xb4 CANADIAN SYLLABICS NNGOO + <U1675> /xe1/x99/xb5 CANADIAN SYLLABICS NNGA + <U1676> /xe1/x99/xb6 CANADIAN SYLLABICS NNGAA ++<U1677> /xe1/x99/xb7 CANADIAN SYLLABICS WOODS-CREE THWEE ++<U1678> /xe1/x99/xb8 CANADIAN SYLLABICS WOODS-CREE THWI ++<U1679> /xe1/x99/xb9 CANADIAN SYLLABICS WOODS-CREE THWII ++<U167A> /xe1/x99/xba CANADIAN SYLLABICS WOODS-CREE THWO ++<U167B> /xe1/x99/xbb CANADIAN SYLLABICS WOODS-CREE THWOO ++<U167C> /xe1/x99/xbc CANADIAN SYLLABICS WOODS-CREE THWA ++<U167D> /xe1/x99/xbd CANADIAN SYLLABICS WOODS-CREE THWAA ++<U167E> /xe1/x99/xbe CANADIAN SYLLABICS WOODS-CREE FINAL TH ++<U167F> /xe1/x99/xbf CANADIAN SYLLABICS BLACKFOOT W + <U1680> /xe1/x9a/x80 OGHAM SPACE MARK + <U1681> /xe1/x9a/x81 OGHAM LETTER BEITH + <U1682> /xe1/x9a/x82 OGHAM LETTER LUIS +@@ -5234,6 +5397,76 @@ CHARMAP + <U18A8> /xe1/xa2/xa8 MONGOLIAN LETTER MANCHU ALI GALI BHA + <U18A9> /xe1/xa2/xa9 MONGOLIAN LETTER ALI GALI DAGALGA + <U18AA> /xe1/xa2/xaa MONGOLIAN LETTER MANCHU ALI GALI LHA ++<U18B0> /xe1/xa2/xb0 CANADIAN SYLLABICS OY ++<U18B1> /xe1/xa2/xb1 CANADIAN SYLLABICS AY ++<U18B2> /xe1/xa2/xb2 CANADIAN SYLLABICS AAY ++<U18B3> /xe1/xa2/xb3 CANADIAN SYLLABICS WAY ++<U18B4> /xe1/xa2/xb4 CANADIAN SYLLABICS POY ++<U18B5> /xe1/xa2/xb5 CANADIAN SYLLABICS PAY ++<U18B6> /xe1/xa2/xb6 CANADIAN SYLLABICS PWOY ++<U18B7> /xe1/xa2/xb7 CANADIAN SYLLABICS TAY ++<U18B8> /xe1/xa2/xb8 CANADIAN SYLLABICS KAY ++<U18B9> /xe1/xa2/xb9 CANADIAN SYLLABICS KWAY ++<U18BA> /xe1/xa2/xba CANADIAN SYLLABICS MAY ++<U18BB> /xe1/xa2/xbb CANADIAN SYLLABICS NOY ++<U18BC> /xe1/xa2/xbc CANADIAN SYLLABICS NAY ++<U18BD> /xe1/xa2/xbd CANADIAN SYLLABICS LAY ++<U18BE> /xe1/xa2/xbe CANADIAN SYLLABICS SOY ++<U18BF> /xe1/xa2/xbf CANADIAN SYLLABICS SAY ++<U18C0> /xe1/xa3/x80 CANADIAN SYLLABICS SHOY ++<U18C1> /xe1/xa3/x81 CANADIAN SYLLABICS SHAY ++<U18C2> /xe1/xa3/x82 CANADIAN SYLLABICS SHWOY ++<U18C3> /xe1/xa3/x83 CANADIAN SYLLABICS YOY ++<U18C4> /xe1/xa3/x84 CANADIAN SYLLABICS YAY ++<U18C5> /xe1/xa3/x85 CANADIAN SYLLABICS RAY ++<U18C6> /xe1/xa3/x86 CANADIAN SYLLABICS NWI ++<U18C7> /xe1/xa3/x87 CANADIAN SYLLABICS OJIBWAY NWI ++<U18C8> /xe1/xa3/x88 CANADIAN SYLLABICS NWII ++<U18C9> /xe1/xa3/x89 CANADIAN SYLLABICS OJIBWAY NWII ++<U18CA> /xe1/xa3/x8a CANADIAN SYLLABICS NWO ++<U18CB> /xe1/xa3/x8b CANADIAN SYLLABICS OJIBWAY NWO ++<U18CC> /xe1/xa3/x8c CANADIAN SYLLABICS NWOO ++<U18CD> /xe1/xa3/x8d CANADIAN SYLLABICS OJIBWAY NWOO ++<U18CE> /xe1/xa3/x8e CANADIAN SYLLABICS RWEE ++<U18CF> /xe1/xa3/x8f CANADIAN SYLLABICS RWI ++<U18D0> /xe1/xa3/x90 CANADIAN SYLLABICS RWII ++<U18D1> /xe1/xa3/x91 CANADIAN SYLLABICS RWO ++<U18D2> /xe1/xa3/x92 CANADIAN SYLLABICS RWOO ++<U18D3> /xe1/xa3/x93 CANADIAN SYLLABICS RWA ++<U18D4> /xe1/xa3/x94 CANADIAN SYLLABICS OJIBWAY P ++<U18D5> /xe1/xa3/x95 CANADIAN SYLLABICS OJIBWAY T ++<U18D6> /xe1/xa3/x96 CANADIAN SYLLABICS OJIBWAY K ++<U18D7> /xe1/xa3/x97 CANADIAN SYLLABICS OJIBWAY C ++<U18D8> /xe1/xa3/x98 CANADIAN SYLLABICS OJIBWAY M ++<U18D9> /xe1/xa3/x99 CANADIAN SYLLABICS OJIBWAY N ++<U18DA> /xe1/xa3/x9a CANADIAN SYLLABICS OJIBWAY S ++<U18DB> /xe1/xa3/x9b CANADIAN SYLLABICS OJIBWAY SH ++<U18DC> /xe1/xa3/x9c CANADIAN SYLLABICS EASTERN W ++<U18DD> /xe1/xa3/x9d CANADIAN SYLLABICS WESTERN W ++<U18DE> /xe1/xa3/x9e CANADIAN SYLLABICS FINAL SMALL RING ++<U18DF> /xe1/xa3/x9f CANADIAN SYLLABICS FINAL RAISED DOT ++<U18E0> /xe1/xa3/xa0 CANADIAN SYLLABICS R-CREE RWE ++<U18E1> /xe1/xa3/xa1 CANADIAN SYLLABICS WEST-CREE LOO ++<U18E2> /xe1/xa3/xa2 CANADIAN SYLLABICS WEST-CREE LAA ++<U18E3> /xe1/xa3/xa3 CANADIAN SYLLABICS THWE ++<U18E4> /xe1/xa3/xa4 CANADIAN SYLLABICS THWA ++<U18E5> /xe1/xa3/xa5 CANADIAN SYLLABICS TTHWE ++<U18E6> /xe1/xa3/xa6 CANADIAN SYLLABICS TTHOO ++<U18E7> /xe1/xa3/xa7 CANADIAN SYLLABICS TTHAA ++<U18E8> /xe1/xa3/xa8 CANADIAN SYLLABICS TLHWE ++<U18E9> /xe1/xa3/xa9 CANADIAN SYLLABICS TLHOO ++<U18EA> /xe1/xa3/xaa CANADIAN SYLLABICS SAYISI SHWE ++<U18EB> /xe1/xa3/xab CANADIAN SYLLABICS SAYISI SHOO ++<U18EC> /xe1/xa3/xac CANADIAN SYLLABICS SAYISI HOO ++<U18ED> /xe1/xa3/xad CANADIAN SYLLABICS CARRIER GWU ++<U18EE> /xe1/xa3/xae CANADIAN SYLLABICS CARRIER DENE GEE ++<U18EF> /xe1/xa3/xaf CANADIAN SYLLABICS CARRIER GAA ++<U18F0> /xe1/xa3/xb0 CANADIAN SYLLABICS CARRIER GWA ++<U18F1> /xe1/xa3/xb1 CANADIAN SYLLABICS SAYISI JUU ++<U18F2> /xe1/xa3/xb2 CANADIAN SYLLABICS CARRIER JWA ++<U18F3> /xe1/xa3/xb3 CANADIAN SYLLABICS BEAVER DENE L ++<U18F4> /xe1/xa3/xb4 CANADIAN SYLLABICS BEAVER DENE R ++<U18F5> /xe1/xa3/xb5 CANADIAN SYLLABICS CARRIER DENTAL S + <U1900> /xe1/xa4/x80 LIMBU VOWEL-CARRIER LETTER + <U1901> /xe1/xa4/x81 LIMBU LETTER KA + <U1902> /xe1/xa4/x82 LIMBU LETTER KHA +@@ -5377,6 +5610,8 @@ CHARMAP + <U19A7> /xe1/xa6/xa7 NEW TAI LUE LETTER HIGH XVA + <U19A8> /xe1/xa6/xa8 NEW TAI LUE LETTER LOW KVA + <U19A9> /xe1/xa6/xa9 NEW TAI LUE LETTER LOW XVA ++<U19AA> /xe1/xa6/xaa NEW TAI LUE LETTER HIGH SUA ++<U19AB> /xe1/xa6/xab NEW TAI LUE LETTER LOW SUA + <U19B0> /xe1/xa6/xb0 NEW TAI LUE VOWEL SIGN VOWEL SHORTENER + <U19B1> /xe1/xa6/xb1 NEW TAI LUE VOWEL SIGN AA + <U19B2> /xe1/xa6/xb2 NEW TAI LUE VOWEL SIGN II +@@ -5413,6 +5648,7 @@ CHARMAP + <U19D7> /xe1/xa7/x97 NEW TAI LUE DIGIT SEVEN + <U19D8> /xe1/xa7/x98 NEW TAI LUE DIGIT EIGHT + <U19D9> /xe1/xa7/x99 NEW TAI LUE DIGIT NINE ++<U19DA> /xe1/xa7/x9a NEW TAI LUE THAM DIGIT ONE + <U19DE> /xe1/xa7/x9e NEW TAI LUE SIGN LAE + <U19DF> /xe1/xa7/x9f NEW TAI LUE SIGN LAEV + <U19E0> /xe1/xa7/xa0 KHMER SYMBOL PATHAMASAT +@@ -5477,6 +5713,133 @@ CHARMAP + <U1A1B> /xe1/xa8/x9b BUGINESE VOWEL SIGN AE + <U1A1E> /xe1/xa8/x9e BUGINESE PALLAWA + <U1A1F> /xe1/xa8/x9f BUGINESE END OF SECTION ++<U1A20> /xe1/xa8/xa0 TAI THAM LETTER HIGH KA ++<U1A21> /xe1/xa8/xa1 TAI THAM LETTER HIGH KHA ++<U1A22> /xe1/xa8/xa2 TAI THAM LETTER HIGH KXA ++<U1A23> /xe1/xa8/xa3 TAI THAM LETTER LOW KA ++<U1A24> /xe1/xa8/xa4 TAI THAM LETTER LOW KXA ++<U1A25> /xe1/xa8/xa5 TAI THAM LETTER LOW KHA ++<U1A26> /xe1/xa8/xa6 TAI THAM LETTER NGA ++<U1A27> /xe1/xa8/xa7 TAI THAM LETTER HIGH CA ++<U1A28> /xe1/xa8/xa8 TAI THAM LETTER HIGH CHA ++<U1A29> /xe1/xa8/xa9 TAI THAM LETTER LOW CA ++<U1A2A> /xe1/xa8/xaa TAI THAM LETTER LOW SA ++<U1A2B> /xe1/xa8/xab TAI THAM LETTER LOW CHA ++<U1A2C> /xe1/xa8/xac TAI THAM LETTER NYA ++<U1A2D> /xe1/xa8/xad TAI THAM LETTER RATA ++<U1A2E> /xe1/xa8/xae TAI THAM LETTER HIGH RATHA ++<U1A2F> /xe1/xa8/xaf TAI THAM LETTER DA ++<U1A30> /xe1/xa8/xb0 TAI THAM LETTER LOW RATHA ++<U1A31> /xe1/xa8/xb1 TAI THAM LETTER RANA ++<U1A32> /xe1/xa8/xb2 TAI THAM LETTER HIGH TA ++<U1A33> /xe1/xa8/xb3 TAI THAM LETTER HIGH THA ++<U1A34> /xe1/xa8/xb4 TAI THAM LETTER LOW TA ++<U1A35> /xe1/xa8/xb5 TAI THAM LETTER LOW THA ++<U1A36> /xe1/xa8/xb6 TAI THAM LETTER NA ++<U1A37> /xe1/xa8/xb7 TAI THAM LETTER BA ++<U1A38> /xe1/xa8/xb8 TAI THAM LETTER HIGH PA ++<U1A39> /xe1/xa8/xb9 TAI THAM LETTER HIGH PHA ++<U1A3A> /xe1/xa8/xba TAI THAM LETTER HIGH FA ++<U1A3B> /xe1/xa8/xbb TAI THAM LETTER LOW PA ++<U1A3C> /xe1/xa8/xbc TAI THAM LETTER LOW FA ++<U1A3D> /xe1/xa8/xbd TAI THAM LETTER LOW PHA ++<U1A3E> /xe1/xa8/xbe TAI THAM LETTER MA ++<U1A3F> /xe1/xa8/xbf TAI THAM LETTER LOW YA ++<U1A40> /xe1/xa9/x80 TAI THAM LETTER HIGH YA ++<U1A41> /xe1/xa9/x81 TAI THAM LETTER RA ++<U1A42> /xe1/xa9/x82 TAI THAM LETTER RUE ++<U1A43> /xe1/xa9/x83 TAI THAM LETTER LA ++<U1A44> /xe1/xa9/x84 TAI THAM LETTER LUE ++<U1A45> /xe1/xa9/x85 TAI THAM LETTER WA ++<U1A46> /xe1/xa9/x86 TAI THAM LETTER HIGH SHA ++<U1A47> /xe1/xa9/x87 TAI THAM LETTER HIGH SSA ++<U1A48> /xe1/xa9/x88 TAI THAM LETTER HIGH SA ++<U1A49> /xe1/xa9/x89 TAI THAM LETTER HIGH HA ++<U1A4A> /xe1/xa9/x8a TAI THAM LETTER LLA ++<U1A4B> /xe1/xa9/x8b TAI THAM LETTER A ++<U1A4C> /xe1/xa9/x8c TAI THAM LETTER LOW HA ++<U1A4D> /xe1/xa9/x8d TAI THAM LETTER I ++<U1A4E> /xe1/xa9/x8e TAI THAM LETTER II ++<U1A4F> /xe1/xa9/x8f TAI THAM LETTER U ++<U1A50> /xe1/xa9/x90 TAI THAM LETTER UU ++<U1A51> /xe1/xa9/x91 TAI THAM LETTER EE ++<U1A52> /xe1/xa9/x92 TAI THAM LETTER OO ++<U1A53> /xe1/xa9/x93 TAI THAM LETTER LAE ++<U1A54> /xe1/xa9/x94 TAI THAM LETTER GREAT SA ++<U1A55> /xe1/xa9/x95 TAI THAM CONSONANT SIGN MEDIAL RA ++<U1A56> /xe1/xa9/x96 TAI THAM CONSONANT SIGN MEDIAL LA ++<U1A57> /xe1/xa9/x97 TAI THAM CONSONANT SIGN LA TANG LAI ++<U1A58> /xe1/xa9/x98 TAI THAM SIGN MAI KANG LAI ++<U1A59> /xe1/xa9/x99 TAI THAM CONSONANT SIGN FINAL NGA ++<U1A5A> /xe1/xa9/x9a TAI THAM CONSONANT SIGN LOW PA ++<U1A5B> /xe1/xa9/x9b TAI THAM CONSONANT SIGN HIGH RATHA OR LOW PA ++<U1A5C> /xe1/xa9/x9c TAI THAM CONSONANT SIGN MA ++<U1A5D> /xe1/xa9/x9d TAI THAM CONSONANT SIGN BA ++<U1A5E> /xe1/xa9/x9e TAI THAM CONSONANT SIGN SA ++<U1A60> /xe1/xa9/xa0 TAI THAM SIGN SAKOT ++<U1A61> /xe1/xa9/xa1 TAI THAM VOWEL SIGN A ++<U1A62> /xe1/xa9/xa2 TAI THAM VOWEL SIGN MAI SAT ++<U1A63> /xe1/xa9/xa3 TAI THAM VOWEL SIGN AA ++<U1A64> /xe1/xa9/xa4 TAI THAM VOWEL SIGN TALL AA ++<U1A65> /xe1/xa9/xa5 TAI THAM VOWEL SIGN I ++<U1A66> /xe1/xa9/xa6 TAI THAM VOWEL SIGN II ++<U1A67> /xe1/xa9/xa7 TAI THAM VOWEL SIGN UE ++<U1A68> /xe1/xa9/xa8 TAI THAM VOWEL SIGN UUE ++<U1A69> /xe1/xa9/xa9 TAI THAM VOWEL SIGN U ++<U1A6A> /xe1/xa9/xaa TAI THAM VOWEL SIGN UU ++<U1A6B> /xe1/xa9/xab TAI THAM VOWEL SIGN O ++<U1A6C> /xe1/xa9/xac TAI THAM VOWEL SIGN OA BELOW ++<U1A6D> /xe1/xa9/xad TAI THAM VOWEL SIGN OY ++<U1A6E> /xe1/xa9/xae TAI THAM VOWEL SIGN E ++<U1A6F> /xe1/xa9/xaf TAI THAM VOWEL SIGN AE ++<U1A70> /xe1/xa9/xb0 TAI THAM VOWEL SIGN OO ++<U1A71> /xe1/xa9/xb1 TAI THAM VOWEL SIGN AI ++<U1A72> /xe1/xa9/xb2 TAI THAM VOWEL SIGN THAM AI ++<U1A73> /xe1/xa9/xb3 TAI THAM VOWEL SIGN OA ABOVE ++<U1A74> /xe1/xa9/xb4 TAI THAM SIGN MAI KANG ++<U1A75> /xe1/xa9/xb5 TAI THAM SIGN TONE-1 ++<U1A76> /xe1/xa9/xb6 TAI THAM SIGN TONE-2 ++<U1A77> /xe1/xa9/xb7 TAI THAM SIGN KHUEN TONE-3 ++<U1A78> /xe1/xa9/xb8 TAI THAM SIGN KHUEN TONE-4 ++<U1A79> /xe1/xa9/xb9 TAI THAM SIGN KHUEN TONE-5 ++<U1A7A> /xe1/xa9/xba TAI THAM SIGN RA HAAM ++<U1A7B> /xe1/xa9/xbb TAI THAM SIGN MAI SAM ++<U1A7C> /xe1/xa9/xbc TAI THAM SIGN KHUEN-LUE KARAN ++<U1A7F> /xe1/xa9/xbf TAI THAM COMBINING CRYPTOGRAMMIC DOT ++<U1A80> /xe1/xaa/x80 TAI THAM HORA DIGIT ZERO ++<U1A81> /xe1/xaa/x81 TAI THAM HORA DIGIT ONE ++<U1A82> /xe1/xaa/x82 TAI THAM HORA DIGIT TWO ++<U1A83> /xe1/xaa/x83 TAI THAM HORA DIGIT THREE ++<U1A84> /xe1/xaa/x84 TAI THAM HORA DIGIT FOUR ++<U1A85> /xe1/xaa/x85 TAI THAM HORA DIGIT FIVE ++<U1A86> /xe1/xaa/x86 TAI THAM HORA DIGIT SIX ++<U1A87> /xe1/xaa/x87 TAI THAM HORA DIGIT SEVEN ++<U1A88> /xe1/xaa/x88 TAI THAM HORA DIGIT EIGHT ++<U1A89> /xe1/xaa/x89 TAI THAM HORA DIGIT NINE ++<U1A90> /xe1/xaa/x90 TAI THAM THAM DIGIT ZERO ++<U1A91> /xe1/xaa/x91 TAI THAM THAM DIGIT ONE ++<U1A92> /xe1/xaa/x92 TAI THAM THAM DIGIT TWO ++<U1A93> /xe1/xaa/x93 TAI THAM THAM DIGIT THREE ++<U1A94> /xe1/xaa/x94 TAI THAM THAM DIGIT FOUR ++<U1A95> /xe1/xaa/x95 TAI THAM THAM DIGIT FIVE ++<U1A96> /xe1/xaa/x96 TAI THAM THAM DIGIT SIX ++<U1A97> /xe1/xaa/x97 TAI THAM THAM DIGIT SEVEN ++<U1A98> /xe1/xaa/x98 TAI THAM THAM DIGIT EIGHT ++<U1A99> /xe1/xaa/x99 TAI THAM THAM DIGIT NINE ++<U1AA0> /xe1/xaa/xa0 TAI THAM SIGN WIANG ++<U1AA1> /xe1/xaa/xa1 TAI THAM SIGN WIANGWAAK ++<U1AA2> /xe1/xaa/xa2 TAI THAM SIGN SAWAN ++<U1AA3> /xe1/xaa/xa3 TAI THAM SIGN KEOW ++<U1AA4> /xe1/xaa/xa4 TAI THAM SIGN HOY ++<U1AA5> /xe1/xaa/xa5 TAI THAM SIGN DOKMAI ++<U1AA6> /xe1/xaa/xa6 TAI THAM SIGN REVERSED ROTATED RANA ++<U1AA7> /xe1/xaa/xa7 TAI THAM SIGN MAI YAMOK ++<U1AA8> /xe1/xaa/xa8 TAI THAM SIGN KAAN ++<U1AA9> /xe1/xaa/xa9 TAI THAM SIGN KAANKUU ++<U1AAA> /xe1/xaa/xaa TAI THAM SIGN SATKAAN ++<U1AAB> /xe1/xaa/xab TAI THAM SIGN SATKAANKUU ++<U1AAC> /xe1/xaa/xac TAI THAM SIGN HANG ++<U1AAD> /xe1/xaa/xad TAI THAM SIGN CAANG + <U1B00> /xe1/xac/x80 BALINESE SIGN ULU RICEM + <U1B01> /xe1/xac/x81 BALINESE SIGN ULU CANDRA + <U1B02> /xe1/xac/x82 BALINESE SIGN CECEK +@@ -5653,6 +6016,62 @@ CHARMAP + <U1BB7> /xe1/xae/xb7 SUNDANESE DIGIT SEVEN + <U1BB8> /xe1/xae/xb8 SUNDANESE DIGIT EIGHT + <U1BB9> /xe1/xae/xb9 SUNDANESE DIGIT NINE ++<U1BC0> /xe1/xaf/x80 BATAK LETTER A ++<U1BC1> /xe1/xaf/x81 BATAK LETTER SIMALUNGUN A ++<U1BC2> /xe1/xaf/x82 BATAK LETTER HA ++<U1BC3> /xe1/xaf/x83 BATAK LETTER SIMALUNGUN HA ++<U1BC4> /xe1/xaf/x84 BATAK LETTER MANDAILING HA ++<U1BC5> /xe1/xaf/x85 BATAK LETTER BA ++<U1BC6> /xe1/xaf/x86 BATAK LETTER KARO BA ++<U1BC7> /xe1/xaf/x87 BATAK LETTER PA ++<U1BC8> /xe1/xaf/x88 BATAK LETTER SIMALUNGUN PA ++<U1BC9> /xe1/xaf/x89 BATAK LETTER NA ++<U1BCA> /xe1/xaf/x8a BATAK LETTER MANDAILING NA ++<U1BCB> /xe1/xaf/x8b BATAK LETTER WA ++<U1BCC> /xe1/xaf/x8c BATAK LETTER SIMALUNGUN WA ++<U1BCD> /xe1/xaf/x8d BATAK LETTER PAKPAK WA ++<U1BCE> /xe1/xaf/x8e BATAK LETTER GA ++<U1BCF> /xe1/xaf/x8f BATAK LETTER SIMALUNGUN GA ++<U1BD0> /xe1/xaf/x90 BATAK LETTER JA ++<U1BD1> /xe1/xaf/x91 BATAK LETTER DA ++<U1BD2> /xe1/xaf/x92 BATAK LETTER RA ++<U1BD3> /xe1/xaf/x93 BATAK LETTER SIMALUNGUN RA ++<U1BD4> /xe1/xaf/x94 BATAK LETTER MA ++<U1BD5> /xe1/xaf/x95 BATAK LETTER SIMALUNGUN MA ++<U1BD6> /xe1/xaf/x96 BATAK LETTER SOUTHERN TA ++<U1BD7> /xe1/xaf/x97 BATAK LETTER NORTHERN TA ++<U1BD8> /xe1/xaf/x98 BATAK LETTER SA ++<U1BD9> /xe1/xaf/x99 BATAK LETTER SIMALUNGUN SA ++<U1BDA> /xe1/xaf/x9a BATAK LETTER MANDAILING SA ++<U1BDB> /xe1/xaf/x9b BATAK LETTER YA ++<U1BDC> /xe1/xaf/x9c BATAK LETTER SIMALUNGUN YA ++<U1BDD> /xe1/xaf/x9d BATAK LETTER NGA ++<U1BDE> /xe1/xaf/x9e BATAK LETTER LA ++<U1BDF> /xe1/xaf/x9f BATAK LETTER SIMALUNGUN LA ++<U1BE0> /xe1/xaf/xa0 BATAK LETTER NYA ++<U1BE1> /xe1/xaf/xa1 BATAK LETTER CA ++<U1BE2> /xe1/xaf/xa2 BATAK LETTER NDA ++<U1BE3> /xe1/xaf/xa3 BATAK LETTER MBA ++<U1BE4> /xe1/xaf/xa4 BATAK LETTER I ++<U1BE5> /xe1/xaf/xa5 BATAK LETTER U ++<U1BE6> /xe1/xaf/xa6 BATAK SIGN TOMPI ++<U1BE7> /xe1/xaf/xa7 BATAK VOWEL SIGN E ++<U1BE8> /xe1/xaf/xa8 BATAK VOWEL SIGN PAKPAK E ++<U1BE9> /xe1/xaf/xa9 BATAK VOWEL SIGN EE ++<U1BEA> /xe1/xaf/xaa BATAK VOWEL SIGN I ++<U1BEB> /xe1/xaf/xab BATAK VOWEL SIGN KARO I ++<U1BEC> /xe1/xaf/xac BATAK VOWEL SIGN O ++<U1BED> /xe1/xaf/xad BATAK VOWEL SIGN KARO O ++<U1BEE> /xe1/xaf/xae BATAK VOWEL SIGN U ++<U1BEF> /xe1/xaf/xaf BATAK VOWEL SIGN U FOR SIMALUNGUN SA ++<U1BF0> /xe1/xaf/xb0 BATAK CONSONANT SIGN NG ++<U1BF1> /xe1/xaf/xb1 BATAK CONSONANT SIGN H ++<U1BF2> /xe1/xaf/xb2 BATAK PANGOLAT ++<U1BF3> /xe1/xaf/xb3 BATAK PANONGONAN ++<U1BFC> /xe1/xaf/xbc BATAK SYMBOL BINDU NA METEK ++<U1BFD> /xe1/xaf/xbd BATAK SYMBOL BINDU PINARBORAS ++<U1BFE> /xe1/xaf/xbe BATAK SYMBOL BINDU JUDUL ++<U1BFF> /xe1/xaf/xbf BATAK SYMBOL BINDU PANGOLAT + <U1C00> /xe1/xb0/x80 LEPCHA LETTER KA + <U1C01> /xe1/xb0/x81 LEPCHA LETTER KLA + <U1C02> /xe1/xb0/x82 LEPCHA LETTER KHA +@@ -5775,6 +6194,41 @@ CHARMAP + <U1C7D> /xe1/xb1/xbd OL CHIKI AHAD + <U1C7E> /xe1/xb1/xbe OL CHIKI PUNCTUATION MUCAAD + <U1C7F> /xe1/xb1/xbf OL CHIKI PUNCTUATION DOUBLE MUCAAD ++<U1CD0> /xe1/xb3/x90 VEDIC TONE KARSHANA ++<U1CD1> /xe1/xb3/x91 VEDIC TONE SHARA ++<U1CD2> /xe1/xb3/x92 VEDIC TONE PRENKHA ++<U1CD3> /xe1/xb3/x93 VEDIC SIGN NIHSHVASA ++<U1CD4> /xe1/xb3/x94 VEDIC SIGN YAJURVEDIC MIDLINE SVARITA ++<U1CD5> /xe1/xb3/x95 VEDIC TONE YAJURVEDIC AGGRAVATED INDEPENDENT SVARITA ++<U1CD6> /xe1/xb3/x96 VEDIC TONE YAJURVEDIC INDEPENDENT SVARITA ++<U1CD7> /xe1/xb3/x97 VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA ++<U1CD8> /xe1/xb3/x98 VEDIC TONE CANDRA BELOW ++<U1CD9> /xe1/xb3/x99 VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA SCHROEDER ++<U1CDA> /xe1/xb3/x9a VEDIC TONE DOUBLE SVARITA ++<U1CDB> /xe1/xb3/x9b VEDIC TONE TRIPLE SVARITA ++<U1CDC> /xe1/xb3/x9c VEDIC TONE KATHAKA ANUDATTA ++<U1CDD> /xe1/xb3/x9d VEDIC TONE DOT BELOW ++<U1CDE> /xe1/xb3/x9e VEDIC TONE TWO DOTS BELOW ++<U1CDF> /xe1/xb3/x9f VEDIC TONE THREE DOTS BELOW ++<U1CE0> /xe1/xb3/xa0 VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA ++<U1CE1> /xe1/xb3/xa1 VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA ++<U1CE2> /xe1/xb3/xa2 VEDIC SIGN VISARGA SVARITA ++<U1CE3> /xe1/xb3/xa3 VEDIC SIGN VISARGA UDATTA ++<U1CE4> /xe1/xb3/xa4 VEDIC SIGN REVERSED VISARGA UDATTA ++<U1CE5> /xe1/xb3/xa5 VEDIC SIGN VISARGA ANUDATTA ++<U1CE6> /xe1/xb3/xa6 VEDIC SIGN REVERSED VISARGA ANUDATTA ++<U1CE7> /xe1/xb3/xa7 VEDIC SIGN VISARGA UDATTA WITH TAIL ++<U1CE8> /xe1/xb3/xa8 VEDIC SIGN VISARGA ANUDATTA WITH TAIL ++<U1CE9> /xe1/xb3/xa9 VEDIC SIGN ANUSVARA ANTARGOMUKHA ++<U1CEA> /xe1/xb3/xaa VEDIC SIGN ANUSVARA BAHIRGOMUKHA ++<U1CEB> /xe1/xb3/xab VEDIC SIGN ANUSVARA VAMAGOMUKHA ++<U1CEC> /xe1/xb3/xac VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL ++<U1CED> /xe1/xb3/xad VEDIC SIGN TIRYAK ++<U1CEE> /xe1/xb3/xae VEDIC SIGN HEXIFORM LONG ANUSVARA ++<U1CEF> /xe1/xb3/xaf VEDIC SIGN LONG ANUSVARA ++<U1CF0> /xe1/xb3/xb0 VEDIC SIGN RTHANG LONG ANUSVARA ++<U1CF1> /xe1/xb3/xb1 VEDIC SIGN ANUSVARA UBHAYATO MUKHA ++<U1CF2> /xe1/xb3/xb2 VEDIC SIGN ARDHAVISARGA + <U1D00> /xe1/xb4/x80 LATIN LETTER SMALL CAPITAL A + <U1D01> /xe1/xb4/x81 LATIN LETTER SMALL CAPITAL AE + <U1D02> /xe1/xb4/x82 LATIN SMALL LETTER TURNED AE +@@ -6006,6 +6460,8 @@ CHARMAP + <U1DE4> /xe1/xb7/xa4 COMBINING LATIN SMALL LETTER S + <U1DE5> /xe1/xb7/xa5 COMBINING LATIN SMALL LETTER LONG S + <U1DE6> /xe1/xb7/xa6 COMBINING LATIN SMALL LETTER Z ++<U1DFC> /xe1/xb7/xbc COMBINING DOUBLE INVERTED BREVE BELOW ++<U1DFD> /xe1/xb7/xbd COMBINING ALMOST EQUAL TO BELOW + <U1DFE> /xe1/xb7/xbe COMBINING LEFT ARROWHEAD ABOVE + <U1DFF> /xe1/xb7/xbf COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW + <U1E00> /xe1/xb8/x80 LATIN CAPITAL LETTER A WITH RING BELOW +@@ -6638,6 +7094,14 @@ CHARMAP + <U2092> /xe2/x82/x92 LATIN SUBSCRIPT SMALL LETTER O + <U2093> /xe2/x82/x93 LATIN SUBSCRIPT SMALL LETTER X + <U2094> /xe2/x82/x94 LATIN SUBSCRIPT SMALL LETTER SCHWA ++<U2095> /xe2/x82/x95 LATIN SUBSCRIPT SMALL LETTER H ++<U2096> /xe2/x82/x96 LATIN SUBSCRIPT SMALL LETTER K ++<U2097> /xe2/x82/x97 LATIN SUBSCRIPT SMALL LETTER L ++<U2098> /xe2/x82/x98 LATIN SUBSCRIPT SMALL LETTER M ++<U2099> /xe2/x82/x99 LATIN SUBSCRIPT SMALL LETTER N ++<U209A> /xe2/x82/x9a LATIN SUBSCRIPT SMALL LETTER P ++<U209B> /xe2/x82/x9b LATIN SUBSCRIPT SMALL LETTER S ++<U209C> /xe2/x82/x9c LATIN SUBSCRIPT SMALL LETTER T + <U20A0> /xe2/x82/xa0 EURO-CURRENCY SIGN + <U20A1> /xe2/x82/xa1 COLON SIGN + <U20A2> /xe2/x82/xa2 CRUZEIRO SIGN +@@ -6660,6 +7124,10 @@ CHARMAP + <U20B3> /xe2/x82/xb3 AUSTRAL SIGN + <U20B4> /xe2/x82/xb4 HRYVNIA SIGN + <U20B5> /xe2/x82/xb5 CEDI SIGN ++<U20B6> /xe2/x82/xb6 LIVRE TOURNOIS SIGN ++<U20B7> /xe2/x82/xb7 SPESMILO SIGN ++<U20B8> /xe2/x82/xb8 TENGE SIGN ++<U20B9> /xe2/x82/xb9 INDIAN RUPEE SIGN + <U20D0> /xe2/x83/x90 COMBINING LEFT HARPOON ABOVE + <U20D1> /xe2/x83/x91 COMBINING RIGHT HARPOON ABOVE + <U20D2> /xe2/x83/x92 COMBINING LONG VERTICAL LINE OVERLAY +@@ -6773,6 +7241,9 @@ CHARMAP + <U214D> /xe2/x85/x8d AKTIESELSKAB + <U214E> /xe2/x85/x8e TURNED SMALL F + <U214F> /xe2/x85/x8f SYMBOL FOR SAMARITAN SOURCE ++<U2150> /xe2/x85/x90 VULGAR FRACTION ONE SEVENTH ++<U2151> /xe2/x85/x91 VULGAR FRACTION ONE NINTH ++<U2152> /xe2/x85/x92 VULGAR FRACTION ONE TENTH + <U2153> /xe2/x85/x93 VULGAR FRACTION ONE THIRD + <U2154> /xe2/x85/x94 VULGAR FRACTION TWO THIRDS + <U2155> /xe2/x85/x95 VULGAR FRACTION ONE FIFTH +@@ -6827,6 +7298,7 @@ CHARMAP + <U2186> /xe2/x86/x86 ROMAN NUMERAL FIFTY EARLY FORM + <U2187> /xe2/x86/x87 ROMAN NUMERAL FIFTY THOUSAND + <U2188> /xe2/x86/x88 ROMAN NUMERAL ONE HUNDRED THOUSAND ++<U2189> /xe2/x86/x89 VULGAR FRACTION ZERO THIRDS + <U2190> /xe2/x86/x90 LEFTWARDS ARROW + <U2191> /xe2/x86/x91 UPWARDS ARROW + <U2192> /xe2/x86/x92 RIGHTWARDS ARROW +@@ -7427,6 +7899,18 @@ CHARMAP + <U23E5> /xe2/x8f/xa5 FLATNESS + <U23E6> /xe2/x8f/xa6 AC CURRENT + <U23E7> /xe2/x8f/xa7 ELECTRICAL INTERSECTION ++<U23E8> /xe2/x8f/xa8 DECIMAL EXPONENT SYMBOL ++<U23E9> /xe2/x8f/xa9 BLACK RIGHT-POINTING DOUBLE TRIANGLE ++<U23EA> /xe2/x8f/xaa BLACK LEFT-POINTING DOUBLE TRIANGLE ++<U23EB> /xe2/x8f/xab BLACK UP-POINTING DOUBLE TRIANGLE ++<U23EC> /xe2/x8f/xac BLACK DOWN-POINTING DOUBLE TRIANGLE ++<U23ED> /xe2/x8f/xad BLACK RIGHT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR ++<U23EE> /xe2/x8f/xae BLACK LEFT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR ++<U23EF> /xe2/x8f/xaf BLACK RIGHT-POINTING TRIANGLE WITH DOUBLE VERTICAL BAR ++<U23F0> /xe2/x8f/xb0 ALARM CLOCK ++<U23F1> /xe2/x8f/xb1 STOPWATCH ++<U23F2> /xe2/x8f/xb2 TIMER CLOCK ++<U23F3> /xe2/x8f/xb3 HOURGLASS WITH FLOWING SAND + <U2400> /xe2/x90/x80 SYMBOL FOR NULL + <U2401> /xe2/x90/x81 SYMBOL FOR START OF HEADING + <U2402> /xe2/x90/x82 SYMBOL FOR START OF TEXT +@@ -8051,6 +8535,8 @@ CHARMAP + <U269B> /xe2/x9a/x9b ATOM SYMBOL + <U269C> /xe2/x9a/x9c FLEUR-DE-LIS + <U269D> /xe2/x9a/x9d OUTLINED WHITE STAR ++<U269E> /xe2/x9a/x9e THREE LINES CONVERGING RIGHT ++<U269F> /xe2/x9a/x9f THREE LINES CONVERGING LEFT + <U26A0> /xe2/x9a/xa0 WARNING SIGN + <U26A1> /xe2/x9a/xa1 HIGH VOLTAGE SIGN + <U26A2> /xe2/x9a/xa2 DOUBLED FEMALE SIGN +@@ -8080,18 +8566,84 @@ CHARMAP + <U26BA> /xe2/x9a/xba SEMISEXTILE + <U26BB> /xe2/x9a/xbb QUINCUNX + <U26BC> /xe2/x9a/xbc SESQUIQUADRATE ++<U26BD> /xe2/x9a/xbd SOCCER BALL ++<U26BE> /xe2/x9a/xbe BASEBALL ++<U26BF> /xe2/x9a/xbf SQUARED KEY + <U26C0> /xe2/x9b/x80 WHITE DRAUGHTS MAN + <U26C1> /xe2/x9b/x81 WHITE DRAUGHTS KING + <U26C2> /xe2/x9b/x82 BLACK DRAUGHTS MAN + <U26C3> /xe2/x9b/x83 BLACK DRAUGHTS KING ++<U26C4> /xe2/x9b/x84 SNOWMAN WITHOUT SNOW ++<U26C5> /xe2/x9b/x85 SUN BEHIND CLOUD ++<U26C6> /xe2/x9b/x86 RAIN ++<U26C7> /xe2/x9b/x87 BLACK SNOWMAN ++<U26C8> /xe2/x9b/x88 THUNDER CLOUD AND RAIN ++<U26C9> /xe2/x9b/x89 TURNED WHITE SHOGI PIECE ++<U26CA> /xe2/x9b/x8a TURNED BLACK SHOGI PIECE ++<U26CB> /xe2/x9b/x8b WHITE DIAMOND IN SQUARE ++<U26CC> /xe2/x9b/x8c CROSSING LANES ++<U26CD> /xe2/x9b/x8d DISABLED CAR ++<U26CE> /xe2/x9b/x8e OPHIUCHUS ++<U26CF> /xe2/x9b/x8f PICK ++<U26D0> /xe2/x9b/x90 CAR SLIDING ++<U26D1> /xe2/x9b/x91 HELMET WITH WHITE CROSS ++<U26D2> /xe2/x9b/x92 CIRCLED CROSSING LANES ++<U26D3> /xe2/x9b/x93 CHAINS ++<U26D4> /xe2/x9b/x94 NO ENTRY ++<U26D5> /xe2/x9b/x95 ALTERNATE ONE-WAY LEFT WAY TRAFFIC ++<U26D6> /xe2/x9b/x96 BLACK TWO-WAY LEFT WAY TRAFFIC ++<U26D7> /xe2/x9b/x97 WHITE TWO-WAY LEFT WAY TRAFFIC ++<U26D8> /xe2/x9b/x98 BLACK LEFT LANE MERGE ++<U26D9> /xe2/x9b/x99 WHITE LEFT LANE MERGE ++<U26DA> /xe2/x9b/x9a DRIVE SLOW SIGN ++<U26DB> /xe2/x9b/x9b HEAVY WHITE DOWN-POINTING TRIANGLE ++<U26DC> /xe2/x9b/x9c LEFT CLOSED ENTRY ++<U26DD> /xe2/x9b/x9d SQUARED SALTIRE ++<U26DE> /xe2/x9b/x9e FALLING DIAGONAL IN WHITE CIRCLE IN BLACK SQUARE ++<U26DF> /xe2/x9b/x9f BLACK TRUCK ++<U26E0> /xe2/x9b/xa0 RESTRICTED LEFT ENTRY-1 ++<U26E1> /xe2/x9b/xa1 RESTRICTED LEFT ENTRY-2 ++<U26E2> /xe2/x9b/xa2 ASTRONOMICAL SYMBOL FOR URANUS ++<U26E3> /xe2/x9b/xa3 HEAVY CIRCLE WITH STROKE AND TWO DOTS ABOVE ++<U26E4> /xe2/x9b/xa4 PENTAGRAM ++<U26E5> /xe2/x9b/xa5 RIGHT-HANDED INTERLACED PENTAGRAM ++<U26E6> /xe2/x9b/xa6 LEFT-HANDED INTERLACED PENTAGRAM ++<U26E7> /xe2/x9b/xa7 INVERTED PENTAGRAM ++<U26E8> /xe2/x9b/xa8 BLACK CROSS ON SHIELD ++<U26E9> /xe2/x9b/xa9 SHINTO SHRINE ++<U26EA> /xe2/x9b/xaa CHURCH ++<U26EB> /xe2/x9b/xab CASTLE ++<U26EC> /xe2/x9b/xac HISTORIC SITE ++<U26ED> /xe2/x9b/xad GEAR WITHOUT HUB ++<U26EE> /xe2/x9b/xae GEAR WITH HANDLES ++<U26EF> /xe2/x9b/xaf MAP SYMBOL FOR LIGHTHOUSE ++<U26F0> /xe2/x9b/xb0 MOUNTAIN ++<U26F1> /xe2/x9b/xb1 UMBRELLA ON GROUND ++<U26F2> /xe2/x9b/xb2 FOUNTAIN ++<U26F3> /xe2/x9b/xb3 FLAG IN HOLE ++<U26F4> /xe2/x9b/xb4 FERRY ++<U26F5> /xe2/x9b/xb5 SAILBOAT ++<U26F6> /xe2/x9b/xb6 SQUARE FOUR CORNERS ++<U26F7> /xe2/x9b/xb7 SKIER ++<U26F8> /xe2/x9b/xb8 ICE SKATE ++<U26F9> /xe2/x9b/xb9 PERSON WITH BALL ++<U26FA> /xe2/x9b/xba TENT ++<U26FB> /xe2/x9b/xbb JAPANESE BANK SYMBOL ++<U26FC> /xe2/x9b/xbc HEADSTONE GRAVEYARD SYMBOL ++<U26FD> /xe2/x9b/xbd FUEL PUMP ++<U26FE> /xe2/x9b/xbe CUP ON BLACK SQUARE ++<U26FF> /xe2/x9b/xbf WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE + <U2701> /xe2/x9c/x81 UPPER BLADE SCISSORS + <U2702> /xe2/x9c/x82 BLACK SCISSORS + <U2703> /xe2/x9c/x83 LOWER BLADE SCISSORS + <U2704> /xe2/x9c/x84 WHITE SCISSORS ++<U2705> /xe2/x9c/x85 WHITE HEAVY CHECK MARK + <U2706> /xe2/x9c/x86 TELEPHONE LOCATION SIGN + <U2707> /xe2/x9c/x87 TAPE DRIVE + <U2708> /xe2/x9c/x88 AIRPLANE + <U2709> /xe2/x9c/x89 ENVELOPE ++<U270A> /xe2/x9c/x8a RAISED FIST ++<U270B> /xe2/x9c/x8b RAISED HAND + <U270C> /xe2/x9c/x8c VICTORY HAND + <U270D> /xe2/x9c/x8d WRITING HAND + <U270E> /xe2/x9c/x8e LOWER RIGHT PENCIL +@@ -8120,6 +8672,7 @@ CHARMAP + <U2725> /xe2/x9c/xa5 FOUR CLUB-SPOKED ASTERISK + <U2726> /xe2/x9c/xa6 BLACK FOUR POINTED STAR + <U2727> /xe2/x9c/xa7 WHITE FOUR POINTED STAR ++<U2728> /xe2/x9c/xa8 SPARKLES + <U2729> /xe2/x9c/xa9 STRESS OUTLINED WHITE STAR + <U272A> /xe2/x9c/xaa CIRCLED WHITE STAR + <U272B> /xe2/x9c/xab OPEN CENTRE BLACK STAR +@@ -8155,12 +8708,18 @@ CHARMAP + <U2749> /xe2/x9d/x89 BALLOON-SPOKED ASTERISK + <U274A> /xe2/x9d/x8a EIGHT TEARDROP-SPOKED PROPELLER ASTERISK + <U274B> /xe2/x9d/x8b HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK ++<U274C> /xe2/x9d/x8c CROSS MARK + <U274D> /xe2/x9d/x8d SHADOWED WHITE CIRCLE ++<U274E> /xe2/x9d/x8e NEGATIVE SQUARED CROSS MARK + <U274F> /xe2/x9d/x8f LOWER RIGHT DROP-SHADOWED WHITE SQUARE + <U2750> /xe2/x9d/x90 UPPER RIGHT DROP-SHADOWED WHITE SQUARE + <U2751> /xe2/x9d/x91 LOWER RIGHT SHADOWED WHITE SQUARE + <U2752> /xe2/x9d/x92 UPPER RIGHT SHADOWED WHITE SQUARE ++<U2753> /xe2/x9d/x93 BLACK QUESTION MARK ORNAMENT ++<U2754> /xe2/x9d/x94 WHITE QUESTION MARK ORNAMENT ++<U2755> /xe2/x9d/x95 WHITE EXCLAMATION MARK ORNAMENT + <U2756> /xe2/x9d/x96 BLACK DIAMOND MINUS WHITE X ++<U2757> /xe2/x9d/x97 HEAVY EXCLAMATION MARK SYMBOL + <U2758> /xe2/x9d/x98 LIGHT VERTICAL BAR + <U2759> /xe2/x9d/x99 MEDIUM VERTICAL BAR + <U275A> /xe2/x9d/x9a HEAVY VERTICAL BAR +@@ -8168,6 +8727,8 @@ CHARMAP + <U275C> /xe2/x9d/x9c HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT + <U275D> /xe2/x9d/x9d HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT + <U275E> /xe2/x9d/x9e HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT ++<U275F> /xe2/x9d/x9f HEAVY LOW SINGLE COMMA QUOTATION MARK ORNAMENT ++<U2760> /xe2/x9d/xa0 HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT + <U2761> /xe2/x9d/xa1 CURVED STEM PARAGRAPH SIGN ORNAMENT + <U2762> /xe2/x9d/xa2 HEAVY EXCLAMATION MARK ORNAMENT + <U2763> /xe2/x9d/xa3 HEAVY HEART EXCLAMATION MARK ORNAMENT +@@ -8220,6 +8781,9 @@ CHARMAP + <U2792> /xe2/x9e/x92 DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE + <U2793> /xe2/x9e/x93 DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN + <U2794> /xe2/x9e/x94 HEAVY WIDE-HEADED RIGHTWARDS ARROW ++<U2795> /xe2/x9e/x95 HEAVY PLUS SIGN ++<U2796> /xe2/x9e/x96 HEAVY MINUS SIGN ++<U2797> /xe2/x9e/x97 HEAVY DIVISION SIGN + <U2798> /xe2/x9e/x98 HEAVY SOUTH EAST ARROW + <U2799> /xe2/x9e/x99 HEAVY RIGHTWARDS ARROW + <U279A> /xe2/x9e/x9a HEAVY NORTH EAST ARROW +@@ -8244,6 +8808,7 @@ CHARMAP + <U27AD> /xe2/x9e/xad HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW + <U27AE> /xe2/x9e/xae HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW + <U27AF> /xe2/x9e/xaf NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW ++<U27B0> /xe2/x9e/xb0 CURLY LOOP + <U27B1> /xe2/x9e/xb1 NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW + <U27B2> /xe2/x9e/xb2 CIRCLED HEAVY WHITE RIGHTWARDS ARROW + <U27B3> /xe2/x9e/xb3 WHITE-FEATHERED RIGHTWARDS ARROW +@@ -8258,6 +8823,7 @@ CHARMAP + <U27BC> /xe2/x9e/xbc WEDGE-TAILED RIGHTWARDS ARROW + <U27BD> /xe2/x9e/xbd HEAVY WEDGE-TAILED RIGHTWARDS ARROW + <U27BE> /xe2/x9e/xbe OPEN-OUTLINED RIGHTWARDS ARROW ++<U27BF> /xe2/x9e/xbf DOUBLE CURLY LOOP + <U27C0> /xe2/x9f/x80 THREE DIMENSIONAL ANGLE + <U27C1> /xe2/x9f/x81 WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE + <U27C2> /xe2/x9f/x82 PERPENDICULAR +@@ -8270,6 +8836,8 @@ CHARMAP + <U27C9> /xe2/x9f/x89 SUPERSET PRECEDING SOLIDUS + <U27CA> /xe2/x9f/x8a VERTICAL BAR WITH HORIZONTAL STROKE + <U27CC> /xe2/x9f/x8c LONG DIVISION ++<U27CE> /xe2/x9f/x8e SQUARED LOGICAL AND ++<U27CF> /xe2/x9f/x8f SQUARED LOGICAL OR + <U27D0> /xe2/x9f/x90 WHITE DIAMOND WITH CENTRED DOT + <U27D1> /xe2/x9f/x91 AND WITH DOT + <U27D2> /xe2/x9f/x92 ELEMENT OF OPENING UPWARDS +@@ -9168,6 +9736,11 @@ CHARMAP + <U2B52> /xe2/xad/x92 WHITE SMALL STAR + <U2B53> /xe2/xad/x93 BLACK RIGHT-POINTING PENTAGON + <U2B54> /xe2/xad/x94 WHITE RIGHT-POINTING PENTAGON ++<U2B55> /xe2/xad/x95 HEAVY LARGE CIRCLE ++<U2B56> /xe2/xad/x96 HEAVY OVAL WITH OVAL INSIDE ++<U2B57> /xe2/xad/x97 HEAVY CIRCLE WITH CIRCLE INSIDE ++<U2B58> /xe2/xad/x98 HEAVY CIRCLE ++<U2B59> /xe2/xad/x99 HEAVY CIRCLED SALTIRE + <U2C00> /xe2/xb0/x80 GLAGOLITIC CAPITAL LETTER AZU + <U2C01> /xe2/xb0/x81 GLAGOLITIC CAPITAL LETTER BUKY + <U2C02> /xe2/xb0/x82 GLAGOLITIC CAPITAL LETTER VEDE +@@ -9278,6 +9851,7 @@ CHARMAP + <U2C6D> /xe2/xb1/xad LATIN CAPITAL LETTER ALPHA + <U2C6E> /xe2/xb1/xae LATIN CAPITAL LETTER M WITH HOOK + <U2C6F> /xe2/xb1/xaf LATIN CAPITAL LETTER TURNED A ++<U2C70> /xe2/xb1/xb0 LATIN CAPITAL LETTER TURNED ALPHA + <U2C71> /xe2/xb1/xb1 LATIN SMALL LETTER V WITH RIGHT HOOK + <U2C72> /xe2/xb1/xb2 LATIN CAPITAL LETTER W WITH HOOK + <U2C73> /xe2/xb1/xb3 LATIN SMALL LETTER W WITH HOOK +@@ -9291,6 +9865,8 @@ CHARMAP + <U2C7B> /xe2/xb1/xbb LATIN LETTER SMALL CAPITAL TURNED E + <U2C7C> /xe2/xb1/xbc LATIN SUBSCRIPT SMALL LETTER J + <U2C7D> /xe2/xb1/xbd MODIFIER LETTER CAPITAL V ++<U2C7E> /xe2/xb1/xbe LATIN CAPITAL LETTER S WITH SWASH TAIL ++<U2C7F> /xe2/xb1/xbf LATIN CAPITAL LETTER Z WITH SWASH TAIL + <U2C80> /xe2/xb2/x80 COPTIC CAPITAL LETTER ALFA + <U2C81> /xe2/xb2/x81 COPTIC SMALL LETTER ALFA + <U2C82> /xe2/xb2/x82 COPTIC CAPITAL LETTER VIDA +@@ -9398,6 +9974,13 @@ CHARMAP + <U2CE8> /xe2/xb3/xa8 COPTIC SYMBOL TAU RO + <U2CE9> /xe2/xb3/xa9 COPTIC SYMBOL KHI RO + <U2CEA> /xe2/xb3/xaa COPTIC SYMBOL SHIMA SIMA ++<U2CEB> /xe2/xb3/xab COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI ++<U2CEC> /xe2/xb3/xac COPTIC SMALL LETTER CRYPTOGRAMMIC SHEI ++<U2CED> /xe2/xb3/xad COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA ++<U2CEE> /xe2/xb3/xae COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA ++<U2CEF> /xe2/xb3/xaf COPTIC COMBINING NI ABOVE ++<U2CF0> /xe2/xb3/xb0 COPTIC COMBINING SPIRITUS ASPER ++<U2CF1> /xe2/xb3/xb1 COPTIC COMBINING SPIRITUS LENIS + <U2CF9> /xe2/xb3/xb9 COPTIC OLD NUBIAN FULL STOP + <U2CFA> /xe2/xb3/xba COPTIC OLD NUBIAN DIRECT QUESTION MARK + <U2CFB> /xe2/xb3/xbb COPTIC OLD NUBIAN INDIRECT QUESTION MARK +@@ -9498,6 +10081,8 @@ CHARMAP + <U2D64> /xe2/xb5/xa4 TIFINAGH LETTER TAWELLEMET YAZ + <U2D65> /xe2/xb5/xa5 TIFINAGH LETTER YAZZ + <U2D6F> /xe2/xb5/xaf TIFINAGH MODIFIER LETTER LABIALIZATION MARK ++<U2D70> /xe2/xb5/xb0 TIFINAGH SEPARATOR MARK ++<U2D7F> /xe2/xb5/xbf TIFINAGH CONSONANT JOINER + <U2D80> /xe2/xb6/x80 ETHIOPIC SYLLABLE LOA + <U2D81> /xe2/xb6/x81 ETHIOPIC SYLLABLE MOA + <U2D82> /xe2/xb6/x82 ETHIOPIC SYLLABLE ROA +@@ -9658,6 +10243,7 @@ CHARMAP + <U2E2E> /xe2/xb8/xae REVERSED QUESTION MARK + <U2E2F> /xe2/xb8/xaf VERTICAL TILDE + <U2E30> /xe2/xb8/xb0 RING POINT ++<U2E31> /xe2/xb8/xb1 WORD SEPARATOR MIDDLE DOT + <U2E80> /xe2/xba/x80 CJK RADICAL REPEAT + <U2E81> /xe2/xba/x81 CJK RADICAL CLIFF + <U2E82> /xe2/xba/x82 CJK RADICAL SECOND ONE +@@ -10427,6 +11013,9 @@ CHARMAP + <U31B5> /xe3/x86/xb5 BOPOMOFO FINAL LETTER T + <U31B6> /xe3/x86/xb6 BOPOMOFO FINAL LETTER K + <U31B7> /xe3/x86/xb7 BOPOMOFO FINAL LETTER H ++<U31B8> /xe3/x86/xb8 BOPOMOFO LETTER GH ++<U31B9> /xe3/x86/xb9 BOPOMOFO LETTER LH ++<U31BA> /xe3/x86/xba BOPOMOFO LETTER ZY + <U31C0> /xe3/x87/x80 CJK STROKE T + <U31C1> /xe3/x87/x81 CJK STROKE WG + <U31C2> /xe3/x87/x82 CJK STROKE XG +@@ -10546,6 +11135,18 @@ CHARMAP + <U3241> /xe3/x89/x81 PARENTHESIZED IDEOGRAPH REST + <U3242> /xe3/x89/x82 PARENTHESIZED IDEOGRAPH SELF + <U3243> /xe3/x89/x83 PARENTHESIZED IDEOGRAPH REACH ++<U3244> /xe3/x89/x84 CIRCLED IDEOGRAPH QUESTION ++<U3245> /xe3/x89/x85 CIRCLED IDEOGRAPH KINDERGARTEN ++<U3246> /xe3/x89/x86 CIRCLED IDEOGRAPH SCHOOL ++<U3247> /xe3/x89/x87 CIRCLED IDEOGRAPH KOTO ++<U3248> /xe3/x89/x88 CIRCLED NUMBER TEN ON BLACK SQUARE ++<U3249> /xe3/x89/x89 CIRCLED NUMBER TWENTY ON BLACK SQUARE ++<U324A> /xe3/x89/x8a CIRCLED NUMBER THIRTY ON BLACK SQUARE ++<U324B> /xe3/x89/x8b CIRCLED NUMBER FORTY ON BLACK SQUARE ++<U324C> /xe3/x89/x8c CIRCLED NUMBER FIFTY ON BLACK SQUARE ++<U324D> /xe3/x89/x8d CIRCLED NUMBER SIXTY ON BLACK SQUARE ++<U324E> /xe3/x89/x8e CIRCLED NUMBER SEVENTY ON BLACK SQUARE ++<U324F> /xe3/x89/x8f CIRCLED NUMBER EIGHTY ON BLACK SQUARE + <U3250> /xe3/x89/x90 PARTNERSHIP SIGN + <U3251> /xe3/x89/x91 CIRCLED NUMBER TWENTY ONE + <U3252> /xe3/x89/x92 CIRCLED NUMBER TWENTY TWO +@@ -12691,6 +13292,54 @@ CHARMAP + <UA4C4> /xea/x93/x84 YI RADICAL ZZIET + <UA4C5> /xea/x93/x85 YI RADICAL NBIE + <UA4C6> /xea/x93/x86 YI RADICAL KE ++<UA4D0> /xea/x93/x90 LISU LETTER BA ++<UA4D1> /xea/x93/x91 LISU LETTER PA ++<UA4D2> /xea/x93/x92 LISU LETTER PHA ++<UA4D3> /xea/x93/x93 LISU LETTER DA ++<UA4D4> /xea/x93/x94 LISU LETTER TA ++<UA4D5> /xea/x93/x95 LISU LETTER THA ++<UA4D6> /xea/x93/x96 LISU LETTER GA ++<UA4D7> /xea/x93/x97 LISU LETTER KA ++<UA4D8> /xea/x93/x98 LISU LETTER KHA ++<UA4D9> /xea/x93/x99 LISU LETTER JA ++<UA4DA> /xea/x93/x9a LISU LETTER CA ++<UA4DB> /xea/x93/x9b LISU LETTER CHA ++<UA4DC> /xea/x93/x9c LISU LETTER DZA ++<UA4DD> /xea/x93/x9d LISU LETTER TSA ++<UA4DE> /xea/x93/x9e LISU LETTER TSHA ++<UA4DF> /xea/x93/x9f LISU LETTER MA ++<UA4E0> /xea/x93/xa0 LISU LETTER NA ++<UA4E1> /xea/x93/xa1 LISU LETTER LA ++<UA4E2> /xea/x93/xa2 LISU LETTER SA ++<UA4E3> /xea/x93/xa3 LISU LETTER ZHA ++<UA4E4> /xea/x93/xa4 LISU LETTER ZA ++<UA4E5> /xea/x93/xa5 LISU LETTER NGA ++<UA4E6> /xea/x93/xa6 LISU LETTER HA ++<UA4E7> /xea/x93/xa7 LISU LETTER XA ++<UA4E8> /xea/x93/xa8 LISU LETTER HHA ++<UA4E9> /xea/x93/xa9 LISU LETTER FA ++<UA4EA> /xea/x93/xaa LISU LETTER WA ++<UA4EB> /xea/x93/xab LISU LETTER SHA ++<UA4EC> /xea/x93/xac LISU LETTER YA ++<UA4ED> /xea/x93/xad LISU LETTER GHA ++<UA4EE> /xea/x93/xae LISU LETTER A ++<UA4EF> /xea/x93/xaf LISU LETTER AE ++<UA4F0> /xea/x93/xb0 LISU LETTER E ++<UA4F1> /xea/x93/xb1 LISU LETTER EU ++<UA4F2> /xea/x93/xb2 LISU LETTER I ++<UA4F3> /xea/x93/xb3 LISU LETTER O ++<UA4F4> /xea/x93/xb4 LISU LETTER U ++<UA4F5> /xea/x93/xb5 LISU LETTER UE ++<UA4F6> /xea/x93/xb6 LISU LETTER UH ++<UA4F7> /xea/x93/xb7 LISU LETTER OE ++<UA4F8> /xea/x93/xb8 LISU LETTER TONE MYA TI ++<UA4F9> /xea/x93/xb9 LISU LETTER TONE NA PO ++<UA4FA> /xea/x93/xba LISU LETTER TONE MYA CYA ++<UA4FB> /xea/x93/xbb LISU LETTER TONE MYA BO ++<UA4FC> /xea/x93/xbc LISU LETTER TONE MYA NA ++<UA4FD> /xea/x93/xbd LISU LETTER TONE MYA JEU ++<UA4FE> /xea/x93/xbe LISU PUNCTUATION COMMA ++<UA4FF> /xea/x93/xbf LISU PUNCTUATION FULL STOP + <UA500> /xea/x94/x80 VAI SYLLABLE EE + <UA501> /xea/x94/x81 VAI SYLLABLE EEN + <UA502> /xea/x94/x82 VAI SYLLABLE HEE +@@ -13023,6 +13672,8 @@ CHARMAP + <UA65D> /xea/x99/x9d CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS + <UA65E> /xea/x99/x9e CYRILLIC CAPITAL LETTER YN + <UA65F> /xea/x99/x9f CYRILLIC SMALL LETTER YN ++<UA660> /xea/x99/xa0 CYRILLIC CAPITAL LETTER REVERSED TSE ++<UA661> /xea/x99/xa1 CYRILLIC SMALL LETTER REVERSED TSE + <UA662> /xea/x99/xa2 CYRILLIC CAPITAL LETTER SOFT DE + <UA663> /xea/x99/xa3 CYRILLIC SMALL LETTER SOFT DE + <UA664> /xea/x99/xa4 CYRILLIC CAPITAL LETTER SOFT EL +@@ -13069,6 +13720,94 @@ CHARMAP + <UA695> /xea/x9a/x95 CYRILLIC SMALL LETTER HWE + <UA696> /xea/x9a/x96 CYRILLIC CAPITAL LETTER SHWE + <UA697> /xea/x9a/x97 CYRILLIC SMALL LETTER SHWE ++<UA6A0> /xea/x9a/xa0 BAMUM LETTER A ++<UA6A1> /xea/x9a/xa1 BAMUM LETTER KA ++<UA6A2> /xea/x9a/xa2 BAMUM LETTER U ++<UA6A3> /xea/x9a/xa3 BAMUM LETTER KU ++<UA6A4> /xea/x9a/xa4 BAMUM LETTER EE ++<UA6A5> /xea/x9a/xa5 BAMUM LETTER REE ++<UA6A6> /xea/x9a/xa6 BAMUM LETTER TAE ++<UA6A7> /xea/x9a/xa7 BAMUM LETTER O ++<UA6A8> /xea/x9a/xa8 BAMUM LETTER NYI ++<UA6A9> /xea/x9a/xa9 BAMUM LETTER I ++<UA6AA> /xea/x9a/xaa BAMUM LETTER LA ++<UA6AB> /xea/x9a/xab BAMUM LETTER PA ++<UA6AC> /xea/x9a/xac BAMUM LETTER RII ++<UA6AD> /xea/x9a/xad BAMUM LETTER RIEE ++<UA6AE> /xea/x9a/xae BAMUM LETTER LEEEE ++<UA6AF> /xea/x9a/xaf BAMUM LETTER MEEEE ++<UA6B0> /xea/x9a/xb0 BAMUM LETTER TAA ++<UA6B1> /xea/x9a/xb1 BAMUM LETTER NDAA ++<UA6B2> /xea/x9a/xb2 BAMUM LETTER NJAEM ++<UA6B3> /xea/x9a/xb3 BAMUM LETTER M ++<UA6B4> /xea/x9a/xb4 BAMUM LETTER SUU ++<UA6B5> /xea/x9a/xb5 BAMUM LETTER MU ++<UA6B6> /xea/x9a/xb6 BAMUM LETTER SHII ++<UA6B7> /xea/x9a/xb7 BAMUM LETTER SI ++<UA6B8> /xea/x9a/xb8 BAMUM LETTER SHEUX ++<UA6B9> /xea/x9a/xb9 BAMUM LETTER SEUX ++<UA6BA> /xea/x9a/xba BAMUM LETTER KYEE ++<UA6BB> /xea/x9a/xbb BAMUM LETTER KET ++<UA6BC> /xea/x9a/xbc BAMUM LETTER NUAE ++<UA6BD> /xea/x9a/xbd BAMUM LETTER NU ++<UA6BE> /xea/x9a/xbe BAMUM LETTER NJUAE ++<UA6BF> /xea/x9a/xbf BAMUM LETTER YOQ ++<UA6C0> /xea/x9b/x80 BAMUM LETTER SHU ++<UA6C1> /xea/x9b/x81 BAMUM LETTER YUQ ++<UA6C2> /xea/x9b/x82 BAMUM LETTER YA ++<UA6C3> /xea/x9b/x83 BAMUM LETTER NSHA ++<UA6C4> /xea/x9b/x84 BAMUM LETTER KEUX ++<UA6C5> /xea/x9b/x85 BAMUM LETTER PEUX ++<UA6C6> /xea/x9b/x86 BAMUM LETTER NJEE ++<UA6C7> /xea/x9b/x87 BAMUM LETTER NTEE ++<UA6C8> /xea/x9b/x88 BAMUM LETTER PUE ++<UA6C9> /xea/x9b/x89 BAMUM LETTER WUE ++<UA6CA> /xea/x9b/x8a BAMUM LETTER PEE ++<UA6CB> /xea/x9b/x8b BAMUM LETTER FEE ++<UA6CC> /xea/x9b/x8c BAMUM LETTER RU ++<UA6CD> /xea/x9b/x8d BAMUM LETTER LU ++<UA6CE> /xea/x9b/x8e BAMUM LETTER MI ++<UA6CF> /xea/x9b/x8f BAMUM LETTER NI ++<UA6D0> /xea/x9b/x90 BAMUM LETTER REUX ++<UA6D1> /xea/x9b/x91 BAMUM LETTER RAE ++<UA6D2> /xea/x9b/x92 BAMUM LETTER KEN ++<UA6D3> /xea/x9b/x93 BAMUM LETTER NGKWAEN ++<UA6D4> /xea/x9b/x94 BAMUM LETTER NGGA ++<UA6D5> /xea/x9b/x95 BAMUM LETTER NGA ++<UA6D6> /xea/x9b/x96 BAMUM LETTER SHO ++<UA6D7> /xea/x9b/x97 BAMUM LETTER PUAE ++<UA6D8> /xea/x9b/x98 BAMUM LETTER FU ++<UA6D9> /xea/x9b/x99 BAMUM LETTER FOM ++<UA6DA> /xea/x9b/x9a BAMUM LETTER WA ++<UA6DB> /xea/x9b/x9b BAMUM LETTER NA ++<UA6DC> /xea/x9b/x9c BAMUM LETTER LI ++<UA6DD> /xea/x9b/x9d BAMUM LETTER PI ++<UA6DE> /xea/x9b/x9e BAMUM LETTER LOQ ++<UA6DF> /xea/x9b/x9f BAMUM LETTER KO ++<UA6E0> /xea/x9b/xa0 BAMUM LETTER MBEN ++<UA6E1> /xea/x9b/xa1 BAMUM LETTER REN ++<UA6E2> /xea/x9b/xa2 BAMUM LETTER MEN ++<UA6E3> /xea/x9b/xa3 BAMUM LETTER MA ++<UA6E4> /xea/x9b/xa4 BAMUM LETTER TI ++<UA6E5> /xea/x9b/xa5 BAMUM LETTER KI ++<UA6E6> /xea/x9b/xa6 BAMUM LETTER MO ++<UA6E7> /xea/x9b/xa7 BAMUM LETTER MBAA ++<UA6E8> /xea/x9b/xa8 BAMUM LETTER TET ++<UA6E9> /xea/x9b/xa9 BAMUM LETTER KPA ++<UA6EA> /xea/x9b/xaa BAMUM LETTER TEN ++<UA6EB> /xea/x9b/xab BAMUM LETTER NTUU ++<UA6EC> /xea/x9b/xac BAMUM LETTER SAMBA ++<UA6ED> /xea/x9b/xad BAMUM LETTER FAAMAE ++<UA6EE> /xea/x9b/xae BAMUM LETTER KOVUU ++<UA6EF> /xea/x9b/xaf BAMUM LETTER KOGHOM ++<UA6F0> /xea/x9b/xb0 BAMUM COMBINING MARK KOQNDON ++<UA6F1> /xea/x9b/xb1 BAMUM COMBINING MARK TUKWENTIS ++<UA6F2> /xea/x9b/xb2 BAMUM NJAEMLI ++<UA6F3> /xea/x9b/xb3 BAMUM FULL STOP ++<UA6F4> /xea/x9b/xb4 BAMUM COLON ++<UA6F5> /xea/x9b/xb5 BAMUM COMMA ++<UA6F6> /xea/x9b/xb6 BAMUM SEMICOLON ++<UA6F7> /xea/x9b/xb7 BAMUM QUESTION MARK + <UA700> /xea/x9c/x80 MODIFIER LETTER CHINESE TONE YIN PING + <UA701> /xea/x9c/x81 MODIFIER LETTER CHINESE TONE YANG PING + <UA702> /xea/x9c/x82 MODIFIER LETTER CHINESE TONE YIN SHANG +@@ -13210,6 +13949,21 @@ CHARMAP + <UA78A> /xea/x9e/x8a MODIFIER LETTER SHORT EQUALS SIGN + <UA78B> /xea/x9e/x8b LATIN CAPITAL LETTER SALTILLO + <UA78C> /xea/x9e/x8c LATIN SMALL LETTER SALTILLO ++<UA78D> /xea/x9e/x8d LATIN CAPITAL LETTER TURNED H ++<UA78E> /xea/x9e/x8e LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT ++<UA790> /xea/x9e/x90 LATIN CAPITAL LETTER N WITH DESCENDER ++<UA791> /xea/x9e/x91 LATIN SMALL LETTER N WITH DESCENDER ++<UA7A0> /xea/x9e/xa0 LATIN CAPITAL LETTER G WITH OBLIQUE STROKE ++<UA7A1> /xea/x9e/xa1 LATIN SMALL LETTER G WITH OBLIQUE STROKE ++<UA7A2> /xea/x9e/xa2 LATIN CAPITAL LETTER K WITH OBLIQUE STROKE ++<UA7A3> /xea/x9e/xa3 LATIN SMALL LETTER K WITH OBLIQUE STROKE ++<UA7A4> /xea/x9e/xa4 LATIN CAPITAL LETTER N WITH OBLIQUE STROKE ++<UA7A5> /xea/x9e/xa5 LATIN SMALL LETTER N WITH OBLIQUE STROKE ++<UA7A6> /xea/x9e/xa6 LATIN CAPITAL LETTER R WITH OBLIQUE STROKE ++<UA7A7> /xea/x9e/xa7 LATIN SMALL LETTER R WITH OBLIQUE STROKE ++<UA7A8> /xea/x9e/xa8 LATIN CAPITAL LETTER S WITH OBLIQUE STROKE ++<UA7A9> /xea/x9e/xa9 LATIN SMALL LETTER S WITH OBLIQUE STROKE ++<UA7FA> /xea/x9f/xba LATIN LETTER SMALL CAPITAL TURNED M + <UA7FB> /xea/x9f/xbb LATIN EPIGRAPHIC LETTER REVERSED F + <UA7FC> /xea/x9f/xbc LATIN EPIGRAPHIC LETTER REVERSED P + <UA7FD> /xea/x9f/xbd LATIN EPIGRAPHIC LETTER INVERTED M +@@ -13259,6 +14013,16 @@ CHARMAP + <UA829> /xea/xa0/xa9 SYLOTI NAGRI POETRY MARK-2 + <UA82A> /xea/xa0/xaa SYLOTI NAGRI POETRY MARK-3 + <UA82B> /xea/xa0/xab SYLOTI NAGRI POETRY MARK-4 ++<UA830> /xea/xa0/xb0 NORTH INDIC FRACTION ONE QUARTER ++<UA831> /xea/xa0/xb1 NORTH INDIC FRACTION ONE HALF ++<UA832> /xea/xa0/xb2 NORTH INDIC FRACTION THREE QUARTERS ++<UA833> /xea/xa0/xb3 NORTH INDIC FRACTION ONE SIXTEENTH ++<UA834> /xea/xa0/xb4 NORTH INDIC FRACTION ONE EIGHTH ++<UA835> /xea/xa0/xb5 NORTH INDIC FRACTION THREE SIXTEENTHS ++<UA836> /xea/xa0/xb6 NORTH INDIC QUARTER MARK ++<UA837> /xea/xa0/xb7 NORTH INDIC PLACEHOLDER MARK ++<UA838> /xea/xa0/xb8 NORTH INDIC RUPEE MARK ++<UA839> /xea/xa0/xb9 NORTH INDIC QUANTITY MARK + <UA840> /xea/xa1/x80 PHAGS-PA LETTER KA + <UA841> /xea/xa1/x81 PHAGS-PA LETTER KHA + <UA842> /xea/xa1/x82 PHAGS-PA LETTER GA +@@ -13396,6 +14160,34 @@ CHARMAP + <UA8D7> /xea/xa3/x97 SAURASHTRA DIGIT SEVEN + <UA8D8> /xea/xa3/x98 SAURASHTRA DIGIT EIGHT + <UA8D9> /xea/xa3/x99 SAURASHTRA DIGIT NINE ++<UA8E0> /xea/xa3/xa0 COMBINING DEVANAGARI DIGIT ZERO ++<UA8E1> /xea/xa3/xa1 COMBINING DEVANAGARI DIGIT ONE ++<UA8E2> /xea/xa3/xa2 COMBINING DEVANAGARI DIGIT TWO ++<UA8E3> /xea/xa3/xa3 COMBINING DEVANAGARI DIGIT THREE ++<UA8E4> /xea/xa3/xa4 COMBINING DEVANAGARI DIGIT FOUR ++<UA8E5> /xea/xa3/xa5 COMBINING DEVANAGARI DIGIT FIVE ++<UA8E6> /xea/xa3/xa6 COMBINING DEVANAGARI DIGIT SIX ++<UA8E7> /xea/xa3/xa7 COMBINING DEVANAGARI DIGIT SEVEN ++<UA8E8> /xea/xa3/xa8 COMBINING DEVANAGARI DIGIT EIGHT ++<UA8E9> /xea/xa3/xa9 COMBINING DEVANAGARI DIGIT NINE ++<UA8EA> /xea/xa3/xaa COMBINING DEVANAGARI LETTER A ++<UA8EB> /xea/xa3/xab COMBINING DEVANAGARI LETTER U ++<UA8EC> /xea/xa3/xac COMBINING DEVANAGARI LETTER KA ++<UA8ED> /xea/xa3/xad COMBINING DEVANAGARI LETTER NA ++<UA8EE> /xea/xa3/xae COMBINING DEVANAGARI LETTER PA ++<UA8EF> /xea/xa3/xaf COMBINING DEVANAGARI LETTER RA ++<UA8F0> /xea/xa3/xb0 COMBINING DEVANAGARI LETTER VI ++<UA8F1> /xea/xa3/xb1 COMBINING DEVANAGARI SIGN AVAGRAHA ++<UA8F2> /xea/xa3/xb2 DEVANAGARI SIGN SPACING CANDRABINDU ++<UA8F3> /xea/xa3/xb3 DEVANAGARI SIGN CANDRABINDU VIRAMA ++<UA8F4> /xea/xa3/xb4 DEVANAGARI SIGN DOUBLE CANDRABINDU VIRAMA ++<UA8F5> /xea/xa3/xb5 DEVANAGARI SIGN CANDRABINDU TWO ++<UA8F6> /xea/xa3/xb6 DEVANAGARI SIGN CANDRABINDU THREE ++<UA8F7> /xea/xa3/xb7 DEVANAGARI SIGN CANDRABINDU AVAGRAHA ++<UA8F8> /xea/xa3/xb8 DEVANAGARI SIGN PUSHPIKA ++<UA8F9> /xea/xa3/xb9 DEVANAGARI GAP FILLER ++<UA8FA> /xea/xa3/xba DEVANAGARI CARET ++<UA8FB> /xea/xa3/xbb DEVANAGARI HEADSTROKE + <UA900> /xea/xa4/x80 KAYAH LI DIGIT ZERO + <UA901> /xea/xa4/x81 KAYAH LI DIGIT ONE + <UA902> /xea/xa4/x82 KAYAH LI DIGIT TWO +@@ -13481,6 +14273,126 @@ CHARMAP + <UA952> /xea/xa5/x92 REJANG CONSONANT SIGN H + <UA953> /xea/xa5/x93 REJANG VIRAMA + <UA95F> /xea/xa5/x9f REJANG SECTION MARK ++<UA960> /xea/xa5/xa0 HANGUL CHOSEONG TIKEUT-MIEUM ++<UA961> /xea/xa5/xa1 HANGUL CHOSEONG TIKEUT-PIEUP ++<UA962> /xea/xa5/xa2 HANGUL CHOSEONG TIKEUT-SIOS ++<UA963> /xea/xa5/xa3 HANGUL CHOSEONG TIKEUT-CIEUC ++<UA964> /xea/xa5/xa4 HANGUL CHOSEONG RIEUL-KIYEOK ++<UA965> /xea/xa5/xa5 HANGUL CHOSEONG RIEUL-SSANGKIYEOK ++<UA966> /xea/xa5/xa6 HANGUL CHOSEONG RIEUL-TIKEUT ++<UA967> /xea/xa5/xa7 HANGUL CHOSEONG RIEUL-SSANGTIKEUT ++<UA968> /xea/xa5/xa8 HANGUL CHOSEONG RIEUL-MIEUM ++<UA969> /xea/xa5/xa9 HANGUL CHOSEONG RIEUL-PIEUP ++<UA96A> /xea/xa5/xaa HANGUL CHOSEONG RIEUL-SSANGPIEUP ++<UA96B> /xea/xa5/xab HANGUL CHOSEONG RIEUL-KAPYEOUNPIEUP ++<UA96C> /xea/xa5/xac HANGUL CHOSEONG RIEUL-SIOS ++<UA96D> /xea/xa5/xad HANGUL CHOSEONG RIEUL-CIEUC ++<UA96E> /xea/xa5/xae HANGUL CHOSEONG RIEUL-KHIEUKH ++<UA96F> /xea/xa5/xaf HANGUL CHOSEONG MIEUM-KIYEOK ++<UA970> /xea/xa5/xb0 HANGUL CHOSEONG MIEUM-TIKEUT ++<UA971> /xea/xa5/xb1 HANGUL CHOSEONG MIEUM-SIOS ++<UA972> /xea/xa5/xb2 HANGUL CHOSEONG PIEUP-SIOS-THIEUTH ++<UA973> /xea/xa5/xb3 HANGUL CHOSEONG PIEUP-KHIEUKH ++<UA974> /xea/xa5/xb4 HANGUL CHOSEONG PIEUP-HIEUH ++<UA975> /xea/xa5/xb5 HANGUL CHOSEONG SSANGSIOS-PIEUP ++<UA976> /xea/xa5/xb6 HANGUL CHOSEONG IEUNG-RIEUL ++<UA977> /xea/xa5/xb7 HANGUL CHOSEONG IEUNG-HIEUH ++<UA978> /xea/xa5/xb8 HANGUL CHOSEONG SSANGCIEUC-HIEUH ++<UA979> /xea/xa5/xb9 HANGUL CHOSEONG SSANGTHIEUTH ++<UA97A> /xea/xa5/xba HANGUL CHOSEONG PHIEUPH-HIEUH ++<UA97B> /xea/xa5/xbb HANGUL CHOSEONG HIEUH-SIOS ++<UA97C> /xea/xa5/xbc HANGUL CHOSEONG SSANGYEORINHIEUH ++<UA980> /xea/xa6/x80 JAVANESE SIGN PANYANGGA ++<UA981> /xea/xa6/x81 JAVANESE SIGN CECAK ++<UA982> /xea/xa6/x82 JAVANESE SIGN LAYAR ++<UA983> /xea/xa6/x83 JAVANESE SIGN WIGNYAN ++<UA984> /xea/xa6/x84 JAVANESE LETTER A ++<UA985> /xea/xa6/x85 JAVANESE LETTER I KAWI ++<UA986> /xea/xa6/x86 JAVANESE LETTER I ++<UA987> /xea/xa6/x87 JAVANESE LETTER II ++<UA988> /xea/xa6/x88 JAVANESE LETTER U ++<UA989> /xea/xa6/x89 JAVANESE LETTER PA CEREK ++<UA98A> /xea/xa6/x8a JAVANESE LETTER NGA LELET ++<UA98B> /xea/xa6/x8b JAVANESE LETTER NGA LELET RASWADI ++<UA98C> /xea/xa6/x8c JAVANESE LETTER E ++<UA98D> /xea/xa6/x8d JAVANESE LETTER AI ++<UA98E> /xea/xa6/x8e JAVANESE LETTER O ++<UA98F> /xea/xa6/x8f JAVANESE LETTER KA ++<UA990> /xea/xa6/x90 JAVANESE LETTER KA SASAK ++<UA991> /xea/xa6/x91 JAVANESE LETTER KA MURDA ++<UA992> /xea/xa6/x92 JAVANESE LETTER GA ++<UA993> /xea/xa6/x93 JAVANESE LETTER GA MURDA ++<UA994> /xea/xa6/x94 JAVANESE LETTER NGA ++<UA995> /xea/xa6/x95 JAVANESE LETTER CA ++<UA996> /xea/xa6/x96 JAVANESE LETTER CA MURDA ++<UA997> /xea/xa6/x97 JAVANESE LETTER JA ++<UA998> /xea/xa6/x98 JAVANESE LETTER NYA MURDA ++<UA999> /xea/xa6/x99 JAVANESE LETTER JA MAHAPRANA ++<UA99A> /xea/xa6/x9a JAVANESE LETTER NYA ++<UA99B> /xea/xa6/x9b JAVANESE LETTER TTA ++<UA99C> /xea/xa6/x9c JAVANESE LETTER TTA MAHAPRANA ++<UA99D> /xea/xa6/x9d JAVANESE LETTER DDA ++<UA99E> /xea/xa6/x9e JAVANESE LETTER DDA MAHAPRANA ++<UA99F> /xea/xa6/x9f JAVANESE LETTER NA MURDA ++<UA9A0> /xea/xa6/xa0 JAVANESE LETTER TA ++<UA9A1> /xea/xa6/xa1 JAVANESE LETTER TA MURDA ++<UA9A2> /xea/xa6/xa2 JAVANESE LETTER DA ++<UA9A3> /xea/xa6/xa3 JAVANESE LETTER DA MAHAPRANA ++<UA9A4> /xea/xa6/xa4 JAVANESE LETTER NA ++<UA9A5> /xea/xa6/xa5 JAVANESE LETTER PA ++<UA9A6> /xea/xa6/xa6 JAVANESE LETTER PA MURDA ++<UA9A7> /xea/xa6/xa7 JAVANESE LETTER BA ++<UA9A8> /xea/xa6/xa8 JAVANESE LETTER BA MURDA ++<UA9A9> /xea/xa6/xa9 JAVANESE LETTER MA ++<UA9AA> /xea/xa6/xaa JAVANESE LETTER YA ++<UA9AB> /xea/xa6/xab JAVANESE LETTER RA ++<UA9AC> /xea/xa6/xac JAVANESE LETTER RA AGUNG ++<UA9AD> /xea/xa6/xad JAVANESE LETTER LA ++<UA9AE> /xea/xa6/xae JAVANESE LETTER WA ++<UA9AF> /xea/xa6/xaf JAVANESE LETTER SA MURDA ++<UA9B0> /xea/xa6/xb0 JAVANESE LETTER SA MAHAPRANA ++<UA9B1> /xea/xa6/xb1 JAVANESE LETTER SA ++<UA9B2> /xea/xa6/xb2 JAVANESE LETTER HA ++<UA9B3> /xea/xa6/xb3 JAVANESE SIGN CECAK TELU ++<UA9B4> /xea/xa6/xb4 JAVANESE VOWEL SIGN TARUNG ++<UA9B5> /xea/xa6/xb5 JAVANESE VOWEL SIGN TOLONG ++<UA9B6> /xea/xa6/xb6 JAVANESE VOWEL SIGN WULU ++<UA9B7> /xea/xa6/xb7 JAVANESE VOWEL SIGN WULU MELIK ++<UA9B8> /xea/xa6/xb8 JAVANESE VOWEL SIGN SUKU ++<UA9B9> /xea/xa6/xb9 JAVANESE VOWEL SIGN SUKU MENDUT ++<UA9BA> /xea/xa6/xba JAVANESE VOWEL SIGN TALING ++<UA9BB> /xea/xa6/xbb JAVANESE VOWEL SIGN DIRGA MURE ++<UA9BC> /xea/xa6/xbc JAVANESE VOWEL SIGN PEPET ++<UA9BD> /xea/xa6/xbd JAVANESE CONSONANT SIGN KERET ++<UA9BE> /xea/xa6/xbe JAVANESE CONSONANT SIGN PENGKAL ++<UA9BF> /xea/xa6/xbf JAVANESE CONSONANT SIGN CAKRA ++<UA9C0> /xea/xa7/x80 JAVANESE PANGKON ++<UA9C1> /xea/xa7/x81 JAVANESE LEFT RERENGGAN ++<UA9C2> /xea/xa7/x82 JAVANESE RIGHT RERENGGAN ++<UA9C3> /xea/xa7/x83 JAVANESE PADA ANDAP ++<UA9C4> /xea/xa7/x84 JAVANESE PADA MADYA ++<UA9C5> /xea/xa7/x85 JAVANESE PADA LUHUR ++<UA9C6> /xea/xa7/x86 JAVANESE PADA WINDU ++<UA9C7> /xea/xa7/x87 JAVANESE PADA PANGKAT ++<UA9C8> /xea/xa7/x88 JAVANESE PADA LINGSA ++<UA9C9> /xea/xa7/x89 JAVANESE PADA LUNGSI ++<UA9CA> /xea/xa7/x8a JAVANESE PADA ADEG ++<UA9CB> /xea/xa7/x8b JAVANESE PADA ADEG ADEG ++<UA9CC> /xea/xa7/x8c JAVANESE PADA PISELEH ++<UA9CD> /xea/xa7/x8d JAVANESE TURNED PADA PISELEH ++<UA9CF> /xea/xa7/x8f JAVANESE PANGRANGKEP ++<UA9D0> /xea/xa7/x90 JAVANESE DIGIT ZERO ++<UA9D1> /xea/xa7/x91 JAVANESE DIGIT ONE ++<UA9D2> /xea/xa7/x92 JAVANESE DIGIT TWO ++<UA9D3> /xea/xa7/x93 JAVANESE DIGIT THREE ++<UA9D4> /xea/xa7/x94 JAVANESE DIGIT FOUR ++<UA9D5> /xea/xa7/x95 JAVANESE DIGIT FIVE ++<UA9D6> /xea/xa7/x96 JAVANESE DIGIT SIX ++<UA9D7> /xea/xa7/x97 JAVANESE DIGIT SEVEN ++<UA9D8> /xea/xa7/x98 JAVANESE DIGIT EIGHT ++<UA9D9> /xea/xa7/x99 JAVANESE DIGIT NINE ++<UA9DE> /xea/xa7/x9e JAVANESE PADA TIRTA TUMETES ++<UA9DF> /xea/xa7/x9f JAVANESE PADA ISEN-ISEN + <UAA00> /xea/xa8/x80 CHAM LETTER A + <UAA01> /xea/xa8/x81 CHAM LETTER I + <UAA02> /xea/xa8/x82 CHAM LETTER U +@@ -13564,6 +14476,194 @@ CHARMAP + <UAA5D> /xea/xa9/x9d CHAM PUNCTUATION DANDA + <UAA5E> /xea/xa9/x9e CHAM PUNCTUATION DOUBLE DANDA + <UAA5F> /xea/xa9/x9f CHAM PUNCTUATION TRIPLE DANDA ++<UAA60> /xea/xa9/xa0 MYANMAR LETTER KHAMTI GA ++<UAA61> /xea/xa9/xa1 MYANMAR LETTER KHAMTI CA ++<UAA62> /xea/xa9/xa2 MYANMAR LETTER KHAMTI CHA ++<UAA63> /xea/xa9/xa3 MYANMAR LETTER KHAMTI JA ++<UAA64> /xea/xa9/xa4 MYANMAR LETTER KHAMTI JHA ++<UAA65> /xea/xa9/xa5 MYANMAR LETTER KHAMTI NYA ++<UAA66> /xea/xa9/xa6 MYANMAR LETTER KHAMTI TTA ++<UAA67> /xea/xa9/xa7 MYANMAR LETTER KHAMTI TTHA ++<UAA68> /xea/xa9/xa8 MYANMAR LETTER KHAMTI DDA ++<UAA69> /xea/xa9/xa9 MYANMAR LETTER KHAMTI DDHA ++<UAA6A> /xea/xa9/xaa MYANMAR LETTER KHAMTI DHA ++<UAA6B> /xea/xa9/xab MYANMAR LETTER KHAMTI NA ++<UAA6C> /xea/xa9/xac MYANMAR LETTER KHAMTI SA ++<UAA6D> /xea/xa9/xad MYANMAR LETTER KHAMTI HA ++<UAA6E> /xea/xa9/xae MYANMAR LETTER KHAMTI HHA ++<UAA6F> /xea/xa9/xaf MYANMAR LETTER KHAMTI FA ++<UAA70> /xea/xa9/xb0 MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION ++<UAA71> /xea/xa9/xb1 MYANMAR LETTER KHAMTI XA ++<UAA72> /xea/xa9/xb2 MYANMAR LETTER KHAMTI ZA ++<UAA73> /xea/xa9/xb3 MYANMAR LETTER KHAMTI RA ++<UAA74> /xea/xa9/xb4 MYANMAR LOGOGRAM KHAMTI OAY ++<UAA75> /xea/xa9/xb5 MYANMAR LOGOGRAM KHAMTI QN ++<UAA76> /xea/xa9/xb6 MYANMAR LOGOGRAM KHAMTI HM ++<UAA77> /xea/xa9/xb7 MYANMAR SYMBOL AITON EXCLAMATION ++<UAA78> /xea/xa9/xb8 MYANMAR SYMBOL AITON ONE ++<UAA79> /xea/xa9/xb9 MYANMAR SYMBOL AITON TWO ++<UAA7A> /xea/xa9/xba MYANMAR LETTER AITON RA ++<UAA7B> /xea/xa9/xbb MYANMAR SIGN PAO KAREN TONE ++<UAA80> /xea/xaa/x80 TAI VIET LETTER LOW KO ++<UAA81> /xea/xaa/x81 TAI VIET LETTER HIGH KO ++<UAA82> /xea/xaa/x82 TAI VIET LETTER LOW KHO ++<UAA83> /xea/xaa/x83 TAI VIET LETTER HIGH KHO ++<UAA84> /xea/xaa/x84 TAI VIET LETTER LOW KHHO ++<UAA85> /xea/xaa/x85 TAI VIET LETTER HIGH KHHO ++<UAA86> /xea/xaa/x86 TAI VIET LETTER LOW GO ++<UAA87> /xea/xaa/x87 TAI VIET LETTER HIGH GO ++<UAA88> /xea/xaa/x88 TAI VIET LETTER LOW NGO ++<UAA89> /xea/xaa/x89 TAI VIET LETTER HIGH NGO ++<UAA8A> /xea/xaa/x8a TAI VIET LETTER LOW CO ++<UAA8B> /xea/xaa/x8b TAI VIET LETTER HIGH CO ++<UAA8C> /xea/xaa/x8c TAI VIET LETTER LOW CHO ++<UAA8D> /xea/xaa/x8d TAI VIET LETTER HIGH CHO ++<UAA8E> /xea/xaa/x8e TAI VIET LETTER LOW SO ++<UAA8F> /xea/xaa/x8f TAI VIET LETTER HIGH SO ++<UAA90> /xea/xaa/x90 TAI VIET LETTER LOW NYO ++<UAA91> /xea/xaa/x91 TAI VIET LETTER HIGH NYO ++<UAA92> /xea/xaa/x92 TAI VIET LETTER LOW DO ++<UAA93> /xea/xaa/x93 TAI VIET LETTER HIGH DO ++<UAA94> /xea/xaa/x94 TAI VIET LETTER LOW TO ++<UAA95> /xea/xaa/x95 TAI VIET LETTER HIGH TO ++<UAA96> /xea/xaa/x96 TAI VIET LETTER LOW THO ++<UAA97> /xea/xaa/x97 TAI VIET LETTER HIGH THO ++<UAA98> /xea/xaa/x98 TAI VIET LETTER LOW NO ++<UAA99> /xea/xaa/x99 TAI VIET LETTER HIGH NO ++<UAA9A> /xea/xaa/x9a TAI VIET LETTER LOW BO ++<UAA9B> /xea/xaa/x9b TAI VIET LETTER HIGH BO ++<UAA9C> /xea/xaa/x9c TAI VIET LETTER LOW PO ++<UAA9D> /xea/xaa/x9d TAI VIET LETTER HIGH PO ++<UAA9E> /xea/xaa/x9e TAI VIET LETTER LOW PHO ++<UAA9F> /xea/xaa/x9f TAI VIET LETTER HIGH PHO ++<UAAA0> /xea/xaa/xa0 TAI VIET LETTER LOW FO ++<UAAA1> /xea/xaa/xa1 TAI VIET LETTER HIGH FO ++<UAAA2> /xea/xaa/xa2 TAI VIET LETTER LOW MO ++<UAAA3> /xea/xaa/xa3 TAI VIET LETTER HIGH MO ++<UAAA4> /xea/xaa/xa4 TAI VIET LETTER LOW YO ++<UAAA5> /xea/xaa/xa5 TAI VIET LETTER HIGH YO ++<UAAA6> /xea/xaa/xa6 TAI VIET LETTER LOW RO ++<UAAA7> /xea/xaa/xa7 TAI VIET LETTER HIGH RO ++<UAAA8> /xea/xaa/xa8 TAI VIET LETTER LOW LO ++<UAAA9> /xea/xaa/xa9 TAI VIET LETTER HIGH LO ++<UAAAA> /xea/xaa/xaa TAI VIET LETTER LOW VO ++<UAAAB> /xea/xaa/xab TAI VIET LETTER HIGH VO ++<UAAAC> /xea/xaa/xac TAI VIET LETTER LOW HO ++<UAAAD> /xea/xaa/xad TAI VIET LETTER HIGH HO ++<UAAAE> /xea/xaa/xae TAI VIET LETTER LOW O ++<UAAAF> /xea/xaa/xaf TAI VIET LETTER HIGH O ++<UAAB0> /xea/xaa/xb0 TAI VIET MAI KANG ++<UAAB1> /xea/xaa/xb1 TAI VIET VOWEL AA ++<UAAB2> /xea/xaa/xb2 TAI VIET VOWEL I ++<UAAB3> /xea/xaa/xb3 TAI VIET VOWEL UE ++<UAAB4> /xea/xaa/xb4 TAI VIET VOWEL U ++<UAAB5> /xea/xaa/xb5 TAI VIET VOWEL E ++<UAAB6> /xea/xaa/xb6 TAI VIET VOWEL O ++<UAAB7> /xea/xaa/xb7 TAI VIET MAI KHIT ++<UAAB8> /xea/xaa/xb8 TAI VIET VOWEL IA ++<UAAB9> /xea/xaa/xb9 TAI VIET VOWEL UEA ++<UAABA> /xea/xaa/xba TAI VIET VOWEL UA ++<UAABB> /xea/xaa/xbb TAI VIET VOWEL AUE ++<UAABC> /xea/xaa/xbc TAI VIET VOWEL AY ++<UAABD> /xea/xaa/xbd TAI VIET VOWEL AN ++<UAABE> /xea/xaa/xbe TAI VIET VOWEL AM ++<UAABF> /xea/xaa/xbf TAI VIET TONE MAI EK ++<UAAC0> /xea/xab/x80 TAI VIET TONE MAI NUENG ++<UAAC1> /xea/xab/x81 TAI VIET TONE MAI THO ++<UAAC2> /xea/xab/x82 TAI VIET TONE MAI SONG ++<UAADB> /xea/xab/x9b TAI VIET SYMBOL KON ++<UAADC> /xea/xab/x9c TAI VIET SYMBOL NUENG ++<UAADD> /xea/xab/x9d TAI VIET SYMBOL SAM ++<UAADE> /xea/xab/x9e TAI VIET SYMBOL HO HOI ++<UAADF> /xea/xab/x9f TAI VIET SYMBOL KOI KOI ++<UAB01> /xea/xac/x81 ETHIOPIC SYLLABLE TTHU ++<UAB02> /xea/xac/x82 ETHIOPIC SYLLABLE TTHI ++<UAB03> /xea/xac/x83 ETHIOPIC SYLLABLE TTHAA ++<UAB04> /xea/xac/x84 ETHIOPIC SYLLABLE TTHEE ++<UAB05> /xea/xac/x85 ETHIOPIC SYLLABLE TTHE ++<UAB06> /xea/xac/x86 ETHIOPIC SYLLABLE TTHO ++<UAB09> /xea/xac/x89 ETHIOPIC SYLLABLE DDHU ++<UAB0A> /xea/xac/x8a ETHIOPIC SYLLABLE DDHI ++<UAB0B> /xea/xac/x8b ETHIOPIC SYLLABLE DDHAA ++<UAB0C> /xea/xac/x8c ETHIOPIC SYLLABLE DDHEE ++<UAB0D> /xea/xac/x8d ETHIOPIC SYLLABLE DDHE ++<UAB0E> /xea/xac/x8e ETHIOPIC SYLLABLE DDHO ++<UAB11> /xea/xac/x91 ETHIOPIC SYLLABLE DZU ++<UAB12> /xea/xac/x92 ETHIOPIC SYLLABLE DZI ++<UAB13> /xea/xac/x93 ETHIOPIC SYLLABLE DZAA ++<UAB14> /xea/xac/x94 ETHIOPIC SYLLABLE DZEE ++<UAB15> /xea/xac/x95 ETHIOPIC SYLLABLE DZE ++<UAB16> /xea/xac/x96 ETHIOPIC SYLLABLE DZO ++<UAB20> /xea/xac/xa0 ETHIOPIC SYLLABLE CCHHA ++<UAB21> /xea/xac/xa1 ETHIOPIC SYLLABLE CCHHU ++<UAB22> /xea/xac/xa2 ETHIOPIC SYLLABLE CCHHI ++<UAB23> /xea/xac/xa3 ETHIOPIC SYLLABLE CCHHAA ++<UAB24> /xea/xac/xa4 ETHIOPIC SYLLABLE CCHHEE ++<UAB25> /xea/xac/xa5 ETHIOPIC SYLLABLE CCHHE ++<UAB26> /xea/xac/xa6 ETHIOPIC SYLLABLE CCHHO ++<UAB28> /xea/xac/xa8 ETHIOPIC SYLLABLE BBA ++<UAB29> /xea/xac/xa9 ETHIOPIC SYLLABLE BBU ++<UAB2A> /xea/xac/xaa ETHIOPIC SYLLABLE BBI ++<UAB2B> /xea/xac/xab ETHIOPIC SYLLABLE BBAA ++<UAB2C> /xea/xac/xac ETHIOPIC SYLLABLE BBEE ++<UAB2D> /xea/xac/xad ETHIOPIC SYLLABLE BBE ++<UAB2E> /xea/xac/xae ETHIOPIC SYLLABLE BBO ++<UABC0> /xea/xaf/x80 MEETEI MAYEK LETTER KOK ++<UABC1> /xea/xaf/x81 MEETEI MAYEK LETTER SAM ++<UABC2> /xea/xaf/x82 MEETEI MAYEK LETTER LAI ++<UABC3> /xea/xaf/x83 MEETEI MAYEK LETTER MIT ++<UABC4> /xea/xaf/x84 MEETEI MAYEK LETTER PA ++<UABC5> /xea/xaf/x85 MEETEI MAYEK LETTER NA ++<UABC6> /xea/xaf/x86 MEETEI MAYEK LETTER CHIL ++<UABC7> /xea/xaf/x87 MEETEI MAYEK LETTER TIL ++<UABC8> /xea/xaf/x88 MEETEI MAYEK LETTER KHOU ++<UABC9> /xea/xaf/x89 MEETEI MAYEK LETTER NGOU ++<UABCA> /xea/xaf/x8a MEETEI MAYEK LETTER THOU ++<UABCB> /xea/xaf/x8b MEETEI MAYEK LETTER WAI ++<UABCC> /xea/xaf/x8c MEETEI MAYEK LETTER YANG ++<UABCD> /xea/xaf/x8d MEETEI MAYEK LETTER HUK ++<UABCE> /xea/xaf/x8e MEETEI MAYEK LETTER UN ++<UABCF> /xea/xaf/x8f MEETEI MAYEK LETTER I ++<UABD0> /xea/xaf/x90 MEETEI MAYEK LETTER PHAM ++<UABD1> /xea/xaf/x91 MEETEI MAYEK LETTER ATIYA ++<UABD2> /xea/xaf/x92 MEETEI MAYEK LETTER GOK ++<UABD3> /xea/xaf/x93 MEETEI MAYEK LETTER JHAM ++<UABD4> /xea/xaf/x94 MEETEI MAYEK LETTER RAI ++<UABD5> /xea/xaf/x95 MEETEI MAYEK LETTER BA ++<UABD6> /xea/xaf/x96 MEETEI MAYEK LETTER JIL ++<UABD7> /xea/xaf/x97 MEETEI MAYEK LETTER DIL ++<UABD8> /xea/xaf/x98 MEETEI MAYEK LETTER GHOU ++<UABD9> /xea/xaf/x99 MEETEI MAYEK LETTER DHOU ++<UABDA> /xea/xaf/x9a MEETEI MAYEK LETTER BHAM ++<UABDB> /xea/xaf/x9b MEETEI MAYEK LETTER KOK LONSUM ++<UABDC> /xea/xaf/x9c MEETEI MAYEK LETTER LAI LONSUM ++<UABDD> /xea/xaf/x9d MEETEI MAYEK LETTER MIT LONSUM ++<UABDE> /xea/xaf/x9e MEETEI MAYEK LETTER PA LONSUM ++<UABDF> /xea/xaf/x9f MEETEI MAYEK LETTER NA LONSUM ++<UABE0> /xea/xaf/xa0 MEETEI MAYEK LETTER TIL LONSUM ++<UABE1> /xea/xaf/xa1 MEETEI MAYEK LETTER NGOU LONSUM ++<UABE2> /xea/xaf/xa2 MEETEI MAYEK LETTER I LONSUM ++<UABE3> /xea/xaf/xa3 MEETEI MAYEK VOWEL SIGN ONAP ++<UABE4> /xea/xaf/xa4 MEETEI MAYEK VOWEL SIGN INAP ++<UABE5> /xea/xaf/xa5 MEETEI MAYEK VOWEL SIGN ANAP ++<UABE6> /xea/xaf/xa6 MEETEI MAYEK VOWEL SIGN YENAP ++<UABE7> /xea/xaf/xa7 MEETEI MAYEK VOWEL SIGN SOUNAP ++<UABE8> /xea/xaf/xa8 MEETEI MAYEK VOWEL SIGN UNAP ++<UABE9> /xea/xaf/xa9 MEETEI MAYEK VOWEL SIGN CHEINAP ++<UABEA> /xea/xaf/xaa MEETEI MAYEK VOWEL SIGN NUNG ++<UABEB> /xea/xaf/xab MEETEI MAYEK CHEIKHEI ++<UABEC> /xea/xaf/xac MEETEI MAYEK LUM IYEK ++<UABED> /xea/xaf/xad MEETEI MAYEK APUN IYEK ++<UABF0> /xea/xaf/xb0 MEETEI MAYEK DIGIT ZERO ++<UABF1> /xea/xaf/xb1 MEETEI MAYEK DIGIT ONE ++<UABF2> /xea/xaf/xb2 MEETEI MAYEK DIGIT TWO ++<UABF3> /xea/xaf/xb3 MEETEI MAYEK DIGIT THREE ++<UABF4> /xea/xaf/xb4 MEETEI MAYEK DIGIT FOUR ++<UABF5> /xea/xaf/xb5 MEETEI MAYEK DIGIT FIVE ++<UABF6> /xea/xaf/xb6 MEETEI MAYEK DIGIT SIX ++<UABF7> /xea/xaf/xb7 MEETEI MAYEK DIGIT SEVEN ++<UABF8> /xea/xaf/xb8 MEETEI MAYEK DIGIT EIGHT ++<UABF9> /xea/xaf/xb9 MEETEI MAYEK DIGIT NINE + <UAC00> /xea/xb0/x80 HANGUL SYLLABLE GA + <UAC01> /xea/xb0/x81 HANGUL SYLLABLE GAG + <UAC02> /xea/xb0/x82 HANGUL SYLLABLE GAGG +@@ -24736,6 +25836,78 @@ CHARMAP + <UD7A1> /xed/x9e/xa1 HANGUL SYLLABLE HIT + <UD7A2> /xed/x9e/xa2 HANGUL SYLLABLE HIP + <UD7A3> /xed/x9e/xa3 HANGUL SYLLABLE HIH ++<UD7B0> /xed/x9e/xb0 HANGUL JUNGSEONG O-YEO ++<UD7B1> /xed/x9e/xb1 HANGUL JUNGSEONG O-O-I ++<UD7B2> /xed/x9e/xb2 HANGUL JUNGSEONG YO-A ++<UD7B3> /xed/x9e/xb3 HANGUL JUNGSEONG YO-AE ++<UD7B4> /xed/x9e/xb4 HANGUL JUNGSEONG YO-EO ++<UD7B5> /xed/x9e/xb5 HANGUL JUNGSEONG U-YEO ++<UD7B6> /xed/x9e/xb6 HANGUL JUNGSEONG U-I-I ++<UD7B7> /xed/x9e/xb7 HANGUL JUNGSEONG YU-AE ++<UD7B8> /xed/x9e/xb8 HANGUL JUNGSEONG YU-O ++<UD7B9> /xed/x9e/xb9 HANGUL JUNGSEONG EU-A ++<UD7BA> /xed/x9e/xba HANGUL JUNGSEONG EU-EO ++<UD7BB> /xed/x9e/xbb HANGUL JUNGSEONG EU-E ++<UD7BC> /xed/x9e/xbc HANGUL JUNGSEONG EU-O ++<UD7BD> /xed/x9e/xbd HANGUL JUNGSEONG I-YA-O ++<UD7BE> /xed/x9e/xbe HANGUL JUNGSEONG I-YAE ++<UD7BF> /xed/x9e/xbf HANGUL JUNGSEONG I-YEO ++<UD7C0> /xed/x9f/x80 HANGUL JUNGSEONG I-YE ++<UD7C1> /xed/x9f/x81 HANGUL JUNGSEONG I-O-I ++<UD7C2> /xed/x9f/x82 HANGUL JUNGSEONG I-YO ++<UD7C3> /xed/x9f/x83 HANGUL JUNGSEONG I-YU ++<UD7C4> /xed/x9f/x84 HANGUL JUNGSEONG I-I ++<UD7C5> /xed/x9f/x85 HANGUL JUNGSEONG ARAEA-A ++<UD7C6> /xed/x9f/x86 HANGUL JUNGSEONG ARAEA-E ++<UD7CB> /xed/x9f/x8b HANGUL JONGSEONG NIEUN-RIEUL ++<UD7CC> /xed/x9f/x8c HANGUL JONGSEONG NIEUN-CHIEUCH ++<UD7CD> /xed/x9f/x8d HANGUL JONGSEONG SSANGTIKEUT ++<UD7CE> /xed/x9f/x8e HANGUL JONGSEONG SSANGTIKEUT-PIEUP ++<UD7CF> /xed/x9f/x8f HANGUL JONGSEONG TIKEUT-PIEUP ++<UD7D0> /xed/x9f/x90 HANGUL JONGSEONG TIKEUT-SIOS ++<UD7D1> /xed/x9f/x91 HANGUL JONGSEONG TIKEUT-SIOS-KIYEOK ++<UD7D2> /xed/x9f/x92 HANGUL JONGSEONG TIKEUT-CIEUC ++<UD7D3> /xed/x9f/x93 HANGUL JONGSEONG TIKEUT-CHIEUCH ++<UD7D4> /xed/x9f/x94 HANGUL JONGSEONG TIKEUT-THIEUTH ++<UD7D5> /xed/x9f/x95 HANGUL JONGSEONG RIEUL-SSANGKIYEOK ++<UD7D6> /xed/x9f/x96 HANGUL JONGSEONG RIEUL-KIYEOK-HIEUH ++<UD7D7> /xed/x9f/x97 HANGUL JONGSEONG SSANGRIEUL-KHIEUKH ++<UD7D8> /xed/x9f/x98 HANGUL JONGSEONG RIEUL-MIEUM-HIEUH ++<UD7D9> /xed/x9f/x99 HANGUL JONGSEONG RIEUL-PIEUP-TIKEUT ++<UD7DA> /xed/x9f/x9a HANGUL JONGSEONG RIEUL-PIEUP-PHIEUPH ++<UD7DB> /xed/x9f/x9b HANGUL JONGSEONG RIEUL-YESIEUNG ++<UD7DC> /xed/x9f/x9c HANGUL JONGSEONG RIEUL-YEORINHIEUH-HIEUH ++<UD7DD> /xed/x9f/x9d HANGUL JONGSEONG KAPYEOUNRIEUL ++<UD7DE> /xed/x9f/x9e HANGUL JONGSEONG MIEUM-NIEUN ++<UD7DF> /xed/x9f/x9f HANGUL JONGSEONG MIEUM-SSANGNIEUN ++<UD7E0> /xed/x9f/xa0 HANGUL JONGSEONG SSANGMIEUM ++<UD7E1> /xed/x9f/xa1 HANGUL JONGSEONG MIEUM-PIEUP-SIOS ++<UD7E2> /xed/x9f/xa2 HANGUL JONGSEONG MIEUM-CIEUC ++<UD7E3> /xed/x9f/xa3 HANGUL JONGSEONG PIEUP-TIKEUT ++<UD7E4> /xed/x9f/xa4 HANGUL JONGSEONG PIEUP-RIEUL-PHIEUPH ++<UD7E5> /xed/x9f/xa5 HANGUL JONGSEONG PIEUP-MIEUM ++<UD7E6> /xed/x9f/xa6 HANGUL JONGSEONG SSANGPIEUP ++<UD7E7> /xed/x9f/xa7 HANGUL JONGSEONG PIEUP-SIOS-TIKEUT ++<UD7E8> /xed/x9f/xa8 HANGUL JONGSEONG PIEUP-CIEUC ++<UD7E9> /xed/x9f/xa9 HANGUL JONGSEONG PIEUP-CHIEUCH ++<UD7EA> /xed/x9f/xaa HANGUL JONGSEONG SIOS-MIEUM ++<UD7EB> /xed/x9f/xab HANGUL JONGSEONG SIOS-KAPYEOUNPIEUP ++<UD7EC> /xed/x9f/xac HANGUL JONGSEONG SSANGSIOS-KIYEOK ++<UD7ED> /xed/x9f/xad HANGUL JONGSEONG SSANGSIOS-TIKEUT ++<UD7EE> /xed/x9f/xae HANGUL JONGSEONG SIOS-PANSIOS ++<UD7EF> /xed/x9f/xaf HANGUL JONGSEONG SIOS-CIEUC ++<UD7F0> /xed/x9f/xb0 HANGUL JONGSEONG SIOS-CHIEUCH ++<UD7F1> /xed/x9f/xb1 HANGUL JONGSEONG SIOS-THIEUTH ++<UD7F2> /xed/x9f/xb2 HANGUL JONGSEONG SIOS-HIEUH ++<UD7F3> /xed/x9f/xb3 HANGUL JONGSEONG PANSIOS-PIEUP ++<UD7F4> /xed/x9f/xb4 HANGUL JONGSEONG PANSIOS-KAPYEOUNPIEUP ++<UD7F5> /xed/x9f/xb5 HANGUL JONGSEONG YESIEUNG-MIEUM ++<UD7F6> /xed/x9f/xb6 HANGUL JONGSEONG YESIEUNG-HIEUH ++<UD7F7> /xed/x9f/xb7 HANGUL JONGSEONG CIEUC-PIEUP ++<UD7F8> /xed/x9f/xb8 HANGUL JONGSEONG CIEUC-SSANGPIEUP ++<UD7F9> /xed/x9f/xb9 HANGUL JONGSEONG SSANGCIEUC ++<UD7FA> /xed/x9f/xba HANGUL JONGSEONG PHIEUPH-SIOS ++<UD7FB> /xed/x9f/xbb HANGUL JONGSEONG PHIEUPH-THIEUTH + % <UD800> /xed/xa0/x80 <Non Private Use High Surrogate, First> + % <UDB7F> /xed/xad/xbf <Non Private Use High Surrogate, Last> + % <UDB80> /xed/xae/x80 <Private Use High Surrogate, First> +@@ -25203,6 +26375,9 @@ CHARMAP + <UFA68> /xef/xa9/xa8 CJK COMPATIBILITY IDEOGRAPH-FA68 + <UFA69> /xef/xa9/xa9 CJK COMPATIBILITY IDEOGRAPH-FA69 + <UFA6A> /xef/xa9/xaa CJK COMPATIBILITY IDEOGRAPH-FA6A ++<UFA6B> /xef/xa9/xab CJK COMPATIBILITY IDEOGRAPH-FA6B ++<UFA6C> /xef/xa9/xac CJK COMPATIBILITY IDEOGRAPH-FA6C ++<UFA6D> /xef/xa9/xad CJK COMPATIBILITY IDEOGRAPH-FA6D + <UFA70> /xef/xa9/xb0 CJK COMPATIBILITY IDEOGRAPH-FA70 + <UFA71> /xef/xa9/xb1 CJK COMPATIBILITY IDEOGRAPH-FA71 + <UFA72> /xef/xa9/xb2 CJK COMPATIBILITY IDEOGRAPH-FA72 +@@ -25465,6 +26640,22 @@ CHARMAP + <UFBAF> /xef/xae/xaf ARABIC LETTER YEH BARREE FINAL FORM + <UFBB0> /xef/xae/xb0 ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM + <UFBB1> /xef/xae/xb1 ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM ++<UFBB2> /xef/xae/xb2 ARABIC SYMBOL DOT ABOVE ++<UFBB3> /xef/xae/xb3 ARABIC SYMBOL DOT BELOW ++<UFBB4> /xef/xae/xb4 ARABIC SYMBOL TWO DOTS ABOVE ++<UFBB5> /xef/xae/xb5 ARABIC SYMBOL TWO DOTS BELOW ++<UFBB6> /xef/xae/xb6 ARABIC SYMBOL THREE DOTS ABOVE ++<UFBB7> /xef/xae/xb7 ARABIC SYMBOL THREE DOTS BELOW ++<UFBB8> /xef/xae/xb8 ARABIC SYMBOL THREE DOTS POINTING DOWNWARDS ABOVE ++<UFBB9> /xef/xae/xb9 ARABIC SYMBOL THREE DOTS POINTING DOWNWARDS BELOW ++<UFBBA> /xef/xae/xba ARABIC SYMBOL FOUR DOTS ABOVE ++<UFBBB> /xef/xae/xbb ARABIC SYMBOL FOUR DOTS BELOW ++<UFBBC> /xef/xae/xbc ARABIC SYMBOL DOUBLE VERTICAL BAR BELOW ++<UFBBD> /xef/xae/xbd ARABIC SYMBOL TWO DOTS VERTICALLY ABOVE ++<UFBBE> /xef/xae/xbe ARABIC SYMBOL TWO DOTS VERTICALLY BELOW ++<UFBBF> /xef/xae/xbf ARABIC SYMBOL RING ++<UFBC0> /xef/xaf/x80 ARABIC SYMBOL SMALL TAH ABOVE ++<UFBC1> /xef/xaf/x81 ARABIC SYMBOL SMALL TAH BELOW + <UFBD3> /xef/xaf/x93 ARABIC LETTER NG ISOLATED FORM + <UFBD4> /xef/xaf/x94 ARABIC LETTER NG FINAL FORM + <UFBD5> /xef/xaf/x95 ARABIC LETTER NG INITIAL FORM +@@ -27269,6 +28460,37 @@ CHARMAP + <U00010838> /xf0/x90/xa0/xb8 CYPRIOT SYLLABLE XE + <U0001083C> /xf0/x90/xa0/xbc CYPRIOT SYLLABLE ZA + <U0001083F> /xf0/x90/xa0/xbf CYPRIOT SYLLABLE ZO ++<U00010840> /xf0/x90/xa1/x80 IMPERIAL ARAMAIC LETTER ALEPH ++<U00010841> /xf0/x90/xa1/x81 IMPERIAL ARAMAIC LETTER BETH ++<U00010842> /xf0/x90/xa1/x82 IMPERIAL ARAMAIC LETTER GIMEL ++<U00010843> /xf0/x90/xa1/x83 IMPERIAL ARAMAIC LETTER DALETH ++<U00010844> /xf0/x90/xa1/x84 IMPERIAL ARAMAIC LETTER HE ++<U00010845> /xf0/x90/xa1/x85 IMPERIAL ARAMAIC LETTER WAW ++<U00010846> /xf0/x90/xa1/x86 IMPERIAL ARAMAIC LETTER ZAYIN ++<U00010847> /xf0/x90/xa1/x87 IMPERIAL ARAMAIC LETTER HETH ++<U00010848> /xf0/x90/xa1/x88 IMPERIAL ARAMAIC LETTER TETH ++<U00010849> /xf0/x90/xa1/x89 IMPERIAL ARAMAIC LETTER YODH ++<U0001084A> /xf0/x90/xa1/x8a IMPERIAL ARAMAIC LETTER KAPH ++<U0001084B> /xf0/x90/xa1/x8b IMPERIAL ARAMAIC LETTER LAMEDH ++<U0001084C> /xf0/x90/xa1/x8c IMPERIAL ARAMAIC LETTER MEM ++<U0001084D> /xf0/x90/xa1/x8d IMPERIAL ARAMAIC LETTER NUN ++<U0001084E> /xf0/x90/xa1/x8e IMPERIAL ARAMAIC LETTER SAMEKH ++<U0001084F> /xf0/x90/xa1/x8f IMPERIAL ARAMAIC LETTER AYIN ++<U00010850> /xf0/x90/xa1/x90 IMPERIAL ARAMAIC LETTER PE ++<U00010851> /xf0/x90/xa1/x91 IMPERIAL ARAMAIC LETTER SADHE ++<U00010852> /xf0/x90/xa1/x92 IMPERIAL ARAMAIC LETTER QOPH ++<U00010853> /xf0/x90/xa1/x93 IMPERIAL ARAMAIC LETTER RESH ++<U00010854> /xf0/x90/xa1/x94 IMPERIAL ARAMAIC LETTER SHIN ++<U00010855> /xf0/x90/xa1/x95 IMPERIAL ARAMAIC LETTER TAW ++<U00010857> /xf0/x90/xa1/x97 IMPERIAL ARAMAIC SECTION SIGN ++<U00010858> /xf0/x90/xa1/x98 IMPERIAL ARAMAIC NUMBER ONE ++<U00010859> /xf0/x90/xa1/x99 IMPERIAL ARAMAIC NUMBER TWO ++<U0001085A> /xf0/x90/xa1/x9a IMPERIAL ARAMAIC NUMBER THREE ++<U0001085B> /xf0/x90/xa1/x9b IMPERIAL ARAMAIC NUMBER TEN ++<U0001085C> /xf0/x90/xa1/x9c IMPERIAL ARAMAIC NUMBER TWENTY ++<U0001085D> /xf0/x90/xa1/x9d IMPERIAL ARAMAIC NUMBER ONE HUNDRED ++<U0001085E> /xf0/x90/xa1/x9e IMPERIAL ARAMAIC NUMBER ONE THOUSAND ++<U0001085F> /xf0/x90/xa1/x9f IMPERIAL ARAMAIC NUMBER TEN THOUSAND + <U00010900> /xf0/x90/xa4/x80 PHOENICIAN LETTER ALF + <U00010901> /xf0/x90/xa4/x81 PHOENICIAN LETTER BET + <U00010902> /xf0/x90/xa4/x82 PHOENICIAN LETTER GAML +@@ -27295,6 +28517,8 @@ CHARMAP + <U00010917> /xf0/x90/xa4/x97 PHOENICIAN NUMBER TEN + <U00010918> /xf0/x90/xa4/x98 PHOENICIAN NUMBER TWENTY + <U00010919> /xf0/x90/xa4/x99 PHOENICIAN NUMBER ONE HUNDRED ++<U0001091A> /xf0/x90/xa4/x9a PHOENICIAN NUMBER TWO ++<U0001091B> /xf0/x90/xa4/x9b PHOENICIAN NUMBER THREE + <U0001091F> /xf0/x90/xa4/x9f PHOENICIAN WORD SEPARATOR + <U00010920> /xf0/x90/xa4/xa0 LYDIAN LETTER A + <U00010921> /xf0/x90/xa4/xa1 LYDIAN LETTER B +@@ -27388,6 +28612,434 @@ CHARMAP + <U00010A56> /xf0/x90/xa9/x96 KHAROSHTHI PUNCTUATION DANDA + <U00010A57> /xf0/x90/xa9/x97 KHAROSHTHI PUNCTUATION DOUBLE DANDA + <U00010A58> /xf0/x90/xa9/x98 KHAROSHTHI PUNCTUATION LINES ++<U00010A60> /xf0/x90/xa9/xa0 OLD SOUTH ARABIAN LETTER HE ++<U00010A61> /xf0/x90/xa9/xa1 OLD SOUTH ARABIAN LETTER LAMEDH ++<U00010A62> /xf0/x90/xa9/xa2 OLD SOUTH ARABIAN LETTER HETH ++<U00010A63> /xf0/x90/xa9/xa3 OLD SOUTH ARABIAN LETTER MEM ++<U00010A64> /xf0/x90/xa9/xa4 OLD SOUTH ARABIAN LETTER QOPH ++<U00010A65> /xf0/x90/xa9/xa5 OLD SOUTH ARABIAN LETTER WAW ++<U00010A66> /xf0/x90/xa9/xa6 OLD SOUTH ARABIAN LETTER SHIN ++<U00010A67> /xf0/x90/xa9/xa7 OLD SOUTH ARABIAN LETTER RESH ++<U00010A68> /xf0/x90/xa9/xa8 OLD SOUTH ARABIAN LETTER BETH ++<U00010A69> /xf0/x90/xa9/xa9 OLD SOUTH ARABIAN LETTER TAW ++<U00010A6A> /xf0/x90/xa9/xaa OLD SOUTH ARABIAN LETTER SAT ++<U00010A6B> /xf0/x90/xa9/xab OLD SOUTH ARABIAN LETTER KAPH ++<U00010A6C> /xf0/x90/xa9/xac OLD SOUTH ARABIAN LETTER NUN ++<U00010A6D> /xf0/x90/xa9/xad OLD SOUTH ARABIAN LETTER KHETH ++<U00010A6E> /xf0/x90/xa9/xae OLD SOUTH ARABIAN LETTER SADHE ++<U00010A6F> /xf0/x90/xa9/xaf OLD SOUTH ARABIAN LETTER SAMEKH ++<U00010A70> /xf0/x90/xa9/xb0 OLD SOUTH ARABIAN LETTER FE ++<U00010A71> /xf0/x90/xa9/xb1 OLD SOUTH ARABIAN LETTER ALEF ++<U00010A72> /xf0/x90/xa9/xb2 OLD SOUTH ARABIAN LETTER AYN ++<U00010A73> /xf0/x90/xa9/xb3 OLD SOUTH ARABIAN LETTER DHADHE ++<U00010A74> /xf0/x90/xa9/xb4 OLD SOUTH ARABIAN LETTER GIMEL ++<U00010A75> /xf0/x90/xa9/xb5 OLD SOUTH ARABIAN LETTER DALETH ++<U00010A76> /xf0/x90/xa9/xb6 OLD SOUTH ARABIAN LETTER GHAYN ++<U00010A77> /xf0/x90/xa9/xb7 OLD SOUTH ARABIAN LETTER TETH ++<U00010A78> /xf0/x90/xa9/xb8 OLD SOUTH ARABIAN LETTER ZAYN ++<U00010A79> /xf0/x90/xa9/xb9 OLD SOUTH ARABIAN LETTER DHALETH ++<U00010A7A> /xf0/x90/xa9/xba OLD SOUTH ARABIAN LETTER YODH ++<U00010A7B> /xf0/x90/xa9/xbb OLD SOUTH ARABIAN LETTER THAW ++<U00010A7C> /xf0/x90/xa9/xbc OLD SOUTH ARABIAN LETTER THETH ++<U00010A7D> /xf0/x90/xa9/xbd OLD SOUTH ARABIAN NUMBER ONE ++<U00010A7E> /xf0/x90/xa9/xbe OLD SOUTH ARABIAN NUMBER FIFTY ++<U00010A7F> /xf0/x90/xa9/xbf OLD SOUTH ARABIAN NUMERIC INDICATOR ++<U00010B00> /xf0/x90/xac/x80 AVESTAN LETTER A ++<U00010B01> /xf0/x90/xac/x81 AVESTAN LETTER AA ++<U00010B02> /xf0/x90/xac/x82 AVESTAN LETTER AO ++<U00010B03> /xf0/x90/xac/x83 AVESTAN LETTER AAO ++<U00010B04> /xf0/x90/xac/x84 AVESTAN LETTER AN ++<U00010B05> /xf0/x90/xac/x85 AVESTAN LETTER AAN ++<U00010B06> /xf0/x90/xac/x86 AVESTAN LETTER AE ++<U00010B07> /xf0/x90/xac/x87 AVESTAN LETTER AEE ++<U00010B08> /xf0/x90/xac/x88 AVESTAN LETTER E ++<U00010B09> /xf0/x90/xac/x89 AVESTAN LETTER EE ++<U00010B0A> /xf0/x90/xac/x8a AVESTAN LETTER O ++<U00010B0B> /xf0/x90/xac/x8b AVESTAN LETTER OO ++<U00010B0C> /xf0/x90/xac/x8c AVESTAN LETTER I ++<U00010B0D> /xf0/x90/xac/x8d AVESTAN LETTER II ++<U00010B0E> /xf0/x90/xac/x8e AVESTAN LETTER U ++<U00010B0F> /xf0/x90/xac/x8f AVESTAN LETTER UU ++<U00010B10> /xf0/x90/xac/x90 AVESTAN LETTER KE ++<U00010B11> /xf0/x90/xac/x91 AVESTAN LETTER XE ++<U00010B12> /xf0/x90/xac/x92 AVESTAN LETTER XYE ++<U00010B13> /xf0/x90/xac/x93 AVESTAN LETTER XVE ++<U00010B14> /xf0/x90/xac/x94 AVESTAN LETTER GE ++<U00010B15> /xf0/x90/xac/x95 AVESTAN LETTER GGE ++<U00010B16> /xf0/x90/xac/x96 AVESTAN LETTER GHE ++<U00010B17> /xf0/x90/xac/x97 AVESTAN LETTER CE ++<U00010B18> /xf0/x90/xac/x98 AVESTAN LETTER JE ++<U00010B19> /xf0/x90/xac/x99 AVESTAN LETTER TE ++<U00010B1A> /xf0/x90/xac/x9a AVESTAN LETTER THE ++<U00010B1B> /xf0/x90/xac/x9b AVESTAN LETTER DE ++<U00010B1C> /xf0/x90/xac/x9c AVESTAN LETTER DHE ++<U00010B1D> /xf0/x90/xac/x9d AVESTAN LETTER TTE ++<U00010B1E> /xf0/x90/xac/x9e AVESTAN LETTER PE ++<U00010B1F> /xf0/x90/xac/x9f AVESTAN LETTER FE ++<U00010B20> /xf0/x90/xac/xa0 AVESTAN LETTER BE ++<U00010B21> /xf0/x90/xac/xa1 AVESTAN LETTER BHE ++<U00010B22> /xf0/x90/xac/xa2 AVESTAN LETTER NGE ++<U00010B23> /xf0/x90/xac/xa3 AVESTAN LETTER NGYE ++<U00010B24> /xf0/x90/xac/xa4 AVESTAN LETTER NGVE ++<U00010B25> /xf0/x90/xac/xa5 AVESTAN LETTER NE ++<U00010B26> /xf0/x90/xac/xa6 AVESTAN LETTER NYE ++<U00010B27> /xf0/x90/xac/xa7 AVESTAN LETTER NNE ++<U00010B28> /xf0/x90/xac/xa8 AVESTAN LETTER ME ++<U00010B29> /xf0/x90/xac/xa9 AVESTAN LETTER HME ++<U00010B2A> /xf0/x90/xac/xaa AVESTAN LETTER YYE ++<U00010B2B> /xf0/x90/xac/xab AVESTAN LETTER YE ++<U00010B2C> /xf0/x90/xac/xac AVESTAN LETTER VE ++<U00010B2D> /xf0/x90/xac/xad AVESTAN LETTER RE ++<U00010B2E> /xf0/x90/xac/xae AVESTAN LETTER LE ++<U00010B2F> /xf0/x90/xac/xaf AVESTAN LETTER SE ++<U00010B30> /xf0/x90/xac/xb0 AVESTAN LETTER ZE ++<U00010B31> /xf0/x90/xac/xb1 AVESTAN LETTER SHE ++<U00010B32> /xf0/x90/xac/xb2 AVESTAN LETTER ZHE ++<U00010B33> /xf0/x90/xac/xb3 AVESTAN LETTER SHYE ++<U00010B34> /xf0/x90/xac/xb4 AVESTAN LETTER SSHE ++<U00010B35> /xf0/x90/xac/xb5 AVESTAN LETTER HE ++<U00010B39> /xf0/x90/xac/xb9 AVESTAN ABBREVIATION MARK ++<U00010B3A> /xf0/x90/xac/xba TINY TWO DOTS OVER ONE DOT PUNCTUATION ++<U00010B3B> /xf0/x90/xac/xbb SMALL TWO DOTS OVER ONE DOT PUNCTUATION ++<U00010B3C> /xf0/x90/xac/xbc LARGE TWO DOTS OVER ONE DOT PUNCTUATION ++<U00010B3D> /xf0/x90/xac/xbd LARGE ONE DOT OVER TWO DOTS PUNCTUATION ++<U00010B3E> /xf0/x90/xac/xbe LARGE TWO RINGS OVER ONE RING PUNCTUATION ++<U00010B3F> /xf0/x90/xac/xbf LARGE ONE RING OVER TWO RINGS PUNCTUATION ++<U00010B40> /xf0/x90/xad/x80 INSCRIPTIONAL PARTHIAN LETTER ALEPH ++<U00010B41> /xf0/x90/xad/x81 INSCRIPTIONAL PARTHIAN LETTER BETH ++<U00010B42> /xf0/x90/xad/x82 INSCRIPTIONAL PARTHIAN LETTER GIMEL ++<U00010B43> /xf0/x90/xad/x83 INSCRIPTIONAL PARTHIAN LETTER DALETH ++<U00010B44> /xf0/x90/xad/x84 INSCRIPTIONAL PARTHIAN LETTER HE ++<U00010B45> /xf0/x90/xad/x85 INSCRIPTIONAL PARTHIAN LETTER WAW ++<U00010B46> /xf0/x90/xad/x86 INSCRIPTIONAL PARTHIAN LETTER ZAYIN ++<U00010B47> /xf0/x90/xad/x87 INSCRIPTIONAL PARTHIAN LETTER HETH ++<U00010B48> /xf0/x90/xad/x88 INSCRIPTIONAL PARTHIAN LETTER TETH ++<U00010B49> /xf0/x90/xad/x89 INSCRIPTIONAL PARTHIAN LETTER YODH ++<U00010B4A> /xf0/x90/xad/x8a INSCRIPTIONAL PARTHIAN LETTER KAPH ++<U00010B4B> /xf0/x90/xad/x8b INSCRIPTIONAL PARTHIAN LETTER LAMEDH ++<U00010B4C> /xf0/x90/xad/x8c INSCRIPTIONAL PARTHIAN LETTER MEM ++<U00010B4D> /xf0/x90/xad/x8d INSCRIPTIONAL PARTHIAN LETTER NUN ++<U00010B4E> /xf0/x90/xad/x8e INSCRIPTIONAL PARTHIAN LETTER SAMEKH ++<U00010B4F> /xf0/x90/xad/x8f INSCRIPTIONAL PARTHIAN LETTER AYIN ++<U00010B50> /xf0/x90/xad/x90 INSCRIPTIONAL PARTHIAN LETTER PE ++<U00010B51> /xf0/x90/xad/x91 INSCRIPTIONAL PARTHIAN LETTER SADHE ++<U00010B52> /xf0/x90/xad/x92 INSCRIPTIONAL PARTHIAN LETTER QOPH ++<U00010B53> /xf0/x90/xad/x93 INSCRIPTIONAL PARTHIAN LETTER RESH ++<U00010B54> /xf0/x90/xad/x94 INSCRIPTIONAL PARTHIAN LETTER SHIN ++<U00010B55> /xf0/x90/xad/x95 INSCRIPTIONAL PARTHIAN LETTER TAW ++<U00010B58> /xf0/x90/xad/x98 INSCRIPTIONAL PARTHIAN NUMBER ONE ++<U00010B59> /xf0/x90/xad/x99 INSCRIPTIONAL PARTHIAN NUMBER TWO ++<U00010B5A> /xf0/x90/xad/x9a INSCRIPTIONAL PARTHIAN NUMBER THREE ++<U00010B5B> /xf0/x90/xad/x9b INSCRIPTIONAL PARTHIAN NUMBER FOUR ++<U00010B5C> /xf0/x90/xad/x9c INSCRIPTIONAL PARTHIAN NUMBER TEN ++<U00010B5D> /xf0/x90/xad/x9d INSCRIPTIONAL PARTHIAN NUMBER TWENTY ++<U00010B5E> /xf0/x90/xad/x9e INSCRIPTIONAL PARTHIAN NUMBER ONE HUNDRED ++<U00010B5F> /xf0/x90/xad/x9f INSCRIPTIONAL PARTHIAN NUMBER ONE THOUSAND ++<U00010B60> /xf0/x90/xad/xa0 INSCRIPTIONAL PAHLAVI LETTER ALEPH ++<U00010B61> /xf0/x90/xad/xa1 INSCRIPTIONAL PAHLAVI LETTER BETH ++<U00010B62> /xf0/x90/xad/xa2 INSCRIPTIONAL PAHLAVI LETTER GIMEL ++<U00010B63> /xf0/x90/xad/xa3 INSCRIPTIONAL PAHLAVI LETTER DALETH ++<U00010B64> /xf0/x90/xad/xa4 INSCRIPTIONAL PAHLAVI LETTER HE ++<U00010B65> /xf0/x90/xad/xa5 INSCRIPTIONAL PAHLAVI LETTER WAW-AYIN-RESH ++<U00010B66> /xf0/x90/xad/xa6 INSCRIPTIONAL PAHLAVI LETTER ZAYIN ++<U00010B67> /xf0/x90/xad/xa7 INSCRIPTIONAL PAHLAVI LETTER HETH ++<U00010B68> /xf0/x90/xad/xa8 INSCRIPTIONAL PAHLAVI LETTER TETH ++<U00010B69> /xf0/x90/xad/xa9 INSCRIPTIONAL PAHLAVI LETTER YODH ++<U00010B6A> /xf0/x90/xad/xaa INSCRIPTIONAL PAHLAVI LETTER KAPH ++<U00010B6B> /xf0/x90/xad/xab INSCRIPTIONAL PAHLAVI LETTER LAMEDH ++<U00010B6C> /xf0/x90/xad/xac INSCRIPTIONAL PAHLAVI LETTER MEM-QOPH ++<U00010B6D> /xf0/x90/xad/xad INSCRIPTIONAL PAHLAVI LETTER NUN ++<U00010B6E> /xf0/x90/xad/xae INSCRIPTIONAL PAHLAVI LETTER SAMEKH ++<U00010B6F> /xf0/x90/xad/xaf INSCRIPTIONAL PAHLAVI LETTER PE ++<U00010B70> /xf0/x90/xad/xb0 INSCRIPTIONAL PAHLAVI LETTER SADHE ++<U00010B71> /xf0/x90/xad/xb1 INSCRIPTIONAL PAHLAVI LETTER SHIN ++<U00010B72> /xf0/x90/xad/xb2 INSCRIPTIONAL PAHLAVI LETTER TAW ++<U00010B78> /xf0/x90/xad/xb8 INSCRIPTIONAL PAHLAVI NUMBER ONE ++<U00010B79> /xf0/x90/xad/xb9 INSCRIPTIONAL PAHLAVI NUMBER TWO ++<U00010B7A> /xf0/x90/xad/xba INSCRIPTIONAL PAHLAVI NUMBER THREE ++<U00010B7B> /xf0/x90/xad/xbb INSCRIPTIONAL PAHLAVI NUMBER FOUR ++<U00010B7C> /xf0/x90/xad/xbc INSCRIPTIONAL PAHLAVI NUMBER TEN ++<U00010B7D> /xf0/x90/xad/xbd INSCRIPTIONAL PAHLAVI NUMBER TWENTY ++<U00010B7E> /xf0/x90/xad/xbe INSCRIPTIONAL PAHLAVI NUMBER ONE HUNDRED ++<U00010B7F> /xf0/x90/xad/xbf INSCRIPTIONAL PAHLAVI NUMBER ONE THOUSAND ++<U00010C00> /xf0/x90/xb0/x80 OLD TURKIC LETTER ORKHON A ++<U00010C01> /xf0/x90/xb0/x81 OLD TURKIC LETTER YENISEI A ++<U00010C02> /xf0/x90/xb0/x82 OLD TURKIC LETTER YENISEI AE ++<U00010C03> /xf0/x90/xb0/x83 OLD TURKIC LETTER ORKHON I ++<U00010C04> /xf0/x90/xb0/x84 OLD TURKIC LETTER YENISEI I ++<U00010C05> /xf0/x90/xb0/x85 OLD TURKIC LETTER YENISEI E ++<U00010C06> /xf0/x90/xb0/x86 OLD TURKIC LETTER ORKHON O ++<U00010C07> /xf0/x90/xb0/x87 OLD TURKIC LETTER ORKHON OE ++<U00010C08> /xf0/x90/xb0/x88 OLD TURKIC LETTER YENISEI OE ++<U00010C09> /xf0/x90/xb0/x89 OLD TURKIC LETTER ORKHON AB ++<U00010C0A> /xf0/x90/xb0/x8a OLD TURKIC LETTER YENISEI AB ++<U00010C0B> /xf0/x90/xb0/x8b OLD TURKIC LETTER ORKHON AEB ++<U00010C0C> /xf0/x90/xb0/x8c OLD TURKIC LETTER YENISEI AEB ++<U00010C0D> /xf0/x90/xb0/x8d OLD TURKIC LETTER ORKHON AG ++<U00010C0E> /xf0/x90/xb0/x8e OLD TURKIC LETTER YENISEI AG ++<U00010C0F> /xf0/x90/xb0/x8f OLD TURKIC LETTER ORKHON AEG ++<U00010C10> /xf0/x90/xb0/x90 OLD TURKIC LETTER YENISEI AEG ++<U00010C11> /xf0/x90/xb0/x91 OLD TURKIC LETTER ORKHON AD ++<U00010C12> /xf0/x90/xb0/x92 OLD TURKIC LETTER YENISEI AD ++<U00010C13> /xf0/x90/xb0/x93 OLD TURKIC LETTER ORKHON AED ++<U00010C14> /xf0/x90/xb0/x94 OLD TURKIC LETTER ORKHON EZ ++<U00010C15> /xf0/x90/xb0/x95 OLD TURKIC LETTER YENISEI EZ ++<U00010C16> /xf0/x90/xb0/x96 OLD TURKIC LETTER ORKHON AY ++<U00010C17> /xf0/x90/xb0/x97 OLD TURKIC LETTER YENISEI AY ++<U00010C18> /xf0/x90/xb0/x98 OLD TURKIC LETTER ORKHON AEY ++<U00010C19> /xf0/x90/xb0/x99 OLD TURKIC LETTER YENISEI AEY ++<U00010C1A> /xf0/x90/xb0/x9a OLD TURKIC LETTER ORKHON AEK ++<U00010C1B> /xf0/x90/xb0/x9b OLD TURKIC LETTER YENISEI AEK ++<U00010C1C> /xf0/x90/xb0/x9c OLD TURKIC LETTER ORKHON OEK ++<U00010C1D> /xf0/x90/xb0/x9d OLD TURKIC LETTER YENISEI OEK ++<U00010C1E> /xf0/x90/xb0/x9e OLD TURKIC LETTER ORKHON AL ++<U00010C1F> /xf0/x90/xb0/x9f OLD TURKIC LETTER YENISEI AL ++<U00010C20> /xf0/x90/xb0/xa0 OLD TURKIC LETTER ORKHON AEL ++<U00010C21> /xf0/x90/xb0/xa1 OLD TURKIC LETTER ORKHON ELT ++<U00010C22> /xf0/x90/xb0/xa2 OLD TURKIC LETTER ORKHON EM ++<U00010C23> /xf0/x90/xb0/xa3 OLD TURKIC LETTER ORKHON AN ++<U00010C24> /xf0/x90/xb0/xa4 OLD TURKIC LETTER ORKHON AEN ++<U00010C25> /xf0/x90/xb0/xa5 OLD TURKIC LETTER YENISEI AEN ++<U00010C26> /xf0/x90/xb0/xa6 OLD TURKIC LETTER ORKHON ENT ++<U00010C27> /xf0/x90/xb0/xa7 OLD TURKIC LETTER YENISEI ENT ++<U00010C28> /xf0/x90/xb0/xa8 OLD TURKIC LETTER ORKHON ENC ++<U00010C29> /xf0/x90/xb0/xa9 OLD TURKIC LETTER YENISEI ENC ++<U00010C2A> /xf0/x90/xb0/xaa OLD TURKIC LETTER ORKHON ENY ++<U00010C2B> /xf0/x90/xb0/xab OLD TURKIC LETTER YENISEI ENY ++<U00010C2C> /xf0/x90/xb0/xac OLD TURKIC LETTER YENISEI ANG ++<U00010C2D> /xf0/x90/xb0/xad OLD TURKIC LETTER ORKHON ENG ++<U00010C2E> /xf0/x90/xb0/xae OLD TURKIC LETTER YENISEI AENG ++<U00010C2F> /xf0/x90/xb0/xaf OLD TURKIC LETTER ORKHON EP ++<U00010C30> /xf0/x90/xb0/xb0 OLD TURKIC LETTER ORKHON OP ++<U00010C31> /xf0/x90/xb0/xb1 OLD TURKIC LETTER ORKHON IC ++<U00010C32> /xf0/x90/xb0/xb2 OLD TURKIC LETTER ORKHON EC ++<U00010C33> /xf0/x90/xb0/xb3 OLD TURKIC LETTER YENISEI EC ++<U00010C34> /xf0/x90/xb0/xb4 OLD TURKIC LETTER ORKHON AQ ++<U00010C35> /xf0/x90/xb0/xb5 OLD TURKIC LETTER YENISEI AQ ++<U00010C36> /xf0/x90/xb0/xb6 OLD TURKIC LETTER ORKHON IQ ++<U00010C37> /xf0/x90/xb0/xb7 OLD TURKIC LETTER YENISEI IQ ++<U00010C38> /xf0/x90/xb0/xb8 OLD TURKIC LETTER ORKHON OQ ++<U00010C39> /xf0/x90/xb0/xb9 OLD TURKIC LETTER YENISEI OQ ++<U00010C3A> /xf0/x90/xb0/xba OLD TURKIC LETTER ORKHON AR ++<U00010C3B> /xf0/x90/xb0/xbb OLD TURKIC LETTER YENISEI AR ++<U00010C3C> /xf0/x90/xb0/xbc OLD TURKIC LETTER ORKHON AER ++<U00010C3D> /xf0/x90/xb0/xbd OLD TURKIC LETTER ORKHON AS ++<U00010C3E> /xf0/x90/xb0/xbe OLD TURKIC LETTER ORKHON AES ++<U00010C3F> /xf0/x90/xb0/xbf OLD TURKIC LETTER ORKHON ASH ++<U00010C40> /xf0/x90/xb1/x80 OLD TURKIC LETTER YENISEI ASH ++<U00010C41> /xf0/x90/xb1/x81 OLD TURKIC LETTER ORKHON ESH ++<U00010C42> /xf0/x90/xb1/x82 OLD TURKIC LETTER YENISEI ESH ++<U00010C43> /xf0/x90/xb1/x83 OLD TURKIC LETTER ORKHON AT ++<U00010C44> /xf0/x90/xb1/x84 OLD TURKIC LETTER YENISEI AT ++<U00010C45> /xf0/x90/xb1/x85 OLD TURKIC LETTER ORKHON AET ++<U00010C46> /xf0/x90/xb1/x86 OLD TURKIC LETTER YENISEI AET ++<U00010C47> /xf0/x90/xb1/x87 OLD TURKIC LETTER ORKHON OT ++<U00010C48> /xf0/x90/xb1/x88 OLD TURKIC LETTER ORKHON BASH ++<U00010E60> /xf0/x90/xb9/xa0 RUMI DIGIT ONE ++<U00010E61> /xf0/x90/xb9/xa1 RUMI DIGIT TWO ++<U00010E62> /xf0/x90/xb9/xa2 RUMI DIGIT THREE ++<U00010E63> /xf0/x90/xb9/xa3 RUMI DIGIT FOUR ++<U00010E64> /xf0/x90/xb9/xa4 RUMI DIGIT FIVE ++<U00010E65> /xf0/x90/xb9/xa5 RUMI DIGIT SIX ++<U00010E66> /xf0/x90/xb9/xa6 RUMI DIGIT SEVEN ++<U00010E67> /xf0/x90/xb9/xa7 RUMI DIGIT EIGHT ++<U00010E68> /xf0/x90/xb9/xa8 RUMI DIGIT NINE ++<U00010E69> /xf0/x90/xb9/xa9 RUMI NUMBER TEN ++<U00010E6A> /xf0/x90/xb9/xaa RUMI NUMBER TWENTY ++<U00010E6B> /xf0/x90/xb9/xab RUMI NUMBER THIRTY ++<U00010E6C> /xf0/x90/xb9/xac RUMI NUMBER FORTY ++<U00010E6D> /xf0/x90/xb9/xad RUMI NUMBER FIFTY ++<U00010E6E> /xf0/x90/xb9/xae RUMI NUMBER SIXTY ++<U00010E6F> /xf0/x90/xb9/xaf RUMI NUMBER SEVENTY ++<U00010E70> /xf0/x90/xb9/xb0 RUMI NUMBER EIGHTY ++<U00010E71> /xf0/x90/xb9/xb1 RUMI NUMBER NINETY ++<U00010E72> /xf0/x90/xb9/xb2 RUMI NUMBER ONE HUNDRED ++<U00010E73> /xf0/x90/xb9/xb3 RUMI NUMBER TWO HUNDRED ++<U00010E74> /xf0/x90/xb9/xb4 RUMI NUMBER THREE HUNDRED ++<U00010E75> /xf0/x90/xb9/xb5 RUMI NUMBER FOUR HUNDRED ++<U00010E76> /xf0/x90/xb9/xb6 RUMI NUMBER FIVE HUNDRED ++<U00010E77> /xf0/x90/xb9/xb7 RUMI NUMBER SIX HUNDRED ++<U00010E78> /xf0/x90/xb9/xb8 RUMI NUMBER SEVEN HUNDRED ++<U00010E79> /xf0/x90/xb9/xb9 RUMI NUMBER EIGHT HUNDRED ++<U00010E7A> /xf0/x90/xb9/xba RUMI NUMBER NINE HUNDRED ++<U00010E7B> /xf0/x90/xb9/xbb RUMI FRACTION ONE HALF ++<U00010E7C> /xf0/x90/xb9/xbc RUMI FRACTION ONE QUARTER ++<U00010E7D> /xf0/x90/xb9/xbd RUMI FRACTION ONE THIRD ++<U00010E7E> /xf0/x90/xb9/xbe RUMI FRACTION TWO THIRDS ++<U00011000> /xf0/x91/x80/x80 BRAHMI SIGN CANDRABINDU ++<U00011001> /xf0/x91/x80/x81 BRAHMI SIGN ANUSVARA ++<U00011002> /xf0/x91/x80/x82 BRAHMI SIGN VISARGA ++<U00011003> /xf0/x91/x80/x83 BRAHMI SIGN JIHVAMULIYA ++<U00011004> /xf0/x91/x80/x84 BRAHMI SIGN UPADHMANIYA ++<U00011005> /xf0/x91/x80/x85 BRAHMI LETTER A ++<U00011006> /xf0/x91/x80/x86 BRAHMI LETTER AA ++<U00011007> /xf0/x91/x80/x87 BRAHMI LETTER I ++<U00011008> /xf0/x91/x80/x88 BRAHMI LETTER II ++<U00011009> /xf0/x91/x80/x89 BRAHMI LETTER U ++<U0001100A> /xf0/x91/x80/x8a BRAHMI LETTER UU ++<U0001100B> /xf0/x91/x80/x8b BRAHMI LETTER VOCALIC R ++<U0001100C> /xf0/x91/x80/x8c BRAHMI LETTER VOCALIC RR ++<U0001100D> /xf0/x91/x80/x8d BRAHMI LETTER VOCALIC L ++<U0001100E> /xf0/x91/x80/x8e BRAHMI LETTER VOCALIC LL ++<U0001100F> /xf0/x91/x80/x8f BRAHMI LETTER E ++<U00011010> /xf0/x91/x80/x90 BRAHMI LETTER AI ++<U00011011> /xf0/x91/x80/x91 BRAHMI LETTER O ++<U00011012> /xf0/x91/x80/x92 BRAHMI LETTER AU ++<U00011013> /xf0/x91/x80/x93 BRAHMI LETTER KA ++<U00011014> /xf0/x91/x80/x94 BRAHMI LETTER KHA ++<U00011015> /xf0/x91/x80/x95 BRAHMI LETTER GA ++<U00011016> /xf0/x91/x80/x96 BRAHMI LETTER GHA ++<U00011017> /xf0/x91/x80/x97 BRAHMI LETTER NGA ++<U00011018> /xf0/x91/x80/x98 BRAHMI LETTER CA ++<U00011019> /xf0/x91/x80/x99 BRAHMI LETTER CHA ++<U0001101A> /xf0/x91/x80/x9a BRAHMI LETTER JA ++<U0001101B> /xf0/x91/x80/x9b BRAHMI LETTER JHA ++<U0001101C> /xf0/x91/x80/x9c BRAHMI LETTER NYA ++<U0001101D> /xf0/x91/x80/x9d BRAHMI LETTER TTA ++<U0001101E> /xf0/x91/x80/x9e BRAHMI LETTER TTHA ++<U0001101F> /xf0/x91/x80/x9f BRAHMI LETTER DDA ++<U00011020> /xf0/x91/x80/xa0 BRAHMI LETTER DDHA ++<U00011021> /xf0/x91/x80/xa1 BRAHMI LETTER NNA ++<U00011022> /xf0/x91/x80/xa2 BRAHMI LETTER TA ++<U00011023> /xf0/x91/x80/xa3 BRAHMI LETTER THA ++<U00011024> /xf0/x91/x80/xa4 BRAHMI LETTER DA ++<U00011025> /xf0/x91/x80/xa5 BRAHMI LETTER DHA ++<U00011026> /xf0/x91/x80/xa6 BRAHMI LETTER NA ++<U00011027> /xf0/x91/x80/xa7 BRAHMI LETTER PA ++<U00011028> /xf0/x91/x80/xa8 BRAHMI LETTER PHA ++<U00011029> /xf0/x91/x80/xa9 BRAHMI LETTER BA ++<U0001102A> /xf0/x91/x80/xaa BRAHMI LETTER BHA ++<U0001102B> /xf0/x91/x80/xab BRAHMI LETTER MA ++<U0001102C> /xf0/x91/x80/xac BRAHMI LETTER YA ++<U0001102D> /xf0/x91/x80/xad BRAHMI LETTER RA ++<U0001102E> /xf0/x91/x80/xae BRAHMI LETTER LA ++<U0001102F> /xf0/x91/x80/xaf BRAHMI LETTER VA ++<U00011030> /xf0/x91/x80/xb0 BRAHMI LETTER SHA ++<U00011031> /xf0/x91/x80/xb1 BRAHMI LETTER SSA ++<U00011032> /xf0/x91/x80/xb2 BRAHMI LETTER SA ++<U00011033> /xf0/x91/x80/xb3 BRAHMI LETTER HA ++<U00011034> /xf0/x91/x80/xb4 BRAHMI LETTER LLA ++<U00011035> /xf0/x91/x80/xb5 BRAHMI LETTER OLD TAMIL LLLA ++<U00011036> /xf0/x91/x80/xb6 BRAHMI LETTER OLD TAMIL RRA ++<U00011037> /xf0/x91/x80/xb7 BRAHMI LETTER OLD TAMIL NNNA ++<U00011038> /xf0/x91/x80/xb8 BRAHMI VOWEL SIGN AA ++<U00011039> /xf0/x91/x80/xb9 BRAHMI VOWEL SIGN BHATTIPROLU AA ++<U0001103A> /xf0/x91/x80/xba BRAHMI VOWEL SIGN I ++<U0001103B> /xf0/x91/x80/xbb BRAHMI VOWEL SIGN II ++<U0001103C> /xf0/x91/x80/xbc BRAHMI VOWEL SIGN U ++<U0001103D> /xf0/x91/x80/xbd BRAHMI VOWEL SIGN UU ++<U0001103E> /xf0/x91/x80/xbe BRAHMI VOWEL SIGN VOCALIC R ++<U0001103F> /xf0/x91/x80/xbf BRAHMI VOWEL SIGN VOCALIC RR ++<U00011040> /xf0/x91/x81/x80 BRAHMI VOWEL SIGN VOCALIC L ++<U00011041> /xf0/x91/x81/x81 BRAHMI VOWEL SIGN VOCALIC LL ++<U00011042> /xf0/x91/x81/x82 BRAHMI VOWEL SIGN E ++<U00011043> /xf0/x91/x81/x83 BRAHMI VOWEL SIGN AI ++<U00011044> /xf0/x91/x81/x84 BRAHMI VOWEL SIGN O ++<U00011045> /xf0/x91/x81/x85 BRAHMI VOWEL SIGN AU ++<U00011046> /xf0/x91/x81/x86 BRAHMI VIRAMA ++<U00011047> /xf0/x91/x81/x87 BRAHMI DANDA ++<U00011048> /xf0/x91/x81/x88 BRAHMI DOUBLE DANDA ++<U00011049> /xf0/x91/x81/x89 BRAHMI PUNCTUATION DOT ++<U0001104A> /xf0/x91/x81/x8a BRAHMI PUNCTUATION DOUBLE DOT ++<U0001104B> /xf0/x91/x81/x8b BRAHMI PUNCTUATION LINE ++<U0001104C> /xf0/x91/x81/x8c BRAHMI PUNCTUATION CRESCENT BAR ++<U0001104D> /xf0/x91/x81/x8d BRAHMI PUNCTUATION LOTUS ++<U00011052> /xf0/x91/x81/x92 BRAHMI NUMBER ONE ++<U00011053> /xf0/x91/x81/x93 BRAHMI NUMBER TWO ++<U00011054> /xf0/x91/x81/x94 BRAHMI NUMBER THREE ++<U00011055> /xf0/x91/x81/x95 BRAHMI NUMBER FOUR ++<U00011056> /xf0/x91/x81/x96 BRAHMI NUMBER FIVE ++<U00011057> /xf0/x91/x81/x97 BRAHMI NUMBER SIX ++<U00011058> /xf0/x91/x81/x98 BRAHMI NUMBER SEVEN ++<U00011059> /xf0/x91/x81/x99 BRAHMI NUMBER EIGHT ++<U0001105A> /xf0/x91/x81/x9a BRAHMI NUMBER NINE ++<U0001105B> /xf0/x91/x81/x9b BRAHMI NUMBER TEN ++<U0001105C> /xf0/x91/x81/x9c BRAHMI NUMBER TWENTY ++<U0001105D> /xf0/x91/x81/x9d BRAHMI NUMBER THIRTY ++<U0001105E> /xf0/x91/x81/x9e BRAHMI NUMBER FORTY ++<U0001105F> /xf0/x91/x81/x9f BRAHMI NUMBER FIFTY ++<U00011060> /xf0/x91/x81/xa0 BRAHMI NUMBER SIXTY ++<U00011061> /xf0/x91/x81/xa1 BRAHMI NUMBER SEVENTY ++<U00011062> /xf0/x91/x81/xa2 BRAHMI NUMBER EIGHTY ++<U00011063> /xf0/x91/x81/xa3 BRAHMI NUMBER NINETY ++<U00011064> /xf0/x91/x81/xa4 BRAHMI NUMBER ONE HUNDRED ++<U00011065> /xf0/x91/x81/xa5 BRAHMI NUMBER ONE THOUSAND ++<U00011066> /xf0/x91/x81/xa6 BRAHMI DIGIT ZERO ++<U00011067> /xf0/x91/x81/xa7 BRAHMI DIGIT ONE ++<U00011068> /xf0/x91/x81/xa8 BRAHMI DIGIT TWO ++<U00011069> /xf0/x91/x81/xa9 BRAHMI DIGIT THREE ++<U0001106A> /xf0/x91/x81/xaa BRAHMI DIGIT FOUR ++<U0001106B> /xf0/x91/x81/xab BRAHMI DIGIT FIVE ++<U0001106C> /xf0/x91/x81/xac BRAHMI DIGIT SIX ++<U0001106D> /xf0/x91/x81/xad BRAHMI DIGIT SEVEN ++<U0001106E> /xf0/x91/x81/xae BRAHMI DIGIT EIGHT ++<U0001106F> /xf0/x91/x81/xaf BRAHMI DIGIT NINE ++<U00011080> /xf0/x91/x82/x80 KAITHI SIGN CANDRABINDU ++<U00011081> /xf0/x91/x82/x81 KAITHI SIGN ANUSVARA ++<U00011082> /xf0/x91/x82/x82 KAITHI SIGN VISARGA ++<U00011083> /xf0/x91/x82/x83 KAITHI LETTER A ++<U00011084> /xf0/x91/x82/x84 KAITHI LETTER AA ++<U00011085> /xf0/x91/x82/x85 KAITHI LETTER I ++<U00011086> /xf0/x91/x82/x86 KAITHI LETTER II ++<U00011087> /xf0/x91/x82/x87 KAITHI LETTER U ++<U00011088> /xf0/x91/x82/x88 KAITHI LETTER UU ++<U00011089> /xf0/x91/x82/x89 KAITHI LETTER E ++<U0001108A> /xf0/x91/x82/x8a KAITHI LETTER AI ++<U0001108B> /xf0/x91/x82/x8b KAITHI LETTER O ++<U0001108C> /xf0/x91/x82/x8c KAITHI LETTER AU ++<U0001108D> /xf0/x91/x82/x8d KAITHI LETTER KA ++<U0001108E> /xf0/x91/x82/x8e KAITHI LETTER KHA ++<U0001108F> /xf0/x91/x82/x8f KAITHI LETTER GA ++<U00011090> /xf0/x91/x82/x90 KAITHI LETTER GHA ++<U00011091> /xf0/x91/x82/x91 KAITHI LETTER NGA ++<U00011092> /xf0/x91/x82/x92 KAITHI LETTER CA ++<U00011093> /xf0/x91/x82/x93 KAITHI LETTER CHA ++<U00011094> /xf0/x91/x82/x94 KAITHI LETTER JA ++<U00011095> /xf0/x91/x82/x95 KAITHI LETTER JHA ++<U00011096> /xf0/x91/x82/x96 KAITHI LETTER NYA ++<U00011097> /xf0/x91/x82/x97 KAITHI LETTER TTA ++<U00011098> /xf0/x91/x82/x98 KAITHI LETTER TTHA ++<U00011099> /xf0/x91/x82/x99 KAITHI LETTER DDA ++<U0001109A> /xf0/x91/x82/x9a KAITHI LETTER DDDHA ++<U0001109B> /xf0/x91/x82/x9b KAITHI LETTER DDHA ++<U0001109C> /xf0/x91/x82/x9c KAITHI LETTER RHA ++<U0001109D> /xf0/x91/x82/x9d KAITHI LETTER NNA ++<U0001109E> /xf0/x91/x82/x9e KAITHI LETTER TA ++<U0001109F> /xf0/x91/x82/x9f KAITHI LETTER THA ++<U000110A0> /xf0/x91/x82/xa0 KAITHI LETTER DA ++<U000110A1> /xf0/x91/x82/xa1 KAITHI LETTER DHA ++<U000110A2> /xf0/x91/x82/xa2 KAITHI LETTER NA ++<U000110A3> /xf0/x91/x82/xa3 KAITHI LETTER PA ++<U000110A4> /xf0/x91/x82/xa4 KAITHI LETTER PHA ++<U000110A5> /xf0/x91/x82/xa5 KAITHI LETTER BA ++<U000110A6> /xf0/x91/x82/xa6 KAITHI LETTER BHA ++<U000110A7> /xf0/x91/x82/xa7 KAITHI LETTER MA ++<U000110A8> /xf0/x91/x82/xa8 KAITHI LETTER YA ++<U000110A9> /xf0/x91/x82/xa9 KAITHI LETTER RA ++<U000110AA> /xf0/x91/x82/xaa KAITHI LETTER LA ++<U000110AB> /xf0/x91/x82/xab KAITHI LETTER VA ++<U000110AC> /xf0/x91/x82/xac KAITHI LETTER SHA ++<U000110AD> /xf0/x91/x82/xad KAITHI LETTER SSA ++<U000110AE> /xf0/x91/x82/xae KAITHI LETTER SA ++<U000110AF> /xf0/x91/x82/xaf KAITHI LETTER HA ++<U000110B0> /xf0/x91/x82/xb0 KAITHI VOWEL SIGN AA ++<U000110B1> /xf0/x91/x82/xb1 KAITHI VOWEL SIGN I ++<U000110B2> /xf0/x91/x82/xb2 KAITHI VOWEL SIGN II ++<U000110B3> /xf0/x91/x82/xb3 KAITHI VOWEL SIGN U ++<U000110B4> /xf0/x91/x82/xb4 KAITHI VOWEL SIGN UU ++<U000110B5> /xf0/x91/x82/xb5 KAITHI VOWEL SIGN E ++<U000110B6> /xf0/x91/x82/xb6 KAITHI VOWEL SIGN AI ++<U000110B7> /xf0/x91/x82/xb7 KAITHI VOWEL SIGN O ++<U000110B8> /xf0/x91/x82/xb8 KAITHI VOWEL SIGN AU ++<U000110B9> /xf0/x91/x82/xb9 KAITHI SIGN VIRAMA ++<U000110BA> /xf0/x91/x82/xba KAITHI SIGN NUKTA ++<U000110BB> /xf0/x91/x82/xbb KAITHI ABBREVIATION SIGN ++<U000110BC> /xf0/x91/x82/xbc KAITHI ENUMERATION SIGN ++<U000110BD> /xf0/x91/x82/xbd KAITHI NUMBER SIGN ++<U000110BE> /xf0/x91/x82/xbe KAITHI SECTION MARK ++<U000110BF> /xf0/x91/x82/xbf KAITHI DOUBLE SECTION MARK ++<U000110C0> /xf0/x91/x83/x80 KAITHI DANDA ++<U000110C1> /xf0/x91/x83/x81 KAITHI DOUBLE DANDA + <U00012000> /xf0/x92/x80/x80 CUNEIFORM SIGN A + <U00012001> /xf0/x92/x80/x81 CUNEIFORM SIGN A TIMES A + <U00012002> /xf0/x92/x80/x82 CUNEIFORM SIGN A TIMES BAD +@@ -28370,6 +30022,1648 @@ CHARMAP + <U00012471> /xf0/x92/x91/xb1 CUNEIFORM PUNCTUATION SIGN VERTICAL COLON + <U00012472> /xf0/x92/x91/xb2 CUNEIFORM PUNCTUATION SIGN DIAGONAL COLON + <U00012473> /xf0/x92/x91/xb3 CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON ++<U00013000> /xf0/x93/x80/x80 EGYPTIAN HIEROGLYPH A001 ++<U00013001> /xf0/x93/x80/x81 EGYPTIAN HIEROGLYPH A002 ++<U00013002> /xf0/x93/x80/x82 EGYPTIAN HIEROGLYPH A003 ++<U00013003> /xf0/x93/x80/x83 EGYPTIAN HIEROGLYPH A004 ++<U00013004> /xf0/x93/x80/x84 EGYPTIAN HIEROGLYPH A005 ++<U00013005> /xf0/x93/x80/x85 EGYPTIAN HIEROGLYPH A005A ++<U00013006> /xf0/x93/x80/x86 EGYPTIAN HIEROGLYPH A006 ++<U00013007> /xf0/x93/x80/x87 EGYPTIAN HIEROGLYPH A006A ++<U00013008> /xf0/x93/x80/x88 EGYPTIAN HIEROGLYPH A006B ++<U00013009> /xf0/x93/x80/x89 EGYPTIAN HIEROGLYPH A007 ++<U0001300A> /xf0/x93/x80/x8a EGYPTIAN HIEROGLYPH A008 ++<U0001300B> /xf0/x93/x80/x8b EGYPTIAN HIEROGLYPH A009 ++<U0001300C> /xf0/x93/x80/x8c EGYPTIAN HIEROGLYPH A010 ++<U0001300D> /xf0/x93/x80/x8d EGYPTIAN HIEROGLYPH A011 ++<U0001300E> /xf0/x93/x80/x8e EGYPTIAN HIEROGLYPH A012 ++<U0001300F> /xf0/x93/x80/x8f EGYPTIAN HIEROGLYPH A013 ++<U00013010> /xf0/x93/x80/x90 EGYPTIAN HIEROGLYPH A014 ++<U00013011> /xf0/x93/x80/x91 EGYPTIAN HIEROGLYPH A014A ++<U00013012> /xf0/x93/x80/x92 EGYPTIAN HIEROGLYPH A015 ++<U00013013> /xf0/x93/x80/x93 EGYPTIAN HIEROGLYPH A016 ++<U00013014> /xf0/x93/x80/x94 EGYPTIAN HIEROGLYPH A017 ++<U00013015> /xf0/x93/x80/x95 EGYPTIAN HIEROGLYPH A017A ++<U00013016> /xf0/x93/x80/x96 EGYPTIAN HIEROGLYPH A018 ++<U00013017> /xf0/x93/x80/x97 EGYPTIAN HIEROGLYPH A019 ++<U00013018> /xf0/x93/x80/x98 EGYPTIAN HIEROGLYPH A020 ++<U00013019> /xf0/x93/x80/x99 EGYPTIAN HIEROGLYPH A021 ++<U0001301A> /xf0/x93/x80/x9a EGYPTIAN HIEROGLYPH A022 ++<U0001301B> /xf0/x93/x80/x9b EGYPTIAN HIEROGLYPH A023 ++<U0001301C> /xf0/x93/x80/x9c EGYPTIAN HIEROGLYPH A024 ++<U0001301D> /xf0/x93/x80/x9d EGYPTIAN HIEROGLYPH A025 ++<U0001301E> /xf0/x93/x80/x9e EGYPTIAN HIEROGLYPH A026 ++<U0001301F> /xf0/x93/x80/x9f EGYPTIAN HIEROGLYPH A027 ++<U00013020> /xf0/x93/x80/xa0 EGYPTIAN HIEROGLYPH A028 ++<U00013021> /xf0/x93/x80/xa1 EGYPTIAN HIEROGLYPH A029 ++<U00013022> /xf0/x93/x80/xa2 EGYPTIAN HIEROGLYPH A030 ++<U00013023> /xf0/x93/x80/xa3 EGYPTIAN HIEROGLYPH A031 ++<U00013024> /xf0/x93/x80/xa4 EGYPTIAN HIEROGLYPH A032 ++<U00013025> /xf0/x93/x80/xa5 EGYPTIAN HIEROGLYPH A032A ++<U00013026> /xf0/x93/x80/xa6 EGYPTIAN HIEROGLYPH A033 ++<U00013027> /xf0/x93/x80/xa7 EGYPTIAN HIEROGLYPH A034 ++<U00013028> /xf0/x93/x80/xa8 EGYPTIAN HIEROGLYPH A035 ++<U00013029> /xf0/x93/x80/xa9 EGYPTIAN HIEROGLYPH A036 ++<U0001302A> /xf0/x93/x80/xaa EGYPTIAN HIEROGLYPH A037 ++<U0001302B> /xf0/x93/x80/xab EGYPTIAN HIEROGLYPH A038 ++<U0001302C> /xf0/x93/x80/xac EGYPTIAN HIEROGLYPH A039 ++<U0001302D> /xf0/x93/x80/xad EGYPTIAN HIEROGLYPH A040 ++<U0001302E> /xf0/x93/x80/xae EGYPTIAN HIEROGLYPH A040A ++<U0001302F> /xf0/x93/x80/xaf EGYPTIAN HIEROGLYPH A041 ++<U00013030> /xf0/x93/x80/xb0 EGYPTIAN HIEROGLYPH A042 ++<U00013031> /xf0/x93/x80/xb1 EGYPTIAN HIEROGLYPH A042A ++<U00013032> /xf0/x93/x80/xb2 EGYPTIAN HIEROGLYPH A043 ++<U00013033> /xf0/x93/x80/xb3 EGYPTIAN HIEROGLYPH A043A ++<U00013034> /xf0/x93/x80/xb4 EGYPTIAN HIEROGLYPH A044 ++<U00013035> /xf0/x93/x80/xb5 EGYPTIAN HIEROGLYPH A045 ++<U00013036> /xf0/x93/x80/xb6 EGYPTIAN HIEROGLYPH A045A ++<U00013037> /xf0/x93/x80/xb7 EGYPTIAN HIEROGLYPH A046 ++<U00013038> /xf0/x93/x80/xb8 EGYPTIAN HIEROGLYPH A047 ++<U00013039> /xf0/x93/x80/xb9 EGYPTIAN HIEROGLYPH A048 ++<U0001303A> /xf0/x93/x80/xba EGYPTIAN HIEROGLYPH A049 ++<U0001303B> /xf0/x93/x80/xbb EGYPTIAN HIEROGLYPH A050 ++<U0001303C> /xf0/x93/x80/xbc EGYPTIAN HIEROGLYPH A051 ++<U0001303D> /xf0/x93/x80/xbd EGYPTIAN HIEROGLYPH A052 ++<U0001303E> /xf0/x93/x80/xbe EGYPTIAN HIEROGLYPH A053 ++<U0001303F> /xf0/x93/x80/xbf EGYPTIAN HIEROGLYPH A054 ++<U00013040> /xf0/x93/x81/x80 EGYPTIAN HIEROGLYPH A055 ++<U00013041> /xf0/x93/x81/x81 EGYPTIAN HIEROGLYPH A056 ++<U00013042> /xf0/x93/x81/x82 EGYPTIAN HIEROGLYPH A057 ++<U00013043> /xf0/x93/x81/x83 EGYPTIAN HIEROGLYPH A058 ++<U00013044> /xf0/x93/x81/x84 EGYPTIAN HIEROGLYPH A059 ++<U00013045> /xf0/x93/x81/x85 EGYPTIAN HIEROGLYPH A060 ++<U00013046> /xf0/x93/x81/x86 EGYPTIAN HIEROGLYPH A061 ++<U00013047> /xf0/x93/x81/x87 EGYPTIAN HIEROGLYPH A062 ++<U00013048> /xf0/x93/x81/x88 EGYPTIAN HIEROGLYPH A063 ++<U00013049> /xf0/x93/x81/x89 EGYPTIAN HIEROGLYPH A064 ++<U0001304A> /xf0/x93/x81/x8a EGYPTIAN HIEROGLYPH A065 ++<U0001304B> /xf0/x93/x81/x8b EGYPTIAN HIEROGLYPH A066 ++<U0001304C> /xf0/x93/x81/x8c EGYPTIAN HIEROGLYPH A067 ++<U0001304D> /xf0/x93/x81/x8d EGYPTIAN HIEROGLYPH A068 ++<U0001304E> /xf0/x93/x81/x8e EGYPTIAN HIEROGLYPH A069 ++<U0001304F> /xf0/x93/x81/x8f EGYPTIAN HIEROGLYPH A070 ++<U00013050> /xf0/x93/x81/x90 EGYPTIAN HIEROGLYPH B001 ++<U00013051> /xf0/x93/x81/x91 EGYPTIAN HIEROGLYPH B002 ++<U00013052> /xf0/x93/x81/x92 EGYPTIAN HIEROGLYPH B003 ++<U00013053> /xf0/x93/x81/x93 EGYPTIAN HIEROGLYPH B004 ++<U00013054> /xf0/x93/x81/x94 EGYPTIAN HIEROGLYPH B005 ++<U00013055> /xf0/x93/x81/x95 EGYPTIAN HIEROGLYPH B005A ++<U00013056> /xf0/x93/x81/x96 EGYPTIAN HIEROGLYPH B006 ++<U00013057> /xf0/x93/x81/x97 EGYPTIAN HIEROGLYPH B007 ++<U00013058> /xf0/x93/x81/x98 EGYPTIAN HIEROGLYPH B008 ++<U00013059> /xf0/x93/x81/x99 EGYPTIAN HIEROGLYPH B009 ++<U0001305A> /xf0/x93/x81/x9a EGYPTIAN HIEROGLYPH C001 ++<U0001305B> /xf0/x93/x81/x9b EGYPTIAN HIEROGLYPH C002 ++<U0001305C> /xf0/x93/x81/x9c EGYPTIAN HIEROGLYPH C002A ++<U0001305D> /xf0/x93/x81/x9d EGYPTIAN HIEROGLYPH C002B ++<U0001305E> /xf0/x93/x81/x9e EGYPTIAN HIEROGLYPH C002C ++<U0001305F> /xf0/x93/x81/x9f EGYPTIAN HIEROGLYPH C003 ++<U00013060> /xf0/x93/x81/xa0 EGYPTIAN HIEROGLYPH C004 ++<U00013061> /xf0/x93/x81/xa1 EGYPTIAN HIEROGLYPH C005 ++<U00013062> /xf0/x93/x81/xa2 EGYPTIAN HIEROGLYPH C006 ++<U00013063> /xf0/x93/x81/xa3 EGYPTIAN HIEROGLYPH C007 ++<U00013064> /xf0/x93/x81/xa4 EGYPTIAN HIEROGLYPH C008 ++<U00013065> /xf0/x93/x81/xa5 EGYPTIAN HIEROGLYPH C009 ++<U00013066> /xf0/x93/x81/xa6 EGYPTIAN HIEROGLYPH C010 ++<U00013067> /xf0/x93/x81/xa7 EGYPTIAN HIEROGLYPH C010A ++<U00013068> /xf0/x93/x81/xa8 EGYPTIAN HIEROGLYPH C011 ++<U00013069> /xf0/x93/x81/xa9 EGYPTIAN HIEROGLYPH C012 ++<U0001306A> /xf0/x93/x81/xaa EGYPTIAN HIEROGLYPH C013 ++<U0001306B> /xf0/x93/x81/xab EGYPTIAN HIEROGLYPH C014 ++<U0001306C> /xf0/x93/x81/xac EGYPTIAN HIEROGLYPH C015 ++<U0001306D> /xf0/x93/x81/xad EGYPTIAN HIEROGLYPH C016 ++<U0001306E> /xf0/x93/x81/xae EGYPTIAN HIEROGLYPH C017 ++<U0001306F> /xf0/x93/x81/xaf EGYPTIAN HIEROGLYPH C018 ++<U00013070> /xf0/x93/x81/xb0 EGYPTIAN HIEROGLYPH C019 ++<U00013071> /xf0/x93/x81/xb1 EGYPTIAN HIEROGLYPH C020 ++<U00013072> /xf0/x93/x81/xb2 EGYPTIAN HIEROGLYPH C021 ++<U00013073> /xf0/x93/x81/xb3 EGYPTIAN HIEROGLYPH C022 ++<U00013074> /xf0/x93/x81/xb4 EGYPTIAN HIEROGLYPH C023 ++<U00013075> /xf0/x93/x81/xb5 EGYPTIAN HIEROGLYPH C024 ++<U00013076> /xf0/x93/x81/xb6 EGYPTIAN HIEROGLYPH D001 ++<U00013077> /xf0/x93/x81/xb7 EGYPTIAN HIEROGLYPH D002 ++<U00013078> /xf0/x93/x81/xb8 EGYPTIAN HIEROGLYPH D003 ++<U00013079> /xf0/x93/x81/xb9 EGYPTIAN HIEROGLYPH D004 ++<U0001307A> /xf0/x93/x81/xba EGYPTIAN HIEROGLYPH D005 ++<U0001307B> /xf0/x93/x81/xbb EGYPTIAN HIEROGLYPH D006 ++<U0001307C> /xf0/x93/x81/xbc EGYPTIAN HIEROGLYPH D007 ++<U0001307D> /xf0/x93/x81/xbd EGYPTIAN HIEROGLYPH D008 ++<U0001307E> /xf0/x93/x81/xbe EGYPTIAN HIEROGLYPH D008A ++<U0001307F> /xf0/x93/x81/xbf EGYPTIAN HIEROGLYPH D009 ++<U00013080> /xf0/x93/x82/x80 EGYPTIAN HIEROGLYPH D010 ++<U00013081> /xf0/x93/x82/x81 EGYPTIAN HIEROGLYPH D011 ++<U00013082> /xf0/x93/x82/x82 EGYPTIAN HIEROGLYPH D012 ++<U00013083> /xf0/x93/x82/x83 EGYPTIAN HIEROGLYPH D013 ++<U00013084> /xf0/x93/x82/x84 EGYPTIAN HIEROGLYPH D014 ++<U00013085> /xf0/x93/x82/x85 EGYPTIAN HIEROGLYPH D015 ++<U00013086> /xf0/x93/x82/x86 EGYPTIAN HIEROGLYPH D016 ++<U00013087> /xf0/x93/x82/x87 EGYPTIAN HIEROGLYPH D017 ++<U00013088> /xf0/x93/x82/x88 EGYPTIAN HIEROGLYPH D018 ++<U00013089> /xf0/x93/x82/x89 EGYPTIAN HIEROGLYPH D019 ++<U0001308A> /xf0/x93/x82/x8a EGYPTIAN HIEROGLYPH D020 ++<U0001308B> /xf0/x93/x82/x8b EGYPTIAN HIEROGLYPH D021 ++<U0001308C> /xf0/x93/x82/x8c EGYPTIAN HIEROGLYPH D022 ++<U0001308D> /xf0/x93/x82/x8d EGYPTIAN HIEROGLYPH D023 ++<U0001308E> /xf0/x93/x82/x8e EGYPTIAN HIEROGLYPH D024 ++<U0001308F> /xf0/x93/x82/x8f EGYPTIAN HIEROGLYPH D025 ++<U00013090> /xf0/x93/x82/x90 EGYPTIAN HIEROGLYPH D026 ++<U00013091> /xf0/x93/x82/x91 EGYPTIAN HIEROGLYPH D027 ++<U00013092> /xf0/x93/x82/x92 EGYPTIAN HIEROGLYPH D027A ++<U00013093> /xf0/x93/x82/x93 EGYPTIAN HIEROGLYPH D028 ++<U00013094> /xf0/x93/x82/x94 EGYPTIAN HIEROGLYPH D029 ++<U00013095> /xf0/x93/x82/x95 EGYPTIAN HIEROGLYPH D030 ++<U00013096> /xf0/x93/x82/x96 EGYPTIAN HIEROGLYPH D031 ++<U00013097> /xf0/x93/x82/x97 EGYPTIAN HIEROGLYPH D031A ++<U00013098> /xf0/x93/x82/x98 EGYPTIAN HIEROGLYPH D032 ++<U00013099> /xf0/x93/x82/x99 EGYPTIAN HIEROGLYPH D033 ++<U0001309A> /xf0/x93/x82/x9a EGYPTIAN HIEROGLYPH D034 ++<U0001309B> /xf0/x93/x82/x9b EGYPTIAN HIEROGLYPH D034A ++<U0001309C> /xf0/x93/x82/x9c EGYPTIAN HIEROGLYPH D035 ++<U0001309D> /xf0/x93/x82/x9d EGYPTIAN HIEROGLYPH D036 ++<U0001309E> /xf0/x93/x82/x9e EGYPTIAN HIEROGLYPH D037 ++<U0001309F> /xf0/x93/x82/x9f EGYPTIAN HIEROGLYPH D038 ++<U000130A0> /xf0/x93/x82/xa0 EGYPTIAN HIEROGLYPH D039 ++<U000130A1> /xf0/x93/x82/xa1 EGYPTIAN HIEROGLYPH D040 ++<U000130A2> /xf0/x93/x82/xa2 EGYPTIAN HIEROGLYPH D041 ++<U000130A3> /xf0/x93/x82/xa3 EGYPTIAN HIEROGLYPH D042 ++<U000130A4> /xf0/x93/x82/xa4 EGYPTIAN HIEROGLYPH D043 ++<U000130A5> /xf0/x93/x82/xa5 EGYPTIAN HIEROGLYPH D044 ++<U000130A6> /xf0/x93/x82/xa6 EGYPTIAN HIEROGLYPH D045 ++<U000130A7> /xf0/x93/x82/xa7 EGYPTIAN HIEROGLYPH D046 ++<U000130A8> /xf0/x93/x82/xa8 EGYPTIAN HIEROGLYPH D046A ++<U000130A9> /xf0/x93/x82/xa9 EGYPTIAN HIEROGLYPH D047 ++<U000130AA> /xf0/x93/x82/xaa EGYPTIAN HIEROGLYPH D048 ++<U000130AB> /xf0/x93/x82/xab EGYPTIAN HIEROGLYPH D048A ++<U000130AC> /xf0/x93/x82/xac EGYPTIAN HIEROGLYPH D049 ++<U000130AD> /xf0/x93/x82/xad EGYPTIAN HIEROGLYPH D050 ++<U000130AE> /xf0/x93/x82/xae EGYPTIAN HIEROGLYPH D050A ++<U000130AF> /xf0/x93/x82/xaf EGYPTIAN HIEROGLYPH D050B ++<U000130B0> /xf0/x93/x82/xb0 EGYPTIAN HIEROGLYPH D050C ++<U000130B1> /xf0/x93/x82/xb1 EGYPTIAN HIEROGLYPH D050D ++<U000130B2> /xf0/x93/x82/xb2 EGYPTIAN HIEROGLYPH D050E ++<U000130B3> /xf0/x93/x82/xb3 EGYPTIAN HIEROGLYPH D050F ++<U000130B4> /xf0/x93/x82/xb4 EGYPTIAN HIEROGLYPH D050G ++<U000130B5> /xf0/x93/x82/xb5 EGYPTIAN HIEROGLYPH D050H ++<U000130B6> /xf0/x93/x82/xb6 EGYPTIAN HIEROGLYPH D050I ++<U000130B7> /xf0/x93/x82/xb7 EGYPTIAN HIEROGLYPH D051 ++<U000130B8> /xf0/x93/x82/xb8 EGYPTIAN HIEROGLYPH D052 ++<U000130B9> /xf0/x93/x82/xb9 EGYPTIAN HIEROGLYPH D052A ++<U000130BA> /xf0/x93/x82/xba EGYPTIAN HIEROGLYPH D053 ++<U000130BB> /xf0/x93/x82/xbb EGYPTIAN HIEROGLYPH D054 ++<U000130BC> /xf0/x93/x82/xbc EGYPTIAN HIEROGLYPH D054A ++<U000130BD> /xf0/x93/x82/xbd EGYPTIAN HIEROGLYPH D055 ++<U000130BE> /xf0/x93/x82/xbe EGYPTIAN HIEROGLYPH D056 ++<U000130BF> /xf0/x93/x82/xbf EGYPTIAN HIEROGLYPH D057 ++<U000130C0> /xf0/x93/x83/x80 EGYPTIAN HIEROGLYPH D058 ++<U000130C1> /xf0/x93/x83/x81 EGYPTIAN HIEROGLYPH D059 ++<U000130C2> /xf0/x93/x83/x82 EGYPTIAN HIEROGLYPH D060 ++<U000130C3> /xf0/x93/x83/x83 EGYPTIAN HIEROGLYPH D061 ++<U000130C4> /xf0/x93/x83/x84 EGYPTIAN HIEROGLYPH D062 ++<U000130C5> /xf0/x93/x83/x85 EGYPTIAN HIEROGLYPH D063 ++<U000130C6> /xf0/x93/x83/x86 EGYPTIAN HIEROGLYPH D064 ++<U000130C7> /xf0/x93/x83/x87 EGYPTIAN HIEROGLYPH D065 ++<U000130C8> /xf0/x93/x83/x88 EGYPTIAN HIEROGLYPH D066 ++<U000130C9> /xf0/x93/x83/x89 EGYPTIAN HIEROGLYPH D067 ++<U000130CA> /xf0/x93/x83/x8a EGYPTIAN HIEROGLYPH D067A ++<U000130CB> /xf0/x93/x83/x8b EGYPTIAN HIEROGLYPH D067B ++<U000130CC> /xf0/x93/x83/x8c EGYPTIAN HIEROGLYPH D067C ++<U000130CD> /xf0/x93/x83/x8d EGYPTIAN HIEROGLYPH D067D ++<U000130CE> /xf0/x93/x83/x8e EGYPTIAN HIEROGLYPH D067E ++<U000130CF> /xf0/x93/x83/x8f EGYPTIAN HIEROGLYPH D067F ++<U000130D0> /xf0/x93/x83/x90 EGYPTIAN HIEROGLYPH D067G ++<U000130D1> /xf0/x93/x83/x91 EGYPTIAN HIEROGLYPH D067H ++<U000130D2> /xf0/x93/x83/x92 EGYPTIAN HIEROGLYPH E001 ++<U000130D3> /xf0/x93/x83/x93 EGYPTIAN HIEROGLYPH E002 ++<U000130D4> /xf0/x93/x83/x94 EGYPTIAN HIEROGLYPH E003 ++<U000130D5> /xf0/x93/x83/x95 EGYPTIAN HIEROGLYPH E004 ++<U000130D6> /xf0/x93/x83/x96 EGYPTIAN HIEROGLYPH E005 ++<U000130D7> /xf0/x93/x83/x97 EGYPTIAN HIEROGLYPH E006 ++<U000130D8> /xf0/x93/x83/x98 EGYPTIAN HIEROGLYPH E007 ++<U000130D9> /xf0/x93/x83/x99 EGYPTIAN HIEROGLYPH E008 ++<U000130DA> /xf0/x93/x83/x9a EGYPTIAN HIEROGLYPH E008A ++<U000130DB> /xf0/x93/x83/x9b EGYPTIAN HIEROGLYPH E009 ++<U000130DC> /xf0/x93/x83/x9c EGYPTIAN HIEROGLYPH E009A ++<U000130DD> /xf0/x93/x83/x9d EGYPTIAN HIEROGLYPH E010 ++<U000130DE> /xf0/x93/x83/x9e EGYPTIAN HIEROGLYPH E011 ++<U000130DF> /xf0/x93/x83/x9f EGYPTIAN HIEROGLYPH E012 ++<U000130E0> /xf0/x93/x83/xa0 EGYPTIAN HIEROGLYPH E013 ++<U000130E1> /xf0/x93/x83/xa1 EGYPTIAN HIEROGLYPH E014 ++<U000130E2> /xf0/x93/x83/xa2 EGYPTIAN HIEROGLYPH E015 ++<U000130E3> /xf0/x93/x83/xa3 EGYPTIAN HIEROGLYPH E016 ++<U000130E4> /xf0/x93/x83/xa4 EGYPTIAN HIEROGLYPH E016A ++<U000130E5> /xf0/x93/x83/xa5 EGYPTIAN HIEROGLYPH E017 ++<U000130E6> /xf0/x93/x83/xa6 EGYPTIAN HIEROGLYPH E017A ++<U000130E7> /xf0/x93/x83/xa7 EGYPTIAN HIEROGLYPH E018 ++<U000130E8> /xf0/x93/x83/xa8 EGYPTIAN HIEROGLYPH E019 ++<U000130E9> /xf0/x93/x83/xa9 EGYPTIAN HIEROGLYPH E020 ++<U000130EA> /xf0/x93/x83/xaa EGYPTIAN HIEROGLYPH E020A ++<U000130EB> /xf0/x93/x83/xab EGYPTIAN HIEROGLYPH E021 ++<U000130EC> /xf0/x93/x83/xac EGYPTIAN HIEROGLYPH E022 ++<U000130ED> /xf0/x93/x83/xad EGYPTIAN HIEROGLYPH E023 ++<U000130EE> /xf0/x93/x83/xae EGYPTIAN HIEROGLYPH E024 ++<U000130EF> /xf0/x93/x83/xaf EGYPTIAN HIEROGLYPH E025 ++<U000130F0> /xf0/x93/x83/xb0 EGYPTIAN HIEROGLYPH E026 ++<U000130F1> /xf0/x93/x83/xb1 EGYPTIAN HIEROGLYPH E027 ++<U000130F2> /xf0/x93/x83/xb2 EGYPTIAN HIEROGLYPH E028 ++<U000130F3> /xf0/x93/x83/xb3 EGYPTIAN HIEROGLYPH E028A ++<U000130F4> /xf0/x93/x83/xb4 EGYPTIAN HIEROGLYPH E029 ++<U000130F5> /xf0/x93/x83/xb5 EGYPTIAN HIEROGLYPH E030 ++<U000130F6> /xf0/x93/x83/xb6 EGYPTIAN HIEROGLYPH E031 ++<U000130F7> /xf0/x93/x83/xb7 EGYPTIAN HIEROGLYPH E032 ++<U000130F8> /xf0/x93/x83/xb8 EGYPTIAN HIEROGLYPH E033 ++<U000130F9> /xf0/x93/x83/xb9 EGYPTIAN HIEROGLYPH E034 ++<U000130FA> /xf0/x93/x83/xba EGYPTIAN HIEROGLYPH E034A ++<U000130FB> /xf0/x93/x83/xbb EGYPTIAN HIEROGLYPH E036 ++<U000130FC> /xf0/x93/x83/xbc EGYPTIAN HIEROGLYPH E037 ++<U000130FD> /xf0/x93/x83/xbd EGYPTIAN HIEROGLYPH E038 ++<U000130FE> /xf0/x93/x83/xbe EGYPTIAN HIEROGLYPH F001 ++<U000130FF> /xf0/x93/x83/xbf EGYPTIAN HIEROGLYPH F001A ++<U00013100> /xf0/x93/x84/x80 EGYPTIAN HIEROGLYPH F002 ++<U00013101> /xf0/x93/x84/x81 EGYPTIAN HIEROGLYPH F003 ++<U00013102> /xf0/x93/x84/x82 EGYPTIAN HIEROGLYPH F004 ++<U00013103> /xf0/x93/x84/x83 EGYPTIAN HIEROGLYPH F005 ++<U00013104> /xf0/x93/x84/x84 EGYPTIAN HIEROGLYPH F006 ++<U00013105> /xf0/x93/x84/x85 EGYPTIAN HIEROGLYPH F007 ++<U00013106> /xf0/x93/x84/x86 EGYPTIAN HIEROGLYPH F008 ++<U00013107> /xf0/x93/x84/x87 EGYPTIAN HIEROGLYPH F009 ++<U00013108> /xf0/x93/x84/x88 EGYPTIAN HIEROGLYPH F010 ++<U00013109> /xf0/x93/x84/x89 EGYPTIAN HIEROGLYPH F011 ++<U0001310A> /xf0/x93/x84/x8a EGYPTIAN HIEROGLYPH F012 ++<U0001310B> /xf0/x93/x84/x8b EGYPTIAN HIEROGLYPH F013 ++<U0001310C> /xf0/x93/x84/x8c EGYPTIAN HIEROGLYPH F013A ++<U0001310D> /xf0/x93/x84/x8d EGYPTIAN HIEROGLYPH F014 ++<U0001310E> /xf0/x93/x84/x8e EGYPTIAN HIEROGLYPH F015 ++<U0001310F> /xf0/x93/x84/x8f EGYPTIAN HIEROGLYPH F016 ++<U00013110> /xf0/x93/x84/x90 EGYPTIAN HIEROGLYPH F017 ++<U00013111> /xf0/x93/x84/x91 EGYPTIAN HIEROGLYPH F018 ++<U00013112> /xf0/x93/x84/x92 EGYPTIAN HIEROGLYPH F019 ++<U00013113> /xf0/x93/x84/x93 EGYPTIAN HIEROGLYPH F020 ++<U00013114> /xf0/x93/x84/x94 EGYPTIAN HIEROGLYPH F021 ++<U00013115> /xf0/x93/x84/x95 EGYPTIAN HIEROGLYPH F021A ++<U00013116> /xf0/x93/x84/x96 EGYPTIAN HIEROGLYPH F022 ++<U00013117> /xf0/x93/x84/x97 EGYPTIAN HIEROGLYPH F023 ++<U00013118> /xf0/x93/x84/x98 EGYPTIAN HIEROGLYPH F024 ++<U00013119> /xf0/x93/x84/x99 EGYPTIAN HIEROGLYPH F025 ++<U0001311A> /xf0/x93/x84/x9a EGYPTIAN HIEROGLYPH F026 ++<U0001311B> /xf0/x93/x84/x9b EGYPTIAN HIEROGLYPH F027 ++<U0001311C> /xf0/x93/x84/x9c EGYPTIAN HIEROGLYPH F028 ++<U0001311D> /xf0/x93/x84/x9d EGYPTIAN HIEROGLYPH F029 ++<U0001311E> /xf0/x93/x84/x9e EGYPTIAN HIEROGLYPH F030 ++<U0001311F> /xf0/x93/x84/x9f EGYPTIAN HIEROGLYPH F031 ++<U00013120> /xf0/x93/x84/xa0 EGYPTIAN HIEROGLYPH F031A ++<U00013121> /xf0/x93/x84/xa1 EGYPTIAN HIEROGLYPH F032 ++<U00013122> /xf0/x93/x84/xa2 EGYPTIAN HIEROGLYPH F033 ++<U00013123> /xf0/x93/x84/xa3 EGYPTIAN HIEROGLYPH F034 ++<U00013124> /xf0/x93/x84/xa4 EGYPTIAN HIEROGLYPH F035 ++<U00013125> /xf0/x93/x84/xa5 EGYPTIAN HIEROGLYPH F036 ++<U00013126> /xf0/x93/x84/xa6 EGYPTIAN HIEROGLYPH F037 ++<U00013127> /xf0/x93/x84/xa7 EGYPTIAN HIEROGLYPH F037A ++<U00013128> /xf0/x93/x84/xa8 EGYPTIAN HIEROGLYPH F038 ++<U00013129> /xf0/x93/x84/xa9 EGYPTIAN HIEROGLYPH F038A ++<U0001312A> /xf0/x93/x84/xaa EGYPTIAN HIEROGLYPH F039 ++<U0001312B> /xf0/x93/x84/xab EGYPTIAN HIEROGLYPH F040 ++<U0001312C> /xf0/x93/x84/xac EGYPTIAN HIEROGLYPH F041 ++<U0001312D> /xf0/x93/x84/xad EGYPTIAN HIEROGLYPH F042 ++<U0001312E> /xf0/x93/x84/xae EGYPTIAN HIEROGLYPH F043 ++<U0001312F> /xf0/x93/x84/xaf EGYPTIAN HIEROGLYPH F044 ++<U00013130> /xf0/x93/x84/xb0 EGYPTIAN HIEROGLYPH F045 ++<U00013131> /xf0/x93/x84/xb1 EGYPTIAN HIEROGLYPH F045A ++<U00013132> /xf0/x93/x84/xb2 EGYPTIAN HIEROGLYPH F046 ++<U00013133> /xf0/x93/x84/xb3 EGYPTIAN HIEROGLYPH F046A ++<U00013134> /xf0/x93/x84/xb4 EGYPTIAN HIEROGLYPH F047 ++<U00013135> /xf0/x93/x84/xb5 EGYPTIAN HIEROGLYPH F047A ++<U00013136> /xf0/x93/x84/xb6 EGYPTIAN HIEROGLYPH F048 ++<U00013137> /xf0/x93/x84/xb7 EGYPTIAN HIEROGLYPH F049 ++<U00013138> /xf0/x93/x84/xb8 EGYPTIAN HIEROGLYPH F050 ++<U00013139> /xf0/x93/x84/xb9 EGYPTIAN HIEROGLYPH F051 ++<U0001313A> /xf0/x93/x84/xba EGYPTIAN HIEROGLYPH F051A ++<U0001313B> /xf0/x93/x84/xbb EGYPTIAN HIEROGLYPH F051B ++<U0001313C> /xf0/x93/x84/xbc EGYPTIAN HIEROGLYPH F051C ++<U0001313D> /xf0/x93/x84/xbd EGYPTIAN HIEROGLYPH F052 ++<U0001313E> /xf0/x93/x84/xbe EGYPTIAN HIEROGLYPH F053 ++<U0001313F> /xf0/x93/x84/xbf EGYPTIAN HIEROGLYPH G001 ++<U00013140> /xf0/x93/x85/x80 EGYPTIAN HIEROGLYPH G002 ++<U00013141> /xf0/x93/x85/x81 EGYPTIAN HIEROGLYPH G003 ++<U00013142> /xf0/x93/x85/x82 EGYPTIAN HIEROGLYPH G004 ++<U00013143> /xf0/x93/x85/x83 EGYPTIAN HIEROGLYPH G005 ++<U00013144> /xf0/x93/x85/x84 EGYPTIAN HIEROGLYPH G006 ++<U00013145> /xf0/x93/x85/x85 EGYPTIAN HIEROGLYPH G006A ++<U00013146> /xf0/x93/x85/x86 EGYPTIAN HIEROGLYPH G007 ++<U00013147> /xf0/x93/x85/x87 EGYPTIAN HIEROGLYPH G007A ++<U00013148> /xf0/x93/x85/x88 EGYPTIAN HIEROGLYPH G007B ++<U00013149> /xf0/x93/x85/x89 EGYPTIAN HIEROGLYPH G008 ++<U0001314A> /xf0/x93/x85/x8a EGYPTIAN HIEROGLYPH G009 ++<U0001314B> /xf0/x93/x85/x8b EGYPTIAN HIEROGLYPH G010 ++<U0001314C> /xf0/x93/x85/x8c EGYPTIAN HIEROGLYPH G011 ++<U0001314D> /xf0/x93/x85/x8d EGYPTIAN HIEROGLYPH G011A ++<U0001314E> /xf0/x93/x85/x8e EGYPTIAN HIEROGLYPH G012 ++<U0001314F> /xf0/x93/x85/x8f EGYPTIAN HIEROGLYPH G013 ++<U00013150> /xf0/x93/x85/x90 EGYPTIAN HIEROGLYPH G014 ++<U00013151> /xf0/x93/x85/x91 EGYPTIAN HIEROGLYPH G015 ++<U00013152> /xf0/x93/x85/x92 EGYPTIAN HIEROGLYPH G016 ++<U00013153> /xf0/x93/x85/x93 EGYPTIAN HIEROGLYPH G017 ++<U00013154> /xf0/x93/x85/x94 EGYPTIAN HIEROGLYPH G018 ++<U00013155> /xf0/x93/x85/x95 EGYPTIAN HIEROGLYPH G019 ++<U00013156> /xf0/x93/x85/x96 EGYPTIAN HIEROGLYPH G020 ++<U00013157> /xf0/x93/x85/x97 EGYPTIAN HIEROGLYPH G020A ++<U00013158> /xf0/x93/x85/x98 EGYPTIAN HIEROGLYPH G021 ++<U00013159> /xf0/x93/x85/x99 EGYPTIAN HIEROGLYPH G022 ++<U0001315A> /xf0/x93/x85/x9a EGYPTIAN HIEROGLYPH G023 ++<U0001315B> /xf0/x93/x85/x9b EGYPTIAN HIEROGLYPH G024 ++<U0001315C> /xf0/x93/x85/x9c EGYPTIAN HIEROGLYPH G025 ++<U0001315D> /xf0/x93/x85/x9d EGYPTIAN HIEROGLYPH G026 ++<U0001315E> /xf0/x93/x85/x9e EGYPTIAN HIEROGLYPH G026A ++<U0001315F> /xf0/x93/x85/x9f EGYPTIAN HIEROGLYPH G027 ++<U00013160> /xf0/x93/x85/xa0 EGYPTIAN HIEROGLYPH G028 ++<U00013161> /xf0/x93/x85/xa1 EGYPTIAN HIEROGLYPH G029 ++<U00013162> /xf0/x93/x85/xa2 EGYPTIAN HIEROGLYPH G030 ++<U00013163> /xf0/x93/x85/xa3 EGYPTIAN HIEROGLYPH G031 ++<U00013164> /xf0/x93/x85/xa4 EGYPTIAN HIEROGLYPH G032 ++<U00013165> /xf0/x93/x85/xa5 EGYPTIAN HIEROGLYPH G033 ++<U00013166> /xf0/x93/x85/xa6 EGYPTIAN HIEROGLYPH G034 ++<U00013167> /xf0/x93/x85/xa7 EGYPTIAN HIEROGLYPH G035 ++<U00013168> /xf0/x93/x85/xa8 EGYPTIAN HIEROGLYPH G036 ++<U00013169> /xf0/x93/x85/xa9 EGYPTIAN HIEROGLYPH G036A ++<U0001316A> /xf0/x93/x85/xaa EGYPTIAN HIEROGLYPH G037 ++<U0001316B> /xf0/x93/x85/xab EGYPTIAN HIEROGLYPH G037A ++<U0001316C> /xf0/x93/x85/xac EGYPTIAN HIEROGLYPH G038 ++<U0001316D> /xf0/x93/x85/xad EGYPTIAN HIEROGLYPH G039 ++<U0001316E> /xf0/x93/x85/xae EGYPTIAN HIEROGLYPH G040 ++<U0001316F> /xf0/x93/x85/xaf EGYPTIAN HIEROGLYPH G041 ++<U00013170> /xf0/x93/x85/xb0 EGYPTIAN HIEROGLYPH G042 ++<U00013171> /xf0/x93/x85/xb1 EGYPTIAN HIEROGLYPH G043 ++<U00013172> /xf0/x93/x85/xb2 EGYPTIAN HIEROGLYPH G043A ++<U00013173> /xf0/x93/x85/xb3 EGYPTIAN HIEROGLYPH G044 ++<U00013174> /xf0/x93/x85/xb4 EGYPTIAN HIEROGLYPH G045 ++<U00013175> /xf0/x93/x85/xb5 EGYPTIAN HIEROGLYPH G045A ++<U00013176> /xf0/x93/x85/xb6 EGYPTIAN HIEROGLYPH G046 ++<U00013177> /xf0/x93/x85/xb7 EGYPTIAN HIEROGLYPH G047 ++<U00013178> /xf0/x93/x85/xb8 EGYPTIAN HIEROGLYPH G048 ++<U00013179> /xf0/x93/x85/xb9 EGYPTIAN HIEROGLYPH G049 ++<U0001317A> /xf0/x93/x85/xba EGYPTIAN HIEROGLYPH G050 ++<U0001317B> /xf0/x93/x85/xbb EGYPTIAN HIEROGLYPH G051 ++<U0001317C> /xf0/x93/x85/xbc EGYPTIAN HIEROGLYPH G052 ++<U0001317D> /xf0/x93/x85/xbd EGYPTIAN HIEROGLYPH G053 ++<U0001317E> /xf0/x93/x85/xbe EGYPTIAN HIEROGLYPH G054 ++<U0001317F> /xf0/x93/x85/xbf EGYPTIAN HIEROGLYPH H001 ++<U00013180> /xf0/x93/x86/x80 EGYPTIAN HIEROGLYPH H002 ++<U00013181> /xf0/x93/x86/x81 EGYPTIAN HIEROGLYPH H003 ++<U00013182> /xf0/x93/x86/x82 EGYPTIAN HIEROGLYPH H004 ++<U00013183> /xf0/x93/x86/x83 EGYPTIAN HIEROGLYPH H005 ++<U00013184> /xf0/x93/x86/x84 EGYPTIAN HIEROGLYPH H006 ++<U00013185> /xf0/x93/x86/x85 EGYPTIAN HIEROGLYPH H006A ++<U00013186> /xf0/x93/x86/x86 EGYPTIAN HIEROGLYPH H007 ++<U00013187> /xf0/x93/x86/x87 EGYPTIAN HIEROGLYPH H008 ++<U00013188> /xf0/x93/x86/x88 EGYPTIAN HIEROGLYPH I001 ++<U00013189> /xf0/x93/x86/x89 EGYPTIAN HIEROGLYPH I002 ++<U0001318A> /xf0/x93/x86/x8a EGYPTIAN HIEROGLYPH I003 ++<U0001318B> /xf0/x93/x86/x8b EGYPTIAN HIEROGLYPH I004 ++<U0001318C> /xf0/x93/x86/x8c EGYPTIAN HIEROGLYPH I005 ++<U0001318D> /xf0/x93/x86/x8d EGYPTIAN HIEROGLYPH I005A ++<U0001318E> /xf0/x93/x86/x8e EGYPTIAN HIEROGLYPH I006 ++<U0001318F> /xf0/x93/x86/x8f EGYPTIAN HIEROGLYPH I007 ++<U00013190> /xf0/x93/x86/x90 EGYPTIAN HIEROGLYPH I008 ++<U00013191> /xf0/x93/x86/x91 EGYPTIAN HIEROGLYPH I009 ++<U00013192> /xf0/x93/x86/x92 EGYPTIAN HIEROGLYPH I009A ++<U00013193> /xf0/x93/x86/x93 EGYPTIAN HIEROGLYPH I010 ++<U00013194> /xf0/x93/x86/x94 EGYPTIAN HIEROGLYPH I010A ++<U00013195> /xf0/x93/x86/x95 EGYPTIAN HIEROGLYPH I011 ++<U00013196> /xf0/x93/x86/x96 EGYPTIAN HIEROGLYPH I011A ++<U00013197> /xf0/x93/x86/x97 EGYPTIAN HIEROGLYPH I012 ++<U00013198> /xf0/x93/x86/x98 EGYPTIAN HIEROGLYPH I013 ++<U00013199> /xf0/x93/x86/x99 EGYPTIAN HIEROGLYPH I014 ++<U0001319A> /xf0/x93/x86/x9a EGYPTIAN HIEROGLYPH I015 ++<U0001319B> /xf0/x93/x86/x9b EGYPTIAN HIEROGLYPH K001 ++<U0001319C> /xf0/x93/x86/x9c EGYPTIAN HIEROGLYPH K002 ++<U0001319D> /xf0/x93/x86/x9d EGYPTIAN HIEROGLYPH K003 ++<U0001319E> /xf0/x93/x86/x9e EGYPTIAN HIEROGLYPH K004 ++<U0001319F> /xf0/x93/x86/x9f EGYPTIAN HIEROGLYPH K005 ++<U000131A0> /xf0/x93/x86/xa0 EGYPTIAN HIEROGLYPH K006 ++<U000131A1> /xf0/x93/x86/xa1 EGYPTIAN HIEROGLYPH K007 ++<U000131A2> /xf0/x93/x86/xa2 EGYPTIAN HIEROGLYPH K008 ++<U000131A3> /xf0/x93/x86/xa3 EGYPTIAN HIEROGLYPH L001 ++<U000131A4> /xf0/x93/x86/xa4 EGYPTIAN HIEROGLYPH L002 ++<U000131A5> /xf0/x93/x86/xa5 EGYPTIAN HIEROGLYPH L002A ++<U000131A6> /xf0/x93/x86/xa6 EGYPTIAN HIEROGLYPH L003 ++<U000131A7> /xf0/x93/x86/xa7 EGYPTIAN HIEROGLYPH L004 ++<U000131A8> /xf0/x93/x86/xa8 EGYPTIAN HIEROGLYPH L005 ++<U000131A9> /xf0/x93/x86/xa9 EGYPTIAN HIEROGLYPH L006 ++<U000131AA> /xf0/x93/x86/xaa EGYPTIAN HIEROGLYPH L006A ++<U000131AB> /xf0/x93/x86/xab EGYPTIAN HIEROGLYPH L007 ++<U000131AC> /xf0/x93/x86/xac EGYPTIAN HIEROGLYPH L008 ++<U000131AD> /xf0/x93/x86/xad EGYPTIAN HIEROGLYPH M001 ++<U000131AE> /xf0/x93/x86/xae EGYPTIAN HIEROGLYPH M001A ++<U000131AF> /xf0/x93/x86/xaf EGYPTIAN HIEROGLYPH M001B ++<U000131B0> /xf0/x93/x86/xb0 EGYPTIAN HIEROGLYPH M002 ++<U000131B1> /xf0/x93/x86/xb1 EGYPTIAN HIEROGLYPH M003 ++<U000131B2> /xf0/x93/x86/xb2 EGYPTIAN HIEROGLYPH M003A ++<U000131B3> /xf0/x93/x86/xb3 EGYPTIAN HIEROGLYPH M004 ++<U000131B4> /xf0/x93/x86/xb4 EGYPTIAN HIEROGLYPH M005 ++<U000131B5> /xf0/x93/x86/xb5 EGYPTIAN HIEROGLYPH M006 ++<U000131B6> /xf0/x93/x86/xb6 EGYPTIAN HIEROGLYPH M007 ++<U000131B7> /xf0/x93/x86/xb7 EGYPTIAN HIEROGLYPH M008 ++<U000131B8> /xf0/x93/x86/xb8 EGYPTIAN HIEROGLYPH M009 ++<U000131B9> /xf0/x93/x86/xb9 EGYPTIAN HIEROGLYPH M010 ++<U000131BA> /xf0/x93/x86/xba EGYPTIAN HIEROGLYPH M010A ++<U000131BB> /xf0/x93/x86/xbb EGYPTIAN HIEROGLYPH M011 ++<U000131BC> /xf0/x93/x86/xbc EGYPTIAN HIEROGLYPH M012 ++<U000131BD> /xf0/x93/x86/xbd EGYPTIAN HIEROGLYPH M012A ++<U000131BE> /xf0/x93/x86/xbe EGYPTIAN HIEROGLYPH M012B ++<U000131BF> /xf0/x93/x86/xbf EGYPTIAN HIEROGLYPH M012C ++<U000131C0> /xf0/x93/x87/x80 EGYPTIAN HIEROGLYPH M012D ++<U000131C1> /xf0/x93/x87/x81 EGYPTIAN HIEROGLYPH M012E ++<U000131C2> /xf0/x93/x87/x82 EGYPTIAN HIEROGLYPH M012F ++<U000131C3> /xf0/x93/x87/x83 EGYPTIAN HIEROGLYPH M012G ++<U000131C4> /xf0/x93/x87/x84 EGYPTIAN HIEROGLYPH M012H ++<U000131C5> /xf0/x93/x87/x85 EGYPTIAN HIEROGLYPH M013 ++<U000131C6> /xf0/x93/x87/x86 EGYPTIAN HIEROGLYPH M014 ++<U000131C7> /xf0/x93/x87/x87 EGYPTIAN HIEROGLYPH M015 ++<U000131C8> /xf0/x93/x87/x88 EGYPTIAN HIEROGLYPH M015A ++<U000131C9> /xf0/x93/x87/x89 EGYPTIAN HIEROGLYPH M016 ++<U000131CA> /xf0/x93/x87/x8a EGYPTIAN HIEROGLYPH M016A ++<U000131CB> /xf0/x93/x87/x8b EGYPTIAN HIEROGLYPH M017 ++<U000131CC> /xf0/x93/x87/x8c EGYPTIAN HIEROGLYPH M017A ++<U000131CD> /xf0/x93/x87/x8d EGYPTIAN HIEROGLYPH M018 ++<U000131CE> /xf0/x93/x87/x8e EGYPTIAN HIEROGLYPH M019 ++<U000131CF> /xf0/x93/x87/x8f EGYPTIAN HIEROGLYPH M020 ++<U000131D0> /xf0/x93/x87/x90 EGYPTIAN HIEROGLYPH M021 ++<U000131D1> /xf0/x93/x87/x91 EGYPTIAN HIEROGLYPH M022 ++<U000131D2> /xf0/x93/x87/x92 EGYPTIAN HIEROGLYPH M022A ++<U000131D3> /xf0/x93/x87/x93 EGYPTIAN HIEROGLYPH M023 ++<U000131D4> /xf0/x93/x87/x94 EGYPTIAN HIEROGLYPH M024 ++<U000131D5> /xf0/x93/x87/x95 EGYPTIAN HIEROGLYPH M024A ++<U000131D6> /xf0/x93/x87/x96 EGYPTIAN HIEROGLYPH M025 ++<U000131D7> /xf0/x93/x87/x97 EGYPTIAN HIEROGLYPH M026 ++<U000131D8> /xf0/x93/x87/x98 EGYPTIAN HIEROGLYPH M027 ++<U000131D9> /xf0/x93/x87/x99 EGYPTIAN HIEROGLYPH M028 ++<U000131DA> /xf0/x93/x87/x9a EGYPTIAN HIEROGLYPH M028A ++<U000131DB> /xf0/x93/x87/x9b EGYPTIAN HIEROGLYPH M029 ++<U000131DC> /xf0/x93/x87/x9c EGYPTIAN HIEROGLYPH M030 ++<U000131DD> /xf0/x93/x87/x9d EGYPTIAN HIEROGLYPH M031 ++<U000131DE> /xf0/x93/x87/x9e EGYPTIAN HIEROGLYPH M031A ++<U000131DF> /xf0/x93/x87/x9f EGYPTIAN HIEROGLYPH M032 ++<U000131E0> /xf0/x93/x87/xa0 EGYPTIAN HIEROGLYPH M033 ++<U000131E1> /xf0/x93/x87/xa1 EGYPTIAN HIEROGLYPH M033A ++<U000131E2> /xf0/x93/x87/xa2 EGYPTIAN HIEROGLYPH M033B ++<U000131E3> /xf0/x93/x87/xa3 EGYPTIAN HIEROGLYPH M034 ++<U000131E4> /xf0/x93/x87/xa4 EGYPTIAN HIEROGLYPH M035 ++<U000131E5> /xf0/x93/x87/xa5 EGYPTIAN HIEROGLYPH M036 ++<U000131E6> /xf0/x93/x87/xa6 EGYPTIAN HIEROGLYPH M037 ++<U000131E7> /xf0/x93/x87/xa7 EGYPTIAN HIEROGLYPH M038 ++<U000131E8> /xf0/x93/x87/xa8 EGYPTIAN HIEROGLYPH M039 ++<U000131E9> /xf0/x93/x87/xa9 EGYPTIAN HIEROGLYPH M040 ++<U000131EA> /xf0/x93/x87/xaa EGYPTIAN HIEROGLYPH M040A ++<U000131EB> /xf0/x93/x87/xab EGYPTIAN HIEROGLYPH M041 ++<U000131EC> /xf0/x93/x87/xac EGYPTIAN HIEROGLYPH M042 ++<U000131ED> /xf0/x93/x87/xad EGYPTIAN HIEROGLYPH M043 ++<U000131EE> /xf0/x93/x87/xae EGYPTIAN HIEROGLYPH M044 ++<U000131EF> /xf0/x93/x87/xaf EGYPTIAN HIEROGLYPH N001 ++<U000131F0> /xf0/x93/x87/xb0 EGYPTIAN HIEROGLYPH N002 ++<U000131F1> /xf0/x93/x87/xb1 EGYPTIAN HIEROGLYPH N003 ++<U000131F2> /xf0/x93/x87/xb2 EGYPTIAN HIEROGLYPH N004 ++<U000131F3> /xf0/x93/x87/xb3 EGYPTIAN HIEROGLYPH N005 ++<U000131F4> /xf0/x93/x87/xb4 EGYPTIAN HIEROGLYPH N006 ++<U000131F5> /xf0/x93/x87/xb5 EGYPTIAN HIEROGLYPH N007 ++<U000131F6> /xf0/x93/x87/xb6 EGYPTIAN HIEROGLYPH N008 ++<U000131F7> /xf0/x93/x87/xb7 EGYPTIAN HIEROGLYPH N009 ++<U000131F8> /xf0/x93/x87/xb8 EGYPTIAN HIEROGLYPH N010 ++<U000131F9> /xf0/x93/x87/xb9 EGYPTIAN HIEROGLYPH N011 ++<U000131FA> /xf0/x93/x87/xba EGYPTIAN HIEROGLYPH N012 ++<U000131FB> /xf0/x93/x87/xbb EGYPTIAN HIEROGLYPH N013 ++<U000131FC> /xf0/x93/x87/xbc EGYPTIAN HIEROGLYPH N014 ++<U000131FD> /xf0/x93/x87/xbd EGYPTIAN HIEROGLYPH N015 ++<U000131FE> /xf0/x93/x87/xbe EGYPTIAN HIEROGLYPH N016 ++<U000131FF> /xf0/x93/x87/xbf EGYPTIAN HIEROGLYPH N017 ++<U00013200> /xf0/x93/x88/x80 EGYPTIAN HIEROGLYPH N018 ++<U00013201> /xf0/x93/x88/x81 EGYPTIAN HIEROGLYPH N018A ++<U00013202> /xf0/x93/x88/x82 EGYPTIAN HIEROGLYPH N018B ++<U00013203> /xf0/x93/x88/x83 EGYPTIAN HIEROGLYPH N019 ++<U00013204> /xf0/x93/x88/x84 EGYPTIAN HIEROGLYPH N020 ++<U00013205> /xf0/x93/x88/x85 EGYPTIAN HIEROGLYPH N021 ++<U00013206> /xf0/x93/x88/x86 EGYPTIAN HIEROGLYPH N022 ++<U00013207> /xf0/x93/x88/x87 EGYPTIAN HIEROGLYPH N023 ++<U00013208> /xf0/x93/x88/x88 EGYPTIAN HIEROGLYPH N024 ++<U00013209> /xf0/x93/x88/x89 EGYPTIAN HIEROGLYPH N025 ++<U0001320A> /xf0/x93/x88/x8a EGYPTIAN HIEROGLYPH N025A ++<U0001320B> /xf0/x93/x88/x8b EGYPTIAN HIEROGLYPH N026 ++<U0001320C> /xf0/x93/x88/x8c EGYPTIAN HIEROGLYPH N027 ++<U0001320D> /xf0/x93/x88/x8d EGYPTIAN HIEROGLYPH N028 ++<U0001320E> /xf0/x93/x88/x8e EGYPTIAN HIEROGLYPH N029 ++<U0001320F> /xf0/x93/x88/x8f EGYPTIAN HIEROGLYPH N030 ++<U00013210> /xf0/x93/x88/x90 EGYPTIAN HIEROGLYPH N031 ++<U00013211> /xf0/x93/x88/x91 EGYPTIAN HIEROGLYPH N032 ++<U00013212> /xf0/x93/x88/x92 EGYPTIAN HIEROGLYPH N033 ++<U00013213> /xf0/x93/x88/x93 EGYPTIAN HIEROGLYPH N033A ++<U00013214> /xf0/x93/x88/x94 EGYPTIAN HIEROGLYPH N034 ++<U00013215> /xf0/x93/x88/x95 EGYPTIAN HIEROGLYPH N034A ++<U00013216> /xf0/x93/x88/x96 EGYPTIAN HIEROGLYPH N035 ++<U00013217> /xf0/x93/x88/x97 EGYPTIAN HIEROGLYPH N035A ++<U00013218> /xf0/x93/x88/x98 EGYPTIAN HIEROGLYPH N036 ++<U00013219> /xf0/x93/x88/x99 EGYPTIAN HIEROGLYPH N037 ++<U0001321A> /xf0/x93/x88/x9a EGYPTIAN HIEROGLYPH N037A ++<U0001321B> /xf0/x93/x88/x9b EGYPTIAN HIEROGLYPH N038 ++<U0001321C> /xf0/x93/x88/x9c EGYPTIAN HIEROGLYPH N039 ++<U0001321D> /xf0/x93/x88/x9d EGYPTIAN HIEROGLYPH N040 ++<U0001321E> /xf0/x93/x88/x9e EGYPTIAN HIEROGLYPH N041 ++<U0001321F> /xf0/x93/x88/x9f EGYPTIAN HIEROGLYPH N042 ++<U00013220> /xf0/x93/x88/xa0 EGYPTIAN HIEROGLYPH NL001 ++<U00013221> /xf0/x93/x88/xa1 EGYPTIAN HIEROGLYPH NL002 ++<U00013222> /xf0/x93/x88/xa2 EGYPTIAN HIEROGLYPH NL003 ++<U00013223> /xf0/x93/x88/xa3 EGYPTIAN HIEROGLYPH NL004 ++<U00013224> /xf0/x93/x88/xa4 EGYPTIAN HIEROGLYPH NL005 ++<U00013225> /xf0/x93/x88/xa5 EGYPTIAN HIEROGLYPH NL005A ++<U00013226> /xf0/x93/x88/xa6 EGYPTIAN HIEROGLYPH NL006 ++<U00013227> /xf0/x93/x88/xa7 EGYPTIAN HIEROGLYPH NL007 ++<U00013228> /xf0/x93/x88/xa8 EGYPTIAN HIEROGLYPH NL008 ++<U00013229> /xf0/x93/x88/xa9 EGYPTIAN HIEROGLYPH NL009 ++<U0001322A> /xf0/x93/x88/xaa EGYPTIAN HIEROGLYPH NL010 ++<U0001322B> /xf0/x93/x88/xab EGYPTIAN HIEROGLYPH NL011 ++<U0001322C> /xf0/x93/x88/xac EGYPTIAN HIEROGLYPH NL012 ++<U0001322D> /xf0/x93/x88/xad EGYPTIAN HIEROGLYPH NL013 ++<U0001322E> /xf0/x93/x88/xae EGYPTIAN HIEROGLYPH NL014 ++<U0001322F> /xf0/x93/x88/xaf EGYPTIAN HIEROGLYPH NL015 ++<U00013230> /xf0/x93/x88/xb0 EGYPTIAN HIEROGLYPH NL016 ++<U00013231> /xf0/x93/x88/xb1 EGYPTIAN HIEROGLYPH NL017 ++<U00013232> /xf0/x93/x88/xb2 EGYPTIAN HIEROGLYPH NL017A ++<U00013233> /xf0/x93/x88/xb3 EGYPTIAN HIEROGLYPH NL018 ++<U00013234> /xf0/x93/x88/xb4 EGYPTIAN HIEROGLYPH NL019 ++<U00013235> /xf0/x93/x88/xb5 EGYPTIAN HIEROGLYPH NL020 ++<U00013236> /xf0/x93/x88/xb6 EGYPTIAN HIEROGLYPH NU001 ++<U00013237> /xf0/x93/x88/xb7 EGYPTIAN HIEROGLYPH NU002 ++<U00013238> /xf0/x93/x88/xb8 EGYPTIAN HIEROGLYPH NU003 ++<U00013239> /xf0/x93/x88/xb9 EGYPTIAN HIEROGLYPH NU004 ++<U0001323A> /xf0/x93/x88/xba EGYPTIAN HIEROGLYPH NU005 ++<U0001323B> /xf0/x93/x88/xbb EGYPTIAN HIEROGLYPH NU006 ++<U0001323C> /xf0/x93/x88/xbc EGYPTIAN HIEROGLYPH NU007 ++<U0001323D> /xf0/x93/x88/xbd EGYPTIAN HIEROGLYPH NU008 ++<U0001323E> /xf0/x93/x88/xbe EGYPTIAN HIEROGLYPH NU009 ++<U0001323F> /xf0/x93/x88/xbf EGYPTIAN HIEROGLYPH NU010 ++<U00013240> /xf0/x93/x89/x80 EGYPTIAN HIEROGLYPH NU010A ++<U00013241> /xf0/x93/x89/x81 EGYPTIAN HIEROGLYPH NU011 ++<U00013242> /xf0/x93/x89/x82 EGYPTIAN HIEROGLYPH NU011A ++<U00013243> /xf0/x93/x89/x83 EGYPTIAN HIEROGLYPH NU012 ++<U00013244> /xf0/x93/x89/x84 EGYPTIAN HIEROGLYPH NU013 ++<U00013245> /xf0/x93/x89/x85 EGYPTIAN HIEROGLYPH NU014 ++<U00013246> /xf0/x93/x89/x86 EGYPTIAN HIEROGLYPH NU015 ++<U00013247> /xf0/x93/x89/x87 EGYPTIAN HIEROGLYPH NU016 ++<U00013248> /xf0/x93/x89/x88 EGYPTIAN HIEROGLYPH NU017 ++<U00013249> /xf0/x93/x89/x89 EGYPTIAN HIEROGLYPH NU018 ++<U0001324A> /xf0/x93/x89/x8a EGYPTIAN HIEROGLYPH NU018A ++<U0001324B> /xf0/x93/x89/x8b EGYPTIAN HIEROGLYPH NU019 ++<U0001324C> /xf0/x93/x89/x8c EGYPTIAN HIEROGLYPH NU020 ++<U0001324D> /xf0/x93/x89/x8d EGYPTIAN HIEROGLYPH NU021 ++<U0001324E> /xf0/x93/x89/x8e EGYPTIAN HIEROGLYPH NU022 ++<U0001324F> /xf0/x93/x89/x8f EGYPTIAN HIEROGLYPH NU022A ++<U00013250> /xf0/x93/x89/x90 EGYPTIAN HIEROGLYPH O001 ++<U00013251> /xf0/x93/x89/x91 EGYPTIAN HIEROGLYPH O001A ++<U00013252> /xf0/x93/x89/x92 EGYPTIAN HIEROGLYPH O002 ++<U00013253> /xf0/x93/x89/x93 EGYPTIAN HIEROGLYPH O003 ++<U00013254> /xf0/x93/x89/x94 EGYPTIAN HIEROGLYPH O004 ++<U00013255> /xf0/x93/x89/x95 EGYPTIAN HIEROGLYPH O005 ++<U00013256> /xf0/x93/x89/x96 EGYPTIAN HIEROGLYPH O005A ++<U00013257> /xf0/x93/x89/x97 EGYPTIAN HIEROGLYPH O006 ++<U00013258> /xf0/x93/x89/x98 EGYPTIAN HIEROGLYPH O006A ++<U00013259> /xf0/x93/x89/x99 EGYPTIAN HIEROGLYPH O006B ++<U0001325A> /xf0/x93/x89/x9a EGYPTIAN HIEROGLYPH O006C ++<U0001325B> /xf0/x93/x89/x9b EGYPTIAN HIEROGLYPH O006D ++<U0001325C> /xf0/x93/x89/x9c EGYPTIAN HIEROGLYPH O006E ++<U0001325D> /xf0/x93/x89/x9d EGYPTIAN HIEROGLYPH O006F ++<U0001325E> /xf0/x93/x89/x9e EGYPTIAN HIEROGLYPH O007 ++<U0001325F> /xf0/x93/x89/x9f EGYPTIAN HIEROGLYPH O008 ++<U00013260> /xf0/x93/x89/xa0 EGYPTIAN HIEROGLYPH O009 ++<U00013261> /xf0/x93/x89/xa1 EGYPTIAN HIEROGLYPH O010 ++<U00013262> /xf0/x93/x89/xa2 EGYPTIAN HIEROGLYPH O010A ++<U00013263> /xf0/x93/x89/xa3 EGYPTIAN HIEROGLYPH O010B ++<U00013264> /xf0/x93/x89/xa4 EGYPTIAN HIEROGLYPH O010C ++<U00013265> /xf0/x93/x89/xa5 EGYPTIAN HIEROGLYPH O011 ++<U00013266> /xf0/x93/x89/xa6 EGYPTIAN HIEROGLYPH O012 ++<U00013267> /xf0/x93/x89/xa7 EGYPTIAN HIEROGLYPH O013 ++<U00013268> /xf0/x93/x89/xa8 EGYPTIAN HIEROGLYPH O014 ++<U00013269> /xf0/x93/x89/xa9 EGYPTIAN HIEROGLYPH O015 ++<U0001326A> /xf0/x93/x89/xaa EGYPTIAN HIEROGLYPH O016 ++<U0001326B> /xf0/x93/x89/xab EGYPTIAN HIEROGLYPH O017 ++<U0001326C> /xf0/x93/x89/xac EGYPTIAN HIEROGLYPH O018 ++<U0001326D> /xf0/x93/x89/xad EGYPTIAN HIEROGLYPH O019 ++<U0001326E> /xf0/x93/x89/xae EGYPTIAN HIEROGLYPH O019A ++<U0001326F> /xf0/x93/x89/xaf EGYPTIAN HIEROGLYPH O020 ++<U00013270> /xf0/x93/x89/xb0 EGYPTIAN HIEROGLYPH O020A ++<U00013271> /xf0/x93/x89/xb1 EGYPTIAN HIEROGLYPH O021 ++<U00013272> /xf0/x93/x89/xb2 EGYPTIAN HIEROGLYPH O022 ++<U00013273> /xf0/x93/x89/xb3 EGYPTIAN HIEROGLYPH O023 ++<U00013274> /xf0/x93/x89/xb4 EGYPTIAN HIEROGLYPH O024 ++<U00013275> /xf0/x93/x89/xb5 EGYPTIAN HIEROGLYPH O024A ++<U00013276> /xf0/x93/x89/xb6 EGYPTIAN HIEROGLYPH O025 ++<U00013277> /xf0/x93/x89/xb7 EGYPTIAN HIEROGLYPH O025A ++<U00013278> /xf0/x93/x89/xb8 EGYPTIAN HIEROGLYPH O026 ++<U00013279> /xf0/x93/x89/xb9 EGYPTIAN HIEROGLYPH O027 ++<U0001327A> /xf0/x93/x89/xba EGYPTIAN HIEROGLYPH O028 ++<U0001327B> /xf0/x93/x89/xbb EGYPTIAN HIEROGLYPH O029 ++<U0001327C> /xf0/x93/x89/xbc EGYPTIAN HIEROGLYPH O029A ++<U0001327D> /xf0/x93/x89/xbd EGYPTIAN HIEROGLYPH O030 ++<U0001327E> /xf0/x93/x89/xbe EGYPTIAN HIEROGLYPH O030A ++<U0001327F> /xf0/x93/x89/xbf EGYPTIAN HIEROGLYPH O031 ++<U00013280> /xf0/x93/x8a/x80 EGYPTIAN HIEROGLYPH O032 ++<U00013281> /xf0/x93/x8a/x81 EGYPTIAN HIEROGLYPH O033 ++<U00013282> /xf0/x93/x8a/x82 EGYPTIAN HIEROGLYPH O033A ++<U00013283> /xf0/x93/x8a/x83 EGYPTIAN HIEROGLYPH O034 ++<U00013284> /xf0/x93/x8a/x84 EGYPTIAN HIEROGLYPH O035 ++<U00013285> /xf0/x93/x8a/x85 EGYPTIAN HIEROGLYPH O036 ++<U00013286> /xf0/x93/x8a/x86 EGYPTIAN HIEROGLYPH O036A ++<U00013287> /xf0/x93/x8a/x87 EGYPTIAN HIEROGLYPH O036B ++<U00013288> /xf0/x93/x8a/x88 EGYPTIAN HIEROGLYPH O036C ++<U00013289> /xf0/x93/x8a/x89 EGYPTIAN HIEROGLYPH O036D ++<U0001328A> /xf0/x93/x8a/x8a EGYPTIAN HIEROGLYPH O037 ++<U0001328B> /xf0/x93/x8a/x8b EGYPTIAN HIEROGLYPH O038 ++<U0001328C> /xf0/x93/x8a/x8c EGYPTIAN HIEROGLYPH O039 ++<U0001328D> /xf0/x93/x8a/x8d EGYPTIAN HIEROGLYPH O040 ++<U0001328E> /xf0/x93/x8a/x8e EGYPTIAN HIEROGLYPH O041 ++<U0001328F> /xf0/x93/x8a/x8f EGYPTIAN HIEROGLYPH O042 ++<U00013290> /xf0/x93/x8a/x90 EGYPTIAN HIEROGLYPH O043 ++<U00013291> /xf0/x93/x8a/x91 EGYPTIAN HIEROGLYPH O044 ++<U00013292> /xf0/x93/x8a/x92 EGYPTIAN HIEROGLYPH O045 ++<U00013293> /xf0/x93/x8a/x93 EGYPTIAN HIEROGLYPH O046 ++<U00013294> /xf0/x93/x8a/x94 EGYPTIAN HIEROGLYPH O047 ++<U00013295> /xf0/x93/x8a/x95 EGYPTIAN HIEROGLYPH O048 ++<U00013296> /xf0/x93/x8a/x96 EGYPTIAN HIEROGLYPH O049 ++<U00013297> /xf0/x93/x8a/x97 EGYPTIAN HIEROGLYPH O050 ++<U00013298> /xf0/x93/x8a/x98 EGYPTIAN HIEROGLYPH O050A ++<U00013299> /xf0/x93/x8a/x99 EGYPTIAN HIEROGLYPH O050B ++<U0001329A> /xf0/x93/x8a/x9a EGYPTIAN HIEROGLYPH O051 ++<U0001329B> /xf0/x93/x8a/x9b EGYPTIAN HIEROGLYPH P001 ++<U0001329C> /xf0/x93/x8a/x9c EGYPTIAN HIEROGLYPH P001A ++<U0001329D> /xf0/x93/x8a/x9d EGYPTIAN HIEROGLYPH P002 ++<U0001329E> /xf0/x93/x8a/x9e EGYPTIAN HIEROGLYPH P003 ++<U0001329F> /xf0/x93/x8a/x9f EGYPTIAN HIEROGLYPH P003A ++<U000132A0> /xf0/x93/x8a/xa0 EGYPTIAN HIEROGLYPH P004 ++<U000132A1> /xf0/x93/x8a/xa1 EGYPTIAN HIEROGLYPH P005 ++<U000132A2> /xf0/x93/x8a/xa2 EGYPTIAN HIEROGLYPH P006 ++<U000132A3> /xf0/x93/x8a/xa3 EGYPTIAN HIEROGLYPH P007 ++<U000132A4> /xf0/x93/x8a/xa4 EGYPTIAN HIEROGLYPH P008 ++<U000132A5> /xf0/x93/x8a/xa5 EGYPTIAN HIEROGLYPH P009 ++<U000132A6> /xf0/x93/x8a/xa6 EGYPTIAN HIEROGLYPH P010 ++<U000132A7> /xf0/x93/x8a/xa7 EGYPTIAN HIEROGLYPH P011 ++<U000132A8> /xf0/x93/x8a/xa8 EGYPTIAN HIEROGLYPH Q001 ++<U000132A9> /xf0/x93/x8a/xa9 EGYPTIAN HIEROGLYPH Q002 ++<U000132AA> /xf0/x93/x8a/xaa EGYPTIAN HIEROGLYPH Q003 ++<U000132AB> /xf0/x93/x8a/xab EGYPTIAN HIEROGLYPH Q004 ++<U000132AC> /xf0/x93/x8a/xac EGYPTIAN HIEROGLYPH Q005 ++<U000132AD> /xf0/x93/x8a/xad EGYPTIAN HIEROGLYPH Q006 ++<U000132AE> /xf0/x93/x8a/xae EGYPTIAN HIEROGLYPH Q007 ++<U000132AF> /xf0/x93/x8a/xaf EGYPTIAN HIEROGLYPH R001 ++<U000132B0> /xf0/x93/x8a/xb0 EGYPTIAN HIEROGLYPH R002 ++<U000132B1> /xf0/x93/x8a/xb1 EGYPTIAN HIEROGLYPH R002A ++<U000132B2> /xf0/x93/x8a/xb2 EGYPTIAN HIEROGLYPH R003 ++<U000132B3> /xf0/x93/x8a/xb3 EGYPTIAN HIEROGLYPH R003A ++<U000132B4> /xf0/x93/x8a/xb4 EGYPTIAN HIEROGLYPH R003B ++<U000132B5> /xf0/x93/x8a/xb5 EGYPTIAN HIEROGLYPH R004 ++<U000132B6> /xf0/x93/x8a/xb6 EGYPTIAN HIEROGLYPH R005 ++<U000132B7> /xf0/x93/x8a/xb7 EGYPTIAN HIEROGLYPH R006 ++<U000132B8> /xf0/x93/x8a/xb8 EGYPTIAN HIEROGLYPH R007 ++<U000132B9> /xf0/x93/x8a/xb9 EGYPTIAN HIEROGLYPH R008 ++<U000132BA> /xf0/x93/x8a/xba EGYPTIAN HIEROGLYPH R009 ++<U000132BB> /xf0/x93/x8a/xbb EGYPTIAN HIEROGLYPH R010 ++<U000132BC> /xf0/x93/x8a/xbc EGYPTIAN HIEROGLYPH R010A ++<U000132BD> /xf0/x93/x8a/xbd EGYPTIAN HIEROGLYPH R011 ++<U000132BE> /xf0/x93/x8a/xbe EGYPTIAN HIEROGLYPH R012 ++<U000132BF> /xf0/x93/x8a/xbf EGYPTIAN HIEROGLYPH R013 ++<U000132C0> /xf0/x93/x8b/x80 EGYPTIAN HIEROGLYPH R014 ++<U000132C1> /xf0/x93/x8b/x81 EGYPTIAN HIEROGLYPH R015 ++<U000132C2> /xf0/x93/x8b/x82 EGYPTIAN HIEROGLYPH R016 ++<U000132C3> /xf0/x93/x8b/x83 EGYPTIAN HIEROGLYPH R016A ++<U000132C4> /xf0/x93/x8b/x84 EGYPTIAN HIEROGLYPH R017 ++<U000132C5> /xf0/x93/x8b/x85 EGYPTIAN HIEROGLYPH R018 ++<U000132C6> /xf0/x93/x8b/x86 EGYPTIAN HIEROGLYPH R019 ++<U000132C7> /xf0/x93/x8b/x87 EGYPTIAN HIEROGLYPH R020 ++<U000132C8> /xf0/x93/x8b/x88 EGYPTIAN HIEROGLYPH R021 ++<U000132C9> /xf0/x93/x8b/x89 EGYPTIAN HIEROGLYPH R022 ++<U000132CA> /xf0/x93/x8b/x8a EGYPTIAN HIEROGLYPH R023 ++<U000132CB> /xf0/x93/x8b/x8b EGYPTIAN HIEROGLYPH R024 ++<U000132CC> /xf0/x93/x8b/x8c EGYPTIAN HIEROGLYPH R025 ++<U000132CD> /xf0/x93/x8b/x8d EGYPTIAN HIEROGLYPH R026 ++<U000132CE> /xf0/x93/x8b/x8e EGYPTIAN HIEROGLYPH R027 ++<U000132CF> /xf0/x93/x8b/x8f EGYPTIAN HIEROGLYPH R028 ++<U000132D0> /xf0/x93/x8b/x90 EGYPTIAN HIEROGLYPH R029 ++<U000132D1> /xf0/x93/x8b/x91 EGYPTIAN HIEROGLYPH S001 ++<U000132D2> /xf0/x93/x8b/x92 EGYPTIAN HIEROGLYPH S002 ++<U000132D3> /xf0/x93/x8b/x93 EGYPTIAN HIEROGLYPH S002A ++<U000132D4> /xf0/x93/x8b/x94 EGYPTIAN HIEROGLYPH S003 ++<U000132D5> /xf0/x93/x8b/x95 EGYPTIAN HIEROGLYPH S004 ++<U000132D6> /xf0/x93/x8b/x96 EGYPTIAN HIEROGLYPH S005 ++<U000132D7> /xf0/x93/x8b/x97 EGYPTIAN HIEROGLYPH S006 ++<U000132D8> /xf0/x93/x8b/x98 EGYPTIAN HIEROGLYPH S006A ++<U000132D9> /xf0/x93/x8b/x99 EGYPTIAN HIEROGLYPH S007 ++<U000132DA> /xf0/x93/x8b/x9a EGYPTIAN HIEROGLYPH S008 ++<U000132DB> /xf0/x93/x8b/x9b EGYPTIAN HIEROGLYPH S009 ++<U000132DC> /xf0/x93/x8b/x9c EGYPTIAN HIEROGLYPH S010 ++<U000132DD> /xf0/x93/x8b/x9d EGYPTIAN HIEROGLYPH S011 ++<U000132DE> /xf0/x93/x8b/x9e EGYPTIAN HIEROGLYPH S012 ++<U000132DF> /xf0/x93/x8b/x9f EGYPTIAN HIEROGLYPH S013 ++<U000132E0> /xf0/x93/x8b/xa0 EGYPTIAN HIEROGLYPH S014 ++<U000132E1> /xf0/x93/x8b/xa1 EGYPTIAN HIEROGLYPH S014A ++<U000132E2> /xf0/x93/x8b/xa2 EGYPTIAN HIEROGLYPH S014B ++<U000132E3> /xf0/x93/x8b/xa3 EGYPTIAN HIEROGLYPH S015 ++<U000132E4> /xf0/x93/x8b/xa4 EGYPTIAN HIEROGLYPH S016 ++<U000132E5> /xf0/x93/x8b/xa5 EGYPTIAN HIEROGLYPH S017 ++<U000132E6> /xf0/x93/x8b/xa6 EGYPTIAN HIEROGLYPH S017A ++<U000132E7> /xf0/x93/x8b/xa7 EGYPTIAN HIEROGLYPH S018 ++<U000132E8> /xf0/x93/x8b/xa8 EGYPTIAN HIEROGLYPH S019 ++<U000132E9> /xf0/x93/x8b/xa9 EGYPTIAN HIEROGLYPH S020 ++<U000132EA> /xf0/x93/x8b/xaa EGYPTIAN HIEROGLYPH S021 ++<U000132EB> /xf0/x93/x8b/xab EGYPTIAN HIEROGLYPH S022 ++<U000132EC> /xf0/x93/x8b/xac EGYPTIAN HIEROGLYPH S023 ++<U000132ED> /xf0/x93/x8b/xad EGYPTIAN HIEROGLYPH S024 ++<U000132EE> /xf0/x93/x8b/xae EGYPTIAN HIEROGLYPH S025 ++<U000132EF> /xf0/x93/x8b/xaf EGYPTIAN HIEROGLYPH S026 ++<U000132F0> /xf0/x93/x8b/xb0 EGYPTIAN HIEROGLYPH S026A ++<U000132F1> /xf0/x93/x8b/xb1 EGYPTIAN HIEROGLYPH S026B ++<U000132F2> /xf0/x93/x8b/xb2 EGYPTIAN HIEROGLYPH S027 ++<U000132F3> /xf0/x93/x8b/xb3 EGYPTIAN HIEROGLYPH S028 ++<U000132F4> /xf0/x93/x8b/xb4 EGYPTIAN HIEROGLYPH S029 ++<U000132F5> /xf0/x93/x8b/xb5 EGYPTIAN HIEROGLYPH S030 ++<U000132F6> /xf0/x93/x8b/xb6 EGYPTIAN HIEROGLYPH S031 ++<U000132F7> /xf0/x93/x8b/xb7 EGYPTIAN HIEROGLYPH S032 ++<U000132F8> /xf0/x93/x8b/xb8 EGYPTIAN HIEROGLYPH S033 ++<U000132F9> /xf0/x93/x8b/xb9 EGYPTIAN HIEROGLYPH S034 ++<U000132FA> /xf0/x93/x8b/xba EGYPTIAN HIEROGLYPH S035 ++<U000132FB> /xf0/x93/x8b/xbb EGYPTIAN HIEROGLYPH S035A ++<U000132FC> /xf0/x93/x8b/xbc EGYPTIAN HIEROGLYPH S036 ++<U000132FD> /xf0/x93/x8b/xbd EGYPTIAN HIEROGLYPH S037 ++<U000132FE> /xf0/x93/x8b/xbe EGYPTIAN HIEROGLYPH S038 ++<U000132FF> /xf0/x93/x8b/xbf EGYPTIAN HIEROGLYPH S039 ++<U00013300> /xf0/x93/x8c/x80 EGYPTIAN HIEROGLYPH S040 ++<U00013301> /xf0/x93/x8c/x81 EGYPTIAN HIEROGLYPH S041 ++<U00013302> /xf0/x93/x8c/x82 EGYPTIAN HIEROGLYPH S042 ++<U00013303> /xf0/x93/x8c/x83 EGYPTIAN HIEROGLYPH S043 ++<U00013304> /xf0/x93/x8c/x84 EGYPTIAN HIEROGLYPH S044 ++<U00013305> /xf0/x93/x8c/x85 EGYPTIAN HIEROGLYPH S045 ++<U00013306> /xf0/x93/x8c/x86 EGYPTIAN HIEROGLYPH S046 ++<U00013307> /xf0/x93/x8c/x87 EGYPTIAN HIEROGLYPH T001 ++<U00013308> /xf0/x93/x8c/x88 EGYPTIAN HIEROGLYPH T002 ++<U00013309> /xf0/x93/x8c/x89 EGYPTIAN HIEROGLYPH T003 ++<U0001330A> /xf0/x93/x8c/x8a EGYPTIAN HIEROGLYPH T003A ++<U0001330B> /xf0/x93/x8c/x8b EGYPTIAN HIEROGLYPH T004 ++<U0001330C> /xf0/x93/x8c/x8c EGYPTIAN HIEROGLYPH T005 ++<U0001330D> /xf0/x93/x8c/x8d EGYPTIAN HIEROGLYPH T006 ++<U0001330E> /xf0/x93/x8c/x8e EGYPTIAN HIEROGLYPH T007 ++<U0001330F> /xf0/x93/x8c/x8f EGYPTIAN HIEROGLYPH T007A ++<U00013310> /xf0/x93/x8c/x90 EGYPTIAN HIEROGLYPH T008 ++<U00013311> /xf0/x93/x8c/x91 EGYPTIAN HIEROGLYPH T008A ++<U00013312> /xf0/x93/x8c/x92 EGYPTIAN HIEROGLYPH T009 ++<U00013313> /xf0/x93/x8c/x93 EGYPTIAN HIEROGLYPH T009A ++<U00013314> /xf0/x93/x8c/x94 EGYPTIAN HIEROGLYPH T010 ++<U00013315> /xf0/x93/x8c/x95 EGYPTIAN HIEROGLYPH T011 ++<U00013316> /xf0/x93/x8c/x96 EGYPTIAN HIEROGLYPH T011A ++<U00013317> /xf0/x93/x8c/x97 EGYPTIAN HIEROGLYPH T012 ++<U00013318> /xf0/x93/x8c/x98 EGYPTIAN HIEROGLYPH T013 ++<U00013319> /xf0/x93/x8c/x99 EGYPTIAN HIEROGLYPH T014 ++<U0001331A> /xf0/x93/x8c/x9a EGYPTIAN HIEROGLYPH T015 ++<U0001331B> /xf0/x93/x8c/x9b EGYPTIAN HIEROGLYPH T016 ++<U0001331C> /xf0/x93/x8c/x9c EGYPTIAN HIEROGLYPH T016A ++<U0001331D> /xf0/x93/x8c/x9d EGYPTIAN HIEROGLYPH T017 ++<U0001331E> /xf0/x93/x8c/x9e EGYPTIAN HIEROGLYPH T018 ++<U0001331F> /xf0/x93/x8c/x9f EGYPTIAN HIEROGLYPH T019 ++<U00013320> /xf0/x93/x8c/xa0 EGYPTIAN HIEROGLYPH T020 ++<U00013321> /xf0/x93/x8c/xa1 EGYPTIAN HIEROGLYPH T021 ++<U00013322> /xf0/x93/x8c/xa2 EGYPTIAN HIEROGLYPH T022 ++<U00013323> /xf0/x93/x8c/xa3 EGYPTIAN HIEROGLYPH T023 ++<U00013324> /xf0/x93/x8c/xa4 EGYPTIAN HIEROGLYPH T024 ++<U00013325> /xf0/x93/x8c/xa5 EGYPTIAN HIEROGLYPH T025 ++<U00013326> /xf0/x93/x8c/xa6 EGYPTIAN HIEROGLYPH T026 ++<U00013327> /xf0/x93/x8c/xa7 EGYPTIAN HIEROGLYPH T027 ++<U00013328> /xf0/x93/x8c/xa8 EGYPTIAN HIEROGLYPH T028 ++<U00013329> /xf0/x93/x8c/xa9 EGYPTIAN HIEROGLYPH T029 ++<U0001332A> /xf0/x93/x8c/xaa EGYPTIAN HIEROGLYPH T030 ++<U0001332B> /xf0/x93/x8c/xab EGYPTIAN HIEROGLYPH T031 ++<U0001332C> /xf0/x93/x8c/xac EGYPTIAN HIEROGLYPH T032 ++<U0001332D> /xf0/x93/x8c/xad EGYPTIAN HIEROGLYPH T032A ++<U0001332E> /xf0/x93/x8c/xae EGYPTIAN HIEROGLYPH T033 ++<U0001332F> /xf0/x93/x8c/xaf EGYPTIAN HIEROGLYPH T033A ++<U00013330> /xf0/x93/x8c/xb0 EGYPTIAN HIEROGLYPH T034 ++<U00013331> /xf0/x93/x8c/xb1 EGYPTIAN HIEROGLYPH T035 ++<U00013332> /xf0/x93/x8c/xb2 EGYPTIAN HIEROGLYPH T036 ++<U00013333> /xf0/x93/x8c/xb3 EGYPTIAN HIEROGLYPH U001 ++<U00013334> /xf0/x93/x8c/xb4 EGYPTIAN HIEROGLYPH U002 ++<U00013335> /xf0/x93/x8c/xb5 EGYPTIAN HIEROGLYPH U003 ++<U00013336> /xf0/x93/x8c/xb6 EGYPTIAN HIEROGLYPH U004 ++<U00013337> /xf0/x93/x8c/xb7 EGYPTIAN HIEROGLYPH U005 ++<U00013338> /xf0/x93/x8c/xb8 EGYPTIAN HIEROGLYPH U006 ++<U00013339> /xf0/x93/x8c/xb9 EGYPTIAN HIEROGLYPH U006A ++<U0001333A> /xf0/x93/x8c/xba EGYPTIAN HIEROGLYPH U006B ++<U0001333B> /xf0/x93/x8c/xbb EGYPTIAN HIEROGLYPH U007 ++<U0001333C> /xf0/x93/x8c/xbc EGYPTIAN HIEROGLYPH U008 ++<U0001333D> /xf0/x93/x8c/xbd EGYPTIAN HIEROGLYPH U009 ++<U0001333E> /xf0/x93/x8c/xbe EGYPTIAN HIEROGLYPH U010 ++<U0001333F> /xf0/x93/x8c/xbf EGYPTIAN HIEROGLYPH U011 ++<U00013340> /xf0/x93/x8d/x80 EGYPTIAN HIEROGLYPH U012 ++<U00013341> /xf0/x93/x8d/x81 EGYPTIAN HIEROGLYPH U013 ++<U00013342> /xf0/x93/x8d/x82 EGYPTIAN HIEROGLYPH U014 ++<U00013343> /xf0/x93/x8d/x83 EGYPTIAN HIEROGLYPH U015 ++<U00013344> /xf0/x93/x8d/x84 EGYPTIAN HIEROGLYPH U016 ++<U00013345> /xf0/x93/x8d/x85 EGYPTIAN HIEROGLYPH U017 ++<U00013346> /xf0/x93/x8d/x86 EGYPTIAN HIEROGLYPH U018 ++<U00013347> /xf0/x93/x8d/x87 EGYPTIAN HIEROGLYPH U019 ++<U00013348> /xf0/x93/x8d/x88 EGYPTIAN HIEROGLYPH U020 ++<U00013349> /xf0/x93/x8d/x89 EGYPTIAN HIEROGLYPH U021 ++<U0001334A> /xf0/x93/x8d/x8a EGYPTIAN HIEROGLYPH U022 ++<U0001334B> /xf0/x93/x8d/x8b EGYPTIAN HIEROGLYPH U023 ++<U0001334C> /xf0/x93/x8d/x8c EGYPTIAN HIEROGLYPH U023A ++<U0001334D> /xf0/x93/x8d/x8d EGYPTIAN HIEROGLYPH U024 ++<U0001334E> /xf0/x93/x8d/x8e EGYPTIAN HIEROGLYPH U025 ++<U0001334F> /xf0/x93/x8d/x8f EGYPTIAN HIEROGLYPH U026 ++<U00013350> /xf0/x93/x8d/x90 EGYPTIAN HIEROGLYPH U027 ++<U00013351> /xf0/x93/x8d/x91 EGYPTIAN HIEROGLYPH U028 ++<U00013352> /xf0/x93/x8d/x92 EGYPTIAN HIEROGLYPH U029 ++<U00013353> /xf0/x93/x8d/x93 EGYPTIAN HIEROGLYPH U029A ++<U00013354> /xf0/x93/x8d/x94 EGYPTIAN HIEROGLYPH U030 ++<U00013355> /xf0/x93/x8d/x95 EGYPTIAN HIEROGLYPH U031 ++<U00013356> /xf0/x93/x8d/x96 EGYPTIAN HIEROGLYPH U032 ++<U00013357> /xf0/x93/x8d/x97 EGYPTIAN HIEROGLYPH U032A ++<U00013358> /xf0/x93/x8d/x98 EGYPTIAN HIEROGLYPH U033 ++<U00013359> /xf0/x93/x8d/x99 EGYPTIAN HIEROGLYPH U034 ++<U0001335A> /xf0/x93/x8d/x9a EGYPTIAN HIEROGLYPH U035 ++<U0001335B> /xf0/x93/x8d/x9b EGYPTIAN HIEROGLYPH U036 ++<U0001335C> /xf0/x93/x8d/x9c EGYPTIAN HIEROGLYPH U037 ++<U0001335D> /xf0/x93/x8d/x9d EGYPTIAN HIEROGLYPH U038 ++<U0001335E> /xf0/x93/x8d/x9e EGYPTIAN HIEROGLYPH U039 ++<U0001335F> /xf0/x93/x8d/x9f EGYPTIAN HIEROGLYPH U040 ++<U00013360> /xf0/x93/x8d/xa0 EGYPTIAN HIEROGLYPH U041 ++<U00013361> /xf0/x93/x8d/xa1 EGYPTIAN HIEROGLYPH U042 ++<U00013362> /xf0/x93/x8d/xa2 EGYPTIAN HIEROGLYPH V001 ++<U00013363> /xf0/x93/x8d/xa3 EGYPTIAN HIEROGLYPH V001A ++<U00013364> /xf0/x93/x8d/xa4 EGYPTIAN HIEROGLYPH V001B ++<U00013365> /xf0/x93/x8d/xa5 EGYPTIAN HIEROGLYPH V001C ++<U00013366> /xf0/x93/x8d/xa6 EGYPTIAN HIEROGLYPH V001D ++<U00013367> /xf0/x93/x8d/xa7 EGYPTIAN HIEROGLYPH V001E ++<U00013368> /xf0/x93/x8d/xa8 EGYPTIAN HIEROGLYPH V001F ++<U00013369> /xf0/x93/x8d/xa9 EGYPTIAN HIEROGLYPH V001G ++<U0001336A> /xf0/x93/x8d/xaa EGYPTIAN HIEROGLYPH V001H ++<U0001336B> /xf0/x93/x8d/xab EGYPTIAN HIEROGLYPH V001I ++<U0001336C> /xf0/x93/x8d/xac EGYPTIAN HIEROGLYPH V002 ++<U0001336D> /xf0/x93/x8d/xad EGYPTIAN HIEROGLYPH V002A ++<U0001336E> /xf0/x93/x8d/xae EGYPTIAN HIEROGLYPH V003 ++<U0001336F> /xf0/x93/x8d/xaf EGYPTIAN HIEROGLYPH V004 ++<U00013370> /xf0/x93/x8d/xb0 EGYPTIAN HIEROGLYPH V005 ++<U00013371> /xf0/x93/x8d/xb1 EGYPTIAN HIEROGLYPH V006 ++<U00013372> /xf0/x93/x8d/xb2 EGYPTIAN HIEROGLYPH V007 ++<U00013373> /xf0/x93/x8d/xb3 EGYPTIAN HIEROGLYPH V007A ++<U00013374> /xf0/x93/x8d/xb4 EGYPTIAN HIEROGLYPH V007B ++<U00013375> /xf0/x93/x8d/xb5 EGYPTIAN HIEROGLYPH V008 ++<U00013376> /xf0/x93/x8d/xb6 EGYPTIAN HIEROGLYPH V009 ++<U00013377> /xf0/x93/x8d/xb7 EGYPTIAN HIEROGLYPH V010 ++<U00013378> /xf0/x93/x8d/xb8 EGYPTIAN HIEROGLYPH V011 ++<U00013379> /xf0/x93/x8d/xb9 EGYPTIAN HIEROGLYPH V011A ++<U0001337A> /xf0/x93/x8d/xba EGYPTIAN HIEROGLYPH V011B ++<U0001337B> /xf0/x93/x8d/xbb EGYPTIAN HIEROGLYPH V011C ++<U0001337C> /xf0/x93/x8d/xbc EGYPTIAN HIEROGLYPH V012 ++<U0001337D> /xf0/x93/x8d/xbd EGYPTIAN HIEROGLYPH V012A ++<U0001337E> /xf0/x93/x8d/xbe EGYPTIAN HIEROGLYPH V012B ++<U0001337F> /xf0/x93/x8d/xbf EGYPTIAN HIEROGLYPH V013 ++<U00013380> /xf0/x93/x8e/x80 EGYPTIAN HIEROGLYPH V014 ++<U00013381> /xf0/x93/x8e/x81 EGYPTIAN HIEROGLYPH V015 ++<U00013382> /xf0/x93/x8e/x82 EGYPTIAN HIEROGLYPH V016 ++<U00013383> /xf0/x93/x8e/x83 EGYPTIAN HIEROGLYPH V017 ++<U00013384> /xf0/x93/x8e/x84 EGYPTIAN HIEROGLYPH V018 ++<U00013385> /xf0/x93/x8e/x85 EGYPTIAN HIEROGLYPH V019 ++<U00013386> /xf0/x93/x8e/x86 EGYPTIAN HIEROGLYPH V020 ++<U00013387> /xf0/x93/x8e/x87 EGYPTIAN HIEROGLYPH V020A ++<U00013388> /xf0/x93/x8e/x88 EGYPTIAN HIEROGLYPH V020B ++<U00013389> /xf0/x93/x8e/x89 EGYPTIAN HIEROGLYPH V020C ++<U0001338A> /xf0/x93/x8e/x8a EGYPTIAN HIEROGLYPH V020D ++<U0001338B> /xf0/x93/x8e/x8b EGYPTIAN HIEROGLYPH V020E ++<U0001338C> /xf0/x93/x8e/x8c EGYPTIAN HIEROGLYPH V020F ++<U0001338D> /xf0/x93/x8e/x8d EGYPTIAN HIEROGLYPH V020G ++<U0001338E> /xf0/x93/x8e/x8e EGYPTIAN HIEROGLYPH V020H ++<U0001338F> /xf0/x93/x8e/x8f EGYPTIAN HIEROGLYPH V020I ++<U00013390> /xf0/x93/x8e/x90 EGYPTIAN HIEROGLYPH V020J ++<U00013391> /xf0/x93/x8e/x91 EGYPTIAN HIEROGLYPH V020K ++<U00013392> /xf0/x93/x8e/x92 EGYPTIAN HIEROGLYPH V020L ++<U00013393> /xf0/x93/x8e/x93 EGYPTIAN HIEROGLYPH V021 ++<U00013394> /xf0/x93/x8e/x94 EGYPTIAN HIEROGLYPH V022 ++<U00013395> /xf0/x93/x8e/x95 EGYPTIAN HIEROGLYPH V023 ++<U00013396> /xf0/x93/x8e/x96 EGYPTIAN HIEROGLYPH V023A ++<U00013397> /xf0/x93/x8e/x97 EGYPTIAN HIEROGLYPH V024 ++<U00013398> /xf0/x93/x8e/x98 EGYPTIAN HIEROGLYPH V025 ++<U00013399> /xf0/x93/x8e/x99 EGYPTIAN HIEROGLYPH V026 ++<U0001339A> /xf0/x93/x8e/x9a EGYPTIAN HIEROGLYPH V027 ++<U0001339B> /xf0/x93/x8e/x9b EGYPTIAN HIEROGLYPH V028 ++<U0001339C> /xf0/x93/x8e/x9c EGYPTIAN HIEROGLYPH V028A ++<U0001339D> /xf0/x93/x8e/x9d EGYPTIAN HIEROGLYPH V029 ++<U0001339E> /xf0/x93/x8e/x9e EGYPTIAN HIEROGLYPH V029A ++<U0001339F> /xf0/x93/x8e/x9f EGYPTIAN HIEROGLYPH V030 ++<U000133A0> /xf0/x93/x8e/xa0 EGYPTIAN HIEROGLYPH V030A ++<U000133A1> /xf0/x93/x8e/xa1 EGYPTIAN HIEROGLYPH V031 ++<U000133A2> /xf0/x93/x8e/xa2 EGYPTIAN HIEROGLYPH V031A ++<U000133A3> /xf0/x93/x8e/xa3 EGYPTIAN HIEROGLYPH V032 ++<U000133A4> /xf0/x93/x8e/xa4 EGYPTIAN HIEROGLYPH V033 ++<U000133A5> /xf0/x93/x8e/xa5 EGYPTIAN HIEROGLYPH V033A ++<U000133A6> /xf0/x93/x8e/xa6 EGYPTIAN HIEROGLYPH V034 ++<U000133A7> /xf0/x93/x8e/xa7 EGYPTIAN HIEROGLYPH V035 ++<U000133A8> /xf0/x93/x8e/xa8 EGYPTIAN HIEROGLYPH V036 ++<U000133A9> /xf0/x93/x8e/xa9 EGYPTIAN HIEROGLYPH V037 ++<U000133AA> /xf0/x93/x8e/xaa EGYPTIAN HIEROGLYPH V037A ++<U000133AB> /xf0/x93/x8e/xab EGYPTIAN HIEROGLYPH V038 ++<U000133AC> /xf0/x93/x8e/xac EGYPTIAN HIEROGLYPH V039 ++<U000133AD> /xf0/x93/x8e/xad EGYPTIAN HIEROGLYPH V040 ++<U000133AE> /xf0/x93/x8e/xae EGYPTIAN HIEROGLYPH V040A ++<U000133AF> /xf0/x93/x8e/xaf EGYPTIAN HIEROGLYPH W001 ++<U000133B0> /xf0/x93/x8e/xb0 EGYPTIAN HIEROGLYPH W002 ++<U000133B1> /xf0/x93/x8e/xb1 EGYPTIAN HIEROGLYPH W003 ++<U000133B2> /xf0/x93/x8e/xb2 EGYPTIAN HIEROGLYPH W003A ++<U000133B3> /xf0/x93/x8e/xb3 EGYPTIAN HIEROGLYPH W004 ++<U000133B4> /xf0/x93/x8e/xb4 EGYPTIAN HIEROGLYPH W005 ++<U000133B5> /xf0/x93/x8e/xb5 EGYPTIAN HIEROGLYPH W006 ++<U000133B6> /xf0/x93/x8e/xb6 EGYPTIAN HIEROGLYPH W007 ++<U000133B7> /xf0/x93/x8e/xb7 EGYPTIAN HIEROGLYPH W008 ++<U000133B8> /xf0/x93/x8e/xb8 EGYPTIAN HIEROGLYPH W009 ++<U000133B9> /xf0/x93/x8e/xb9 EGYPTIAN HIEROGLYPH W009A ++<U000133BA> /xf0/x93/x8e/xba EGYPTIAN HIEROGLYPH W010 ++<U000133BB> /xf0/x93/x8e/xbb EGYPTIAN HIEROGLYPH W010A ++<U000133BC> /xf0/x93/x8e/xbc EGYPTIAN HIEROGLYPH W011 ++<U000133BD> /xf0/x93/x8e/xbd EGYPTIAN HIEROGLYPH W012 ++<U000133BE> /xf0/x93/x8e/xbe EGYPTIAN HIEROGLYPH W013 ++<U000133BF> /xf0/x93/x8e/xbf EGYPTIAN HIEROGLYPH W014 ++<U000133C0> /xf0/x93/x8f/x80 EGYPTIAN HIEROGLYPH W014A ++<U000133C1> /xf0/x93/x8f/x81 EGYPTIAN HIEROGLYPH W015 ++<U000133C2> /xf0/x93/x8f/x82 EGYPTIAN HIEROGLYPH W016 ++<U000133C3> /xf0/x93/x8f/x83 EGYPTIAN HIEROGLYPH W017 ++<U000133C4> /xf0/x93/x8f/x84 EGYPTIAN HIEROGLYPH W017A ++<U000133C5> /xf0/x93/x8f/x85 EGYPTIAN HIEROGLYPH W018 ++<U000133C6> /xf0/x93/x8f/x86 EGYPTIAN HIEROGLYPH W018A ++<U000133C7> /xf0/x93/x8f/x87 EGYPTIAN HIEROGLYPH W019 ++<U000133C8> /xf0/x93/x8f/x88 EGYPTIAN HIEROGLYPH W020 ++<U000133C9> /xf0/x93/x8f/x89 EGYPTIAN HIEROGLYPH W021 ++<U000133CA> /xf0/x93/x8f/x8a EGYPTIAN HIEROGLYPH W022 ++<U000133CB> /xf0/x93/x8f/x8b EGYPTIAN HIEROGLYPH W023 ++<U000133CC> /xf0/x93/x8f/x8c EGYPTIAN HIEROGLYPH W024 ++<U000133CD> /xf0/x93/x8f/x8d EGYPTIAN HIEROGLYPH W024A ++<U000133CE> /xf0/x93/x8f/x8e EGYPTIAN HIEROGLYPH W025 ++<U000133CF> /xf0/x93/x8f/x8f EGYPTIAN HIEROGLYPH X001 ++<U000133D0> /xf0/x93/x8f/x90 EGYPTIAN HIEROGLYPH X002 ++<U000133D1> /xf0/x93/x8f/x91 EGYPTIAN HIEROGLYPH X003 ++<U000133D2> /xf0/x93/x8f/x92 EGYPTIAN HIEROGLYPH X004 ++<U000133D3> /xf0/x93/x8f/x93 EGYPTIAN HIEROGLYPH X004A ++<U000133D4> /xf0/x93/x8f/x94 EGYPTIAN HIEROGLYPH X004B ++<U000133D5> /xf0/x93/x8f/x95 EGYPTIAN HIEROGLYPH X005 ++<U000133D6> /xf0/x93/x8f/x96 EGYPTIAN HIEROGLYPH X006 ++<U000133D7> /xf0/x93/x8f/x97 EGYPTIAN HIEROGLYPH X006A ++<U000133D8> /xf0/x93/x8f/x98 EGYPTIAN HIEROGLYPH X007 ++<U000133D9> /xf0/x93/x8f/x99 EGYPTIAN HIEROGLYPH X008 ++<U000133DA> /xf0/x93/x8f/x9a EGYPTIAN HIEROGLYPH X008A ++<U000133DB> /xf0/x93/x8f/x9b EGYPTIAN HIEROGLYPH Y001 ++<U000133DC> /xf0/x93/x8f/x9c EGYPTIAN HIEROGLYPH Y001A ++<U000133DD> /xf0/x93/x8f/x9d EGYPTIAN HIEROGLYPH Y002 ++<U000133DE> /xf0/x93/x8f/x9e EGYPTIAN HIEROGLYPH Y003 ++<U000133DF> /xf0/x93/x8f/x9f EGYPTIAN HIEROGLYPH Y004 ++<U000133E0> /xf0/x93/x8f/xa0 EGYPTIAN HIEROGLYPH Y005 ++<U000133E1> /xf0/x93/x8f/xa1 EGYPTIAN HIEROGLYPH Y006 ++<U000133E2> /xf0/x93/x8f/xa2 EGYPTIAN HIEROGLYPH Y007 ++<U000133E3> /xf0/x93/x8f/xa3 EGYPTIAN HIEROGLYPH Y008 ++<U000133E4> /xf0/x93/x8f/xa4 EGYPTIAN HIEROGLYPH Z001 ++<U000133E5> /xf0/x93/x8f/xa5 EGYPTIAN HIEROGLYPH Z002 ++<U000133E6> /xf0/x93/x8f/xa6 EGYPTIAN HIEROGLYPH Z002A ++<U000133E7> /xf0/x93/x8f/xa7 EGYPTIAN HIEROGLYPH Z002B ++<U000133E8> /xf0/x93/x8f/xa8 EGYPTIAN HIEROGLYPH Z002C ++<U000133E9> /xf0/x93/x8f/xa9 EGYPTIAN HIEROGLYPH Z002D ++<U000133EA> /xf0/x93/x8f/xaa EGYPTIAN HIEROGLYPH Z003 ++<U000133EB> /xf0/x93/x8f/xab EGYPTIAN HIEROGLYPH Z003A ++<U000133EC> /xf0/x93/x8f/xac EGYPTIAN HIEROGLYPH Z003B ++<U000133ED> /xf0/x93/x8f/xad EGYPTIAN HIEROGLYPH Z004 ++<U000133EE> /xf0/x93/x8f/xae EGYPTIAN HIEROGLYPH Z004A ++<U000133EF> /xf0/x93/x8f/xaf EGYPTIAN HIEROGLYPH Z005 ++<U000133F0> /xf0/x93/x8f/xb0 EGYPTIAN HIEROGLYPH Z005A ++<U000133F1> /xf0/x93/x8f/xb1 EGYPTIAN HIEROGLYPH Z006 ++<U000133F2> /xf0/x93/x8f/xb2 EGYPTIAN HIEROGLYPH Z007 ++<U000133F3> /xf0/x93/x8f/xb3 EGYPTIAN HIEROGLYPH Z008 ++<U000133F4> /xf0/x93/x8f/xb4 EGYPTIAN HIEROGLYPH Z009 ++<U000133F5> /xf0/x93/x8f/xb5 EGYPTIAN HIEROGLYPH Z010 ++<U000133F6> /xf0/x93/x8f/xb6 EGYPTIAN HIEROGLYPH Z011 ++<U000133F7> /xf0/x93/x8f/xb7 EGYPTIAN HIEROGLYPH Z012 ++<U000133F8> /xf0/x93/x8f/xb8 EGYPTIAN HIEROGLYPH Z013 ++<U000133F9> /xf0/x93/x8f/xb9 EGYPTIAN HIEROGLYPH Z014 ++<U000133FA> /xf0/x93/x8f/xba EGYPTIAN HIEROGLYPH Z015 ++<U000133FB> /xf0/x93/x8f/xbb EGYPTIAN HIEROGLYPH Z015A ++<U000133FC> /xf0/x93/x8f/xbc EGYPTIAN HIEROGLYPH Z015B ++<U000133FD> /xf0/x93/x8f/xbd EGYPTIAN HIEROGLYPH Z015C ++<U000133FE> /xf0/x93/x8f/xbe EGYPTIAN HIEROGLYPH Z015D ++<U000133FF> /xf0/x93/x8f/xbf EGYPTIAN HIEROGLYPH Z015E ++<U00013400> /xf0/x93/x90/x80 EGYPTIAN HIEROGLYPH Z015F ++<U00013401> /xf0/x93/x90/x81 EGYPTIAN HIEROGLYPH Z015G ++<U00013402> /xf0/x93/x90/x82 EGYPTIAN HIEROGLYPH Z015H ++<U00013403> /xf0/x93/x90/x83 EGYPTIAN HIEROGLYPH Z015I ++<U00013404> /xf0/x93/x90/x84 EGYPTIAN HIEROGLYPH Z016 ++<U00013405> /xf0/x93/x90/x85 EGYPTIAN HIEROGLYPH Z016A ++<U00013406> /xf0/x93/x90/x86 EGYPTIAN HIEROGLYPH Z016B ++<U00013407> /xf0/x93/x90/x87 EGYPTIAN HIEROGLYPH Z016C ++<U00013408> /xf0/x93/x90/x88 EGYPTIAN HIEROGLYPH Z016D ++<U00013409> /xf0/x93/x90/x89 EGYPTIAN HIEROGLYPH Z016E ++<U0001340A> /xf0/x93/x90/x8a EGYPTIAN HIEROGLYPH Z016F ++<U0001340B> /xf0/x93/x90/x8b EGYPTIAN HIEROGLYPH Z016G ++<U0001340C> /xf0/x93/x90/x8c EGYPTIAN HIEROGLYPH Z016H ++<U0001340D> /xf0/x93/x90/x8d EGYPTIAN HIEROGLYPH AA001 ++<U0001340E> /xf0/x93/x90/x8e EGYPTIAN HIEROGLYPH AA002 ++<U0001340F> /xf0/x93/x90/x8f EGYPTIAN HIEROGLYPH AA003 ++<U00013410> /xf0/x93/x90/x90 EGYPTIAN HIEROGLYPH AA004 ++<U00013411> /xf0/x93/x90/x91 EGYPTIAN HIEROGLYPH AA005 ++<U00013412> /xf0/x93/x90/x92 EGYPTIAN HIEROGLYPH AA006 ++<U00013413> /xf0/x93/x90/x93 EGYPTIAN HIEROGLYPH AA007 ++<U00013414> /xf0/x93/x90/x94 EGYPTIAN HIEROGLYPH AA007A ++<U00013415> /xf0/x93/x90/x95 EGYPTIAN HIEROGLYPH AA007B ++<U00013416> /xf0/x93/x90/x96 EGYPTIAN HIEROGLYPH AA008 ++<U00013417> /xf0/x93/x90/x97 EGYPTIAN HIEROGLYPH AA009 ++<U00013418> /xf0/x93/x90/x98 EGYPTIAN HIEROGLYPH AA010 ++<U00013419> /xf0/x93/x90/x99 EGYPTIAN HIEROGLYPH AA011 ++<U0001341A> /xf0/x93/x90/x9a EGYPTIAN HIEROGLYPH AA012 ++<U0001341B> /xf0/x93/x90/x9b EGYPTIAN HIEROGLYPH AA013 ++<U0001341C> /xf0/x93/x90/x9c EGYPTIAN HIEROGLYPH AA014 ++<U0001341D> /xf0/x93/x90/x9d EGYPTIAN HIEROGLYPH AA015 ++<U0001341E> /xf0/x93/x90/x9e EGYPTIAN HIEROGLYPH AA016 ++<U0001341F> /xf0/x93/x90/x9f EGYPTIAN HIEROGLYPH AA017 ++<U00013420> /xf0/x93/x90/xa0 EGYPTIAN HIEROGLYPH AA018 ++<U00013421> /xf0/x93/x90/xa1 EGYPTIAN HIEROGLYPH AA019 ++<U00013422> /xf0/x93/x90/xa2 EGYPTIAN HIEROGLYPH AA020 ++<U00013423> /xf0/x93/x90/xa3 EGYPTIAN HIEROGLYPH AA021 ++<U00013424> /xf0/x93/x90/xa4 EGYPTIAN HIEROGLYPH AA022 ++<U00013425> /xf0/x93/x90/xa5 EGYPTIAN HIEROGLYPH AA023 ++<U00013426> /xf0/x93/x90/xa6 EGYPTIAN HIEROGLYPH AA024 ++<U00013427> /xf0/x93/x90/xa7 EGYPTIAN HIEROGLYPH AA025 ++<U00013428> /xf0/x93/x90/xa8 EGYPTIAN HIEROGLYPH AA026 ++<U00013429> /xf0/x93/x90/xa9 EGYPTIAN HIEROGLYPH AA027 ++<U0001342A> /xf0/x93/x90/xaa EGYPTIAN HIEROGLYPH AA028 ++<U0001342B> /xf0/x93/x90/xab EGYPTIAN HIEROGLYPH AA029 ++<U0001342C> /xf0/x93/x90/xac EGYPTIAN HIEROGLYPH AA030 ++<U0001342D> /xf0/x93/x90/xad EGYPTIAN HIEROGLYPH AA031 ++<U0001342E> /xf0/x93/x90/xae EGYPTIAN HIEROGLYPH AA032 ++<U00016800> /xf0/x96/xa0/x80 BAMUM LETTER PHASE-A NGKUE MFON ++<U00016801> /xf0/x96/xa0/x81 BAMUM LETTER PHASE-A GBIEE FON ++<U00016802> /xf0/x96/xa0/x82 BAMUM LETTER PHASE-A PON MFON PIPAEMGBIEE ++<U00016803> /xf0/x96/xa0/x83 BAMUM LETTER PHASE-A PON MFON PIPAEMBA ++<U00016804> /xf0/x96/xa0/x84 BAMUM LETTER PHASE-A NAA MFON ++<U00016805> /xf0/x96/xa0/x85 BAMUM LETTER PHASE-A SHUENSHUET ++<U00016806> /xf0/x96/xa0/x86 BAMUM LETTER PHASE-A TITA MFON ++<U00016807> /xf0/x96/xa0/x87 BAMUM LETTER PHASE-A NZA MFON ++<U00016808> /xf0/x96/xa0/x88 BAMUM LETTER PHASE-A SHINDA PA NJI ++<U00016809> /xf0/x96/xa0/x89 BAMUM LETTER PHASE-A PON PA NJI PIPAEMGBIEE ++<U0001680A> /xf0/x96/xa0/x8a BAMUM LETTER PHASE-A PON PA NJI PIPAEMBA ++<U0001680B> /xf0/x96/xa0/x8b BAMUM LETTER PHASE-A MAEMBGBIEE ++<U0001680C> /xf0/x96/xa0/x8c BAMUM LETTER PHASE-A TU MAEMBA ++<U0001680D> /xf0/x96/xa0/x8d BAMUM LETTER PHASE-A NGANGU ++<U0001680E> /xf0/x96/xa0/x8e BAMUM LETTER PHASE-A MAEMVEUX ++<U0001680F> /xf0/x96/xa0/x8f BAMUM LETTER PHASE-A MANSUAE ++<U00016810> /xf0/x96/xa0/x90 BAMUM LETTER PHASE-A MVEUAENGAM ++<U00016811> /xf0/x96/xa0/x91 BAMUM LETTER PHASE-A SEUNYAM ++<U00016812> /xf0/x96/xa0/x92 BAMUM LETTER PHASE-A NTOQPEN ++<U00016813> /xf0/x96/xa0/x93 BAMUM LETTER PHASE-A KEUKEUTNDA ++<U00016814> /xf0/x96/xa0/x94 BAMUM LETTER PHASE-A NKINDI ++<U00016815> /xf0/x96/xa0/x95 BAMUM LETTER PHASE-A SUU ++<U00016816> /xf0/x96/xa0/x96 BAMUM LETTER PHASE-A NGKUENZEUM ++<U00016817> /xf0/x96/xa0/x97 BAMUM LETTER PHASE-A LAPAQ ++<U00016818> /xf0/x96/xa0/x98 BAMUM LETTER PHASE-A LET KUT ++<U00016819> /xf0/x96/xa0/x99 BAMUM LETTER PHASE-A NTAP MFAA ++<U0001681A> /xf0/x96/xa0/x9a BAMUM LETTER PHASE-A MAEKEUP ++<U0001681B> /xf0/x96/xa0/x9b BAMUM LETTER PHASE-A PASHAE ++<U0001681C> /xf0/x96/xa0/x9c BAMUM LETTER PHASE-A GHEUAERAE ++<U0001681D> /xf0/x96/xa0/x9d BAMUM LETTER PHASE-A PAMSHAE ++<U0001681E> /xf0/x96/xa0/x9e BAMUM LETTER PHASE-A MON NGGEUAET ++<U0001681F> /xf0/x96/xa0/x9f BAMUM LETTER PHASE-A NZUN MEUT ++<U00016820> /xf0/x96/xa0/xa0 BAMUM LETTER PHASE-A U YUQ NAE ++<U00016821> /xf0/x96/xa0/xa1 BAMUM LETTER PHASE-A GHEUAEGHEUAE ++<U00016822> /xf0/x96/xa0/xa2 BAMUM LETTER PHASE-A NTAP NTAA ++<U00016823> /xf0/x96/xa0/xa3 BAMUM LETTER PHASE-A SISA ++<U00016824> /xf0/x96/xa0/xa4 BAMUM LETTER PHASE-A MGBASA ++<U00016825> /xf0/x96/xa0/xa5 BAMUM LETTER PHASE-A MEUNJOMNDEUQ ++<U00016826> /xf0/x96/xa0/xa6 BAMUM LETTER PHASE-A MOOMPUQ ++<U00016827> /xf0/x96/xa0/xa7 BAMUM LETTER PHASE-A KAFA ++<U00016828> /xf0/x96/xa0/xa8 BAMUM LETTER PHASE-A PA LEERAEWA ++<U00016829> /xf0/x96/xa0/xa9 BAMUM LETTER PHASE-A NDA LEERAEWA ++<U0001682A> /xf0/x96/xa0/xaa BAMUM LETTER PHASE-A PET ++<U0001682B> /xf0/x96/xa0/xab BAMUM LETTER PHASE-A MAEMKPEN ++<U0001682C> /xf0/x96/xa0/xac BAMUM LETTER PHASE-A NIKA ++<U0001682D> /xf0/x96/xa0/xad BAMUM LETTER PHASE-A PUP ++<U0001682E> /xf0/x96/xa0/xae BAMUM LETTER PHASE-A TUAEP ++<U0001682F> /xf0/x96/xa0/xaf BAMUM LETTER PHASE-A LUAEP ++<U00016830> /xf0/x96/xa0/xb0 BAMUM LETTER PHASE-A SONJAM ++<U00016831> /xf0/x96/xa0/xb1 BAMUM LETTER PHASE-A TEUTEUWEN ++<U00016832> /xf0/x96/xa0/xb2 BAMUM LETTER PHASE-A MAENYI ++<U00016833> /xf0/x96/xa0/xb3 BAMUM LETTER PHASE-A KET ++<U00016834> /xf0/x96/xa0/xb4 BAMUM LETTER PHASE-A NDAANGGEUAET ++<U00016835> /xf0/x96/xa0/xb5 BAMUM LETTER PHASE-A KUOQ ++<U00016836> /xf0/x96/xa0/xb6 BAMUM LETTER PHASE-A MOOMEUT ++<U00016837> /xf0/x96/xa0/xb7 BAMUM LETTER PHASE-A SHUM ++<U00016838> /xf0/x96/xa0/xb8 BAMUM LETTER PHASE-A LOMMAE ++<U00016839> /xf0/x96/xa0/xb9 BAMUM LETTER PHASE-A FIRI ++<U0001683A> /xf0/x96/xa0/xba BAMUM LETTER PHASE-A ROM ++<U0001683B> /xf0/x96/xa0/xbb BAMUM LETTER PHASE-A KPOQ ++<U0001683C> /xf0/x96/xa0/xbc BAMUM LETTER PHASE-A SOQ ++<U0001683D> /xf0/x96/xa0/xbd BAMUM LETTER PHASE-A MAP PIEET ++<U0001683E> /xf0/x96/xa0/xbe BAMUM LETTER PHASE-A SHIRAE ++<U0001683F> /xf0/x96/xa0/xbf BAMUM LETTER PHASE-A NTAP ++<U00016840> /xf0/x96/xa1/x80 BAMUM LETTER PHASE-A SHOQ NSHUT YUM ++<U00016841> /xf0/x96/xa1/x81 BAMUM LETTER PHASE-A NYIT MONGKEUAEQ ++<U00016842> /xf0/x96/xa1/x82 BAMUM LETTER PHASE-A PAARAE ++<U00016843> /xf0/x96/xa1/x83 BAMUM LETTER PHASE-A NKAARAE ++<U00016844> /xf0/x96/xa1/x84 BAMUM LETTER PHASE-A UNKNOWN ++<U00016845> /xf0/x96/xa1/x85 BAMUM LETTER PHASE-A NGGEN ++<U00016846> /xf0/x96/xa1/x86 BAMUM LETTER PHASE-A MAESI ++<U00016847> /xf0/x96/xa1/x87 BAMUM LETTER PHASE-A NJAM ++<U00016848> /xf0/x96/xa1/x88 BAMUM LETTER PHASE-A MBANYI ++<U00016849> /xf0/x96/xa1/x89 BAMUM LETTER PHASE-A NYET ++<U0001684A> /xf0/x96/xa1/x8a BAMUM LETTER PHASE-A TEUAEN ++<U0001684B> /xf0/x96/xa1/x8b BAMUM LETTER PHASE-A SOT ++<U0001684C> /xf0/x96/xa1/x8c BAMUM LETTER PHASE-A PAAM ++<U0001684D> /xf0/x96/xa1/x8d BAMUM LETTER PHASE-A NSHIEE ++<U0001684E> /xf0/x96/xa1/x8e BAMUM LETTER PHASE-A MAEM ++<U0001684F> /xf0/x96/xa1/x8f BAMUM LETTER PHASE-A NYI ++<U00016850> /xf0/x96/xa1/x90 BAMUM LETTER PHASE-A KAQ ++<U00016851> /xf0/x96/xa1/x91 BAMUM LETTER PHASE-A NSHA ++<U00016852> /xf0/x96/xa1/x92 BAMUM LETTER PHASE-A VEE ++<U00016853> /xf0/x96/xa1/x93 BAMUM LETTER PHASE-A LU ++<U00016854> /xf0/x96/xa1/x94 BAMUM LETTER PHASE-A NEN ++<U00016855> /xf0/x96/xa1/x95 BAMUM LETTER PHASE-A NAQ ++<U00016856> /xf0/x96/xa1/x96 BAMUM LETTER PHASE-A MBAQ ++<U00016857> /xf0/x96/xa1/x97 BAMUM LETTER PHASE-B NSHUET ++<U00016858> /xf0/x96/xa1/x98 BAMUM LETTER PHASE-B TU MAEMGBIEE ++<U00016859> /xf0/x96/xa1/x99 BAMUM LETTER PHASE-B SIEE ++<U0001685A> /xf0/x96/xa1/x9a BAMUM LETTER PHASE-B SET TU ++<U0001685B> /xf0/x96/xa1/x9b BAMUM LETTER PHASE-B LOM NTEUM ++<U0001685C> /xf0/x96/xa1/x9c BAMUM LETTER PHASE-B MBA MAELEE ++<U0001685D> /xf0/x96/xa1/x9d BAMUM LETTER PHASE-B KIEEM ++<U0001685E> /xf0/x96/xa1/x9e BAMUM LETTER PHASE-B YEURAE ++<U0001685F> /xf0/x96/xa1/x9f BAMUM LETTER PHASE-B MBAARAE ++<U00016860> /xf0/x96/xa1/xa0 BAMUM LETTER PHASE-B KAM ++<U00016861> /xf0/x96/xa1/xa1 BAMUM LETTER PHASE-B PEESHI ++<U00016862> /xf0/x96/xa1/xa2 BAMUM LETTER PHASE-B YAFU LEERAEWA ++<U00016863> /xf0/x96/xa1/xa3 BAMUM LETTER PHASE-B LAM NSHUT NYAM ++<U00016864> /xf0/x96/xa1/xa4 BAMUM LETTER PHASE-B NTIEE SHEUOQ ++<U00016865> /xf0/x96/xa1/xa5 BAMUM LETTER PHASE-B NDU NJAA ++<U00016866> /xf0/x96/xa1/xa6 BAMUM LETTER PHASE-B GHEUGHEUAEM ++<U00016867> /xf0/x96/xa1/xa7 BAMUM LETTER PHASE-B PIT ++<U00016868> /xf0/x96/xa1/xa8 BAMUM LETTER PHASE-B TU NSIEE ++<U00016869> /xf0/x96/xa1/xa9 BAMUM LETTER PHASE-B SHET NJAQ ++<U0001686A> /xf0/x96/xa1/xaa BAMUM LETTER PHASE-B SHEUAEQTU ++<U0001686B> /xf0/x96/xa1/xab BAMUM LETTER PHASE-B MFON TEUAEQ ++<U0001686C> /xf0/x96/xa1/xac BAMUM LETTER PHASE-B MBIT MBAAKET ++<U0001686D> /xf0/x96/xa1/xad BAMUM LETTER PHASE-B NYI NTEUM ++<U0001686E> /xf0/x96/xa1/xae BAMUM LETTER PHASE-B KEUPUQ ++<U0001686F> /xf0/x96/xa1/xaf BAMUM LETTER PHASE-B GHEUGHEN ++<U00016870> /xf0/x96/xa1/xb0 BAMUM LETTER PHASE-B KEUYEUX ++<U00016871> /xf0/x96/xa1/xb1 BAMUM LETTER PHASE-B LAANAE ++<U00016872> /xf0/x96/xa1/xb2 BAMUM LETTER PHASE-B PARUM ++<U00016873> /xf0/x96/xa1/xb3 BAMUM LETTER PHASE-B VEUM ++<U00016874> /xf0/x96/xa1/xb4 BAMUM LETTER PHASE-B NGKINDI MVOP ++<U00016875> /xf0/x96/xa1/xb5 BAMUM LETTER PHASE-B NGGEU MBU ++<U00016876> /xf0/x96/xa1/xb6 BAMUM LETTER PHASE-B WUAET ++<U00016877> /xf0/x96/xa1/xb7 BAMUM LETTER PHASE-B SAKEUAE ++<U00016878> /xf0/x96/xa1/xb8 BAMUM LETTER PHASE-B TAAM ++<U00016879> /xf0/x96/xa1/xb9 BAMUM LETTER PHASE-B MEUQ ++<U0001687A> /xf0/x96/xa1/xba BAMUM LETTER PHASE-B NGGUOQ ++<U0001687B> /xf0/x96/xa1/xbb BAMUM LETTER PHASE-B NGGUOQ LARGE ++<U0001687C> /xf0/x96/xa1/xbc BAMUM LETTER PHASE-B MFIYAQ ++<U0001687D> /xf0/x96/xa1/xbd BAMUM LETTER PHASE-B SUE ++<U0001687E> /xf0/x96/xa1/xbe BAMUM LETTER PHASE-B MBEURI ++<U0001687F> /xf0/x96/xa1/xbf BAMUM LETTER PHASE-B MONTIEEN ++<U00016880> /xf0/x96/xa2/x80 BAMUM LETTER PHASE-B NYAEMAE ++<U00016881> /xf0/x96/xa2/x81 BAMUM LETTER PHASE-B PUNGAAM ++<U00016882> /xf0/x96/xa2/x82 BAMUM LETTER PHASE-B MEUT NGGEET ++<U00016883> /xf0/x96/xa2/x83 BAMUM LETTER PHASE-B FEUX ++<U00016884> /xf0/x96/xa2/x84 BAMUM LETTER PHASE-B MBUOQ ++<U00016885> /xf0/x96/xa2/x85 BAMUM LETTER PHASE-B FEE ++<U00016886> /xf0/x96/xa2/x86 BAMUM LETTER PHASE-B KEUAEM ++<U00016887> /xf0/x96/xa2/x87 BAMUM LETTER PHASE-B MA NJEUAENA ++<U00016888> /xf0/x96/xa2/x88 BAMUM LETTER PHASE-B MA NJUQA ++<U00016889> /xf0/x96/xa2/x89 BAMUM LETTER PHASE-B LET ++<U0001688A> /xf0/x96/xa2/x8a BAMUM LETTER PHASE-B NGGAAM ++<U0001688B> /xf0/x96/xa2/x8b BAMUM LETTER PHASE-B NSEN ++<U0001688C> /xf0/x96/xa2/x8c BAMUM LETTER PHASE-B MA ++<U0001688D> /xf0/x96/xa2/x8d BAMUM LETTER PHASE-B KIQ ++<U0001688E> /xf0/x96/xa2/x8e BAMUM LETTER PHASE-B NGOM ++<U0001688F> /xf0/x96/xa2/x8f BAMUM LETTER PHASE-C NGKUE MAEMBA ++<U00016890> /xf0/x96/xa2/x90 BAMUM LETTER PHASE-C NZA ++<U00016891> /xf0/x96/xa2/x91 BAMUM LETTER PHASE-C YUM ++<U00016892> /xf0/x96/xa2/x92 BAMUM LETTER PHASE-C WANGKUOQ ++<U00016893> /xf0/x96/xa2/x93 BAMUM LETTER PHASE-C NGGEN ++<U00016894> /xf0/x96/xa2/x94 BAMUM LETTER PHASE-C NDEUAEREE ++<U00016895> /xf0/x96/xa2/x95 BAMUM LETTER PHASE-C NGKAQ ++<U00016896> /xf0/x96/xa2/x96 BAMUM LETTER PHASE-C GHARAE ++<U00016897> /xf0/x96/xa2/x97 BAMUM LETTER PHASE-C MBEEKEET ++<U00016898> /xf0/x96/xa2/x98 BAMUM LETTER PHASE-C GBAYI ++<U00016899> /xf0/x96/xa2/x99 BAMUM LETTER PHASE-C NYIR MKPARAQ MEUN ++<U0001689A> /xf0/x96/xa2/x9a BAMUM LETTER PHASE-C NTU MBIT ++<U0001689B> /xf0/x96/xa2/x9b BAMUM LETTER PHASE-C MBEUM ++<U0001689C> /xf0/x96/xa2/x9c BAMUM LETTER PHASE-C PIRIEEN ++<U0001689D> /xf0/x96/xa2/x9d BAMUM LETTER PHASE-C NDOMBU ++<U0001689E> /xf0/x96/xa2/x9e BAMUM LETTER PHASE-C MBAA CABBAGE-TREE ++<U0001689F> /xf0/x96/xa2/x9f BAMUM LETTER PHASE-C KEUSHEUAEP ++<U000168A0> /xf0/x96/xa2/xa0 BAMUM LETTER PHASE-C GHAP ++<U000168A1> /xf0/x96/xa2/xa1 BAMUM LETTER PHASE-C KEUKAQ ++<U000168A2> /xf0/x96/xa2/xa2 BAMUM LETTER PHASE-C YU MUOMAE ++<U000168A3> /xf0/x96/xa2/xa3 BAMUM LETTER PHASE-C NZEUM ++<U000168A4> /xf0/x96/xa2/xa4 BAMUM LETTER PHASE-C MBUE ++<U000168A5> /xf0/x96/xa2/xa5 BAMUM LETTER PHASE-C NSEUAEN ++<U000168A6> /xf0/x96/xa2/xa6 BAMUM LETTER PHASE-C MBIT ++<U000168A7> /xf0/x96/xa2/xa7 BAMUM LETTER PHASE-C YEUQ ++<U000168A8> /xf0/x96/xa2/xa8 BAMUM LETTER PHASE-C KPARAQ ++<U000168A9> /xf0/x96/xa2/xa9 BAMUM LETTER PHASE-C KAA ++<U000168AA> /xf0/x96/xa2/xaa BAMUM LETTER PHASE-C SEUX ++<U000168AB> /xf0/x96/xa2/xab BAMUM LETTER PHASE-C NDIDA ++<U000168AC> /xf0/x96/xa2/xac BAMUM LETTER PHASE-C TAASHAE ++<U000168AD> /xf0/x96/xa2/xad BAMUM LETTER PHASE-C NJUEQ ++<U000168AE> /xf0/x96/xa2/xae BAMUM LETTER PHASE-C TITA YUE ++<U000168AF> /xf0/x96/xa2/xaf BAMUM LETTER PHASE-C SUAET ++<U000168B0> /xf0/x96/xa2/xb0 BAMUM LETTER PHASE-C NGGUAEN NYAM ++<U000168B1> /xf0/x96/xa2/xb1 BAMUM LETTER PHASE-C VEUX ++<U000168B2> /xf0/x96/xa2/xb2 BAMUM LETTER PHASE-C NANSANAQ ++<U000168B3> /xf0/x96/xa2/xb3 BAMUM LETTER PHASE-C MA KEUAERI ++<U000168B4> /xf0/x96/xa2/xb4 BAMUM LETTER PHASE-C NTAA ++<U000168B5> /xf0/x96/xa2/xb5 BAMUM LETTER PHASE-C NGGUON ++<U000168B6> /xf0/x96/xa2/xb6 BAMUM LETTER PHASE-C LAP ++<U000168B7> /xf0/x96/xa2/xb7 BAMUM LETTER PHASE-C MBIRIEEN ++<U000168B8> /xf0/x96/xa2/xb8 BAMUM LETTER PHASE-C MGBASAQ ++<U000168B9> /xf0/x96/xa2/xb9 BAMUM LETTER PHASE-C NTEUNGBA ++<U000168BA> /xf0/x96/xa2/xba BAMUM LETTER PHASE-C TEUTEUX ++<U000168BB> /xf0/x96/xa2/xbb BAMUM LETTER PHASE-C NGGUM ++<U000168BC> /xf0/x96/xa2/xbc BAMUM LETTER PHASE-C FUE ++<U000168BD> /xf0/x96/xa2/xbd BAMUM LETTER PHASE-C NDEUT ++<U000168BE> /xf0/x96/xa2/xbe BAMUM LETTER PHASE-C NSA ++<U000168BF> /xf0/x96/xa2/xbf BAMUM LETTER PHASE-C NSHAQ ++<U000168C0> /xf0/x96/xa3/x80 BAMUM LETTER PHASE-C BUNG ++<U000168C1> /xf0/x96/xa3/x81 BAMUM LETTER PHASE-C VEUAEPEN ++<U000168C2> /xf0/x96/xa3/x82 BAMUM LETTER PHASE-C MBERAE ++<U000168C3> /xf0/x96/xa3/x83 BAMUM LETTER PHASE-C RU ++<U000168C4> /xf0/x96/xa3/x84 BAMUM LETTER PHASE-C NJAEM ++<U000168C5> /xf0/x96/xa3/x85 BAMUM LETTER PHASE-C LAM ++<U000168C6> /xf0/x96/xa3/x86 BAMUM LETTER PHASE-C TITUAEP ++<U000168C7> /xf0/x96/xa3/x87 BAMUM LETTER PHASE-C NSUOT NGOM ++<U000168C8> /xf0/x96/xa3/x88 BAMUM LETTER PHASE-C NJEEEE ++<U000168C9> /xf0/x96/xa3/x89 BAMUM LETTER PHASE-C KET ++<U000168CA> /xf0/x96/xa3/x8a BAMUM LETTER PHASE-C NGGU ++<U000168CB> /xf0/x96/xa3/x8b BAMUM LETTER PHASE-C MAESI ++<U000168CC> /xf0/x96/xa3/x8c BAMUM LETTER PHASE-C MBUAEM ++<U000168CD> /xf0/x96/xa3/x8d BAMUM LETTER PHASE-C LU ++<U000168CE> /xf0/x96/xa3/x8e BAMUM LETTER PHASE-C KUT ++<U000168CF> /xf0/x96/xa3/x8f BAMUM LETTER PHASE-C NJAM ++<U000168D0> /xf0/x96/xa3/x90 BAMUM LETTER PHASE-C NGOM ++<U000168D1> /xf0/x96/xa3/x91 BAMUM LETTER PHASE-C WUP ++<U000168D2> /xf0/x96/xa3/x92 BAMUM LETTER PHASE-C NGGUEET ++<U000168D3> /xf0/x96/xa3/x93 BAMUM LETTER PHASE-C NSOM ++<U000168D4> /xf0/x96/xa3/x94 BAMUM LETTER PHASE-C NTEN ++<U000168D5> /xf0/x96/xa3/x95 BAMUM LETTER PHASE-C KUOP NKAARAE ++<U000168D6> /xf0/x96/xa3/x96 BAMUM LETTER PHASE-C NSUN ++<U000168D7> /xf0/x96/xa3/x97 BAMUM LETTER PHASE-C NDAM ++<U000168D8> /xf0/x96/xa3/x98 BAMUM LETTER PHASE-C MA NSIEE ++<U000168D9> /xf0/x96/xa3/x99 BAMUM LETTER PHASE-C YAA ++<U000168DA> /xf0/x96/xa3/x9a BAMUM LETTER PHASE-C NDAP ++<U000168DB> /xf0/x96/xa3/x9b BAMUM LETTER PHASE-C SHUEQ ++<U000168DC> /xf0/x96/xa3/x9c BAMUM LETTER PHASE-C SETFON ++<U000168DD> /xf0/x96/xa3/x9d BAMUM LETTER PHASE-C MBI ++<U000168DE> /xf0/x96/xa3/x9e BAMUM LETTER PHASE-C MAEMBA ++<U000168DF> /xf0/x96/xa3/x9f BAMUM LETTER PHASE-C MBANYI ++<U000168E0> /xf0/x96/xa3/xa0 BAMUM LETTER PHASE-C KEUSEUX ++<U000168E1> /xf0/x96/xa3/xa1 BAMUM LETTER PHASE-C MBEUX ++<U000168E2> /xf0/x96/xa3/xa2 BAMUM LETTER PHASE-C KEUM ++<U000168E3> /xf0/x96/xa3/xa3 BAMUM LETTER PHASE-C MBAA PICKET ++<U000168E4> /xf0/x96/xa3/xa4 BAMUM LETTER PHASE-C YUWOQ ++<U000168E5> /xf0/x96/xa3/xa5 BAMUM LETTER PHASE-C NJEUX ++<U000168E6> /xf0/x96/xa3/xa6 BAMUM LETTER PHASE-C MIEE ++<U000168E7> /xf0/x96/xa3/xa7 BAMUM LETTER PHASE-C MUAE ++<U000168E8> /xf0/x96/xa3/xa8 BAMUM LETTER PHASE-C SHIQ ++<U000168E9> /xf0/x96/xa3/xa9 BAMUM LETTER PHASE-C KEN LAW ++<U000168EA> /xf0/x96/xa3/xaa BAMUM LETTER PHASE-C KEN FATIGUE ++<U000168EB> /xf0/x96/xa3/xab BAMUM LETTER PHASE-C NGAQ ++<U000168EC> /xf0/x96/xa3/xac BAMUM LETTER PHASE-C NAQ ++<U000168ED> /xf0/x96/xa3/xad BAMUM LETTER PHASE-C LIQ ++<U000168EE> /xf0/x96/xa3/xae BAMUM LETTER PHASE-C PIN ++<U000168EF> /xf0/x96/xa3/xaf BAMUM LETTER PHASE-C PEN ++<U000168F0> /xf0/x96/xa3/xb0 BAMUM LETTER PHASE-C TET ++<U000168F1> /xf0/x96/xa3/xb1 BAMUM LETTER PHASE-D MBUO ++<U000168F2> /xf0/x96/xa3/xb2 BAMUM LETTER PHASE-D WAP ++<U000168F3> /xf0/x96/xa3/xb3 BAMUM LETTER PHASE-D NJI ++<U000168F4> /xf0/x96/xa3/xb4 BAMUM LETTER PHASE-D MFON ++<U000168F5> /xf0/x96/xa3/xb5 BAMUM LETTER PHASE-D NJIEE ++<U000168F6> /xf0/x96/xa3/xb6 BAMUM LETTER PHASE-D LIEE ++<U000168F7> /xf0/x96/xa3/xb7 BAMUM LETTER PHASE-D NJEUT ++<U000168F8> /xf0/x96/xa3/xb8 BAMUM LETTER PHASE-D NSHEE ++<U000168F9> /xf0/x96/xa3/xb9 BAMUM LETTER PHASE-D NGGAAMAE ++<U000168FA> /xf0/x96/xa3/xba BAMUM LETTER PHASE-D NYAM ++<U000168FB> /xf0/x96/xa3/xbb BAMUM LETTER PHASE-D WUAEN ++<U000168FC> /xf0/x96/xa3/xbc BAMUM LETTER PHASE-D NGKUN ++<U000168FD> /xf0/x96/xa3/xbd BAMUM LETTER PHASE-D SHEE ++<U000168FE> /xf0/x96/xa3/xbe BAMUM LETTER PHASE-D NGKAP ++<U000168FF> /xf0/x96/xa3/xbf BAMUM LETTER PHASE-D KEUAETMEUN ++<U00016900> /xf0/x96/xa4/x80 BAMUM LETTER PHASE-D TEUT ++<U00016901> /xf0/x96/xa4/x81 BAMUM LETTER PHASE-D SHEUAE ++<U00016902> /xf0/x96/xa4/x82 BAMUM LETTER PHASE-D NJAP ++<U00016903> /xf0/x96/xa4/x83 BAMUM LETTER PHASE-D SUE ++<U00016904> /xf0/x96/xa4/x84 BAMUM LETTER PHASE-D KET ++<U00016905> /xf0/x96/xa4/x85 BAMUM LETTER PHASE-D YAEMMAE ++<U00016906> /xf0/x96/xa4/x86 BAMUM LETTER PHASE-D KUOM ++<U00016907> /xf0/x96/xa4/x87 BAMUM LETTER PHASE-D SAP ++<U00016908> /xf0/x96/xa4/x88 BAMUM LETTER PHASE-D MFEUT ++<U00016909> /xf0/x96/xa4/x89 BAMUM LETTER PHASE-D NDEUX ++<U0001690A> /xf0/x96/xa4/x8a BAMUM LETTER PHASE-D MALEERI ++<U0001690B> /xf0/x96/xa4/x8b BAMUM LETTER PHASE-D MEUT ++<U0001690C> /xf0/x96/xa4/x8c BAMUM LETTER PHASE-D SEUAEQ ++<U0001690D> /xf0/x96/xa4/x8d BAMUM LETTER PHASE-D YEN ++<U0001690E> /xf0/x96/xa4/x8e BAMUM LETTER PHASE-D NJEUAEM ++<U0001690F> /xf0/x96/xa4/x8f BAMUM LETTER PHASE-D KEUOT MBUAE ++<U00016910> /xf0/x96/xa4/x90 BAMUM LETTER PHASE-D NGKEURI ++<U00016911> /xf0/x96/xa4/x91 BAMUM LETTER PHASE-D TU ++<U00016912> /xf0/x96/xa4/x92 BAMUM LETTER PHASE-D GHAA ++<U00016913> /xf0/x96/xa4/x93 BAMUM LETTER PHASE-D NGKYEE ++<U00016914> /xf0/x96/xa4/x94 BAMUM LETTER PHASE-D FEUFEUAET ++<U00016915> /xf0/x96/xa4/x95 BAMUM LETTER PHASE-D NDEE ++<U00016916> /xf0/x96/xa4/x96 BAMUM LETTER PHASE-D MGBOFUM ++<U00016917> /xf0/x96/xa4/x97 BAMUM LETTER PHASE-D LEUAEP ++<U00016918> /xf0/x96/xa4/x98 BAMUM LETTER PHASE-D NDON ++<U00016919> /xf0/x96/xa4/x99 BAMUM LETTER PHASE-D MONI ++<U0001691A> /xf0/x96/xa4/x9a BAMUM LETTER PHASE-D MGBEUN ++<U0001691B> /xf0/x96/xa4/x9b BAMUM LETTER PHASE-D PUUT ++<U0001691C> /xf0/x96/xa4/x9c BAMUM LETTER PHASE-D MGBIEE ++<U0001691D> /xf0/x96/xa4/x9d BAMUM LETTER PHASE-D MFO ++<U0001691E> /xf0/x96/xa4/x9e BAMUM LETTER PHASE-D LUM ++<U0001691F> /xf0/x96/xa4/x9f BAMUM LETTER PHASE-D NSIEEP ++<U00016920> /xf0/x96/xa4/xa0 BAMUM LETTER PHASE-D MBAA ++<U00016921> /xf0/x96/xa4/xa1 BAMUM LETTER PHASE-D KWAET ++<U00016922> /xf0/x96/xa4/xa2 BAMUM LETTER PHASE-D NYET ++<U00016923> /xf0/x96/xa4/xa3 BAMUM LETTER PHASE-D TEUAEN ++<U00016924> /xf0/x96/xa4/xa4 BAMUM LETTER PHASE-D SOT ++<U00016925> /xf0/x96/xa4/xa5 BAMUM LETTER PHASE-D YUWOQ ++<U00016926> /xf0/x96/xa4/xa6 BAMUM LETTER PHASE-D KEUM ++<U00016927> /xf0/x96/xa4/xa7 BAMUM LETTER PHASE-D RAEM ++<U00016928> /xf0/x96/xa4/xa8 BAMUM LETTER PHASE-D TEEEE ++<U00016929> /xf0/x96/xa4/xa9 BAMUM LETTER PHASE-D NGKEUAEQ ++<U0001692A> /xf0/x96/xa4/xaa BAMUM LETTER PHASE-D MFEUAE ++<U0001692B> /xf0/x96/xa4/xab BAMUM LETTER PHASE-D NSIEET ++<U0001692C> /xf0/x96/xa4/xac BAMUM LETTER PHASE-D KEUP ++<U0001692D> /xf0/x96/xa4/xad BAMUM LETTER PHASE-D PIP ++<U0001692E> /xf0/x96/xa4/xae BAMUM LETTER PHASE-D PEUTAE ++<U0001692F> /xf0/x96/xa4/xaf BAMUM LETTER PHASE-D NYUE ++<U00016930> /xf0/x96/xa4/xb0 BAMUM LETTER PHASE-D LET ++<U00016931> /xf0/x96/xa4/xb1 BAMUM LETTER PHASE-D NGGAAM ++<U00016932> /xf0/x96/xa4/xb2 BAMUM LETTER PHASE-D MFIEE ++<U00016933> /xf0/x96/xa4/xb3 BAMUM LETTER PHASE-D NGGWAEN ++<U00016934> /xf0/x96/xa4/xb4 BAMUM LETTER PHASE-D YUOM ++<U00016935> /xf0/x96/xa4/xb5 BAMUM LETTER PHASE-D PAP ++<U00016936> /xf0/x96/xa4/xb6 BAMUM LETTER PHASE-D YUOP ++<U00016937> /xf0/x96/xa4/xb7 BAMUM LETTER PHASE-D NDAM ++<U00016938> /xf0/x96/xa4/xb8 BAMUM LETTER PHASE-D NTEUM ++<U00016939> /xf0/x96/xa4/xb9 BAMUM LETTER PHASE-D SUAE ++<U0001693A> /xf0/x96/xa4/xba BAMUM LETTER PHASE-D KUN ++<U0001693B> /xf0/x96/xa4/xbb BAMUM LETTER PHASE-D NGGEUX ++<U0001693C> /xf0/x96/xa4/xbc BAMUM LETTER PHASE-D NGKIEE ++<U0001693D> /xf0/x96/xa4/xbd BAMUM LETTER PHASE-D TUOT ++<U0001693E> /xf0/x96/xa4/xbe BAMUM LETTER PHASE-D MEUN ++<U0001693F> /xf0/x96/xa4/xbf BAMUM LETTER PHASE-D KUQ ++<U00016940> /xf0/x96/xa5/x80 BAMUM LETTER PHASE-D NSUM ++<U00016941> /xf0/x96/xa5/x81 BAMUM LETTER PHASE-D TEUN ++<U00016942> /xf0/x96/xa5/x82 BAMUM LETTER PHASE-D MAENJET ++<U00016943> /xf0/x96/xa5/x83 BAMUM LETTER PHASE-D NGGAP ++<U00016944> /xf0/x96/xa5/x84 BAMUM LETTER PHASE-D LEUM ++<U00016945> /xf0/x96/xa5/x85 BAMUM LETTER PHASE-D NGGUOM ++<U00016946> /xf0/x96/xa5/x86 BAMUM LETTER PHASE-D NSHUT ++<U00016947> /xf0/x96/xa5/x87 BAMUM LETTER PHASE-D NJUEQ ++<U00016948> /xf0/x96/xa5/x88 BAMUM LETTER PHASE-D GHEUAE ++<U00016949> /xf0/x96/xa5/x89 BAMUM LETTER PHASE-D KU ++<U0001694A> /xf0/x96/xa5/x8a BAMUM LETTER PHASE-D REN OLD ++<U0001694B> /xf0/x96/xa5/x8b BAMUM LETTER PHASE-D TAE ++<U0001694C> /xf0/x96/xa5/x8c BAMUM LETTER PHASE-D TOQ ++<U0001694D> /xf0/x96/xa5/x8d BAMUM LETTER PHASE-D NYI ++<U0001694E> /xf0/x96/xa5/x8e BAMUM LETTER PHASE-D RII ++<U0001694F> /xf0/x96/xa5/x8f BAMUM LETTER PHASE-D LEEEE ++<U00016950> /xf0/x96/xa5/x90 BAMUM LETTER PHASE-D MEEEE ++<U00016951> /xf0/x96/xa5/x91 BAMUM LETTER PHASE-D M ++<U00016952> /xf0/x96/xa5/x92 BAMUM LETTER PHASE-D SUU ++<U00016953> /xf0/x96/xa5/x93 BAMUM LETTER PHASE-D MU ++<U00016954> /xf0/x96/xa5/x94 BAMUM LETTER PHASE-D SHII ++<U00016955> /xf0/x96/xa5/x95 BAMUM LETTER PHASE-D SHEUX ++<U00016956> /xf0/x96/xa5/x96 BAMUM LETTER PHASE-D KYEE ++<U00016957> /xf0/x96/xa5/x97 BAMUM LETTER PHASE-D NU ++<U00016958> /xf0/x96/xa5/x98 BAMUM LETTER PHASE-D SHU ++<U00016959> /xf0/x96/xa5/x99 BAMUM LETTER PHASE-D NTEE ++<U0001695A> /xf0/x96/xa5/x9a BAMUM LETTER PHASE-D PEE ++<U0001695B> /xf0/x96/xa5/x9b BAMUM LETTER PHASE-D NI ++<U0001695C> /xf0/x96/xa5/x9c BAMUM LETTER PHASE-D SHOQ ++<U0001695D> /xf0/x96/xa5/x9d BAMUM LETTER PHASE-D PUQ ++<U0001695E> /xf0/x96/xa5/x9e BAMUM LETTER PHASE-D MVOP ++<U0001695F> /xf0/x96/xa5/x9f BAMUM LETTER PHASE-D LOQ ++<U00016960> /xf0/x96/xa5/xa0 BAMUM LETTER PHASE-D REN MUCH ++<U00016961> /xf0/x96/xa5/xa1 BAMUM LETTER PHASE-D TI ++<U00016962> /xf0/x96/xa5/xa2 BAMUM LETTER PHASE-D NTUU ++<U00016963> /xf0/x96/xa5/xa3 BAMUM LETTER PHASE-D MBAA SEVEN ++<U00016964> /xf0/x96/xa5/xa4 BAMUM LETTER PHASE-D SAQ ++<U00016965> /xf0/x96/xa5/xa5 BAMUM LETTER PHASE-D FAA ++<U00016966> /xf0/x96/xa5/xa6 BAMUM LETTER PHASE-E NDAP ++<U00016967> /xf0/x96/xa5/xa7 BAMUM LETTER PHASE-E TOON ++<U00016968> /xf0/x96/xa5/xa8 BAMUM LETTER PHASE-E MBEUM ++<U00016969> /xf0/x96/xa5/xa9 BAMUM LETTER PHASE-E LAP ++<U0001696A> /xf0/x96/xa5/xaa BAMUM LETTER PHASE-E VOM ++<U0001696B> /xf0/x96/xa5/xab BAMUM LETTER PHASE-E LOON ++<U0001696C> /xf0/x96/xa5/xac BAMUM LETTER PHASE-E PAA ++<U0001696D> /xf0/x96/xa5/xad BAMUM LETTER PHASE-E SOM ++<U0001696E> /xf0/x96/xa5/xae BAMUM LETTER PHASE-E RAQ ++<U0001696F> /xf0/x96/xa5/xaf BAMUM LETTER PHASE-E NSHUOP ++<U00016970> /xf0/x96/xa5/xb0 BAMUM LETTER PHASE-E NDUN ++<U00016971> /xf0/x96/xa5/xb1 BAMUM LETTER PHASE-E PUAE ++<U00016972> /xf0/x96/xa5/xb2 BAMUM LETTER PHASE-E TAM ++<U00016973> /xf0/x96/xa5/xb3 BAMUM LETTER PHASE-E NGKA ++<U00016974> /xf0/x96/xa5/xb4 BAMUM LETTER PHASE-E KPEUX ++<U00016975> /xf0/x96/xa5/xb5 BAMUM LETTER PHASE-E WUO ++<U00016976> /xf0/x96/xa5/xb6 BAMUM LETTER PHASE-E SEE ++<U00016977> /xf0/x96/xa5/xb7 BAMUM LETTER PHASE-E NGGEUAET ++<U00016978> /xf0/x96/xa5/xb8 BAMUM LETTER PHASE-E PAAM ++<U00016979> /xf0/x96/xa5/xb9 BAMUM LETTER PHASE-E TOO ++<U0001697A> /xf0/x96/xa5/xba BAMUM LETTER PHASE-E KUOP ++<U0001697B> /xf0/x96/xa5/xbb BAMUM LETTER PHASE-E LOM ++<U0001697C> /xf0/x96/xa5/xbc BAMUM LETTER PHASE-E NSHIEE ++<U0001697D> /xf0/x96/xa5/xbd BAMUM LETTER PHASE-E NGOP ++<U0001697E> /xf0/x96/xa5/xbe BAMUM LETTER PHASE-E MAEM ++<U0001697F> /xf0/x96/xa5/xbf BAMUM LETTER PHASE-E NGKEUX ++<U00016980> /xf0/x96/xa6/x80 BAMUM LETTER PHASE-E NGOQ ++<U00016981> /xf0/x96/xa6/x81 BAMUM LETTER PHASE-E NSHUE ++<U00016982> /xf0/x96/xa6/x82 BAMUM LETTER PHASE-E RIMGBA ++<U00016983> /xf0/x96/xa6/x83 BAMUM LETTER PHASE-E NJEUX ++<U00016984> /xf0/x96/xa6/x84 BAMUM LETTER PHASE-E PEEM ++<U00016985> /xf0/x96/xa6/x85 BAMUM LETTER PHASE-E SAA ++<U00016986> /xf0/x96/xa6/x86 BAMUM LETTER PHASE-E NGGURAE ++<U00016987> /xf0/x96/xa6/x87 BAMUM LETTER PHASE-E MGBA ++<U00016988> /xf0/x96/xa6/x88 BAMUM LETTER PHASE-E GHEUX ++<U00016989> /xf0/x96/xa6/x89 BAMUM LETTER PHASE-E NGKEUAEM ++<U0001698A> /xf0/x96/xa6/x8a BAMUM LETTER PHASE-E NJAEMLI ++<U0001698B> /xf0/x96/xa6/x8b BAMUM LETTER PHASE-E MAP ++<U0001698C> /xf0/x96/xa6/x8c BAMUM LETTER PHASE-E LOOT ++<U0001698D> /xf0/x96/xa6/x8d BAMUM LETTER PHASE-E NGGEEEE ++<U0001698E> /xf0/x96/xa6/x8e BAMUM LETTER PHASE-E NDIQ ++<U0001698F> /xf0/x96/xa6/x8f BAMUM LETTER PHASE-E TAEN NTEUM ++<U00016990> /xf0/x96/xa6/x90 BAMUM LETTER PHASE-E SET ++<U00016991> /xf0/x96/xa6/x91 BAMUM LETTER PHASE-E PUM ++<U00016992> /xf0/x96/xa6/x92 BAMUM LETTER PHASE-E NDAA SOFTNESS ++<U00016993> /xf0/x96/xa6/x93 BAMUM LETTER PHASE-E NGGUAESHAE NYAM ++<U00016994> /xf0/x96/xa6/x94 BAMUM LETTER PHASE-E YIEE ++<U00016995> /xf0/x96/xa6/x95 BAMUM LETTER PHASE-E GHEUN ++<U00016996> /xf0/x96/xa6/x96 BAMUM LETTER PHASE-E TUAE ++<U00016997> /xf0/x96/xa6/x97 BAMUM LETTER PHASE-E YEUAE ++<U00016998> /xf0/x96/xa6/x98 BAMUM LETTER PHASE-E PO ++<U00016999> /xf0/x96/xa6/x99 BAMUM LETTER PHASE-E TUMAE ++<U0001699A> /xf0/x96/xa6/x9a BAMUM LETTER PHASE-E KEUAE ++<U0001699B> /xf0/x96/xa6/x9b BAMUM LETTER PHASE-E SUAEN ++<U0001699C> /xf0/x96/xa6/x9c BAMUM LETTER PHASE-E TEUAEQ ++<U0001699D> /xf0/x96/xa6/x9d BAMUM LETTER PHASE-E VEUAE ++<U0001699E> /xf0/x96/xa6/x9e BAMUM LETTER PHASE-E WEUX ++<U0001699F> /xf0/x96/xa6/x9f BAMUM LETTER PHASE-E LAAM ++<U000169A0> /xf0/x96/xa6/xa0 BAMUM LETTER PHASE-E PU ++<U000169A1> /xf0/x96/xa6/xa1 BAMUM LETTER PHASE-E TAAQ ++<U000169A2> /xf0/x96/xa6/xa2 BAMUM LETTER PHASE-E GHAAMAE ++<U000169A3> /xf0/x96/xa6/xa3 BAMUM LETTER PHASE-E NGEUREUT ++<U000169A4> /xf0/x96/xa6/xa4 BAMUM LETTER PHASE-E SHEUAEQ ++<U000169A5> /xf0/x96/xa6/xa5 BAMUM LETTER PHASE-E MGBEN ++<U000169A6> /xf0/x96/xa6/xa6 BAMUM LETTER PHASE-E MBEE ++<U000169A7> /xf0/x96/xa6/xa7 BAMUM LETTER PHASE-E NZAQ ++<U000169A8> /xf0/x96/xa6/xa8 BAMUM LETTER PHASE-E NKOM ++<U000169A9> /xf0/x96/xa6/xa9 BAMUM LETTER PHASE-E GBET ++<U000169AA> /xf0/x96/xa6/xaa BAMUM LETTER PHASE-E TUM ++<U000169AB> /xf0/x96/xa6/xab BAMUM LETTER PHASE-E KUET ++<U000169AC> /xf0/x96/xa6/xac BAMUM LETTER PHASE-E YAP ++<U000169AD> /xf0/x96/xa6/xad BAMUM LETTER PHASE-E NYI CLEAVER ++<U000169AE> /xf0/x96/xa6/xae BAMUM LETTER PHASE-E YIT ++<U000169AF> /xf0/x96/xa6/xaf BAMUM LETTER PHASE-E MFEUQ ++<U000169B0> /xf0/x96/xa6/xb0 BAMUM LETTER PHASE-E NDIAQ ++<U000169B1> /xf0/x96/xa6/xb1 BAMUM LETTER PHASE-E PIEEQ ++<U000169B2> /xf0/x96/xa6/xb2 BAMUM LETTER PHASE-E YUEQ ++<U000169B3> /xf0/x96/xa6/xb3 BAMUM LETTER PHASE-E LEUAEM ++<U000169B4> /xf0/x96/xa6/xb4 BAMUM LETTER PHASE-E FUE ++<U000169B5> /xf0/x96/xa6/xb5 BAMUM LETTER PHASE-E GBEUX ++<U000169B6> /xf0/x96/xa6/xb6 BAMUM LETTER PHASE-E NGKUP ++<U000169B7> /xf0/x96/xa6/xb7 BAMUM LETTER PHASE-E KET ++<U000169B8> /xf0/x96/xa6/xb8 BAMUM LETTER PHASE-E MAE ++<U000169B9> /xf0/x96/xa6/xb9 BAMUM LETTER PHASE-E NGKAAMI ++<U000169BA> /xf0/x96/xa6/xba BAMUM LETTER PHASE-E GHET ++<U000169BB> /xf0/x96/xa6/xbb BAMUM LETTER PHASE-E FA ++<U000169BC> /xf0/x96/xa6/xbc BAMUM LETTER PHASE-E NTUM ++<U000169BD> /xf0/x96/xa6/xbd BAMUM LETTER PHASE-E PEUT ++<U000169BE> /xf0/x96/xa6/xbe BAMUM LETTER PHASE-E YEUM ++<U000169BF> /xf0/x96/xa6/xbf BAMUM LETTER PHASE-E NGGEUAE ++<U000169C0> /xf0/x96/xa7/x80 BAMUM LETTER PHASE-E NYI BETWEEN ++<U000169C1> /xf0/x96/xa7/x81 BAMUM LETTER PHASE-E NZUQ ++<U000169C2> /xf0/x96/xa7/x82 BAMUM LETTER PHASE-E POON ++<U000169C3> /xf0/x96/xa7/x83 BAMUM LETTER PHASE-E MIEE ++<U000169C4> /xf0/x96/xa7/x84 BAMUM LETTER PHASE-E FUET ++<U000169C5> /xf0/x96/xa7/x85 BAMUM LETTER PHASE-E NAE ++<U000169C6> /xf0/x96/xa7/x86 BAMUM LETTER PHASE-E MUAE ++<U000169C7> /xf0/x96/xa7/x87 BAMUM LETTER PHASE-E GHEUAE ++<U000169C8> /xf0/x96/xa7/x88 BAMUM LETTER PHASE-E FU I ++<U000169C9> /xf0/x96/xa7/x89 BAMUM LETTER PHASE-E MVI ++<U000169CA> /xf0/x96/xa7/x8a BAMUM LETTER PHASE-E PUAQ ++<U000169CB> /xf0/x96/xa7/x8b BAMUM LETTER PHASE-E NGKUM ++<U000169CC> /xf0/x96/xa7/x8c BAMUM LETTER PHASE-E KUT ++<U000169CD> /xf0/x96/xa7/x8d BAMUM LETTER PHASE-E PIET ++<U000169CE> /xf0/x96/xa7/x8e BAMUM LETTER PHASE-E NTAP ++<U000169CF> /xf0/x96/xa7/x8f BAMUM LETTER PHASE-E YEUAET ++<U000169D0> /xf0/x96/xa7/x90 BAMUM LETTER PHASE-E NGGUP ++<U000169D1> /xf0/x96/xa7/x91 BAMUM LETTER PHASE-E PA PEOPLE ++<U000169D2> /xf0/x96/xa7/x92 BAMUM LETTER PHASE-E FU CALL ++<U000169D3> /xf0/x96/xa7/x93 BAMUM LETTER PHASE-E FOM ++<U000169D4> /xf0/x96/xa7/x94 BAMUM LETTER PHASE-E NJEE ++<U000169D5> /xf0/x96/xa7/x95 BAMUM LETTER PHASE-E A ++<U000169D6> /xf0/x96/xa7/x96 BAMUM LETTER PHASE-E TOQ ++<U000169D7> /xf0/x96/xa7/x97 BAMUM LETTER PHASE-E O ++<U000169D8> /xf0/x96/xa7/x98 BAMUM LETTER PHASE-E I ++<U000169D9> /xf0/x96/xa7/x99 BAMUM LETTER PHASE-E LAQ ++<U000169DA> /xf0/x96/xa7/x9a BAMUM LETTER PHASE-E PA PLURAL ++<U000169DB> /xf0/x96/xa7/x9b BAMUM LETTER PHASE-E TAA ++<U000169DC> /xf0/x96/xa7/x9c BAMUM LETTER PHASE-E TAQ ++<U000169DD> /xf0/x96/xa7/x9d BAMUM LETTER PHASE-E NDAA MY HOUSE ++<U000169DE> /xf0/x96/xa7/x9e BAMUM LETTER PHASE-E SHIQ ++<U000169DF> /xf0/x96/xa7/x9f BAMUM LETTER PHASE-E YEUX ++<U000169E0> /xf0/x96/xa7/xa0 BAMUM LETTER PHASE-E NGUAE ++<U000169E1> /xf0/x96/xa7/xa1 BAMUM LETTER PHASE-E YUAEN ++<U000169E2> /xf0/x96/xa7/xa2 BAMUM LETTER PHASE-E YOQ SWIMMING ++<U000169E3> /xf0/x96/xa7/xa3 BAMUM LETTER PHASE-E YOQ COVER ++<U000169E4> /xf0/x96/xa7/xa4 BAMUM LETTER PHASE-E YUQ ++<U000169E5> /xf0/x96/xa7/xa5 BAMUM LETTER PHASE-E YUN ++<U000169E6> /xf0/x96/xa7/xa6 BAMUM LETTER PHASE-E KEUX ++<U000169E7> /xf0/x96/xa7/xa7 BAMUM LETTER PHASE-E PEUX ++<U000169E8> /xf0/x96/xa7/xa8 BAMUM LETTER PHASE-E NJEE EPOCH ++<U000169E9> /xf0/x96/xa7/xa9 BAMUM LETTER PHASE-E PUE ++<U000169EA> /xf0/x96/xa7/xaa BAMUM LETTER PHASE-E WUE ++<U000169EB> /xf0/x96/xa7/xab BAMUM LETTER PHASE-E FEE ++<U000169EC> /xf0/x96/xa7/xac BAMUM LETTER PHASE-E VEE ++<U000169ED> /xf0/x96/xa7/xad BAMUM LETTER PHASE-E LU ++<U000169EE> /xf0/x96/xa7/xae BAMUM LETTER PHASE-E MI ++<U000169EF> /xf0/x96/xa7/xaf BAMUM LETTER PHASE-E REUX ++<U000169F0> /xf0/x96/xa7/xb0 BAMUM LETTER PHASE-E RAE ++<U000169F1> /xf0/x96/xa7/xb1 BAMUM LETTER PHASE-E NGUAET ++<U000169F2> /xf0/x96/xa7/xb2 BAMUM LETTER PHASE-E NGA ++<U000169F3> /xf0/x96/xa7/xb3 BAMUM LETTER PHASE-E SHO ++<U000169F4> /xf0/x96/xa7/xb4 BAMUM LETTER PHASE-E SHOQ ++<U000169F5> /xf0/x96/xa7/xb5 BAMUM LETTER PHASE-E FU REMEDY ++<U000169F6> /xf0/x96/xa7/xb6 BAMUM LETTER PHASE-E NA ++<U000169F7> /xf0/x96/xa7/xb7 BAMUM LETTER PHASE-E PI ++<U000169F8> /xf0/x96/xa7/xb8 BAMUM LETTER PHASE-E LOQ ++<U000169F9> /xf0/x96/xa7/xb9 BAMUM LETTER PHASE-E KO ++<U000169FA> /xf0/x96/xa7/xba BAMUM LETTER PHASE-E MEN ++<U000169FB> /xf0/x96/xa7/xbb BAMUM LETTER PHASE-E MA ++<U000169FC> /xf0/x96/xa7/xbc BAMUM LETTER PHASE-E MAQ ++<U000169FD> /xf0/x96/xa7/xbd BAMUM LETTER PHASE-E TEU ++<U000169FE> /xf0/x96/xa7/xbe BAMUM LETTER PHASE-E KI ++<U000169FF> /xf0/x96/xa7/xbf BAMUM LETTER PHASE-E MON ++<U00016A00> /xf0/x96/xa8/x80 BAMUM LETTER PHASE-E TEN ++<U00016A01> /xf0/x96/xa8/x81 BAMUM LETTER PHASE-E FAQ ++<U00016A02> /xf0/x96/xa8/x82 BAMUM LETTER PHASE-E GHOM ++<U00016A03> /xf0/x96/xa8/x83 BAMUM LETTER PHASE-F KA ++<U00016A04> /xf0/x96/xa8/x84 BAMUM LETTER PHASE-F U ++<U00016A05> /xf0/x96/xa8/x85 BAMUM LETTER PHASE-F KU ++<U00016A06> /xf0/x96/xa8/x86 BAMUM LETTER PHASE-F EE ++<U00016A07> /xf0/x96/xa8/x87 BAMUM LETTER PHASE-F REE ++<U00016A08> /xf0/x96/xa8/x88 BAMUM LETTER PHASE-F TAE ++<U00016A09> /xf0/x96/xa8/x89 BAMUM LETTER PHASE-F NYI ++<U00016A0A> /xf0/x96/xa8/x8a BAMUM LETTER PHASE-F LA ++<U00016A0B> /xf0/x96/xa8/x8b BAMUM LETTER PHASE-F RII ++<U00016A0C> /xf0/x96/xa8/x8c BAMUM LETTER PHASE-F RIEE ++<U00016A0D> /xf0/x96/xa8/x8d BAMUM LETTER PHASE-F MEEEE ++<U00016A0E> /xf0/x96/xa8/x8e BAMUM LETTER PHASE-F TAA ++<U00016A0F> /xf0/x96/xa8/x8f BAMUM LETTER PHASE-F NDAA ++<U00016A10> /xf0/x96/xa8/x90 BAMUM LETTER PHASE-F NJAEM ++<U00016A11> /xf0/x96/xa8/x91 BAMUM LETTER PHASE-F M ++<U00016A12> /xf0/x96/xa8/x92 BAMUM LETTER PHASE-F SUU ++<U00016A13> /xf0/x96/xa8/x93 BAMUM LETTER PHASE-F SHII ++<U00016A14> /xf0/x96/xa8/x94 BAMUM LETTER PHASE-F SI ++<U00016A15> /xf0/x96/xa8/x95 BAMUM LETTER PHASE-F SEUX ++<U00016A16> /xf0/x96/xa8/x96 BAMUM LETTER PHASE-F KYEE ++<U00016A17> /xf0/x96/xa8/x97 BAMUM LETTER PHASE-F KET ++<U00016A18> /xf0/x96/xa8/x98 BAMUM LETTER PHASE-F NUAE ++<U00016A19> /xf0/x96/xa8/x99 BAMUM LETTER PHASE-F NU ++<U00016A1A> /xf0/x96/xa8/x9a BAMUM LETTER PHASE-F NJUAE ++<U00016A1B> /xf0/x96/xa8/x9b BAMUM LETTER PHASE-F YOQ ++<U00016A1C> /xf0/x96/xa8/x9c BAMUM LETTER PHASE-F SHU ++<U00016A1D> /xf0/x96/xa8/x9d BAMUM LETTER PHASE-F YA ++<U00016A1E> /xf0/x96/xa8/x9e BAMUM LETTER PHASE-F NSHA ++<U00016A1F> /xf0/x96/xa8/x9f BAMUM LETTER PHASE-F PEUX ++<U00016A20> /xf0/x96/xa8/xa0 BAMUM LETTER PHASE-F NTEE ++<U00016A21> /xf0/x96/xa8/xa1 BAMUM LETTER PHASE-F WUE ++<U00016A22> /xf0/x96/xa8/xa2 BAMUM LETTER PHASE-F PEE ++<U00016A23> /xf0/x96/xa8/xa3 BAMUM LETTER PHASE-F RU ++<U00016A24> /xf0/x96/xa8/xa4 BAMUM LETTER PHASE-F NI ++<U00016A25> /xf0/x96/xa8/xa5 BAMUM LETTER PHASE-F REUX ++<U00016A26> /xf0/x96/xa8/xa6 BAMUM LETTER PHASE-F KEN ++<U00016A27> /xf0/x96/xa8/xa7 BAMUM LETTER PHASE-F NGKWAEN ++<U00016A28> /xf0/x96/xa8/xa8 BAMUM LETTER PHASE-F NGGA ++<U00016A29> /xf0/x96/xa8/xa9 BAMUM LETTER PHASE-F SHO ++<U00016A2A> /xf0/x96/xa8/xaa BAMUM LETTER PHASE-F PUAE ++<U00016A2B> /xf0/x96/xa8/xab BAMUM LETTER PHASE-F FOM ++<U00016A2C> /xf0/x96/xa8/xac BAMUM LETTER PHASE-F WA ++<U00016A2D> /xf0/x96/xa8/xad BAMUM LETTER PHASE-F LI ++<U00016A2E> /xf0/x96/xa8/xae BAMUM LETTER PHASE-F LOQ ++<U00016A2F> /xf0/x96/xa8/xaf BAMUM LETTER PHASE-F KO ++<U00016A30> /xf0/x96/xa8/xb0 BAMUM LETTER PHASE-F MBEN ++<U00016A31> /xf0/x96/xa8/xb1 BAMUM LETTER PHASE-F REN ++<U00016A32> /xf0/x96/xa8/xb2 BAMUM LETTER PHASE-F MA ++<U00016A33> /xf0/x96/xa8/xb3 BAMUM LETTER PHASE-F MO ++<U00016A34> /xf0/x96/xa8/xb4 BAMUM LETTER PHASE-F MBAA ++<U00016A35> /xf0/x96/xa8/xb5 BAMUM LETTER PHASE-F TET ++<U00016A36> /xf0/x96/xa8/xb6 BAMUM LETTER PHASE-F KPA ++<U00016A37> /xf0/x96/xa8/xb7 BAMUM LETTER PHASE-F SAMBA ++<U00016A38> /xf0/x96/xa8/xb8 BAMUM LETTER PHASE-F VUEQ ++<U0001B000> /xf0/x9b/x80/x80 KATAKANA LETTER ARCHAIC E ++<U0001B001> /xf0/x9b/x80/x81 HIRAGANA LETTER ARCHAIC YE + <U0001D000> /xf0/x9d/x80/x80 BYZANTINE MUSICAL SYMBOL PSILI + <U0001D001> /xf0/x9d/x80/x81 BYZANTINE MUSICAL SYMBOL DASEIA + <U0001D002> /xf0/x9d/x80/x82 BYZANTINE MUSICAL SYMBOL PERISPOMENI +@@ -30151,6 +33445,1091 @@ CHARMAP + <U0001F091> /xf0/x9f/x82/x91 DOMINO TILE VERTICAL-06-04 + <U0001F092> /xf0/x9f/x82/x92 DOMINO TILE VERTICAL-06-05 + <U0001F093> /xf0/x9f/x82/x93 DOMINO TILE VERTICAL-06-06 ++<U0001F0A0> /xf0/x9f/x82/xa0 PLAYING CARD BACK ++<U0001F0A1> /xf0/x9f/x82/xa1 PLAYING CARD ACE OF SPADES ++<U0001F0A2> /xf0/x9f/x82/xa2 PLAYING CARD TWO OF SPADES ++<U0001F0A3> /xf0/x9f/x82/xa3 PLAYING CARD THREE OF SPADES ++<U0001F0A4> /xf0/x9f/x82/xa4 PLAYING CARD FOUR OF SPADES ++<U0001F0A5> /xf0/x9f/x82/xa5 PLAYING CARD FIVE OF SPADES ++<U0001F0A6> /xf0/x9f/x82/xa6 PLAYING CARD SIX OF SPADES ++<U0001F0A7> /xf0/x9f/x82/xa7 PLAYING CARD SEVEN OF SPADES ++<U0001F0A8> /xf0/x9f/x82/xa8 PLAYING CARD EIGHT OF SPADES ++<U0001F0A9> /xf0/x9f/x82/xa9 PLAYING CARD NINE OF SPADES ++<U0001F0AA> /xf0/x9f/x82/xaa PLAYING CARD TEN OF SPADES ++<U0001F0AB> /xf0/x9f/x82/xab PLAYING CARD JACK OF SPADES ++<U0001F0AC> /xf0/x9f/x82/xac PLAYING CARD KNIGHT OF SPADES ++<U0001F0AD> /xf0/x9f/x82/xad PLAYING CARD QUEEN OF SPADES ++<U0001F0AE> /xf0/x9f/x82/xae PLAYING CARD KING OF SPADES ++<U0001F0B1> /xf0/x9f/x82/xb1 PLAYING CARD ACE OF HEARTS ++<U0001F0B2> /xf0/x9f/x82/xb2 PLAYING CARD TWO OF HEARTS ++<U0001F0B3> /xf0/x9f/x82/xb3 PLAYING CARD THREE OF HEARTS ++<U0001F0B4> /xf0/x9f/x82/xb4 PLAYING CARD FOUR OF HEARTS ++<U0001F0B5> /xf0/x9f/x82/xb5 PLAYING CARD FIVE OF HEARTS ++<U0001F0B6> /xf0/x9f/x82/xb6 PLAYING CARD SIX OF HEARTS ++<U0001F0B7> /xf0/x9f/x82/xb7 PLAYING CARD SEVEN OF HEARTS ++<U0001F0B8> /xf0/x9f/x82/xb8 PLAYING CARD EIGHT OF HEARTS ++<U0001F0B9> /xf0/x9f/x82/xb9 PLAYING CARD NINE OF HEARTS ++<U0001F0BA> /xf0/x9f/x82/xba PLAYING CARD TEN OF HEARTS ++<U0001F0BB> /xf0/x9f/x82/xbb PLAYING CARD JACK OF HEARTS ++<U0001F0BC> /xf0/x9f/x82/xbc PLAYING CARD KNIGHT OF HEARTS ++<U0001F0BD> /xf0/x9f/x82/xbd PLAYING CARD QUEEN OF HEARTS ++<U0001F0BE> /xf0/x9f/x82/xbe PLAYING CARD KING OF HEARTS ++<U0001F0C1> /xf0/x9f/x83/x81 PLAYING CARD ACE OF DIAMONDS ++<U0001F0C2> /xf0/x9f/x83/x82 PLAYING CARD TWO OF DIAMONDS ++<U0001F0C3> /xf0/x9f/x83/x83 PLAYING CARD THREE OF DIAMONDS ++<U0001F0C4> /xf0/x9f/x83/x84 PLAYING CARD FOUR OF DIAMONDS ++<U0001F0C5> /xf0/x9f/x83/x85 PLAYING CARD FIVE OF DIAMONDS ++<U0001F0C6> /xf0/x9f/x83/x86 PLAYING CARD SIX OF DIAMONDS ++<U0001F0C7> /xf0/x9f/x83/x87 PLAYING CARD SEVEN OF DIAMONDS ++<U0001F0C8> /xf0/x9f/x83/x88 PLAYING CARD EIGHT OF DIAMONDS ++<U0001F0C9> /xf0/x9f/x83/x89 PLAYING CARD NINE OF DIAMONDS ++<U0001F0CA> /xf0/x9f/x83/x8a PLAYING CARD TEN OF DIAMONDS ++<U0001F0CB> /xf0/x9f/x83/x8b PLAYING CARD JACK OF DIAMONDS ++<U0001F0CC> /xf0/x9f/x83/x8c PLAYING CARD KNIGHT OF DIAMONDS ++<U0001F0CD> /xf0/x9f/x83/x8d PLAYING CARD QUEEN OF DIAMONDS ++<U0001F0CE> /xf0/x9f/x83/x8e PLAYING CARD KING OF DIAMONDS ++<U0001F0CF> /xf0/x9f/x83/x8f PLAYING CARD BLACK JOKER ++<U0001F0D1> /xf0/x9f/x83/x91 PLAYING CARD ACE OF CLUBS ++<U0001F0D2> /xf0/x9f/x83/x92 PLAYING CARD TWO OF CLUBS ++<U0001F0D3> /xf0/x9f/x83/x93 PLAYING CARD THREE OF CLUBS ++<U0001F0D4> /xf0/x9f/x83/x94 PLAYING CARD FOUR OF CLUBS ++<U0001F0D5> /xf0/x9f/x83/x95 PLAYING CARD FIVE OF CLUBS ++<U0001F0D6> /xf0/x9f/x83/x96 PLAYING CARD SIX OF CLUBS ++<U0001F0D7> /xf0/x9f/x83/x97 PLAYING CARD SEVEN OF CLUBS ++<U0001F0D8> /xf0/x9f/x83/x98 PLAYING CARD EIGHT OF CLUBS ++<U0001F0D9> /xf0/x9f/x83/x99 PLAYING CARD NINE OF CLUBS ++<U0001F0DA> /xf0/x9f/x83/x9a PLAYING CARD TEN OF CLUBS ++<U0001F0DB> /xf0/x9f/x83/x9b PLAYING CARD JACK OF CLUBS ++<U0001F0DC> /xf0/x9f/x83/x9c PLAYING CARD KNIGHT OF CLUBS ++<U0001F0DD> /xf0/x9f/x83/x9d PLAYING CARD QUEEN OF CLUBS ++<U0001F0DE> /xf0/x9f/x83/x9e PLAYING CARD KING OF CLUBS ++<U0001F0DF> /xf0/x9f/x83/x9f PLAYING CARD WHITE JOKER ++<U0001F100> /xf0/x9f/x84/x80 DIGIT ZERO FULL STOP ++<U0001F101> /xf0/x9f/x84/x81 DIGIT ZERO COMMA ++<U0001F102> /xf0/x9f/x84/x82 DIGIT ONE COMMA ++<U0001F103> /xf0/x9f/x84/x83 DIGIT TWO COMMA ++<U0001F104> /xf0/x9f/x84/x84 DIGIT THREE COMMA ++<U0001F105> /xf0/x9f/x84/x85 DIGIT FOUR COMMA ++<U0001F106> /xf0/x9f/x84/x86 DIGIT FIVE COMMA ++<U0001F107> /xf0/x9f/x84/x87 DIGIT SIX COMMA ++<U0001F108> /xf0/x9f/x84/x88 DIGIT SEVEN COMMA ++<U0001F109> /xf0/x9f/x84/x89 DIGIT EIGHT COMMA ++<U0001F10A> /xf0/x9f/x84/x8a DIGIT NINE COMMA ++<U0001F110> /xf0/x9f/x84/x90 PARENTHESIZED LATIN CAPITAL LETTER A ++<U0001F111> /xf0/x9f/x84/x91 PARENTHESIZED LATIN CAPITAL LETTER B ++<U0001F112> /xf0/x9f/x84/x92 PARENTHESIZED LATIN CAPITAL LETTER C ++<U0001F113> /xf0/x9f/x84/x93 PARENTHESIZED LATIN CAPITAL LETTER D ++<U0001F114> /xf0/x9f/x84/x94 PARENTHESIZED LATIN CAPITAL LETTER E ++<U0001F115> /xf0/x9f/x84/x95 PARENTHESIZED LATIN CAPITAL LETTER F ++<U0001F116> /xf0/x9f/x84/x96 PARENTHESIZED LATIN CAPITAL LETTER G ++<U0001F117> /xf0/x9f/x84/x97 PARENTHESIZED LATIN CAPITAL LETTER H ++<U0001F118> /xf0/x9f/x84/x98 PARENTHESIZED LATIN CAPITAL LETTER I ++<U0001F119> /xf0/x9f/x84/x99 PARENTHESIZED LATIN CAPITAL LETTER J ++<U0001F11A> /xf0/x9f/x84/x9a PARENTHESIZED LATIN CAPITAL LETTER K ++<U0001F11B> /xf0/x9f/x84/x9b PARENTHESIZED LATIN CAPITAL LETTER L ++<U0001F11C> /xf0/x9f/x84/x9c PARENTHESIZED LATIN CAPITAL LETTER M ++<U0001F11D> /xf0/x9f/x84/x9d PARENTHESIZED LATIN CAPITAL LETTER N ++<U0001F11E> /xf0/x9f/x84/x9e PARENTHESIZED LATIN CAPITAL LETTER O ++<U0001F11F> /xf0/x9f/x84/x9f PARENTHESIZED LATIN CAPITAL LETTER P ++<U0001F120> /xf0/x9f/x84/xa0 PARENTHESIZED LATIN CAPITAL LETTER Q ++<U0001F121> /xf0/x9f/x84/xa1 PARENTHESIZED LATIN CAPITAL LETTER R ++<U0001F122> /xf0/x9f/x84/xa2 PARENTHESIZED LATIN CAPITAL LETTER S ++<U0001F123> /xf0/x9f/x84/xa3 PARENTHESIZED LATIN CAPITAL LETTER T ++<U0001F124> /xf0/x9f/x84/xa4 PARENTHESIZED LATIN CAPITAL LETTER U ++<U0001F125> /xf0/x9f/x84/xa5 PARENTHESIZED LATIN CAPITAL LETTER V ++<U0001F126> /xf0/x9f/x84/xa6 PARENTHESIZED LATIN CAPITAL LETTER W ++<U0001F127> /xf0/x9f/x84/xa7 PARENTHESIZED LATIN CAPITAL LETTER X ++<U0001F128> /xf0/x9f/x84/xa8 PARENTHESIZED LATIN CAPITAL LETTER Y ++<U0001F129> /xf0/x9f/x84/xa9 PARENTHESIZED LATIN CAPITAL LETTER Z ++<U0001F12A> /xf0/x9f/x84/xaa TORTOISE SHELL BRACKETED LATIN CAPITAL LETTER S ++<U0001F12B> /xf0/x9f/x84/xab CIRCLED ITALIC LATIN CAPITAL LETTER C ++<U0001F12C> /xf0/x9f/x84/xac CIRCLED ITALIC LATIN CAPITAL LETTER R ++<U0001F12D> /xf0/x9f/x84/xad CIRCLED CD ++<U0001F12E> /xf0/x9f/x84/xae CIRCLED WZ ++<U0001F130> /xf0/x9f/x84/xb0 SQUARED LATIN CAPITAL LETTER A ++<U0001F131> /xf0/x9f/x84/xb1 SQUARED LATIN CAPITAL LETTER B ++<U0001F132> /xf0/x9f/x84/xb2 SQUARED LATIN CAPITAL LETTER C ++<U0001F133> /xf0/x9f/x84/xb3 SQUARED LATIN CAPITAL LETTER D ++<U0001F134> /xf0/x9f/x84/xb4 SQUARED LATIN CAPITAL LETTER E ++<U0001F135> /xf0/x9f/x84/xb5 SQUARED LATIN CAPITAL LETTER F ++<U0001F136> /xf0/x9f/x84/xb6 SQUARED LATIN CAPITAL LETTER G ++<U0001F137> /xf0/x9f/x84/xb7 SQUARED LATIN CAPITAL LETTER H ++<U0001F138> /xf0/x9f/x84/xb8 SQUARED LATIN CAPITAL LETTER I ++<U0001F139> /xf0/x9f/x84/xb9 SQUARED LATIN CAPITAL LETTER J ++<U0001F13A> /xf0/x9f/x84/xba SQUARED LATIN CAPITAL LETTER K ++<U0001F13B> /xf0/x9f/x84/xbb SQUARED LATIN CAPITAL LETTER L ++<U0001F13C> /xf0/x9f/x84/xbc SQUARED LATIN CAPITAL LETTER M ++<U0001F13D> /xf0/x9f/x84/xbd SQUARED LATIN CAPITAL LETTER N ++<U0001F13E> /xf0/x9f/x84/xbe SQUARED LATIN CAPITAL LETTER O ++<U0001F13F> /xf0/x9f/x84/xbf SQUARED LATIN CAPITAL LETTER P ++<U0001F140> /xf0/x9f/x85/x80 SQUARED LATIN CAPITAL LETTER Q ++<U0001F141> /xf0/x9f/x85/x81 SQUARED LATIN CAPITAL LETTER R ++<U0001F142> /xf0/x9f/x85/x82 SQUARED LATIN CAPITAL LETTER S ++<U0001F143> /xf0/x9f/x85/x83 SQUARED LATIN CAPITAL LETTER T ++<U0001F144> /xf0/x9f/x85/x84 SQUARED LATIN CAPITAL LETTER U ++<U0001F145> /xf0/x9f/x85/x85 SQUARED LATIN CAPITAL LETTER V ++<U0001F146> /xf0/x9f/x85/x86 SQUARED LATIN CAPITAL LETTER W ++<U0001F147> /xf0/x9f/x85/x87 SQUARED LATIN CAPITAL LETTER X ++<U0001F148> /xf0/x9f/x85/x88 SQUARED LATIN CAPITAL LETTER Y ++<U0001F149> /xf0/x9f/x85/x89 SQUARED LATIN CAPITAL LETTER Z ++<U0001F14A> /xf0/x9f/x85/x8a SQUARED HV ++<U0001F14B> /xf0/x9f/x85/x8b SQUARED MV ++<U0001F14C> /xf0/x9f/x85/x8c SQUARED SD ++<U0001F14D> /xf0/x9f/x85/x8d SQUARED SS ++<U0001F14E> /xf0/x9f/x85/x8e SQUARED PPV ++<U0001F14F> /xf0/x9f/x85/x8f SQUARED WC ++<U0001F150> /xf0/x9f/x85/x90 NEGATIVE CIRCLED LATIN CAPITAL LETTER A ++<U0001F151> /xf0/x9f/x85/x91 NEGATIVE CIRCLED LATIN CAPITAL LETTER B ++<U0001F152> /xf0/x9f/x85/x92 NEGATIVE CIRCLED LATIN CAPITAL LETTER C ++<U0001F153> /xf0/x9f/x85/x93 NEGATIVE CIRCLED LATIN CAPITAL LETTER D ++<U0001F154> /xf0/x9f/x85/x94 NEGATIVE CIRCLED LATIN CAPITAL LETTER E ++<U0001F155> /xf0/x9f/x85/x95 NEGATIVE CIRCLED LATIN CAPITAL LETTER F ++<U0001F156> /xf0/x9f/x85/x96 NEGATIVE CIRCLED LATIN CAPITAL LETTER G ++<U0001F157> /xf0/x9f/x85/x97 NEGATIVE CIRCLED LATIN CAPITAL LETTER H ++<U0001F158> /xf0/x9f/x85/x98 NEGATIVE CIRCLED LATIN CAPITAL LETTER I ++<U0001F159> /xf0/x9f/x85/x99 NEGATIVE CIRCLED LATIN CAPITAL LETTER J ++<U0001F15A> /xf0/x9f/x85/x9a NEGATIVE CIRCLED LATIN CAPITAL LETTER K ++<U0001F15B> /xf0/x9f/x85/x9b NEGATIVE CIRCLED LATIN CAPITAL LETTER L ++<U0001F15C> /xf0/x9f/x85/x9c NEGATIVE CIRCLED LATIN CAPITAL LETTER M ++<U0001F15D> /xf0/x9f/x85/x9d NEGATIVE CIRCLED LATIN CAPITAL LETTER N ++<U0001F15E> /xf0/x9f/x85/x9e NEGATIVE CIRCLED LATIN CAPITAL LETTER O ++<U0001F15F> /xf0/x9f/x85/x9f NEGATIVE CIRCLED LATIN CAPITAL LETTER P ++<U0001F160> /xf0/x9f/x85/xa0 NEGATIVE CIRCLED LATIN CAPITAL LETTER Q ++<U0001F161> /xf0/x9f/x85/xa1 NEGATIVE CIRCLED LATIN CAPITAL LETTER R ++<U0001F162> /xf0/x9f/x85/xa2 NEGATIVE CIRCLED LATIN CAPITAL LETTER S ++<U0001F163> /xf0/x9f/x85/xa3 NEGATIVE CIRCLED LATIN CAPITAL LETTER T ++<U0001F164> /xf0/x9f/x85/xa4 NEGATIVE CIRCLED LATIN CAPITAL LETTER U ++<U0001F165> /xf0/x9f/x85/xa5 NEGATIVE CIRCLED LATIN CAPITAL LETTER V ++<U0001F166> /xf0/x9f/x85/xa6 NEGATIVE CIRCLED LATIN CAPITAL LETTER W ++<U0001F167> /xf0/x9f/x85/xa7 NEGATIVE CIRCLED LATIN CAPITAL LETTER X ++<U0001F168> /xf0/x9f/x85/xa8 NEGATIVE CIRCLED LATIN CAPITAL LETTER Y ++<U0001F169> /xf0/x9f/x85/xa9 NEGATIVE CIRCLED LATIN CAPITAL LETTER Z ++<U0001F170> /xf0/x9f/x85/xb0 NEGATIVE SQUARED LATIN CAPITAL LETTER A ++<U0001F171> /xf0/x9f/x85/xb1 NEGATIVE SQUARED LATIN CAPITAL LETTER B ++<U0001F172> /xf0/x9f/x85/xb2 NEGATIVE SQUARED LATIN CAPITAL LETTER C ++<U0001F173> /xf0/x9f/x85/xb3 NEGATIVE SQUARED LATIN CAPITAL LETTER D ++<U0001F174> /xf0/x9f/x85/xb4 NEGATIVE SQUARED LATIN CAPITAL LETTER E ++<U0001F175> /xf0/x9f/x85/xb5 NEGATIVE SQUARED LATIN CAPITAL LETTER F ++<U0001F176> /xf0/x9f/x85/xb6 NEGATIVE SQUARED LATIN CAPITAL LETTER G ++<U0001F177> /xf0/x9f/x85/xb7 NEGATIVE SQUARED LATIN CAPITAL LETTER H ++<U0001F178> /xf0/x9f/x85/xb8 NEGATIVE SQUARED LATIN CAPITAL LETTER I ++<U0001F179> /xf0/x9f/x85/xb9 NEGATIVE SQUARED LATIN CAPITAL LETTER J ++<U0001F17A> /xf0/x9f/x85/xba NEGATIVE SQUARED LATIN CAPITAL LETTER K ++<U0001F17B> /xf0/x9f/x85/xbb NEGATIVE SQUARED LATIN CAPITAL LETTER L ++<U0001F17C> /xf0/x9f/x85/xbc NEGATIVE SQUARED LATIN CAPITAL LETTER M ++<U0001F17D> /xf0/x9f/x85/xbd NEGATIVE SQUARED LATIN CAPITAL LETTER N ++<U0001F17E> /xf0/x9f/x85/xbe NEGATIVE SQUARED LATIN CAPITAL LETTER O ++<U0001F17F> /xf0/x9f/x85/xbf NEGATIVE SQUARED LATIN CAPITAL LETTER P ++<U0001F180> /xf0/x9f/x86/x80 NEGATIVE SQUARED LATIN CAPITAL LETTER Q ++<U0001F181> /xf0/x9f/x86/x81 NEGATIVE SQUARED LATIN CAPITAL LETTER R ++<U0001F182> /xf0/x9f/x86/x82 NEGATIVE SQUARED LATIN CAPITAL LETTER S ++<U0001F183> /xf0/x9f/x86/x83 NEGATIVE SQUARED LATIN CAPITAL LETTER T ++<U0001F184> /xf0/x9f/x86/x84 NEGATIVE SQUARED LATIN CAPITAL LETTER U ++<U0001F185> /xf0/x9f/x86/x85 NEGATIVE SQUARED LATIN CAPITAL LETTER V ++<U0001F186> /xf0/x9f/x86/x86 NEGATIVE SQUARED LATIN CAPITAL LETTER W ++<U0001F187> /xf0/x9f/x86/x87 NEGATIVE SQUARED LATIN CAPITAL LETTER X ++<U0001F188> /xf0/x9f/x86/x88 NEGATIVE SQUARED LATIN CAPITAL LETTER Y ++<U0001F189> /xf0/x9f/x86/x89 NEGATIVE SQUARED LATIN CAPITAL LETTER Z ++<U0001F18A> /xf0/x9f/x86/x8a CROSSED NEGATIVE SQUARED LATIN CAPITAL LETTER P ++<U0001F18B> /xf0/x9f/x86/x8b NEGATIVE SQUARED IC ++<U0001F18C> /xf0/x9f/x86/x8c NEGATIVE SQUARED PA ++<U0001F18D> /xf0/x9f/x86/x8d NEGATIVE SQUARED SA ++<U0001F18E> /xf0/x9f/x86/x8e NEGATIVE SQUARED AB ++<U0001F18F> /xf0/x9f/x86/x8f NEGATIVE SQUARED WC ++<U0001F190> /xf0/x9f/x86/x90 SQUARE DJ ++<U0001F191> /xf0/x9f/x86/x91 SQUARED CL ++<U0001F192> /xf0/x9f/x86/x92 SQUARED COOL ++<U0001F193> /xf0/x9f/x86/x93 SQUARED FREE ++<U0001F194> /xf0/x9f/x86/x94 SQUARED ID ++<U0001F195> /xf0/x9f/x86/x95 SQUARED NEW ++<U0001F196> /xf0/x9f/x86/x96 SQUARED NG ++<U0001F197> /xf0/x9f/x86/x97 SQUARED OK ++<U0001F198> /xf0/x9f/x86/x98 SQUARED SOS ++<U0001F199> /xf0/x9f/x86/x99 SQUARED UP WITH EXCLAMATION MARK ++<U0001F19A> /xf0/x9f/x86/x9a SQUARED VS ++<U0001F1E6> /xf0/x9f/x87/xa6 REGIONAL INDICATOR SYMBOL LETTER A ++<U0001F1E7> /xf0/x9f/x87/xa7 REGIONAL INDICATOR SYMBOL LETTER B ++<U0001F1E8> /xf0/x9f/x87/xa8 REGIONAL INDICATOR SYMBOL LETTER C ++<U0001F1E9> /xf0/x9f/x87/xa9 REGIONAL INDICATOR SYMBOL LETTER D ++<U0001F1EA> /xf0/x9f/x87/xaa REGIONAL INDICATOR SYMBOL LETTER E ++<U0001F1EB> /xf0/x9f/x87/xab REGIONAL INDICATOR SYMBOL LETTER F ++<U0001F1EC> /xf0/x9f/x87/xac REGIONAL INDICATOR SYMBOL LETTER G ++<U0001F1ED> /xf0/x9f/x87/xad REGIONAL INDICATOR SYMBOL LETTER H ++<U0001F1EE> /xf0/x9f/x87/xae REGIONAL INDICATOR SYMBOL LETTER I ++<U0001F1EF> /xf0/x9f/x87/xaf REGIONAL INDICATOR SYMBOL LETTER J ++<U0001F1F0> /xf0/x9f/x87/xb0 REGIONAL INDICATOR SYMBOL LETTER K ++<U0001F1F1> /xf0/x9f/x87/xb1 REGIONAL INDICATOR SYMBOL LETTER L ++<U0001F1F2> /xf0/x9f/x87/xb2 REGIONAL INDICATOR SYMBOL LETTER M ++<U0001F1F3> /xf0/x9f/x87/xb3 REGIONAL INDICATOR SYMBOL LETTER N ++<U0001F1F4> /xf0/x9f/x87/xb4 REGIONAL INDICATOR SYMBOL LETTER O ++<U0001F1F5> /xf0/x9f/x87/xb5 REGIONAL INDICATOR SYMBOL LETTER P ++<U0001F1F6> /xf0/x9f/x87/xb6 REGIONAL INDICATOR SYMBOL LETTER Q ++<U0001F1F7> /xf0/x9f/x87/xb7 REGIONAL INDICATOR SYMBOL LETTER R ++<U0001F1F8> /xf0/x9f/x87/xb8 REGIONAL INDICATOR SYMBOL LETTER S ++<U0001F1F9> /xf0/x9f/x87/xb9 REGIONAL INDICATOR SYMBOL LETTER T ++<U0001F1FA> /xf0/x9f/x87/xba REGIONAL INDICATOR SYMBOL LETTER U ++<U0001F1FB> /xf0/x9f/x87/xbb REGIONAL INDICATOR SYMBOL LETTER V ++<U0001F1FC> /xf0/x9f/x87/xbc REGIONAL INDICATOR SYMBOL LETTER W ++<U0001F1FD> /xf0/x9f/x87/xbd REGIONAL INDICATOR SYMBOL LETTER X ++<U0001F1FE> /xf0/x9f/x87/xbe REGIONAL INDICATOR SYMBOL LETTER Y ++<U0001F1FF> /xf0/x9f/x87/xbf REGIONAL INDICATOR SYMBOL LETTER Z ++<U0001F200> /xf0/x9f/x88/x80 SQUARE HIRAGANA HOKA ++<U0001F201> /xf0/x9f/x88/x81 SQUARED KATAKANA KOKO ++<U0001F202> /xf0/x9f/x88/x82 SQUARED KATAKANA SA ++<U0001F210> /xf0/x9f/x88/x90 SQUARED CJK UNIFIED IDEOGRAPH-624B ++<U0001F211> /xf0/x9f/x88/x91 SQUARED CJK UNIFIED IDEOGRAPH-5B57 ++<U0001F212> /xf0/x9f/x88/x92 SQUARED CJK UNIFIED IDEOGRAPH-53CC ++<U0001F213> /xf0/x9f/x88/x93 SQUARED KATAKANA DE ++<U0001F214> /xf0/x9f/x88/x94 SQUARED CJK UNIFIED IDEOGRAPH-4E8C ++<U0001F215> /xf0/x9f/x88/x95 SQUARED CJK UNIFIED IDEOGRAPH-591A ++<U0001F216> /xf0/x9f/x88/x96 SQUARED CJK UNIFIED IDEOGRAPH-89E3 ++<U0001F217> /xf0/x9f/x88/x97 SQUARED CJK UNIFIED IDEOGRAPH-5929 ++<U0001F218> /xf0/x9f/x88/x98 SQUARED CJK UNIFIED IDEOGRAPH-4EA4 ++<U0001F219> /xf0/x9f/x88/x99 SQUARED CJK UNIFIED IDEOGRAPH-6620 ++<U0001F21A> /xf0/x9f/x88/x9a SQUARED CJK UNIFIED IDEOGRAPH-7121 ++<U0001F21B> /xf0/x9f/x88/x9b SQUARED CJK UNIFIED IDEOGRAPH-6599 ++<U0001F21C> /xf0/x9f/x88/x9c SQUARED CJK UNIFIED IDEOGRAPH-524D ++<U0001F21D> /xf0/x9f/x88/x9d SQUARED CJK UNIFIED IDEOGRAPH-5F8C ++<U0001F21E> /xf0/x9f/x88/x9e SQUARED CJK UNIFIED IDEOGRAPH-518D ++<U0001F21F> /xf0/x9f/x88/x9f SQUARED CJK UNIFIED IDEOGRAPH-65B0 ++<U0001F220> /xf0/x9f/x88/xa0 SQUARED CJK UNIFIED IDEOGRAPH-521D ++<U0001F221> /xf0/x9f/x88/xa1 SQUARED CJK UNIFIED IDEOGRAPH-7D42 ++<U0001F222> /xf0/x9f/x88/xa2 SQUARED CJK UNIFIED IDEOGRAPH-751F ++<U0001F223> /xf0/x9f/x88/xa3 SQUARED CJK UNIFIED IDEOGRAPH-8CA9 ++<U0001F224> /xf0/x9f/x88/xa4 SQUARED CJK UNIFIED IDEOGRAPH-58F0 ++<U0001F225> /xf0/x9f/x88/xa5 SQUARED CJK UNIFIED IDEOGRAPH-5439 ++<U0001F226> /xf0/x9f/x88/xa6 SQUARED CJK UNIFIED IDEOGRAPH-6F14 ++<U0001F227> /xf0/x9f/x88/xa7 SQUARED CJK UNIFIED IDEOGRAPH-6295 ++<U0001F228> /xf0/x9f/x88/xa8 SQUARED CJK UNIFIED IDEOGRAPH-6355 ++<U0001F229> /xf0/x9f/x88/xa9 SQUARED CJK UNIFIED IDEOGRAPH-4E00 ++<U0001F22A> /xf0/x9f/x88/xaa SQUARED CJK UNIFIED IDEOGRAPH-4E09 ++<U0001F22B> /xf0/x9f/x88/xab SQUARED CJK UNIFIED IDEOGRAPH-904A ++<U0001F22C> /xf0/x9f/x88/xac SQUARED CJK UNIFIED IDEOGRAPH-5DE6 ++<U0001F22D> /xf0/x9f/x88/xad SQUARED CJK UNIFIED IDEOGRAPH-4E2D ++<U0001F22E> /xf0/x9f/x88/xae SQUARED CJK UNIFIED IDEOGRAPH-53F3 ++<U0001F22F> /xf0/x9f/x88/xaf SQUARED CJK UNIFIED IDEOGRAPH-6307 ++<U0001F230> /xf0/x9f/x88/xb0 SQUARED CJK UNIFIED IDEOGRAPH-8D70 ++<U0001F231> /xf0/x9f/x88/xb1 SQUARED CJK UNIFIED IDEOGRAPH-6253 ++<U0001F232> /xf0/x9f/x88/xb2 SQUARED CJK UNIFIED IDEOGRAPH-7981 ++<U0001F233> /xf0/x9f/x88/xb3 SQUARED CJK UNIFIED IDEOGRAPH-7A7A ++<U0001F234> /xf0/x9f/x88/xb4 SQUARED CJK UNIFIED IDEOGRAPH-5408 ++<U0001F235> /xf0/x9f/x88/xb5 SQUARED CJK UNIFIED IDEOGRAPH-6E80 ++<U0001F236> /xf0/x9f/x88/xb6 SQUARED CJK UNIFIED IDEOGRAPH-6709 ++<U0001F237> /xf0/x9f/x88/xb7 SQUARED CJK UNIFIED IDEOGRAPH-6708 ++<U0001F238> /xf0/x9f/x88/xb8 SQUARED CJK UNIFIED IDEOGRAPH-7533 ++<U0001F239> /xf0/x9f/x88/xb9 SQUARED CJK UNIFIED IDEOGRAPH-5272 ++<U0001F23A> /xf0/x9f/x88/xba SQUARED CJK UNIFIED IDEOGRAPH-55B6 ++<U0001F240> /xf0/x9f/x89/x80 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C ++<U0001F241> /xf0/x9f/x89/x81 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09 ++<U0001F242> /xf0/x9f/x89/x82 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8C ++<U0001F243> /xf0/x9f/x89/x83 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-5B89 ++<U0001F244> /xf0/x9f/x89/x84 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-70B9 ++<U0001F245> /xf0/x9f/x89/x85 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6253 ++<U0001F246> /xf0/x9f/x89/x86 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-76D7 ++<U0001F247> /xf0/x9f/x89/x87 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-52DD ++<U0001F248> /xf0/x9f/x89/x88 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557 ++<U0001F250> /xf0/x9f/x89/x90 CIRCLED IDEOGRAPH ADVANTAGE ++<U0001F251> /xf0/x9f/x89/x91 CIRCLED IDEOGRAPH ACCEPT ++<U0001F300> /xf0/x9f/x8c/x80 CYCLONE ++<U0001F301> /xf0/x9f/x8c/x81 FOGGY ++<U0001F302> /xf0/x9f/x8c/x82 CLOSED UMBRELLA ++<U0001F303> /xf0/x9f/x8c/x83 NIGHT WITH STARS ++<U0001F304> /xf0/x9f/x8c/x84 SUNRISE OVER MOUNTAINS ++<U0001F305> /xf0/x9f/x8c/x85 SUNRISE ++<U0001F306> /xf0/x9f/x8c/x86 CITYSCAPE AT DUSK ++<U0001F307> /xf0/x9f/x8c/x87 SUNSET OVER BUILDINGS ++<U0001F308> /xf0/x9f/x8c/x88 RAINBOW ++<U0001F309> /xf0/x9f/x8c/x89 BRIDGE AT NIGHT ++<U0001F30A> /xf0/x9f/x8c/x8a WATER WAVE ++<U0001F30B> /xf0/x9f/x8c/x8b VOLCANO ++<U0001F30C> /xf0/x9f/x8c/x8c MILKY WAY ++<U0001F30D> /xf0/x9f/x8c/x8d EARTH GLOBE EUROPE-AFRICA ++<U0001F30E> /xf0/x9f/x8c/x8e EARTH GLOBE AMERICAS ++<U0001F30F> /xf0/x9f/x8c/x8f EARTH GLOBE ASIA-AUSTRALIA ++<U0001F310> /xf0/x9f/x8c/x90 GLOBE WITH MERIDIANS ++<U0001F311> /xf0/x9f/x8c/x91 NEW MOON SYMBOL ++<U0001F312> /xf0/x9f/x8c/x92 WAXING CRESCENT MOON SYMBOL ++<U0001F313> /xf0/x9f/x8c/x93 FIRST QUARTER MOON SYMBOL ++<U0001F314> /xf0/x9f/x8c/x94 WAXING GIBBOUS MOON SYMBOL ++<U0001F315> /xf0/x9f/x8c/x95 FULL MOON SYMBOL ++<U0001F316> /xf0/x9f/x8c/x96 WANING GIBBOUS MOON SYMBOL ++<U0001F317> /xf0/x9f/x8c/x97 LAST QUARTER MOON SYMBOL ++<U0001F318> /xf0/x9f/x8c/x98 WANING CRESCENT MOON SYMBOL ++<U0001F319> /xf0/x9f/x8c/x99 CRESCENT MOON ++<U0001F31A> /xf0/x9f/x8c/x9a NEW MOON WITH FACE ++<U0001F31B> /xf0/x9f/x8c/x9b FIRST QUARTER MOON WITH FACE ++<U0001F31C> /xf0/x9f/x8c/x9c LAST QUARTER MOON WITH FACE ++<U0001F31D> /xf0/x9f/x8c/x9d FULL MOON WITH FACE ++<U0001F31E> /xf0/x9f/x8c/x9e SUN WITH FACE ++<U0001F31F> /xf0/x9f/x8c/x9f GLOWING STAR ++<U0001F320> /xf0/x9f/x8c/xa0 SHOOTING STAR ++<U0001F330> /xf0/x9f/x8c/xb0 CHESTNUT ++<U0001F331> /xf0/x9f/x8c/xb1 SEEDLING ++<U0001F332> /xf0/x9f/x8c/xb2 EVERGREEN TREE ++<U0001F333> /xf0/x9f/x8c/xb3 DECIDUOUS TREE ++<U0001F334> /xf0/x9f/x8c/xb4 PALM TREE ++<U0001F335> /xf0/x9f/x8c/xb5 CACTUS ++<U0001F337> /xf0/x9f/x8c/xb7 TULIP ++<U0001F338> /xf0/x9f/x8c/xb8 CHERRY BLOSSOM ++<U0001F339> /xf0/x9f/x8c/xb9 ROSE ++<U0001F33A> /xf0/x9f/x8c/xba HIBISCUS ++<U0001F33B> /xf0/x9f/x8c/xbb SUNFLOWER ++<U0001F33C> /xf0/x9f/x8c/xbc BLOSSOM ++<U0001F33D> /xf0/x9f/x8c/xbd EAR OF MAIZE ++<U0001F33E> /xf0/x9f/x8c/xbe EAR OF RICE ++<U0001F33F> /xf0/x9f/x8c/xbf HERB ++<U0001F340> /xf0/x9f/x8d/x80 FOUR LEAF CLOVER ++<U0001F341> /xf0/x9f/x8d/x81 MAPLE LEAF ++<U0001F342> /xf0/x9f/x8d/x82 FALLEN LEAF ++<U0001F343> /xf0/x9f/x8d/x83 LEAF FLUTTERING IN WIND ++<U0001F344> /xf0/x9f/x8d/x84 MUSHROOM ++<U0001F345> /xf0/x9f/x8d/x85 TOMATO ++<U0001F346> /xf0/x9f/x8d/x86 AUBERGINE ++<U0001F347> /xf0/x9f/x8d/x87 GRAPES ++<U0001F348> /xf0/x9f/x8d/x88 MELON ++<U0001F349> /xf0/x9f/x8d/x89 WATERMELON ++<U0001F34A> /xf0/x9f/x8d/x8a TANGERINE ++<U0001F34B> /xf0/x9f/x8d/x8b LEMON ++<U0001F34C> /xf0/x9f/x8d/x8c BANANA ++<U0001F34D> /xf0/x9f/x8d/x8d PINEAPPLE ++<U0001F34E> /xf0/x9f/x8d/x8e RED APPLE ++<U0001F34F> /xf0/x9f/x8d/x8f GREEN APPLE ++<U0001F350> /xf0/x9f/x8d/x90 PEAR ++<U0001F351> /xf0/x9f/x8d/x91 PEACH ++<U0001F352> /xf0/x9f/x8d/x92 CHERRIES ++<U0001F353> /xf0/x9f/x8d/x93 STRAWBERRY ++<U0001F354> /xf0/x9f/x8d/x94 HAMBURGER ++<U0001F355> /xf0/x9f/x8d/x95 SLICE OF PIZZA ++<U0001F356> /xf0/x9f/x8d/x96 MEAT ON BONE ++<U0001F357> /xf0/x9f/x8d/x97 POULTRY LEG ++<U0001F358> /xf0/x9f/x8d/x98 RICE CRACKER ++<U0001F359> /xf0/x9f/x8d/x99 RICE BALL ++<U0001F35A> /xf0/x9f/x8d/x9a COOKED RICE ++<U0001F35B> /xf0/x9f/x8d/x9b CURRY AND RICE ++<U0001F35C> /xf0/x9f/x8d/x9c STEAMING BOWL ++<U0001F35D> /xf0/x9f/x8d/x9d SPAGHETTI ++<U0001F35E> /xf0/x9f/x8d/x9e BREAD ++<U0001F35F> /xf0/x9f/x8d/x9f FRENCH FRIES ++<U0001F360> /xf0/x9f/x8d/xa0 ROASTED SWEET POTATO ++<U0001F361> /xf0/x9f/x8d/xa1 DANGO ++<U0001F362> /xf0/x9f/x8d/xa2 ODEN ++<U0001F363> /xf0/x9f/x8d/xa3 SUSHI ++<U0001F364> /xf0/x9f/x8d/xa4 FRIED SHRIMP ++<U0001F365> /xf0/x9f/x8d/xa5 FISH CAKE WITH SWIRL DESIGN ++<U0001F366> /xf0/x9f/x8d/xa6 SOFT ICE CREAM ++<U0001F367> /xf0/x9f/x8d/xa7 SHAVED ICE ++<U0001F368> /xf0/x9f/x8d/xa8 ICE CREAM ++<U0001F369> /xf0/x9f/x8d/xa9 DOUGHNUT ++<U0001F36A> /xf0/x9f/x8d/xaa COOKIE ++<U0001F36B> /xf0/x9f/x8d/xab CHOCOLATE BAR ++<U0001F36C> /xf0/x9f/x8d/xac CANDY ++<U0001F36D> /xf0/x9f/x8d/xad LOLLIPOP ++<U0001F36E> /xf0/x9f/x8d/xae CUSTARD ++<U0001F36F> /xf0/x9f/x8d/xaf HONEY POT ++<U0001F370> /xf0/x9f/x8d/xb0 SHORTCAKE ++<U0001F371> /xf0/x9f/x8d/xb1 BENTO BOX ++<U0001F372> /xf0/x9f/x8d/xb2 POT OF FOOD ++<U0001F373> /xf0/x9f/x8d/xb3 COOKING ++<U0001F374> /xf0/x9f/x8d/xb4 FORK AND KNIFE ++<U0001F375> /xf0/x9f/x8d/xb5 TEACUP WITHOUT HANDLE ++<U0001F376> /xf0/x9f/x8d/xb6 SAKE BOTTLE AND CUP ++<U0001F377> /xf0/x9f/x8d/xb7 WINE GLASS ++<U0001F378> /xf0/x9f/x8d/xb8 COCKTAIL GLASS ++<U0001F379> /xf0/x9f/x8d/xb9 TROPICAL DRINK ++<U0001F37A> /xf0/x9f/x8d/xba BEER MUG ++<U0001F37B> /xf0/x9f/x8d/xbb CLINKING BEER MUGS ++<U0001F37C> /xf0/x9f/x8d/xbc BABY BOTTLE ++<U0001F380> /xf0/x9f/x8e/x80 RIBBON ++<U0001F381> /xf0/x9f/x8e/x81 WRAPPED PRESENT ++<U0001F382> /xf0/x9f/x8e/x82 BIRTHDAY CAKE ++<U0001F383> /xf0/x9f/x8e/x83 JACK-O-LANTERN ++<U0001F384> /xf0/x9f/x8e/x84 CHRISTMAS TREE ++<U0001F385> /xf0/x9f/x8e/x85 FATHER CHRISTMAS ++<U0001F386> /xf0/x9f/x8e/x86 FIREWORKS ++<U0001F387> /xf0/x9f/x8e/x87 FIREWORK SPARKLER ++<U0001F388> /xf0/x9f/x8e/x88 BALLOON ++<U0001F389> /xf0/x9f/x8e/x89 PARTY POPPER ++<U0001F38A> /xf0/x9f/x8e/x8a CONFETTI BALL ++<U0001F38B> /xf0/x9f/x8e/x8b TANABATA TREE ++<U0001F38C> /xf0/x9f/x8e/x8c CROSSED FLAGS ++<U0001F38D> /xf0/x9f/x8e/x8d PINE DECORATION ++<U0001F38E> /xf0/x9f/x8e/x8e JAPANESE DOLLS ++<U0001F38F> /xf0/x9f/x8e/x8f CARP STREAMER ++<U0001F390> /xf0/x9f/x8e/x90 WIND CHIME ++<U0001F391> /xf0/x9f/x8e/x91 MOON VIEWING CEREMONY ++<U0001F392> /xf0/x9f/x8e/x92 SCHOOL SATCHEL ++<U0001F393> /xf0/x9f/x8e/x93 GRADUATION CAP ++<U0001F3A0> /xf0/x9f/x8e/xa0 CAROUSEL HORSE ++<U0001F3A1> /xf0/x9f/x8e/xa1 FERRIS WHEEL ++<U0001F3A2> /xf0/x9f/x8e/xa2 ROLLER COASTER ++<U0001F3A3> /xf0/x9f/x8e/xa3 FISHING POLE AND FISH ++<U0001F3A4> /xf0/x9f/x8e/xa4 MICROPHONE ++<U0001F3A5> /xf0/x9f/x8e/xa5 MOVIE CAMERA ++<U0001F3A6> /xf0/x9f/x8e/xa6 CINEMA ++<U0001F3A7> /xf0/x9f/x8e/xa7 HEADPHONE ++<U0001F3A8> /xf0/x9f/x8e/xa8 ARTIST PALETTE ++<U0001F3A9> /xf0/x9f/x8e/xa9 TOP HAT ++<U0001F3AA> /xf0/x9f/x8e/xaa CIRCUS TENT ++<U0001F3AB> /xf0/x9f/x8e/xab TICKET ++<U0001F3AC> /xf0/x9f/x8e/xac CLAPPER BOARD ++<U0001F3AD> /xf0/x9f/x8e/xad PERFORMING ARTS ++<U0001F3AE> /xf0/x9f/x8e/xae VIDEO GAME ++<U0001F3AF> /xf0/x9f/x8e/xaf DIRECT HIT ++<U0001F3B0> /xf0/x9f/x8e/xb0 SLOT MACHINE ++<U0001F3B1> /xf0/x9f/x8e/xb1 BILLIARDS ++<U0001F3B2> /xf0/x9f/x8e/xb2 GAME DIE ++<U0001F3B3> /xf0/x9f/x8e/xb3 BOWLING ++<U0001F3B4> /xf0/x9f/x8e/xb4 FLOWER PLAYING CARDS ++<U0001F3B5> /xf0/x9f/x8e/xb5 MUSICAL NOTE ++<U0001F3B6> /xf0/x9f/x8e/xb6 MULTIPLE MUSICAL NOTES ++<U0001F3B7> /xf0/x9f/x8e/xb7 SAXOPHONE ++<U0001F3B8> /xf0/x9f/x8e/xb8 GUITAR ++<U0001F3B9> /xf0/x9f/x8e/xb9 MUSICAL KEYBOARD ++<U0001F3BA> /xf0/x9f/x8e/xba TRUMPET ++<U0001F3BB> /xf0/x9f/x8e/xbb VIOLIN ++<U0001F3BC> /xf0/x9f/x8e/xbc MUSICAL SCORE ++<U0001F3BD> /xf0/x9f/x8e/xbd RUNNING SHIRT WITH SASH ++<U0001F3BE> /xf0/x9f/x8e/xbe TENNIS RACQUET AND BALL ++<U0001F3BF> /xf0/x9f/x8e/xbf SKI AND SKI BOOT ++<U0001F3C0> /xf0/x9f/x8f/x80 BASKETBALL AND HOOP ++<U0001F3C1> /xf0/x9f/x8f/x81 CHEQUERED FLAG ++<U0001F3C2> /xf0/x9f/x8f/x82 SNOWBOARDER ++<U0001F3C3> /xf0/x9f/x8f/x83 RUNNER ++<U0001F3C4> /xf0/x9f/x8f/x84 SURFER ++<U0001F3C6> /xf0/x9f/x8f/x86 TROPHY ++<U0001F3C7> /xf0/x9f/x8f/x87 HORSE RACING ++<U0001F3C8> /xf0/x9f/x8f/x88 AMERICAN FOOTBALL ++<U0001F3C9> /xf0/x9f/x8f/x89 RUGBY FOOTBALL ++<U0001F3CA> /xf0/x9f/x8f/x8a SWIMMER ++<U0001F3E0> /xf0/x9f/x8f/xa0 HOUSE BUILDING ++<U0001F3E1> /xf0/x9f/x8f/xa1 HOUSE WITH GARDEN ++<U0001F3E2> /xf0/x9f/x8f/xa2 OFFICE BUILDING ++<U0001F3E3> /xf0/x9f/x8f/xa3 JAPANESE POST OFFICE ++<U0001F3E4> /xf0/x9f/x8f/xa4 EUROPEAN POST OFFICE ++<U0001F3E5> /xf0/x9f/x8f/xa5 HOSPITAL ++<U0001F3E6> /xf0/x9f/x8f/xa6 BANK ++<U0001F3E7> /xf0/x9f/x8f/xa7 AUTOMATED TELLER MACHINE ++<U0001F3E8> /xf0/x9f/x8f/xa8 HOTEL ++<U0001F3E9> /xf0/x9f/x8f/xa9 LOVE HOTEL ++<U0001F3EA> /xf0/x9f/x8f/xaa CONVENIENCE STORE ++<U0001F3EB> /xf0/x9f/x8f/xab SCHOOL ++<U0001F3EC> /xf0/x9f/x8f/xac DEPARTMENT STORE ++<U0001F3ED> /xf0/x9f/x8f/xad FACTORY ++<U0001F3EE> /xf0/x9f/x8f/xae IZAKAYA LANTERN ++<U0001F3EF> /xf0/x9f/x8f/xaf JAPANESE CASTLE ++<U0001F3F0> /xf0/x9f/x8f/xb0 EUROPEAN CASTLE ++<U0001F400> /xf0/x9f/x90/x80 RAT ++<U0001F401> /xf0/x9f/x90/x81 MOUSE ++<U0001F402> /xf0/x9f/x90/x82 OX ++<U0001F403> /xf0/x9f/x90/x83 WATER BUFFALO ++<U0001F404> /xf0/x9f/x90/x84 COW ++<U0001F405> /xf0/x9f/x90/x85 TIGER ++<U0001F406> /xf0/x9f/x90/x86 LEOPARD ++<U0001F407> /xf0/x9f/x90/x87 RABBIT ++<U0001F408> /xf0/x9f/x90/x88 CAT ++<U0001F409> /xf0/x9f/x90/x89 DRAGON ++<U0001F40A> /xf0/x9f/x90/x8a CROCODILE ++<U0001F40B> /xf0/x9f/x90/x8b WHALE ++<U0001F40C> /xf0/x9f/x90/x8c SNAIL ++<U0001F40D> /xf0/x9f/x90/x8d SNAKE ++<U0001F40E> /xf0/x9f/x90/x8e HORSE ++<U0001F40F> /xf0/x9f/x90/x8f RAM ++<U0001F410> /xf0/x9f/x90/x90 GOAT ++<U0001F411> /xf0/x9f/x90/x91 SHEEP ++<U0001F412> /xf0/x9f/x90/x92 MONKEY ++<U0001F413> /xf0/x9f/x90/x93 ROOSTER ++<U0001F414> /xf0/x9f/x90/x94 CHICKEN ++<U0001F415> /xf0/x9f/x90/x95 DOG ++<U0001F416> /xf0/x9f/x90/x96 PIG ++<U0001F417> /xf0/x9f/x90/x97 BOAR ++<U0001F418> /xf0/x9f/x90/x98 ELEPHANT ++<U0001F419> /xf0/x9f/x90/x99 OCTOPUS ++<U0001F41A> /xf0/x9f/x90/x9a SPIRAL SHELL ++<U0001F41B> /xf0/x9f/x90/x9b BUG ++<U0001F41C> /xf0/x9f/x90/x9c ANT ++<U0001F41D> /xf0/x9f/x90/x9d HONEYBEE ++<U0001F41E> /xf0/x9f/x90/x9e LADY BEETLE ++<U0001F41F> /xf0/x9f/x90/x9f FISH ++<U0001F420> /xf0/x9f/x90/xa0 TROPICAL FISH ++<U0001F421> /xf0/x9f/x90/xa1 BLOWFISH ++<U0001F422> /xf0/x9f/x90/xa2 TURTLE ++<U0001F423> /xf0/x9f/x90/xa3 HATCHING CHICK ++<U0001F424> /xf0/x9f/x90/xa4 BABY CHICK ++<U0001F425> /xf0/x9f/x90/xa5 FRONT-FACING BABY CHICK ++<U0001F426> /xf0/x9f/x90/xa6 BIRD ++<U0001F427> /xf0/x9f/x90/xa7 PENGUIN ++<U0001F428> /xf0/x9f/x90/xa8 KOALA ++<U0001F429> /xf0/x9f/x90/xa9 POODLE ++<U0001F42A> /xf0/x9f/x90/xaa DROMEDARY CAMEL ++<U0001F42B> /xf0/x9f/x90/xab BACTRIAN CAMEL ++<U0001F42C> /xf0/x9f/x90/xac DOLPHIN ++<U0001F42D> /xf0/x9f/x90/xad MOUSE FACE ++<U0001F42E> /xf0/x9f/x90/xae COW FACE ++<U0001F42F> /xf0/x9f/x90/xaf TIGER FACE ++<U0001F430> /xf0/x9f/x90/xb0 RABBIT FACE ++<U0001F431> /xf0/x9f/x90/xb1 CAT FACE ++<U0001F432> /xf0/x9f/x90/xb2 DRAGON FACE ++<U0001F433> /xf0/x9f/x90/xb3 SPOUTING WHALE ++<U0001F434> /xf0/x9f/x90/xb4 HORSE FACE ++<U0001F435> /xf0/x9f/x90/xb5 MONKEY FACE ++<U0001F436> /xf0/x9f/x90/xb6 DOG FACE ++<U0001F437> /xf0/x9f/x90/xb7 PIG FACE ++<U0001F438> /xf0/x9f/x90/xb8 FROG FACE ++<U0001F439> /xf0/x9f/x90/xb9 HAMSTER FACE ++<U0001F43A> /xf0/x9f/x90/xba WOLF FACE ++<U0001F43B> /xf0/x9f/x90/xbb BEAR FACE ++<U0001F43C> /xf0/x9f/x90/xbc PANDA FACE ++<U0001F43D> /xf0/x9f/x90/xbd PIG NOSE ++<U0001F43E> /xf0/x9f/x90/xbe PAW PRINTS ++<U0001F440> /xf0/x9f/x91/x80 EYES ++<U0001F442> /xf0/x9f/x91/x82 EAR ++<U0001F443> /xf0/x9f/x91/x83 NOSE ++<U0001F444> /xf0/x9f/x91/x84 MOUTH ++<U0001F445> /xf0/x9f/x91/x85 TONGUE ++<U0001F446> /xf0/x9f/x91/x86 WHITE UP POINTING BACKHAND INDEX ++<U0001F447> /xf0/x9f/x91/x87 WHITE DOWN POINTING BACKHAND INDEX ++<U0001F448> /xf0/x9f/x91/x88 WHITE LEFT POINTING BACKHAND INDEX ++<U0001F449> /xf0/x9f/x91/x89 WHITE RIGHT POINTING BACKHAND INDEX ++<U0001F44A> /xf0/x9f/x91/x8a FISTED HAND SIGN ++<U0001F44B> /xf0/x9f/x91/x8b WAVING HAND SIGN ++<U0001F44C> /xf0/x9f/x91/x8c OK HAND SIGN ++<U0001F44D> /xf0/x9f/x91/x8d THUMBS UP SIGN ++<U0001F44E> /xf0/x9f/x91/x8e THUMBS DOWN SIGN ++<U0001F44F> /xf0/x9f/x91/x8f CLAPPING HANDS SIGN ++<U0001F450> /xf0/x9f/x91/x90 OPEN HANDS SIGN ++<U0001F451> /xf0/x9f/x91/x91 CROWN ++<U0001F452> /xf0/x9f/x91/x92 WOMANS HAT ++<U0001F453> /xf0/x9f/x91/x93 EYEGLASSES ++<U0001F454> /xf0/x9f/x91/x94 NECKTIE ++<U0001F455> /xf0/x9f/x91/x95 T-SHIRT ++<U0001F456> /xf0/x9f/x91/x96 JEANS ++<U0001F457> /xf0/x9f/x91/x97 DRESS ++<U0001F458> /xf0/x9f/x91/x98 KIMONO ++<U0001F459> /xf0/x9f/x91/x99 BIKINI ++<U0001F45A> /xf0/x9f/x91/x9a WOMANS CLOTHES ++<U0001F45B> /xf0/x9f/x91/x9b PURSE ++<U0001F45C> /xf0/x9f/x91/x9c HANDBAG ++<U0001F45D> /xf0/x9f/x91/x9d POUCH ++<U0001F45E> /xf0/x9f/x91/x9e MANS SHOE ++<U0001F45F> /xf0/x9f/x91/x9f ATHLETIC SHOE ++<U0001F460> /xf0/x9f/x91/xa0 HIGH-HEELED SHOE ++<U0001F461> /xf0/x9f/x91/xa1 WOMANS SANDAL ++<U0001F462> /xf0/x9f/x91/xa2 WOMANS BOOTS ++<U0001F463> /xf0/x9f/x91/xa3 FOOTPRINTS ++<U0001F464> /xf0/x9f/x91/xa4 BUST IN SILHOUETTE ++<U0001F465> /xf0/x9f/x91/xa5 BUSTS IN SILHOUETTE ++<U0001F466> /xf0/x9f/x91/xa6 BOY ++<U0001F467> /xf0/x9f/x91/xa7 GIRL ++<U0001F468> /xf0/x9f/x91/xa8 MAN ++<U0001F469> /xf0/x9f/x91/xa9 WOMAN ++<U0001F46A> /xf0/x9f/x91/xaa FAMILY ++<U0001F46B> /xf0/x9f/x91/xab MAN AND WOMAN HOLDING HANDS ++<U0001F46C> /xf0/x9f/x91/xac TWO MEN HOLDING HANDS ++<U0001F46D> /xf0/x9f/x91/xad TWO WOMEN HOLDING HANDS ++<U0001F46E> /xf0/x9f/x91/xae POLICE OFFICER ++<U0001F46F> /xf0/x9f/x91/xaf WOMAN WITH BUNNY EARS ++<U0001F470> /xf0/x9f/x91/xb0 BRIDE WITH VEIL ++<U0001F471> /xf0/x9f/x91/xb1 PERSON WITH BLOND HAIR ++<U0001F472> /xf0/x9f/x91/xb2 MAN WITH GUA PI MAO ++<U0001F473> /xf0/x9f/x91/xb3 MAN WITH TURBAN ++<U0001F474> /xf0/x9f/x91/xb4 OLDER MAN ++<U0001F475> /xf0/x9f/x91/xb5 OLDER WOMAN ++<U0001F476> /xf0/x9f/x91/xb6 BABY ++<U0001F477> /xf0/x9f/x91/xb7 CONSTRUCTION WORKER ++<U0001F478> /xf0/x9f/x91/xb8 PRINCESS ++<U0001F479> /xf0/x9f/x91/xb9 JAPANESE OGRE ++<U0001F47A> /xf0/x9f/x91/xba JAPANESE GOBLIN ++<U0001F47B> /xf0/x9f/x91/xbb GHOST ++<U0001F47C> /xf0/x9f/x91/xbc BABY ANGEL ++<U0001F47D> /xf0/x9f/x91/xbd EXTRATERRESTRIAL ALIEN ++<U0001F47E> /xf0/x9f/x91/xbe ALIEN MONSTER ++<U0001F47F> /xf0/x9f/x91/xbf IMP ++<U0001F480> /xf0/x9f/x92/x80 SKULL ++<U0001F481> /xf0/x9f/x92/x81 INFORMATION DESK PERSON ++<U0001F482> /xf0/x9f/x92/x82 GUARDSMAN ++<U0001F483> /xf0/x9f/x92/x83 DANCER ++<U0001F484> /xf0/x9f/x92/x84 LIPSTICK ++<U0001F485> /xf0/x9f/x92/x85 NAIL POLISH ++<U0001F486> /xf0/x9f/x92/x86 FACE MASSAGE ++<U0001F487> /xf0/x9f/x92/x87 HAIRCUT ++<U0001F488> /xf0/x9f/x92/x88 BARBER POLE ++<U0001F489> /xf0/x9f/x92/x89 SYRINGE ++<U0001F48A> /xf0/x9f/x92/x8a PILL ++<U0001F48B> /xf0/x9f/x92/x8b KISS MARK ++<U0001F48C> /xf0/x9f/x92/x8c LOVE LETTER ++<U0001F48D> /xf0/x9f/x92/x8d RING ++<U0001F48E> /xf0/x9f/x92/x8e GEM STONE ++<U0001F48F> /xf0/x9f/x92/x8f KISS ++<U0001F490> /xf0/x9f/x92/x90 BOUQUET ++<U0001F491> /xf0/x9f/x92/x91 COUPLE WITH HEART ++<U0001F492> /xf0/x9f/x92/x92 WEDDING ++<U0001F493> /xf0/x9f/x92/x93 BEATING HEART ++<U0001F494> /xf0/x9f/x92/x94 BROKEN HEART ++<U0001F495> /xf0/x9f/x92/x95 TWO HEARTS ++<U0001F496> /xf0/x9f/x92/x96 SPARKLING HEART ++<U0001F497> /xf0/x9f/x92/x97 GROWING HEART ++<U0001F498> /xf0/x9f/x92/x98 HEART WITH ARROW ++<U0001F499> /xf0/x9f/x92/x99 BLUE HEART ++<U0001F49A> /xf0/x9f/x92/x9a GREEN HEART ++<U0001F49B> /xf0/x9f/x92/x9b YELLOW HEART ++<U0001F49C> /xf0/x9f/x92/x9c PURPLE HEART ++<U0001F49D> /xf0/x9f/x92/x9d HEART WITH RIBBON ++<U0001F49E> /xf0/x9f/x92/x9e REVOLVING HEARTS ++<U0001F49F> /xf0/x9f/x92/x9f HEART DECORATION ++<U0001F4A0> /xf0/x9f/x92/xa0 DIAMOND SHAPE WITH A DOT INSIDE ++<U0001F4A1> /xf0/x9f/x92/xa1 ELECTRIC LIGHT BULB ++<U0001F4A2> /xf0/x9f/x92/xa2 ANGER SYMBOL ++<U0001F4A3> /xf0/x9f/x92/xa3 BOMB ++<U0001F4A4> /xf0/x9f/x92/xa4 SLEEPING SYMBOL ++<U0001F4A5> /xf0/x9f/x92/xa5 COLLISION SYMBOL ++<U0001F4A6> /xf0/x9f/x92/xa6 SPLASHING SWEAT SYMBOL ++<U0001F4A7> /xf0/x9f/x92/xa7 DROPLET ++<U0001F4A8> /xf0/x9f/x92/xa8 DASH SYMBOL ++<U0001F4A9> /xf0/x9f/x92/xa9 PILE OF POO ++<U0001F4AA> /xf0/x9f/x92/xaa FLEXED BICEPS ++<U0001F4AB> /xf0/x9f/x92/xab DIZZY SYMBOL ++<U0001F4AC> /xf0/x9f/x92/xac SPEECH BALLOON ++<U0001F4AD> /xf0/x9f/x92/xad THOUGHT BALLOON ++<U0001F4AE> /xf0/x9f/x92/xae WHITE FLOWER ++<U0001F4AF> /xf0/x9f/x92/xaf HUNDRED POINTS SYMBOL ++<U0001F4B0> /xf0/x9f/x92/xb0 MONEY BAG ++<U0001F4B1> /xf0/x9f/x92/xb1 CURRENCY EXCHANGE ++<U0001F4B2> /xf0/x9f/x92/xb2 HEAVY DOLLAR SIGN ++<U0001F4B3> /xf0/x9f/x92/xb3 CREDIT CARD ++<U0001F4B4> /xf0/x9f/x92/xb4 BANKNOTE WITH YEN SIGN ++<U0001F4B5> /xf0/x9f/x92/xb5 BANKNOTE WITH DOLLAR SIGN ++<U0001F4B6> /xf0/x9f/x92/xb6 BANKNOTE WITH EURO SIGN ++<U0001F4B7> /xf0/x9f/x92/xb7 BANKNOTE WITH POUND SIGN ++<U0001F4B8> /xf0/x9f/x92/xb8 MONEY WITH WINGS ++<U0001F4B9> /xf0/x9f/x92/xb9 CHART WITH UPWARDS TREND AND YEN SIGN ++<U0001F4BA> /xf0/x9f/x92/xba SEAT ++<U0001F4BB> /xf0/x9f/x92/xbb PERSONAL COMPUTER ++<U0001F4BC> /xf0/x9f/x92/xbc BRIEFCASE ++<U0001F4BD> /xf0/x9f/x92/xbd MINIDISC ++<U0001F4BE> /xf0/x9f/x92/xbe FLOPPY DISK ++<U0001F4BF> /xf0/x9f/x92/xbf OPTICAL DISC ++<U0001F4C0> /xf0/x9f/x93/x80 DVD ++<U0001F4C1> /xf0/x9f/x93/x81 FILE FOLDER ++<U0001F4C2> /xf0/x9f/x93/x82 OPEN FILE FOLDER ++<U0001F4C3> /xf0/x9f/x93/x83 PAGE WITH CURL ++<U0001F4C4> /xf0/x9f/x93/x84 PAGE FACING UP ++<U0001F4C5> /xf0/x9f/x93/x85 CALENDAR ++<U0001F4C6> /xf0/x9f/x93/x86 TEAR-OFF CALENDAR ++<U0001F4C7> /xf0/x9f/x93/x87 CARD INDEX ++<U0001F4C8> /xf0/x9f/x93/x88 CHART WITH UPWARDS TREND ++<U0001F4C9> /xf0/x9f/x93/x89 CHART WITH DOWNWARDS TREND ++<U0001F4CA> /xf0/x9f/x93/x8a BAR CHART ++<U0001F4CB> /xf0/x9f/x93/x8b CLIPBOARD ++<U0001F4CC> /xf0/x9f/x93/x8c PUSHPIN ++<U0001F4CD> /xf0/x9f/x93/x8d ROUND PUSHPIN ++<U0001F4CE> /xf0/x9f/x93/x8e PAPERCLIP ++<U0001F4CF> /xf0/x9f/x93/x8f STRAIGHT RULER ++<U0001F4D0> /xf0/x9f/x93/x90 TRIANGULAR RULER ++<U0001F4D1> /xf0/x9f/x93/x91 BOOKMARK TABS ++<U0001F4D2> /xf0/x9f/x93/x92 LEDGER ++<U0001F4D3> /xf0/x9f/x93/x93 NOTEBOOK ++<U0001F4D4> /xf0/x9f/x93/x94 NOTEBOOK WITH DECORATIVE COVER ++<U0001F4D5> /xf0/x9f/x93/x95 CLOSED BOOK ++<U0001F4D6> /xf0/x9f/x93/x96 OPEN BOOK ++<U0001F4D7> /xf0/x9f/x93/x97 GREEN BOOK ++<U0001F4D8> /xf0/x9f/x93/x98 BLUE BOOK ++<U0001F4D9> /xf0/x9f/x93/x99 ORANGE BOOK ++<U0001F4DA> /xf0/x9f/x93/x9a BOOKS ++<U0001F4DB> /xf0/x9f/x93/x9b NAME BADGE ++<U0001F4DC> /xf0/x9f/x93/x9c SCROLL ++<U0001F4DD> /xf0/x9f/x93/x9d MEMO ++<U0001F4DE> /xf0/x9f/x93/x9e TELEPHONE RECEIVER ++<U0001F4DF> /xf0/x9f/x93/x9f PAGER ++<U0001F4E0> /xf0/x9f/x93/xa0 FAX MACHINE ++<U0001F4E1> /xf0/x9f/x93/xa1 SATELLITE ANTENNA ++<U0001F4E2> /xf0/x9f/x93/xa2 PUBLIC ADDRESS LOUDSPEAKER ++<U0001F4E3> /xf0/x9f/x93/xa3 CHEERING MEGAPHONE ++<U0001F4E4> /xf0/x9f/x93/xa4 OUTBOX TRAY ++<U0001F4E5> /xf0/x9f/x93/xa5 INBOX TRAY ++<U0001F4E6> /xf0/x9f/x93/xa6 PACKAGE ++<U0001F4E7> /xf0/x9f/x93/xa7 E-MAIL SYMBOL ++<U0001F4E8> /xf0/x9f/x93/xa8 INCOMING ENVELOPE ++<U0001F4E9> /xf0/x9f/x93/xa9 ENVELOPE WITH DOWNWARDS ARROW ABOVE ++<U0001F4EA> /xf0/x9f/x93/xaa CLOSED MAILBOX WITH LOWERED FLAG ++<U0001F4EB> /xf0/x9f/x93/xab CLOSED MAILBOX WITH RAISED FLAG ++<U0001F4EC> /xf0/x9f/x93/xac OPEN MAILBOX WITH RAISED FLAG ++<U0001F4ED> /xf0/x9f/x93/xad OPEN MAILBOX WITH LOWERED FLAG ++<U0001F4EE> /xf0/x9f/x93/xae POSTBOX ++<U0001F4EF> /xf0/x9f/x93/xaf POSTAL HORN ++<U0001F4F0> /xf0/x9f/x93/xb0 NEWSPAPER ++<U0001F4F1> /xf0/x9f/x93/xb1 MOBILE PHONE ++<U0001F4F2> /xf0/x9f/x93/xb2 MOBILE PHONE WITH RIGHTWARDS ARROW AT LEFT ++<U0001F4F3> /xf0/x9f/x93/xb3 VIBRATION MODE ++<U0001F4F4> /xf0/x9f/x93/xb4 MOBILE PHONE OFF ++<U0001F4F5> /xf0/x9f/x93/xb5 NO MOBILE PHONES ++<U0001F4F6> /xf0/x9f/x93/xb6 ANTENNA WITH BARS ++<U0001F4F7> /xf0/x9f/x93/xb7 CAMERA ++<U0001F4F9> /xf0/x9f/x93/xb9 VIDEO CAMERA ++<U0001F4FA> /xf0/x9f/x93/xba TELEVISION ++<U0001F4FB> /xf0/x9f/x93/xbb RADIO ++<U0001F4FC> /xf0/x9f/x93/xbc VIDEOCASSETTE ++<U0001F500> /xf0/x9f/x94/x80 TWISTED RIGHTWARDS ARROWS ++<U0001F501> /xf0/x9f/x94/x81 CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS ++<U0001F502> /xf0/x9f/x94/x82 CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS WITH CIRCLED ONE OVERLAY ++<U0001F503> /xf0/x9f/x94/x83 CLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS ++<U0001F504> /xf0/x9f/x94/x84 ANTICLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS ++<U0001F505> /xf0/x9f/x94/x85 LOW BRIGHTNESS SYMBOL ++<U0001F506> /xf0/x9f/x94/x86 HIGH BRIGHTNESS SYMBOL ++<U0001F507> /xf0/x9f/x94/x87 SPEAKER WITH CANCELLATION STROKE ++<U0001F508> /xf0/x9f/x94/x88 SPEAKER ++<U0001F509> /xf0/x9f/x94/x89 SPEAKER WITH ONE SOUND WAVE ++<U0001F50A> /xf0/x9f/x94/x8a SPEAKER WITH THREE SOUND WAVES ++<U0001F50B> /xf0/x9f/x94/x8b BATTERY ++<U0001F50C> /xf0/x9f/x94/x8c ELECTRIC PLUG ++<U0001F50D> /xf0/x9f/x94/x8d LEFT-POINTING MAGNIFYING GLASS ++<U0001F50E> /xf0/x9f/x94/x8e RIGHT-POINTING MAGNIFYING GLASS ++<U0001F50F> /xf0/x9f/x94/x8f LOCK WITH INK PEN ++<U0001F510> /xf0/x9f/x94/x90 CLOSED LOCK WITH KEY ++<U0001F511> /xf0/x9f/x94/x91 KEY ++<U0001F512> /xf0/x9f/x94/x92 LOCK ++<U0001F513> /xf0/x9f/x94/x93 OPEN LOCK ++<U0001F514> /xf0/x9f/x94/x94 BELL ++<U0001F515> /xf0/x9f/x94/x95 BELL WITH CANCELLATION STROKE ++<U0001F516> /xf0/x9f/x94/x96 BOOKMARK ++<U0001F517> /xf0/x9f/x94/x97 LINK SYMBOL ++<U0001F518> /xf0/x9f/x94/x98 RADIO BUTTON ++<U0001F519> /xf0/x9f/x94/x99 BACK WITH LEFTWARDS ARROW ABOVE ++<U0001F51A> /xf0/x9f/x94/x9a END WITH LEFTWARDS ARROW ABOVE ++<U0001F51B> /xf0/x9f/x94/x9b ON WITH EXCLAMATION MARK WITH LEFT RIGHT ARROW ABOVE ++<U0001F51C> /xf0/x9f/x94/x9c SOON WITH RIGHTWARDS ARROW ABOVE ++<U0001F51D> /xf0/x9f/x94/x9d TOP WITH UPWARDS ARROW ABOVE ++<U0001F51E> /xf0/x9f/x94/x9e NO ONE UNDER EIGHTEEN SYMBOL ++<U0001F51F> /xf0/x9f/x94/x9f KEYCAP TEN ++<U0001F520> /xf0/x9f/x94/xa0 INPUT SYMBOL FOR LATIN CAPITAL LETTERS ++<U0001F521> /xf0/x9f/x94/xa1 INPUT SYMBOL FOR LATIN SMALL LETTERS ++<U0001F522> /xf0/x9f/x94/xa2 INPUT SYMBOL FOR NUMBERS ++<U0001F523> /xf0/x9f/x94/xa3 INPUT SYMBOL FOR SYMBOLS ++<U0001F524> /xf0/x9f/x94/xa4 INPUT SYMBOL FOR LATIN LETTERS ++<U0001F525> /xf0/x9f/x94/xa5 FIRE ++<U0001F526> /xf0/x9f/x94/xa6 ELECTRIC TORCH ++<U0001F527> /xf0/x9f/x94/xa7 WRENCH ++<U0001F528> /xf0/x9f/x94/xa8 HAMMER ++<U0001F529> /xf0/x9f/x94/xa9 NUT AND BOLT ++<U0001F52A> /xf0/x9f/x94/xaa HOCHO ++<U0001F52B> /xf0/x9f/x94/xab PISTOL ++<U0001F52C> /xf0/x9f/x94/xac MICROSCOPE ++<U0001F52D> /xf0/x9f/x94/xad TELESCOPE ++<U0001F52E> /xf0/x9f/x94/xae CRYSTAL BALL ++<U0001F52F> /xf0/x9f/x94/xaf SIX POINTED STAR WITH MIDDLE DOT ++<U0001F530> /xf0/x9f/x94/xb0 JAPANESE SYMBOL FOR BEGINNER ++<U0001F531> /xf0/x9f/x94/xb1 TRIDENT EMBLEM ++<U0001F532> /xf0/x9f/x94/xb2 BLACK SQUARE BUTTON ++<U0001F533> /xf0/x9f/x94/xb3 WHITE SQUARE BUTTON ++<U0001F534> /xf0/x9f/x94/xb4 LARGE RED CIRCLE ++<U0001F535> /xf0/x9f/x94/xb5 LARGE BLUE CIRCLE ++<U0001F536> /xf0/x9f/x94/xb6 LARGE ORANGE DIAMOND ++<U0001F537> /xf0/x9f/x94/xb7 LARGE BLUE DIAMOND ++<U0001F538> /xf0/x9f/x94/xb8 SMALL ORANGE DIAMOND ++<U0001F539> /xf0/x9f/x94/xb9 SMALL BLUE DIAMOND ++<U0001F53A> /xf0/x9f/x94/xba UP-POINTING RED TRIANGLE ++<U0001F53B> /xf0/x9f/x94/xbb DOWN-POINTING RED TRIANGLE ++<U0001F53C> /xf0/x9f/x94/xbc UP-POINTING SMALL RED TRIANGLE ++<U0001F53D> /xf0/x9f/x94/xbd DOWN-POINTING SMALL RED TRIANGLE ++<U0001F550> /xf0/x9f/x95/x90 CLOCK FACE ONE OCLOCK ++<U0001F551> /xf0/x9f/x95/x91 CLOCK FACE TWO OCLOCK ++<U0001F552> /xf0/x9f/x95/x92 CLOCK FACE THREE OCLOCK ++<U0001F553> /xf0/x9f/x95/x93 CLOCK FACE FOUR OCLOCK ++<U0001F554> /xf0/x9f/x95/x94 CLOCK FACE FIVE OCLOCK ++<U0001F555> /xf0/x9f/x95/x95 CLOCK FACE SIX OCLOCK ++<U0001F556> /xf0/x9f/x95/x96 CLOCK FACE SEVEN OCLOCK ++<U0001F557> /xf0/x9f/x95/x97 CLOCK FACE EIGHT OCLOCK ++<U0001F558> /xf0/x9f/x95/x98 CLOCK FACE NINE OCLOCK ++<U0001F559> /xf0/x9f/x95/x99 CLOCK FACE TEN OCLOCK ++<U0001F55A> /xf0/x9f/x95/x9a CLOCK FACE ELEVEN OCLOCK ++<U0001F55B> /xf0/x9f/x95/x9b CLOCK FACE TWELVE OCLOCK ++<U0001F55C> /xf0/x9f/x95/x9c CLOCK FACE ONE-THIRTY ++<U0001F55D> /xf0/x9f/x95/x9d CLOCK FACE TWO-THIRTY ++<U0001F55E> /xf0/x9f/x95/x9e CLOCK FACE THREE-THIRTY ++<U0001F55F> /xf0/x9f/x95/x9f CLOCK FACE FOUR-THIRTY ++<U0001F560> /xf0/x9f/x95/xa0 CLOCK FACE FIVE-THIRTY ++<U0001F561> /xf0/x9f/x95/xa1 CLOCK FACE SIX-THIRTY ++<U0001F562> /xf0/x9f/x95/xa2 CLOCK FACE SEVEN-THIRTY ++<U0001F563> /xf0/x9f/x95/xa3 CLOCK FACE EIGHT-THIRTY ++<U0001F564> /xf0/x9f/x95/xa4 CLOCK FACE NINE-THIRTY ++<U0001F565> /xf0/x9f/x95/xa5 CLOCK FACE TEN-THIRTY ++<U0001F566> /xf0/x9f/x95/xa6 CLOCK FACE ELEVEN-THIRTY ++<U0001F567> /xf0/x9f/x95/xa7 CLOCK FACE TWELVE-THIRTY ++<U0001F5FB> /xf0/x9f/x97/xbb MOUNT FUJI ++<U0001F5FC> /xf0/x9f/x97/xbc TOKYO TOWER ++<U0001F5FD> /xf0/x9f/x97/xbd STATUE OF LIBERTY ++<U0001F5FE> /xf0/x9f/x97/xbe SILHOUETTE OF JAPAN ++<U0001F5FF> /xf0/x9f/x97/xbf MOYAI ++<U0001F601> /xf0/x9f/x98/x81 GRINNING FACE WITH SMILING EYES ++<U0001F602> /xf0/x9f/x98/x82 FACE WITH TEARS OF JOY ++<U0001F603> /xf0/x9f/x98/x83 SMILING FACE WITH OPEN MOUTH ++<U0001F604> /xf0/x9f/x98/x84 SMILING FACE WITH OPEN MOUTH AND SMILING EYES ++<U0001F605> /xf0/x9f/x98/x85 SMILING FACE WITH OPEN MOUTH AND COLD SWEAT ++<U0001F606> /xf0/x9f/x98/x86 SMILING FACE WITH OPEN MOUTH AND TIGHTLY-CLOSED EYES ++<U0001F607> /xf0/x9f/x98/x87 SMILING FACE WITH HALO ++<U0001F608> /xf0/x9f/x98/x88 SMILING FACE WITH HORNS ++<U0001F609> /xf0/x9f/x98/x89 WINKING FACE ++<U0001F60A> /xf0/x9f/x98/x8a SMILING FACE WITH SMILING EYES ++<U0001F60B> /xf0/x9f/x98/x8b FACE SAVOURING DELICIOUS FOOD ++<U0001F60C> /xf0/x9f/x98/x8c RELIEVED FACE ++<U0001F60D> /xf0/x9f/x98/x8d SMILING FACE WITH HEART-SHAPED EYES ++<U0001F60E> /xf0/x9f/x98/x8e SMILING FACE WITH SUNGLASSES ++<U0001F60F> /xf0/x9f/x98/x8f SMIRKING FACE ++<U0001F610> /xf0/x9f/x98/x90 NEUTRAL FACE ++<U0001F612> /xf0/x9f/x98/x92 UNAMUSED FACE ++<U0001F613> /xf0/x9f/x98/x93 FACE WITH COLD SWEAT ++<U0001F614> /xf0/x9f/x98/x94 PENSIVE FACE ++<U0001F616> /xf0/x9f/x98/x96 CONFOUNDED FACE ++<U0001F618> /xf0/x9f/x98/x98 FACE THROWING A KISS ++<U0001F61A> /xf0/x9f/x98/x9a KISSING FACE WITH CLOSED EYES ++<U0001F61C> /xf0/x9f/x98/x9c FACE WITH STUCK-OUT TONGUE AND WINKING EYE ++<U0001F61D> /xf0/x9f/x98/x9d FACE WITH STUCK-OUT TONGUE AND TIGHTLY-CLOSED EYES ++<U0001F61E> /xf0/x9f/x98/x9e DISAPPOINTED FACE ++<U0001F620> /xf0/x9f/x98/xa0 ANGRY FACE ++<U0001F621> /xf0/x9f/x98/xa1 POUTING FACE ++<U0001F622> /xf0/x9f/x98/xa2 CRYING FACE ++<U0001F623> /xf0/x9f/x98/xa3 PERSEVERING FACE ++<U0001F624> /xf0/x9f/x98/xa4 FACE WITH LOOK OF TRIUMPH ++<U0001F625> /xf0/x9f/x98/xa5 DISAPPOINTED BUT RELIEVED FACE ++<U0001F628> /xf0/x9f/x98/xa8 FEARFUL FACE ++<U0001F629> /xf0/x9f/x98/xa9 WEARY FACE ++<U0001F62A> /xf0/x9f/x98/xaa SLEEPY FACE ++<U0001F62B> /xf0/x9f/x98/xab TIRED FACE ++<U0001F62D> /xf0/x9f/x98/xad LOUDLY CRYING FACE ++<U0001F630> /xf0/x9f/x98/xb0 FACE WITH OPEN MOUTH AND COLD SWEAT ++<U0001F631> /xf0/x9f/x98/xb1 FACE SCREAMING IN FEAR ++<U0001F632> /xf0/x9f/x98/xb2 ASTONISHED FACE ++<U0001F633> /xf0/x9f/x98/xb3 FLUSHED FACE ++<U0001F635> /xf0/x9f/x98/xb5 DIZZY FACE ++<U0001F636> /xf0/x9f/x98/xb6 FACE WITHOUT MOUTH ++<U0001F637> /xf0/x9f/x98/xb7 FACE WITH MEDICAL MASK ++<U0001F638> /xf0/x9f/x98/xb8 GRINNING CAT FACE WITH SMILING EYES ++<U0001F639> /xf0/x9f/x98/xb9 CAT FACE WITH TEARS OF JOY ++<U0001F63A> /xf0/x9f/x98/xba SMILING CAT FACE WITH OPEN MOUTH ++<U0001F63B> /xf0/x9f/x98/xbb SMILING CAT FACE WITH HEART-SHAPED EYES ++<U0001F63C> /xf0/x9f/x98/xbc CAT FACE WITH WRY SMILE ++<U0001F63D> /xf0/x9f/x98/xbd KISSING CAT FACE WITH CLOSED EYES ++<U0001F63E> /xf0/x9f/x98/xbe POUTING CAT FACE ++<U0001F63F> /xf0/x9f/x98/xbf CRYING CAT FACE ++<U0001F640> /xf0/x9f/x99/x80 WEARY CAT FACE ++<U0001F645> /xf0/x9f/x99/x85 FACE WITH NO GOOD GESTURE ++<U0001F646> /xf0/x9f/x99/x86 FACE WITH OK GESTURE ++<U0001F647> /xf0/x9f/x99/x87 PERSON BOWING DEEPLY ++<U0001F648> /xf0/x9f/x99/x88 SEE-NO-EVIL MONKEY ++<U0001F649> /xf0/x9f/x99/x89 HEAR-NO-EVIL MONKEY ++<U0001F64A> /xf0/x9f/x99/x8a SPEAK-NO-EVIL MONKEY ++<U0001F64B> /xf0/x9f/x99/x8b HAPPY PERSON RAISING ONE HAND ++<U0001F64C> /xf0/x9f/x99/x8c PERSON RAISING BOTH HANDS IN CELEBRATION ++<U0001F64D> /xf0/x9f/x99/x8d PERSON FROWNING ++<U0001F64E> /xf0/x9f/x99/x8e PERSON WITH POUTING FACE ++<U0001F64F> /xf0/x9f/x99/x8f PERSON WITH FOLDED HANDS ++<U0001F680> /xf0/x9f/x9a/x80 ROCKET ++<U0001F681> /xf0/x9f/x9a/x81 HELICOPTER ++<U0001F682> /xf0/x9f/x9a/x82 STEAM LOCOMOTIVE ++<U0001F683> /xf0/x9f/x9a/x83 RAILWAY CAR ++<U0001F684> /xf0/x9f/x9a/x84 HIGH-SPEED TRAIN ++<U0001F685> /xf0/x9f/x9a/x85 HIGH-SPEED TRAIN WITH BULLET NOSE ++<U0001F686> /xf0/x9f/x9a/x86 TRAIN ++<U0001F687> /xf0/x9f/x9a/x87 METRO ++<U0001F688> /xf0/x9f/x9a/x88 LIGHT RAIL ++<U0001F689> /xf0/x9f/x9a/x89 STATION ++<U0001F68A> /xf0/x9f/x9a/x8a TRAM ++<U0001F68B> /xf0/x9f/x9a/x8b TRAM CAR ++<U0001F68C> /xf0/x9f/x9a/x8c BUS ++<U0001F68D> /xf0/x9f/x9a/x8d ONCOMING BUS ++<U0001F68E> /xf0/x9f/x9a/x8e TROLLEYBUS ++<U0001F68F> /xf0/x9f/x9a/x8f BUS STOP ++<U0001F690> /xf0/x9f/x9a/x90 MINIBUS ++<U0001F691> /xf0/x9f/x9a/x91 AMBULANCE ++<U0001F692> /xf0/x9f/x9a/x92 FIRE ENGINE ++<U0001F693> /xf0/x9f/x9a/x93 POLICE CAR ++<U0001F694> /xf0/x9f/x9a/x94 ONCOMING POLICE CAR ++<U0001F695> /xf0/x9f/x9a/x95 TAXI ++<U0001F696> /xf0/x9f/x9a/x96 ONCOMING TAXI ++<U0001F697> /xf0/x9f/x9a/x97 AUTOMOBILE ++<U0001F698> /xf0/x9f/x9a/x98 ONCOMING AUTOMOBILE ++<U0001F699> /xf0/x9f/x9a/x99 RECREATIONAL VEHICLE ++<U0001F69A> /xf0/x9f/x9a/x9a DELIVERY TRUCK ++<U0001F69B> /xf0/x9f/x9a/x9b ARTICULATED LORRY ++<U0001F69C> /xf0/x9f/x9a/x9c TRACTOR ++<U0001F69D> /xf0/x9f/x9a/x9d MONORAIL ++<U0001F69E> /xf0/x9f/x9a/x9e MOUNTAIN RAILWAY ++<U0001F69F> /xf0/x9f/x9a/x9f SUSPENSION RAILWAY ++<U0001F6A0> /xf0/x9f/x9a/xa0 MOUNTAIN CABLEWAY ++<U0001F6A1> /xf0/x9f/x9a/xa1 AERIAL TRAMWAY ++<U0001F6A2> /xf0/x9f/x9a/xa2 SHIP ++<U0001F6A3> /xf0/x9f/x9a/xa3 ROWBOAT ++<U0001F6A4> /xf0/x9f/x9a/xa4 SPEEDBOAT ++<U0001F6A5> /xf0/x9f/x9a/xa5 HORIZONTAL TRAFFIC LIGHT ++<U0001F6A6> /xf0/x9f/x9a/xa6 VERTICAL TRAFFIC LIGHT ++<U0001F6A7> /xf0/x9f/x9a/xa7 CONSTRUCTION SIGN ++<U0001F6A8> /xf0/x9f/x9a/xa8 POLICE CARS REVOLVING LIGHT ++<U0001F6A9> /xf0/x9f/x9a/xa9 TRIANGULAR FLAG ON POST ++<U0001F6AA> /xf0/x9f/x9a/xaa DOOR ++<U0001F6AB> /xf0/x9f/x9a/xab NO ENTRY SIGN ++<U0001F6AC> /xf0/x9f/x9a/xac SMOKING SYMBOL ++<U0001F6AD> /xf0/x9f/x9a/xad NO SMOKING SYMBOL ++<U0001F6AE> /xf0/x9f/x9a/xae PUT LITTER IN ITS PLACE SYMBOL ++<U0001F6AF> /xf0/x9f/x9a/xaf DO NOT LITTER SYMBOL ++<U0001F6B0> /xf0/x9f/x9a/xb0 POTABLE WATER SYMBOL ++<U0001F6B1> /xf0/x9f/x9a/xb1 NON-POTABLE WATER SYMBOL ++<U0001F6B2> /xf0/x9f/x9a/xb2 BICYCLE ++<U0001F6B3> /xf0/x9f/x9a/xb3 NO BICYCLES ++<U0001F6B4> /xf0/x9f/x9a/xb4 BICYCLIST ++<U0001F6B5> /xf0/x9f/x9a/xb5 MOUNTAIN BICYCLIST ++<U0001F6B6> /xf0/x9f/x9a/xb6 PEDESTRIAN ++<U0001F6B7> /xf0/x9f/x9a/xb7 NO PEDESTRIANS ++<U0001F6B8> /xf0/x9f/x9a/xb8 CHILDREN CROSSING ++<U0001F6B9> /xf0/x9f/x9a/xb9 MENS SYMBOL ++<U0001F6BA> /xf0/x9f/x9a/xba WOMENS SYMBOL ++<U0001F6BB> /xf0/x9f/x9a/xbb RESTROOM ++<U0001F6BC> /xf0/x9f/x9a/xbc BABY SYMBOL ++<U0001F6BD> /xf0/x9f/x9a/xbd TOILET ++<U0001F6BE> /xf0/x9f/x9a/xbe WATER CLOSET ++<U0001F6BF> /xf0/x9f/x9a/xbf SHOWER ++<U0001F6C0> /xf0/x9f/x9b/x80 BATH ++<U0001F6C1> /xf0/x9f/x9b/x81 BATHTUB ++<U0001F6C2> /xf0/x9f/x9b/x82 PASSPORT CONTROL ++<U0001F6C3> /xf0/x9f/x9b/x83 CUSTOMS ++<U0001F6C4> /xf0/x9f/x9b/x84 BAGGAGE CLAIM ++<U0001F6C5> /xf0/x9f/x9b/x85 LEFT LUGGAGE ++<U0001F700> /xf0/x9f/x9c/x80 ALCHEMICAL SYMBOL FOR QUINTESSENCE ++<U0001F701> /xf0/x9f/x9c/x81 ALCHEMICAL SYMBOL FOR AIR ++<U0001F702> /xf0/x9f/x9c/x82 ALCHEMICAL SYMBOL FOR FIRE ++<U0001F703> /xf0/x9f/x9c/x83 ALCHEMICAL SYMBOL FOR EARTH ++<U0001F704> /xf0/x9f/x9c/x84 ALCHEMICAL SYMBOL FOR WATER ++<U0001F705> /xf0/x9f/x9c/x85 ALCHEMICAL SYMBOL FOR AQUAFORTIS ++<U0001F706> /xf0/x9f/x9c/x86 ALCHEMICAL SYMBOL FOR AQUA REGIA ++<U0001F707> /xf0/x9f/x9c/x87 ALCHEMICAL SYMBOL FOR AQUA REGIA-2 ++<U0001F708> /xf0/x9f/x9c/x88 ALCHEMICAL SYMBOL FOR AQUA VITAE ++<U0001F709> /xf0/x9f/x9c/x89 ALCHEMICAL SYMBOL FOR AQUA VITAE-2 ++<U0001F70A> /xf0/x9f/x9c/x8a ALCHEMICAL SYMBOL FOR VINEGAR ++<U0001F70B> /xf0/x9f/x9c/x8b ALCHEMICAL SYMBOL FOR VINEGAR-2 ++<U0001F70C> /xf0/x9f/x9c/x8c ALCHEMICAL SYMBOL FOR VINEGAR-3 ++<U0001F70D> /xf0/x9f/x9c/x8d ALCHEMICAL SYMBOL FOR SULFUR ++<U0001F70E> /xf0/x9f/x9c/x8e ALCHEMICAL SYMBOL FOR PHILOSOPHERS SULFUR ++<U0001F70F> /xf0/x9f/x9c/x8f ALCHEMICAL SYMBOL FOR BLACK SULFUR ++<U0001F710> /xf0/x9f/x9c/x90 ALCHEMICAL SYMBOL FOR MERCURY SUBLIMATE ++<U0001F711> /xf0/x9f/x9c/x91 ALCHEMICAL SYMBOL FOR MERCURY SUBLIMATE-2 ++<U0001F712> /xf0/x9f/x9c/x92 ALCHEMICAL SYMBOL FOR MERCURY SUBLIMATE-3 ++<U0001F713> /xf0/x9f/x9c/x93 ALCHEMICAL SYMBOL FOR CINNABAR ++<U0001F714> /xf0/x9f/x9c/x94 ALCHEMICAL SYMBOL FOR SALT ++<U0001F715> /xf0/x9f/x9c/x95 ALCHEMICAL SYMBOL FOR NITRE ++<U0001F716> /xf0/x9f/x9c/x96 ALCHEMICAL SYMBOL FOR VITRIOL ++<U0001F717> /xf0/x9f/x9c/x97 ALCHEMICAL SYMBOL FOR VITRIOL-2 ++<U0001F718> /xf0/x9f/x9c/x98 ALCHEMICAL SYMBOL FOR ROCK SALT ++<U0001F719> /xf0/x9f/x9c/x99 ALCHEMICAL SYMBOL FOR ROCK SALT-2 ++<U0001F71A> /xf0/x9f/x9c/x9a ALCHEMICAL SYMBOL FOR GOLD ++<U0001F71B> /xf0/x9f/x9c/x9b ALCHEMICAL SYMBOL FOR SILVER ++<U0001F71C> /xf0/x9f/x9c/x9c ALCHEMICAL SYMBOL FOR IRON ORE ++<U0001F71D> /xf0/x9f/x9c/x9d ALCHEMICAL SYMBOL FOR IRON ORE-2 ++<U0001F71E> /xf0/x9f/x9c/x9e ALCHEMICAL SYMBOL FOR CROCUS OF IRON ++<U0001F71F> /xf0/x9f/x9c/x9f ALCHEMICAL SYMBOL FOR REGULUS OF IRON ++<U0001F720> /xf0/x9f/x9c/xa0 ALCHEMICAL SYMBOL FOR COPPER ORE ++<U0001F721> /xf0/x9f/x9c/xa1 ALCHEMICAL SYMBOL FOR IRON-COPPER ORE ++<U0001F722> /xf0/x9f/x9c/xa2 ALCHEMICAL SYMBOL FOR SUBLIMATE OF COPPER ++<U0001F723> /xf0/x9f/x9c/xa3 ALCHEMICAL SYMBOL FOR CROCUS OF COPPER ++<U0001F724> /xf0/x9f/x9c/xa4 ALCHEMICAL SYMBOL FOR CROCUS OF COPPER-2 ++<U0001F725> /xf0/x9f/x9c/xa5 ALCHEMICAL SYMBOL FOR COPPER ANTIMONIATE ++<U0001F726> /xf0/x9f/x9c/xa6 ALCHEMICAL SYMBOL FOR SALT OF COPPER ANTIMONIATE ++<U0001F727> /xf0/x9f/x9c/xa7 ALCHEMICAL SYMBOL FOR SUBLIMATE OF SALT OF COPPER ++<U0001F728> /xf0/x9f/x9c/xa8 ALCHEMICAL SYMBOL FOR VERDIGRIS ++<U0001F729> /xf0/x9f/x9c/xa9 ALCHEMICAL SYMBOL FOR TIN ORE ++<U0001F72A> /xf0/x9f/x9c/xaa ALCHEMICAL SYMBOL FOR LEAD ORE ++<U0001F72B> /xf0/x9f/x9c/xab ALCHEMICAL SYMBOL FOR ANTIMONY ORE ++<U0001F72C> /xf0/x9f/x9c/xac ALCHEMICAL SYMBOL FOR SUBLIMATE OF ANTIMONY ++<U0001F72D> /xf0/x9f/x9c/xad ALCHEMICAL SYMBOL FOR SALT OF ANTIMONY ++<U0001F72E> /xf0/x9f/x9c/xae ALCHEMICAL SYMBOL FOR SUBLIMATE OF SALT OF ANTIMONY ++<U0001F72F> /xf0/x9f/x9c/xaf ALCHEMICAL SYMBOL FOR VINEGAR OF ANTIMONY ++<U0001F730> /xf0/x9f/x9c/xb0 ALCHEMICAL SYMBOL FOR REGULUS OF ANTIMONY ++<U0001F731> /xf0/x9f/x9c/xb1 ALCHEMICAL SYMBOL FOR REGULUS OF ANTIMONY-2 ++<U0001F732> /xf0/x9f/x9c/xb2 ALCHEMICAL SYMBOL FOR REGULUS ++<U0001F733> /xf0/x9f/x9c/xb3 ALCHEMICAL SYMBOL FOR REGULUS-2 ++<U0001F734> /xf0/x9f/x9c/xb4 ALCHEMICAL SYMBOL FOR REGULUS-3 ++<U0001F735> /xf0/x9f/x9c/xb5 ALCHEMICAL SYMBOL FOR REGULUS-4 ++<U0001F736> /xf0/x9f/x9c/xb6 ALCHEMICAL SYMBOL FOR ALKALI ++<U0001F737> /xf0/x9f/x9c/xb7 ALCHEMICAL SYMBOL FOR ALKALI-2 ++<U0001F738> /xf0/x9f/x9c/xb8 ALCHEMICAL SYMBOL FOR MARCASITE ++<U0001F739> /xf0/x9f/x9c/xb9 ALCHEMICAL SYMBOL FOR SAL-AMMONIAC ++<U0001F73A> /xf0/x9f/x9c/xba ALCHEMICAL SYMBOL FOR ARSENIC ++<U0001F73B> /xf0/x9f/x9c/xbb ALCHEMICAL SYMBOL FOR REALGAR ++<U0001F73C> /xf0/x9f/x9c/xbc ALCHEMICAL SYMBOL FOR REALGAR-2 ++<U0001F73D> /xf0/x9f/x9c/xbd ALCHEMICAL SYMBOL FOR AURIPIGMENT ++<U0001F73E> /xf0/x9f/x9c/xbe ALCHEMICAL SYMBOL FOR BISMUTH ORE ++<U0001F73F> /xf0/x9f/x9c/xbf ALCHEMICAL SYMBOL FOR TARTAR ++<U0001F740> /xf0/x9f/x9d/x80 ALCHEMICAL SYMBOL FOR TARTAR-2 ++<U0001F741> /xf0/x9f/x9d/x81 ALCHEMICAL SYMBOL FOR QUICK LIME ++<U0001F742> /xf0/x9f/x9d/x82 ALCHEMICAL SYMBOL FOR BORAX ++<U0001F743> /xf0/x9f/x9d/x83 ALCHEMICAL SYMBOL FOR BORAX-2 ++<U0001F744> /xf0/x9f/x9d/x84 ALCHEMICAL SYMBOL FOR BORAX-3 ++<U0001F745> /xf0/x9f/x9d/x85 ALCHEMICAL SYMBOL FOR ALUM ++<U0001F746> /xf0/x9f/x9d/x86 ALCHEMICAL SYMBOL FOR OIL ++<U0001F747> /xf0/x9f/x9d/x87 ALCHEMICAL SYMBOL FOR SPIRIT ++<U0001F748> /xf0/x9f/x9d/x88 ALCHEMICAL SYMBOL FOR TINCTURE ++<U0001F749> /xf0/x9f/x9d/x89 ALCHEMICAL SYMBOL FOR GUM ++<U0001F74A> /xf0/x9f/x9d/x8a ALCHEMICAL SYMBOL FOR WAX ++<U0001F74B> /xf0/x9f/x9d/x8b ALCHEMICAL SYMBOL FOR POWDER ++<U0001F74C> /xf0/x9f/x9d/x8c ALCHEMICAL SYMBOL FOR CALX ++<U0001F737> /xf0/x9f/x9c/xb7 ALCHEMICAL SYMBOL FOR ALKALI-2 ++<U0001F738> /xf0/x9f/x9c/xb8 ALCHEMICAL SYMBOL FOR MARCASITE ++<U0001F739> /xf0/x9f/x9c/xb9 ALCHEMICAL SYMBOL FOR SAL-AMMONIAC ++<U0001F73A> /xf0/x9f/x9c/xba ALCHEMICAL SYMBOL FOR ARSENIC ++<U0001F73B> /xf0/x9f/x9c/xbb ALCHEMICAL SYMBOL FOR REALGAR ++<U0001F73C> /xf0/x9f/x9c/xbc ALCHEMICAL SYMBOL FOR REALGAR-2 ++<U0001F73D> /xf0/x9f/x9c/xbd ALCHEMICAL SYMBOL FOR AURIPIGMENT ++<U0001F73E> /xf0/x9f/x9c/xbe ALCHEMICAL SYMBOL FOR BISMUTH ORE ++<U0001F73F> /xf0/x9f/x9c/xbf ALCHEMICAL SYMBOL FOR TARTAR ++<U0001F740> /xf0/x9f/x9d/x80 ALCHEMICAL SYMBOL FOR TARTAR-2 ++<U0001F741> /xf0/x9f/x9d/x81 ALCHEMICAL SYMBOL FOR QUICK LIME ++<U0001F742> /xf0/x9f/x9d/x82 ALCHEMICAL SYMBOL FOR BORAX ++<U0001F743> /xf0/x9f/x9d/x83 ALCHEMICAL SYMBOL FOR BORAX-2 ++<U0001F744> /xf0/x9f/x9d/x84 ALCHEMICAL SYMBOL FOR BORAX-3 ++<U0001F745> /xf0/x9f/x9d/x85 ALCHEMICAL SYMBOL FOR ALUM ++<U0001F746> /xf0/x9f/x9d/x86 ALCHEMICAL SYMBOL FOR OIL ++<U0001F747> /xf0/x9f/x9d/x87 ALCHEMICAL SYMBOL FOR SPIRIT ++<U0001F748> /xf0/x9f/x9d/x88 ALCHEMICAL SYMBOL FOR TINCTURE ++<U0001F749> /xf0/x9f/x9d/x89 ALCHEMICAL SYMBOL FOR GUM ++<U0001F74A> /xf0/x9f/x9d/x8a ALCHEMICAL SYMBOL FOR WAX ++<U0001F74B> /xf0/x9f/x9d/x8b ALCHEMICAL SYMBOL FOR POWDER ++<U0001F74C> /xf0/x9f/x9d/x8c ALCHEMICAL SYMBOL FOR CALX ++<U0001F74D> /xf0/x9f/x9d/x8d ALCHEMICAL SYMBOL FOR TUTTY ++<U0001F74E> /xf0/x9f/x9d/x8e ALCHEMICAL SYMBOL FOR CAPUT MORTUUM ++<U0001F74F> /xf0/x9f/x9d/x8f ALCHEMICAL SYMBOL FOR SCEPTER OF JOVE ++<U0001F750> /xf0/x9f/x9d/x90 ALCHEMICAL SYMBOL FOR CADUCEUS ++<U0001F751> /xf0/x9f/x9d/x91 ALCHEMICAL SYMBOL FOR TRIDENT ++<U0001F752> /xf0/x9f/x9d/x92 ALCHEMICAL SYMBOL FOR STARRED TRIDENT ++<U0001F753> /xf0/x9f/x9d/x93 ALCHEMICAL SYMBOL FOR LODESTONE ++<U0001F754> /xf0/x9f/x9d/x94 ALCHEMICAL SYMBOL FOR SOAP ++<U0001F755> /xf0/x9f/x9d/x95 ALCHEMICAL SYMBOL FOR URINE ++<U0001F756> /xf0/x9f/x9d/x96 ALCHEMICAL SYMBOL FOR HORSE DUNG ++<U0001F757> /xf0/x9f/x9d/x97 ALCHEMICAL SYMBOL FOR ASHES ++<U0001F758> /xf0/x9f/x9d/x98 ALCHEMICAL SYMBOL FOR POT ASHES ++<U0001F759> /xf0/x9f/x9d/x99 ALCHEMICAL SYMBOL FOR BRICK ++<U0001F75A> /xf0/x9f/x9d/x9a ALCHEMICAL SYMBOL FOR POWDERED BRICK ++<U0001F75B> /xf0/x9f/x9d/x9b ALCHEMICAL SYMBOL FOR AMALGAM ++<U0001F75C> /xf0/x9f/x9d/x9c ALCHEMICAL SYMBOL FOR STRATUM SUPER STRATUM ++<U0001F75D> /xf0/x9f/x9d/x9d ALCHEMICAL SYMBOL FOR STRATUM SUPER STRATUM-2 ++<U0001F75E> /xf0/x9f/x9d/x9e ALCHEMICAL SYMBOL FOR SUBLIMATION ++<U0001F75F> /xf0/x9f/x9d/x9f ALCHEMICAL SYMBOL FOR PRECIPITATE ++<U0001F760> /xf0/x9f/x9d/xa0 ALCHEMICAL SYMBOL FOR DISTILL ++<U0001F761> /xf0/x9f/x9d/xa1 ALCHEMICAL SYMBOL FOR DISSOLVE ++<U0001F762> /xf0/x9f/x9d/xa2 ALCHEMICAL SYMBOL FOR DISSOLVE-2 ++<U0001F763> /xf0/x9f/x9d/xa3 ALCHEMICAL SYMBOL FOR PURIFY ++<U0001F764> /xf0/x9f/x9d/xa4 ALCHEMICAL SYMBOL FOR PUTREFACTION ++<U0001F765> /xf0/x9f/x9d/xa5 ALCHEMICAL SYMBOL FOR CRUCIBLE ++<U0001F766> /xf0/x9f/x9d/xa6 ALCHEMICAL SYMBOL FOR CRUCIBLE-2 ++<U0001F767> /xf0/x9f/x9d/xa7 ALCHEMICAL SYMBOL FOR CRUCIBLE-3 ++<U0001F768> /xf0/x9f/x9d/xa8 ALCHEMICAL SYMBOL FOR CRUCIBLE-4 ++<U0001F769> /xf0/x9f/x9d/xa9 ALCHEMICAL SYMBOL FOR CRUCIBLE-5 ++<U0001F76A> /xf0/x9f/x9d/xaa ALCHEMICAL SYMBOL FOR ALEMBIC ++<U0001F76B> /xf0/x9f/x9d/xab ALCHEMICAL SYMBOL FOR BATH OF MARY ++<U0001F76C> /xf0/x9f/x9d/xac ALCHEMICAL SYMBOL FOR BATH OF VAPOURS ++<U0001F76D> /xf0/x9f/x9d/xad ALCHEMICAL SYMBOL FOR RETORT ++<U0001F76E> /xf0/x9f/x9d/xae ALCHEMICAL SYMBOL FOR HOUR ++<U0001F76F> /xf0/x9f/x9d/xaf ALCHEMICAL SYMBOL FOR NIGHT ++<U0001F770> /xf0/x9f/x9d/xb0 ALCHEMICAL SYMBOL FOR DAY-NIGHT ++<U0001F771> /xf0/x9f/x9d/xb1 ALCHEMICAL SYMBOL FOR MONTH ++<U0001F772> /xf0/x9f/x9d/xb2 ALCHEMICAL SYMBOL FOR HALF DRAM ++<U0001F773> /xf0/x9f/x9d/xb3 ALCHEMICAL SYMBOL FOR HALF OUNCE + <U00020000>..<U0002003F> /xf0/xa0/x80/x80 <CJK> + <U00020040>..<U0002007F> /xf0/xa0/x81/x80 <CJK> + <U00020080>..<U000200BF> /xf0/xa0/x82/x80 <CJK> +Index: glibc-2.12-2-gc4ccff1/localedata/locales/ar_IN +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/ar_IN ++++ glibc-2.12-2-gc4ccff1/localedata/locales/ar_IN +@@ -52,7 +52,7 @@ LC_MONETARY + % for IBM Class for Unicode. + % + int_curr_symbol "<U0049><U004E><U0052><U0020>" +-currency_symbol "<U20A8>" ++currency_symbol "<U20B9>" + mon_decimal_point "<U002E>" + mon_thousands_sep "<U002C>" + mon_grouping 3;2 +Index: glibc-2.12-2-gc4ccff1/localedata/locales/as_IN +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/as_IN ++++ glibc-2.12-2-gc4ccff1/localedata/locales/as_IN +@@ -51,7 +51,7 @@ END LC_NUMERIC + %%%%%%%%%%%%% + LC_MONETARY + int_curr_symbol "<U0049><U004E><U0052><U0020>" +-currency_symbol "<U099F><U0995><U09BE>" ++currency_symbol "<U20B9>" + mon_decimal_point "<U002E>" + mon_thousands_sep "<U002C>" + mon_grouping 3;2 +Index: glibc-2.12-2-gc4ccff1/localedata/locales/bn_IN +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/bn_IN ++++ glibc-2.12-2-gc4ccff1/localedata/locales/bn_IN +@@ -53,7 +53,7 @@ LC_MONETARY + % for IBM Class for Unicode. + % + int_curr_symbol "<U0049><U004E><U0052><U0020>" +-currency_symbol "<U099F><U09BE><U0995><U09BE>" ++currency_symbol "<U20B9>" + mon_decimal_point "<U002E>" + mon_thousands_sep "<U002C>" + mon_grouping 2;3 +Index: glibc-2.12-2-gc4ccff1/localedata/locales/en_IN +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/en_IN ++++ glibc-2.12-2-gc4ccff1/localedata/locales/en_IN +@@ -52,7 +52,7 @@ LC_MONETARY + % for IBM Class for Unicode. + % + int_curr_symbol "<U0049><U004E><U0052><U0020>" +-currency_symbol "<U20A8>" ++currency_symbol "<U20B9>" + mon_decimal_point "<U002E>" + mon_thousands_sep "<U002C>" + mon_grouping 3;2 +Index: glibc-2.12-2-gc4ccff1/localedata/locales/gu_IN +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/gu_IN ++++ glibc-2.12-2-gc4ccff1/localedata/locales/gu_IN +@@ -71,7 +71,7 @@ LC_MONETARY + % for IBM Class for Unicode/Java + % + int_curr_symbol "<U0049><U004E><U0052><U0020>" +-currency_symbol "<U0AB0><U0AC1>" ++currency_symbol "<U20B9>" + mon_decimal_point "<U002E>" + mon_thousands_sep "<U002C>" + mon_grouping 3 +Index: glibc-2.12-2-gc4ccff1/localedata/locales/hi_IN +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/hi_IN ++++ glibc-2.12-2-gc4ccff1/localedata/locales/hi_IN +@@ -69,7 +69,7 @@ LC_MONETARY + % for IBM Class for Unicode/Java + % + int_curr_symbol "<U0049><U004E><U0052><U0020>" +-currency_symbol "<U0930><U0942>" ++currency_symbol "<U20B9>" + mon_decimal_point "<U002E>" + mon_thousands_sep "<U002C>" + mon_grouping 3 +Index: glibc-2.12-2-gc4ccff1/localedata/locales/kn_IN +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/kn_IN ++++ glibc-2.12-2-gc4ccff1/localedata/locales/kn_IN +@@ -71,8 +71,7 @@ LC_MONETARY + % for IBM Class for Unicode/Java + % + int_curr_symbol "<U0049><U004E><U0052><U0020>" +-% *** Change this to reflect Kannada , in Dev it is RA with VS U attached +-currency_symbol "<U0CB0><U0CC2>" ++currency_symbol "<U20B9>" + mon_decimal_point "<U002E>" + mon_thousands_sep "<U002C>" + mon_grouping 3 +Index: glibc-2.12-2-gc4ccff1/localedata/locales/kok_IN +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/kok_IN ++++ glibc-2.12-2-gc4ccff1/localedata/locales/kok_IN +@@ -49,7 +49,7 @@ LC_MONETARY + % for IBM Class for Unicode. + % + int_curr_symbol "<U0049><U004E><U0052><U0020>" +-currency_symbol "<U0930><U0941>" ++currency_symbol "<U20B9>" + mon_decimal_point "<U002E>" + mon_thousands_sep "<U002C>" + mon_grouping 3 +Index: glibc-2.12-2-gc4ccff1/localedata/locales/ks_IN +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/ks_IN ++++ glibc-2.12-2-gc4ccff1/localedata/locales/ks_IN +@@ -57,7 +57,7 @@ LC_MONETARY + % for IBM Class for Unicode. + % + int_curr_symbol "<U0049><U004E><U0052><U0020>" +-currency_symbol "<U20A8>" ++currency_symbol "<U20B9>" + mon_decimal_point "<U002E>" + mon_thousands_sep "<U002C>" + mon_grouping 3 +Index: glibc-2.12-2-gc4ccff1/localedata/locales/ml_IN +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/ml_IN ++++ glibc-2.12-2-gc4ccff1/localedata/locales/ml_IN +@@ -69,7 +69,7 @@ LC_MONETARY + % for IBM Class for Unicode. + % + int_curr_symbol "<U0049><U004E><U0052><U0020>" +-currency_symbol "<U0D30><U0D42>" ++currency_symbol "<U20B9>" + mon_decimal_point "<U002E>" + mon_thousands_sep "<U002C>" + mon_grouping 3;2 +Index: glibc-2.12-2-gc4ccff1/localedata/locales/mr_IN +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/mr_IN ++++ glibc-2.12-2-gc4ccff1/localedata/locales/mr_IN +@@ -70,7 +70,7 @@ LC_MONETARY + % for IBM Class for Unicode. + % + int_curr_symbol "<U0049><U004E><U0052><U0020>" +-currency_symbol "<U0930><U0941>" ++currency_symbol "<U20B9>" + mon_decimal_point "<U002E>" + mon_thousands_sep "<U002C>" + mon_grouping 3 +Index: glibc-2.12-2-gc4ccff1/localedata/locales/or_IN +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/or_IN ++++ glibc-2.12-2-gc4ccff1/localedata/locales/or_IN +@@ -607,7 +607,7 @@ END LC_NUMERIC + %%%%%%%%%%%%% + LC_MONETARY + int_curr_symbol "<U0049><U004E><U0052><U0020>" +-currency_symbol "<U003D><U0030><U0023><U0052><U0073><U002E><U007C><U0031><U0023><U0052><U0065><U002E><U007C><U0031><U003C><U0052><U0073><U002E>" ++currency_symbol "<U20B9>" + mon_decimal_point "<U002E>" + mon_thousands_sep "<U002C>" + mon_grouping 3;2 +Index: glibc-2.12-2-gc4ccff1/localedata/locales/pa_IN +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/pa_IN ++++ glibc-2.12-2-gc4ccff1/localedata/locales/pa_IN +@@ -66,7 +66,7 @@ END LC_COLLATE + LC_MONETARY + % This is the POSIX Locale definition the LC_MONETARY category. + int_curr_symbol "<U0049><U004E><U0052><U0020>" +-currency_symbol "<U0A30><U0A41><U0A2A><U0A0F>" ++currency_symbol "<U20B9>" + mon_decimal_point "<U002E>" + mon_thousands_sep "<U002C>" + mon_grouping 3 +Index: glibc-2.12-2-gc4ccff1/localedata/locales/sa_IN +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/sa_IN ++++ glibc-2.12-2-gc4ccff1/localedata/locales/sa_IN +@@ -52,7 +52,7 @@ LC_MONETARY + % for IBM Class for Unicode/Java + % + int_curr_symbol "<U0049><U004E><U0052><U0020>" +-currency_symbol "<U0930><U0942>" ++currency_symbol "<U20B9>" + mon_decimal_point "<U002E>" + mon_thousands_sep "<U002C>" + mon_grouping 3 +Index: glibc-2.12-2-gc4ccff1/localedata/locales/sd_IN +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/sd_IN ++++ glibc-2.12-2-gc4ccff1/localedata/locales/sd_IN +@@ -57,7 +57,7 @@ LC_MONETARY + % for IBM Class for Unicode. + % + int_curr_symbol "<U0049><U004E><U0052><U0020>" +-currency_symbol "<U20A8>" ++currency_symbol "<U20B9>" + mon_decimal_point "<U002E>" + mon_thousands_sep "<U002C>" + mon_grouping 3 +Index: glibc-2.12-2-gc4ccff1/localedata/locales/ta_IN +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/ta_IN ++++ glibc-2.12-2-gc4ccff1/localedata/locales/ta_IN +@@ -74,7 +74,7 @@ LC_MONETARY + % for IBM Class for Unicode. + % + int_curr_symbol "<U0049><U004E><U0052><U0020>" +-currency_symbol "<U20A8>" ++currency_symbol "<U20B9>" + mon_decimal_point "<U002E>" + mon_thousands_sep "<U002C>" + mon_grouping 3;2 +Index: glibc-2.12-2-gc4ccff1/localedata/locales/te_IN +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/te_IN ++++ glibc-2.12-2-gc4ccff1/localedata/locales/te_IN +@@ -73,7 +73,7 @@ LC_MONETARY + % for IBM Class for Unicode. + % + int_curr_symbol "<U0049><U004E><U0052><U0020>" +-currency_symbol "<U0C30><U0C42><U002E>" ++currency_symbol "<U20B9>" + mon_decimal_point "<U002E>" + mon_thousands_sep "<U002C>" + mon_grouping 3;2 diff --git a/src/patches/glibc/glibc-rh694386.patch b/src/patches/glibc/glibc-rh694386.patch new file mode 100644 index 0000000..3932eb8 --- /dev/null +++ b/src/patches/glibc/glibc-rh694386.patch @@ -0,0 +1,86 @@ +2011-03-28 Andreas Schwab schwab@linux-m68k.org + + * sysdeps/powerpc/powerpc32/power4/strncmp.S: Don't read past + differing bytes. + * sysdeps/powerpc/powerpc64/power4/strncmp.S: Likewise. + +diff --git a/sysdeps/powerpc/powerpc32/power4/strncmp.S b/sysdeps/powerpc/powerpc32/power4/strncmp.S +index fc0835e..f5d47af 100644 +--- a/sysdeps/powerpc/powerpc32/power4/strncmp.S ++++ b/sysdeps/powerpc/powerpc32/power4/strncmp.S +@@ -139,30 +139,31 @@ L(u1): + bdz L(u4) + cmpw rWORD1, rWORD2 + beq- cr1, L(u4) ++ bne- L(u4) + lbzu rWORD3, 1(rSTR1) + lbzu rWORD4, 1(rSTR2) +- bne- L(u4) + cmpwi cr1, rWORD3, 0 + bdz L(u3) + cmpw rWORD3, rWORD4 + beq- cr1, L(u3) ++ bne- L(u3) + lbzu rWORD1, 1(rSTR1) + lbzu rWORD2, 1(rSTR2) +- bne- L(u3) + cmpwi cr1, rWORD1, 0 + bdz L(u4) + cmpw rWORD1, rWORD2 + beq- cr1, L(u4) ++ bne- L(u4) + lbzu rWORD3, 1(rSTR1) + lbzu rWORD4, 1(rSTR2) +- bne- L(u4) + cmpwi cr1, rWORD3, 0 + bdz L(u3) + cmpw rWORD3, rWORD4 + beq- cr1, L(u3) ++ bne- L(u3) + lbzu rWORD1, 1(rSTR1) + lbzu rWORD2, 1(rSTR2) +- beq+ L(u1) ++ b L(u1) + + L(u3): sub rRTN, rWORD3, rWORD4 + blr +diff --git a/sysdeps/powerpc/powerpc64/power4/strncmp.S b/sysdeps/powerpc/powerpc64/power4/strncmp.S +index 7a1665d..94ae85b 100644 +--- a/sysdeps/powerpc/powerpc64/power4/strncmp.S ++++ b/sysdeps/powerpc/powerpc64/power4/strncmp.S +@@ -143,30 +143,31 @@ L(u1): + bdz L(u4) + cmpd rWORD1, rWORD2 + beq- cr1, L(u4) ++ bne- L(u4) + lbzu rWORD3, 1(rSTR1) + lbzu rWORD4, 1(rSTR2) +- bne- L(u4) + cmpdi cr1, rWORD3, 0 + bdz L(u3) + cmpd rWORD3, rWORD4 + beq- cr1, L(u3) ++ bne- L(u3) + lbzu rWORD1, 1(rSTR1) + lbzu rWORD2, 1(rSTR2) +- bne- L(u3) + cmpdi cr1, rWORD1, 0 + bdz L(u4) + cmpd rWORD1, rWORD2 + beq- cr1, L(u4) ++ bne- L(u4) + lbzu rWORD3, 1(rSTR1) + lbzu rWORD4, 1(rSTR2) +- bne- L(u4) + cmpdi cr1, rWORD3, 0 + bdz L(u3) + cmpd rWORD3, rWORD4 + beq- cr1, L(u3) ++ bne- L(u3) + lbzu rWORD1, 1(rSTR1) + lbzu rWORD2, 1(rSTR2) +- beq+ L(u1) ++ b L(u1) + + L(u3): sub rRTN, rWORD3, rWORD4 + blr diff --git a/src/patches/glibc/glibc-rh695595.patch b/src/patches/glibc/glibc-rh695595.patch new file mode 100644 index 0000000..0e6c72b --- /dev/null +++ b/src/patches/glibc/glibc-rh695595.patch @@ -0,0 +1,17 @@ +2010-11-11 H.J. Lu hongjiu.lu@intel.com + + * sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features): + Support Intel processor model 6 and model 0x2c. + +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/init-arch.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/init-arch.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/init-arch.c +@@ -81,6 +81,7 @@ __init_cpu_features (void) + case 0x1e: + case 0x1f: + case 0x25: ++ case 0x2c: + case 0x2e: + case 0x2f: + /* Rep string instructions are fast on Intel Core i3, i5 diff --git a/src/patches/glibc/glibc-rh695963.patch b/src/patches/glibc/glibc-rh695963.patch new file mode 100644 index 0000000..e8053dc --- /dev/null +++ b/src/patches/glibc/glibc-rh695963.patch @@ -0,0 +1,1284 @@ +2010-08-27 Ulrich Drepper drepper@redhat.com + + * sysdeps/x86_64/multiarch/strlen-no-bsf.S: Move to .text.slow section. + + * sysdeps/x86_64/strlen.S: Minimal code improvement. + +2010-08-26 H.J. Lu hongjiu.lu@intel.com + + * sysdeps/x86_64/strlen.S: Unroll the loop. + * sysdeps/x86_64/multiarch/Makefile (sysdep_routines): Add + strlen-sse2 strlen-sse2-bsf. + * sysdeps/x86_64/multiarch/strlen.S ((strlen): Return + __strlen_no_bsf if bit_Slow_BSF is set. + (__strlen_sse42): Removed. + * sysdeps/x86_64/multiarch/strlen-no-bsf.S: New file. + * sysdeps/x86_64/multiarch/strlen-sse4.S: New file. + +2010-08-25 H.J. Lu hongjiu.lu@intel.com + + * sysdeps/i386/i686/multiarch/Makefile (sysdep_routines): Add + strlen-sse2 strlen-sse2-bsf. + * sysdeps/i386/i686/multiarch/strlen.S (strlen): Return + __strlen_sse2_bsf if bit_Slow_BSF is unset. + (__strlen_sse2): Removed. + * sysdeps/i386/i686/multiarch/strlen-sse2-bsf.S: New file. + * sysdeps/i386/i686/multiarch/strlen-sse2.S: New file. + * sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features): Set + bit_Slow_BSF for Atom. + * sysdeps/x86_64/multiarch/init-arch.h (bit_Slow_BSF): Define. + (index_Slow_BSF): Define. + (HAS_SLOW_BSF): Define. + +Index: glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/i386/i686/multiarch/Makefile ++++ glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/Makefile +@@ -9,7 +9,8 @@ sysdep_routines += bzero-sse2 memset-sse + memmove-ssse3-rep bcopy-ssse3 bcopy-ssse3-rep \ + memset-sse2-rep bzero-sse2-rep strcmp-ssse3 \ + strcmp-sse4 strncmp-c strncmp-ssse3 strncmp-sse4 \ +- memcmp-ssse3 memcmp-sse4 strcasestr-nonascii ++ memcmp-ssse3 memcmp-sse4 strcasestr-nonascii \ ++ strlen-sse2 strlen-sse2-bsf + ifeq (yes,$(config-cflags-sse4)) + sysdep_routines += strcspn-c strpbrk-c strspn-c strstr-c strcasestr-c + CFLAGS-strcspn-c.c += -msse4 +Index: glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/strlen-sse2-bsf.S +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/strlen-sse2-bsf.S +@@ -0,0 +1,127 @@ ++/* strlen with SSE2 and BSF ++ Copyright (C) 2010 Free Software Foundation, Inc. ++ Contributed by Intel Corporation. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#if defined SHARED && !defined NOT_IN_libc ++ ++#include <sysdep.h> ++#include "asm-syntax.h" ++ ++#define CFI_PUSH(REG) \ ++ cfi_adjust_cfa_offset (4); \ ++ cfi_rel_offset (REG, 0) ++ ++#define CFI_POP(REG) \ ++ cfi_adjust_cfa_offset (-4); \ ++ cfi_restore (REG) ++ ++#define PUSH(REG) pushl REG; CFI_PUSH (REG) ++#define POP(REG) popl REG; CFI_POP (REG) ++#define PARMS 4 + 8 /* Preserve ESI and EDI. */ ++#define STR PARMS ++#define ENTRANCE PUSH (%esi); PUSH (%edi); cfi_remember_state ++#define RETURN POP (%edi); POP (%esi); ret; \ ++ cfi_restore_state; cfi_remember_state ++ ++ .text ++ENTRY ( __strlen_sse2_bsf) ++ ENTRANCE ++ mov STR(%esp), %edi ++ xor %eax, %eax ++ mov %edi, %ecx ++ and $0x3f, %ecx ++ pxor %xmm0, %xmm0 ++ cmp $0x30, %ecx ++ ja L(next) ++ movdqu (%edi), %xmm1 ++ pcmpeqb %xmm1, %xmm0 ++ pmovmskb %xmm0, %edx ++ test %edx, %edx ++ jnz L(exit_less16) ++ mov %edi, %eax ++ and $-16, %eax ++ jmp L(align16_start) ++L(next): ++ ++ mov %edi, %eax ++ and $-16, %eax ++ pcmpeqb (%eax), %xmm0 ++ mov $-1, %esi ++ sub %eax, %ecx ++ shl %cl, %esi ++ pmovmskb %xmm0, %edx ++ and %esi, %edx ++ jnz L(exit) ++L(align16_start): ++ pxor %xmm0, %xmm0 ++ pxor %xmm1, %xmm1 ++ pxor %xmm2, %xmm2 ++ pxor %xmm3, %xmm3 ++ .p2align 4 ++L(align16_loop): ++ pcmpeqb 16(%eax), %xmm0 ++ pmovmskb %xmm0, %edx ++ test %edx, %edx ++ jnz L(exit16) ++ ++ pcmpeqb 32(%eax), %xmm1 ++ pmovmskb %xmm1, %edx ++ test %edx, %edx ++ jnz L(exit32) ++ ++ pcmpeqb 48(%eax), %xmm2 ++ pmovmskb %xmm2, %edx ++ test %edx, %edx ++ jnz L(exit48) ++ ++ pcmpeqb 64(%eax), %xmm3 ++ pmovmskb %xmm3, %edx ++ lea 64(%eax), %eax ++ test %edx, %edx ++ jz L(align16_loop) ++L(exit): ++ sub %edi, %eax ++L(exit_less16): ++ bsf %edx, %edx ++ add %edx, %eax ++ RETURN ++L(exit16): ++ sub %edi, %eax ++ bsf %edx, %edx ++ add %edx, %eax ++ add $16, %eax ++ RETURN ++L(exit32): ++ sub %edi, %eax ++ bsf %edx, %edx ++ add %edx, %eax ++ add $32, %eax ++ RETURN ++L(exit48): ++ sub %edi, %eax ++ bsf %edx, %edx ++ add %edx, %eax ++ add $48, %eax ++ POP (%edi) ++ POP (%esi) ++ ret ++ ++END ( __strlen_sse2_bsf) ++ ++#endif +Index: glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/strlen-sse2.S +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/strlen-sse2.S +@@ -0,0 +1,347 @@ ++/* strlen with SSE2 ++ Copyright (C) 2010 Free Software Foundation, Inc. ++ Contributed by Intel Corporation. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#if defined SHARED && !defined NOT_IN_libc ++ ++#include <sysdep.h> ++#include "asm-syntax.h" ++ ++#define CFI_PUSH(REG) \ ++ cfi_adjust_cfa_offset (4); \ ++ cfi_rel_offset (REG, 0) ++ ++#define CFI_POP(REG) \ ++ cfi_adjust_cfa_offset (-4); \ ++ cfi_restore (REG) ++ ++#define PUSH(REG) pushl REG; CFI_PUSH (REG) ++#define POP(REG) popl REG; CFI_POP (REG) ++#define PARMS 4 ++#define STR PARMS ++#define ENTRANCE ++#define RETURN ret ++ ++ .text ++ENTRY (__strlen_sse2) ++ ENTRANCE ++ mov STR(%esp), %edx ++ xor %eax, %eax ++ cmpb $0, (%edx) ++ jz L(exit_tail0) ++ cmpb $0, 1(%edx) ++ jz L(exit_tail1) ++ cmpb $0, 2(%edx) ++ jz L(exit_tail2) ++ cmpb $0, 3(%edx) ++ jz L(exit_tail3) ++ cmpb $0, 4(%edx) ++ jz L(exit_tail4) ++ cmpb $0, 5(%edx) ++ jz L(exit_tail5) ++ cmpb $0, 6(%edx) ++ jz L(exit_tail6) ++ cmpb $0, 7(%edx) ++ jz L(exit_tail7) ++ cmpb $0, 8(%edx) ++ jz L(exit_tail8) ++ cmpb $0, 9(%edx) ++ jz L(exit_tail9) ++ cmpb $0, 10(%edx) ++ jz L(exit_tail10) ++ cmpb $0, 11(%edx) ++ jz L(exit_tail11) ++ cmpb $0, 12(%edx) ++ jz L(exit_tail12) ++ cmpb $0, 13(%edx) ++ jz L(exit_tail13) ++ cmpb $0, 14(%edx) ++ jz L(exit_tail14) ++ cmpb $0, 15(%edx) ++ jz L(exit_tail15) ++ pxor %xmm0, %xmm0 ++ mov %edx, %eax ++ mov %edx, %ecx ++ and $-16, %eax ++ add $16, %ecx ++ add $16, %eax ++ ++ pcmpeqb (%eax), %xmm0 ++ pmovmskb %xmm0, %edx ++ pxor %xmm1, %xmm1 ++ test %edx, %edx ++ lea 16(%eax), %eax ++ jnz L(exit) ++ ++ pcmpeqb (%eax), %xmm1 ++ pmovmskb %xmm1, %edx ++ pxor %xmm2, %xmm2 ++ test %edx, %edx ++ lea 16(%eax), %eax ++ jnz L(exit) ++ ++ ++ pcmpeqb (%eax), %xmm2 ++ pmovmskb %xmm2, %edx ++ pxor %xmm3, %xmm3 ++ test %edx, %edx ++ lea 16(%eax), %eax ++ jnz L(exit) ++ ++ pcmpeqb (%eax), %xmm3 ++ pmovmskb %xmm3, %edx ++ test %edx, %edx ++ lea 16(%eax), %eax ++ jnz L(exit) ++ ++ pcmpeqb (%eax), %xmm0 ++ pmovmskb %xmm0, %edx ++ test %edx, %edx ++ lea 16(%eax), %eax ++ jnz L(exit) ++ ++ pcmpeqb (%eax), %xmm1 ++ pmovmskb %xmm1, %edx ++ test %edx, %edx ++ lea 16(%eax), %eax ++ jnz L(exit) ++ ++ pcmpeqb (%eax), %xmm2 ++ pmovmskb %xmm2, %edx ++ test %edx, %edx ++ lea 16(%eax), %eax ++ jnz L(exit) ++ ++ pcmpeqb (%eax), %xmm3 ++ pmovmskb %xmm3, %edx ++ test %edx, %edx ++ lea 16(%eax), %eax ++ jnz L(exit) ++ ++ pcmpeqb (%eax), %xmm0 ++ pmovmskb %xmm0, %edx ++ test %edx, %edx ++ lea 16(%eax), %eax ++ jnz L(exit) ++ ++ pcmpeqb (%eax), %xmm1 ++ pmovmskb %xmm1, %edx ++ test %edx, %edx ++ lea 16(%eax), %eax ++ jnz L(exit) ++ ++ pcmpeqb (%eax), %xmm2 ++ pmovmskb %xmm2, %edx ++ test %edx, %edx ++ lea 16(%eax), %eax ++ jnz L(exit) ++ ++ pcmpeqb (%eax), %xmm3 ++ pmovmskb %xmm3, %edx ++ test %edx, %edx ++ lea 16(%eax), %eax ++ jnz L(exit) ++ ++ pcmpeqb (%eax), %xmm0 ++ pmovmskb %xmm0, %edx ++ test %edx, %edx ++ lea 16(%eax), %eax ++ jnz L(exit) ++ ++ pcmpeqb (%eax), %xmm1 ++ pmovmskb %xmm1, %edx ++ test %edx, %edx ++ lea 16(%eax), %eax ++ jnz L(exit) ++ ++ pcmpeqb (%eax), %xmm2 ++ pmovmskb %xmm2, %edx ++ test %edx, %edx ++ lea 16(%eax), %eax ++ jnz L(exit) ++ ++ pcmpeqb (%eax), %xmm3 ++ pmovmskb %xmm3, %edx ++ test %edx, %edx ++ lea 16(%eax), %eax ++ jnz L(exit) ++ ++ and $-0x40, %eax ++ PUSH (%esi) ++ PUSH (%edi) ++ PUSH (%ebx) ++ PUSH (%ebp) ++ xor %ebp, %ebp ++L(aligned_64): ++ pcmpeqb (%eax), %xmm0 ++ pcmpeqb 16(%eax), %xmm1 ++ pcmpeqb 32(%eax), %xmm2 ++ pcmpeqb 48(%eax), %xmm3 ++ pmovmskb %xmm0, %edx ++ pmovmskb %xmm1, %esi ++ pmovmskb %xmm2, %edi ++ pmovmskb %xmm3, %ebx ++ or %edx, %ebp ++ or %esi, %ebp ++ or %edi, %ebp ++ or %ebx, %ebp ++ lea 64(%eax), %eax ++ jz L(aligned_64) ++L(48leave): ++ test %edx, %edx ++ jnz L(aligned_64_exit_16) ++ test %esi, %esi ++ jnz L(aligned_64_exit_32) ++ test %edi, %edi ++ jnz L(aligned_64_exit_48) ++ mov %ebx, %edx ++ lea (%eax), %eax ++ jmp L(aligned_64_exit) ++L(aligned_64_exit_48): ++ lea -16(%eax), %eax ++ mov %edi, %edx ++ jmp L(aligned_64_exit) ++L(aligned_64_exit_32): ++ lea -32(%eax), %eax ++ mov %esi, %edx ++ jmp L(aligned_64_exit) ++L(aligned_64_exit_16): ++ lea -48(%eax), %eax ++L(aligned_64_exit): ++ POP (%ebp) ++ POP (%ebx) ++ POP (%edi) ++ POP (%esi) ++L(exit): ++ sub %ecx, %eax ++ test %dl, %dl ++ jz L(exit_high) ++ test $0x01, %dl ++ jnz L(exit_tail0) ++ ++ test $0x02, %dl ++ jnz L(exit_tail1) ++ ++ test $0x04, %dl ++ jnz L(exit_tail2) ++ ++ test $0x08, %dl ++ jnz L(exit_tail3) ++ ++ test $0x10, %dl ++ jnz L(exit_tail4) ++ ++ test $0x20, %dl ++ jnz L(exit_tail5) ++ ++ test $0x40, %dl ++ jnz L(exit_tail6) ++ add $7, %eax ++L(exit_tail0): ++ RETURN ++ ++L(exit_high): ++ add $8, %eax ++ test $0x01, %dh ++ jnz L(exit_tail0) ++ ++ test $0x02, %dh ++ jnz L(exit_tail1) ++ ++ test $0x04, %dh ++ jnz L(exit_tail2) ++ ++ test $0x08, %dh ++ jnz L(exit_tail3) ++ ++ test $0x10, %dh ++ jnz L(exit_tail4) ++ ++ test $0x20, %dh ++ jnz L(exit_tail5) ++ ++ test $0x40, %dh ++ jnz L(exit_tail6) ++ add $7, %eax ++ RETURN ++ ++ .p2align 4 ++L(exit_tail1): ++ add $1, %eax ++ RETURN ++ ++L(exit_tail2): ++ add $2, %eax ++ RETURN ++ ++L(exit_tail3): ++ add $3, %eax ++ RETURN ++ ++L(exit_tail4): ++ add $4, %eax ++ RETURN ++ ++L(exit_tail5): ++ add $5, %eax ++ RETURN ++ ++L(exit_tail6): ++ add $6, %eax ++ RETURN ++ ++L(exit_tail7): ++ add $7, %eax ++ RETURN ++ ++L(exit_tail8): ++ add $8, %eax ++ RETURN ++ ++L(exit_tail9): ++ add $9, %eax ++ RETURN ++ ++L(exit_tail10): ++ add $10, %eax ++ RETURN ++ ++L(exit_tail11): ++ add $11, %eax ++ RETURN ++ ++L(exit_tail12): ++ add $12, %eax ++ RETURN ++ ++L(exit_tail13): ++ add $13, %eax ++ RETURN ++ ++L(exit_tail14): ++ add $14, %eax ++ RETURN ++ ++L(exit_tail15): ++ add $15, %eax ++ ret ++ ++END (__strlen_sse2) ++ ++#endif +Index: glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/strlen.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/i386/i686/multiarch/strlen.S ++++ glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/strlen.S +@@ -48,6 +48,9 @@ ENTRY(strlen) + 1: leal __strlen_ia32@GOTOFF(%ebx), %eax + testl $bit_SSE2, CPUID_OFFSET+index_SSE2+__cpu_features@GOTOFF(%ebx) + jz 2f ++ leal __strlen_sse2_bsf@GOTOFF(%ebx), %eax ++ testl $bit_Slow_BSF, FEATURE_OFFSET+index_Slow_BSF+__cpu_features@GOTOFF(%ebx) ++ jz 2f + leal __strlen_sse2@GOTOFF(%ebx), %eax + 2: popl %ebx + cfi_adjust_cfa_offset (-4); +@@ -55,84 +58,6 @@ ENTRY(strlen) + ret + END(strlen) + +-#define CFI_POP(REG) \ +- cfi_adjust_cfa_offset (-4); \ +- cfi_restore (REG) +- +-#define RETURN popl %esi; CFI_POP (esi); ret +- +- .text +-ENTRY (__strlen_sse2) +-/* +- * This implementation uses SSE instructions to compare up to 16 bytes +- * at a time looking for the end of string (null char). +- */ +- pushl %esi +- cfi_adjust_cfa_offset (4) +- cfi_rel_offset (%esi, 0) +- mov 8(%esp), %eax +- mov %eax, %ecx +- pxor %xmm0, %xmm0 /* 16 null chars */ +- mov %eax, %esi +- and $15, %ecx +- jz 1f /* string is 16 byte aligned */ +- +- /* +- * Unaligned case. Round down to 16-byte boundary before comparing +- * 16 bytes for a null char. The code then compensates for any extra chars +- * preceding the start of the string. +- */ +- and $-16, %esi +- +- pcmpeqb (%esi), %xmm0 +- lea 16(%eax), %esi +- pmovmskb %xmm0, %edx +- +- shr %cl, %edx /* Compensate for bytes preceding the string */ +- test %edx, %edx +- jnz 2f +- sub %ecx, %esi /* no null, adjust to next 16-byte boundary */ +- pxor %xmm0, %xmm0 /* clear xmm0, may have been changed... */ +- +- .p2align 4 +-1: /* 16 byte aligned */ +- pcmpeqb (%esi), %xmm0 /* look for null bytes */ +- pmovmskb %xmm0, %edx /* move each byte mask of %xmm0 to edx */ +- +- add $16, %esi /* prepare to search next 16 bytes */ +- test %edx, %edx /* if no null byte, %edx must be 0 */ +- jnz 2f /* found a null */ +- +- pcmpeqb (%esi), %xmm0 +- pmovmskb %xmm0, %edx +- add $16, %esi +- test %edx, %edx +- jnz 2f +- +- pcmpeqb (%esi), %xmm0 +- pmovmskb %xmm0, %edx +- add $16, %esi +- test %edx, %edx +- jnz 2f +- +- pcmpeqb (%esi), %xmm0 +- pmovmskb %xmm0, %edx +- add $16, %esi +- test %edx, %edx +- jz 1b +- +-2: +- neg %eax +- lea -16(%eax, %esi), %eax /* calculate exact offset */ +- bsf %edx, %ecx /* Least significant 1 bit is index of null */ +- add %ecx, %eax +- popl %esi +- cfi_adjust_cfa_offset (-4) +- cfi_restore (%esi) +- ret +- +-END (__strlen_sse2) +- + # undef ENTRY + # define ENTRY(name) \ + .type __strlen_ia32, @function; \ +--- a/sysdeps/x86_64/multiarch/Makefile 2012-03-01 10:43:30.060487726 -0700 ++++ b/sysdeps/x86_64/multiarch/Makefile 2012-03-01 10:45:57.894692115 -0700 +@@ -7,7 +7,7 @@ ifeq ($(subdir),string) + sysdep_routines += stpncpy-c strncpy-c strcmp-ssse3 strncmp-ssse3 \ + strend-sse4 memcmp-sse4 \ + strcasestr-nonascii strcasecmp_l-ssse3 \ +- strncase_l-ssse3 \ ++ strncase_l-ssse3 strlen-sse4 strlen-no-bsf \ + memset-x86-64 + ifeq (yes,$(config-cflags-sse4)) + sysdep_routines += strcspn-c strpbrk-c strspn-c strstr-c strcasestr-c +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/init-arch.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/init-arch.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/init-arch.c +@@ -77,6 +77,12 @@ __init_cpu_features (void) + model += extended_model; + switch (model) + { ++ case 0x1c: ++ case 0x26: ++ /* BSF is slow on Atom. */ ++ __cpu_features.feature[index_Slow_BSF] |= bit_Slow_BSF; ++ break; ++ + case 0x1a: + case 0x1e: + case 0x1f: +--- a/sysdeps/x86_64/multiarch/init-arch.h 2012-03-01 10:43:30.061487720 -0700 ++++ b/sysdeps/x86_64/multiarch/init-arch.h 2012-03-01 10:48:13.371963005 -0700 +@@ -17,6 +17,7 @@ + 02111-1307 USA. */ + + #define bit_Fast_Rep_String (1 << 0) ++#define bit_Slow_BSF (1 << 2) + #define bit_Prefer_SSE_for_memop (1 << 3) + + #ifdef __ASSEMBLER__ +@@ -34,6 +35,7 @@ + # define index_SSE4_2 COMMON_CPUID_INDEX_1*CPUID_SIZE+CPUID_ECX_OFFSET + + #define index_Fast_Rep_String FEATURE_INDEX_1*FEATURE_SIZE ++# define index_Slow_BSF FEATURE_INDEX_1*FEATURE_SIZE + # define index_Prefer_SSE_for_memop FEATURE_INDEX_1*FEATURE_SIZE + + #else /* __ASSEMBLER__ */ +@@ -105,11 +107,15 @@ extern const struct cpu_features *__get_ + # define HAS_FMA HAS_CPU_FEATURE (COMMON_CPUID_INDEX_1, ecx, 12) + + # define index_Fast_Rep_String FEATURE_INDEX_1 ++# define index_Slow_BSF FEATURE_INDEX_1 + # define index_Prefer_SSE_for_memop FEATURE_INDEX_1 + + #define HAS_ARCH_FEATURE(idx, bit) \ + ((__get_cpu_features ()->feature[idx] & (bit)) != 0) + ++#define HAS_SLOW_BSF \ ++ HAS_ARCH_FEATURE (index_Slow_BSF, bit_Slow_BSF) ++ + #define HAS_PREFER_SSE_FOR_MEMOP \ + HAS_ARCH_FEATURE (index_Prefer_SSE_for_memop, bit_Prefer_SSE_for_memop) + +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strlen-no-bsf.S +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strlen-no-bsf.S +@@ -0,0 +1,309 @@ ++/* strlen without BSF ++ Copyright (C) 2010 Free Software Foundation, Inc. ++ Contributed by Intel Corporation. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#if defined SHARED && !defined NOT_IN_libc ++ ++#include <sysdep.h> ++ ++ .section .text.slow,"ax",@progbits ++ENTRY (__strlen_no_bsf) ++ xor %eax, %eax ++ cmpb $0, (%rdi) ++ jz L(exit_tail0) ++ cmpb $0, 1(%rdi) ++ jz L(exit_tail1) ++ cmpb $0, 2(%rdi) ++ jz L(exit_tail2) ++ cmpb $0, 3(%rdi) ++ jz L(exit_tail3) ++ cmpb $0, 4(%rdi) ++ jz L(exit_tail4) ++ cmpb $0, 5(%rdi) ++ jz L(exit_tail5) ++ cmpb $0, 6(%rdi) ++ jz L(exit_tail6) ++ cmpb $0, 7(%rdi) ++ jz L(exit_tail7) ++ cmpb $0, 8(%rdi) ++ jz L(exit_tail8) ++ cmpb $0, 9(%rdi) ++ jz L(exit_tail9) ++ cmpb $0, 10(%rdi) ++ jz L(exit_tail10) ++ cmpb $0, 11(%rdi) ++ jz L(exit_tail11) ++ cmpb $0, 12(%rdi) ++ jz L(exit_tail12) ++ cmpb $0, 13(%rdi) ++ jz L(exit_tail13) ++ cmpb $0, 14(%rdi) ++ jz L(exit_tail14) ++ cmpb $0, 15(%rdi) ++ jz L(exit_tail15) ++ pxor %xmm0, %xmm0 ++ mov %rdi, %rcx ++ mov %rdi, %rax ++ and $-16, %rax ++ add $16, %rax ++ add $16, %rcx ++ ++ pcmpeqb (%rax), %xmm0 ++ pmovmskb %xmm0, %edx ++ pxor %xmm1, %xmm1 ++ test %edx, %edx ++ lea 16(%rax), %rax ++ jnz L(exit) ++ ++ pcmpeqb (%rax), %xmm1 ++ pmovmskb %xmm1, %edx ++ pxor %xmm2, %xmm2 ++ test %edx, %edx ++ lea 16(%rax), %rax ++ jnz L(exit) ++ ++ ++ pcmpeqb (%rax), %xmm2 ++ pmovmskb %xmm2, %edx ++ pxor %xmm3, %xmm3 ++ test %edx, %edx ++ lea 16(%rax), %rax ++ jnz L(exit) ++ ++ pcmpeqb (%rax), %xmm3 ++ pmovmskb %xmm3, %edx ++ test %edx, %edx ++ lea 16(%rax), %rax ++ jnz L(exit) ++ ++ pcmpeqb (%rax), %xmm0 ++ pmovmskb %xmm0, %edx ++ test %edx, %edx ++ lea 16(%rax), %rax ++ jnz L(exit) ++ ++ pcmpeqb (%rax), %xmm1 ++ pmovmskb %xmm1, %edx ++ test %edx, %edx ++ lea 16(%rax), %rax ++ jnz L(exit) ++ ++ pcmpeqb (%rax), %xmm2 ++ pmovmskb %xmm2, %edx ++ test %edx, %edx ++ lea 16(%rax), %rax ++ jnz L(exit) ++ ++ pcmpeqb (%rax), %xmm3 ++ pmovmskb %xmm3, %edx ++ test %edx, %edx ++ lea 16(%rax), %rax ++ jnz L(exit) ++ ++ pcmpeqb (%rax), %xmm0 ++ pmovmskb %xmm0, %edx ++ test %edx, %edx ++ lea 16(%rax), %rax ++ jnz L(exit) ++ ++ pcmpeqb (%rax), %xmm1 ++ pmovmskb %xmm1, %edx ++ test %edx, %edx ++ lea 16(%rax), %rax ++ jnz L(exit) ++ ++ pcmpeqb (%rax), %xmm2 ++ pmovmskb %xmm2, %edx ++ test %edx, %edx ++ lea 16(%rax), %rax ++ jnz L(exit) ++ ++ pcmpeqb (%rax), %xmm3 ++ pmovmskb %xmm3, %edx ++ test %edx, %edx ++ lea 16(%rax), %rax ++ jnz L(exit) ++ ++ pcmpeqb (%rax), %xmm0 ++ pmovmskb %xmm0, %edx ++ test %edx, %edx ++ lea 16(%rax), %rax ++ jnz L(exit) ++ ++ pcmpeqb (%rax), %xmm1 ++ pmovmskb %xmm1, %edx ++ test %edx, %edx ++ lea 16(%rax), %rax ++ jnz L(exit) ++ ++ pcmpeqb (%rax), %xmm2 ++ pmovmskb %xmm2, %edx ++ test %edx, %edx ++ lea 16(%rax), %rax ++ jnz L(exit) ++ ++ pcmpeqb (%rax), %xmm3 ++ pmovmskb %xmm3, %edx ++ test %edx, %edx ++ lea 16(%rax), %rax ++ jnz L(exit) ++ ++ and $-0x40, %rax ++ xor %r8d, %r8d ++L(aligned_64): ++ pcmpeqb (%rax), %xmm0 ++ pcmpeqb 16(%rax), %xmm1 ++ pcmpeqb 32(%rax), %xmm2 ++ pcmpeqb 48(%rax), %xmm3 ++ pmovmskb %xmm0, %edx ++ pmovmskb %xmm1, %esi ++ pmovmskb %xmm2, %edi ++ pmovmskb %xmm3, %r9d ++ or %edx, %r8d ++ or %esi, %r8d ++ or %edi, %r8d ++ or %r9d, %r8d ++ lea 64(%rax), %rax ++ jz L(aligned_64) ++ ++ test %edx, %edx ++ jnz L(aligned_64_exit_16) ++ test %esi, %esi ++ jnz L(aligned_64_exit_32) ++ test %edi, %edi ++ jnz L(aligned_64_exit_48) ++L(aligned_64_exit_64): ++ mov %r9d, %edx ++ jmp L(aligned_64_exit) ++L(aligned_64_exit_48): ++ lea -16(%rax), %rax ++ mov %edi, %edx ++ jmp L(aligned_64_exit) ++L(aligned_64_exit_32): ++ lea -32(%rax), %rax ++ mov %esi, %edx ++ jmp L(aligned_64_exit) ++L(aligned_64_exit_16): ++ lea -48(%rax), %rax ++L(aligned_64_exit): ++L(exit): ++ sub %rcx, %rax ++ test %dl, %dl ++ jz L(exit_high) ++ test $0x01, %dl ++ jnz L(exit_tail0) ++ ++ test $0x02, %dl ++ jnz L(exit_tail1) ++ ++ test $0x04, %dl ++ jnz L(exit_tail2) ++ ++ test $0x08, %dl ++ jnz L(exit_tail3) ++ ++ test $0x10, %dl ++ jnz L(exit_tail4) ++ ++ test $0x20, %dl ++ jnz L(exit_tail5) ++ ++ test $0x40, %dl ++ jnz L(exit_tail6) ++ add $7, %eax ++L(exit_tail0): ++ ret ++ ++L(exit_high): ++ add $8, %eax ++ test $0x01, %dh ++ jnz L(exit_tail0) ++ ++ test $0x02, %dh ++ jnz L(exit_tail1) ++ ++ test $0x04, %dh ++ jnz L(exit_tail2) ++ ++ test $0x08, %dh ++ jnz L(exit_tail3) ++ ++ test $0x10, %dh ++ jnz L(exit_tail4) ++ ++ test $0x20, %dh ++ jnz L(exit_tail5) ++ ++ test $0x40, %dh ++ jnz L(exit_tail6) ++ add $7, %eax ++ ret ++ .p2align 4 ++L(exit_tail1): ++ add $1, %eax ++ ret ++ ++L(exit_tail2): ++ add $2, %eax ++ ret ++ ++L(exit_tail3): ++ add $3, %eax ++ ret ++ ++L(exit_tail4): ++ add $4, %eax ++ ret ++ ++L(exit_tail5): ++ add $5, %eax ++ ret ++L(exit_tail6): ++ add $6, %eax ++ ret ++L(exit_tail7): ++ add $7, %eax ++ ret ++L(exit_tail8): ++ add $8, %eax ++ ret ++L(exit_tail9): ++ add $9, %eax ++ ret ++L(exit_tail10): ++ add $10, %eax ++ ret ++L(exit_tail11): ++ add $11, %eax ++ ret ++L(exit_tail12): ++ add $12, %eax ++ ret ++L(exit_tail13): ++ add $13, %eax ++ ret ++L(exit_tail14): ++ add $14, %eax ++ ret ++L(exit_tail15): ++ add $15, %eax ++ ret ++END (__strlen_no_bsf) ++ ++#endif +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strlen-sse4.S +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strlen-sse4.S +@@ -0,0 +1,85 @@ ++/* strlen with SSE4 ++ Copyright (C) 2009, 2010 Free Software Foundation, Inc. ++ Contributed by Ulrich Drepper drepper@redhat.com. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#if defined SHARED && !defined NOT_IN_libc ++ ++#include <sysdep.h> ++ ++ .section .text.sse4.2,"ax",@progbits ++ENTRY (__strlen_sse42) ++ pxor %xmm1, %xmm1 ++ movl %edi, %ecx ++ movq %rdi, %r8 ++ andq $~15, %rdi ++ xor %edi, %ecx ++ pcmpeqb (%rdi), %xmm1 ++ pmovmskb %xmm1, %edx ++ shrl %cl, %edx ++ shll %cl, %edx ++ andl %edx, %edx ++ jnz L(less16bytes) ++ pxor %xmm1, %xmm1 ++ ++ .p2align 4 ++L(more64bytes_loop): ++ pcmpistri $0x08, 16(%rdi), %xmm1 ++ jz L(more32bytes) ++ ++ pcmpistri $0x08, 32(%rdi), %xmm1 ++ jz L(more48bytes) ++ ++ pcmpistri $0x08, 48(%rdi), %xmm1 ++ jz L(more64bytes) ++ ++ add $64, %rdi ++ pcmpistri $0x08, (%rdi), %xmm1 ++ jnz L(more64bytes_loop) ++ leaq (%rdi,%rcx), %rax ++ subq %r8, %rax ++ ret ++ ++ .p2align 4 ++L(more32bytes): ++ leaq 16(%rdi,%rcx, 1), %rax ++ subq %r8, %rax ++ ret ++ ++ .p2align 4 ++L(more48bytes): ++ leaq 32(%rdi,%rcx, 1), %rax ++ subq %r8, %rax ++ ret ++ ++ .p2align 4 ++L(more64bytes): ++ leaq 48(%rdi,%rcx, 1), %rax ++ subq %r8, %rax ++ ret ++ ++ .p2align 4 ++L(less16bytes): ++ subq %r8, %rdi ++ bsfl %edx, %eax ++ addq %rdi, %rax ++ ret ++ ++END (__strlen_sse42) ++ ++#endif +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strlen.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/strlen.S ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strlen.S +@@ -36,74 +36,12 @@ ENTRY(strlen) + testl $bit_SSE4_2, __cpu_features+CPUID_OFFSET+index_SSE4_2(%rip) + jz 2f + leaq __strlen_sse42(%rip), %rax +-2: ret +-END(strlen) +- +- +- .section .text.sse4.2,"ax",@progbits +- .align 16 +- .type __strlen_sse42, @function +-__strlen_sse42: +- cfi_startproc +- CALL_MCOUNT +- pxor %xmm1, %xmm1 +- movl %edi, %ecx +- movq %rdi, %r8 +- andq $~15, %rdi +- xor %edi, %ecx +- pcmpeqb (%rdi), %xmm1 +- pmovmskb %xmm1, %edx +- shrl %cl, %edx +- shll %cl, %edx +- andl %edx, %edx +- jnz L(less16bytes) +- pxor %xmm1, %xmm1 +- +- .p2align 4 +-L(more64bytes_loop): +- pcmpistri $0x08, 16(%rdi), %xmm1 +- jz L(more32bytes) +- +- pcmpistri $0x08, 32(%rdi), %xmm1 +- jz L(more48bytes) +- +- pcmpistri $0x08, 48(%rdi), %xmm1 +- jz L(more64bytes) +- +- add $64, %rdi +- pcmpistri $0x08, (%rdi), %xmm1 +- jnz L(more64bytes_loop) +- leaq (%rdi,%rcx), %rax +- subq %r8, %rax +- ret +- +- .p2align 4 +-L(more32bytes): +- leaq 16(%rdi,%rcx, 1), %rax +- subq %r8, %rax +- ret +- +- .p2align 4 +-L(more48bytes): +- leaq 32(%rdi,%rcx, 1), %rax +- subq %r8, %rax +- ret +- +- .p2align 4 +-L(more64bytes): +- leaq 48(%rdi,%rcx, 1), %rax +- subq %r8, %rax + ret +- +- .p2align 4 +-L(less16bytes): +- subq %r8, %rdi +- bsfl %edx, %eax +- addq %rdi, %rax +- ret +- cfi_endproc +- .size __strlen_sse42, .-__strlen_sse42 +- ++2: testl $bit_Slow_BSF, __cpu_features+FEATURE_OFFSET+index_Slow_BSF(%rip) ++ jz 3f ++ leaq __strlen_no_bsf(%rip), %rax ++3: ret ++END(strlen) + + # undef ENTRY + # define ENTRY(name) \ +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strlen.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/strlen.S ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strlen.S +@@ -23,29 +23,80 @@ + + .text + ENTRY(strlen) +- pxor %xmm2, %xmm2 +- movq %rdi, %rcx +- movq %rdi, %r8 +- andq $~15, %rdi +- movdqa %xmm2, %xmm1 +- pcmpeqb (%rdi), %xmm2 +- orl $0xffffffff, %esi +- subq %rdi, %rcx +- shll %cl, %esi +- pmovmskb %xmm2, %edx +- andl %esi, %edx +- jnz 1f +- +-2: movdqa 16(%rdi), %xmm0 +- leaq 16(%rdi), %rdi ++ xor %rax, %rax ++ mov %edi, %ecx ++ and $0x3f, %ecx ++ pxor %xmm0, %xmm0 ++ cmp $0x30, %ecx ++ ja L(next) ++ movdqu (%rdi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pmovmskb %xmm0, %edx +- testl %edx, %edx +- jz 2b ++ test %edx, %edx ++ jnz L(exit_less16) ++ mov %rdi, %rax ++ and $-16, %rax ++ jmp L(align16_start) ++L(next): ++ mov %rdi, %rax ++ and $-16, %rax ++ pcmpeqb (%rax), %xmm0 ++ mov $-1, %esi ++ sub %rax, %rcx ++ shl %cl, %esi ++ pmovmskb %xmm0, %edx ++ and %esi, %edx ++ jnz L(exit) ++L(align16_start): ++ pxor %xmm0, %xmm0 ++ pxor %xmm1, %xmm1 ++ pxor %xmm2, %xmm2 ++ pxor %xmm3, %xmm3 ++ .p2align 4 ++L(align16_loop): ++ pcmpeqb 16(%rax), %xmm0 ++ pmovmskb %xmm0, %edx ++ test %edx, %edx ++ jnz L(exit16) + +-1: subq %r8, %rdi +- bsfl %edx, %eax +- addq %rdi, %rax ++ pcmpeqb 32(%rax), %xmm1 ++ pmovmskb %xmm1, %edx ++ test %edx, %edx ++ jnz L(exit32) ++ ++ pcmpeqb 48(%rax), %xmm2 ++ pmovmskb %xmm2, %edx ++ test %edx, %edx ++ jnz L(exit48) ++ ++ pcmpeqb 64(%rax), %xmm3 ++ pmovmskb %xmm3, %edx ++ lea 64(%rax), %rax ++ test %edx, %edx ++ jz L(align16_loop) ++L(exit): ++ sub %rdi, %rax ++L(exit_less16): ++ bsf %rdx, %rdx ++ add %rdx, %rax ++ ret ++ .p2align 4 ++L(exit16): ++ sub %rdi, %rax ++ bsf %rdx, %rdx ++ lea 16(%rdx,%rax), %rax ++ ret ++ .p2align 4 ++L(exit32): ++ sub %rdi, %rax ++ bsf %rdx, %rdx ++ lea 32(%rdx,%rax), %rax ++ ret ++ .p2align 4 ++L(exit48): ++ sub %rdi, %rax ++ bsf %rdx, %rdx ++ lea 48(%rdx,%rax), %rax + ret + END(strlen) + libc_hidden_builtin_def (strlen) diff --git a/src/patches/glibc/glibc-rh696472.patch b/src/patches/glibc/glibc-rh696472.patch new file mode 100644 index 0000000..9d30d38 --- /dev/null +++ b/src/patches/glibc/glibc-rh696472.patch @@ -0,0 +1,36 @@ +commit 3d29045b5e8329d97693eda8d98f1d1e60b99c8f +Author: H.J. Lu hongjiu.lu@intel.com +Date: Fri Jun 3 07:01:25 2011 -0400 + + Assume Intel Core i3/i5/i7 processor if AVX is available + +2011-06-02 H.J. Lu hongjiu.lu@intel.com + + * sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features): + Assume Intel Core i3/i5/i7 processor if AVX is available. + +diff --git a/sysdeps/x86_64/multiarch/init-arch.c b/sysdeps/x86_64/multiarch/init-arch.c +index 34ec2df..809d105 100644 +--- a/sysdeps/x86_64/multiarch/init-arch.c ++++ b/sysdeps/x86_64/multiarch/init-arch.c +@@ -74,6 +74,7 @@ __init_cpu_features (void) + } + else if (family == 0x06) + { ++ ecx = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].ecx; + model += extended_model; + switch (model) + { +@@ -83,6 +84,12 @@ __init_cpu_features (void) + __cpu_features.feature[index_Slow_BSF] |= bit_Slow_BSF; + break; + ++ default: ++ /* Unknown family 0x06 processors. Assuming this is one ++ of Core i3/i5/i7 processors if AVX is available. */ ++ if ((ecx & bit_AVX) == 0) ++ break; ++ + case 0x1a: + case 0x1e: + case 0x1f: diff --git a/src/patches/glibc/glibc-rh697421.patch b/src/patches/glibc/glibc-rh697421.patch new file mode 100644 index 0000000..961c805 --- /dev/null +++ b/src/patches/glibc/glibc-rh697421.patch @@ -0,0 +1,10 @@ +diff -rup a/iconvdata/gconv-modules b/iconvdata/gconv-modules +--- a/iconvdata/gconv-modules 2010-05-04 05:27:23.000000000 -0600 ++++ b/iconvdata/gconv-modules 2012-01-26 10:58:24.181895489 -0700 +@@ -1954,3 +1954,6 @@ alias HPGREEK8// HP-GREEK8// + alias OSF10010004// HP-GREEK8// + module HP-GREEK8// INTERNAL HP-GREEK8 1 + module INTERNAL HP-GREEK8// HP-GREEK8 1 ++ ++alias ISO-10646-UCS-2// UNICODE// ++alias ISO-10646-UCS-2// ISO-10646/UTF8/ diff --git a/src/patches/glibc/glibc-rh699724.patch b/src/patches/glibc/glibc-rh699724.patch new file mode 100644 index 0000000..d25ce84 --- /dev/null +++ b/src/patches/glibc/glibc-rh699724.patch @@ -0,0 +1,188 @@ +2011-02-23 Andreas Schwab schwab@redhat.com + + [BZ #12509] + * elf/dl-load.c (_dl_map_object_from_fd): Free realname before + returning unsuccessfully. + * elf/Makefile ($(objpfx)noload-mem): New rule. + (noload-ENV): Define. + (tests): Add $(objpfx)noload-mem. + * elf/noload.c: Include <memcheck.h>. + (main): Call mtrace. Close all opened handles. + +2010-09-27 Andreas Schwab schwab@redhat.com + + * include/link.h (struct link_map): Add l_free_initfini. + * elf/dl-deps.c (_dl_map_object_deps): Set it when assigning + l_initfini. + * elf/rtld.c (dl_main): Clear it on all objects loaded on startup. + * elf/dl-libc.c (free_mem): Free l_initfini if l_free_initfini is + set. + +Index: glibc-2.12-2-gc4ccff1/elf/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/Makefile ++++ glibc-2.12-2-gc4ccff1/elf/Makefile +@@ -211,7 +211,7 @@ endif + ifeq (yesyes,$(have-fpie)$(build-shared)) + tests: $(objpfx)tst-pie1.out + endif +-tests: $(objpfx)tst-leaks1-mem ++tests: $(objpfx)tst-leaks1-mem $(objpfx)noload-mem + tlsmod17a-suffixes = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + tlsmod18a-suffixes = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + modules-names = testobj1 testobj2 testobj3 testobj4 testobj5 testobj6 \ +@@ -664,6 +664,10 @@ $(objpfx)noload: $(objpfx)testobj1.so $( + LDFLAGS-noload = -rdynamic + $(objpfx)noload.out: $(objpfx)testobj5.so + ++$(objpfx)noload-mem: $(objpfx)noload.out ++ $(common-objpfx)malloc/mtrace $(objpfx)noload.mtrace > $@ ++noload-ENV = MALLOC_TRACE=$(objpfx)noload.mtrace ++ + LDFLAGS-nodelete = -rdynamic + LDFLAGS-nodelmod1.so = -Wl,--enable-new-dtags,-z,nodelete + LDFLAGS-nodelmod4.so = -Wl,--enable-new-dtags,-z,nodelete +Index: glibc-2.12-2-gc4ccff1/elf/dl-deps.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/dl-deps.c ++++ glibc-2.12-2-gc4ccff1/elf/dl-deps.c +@@ -478,6 +478,7 @@ _dl_map_object_deps (struct link_map *ma + nneeded * sizeof needed[0]); + atomic_write_barrier (); + l->l_initfini = l_initfini; ++ l->l_free_initfini = 1; + } + + /* If we have no auxiliary objects just go on to the next map. */ +@@ -662,6 +663,7 @@ Filters not supported with LD_TRACE_PREL + l_initfini[nlist] = NULL; + atomic_write_barrier (); + map->l_initfini = l_initfini; ++ map->l_free_initfini = 1; + if (l_reldeps != NULL) + { + atomic_write_barrier (); +Index: glibc-2.12-2-gc4ccff1/elf/dl-libc.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/dl-libc.c ++++ glibc-2.12-2-gc4ccff1/elf/dl-libc.c +@@ -250,5 +250,9 @@ libc_freeres_fn (free_mem) + if (! old->dont_free) + free (old); + } ++ ++ /* Free the initfini dependency list. */ ++ if (l->l_free_initfini) ++ free (l->l_initfini); + } + } +Index: glibc-2.12-2-gc4ccff1/elf/dl-load.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/dl-load.c ++++ glibc-2.12-2-gc4ccff1/elf/dl-load.c +@@ -907,6 +907,7 @@ _dl_map_object_from_fd (const char *name + { + /* We are not supposed to load the object unless it is already + loaded. So return now. */ ++ free (realname); + __close (fd); + return NULL; + } +@@ -925,6 +926,7 @@ _dl_map_object_from_fd (const char *name + _dl_zerofd = _dl_sysdep_open_zero_fill (); + if (_dl_zerofd == -1) + { ++ free (realname); + __close (fd); + _dl_signal_error (errno, NULL, NULL, + N_("cannot open zero fill device")); +Index: glibc-2.12-2-gc4ccff1/elf/noload.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/noload.c ++++ glibc-2.12-2-gc4ccff1/elf/noload.c +@@ -1,20 +1,28 @@ + #include <dlfcn.h> + #include <stdio.h> ++#include <mcheck.h> + + int + main (void) + { + int result = 0; ++ void *p; ++ ++ mtrace (); + + /* First try to load an object which is a dependency. This should + succeed. */ +- if (dlopen ("testobj1.so", RTLD_LAZY | RTLD_NOLOAD) == NULL) ++ p = dlopen ("testobj1.so", RTLD_LAZY | RTLD_NOLOAD); ++ if (p == NULL) + { + printf ("cannot open "testobj1.so": %s\n", dlerror ()); + result = 1; + } + else +- puts ("loading "testobj1.so" succeeded, OK"); ++ { ++ puts ("loading "testobj1.so" succeeded, OK"); ++ dlclose (p); ++ } + + /* Now try loading an object which is not already loaded. */ + if (dlopen ("testobj5.so", RTLD_LAZY | RTLD_NOLOAD) != NULL) +@@ -25,8 +33,6 @@ main (void) + else + { + /* Load the object and run the same test again. */ +- void *p; +- + puts (""testobj5.so" wasn't loaded and RTLD_NOLOAD prevented it, OK"); + + p = dlopen ("testobj5.so", RTLD_LAZY); +@@ -41,13 +47,17 @@ main (void) + { + puts ("loading "testobj5.so" succeeded, OK"); + +- if (dlopen ("testobj5.so", RTLD_LAZY | RTLD_NOLOAD) == NULL) ++ void *q = dlopen ("testobj5.so", RTLD_LAZY | RTLD_NOLOAD); ++ if (q == NULL) + { + printf ("cannot open "testobj5.so": %s\n", dlerror ()); + result = 1; + } + else +- puts ("loading "testobj5.so" with RTLD_NOLOAD succeeded, OK"); ++ { ++ puts ("loading "testobj5.so" with RTLD_NOLOAD succeeded, OK"); ++ dlclose (q); ++ } + + if (dlclose (p) != 0) + { +Index: glibc-2.12-2-gc4ccff1/elf/rtld.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/rtld.c ++++ glibc-2.12-2-gc4ccff1/elf/rtld.c +@@ -2249,6 +2249,7 @@ ERROR: ld.so: object '%s' cannot be load + lnp->dont_free = 1; + lnp = lnp->next; + } ++ l->l_free_initfini = 0; + + if (l != &GL(dl_rtld_map)) + _dl_relocate_object (l, l->l_scope, GLRO(dl_lazy) ? RTLD_LAZY : 0, +Index: glibc-2.12-2-gc4ccff1/include/link.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/include/link.h ++++ glibc-2.12-2-gc4ccff1/include/link.h +@@ -192,6 +192,9 @@ struct link_map + during LD_TRACE_PRELINKING=1 + contains any DT_SYMBOLIC + libraries. */ ++ unsigned int l_free_initfini:1; /* Nonzero if l_initfini can be ++ freed, ie. not allocated with ++ the dummy malloc in ld.so. */ + + /* Collected information about own RPATH directories. */ + struct r_search_path_struct l_rpath_dirs; diff --git a/src/patches/glibc/glibc-rh700507.patch b/src/patches/glibc/glibc-rh700507.patch new file mode 100644 index 0000000..0660431 --- /dev/null +++ b/src/patches/glibc/glibc-rh700507.patch @@ -0,0 +1,26 @@ +Index: glibc-2.12-2-gc4ccff1/nscd/nscd.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nscd/nscd.c ++++ glibc-2.12-2-gc4ccff1/nscd/nscd.c +@@ -260,10 +260,6 @@ main (int argc, char **argv) + /* In foreground mode we are not paranoid. */ + paranoia = 0; + +- /* Start the SELinux AVC. */ +- if (selinux_enabled) +- nscd_avc_init (); +- + signal (SIGINT, termination_handler); + signal (SIGQUIT, termination_handler); + signal (SIGTERM, termination_handler); +@@ -278,6 +274,10 @@ main (int argc, char **argv) + /* Init databases. */ + nscd_init (); + ++ /* Start the SELinux AVC. */ ++ if (selinux_enabled) ++ nscd_avc_init (); ++ + /* Handle incoming requests */ + start_threads (); + diff --git a/src/patches/glibc/glibc-rh703480.patch b/src/patches/glibc/glibc-rh703480.patch new file mode 100644 index 0000000..742a79a --- /dev/null +++ b/src/patches/glibc/glibc-rh703480.patch @@ -0,0 +1,68 @@ +2011-01-15 Ulrich Drepper drepper@gmail.com + + [BZ #6812] + * nscd/hstcache.c (tryagain): Define. + (cache_addhst): Return tryagain not notfound for temporary errors. + (addhstbyX): Also set h_errno to TRY_AGAIN when memory allocation + failed. + +Index: glibc-2.12-2-gc4ccff1/nscd/hstcache.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nscd/hstcache.c ++++ glibc-2.12-2-gc4ccff1/nscd/hstcache.c +@@ -77,6 +77,20 @@ static const hst_response_header notfoun + }; + + ++/* This is the standard reply in case there are temporary problems. */ ++static const hst_response_header tryagain = ++{ ++ .version = NSCD_VERSION, ++ .found = 0, ++ .h_name_len = 0, ++ .h_aliases_cnt = 0, ++ .h_addrtype = -1, ++ .h_length = -1, ++ .h_addr_list_cnt = 0, ++ .error = TRY_AGAIN ++}; ++ ++ + static void + cache_addhst (struct database_dyn *db, int fd, request_header *req, + const void *key, struct hostent *hst, uid_t owner, +@@ -111,11 +125,15 @@ cache_addhst (struct database_dyn *db, i + else + { + /* We have no data. This means we send the standard reply for this +- case. */ ++ case. Possibly this is only temporary. */ + ssize_t total = sizeof (notfound); ++ assert (sizeof (notfound) == sizeof (tryagain)); ++ ++ const hst_response_header *resp = (errval == EAGAIN ++ ? &tryagain : ¬found); + + if (fd != -1 && +- TEMP_FAILURE_RETRY (send (fd, ¬found, total, ++ TEMP_FAILURE_RETRY (send (fd, resp, total, + MSG_NOSIGNAL)) != total) + all_written = false; + +@@ -135,7 +153,7 @@ cache_addhst (struct database_dyn *db, i + ? db->negtimeout : ttl); + + /* This is the reply. */ +- memcpy (&dataset->resp, ¬found, total); ++ memcpy (&dataset->resp, resp, total); + + /* Copy the key data. */ + memcpy (dataset->strdata, key, req->key_len); +@@ -490,6 +508,7 @@ addhstbyX (struct database_dyn *db, int + /* We set the error to indicate this is (possibly) a + temporary error and that it does not mean the entry + is not available at all. */ ++ h_errno = TRY_AGAIN; + errval = EAGAIN; + break; + } diff --git a/src/patches/glibc/glibc-rh703481.patch b/src/patches/glibc/glibc-rh703481.patch new file mode 100644 index 0000000..fdde4b5 --- /dev/null +++ b/src/patches/glibc/glibc-rh703481.patch @@ -0,0 +1,875 @@ +2011-02-05 Ulrich Drepper drepper@gmail.com + + * nscd/nscd-client.h: Define MAX_TIMEOUT_VALUE. + (struct datahead): Reuse 32 bits of the alignment for a TTL field. + * nscd/aicache.c (addhstaiX): Return timeout of added value. + (readdhstai): Return value of addhstaiX call. + * nscd/grpcache.c (cache_addgr): Return timeout of added value. + (addgrbyX): Return value returned by cache_addgr. + (readdgrbyname): Return value returned by addgrbyX. + (readdgrbygid): Likewise. + * nscd/pwdcache.c (cache_addpw): Return timeout of added value. + (addpwbyX): Return value returned by cache_addpw. + (readdpwbyname): Return value returned by addhstbyX. + (readdpwbyuid): Likewise. + * nscd/servicescache.c (cache_addserv): Return timeout of added value. + (addservbyX): Return value returned by cache_addserv. + (readdservbyname): Return value returned by addservbyX: + (readdservbyport): Likewise. + * nscd/hstcache.c (cache_addhst): Return timeout of added value. + (addhstbyX): Return value returned by cache_addhst. + (readdhstbyname): Return value returned by addhstbyX. + (readdhstbyaddr): Likewise. + (readdhstbynamev6): Likewise. + (readdhstbyaddrv6): Likewise. + * nscd/initgrcache.c (addinitgroupsX): Return timeout of added value. + (readdinitgroups): Return value returned by addinitgroupsX. + * nscd/cache.c (readdfcts): Change return value of functions to time_t. + (prune_cache): Keep track of timeout value of re-added entries. + * nscd/connections.c (nscd_run_prune): Use MAX_TIMEOUT_VALUE. + * nscd/nscd.h: Adjust prototypes of readd* functions. + +Index: glibc-2.12-2-gc4ccff1/nscd/aicache.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nscd/aicache.c ++++ glibc-2.12-2-gc4ccff1/nscd/aicache.c +@@ -58,7 +58,7 @@ static const ai_response_header notfound + }; + + +-static void ++static time_t + addhstaiX (struct database_dyn *db, int fd, request_header *req, + void *key, uid_t uid, struct hashentry *const he, + struct datahead *dh) +@@ -119,6 +119,7 @@ addhstaiX (struct database_dyn *db, int + ssize_t total = 0; + char *key_copy = NULL; + bool alloca_used = false; ++ time_t timeout = MAX_TIMEOUT_VALUE; + + while (!no_more) + { +@@ -388,8 +389,8 @@ addhstaiX (struct database_dyn *db, int + dataset->head.usable = true; + + /* Compute the timeout time. */ +- dataset->head.timeout = time (NULL) + (ttl == INT32_MAX +- ? db->postimeout : ttl); ++ dataset->head.ttl = ttl == INT32_MAX ? db->postimeout : ttl; ++ timeout = dataset->head.timeout = time (NULL) + dataset->head.ttl; + + dataset->resp.version = NSCD_VERSION; + dataset->resp.found = 1; +@@ -421,6 +422,7 @@ addhstaiX (struct database_dyn *db, int + timeout value. Note that the new record has been + allocated on the stack and need not be freed. */ + dh->timeout = dataset->head.timeout; ++ dh->ttl = dataset->head.ttl; + ++dh->nreloads; + } + else +@@ -496,6 +498,9 @@ next_nip: + if (reload_count != UINT_MAX && dh->nreloads == reload_count) + /* Do not reset the value if we never not reload the record. */ + dh->nreloads = reload_count - 1; ++ ++ /* Reload with the same time-to-live value. */ ++ timeout = dh->timeout = time (NULL) + dh->ttl; + } + else + { +@@ -517,7 +522,8 @@ next_nip: + dataset->head.usable = true; + + /* Compute the timeout time. */ +- dataset->head.timeout = time (NULL) + db->negtimeout; ++ timeout = dataset->head.timeout = time (NULL) + db->negtimeout; ++ dataset->head.ttl = db->negtimeout; + + /* This is the reply. */ + memcpy (&dataset->resp, ¬found, total); +@@ -551,6 +557,8 @@ next_nip: + if (dh != NULL) + dh->usable = false; + } ++ ++ return timeout; + } + + +@@ -562,7 +570,7 @@ addhstai (struct database_dyn *db, int f + } + + +-void ++time_t + readdhstai (struct database_dyn *db, struct hashentry *he, struct datahead *dh) + { + request_header req = +@@ -571,5 +579,5 @@ readdhstai (struct database_dyn *db, str + .key_len = he->len + }; + +- addhstaiX (db, -1, &req, db->data + he->key, he->owner, he, dh); ++ return addhstaiX (db, -1, &req, db->data + he->key, he->owner, he, dh); + } +Index: glibc-2.12-2-gc4ccff1/nscd/cache.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nscd/cache.c ++++ glibc-2.12-2-gc4ccff1/nscd/cache.c +@@ -45,9 +45,9 @@ extern void *xcalloc (size_t n, size_t s + unsigned int reload_count = DEFAULT_RELOAD_LIMIT; + + +-static void (*const readdfcts[LASTREQ]) (struct database_dyn *, +- struct hashentry *, +- struct datahead *) = ++static time_t (*const readdfcts[LASTREQ]) (struct database_dyn *, ++ struct hashentry *, ++ struct datahead *) = + { + [GETPWBYNAME] = readdpwbyname, + [GETPWBYUID] = readdpwbyuid, +@@ -389,7 +389,8 @@ prune_cache (struct database_dyn *table, + assert (runp->type < LASTREQ + && readdfcts[runp->type] != NULL); + +- readdfcts[runp->type] (table, runp, dh); ++ time_t timeout = readdfcts[runp->type] (table, runp, dh); ++ next_timeout = MIN (next_timeout, timeout); + + /* If the entry has been replaced, we might need + cleanup. */ +Index: glibc-2.12-2-gc4ccff1/nscd/connections.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nscd/connections.c ++++ glibc-2.12-2-gc4ccff1/nscd/connections.c +@@ -1533,10 +1533,7 @@ nscd_run_prune (void *p) + pruning we want to know about it. Therefore set the + timeout to the maximum. It will be descreased when adding + new entries to the cache, if necessary. */ +- if (sizeof (time_t) == sizeof (long int)) +- dbs[my_number].wakeup_time = LONG_MAX; +- else +- dbs[my_number].wakeup_time = INT_MAX; ++ dbs[my_number].wakeup_time = MAX_TIMEOUT_VALUE; + + /* Unconditionally reset the flag. */ + time_t prune_now = dbs[my_number].clear_cache ? LONG_MAX : now; +Index: glibc-2.12-2-gc4ccff1/nscd/grpcache.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nscd/grpcache.c ++++ glibc-2.12-2-gc4ccff1/nscd/grpcache.c +@@ -71,7 +71,7 @@ static const gr_response_header notfound + }; + + +-static void ++static time_t + cache_addgr (struct database_dyn *db, int fd, request_header *req, + const void *key, struct group *grp, uid_t owner, + struct hashentry *const he, struct datahead *dh, int errval) +@@ -91,6 +91,7 @@ cache_addgr (struct database_dyn *db, in + + assert (offsetof (struct dataset, resp) == offsetof (struct datahead, data)); + ++ time_t timeout = MAX_TIMEOUT_VALUE; + if (grp == NULL) + { + if (he != NULL && errval == EAGAIN) +@@ -102,6 +103,9 @@ cache_addgr (struct database_dyn *db, in + /* Do not reset the value if we never not reload the record. */ + dh->nreloads = reload_count - 1; + ++ /* Reload with the same time-to-live value. */ ++ timeout = dh->timeout = t + db->postimeout; ++ + written = total = 0; + } + else +@@ -125,7 +129,7 @@ cache_addgr (struct database_dyn *db, in + dataset->head.usable = true; + + /* Compute the timeout time. */ +- dataset->head.timeout = t + db->negtimeout; ++ timeout = dataset->head.timeout = t + db->negtimeout; + + /* This is the reply. */ + memcpy (&dataset->resp, ¬found, total); +@@ -217,7 +221,7 @@ cache_addgr (struct database_dyn *db, in + dataset->head.usable = true; + + /* Compute the timeout time. */ +- dataset->head.timeout = t + db->postimeout; ++ timeout = dataset->head.timeout = t + db->postimeout; + + dataset->resp.version = NSCD_VERSION; + dataset->resp.found = 1; +@@ -379,6 +383,8 @@ cache_addgr (struct database_dyn *db, in + dbg_log (_("short write in %s: %s"), __FUNCTION__, + strerror_r (errno, buf, sizeof (buf))); + } ++ ++ return timeout; + } + + +@@ -400,7 +406,7 @@ lookup (int type, union keytype key, str + } + + +-static void ++static time_t + addgrbyX (struct database_dyn *db, int fd, request_header *req, + union keytype key, const char *keystr, uid_t uid, + struct hashentry *he, struct datahead *dh) +@@ -456,10 +462,12 @@ addgrbyX (struct database_dyn *db, int f + buffer = (char *) extend_alloca (buffer, buflen, 2 * buflen); + } + +- cache_addgr (db, fd, req, keystr, grp, uid, he, dh, errval); ++ time_t timeout = cache_addgr (db, fd, req, keystr, grp, uid, he, dh, errval); + + if (use_malloc) + free (buffer); ++ ++ return timeout; + } + + +@@ -473,7 +481,7 @@ addgrbyname (struct database_dyn *db, in + } + + +-void ++time_t + readdgrbyname (struct database_dyn *db, struct hashentry *he, + struct datahead *dh) + { +@@ -484,7 +492,7 @@ readdgrbyname (struct database_dyn *db, + }; + union keytype u = { .v = db->data + he->key }; + +- addgrbyX (db, -1, &req, u, db->data + he->key, he->owner, he, dh); ++ return addgrbyX (db, -1, &req, u, db->data + he->key, he->owner, he, dh); + } + + +@@ -510,7 +518,7 @@ addgrbygid (struct database_dyn *db, int + } + + +-void ++time_t + readdgrbygid (struct database_dyn *db, struct hashentry *he, + struct datahead *dh) + { +@@ -527,5 +535,5 @@ readdgrbygid (struct database_dyn *db, s + }; + union keytype u = { .g = gid }; + +- addgrbyX (db, -1, &req, u, db->data + he->key, he->owner, he, dh); ++ return addgrbyX (db, -1, &req, u, db->data + he->key, he->owner, he, dh); + } +Index: glibc-2.12-2-gc4ccff1/nscd/hstcache.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nscd/hstcache.c ++++ glibc-2.12-2-gc4ccff1/nscd/hstcache.c +@@ -91,7 +91,7 @@ static const hst_response_header tryagai + }; + + +-static void ++static time_t + cache_addhst (struct database_dyn *db, int fd, request_header *req, + const void *key, struct hostent *hst, uid_t owner, + struct hashentry *const he, struct datahead *dh, int errval, +@@ -111,6 +111,7 @@ cache_addhst (struct database_dyn *db, i + + assert (offsetof (struct dataset, resp) == offsetof (struct datahead, data)); + ++ time_t timeout = MAX_TIMEOUT_VALUE; + if (hst == NULL) + { + if (he != NULL && errval == EAGAIN) +@@ -121,6 +122,9 @@ cache_addhst (struct database_dyn *db, i + if (reload_count != UINT_MAX) + /* Do not reset the value if we never not reload the record. */ + dh->nreloads = reload_count - 1; ++ ++ /* Reload with the same time-to-live value. */ ++ timeout = dh->timeout = t + dh->ttl; + } + else + { +@@ -149,8 +153,8 @@ cache_addhst (struct database_dyn *db, i + dataset->head.usable = true; + + /* Compute the timeout time. */ +- dataset->head.timeout = t + (ttl == INT32_MAX +- ? db->negtimeout : ttl); ++ dataset->head.ttl = ttl == INT32_MAX ? db->negtimeout : ttl; ++ timeout = dataset->head.timeout = t + dataset->head.ttl; + + /* This is the reply. */ + memcpy (&dataset->resp, resp, total); +@@ -214,7 +218,7 @@ cache_addhst (struct database_dyn *db, i + + if (h_addr_list_cnt == 0) + /* Invalid entry. */ +- return; ++ return MAX_TIMEOUT_VALUE; + + total += (sizeof (struct dataset) + + h_name_len +@@ -255,7 +259,8 @@ cache_addhst (struct database_dyn *db, i + dataset->head.usable = true; + + /* Compute the timeout time. */ +- dataset->head.timeout = t + (ttl == INT32_MAX ? db->postimeout : ttl); ++ dataset->head.ttl = ttl == INT32_MAX ? db->postimeout : ttl; ++ timeout = dataset->head.timeout = t + dataset->head.ttl; + + dataset->resp.version = NSCD_VERSION; + dataset->resp.found = 1; +@@ -312,6 +317,7 @@ cache_addhst (struct database_dyn *db, i + timeout value. Note that the new record has been + allocated on the stack and need not be freed. */ + assert (h_addr_list_cnt == 1); ++ dh->ttl = dataset->head.ttl; + dh->timeout = dataset->head.timeout; + ++dh->nreloads; + } +@@ -433,6 +439,8 @@ cache_addhst (struct database_dyn *db, i + dbg_log (_("short write in %s: %s"), __FUNCTION__, + strerror_r (errno, buf, sizeof (buf))); + } ++ ++ return timeout; + } + + +@@ -454,7 +462,7 @@ lookup (int type, void *key, struct host + } + + +-static void ++static time_t + addhstbyX (struct database_dyn *db, int fd, request_header *req, + void *key, uid_t uid, struct hashentry *he, struct datahead *dh) + { +@@ -520,11 +528,13 @@ addhstbyX (struct database_dyn *db, int + buffer = (char *) extend_alloca (buffer, buflen, 2 * buflen); + } + +- cache_addhst (db, fd, req, key, hst, uid, he, dh, +- h_errno == TRY_AGAIN ? errval : 0, ttl); ++ time_t timeout = cache_addhst (db, fd, req, key, hst, uid, he, dh, ++ h_errno == TRY_AGAIN ? errval : 0, ttl); + + if (use_malloc) + free (buffer); ++ ++ return timeout; + } + + +@@ -536,7 +546,7 @@ addhstbyname (struct database_dyn *db, i + } + + +-void ++time_t + readdhstbyname (struct database_dyn *db, struct hashentry *he, + struct datahead *dh) + { +@@ -546,7 +556,7 @@ readdhstbyname (struct database_dyn *db, + .key_len = he->len + }; + +- addhstbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); ++ return addhstbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); + } + + +@@ -558,7 +568,7 @@ addhstbyaddr (struct database_dyn *db, i + } + + +-void ++time_t + readdhstbyaddr (struct database_dyn *db, struct hashentry *he, + struct datahead *dh) + { +@@ -568,7 +578,7 @@ readdhstbyaddr (struct database_dyn *db, + .key_len = he->len + }; + +- addhstbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); ++ return addhstbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); + } + + +@@ -580,7 +590,7 @@ addhstbynamev6 (struct database_dyn *db, + } + + +-void ++time_t + readdhstbynamev6 (struct database_dyn *db, struct hashentry *he, + struct datahead *dh) + { +@@ -590,7 +600,7 @@ readdhstbynamev6 (struct database_dyn *d + .key_len = he->len + }; + +- addhstbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); ++ return addhstbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); + } + + +@@ -602,7 +612,7 @@ addhstbyaddrv6 (struct database_dyn *db, + } + + +-void ++time_t + readdhstbyaddrv6 (struct database_dyn *db, struct hashentry *he, + struct datahead *dh) + { +@@ -612,5 +622,5 @@ readdhstbyaddrv6 (struct database_dyn *d + .key_len = he->len + }; + +- addhstbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); ++ return addhstbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); + } +Index: glibc-2.12-2-gc4ccff1/nscd/initgrcache.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nscd/initgrcache.c ++++ glibc-2.12-2-gc4ccff1/nscd/initgrcache.c +@@ -52,7 +52,7 @@ static const initgr_response_header notf + #include "../grp/compat-initgroups.c" + + +-static void ++static time_t + addinitgroupsX (struct database_dyn *db, int fd, request_header *req, + void *key, uid_t uid, struct hashentry *const he, + struct datahead *dh) +@@ -174,7 +174,9 @@ addinitgroupsX (struct database_dyn *db, + + ssize_t total; + ssize_t written; ++ time_t timeout; + out: ++ timeout = MAX_TIMEOUT_VALUE; + if (!any_success) + { + /* Nothing found. Create a negative result record. */ +@@ -188,6 +190,9 @@ addinitgroupsX (struct database_dyn *db, + if (reload_count != UINT_MAX && dh->nreloads == reload_count) + /* Do not reset the value if we never not reload the record. */ + dh->nreloads = reload_count - 1; ++ ++ /* Reload with the same time-to-live value. */ ++ timeout = dh->timeout = time (NULL) + db->postimeout; + } + else + { +@@ -209,7 +214,7 @@ addinitgroupsX (struct database_dyn *db, + dataset->head.usable = true; + + /* Compute the timeout time. */ +- dataset->head.timeout = time (NULL) + db->negtimeout; ++ timeout = dataset->head.timeout = time (NULL) + db->negtimeout; + + /* This is the reply. */ + memcpy (&dataset->resp, ¬found, total); +@@ -273,7 +278,7 @@ addinitgroupsX (struct database_dyn *db, + dataset->head.usable = true; + + /* Compute the timeout time. */ +- dataset->head.timeout = time (NULL) + db->postimeout; ++ timeout = dataset->head.timeout = time (NULL) + db->postimeout; + + dataset->resp.version = NSCD_VERSION; + dataset->resp.found = 1; +@@ -401,6 +406,8 @@ addinitgroupsX (struct database_dyn *db, + dbg_log (_("short write in %s: %s"), __FUNCTION__, + strerror_r (errno, buf, sizeof (buf))); + } ++ ++ return timeout; + } + + +@@ -412,7 +419,7 @@ addinitgroups (struct database_dyn *db, + } + + +-void ++time_t + readdinitgroups (struct database_dyn *db, struct hashentry *he, + struct datahead *dh) + { +@@ -422,5 +429,5 @@ readdinitgroups (struct database_dyn *db + .key_len = he->len + }; + +- addinitgroupsX (db, -1, &req, db->data + he->key, he->owner, he, dh); ++ return addinitgroupsX (db, -1, &req, db->data + he->key, he->owner, he, dh); + } +Index: glibc-2.12-2-gc4ccff1/nscd/nscd-client.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nscd/nscd-client.h ++++ glibc-2.12-2-gc4ccff1/nscd/nscd-client.h +@@ -179,6 +179,10 @@ typedef uint32_t ref_t; + /* Timestamp type. */ + typedef uint64_t nscd_time_t; + ++/* Maximum timestamp. */ ++#define MAX_TIMEOUT_VALUE \ ++ (sizeof (time_t) == sizeof (long int) ? LONG_MAX : INT_MAX) ++ + /* Alignment requirement of the beginning of the data region. */ + #define ALIGN 16 + +@@ -192,7 +196,8 @@ struct datahead + uint8_t notfound; /* Nonzero if data has not been found. */ + uint8_t nreloads; /* Reloads without use. */ + uint8_t usable; /* False if the entry must be ignored. */ +- uint64_t :40; /* Alignment. */ ++ uint8_t unused; /* Unused. */ ++ uint32_t ttl; /* TTL value used. */ + + /* We need to have the following element aligned for the response + header data types and their use in the 'struct dataset' types +Index: glibc-2.12-2-gc4ccff1/nscd/nscd.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nscd/nscd.h ++++ glibc-2.12-2-gc4ccff1/nscd/nscd.h +@@ -217,20 +217,20 @@ extern void addpwbyname (struct database + void *key, uid_t uid); + extern void addpwbyuid (struct database_dyn *db, int fd, request_header *req, + void *key, uid_t uid); +-extern void readdpwbyname (struct database_dyn *db, struct hashentry *he, +- struct datahead *dh); +-extern void readdpwbyuid (struct database_dyn *db, struct hashentry *he, +- struct datahead *dh); ++extern time_t readdpwbyname (struct database_dyn *db, struct hashentry *he, ++ struct datahead *dh); ++extern time_t readdpwbyuid (struct database_dyn *db, struct hashentry *he, ++ struct datahead *dh); + + /* grpcache.c */ + extern void addgrbyname (struct database_dyn *db, int fd, request_header *req, + void *key, uid_t uid); + extern void addgrbygid (struct database_dyn *db, int fd, request_header *req, + void *key, uid_t uid); +-extern void readdgrbyname (struct database_dyn *db, struct hashentry *he, +- struct datahead *dh); +-extern void readdgrbygid (struct database_dyn *db, struct hashentry *he, +- struct datahead *dh); ++extern time_t readdgrbyname (struct database_dyn *db, struct hashentry *he, ++ struct datahead *dh); ++extern time_t readdgrbygid (struct database_dyn *db, struct hashentry *he, ++ struct datahead *dh); + + /* hstcache.c */ + extern void addhstbyname (struct database_dyn *db, int fd, request_header *req, +@@ -241,37 +241,37 @@ extern void addhstbynamev6 (struct datab + request_header *req, void *key, uid_t uid); + extern void addhstbyaddrv6 (struct database_dyn *db, int fd, + request_header *req, void *key, uid_t uid); +-extern void readdhstbyname (struct database_dyn *db, struct hashentry *he, +- struct datahead *dh); +-extern void readdhstbyaddr (struct database_dyn *db, struct hashentry *he, +- struct datahead *dh); +-extern void readdhstbynamev6 (struct database_dyn *db, struct hashentry *he, ++extern time_t readdhstbyname (struct database_dyn *db, struct hashentry *he, + struct datahead *dh); +-extern void readdhstbyaddrv6 (struct database_dyn *db, struct hashentry *he, ++extern time_t readdhstbyaddr (struct database_dyn *db, struct hashentry *he, + struct datahead *dh); ++extern time_t readdhstbynamev6 (struct database_dyn *db, struct hashentry *he, ++ struct datahead *dh); ++extern time_t readdhstbyaddrv6 (struct database_dyn *db, struct hashentry *he, ++ struct datahead *dh); + + /* aicache.c */ + extern void addhstai (struct database_dyn *db, int fd, request_header *req, + void *key, uid_t uid); +-extern void readdhstai (struct database_dyn *db, struct hashentry *he, +- struct datahead *dh); ++extern time_t readdhstai (struct database_dyn *db, struct hashentry *he, ++ struct datahead *dh); + + + /* initgrcache.c */ + extern void addinitgroups (struct database_dyn *db, int fd, + request_header *req, void *key, uid_t uid); +-extern void readdinitgroups (struct database_dyn *db, struct hashentry *he, +- struct datahead *dh); ++extern time_t readdinitgroups (struct database_dyn *db, struct hashentry *he, ++ struct datahead *dh); + + /* servicecache.c */ + extern void addservbyname (struct database_dyn *db, int fd, + request_header *req, void *key, uid_t uid); +-extern void readdservbyname (struct database_dyn *db, struct hashentry *he, +- struct datahead *dh); ++extern time_t readdservbyname (struct database_dyn *db, struct hashentry *he, ++ struct datahead *dh); + extern void addservbyport (struct database_dyn *db, int fd, + request_header *req, void *key, uid_t uid); +-extern void readdservbyport (struct database_dyn *db, struct hashentry *he, +- struct datahead *dh); ++extern time_t readdservbyport (struct database_dyn *db, struct hashentry *he, ++ struct datahead *dh); + + /* mem.c */ + extern void *mempool_alloc (struct database_dyn *db, size_t len, +Index: glibc-2.12-2-gc4ccff1/nscd/pwdcache.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nscd/pwdcache.c ++++ glibc-2.12-2-gc4ccff1/nscd/pwdcache.c +@@ -77,7 +77,7 @@ static const pw_response_header notfound + }; + + +-static void ++static time_t + cache_addpw (struct database_dyn *db, int fd, request_header *req, + const void *key, struct passwd *pwd, uid_t owner, + struct hashentry *const he, struct datahead *dh, int errval) +@@ -97,6 +97,7 @@ cache_addpw (struct database_dyn *db, in + + assert (offsetof (struct dataset, resp) == offsetof (struct datahead, data)); + ++ time_t timeout = MAX_TIMEOUT_VALUE; + if (pwd == NULL) + { + if (he != NULL && errval == EAGAIN) +@@ -108,6 +109,9 @@ cache_addpw (struct database_dyn *db, in + /* Do not reset the value if we never not reload the record. */ + dh->nreloads = reload_count - 1; + ++ /* Reload with the same time-to-live value. */ ++ timeout = dh->timeout = t + db->postimeout; ++ + written = total = 0; + } + else +@@ -132,7 +136,7 @@ cache_addpw (struct database_dyn *db, in + dataset->head.usable = true; + + /* Compute the timeout time. */ +- dataset->head.timeout = t + db->negtimeout; ++ timeout = dataset->head.timeout = t + db->negtimeout; + + /* This is the reply. */ + memcpy (&dataset->resp, ¬found, total); +@@ -212,7 +216,7 @@ cache_addpw (struct database_dyn *db, in + dataset->head.usable = true; + + /* Compute the timeout time. */ +- dataset->head.timeout = t + db->postimeout; ++ timeout = dataset->head.timeout = t + db->postimeout; + + dataset->resp.version = NSCD_VERSION; + dataset->resp.found = 1; +@@ -293,8 +297,8 @@ cache_addpw (struct database_dyn *db, in + assert ((char *) dataset - (char *) db->head + + total + <= (sizeof (struct database_pers_head) +- + db->head->module * sizeof (ref_t) +- + db->head->data_size)); ++ + db->head->module * sizeof (ref_t) ++ + db->head->data_size)); + written = sendfileall (fd, db->wr_fd, + (char *) &dataset->resp + - (char *) db->head, dataset->head.recsize ); +@@ -374,6 +378,8 @@ cache_addpw (struct database_dyn *db, in + dbg_log (_("short write in %s: %s"), __FUNCTION__, + strerror_r (errno, buf, sizeof (buf))); + } ++ ++ return timeout; + } + + +@@ -395,7 +401,7 @@ lookup (int type, union keytype key, str + } + + +-static void ++static time_t + addpwbyX (struct database_dyn *db, int fd, request_header *req, + union keytype key, const char *keystr, uid_t c_uid, + struct hashentry *he, struct datahead *dh) +@@ -452,10 +458,13 @@ addpwbyX (struct database_dyn *db, int f + } + + /* Add the entry to the cache. */ +- cache_addpw (db, fd, req, keystr, pwd, c_uid, he, dh, errval); ++ time_t timeout = cache_addpw (db, fd, req, keystr, pwd, c_uid, he, dh, ++ errval); + + if (use_malloc) + free (buffer); ++ ++ return timeout; + } + + +@@ -469,7 +478,7 @@ addpwbyname (struct database_dyn *db, in + } + + +-void ++time_t + readdpwbyname (struct database_dyn *db, struct hashentry *he, + struct datahead *dh) + { +@@ -480,7 +489,7 @@ readdpwbyname (struct database_dyn *db, + }; + union keytype u = { .v = db->data + he->key }; + +- addpwbyX (db, -1, &req, u, db->data + he->key, he->owner, he, dh); ++ return addpwbyX (db, -1, &req, u, db->data + he->key, he->owner, he, dh); + } + + +@@ -506,7 +515,7 @@ addpwbyuid (struct database_dyn *db, int + } + + +-void ++time_t + readdpwbyuid (struct database_dyn *db, struct hashentry *he, + struct datahead *dh) + { +@@ -523,5 +532,5 @@ readdpwbyuid (struct database_dyn *db, s + }; + union keytype u = { .u = uid }; + +- addpwbyX (db, -1, &req, u, db->data + he->key, he->owner, he, dh); ++ return addpwbyX (db, -1, &req, u, db->data + he->key, he->owner, he, dh); + } +Index: glibc-2.12-2-gc4ccff1/nscd/servicescache.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nscd/servicescache.c ++++ glibc-2.12-2-gc4ccff1/nscd/servicescache.c +@@ -61,7 +61,7 @@ static const serv_response_header notfou + }; + + +-static void ++static time_t + cache_addserv (struct database_dyn *db, int fd, request_header *req, + const void *key, struct servent *serv, uid_t owner, + struct hashentry *const he, struct datahead *dh, int errval) +@@ -81,6 +81,7 @@ cache_addserv (struct database_dyn *db, + + assert (offsetof (struct dataset, resp) == offsetof (struct datahead, data)); + ++ time_t timeout = MAX_TIMEOUT_VALUE; + if (serv == NULL) + { + if (he != NULL && errval == EAGAIN) +@@ -92,6 +93,9 @@ cache_addserv (struct database_dyn *db, + /* Do not reset the value if we never not reload the record. */ + dh->nreloads = reload_count - 1; + ++ /* Reload with the same time-to-live value. */ ++ timeout = dh->timeout = t + db->postimeout; ++ + written = total = 0; + } + else +@@ -115,7 +119,7 @@ cache_addserv (struct database_dyn *db, + dataset->head.usable = true; + + /* Compute the timeout time. */ +- dataset->head.timeout = t + db->negtimeout; ++ timeout = dataset->head.timeout = t + db->negtimeout; + + /* This is the reply. */ + memcpy (&dataset->resp, ¬found, total); +@@ -203,7 +207,7 @@ cache_addserv (struct database_dyn *db, + dataset->head.usable = true; + + /* Compute the timeout time. */ +- dataset->head.timeout = t + db->postimeout; ++ timeout = dataset->head.timeout = t + db->postimeout; + + dataset->resp.version = NSCD_VERSION; + dataset->resp.found = 1; +@@ -328,6 +332,8 @@ cache_addserv (struct database_dyn *db, + dbg_log (_("short write in %s: %s"), __FUNCTION__, + strerror_r (errno, buf, sizeof (buf))); + } ++ ++ return timeout; + } + + +@@ -354,7 +360,7 @@ lookup (int type, char *key, struct serv + } + + +-static void ++static time_t + addservbyX (struct database_dyn *db, int fd, request_header *req, + char *key, uid_t uid, struct hashentry *he, struct datahead *dh) + { +@@ -409,10 +415,12 @@ addservbyX (struct database_dyn *db, int + buffer = (char *) extend_alloca (buffer, buflen, 2 * buflen); + } + +- cache_addserv (db, fd, req, key, serv, uid, he, dh, errval); ++ time_t timeout = cache_addserv (db, fd, req, key, serv, uid, he, dh, errval); + + if (use_malloc) + free (buffer); ++ ++ return timeout; + } + + +@@ -424,7 +432,7 @@ addservbyname (struct database_dyn *db, + } + + +-void ++time_t + readdservbyname (struct database_dyn *db, struct hashentry *he, + struct datahead *dh) + { +@@ -434,7 +442,7 @@ readdservbyname (struct database_dyn *db + .key_len = he->len + }; + +- addservbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); ++ return addservbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); + } + + +@@ -446,7 +454,7 @@ addservbyport (struct database_dyn *db, + } + + +-void ++time_t + readdservbyport (struct database_dyn *db, struct hashentry *he, + struct datahead *dh) + { +@@ -456,5 +464,5 @@ readdservbyport (struct database_dyn *db + .key_len = he->len + }; + +- addservbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); ++ return addservbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); + } diff --git a/src/patches/glibc/glibc-rh705465.patch b/src/patches/glibc/glibc-rh705465.patch new file mode 100644 index 0000000..63b971e --- /dev/null +++ b/src/patches/glibc/glibc-rh705465.patch @@ -0,0 +1,449 @@ +2011-11-07 Andreas Schwab schwab@redhat.com + + * nss/nss_files/files-initgroups.c (_nss_files_initgroups_dyn): + Fix size of allocated buffer. + +2011-05-10 Ulrich Drepper drepper@gmail.com + + [BZ #11257] + * grp/initgroups.c (internal_getgrouplist): When we found the service + list through the initgroups entry in nsswitch.conf do not always + continue on a successful lookup. Don't always use the + __nss_group_data-ase value if it is set. + * nss/nsswitch.conf (initgroups): Change action for successful db + lookup to continue for compatibility. + +2011-05-06 Ulrich Drepper drepper@gmail.com + + * nss/nss_files/files-initgroups.c (_nss_files_initgroups_dyn): Return + NSS_STATUS_NOTFOUND if no record was found. + +2011-04-29 Ulrich Drepper drepper@gmail.com + + * grp/initgroups.c (internal_getgrouplist): Prefer initgroups setting + to groups setting in database lookup. + * nss/nsswitch.conf: Add initgroups entry. + +2011-04-21 Ulrich Drepper drepper@gmail.com + + * nss/nss_files/files-initgroups.c (_nss_files_initgroups_dyn): Fix + problem in reallocation in last patch. + +2011-04-19 Ulrich Drepper drepper@gmail.com + + * nss/nss_files/files-initgroups.c: New file. + * nss/Makefile (libnss_files-routines): Add files-initgroups. + * nss/Versions (libnss_files) [GLIBC_PRIVATE]: Export + _nss_files_initgroups_dyn. + +2011-01-13 Ulrich Drepper drepper@gmail.com + + [BZ #10484] + * nss/nss_files/files-hosts.c (HOST_DB_LOOKUP): Handle overflows of + temporary buffer used to handle multi lookups locally. + * include/alloca.h: Add libc_hidden_proto for __libc_alloca_cutoff. + +2011-01-13 Ulrich Drepper drepper@gmail.com + + [BZ #10484] + * Versions [libc] (GLIBC_PRIVATE): Export __libc_alloca_cutoff. + * alloca_cutoff.c: Add libc_hidden_def. + +Index: glibc-2.12-2-gc4ccff1/grp/initgroups.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/grp/initgroups.c ++++ glibc-2.12-2-gc4ccff1/grp/initgroups.c +@@ -43,6 +43,8 @@ extern int __nss_group_lookup (service_u + extern void *__nss_lookup_function (service_user *ni, const char *fct_name); + + extern service_user *__nss_group_database attribute_hidden; ++static service_user *initgroups_database; ++static bool use_initgroups_entry; + + + #include "compat-initgroups.c" +@@ -67,32 +69,41 @@ internal_getgrouplist (const char *user, + } + #endif + +- service_user *nip = NULL; +- initgroups_dyn_function fct; + enum nss_status status = NSS_STATUS_UNAVAIL; +- int no_more; +- /* Start is one, because we have the first group as parameter. */ +- long int start = 1; ++ int no_more = 0; + + /* Never store more than the starting *SIZE number of elements. */ + assert (*size > 0); + (*groupsp)[0] = group; ++ /* Start is one, because we have the first group as parameter. */ ++ long int start = 1; + +- if (__nss_group_database != NULL) ++ if (initgroups_database == NULL) + { +- no_more = 0; +- nip = __nss_group_database; ++ no_more = __nss_database_lookup ("initgroups", NULL, "", ++ &initgroups_database); ++ if (no_more == 0 && initgroups_database == NULL) ++ { ++ if (__nss_group_database == NULL) ++ no_more = __nss_database_lookup ("group", NULL, "compat files", ++ &__nss_group_database); ++ ++ initgroups_database = __nss_group_database; ++ } ++ else if (initgroups_database != NULL) ++ { ++ assert (no_more == 0); ++ use_initgroups_entry = true; ++ } + } +- else +- no_more = __nss_database_lookup ("group", NULL, +- "compat [NOTFOUND=return] files", &nip); + ++ service_user *nip = initgroups_database; + while (! no_more) + { + long int prev_start = start; + +- fct = __nss_lookup_function (nip, "initgroups_dyn"); +- ++ initgroups_dyn_function fct = __nss_lookup_function (nip, ++ "initgroups_dyn"); + if (fct == NULL) + status = compat_call (nip, user, group, &start, size, groupsp, + limit, &errno); +@@ -119,7 +130,13 @@ internal_getgrouplist (const char *user, + if (NSS_STATUS_TRYAGAIN > status || status > NSS_STATUS_RETURN) + __libc_fatal ("illegal status in internal_getgrouplist"); + +- if (status != NSS_STATUS_SUCCESS ++ /* For compatibility reason we will continue to look for more ++ entries using the next service even though data has already ++ been found if the nsswitch.conf file contained only a 'groups' ++ line and no 'initgroups' line. If the latter is available ++ we always respect the status. This means that the default ++ for successful lookups is to return. */ ++ if ((use_initgroups_entry || status != NSS_STATUS_SUCCESS) + && nss_next_action (nip, status) == NSS_ACTION_RETURN) + break; + +Index: glibc-2.12-2-gc4ccff1/include/alloca.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/include/alloca.h ++++ glibc-2.12-2-gc4ccff1/include/alloca.h +@@ -14,6 +14,7 @@ extern void *__alloca (size_t __size); + + extern int __libc_use_alloca (size_t size) __attribute__ ((const)); + extern int __libc_alloca_cutoff (size_t size) __attribute__ ((const)); ++libc_hidden_proto (__libc_alloca_cutoff) + + #define __MAX_ALLOCA_CUTOFF 65536 + +Index: glibc-2.12-2-gc4ccff1/nptl/Versions +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/Versions ++++ glibc-2.12-2-gc4ccff1/nptl/Versions +@@ -27,6 +27,7 @@ libc { + pthread_cond_broadcast; pthread_cond_timedwait; + } + GLIBC_PRIVATE { ++ __libc_alloca_cutoff; + # Internal libc interface to libpthread + __libc_dl_error_tsd; + } +Index: glibc-2.12-2-gc4ccff1/nptl/alloca_cutoff.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/alloca_cutoff.c ++++ glibc-2.12-2-gc4ccff1/nptl/alloca_cutoff.c +@@ -34,3 +34,4 @@ __libc_alloca_cutoff (size_t size) + assume the maximum available stack space. */ + ?: __MAX_ALLOCA_CUTOFF * 4)); + } ++libc_hidden_def (__libc_alloca_cutoff) +Index: glibc-2.12-2-gc4ccff1/nss/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nss/Makefile ++++ glibc-2.12-2-gc4ccff1/nss/Makefile +@@ -63,7 +63,7 @@ vpath %.c $(subdir-dirs) + + + libnss_files-routines := $(addprefix files-,$(databases)) \ +- files-have_o_cloexec ++ files-initgroups files-have_o_cloexec + distribute += files-XXX.c files-parse.c + + +Index: glibc-2.12-2-gc4ccff1/nss/Versions +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nss/Versions ++++ glibc-2.12-2-gc4ccff1/nss/Versions +@@ -95,5 +95,7 @@ libnss_files { + _nss_netgroup_parseline; + _nss_files_getpublickey; + _nss_files_getsecretkey; ++ ++ _nss_files_initgroups_dyn; + } + } +Index: glibc-2.12-2-gc4ccff1/nss/nss_files/files-hosts.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nss/nss_files/files-hosts.c ++++ glibc-2.12-2-gc4ccff1/nss/nss_files/files-hosts.c +@@ -129,19 +129,22 @@ _nss_files_get##name##_r (proto, + && _res_hconf.flags & HCONF_FLAG_MULTI) \ + { \ + /* We have to get all host entries from the file. */ \ +- const size_t tmp_buflen = MIN (buflen, 4096); \ +- char tmp_buffer[tmp_buflen] \ ++ size_t tmp_buflen = MIN (buflen, 4096); \ ++ char tmp_buffer_stack[tmp_buflen] \ + __attribute__ ((__aligned__ (__alignof__ (struct hostent_data))));\ ++ char *tmp_buffer = tmp_buffer_stack; \ + struct hostent tmp_result_buf; \ + int naddrs = 1; \ + int naliases = 0; \ + char *bufferend; \ ++ bool tmp_buffer_malloced = false; \ + \ + while (result->h_aliases[naliases] != NULL) \ + ++naliases; \ + \ + bufferend = (char *) &result->h_aliases[naliases + 1]; \ + \ ++ again: \ + while ((status = internal_getent (&tmp_result_buf, tmp_buffer, \ + tmp_buflen, errnop H_ERRNO_ARG \ + EXTRA_ARGS_VALUE)) \ +@@ -182,7 +185,7 @@ _nss_files_get##name##_r (proto, + } \ + /* If the real name is different add it also to the \ + aliases. This means that there is a duplication \ +- in the alias list but this is really the users \ ++ in the alias list but this is really the user's \ + problem. */ \ + if (strcmp (old_result->h_name, \ + tmp_result_buf.h_name) != 0) \ +@@ -204,7 +207,7 @@ _nss_files_get##name##_r (proto, + *errnop = ERANGE; \ + *herrnop = NETDB_INTERNAL; \ + status = NSS_STATUS_TRYAGAIN; \ +- break; \ ++ goto out; \ + } \ + \ + new_h_addr_list = \ +@@ -268,8 +271,54 @@ _nss_files_get##name##_r (proto, + } \ + } \ + \ +- if (status != NSS_STATUS_TRYAGAIN) \ ++ if (status == NSS_STATUS_TRYAGAIN) \ ++ { \ ++ size_t newsize = 2 * tmp_buflen; \ ++ if (tmp_buffer_malloced) \ ++ { \ ++ char *newp = realloc (tmp_buffer, newsize); \ ++ if (newp != NULL) \ ++ { \ ++ assert ((((uintptr_t) newp) \ ++ & (__alignof__ (struct hostent_data) - 1)) \ ++ == 0); \ ++ tmp_buffer = newp; \ ++ tmp_buflen = newsize; \ ++ goto again; \ ++ } \ ++ } \ ++ else if (!__libc_use_alloca (buflen + newsize)) \ ++ { \ ++ tmp_buffer = malloc (newsize); \ ++ if (tmp_buffer != NULL) \ ++ { \ ++ assert ((((uintptr_t) tmp_buffer) \ ++ & (__alignof__ (struct hostent_data) - 1)) \ ++ == 0); \ ++ tmp_buffer_malloced = true; \ ++ tmp_buflen = newsize; \ ++ goto again; \ ++ } \ ++ } \ ++ else \ ++ { \ ++ tmp_buffer \ ++ = extend_alloca (tmp_buffer, tmp_buflen, \ ++ newsize \ ++ + __alignof__ (struct hostent_data)); \ ++ tmp_buffer = (char *) (((uintptr_t) tmp_buffer \ ++ + __alignof__ (struct hostent_data) \ ++ - 1) \ ++ & ~(__alignof__ (struct hostent_data)\ ++ - 1)); \ ++ goto again; \ ++ } \ ++ } \ ++ else \ + status = NSS_STATUS_SUCCESS; \ ++ out: \ ++ if (tmp_buffer_malloced) \ ++ free (tmp_buffer); \ + } \ + \ + \ +Index: glibc-2.12-2-gc4ccff1/nss/nss_files/files-initgroups.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/nss/nss_files/files-initgroups.c +@@ -0,0 +1,137 @@ ++/* Initgroups handling in nss_files module. ++ Copyright (C) 2011 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include <alloca.h> ++#include <errno.h> ++#include <grp.h> ++#include <nss.h> ++#include <stdio_ext.h> ++#include <string.h> ++#include <sys/param.h> ++ ++enum nss_status ++_nss_files_initgroups_dyn (const char *user, gid_t group, long int *start, ++ long int *size, gid_t **groupsp, long int limit, ++ int *errnop) ++{ ++ FILE *stream = fopen ("/etc/group", "re"); ++ if (stream == NULL) ++ { ++ *errnop = errno; ++ return *errnop == ENOMEM ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL; ++ } ++ ++ /* No other thread using this stream. */ ++ __fsetlocking (stream, FSETLOCKING_BYCALLER); ++ ++ char *line = NULL; ++ size_t linelen = 0; ++ enum nss_status status = NSS_STATUS_SUCCESS; ++ bool any = false; ++ ++ size_t buflen = 1024; ++ void *buffer = alloca (buflen); ++ bool buffer_use_malloc = false; ++ ++ gid_t *groups = *groupsp; ++ ++ /* We have to iterate over the entire file. */ ++ while (!feof_unlocked (stream)) ++ { ++ ssize_t n = getline (&line, &linelen, stream); ++ if (n < 0) ++ { ++ if (! feof_unlocked (stream)) ++ status = ((*errnop = errno) == ENOMEM ++ ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL); ++ break; ++ } ++ ++ struct group grp; ++ int res; ++ while ((res = _nss_files_parse_grent (line, &grp, buffer, buflen, ++ errnop)) == -1) ++ { ++ size_t newbuflen = 2 * buflen; ++ if (buffer_use_malloc || ! __libc_use_alloca (buflen + newbuflen)) ++ { ++ void *newbuf = realloc (buffer_use_malloc ? buffer : NULL, ++ newbuflen); ++ if (newbuf == NULL) ++ { ++ *errnop = ENOMEM; ++ status = NSS_STATUS_TRYAGAIN; ++ goto out; ++ } ++ buffer = newbuf; ++ buflen = newbuflen; ++ buffer_use_malloc = true; ++ } ++ else ++ buffer = extend_alloca (buffer, buflen, newbuflen); ++ } ++ ++ if (res > 0 && grp.gr_gid != group) ++ for (char **m = grp.gr_mem; *m != NULL; ++m) ++ if (strcmp (*m, user) == 0) ++ { ++ /* Matches user. Insert this group. */ ++ if (*start == *size) ++ { ++ /* Need a bigger buffer. */ ++ if (limit > 0 && *size == limit) ++ /* We reached the maximum. */ ++ goto out; ++ ++ long int newsize; ++ if (limit <= 0) ++ newsize = 2 * *size; ++ else ++ newsize = MIN (limit, 2 * *size); ++ ++ gid_t *newgroups = realloc (groups, ++ newsize * sizeof (*groups)); ++ if (newgroups == NULL) ++ { ++ *errnop = ENOMEM; ++ status = NSS_STATUS_TRYAGAIN; ++ goto out; ++ } ++ *groupsp = groups = newgroups; ++ *size = newsize; ++ } ++ ++ groups[*start] = grp.gr_gid; ++ *start += 1; ++ any = true; ++ ++ break; ++ } ++ } ++ ++ out: ++ /* Free memory. */ ++ if (buffer_use_malloc) ++ free (buffer); ++ free (line); ++ ++ fclose (stream); ++ ++ return status == NSS_STATUS_SUCCESS && !any ? NSS_STATUS_NOTFOUND : status; ++} +Index: glibc-2.12-2-gc4ccff1/nss/nsswitch.conf +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nss/nsswitch.conf ++++ glibc-2.12-2-gc4ccff1/nss/nsswitch.conf +@@ -5,6 +5,7 @@ + + passwd: db files + group: db files ++initgroups: db [SUCCESS=continue] files + shadow: db files + gshadow: files + diff --git a/src/patches/glibc/glibc-rh711927.patch b/src/patches/glibc/glibc-rh711927.patch new file mode 100644 index 0000000..26949fe --- /dev/null +++ b/src/patches/glibc/glibc-rh711927.patch @@ -0,0 +1,503 @@ +Index: glibc-2.12-2-gc4ccff1/config.h.in +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/config.h.in ++++ glibc-2.12-2-gc4ccff1/config.h.in +@@ -201,6 +201,9 @@ + /* Define if multi-arch DSOs should be generated. */ + #undef USE_MULTIARCH + ++/* Define if Systemtap <sys/sdt.h> probes should be defined. */ ++#undef USE_STAP_PROBE ++ + /* + */ + +Index: glibc-2.12-2-gc4ccff1/configure +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/configure ++++ glibc-2.12-2-gc4ccff1/configure +@@ -830,6 +830,7 @@ enable_all_warnings + enable_multi_arch + enable_experimental_malloc + enable_nss_crypt ++enable_systemtap + with_cpu + ' + ac_precious_vars='build_alias +@@ -1501,6 +1502,7 @@ Optional Features: + --enable-experimental-malloc + enable experimental malloc features + --enable-nss-crypt enable libcrypt to use nss ++ --enable-systemtap enable systemtap static probe points [default=no] + + Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] +@@ -3932,6 +3934,79 @@ else + fi + + ++# Check whether --enable-systemtap was given. ++if test "${enable_systemtap+set}" = set; then ++ enableval=$enable_systemtap; systemtap=$enableval ++else ++ systemtap=no ++fi ++ ++if test x$systemtap != xno; then ++ ++ { $as_echo "$as_me:$LINENO: checking for systemtap static probe support" >&5 ++$as_echo_n "checking for systemtap static probe support... " >&6; } ++if test "${libc_cv_sdt+set}" = set; then ++ $as_echo_n "(cached) " >&6 ++else ++ old_CFLAGS="$CFLAGS" ++ CFLAGS="-std=gnu99 $CFLAGS" ++ cat >conftest.$ac_ext <<_ACEOF ++#include <sys/sdt.h> ++void foo (int i, void *p) ++{ ++ asm ("" STAP_PROBE_ASM (foo, bar, STAP_PROBE_ASM_TEMPLATE (2)) "" ++ :: STAP_PROBE_ASM_OPERANDS (2, i, p)); ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *"* | *`* | *\*) ac_try_echo=$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo=""$as_me:$LINENO: $ac_try_echo"" ++$as_echo "$ac_try_echo") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ $as_echo "$as_me:$LINENO: $? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ libc_cv_sdt=yes ++else ++ $as_echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ libc_cv_sdt=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ CFLAGS="$old_CFLAGS" ++fi ++{ $as_echo "$as_me:$LINENO: result: $libc_cv_sdt" >&5 ++$as_echo "$libc_cv_sdt" >&6; } ++ if test $libc_cv_sdt = yes; then ++ cat >>confdefs.h <<_ACEOF ++#define USE_STAP_PROBE 1 ++_ACEOF ++ ++ else ++ { { $as_echo "$as_me:$LINENO: error: in `$ac_pwd':" >&5 ++$as_echo "$as_me: error: in `$ac_pwd':" >&2;} ++{ { $as_echo "$as_me:$LINENO: error: systemtap support needs sys/sdt.h with asm support ++See `config.log' for more details." >&5 ++$as_echo "$as_me: error: systemtap support needs sys/sdt.h with asm support ++See `config.log' for more details." >&2;} ++ { (exit 1); exit 1; }; }; } ++ fi ++ ++fi ++ ++ + # The way shlib-versions is used to generate soversions.mk uses a + # fairly simplistic model for name recognition that can't distinguish + # i486-pc-linux-gnu fully from i486-pc-gnu. So we mutate a $host_os +Index: glibc-2.12-2-gc4ccff1/configure.in +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/configure.in ++++ glibc-2.12-2-gc4ccff1/configure.in +@@ -319,6 +319,29 @@ else + fi + AC_SUBST(libc_cv_nss_crypt) + ++AC_ARG_ENABLE([systemtap], ++ [AS_HELP_STRING([--enable-systemtap], ++ [enable systemtap static probe points @<:@default=no@:>@])], ++ [systemtap=$enableval], ++ [systemtap=no]) ++AS_IF([test x$systemtap != xno], [ ++ AC_CACHE_CHECK([for systemtap static probe support], libc_cv_sdt, [dnl ++ old_CFLAGS="$CFLAGS" ++ CFLAGS="-std=gnu99 $CFLAGS" ++ AC_COMPILE_IFELSE([#include <sys/sdt.h> ++void foo (int i, void *p) ++{ ++ asm ("" STAP_PROBE_ASM (foo, bar, STAP_PROBE_ASM_TEMPLATE (2)) "" ++ :: STAP_PROBE_ASM_OPERANDS (2, i, p)); ++}], [libc_cv_sdt=yes], [libc_cv_sdt=no]) ++ CFLAGS="$old_CFLAGS"]) ++ if test $libc_cv_sdt = yes; then ++ AC_DEFINE([USE_STAP_PROBE]) ++ else ++ AC_MSG_FAILURE([systemtap support needs sys/sdt.h with asm support]) ++ fi ++]) ++ + # The way shlib-versions is used to generate soversions.mk uses a + # fairly simplistic model for name recognition that can't distinguish + # i486-pc-linux-gnu fully from i486-pc-gnu. So we mutate a $host_os +Index: glibc-2.12-2-gc4ccff1/elf/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/Makefile ++++ glibc-2.12-2-gc4ccff1/elf/Makefile +@@ -458,7 +458,8 @@ CFLAGS-ldconfig.c = $(SYSCONF-FLAGS) -D' + CFLAGS-dl-cache.c = $(SYSCONF-FLAGS) + CFLAGS-cache.c = $(SYSCONF-FLAGS) + +-CPPFLAGS-.os += $(if $(filter $(@F),$(patsubst %,%.os,$(all-rtld-routines))),-DNOT_IN_libc=1 -DIS_IN_rtld=1) ++CPPFLAGS-.os += $(if $(filter $(@F),$(patsubst %,%.os,$(all-rtld-routines))),\ ++ -DNOT_IN_libc=1 -DIS_IN_rtld=1 -DIN_LIB=rtld) + + test-modules = $(addprefix $(objpfx),$(addsuffix .so,$(strip $(modules-names)))) + generated += $(addsuffix .so,$(strip $(modules-names))) +Index: glibc-2.12-2-gc4ccff1/elf/dl-close.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/dl-close.c ++++ glibc-2.12-2-gc4ccff1/elf/dl-close.c +@@ -32,6 +32,7 @@ + #include <sys/mman.h> + #include <sysdep-cancel.h> + #include <tls.h> ++#include <stap-probe.h> + + + /* Type of the constructor functions. */ +@@ -469,6 +470,7 @@ _dl_close_worker (struct link_map *map) + struct r_debug *r = _dl_debug_initialize (0, nsid); + r->r_state = RT_DELETE; + _dl_debug_state (); ++ LIBC_PROBE (rtld_unmap_start, 2, nsid, r); + + if (unload_global) + { +@@ -722,6 +724,7 @@ _dl_close_worker (struct link_map *map) + /* Notify the debugger those objects are finalized and gone. */ + r->r_state = RT_CONSISTENT; + _dl_debug_state (); ++ LIBC_PROBE (rtld_unmap_complete, 2, nsid, r); + + /* Recheck if we need to retry, release the lock. */ + out: +Index: glibc-2.12-2-gc4ccff1/elf/dl-load.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/dl-load.c ++++ glibc-2.12-2-gc4ccff1/elf/dl-load.c +@@ -36,6 +36,7 @@ + #include <stackinfo.h> + #include <caller.h> + #include <sysdep.h> ++#include <stap-probe.h> + + #include <dl-dst.h> + +@@ -806,7 +807,7 @@ _dl_init_paths (const char *llp) + static void + __attribute__ ((noreturn, noinline)) + lose (int code, int fd, const char *name, char *realname, struct link_map *l, +- const char *msg, struct r_debug *r) ++ const char *msg, struct r_debug *r, Lmid_t nsid) + { + /* The file might already be closed. */ + if (fd != -1) +@@ -818,6 +819,7 @@ lose (int code, int fd, const char *name + { + r->r_state = RT_CONSISTENT; + _dl_debug_state (); ++ LIBC_PROBE (rtld_map_complete, 2, nsid, r); + } + + _dl_signal_error (code, name, NULL, msg); +@@ -856,7 +858,7 @@ _dl_map_object_from_fd (const char *name + errval = errno; + call_lose: + lose (errval, fd, name, realname, l, errstring, +- make_consistent ? r : NULL); ++ make_consistent ? r : NULL, nsid); + } + + /* Look again to see if the real name matched another already loaded. */ +@@ -963,6 +965,7 @@ _dl_map_object_from_fd (const char *name + linking has not been used before. */ + r->r_state = RT_ADD; + _dl_debug_state (); ++ LIBC_PROBE (rtld_map_start, 2, nsid, r); + make_consistent = true; + } + else +@@ -1656,7 +1659,7 @@ open_verify (const char *name, struct fi + name = strdupa (realname); + free (realname); + } +- lose (errval, fd, name, NULL, NULL, errstring, NULL); ++ lose (errval, fd, name, NULL, NULL, errstring, NULL, 0); + } + + /* See whether the ELF header is what we expect. */ +Index: glibc-2.12-2-gc4ccff1/elf/dl-open.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/dl-open.c ++++ glibc-2.12-2-gc4ccff1/elf/dl-open.c +@@ -33,6 +33,7 @@ + #include <caller.h> + #include <sysdep-cancel.h> + #include <tls.h> ++#include <stap-probe.h> + + #include <dl-dst.h> + +@@ -297,6 +298,7 @@ dl_open_worker (void *a) + struct r_debug *r = _dl_debug_initialize (0, args->nsid); + r->r_state = RT_CONSISTENT; + _dl_debug_state (); ++ LIBC_PROBE (rtld_map_complete, 2, args->nsid, r); + + /* Only do lazy relocation if `LD_BIND_NOW' is not set. */ + int reloc_mode = mode & __RTLD_AUDIT; +@@ -309,10 +311,18 @@ dl_open_worker (void *a) + struct link_map *l = new; + while (l->l_next) + l = l->l_next; ++ int relocation_in_progress = 0; + while (1) + { + if (! l->l_real->l_relocated) + { ++ if (! relocation_in_progress) ++ { ++ /* Notify the debugger that relocations are about to happen. */ ++ LIBC_PROBE (rtld_reloc_start, 2, args->nsid, r); ++ relocation_in_progress = 1; ++ } ++ + #ifdef SHARED + if (__builtin_expect (GLRO(dl_profile) != NULL, 0)) + { +@@ -460,6 +470,10 @@ cannot load any more object with static + _dl_fatal_printf (N_("\ + TLS generation counter wrapped! Please report this.")); + ++ /* Notify the debugger all new objects have been relocated. */ ++ if (relocation_in_progress) ++ LIBC_PROBE (rtld_reloc_complete, 2, args->nsid, r); ++ + /* Run the initializer functions of new objects. */ + _dl_init (new, args->argc, args->argv, args->env); + +Index: glibc-2.12-2-gc4ccff1/elf/rtld-Rules +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/rtld-Rules ++++ glibc-2.12-2-gc4ccff1/elf/rtld-Rules +@@ -122,6 +122,6 @@ ifdef rtld-depfiles + endif + + # This here is the whole point of all the shenanigans. +-rtld-CPPFLAGS := -DNOT_IN_libc=1 -DIS_IN_rtld=1 ++rtld-CPPFLAGS := -DNOT_IN_libc=1 -DIS_IN_rtld=1 -DIN_LIB=rtld + + endif +Index: glibc-2.12-2-gc4ccff1/elf/rtld.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/rtld.c ++++ glibc-2.12-2-gc4ccff1/elf/rtld.c +@@ -40,6 +40,7 @@ + #include <dl-osinfo.h> + #include <dl-procinfo.h> + #include <tls.h> ++#include <stap-probe.h> + + #include <assert.h> + +@@ -1656,6 +1657,7 @@ ERROR: ld.so: object '%s' cannot be load + /* We start adding objects. */ + r->r_state = RT_ADD; + _dl_debug_state (); ++ LIBC_PROBE (rtld_init_start, 2, LM_ID_BASE, r); + + /* Auditing checkpoint: we are ready to signal that the initial map + is being constructed. */ +@@ -2353,6 +2355,7 @@ ERROR: ld.so: object '%s' cannot be load + r = _dl_debug_initialize (0, LM_ID_BASE); + r->r_state = RT_CONSISTENT; + _dl_debug_state (); ++ LIBC_PROBE (rtld_init_complete, 2, LM_ID_BASE, r); + + #ifndef MAP_COPY + /* We must munmap() the cache file. */ +Index: glibc-2.12-2-gc4ccff1/extra-lib.mk +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/extra-lib.mk ++++ glibc-2.12-2-gc4ccff1/extra-lib.mk +@@ -101,4 +101,4 @@ ifneq (,$(cpp-srcs-left)) + include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left)) + endif + +-CPPFLAGS-$(lib) := -DNOT_IN_libc=1 -DIS_IN_$(lib)=1 ++CPPFLAGS-$(lib) := -DNOT_IN_libc=1 -DIS_IN_$(lib)=1 -DIN_LIB=$(lib) +Index: glibc-2.12-2-gc4ccff1/include/stap-probe.h +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/include/stap-probe.h +@@ -0,0 +1,140 @@ ++/* Macros for defining Systemtap <sys/sdt.h> static probe points. ++ Copyright (C) 2011 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _STAP_PROBE_H ++#define _STAP_PROBE_H 1 ++ ++#ifdef USE_STAP_PROBE ++ ++# include <sys/sdt.h> ++ ++/* Our code uses one macro LIBC_PROBE (name, n, arg1, ..., argn). ++ ++ Without USE_STAP_PROBE, that does nothing but evaluates all ++ its arguments (to prevent bit rot, unlike e.g. assert). ++ ++ Systemtap's header defines the macros STAP_PROBE (provider, name) and ++ STAP_PROBEn (provider, name, arg1, ..., argn). For "provider" we paste ++ in the IN_LIB name (libc, libpthread, etc.) automagically. */ ++ ++# ifndef NOT_IN_libc ++# define IN_LIB libc ++# elif !defined IN_LIB ++/* This is intentionally defined with extra unquoted commas in it so ++ that macro substitution will bomb out when it is used. We don't ++ just use #error here, so that this header can be included by ++ other headers that use LIBC_PROBE inside their own macros. We ++ only want such headers to fail to compile if those macros are ++ actually used in a context where IN_LIB has not been defined. */ ++# define IN_LIB ,,,missing -DIN_LIB=... -- not extra-lib.mk?,,, ++# endif ++ ++# define LIBC_PROBE(name, n, ...) \ ++ LIBC_PROBE_1 (IN_LIB, name, n, ## __VA_ARGS__) ++ ++# define LIBC_PROBE_1(lib, name, n, ...) \ ++ STAP_PROBE##n (lib, name, ## __VA_ARGS__) ++ ++# define STAP_PROBE0 STAP_PROBE ++ ++# define LIBC_PROBE_ASM(name, template) \ ++ STAP_PROBE_ASM (IN_LIB, name, template) ++ ++# define LIBC_PROBE_ASM_OPERANDS STAP_PROBE_ASM_OPERANDS ++ ++#else /* Not USE_STAP_PROBE. */ ++ ++# ifndef __ASSEMBLER__ ++# define LIBC_PROBE(name, n, ...) DUMMY_PROBE##n (__VA_ARGS__) ++# else ++# define LIBC_PROBE(name, n, ...) /* Nothing. */ ++# endif ++ ++# define LIBC_PROBE_ASM(name, template) /* Nothing. */ ++# define LIBC_PROBE_ASM_OPERANDS(n, ...) /* Nothing. */ ++ ++/* This silliness lets us evaluate all the arguments for each arity ++ of probe. My kingdom for a real macro system. */ ++ ++# define DUMMY_PROBE0() do {} while (0) ++# define DUMMY_PROBE1(a1) do {} while ((void) (a1), 0) ++# define DUMMY_PROBE2(a1, a2) do {} while ((void) (a1), \ ++ (void) (a2), 0) ++# define DUMMY_PROBE3(a1, a2, a3) do {} while ((void) (a1), \ ++ (void) (a2), \ ++ (void) (a3), 0) ++# define DUMMY_PROBE4(a1, a2, a3, a4) do {} while ((void) (a1), \ ++ (void) (a2), \ ++ (void) (a3), \ ++ (void) (a4), 0) ++# define DUMMY_PROBE5(a1, a2, a3, a4, a5) \ ++ do {} while ((void) (a1), \ ++ (void) (a2), \ ++ (void) (a3), \ ++ (void) (a4), \ ++ (void) (a5), 0) ++# define DUMMY_PROBE6(a1, a2, a3, a4, a5, a6) \ ++ do {} while ((void) (a1), \ ++ (void) (a2), \ ++ (void) (a3), \ ++ (void) (a4), \ ++ (void) (a5), \ ++ (void) (a6), 0) ++# define DUMMY_PROBE7(a1, a2, a3, a4, a5, a6, a7) \ ++ do {} while ((void) (a1), \ ++ (void) (a2), \ ++ (void) (a3), \ ++ (void) (a4), \ ++ (void) (a5), \ ++ (void) (a6), \ ++ (void) (a7), 0) ++# define DUMMY_PROBE8(a1, a2, a3, a4, a5, a6, a7, a8) \ ++ do {} while ((void) (a1), \ ++ (void) (a2), \ ++ (void) (a3), \ ++ (void) (a4), \ ++ (void) (a5), \ ++ (void) (a6), \ ++ (void) (a7), \ ++ (void) (a8), 0) ++# define DUMMY_PROBE9(a1, a2, a3, a4, a5, a6, a7, a8, a9) \ ++ do {} while ((void) (a1), \ ++ (void) (a2), \ ++ (void) (a3), \ ++ (void) (a4), \ ++ (void) (a5), \ ++ (void) (a6), \ ++ (void) (a7), \ ++ (void) (a8), \ ++ (void) (a9), 0) ++# define DUMMY_PROBE10(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) \ ++ do {} while ((void) (a1), \ ++ (void) (a2), \ ++ (void) (a3), \ ++ (void) (a4), \ ++ (void) (a5), \ ++ (void) (a6), \ ++ (void) (a7), \ ++ (void) (a8), \ ++ (void) (a9), \ ++ (void) (a10), 0) ++ ++#endif /* USE_STAP_PROBE. */ ++ ++#endif /* stap-probe.h */ +Index: glibc-2.12-2-gc4ccff1/scripts/check-local-headers.sh +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/scripts/check-local-headers.sh ++++ glibc-2.12-2-gc4ccff1/scripts/check-local-headers.sh +@@ -31,6 +31,8 @@ fgrep -v "$includedir/asm" | + fgrep -v "$includedir/linux" | + fgrep -v "$includedir/selinux" | + fgrep -v "$includedir/sys/capability.h" | ++fgrep -v "$includedir/sys/sdt.h" | ++fgrep -v "$includedir/sys/sdt-config.h" | + fgrep -v "$includedir/gd" | + fgrep -v "$includedir/nss3"; then + # If we found a match something is wrong. diff --git a/src/patches/glibc/glibc-rh711987.patch b/src/patches/glibc/glibc-rh711987.patch new file mode 100644 index 0000000..bd286e1 --- /dev/null +++ b/src/patches/glibc/glibc-rh711987.patch @@ -0,0 +1,136 @@ +2010-08-11 Ulrich Drepper drepper@redhat.com + + * sysdeps/unix/sysv/linux/bits/statfs.h (struct statfs): Add f_flags + field. + (struct statfs64): Likewise. + (_STATFS_F_FLAGS): Define. + * sysdeps/unix/sysv/linux/s390/bits/statfs.h: Likewise. + * sysdeps/unix/sysv/linux/internal_statvfs.c (__statvfs_getflags): + Don't define if __ASSUME_STATFS_F_FLAGS is defined. + (ST_VALID): Define locally. + (INTERNAL_STATVFS): If f_flags has ST_VALID set don't call + __statvfs_getflags, use the provided value. + * sysdeps/unix/sysv/linux/kernel-features.h: Define + __ASSUME_STATFS_F_FLAGS. + +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/bits/statfs.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/bits/statfs.h ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/bits/statfs.h +@@ -42,7 +42,8 @@ struct statfs + __fsid_t f_fsid; + __SWORD_TYPE f_namelen; + __SWORD_TYPE f_frsize; +- __SWORD_TYPE f_spare[5]; ++ __SWORD_TYPE f_flags; ++ __SWORD_TYPE f_spare[4]; + }; + + #ifdef __USE_LARGEFILE64 +@@ -58,10 +59,12 @@ struct statfs64 + __fsid_t f_fsid; + __SWORD_TYPE f_namelen; + __SWORD_TYPE f_frsize; +- __SWORD_TYPE f_spare[5]; ++ __SWORD_TYPE f_flags; ++ __SWORD_TYPE f_spare[4]; + }; + #endif + + /* Tell code we have these members. */ + #define _STATFS_F_NAMELEN + #define _STATFS_F_FRSIZE ++#define _STATFS_F_FLAGS +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/internal_statvfs.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/internal_statvfs.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/internal_statvfs.c +@@ -29,6 +29,11 @@ + #include <sys/statfs.h> + #include <sys/statvfs.h> + #include "linux_fsinfo.h" ++#include "kernel-features.h" ++ ++ ++/* Special internal-only bit value. */ ++#define ST_VALID 0x0020 + + + #ifndef STATFS +@@ -37,6 +42,7 @@ + # define INTERNAL_STATVFS __internal_statvfs + + ++# ifndef __ASSUME_STATFS_F_FLAGS + int + __statvfs_getflags (const char *name, int fstype, struct stat64 *st) + { +@@ -200,6 +206,7 @@ __statvfs_getflags (const char *name, in + + return result; + } ++# endif + #else + extern int __statvfs_getflags (const char *name, int fstype, + struct stat64 *st); +@@ -240,9 +247,14 @@ INTERNAL_STATVFS (const char *name, stru + /* XXX I have no idea how to compute f_favail. Any idea??? */ + buf->f_favail = buf->f_ffree; + +- /* Determining the flags is tricky. We have to read /proc/mounts or +- the /etc/mtab file and search for the entry which matches the given +- file. The way we can test for matching filesystem is using the +- device number. */ +- buf->f_flag = __statvfs_getflags (name, fsbuf->f_type, st); ++#ifndef __ASSUME_STATFS_F_FLAGS ++ if ((fsbuf->f_flags & ST_VALID) == 0) ++ /* Determining the flags is tricky. We have to read /proc/mounts or ++ the /etc/mtab file and search for the entry which matches the given ++ file. The way we can test for matching filesystem is using the ++ device number. */ ++ buf->f_flag = __statvfs_getflags (name, fsbuf->f_type, st); ++ else ++#endif ++ buf->f_flag = fsbuf->f_flags ^ ST_VALID; + } +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/kernel-features.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/kernel-features.h ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/kernel-features.h +@@ -552,3 +552,8 @@ + #if __LINUX_KERNEL_VERSION >= 0x020621 + # define __ASSUME_RECVMMSG 1 + #endif ++ ++/* statfs fills in f_flags since 2.6.36. */ ++#if __LINUX_KERNEL_VERSION >= 0x020624 ++# define __ASSUME_STATFS_F_FLAGS 1 ++#endif +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/s390/bits/statfs.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/s390/bits/statfs.h ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/s390/bits/statfs.h +@@ -42,7 +42,8 @@ struct statfs + __fsid_t f_fsid; + int f_namelen; + int f_frsize; +- int f_spare[5]; ++ int f_flags; ++ int f_spare[4]; + }; + + #ifdef __USE_LARGEFILE64 +@@ -58,10 +59,12 @@ struct statfs64 + __fsid_t f_fsid; + int f_namelen; + int f_frsize; +- int f_spare[5]; ++ int f_flags; ++ int f_spare[4]; + }; + #endif + + /* Tell code we have this member. */ + #define _STATFS_F_NAMELEN + #define _STATFS_F_FRSIZE ++#define _STATFS_F_FLAGS diff --git a/src/patches/glibc/glibc-rh712248.patch b/src/patches/glibc/glibc-rh712248.patch new file mode 100644 index 0000000..afadc66 --- /dev/null +++ b/src/patches/glibc/glibc-rh712248.patch @@ -0,0 +1,69 @@ +2011-07-07 Ulrich Drepper drepper@gmail.com + + [BZ #12868] + * sysdeps/unix/sysv/linux/linux_fsinfo.h: Define Lustre constants. + * sysdeps/unix/sysv/linux/internal_statvfs.c (__statvfs_getflags): + Handle Lustre. + * sysdeps/unix/sysv/linux/pathconf.c (__statfs_link_max): Likewise. + (__statfs_filesize_max): Likewise. + Patch mostly by Andreas Dilger adilger@whamcloud.com. + +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/internal_statvfs.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/internal_statvfs.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/internal_statvfs.c +@@ -109,6 +109,9 @@ __statvfs_getflags (const char *name, in + case LOGFS_MAGIC_U32: + fsname = "logfs"; + break; ++ case LUSTRE_SUPER_MAGIC: ++ fsname = "lustre"; ++ break; + } + + FILE *mtab = __setmntent ("/proc/mounts", "r"); +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/linux_fsinfo.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/linux_fsinfo.h ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/linux_fsinfo.h +@@ -77,6 +77,9 @@ + /* Constant that identifies the `logfsŽ filesystem. */ + #define LOGFS_MAGIC_U32 0xc97e8168u + ++/* Constant that identifies the `lustre' filesystem. */ ++#define LUSTRE_SUPER_MAGIC 0x0BD00BD0 ++ + /* Constants that identify the `minix2' filesystem. */ + #define MINIX2_SUPER_MAGIC 0x2468 + #define MINIX2_SUPER_MAGIC2 0x2478 +@@ -144,6 +147,8 @@ + /* Maximum link counts. */ + #define COH_LINK_MAX 10000 + #define EXT2_LINK_MAX 32000 ++#define EXT4_LINK_MAX 65000 ++#define LUSTRE_LINK_MAX EXT4_LINK_MAX + #define MINIX2_LINK_MAX 65530 + #define MINIX_LINK_MAX 250 + #define REISERFS_LINK_MAX 64535 +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/pathconf.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/pathconf.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/pathconf.c +@@ -104,6 +104,9 @@ __statfs_link_max (int result, const str + case XFS_SUPER_MAGIC: + return XFS_LINK_MAX; + ++ case LUSTRE_SUPER_MAGIC: ++ return LUSTRE_LINK_MAX; ++ + default: + return LINUX_LINK_MAX; + } +@@ -136,6 +139,7 @@ __statfs_filesize_max (int result, const + case UDF_SUPER_MAGIC: + case JFS_SUPER_MAGIC: + case VXFS_SUPER_MAGIC: ++ case LUSTRE_SUPER_MAGIC: + return 64; + + case MSDOS_SUPER_MAGIC: diff --git a/src/patches/glibc/glibc-rh713134.patch b/src/patches/glibc/glibc-rh713134.patch new file mode 100644 index 0000000..dc979be --- /dev/null +++ b/src/patches/glibc/glibc-rh713134.patch @@ -0,0 +1,36 @@ +2011-03-18 Andreas Schwab schwab@redhat.com + + * elf/ldd.bash.in: Never run file directly. + +Index: glibc-2.12-2-gc4ccff1/elf/ldd.bash.in +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/ldd.bash.in ++++ glibc-2.12-2-gc4ccff1/elf/ldd.bash.in +@@ -167,18 +167,6 @@ warning: you do not have execution permi + fi + done + case $ret in +- 0) +- # If the program exits with exit code 5, it means the process has been +- # invoked with __libc_enable_secure. Fall back to running it through +- # the dynamic linker. +- try_trace "$file" +- rc=$? +- if [ $rc = 5 ]; then +- try_trace "$RTLD" "$file" +- rc=$? +- fi +- [ $rc = 0 ] || result=1 +- ;; + 1) + # This can be a non-ELF binary or no binary at all. + nonelf "$file" || { +@@ -186,7 +174,7 @@ warning: you do not have execution permi + result=1 + } + ;; +- 2) ++ 0|2) + try_trace "$RTLD" "$file" || result=1 + ;; + *) diff --git a/src/patches/glibc/glibc-rh714823.patch b/src/patches/glibc/glibc-rh714823.patch new file mode 100644 index 0000000..8bd121b --- /dev/null +++ b/src/patches/glibc/glibc-rh714823.patch @@ -0,0 +1,126 @@ +2011-06-28 Andreas Schwab schwab@redhat.com + + * sysdeps/posix/getaddrinfo.c (gaih_inet): Don't use gethostbyaddr + to determine canonical name. + +2011-06-22 Andreas Schwab schwab@redhat.com + + * sysdeps/posix/getaddrinfo.c (gaih_inet): Fix last change. + +2011-06-21 Ulrich Drepper drepper@gmail.com + + [BZ #12885] + * sysdeps/posix/getaddrinfo.c (gaih_inet): When looking up only IPv6 + addresses using gethostbyname4_r ignore IPv4 addresses. + +Index: glibc-2.12-2-gc4ccff1/sysdeps/posix/getaddrinfo.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/posix/getaddrinfo.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/posix/getaddrinfo.c +@@ -512,10 +512,11 @@ gaih_inet (const char *name, const struc + + /* If we do not have to look for IPv4 and IPv6 together, use + the simple, old functions. */ +- if (req->ai_family == AF_INET +- || (req->ai_family == AF_INET6 +- && ((req->ai_flags & AI_V4MAPPED) == 0 +- || (req->ai_flags & AI_ALL) == 0))) ++ if ((req->ai_family == AF_INET ++ || (req->ai_family == AF_INET6 ++ && ((req->ai_flags & AI_V4MAPPED) == 0 ++ || (req->ai_flags & AI_ALL) == 0))) ++ && (req->ai_flags & AI_CANONNAME) == 0) + { + int family = req->ai_family; + size_t tmpbuflen = 512; +@@ -731,16 +732,44 @@ gaih_inet (const char *name, const struc + tmpbuflen, 2 * tmpbuflen); + } + +- no_inet6_data = no_data; +- + if (status == NSS_STATUS_SUCCESS) + { ++ assert (!no_data); ++ no_data = 1; ++ + if ((req->ai_flags & AI_CANONNAME) != 0 && canon == NULL) + canon = (*pat)->name; + + while (*pat != NULL) +- pat = &((*pat)->next); ++ { ++ if ((*pat)->family == AF_INET ++ && req->ai_family == AF_INET6 ++ && (req->ai_flags & AI_V4MAPPED) != 0) ++ { ++ uint32_t *pataddr = (*pat)->addr; ++ (*pat)->family = AF_INET6; ++ pataddr[3] = pataddr[0]; ++ pataddr[2] = htonl (0xffff); ++ pataddr[1] = 0; ++ pataddr[0] = 0; ++ pat = &((*pat)->next); ++ no_data = 0; ++ } ++ else if (req->ai_family == AF_UNSPEC ++ || (*pat)->family == req->ai_family) ++ { ++ pat = &((*pat)->next); ++ ++ no_data = 0; ++ if (req->ai_family == AF_INET6) ++ got_ipv6 = true; ++ } ++ else ++ *pat = ((*pat)->next); ++ } + } ++ ++ no_inet6_data = no_data; + } + else + { +@@ -905,39 +934,9 @@ gaih_inet (const char *name, const struc + { + if (canon == NULL) + { +- struct hostent *h = NULL; +- int herrno; +- struct hostent th; +- size_t tmpbuflen = 512; +- char *tmpbuf = NULL; +- +- do +- { +- tmpbuf = extend_alloca (tmpbuf, tmpbuflen, tmpbuflen * 2); +- rc = __gethostbyaddr_r (at2->addr, +- ((at2->family == AF_INET6) +- ? sizeof (struct in6_addr) +- : sizeof (struct in_addr)), +- at2->family, &th, tmpbuf, +- tmpbuflen, &h, &herrno); +- } +- while (rc == ERANGE && herrno == NETDB_INTERNAL); +- +- if (rc != 0 && herrno == NETDB_INTERNAL) +- { +- __set_h_errno (herrno); +- return -EAI_SYSTEM; +- } +- +- if (h != NULL) +- canon = h->h_name; +- else +- { +- assert (orig_name != NULL); +- /* If the canonical name cannot be determined, use +- the passed in string. */ +- canon = orig_name; +- } ++ /* If the canonical name cannot be determined, use ++ the passed in string. */ ++ canon = orig_name; + } + + #ifdef HAVE_LIBIDN diff --git a/src/patches/glibc/glibc-rh718057.patch b/src/patches/glibc/glibc-rh718057.patch new file mode 100644 index 0000000..d331996 --- /dev/null +++ b/src/patches/glibc/glibc-rh718057.patch @@ -0,0 +1,109 @@ +2011-07-01 Andreas Schwab schwab@redhat.com + + * nis/nss_compat/compat-pwd.c (getpwent_next_nss_netgr): Query NIS + domain only when needed. + +Index: glibc-2.12-2-gc4ccff1/nis/nss_compat/compat-pwd.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nis/nss_compat/compat-pwd.c ++++ glibc-2.12-2-gc4ccff1/nis/nss_compat/compat-pwd.c +@@ -360,7 +360,7 @@ getpwent_next_nss_netgr (const char *nam + char *group, char *buffer, size_t buflen, + int *errnop) + { +- char *curdomain, *host, *user, *domain, *p2; ++ char *curdomain = NULL, *host, *user, *domain, *p2; + int status; + size_t p2len; + +@@ -369,15 +369,7 @@ getpwent_next_nss_netgr (const char *nam + if (!nss_getpwnam_r) + return NSS_STATUS_UNAVAIL; + +- if (yp_get_default_domain (&curdomain) != YPERR_SUCCESS) +- { +- ent->netgroup = false; +- ent->first = false; +- give_pwd_free (&ent->pwd); +- return NSS_STATUS_UNAVAIL; +- } +- +- if (ent->first == true) ++ if (ent->first) + { + memset (&ent->netgrdata, 0, sizeof (struct __netgrent)); + __internal_setnetgrent (group, &ent->netgrdata); +@@ -403,8 +395,19 @@ getpwent_next_nss_netgr (const char *nam + if (user == NULL || user[0] == '-') + continue; + +- if (domain != NULL && strcmp (curdomain, domain) != 0) +- continue; ++ if (domain != NULL) ++ { ++ if (curdomain == NULL ++ && yp_get_default_domain (&curdomain) != YPERR_SUCCESS) ++ { ++ __internal_endnetgrent (&ent->netgrdata); ++ ent->netgroup = false; ++ give_pwd_free (&ent->pwd); ++ return NSS_STATUS_UNAVAIL; ++ } ++ if (strcmp (curdomain, domain) != 0) ++ continue; ++ } + + /* If name != NULL, we are called from getpwnam. */ + if (name != NULL) +Index: glibc-2.12-2-gc4ccff1/nis/nss_compat/compat-spwd.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nis/nss_compat/compat-spwd.c ++++ glibc-2.12-2-gc4ccff1/nis/nss_compat/compat-spwd.c +@@ -317,7 +317,7 @@ getspent_next_nss_netgr (const char *nam + char *group, char *buffer, size_t buflen, + int *errnop) + { +- char *curdomain, *host, *user, *domain, *p2; ++ char *curdomain = NULL, *host, *user, *domain, *p2; + size_t p2len; + + if (!nss_getspnam_r) +@@ -327,15 +327,7 @@ getspent_next_nss_netgr (const char *nam + if (ent->setent_status != NSS_STATUS_SUCCESS) + return ent->setent_status; + +- if (yp_get_default_domain (&curdomain) != YPERR_SUCCESS) +- { +- ent->netgroup = false; +- ent->first = false; +- give_spwd_free (&ent->pwd); +- return NSS_STATUS_UNAVAIL; +- } +- +- if (ent->first == true) ++ if (ent->first) + { + memset (&ent->netgrdata, 0, sizeof (struct __netgrent)); + __internal_setnetgrent (group, &ent->netgrdata); +@@ -362,8 +354,19 @@ getspent_next_nss_netgr (const char *nam + if (user == NULL || user[0] == '-') + continue; + +- if (domain != NULL && strcmp (curdomain, domain) != 0) +- continue; ++ if (domain != NULL) ++ { ++ if (curdomain == NULL ++ && yp_get_default_domain (&curdomain) != YPERR_SUCCESS) ++ { ++ __internal_endnetgrent (&ent->netgrdata); ++ ent->netgroup = false; ++ give_spwd_free (&ent->pwd); ++ return NSS_STATUS_UNAVAIL; ++ } ++ if (strcmp (curdomain, domain) != 0) ++ continue; ++ } + + /* If name != NULL, we are called from getpwnam */ + if (name != NULL) diff --git a/src/patches/glibc/glibc-rh726517.patch b/src/patches/glibc/glibc-rh726517.patch new file mode 100644 index 0000000..26addbf --- /dev/null +++ b/src/patches/glibc/glibc-rh726517.patch @@ -0,0 +1,173 @@ +Index: glibc-2.12-2-gc4ccff1/malloc/arena.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/malloc/arena.c ++++ glibc-2.12-2-gc4ccff1/malloc/arena.c +@@ -870,7 +870,7 @@ heap_trim(heap, pad) heap_info *heap; si + heap = prev_heap; + if(!prev_inuse(p)) { /* consolidate backward */ + p = prev_chunk(p); +- unlink(p, bck, fwd); ++ unlink(ar_ptr, p, bck, fwd); + } + assert(((unsigned long)((char*)p + new_size) & (pagesz-1)) == 0); + assert( ((char*)p + new_size) == ((char*)heap + heap->size) ); +Index: glibc-2.12-2-gc4ccff1/malloc/hooks.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/malloc/hooks.c ++++ glibc-2.12-2-gc4ccff1/malloc/hooks.c +@@ -219,7 +219,9 @@ top_check() + (char*)t + chunksize(t) == mp_.sbrk_base + main_arena.system_mem))) + return 0; + ++ mutex_unlock(&main_arena); + malloc_printerr (check_action, "malloc: top chunk is corrupt", t); ++ mutex_lock(&main_arena); + + /* Try to set up a new top chunk. */ + brk = MORECORE(0); +Index: glibc-2.12-2-gc4ccff1/malloc/malloc.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/malloc/malloc.c ++++ glibc-2.12-2-gc4ccff1/malloc/malloc.c +@@ -2109,12 +2109,14 @@ typedef struct malloc_chunk* mbinptr; + #define last(b) ((b)->bk) + + /* Take a chunk off a bin list */ +-#define unlink(P, BK, FD) { \ ++#define unlink(AV, P, BK, FD) { \ + FD = P->fd; \ + BK = P->bk; \ +- if (__builtin_expect (FD->bk != P || BK->fd != P, 0)) \ ++ if (__builtin_expect (FD->bk != P || BK->fd != P, 0)) { \ ++ mutex_unlock(&(AV)->mutex); \ + malloc_printerr (check_action, "corrupted double-linked list", P); \ +- else { \ ++ mutex_lock(&(AV)->mutex); \ ++ } else { \ + FD->bk = BK; \ + BK->fd = FD; \ + if (!in_smallbin_range (P->size) \ +@@ -3257,7 +3259,9 @@ static Void_t* sYSMALLOc(nb, av) INTERNA + + else if (contiguous(av) && old_size && brk < old_end) { + /* Oops! Someone else killed our space.. Can't touch anything. */ ++ mutex_unlock(&av->mutex); + malloc_printerr (3, "break adjusted to free malloc space", brk); ++ mutex_lock(&av->mutex); + } + + /* +@@ -4305,7 +4309,9 @@ _int_malloc(mstate av, size_t bytes) + { + errstr = "malloc(): memory corruption (fast)"; + errout: ++ mutex_unlock(&av->mutex); + malloc_printerr (check_action, errstr, chunk2mem (victim)); ++ mutex_lock(&av->mutex); + return NULL; + } + #ifndef ATOMIC_FASTBINS +@@ -4393,8 +4399,12 @@ _int_malloc(mstate av, size_t bytes) + bck = victim->bk; + if (__builtin_expect (victim->size <= 2 * SIZE_SZ, 0) + || __builtin_expect (victim->size > av->system_mem, 0)) +- malloc_printerr (check_action, "malloc(): memory corruption", +- chunk2mem (victim)); ++ { ++ void *p = chunk2mem(victim); ++ mutex_unlock(&av->mutex); ++ malloc_printerr (check_action, "malloc(): memory corruption", p); ++ mutex_lock(&av->mutex); ++ } + size = chunksize(victim); + + /* +@@ -4535,7 +4545,7 @@ _int_malloc(mstate av, size_t bytes) + victim = victim->fd; + + remainder_size = size - nb; +- unlink(victim, bck, fwd); ++ unlink(av, victim, bck, fwd); + + /* Exhaust */ + if (remainder_size < MINSIZE) { +@@ -4633,7 +4643,7 @@ _int_malloc(mstate av, size_t bytes) + remainder_size = size - nb; + + /* unlink */ +- unlink(victim, bck, fwd); ++ unlink(av, victim, bck, fwd); + + /* Exhaust */ + if (remainder_size < MINSIZE) { +@@ -4789,10 +4799,14 @@ _int_free(mstate av, mchunkptr p) + errstr = "free(): invalid pointer"; + errout: + #ifdef ATOMIC_FASTBINS +- if (! have_lock && locked) ++ if (have_lock || locked) + (void)mutex_unlock(&av->mutex); + #endif + malloc_printerr (check_action, errstr, chunk2mem(p)); ++#ifdef ATOMIC_FASTBINS ++ if (have_lock) ++ mutex_lock(&av->mutex); ++#endif + return; + } + /* We know that each chunk is at least MINSIZE bytes in size. */ +@@ -4961,7 +4975,7 @@ _int_free(mstate av, mchunkptr p) + prevsize = p->prev_size; + size += prevsize; + p = chunk_at_offset(p, -((long) prevsize)); +- unlink(p, bck, fwd); ++ unlink(av, p, bck, fwd); + } + + if (nextchunk != av->top) { +@@ -4970,7 +4984,7 @@ _int_free(mstate av, mchunkptr p) + + /* consolidate forward */ + if (!nextinuse) { +- unlink(nextchunk, bck, fwd); ++ unlink(av, nextchunk, bck, fwd); + size += nextsize; + } else + clear_inuse_bit_at_offset(nextchunk, 0); +@@ -5158,7 +5172,7 @@ static void malloc_consolidate(av) mstat + prevsize = p->prev_size; + size += prevsize; + p = chunk_at_offset(p, -((long) prevsize)); +- unlink(p, bck, fwd); ++ unlink(av, p, bck, fwd); + } + + if (nextchunk != av->top) { +@@ -5166,7 +5180,7 @@ static void malloc_consolidate(av) mstat + + if (!nextinuse) { + size += nextsize; +- unlink(nextchunk, bck, fwd); ++ unlink(av, nextchunk, bck, fwd); + } else + clear_inuse_bit_at_offset(nextchunk, 0); + +@@ -5235,7 +5249,9 @@ _int_realloc(mstate av, mchunkptr oldp, + { + errstr = "realloc(): invalid old size"; + errout: ++ mutex_unlock(&av->mutex); + malloc_printerr (check_action, errstr, chunk2mem(oldp)); ++ mutex_lock(&av->mutex); + return NULL; + } + +@@ -5282,7 +5298,7 @@ _int_realloc(mstate av, mchunkptr oldp, + (unsigned long)(newsize = oldsize + nextsize) >= + (unsigned long)(nb)) { + newp = oldp; +- unlink(next, bck, fwd); ++ unlink(av, next, bck, fwd); + } + + /* allocate, copy, free */ diff --git a/src/patches/glibc/glibc-rh730379.patch b/src/patches/glibc/glibc-rh730379.patch new file mode 100644 index 0000000..45808af --- /dev/null +++ b/src/patches/glibc/glibc-rh730379.patch @@ -0,0 +1,34 @@ +2011-08-17 Ulrich Drepper drepper@gmail.com + + * Makeconfig (override CFLAGS): Add library-specific CFLAGS. + * resolv/Makefile: Define CFLAGS-libresolv. + +Index: glibc-2.12-2-gc4ccff1/Makeconfig +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/Makeconfig ++++ glibc-2.12-2-gc4ccff1/Makeconfig +@@ -700,7 +700,9 @@ CPPFLAGS = $($(subdir)-CPPFLAGS) $(+incl + override CFLAGS = -std=gnu99 $(gnu89-inline-CFLAGS) \ + $(filter-out %frame-pointer,$(+cflags)) $(+gccwarn-c) \ + $(sysdep-CFLAGS) $(CFLAGS-$(suffix $@)) $(CFLAGS-$(<F)) \ +- $(CFLAGS-$(@F)) ++ $(CFLAGS-$(@F)) \ ++ $(foreach lib,$(libof-$(basename $(@F))) \ ++ $(libof-$(<F)) $(libof-$(@F)),$(CFLAGS-$(lib))) + override CXXFLAGS = $(c++-sysincludes) \ + $(filter-out %frame-pointer,$(+cflags)) $(sysdep-CFLAGS) \ + $(CFLAGS-$(suffix $@)) $(CFLAGS-$(<F)) $(CFLAGS-$(@F)) +Index: glibc-2.12-2-gc4ccff1/resolv/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/resolv/Makefile ++++ glibc-2.12-2-gc4ccff1/resolv/Makefile +@@ -76,6 +76,9 @@ CPPFLAGS += -Dgethostbyname=res_gethostb + -Dgetnetbyname=res_getnetbyname \ + -Dgetnetbyaddr=res_getnetbyaddr + ++ifeq (yes,$(have-ssp)) ++CFLAGS-libresolv += -fstack-protector ++endif + CFLAGS-res_hconf.c = -fexceptions + CFLAGS-res_send.c += -fno-strict-aliasing + diff --git a/src/patches/glibc/glibc-rh731042.patch b/src/patches/glibc/glibc-rh731042.patch new file mode 100644 index 0000000..d2f7b55 --- /dev/null +++ b/src/patches/glibc/glibc-rh731042.patch @@ -0,0 +1,51 @@ +2011-08-08 Andreas Schwab schwab@redhat.com + + * sysdeps/unix/sysv/linux/x86_64/cancellation.S: Maintain aligned + stack. + * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise. + * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise. + +Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/cancellation.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/x86_64/cancellation.S ++++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/cancellation.S +@@ -71,7 +71,9 @@ ENTRY(__pthread_enable_asynccancel) + + 1: ret + +-3: movq $TCB_PTHREAD_CANCELED, %fs:RESULT ++3: subq $8, %rsp ++ cfi_adjust_cfa_offset(8) ++ movq $TCB_PTHREAD_CANCELED, %fs:RESULT + lock + orl $TCB_EXITING_BITMASK, %fs:CANCELHANDLING + movq %fs:CLEANUP_JMP_BUF, %rdi +Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S ++++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S +@@ -63,9 +63,9 @@ __pthread_cond_timedwait: + cfi_adjust_cfa_offset(8) + cfi_rel_offset(%r15, 0) + #ifdef __ASSUME_FUTEX_CLOCK_REALTIME +-# define FRAME_SIZE 32 ++# define FRAME_SIZE (32+8) + #else +-# define FRAME_SIZE 48 ++# define FRAME_SIZE (48+8) + #endif + subq $FRAME_SIZE, %rsp + cfi_adjust_cfa_offset(FRAME_SIZE) +Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S ++++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S +@@ -45,7 +45,7 @@ __pthread_cond_wait: + cfi_lsda(DW_EH_PE_udata4, .LexceptSTART) + #endif + +-#define FRAME_SIZE 32 ++#define FRAME_SIZE (32+8) + leaq -FRAME_SIZE(%rsp), %rsp + cfi_adjust_cfa_offset(FRAME_SIZE) + diff --git a/src/patches/glibc/glibc-rh736346.patch b/src/patches/glibc/glibc-rh736346.patch new file mode 100644 index 0000000..2dd3f8a --- /dev/null +++ b/src/patches/glibc/glibc-rh736346.patch @@ -0,0 +1,116 @@ +2011-01-14 Ulrich Drepper drepper@gmail.com + + [BZ #10563] + * sysdeps/unix/sysv/linux/i386/setgroups.c: Use INLINE_SETXID_SYSCALL + to make the syscall. + * sysdeps/unix/sysv/linux/setgroups.c: New file. + +2011-01-14 Ulrich Drepper drepper@gmail.com + + [BZ #10563] + * sysdeps/pthread/setxid.h (__SETXID_1): Add cast to assignment. + (__SETXID_2): Likewise. + (__SETXID_3): Likewise. + +Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/pthread/setxid.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/pthread/setxid.h ++++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/pthread/setxid.h +@@ -20,11 +20,11 @@ + #include <sysdep.h> + + #define __SETXID_1(cmd, arg1) \ +- cmd.id[0] = arg1 ++ cmd.id[0] = (long int) arg1 + #define __SETXID_2(cmd, arg1, arg2) \ +- __SETXID_1 (cmd, arg1); cmd.id[1] = arg2 ++ __SETXID_1 (cmd, arg1); cmd.id[1] = (long int) arg2 + #define __SETXID_3(cmd, arg1, arg2, arg3) \ +- __SETXID_2 (cmd, arg1, arg2); cmd.id[2] = arg3 ++ __SETXID_2 (cmd, arg1, arg2); cmd.id[2] = (long int) arg3 + + #ifdef SINGLE_THREAD + # define INLINE_SETXID_SYSCALL(name, nr, args...) \ +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/i386/setgroups.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/i386/setgroups.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/i386/setgroups.c +@@ -25,6 +25,7 @@ + #include <sys/syscall.h> + #include <bp-checks.h> + ++#include <setxid.h> + #include <linux/posix_types.h> + #include <kernel-features.h> + +@@ -44,7 +45,7 @@ int + setgroups (size_t n, const gid_t *groups) + { + #if __ASSUME_32BITUIDS > 0 +- return INLINE_SYSCALL (setgroups32, 2, n, CHECK_N (groups, n)); ++ return INLINE_SETXID_SYSCALL (setgroups32, 2, n, CHECK_N (groups, n)); + #else + if (n > (size_t) __sysconf (_SC_NGROUPS_MAX)) + { +@@ -62,7 +63,8 @@ setgroups (size_t n, const gid_t *groups + int result; + int saved_errno = errno; + +- result = INLINE_SYSCALL (setgroups32, 2, n, CHECK_N (groups, n)); ++ result = INLINE_SETXID_SYSCALL (setgroups32, 2, n, ++ CHECK_N (groups, n)); + if (result == 0 || errno != ENOSYS) + return result; + +@@ -80,7 +82,8 @@ setgroups (size_t n, const gid_t *groups + } + } + +- return INLINE_SYSCALL (setgroups, 2, n, CHECK_N (kernel_groups, n)); ++ return INLINE_SETXID_SYSCALL (setgroups, 2, n, ++ CHECK_N (kernel_groups, n)); + } + #endif + } +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/setgroups.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/setgroups.c +@@ -0,0 +1,37 @@ ++/* Copyright (C) 1997,1998,2000,2002,2004,2006,2011 ++ Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include <errno.h> ++#include <grp.h> ++#include <setxid.h> ++#include <sysdep.h> ++ ++ ++/* Set the group set for the current user to GROUPS (N of them). For ++ Linux we must convert the array of groups into the format that the ++ kernel expects. */ ++int ++setgroups (size_t n, const gid_t *groups) ++{ ++#ifdef __NR_setgroups32 ++# error "wrong setgroups.c file used" ++#endif ++ return INLINE_SETXID_SYSCALL (setgroups, 2, n, groups); ++} ++libc_hidden_def (setgroups) diff --git a/src/patches/glibc/glibc-rh737778.patch b/src/patches/glibc/glibc-rh737778.patch new file mode 100644 index 0000000..5d3c131 --- /dev/null +++ b/src/patches/glibc/glibc-rh737778.patch @@ -0,0 +1,122 @@ +2011-08-14 Roland McGrath roland@hack.frob.com + + * locale/Makefile (locale-CPPFLAGS): Renamed CPPFLAGS-locale-programs. + (locale-CPPFLAGS): New variable; put LOCALEDIR, LOCALE_ALIAS_PATH and + -Iprograms here. + (cppflags-iterator.mk sequence): Use locale-programs in place of nonlib. + (localedef-modules): Add localedef. + (locale-modules): Add locale. + +2011-08-13 Ulrich Drepper drepper@gmail.com + + * intl/l10nflist.c (_nl_normalize_codeset): Make it compile outside + of libc. Make tolower call locale-independent. Optimize a bit by + using isdigit instead of isalnum. + * locale/Makefile (locale-CPPFLAGS): Add -DNOT_IN_libc. + +2011-08-11 Ulrich Drepper drepper@gmail.com + + * intl/l10nflist.c (_nl_make_l10nflist): Use locale-independent + classification. + +Index: glibc-2.12-2-gc4ccff1/intl/l10nflist.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/intl/l10nflist.c ++++ glibc-2.12-2-gc4ccff1/intl/l10nflist.c +@@ -332,13 +332,18 @@ _nl_normalize_codeset (codeset, name_len + char *retval; + char *wp; + size_t cnt; ++#ifdef NOT_IN_libc ++ locale_t locale = newlocale (0, "C", NULL); ++#else ++# define locale _nl_C_locobj_ptr ++#endif + + for (cnt = 0; cnt < name_len; ++cnt) +- if (isalnum ((unsigned char) codeset[cnt])) ++ if (__isalnum_l ((unsigned char) codeset[cnt], locale)) + { + ++len; + +- if (isalpha ((unsigned char) codeset[cnt])) ++ if (! __isdigit_l ((unsigned char) codeset[cnt], locale)) + only_digit = 0; + } + +@@ -346,15 +351,14 @@ _nl_normalize_codeset (codeset, name_len + + if (retval != NULL) + { ++ wp = retval; + if (only_digit) +- wp = stpcpy (retval, "iso"); +- else +- wp = retval; ++ wp = stpcpy (wp, "iso"); + + for (cnt = 0; cnt < name_len; ++cnt) +- if (isalpha ((unsigned char) codeset[cnt])) +- *wp++ = tolower ((unsigned char) codeset[cnt]); +- else if (isdigit ((unsigned char) codeset[cnt])) ++ if (__isalpha_l ((unsigned char) codeset[cnt], locale)) ++ *wp++ = __tolower_l ((unsigned char) codeset[cnt], locale); ++ else if (__isdigit_l ((unsigned char) codeset[cnt], locale)) + *wp++ = codeset[cnt]; + + *wp = '\0'; +Index: glibc-2.12-2-gc4ccff1/locale/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/locale/Makefile ++++ glibc-2.12-2-gc4ccff1/locale/Makefile +@@ -59,10 +59,11 @@ vpath %.c programs ../crypt + vpath %.h programs + vpath %.gperf programs + +-localedef-modules := $(categories:%=ld-%) charmap linereader locfile \ ++localedef-modules := localedef $(categories:%=ld-%) \ ++ charmap linereader locfile \ + repertoire locarchive + localedef-aux := md5 +-locale-modules := locale-spec ++locale-modules := locale locale-spec + lib-modules := charmap-dir simple-hash xmalloc xstrdup + + +@@ -90,22 +91,27 @@ endif + + localepath = "$(localedir):$(i18ndir)" + +-locale-CPPFLAGS := -DLOCALE_PATH='$(localepath)' \ +- -DLOCALEDIR='"$(localedir)"' \ +- -DLOCALE_ALIAS_PATH='"$(msgcatdir)"' \ +- -DCHARMAP_PATH='"$(i18ndir)/charmaps"' \ +- -DREPERTOIREMAP_PATH='"$(i18ndir)/repertoiremaps"' \ +- -DLOCSRCDIR='"$(i18ndir)/locales"' -DHAVE_CONFIG_H \ +- -Iprograms ++# -Iprograms doesn't really belong here, but this gets it at the head ++# of the list instead of the tail, where CPPFLAGS-$(lib) gets added. ++# We need it before the standard -I's to see programs/config.h first. ++locale-CPPFLAGS = -DLOCALEDIR='"$(localedir)"' \ ++ -DLOCALE_ALIAS_PATH='"$(msgcatdir)"' \ ++ -Iprograms ++ ++CPPFLAGS-locale-programs = -DLOCALE_PATH='$(localepath)' \ ++ -DCHARMAP_PATH='"$(i18ndir)/charmaps"' \ ++ -DREPERTOIREMAP_PATH='"$(i18ndir)/repertoiremaps"' \ ++ -DLOCSRCDIR='"$(i18ndir)/locales"' \ ++ -DHAVE_CONFIG_H -DNOT_IN_libc + + CFLAGS-charmap.c = -Wno-write-strings -Wno-char-subscripts + CFLAGS-locfile.c = -Wno-write-strings -Wno-char-subscripts + CFLAGS-charmap-dir.c = -Wno-write-strings + +-# This makes sure -DNOT_IN_libc is passed for all these modules. ++# This makes sure -DNOT_IN_libc et al are passed for all these modules. + cpp-srcs-left := $(addsuffix .c,$(localedef-modules) $(localedef-aux) \ + $(locale-modules) $(lib-modules)) +-lib := nonlib ++lib := locale-programs + include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left)) + + # Depend on libc.so so a DT_NEEDED is generated in the shared objects. diff --git a/src/patches/glibc/glibc-rh738665.patch b/src/patches/glibc/glibc-rh738665.patch new file mode 100644 index 0000000..1eea554 --- /dev/null +++ b/src/patches/glibc/glibc-rh738665.patch @@ -0,0 +1,149 @@ +2011-09-15 Andreas Schwab schwab@redhat.com + + * sysdeps/pthread/list.h: Define only list_t if __need_list_t is + defined. + (list_add): Add atomic_write_barrier. + * descr.h: Define __need_list_t before including <list.h>. + * nptl-init.c: Include <list.h> + * allocatestack.c: Likewise. + +2011-09-15 Andreas Schwab schwab@redhat.com + + * thread_dbP.h: Include <list.h> + +Index: glibc-2.12-2-gc4ccff1/nptl/allocatestack.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/allocatestack.c ++++ glibc-2.12-2-gc4ccff1/nptl/allocatestack.c +@@ -27,6 +27,7 @@ + #include <sys/param.h> + #include <dl-sysdep.h> + #include <tls.h> ++#include <list.h> + #include <lowlevellock.h> + #include <kernel-features.h> + +Index: glibc-2.12-2-gc4ccff1/nptl/descr.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/descr.h ++++ glibc-2.12-2-gc4ccff1/nptl/descr.h +@@ -26,6 +26,7 @@ + #include <stdbool.h> + #include <sys/types.h> + #include <hp-timing.h> ++#define __need_list_t + #include <list.h> + #include <lowlevellock.h> + #include <pthreaddef.h> +Index: glibc-2.12-2-gc4ccff1/nptl/nptl-init.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/nptl-init.c ++++ glibc-2.12-2-gc4ccff1/nptl/nptl-init.c +@@ -29,6 +29,7 @@ + #include <atomic.h> + #include <ldsodefs.h> + #include <tls.h> ++#include <list.h> + #include <fork.h> + #include <version.h> + #include <shlib-compat.h> +Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/pthread/list.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/pthread/list.h ++++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/pthread/list.h +@@ -18,27 +18,39 @@ + 02111-1307 USA. */ + + #ifndef _LIST_H +-#define _LIST_H 1 ++ ++#ifndef __need_list_t ++# define _LIST_H 1 ++#endif + + /* The definitions of this file are adopted from those which can be + found in the Linux kernel headers to enable people familiar with + the latter find their way in these sources as well. */ + + ++#if defined __need_list_t || defined _LIST_H ++# ifndef __list_t_defined ++# define __list_t_defined + /* Basic type for the double-link list. */ + typedef struct list_head + { + struct list_head *next; + struct list_head *prev; + } list_t; ++# endif ++# undef __need_list_t ++#endif ++ ++#ifdef _LIST_H + ++# include <atomic.h> + + /* Define a variable with the head and tail of the list. */ +-#define LIST_HEAD(name) \ ++# define LIST_HEAD(name) \ + list_t name = { &(name), &(name) } + + /* Initialize a new list head. */ +-#define INIT_LIST_HEAD(ptr) \ ++# define INIT_LIST_HEAD(ptr) \ + (ptr)->next = (ptr)->prev = (ptr) + + +@@ -49,6 +61,7 @@ list_add (list_t *newp, list_t *head) + newp->next = head->next; + newp->prev = head; + head->next->prev = newp; ++ atomic_write_barrier (); + head->next = newp; + } + +@@ -78,26 +91,28 @@ list_splice (list_t *add, list_t *head) + + + /* Get typed element from list at a given position. */ +-#define list_entry(ptr, type, member) \ ++# define list_entry(ptr, type, member) \ + ((type *) ((char *) (ptr) - (unsigned long) (&((type *) 0)->member))) + + + + /* Iterate forward over the elements of the list. */ +-#define list_for_each(pos, head) \ ++# define list_for_each(pos, head) \ + for (pos = (head)->next; pos != (head); pos = pos->next) + + + /* Iterate forward over the elements of the list. */ +-#define list_for_each_prev(pos, head) \ ++# define list_for_each_prev(pos, head) \ + for (pos = (head)->prev; pos != (head); pos = pos->prev) + + + /* Iterate backwards over the elements list. The list elements can be + removed from the list while doing this. */ +-#define list_for_each_prev_safe(pos, p, head) \ ++# define list_for_each_prev_safe(pos, p, head) \ + for (pos = (head)->prev, p = pos->prev; \ + pos != (head); \ + pos = p, p = pos->prev) + ++#endif /* _LIST_H */ ++ + #endif /* list.h */ +Index: glibc-2.12-2-gc4ccff1/nptl_db/thread_dbP.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl_db/thread_dbP.h ++++ glibc-2.12-2-gc4ccff1/nptl_db/thread_dbP.h +@@ -29,6 +29,7 @@ + #include "proc_service.h" + #include "thread_db.h" + #include "../nptl/pthreadP.h" /* This is for *_BITMASK only. */ ++#include <list.h> + + /* Indeces for the symbol names. */ + enum diff --git a/src/patches/glibc/glibc-rh738763.patch b/src/patches/glibc/glibc-rh738763.patch new file mode 100644 index 0000000..728464d --- /dev/null +++ b/src/patches/glibc/glibc-rh738763.patch @@ -0,0 +1,17 @@ +2011-09-15 Ulrich Drepper drepper@gmail.com + + * sysdeps/unix/sysv/linux/bits/in.h (IP_MULTICAST_ALL): Define. + Patch mostly by Neil Horman nhorman@tuxdriver.com. + +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/bits/in.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/bits/in.h ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/bits/in.h +@@ -70,6 +70,7 @@ + #define IP_XFRM_POLICY 17 + #define IP_PASSSEC 18 + #define IP_TRANSPARENT 19 ++#define IP_MULTICAST_ALL 49 /* bool */ + + /* TProxy original addresses */ + #define IP_ORIGDSTADDR 20 diff --git a/src/patches/glibc/glibc-rh739184.patch b/src/patches/glibc/glibc-rh739184.patch new file mode 100644 index 0000000..cf12246 --- /dev/null +++ b/src/patches/glibc/glibc-rh739184.patch @@ -0,0 +1,18 @@ +2010-06-10 Andreas Schwab schwab@redhat.com + + * sysdeps/unix/sysv/linux/getpagesize.c: Don't assume AT_PAGESIZE + is always available. + +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/getpagesize.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/getpagesize.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/getpagesize.c +@@ -28,7 +28,7 @@ + int + __getpagesize () + { +-#ifdef __ASSUME_AT_PAGESIZE ++#if 0 && defined __ASSUME_AT_PAGESIZE + assert (GLRO(dl_pagesize) != 0); + return GLRO(dl_pagesize); + #else diff --git a/src/patches/glibc/glibc-rh739971.patch b/src/patches/glibc/glibc-rh739971.patch new file mode 100644 index 0000000..960c192 --- /dev/null +++ b/src/patches/glibc/glibc-rh739971.patch @@ -0,0 +1,44 @@ +commit 32c76b63be605d12314e0c6ac2bd702c883d1423 +Author: Andreas Schwab schwab@redhat.com +Date: Mon Sep 26 17:49:14 2011 +0200 + + Correctly reparse group line after enlarging the buffer + +diff --git a/nss/nss_files/files-initgroups.c b/nss/nss_files/files-initgroups.c +index 113abf2..c343b35 100644 +--- a/nss/nss_files/files-initgroups.c ++++ b/nss/nss_files/files-initgroups.c +@@ -52,8 +52,10 @@ _nss_files_initgroups_dyn (const char *user, gid_t group, long int *start, + gid_t *groups = *groupsp; + + /* We have to iterate over the entire file. */ +- while (!feof_unlocked (stream)) ++ while (1) + { ++ fpos_t pos; ++ fgetpos (stream, &pos); + ssize_t n = getline (&line, &linelen, stream); + if (n < 0) + { +@@ -64,9 +66,8 @@ _nss_files_initgroups_dyn (const char *user, gid_t group, long int *start, + } + + struct group grp; +- int res; +- while ((res = _nss_files_parse_grent (line, &grp, buffer, buflen, +- errnop)) == -1) ++ int res = _nss_files_parse_grent (line, &grp, buffer, buflen, errnop); ++ if (res == -1) + { + size_t newbuflen = 2 * buflen; + if (buffer_use_malloc || ! __libc_use_alloca (buflen + newbuflen)) +@@ -85,6 +86,9 @@ _nss_files_initgroups_dyn (const char *user, gid_t group, long int *start, + } + else + buffer = extend_alloca (buffer, buflen, newbuflen); ++ /* Reread current line, the parser has clobbered it. */ ++ fsetpos (stream, &pos); ++ continue; + } + + if (res > 0 && grp.gr_gid != group) diff --git a/src/patches/glibc/glibc-rh740506-2.patch b/src/patches/glibc/glibc-rh740506-2.patch new file mode 100644 index 0000000..adefea0 --- /dev/null +++ b/src/patches/glibc/glibc-rh740506-2.patch @@ -0,0 +1,35 @@ + * malloc/arena.c (arena_get2): Avoid unnecessarily + retrieving #cpus from /proc. + * malloc/malloc.c (mALLOPt): Clamp arena_test based on + the value of arena_max. + +diff --git a/malloc/arena.c b/malloc/arena.c +index cb8548b..00f1da5 100644 +--- a/malloc/arena.c ++++ b/malloc/arena.c +@@ -828,7 +828,7 @@ arena_get2(mstate a_tsd, size_t size) + { + if (mp_.arena_max != 0) + narenas_limit = mp_.arena_max; +- else ++ else if (narenas > mp_.arena_test) + { + int n = __get_nprocs (); + +diff --git a/malloc/malloc.c b/malloc/malloc.c +index 8608083..f8d32da 100644 +--- a/malloc/malloc.c ++++ b/malloc/malloc.c +@@ -6134,6 +6134,12 @@ int mALLOPt(param_number, value) int par + break; + #endif + } ++#ifdef PER_THREAD ++ /* Clamp ARENA_TEST from ARENA_MAX to avoid creating too many ++ arenas. */ ++ if (mp_.arena_max > 0 && mp_.arena_max <= mp_.arena_test) ++ mp_.arena_test = mp_.arena_max - 1; ++#endif + (void)mutex_unlock(&av->mutex); + return res; + } diff --git a/src/patches/glibc/glibc-rh740506.patch b/src/patches/glibc/glibc-rh740506.patch new file mode 100644 index 0000000..6c74ccf --- /dev/null +++ b/src/patches/glibc/glibc-rh740506.patch @@ -0,0 +1,132 @@ +2011-11-14 Andreas Schwab schwab@redhat.com + + * malloc/arena.c (arena_get2): Don't call reused_arena when + _int_new_arena failed. + +2011-11-10 Andreas Schwab schwab@redhat.com + + * malloc/arena.c (_int_new_arena): Don't increment narenas. + (reused_arena): Don't check arena limit. + (arena_get2): Atomically check arena limit. + +diff --git a/malloc/arena.c b/malloc/arena.c +index 9114fd2..042cac8 100644 +--- a/malloc/arena.c ++++ b/malloc/arena.c +@@ -747,8 +747,6 @@ _int_new_arena(size_t size) + main_arena.next = a; + + #ifdef PER_THREAD +- ++narenas; +- + (void)mutex_unlock(&list_lock); + #endif + +@@ -786,30 +784,6 @@ get_free_list (void) + static mstate + reused_arena (void) + { +- if (narenas <= mp_.arena_test) +- return NULL; +- +- static int narenas_limit; +- if (narenas_limit == 0) +- { +- if (mp_.arena_max != 0) +- narenas_limit = mp_.arena_max; +- else +- { +- int n = __get_nprocs (); +- +- if (n >= 1) +- narenas_limit = NARENAS_FROM_NCORES (n); +- else +- /* We have no information about the system. Assume two +- cores. */ +- narenas_limit = NARENAS_FROM_NCORES (2); +- } +- } +- +- if (narenas < narenas_limit) +- return NULL; +- + mstate result; + static mstate next_to_use; + if (next_to_use == NULL) +@@ -844,10 +818,41 @@ arena_get2(mstate a_tsd, size_t size) + mstate a; + + #ifdef PER_THREAD +- if ((a = get_free_list ()) == NULL +- && (a = reused_arena ()) == NULL) +- /* Nothing immediately available, so generate a new arena. */ +- a = _int_new_arena(size); ++ static size_t narenas_limit; ++ ++ a = get_free_list (); ++ if (a == NULL) ++ { ++ /* Nothing immediately available, so generate a new arena. */ ++ if (narenas_limit == 0) ++ { ++ if (mp_.arena_max != 0) ++ narenas_limit = mp_.arena_max; ++ else ++ { ++ int n = __get_nprocs (); ++ ++ if (n >= 1) ++ narenas_limit = NARENAS_FROM_NCORES (n); ++ else ++ /* We have no information about the system. Assume two ++ cores. */ ++ narenas_limit = NARENAS_FROM_NCORES (2); ++ } ++ } ++ repeat:; ++ size_t n = narenas; ++ if (__builtin_expect (n <= mp_.arena_test || n < narenas_limit, 0)) ++ { ++ if (catomic_compare_and_exchange_bool_acq(&narenas, n + 1, n)) ++ goto repeat; ++ a = _int_new_arena (size); ++ if (__builtin_expect (a != NULL, 1)) ++ return a; ++ catomic_decrement(&narenas); ++ } ++ a = reused_arena (); ++ } + #else + if(!a_tsd) + a = a_tsd = &main_arena; + +commit a5fb313cb7b7e692fd4684916aaa98e03ec7e8b6 +Author: Andreas Schwab schwab@redhat.com +Date: Mon Nov 14 11:41:52 2011 +0100 + + Don't call reused_arena when _int_new_arena failed + +diff --git a/malloc/arena.c b/malloc/arena.c +index 042cac8..cb8548b 100644 +--- a/malloc/arena.c ++++ b/malloc/arena.c +@@ -844,14 +844,14 @@ arena_get2(mstate a_tsd, size_t size) + size_t n = narenas; + if (__builtin_expect (n <= mp_.arena_test || n < narenas_limit, 0)) + { +- if (catomic_compare_and_exchange_bool_acq(&narenas, n + 1, n)) ++ if (catomic_compare_and_exchange_bool_acq (&narenas, n + 1, n)) + goto repeat; + a = _int_new_arena (size); +- if (__builtin_expect (a != NULL, 1)) +- return a; +- catomic_decrement(&narenas); ++ if (__builtin_expect (a == NULL, 0)) ++ catomic_decrement (&narenas); + } +- a = reused_arena (); ++ else ++ a = reused_arena (); + } + #else + if(!a_tsd) diff --git a/src/patches/glibc/glibc-rh749188.patch b/src/patches/glibc/glibc-rh749188.patch new file mode 100644 index 0000000..43157cd --- /dev/null +++ b/src/patches/glibc/glibc-rh749188.patch @@ -0,0 +1,32 @@ +commit 0e8131bb32cf026c87baeacb7abf2a9bdbbc4953 +Author: Andreas Schwab schwab@redhat.com +Date: Sun May 8 21:48:03 2011 -0400 + + Remove .UTF-8 suffix from locale names when it is the only supported codeset + +diff --git a/localedata/SUPPORTED b/localedata/SUPPORTED +index d665961..e952c17 100644 +--- a/localedata/SUPPORTED ++++ b/localedata/SUPPORTED +@@ -46,8 +46,8 @@ ar_TN.UTF-8/UTF-8 \ + ar_TN/ISO-8859-6 \ + ar_YE.UTF-8/UTF-8 \ + ar_YE/ISO-8859-6 \ +-az_AZ.UTF-8/UTF-8 \ +-as_IN.UTF-8/UTF-8 \ ++az_AZ/UTF-8 \ ++as_IN/UTF-8 \ + ast_ES.UTF-8/UTF-8 \ + ast_ES/ISO-8859-15 \ + be_BY.UTF-8/UTF-8 \ +@@ -385,8 +385,8 @@ tr_CY/ISO-8859-9 \ + tr_TR.UTF-8/UTF-8 \ + tr_TR/ISO-8859-9 \ + ts_ZA/UTF-8 \ +-tt_RU.UTF-8/UTF-8 \ +-tt_RU.UTF-8@iqtelif/UTF-8 \ ++tt_RU/UTF-8 \ ++tt_RU@iqtelif/UTF-8 \ + ug_CN/UTF-8 \ + uk_UA.UTF-8/UTF-8 \ + uk_UA/KOI8-U \ diff --git a/src/patches/glibc/glibc-rh750531.patch b/src/patches/glibc/glibc-rh750531.patch new file mode 100644 index 0000000..a53e770 --- /dev/null +++ b/src/patches/glibc/glibc-rh750531.patch @@ -0,0 +1,122 @@ +commit 69da074d7adfab7b57004a0dea9403a928e310a5 +Author: Ulrich Drepper drepper@gmail.com +Date: Wed Nov 10 02:38:35 2010 -0500 + + Fix warnings in __bswap_16. + +diff --git a/sysdeps/i386/bits/byteswap.h b/sysdeps/i386/bits/byteswap.h +index 1f3fc5e..c246ae8 100644 +--- a/sysdeps/i386/bits/byteswap.h ++++ b/sysdeps/i386/bits/byteswap.h +@@ -1,5 +1,5 @@ + /* Macros to swap the order of bytes in integer values. +- Copyright (C) 1997, 1998, 2000, 2002, 2003, 2006, 2007, 2008 ++ Copyright (C) 1997, 1998, 2000, 2002, 2003, 2006, 2007, 2008, 2010 + Free Software Foundation, Inc. + This file is part of the GNU C Library. + +@@ -27,26 +27,27 @@ + + /* Swap bytes in 16 bit value. */ + #define __bswap_constant_16(x) \ +- ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)) ++ ((unsigned short int) ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8))) + + #ifdef __GNUC__ + # if __GNUC__ >= 2 + # define __bswap_16(x) \ + (__extension__ \ +- ({ register unsigned short int __v, __x = (x); \ ++ ({ register unsigned short int __v, __x = (unsigned short int) (x); \ + if (__builtin_constant_p (__x)) \ + __v = __bswap_constant_16 (__x); \ + else \ + __asm__ ("rorw $8, %w0" \ + : "=r" (__v) \ +- : "0" (__x) \ +- : "cc"); \ ++ : "0" (__x) \ ++ : "cc"); \ + __v; })) + # else + /* This is better than nothing. */ + # define __bswap_16(x) \ + (__extension__ \ +- ({ register unsigned short int __x = (x); __bswap_constant_16 (__x); })) ++ ({ register unsigned short int __x = (unsigned short int) (x); \ ++ __bswap_constant_16 (__x); })) + # endif + #else + static __inline unsigned short int +@@ -122,7 +123,7 @@ __bswap_32 (unsigned int __bsx) + (__extension__ \ + ({ union { __extension__ unsigned long long int __ll; \ + unsigned long int __l[2]; } __w, __r; \ +- if (__builtin_constant_p (x)) \ ++ if (__builtin_constant_p (x)) \ + __r.__ll = __bswap_constant_64 (x); \ + else \ + { \ +diff --git a/sysdeps/x86_64/bits/byteswap.h b/sysdeps/x86_64/bits/byteswap.h +index 08b38e8..e350fb8 100644 +--- a/sysdeps/x86_64/bits/byteswap.h ++++ b/sysdeps/x86_64/bits/byteswap.h +@@ -1,5 +1,5 @@ + /* Macros to swap the order of bytes in integer values. +- Copyright (C) 1997, 1998, 2000, 2002, 2003, 2007, 2008 ++ Copyright (C) 1997, 1998, 2000, 2002, 2003, 2007, 2008, 2010 + Free Software Foundation, Inc. + This file is part of the GNU C Library. + +@@ -29,12 +29,12 @@ + + /* Swap bytes in 16 bit value. */ + #define __bswap_constant_16(x) \ +- ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)) ++ ((unsigned short int) ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8))) + + #if defined __GNUC__ && __GNUC__ >= 2 + # define __bswap_16(x) \ + (__extension__ \ +- ({ register unsigned short int __v, __x = (x); \ ++ ({ register unsigned short int __v, __x = (unsigned short int) (x); \ + if (__builtin_constant_p (__x)) \ + __v = __bswap_constant_16 (__x); \ + else \ +@@ -47,7 +47,8 @@ + /* This is better than nothing. */ + # define __bswap_16(x) \ + (__extension__ \ +- ({ register unsigned short int __x = (x); __bswap_constant_16 (__x); })) ++ ({ register unsigned short int __x = (unsigned short int) (x); \ ++ __bswap_constant_16 (__x); })) + #endif + + +@@ -120,16 +121,16 @@ + # define __bswap_64(x) \ + (__extension__ \ + ({ union { __extension__ unsigned long long int __ll; \ +- unsigned int __l[2]; } __w, __r; \ +- if (__builtin_constant_p (x)) \ +- __r.__ll = __bswap_constant_64 (x); \ +- else \ +- { \ +- __w.__ll = (x); \ +- __r.__l[0] = __bswap_32 (__w.__l[1]); \ +- __r.__l[1] = __bswap_32 (__w.__l[0]); \ +- } \ +- __r.__ll; })) ++ unsigned int __l[2]; } __w, __r; \ ++ if (__builtin_constant_p (x)) \ ++ __r.__ll = __bswap_constant_64 (x); \ ++ else \ ++ { \ ++ __w.__ll = (x); \ ++ __r.__l[0] = __bswap_32 (__w.__l[1]); \ ++ __r.__l[1] = __bswap_32 (__w.__l[0]); \ ++ } \ ++ __r.__ll; })) + # endif + #endif + diff --git a/src/patches/glibc/glibc-rh751750.patch b/src/patches/glibc/glibc-rh751750.patch new file mode 100644 index 0000000..6f9dd12 --- /dev/null +++ b/src/patches/glibc/glibc-rh751750.patch @@ -0,0 +1,28 @@ +commit 7583a88d1c7170caad26966bcea8bfc2c92093ba +Author: Andreas Schwab schwab@redhat.com +Date: Mon Nov 7 15:07:31 2011 +0100 + + Fix locking in _IO_flush_all_lockp + +diff --git a/libio/genops.c b/libio/genops.c +index 5d21c42..bb40c34 100644 +--- a/libio/genops.c ++++ b/libio/genops.c +@@ -826,7 +826,7 @@ _IO_flush_all_lockp (int do_lock) + int last_stamp; + + #ifdef _IO_MTSAFE_IO +- _IO_cleanup_region_start_noarg (flush_cleanup); ++ __libc_cleanup_region_start (do_lock, flush_cleanup, 0); + if (do_lock) + _IO_lock_lock (list_all_lock); + #endif +@@ -866,7 +866,7 @@ _IO_flush_all_lockp (int do_lock) + #ifdef _IO_MTSAFE_IO + if (do_lock) + _IO_lock_unlock (list_all_lock); +- _IO_cleanup_region_end (0); ++ __libc_cleanup_region_end (0); + #endif + + return result; diff --git a/src/patches/glibc/glibc-rh752122.patch b/src/patches/glibc/glibc-rh752122.patch new file mode 100644 index 0000000..0176dc9 --- /dev/null +++ b/src/patches/glibc/glibc-rh752122.patch @@ -0,0 +1,260 @@ +2011-07-24 H.J. Lu hongjiu.lu@intel.com + + * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_profile): Simplify + AVX check. + +2011-08-20 Ulrich Drepper drepper@gmail.com + + * sysdeps/x86_64/dl-trampoline.h: If MORE_CODE is defined, restore + the CFI state in the end. + * sysdeps/x86_64/dl-trampoline.S: Define MORE_CODE before first + inclusion of dl-trampoline.h. + Based on a patch by Jiri Olsa jolsa@redhat.com. + +2011-07-23 Ulrich Drepper drepper@gmail.com + + * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_profile): Fix one more + typo. + (_dl_x86_64_save_sse): Likewise. + +2011-07-22 Ulrich Drepper drepper@gmail.com + + * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_profile): Fix test for + OSXSAVE. + (_dl_x86_64_save_sse): Likewise. + +2011-07-21 Andreas Schwab schwab@redhat.com + + * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_profile): Fix last + change. + (_dl_x86_64_save_sse): Use correct AVX check. + +2011-07-20 Ulrich Drepper drepper@gmail.com + + [BZ #13007] + * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_profile): More complete + check for AVX enablement so that we don't crash with old kernels and + new hardware. + * elf/tst-audit4.c: Add same checks here. + * elf/tst-audit6.c: Likewise. + +Index: glibc-2.12-2-gc4ccff1/elf/tst-audit4.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/tst-audit4.c ++++ glibc-2.12-2-gc4ccff1/elf/tst-audit4.c +@@ -6,16 +6,30 @@ + #include <cpuid.h> + #include <immintrin.h> + ++ ++static int ++avx_enabled (void) ++{ ++ unsigned int eax, ebx, ecx, edx; ++ ++ if (__get_cpuid (1, &eax, &ebx, &ecx, &edx) == 0 ++ || (ecx & (bit_AVX | bit_OSXSAVE)) != (bit_AVX | bit_OSXSAVE)) ++ return 0; ++ ++ /* Check the OS has AVX and SSE saving enabled. */ ++ asm ("xgetbv" : "=a" (eax), "=d" (edx) : "c" (0)); ++ ++ return (eax & 6) == 6; ++} ++ ++ + extern __m256i audit_test (__m256i, __m256i, __m256i, __m256i, + __m256i, __m256i, __m256i, __m256i); + int + main (void) + { +- unsigned int eax, ebx, ecx, edx; +- + /* Run AVX test only if AVX is supported. */ +- if (__get_cpuid (1, &eax, &ebx, &ecx, &edx) +- && (ecx & bit_AVX)) ++ if (avx_enabled ()) + { + __m256i ymm = _mm256_setzero_si256 (); + __m256i ret = audit_test (ymm, ymm, ymm, ymm, ymm, ymm, ymm, ymm); +Index: glibc-2.12-2-gc4ccff1/elf/tst-audit6.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/tst-audit6.c ++++ glibc-2.12-2-gc4ccff1/elf/tst-audit6.c +@@ -8,14 +8,28 @@ + extern __m128i audit_test (__m128i, __m128i, __m128i, __m128i, + __m128i, __m128i, __m128i, __m128i); + +-int +-main (void) ++ ++static int ++avx_enabled (void) + { + unsigned int eax, ebx, ecx, edx; + ++ if (__get_cpuid (1, &eax, &ebx, &ecx, &edx) == 0 ++ || (ecx & (bit_AVX | bit_OSXSAVE)) != (bit_AVX | bit_OSXSAVE)) ++ return 0; ++ ++ /* Check the OS has AVX and SSE saving enabled. */ ++ asm ("xgetbv" : "=a" (eax), "=d" (edx) : "c" (0)); ++ ++ return (eax & 6) == 6; ++} ++ ++ ++int ++main (void) ++{ + /* Run AVX test only if AVX is supported. */ +- if (__get_cpuid (1, &eax, &ebx, &ecx, &edx) +- && (ecx & bit_AVX)) ++ if (avx_enabled ()) + { + __m128i xmm = _mm_setzero_si128 (); + __m128i ret = audit_test (xmm, xmm, xmm, xmm, xmm, xmm, xmm, xmm); +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/dl-trampoline.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/dl-trampoline.S ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/dl-trampoline.S +@@ -139,24 +139,31 @@ L(have_avx): + movl $1, %eax + cpuid + movq %r11,%rbx # Restore rbx +- movl $1, %eax +- testl $(1 << 28), %ecx ++ xorl %eax, %eax ++ // AVX and XSAVE supported? ++ andl $((1 << 28) | (1 << 27)), %ecx ++ cmpl $((1 << 28) | (1 << 27)), %ecx + jne 2f +- negl %eax +-2: movl %eax, L(have_avx)(%rip) ++ xorl %ecx, %ecx ++ // Get XFEATURE_ENABLED_MASK ++ xgetbv ++ andl $0x6, %eax ++2: subl $0x5, %eax ++ movl %eax, L(have_avx)(%rip) + cmpl $0, %eax + + 1: js L(no_avx) + + # define RESTORE_AVX ++# define MORE_CODE + # include "dl-trampoline.h" + + .align 16 + L(no_avx): + # endif + +-# undef RESTORE_AVX +-# include "dl-trampoline.h" ++# undef RESTORE_AVX ++# include "dl-trampoline.h" + + cfi_endproc + .size _dl_runtime_profile, .-_dl_runtime_profile +@@ -176,11 +183,20 @@ _dl_x86_64_save_sse: + movl $1, %eax + cpuid + movq %r11,%rbx # Restore rbx +- movl $1, %eax +- testl $(1 << 28), %ecx ++ xorl %eax, %eax ++ // AVX and XSAVE supported? ++ andl $((1 << 28) | (1 << 27)), %ecx ++ cmpl $((1 << 28) | (1 << 27)), %ecx + jne 2f +- negl %eax +-2: movl %eax, L(have_avx)(%rip) ++ xorl %ecx, %ecx ++ // Get XFEATURE_ENABLED_MASK ++ xgetbv ++ andl $0x6, %eax ++ cmpl $0x6, %eax ++ // Nonzero if SSE and AVX state saving is enabled. ++ sete %al ++2: leal -1(%eax,%eax), %eax ++ movl %eax, L(have_avx)(%rip) + cmpl $0, %eax + + 1: js L(no_avx5) +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/dl-trampoline.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/dl-trampoline.h ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/dl-trampoline.h +@@ -195,14 +195,14 @@ + _dl_call_pltexit. The La_x86_64_regs is being pointed by rsp now, + so we just need to allocate the sizeof(La_x86_64_retval) space on + the stack, since the alignment has already been taken care of. */ +-# ifdef RESTORE_AVX ++#ifdef RESTORE_AVX + /* sizeof(La_x86_64_retval). Need extra space for 2 SSE + registers to detect if xmm0/xmm1 registers are changed + by audit module. */ + subq $(LRV_SIZE + XMM_SIZE*2), %rsp +-# else ++#else + subq $LRV_SIZE, %rsp # sizeof(La_x86_64_retval) +-# endif ++#endif + movq %rsp, %rcx # La_x86_64_retval argument to %rcx. + + /* Fill in the La_x86_64_retval structure. */ +@@ -212,7 +212,7 @@ + movaps %xmm0, LRV_XMM0_OFFSET(%rcx) + movaps %xmm1, LRV_XMM1_OFFSET(%rcx) + +-# ifdef RESTORE_AVX ++#ifdef RESTORE_AVX + /* This is to support AVX audit modules. */ + vmovdqu %ymm0, LRV_VECTOR0_OFFSET(%rcx) + vmovdqu %ymm1, LRV_VECTOR1_OFFSET(%rcx) +@@ -221,14 +221,14 @@ + by audit module. */ + vmovdqa %xmm0, (LRV_SIZE)(%rcx) + vmovdqa %xmm1, (LRV_SIZE + XMM_SIZE)(%rcx) +-# endif ++#endif + + fstpt LRV_ST0_OFFSET(%rcx) + fstpt LRV_ST1_OFFSET(%rcx) + + movq 24(%rbx), %rdx # La_x86_64_regs argument to %rdx. + movq 40(%rbx), %rsi # Copy args pushed by PLT in register. +- movq 32(%rbx), %rdi # %rdi: link_map, %rsi: reloc_index ++ movq 32(%rbx), %rdi # %rdi: link_map, %rsi: reloc_index + call _dl_call_pltexit + + /* Restore return registers. */ +@@ -238,7 +238,7 @@ + movaps LRV_XMM0_OFFSET(%rsp), %xmm0 + movaps LRV_XMM1_OFFSET(%rsp), %xmm1 + +-# ifdef RESTORE_AVX ++#ifdef RESTORE_AVX + /* Check if xmm0/xmm1 registers are changed by audit module. */ + vpcmpeqq (LRV_SIZE)(%rsp), %xmm0, %xmm2 + vpmovmskb %xmm2, %esi +@@ -253,7 +253,7 @@ + vmovdqu LRV_VECTOR1_OFFSET(%rsp), %ymm1 + + 1: +-# endif ++#endif + + fldt LRV_ST1_OFFSET(%rsp) + fldt LRV_ST0_OFFSET(%rsp) +@@ -267,3 +267,10 @@ + # (eats the reloc index and link_map) + cfi_adjust_cfa_offset(-48) + retq ++ ++#ifdef MORE_CODE ++ cfi_adjust_cfa_offset(48) ++ cfi_rel_offset(%rbx, 0) ++ cfi_def_cfa_register(%rbx) ++# undef MORE_CODE ++#endif diff --git a/src/patches/glibc/glibc-rh757888.patch b/src/patches/glibc/glibc-rh757888.patch new file mode 100644 index 0000000..721d4a4 --- /dev/null +++ b/src/patches/glibc/glibc-rh757888.patch @@ -0,0 +1,225 @@ +commit f3a6cc0a560a17f32a3e90d2f20501a53cab6058 +Author: Andreas Schwab schwab@redhat.com +Date: Tue Nov 29 10:52:22 2011 +0100 + + Fix access after end of search string in regex matcher + +diff --git a/locale/weight.h b/locale/weight.h +index dc70a00..967e176 100644 +--- a/locale/weight.h ++++ b/locale/weight.h +@@ -1,4 +1,4 @@ +-/* Copyright (C) 1996,1997,1998,1999,2000,2003,2004 Free Software Foundation, Inc. ++/* Copyright (C) 1996,1997,1998,1999,2000,2003,2004,2011 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Written by Ulrich Drepper, drepper@cygnus.com. + +@@ -20,7 +20,7 @@ + /* Find index of weight. */ + auto inline int32_t + __attribute ((always_inline)) +-findidx (const unsigned char **cpp) ++findidx (const unsigned char **cpp, size_t len) + { + int_fast32_t i = table[*(*cpp)++]; + const unsigned char *cp; +@@ -34,6 +34,7 @@ findidx (const unsigned char **cpp) + Search for the correct one. */ + cp = &extra[-i]; + usrc = *cpp; ++ --len; + while (1) + { + size_t nhere; +@@ -56,7 +57,7 @@ findidx (const unsigned char **cpp) + already. */ + size_t cnt; + +- for (cnt = 0; cnt < nhere; ++cnt) ++ for (cnt = 0; cnt < nhere && cnt < len; ++cnt) + if (cp[cnt] != usrc[cnt]) + break; + +@@ -79,13 +80,13 @@ findidx (const unsigned char **cpp) + size_t cnt; + size_t offset = 0; + +- for (cnt = 0; cnt < nhere; ++cnt) ++ for (cnt = 0; cnt < nhere && cnt < len; ++cnt) + if (cp[cnt] != usrc[cnt]) + break; + + if (cnt != nhere) + { +- if (cp[cnt] > usrc[cnt]) ++ if (cnt == len || cp[cnt] > usrc[cnt]) + { + /* Cannot be in this range. */ + cp += 2 * nhere; +diff --git a/locale/weightwc.h b/locale/weightwc.h +index 9ea1126..7862091 100644 +--- a/locale/weightwc.h ++++ b/locale/weightwc.h +@@ -1,4 +1,4 @@ +-/* Copyright (C) 1996-2001,2003,2004,2005,2007 Free Software Foundation, Inc. ++/* Copyright (C) 1996-2001,2003,2004,2005,2007,2011 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Written by Ulrich Drepper, drepper@cygnus.com. + +@@ -20,7 +20,7 @@ + /* Find index of weight. */ + auto inline int32_t + __attribute ((always_inline)) +-findidx (const wint_t **cpp) ++findidx (const wint_t **cpp, size_t len) + { + wint_t ch = *(*cpp)++; + int32_t i = __collidx_table_lookup ((const char *) table, ch); +@@ -32,6 +32,7 @@ findidx (const wint_t **cpp) + /* Oh well, more than one sequence starting with this byte. + Search for the correct one. */ + const int32_t *cp = (const int32_t *) &extra[-i]; ++ --len; + while (1) + { + size_t nhere; +@@ -54,7 +55,7 @@ findidx (const wint_t **cpp) + already. */ + size_t cnt; + +- for (cnt = 0; cnt < nhere; ++cnt) ++ for (cnt = 0; cnt < nhere && cnt < len; ++cnt) + if (cp[cnt] != usrc[cnt]) + break; + +@@ -75,7 +76,7 @@ findidx (const wint_t **cpp) + size_t cnt; + size_t offset; + +- for (cnt = 0; cnt < nhere - 1; ++cnt) ++ for (cnt = 0; cnt < nhere - 1 && cnt < len; ++cnt) + if (cp[cnt] != usrc[cnt]) + break; + +diff --git a/posix/fnmatch_loop.c b/posix/fnmatch_loop.c +index 18a6667..72bd3ee 100644 +--- a/posix/fnmatch_loop.c ++++ b/posix/fnmatch_loop.c +@@ -412,7 +412,7 @@ FCT (pattern, string, string_end, no_leading_period, flags, ends, alloca_used) + _NL_CURRENT (LC_COLLATE, _NL_COLLATE_INDIRECTMB); + # endif + +- idx = findidx (&cp); ++ idx = findidx (&cp, 1); + if (idx != 0) + { + /* We found a table entry. Now see whether the +@@ -422,7 +422,7 @@ FCT (pattern, string, string_end, no_leading_period, flags, ends, alloca_used) + int32_t idx2; + const UCHAR *np = (const UCHAR *) n; + +- idx2 = findidx (&np); ++ idx2 = findidx (&np, string_end - n); + if (idx2 != 0 + && (idx >> 24) == (idx2 >> 24) + && len == weights[idx2 & 0xffffff]) +diff --git a/posix/regcomp.c b/posix/regcomp.c +index b238c08..34ee845 100644 +--- a/posix/regcomp.c ++++ b/posix/regcomp.c +@@ -1,5 +1,5 @@ + /* Extended regular expression matching and search library. +- Copyright (C) 2002-2007,2009,2010 Free Software Foundation, Inc. ++ Copyright (C) 2002-2007,2009,2010,2011 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Isamu Hasegawa isamu@yamato.ibm.com. + +@@ -3409,19 +3409,18 @@ build_equiv_class (bitset_t sbcset, const unsigned char *name) + _NL_COLLATE_EXTRAMB); + indirect = (const int32_t *) _NL_CURRENT (LC_COLLATE, + _NL_COLLATE_INDIRECTMB); +- idx1 = findidx (&cp); +- if (BE (idx1 == 0 || cp < name + strlen ((const char *) name), 0)) ++ idx1 = findidx (&cp, -1); ++ if (BE (idx1 == 0 || *cp != '\0', 0)) + /* This isn't a valid character. */ + return REG_ECOLLATE; + + /* Build single byte matcing table for this equivalence class. */ +- char_buf[1] = (unsigned char) '\0'; + len = weights[idx1 & 0xffffff]; + for (ch = 0; ch < SBC_MAX; ++ch) + { + char_buf[0] = ch; + cp = char_buf; +- idx2 = findidx (&cp); ++ idx2 = findidx (&cp, 1); + /* + idx2 = table[ch]; + */ + +--- a/posix/regex_internal.h 2011-11-30 12:47:02.706567482 -0700 ++++ a/posix/regex_internal.h 2011-11-30 12:47:32.969558337 -0700 +@@ -756,7 +756,7 @@ + indirect = (const int32_t *) _NL_CURRENT (LC_COLLATE, + _NL_COLLATE_INDIRECTMB); + p = pstr->mbs + idx; +- tmp = findidx (&p); ++ tmp = findidx (&p, pstr->len - idx); + return p - pstr->mbs - idx; + } + else +diff --git a/posix/regexec.c b/posix/regexec.c +index 9e0c565..3ea810b 100644 +--- a/posix/regexec.c ++++ b/posix/regexec.c +@@ -3924,7 +3924,7 @@ check_node_accept_bytes (const re_dfa_t *dfa, int node_idx, + _NL_CURRENT (LC_COLLATE, _NL_COLLATE_EXTRAMB); + indirect = (const int32_t *) + _NL_CURRENT (LC_COLLATE, _NL_COLLATE_INDIRECTMB); +- int32_t idx = findidx (&cp); ++ int32_t idx = findidx (&cp, elem_len); + if (idx > 0) + for (i = 0; i < cset->nequiv_classes; ++i) + { +diff --git a/string/strcoll_l.c b/string/strcoll_l.c +index d8d1139..fb77d08 100644 +--- a/string/strcoll_l.c ++++ b/string/strcoll_l.c +@@ -1,4 +1,4 @@ +-/* Copyright (C) 1995-1997,2002,2004,2007,2010 Free Software Foundation, Inc. ++/* Copyright (C) 1995-1997,2002,2004,2007,2010,2011 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Written by Ulrich Drepper drepper@gnu.org, 1995. + +@@ -205,7 +205,7 @@ STRCOLL (s1, s2, l) + + while (*us1 != L('\0')) + { +- int32_t tmp = findidx (&us1); ++ int32_t tmp = findidx (&us1, -1); + rule1arr[idx1max] = tmp >> 24; + idx1arr[idx1max] = tmp & 0xffffff; + idx1cnt = idx1max++; +@@ -267,7 +267,7 @@ STRCOLL (s1, s2, l) + + while (*us2 != L('\0')) + { +- int32_t tmp = findidx (&us2); ++ int32_t tmp = findidx (&us2, -1); + rule2arr[idx2max] = tmp >> 24; + idx2arr[idx2max] = tmp & 0xffffff; + idx2cnt = idx2max++; +diff --git a/string/strxfrm_l.c b/string/strxfrm_l.c +index 220253c..b06556d 100644 +--- a/string/strxfrm_l.c ++++ b/string/strxfrm_l.c +@@ -176,7 +176,7 @@ STRXFRM (STRING_TYPE *dest, const STRING_TYPE *src, size_t n, __locale_t l) + idxmax = 0; + do + { +- int32_t tmp = findidx (&usrc); ++ int32_t tmp = findidx (&usrc, -1); + rulearr[idxmax] = tmp >> 24; + idxarr[idxmax] = tmp & 0xffffff; + diff --git a/src/patches/glibc/glibc-rh766513.patch b/src/patches/glibc/glibc-rh766513.patch new file mode 100644 index 0000000..3f629b4 --- /dev/null +++ b/src/patches/glibc/glibc-rh766513.patch @@ -0,0 +1,14 @@ +diff -rup a/po/ja.po b/po/ja.po +--- a/po/ja.po 2010-05-04 05:27:23.000000000 -0600 ++++ b/po/ja.po 2012-02-07 12:21:03.023806370 -0700 +@@ -3549,8 +3549,8 @@ msgstr "%s: ÉÔÀµ€Ê¥ª¥×¥·¥ç¥ó€Ç€¹ -- %c\n + + #: posix/getopt.c:945 posix/getopt.c:948 + #, c-format +-msgid "%s: invalid option -- %c\n" +-msgstr "%s: ¥ª¥×¥·¥ç¥ó€¬°ã€€€Þ€¹ -- %c\n" ++msgid "%s: invalid option -- '%c'\n" ++msgstr "%s: ¥ª¥×¥·¥ç¥ó€¬°ã€€€Þ€¹ -- '%c'\n" + + #: posix/getopt.c:1003 posix/getopt.c:1022 posix/getopt.c:1234 + #: posix/getopt.c:1255 diff --git a/src/patches/glibc/glibc-rh767146.patch b/src/patches/glibc/glibc-rh767146.patch new file mode 100644 index 0000000..8252062 --- /dev/null +++ b/src/patches/glibc/glibc-rh767146.patch @@ -0,0 +1,21 @@ +diff -rup a/elf/dl-load.c b/elf/dl-load.c +--- a/elf/dl-load.c 2012-02-03 10:59:58.917870716 -0700 ++++ b/elf/dl-load.c 2012-02-03 11:01:01.796580644 -0700 +@@ -1130,6 +1130,16 @@ _dl_map_object_from_fd (const char *name + = N_("ELF load command address/offset not properly aligned"); + goto call_lose; + } ++ if (__builtin_expect ((ph->p_offset + ph->p_filesz > st.st_size), 0)) ++ { ++ /* If the segment requires zeroing of part of its last ++ page, we'll crash when accessing the unmapped page. ++ There's still a possibility of a race, if the shared ++ object is truncated between the fxstat above and the ++ memset below. */ ++ errstring = N_("ELF load command past end of file"); ++ goto call_lose; ++ } + + c = &loadcmds[nloadcmds++]; + c->mapstart = ph->p_vaddr & ~(GLRO(dl_pagesize) - 1); +Only in b/elf: dl-load.c.orig diff --git a/src/patches/glibc/glibc-rh767693-2.patch b/src/patches/glibc/glibc-rh767693-2.patch new file mode 100644 index 0000000..4418ac6 --- /dev/null +++ b/src/patches/glibc/glibc-rh767693-2.patch @@ -0,0 +1,79 @@ +Index: glibc-2.5-20061008T1257/sunrpc/svc_tcp.c +=================================================================== +--- glibc-2.5-20061008T1257.orig/sunrpc/svc_tcp.c ++++ glibc-2.5-20061008T1257/sunrpc/svc_tcp.c +@@ -50,6 +50,7 @@ static char sccsid[] = "@(#)svc_tcp.c 1. + #include <sys/poll.h> + #include <errno.h> + #include <stdlib.h> ++#include <time.h> + + #ifdef USE_IN_LIBIO + # include <wchar.h> +@@ -249,6 +250,11 @@ again: + { + if (errno == EINTR) + goto again; ++ if (errno == EMFILE) ++ { ++ struct timespec ts = { .tv_sec = 0, .tv_nsec = 50000000 }; ++ __nanosleep(&ts , NULL); ++ } + return FALSE; + } + /* +Index: glibc-2.5-20061008T1257/sunrpc/svc_udp.c +=================================================================== +--- glibc-2.5-20061008T1257.orig/sunrpc/svc_udp.c ++++ glibc-2.5-20061008T1257/sunrpc/svc_udp.c +@@ -46,6 +46,7 @@ static char sccsid[] = "@(#)svc_udp.c 1. + #include <sys/socket.h> + #include <errno.h> + #include <libintl.h> ++#include <time.h> + + #ifdef IP_PKTINFO + #include <sys/uio.h> +@@ -277,8 +278,16 @@ again: + (int) su->su_iosz, 0, + (struct sockaddr *) &(xprt->xp_raddr), &len); + xprt->xp_addrlen = len; +- if (rlen == -1 && errno == EINTR) +- goto again; ++ if (rlen == -1) ++ { ++ if (errno == EINTR) ++ goto again; ++ if (errno == EMFILE) ++ { ++ struct timespec ts = { .tv_sec = 0, .tv_nsec = 50000000 }; ++ __nanosleep(&ts , NULL); ++ } ++ } + if (rlen < 16) /* < 4 32-bit ints? */ + return FALSE; + xdrs->x_op = XDR_DECODE; +Index: glibc-2.5-20061008T1257/sunrpc/svc_unix.c +=================================================================== +--- glibc-2.5-20061008T1257.orig/sunrpc/svc_unix.c ++++ glibc-2.5-20061008T1257/sunrpc/svc_unix.c +@@ -48,6 +48,7 @@ + #include <errno.h> + #include <stdlib.h> + #include <libintl.h> ++#include <time.h> + + #ifdef USE_IN_LIBIO + # include <wchar.h> +@@ -247,6 +248,11 @@ again: + { + if (errno == EINTR) + goto again; ++ if (errno == EMFILE) ++ { ++ struct timespec ts = { .tv_sec = 0, .tv_nsec = 50000000 }; ++ __nanosleep(&ts , NULL); ++ } + return FALSE; + } + /* diff --git a/src/patches/glibc/glibc-rh767693.patch b/src/patches/glibc/glibc-rh767693.patch new file mode 100644 index 0000000..8f76beb --- /dev/null +++ b/src/patches/glibc/glibc-rh767693.patch @@ -0,0 +1,89 @@ +commit 97ac2654b2d831acaa18a2b018b0736245903fd2 +Author: Ulrich Drepper drepper@gmail.com +Date: Sat Dec 17 20:18:42 2011 -0500 + + Check values from TZ file header + + + [BZ #13506] + * time/tzfile.c (__tzfile_read): Check values from file header. + +diff -ru a/time/tzfile.c b/time/tzfile.c +--- a/time/tzfile.c 2010-05-04 11:27:23.000000000 +0000 ++++ b/time/tzfile.c 2011-12-19 06:39:49.875358578 +0000 +@@ -19,6 +19,7 @@ + + #include <assert.h> + #include <limits.h> ++#include <stdint.h> + #include <stdio.h> + #include <stdio_ext.h> + #include <stdlib.h> +@@ -234,23 +235,58 @@ + goto read_again; + } + ++ if (__builtin_expect (num_transitions ++ > ((SIZE_MAX - (__alignof__ (struct ttinfo) - 1)) ++ / (sizeof (time_t) + 1)), 0)) ++ goto lose; + total_size = num_transitions * (sizeof (time_t) + 1); + total_size = ((total_size + __alignof__ (struct ttinfo) - 1) + & ~(__alignof__ (struct ttinfo) - 1)); + types_idx = total_size; +- total_size += num_types * sizeof (struct ttinfo) + chars; ++ if (__builtin_expect (num_types ++ > (SIZE_MAX - total_size) / sizeof (struct ttinfo), 0)) ++ goto lose; ++ total_size += num_types * sizeof (struct ttinfo); ++ if (__builtin_expect (chars > SIZE_MAX - total_size, 0)) ++ goto lose; ++ total_size += chars; ++ if (__builtin_expect (__alignof__ (struct leap) - 1 ++ > SIZE_MAX - total_size, 0)) ++ goto lose; + total_size = ((total_size + __alignof__ (struct leap) - 1) + & ~(__alignof__ (struct leap) - 1)); + leaps_idx = total_size; ++ if (__builtin_expect (num_leaps ++ > (SIZE_MAX - total_size) / sizeof (struct leap), 0)) ++ goto lose; + total_size += num_leaps * sizeof (struct leap); +- tzspec_len = (sizeof (time_t) == 8 && trans_width == 8 +- ? st.st_size - (ftello (f) +- + num_transitions * (8 + 1) +- + num_types * 6 +- + chars +- + num_leaps * 12 +- + num_isstd +- + num_isgmt) - 1 : 0); ++ tzspec_len = 0; ++ if (sizeof (time_t) == 8 && trans_width == 8) ++ { ++ off_t rem = st.st_size - ftello (f); ++ if (__builtin_expect (rem < 0 ++ || (size_t) rem < (num_transitions * (8 + 1) ++ + num_types * 6 ++ + chars), 0)) ++ goto lose; ++ tzspec_len = (size_t) rem - (num_transitions * (8 + 1) ++ + num_types * 6 ++ + chars); ++ if (__builtin_expect (num_leaps > SIZE_MAX / 12 ++ || tzspec_len < num_leaps * 12, 0)) ++ goto lose; ++ tzspec_len -= num_leaps * 12; ++ if (__builtin_expect (tzspec_len < num_isstd, 0)) ++ goto lose; ++ tzspec_len -= num_isstd; ++ if (__builtin_expect (tzspec_len == 0 || tzspec_len - 1 < num_isgmt, 0)) ++ goto lose; ++ tzspec_len -= num_isgmt + 1; ++ if (__builtin_expect (SIZE_MAX - total_size < tzspec_len, 0)) ++ goto lose; ++ } ++ if (__builtin_expect (SIZE_MAX - total_size - tzspec_len < extra, 0)) ++ goto lose; + + /* Allocate enough memory including the extra block requested by the + caller. */ diff --git a/src/patches/glibc/glibc-rh767746.patch b/src/patches/glibc/glibc-rh767746.patch new file mode 100644 index 0000000..58d96d8 --- /dev/null +++ b/src/patches/glibc/glibc-rh767746.patch @@ -0,0 +1,14 @@ +--- a/nptl/pthread_create.c 2011-12-13 11:41:37.000000000 -0700 ++++ b/nptl/pthread_create.c 2011-12-14 10:03:13.000000000 -0700 +@@ -440,8 +440,9 @@ + int err = ALLOCATE_STACK (iattr, &pd); + if (__builtin_expect (err != 0, 0)) + /* Something went wrong. Maybe a parameter of the attributes is +- invalid or we could not allocate memory. */ +- return err; ++ invalid or we could not allocate memory. Note we have to ++ translate error codes. */ ++ return err == ENOMEM ? EAGAIN : err; + + + /* Initialize the TCB. All initializations with zero should be diff --git a/src/patches/glibc/glibc-rh771342.patch b/src/patches/glibc/glibc-rh771342.patch new file mode 100644 index 0000000..0a49b8c --- /dev/null +++ b/src/patches/glibc/glibc-rh771342.patch @@ -0,0 +1,155 @@ +2011-06-30 Ulrich Drepper drepper@gmail.com + + * nptl-init.c (__nptl_set_robust): New function. + (pthread_functions): Add reference. + * npthreadP.h: Declare __nptl_set_robust. + * sysdeps/pthread/pthread-functions.h (pthread_functions): Add + ptr_set_robust member. + * sysdeps/unix/sysv/linux/fork.c: Call set_robust_list syscall in + child if threads are used. + +diff -Nrup a/nptl/nptl-init.c b/nptl/nptl-init.c +--- a/nptl/nptl-init.c 2011-12-20 00:29:54.645538691 -0700 ++++ b/nptl/nptl-init.c 2012-01-03 10:18:38.977513783 -0700 +@@ -69,6 +69,13 @@ extern void __libc_setup_tls (size_t tcb + #endif + + #ifdef SHARED ++static ++#else ++extern ++#endif ++void __nptl_set_robust (struct pthread *); ++ ++#ifdef SHARED + static void nptl_freeres (void); + + +@@ -131,13 +138,25 @@ static const struct pthread_functions pt + .ptr__nptl_deallocate_tsd = __nptl_deallocate_tsd, + .ptr__nptl_setxid = __nptl_setxid, + /* For now only the stack cache needs to be freed. */ +- .ptr_freeres = nptl_freeres ++ .ptr_freeres = nptl_freeres, ++ .ptr_set_robust = __nptl_set_robust + }; + # define ptr_pthread_functions &pthread_functions + #else + # define ptr_pthread_functions NULL + #endif + ++#ifdef SHARED ++static ++#endif ++void ++__nptl_set_robust (struct pthread *self) ++{ ++ INTERNAL_SYSCALL_DECL (err); ++ INTERNAL_SYSCALL (set_robust_list, err, 2, &self->robust_head, ++ sizeof (struct robust_list_head)); ++} ++ + + #ifdef SHARED + /* This function is called indirectly from the freeres code in libc. */ +diff -Nrup a/nptl/pthreadP.h b/nptl/pthreadP.h +--- a/nptl/pthreadP.h 2010-05-04 05:27:23.000000000 -0600 ++++ b/nptl/pthreadP.h 2012-01-03 10:12:35.599269269 -0700 +@@ -555,17 +555,20 @@ extern void __pthread_cleanup_pop_restor + + /* Old cleanup interfaces, still used in libc.so. */ + extern void _pthread_cleanup_push (struct _pthread_cleanup_buffer *buffer, +- void (*routine) (void *), void *arg); ++ void (*routine) (void *), void *arg); + extern void _pthread_cleanup_pop (struct _pthread_cleanup_buffer *buffer, +- int execute); ++ int execute); + extern void _pthread_cleanup_push_defer (struct _pthread_cleanup_buffer *buffer, +- void (*routine) (void *), void *arg); ++ void (*routine) (void *), void *arg); + extern void _pthread_cleanup_pop_restore (struct _pthread_cleanup_buffer *buffer, +- int execute); ++ int execute); + + extern void __nptl_deallocate_tsd (void) attribute_hidden; + + extern int __nptl_setxid (struct xid_command *cmdp) attribute_hidden; ++#ifndef SHARED ++extern void __nptl_set_robust (struct pthread *self); ++#endif + + extern void __free_stacks (size_t limit) attribute_hidden; + +diff -Nrup a/nptl/sysdeps/pthread/pthread-functions.h b/nptl/sysdeps/pthread/pthread-functions.h +--- a/nptl/sysdeps/pthread/pthread-functions.h 2010-05-04 05:27:23.000000000 -0600 ++++ b/nptl/sysdeps/pthread/pthread-functions.h 2012-01-03 10:12:35.639269301 -0700 +@@ -97,6 +97,7 @@ struct pthread_functions + void (*ptr__nptl_deallocate_tsd) (void); + int (*ptr__nptl_setxid) (struct xid_command *); + void (*ptr_freeres) (void); ++ void (*ptr_set_robust) (struct pthread *); + }; + + /* Variable in libc.so. */ +diff -Nrup a/nptl/sysdeps/unix/sysv/linux/fork.c b/nptl/sysdeps/unix/sysv/linux/fork.c +--- a/nptl/sysdeps/unix/sysv/linux/fork.c 2010-05-04 05:27:23.000000000 -0600 ++++ b/nptl/sysdeps/unix/sysv/linux/fork.c 2012-01-03 10:12:35.649269309 -0700 +@@ -29,6 +29,7 @@ + #include <ldsodefs.h> + #include <bits/stdio-lock.h> + #include <atomic.h> ++#include <pthreadP.h> + + + unsigned long int *__fork_generation_pointer; +@@ -86,8 +87,8 @@ __libc_fork (void) + just go away. The unloading code works in the order of the + list. + +- While executing the registered handlers we are building a +- list of all the entries so that we can go backward later on. */ ++ While executing the registered handlers we are building a ++ list of all the entries so that we can go backward later on. */ + while (1) + { + /* Execute the handler if there is one. */ +@@ -154,6 +155,24 @@ __libc_fork (void) + GL(dl_cpuclock_offset) = now; + #endif + ++#ifdef __NR_set_robust_list ++ /* Initialize the robust mutex list which has been reset during ++ the fork. We do not check for errors since if it fails here ++ it failed at process start as well and noone could have used ++ robust mutexes. We also do not have to set ++ self->robust_head.futex_offset since we inherit the correct ++ value from the parent. */ ++# ifdef SHARED ++ if (__libc_pthread_functions.ptr_set_robust != NULL) ++ PTHFCT_CALL (ptr_set_robust, (self)); ++# else ++ extern __typeof (__nptl_set_robust) __nptl_set_robust ++ __attribute__((weak)); ++ if (__builtin_expect (__nptl_set_robust != NULL, 0)) ++ __nptl_set_robust (self); ++# endif ++#endif ++ + /* Reset the file list. These are recursive mutexes. */ + fresetlockfiles (); + +@@ -170,10 +189,10 @@ __libc_fork (void) + allp->handler->child_handler (); + + /* Note that we do not have to wake any possible waiter. +- This is the only thread in the new process. The count +- may have been bumped up by other threads doing a fork. +- We reset it to 1, to avoid waiting for non-existing +- thread(s) to release the count. */ ++ This is the only thread in the new process. The count ++ may have been bumped up by other threads doing a fork. ++ We reset it to 1, to avoid waiting for non-existing ++ thread(s) to release the count. */ + allp->handler->refcntr = 1; + + /* XXX We could at this point look through the object pool diff --git a/src/patches/glibc/glibc-rh782585.patch b/src/patches/glibc/glibc-rh782585.patch new file mode 100644 index 0000000..a554d4b --- /dev/null +++ b/src/patches/glibc/glibc-rh782585.patch @@ -0,0 +1,329 @@ +diff -rup a/elf/dl-close.c b/elf/dl-close.c +--- a/elf/dl-close.c 2012-01-19 12:59:42.759484350 -0700 ++++ b/elf/dl-close.c 2012-01-19 14:10:20.439263806 -0700 +@@ -223,7 +223,7 @@ _dl_close_worker (struct link_map *map) + } + + /* Sort the entries. */ +- _dl_sort_fini (ns->_ns_loaded, maps, nloaded, used, nsid); ++ _dl_sort_fini (maps, nloaded, used, nsid); + + /* Call all termination functions at once. */ + #ifdef SHARED +diff -rup a/elf/dl-deps.c b/elf/dl-deps.c +--- a/elf/dl-deps.c 2012-01-19 12:59:42.716484301 -0700 ++++ b/elf/dl-deps.c 2012-01-19 13:52:35.223720556 -0700 +@@ -614,51 +614,67 @@ Filters not supported with LD_TRACE_PREL + map->l_searchlist.r_list[i]->l_reserved = 0; + } + +- /* Now determine the order in which the initialization has to happen. */ ++ /* Sort the initializer list to take dependencies into account. The binary ++ itself will always be initialize last. */ + memcpy (l_initfini, map->l_searchlist.r_list, + nlist * sizeof (struct link_map *)); +- /* We can skip looking for the binary itself which is at the front +- of the search list. Look through the list backward so that circular +- dependencies are not changing the order. */ +- for (i = 1; i < nlist; ++i) ++ if (__builtin_expect (nlist > 1, 1)) + { +- struct link_map *l = map->l_searchlist.r_list[i]; +- unsigned int j; +- unsigned int k; +- +- /* Find the place in the initfini list where the map is currently +- located. */ +- for (j = 1; l_initfini[j] != l; ++j) +- ; +- +- /* Find all object for which the current one is a dependency and +- move the found object (if necessary) in front. */ +- for (k = j + 1; k < nlist; ++k) ++ /* We can skip looking for the binary itself which is at the front ++ of the search list. */ ++ i = 1; ++ unsigned int seen[nlist]; ++ memset (seen, 0, nlist * sizeof (seen[0])); ++ while (1) + { +- struct link_map **runp; +- +- runp = l_initfini[k]->l_initfini; +- if (runp != NULL) ++ /* Keep track of which object we looked at this round. */ ++ ++seen[i]; ++ struct link_map *thisp = l_initfini[i]; ++ ++ /* Find the last object in the list for which the current one is ++ a dependency and move the current object behind the object ++ with the dependency. */ ++ unsigned int k = nlist - 1; ++ while (k > i) + { +- while (*runp != NULL) +- if (__builtin_expect (*runp++ == l, 0)) +- { +- struct link_map *here = l_initfini[k]; +- +- /* Move it now. */ +- memmove (&l_initfini[j] + 1, &l_initfini[j], +- (k - j) * sizeof (struct link_map *)); +- l_initfini[j] = here; +- +- /* Don't insert further matches before the last +- entry moved to the front. */ +- ++j; ++ struct link_map **runp = l_initfini[k]->l_initfini; ++ if (runp != NULL) ++ /* Look through the dependencies of the object. */ ++ while (*runp != NULL) ++ if (__builtin_expect (*runp++ == thisp, 0)) ++ { ++ /* Move the current object to the back past the last ++ object with it as the dependency. */ ++ memmove (&l_initfini[i], &l_initfini[i + 1], ++ (k - i) * sizeof (l_initfini[0])); ++ l_initfini[k] = thisp; ++ ++ if (seen[i + 1] > nlist - i - 2) ++ { ++ ++i; ++ goto next_clear; ++ } ++ ++ unsigned int this_seen = seen[i]; ++ memmove (&seen[i], &seen[i + 1], ++ (k - i) * sizeof (seen[0])); ++ seen[k] = this_seen; ++ ++ goto next; ++ } + +- break; +- } ++ --k; + } ++ ++ if (++i == nlist) ++ break; ++ next_clear: ++ memset (&seen[i], 0, (nlist - i) * sizeof (seen[0])); ++ ++ next:; + } + } ++ + /* Terminate the list of dependencies. */ + l_initfini[nlist] = NULL; + atomic_write_barrier (); +diff -rup a/elf/dl-fini.c b/elf/dl-fini.c +--- a/elf/dl-fini.c 2010-05-04 05:27:23.000000000 -0600 ++++ b/elf/dl-fini.c 2012-01-19 13:56:38.653842046 -0700 +@@ -1,5 +1,6 @@ + /* Call the termination functions of loaded shared objects. +- Copyright (C) 1995,96,1998-2002,2004-2005,2009 Free Software Foundation, Inc. ++ Copyright (C) 1995,96,1998-2002,2004-2005,2009,2011 ++ Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or +@@ -29,89 +30,100 @@ typedef void (*fini_t) (void); + + void + internal_function +-_dl_sort_fini (struct link_map *l, struct link_map **maps, size_t nmaps, +- char *used, Lmid_t ns) ++_dl_sort_fini (struct link_map **maps, size_t nmaps, char *used, Lmid_t ns) + { +- if (ns == LM_ID_BASE) +- /* The main executable always comes first. */ +- l = l->l_next; +- +- for (; l != NULL; l = l->l_next) +- /* Do not handle ld.so in secondary namespaces and object which +- are not removed. */ +- if (l == l->l_real && l->l_idx != -1) +- { +- /* Find the place in the 'maps' array. */ +- unsigned int j; +- for (j = ns == LM_ID_BASE ? 1 : 0; maps[j] != l; ++j) +- assert (j < nmaps); +- +- /* Find all object for which the current one is a dependency +- and move the found object (if necessary) in front. */ +- for (unsigned int k = j + 1; k < nmaps; ++k) +- { +- struct link_map **runp = maps[k]->l_initfini; +- if (runp != NULL) +- { +- while (*runp != NULL) +- if (*runp == l) +- { +- struct link_map *here = maps[k]; ++ /* A list of one element need not be sorted. */ ++ if (nmaps == 1) ++ return; ++ ++ /* We can skip looking for the binary itself which is at the front ++ of the search list for the main namespace. */ ++ unsigned int i = ns == LM_ID_BASE; ++ unsigned int seen[nmaps]; ++ memset (seen, 0, nmaps * sizeof (seen[0])); ++ while (1) ++ { ++ /* Keep track of which object we looked at this round. */ ++ ++seen[i]; ++ struct link_map *thisp = maps[i]; ++ ++ /* Do not handle ld.so in secondary namespaces and object which ++ are not removed. */ ++ if (thisp != thisp->l_real || thisp->l_idx == -1) ++ goto skip; ++ ++ /* Find the last object in the list for which the current one is ++ a dependency and move the current object behind the object ++ with the dependency. */ ++ unsigned int k = nmaps - 1; ++ while (k > i) ++ { ++ struct link_map **runp = maps[k]->l_initfini; ++ if (runp != NULL) ++ /* Look through the dependencies of the object. */ ++ while (*runp != NULL) ++ if (__builtin_expect (*runp++ == thisp, 0)) ++ { ++ move: ++ /* Move the current object to the back past the last ++ object with it as the dependency. */ ++ memmove (&maps[i], &maps[i + 1], ++ (k - i) * sizeof (maps[0])); ++ maps[k] = thisp; + +- /* Move it now. */ +- memmove (&maps[j] + 1, +- &maps[j], (k - j) * sizeof (struct link_map *)); +- maps[j] = here; ++ if (used != NULL) ++ { ++ char here_used = used[i]; ++ memmove (&used[i], &used[i + 1], ++ (k - i) * sizeof (used[0])); ++ used[k] = here_used; ++ } + +- if (used != NULL) +- { +- char here_used = used[k]; ++ if (seen[i + 1] > nmaps - i - 2) ++ { ++ ++i; ++ goto next_clear; ++ } + +- memmove (&used[j] + 1, +- &used[j], (k - j) * sizeof (char)); +- used[j] = here_used; +- } ++ unsigned int this_seen = seen[i]; ++ memmove (&seen[i], &seen[i + 1], (k - i) * sizeof (seen[0])); ++ seen[k] = this_seen; + +- ++j; ++ goto next; ++ } + +- break; +- } +- else +- ++runp; +- } +- +- if (__builtin_expect (maps[k]->l_reldeps != NULL, 0)) +- { +- unsigned int m = maps[k]->l_reldeps->act; +- struct link_map **relmaps = &maps[k]->l_reldeps->list[0]; ++ if (__builtin_expect (maps[k]->l_reldeps != NULL, 0)) ++ { ++ unsigned int m = maps[k]->l_reldeps->act; ++ struct link_map **relmaps = &maps[k]->l_reldeps->list[0]; + +- while (m-- > 0) ++ /* Look through the relocation dependencies of the object. */ ++ while (m-- > 0) ++ if (__builtin_expect (relmaps[m] == thisp, 0)) + { +- if (relmaps[m] == l) +- { +- struct link_map *here = maps[k]; +- +- /* Move it now. */ +- memmove (&maps[j] + 1, +- &maps[j], +- (k - j) * sizeof (struct link_map *)); +- maps[j] = here; +- +- if (used != NULL) +- { +- char here_used = used[k]; +- +- memmove (&used[j] + 1, +- &used[j], (k - j) * sizeof (char)); +- used[j] = here_used; +- } +- +- break; +- } ++ /* If a cycle exists with a link time dependency, ++ preserve the latter. */ ++ struct link_map **runp = thisp->l_initfini; ++ if (runp != NULL) ++ while (*runp != NULL) ++ if (__builtin_expect (*runp++ == maps[k], 0)) ++ goto ignore; ++ goto move; + } +- } +- } +- } ++ ignore:; ++ } ++ ++ --k; ++ } ++ ++ skip: ++ if (++i == nmaps) ++ break; ++ next_clear: ++ memset (&seen[i], 0, (nmaps - i) * sizeof (seen[0])); ++ ++ next:; ++ } + } + + +@@ -196,9 +208,8 @@ _dl_fini (void) + assert (ns == LM_ID_BASE || i == nloaded || i == nloaded - 1); + nmaps = i; + +- if (nmaps != 0) +- /* Now we have to do the sorting. */ +- _dl_sort_fini (GL(dl_ns)[ns]._ns_loaded, maps, nmaps, NULL, ns); ++ /* Now we have to do the sorting. */ ++ _dl_sort_fini (maps, nmaps, NULL, ns); + + /* We do not rely on the linked list of loaded object anymore from + this point on. We have our own list here (maps). The various +diff -rup a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h +--- a/sysdeps/generic/ldsodefs.h 2012-01-19 12:59:42.446483997 -0700 ++++ b/sysdeps/generic/ldsodefs.h 2012-01-19 14:16:36.242453532 -0700 +@@ -947,7 +947,7 @@ extern void _dl_init (struct link_map *m + extern void _dl_fini (void) internal_function; + + /* Sort array MAPS according to dependencies of the contained objects. */ +-extern void _dl_sort_fini (struct link_map *l, struct link_map **maps, ++extern void _dl_sort_fini (struct link_map **maps, + size_t nmaps, char *used, Lmid_t ns) + internal_function; + diff --git a/src/patches/glibc/glibc-rh784402.patch b/src/patches/glibc/glibc-rh784402.patch new file mode 100644 index 0000000..d75773e --- /dev/null +++ b/src/patches/glibc/glibc-rh784402.patch @@ -0,0 +1,166 @@ +commit 3e1aa84e7f9f38815f5db9cd7654b1a9497cf6e4 +Author: Ulrich Drepper drepper@gmail.com +Date: Fri Jan 20 22:39:54 2012 -0500 + + Do not cache negative results in nscd if these are transient + +diff -rup a/nscd/aicache.c b/nscd/aicache.c +--- a/nscd/aicache.c 2012-01-24 20:32:58.906826425 -0700 ++++ b/nscd/aicache.c 2012-01-24 20:42:17.663968882 -0700 +@@ -511,9 +511,17 @@ next_nip: + if (fd != -1) + TEMP_FAILURE_RETRY (send (fd, ¬found, total, MSG_NOSIGNAL)); + +- dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, 1); +- /* If we cannot permanently store the result, so be it. */ +- if (dataset != NULL) ++ /* If we have a transient error or cannot permanently store the ++ result, so be it. */ ++ if (rc4 == EAGAIN || __builtin_expect (db->negtimeout == 0, 0)) ++ { ++ /* Mark the old entry as obsolete. */ ++ if (dh != NULL) ++ dh->usable = false; ++ dataset = NULL; ++ } ++ else if ((dataset = mempool_alloc (db, (sizeof (struct dataset) ++ + req->key_len), 1)) != NULL) + { + dataset->head.allocsize = sizeof (struct dataset) + req->key_len; + dataset->head.recsize = total; +diff -rup a/nscd/grpcache.c b/nscd/grpcache.c +--- a/nscd/grpcache.c 2012-01-24 20:32:58.910826427 -0700 ++++ b/nscd/grpcache.c 2012-01-24 20:42:17.666968883 -0700 +@@ -114,13 +114,21 @@ cache_addgr (struct database_dyn *db, in + case. */ + total = sizeof (notfound); + +- written = TEMP_FAILURE_RETRY (send (fd, ¬found, total, +- MSG_NOSIGNAL)); ++ if (fd != -1) ++ written = TEMP_FAILURE_RETRY (send (fd, ¬found, total, ++ MSG_NOSIGNAL)); ++ else ++ written = total; + +- dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, +- 1); +- /* If we cannot permanently store the result, so be it. */ +- if (dataset != NULL) ++ /* If we have a transient error or cannot permanently store ++ the result, so be it. */ ++ if (errno == EAGAIN || __builtin_expect (db->negtimeout == 0, 0)) ++ { ++ /* Mark the old entry as obsolete. */ ++ if (dh != NULL) ++ dh->usable = false; ++ } ++ else if ((dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, 1)) != NULL) + { + dataset->head.allocsize = sizeof (struct dataset) + req->key_len; + dataset->head.recsize = total; +diff -rup a/nscd/hstcache.c b/nscd/hstcache.c +--- a/nscd/hstcache.c 2012-01-24 20:32:58.911826427 -0700 ++++ b/nscd/hstcache.c 2012-01-24 20:42:17.668968883 -0700 +@@ -141,10 +141,16 @@ cache_addhst (struct database_dyn *db, i + MSG_NOSIGNAL)) != total) + all_written = false; + +- dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, +- 1); +- /* If we cannot permanently store the result, so be it. */ +- if (dataset != NULL) ++ /* If we have a transient error or cannot permanently store ++ the result, so be it. */ ++ if (errval == EAGAIN || __builtin_expect (db->negtimeout == 0, 0)) ++ { ++ /* Mark the old entry as obsolete. */ ++ if (dh != NULL) ++ dh->usable = false; ++ } ++ else if ((dataset = mempool_alloc (db, (sizeof (struct dataset) ++ + req->key_len), 1)) != NULL) + { + dataset->head.allocsize = sizeof (struct dataset) + req->key_len; + dataset->head.recsize = total; +diff -rup a/nscd/initgrcache.c b/nscd/initgrcache.c +--- a/nscd/initgrcache.c 2012-01-24 20:32:58.912826427 -0700 ++++ b/nscd/initgrcache.c 2012-01-24 20:42:17.671968883 -0700 +@@ -202,10 +202,16 @@ addinitgroupsX (struct database_dyn *db, + written = TEMP_FAILURE_RETRY (send (fd, ¬found, total, + MSG_NOSIGNAL)); + +- dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, +- 1); +- /* If we cannot permanently store the result, so be it. */ +- if (dataset != NULL) ++ /* If we have a transient error or cannot permanently store ++ the result, so be it. */ ++ if (all_tryagain || __builtin_expect (db->negtimeout == 0, 0)) ++ { ++ /* Mark the old entry as obsolete. */ ++ if (dh != NULL) ++ dh->usable = false; ++ } ++ else if ((dataset = mempool_alloc (db, (sizeof (struct dataset) ++ + req->key_len), 1)) != NULL) + { + dataset->head.allocsize = sizeof (struct dataset) + req->key_len; + dataset->head.recsize = total; +diff -rup a/nscd/pwdcache.c b/nscd/pwdcache.c +--- a/nscd/pwdcache.c 2012-01-24 20:32:58.914826427 -0700 ++++ b/nscd/pwdcache.c 2012-01-24 20:42:17.671968883 -0700 +@@ -124,10 +124,16 @@ cache_addpw (struct database_dyn *db, in + written = TEMP_FAILURE_RETRY (send (fd, ¬found, total, + MSG_NOSIGNAL)); + +- dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, +- 1); +- /* If we cannot permanently store the result, so be it. */ +- if (dataset != NULL) ++ /* If we have a transient error or cannot permanently store ++ the result, so be it. */ ++ if (errno == EAGAIN || __builtin_expect (db->negtimeout == 0, 0)) ++ { ++ /* Mark the old entry as obsolete. */ ++ if (dh != NULL) ++ dh->usable = false; ++ } ++ else if ((dataset = mempool_alloc (db, (sizeof (struct dataset) ++ + req->key_len), 1)) != NULL) + { + dataset->head.allocsize = sizeof (struct dataset) + req->key_len; + dataset->head.recsize = total; +diff -rup a/nscd/servicescache.c b/nscd/servicescache.c +--- a/nscd/servicescache.c 2012-01-24 20:32:58.915826427 -0700 ++++ b/nscd/servicescache.c 2012-01-24 20:42:17.672968884 -0700 +@@ -102,15 +102,22 @@ cache_addserv (struct database_dyn *db, + { + /* We have no data. This means we send the standard reply for this + case. */ +- total = sizeof (notfound); ++ written = total = sizeof (notfound); + +- written = TEMP_FAILURE_RETRY (send (fd, ¬found, total, +- MSG_NOSIGNAL)); ++ if (fd != -1) ++ written = TEMP_FAILURE_RETRY (send (fd, ¬found, total, ++ MSG_NOSIGNAL)); + +- dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, +- 1); +- /* If we cannot permanently store the result, so be it. */ +- if (dataset != NULL) ++ /* If we have a transient error or cannot permanently store ++ the result, so be it. */ ++ if (errval == EAGAIN || __builtin_expect (db->negtimeout == 0, 0)) ++ { ++ /* Mark the old entry as obsolete. */ ++ if (dh != NULL) ++ dh->usable = false; ++ } ++ else if ((dataset = mempool_alloc (db, (sizeof (struct dataset) ++ + req->key_len), 1)) != NULL) + { + dataset->head.allocsize = sizeof (struct dataset) + req->key_len; + dataset->head.recsize = total; diff --git a/src/patches/glibc/glibc-rh785984.patch b/src/patches/glibc/glibc-rh785984.patch new file mode 100644 index 0000000..80ba5e8 --- /dev/null +++ b/src/patches/glibc/glibc-rh785984.patch @@ -0,0 +1,20 @@ +diff -rup a/localedata/locales/zh_CN b/localedata/locales/zh_CN +--- a/localedata/locales/zh_CN 2006-07-30 16:19:43.000000000 -0600 ++++ b/localedata/locales/zh_CN 2012-01-30 21:24:46.905115483 -0700 +@@ -108,11 +108,11 @@ day "<U661F><U671F><U65E5>";/ + "<U661F><U671F><U4E94>";/ + "<U661F><U671F><U516D>" + +-abmon "<U0020><U0031><U6708>";"<U0020><U0032><U6708>";/ +- "<U0020><U0033><U6708>";"<U0020><U0034><U6708>";/ +- "<U0020><U0035><U6708>";"<U0020><U0036><U6708>";/ +- "<U0020><U0037><U6708>";"<U0020><U0038><U6708>";/ +- "<U0020><U0039><U6708>";"<U0031><U0030><U6708>";/ ++abmon "<U0031><U6708>";"<U0032><U6708>";/ ++ "<U0033><U6708>";"<U0034><U6708>";/ ++ "<U0035><U6708>";"<U0036><U6708>";/ ++ "<U0037><U6708>";"<U0038><U6708>";/ ++ "<U0039><U6708>";"<U0031><U0030><U6708>";/ + "<U0031><U0031><U6708>";"<U0031><U0032><U6708>" + + mon "<U4E00><U6708>";"<U4E8C><U6708>";"<U4E09><U6708>";/ diff --git a/src/patches/glibc/glibc-rh788959-2.patch b/src/patches/glibc/glibc-rh788959-2.patch new file mode 100644 index 0000000..1064640 --- /dev/null +++ b/src/patches/glibc/glibc-rh788959-2.patch @@ -0,0 +1,153 @@ +diff -rcp a/nscd/grpcache.c b/nscd/grpcache.c +*** a/nscd/grpcache.c Wed Apr 11 12:50:07 2012 +--- b/nscd/grpcache.c Wed Apr 11 21:45:58 2012 +*************** cache_addgr (struct database_dyn *db, in +*** 178,184 **** + char *cp; + const size_t key_len = strlen (key); + const size_t buf_len = 3 * sizeof (grp->gr_gid) + key_len + 1; +! char *buf = alloca (buf_len); + ssize_t n; + size_t cnt; + +--- 178,185 ---- + char *cp; + const size_t key_len = strlen (key); + const size_t buf_len = 3 * sizeof (grp->gr_gid) + key_len + 1; +! size_t alloca_used = 0; +! char *buf = alloca_account (buf_len, alloca_used); + ssize_t n; + size_t cnt; + +*************** cache_addgr (struct database_dyn *db, in +*** 190,196 **** + /* Determine the length of all members. */ + while (grp->gr_mem[gr_mem_cnt]) + ++gr_mem_cnt; +! gr_mem_len = (uint32_t *) alloca (gr_mem_cnt * sizeof (uint32_t)); + for (gr_mem_cnt = 0; grp->gr_mem[gr_mem_cnt]; ++gr_mem_cnt) + { + gr_mem_len[gr_mem_cnt] = strlen (grp->gr_mem[gr_mem_cnt]) + 1; +--- 191,198 ---- + /* Determine the length of all members. */ + while (grp->gr_mem[gr_mem_cnt]) + ++gr_mem_cnt; +! gr_mem_len = (uint32_t *) alloca_account (gr_mem_cnt * sizeof (uint32_t), +! alloca_used); + for (gr_mem_cnt = 0; grp->gr_mem[gr_mem_cnt]; ++gr_mem_cnt) + { + gr_mem_len[gr_mem_cnt] = strlen (grp->gr_mem[gr_mem_cnt]) + 1; +*************** cache_addgr (struct database_dyn *db, in +*** 205,214 **** + change. Allocate memory on the cache since it is likely + discarded anyway. If it turns out to be necessary to have a + new record we can still allocate real memory. */ +! bool alloca_used = false; + dataset = NULL; + +! if (he == NULL) + dataset = (struct dataset *) mempool_alloc (db, total + n, 1); + + if (dataset == NULL) +--- 207,216 ---- + change. Allocate memory on the cache since it is likely + discarded anyway. If it turns out to be necessary to have a + new record we can still allocate real memory. */ +! bool dataset_in_stack_or_freed = false; + dataset = NULL; + +! if (he == NULL || ! __libc_use_alloca (alloca_used + total + n)) + dataset = (struct dataset *) mempool_alloc (db, total + n, 1); + + if (dataset == NULL) +*************** cache_addgr (struct database_dyn *db, in +*** 216,225 **** + /* We cannot permanently add the result in the moment. But + we can provide the result as is. Store the data in some + temporary memory. */ +! dataset = (struct dataset *) alloca (total + n); + + /* We cannot add this record to the permanent database. */ +! alloca_used = true; + } + + dataset->head.allocsize = total + n; +--- 218,227 ---- + /* We cannot permanently add the result in the moment. But + we can provide the result as is. Store the data in some + temporary memory. */ +! dataset = (struct dataset *) alloca_account (total + n, alloca_used); + + /* We cannot add this record to the permanent database. */ +! dataset_in_stack_or_freed = true; + } + + dataset->head.allocsize = total + n; +*************** cache_addgr (struct database_dyn *db, in +*** 273,278 **** +--- 275,288 ---- + allocated on the stack and need not be freed. */ + dh->timeout = dataset->head.timeout; + ++dh->nreloads; ++ ++ /* If the new record was not allocated on the stack, then it must ++ be freed. Note that it can no longer be used. */ ++ if (! dataset_in_stack_or_freed) ++ { ++ free (dataset); ++ dataset_in_stack_or_freed = true; ++ } + } + else + { +*************** cache_addgr (struct database_dyn *db, in +*** 288,294 **** + key_copy = (char *) newp + (key_copy - (char *) dataset); + + dataset = memcpy (newp, dataset, total + n); +! alloca_used = false; + } + + /* Mark the old record as obsolete. */ +--- 298,304 ---- + key_copy = (char *) newp + (key_copy - (char *) dataset); + + dataset = memcpy (newp, dataset, total + n); +! dataset_in_stack_or_freed = false; + } + + /* Mark the old record as obsolete. */ +*************** cache_addgr (struct database_dyn *db, in +*** 303,309 **** + assert (fd != -1); + + #ifdef HAVE_SENDFILE +! if (__builtin_expect (db->mmap_used, 1) && !alloca_used) + { + assert (db->wr_fd != -1); + assert ((char *) &dataset->resp > (char *) db->data); +--- 313,319 ---- + assert (fd != -1); + + #ifdef HAVE_SENDFILE +! if (__builtin_expect (db->mmap_used, 1) && !dataset_in_stack_or_freed) + { + assert (db->wr_fd != -1); + assert ((char *) &dataset->resp > (char *) db->data); +*************** cache_addgr (struct database_dyn *db, in +*** 330,336 **** + + /* Add the record to the database. But only if it has not been + stored on the stack. */ +! if (! alloca_used) + { + /* If necessary, we also propagate the data to disk. */ + if (db->persistent) +--- 340,346 ---- + + /* Add the record to the database. But only if it has not been + stored on the stack. */ +! if (! dataset_in_stack_or_freed) + { + /* If necessary, we also propagate the data to disk. */ + if (db->persistent) diff --git a/src/patches/glibc/glibc-rh788959.patch b/src/patches/glibc/glibc-rh788959.patch new file mode 100644 index 0000000..adc6c99 --- /dev/null +++ b/src/patches/glibc/glibc-rh788959.patch @@ -0,0 +1,130 @@ +diff -pruN glibc-2.12-2-gc4ccff1/nis/nss_compat/compat-initgroups.c glibc-2.12-2-gc4ccff1.patched/nis/nss_compat/compat-initgroups.c +--- glibc-2.12-2-gc4ccff1/nis/nss_compat/compat-initgroups.c 2010-05-04 16:57:23.000000000 +0530 ++++ glibc-2.12-2-gc4ccff1.patched/nis/nss_compat/compat-initgroups.c 2012-02-21 11:11:19.877008465 +0530 +@@ -297,6 +297,8 @@ getgrent_next_nss (ent_t *ent, char *buf + if (nss_initgroups_dyn (user, group, &mystart, &mysize, &mygroups, + limit, errnop) == NSS_STATUS_SUCCESS) + { ++ status = NSS_STATUS_NOTFOUND; ++ + /* If there is no blacklist we can trust the underlying + initgroups implementation. */ + if (ent->blacklist.current <= 1) +@@ -309,6 +311,7 @@ getgrent_next_nss (ent_t *ent, char *buf + overwrite the pointer with one to a bigger buffer. */ + char *tmpbuf = buffer; + size_t tmplen = buflen; ++ bool use_malloc = false; + + for (int i = 0; i < mystart; i++) + { +@@ -316,21 +319,36 @@ getgrent_next_nss (ent_t *ent, char *buf + tmpbuf, tmplen, errnop)) + == NSS_STATUS_TRYAGAIN + && *errnop == ERANGE) +- if (tmpbuf == buffer) +- { +- tmplen *= 2; +- tmpbuf = __alloca (tmplen); +- } +- else +- tmpbuf = extend_alloca (tmpbuf, tmplen, 2 * tmplen); ++ { ++ if (__libc_use_alloca (tmplen * 2)) ++ { ++ if (tmpbuf == buffer) ++ { ++ tmplen *= 2; ++ tmpbuf = __alloca (tmplen); ++ } ++ else ++ tmpbuf = extend_alloca (tmpbuf, tmplen, tmplen * 2); ++ } ++ else ++ { ++ tmplen *= 2; ++ char *newbuf = realloc (use_malloc ? tmpbuf : NULL, tmplen); ++ ++ if (newbuf == NULL) ++ { ++ status = NSS_STATUS_TRYAGAIN; ++ goto done; ++ } ++ use_malloc = true; ++ tmpbuf = newbuf; ++ } ++ } + + if (__builtin_expect (status != NSS_STATUS_NOTFOUND, 1)) + { + if (__builtin_expect (status != NSS_STATUS_SUCCESS, 0)) +- { +- free (mygroups); +- return status; +- } ++ goto done; + + if (!in_blacklist (grpbuf.gr_name, + strlen (grpbuf.gr_name), ent) +@@ -348,11 +366,17 @@ getgrent_next_nss (ent_t *ent, char *buf + } + } + } ++ ++ status = NSS_STATUS_NOTFOUND; ++ ++ done: ++ if (use_malloc) ++ free (tmpbuf); + } + + free (mygroups); + +- return NSS_STATUS_NOTFOUND; ++ return status; + } + + free (mygroups); +@@ -506,6 +530,7 @@ _nss_compat_initgroups_dyn (const char * + char *tmpbuf; + enum nss_status status; + ent_t intern = { true, false, false, NULL, {NULL, 0, 0} }; ++ bool use_malloc = false; + + status = internal_setgrent (&intern); + if (status != NSS_STATUS_SUCCESS) +@@ -519,13 +544,32 @@ _nss_compat_initgroups_dyn (const char * + user, group, start, size, + groupsp, limit, errnop)) + == NSS_STATUS_TRYAGAIN && *errnop == ERANGE) +- tmpbuf = extend_alloca (tmpbuf, buflen, 2 * buflen); ++ if (__libc_use_alloca (buflen * 2)) ++ tmpbuf = extend_alloca (tmpbuf, buflen, 2 * buflen); ++ else ++ { ++ buflen *= 2; ++ char *newbuf = realloc (use_malloc ? tmpbuf : NULL, buflen); ++ if (newbuf == NULL) ++ { ++ status = NSS_STATUS_TRYAGAIN; ++ goto done; ++ } ++ use_malloc = true; ++ tmpbuf = newbuf; ++ } + } + while (status == NSS_STATUS_SUCCESS); + ++ status = NSS_STATUS_SUCCESS; ++ ++ done: ++ if (use_malloc) ++ free (tmpbuf); ++ + internal_endgrent (&intern); + +- return NSS_STATUS_SUCCESS; ++ return status; + } + + diff --git a/src/patches/glibc/glibc-rh789189.patch b/src/patches/glibc/glibc-rh789189.patch new file mode 100644 index 0000000..fc0e2e0 --- /dev/null +++ b/src/patches/glibc/glibc-rh789189.patch @@ -0,0 +1,12 @@ +diff -rup a/resolv/res_init.c b/resolv/res_init.c +--- a/resolv/res_init.c 2010-05-04 05:27:23.000000000 -0600 ++++ b/resolv/res_init.c 2012-02-10 10:20:24.923578396 -0700 +@@ -325,7 +325,7 @@ __res_vinit(res_state statp, int preinit + struct in6_addr a6; + char *el; + +- if ((el = strchr(cp, '\n')) != NULL) ++ if ((el = strpbrk(cp, " \t\n")) != NULL) + *el = '\0'; + if ((el = strchr(cp, SCOPE_DELIMITER)) != NULL) + *el = '\0'; diff --git a/src/patches/glibc/glibc-rh789209.patch b/src/patches/glibc/glibc-rh789209.patch new file mode 100644 index 0000000..3aea97e --- /dev/null +++ b/src/patches/glibc/glibc-rh789209.patch @@ -0,0 +1,12 @@ +diff -rup a/localedata/locales/uk_UA b/localedata/locales/uk_UA +--- a/localedata/locales/uk_UA 2010-05-04 05:27:23.000000000 -0600 ++++ b/localedata/locales/uk_UA 2012-02-10 09:59:16.934189715 -0700 +@@ -700,7 +700,7 @@ LC_MONETARY + % 200 hrv. - 200 hryven (money) + + % the local currency symbol +-currency_symbol "<U0433><U0440>" % hr (hryvnya) ++currency_symbol "<U0433><U0440><U043D><U002E>" % hr (hryvnya) + + % This must be a 4-character string containing the international currency + % symbol as defined by the ISO 4217 standard (three characters) followed diff --git a/src/patches/glibc/glibc-rh789238-2.patch b/src/patches/glibc/glibc-rh789238-2.patch new file mode 100644 index 0000000..62b5492 --- /dev/null +++ b/src/patches/glibc/glibc-rh789238-2.patch @@ -0,0 +1,114 @@ +diff -rup a/malloc/arena.c b/malloc/arena.c +--- a/malloc/arena.c 2012-03-02 10:22:47.025002715 -0700 ++++ b/malloc/arena.c 2012-03-02 10:27:47.442361529 -0700 +@@ -123,14 +123,14 @@ int __malloc_initialized = -1; + if(ptr) \ + (void)mutex_lock(&ptr->mutex); \ + else \ +- ptr = arena_get2(ptr, (size)); \ ++ ptr = arena_get2(ptr, (size), false); \ + } while(0) + #else + #define arena_lock(ptr, size) do { \ + if(ptr && !mutex_trylock(&ptr->mutex)) { \ + THREAD_STAT(++(ptr->stat_lock_direct)); \ + } else \ +- ptr = arena_get2(ptr, (size)); \ ++ ptr = arena_get2(ptr, (size), false); \ + } while(0) + #endif + +@@ -982,7 +982,7 @@ get_free_list (void) + + + static mstate +-reused_arena (void) ++reused_arena (bool retrying) + { + mstate result; + static mstate next_to_use; +@@ -999,6 +999,15 @@ reused_arena (void) + } + while (result != next_to_use); + ++ /* If we are retrying due to a failure to allocate in the main ++ arena, don't wait for the main arena to become available, select ++ another. ++ ++ To really fix this right we would have to try the allocation ++ in every other arena, but that seems like severe overkill. */ ++ if (retrying && result == &main_arena) ++ result = result->next; ++ + /* No arena available. Wait for the next in line. */ + (void)mutex_lock(&result->mutex); + +@@ -1014,9 +1023,9 @@ reused_arena (void) + static mstate + internal_function + #if __STD_C +-arena_get2(mstate a_tsd, size_t size) ++arena_get2(mstate a_tsd, size_t size, bool retrying) + #else +-arena_get2(a_tsd, size) mstate a_tsd; size_t size; ++arena_get2(a_tsd, size, retrying) mstate a_tsd; size_t size; bool retrying + #endif + { + mstate a; +@@ -1055,7 +1064,7 @@ arena_get2(a_tsd, size) mstate a_tsd; si + catomic_decrement (&narenas); + } + else +- a = reused_arena (); ++ a = reused_arena (retrying); + } + #else + if(!a_tsd) +diff -rup a/malloc/malloc.c b/malloc/malloc.c +--- a/malloc/malloc.c 2012-03-02 10:22:47.061002519 -0700 ++++ b/malloc/malloc.c 2012-03-02 10:23:53.151643863 -0700 +@@ -3671,7 +3671,7 @@ public_mALLOc(size_t bytes) + /* ... or sbrk() has failed and there is still a chance to mmap() */ + mstate prev = ar_ptr->next ? ar_ptr : 0; + (void)mutex_unlock(&ar_ptr->mutex); +- ar_ptr = arena_get2(prev, bytes); ++ ar_ptr = arena_get2(prev, bytes, true); + if(ar_ptr) { + victim = _int_malloc(ar_ptr, bytes); + (void)mutex_unlock(&ar_ptr->mutex); +@@ -3892,7 +3892,7 @@ public_mEMALIGn(size_t alignment, size_t + /* ... or sbrk() has failed and there is still a chance to mmap() */ + mstate prev = ar_ptr->next ? ar_ptr : 0; + (void)mutex_unlock(&ar_ptr->mutex); +- ar_ptr = arena_get2(prev, bytes); ++ ar_ptr = arena_get2(prev, bytes, true); + if(ar_ptr) { + p = _int_memalign(ar_ptr, alignment, bytes); + (void)mutex_unlock(&ar_ptr->mutex); +@@ -3943,7 +3943,7 @@ public_vALLOc(size_t bytes) + /* ... or sbrk() has failed and there is still a chance to mmap() */ + mstate prev = ar_ptr->next ? ar_ptr : 0; + (void)mutex_unlock(&ar_ptr->mutex); +- ar_ptr = arena_get2(prev, bytes); ++ ar_ptr = arena_get2(prev, bytes, true); + if(ar_ptr) { + p = _int_memalign(ar_ptr, pagesz, bytes); + (void)mutex_unlock(&ar_ptr->mutex); +@@ -3992,7 +3992,7 @@ public_pVALLOc(size_t bytes) + /* ... or sbrk() has failed and there is still a chance to mmap() */ + mstate prev = ar_ptr->next ? ar_ptr : 0; + (void)mutex_unlock(&ar_ptr->mutex); +- ar_ptr = arena_get2(prev, bytes + 2*pagesz + MINSIZE); ++ ar_ptr = arena_get2(prev, bytes + 2*pagesz + MINSIZE, true); + if(ar_ptr) { + p = _int_memalign(ar_ptr, pagesz, rounded_bytes); + (void)mutex_unlock(&ar_ptr->mutex); +@@ -4086,7 +4086,7 @@ public_cALLOc(size_t n, size_t elem_size + /* ... or sbrk() has failed and there is still a chance to mmap() */ + mstate prev = av->next ? av : 0; + (void)mutex_unlock(&av->mutex); +- av = arena_get2(prev, sz); ++ av = arena_get2(prev, sz, true); + if(av) { + mem = _int_malloc(av, sz); + (void)mutex_unlock(&av->mutex); diff --git a/src/patches/glibc/glibc-rh789238.patch b/src/patches/glibc/glibc-rh789238.patch new file mode 100644 index 0000000..f2c90e2 --- /dev/null +++ b/src/patches/glibc/glibc-rh789238.patch @@ -0,0 +1,119 @@ +diff -rup a/malloc/malloc.c b/malloc/malloc.c +--- a/malloc/malloc.c 2012-02-13 21:46:11.678847531 -0700 ++++ b/malloc/malloc.c 2012-02-13 22:43:14.788431976 -0700 +@@ -3669,8 +3669,9 @@ public_mALLOc(size_t bytes) + } else { + #if USE_ARENAS + /* ... or sbrk() has failed and there is still a chance to mmap() */ +- ar_ptr = arena_get2(ar_ptr->next ? ar_ptr : 0, bytes); +- (void)mutex_unlock(&main_arena.mutex); ++ mstate prev = ar_ptr->next ? ar_ptr : 0; ++ (void)mutex_unlock(&ar_ptr->mutex); ++ ar_ptr = arena_get2(prev, bytes); + if(ar_ptr) { + victim = _int_malloc(ar_ptr, bytes); + (void)mutex_unlock(&ar_ptr->mutex); +@@ -3929,10 +3930,10 @@ public_vALLOc(size_t bytes) + if(!ar_ptr) + return 0; + p = _int_valloc(ar_ptr, bytes); +- (void)mutex_unlock(&ar_ptr->mutex); + if(!p) { + /* Maybe the failure is due to running out of mmapped areas. */ + if(ar_ptr != &main_arena) { ++ (void)mutex_unlock(&ar_ptr->mutex); + ar_ptr = &main_arena; + (void)mutex_lock(&ar_ptr->mutex); + p = _int_memalign(ar_ptr, pagesz, bytes); +@@ -3940,14 +3941,17 @@ public_vALLOc(size_t bytes) + } else { + #if USE_ARENAS + /* ... or sbrk() has failed and there is still a chance to mmap() */ +- ar_ptr = arena_get2(ar_ptr->next ? ar_ptr : 0, bytes); ++ mstate prev = ar_ptr->next ? ar_ptr : 0; ++ (void)mutex_unlock(&ar_ptr->mutex); ++ ar_ptr = arena_get2(prev, bytes); + if(ar_ptr) { + p = _int_memalign(ar_ptr, pagesz, bytes); + (void)mutex_unlock(&ar_ptr->mutex); + } + #endif + } +- } ++ } else ++ (void)mutex_unlock(&ar_ptr->mutex); + assert(!p || chunk_is_mmapped(mem2chunk(p)) || + ar_ptr == arena_for_chunk(mem2chunk(p))); + +@@ -3975,10 +3979,10 @@ public_pVALLOc(size_t bytes) + + arena_get(ar_ptr, bytes + 2*pagesz + MINSIZE); + p = _int_pvalloc(ar_ptr, bytes); +- (void)mutex_unlock(&ar_ptr->mutex); + if(!p) { + /* Maybe the failure is due to running out of mmapped areas. */ + if(ar_ptr != &main_arena) { ++ (void)mutex_unlock(&ar_ptr->mutex); + ar_ptr = &main_arena; + (void)mutex_lock(&ar_ptr->mutex); + p = _int_memalign(ar_ptr, pagesz, rounded_bytes); +@@ -3986,15 +3990,17 @@ public_pVALLOc(size_t bytes) + } else { + #if USE_ARENAS + /* ... or sbrk() has failed and there is still a chance to mmap() */ +- ar_ptr = arena_get2(ar_ptr->next ? ar_ptr : 0, +- bytes + 2*pagesz + MINSIZE); ++ mstate prev = ar_ptr->next ? ar_ptr : 0; ++ (void)mutex_unlock(&ar_ptr->mutex); ++ ar_ptr = arena_get2(prev, bytes + 2*pagesz + MINSIZE); + if(ar_ptr) { + p = _int_memalign(ar_ptr, pagesz, rounded_bytes); + (void)mutex_unlock(&ar_ptr->mutex); + } + #endif + } +- } ++ } else ++ (void)mutex_unlock(&ar_ptr->mutex); + assert(!p || chunk_is_mmapped(mem2chunk(p)) || + ar_ptr == arena_for_chunk(mem2chunk(p))); + +@@ -4064,8 +4070,6 @@ public_cALLOc(size_t n, size_t elem_size + #endif + mem = _int_malloc(av, sz); + +- /* Only clearing follows, so we can unlock early. */ +- (void)mutex_unlock(&av->mutex); + + assert(!mem || chunk_is_mmapped(mem2chunk(mem)) || + av == arena_for_chunk(mem2chunk(mem))); +@@ -4073,15 +4077,16 @@ public_cALLOc(size_t n, size_t elem_size + if (mem == 0) { + /* Maybe the failure is due to running out of mmapped areas. */ + if(av != &main_arena) { ++ (void)mutex_unlock(&av->mutex); + (void)mutex_lock(&main_arena.mutex); + mem = _int_malloc(&main_arena, sz); + (void)mutex_unlock(&main_arena.mutex); + } else { + #if USE_ARENAS + /* ... or sbrk() has failed and there is still a chance to mmap() */ +- (void)mutex_lock(&main_arena.mutex); +- av = arena_get2(av->next ? av : 0, sz); +- (void)mutex_unlock(&main_arena.mutex); ++ mstate prev = av->next ? av : 0; ++ (void)mutex_unlock(&av->mutex); ++ av = arena_get2(prev, sz); + if(av) { + mem = _int_malloc(av, sz); + (void)mutex_unlock(&av->mutex); +@@ -4089,7 +4094,8 @@ public_cALLOc(size_t n, size_t elem_size + #endif + } + if (mem == 0) return 0; +- } ++ } else ++ (void)mutex_unlock(&av->mutex); + p = mem2chunk(mem); + + /* Two optional cases in which clearing not necessary */ diff --git a/src/patches/glibc/glibc-rh794817-2.patch b/src/patches/glibc/glibc-rh794817-2.patch new file mode 100644 index 0000000..15774b4 --- /dev/null +++ b/src/patches/glibc/glibc-rh794817-2.patch @@ -0,0 +1,85 @@ +diff -rup a/stdio-common/vfprintf.c b/stdio-common/vfprintf.c +--- a/stdio-common/vfprintf.c 2012-03-05 09:43:14.705536167 -0700 ++++ b/stdio-common/vfprintf.c 2012-03-05 09:48:11.602890982 -0700 +@@ -822,7 +822,7 @@ vfprintf (FILE *s, const CHAR_T *format, + \ + if (function_done < 0) \ + { \ +- /* Error in print handler. */ \ ++ /* Error in print handler; up to handler to set errno. */ \ + done = -1; \ + goto all_done; \ + } \ +@@ -876,7 +876,7 @@ vfprintf (FILE *s, const CHAR_T *format, + \ + if (function_done < 0) \ + { \ +- /* Error in print handler. */ \ ++ /* Error in print handler; up to handler to set errno. */ \ + done = -1; \ + goto all_done; \ + } \ +@@ -1117,7 +1117,7 @@ vfprintf (FILE *s, const CHAR_T *format, + &mbstate); \ + if (len == (size_t) -1) \ + { \ +- /* Something went wron gduring the conversion. Bail out. */ \ ++ /* Something went wrong during the conversion. Bail out. */ \ + done = -1; \ + goto all_done; \ + } \ +@@ -1188,6 +1188,7 @@ vfprintf (FILE *s, const CHAR_T *format, + if (__mbsnrtowcs (ignore, &str2, strend - str2, \ + ignore_size, &ps) == (size_t) -1) \ + { \ ++ /* Conversion function has set errno. */ \ + done = -1; \ + goto all_done; \ + } \ +@@ -1599,6 +1600,7 @@ vfprintf (FILE *s, const CHAR_T *format, + if (spec == L_('\0')) + { + /* The format string ended before the specifier is complete. */ ++ __set_errno (EINVAL); + done = -1; + goto all_done; + } +@@ -1696,17 +1698,20 @@ do_positional: + + /* Determine the number of arguments the format string consumes. */ + nargs = MAX (nargs, max_ref_arg); ++ /* Calculate total size needed to represent a single argument across ++ all three argument-related arrays. */ + bytes_per_arg = sizeof (*args_value) + sizeof (*args_size) + + sizeof (*args_type); + + /* Check for potential integer overflow. */ +- if (nargs > SIZE_MAX / bytes_per_arg) ++ if (__builtin_expect (nargs > SIZE_MAX / bytes_per_arg, 0)) + { ++ __set_errno (ERANGE); + done = -1; + goto all_done; + } + +- /* Allocate memory for the argument descriptions. */ ++ /* Allocate memory for all three argument arrays. */ + if (__libc_use_alloca (nargs * bytes_per_arg)) + args_value = alloca (nargs * bytes_per_arg); + else +@@ -1937,6 +1942,7 @@ do_positional: + about # of chars. */ + if (function_done < 0) + { ++ /* Function has set errno. */ + done = -1; + goto all_done; + } +@@ -1971,6 +1977,7 @@ do_positional: + of chars. */ + if (function_done < 0) + { ++ /* Function has set errno. */ + done = -1; + goto all_done; + } diff --git a/src/patches/glibc/glibc-rh794817.patch b/src/patches/glibc/glibc-rh794817.patch new file mode 100644 index 0000000..e21caaa --- /dev/null +++ b/src/patches/glibc/glibc-rh794817.patch @@ -0,0 +1,239 @@ +From libc-alpha-return-25252-listarch-libc-alpha=sources dot redhat dot com at sourceware dot org Thu Feb 16 16:21:17 2012 +Return-Path: <libc-alpha-return-25252-listarch-libc-alpha=sources dot redhat dot com at sourceware dot org> +Delivered-To: listarch-libc-alpha at sources dot redhat dot com +Received: (qmail 5187 invoked by alias); 16 Feb 2012 16:21:14 -0000 +Delivered-To: moderator for libc-alpha at sourceware dot org +Received: (qmail 2174 invoked by uid 22791); 16 Feb 2012 16:17:18 -0000 +X-SWARE-Spam-Status: No, hits=-2.0 required=5.0 + tests=AWL,BAYES_00,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,TW_TV,TW_VB,TW_VF,T_RP_MATCHES_RCVD +X-Spam-Check-By: sourceware.org +Date: Thu, 16 Feb 2012 08:16:13 -0800 +From: Kees Cook <kees at outflux dot net> +To: "Ryan S dot Arnold" <ryan dot arnold at gmail dot com> +Cc: libc-alpha at sourceware dot org, Paul Eggert <eggert at cs dot ucla dot edu>, + Roland McGrath <roland at hack dot frob dot com>, + Andreas Schwab <schwab at linux-m68k dot org> +Subject: Re: [PATCH] vfprintf: validate nargs and maybe allocate from heap +Message-ID: 20120216161613.GZ20420@outflux.net +References: 20120206062537.GM4979@outflux.net + <20120207000509 dot GP4989 at outflux dot net> + <20120210192457 dot GF20420 at outflux dot net> + <CAAKybw8AgkGsKAx=kvX4Tsi74f+HtuVnatTCB0VfsHi7vVFi1Q at mail dot gmail dot com> + <20120214223048 dot GM20420 at outflux dot net> + <CAAKybw_HS+cav+YcDw3ns7UXu6_xA7EHPrkiB87P+OGwEB0PVQ at mail dot gmail dot com> + <20120214224543 dot GN20420 at outflux dot net> +MIME-Version: 1.0 +Content-Type: text/plain; charset=us-ascii +Content-Disposition: inline +In-Reply-To: <20120214224543 dot GN20420 at outflux dot net> +X-MIMEDefang-Filter: outflux$Revision: 1.316 $ +X-HELO: www.outflux.net +Mailing-List: contact libc-alpha-help at sourceware dot org; run by ezmlm +Precedence: bulk +List-Id: <libc-alpha.sourceware.org> +List-Subscribe: <mailto:libc-alpha-subscribe at sourceware dot org> +List-Archive: http://sourceware.org/ml/libc-alpha/ +List-Post: <mailto:libc-alpha at sourceware dot org> +List-Help: <mailto:libc-alpha-help at sourceware dot org>, <http://sourceware dot org/ml/#faqs> +Sender: libc-alpha-owner at sourceware dot org +Delivered-To: mailing list libc-alpha at sourceware dot org + +The nargs value can overflow when doing allocations, allowing arbitrary +memory writes via format strings, bypassing _FORTIFY_SOURCE: +http://www.phrack.org/issues.html?issue=67&id=9 + +This checks for nargs overflow and possibly allocates from heap instead of +stack, and adds a regression test for the situation. + +I have FSF assignment via Google. (Sent from @outflux since that's how I'm +subscribed here, but CL shows @chromium.org as part of my Google work.) + +This version disables the useless test on non-32-bit platforms. + +2012-02-16 Kees Cook keescook@chromium.org + + [BZ #13656] + * stdio-common/vfprintf.c (vfprintf): Check for nargs overflow and + possibly allocate from heap instead of stack. + * stdio-common/bug-vfprintf-nargs.c: New file. + * stdio-common/Makefile (tests): Add nargs overflow test. + + +diff -rup a/stdio-common/Makefile b/stdio-common/Makefile +--- a/stdio-common/Makefile 2010-05-04 05:27:23.000000000 -0600 ++++ b/stdio-common/Makefile 2012-02-20 21:57:52.983040992 -0700 +@@ -60,7 +60,7 @@ tests := tstscanf test_rdwr test-popen t + tst-popen tst-unlockedio tst-fmemopen2 tst-put-error tst-fgets \ + tst-fwrite bug16 bug17 tst-swscanf tst-sprintf2 bug18 bug18a \ + bug19 bug19a tst-popen2 scanf13 scanf14 scanf15 bug20 bug21 bug22 \ +- scanf16 scanf17 tst-setvbuf1 ++ scanf16 scanf17 tst-setvbuf1 bug-vfprintf-nargs + + test-srcs = tst-unbputc tst-printf + +diff --git a/stdio-common/bug-vfprintf-nargs.c b/stdio-common/bug-vfprintf-nargs.c +new file mode 100644 +index 0000000..13c66c0 +--- /dev/null ++++ b/stdio-common/bug-vfprintf-nargs.c +@@ -0,0 +1,78 @@ ++/* Test for vfprintf nargs allocation overflow (BZ #13656). ++ Copyright (C) 2012 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Kees Cook keescook@chromium.org, 2012. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include <stdio.h> ++#include <stdlib.h> ++#include <stdint.h> ++#include <unistd.h> ++#include <inttypes.h> ++#include <string.h> ++#include <signal.h> ++ ++static int ++format_failed (const char *fmt, const char *expected) ++{ ++ char output[80]; ++ ++ printf ("%s : ", fmt); ++ ++ memset (output, 0, sizeof output); ++ /* Having sprintf itself detect a failure is good. */ ++ if (sprintf (output, fmt, 1, 2, 3, "test") > 0 ++ && strcmp (output, expected) != 0) ++ { ++ printf ("FAIL (output '%s' != expected '%s')\n", output, expected); ++ return 1; ++ } ++ puts ("ok"); ++ return 0; ++} ++ ++static int ++do_test (void) ++{ ++ int rc = 0; ++ char buf[64]; ++ ++ /* Regular positionals work. */ ++ if (format_failed ("%1$d", "1") != 0) ++ rc = 1; ++ ++ /* Regular width positionals work. */ ++ if (format_failed ("%1$*2$d", " 1") != 0) ++ rc = 1; ++ ++ /* Positional arguments are constructed via read_int, so nargs can only ++ overflow on 32-bit systems. On 64-bit systems, it will attempt to ++ allocate a giant amount of memory and possibly crash, which is the ++ expected situation. Since the 64-bit behavior is arch-specific, only ++ test this on 32-bit systems. */ ++ if (sizeof (long int) == 4) ++ { ++ sprintf (buf, "%%1$d %%%" PRIdPTR "$d", UINT32_MAX / sizeof (int)); ++ if (format_failed (buf, "1 %$d") != 0) ++ rc = 1; ++ } ++ ++ return rc; ++} ++ ++#define TEST_FUNCTION do_test () ++#include "../test-skeleton.c" +diff --git a/stdio-common/vfprintf.c b/stdio-common/vfprintf.c +index 863cd5d..022e72b 100644 +--- a/stdio-common/vfprintf.c ++++ b/stdio-common/vfprintf.c +@@ -235,6 +235,9 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap) + 0 if unknown. */ + int readonly_format = 0; + ++ /* For the argument descriptions, which may be allocated on the heap. */ ++ void *args_malloced = NULL; ++ + /* This table maps a character into a number representing a + class. In each step there is a destination label for each + class. */ +@@ -1647,9 +1650,10 @@ do_positional: + determine the size of the array needed to store the argument + attributes. */ + size_t nargs = 0; +- int *args_type; +- union printf_arg *args_value = NULL; ++ size_t bytes_per_arg; ++ union printf_arg *args_value; + int *args_size; ++ int *args_type; + + /* Positional parameters refer to arguments directly. This could + also determine the maximum number of arguments. Track the +@@ -1698,13 +1702,33 @@ do_positional: + + /* Determine the number of arguments the format string consumes. */ + nargs = MAX (nargs, max_ref_arg); ++ bytes_per_arg = sizeof (*args_value) + sizeof (*args_size) ++ + sizeof (*args_type); ++ ++ /* Check for potential integer overflow. */ ++ if (nargs > SIZE_MAX / bytes_per_arg) ++ { ++ done = -1; ++ goto all_done; ++ } + + /* Allocate memory for the argument descriptions. */ +- args_type = alloca (nargs * sizeof (int)); ++ if (__libc_use_alloca (nargs * bytes_per_arg)) ++ args_value = alloca (nargs * bytes_per_arg); ++ else ++ { ++ args_value = args_malloced = malloc (nargs * bytes_per_arg); ++ if (args_value == NULL) ++ { ++ done = -1; ++ goto all_done; ++ } ++ } ++ ++ args_size = &args_value[nargs].pa_int; ++ args_type = &args_size[nargs]; + memset (args_type, s->_flags2 & _IO_FLAGS2_FORTIFY ? '\xff' : '\0', +- nargs * sizeof (int)); +- args_value = alloca (nargs * sizeof (union printf_arg)); +- args_size = alloca (nargs * sizeof (int)); ++ nargs * sizeof (*args_type)); + + /* XXX Could do sanity check here: If any element in ARGS_TYPE is + still zero after this loop, format is invalid. For now we +@@ -1973,8 +1997,8 @@ do_positional: + } + + all_done: +- if (__builtin_expect (workstart != NULL, 0)) +- free (workstart); ++ free (args_malloced); ++ free (workstart); + /* Unlock the stream. */ + _IO_funlockfile (s); + _IO_cleanup_region_end (0); +-- +1.7.5.4 + +-- +Kees Cook @outflux.net + diff --git a/src/patches/glibc/glibc-rh795498.patch b/src/patches/glibc/glibc-rh795498.patch new file mode 100644 index 0000000..729c5a4 --- /dev/null +++ b/src/patches/glibc/glibc-rh795498.patch @@ -0,0 +1,13 @@ +diff --git a/resolv/nss_dns/dns-host.c b/resolv/nss_dns/dns-host.c +index 01369f6..44ad04d 100644 +--- a/resolv/nss_dns/dns-host.c ++++ b/resolv/nss_dns/dns-host.c +@@ -1219,7 +1219,7 @@ gaih_getanswer (const querybuf *answer1, int anslen1, const querybuf *answer2, + &first); + if ((status == NSS_STATUS_SUCCESS || status == NSS_STATUS_NOTFOUND + || (status == NSS_STATUS_TRYAGAIN +- && (errno != ERANGE || *h_errnop != NO_RECOVERY))) ++ && (*errnop != ERANGE || *h_errnop == NO_RECOVERY))) + && answer2 != NULL && anslen2 > 0) + { + enum nss_status status2 = gaih_getanswer_slice(answer2, anslen2, qname, diff --git a/src/patches/glibc/glibc-rh797094-1.patch b/src/patches/glibc/glibc-rh797094-1.patch new file mode 100644 index 0000000..e98b9c0 --- /dev/null +++ b/src/patches/glibc/glibc-rh797094-1.patch @@ -0,0 +1,657 @@ +diff -rup a/include/alloca.h b/include/alloca.h +--- a/include/alloca.h 2012-02-29 13:11:19.439693476 -0700 ++++ b/include/alloca.h 2012-02-29 13:11:49.832530623 -0700 +@@ -49,15 +49,24 @@ libc_hidden_proto (__libc_alloca_cutoff) + + #if defined stackinfo_get_sp && defined stackinfo_sub_sp + # define alloca_account(size, avar) \ +- ({ void *old__ = stackinfo_get_sp (); \ +- void *m__ = __alloca (size); \ +- avar += stackinfo_sub_sp (old__); \ ++ ({ void *old__ = stackinfo_get_sp (); \ ++ void *m__ = __alloca (size); \ ++ avar += stackinfo_sub_sp (old__); \ ++ m__; }) ++# define extend_alloca_account(buf, len, newlen, avar) \ ++ ({ void *old__ = stackinfo_get_sp (); \ ++ void *m__ = extend_alloca (buf, len, newlen); \ ++ avar += stackinfo_sub_sp (old__); \ + m__; }) + #else + # define alloca_account(size, avar) \ +- ({ size_t s__ = (size); \ +- avar += s__; \ ++ ({ size_t s__ = (size); \ ++ avar += s__; \ + __alloca (s__); }) ++# define extend_alloca_account(buf, len, newlen, avar) \ ++ ({ size_t s__ = (newlen); \ ++ avar += s__; \ ++ extend_alloca (buf, len, s__); }) + #endif + + #endif +diff -rup a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c +--- a/sysdeps/posix/getaddrinfo.c 2012-02-29 13:11:19.588692676 -0700 ++++ b/sysdeps/posix/getaddrinfo.c 2012-02-29 13:12:42.972245862 -0700 +@@ -278,6 +278,7 @@ gaih_inet (const char *name, const struc + bool got_ipv6 = false; + const char *canon = NULL; + const char *orig_name = name; ++ size_t alloca_used = 0; + + if (req->ai_protocol || req->ai_socktype) + { +@@ -310,7 +311,7 @@ gaih_inet (const char *name, const struc + if (tp->name[0]) + { + st = (struct gaih_servtuple *) +- __alloca (sizeof (struct gaih_servtuple)); ++ alloca_account (sizeof (struct gaih_servtuple), alloca_used); + + if ((rc = gaih_inet_serv (service->name, tp, req, st))) + return rc; +@@ -334,7 +335,8 @@ gaih_inet (const char *name, const struc + continue; + + newp = (struct gaih_servtuple *) +- __alloca (sizeof (struct gaih_servtuple)); ++ alloca_account (sizeof (struct gaih_servtuple), ++ alloca_used); + + if ((rc = gaih_inet_serv (service->name, tp, req, newp))) + { +@@ -362,7 +364,7 @@ gaih_inet (const char *name, const struc + + if (req->ai_socktype || req->ai_protocol) + { +- st = __alloca (sizeof (struct gaih_servtuple)); ++ st = alloca_account (sizeof (struct gaih_servtuple), alloca_used); + st->next = NULL; + st->socktype = tp->socktype; + st->protocol = ((tp->protoflag & GAI_PROTO_PROTOANY) +@@ -379,7 +381,8 @@ gaih_inet (const char *name, const struc + { + struct gaih_servtuple *newp; + +- newp = __alloca (sizeof (struct gaih_servtuple)); ++ newp = alloca_account (sizeof (struct gaih_servtuple), ++ alloca_used); + newp->next = NULL; + newp->socktype = tp->socktype; + newp->protocol = tp->protocol; +@@ -391,10 +394,17 @@ gaih_inet (const char *name, const struc + } + } + ++ bool malloc_name = false; ++ bool malloc_addrmem = false; ++ struct gaih_addrtuple *addrmem = NULL; ++ bool malloc_canonbuf = false; ++ char *canonbuf = NULL; ++ bool malloc_tmpbuf = false; ++ char *tmpbuf = NULL; ++ int result = 0; + if (name != NULL) + { +- at = __alloca (sizeof (struct gaih_addrtuple)); +- ++ at = alloca_account (sizeof (struct gaih_addrtuple), alloca_used); + at->family = AF_UNSPEC; + at->scopeid = 0; + at->next = NULL; +@@ -412,6 +422,7 @@ gaih_inet (const char *name, const struc + rc = __idna_to_ascii_lz (name, &p, idn_flags); + if (rc != IDNA_SUCCESS) + { ++ /* No need to jump to free_and_return here. */ + if (rc == IDNA_MALLOC_ERROR) + return -EAI_MEMORY; + if (rc == IDNA_DLOPEN_ERROR) +@@ -421,10 +432,7 @@ gaih_inet (const char *name, const struc + /* In case the output string is the same as the input string + no new string has been allocated. */ + if (p != name) +- { +- name = strdupa (p); +- free (p); +- } ++ malloc_name = true; + } + #endif + +@@ -441,23 +449,59 @@ gaih_inet (const char *name, const struc + at->family = AF_INET6; + } + else +- return -EAI_ADDRFAMILY; ++ { ++ result = -EAI_ADDRFAMILY; ++ goto free_and_return; ++ } + + if (req->ai_flags & AI_CANONNAME) + canon = name; + } + else if (at->family == AF_UNSPEC) + { +- char *namebuf = (char *) name; + char *scope_delim = strchr (name, SCOPE_DELIMITER); ++ int e; + +- if (__builtin_expect (scope_delim != NULL, 0)) +- { +- namebuf = alloca (scope_delim - name + 1); +- *((char *) __mempcpy (namebuf, name, scope_delim - name)) = '\0'; +- } ++ { ++ bool malloc_namebuf = false; ++ char *namebuf = (char *) name; ++ ++ if (__builtin_expect (scope_delim != NULL, 0)) ++ { ++ if (malloc_name) ++ *scope_delim = '\0'; ++ else ++ { ++ if (__libc_use_alloca (alloca_used ++ + scope_delim - name + 1)) ++ { ++ namebuf = alloca_account (scope_delim - name + 1, ++ alloca_used); ++ *((char *) __mempcpy (namebuf, name, ++ scope_delim - name)) = '\0'; ++ } ++ else ++ { ++ namebuf = strndup (name, scope_delim - name); ++ if (namebuf == NULL) ++ { ++ assert (!malloc_name); ++ return -EAI_MEMORY; ++ } ++ malloc_namebuf = true; ++ } ++ } ++ } + +- if (inet_pton (AF_INET6, namebuf, at->addr) > 0) ++ e = inet_pton (AF_INET6, namebuf, at->addr); ++ ++ if (malloc_namebuf) ++ free (namebuf); ++ else if (scope_delim != NULL && malloc_name) ++ /* Undo what we did above. */ ++ *scope_delim = SCOPE_DELIMITER; ++ } ++ if (e > 0) + { + if (req->ai_family == AF_UNSPEC || req->ai_family == AF_INET6) + at->family = AF_INET6; +@@ -468,7 +512,10 @@ gaih_inet (const char *name, const struc + at->family = AF_INET; + } + else +- return -EAI_ADDRFAMILY; ++ { ++ result = -EAI_ADDRFAMILY; ++ goto free_and_return; ++ } + + if (scope_delim != NULL) + { +@@ -490,7 +537,10 @@ gaih_inet (const char *name, const struc + at->scopeid = (uint32_t) strtoul (scope_delim + 1, &end, + 10); + if (*end != '\0') +- return GAIH_OKIFUNSPEC | -EAI_NONAME; ++ { ++ result = GAIH_OKIFUNSPEC | -EAI_NONAME; ++ goto free_and_return; ++ } + } + } + +@@ -520,59 +570,80 @@ gaih_inet (const char *name, const struc + { + int family = req->ai_family; + size_t tmpbuflen = 512; +- char *tmpbuf = alloca (tmpbuflen); ++ assert (tmpbuf == NULL); ++ tmpbuf = alloca_account (tmpbuflen, alloca_used); + int rc; + struct hostent th; + struct hostent *h; + int herrno; + +- simple_again: + while (1) + { +- rc = __gethostbyname2_r (name, family, &th, tmpbuf, ++ rc = __gethostbyname2_r (name, AF_INET, &th, tmpbuf, + tmpbuflen, &h, &herrno); + if (rc != ERANGE || herrno != NETDB_INTERNAL) + break; +- tmpbuf = extend_alloca (tmpbuf, tmpbuflen, 2 * tmpbuflen); ++ ++ if (!malloc_tmpbuf ++ && __libc_use_alloca (alloca_used + 2 * tmpbuflen)) ++ tmpbuf = extend_alloca_account (tmpbuf, tmpbuflen, ++ 2 * tmpbuflen, ++ alloca_used); ++ else ++ { ++ char *newp = realloc (malloc_tmpbuf ? tmpbuf : NULL, ++ 2 * tmpbuflen); ++ if (newp == NULL) ++ { ++ result = -EAI_MEMORY; ++ goto free_and_return; ++ } ++ tmpbuf = newp; ++ malloc_tmpbuf = true; ++ tmpbuflen = 2 * tmpbuflen; ++ } + } + + if (rc == 0) + { +- if (h == NULL) ++ if (h != NULL) + { +- if (req->ai_family == AF_INET6 +- && (req->ai_flags & AI_V4MAPPED) +- && family == AF_INET6) ++ int i; ++ /* We found data, count the number of addresses. */ ++ for (i = 0; h->h_addr_list[i]; ++i) ++ ; ++ if (i > 0 && *pat != NULL) ++ --i; ++ ++ if (__libc_use_alloca (alloca_used ++ + i * sizeof (struct gaih_addrtuple))) ++ addrmem = alloca_account (i * sizeof (struct gaih_addrtuple), ++ alloca_used); ++ else + { +- /* Try again, this time looking for IPv4 +- addresses. */ +- family = AF_INET; +- goto simple_again; ++ addrmem = malloc (i ++ * sizeof (struct gaih_addrtuple)); ++ if (addrmem == NULL) ++ { ++ result = -EAI_MEMORY; ++ goto free_and_return; + } ++ malloc_addrmem = true; + } +- else +- { +- /* We found data, now convert it into the list. */ +- for (int i = 0; h->h_addr_list[i]; ++i) ++ ++ /* Now convert it into the list. */ ++ struct gaih_addrtuple *addrfree = addrmem; ++ for (i = 0; h->h_addr_list[i]; ++i) + { + if (*pat == NULL) + { +- *pat = __alloca (sizeof (struct gaih_addrtuple)); ++ *pat = addrfree++; + (*pat)->scopeid = 0; + } + (*pat)->next = NULL; +- (*pat)->family = req->ai_family; +- if (family == req->ai_family) ++ (*pat)->family = AF_INET; + memcpy ((*pat)->addr, h->h_addr_list[i], + h->h_length); +- else +- { +- uint32_t *addr = (uint32_t *) (*pat)->addr; +- addr[3] = *(uint32_t *) h->h_addr_list[i]; +- addr[2] = htonl (0xffff); +- addr[1] = 0; +- addr[0] = 0; +- } + pat = &((*pat)->next); + } + } +@@ -582,15 +653,16 @@ gaih_inet (const char *name, const struc + if (herrno == NETDB_INTERNAL) + { + __set_h_errno (herrno); +- return -EAI_SYSTEM; +- } +- if (herrno == TRY_AGAIN) +- { +- return -EAI_AGAIN; ++ result = -EAI_SYSTEM; + } ++ else if (herrno == TRY_AGAIN) ++ result = -EAI_AGAIN; ++ else + /* We made requests but they turned out no data. + The name is known, though. */ +- return GAIH_OKIFUNSPEC | -EAI_NODATA; ++ result = GAIH_OKIFUNSPEC | -EAI_NODATA; ++ ++ goto free_and_return; + } + + goto process_list; +@@ -613,21 +685,56 @@ gaih_inet (const char *name, const struc + bool added_canon = (req->ai_flags & AI_CANONNAME) == 0; + char *addrs = air->addrs; + ++ if (__libc_use_alloca (alloca_used ++ + air->naddrs * sizeof (struct gaih_addrtuple))) ++ addrmem = alloca_account (air->naddrs ++ * sizeof (struct gaih_addrtuple), ++ alloca_used); ++ else ++ { ++ addrmem = malloc (air->naddrs ++ * sizeof (struct gaih_addrtuple)); ++ if (addrmem == NULL) ++ { ++ result = -EAI_MEMORY; ++ goto free_and_return; ++ } ++ malloc_addrmem = true; ++ } ++ ++ struct gaih_addrtuple *addrfree = addrmem; + for (int i = 0; i < air->naddrs; ++i) + { + socklen_t size = (air->family[i] == AF_INET + ? INADDRSZ : IN6ADDRSZ); + if (*pat == NULL) + { +- *pat = __alloca (sizeof (struct gaih_addrtuple)); ++ *pat = addrfree++; + (*pat)->scopeid = 0; + } + uint32_t *pataddr = (*pat)->addr; + (*pat)->next = NULL; + if (added_canon || air->canon == NULL) + (*pat)->name = NULL; +- else +- canon = (*pat)->name = strdupa (air->canon); ++ else if (canonbuf == NULL) ++ { ++ size_t canonlen = strlen (air->canon) + 1; ++ if ((req->ai_flags & AI_CANONIDN) != 0 ++ && __libc_use_alloca (alloca_used + canonlen)) ++ canonbuf = alloca_account (canonlen, alloca_used); ++ else ++ { ++ canonbuf = malloc (canonlen); ++ if (canonbuf == NULL) ++ { ++ result = -EAI_MEMORY; ++ goto free_and_return; ++ } ++ malloc_canonbuf = true; ++ } ++ canon = (*pat)->name = memcpy (canonbuf, air->canon, ++ canonlen); ++ } + + if (air->family[i] == AF_INET + && req->ai_family == AF_INET6 +@@ -657,20 +764,26 @@ gaih_inet (const char *name, const struc + free (air); + + if (at->family == AF_UNSPEC) +- return GAIH_OKIFUNSPEC | -EAI_NONAME; ++ { ++ result = GAIH_OKIFUNSPEC | -EAI_NONAME; ++ goto free_and_return; ++ } + + goto process_list; + } + else if (err == 0) + /* The database contains a negative entry. */ +- return 0; ++ goto free_and_return; + else if (__nss_not_use_nscd_hosts == 0) + { + if (herrno == NETDB_INTERNAL && errno == ENOMEM) +- return -EAI_MEMORY; +- if (herrno == TRY_AGAIN) +- return -EAI_AGAIN; +- return -EAI_SYSTEM; ++ result = -EAI_MEMORY; ++ else if (herrno == TRY_AGAIN) ++ result = -EAI_AGAIN; ++ else ++ result = -EAI_SYSTEM; ++ ++ goto free_and_return; + } + } + #endif +@@ -699,7 +812,19 @@ gaih_inet (const char *name, const struc + _res.options &= ~RES_USE_INET6; + + size_t tmpbuflen = 1024; +- char *tmpbuf = alloca (tmpbuflen); ++ malloc_tmpbuf = !__libc_use_alloca (alloca_used + tmpbuflen); ++ assert (tmpbuf == NULL); ++ if (!malloc_tmpbuf) ++ tmpbuf = alloca_account (tmpbuflen, alloca_used); ++ else ++ { ++ tmpbuf = malloc (tmpbuflen); ++ if (tmpbuf == NULL) ++ { ++ result = -EAI_MEMORY; ++ goto free_and_return; ++ } ++ } + + while (!no_more) + { +@@ -728,8 +853,25 @@ gaih_inet (const char *name, const struc + no_data = herrno == NO_DATA; + break; + } +- tmpbuf = extend_alloca (tmpbuf, +- tmpbuflen, 2 * tmpbuflen); ++ ++ if (!malloc_tmpbuf ++ && __libc_use_alloca (alloca_used + 2 * tmpbuflen)) ++ tmpbuf = extend_alloca_account (tmpbuf, tmpbuflen, ++ 2 * tmpbuflen, ++ alloca_used); ++ else ++ { ++ char *newp = realloc (malloc_tmpbuf ? tmpbuf : NULL, ++ 2 * tmpbuflen); ++ if (newp == NULL) ++ { ++ result = -EAI_MEMORY; ++ goto free_and_return; ++ } ++ tmpbuf = newp; ++ malloc_tmpbuf = true; ++ tmpbuflen = 2 * tmpbuflen; ++ } + } + + if (status == NSS_STATUS_SUCCESS) +@@ -832,18 +974,40 @@ gaih_inet (const char *name, const struc + if (cfct != NULL) + { + const size_t max_fqdn_len = 256; +- char *buf = alloca (max_fqdn_len); ++ if ((req->ai_flags & AI_CANONIDN) != 0 ++ && __libc_use_alloca (alloca_used ++ + max_fqdn_len)) ++ canonbuf = alloca_account (max_fqdn_len, ++ alloca_used); ++ else ++ { ++ canonbuf = malloc (max_fqdn_len); ++ if (canonbuf == NULL) ++ { ++ result = -EAI_MEMORY; ++ goto free_and_return; ++ } ++ malloc_canonbuf = true; ++ } + char *s; + + if (DL_CALL_FCT (cfct, (at->name ?: name, +- buf, max_fqdn_len, ++ canonbuf, ++ max_fqdn_len, + &s, &rc, &herrno)) + == NSS_STATUS_SUCCESS) + canon = s; + else +- /* Set to name now to avoid using +- gethostbyaddr. */ +- canon = name; ++ { ++ /* Set to name now to avoid using ++ gethostbyaddr. */ ++ if (malloc_canonbuf) ++ { ++ free (canonbuf); ++ malloc_canonbuf = false; ++ } ++ canon = name; ++ } + } + } + status = NSS_STATUS_SUCCESS; +@@ -878,22 +1042,27 @@ gaih_inet (const char *name, const struc + { + /* If both requests timed out report this. */ + if (no_data == EAI_AGAIN && no_inet6_data == EAI_AGAIN) +- return -EAI_AGAIN; ++ result = -EAI_AGAIN; ++ else ++ /* We made requests but they turned out no data. The name ++ is known, though. */ ++ result = GAIH_OKIFUNSPEC | -EAI_NODATA; + +- /* We made requests but they turned out no data. The name +- is known, though. */ +- return GAIH_OKIFUNSPEC | -EAI_NODATA; ++ goto free_and_return; + } + } + + process_list: + if (at->family == AF_UNSPEC) +- return GAIH_OKIFUNSPEC | -EAI_NONAME; ++ { ++ result = GAIH_OKIFUNSPEC | -EAI_NONAME; ++ goto free_and_return; ++ } + } + else + { + struct gaih_addrtuple *atr; +- atr = at = __alloca (sizeof (struct gaih_addrtuple)); ++ atr = at = alloca_account (sizeof (struct gaih_addrtuple), alloca_used); + memset (at, '\0', sizeof (struct gaih_addrtuple)); + + if (req->ai_family == AF_UNSPEC) +@@ -932,6 +1101,9 @@ gaih_inet (const char *name, const struc + /* Only the first entry gets the canonical name. */ + if (at2 == at && (req->ai_flags & AI_CANONNAME) != 0) + { ++ char *tmpbuf2 = NULL; ++ bool malloc_tmpbuf2 = false; ++ + if (canon == NULL) + { + /* If the canonical name cannot be determined, use +@@ -952,11 +1124,16 @@ gaih_inet (const char *name, const struc + int rc = __idna_to_unicode_lzlz (canon, &out, idn_flags); + if (rc != IDNA_SUCCESS) + { ++ if (malloc_tmpbuf2) ++ free (tmpbuf2); ++ + if (rc == IDNA_MALLOC_ERROR) +- return -EAI_MEMORY; +- if (rc == IDNA_DLOPEN_ERROR) +- return -EAI_SYSTEM; +- return -EAI_IDN_ENCODE; ++ result = -EAI_MEMORY; ++ else if (rc == IDNA_DLOPEN_ERROR) ++ result = -EAI_SYSTEM; ++ else ++ result = -EAI_IDN_ENCODE; ++ goto free_and_return; + } + /* In case the output string is the same as the input + string no new string has been allocated and we +@@ -970,10 +1147,25 @@ gaih_inet (const char *name, const struc + #ifdef HAVE_LIBIDN + make_copy: + #endif +- canon = strdup (canon); +- if (canon == NULL) +- return -EAI_MEMORY; ++ if (malloc_canonbuf) ++ /* We already allocated the string using malloc. */ ++ malloc_canonbuf = false; ++ else ++ { ++ canon = strdup (canon); ++ if (canon == NULL) ++ { ++ if (malloc_tmpbuf2) ++ free (tmpbuf2); ++ ++ result = -EAI_MEMORY; ++ goto free_and_return; ++ } ++ } + } ++ ++ if (malloc_tmpbuf2) ++ free (tmpbuf2); + } + + family = at2->family; +@@ -999,7 +1191,8 @@ gaih_inet (const char *name, const struc + if (ai == NULL) + { + free ((char *) canon); +- return -EAI_MEMORY; ++ result = -EAI_MEMORY; ++ goto free_and_return; + } + + ai->ai_flags = req->ai_flags; +@@ -1052,7 +1245,18 @@ gaih_inet (const char *name, const struc + at2 = at2->next; + } + } +- return 0; ++ ++ free_and_return: ++ if (malloc_name) ++ free ((char *) name); ++ if (malloc_addrmem) ++ free (addrmem); ++ if (malloc_canonbuf) ++ free (canonbuf); ++ if (malloc_tmpbuf) ++ free (tmpbuf); ++ ++ return result; + } + + diff --git a/src/patches/glibc/glibc-rh797094-2.patch b/src/patches/glibc/glibc-rh797094-2.patch new file mode 100644 index 0000000..5aa9084 --- /dev/null +++ b/src/patches/glibc/glibc-rh797094-2.patch @@ -0,0 +1,862 @@ +From: Ulrich Drepper drepper@gmail.com +Date: Mon, 23 May 2011 03:04:16 +0000 (-0400) +Subject: Add a few more alloca size checks +X-Git-Tag: glibc-2.14~41 +X-Git-Url: http://sourceware.org/git/?p=glibc.git;a=commitdiff_plain;h=f2962a71959fd254... + +Add a few more alloca size checks +--- + + 2011-05-22 Ulrich Drepper drepper@gmail.com + + [BZ #12671] + * nis/nss_nis/nis-alias.c (_nss_nis_getaliasbyname_r): Use malloc in + some situations. + * nscd/nscd_getserv_r.c (nscd_getserv_r): Likewise. + * posix/glob.c (glob_in_dir): Take additional parameter alloca_used. + add in in __libc_use_alloca calls. Adjust callers. + (glob): Use malloc in some situations. +diff --git a/nis/nss_nis/nis-alias.c b/nis/nss_nis/nis-alias.c +index 9286e36..cfe4097 100644 +--- a/nis/nss_nis/nis-alias.c ++++ b/nis/nss_nis/nis-alias.c +@@ -1,4 +1,4 @@ +-/* Copyright (C) 1996-2002, 2003, 2006 Free Software Foundation, Inc. ++/* Copyright (C) 1996-2002, 2003, 2006, 2011 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Thorsten Kukuk kukuk@vt.uni-paderborn.de, 1996. + +@@ -142,10 +142,10 @@ internal_nis_getaliasent_r (struct aliasent *alias, char *buffer, + int yperr; + + if (new_start) +- yperr = yp_first (domain, "mail.aliases", &outkey, &keylen, &result, ++ yperr = yp_first (domain, "mail.aliases", &outkey, &keylen, &result, + &len); + else +- yperr = yp_next (domain, "mail.aliases", oldkey, oldkeylen, &outkey, ++ yperr = yp_next (domain, "mail.aliases", oldkey, oldkeylen, &outkey, + &keylen, &result, &len); + + if (__builtin_expect (yperr != YPERR_SUCCESS, 0)) +@@ -153,20 +153,20 @@ internal_nis_getaliasent_r (struct aliasent *alias, char *buffer, + enum nss_status retval = yperr2nss (yperr); + + if (retval == NSS_STATUS_TRYAGAIN) +- *errnop = errno; +- return retval; +- } ++ *errnop = errno; ++ return retval; ++ } + + if (__builtin_expect ((size_t) (len + 1) > buflen, 0)) +- { ++ { + free (result); +- *errnop = ERANGE; +- return NSS_STATUS_TRYAGAIN; +- } ++ *errnop = ERANGE; ++ return NSS_STATUS_TRYAGAIN; ++ } + char *p = strncpy (buffer, result, len); + buffer[len] = '\0'; + while (isspace (*p)) +- ++p; ++ ++p; + free (result); + + parse_res = _nss_nis_parse_aliasent (outkey, p, alias, buffer, +@@ -213,13 +213,25 @@ _nss_nis_getaliasbyname_r (const char *name, struct aliasent *alias, + return NSS_STATUS_UNAVAIL; + } + +- size_t namlen = strlen (name); +- char name2[namlen + 1]; +- + char *domain; + if (__builtin_expect (yp_get_default_domain (&domain), 0)) + return NSS_STATUS_UNAVAIL; + ++ size_t namlen = strlen (name); ++ char *name2; ++ int use_alloca = __libc_use_alloca (namlen + 1); ++ if (use_alloca) ++ name2 = __alloca (namlen + 1); ++ else ++ { ++ name2 = malloc (namlen + 1); ++ if (name2 == NULL) ++ { ++ *errnop = ENOMEM; ++ return NSS_STATUS_TRYAGAIN; ++ } ++ } ++ + /* Convert name to lowercase. */ + size_t i; + for (i = 0; i < namlen; ++i) +@@ -230,6 +242,9 @@ _nss_nis_getaliasbyname_r (const char *name, struct aliasent *alias, + int len; + int yperr = yp_match (domain, "mail.aliases", name2, namlen, &result, &len); + ++ if (!use_alloca) ++ free (name2); ++ + if (__builtin_expect (yperr != YPERR_SUCCESS, 0)) + { + enum nss_status retval = yperr2nss (yperr); +diff --git a/nscd/nscd_getserv_r.c b/nscd/nscd_getserv_r.c +index dce4165..de96a57 100644 +--- a/nscd/nscd_getserv_r.c ++++ b/nscd/nscd_getserv_r.c +@@ -1,4 +1,4 @@ +-/* Copyright (C) 2007, 2009 Free Software Foundation, Inc. ++/* Copyright (C) 2007, 2009, 2011 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper drepper@redhat.com, 2007. + +@@ -17,6 +17,7 @@ + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + ++#include <assert.h> + #include <errno.h> + #include <string.h> + #include <not-cancel.h> +@@ -80,6 +81,7 @@ nscd_getserv_r (const char *crit, size_t critlen, const char *proto, + { + int gc_cycle; + int nretries = 0; ++ size_t alloca_used = 0; + + /* If the mapping is available, try to search there instead of + communicating with the nscd. */ +@@ -88,13 +90,23 @@ nscd_getserv_r (const char *crit, size_t critlen, const char *proto, + &gc_cycle); + size_t protolen = proto == NULL ? 0 : strlen (proto); + size_t keylen = critlen + 1 + protolen + 1; +- char *key = alloca (keylen); ++ int alloca_key = __libc_use_alloca (keylen); ++ char *key; ++ if (alloca_key) ++ key = alloca_account (keylen, alloca_used); ++ else ++ { ++ key = malloc (keylen); ++ if (key == NULL) ++ return -1; ++ } + memcpy (__mempcpy (__mempcpy (key, crit, critlen), + "/", 1), proto ?: "", protolen + 1); + + retry:; + const char *s_name = NULL; + const char *s_proto = NULL; ++ int alloca_aliases_len = 0; + const uint32_t *aliases_len = NULL; + const char *aliases_list = NULL; + int retval = -1; +@@ -136,8 +148,22 @@ nscd_getserv_r (const char *crit, size_t critlen, const char *proto, + if (((uintptr_t) aliases_len & (__alignof__ (*aliases_len) - 1)) + != 0) + { +- uint32_t *tmp = alloca (serv_resp.s_aliases_cnt +- * sizeof (uint32_t)); ++ uint32_t *tmp; ++ alloca_aliases_len ++ = __libc_use_alloca (alloca_used ++ + (serv_resp.s_aliases_cnt ++ * sizeof (uint32_t))); ++ if (alloca_aliases_len) ++ tmp = __alloca (serv_resp.s_aliases_cnt * sizeof (uint32_t)); ++ else ++ { ++ tmp = malloc (serv_resp.s_aliases_cnt * sizeof (uint32_t)); ++ if (tmp == NULL) ++ { ++ retval = ENOMEM; ++ goto out; ++ } ++ } + aliases_len = memcpy (tmp, aliases_len, + serv_resp.s_aliases_cnt + * sizeof (uint32_t)); +@@ -217,8 +243,24 @@ nscd_getserv_r (const char *crit, size_t critlen, const char *proto, + + if (serv_resp.s_aliases_cnt > 0) + { +- aliases_len = alloca (serv_resp.s_aliases_cnt +- * sizeof (uint32_t)); ++ assert (alloca_aliases_len == 0); ++ alloca_aliases_len ++ = __libc_use_alloca (alloca_used ++ + (serv_resp.s_aliases_cnt ++ * sizeof (uint32_t))); ++ if (alloca_aliases_len) ++ aliases_len = alloca (serv_resp.s_aliases_cnt ++ * sizeof (uint32_t)); ++ else ++ { ++ aliases_len = malloc (serv_resp.s_aliases_cnt ++ * sizeof (uint32_t)); ++ if (aliases_len == NULL) ++ { ++ retval = ENOMEM; ++ goto out_close; ++ } ++ } + vec[n].iov_base = (void *) aliases_len; + vec[n].iov_len = serv_resp.s_aliases_cnt * sizeof (uint32_t); + +@@ -329,5 +371,10 @@ nscd_getserv_r (const char *crit, size_t critlen, const char *proto, + goto retry; + } + ++ if (!alloca_aliases_len) ++ free ((void *) aliases_len); ++ if (!alloca_key) ++ free (key); ++ + return retval; + } +diff --git a/posix/glob.c b/posix/glob.c +index 6df083a..79b6e50 100644 +--- a/posix/glob.c ++++ b/posix/glob.c +@@ -1,4 +1,4 @@ +-/* Copyright (C) 1991-2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010 ++/* Copyright (C) 1991-2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010, 2011 + Free Software Foundation, Inc. + This file is part of the GNU C Library. + +@@ -199,7 +199,7 @@ static const char *next_brace_sub (const char *begin, int flags) __THROW; + + static int glob_in_dir (const char *pattern, const char *directory, + int flags, int (*errfunc) (const char *, int), +- glob_t *pglob); ++ glob_t *pglob, size_t alloca_used); + extern int __glob_pattern_type (const char *pattern, int quote) + attribute_hidden; + +@@ -253,13 +253,18 @@ glob (pattern, flags, errfunc, pglob) + glob_t *pglob; + { + const char *filename; +- const char *dirname; ++ char *dirname = NULL; + size_t dirlen; + int status; + size_t oldcount; + int meta; + int dirname_modified; ++ int malloc_dirname = 0; + glob_t dirs; ++ int retval = 0; ++#ifdef _LIBC ++ size_t alloca_used = 0; ++#endif + + if (pattern == NULL || pglob == NULL || (flags & ~__GLOB_FLAGS) != 0) + { +@@ -308,20 +313,26 @@ glob (pattern, flags, errfunc, pglob) + const char *next; + const char *rest; + size_t rest_len; +-#ifdef __GNUC__ +- char onealt[strlen (pattern) - 1]; +-#else +- char *onealt = (char *) malloc (strlen (pattern) - 1); +- if (onealt == NULL) ++ char *onealt; ++ size_t pattern_len = strlen (pattern) - 1; ++#ifdef _LIBC ++ int alloca_onealt = __libc_use_alloca (alloca_used + pattern_len); ++ if (alloca_onealt) ++ onealt = alloca_account (pattern_len, alloca_used); ++ else ++#endif + { +- if (!(flags & GLOB_APPEND)) ++ onealt = (char *) malloc (pattern_len); ++ if (onealt == NULL) + { +- pglob->gl_pathc = 0; +- pglob->gl_pathv = NULL; ++ if (!(flags & GLOB_APPEND)) ++ { ++ pglob->gl_pathc = 0; ++ pglob->gl_pathv = NULL; ++ } ++ return GLOB_NOSPACE; + } +- return GLOB_NOSPACE; + } +-#endif + + /* We know the prefix for all sub-patterns. */ + alt_start = mempcpy (onealt, pattern, begin - pattern); +@@ -332,9 +343,11 @@ glob (pattern, flags, errfunc, pglob) + if (next == NULL) + { + /* It is an illegal expression. */ +-#ifndef __GNUC__ +- free (onealt); ++ illegal_brace: ++#ifdef _LIBC ++ if (__builtin_expect (!alloca_onealt, 0)) + #endif ++ free (onealt); + return glob (pattern, flags & ~GLOB_BRACE, errfunc, pglob); + } + +@@ -344,13 +357,8 @@ glob (pattern, flags, errfunc, pglob) + { + rest = next_brace_sub (rest + 1, flags); + if (rest == NULL) +- { +- /* It is an illegal expression. */ +-#ifndef __GNUC__ +- free (onealt); +-#endif +- return glob (pattern, flags & ~GLOB_BRACE, errfunc, pglob); +- } ++ /* It is an illegal expression. */ ++ goto illegal_brace; + } + /* Please note that we now can be sure the brace expression + is well-formed. */ +@@ -386,9 +394,10 @@ glob (pattern, flags, errfunc, pglob) + /* If we got an error, return it. */ + if (result && result != GLOB_NOMATCH) + { +-#ifndef __GNUC__ +- free (onealt); ++#ifdef _LIBC ++ if (__builtin_expect (!alloca_onealt, 0)) + #endif ++ free (onealt); + if (!(flags & GLOB_APPEND)) + { + globfree (pglob); +@@ -406,9 +415,10 @@ glob (pattern, flags, errfunc, pglob) + assert (next != NULL); + } + +-#ifndef __GNUC__ +- free (onealt); ++#ifdef _LIBC ++ if (__builtin_expect (!alloca_onealt, 0)) + #endif ++ free (onealt); + + if (pglob->gl_pathc != firstc) + /* We found some entries. */ +@@ -455,7 +465,7 @@ glob (pattern, flags, errfunc, pglob) + case is nothing but a notation for a directory. */ + if ((flags & (GLOB_TILDE|GLOB_TILDE_CHECK)) && pattern[0] == '~') + { +- dirname = pattern; ++ dirname = (char *) pattern; + dirlen = strlen (pattern); + + /* Set FILENAME to NULL as a special flag. This is ugly but +@@ -473,9 +483,9 @@ glob (pattern, flags, errfunc, pglob) + + filename = pattern; + #ifdef _AMIGA +- dirname = ""; ++ dirname = (char *) ""; + #else +- dirname = "."; ++ dirname = (char *) "."; + #endif + dirlen = 0; + } +@@ -485,7 +495,7 @@ glob (pattern, flags, errfunc, pglob) + && (flags & GLOB_NOESCAPE) == 0)) + { + /* "/pattern" or "\/pattern". */ +- dirname = "/"; ++ dirname = (char *) "/"; + dirlen = 1; + ++filename; + } +@@ -511,7 +521,17 @@ glob (pattern, flags, errfunc, pglob) + from "d:/", since "d:" and "d:/" are not the same.*/ + } + #endif +- newp = (char *) __alloca (dirlen + 1); ++#ifdef _LIBC ++ if (__libc_use_alloca (alloca_used + dirlen + 1)) ++ newp = alloca_account (dirlen + 1, alloca_used); ++ else ++#endif ++ { ++ newp = malloc (dirlen + 1); ++ if (newp == NULL) ++ return GLOB_NOSPACE; ++ malloc_dirname = 1; ++ } + *((char *) mempcpy (newp, pattern, dirlen)) = '\0'; + dirname = newp; + ++filename; +@@ -551,7 +571,8 @@ glob (pattern, flags, errfunc, pglob) + oldcount = pglob->gl_pathc + pglob->gl_offs; + goto no_matches; + } +- return val; ++ retval = val; ++ goto out; + } + } + +@@ -563,7 +584,8 @@ glob (pattern, flags, errfunc, pglob) + && (dirname[2] == '\0' || dirname[2] == '/'))) + { + /* Look up home directory. */ +- const char *home_dir = getenv ("HOME"); ++ char *home_dir = getenv ("HOME"); ++ int malloc_home_dir = 0; + # ifdef _AMIGA + if (home_dir == NULL || home_dir[0] == '\0') + home_dir = "SYS:"; +@@ -582,7 +604,7 @@ glob (pattern, flags, errfunc, pglob) + /* `sysconf' does not support _SC_LOGIN_NAME_MAX. Try + a moderate value. */ + buflen = 20; +- name = (char *) __alloca (buflen); ++ name = alloca_account (buflen, alloca_used); + + success = getlogin_r (name, buflen) == 0; + if (success) +@@ -592,6 +614,7 @@ glob (pattern, flags, errfunc, pglob) + long int pwbuflen = GETPW_R_SIZE_MAX (); + char *pwtmpbuf; + struct passwd pwbuf; ++ int malloc_pwtmpbuf = 0; + int save = errno; + + # ifndef _LIBC +@@ -600,7 +623,18 @@ glob (pattern, flags, errfunc, pglob) + Try a moderate value. */ + pwbuflen = 1024; + # endif +- pwtmpbuf = (char *) __alloca (pwbuflen); ++ if (__libc_use_alloca (alloca_used + pwbuflen)) ++ pwtmpbuf = alloca_account (pwbuflen, alloca_used); ++ else ++ { ++ pwtmpbuf = malloc (pwbuflen); ++ if (pwtmpbuf == NULL) ++ { ++ retval = GLOB_NOSPACE; ++ goto out; ++ } ++ malloc_pwtmpbuf = 1; ++ } + + while (getpwnam_r (name, &pwbuf, pwtmpbuf, pwbuflen, &p) + != 0) +@@ -610,46 +644,115 @@ glob (pattern, flags, errfunc, pglob) + p = NULL; + break; + } +-# ifdef _LIBC +- pwtmpbuf = extend_alloca (pwtmpbuf, pwbuflen, ++ ++ if (!malloc_pwtmpbuf ++ && __libc_use_alloca (alloca_used ++ + 2 * pwbuflen)) ++ pwtmpbuf = extend_alloca_account (pwtmpbuf, pwbuflen, ++ 2 * pwbuflen, ++ alloca_used); ++ else ++ { ++ char *newp = realloc (malloc_pwtmpbuf ++ ? pwtmpbuf : NULL, + 2 * pwbuflen); +-# else +- pwbuflen *= 2; +- pwtmpbuf = (char *) __alloca (pwbuflen); +-# endif ++ if (newp == NULL) ++ { ++ if (__builtin_expect (malloc_pwtmpbuf, 0)) ++ free (pwtmpbuf); ++ retval = GLOB_NOSPACE; ++ goto out; ++ } ++ pwtmpbuf = newp; ++ pwbuflen = 2 * pwbuflen; ++ malloc_pwtmpbuf = 1; ++ } + __set_errno (save); + } + # else + p = getpwnam (name); + # endif + if (p != NULL) +- home_dir = p->pw_dir; ++ { ++ if (!malloc_pwtmpbuf) ++ home_dir = p->pw_dir; ++ else ++ { ++ size_t home_dir_len = strlen (p->pw_dir) + 1; ++ if (__libc_use_alloca (alloca_used + home_dir_len)) ++ home_dir = alloca_account (home_dir_len, ++ alloca_used); ++ else ++ { ++ home_dir = malloc (home_dir_len); ++ if (home_dir == NULL) ++ { ++ free (pwtmpbuf); ++ retval = GLOB_NOSPACE; ++ goto out; ++ } ++ malloc_home_dir = 1; ++ } ++ memcpy (home_dir, p->pw_dir, home_dir_len); ++ ++ free (pwtmpbuf); ++ } ++ } + } + } + if (home_dir == NULL || home_dir[0] == '\0') + { + if (flags & GLOB_TILDE_CHECK) +- return GLOB_NOMATCH; ++ { ++ if (__builtin_expect (malloc_home_dir, 0)) ++ free (home_dir); ++ retval = GLOB_NOMATCH; ++ goto out; ++ } + else +- home_dir = "~"; /* No luck. */ ++ home_dir = (char *) "~"; /* No luck. */ + } + # endif /* WINDOWS32 */ + # endif + /* Now construct the full directory. */ + if (dirname[1] == '\0') + { ++ if (__builtin_expect (malloc_dirname, 0)) ++ free (dirname); ++ + dirname = home_dir; + dirlen = strlen (dirname); ++ malloc_dirname = malloc_home_dir; + } + else + { + char *newp; + size_t home_len = strlen (home_dir); +- newp = (char *) __alloca (home_len + dirlen); ++ int use_alloca = __libc_use_alloca (alloca_used ++ + home_len + dirlen); ++ if (use_alloca) ++ newp = alloca_account (home_len + dirlen, alloca_used); ++ else ++ { ++ newp = malloc (home_len + dirlen); ++ if (newp == NULL) ++ { ++ if (__builtin_expect (malloc_home_dir, 0)) ++ free (home_dir); ++ retval = GLOB_NOSPACE; ++ goto out; ++ } ++ } ++ + mempcpy (mempcpy (newp, home_dir, home_len), + &dirname[1], dirlen); ++ ++ if (__builtin_expect (malloc_dirname, 0)) ++ free (dirname); ++ + dirname = newp; + dirlen += home_len - 1; ++ malloc_dirname = !use_alloca; + } + dirname_modified = 1; + } +@@ -657,7 +760,8 @@ glob (pattern, flags, errfunc, pglob) + else + { + char *end_name = strchr (dirname, '/'); +- const char *user_name; ++ char *user_name; ++ int malloc_user_name = 0; + const char *home_dir; + char *unescape = NULL; + +@@ -677,7 +781,18 @@ glob (pattern, flags, errfunc, pglob) + else + { + char *newp; +- newp = (char *) __alloca (end_name - dirname); ++ if (__libc_use_alloca (alloca_used + (end_name - dirname))) ++ newp = alloca_account (end_name - dirname, alloca_used); ++ else ++ { ++ newp = malloc (end_name - dirname); ++ if (newp == NULL) ++ { ++ retval = GLOB_NOSPACE; ++ goto out; ++ } ++ malloc_user_name = 1; ++ } + if (unescape != NULL) + { + char *p = mempcpy (newp, dirname + 1, +@@ -714,6 +829,7 @@ glob (pattern, flags, errfunc, pglob) + # if defined HAVE_GETPWNAM_R || defined _LIBC + long int buflen = GETPW_R_SIZE_MAX (); + char *pwtmpbuf; ++ int malloc_pwtmpbuf = 0; + struct passwd pwbuf; + int save = errno; + +@@ -723,7 +839,21 @@ glob (pattern, flags, errfunc, pglob) + moderate value. */ + buflen = 1024; + # endif +- pwtmpbuf = (char *) __alloca (buflen); ++ if (__libc_use_alloca (alloca_used + buflen)) ++ pwtmpbuf = alloca_account (buflen, alloca_used); ++ else ++ { ++ pwtmpbuf = malloc (buflen); ++ if (pwtmpbuf == NULL) ++ { ++ nomem_getpw: ++ if (__builtin_expect (malloc_user_name, 0)) ++ free (user_name); ++ retval = GLOB_NOSPACE; ++ goto out; ++ } ++ malloc_pwtmpbuf = 1; ++ } + + while (getpwnam_r (user_name, &pwbuf, pwtmpbuf, buflen, &p) != 0) + { +@@ -732,40 +862,77 @@ glob (pattern, flags, errfunc, pglob) + p = NULL; + break; + } +-# ifdef _LIBC +- pwtmpbuf = extend_alloca (pwtmpbuf, buflen, 2 * buflen); +-# else +- buflen *= 2; +- pwtmpbuf = __alloca (buflen); +-# endif ++ if (!malloc_pwtmpbuf ++ && __libc_use_alloca (alloca_used + 2 * buflen)) ++ pwtmpbuf = extend_alloca_account (pwtmpbuf, buflen, ++ 2 * buflen, alloca_used); ++ else ++ { ++ char *newp = realloc (malloc_pwtmpbuf ? pwtmpbuf : NULL, ++ 2 * buflen); ++ if (newp == NULL) ++ { ++ if (__builtin_expect (malloc_pwtmpbuf, 0)) ++ free (pwtmpbuf); ++ goto nomem_getpw; ++ } ++ pwtmpbuf = newp; ++ malloc_pwtmpbuf = 1; ++ } + __set_errno (save); + } + # else + p = getpwnam (user_name); + # endif ++ ++ if (__builtin_expect (malloc_user_name, 0)) ++ free (user_name); ++ ++ /* If we found a home directory use this. */ + if (p != NULL) +- home_dir = p->pw_dir; ++ { ++ size_t home_len = strlen (p->pw_dir); ++ size_t rest_len = end_name == NULL ? 0 : strlen (end_name); ++ ++ if (__builtin_expect (malloc_dirname, 0)) ++ free (dirname); ++ malloc_dirname = 0; ++ ++ if (__libc_use_alloca (alloca_used + home_len + rest_len + 1)) ++ dirname = alloca_account (home_len + rest_len + 1, ++ alloca_used); ++ else ++ { ++ dirname = malloc (home_len + rest_len + 1); ++ if (dirname == NULL) ++ { ++ if (__builtin_expect (malloc_pwtmpbuf, 0)) ++ free (pwtmpbuf); ++ retval = GLOB_NOSPACE; ++ goto out; ++ } ++ malloc_dirname = 1; ++ } ++ *((char *) mempcpy (mempcpy (dirname, p->pw_dir, home_len), ++ end_name, rest_len)) = '\0'; ++ ++ dirlen = home_len + rest_len; ++ dirname_modified = 1; ++ ++ if (__builtin_expect (malloc_pwtmpbuf, 0)) ++ free (pwtmpbuf); ++ } + else +- home_dir = NULL; ++ { ++ if (__builtin_expect (malloc_pwtmpbuf, 0)) ++ free (pwtmpbuf); ++ ++ if (flags & GLOB_TILDE_CHECK) ++ /* We have to regard it as an error if we cannot find the ++ home directory. */ ++ return GLOB_NOMATCH; ++ } + } +- /* If we found a home directory use this. */ +- if (home_dir != NULL) +- { +- char *newp; +- size_t home_len = strlen (home_dir); +- size_t rest_len = end_name == NULL ? 0 : strlen (end_name); +- newp = (char *) __alloca (home_len + rest_len + 1); +- *((char *) mempcpy (mempcpy (newp, home_dir, home_len), +- end_name, rest_len)) = '\0'; +- dirname = newp; +- dirlen = home_len + rest_len; +- dirname_modified = 1; +- } +- else +- if (flags & GLOB_TILDE_CHECK) +- /* We have to regard it as an error if we cannot find the +- home directory. */ +- return GLOB_NOMATCH; + } + # endif /* Not Amiga && not WINDOWS32. */ + } +@@ -899,7 +1066,7 @@ glob (pattern, flags, errfunc, pglob) + status = glob_in_dir (filename, dirs.gl_pathv[i], + ((flags | GLOB_APPEND) + & ~(GLOB_NOCHECK | GLOB_NOMAGIC)), +- errfunc, pglob); ++ errfunc, pglob, alloca_used); + if (status == GLOB_NOMATCH) + /* No matches in this directory. Try the next. */ + continue; +@@ -1000,7 +1167,8 @@ glob (pattern, flags, errfunc, pglob) + } + if (dirname_modified) + flags &= ~(GLOB_NOCHECK | GLOB_NOMAGIC); +- status = glob_in_dir (filename, dirname, flags, errfunc, pglob); ++ status = glob_in_dir (filename, dirname, flags, errfunc, pglob, ++ alloca_used); + if (status != 0) + { + if (status == GLOB_NOMATCH && flags != orig_flags +@@ -1063,7 +1231,11 @@ glob (pattern, flags, errfunc, pglob) + sizeof (char *), collated_compare); + } + +- return 0; ++ out: ++ if (__builtin_expect (malloc_dirname, 0)) ++ free (dirname); ++ ++ return retval; + } + #if defined _LIBC && !defined glob + libc_hidden_def (glob) +@@ -1273,7 +1445,7 @@ link_exists2_p (const char *dir, size_t dirlen, const char *fname, + static int + glob_in_dir (const char *pattern, const char *directory, int flags, + int (*errfunc) (const char *, int), +- glob_t *pglob) ++ glob_t *pglob, size_t alloca_used) + { + size_t dirlen = strlen (directory); + void *stream = NULL; +@@ -1288,11 +1460,12 @@ glob_in_dir (const char *pattern, const char *directory, int flags, + struct globnames *names = &init_names; + struct globnames *names_alloca = &init_names; + size_t nfound = 0; +- size_t allocasize = sizeof (init_names); + size_t cur = 0; + int meta; + int save; + ++ alloca_used += sizeof (init_names); ++ + init_names.next = NULL; + init_names.count = INITIAL_COUNT; + +@@ -1308,20 +1481,36 @@ glob_in_dir (const char *pattern, const char *directory, int flags, + { + /* Since we use the normal file functions we can also use stat() + to verify the file is there. */ +- struct stat st; +- struct_stat64 st64; ++ union ++ { ++ struct stat st; ++ struct_stat64 st64; ++ } ust; + size_t patlen = strlen (pattern); +- char *fullname = (char *) __alloca (dirlen + 1 + patlen + 1); ++ int alloca_fullname = __libc_use_alloca (alloca_used ++ + dirlen + 1 + patlen + 1); ++ char *fullname; ++ if (alloca_fullname) ++ fullname = alloca_account (dirlen + 1 + patlen + 1, alloca_used); ++ else ++ { ++ fullname = malloc (dirlen + 1 + patlen + 1); ++ if (fullname == NULL) ++ return GLOB_NOSPACE; ++ } + + mempcpy (mempcpy (mempcpy (fullname, directory, dirlen), + "/", 1), + pattern, patlen + 1); + if ((__builtin_expect (flags & GLOB_ALTDIRFUNC, 0) +- ? (*pglob->gl_stat) (fullname, &st) +- : __stat64 (fullname, &st64)) == 0) ++ ? (*pglob->gl_stat) (fullname, &ust.st) ++ : __stat64 (fullname, &ust.st64)) == 0) + /* We found this file to be existing. Now tell the rest + of the function to copy this name into the result. */ + flags |= GLOB_NOCHECK; ++ ++ if (__builtin_expect (!alloca_fullname, 0)) ++ free (fullname); + } + else + { +@@ -1409,9 +1598,9 @@ glob_in_dir (const char *pattern, const char *directory, int flags, + size_t size = (sizeof (struct globnames) + + ((count - INITIAL_COUNT) + * sizeof (char *))); +- allocasize += size; +- if (__libc_use_alloca (allocasize)) +- newnames = names_alloca = __alloca (size); ++ if (__libc_use_alloca (alloca_used + size)) ++ newnames = names_alloca ++ = alloca_account (size, alloca_used); + else if ((newnames = malloc (size)) + == NULL) + goto memory_error; diff --git a/src/patches/glibc/glibc-rh804630.patch b/src/patches/glibc/glibc-rh804630.patch new file mode 100644 index 0000000..75dbe94 --- /dev/null +++ b/src/patches/glibc/glibc-rh804630.patch @@ -0,0 +1,23 @@ +diff -rup c/resolv/res_send.c d/resolv/res_send.c +--- c/resolv/res_send.c 2012-01-01 05:16:32.000000000 -0700 ++++ d/resolv/res_send.c 2012-03-30 12:39:30.862467628 -0600 +@@ -409,6 +409,7 @@ __libc_res_nsend(res_state statp, const + */ + if (EXT(statp).nsinit == 0) { + unsigned char map[MAXNS]; ++ unsigned int ext_total_nscount; + + memset (map, MAXNS, sizeof (map)); + for (n = 0; n < MAXNS; n++) { +@@ -422,8 +423,9 @@ __libc_res_nsend(res_state statp, const + } + } + n = statp->nscount; +- if (statp->nscount > EXT(statp).nscount) +- for (n = EXT(statp).nscount, ns = 0; ++ ext_total_nscount = EXT(statp).nscount + EXT(statp).nscount6; ++ if (statp->nscount > ext_total_nscount) ++ for (n = ext_total_nscount, ns = 0; + n < statp->nscount; n++) { + while (ns < MAXNS + && EXT(statp).nsmap[ns] != MAXNS) diff --git a/src/patches/glibc/glibc-rh804689.patch b/src/patches/glibc/glibc-rh804689.patch new file mode 100644 index 0000000..a96a33f --- /dev/null +++ b/src/patches/glibc/glibc-rh804689.patch @@ -0,0 +1,23 @@ +diff -rup a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c +--- a/sysdeps/posix/getaddrinfo.c 2012-03-20 21:31:14.177358937 -0600 ++++ b/sysdeps/posix/getaddrinfo.c 2012-03-21 09:13:17.198290683 -0600 +@@ -560,15 +563,11 @@ gaih_inet (const char *name, const struc + int no_more; + int old_res_options; + +- /* If we do not have to look for IPv4 and IPv6 together, use +- the simple, old functions. */ +- if ((req->ai_family == AF_INET +- || (req->ai_family == AF_INET6 +- && ((req->ai_flags & AI_V4MAPPED) == 0 +- || (req->ai_flags & AI_ALL) == 0))) +- && (req->ai_flags & AI_CANONNAME) == 0) ++ /* If we do not have to look for IPv6 addresses, use ++ the simple, old functions, which do not support ++ IPv6 scope ids. */ ++ if (req->ai_family == AF_INET) + { +- int family = req->ai_family; + size_t tmpbuflen = 512; + assert (tmpbuf == NULL); + tmpbuf = alloca_account (tmpbuflen, alloca_used); diff --git a/src/patches/glibc/glibc-rh808337.patch b/src/patches/glibc/glibc-rh808337.patch new file mode 100644 index 0000000..bc20cbc --- /dev/null +++ b/src/patches/glibc/glibc-rh808337.patch @@ -0,0 +1,21 @@ +commit 6a5ee1029b3966c5ae9adaaa881e255b2880f511 +Author: Ulrich Drepper drepper@gmail.com +Date: Sun Mar 6 00:01:50 2011 -0500 + + Fix loading first object along a path when tracing. + +diff --git a/elf/dl-load.c b/elf/dl-load.c +index 1ad16a0..f866066 100644 +--- a/elf/dl-load.c ++++ b/elf/dl-load.c +@@ -2111,7 +2111,9 @@ _dl_map_object (struct link_map *loader, const char *name, + { + #ifdef SHARED + // XXX Correct to unconditionally default to namespace 0? +- l = loader ?: GL(dl_ns)[LM_ID_BASE]._ns_loaded; ++ l = (loader ++ ?: GL(dl_ns)[LM_ID_BASE]._ns_loaded ++ ?: &GL(dl_rtld_map)); + #else + l = loader; + #endif diff --git a/src/patches/glibc/glibc-rh808545.patch b/src/patches/glibc/glibc-rh808545.patch new file mode 100644 index 0000000..9a2cae3 --- /dev/null +++ b/src/patches/glibc/glibc-rh808545.patch @@ -0,0 +1,44 @@ +diff -rup a/resolv/nss_dns/dns-host.c b/resolv/nss_dns/dns-host.c +--- a/resolv/nss_dns/dns-host.c 2012-04-18 11:17:31.527539744 -0600 ++++ b/resolv/nss_dns/dns-host.c 2012-04-18 11:21:45.441394159 -0600 +@@ -745,6 +745,10 @@ getanswer_r (const querybuf *answer, int + + if ((qtype == T_A || qtype == T_AAAA) && type == T_CNAME) + { ++ /* A CNAME could also have a TTL entry. */ ++ if (ttlp != NULL && ttl < *ttlp) ++ *ttlp = ttl; ++ + if (ap >= &host_data->aliases[MAX_NR_ALIASES - 1]) + continue; + n = dn_expand (answer->buf, end_of_message, cp, tbuf, sizeof tbuf); +@@ -906,7 +910,7 @@ getanswer_r (const querybuf *answer, int + { + register int nn; + +- if (ttlp != NULL) ++ if (ttlp != NULL && ttl < *ttlp) + *ttlp = ttl; + if (canonp != NULL) + *canonp = bp; +@@ -1082,6 +1086,11 @@ gaih_getanswer_slice (const querybuf *an + if (type == T_CNAME) + { + char tbuf[MAXDNAME]; ++ ++ /* A CNAME could also have a TTL entry. */ ++ if (ttlp != NULL && ttl < *ttlp) ++ *ttlp = ttl; ++ + n = dn_expand (answer->buf, end_of_message, cp, tbuf, sizeof tbuf); + if (__builtin_expect (n < 0 || res_hnok (tbuf) == 0, 0)) + { +@@ -1162,7 +1171,7 @@ gaih_getanswer_slice (const querybuf *an + + if (*firstp) + { +- if (ttlp != NULL) ++ if (ttlp != NULL && ttl < *ttlp) + *ttlp = ttl; + + (*pat)->name = canon ?: h_name; diff --git a/src/patches/glibc/glibc-rh809602.patch b/src/patches/glibc/glibc-rh809602.patch new file mode 100644 index 0000000..81aa63a --- /dev/null +++ b/src/patches/glibc/glibc-rh809602.patch @@ -0,0 +1,47 @@ +diff -rup a/nscd/nscd_getserv_r.c b/nscd/nscd_getserv_r.c +--- a/nscd/nscd_getserv_r.c 2012-04-04 16:37:27.873951850 -0600 ++++ b/nscd/nscd_getserv_r.c 2012-04-04 16:37:49.904837348 -0600 +@@ -124,6 +123,7 @@ nscd_getserv_r (const char *crit, size_t + s_name = (char *) (&found->data[0].servdata + 1); + serv_resp = found->data[0].servdata; + s_proto = s_name + serv_resp.s_name_len; ++ alloca_aliases_len = 1; + aliases_len = (uint32_t *) (s_proto + serv_resp.s_proto_len); + aliases_list = ((char *) aliases_len + + serv_resp.s_aliases_cnt * sizeof (uint32_t)); +@@ -154,7 +154,9 @@ nscd_getserv_r (const char *crit, size_t + + (serv_resp.s_aliases_cnt + * sizeof (uint32_t))); + if (alloca_aliases_len) +- tmp = __alloca (serv_resp.s_aliases_cnt * sizeof (uint32_t)); ++ tmp = alloca_account (serv_resp.s_aliases_cnt ++ * sizeof (uint32_t), ++ alloca_used); + else + { + tmp = malloc (serv_resp.s_aliases_cnt * sizeof (uint32_t)); +@@ -249,8 +251,9 @@ nscd_getserv_r (const char *crit, size_t + + (serv_resp.s_aliases_cnt + * sizeof (uint32_t))); + if (alloca_aliases_len) +- aliases_len = alloca (serv_resp.s_aliases_cnt +- * sizeof (uint32_t)); ++ aliases_len = alloca_account (serv_resp.s_aliases_cnt ++ * sizeof (uint32_t), ++ alloca_used); + else + { + aliases_len = malloc (serv_resp.s_aliases_cnt +@@ -368,7 +371,11 @@ nscd_getserv_r (const char *crit, size_t + } + + if (retval != -1) +- goto retry; ++ { ++ if (!alloca_aliases_len) ++ free ((void *) aliases_len); ++ goto retry; ++ } + } + + if (!alloca_aliases_len) diff --git a/src/patches/glibc/glibc-rh833716.patch b/src/patches/glibc/glibc-rh833716.patch new file mode 100644 index 0000000..e44573c --- /dev/null +++ b/src/patches/glibc/glibc-rh833716.patch @@ -0,0 +1,45265 @@ +diff -Nrup a/stdio-common/Makefile b/stdio-common/Makefile +--- a/stdio-common/Makefile 2012-05-23 14:54:54.670443298 -0600 ++++ b/stdio-common/Makefile 2012-05-22 13:47:51.000000000 -0600 +@@ -60,7 +60,7 @@ tests := tstscanf test_rdwr test-popen t + tst-popen tst-unlockedio tst-fmemopen2 tst-put-error tst-fgets \ + tst-fwrite bug16 bug17 tst-swscanf tst-sprintf2 bug18 bug18a \ + bug19 bug19a tst-popen2 scanf13 scanf14 scanf15 bug20 bug21 bug22 \ +- scanf16 scanf17 tst-setvbuf1 bug-vfprintf-nargs ++ scanf16 scanf17 tst-setvbuf1 bug-vfprintf-nargs bug23 bug23-2 bug23-3 + + test-srcs = tst-unbputc tst-printf + +diff -Nrup a/stdio-common/bug23-2.c b/stdio-common/bug23-2.c +--- a/stdio-common/bug23-2.c 1969-12-31 17:00:00.000000000 -0700 ++++ b/stdio-common/bug23-2.c 2012-05-24 07:12:55.331644716 -0600 +@@ -0,0 +1,70 @@ ++#include <stdio.h> ++#include <string.h> ++#include <stdlib.h> ++ ++static const char expected[] = "\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55%%%%%%%%%%%%%%%%%%%%%%%%%%\n"; ++ ++static int ++do_test (void) ++{ ++ char *buf = malloc (strlen (expected) + 1); ++ snprintf (buf, strlen (expected) + 1, ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", ++ "a", "b", "c", "d", 5); ++ return strcmp (buf, expected) != 0; ++} ++ ++#define TEST_FUNCTION do_test () ++#include "../test-skeleton.c" +diff -Nrup a/stdio-common/bug23-3.c b/stdio-common/bug23-3.c +--- a/stdio-common/bug23-3.c 1969-12-31 17:00:00.000000000 -0700 ++++ b/stdio-common/bug23-3.c 2012-05-24 07:13:26.948480695 -0600 +@@ -0,0 +1,45076 @@ ++#include <stdio.h> ++#include <string.h> ++#include <stdlib.h> ++ ++static const char expected[] = "\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55%%%%%%%%%%%%%%%%%%%%%%%%%%\n"; ++ ++ ++ ++int ++do_test (void) ++{ ++ char *buf = malloc (strlen (expected) + 1); ++ snprintf (buf, strlen (expected) + 1, ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", ++ "a", "b", "c", "d", 5); ++ return (strcmp (buf, expected) != 0); ++} ++#define TEST_FUNCTION do_test () ++#include "../test-skeleton.c" ++ +diff -Nrup a/stdio-common/bug23.c b/stdio-common/bug23.c +--- a/stdio-common/bug23.c 1969-12-31 17:00:00.000000000 -0700 ++++ b/stdio-common/bug23.c 2012-05-24 07:12:27.636788393 -0600 +@@ -0,0 +1,22 @@ ++#include <stdio.h> ++#include <string.h> ++#include <stdlib.h> ++ ++static const char expected[] = "\ ++\n\ ++a\n\ ++abbcd55%%%%%%%%%%%%%%%%%%%%%%%%%%\n"; ++ ++static int ++do_test (void) ++{ ++ char *buf = malloc (strlen (expected) + 1); ++ snprintf (buf, strlen (expected) + 1, ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", ++ "a", "b", "c", "d", 5); ++ return strcmp (buf, expected) != 0; ++} ++ ++#define TEST_FUNCTION do_test () ++#include "../test-skeleton.c" +diff -Nrup a/stdio-common/vfprintf.c b/stdio-common/vfprintf.c +--- a/stdio-common/vfprintf.c 2012-05-23 14:54:54.689443199 -0600 ++++ b/stdio-common/vfprintf.c 2012-05-23 23:16:55.376155638 -0600 +@@ -238,6 +238,12 @@ vfprintf (FILE *s, const CHAR_T *format, + /* For the argument descriptions, which may be allocated on the heap. */ + void *args_malloced = NULL; + ++ /* For positional argument handling. */ ++ struct printf_spec *specs; ++ ++ /* Track if we malloced the SPECS array and thus must free it. */ ++ bool specs_malloced = false; ++ + /* This table maps a character into a number representing a + class. In each step there is a destination label for each + class. */ +@@ -1638,10 +1644,10 @@ do_positional: + /* Array with information about the needed arguments. This has to + be dynamically extensible. */ + size_t nspecs = 0; +- size_t nspecs_max = 32; /* A more or less arbitrary start value. */ +- struct printf_spec *specs +- = alloca (nspecs_max * sizeof (struct printf_spec)); ++ /* A more or less arbitrary start value. */ ++ size_t nspecs_size = 32 * sizeof (struct printf_spec); + ++ specs = alloca (nspecs_size); + /* The number of arguments the format string requests. This will + determine the size of the array needed to store the argument + attributes. */ +@@ -1678,14 +1684,30 @@ do_positional: + + for (f = lead_str_end; *f != L_('\0'); f = specs[nspecs++].next_fmt) + { +- if (nspecs >= nspecs_max) ++ if (nspecs * sizeof (*specs) >= nspecs_size) + { + /* Extend the array of format specifiers. */ + struct printf_spec *old = specs; +- specs = extend_alloca (specs, nspecs_max, 2 * nspecs_max); ++ if (__libc_use_alloca (2 * nspecs_size)) ++ specs = extend_alloca (specs, nspecs_size, 2 * nspecs_size); ++ else ++ { ++ nspecs_size *= 2; ++ specs = malloc (nspecs_size); ++ } ++ + + /* Copy the old array's elements to the new space. */ +- memmove (specs, old, nspecs * sizeof (struct printf_spec)); ++ memmove (specs, old, nspecs * sizeof (*specs)); ++ ++ /* If we had previously malloc'd space for SPECS, then ++ release it after the copy is complete. */ ++ if (specs_malloced) ++ free (old); ++ ++ /* Now set SPECS_MALLOCED if needed. */ ++ if (!__libc_use_alloca (nspecs_size)) ++ specs_malloced = true; + } + + /* Parse the format specifier. */ +@@ -1998,6 +2020,8 @@ do_positional: + } + + all_done: ++ if (specs_malloced) ++ free (specs); + free (args_malloced); + free (workstart); + /* Unlock the stream. */ diff --git a/src/patches/glibc/glibc-rh837026.patch b/src/patches/glibc/glibc-rh837026.patch new file mode 100644 index 0000000..558ad4f --- /dev/null +++ b/src/patches/glibc/glibc-rh837026.patch @@ -0,0 +1,30 @@ +diff -rup a/resolv/res_send.c b/resolv/res_send.c +--- a/resolv/res_send.c 2012-06-28 11:55:38.361886650 -0600 ++++ b/resolv/res_send.c 2012-06-28 11:51:38.253963687 -0600 +@@ -424,17 +424,15 @@ __libc_res_nsend(res_state statp, const + } + n = statp->nscount; + ext_total_nscount = EXT(statp).nscount + EXT(statp).nscount6; +- if (statp->nscount > ext_total_nscount) +- for (n = ext_total_nscount, ns = 0; +- n < statp->nscount; n++) { +- while (ns < MAXNS +- && EXT(statp).nsmap[ns] != MAXNS) +- ns++; +- if (ns == MAXNS) +- break; +- EXT(statp).nsmap[ns] = n; +- map[n] = ns++; +- } ++ for (n = 0, ns = 0; n < statp->nscount - ext_total_nscount; n++) { ++ while (ns < MAXNS ++ && EXT(statp).nsmap[ns] != MAXNS) ++ ns++; ++ if (ns == MAXNS) ++ break; ++ EXT(statp).nsmap[ns] = n; ++ map[n] = ns++; ++ } + EXT(statp).nscount = n; + for (ns = 0; ns < EXT(statp).nscount; ns++) { + n = map[ns]; diff --git a/src/patches/grep-2.5.1a-redhat_fixes-2.patch b/src/patches/grep-2.5.1a-redhat_fixes-2.patch deleted file mode 100644 index 9c30342..0000000 --- a/src/patches/grep-2.5.1a-redhat_fixes-2.patch +++ /dev/null @@ -1,2109 +0,0 @@ -Submitted by: Alexander E. Patrakov -Date: 2005-08-13 -Initial Package Version: 2.5.1a -Upstream Status: Partially accepted, partially rejected, but required for LSB >= 2.0 certification -Origin: RedHat -Description: Various fixes from RedHat. Individual patches: - - grep-2.5.1-fgrep.patch - grep-2.5.1-bracket.patch - grep-2.5-i18n.patch - grep-2.5.1-oi.patch - grep-2.5.1-manpage.patch - grep-2.5.1-color.patch - grep-2.5.1-icolor.patch - grep-2.5.1-egf-speedup.patch - grep-2.5.1-dfa-optional.patch - grep-2.5.1-tests.patch - grep-2.5.1-w.patch - -Testcases: - - -fgrep: ???, but required for other patches - -bracket: echo "[" | LANG=en_US.UTF-8 grep "[[:space:]]" - -i18n: many fixes for multibyte locale support, required for LSB. - -oi: echo xxYYzz | LANG=C grep -i -o yy - -manpage: typo - -color: restore the background color correctly - -icolor: ??? echo 'spam foo SPAM FOO' | grep -i --color spam - (but that's also fixed by -oi. Is this patch just a cleanup?) - -egf-speedup: without this, grep is as slow as a snail in UTF-8 locales. - -dfa-optional: disables dfa in multibyte locales by default. - -w: (echo 'foo';echo 'fo') > /tmp/testfile && grep -F -w fo /tmp/testfile - -diff -urN grep-2.5.1a.orig/doc/grep.1 grep-2.5.1a/doc/grep.1 ---- grep-2.5.1a.orig/doc/grep.1 2004-11-12 16:26:37.000000000 +0500 -+++ grep-2.5.1a/doc/grep.1 2005-10-23 09:49:43.000000000 +0600 -@@ -191,6 +191,7 @@ - .I PATTERN - as a list of fixed strings, separated by newlines, - any of which is to be matched. -+.TP - .BR -P ", " -^-perl-regexp - Interpret - .I PATTERN -@@ -302,7 +303,7 @@ - This is especially useful for tools like zgrep, e.g. - .B "gzip -cd foo.gz |grep --label=foo something" - .TP --.BR -^-line-buffering -+.BR -^-line-buffered - Use line buffering, it can be a performance penality. - .TP - .BR -q ", " -^-quiet ", " -^-silent -diff -urN grep-2.5.1a.orig/lib/posix/regex.h grep-2.5.1a/lib/posix/regex.h ---- grep-2.5.1a.orig/lib/posix/regex.h 2001-04-02 23:56:50.000000000 +0600 -+++ grep-2.5.1a/lib/posix/regex.h 2005-10-23 09:49:31.000000000 +0600 -@@ -109,6 +109,10 @@ - If not set, {, }, {, and } are literals. */ - #define RE_INTERVALS (RE_HAT_LISTS_NOT_NEWLINE << 1) - -+/* If this bit is set, then ignore case when matching. -+ If not set, then case is significant. */ -+#define RE_ICASE (RE_INVALID_INTERVAL_ORD << 1) -+ - /* If this bit is set, +, ? and | aren't recognized as operators. - If not set, they are. */ - #define RE_LIMITED_OPS (RE_INTERVALS << 1) -diff -urN grep-2.5.1a.orig/src/dfa.c grep-2.5.1a/src/dfa.c ---- grep-2.5.1a.orig/src/dfa.c 2001-09-26 22:57:55.000000000 +0600 -+++ grep-2.5.1a/src/dfa.c 2005-10-23 09:49:17.000000000 +0600 -@@ -414,7 +414,7 @@ - - /* This function fetch a wide character, and update cur_mb_len, - used only if the current locale is a multibyte environment. */ --static wchar_t -+static wint_t - fetch_wc (char const *eoferr) - { - wchar_t wc; -@@ -423,7 +423,7 @@ - if (eoferr != 0) - dfaerror (eoferr); - else -- return -1; -+ return WEOF; - } - - cur_mb_len = mbrtowc(&wc, lexptr, lexleft, &mbs); -@@ -459,7 +459,7 @@ - static void - parse_bracket_exp_mb () - { -- wchar_t wc, wc1, wc2; -+ wint_t wc, wc1, wc2; - - /* Work area to build a mb_char_classes. */ - struct mb_char_classes *work_mbc; -@@ -496,7 +496,7 @@ - work_mbc->invert = 0; - do - { -- wc1 = -1; /* mark wc1 is not initialized". */ -+ wc1 = WEOF; /* mark wc1 is not initialized". */ - - /* Note that if we're looking at some other [:...:] construct, - we just treat it as a bunch of ordinary characters. We can do -@@ -586,7 +586,7 @@ - work_mbc->coll_elems[work_mbc->ncoll_elems++] = elem; - } - } -- wc = -1; -+ wc1 = wc = WEOF; - } - else - /* We treat '[' as a normal character here. */ -@@ -600,7 +600,7 @@ - wc = fetch_wc(("Unbalanced [")); - } - -- if (wc1 == -1) -+ if (wc1 == WEOF) - wc1 = fetch_wc(_("Unbalanced [")); - - if (wc1 == L'-') -@@ -630,17 +630,17 @@ - } - REALLOC_IF_NECESSARY(work_mbc->range_sts, wchar_t, - range_sts_al, work_mbc->nranges + 1); -- work_mbc->range_sts[work_mbc->nranges] = wc; -+ work_mbc->range_sts[work_mbc->nranges] = (wchar_t)wc; - REALLOC_IF_NECESSARY(work_mbc->range_ends, wchar_t, - range_ends_al, work_mbc->nranges + 1); -- work_mbc->range_ends[work_mbc->nranges++] = wc2; -+ work_mbc->range_ends[work_mbc->nranges++] = (wchar_t)wc2; - } -- else if (wc != -1) -+ else if (wc != WEOF) - /* build normal characters. */ - { - REALLOC_IF_NECESSARY(work_mbc->chars, wchar_t, chars_al, - work_mbc->nchars + 1); -- work_mbc->chars[work_mbc->nchars++] = wc; -+ work_mbc->chars[work_mbc->nchars++] = (wchar_t)wc; - } - } - while ((wc = wc1) != L']'); -@@ -2552,6 +2552,8 @@ - } - - /* match with a character? */ -+ if (case_fold) -+ wc = towlower (wc); - for (i = 0; i<work_mbc->nchars; i++) - { - if (wc == work_mbc->chars[i]) -diff -urN grep-2.5.1a.orig/src/grep.c grep-2.5.1a/src/grep.c ---- grep-2.5.1a.orig/src/grep.c 2004-11-12 16:25:35.000000000 +0500 -+++ grep-2.5.1a/src/grep.c 2005-10-23 09:50:06.000000000 +0600 -@@ -30,6 +30,12 @@ - # include <sys/time.h> - # include <sys/resource.h> - #endif -+#if defined HAVE_WCTYPE_H && defined HAVE_WCHAR_H && defined HAVE_MBRTOWC -+/* We can handle multibyte string. */ -+# define MBS_SUPPORT -+# include <wchar.h> -+# include <wctype.h> -+#endif - #include <stdio.h> - #include "system.h" - #include "getopt.h" -@@ -558,33 +564,6 @@ - { - size_t match_size; - size_t match_offset; -- if(match_icase) -- { -- /* Yuck, this is tricky */ -- char *buf = (char*) xmalloc (lim - beg); -- char *ibeg = buf; -- char *ilim = ibeg + (lim - beg); -- int i; -- for (i = 0; i < lim - beg; i++) -- ibeg[i] = tolower (beg[i]); -- while ((match_offset = (*execute) (ibeg, ilim-ibeg, &match_size, 1)) -- != (size_t) -1) -- { -- char const *b = beg + match_offset; -- if (b == lim) -- break; -- fwrite (beg, sizeof (char), match_offset, stdout); -- printf ("\33[%sm", grep_color); -- fwrite (b, sizeof (char), match_size, stdout); -- fputs ("\33[00m", stdout); -- beg = b + match_size; -- ibeg = ibeg + match_offset + match_size; -- } -- fwrite (beg, 1, lim - beg, stdout); -- free (buf); -- lastout = lim; -- return; -- } - while (lim-beg && (match_offset = (*execute) (beg, lim - beg, &match_size, 1)) - != (size_t) -1) - { -@@ -601,6 +580,7 @@ - fputs ("\33[00m", stdout); - beg = b + match_size; - } -+ fputs ("\33[K", stdout); - } - fwrite (beg, 1, lim - beg, stdout); - if (ferror (stdout)) -@@ -1697,6 +1677,37 @@ - if (!install_matcher (matcher) && !install_matcher ("default")) - abort (); - -+#ifdef MBS_SUPPORT -+ if (MB_CUR_MAX != 1 && match_icase) -+ { -+ wchar_t wc; -+ mbstate_t cur_state, prev_state; -+ int i, len = strlen(keys); -+ -+ memset(&cur_state, 0, sizeof(mbstate_t)); -+ for (i = 0; i <= len ;) -+ { -+ size_t mbclen; -+ mbclen = mbrtowc(&wc, keys + i, len - i, &cur_state); -+ if (mbclen == (size_t) -1 || mbclen == (size_t) -2 || mbclen == 0) -+ { -+ /* An invalid sequence, or a truncated multibyte character. -+ We treat it as a singlebyte character. */ -+ mbclen = 1; -+ } -+ else -+ { -+ if (iswupper((wint_t)wc)) -+ { -+ wc = towlower((wint_t)wc); -+ wcrtomb(keys + i, wc, &cur_state); -+ } -+ } -+ i += mbclen; -+ } -+ } -+#endif /* MBS_SUPPORT */ -+ - (*compile)(keys, keycc); - - if ((argc - optind > 1 && !no_filenames) || with_filenames) -diff -urN grep-2.5.1a.orig/src/search.c grep-2.5.1a/src/search.c ---- grep-2.5.1a.orig/src/search.c 2001-04-19 09:42:14.000000000 +0600 -+++ grep-2.5.1a/src/search.c 2005-10-23 09:51:25.000000000 +0600 -@@ -18,9 +18,13 @@ - - /* Written August 1992 by Mike Haertel. */ - -+#ifndef _GNU_SOURCE -+# define _GNU_SOURCE 1 -+#endif - #ifdef HAVE_CONFIG_H - # include <config.h> - #endif -+#include <assert.h> - #include <sys/types.h> - #if defined HAVE_WCTYPE_H && defined HAVE_WCHAR_H && defined HAVE_MBRTOWC - /* We can handle multibyte string. */ -@@ -31,7 +35,7 @@ - - #include "system.h" - #include "grep.h" --#include "regex.h" -+#include <regex.h> - #include "dfa.h" - #include "kwset.h" - #include "error.h" -@@ -39,6 +43,9 @@ - #ifdef HAVE_LIBPCRE - # include <pcre.h> - #endif -+#ifdef HAVE_LANGINFO_CODESET -+# include <langinfo.h> -+#endif - - #define NCHAR (UCHAR_MAX + 1) - -@@ -70,9 +77,10 @@ - call the regexp matcher at all. */ - static int kwset_exact_matches; - --#if defined(MBS_SUPPORT) --static char* check_multibyte_string PARAMS ((char const *buf, size_t size)); --#endif -+/* UTF-8 encoding allows some optimizations that we can't otherwise -+ assume in a multibyte encoding. */ -+static int using_utf8; -+ - static void kwsinit PARAMS ((void)); - static void kwsmusts PARAMS ((void)); - static void Gcompile PARAMS ((char const *, size_t)); -@@ -84,6 +92,15 @@ - static size_t Pexecute PARAMS ((char const *, size_t, size_t *, int)); - - void -+check_utf8 (void) -+{ -+#ifdef HAVE_LANGINFO_CODESET -+ if (strcmp (nl_langinfo (CODESET), "UTF-8") == 0) -+ using_utf8 = 1; -+#endif -+} -+ -+void - dfaerror (char const *mesg) - { - error (2, 0, mesg); -@@ -141,38 +158,6 @@ - } - } - --#ifdef MBS_SUPPORT --/* This function allocate the array which correspond to "buf". -- Then this check multibyte string and mark on the positions which -- are not singlebyte character nor the first byte of a multibyte -- character. Caller must free the array. */ --static char* --check_multibyte_string(char const *buf, size_t size) --{ -- char *mb_properties = malloc(size); -- mbstate_t cur_state; -- int i; -- memset(&cur_state, 0, sizeof(mbstate_t)); -- memset(mb_properties, 0, sizeof(char)*size); -- for (i = 0; i < size ;) -- { -- size_t mbclen; -- mbclen = mbrlen(buf + i, size - i, &cur_state); -- -- if (mbclen == (size_t) -1 || mbclen == (size_t) -2 || mbclen == 0) -- { -- /* An invalid sequence, or a truncated multibyte character. -- We treat it as a singlebyte character. */ -- mbclen = 1; -- } -- mb_properties[i] = mbclen; -- i += mbclen; -- } -- -- return mb_properties; --} --#endif -- - static void - Gcompile (char const *pattern, size_t size) - { -@@ -181,7 +166,8 @@ - size_t total = size; - char const *motif = pattern; - -- re_set_syntax (RE_SYNTAX_GREP | RE_HAT_LISTS_NOT_NEWLINE); -+ check_utf8 (); -+ re_set_syntax (RE_SYNTAX_GREP | RE_HAT_LISTS_NOT_NEWLINE | (match_icase ? RE_ICASE : 0)); - dfasyntax (RE_SYNTAX_GREP | RE_HAT_LISTS_NOT_NEWLINE, match_icase, eolbyte); - - /* For GNU regex compiler we have to pass the patterns separately to detect -@@ -233,7 +219,7 @@ - static char const line_end[] = "\)$"; - static char const word_beg[] = "\(^\|[^[:alnum:]_]\)\("; - static char const word_end[] = "\)\([^[:alnum:]_]\|$\)"; -- char *n = malloc (sizeof word_beg - 1 + size + sizeof word_end); -+ char *n = xmalloc (sizeof word_beg - 1 + size + sizeof word_end); - size_t i; - strcpy (n, match_lines ? line_beg : word_beg); - i = strlen (n); -@@ -257,14 +243,15 @@ - size_t total = size; - char const *motif = pattern; - -+ check_utf8 (); - if (strcmp (matcher, "awk") == 0) - { -- re_set_syntax (RE_SYNTAX_AWK); -+ re_set_syntax (RE_SYNTAX_AWK | (match_icase ? RE_ICASE : 0)); - dfasyntax (RE_SYNTAX_AWK, match_icase, eolbyte); - } - else - { -- re_set_syntax (RE_SYNTAX_POSIX_EGREP); -+ re_set_syntax (RE_SYNTAX_POSIX_EGREP | (match_icase ? RE_ICASE : 0)); - dfasyntax (RE_SYNTAX_POSIX_EGREP, match_icase, eolbyte); - } - -@@ -316,7 +303,7 @@ - static char const line_end[] = ")$"; - static char const word_beg[] = "(^|[^[:alnum:]_])("; - static char const word_end[] = ")([^[:alnum:]_]|$)"; -- char *n = malloc (sizeof word_beg - 1 + size + sizeof word_end); -+ char *n = xmalloc (sizeof word_beg - 1 + size + sizeof word_end); - size_t i; - strcpy (n, match_lines ? line_beg : word_beg); - i = strlen(n); -@@ -339,15 +326,35 @@ - char eol = eolbyte; - int backref, start, len; - struct kwsmatch kwsm; -- size_t i; -+ size_t i, ret_val; -+ static int use_dfa; -+ static int use_dfa_checked = 0; - #ifdef MBS_SUPPORT -- char *mb_properties = NULL; -+ const char *last_char = NULL; -+ int mb_cur_max = MB_CUR_MAX; -+ mbstate_t mbs; -+ memset (&mbs, '\0', sizeof (mbstate_t)); - #endif /* MBS_SUPPORT */ - -+ if (!use_dfa_checked) -+ { -+ char *grep_use_dfa = getenv ("GREP_USE_DFA"); -+ if (!grep_use_dfa) -+ { - #ifdef MBS_SUPPORT -- if (MB_CUR_MAX > 1 && kwset) -- mb_properties = check_multibyte_string(buf, size); -+ /* Turn off DFA when processing multibyte input. */ -+ use_dfa = (MB_CUR_MAX == 1); -+#else -+ use_dfa = 1; - #endif /* MBS_SUPPORT */ -+ } -+ else -+ { -+ use_dfa = atoi (grep_use_dfa); -+ } -+ -+ use_dfa_checked = 1; -+ } - - buflim = buf + size; - -@@ -358,47 +365,124 @@ - if (kwset) - { - /* Find a possible match using the KWset matcher. */ -- size_t offset = kwsexec (kwset, beg, buflim - beg, &kwsm); -+#ifdef MBS_SUPPORT -+ size_t bytes_left = 0; -+#endif /* MBS_SUPPORT */ -+ size_t offset; -+#ifdef MBS_SUPPORT -+ /* kwsexec doesn't work with match_icase and multibyte input. */ -+ if (match_icase && mb_cur_max > 1) -+ /* Avoid kwset */ -+ offset = 0; -+ else -+#endif /* MBS_SUPPORT */ -+ offset = kwsexec (kwset, beg, buflim - beg, &kwsm); - if (offset == (size_t) -1) -- { -+ goto failure; - #ifdef MBS_SUPPORT -- if (MB_CUR_MAX > 1) -- free(mb_properties); --#endif -- return (size_t)-1; -+ if (mb_cur_max > 1 && !using_utf8) -+ { -+ bytes_left = offset; -+ while (bytes_left) -+ { -+ size_t mlen = mbrlen (beg, bytes_left, &mbs); -+ -+ last_char = beg; -+ if (mlen == (size_t) -1 || mlen == 0) -+ { -+ /* Incomplete character: treat as single-byte. */ -+ memset (&mbs, '\0', sizeof (mbstate_t)); -+ beg++; -+ bytes_left--; -+ continue; -+ } -+ -+ if (mlen == (size_t) -2) -+ /* Offset points inside multibyte character: -+ * no good. */ -+ break; -+ -+ beg += mlen; -+ bytes_left -= mlen; -+ } - } -+ else -+#endif /* MBS_SUPPORT */ - beg += offset; - /* Narrow down to the line containing the candidate, and - run it through DFA. */ - end = memchr(beg, eol, buflim - beg); - end++; - #ifdef MBS_SUPPORT -- if (MB_CUR_MAX > 1 && mb_properties[beg - buf] == 0) -+ if (mb_cur_max > 1 && bytes_left) - continue; --#endif -+#endif /* MBS_SUPPORT */ - while (beg > buf && beg[-1] != eol) - --beg; -- if (kwsm.index < kwset_exact_matches) -- goto success; -- if (dfaexec (&dfa, beg, end - beg, &backref) == (size_t) -1) -+ if ( -+#ifdef MBS_SUPPORT -+ !(match_icase && mb_cur_max > 1) && -+#endif /* MBS_SUPPORT */ -+ (kwsm.index < kwset_exact_matches)) -+ goto success_in_beg_and_end; -+ if (use_dfa && -+ dfaexec (&dfa, beg, end - beg, &backref) == (size_t) -1) - continue; - } - else - { - /* No good fixed strings; start with DFA. */ -- size_t offset = dfaexec (&dfa, beg, buflim - beg, &backref); -+#ifdef MBS_SUPPORT -+ size_t bytes_left = 0; -+#endif /* MBS_SUPPORT */ -+ size_t offset = 0; -+ if (use_dfa) -+ offset = dfaexec (&dfa, beg, buflim - beg, &backref); - if (offset == (size_t) -1) - break; - /* Narrow down to the line we've found. */ -+#ifdef MBS_SUPPORT -+ if (mb_cur_max > 1 && !using_utf8) -+ { -+ bytes_left = offset; -+ while (bytes_left) -+ { -+ size_t mlen = mbrlen (beg, bytes_left, &mbs); -+ -+ last_char = beg; -+ if (mlen == (size_t) -1 || mlen == 0) -+ { -+ /* Incomplete character: treat as single-byte. */ -+ memset (&mbs, '\0', sizeof (mbstate_t)); -+ beg++; -+ bytes_left--; -+ continue; -+ } -+ -+ if (mlen == (size_t) -2) -+ /* Offset points inside multibyte character: -+ * no good. */ -+ break; -+ -+ beg += mlen; -+ bytes_left -= mlen; -+ } -+ } -+ else -+#endif /* MBS_SUPPORT */ - beg += offset; - end = memchr (beg, eol, buflim - beg); - end++; -+#ifdef MBS_SUPPORT -+ if (mb_cur_max > 1 && bytes_left) -+ continue; -+#endif /* MBS_SUPPORT */ - while (beg > buf && beg[-1] != eol) - --beg; - } - /* Successful, no backreferences encountered! */ -- if (!backref) -- goto success; -+ if (use_dfa && !backref) -+ goto success_in_beg_and_end; - } - else - end = beg + size; -@@ -413,14 +497,11 @@ - end - beg - 1, &(patterns[i].regs)))) - { - len = patterns[i].regs.end[0] - start; -- if (exact) -- { -- *match_size = len; -- return start; -- } -+ if (exact && !match_words) -+ goto success_in_start_and_len; - if ((!match_lines && !match_words) - || (match_lines && len == end - beg - 1)) -- goto success; -+ goto success_in_beg_and_end; - /* If -w, check if the match aligns with word boundaries. - We do this iteratively because: - (a) the line may contain more than one occurence of the -@@ -431,10 +512,84 @@ - if (match_words) - while (start >= 0) - { -- if ((start == 0 || !WCHAR ((unsigned char) beg[start - 1])) -- && (len == end - beg - 1 -- || !WCHAR ((unsigned char) beg[start + len]))) -- goto success; -+ int lword_match = 0; -+ if (start == 0) -+ lword_match = 1; -+ else -+ { -+ assert (start > 0); -+#ifdef MBS_SUPPORT -+ if (mb_cur_max > 1) -+ { -+ const char *s; -+ int mr; -+ wchar_t pwc; -+ -+ if (using_utf8) -+ { -+ s = beg + start - 1; -+ while (s > buf -+ && (unsigned char) *s >= 0x80 -+ && (unsigned char) *s <= 0xbf) -+ --s; -+ } -+ else -+ s = last_char; -+ mr = mbtowc (&pwc, s, beg + start - s); -+ if (mr <= 0) -+ { -+ memset (&mbs, '\0', sizeof (mbstate_t)); -+ lword_match = 1; -+ } -+ else if (!(iswalnum (pwc) || pwc == L'_') -+ && mr == (int) (beg + start - s)) -+ lword_match = 1; -+ } -+ else -+#endif /* MBS_SUPPORT */ -+ if (!WCHAR ((unsigned char) beg[start - 1])) -+ lword_match = 1; -+ } -+ -+ if (lword_match) -+ { -+ int rword_match = 0; -+ if (start + len == end - beg - 1) -+ rword_match = 1; -+ else -+ { -+#ifdef MBS_SUPPORT -+ if (mb_cur_max > 1) -+ { -+ wchar_t nwc; -+ int mr; -+ -+ mr = mbtowc (&nwc, beg + start + len, -+ end - beg - start - len - 1); -+ if (mr <= 0) -+ { -+ memset (&mbs, '\0', sizeof (mbstate_t)); -+ rword_match = 1; -+ } -+ else if (!iswalnum (nwc) && nwc != L'_') -+ rword_match = 1; -+ } -+ else -+#endif /* MBS_SUPPORT */ -+ if (!WCHAR ((unsigned char) beg[start + len])) -+ rword_match = 1; -+ } -+ -+ if (rword_match) -+ { -+ if (!exact) -+ /* Returns the whole line. */ -+ goto success_in_beg_and_end; -+ else -+ /* Returns just this word match. */ -+ goto success_in_start_and_len; -+ } -+ } - if (len > 0) - { - /* Try a shorter length anchored at the same place. */ -@@ -461,26 +616,154 @@ - } - } /* for Regex patterns. */ - } /* for (beg = end ..) */ --#ifdef MBS_SUPPORT -- if (MB_CUR_MAX > 1 && mb_properties) -- free (mb_properties); --#endif /* MBS_SUPPORT */ -+ -+ failure: - return (size_t) -1; - -- success: --#ifdef MBS_SUPPORT -- if (MB_CUR_MAX > 1 && mb_properties) -- free (mb_properties); --#endif /* MBS_SUPPORT */ -- *match_size = end - beg; -- return beg - buf; -+ success_in_beg_and_end: -+ len = end - beg; -+ start = beg - buf; -+ /* FALLTHROUGH */ -+ -+ success_in_start_and_len: -+ *match_size = len; -+ return start; - } - -+#ifdef MBS_SUPPORT -+static int f_i_multibyte; /* whether we're using the new -Fi MB method */ -+static struct -+{ -+ wchar_t **patterns; -+ size_t count, maxlen; -+ unsigned char *match; -+} Fimb; -+#endif -+ - static void - Fcompile (char const *pattern, size_t size) - { -+ int mb_cur_max = MB_CUR_MAX; - char const *beg, *lim, *err; - -+ check_utf8 (); -+#ifdef MBS_SUPPORT -+ /* Support -F -i for UTF-8 input. */ -+ if (match_icase && mb_cur_max > 1) -+ { -+ mbstate_t mbs; -+ wchar_t *wcpattern = xmalloc ((size + 1) * sizeof (wchar_t)); -+ const char *patternend = pattern; -+ size_t wcsize; -+ kwset_t fimb_kwset = NULL; -+ char *starts = NULL; -+ wchar_t *wcbeg, *wclim; -+ size_t allocated = 0; -+ -+ memset (&mbs, '\0', sizeof (mbs)); -+# ifdef __GNU_LIBRARY__ -+ wcsize = mbsnrtowcs (wcpattern, &patternend, size, size, &mbs); -+ if (patternend != pattern + size) -+ wcsize = (size_t) -1; -+# else -+ { -+ char *patterncopy = xmalloc (size + 1); -+ -+ memcpy (patterncopy, pattern, size); -+ patterncopy[size] = '\0'; -+ patternend = patterncopy; -+ wcsize = mbsrtowcs (wcpattern, &patternend, size, &mbs); -+ if (patternend != patterncopy + size) -+ wcsize = (size_t) -1; -+ free (patterncopy); -+ } -+# endif -+ if (wcsize + 2 <= 2) -+ { -+fimb_fail: -+ free (wcpattern); -+ free (starts); -+ if (fimb_kwset) -+ kwsfree (fimb_kwset); -+ free (Fimb.patterns); -+ Fimb.patterns = NULL; -+ } -+ else -+ { -+ if (!(fimb_kwset = kwsalloc (NULL))) -+ error (2, 0, _("memory exhausted")); -+ -+ starts = xmalloc (mb_cur_max * 3); -+ wcbeg = wcpattern; -+ do -+ { -+ int i; -+ size_t wclen; -+ -+ if (Fimb.count >= allocated) -+ { -+ if (allocated == 0) -+ allocated = 128; -+ else -+ allocated *= 2; -+ Fimb.patterns = xrealloc (Fimb.patterns, -+ sizeof (wchar_t *) * allocated); -+ } -+ Fimb.patterns[Fimb.count++] = wcbeg; -+ for (wclim = wcbeg; -+ wclim < wcpattern + wcsize && *wclim != L'\n'; ++wclim) -+ *wclim = towlower (*wclim); -+ *wclim = L'\0'; -+ wclen = wclim - wcbeg; -+ if (wclen > Fimb.maxlen) -+ Fimb.maxlen = wclen; -+ if (wclen > 3) -+ wclen = 3; -+ if (wclen == 0) -+ { -+ if ((err = kwsincr (fimb_kwset, "", 0)) != 0) -+ error (2, 0, err); -+ } -+ else -+ for (i = 0; i < (1 << wclen); i++) -+ { -+ char *p = starts; -+ int j, k; -+ -+ for (j = 0; j < wclen; ++j) -+ { -+ wchar_t wc = wcbeg[j]; -+ if (i & (1 << j)) -+ { -+ wc = towupper (wc); -+ if (wc == wcbeg[j]) -+ continue; -+ } -+ k = wctomb (p, wc); -+ if (k <= 0) -+ goto fimb_fail; -+ p += k; -+ } -+ if ((err = kwsincr (fimb_kwset, starts, p - starts)) != 0) -+ error (2, 0, err); -+ } -+ if (wclim < wcpattern + wcsize) -+ ++wclim; -+ wcbeg = wclim; -+ } -+ while (wcbeg < wcpattern + wcsize); -+ f_i_multibyte = 1; -+ kwset = fimb_kwset; -+ free (starts); -+ Fimb.match = xmalloc (Fimb.count); -+ if ((err = kwsprep (kwset)) != 0) -+ error (2, 0, err); -+ return; -+ } -+ } -+#endif /* MBS_SUPPORT */ -+ -+ - kwsinit (); - beg = pattern; - do -@@ -499,6 +782,76 @@ - error (2, 0, err); - } - -+#ifdef MBS_SUPPORT -+static int -+Fimbexec (const char *buf, size_t size, size_t *plen, int exact) -+{ -+ size_t len, letter, i; -+ int ret = -1; -+ mbstate_t mbs; -+ wchar_t wc; -+ int patterns_left; -+ -+ assert (match_icase && f_i_multibyte == 1); -+ assert (MB_CUR_MAX > 1); -+ -+ memset (&mbs, '\0', sizeof (mbs)); -+ memset (Fimb.match, '\1', Fimb.count); -+ letter = len = 0; -+ patterns_left = 1; -+ while (patterns_left && len <= size) -+ { -+ size_t c; -+ -+ patterns_left = 0; -+ if (len < size) -+ { -+ c = mbrtowc (&wc, buf + len, size - len, &mbs); -+ if (c + 2 <= 2) -+ return ret; -+ -+ wc = towlower (wc); -+ } -+ else -+ { -+ c = 1; -+ wc = L'\0'; -+ } -+ -+ for (i = 0; i < Fimb.count; i++) -+ { -+ if (Fimb.match[i]) -+ { -+ if (Fimb.patterns[i][letter] == L'\0') -+ { -+ /* Found a match. */ -+ *plen = len; -+ if (!exact && !match_words) -+ return 0; -+ else -+ { -+ /* For -w or exact look for longest match. */ -+ ret = 0; -+ Fimb.match[i] = '\0'; -+ continue; -+ } -+ } -+ -+ if (Fimb.patterns[i][letter] == wc) -+ patterns_left = 1; -+ else -+ Fimb.match[i] = '\0'; -+ } -+ } -+ -+ len += c; -+ letter++; -+ } -+ -+ return ret; -+} -+#endif /* MBS_SUPPORT */ -+ - static size_t - Fexecute (char const *buf, size_t size, size_t *match_size, int exact) - { -@@ -506,88 +859,268 @@ - register size_t len; - char eol = eolbyte; - struct kwsmatch kwsmatch; -+ size_t ret_val; - #ifdef MBS_SUPPORT -- char *mb_properties; -- if (MB_CUR_MAX > 1) -- mb_properties = check_multibyte_string (buf, size); -+ int mb_cur_max = MB_CUR_MAX; -+ mbstate_t mbs; -+ memset (&mbs, '\0', sizeof (mbstate_t)); -+ const char *last_char = NULL; - #endif /* MBS_SUPPORT */ - - for (beg = buf; beg <= buf + size; ++beg) - { -- size_t offset = kwsexec (kwset, beg, buf + size - beg, &kwsmatch); -+ size_t offset; -+ offset = kwsexec (kwset, beg, buf + size - beg, &kwsmatch); -+ - if (offset == (size_t) -1) -- { -+ goto failure; - #ifdef MBS_SUPPORT -- if (MB_CUR_MAX > 1) -- free(mb_properties); --#endif /* MBS_SUPPORT */ -- return offset; -+ if (mb_cur_max > 1 && !using_utf8) -+ { -+ size_t bytes_left = offset; -+ while (bytes_left) -+ { -+ size_t mlen = mbrlen (beg, bytes_left, &mbs); -+ -+ last_char = beg; -+ if (mlen == (size_t) -1 || mlen == 0) -+ { -+ /* Incomplete character: treat as single-byte. */ -+ memset (&mbs, '\0', sizeof (mbstate_t)); -+ beg++; -+ bytes_left--; -+ continue; -+ } -+ -+ if (mlen == (size_t) -2) -+ /* Offset points inside multibyte character: no good. */ -+ break; -+ -+ beg += mlen; -+ bytes_left -= mlen; -+ } -+ -+ if (bytes_left) -+ continue; - } --#ifdef MBS_SUPPORT -- if (MB_CUR_MAX > 1 && mb_properties[offset+beg-buf] == 0) -- continue; /* It is a part of multibyte character. */ -+ else - #endif /* MBS_SUPPORT */ - beg += offset; -- len = kwsmatch.size[0]; -- if (exact) -- { -- *match_size = len; - #ifdef MBS_SUPPORT -- if (MB_CUR_MAX > 1) -- free (mb_properties); -+ /* For f_i_multibyte, the string at beg now matches first 3 chars of -+ one of the search strings (less if there are shorter search strings). -+ See if this is a real match. */ -+ if (f_i_multibyte -+ && Fimbexec (beg, buf + size - beg, &kwsmatch.size[0], exact)) -+ goto next_char; - #endif /* MBS_SUPPORT */ -- return beg - buf; -- } -+ len = kwsmatch.size[0]; -+ if (exact && !match_words) -+ goto success_in_beg_and_len; - if (match_lines) - { - if (beg > buf && beg[-1] != eol) -- continue; -+ goto next_char; - if (beg + len < buf + size && beg[len] != eol) -- continue; -+ goto next_char; - goto success; - } - else if (match_words) -- for (try = beg; len; ) -- { -- if (try > buf && WCHAR((unsigned char) try[-1])) -- break; -- if (try + len < buf + size && WCHAR((unsigned char) try[len])) -- { -- offset = kwsexec (kwset, beg, --len, &kwsmatch); -- if (offset == (size_t) -1) -- { -+ { -+ while (len) -+ { -+ int word_match = 0; -+ if (beg > buf) -+ { - #ifdef MBS_SUPPORT -- if (MB_CUR_MAX > 1) -- free (mb_properties); -+ if (mb_cur_max > 1) -+ { -+ const char *s; -+ int mr; -+ wchar_t pwc; -+ -+ if (using_utf8) -+ { -+ s = beg - 1; -+ while (s > buf -+ && (unsigned char) *s >= 0x80 -+ && (unsigned char) *s <= 0xbf) -+ --s; -+ } -+ else -+ s = last_char; -+ mr = mbtowc (&pwc, s, beg - s); -+ if (mr <= 0) -+ memset (&mbs, '\0', sizeof (mbstate_t)); -+ else if ((iswalnum (pwc) || pwc == L'_') -+ && mr == (int) (beg - s)) -+ goto next_char; -+ } -+ else - #endif /* MBS_SUPPORT */ -- return offset; -- } -- try = beg + offset; -- len = kwsmatch.size[0]; -- } -- else -- goto success; -- } -+ if (WCHAR ((unsigned char) beg[-1])) -+ goto next_char; -+ } -+#ifdef MBS_SUPPORT -+ if (mb_cur_max > 1) -+ { -+ wchar_t nwc; -+ int mr; -+ -+ mr = mbtowc (&nwc, beg + len, buf + size - beg - len); -+ if (mr <= 0) -+ { -+ memset (&mbs, '\0', sizeof (mbstate_t)); -+ word_match = 1; -+ } -+ else if (!iswalnum (nwc) && nwc != L'_') -+ word_match = 1; -+ } -+ else -+#endif /* MBS_SUPPORT */ -+ if (beg + len >= buf + size || !WCHAR ((unsigned char) beg[len])) -+ word_match = 1; -+ if (word_match) -+ { -+ if (!exact) -+ /* Returns the whole line now we know there's a word match. */ -+ goto success; -+ else -+ /* Returns just this word match. */ -+ goto success_in_beg_and_len; -+ } -+ if (len > 0) -+ { -+ /* Try a shorter length anchored at the same place. */ -+ --len; -+ offset = kwsexec (kwset, beg, len, &kwsmatch); -+ -+ if (offset == -1) -+ goto next_char; /* Try a different anchor. */ -+#ifdef MBS_SUPPORT -+ if (mb_cur_max > 1 && !using_utf8) -+ { -+ size_t bytes_left = offset; -+ while (bytes_left) -+ { -+ size_t mlen = mbrlen (beg, bytes_left, &mbs); -+ -+ last_char = beg; -+ if (mlen == (size_t) -1 || mlen == 0) -+ { -+ /* Incomplete character: treat as single-byte. */ -+ memset (&mbs, '\0', sizeof (mbstate_t)); -+ beg++; -+ bytes_left--; -+ continue; -+ } -+ -+ if (mlen == (size_t) -2) -+ { -+ /* Offset points inside multibyte character: -+ * no good. */ -+ break; -+ } -+ -+ beg += mlen; -+ bytes_left -= mlen; -+ } -+ -+ if (bytes_left) -+ { -+ memset (&mbs, '\0', sizeof (mbstate_t)); -+ goto next_char; /* Try a different anchor. */ -+ } -+ } -+ else -+#endif /* MBS_SUPPORT */ -+ beg += offset; -+#ifdef MBS_SUPPORT -+ /* The string at beg now matches first 3 chars of one of -+ the search strings (less if there are shorter search -+ strings). See if this is a real match. */ -+ if (f_i_multibyte -+ && Fimbexec (beg, len - offset, &kwsmatch.size[0], -+ exact)) -+ goto next_char; -+#endif /* MBS_SUPPORT */ -+ len = kwsmatch.size[0]; -+ } -+ } -+ } - else - goto success; -- } -- -+next_char:; - #ifdef MBS_SUPPORT -- if (MB_CUR_MAX > 1) -- free (mb_properties); -+ /* Advance to next character. For MB_CUR_MAX == 1 case this is handled -+ by ++beg above. */ -+ if (mb_cur_max > 1) -+ { -+ if (using_utf8) -+ { -+ unsigned char c = *beg; -+ if (c >= 0xc2) -+ { -+ if (c < 0xe0) -+ ++beg; -+ else if (c < 0xf0) -+ beg += 2; -+ else if (c < 0xf8) -+ beg += 3; -+ else if (c < 0xfc) -+ beg += 4; -+ else if (c < 0xfe) -+ beg += 5; -+ } -+ } -+ else -+ { -+ size_t l = mbrlen (beg, buf + size - beg, &mbs); -+ -+ last_char = beg; -+ if (l + 2 >= 2) -+ beg += l - 1; -+ else -+ memset (&mbs, '\0', sizeof (mbstate_t)); -+ } -+ } - #endif /* MBS_SUPPORT */ -+ } -+ -+ failure: - return -1; - - success: -+#ifdef MBS_SUPPORT -+ if (mb_cur_max > 1 && !using_utf8) -+ { -+ end = beg + len; -+ while (end < buf + size) -+ { -+ size_t mlen = mbrlen (end, buf + size - end, &mbs); -+ if (mlen == (size_t) -1 || mlen == (size_t) -2 || mlen == 0) -+ { -+ memset (&mbs, '\0', sizeof (mbstate_t)); -+ mlen = 1; -+ } -+ if (mlen == 1 && *end == eol) -+ break; -+ -+ end += mlen; -+ } -+ } -+ else -+#endif /* MBS_SUPPORT */ - end = memchr (beg + len, eol, (buf + size) - (beg + len)); -+ - end++; - while (buf < beg && beg[-1] != eol) - --beg; -- *match_size = end - beg; --#ifdef MBS_SUPPORT -- if (MB_CUR_MAX > 1) -- free (mb_properties); --#endif /* MBS_SUPPORT */ -+ len = end - beg; -+ /* FALLTHROUGH */ -+ -+ success_in_beg_and_len: -+ *match_size = len; - return beg - buf; - } - -diff -urN grep-2.5.1a.orig/src/search.c.orig grep-2.5.1a/src/search.c.orig ---- grep-2.5.1a.orig/src/search.c.orig 1970-01-01 05:00:00.000000000 +0500 -+++ grep-2.5.1a/src/search.c.orig 2005-10-23 09:48:39.000000000 +0600 -@@ -0,0 +1,714 @@ -+/* search.c - searching subroutines using dfa, kwset and regex for grep. -+ Copyright 1992, 1998, 2000 Free Software Foundation, Inc. -+ -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 2, or (at your option) -+ any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -+ 02111-1307, USA. */ -+ -+/* Written August 1992 by Mike Haertel. */ -+ -+#ifdef HAVE_CONFIG_H -+# include <config.h> -+#endif -+#include <sys/types.h> -+#if defined HAVE_WCTYPE_H && defined HAVE_WCHAR_H && defined HAVE_MBRTOWC -+/* We can handle multibyte string. */ -+# define MBS_SUPPORT -+# include <wchar.h> -+# include <wctype.h> -+#endif -+ -+#include "system.h" -+#include "grep.h" -+#include "regex.h" -+#include "dfa.h" -+#include "kwset.h" -+#include "error.h" -+#include "xalloc.h" -+#ifdef HAVE_LIBPCRE -+# include <pcre.h> -+#endif -+ -+#define NCHAR (UCHAR_MAX + 1) -+ -+/* For -w, we also consider _ to be word constituent. */ -+#define WCHAR(C) (ISALNUM(C) || (C) == '_') -+ -+/* DFA compiled regexp. */ -+static struct dfa dfa; -+ -+/* The Regex compiled patterns. */ -+static struct patterns -+{ -+ /* Regex compiled regexp. */ -+ struct re_pattern_buffer regexbuf; -+ struct re_registers regs; /* This is here on account of a BRAIN-DEAD -+ Q@#%!# library interface in regex.c. */ -+} patterns0; -+ -+struct patterns *patterns; -+size_t pcount; -+ -+/* KWset compiled pattern. For Ecompile and Gcompile, we compile -+ a list of strings, at least one of which is known to occur in -+ any string matching the regexp. */ -+static kwset_t kwset; -+ -+/* Number of compiled fixed strings known to exactly match the regexp. -+ If kwsexec returns < kwset_exact_matches, then we don't need to -+ call the regexp matcher at all. */ -+static int kwset_exact_matches; -+ -+#if defined(MBS_SUPPORT) -+static char* check_multibyte_string PARAMS ((char const *buf, size_t size)); -+#endif -+static void kwsinit PARAMS ((void)); -+static void kwsmusts PARAMS ((void)); -+static void Gcompile PARAMS ((char const *, size_t)); -+static void Ecompile PARAMS ((char const *, size_t)); -+static size_t EGexecute PARAMS ((char const *, size_t, size_t *, int )); -+static void Fcompile PARAMS ((char const *, size_t)); -+static size_t Fexecute PARAMS ((char const *, size_t, size_t *, int)); -+static void Pcompile PARAMS ((char const *, size_t )); -+static size_t Pexecute PARAMS ((char const *, size_t, size_t *, int)); -+ -+void -+dfaerror (char const *mesg) -+{ -+ error (2, 0, mesg); -+} -+ -+static void -+kwsinit (void) -+{ -+ static char trans[NCHAR]; -+ int i; -+ -+ if (match_icase) -+ for (i = 0; i < NCHAR; ++i) -+ trans[i] = TOLOWER (i); -+ -+ if (!(kwset = kwsalloc (match_icase ? trans : (char *) 0))) -+ error (2, 0, _("memory exhausted")); -+} -+ -+/* If the DFA turns out to have some set of fixed strings one of -+ which must occur in the match, then we build a kwset matcher -+ to find those strings, and thus quickly filter out impossible -+ matches. */ -+static void -+kwsmusts (void) -+{ -+ struct dfamust const *dm; -+ char const *err; -+ -+ if (dfa.musts) -+ { -+ kwsinit (); -+ /* First, we compile in the substrings known to be exact -+ matches. The kwset matcher will return the index -+ of the matching string that it chooses. */ -+ for (dm = dfa.musts; dm; dm = dm->next) -+ { -+ if (!dm->exact) -+ continue; -+ ++kwset_exact_matches; -+ if ((err = kwsincr (kwset, dm->must, strlen (dm->must))) != 0) -+ error (2, 0, err); -+ } -+ /* Now, we compile the substrings that will require -+ the use of the regexp matcher. */ -+ for (dm = dfa.musts; dm; dm = dm->next) -+ { -+ if (dm->exact) -+ continue; -+ if ((err = kwsincr (kwset, dm->must, strlen (dm->must))) != 0) -+ error (2, 0, err); -+ } -+ if ((err = kwsprep (kwset)) != 0) -+ error (2, 0, err); -+ } -+} -+ -+#ifdef MBS_SUPPORT -+/* This function allocate the array which correspond to "buf". -+ Then this check multibyte string and mark on the positions which -+ are not singlebyte character nor the first byte of a multibyte -+ character. Caller must free the array. */ -+static char* -+check_multibyte_string(char const *buf, size_t size) -+{ -+ char *mb_properties = malloc(size); -+ mbstate_t cur_state; -+ int i; -+ memset(&cur_state, 0, sizeof(mbstate_t)); -+ memset(mb_properties, 0, sizeof(char)*size); -+ for (i = 0; i < size ;) -+ { -+ size_t mbclen; -+ mbclen = mbrlen(buf + i, size - i, &cur_state); -+ -+ if (mbclen == (size_t) -1 || mbclen == (size_t) -2 || mbclen == 0) -+ { -+ /* An invalid sequence, or a truncated multibyte character. -+ We treat it as a singlebyte character. */ -+ mbclen = 1; -+ } -+ mb_properties[i] = mbclen; -+ i += mbclen; -+ } -+ -+ return mb_properties; -+} -+#endif -+ -+static void -+Gcompile (char const *pattern, size_t size) -+{ -+ const char *err; -+ char const *sep; -+ size_t total = size; -+ char const *motif = pattern; -+ -+ re_set_syntax (RE_SYNTAX_GREP | RE_HAT_LISTS_NOT_NEWLINE); -+ dfasyntax (RE_SYNTAX_GREP | RE_HAT_LISTS_NOT_NEWLINE, match_icase, eolbyte); -+ -+ /* For GNU regex compiler we have to pass the patterns separately to detect -+ errors like "[\nallo\n]\n". The patterns here are "[", "allo" and "]" -+ GNU regex should have raise a syntax error. The same for backref, where -+ the backref should have been local to each pattern. */ -+ do -+ { -+ size_t len; -+ sep = memchr (motif, '\n', total); -+ if (sep) -+ { -+ len = sep - motif; -+ sep++; -+ total -= (len + 1); -+ } -+ else -+ { -+ len = total; -+ total = 0; -+ } -+ -+ patterns = realloc (patterns, (pcount + 1) * sizeof (*patterns)); -+ if (patterns == NULL) -+ error (2, errno, _("memory exhausted")); -+ -+ patterns[pcount] = patterns0; -+ -+ if ((err = re_compile_pattern (motif, len, -+ &(patterns[pcount].regexbuf))) != 0) -+ error (2, 0, err); -+ pcount++; -+ -+ motif = sep; -+ } while (sep && total != 0); -+ -+ /* In the match_words and match_lines cases, we use a different pattern -+ for the DFA matcher that will quickly throw out cases that won't work. -+ Then if DFA succeeds we do some hairy stuff using the regex matcher -+ to decide whether the match should really count. */ -+ if (match_words || match_lines) -+ { -+ /* In the whole-word case, we use the pattern: -+ (^|[^[:alnum:]_])(userpattern)([^[:alnum:]_]|$). -+ In the whole-line case, we use the pattern: -+ ^(userpattern)$. */ -+ -+ static char const line_beg[] = "^\("; -+ static char const line_end[] = "\)$"; -+ static char const word_beg[] = "\(^\|[^[:alnum:]_]\)\("; -+ static char const word_end[] = "\)\([^[:alnum:]_]\|$\)"; -+ char *n = malloc (sizeof word_beg - 1 + size + sizeof word_end); -+ size_t i; -+ strcpy (n, match_lines ? line_beg : word_beg); -+ i = strlen (n); -+ memcpy (n + i, pattern, size); -+ i += size; -+ strcpy (n + i, match_lines ? line_end : word_end); -+ i += strlen (n + i); -+ pattern = n; -+ size = i; -+ } -+ -+ dfacomp (pattern, size, &dfa, 1); -+ kwsmusts (); -+} -+ -+static void -+Ecompile (char const *pattern, size_t size) -+{ -+ const char *err; -+ const char *sep; -+ size_t total = size; -+ char const *motif = pattern; -+ -+ if (strcmp (matcher, "awk") == 0) -+ { -+ re_set_syntax (RE_SYNTAX_AWK); -+ dfasyntax (RE_SYNTAX_AWK, match_icase, eolbyte); -+ } -+ else -+ { -+ re_set_syntax (RE_SYNTAX_POSIX_EGREP); -+ dfasyntax (RE_SYNTAX_POSIX_EGREP, match_icase, eolbyte); -+ } -+ -+ /* For GNU regex compiler we have to pass the patterns separately to detect -+ errors like "[\nallo\n]\n". The patterns here are "[", "allo" and "]" -+ GNU regex should have raise a syntax error. The same for backref, where -+ the backref should have been local to each pattern. */ -+ do -+ { -+ size_t len; -+ sep = memchr (motif, '\n', total); -+ if (sep) -+ { -+ len = sep - motif; -+ sep++; -+ total -= (len + 1); -+ } -+ else -+ { -+ len = total; -+ total = 0; -+ } -+ -+ patterns = realloc (patterns, (pcount + 1) * sizeof (*patterns)); -+ if (patterns == NULL) -+ error (2, errno, _("memory exhausted")); -+ patterns[pcount] = patterns0; -+ -+ if ((err = re_compile_pattern (motif, len, -+ &(patterns[pcount].regexbuf))) != 0) -+ error (2, 0, err); -+ pcount++; -+ -+ motif = sep; -+ } while (sep && total != 0); -+ -+ /* In the match_words and match_lines cases, we use a different pattern -+ for the DFA matcher that will quickly throw out cases that won't work. -+ Then if DFA succeeds we do some hairy stuff using the regex matcher -+ to decide whether the match should really count. */ -+ if (match_words || match_lines) -+ { -+ /* In the whole-word case, we use the pattern: -+ (^|[^[:alnum:]_])(userpattern)([^[:alnum:]_]|$). -+ In the whole-line case, we use the pattern: -+ ^(userpattern)$. */ -+ -+ static char const line_beg[] = "^("; -+ static char const line_end[] = ")$"; -+ static char const word_beg[] = "(^|[^[:alnum:]_])("; -+ static char const word_end[] = ")([^[:alnum:]_]|$)"; -+ char *n = malloc (sizeof word_beg - 1 + size + sizeof word_end); -+ size_t i; -+ strcpy (n, match_lines ? line_beg : word_beg); -+ i = strlen(n); -+ memcpy (n + i, pattern, size); -+ i += size; -+ strcpy (n + i, match_lines ? line_end : word_end); -+ i += strlen (n + i); -+ pattern = n; -+ size = i; -+ } -+ -+ dfacomp (pattern, size, &dfa, 1); -+ kwsmusts (); -+} -+ -+static size_t -+EGexecute (char const *buf, size_t size, size_t *match_size, int exact) -+{ -+ register char const *buflim, *beg, *end; -+ char eol = eolbyte; -+ int backref, start, len; -+ struct kwsmatch kwsm; -+ size_t i; -+#ifdef MBS_SUPPORT -+ char *mb_properties = NULL; -+#endif /* MBS_SUPPORT */ -+ -+#ifdef MBS_SUPPORT -+ if (MB_CUR_MAX > 1 && kwset) -+ mb_properties = check_multibyte_string(buf, size); -+#endif /* MBS_SUPPORT */ -+ -+ buflim = buf + size; -+ -+ for (beg = end = buf; end < buflim; beg = end) -+ { -+ if (!exact) -+ { -+ if (kwset) -+ { -+ /* Find a possible match using the KWset matcher. */ -+ size_t offset = kwsexec (kwset, beg, buflim - beg, &kwsm); -+ if (offset == (size_t) -1) -+ goto failure; -+ beg += offset; -+ /* Narrow down to the line containing the candidate, and -+ run it through DFA. */ -+ end = memchr(beg, eol, buflim - beg); -+ end++; -+#ifdef MBS_SUPPORT -+ if (MB_CUR_MAX > 1 && mb_properties[beg - buf] == 0) -+ continue; -+#endif -+ while (beg > buf && beg[-1] != eol) -+ --beg; -+ if (kwsm.index < kwset_exact_matches) -+ goto success_in_beg_and_end; -+ if (dfaexec (&dfa, beg, end - beg, &backref) == (size_t) -1) -+ continue; -+ } -+ else -+ { -+ /* No good fixed strings; start with DFA. */ -+ size_t offset = dfaexec (&dfa, beg, buflim - beg, &backref); -+ if (offset == (size_t) -1) -+ break; -+ /* Narrow down to the line we've found. */ -+ beg += offset; -+ end = memchr (beg, eol, buflim - beg); -+ end++; -+ while (beg > buf && beg[-1] != eol) -+ --beg; -+ } -+ /* Successful, no backreferences encountered! */ -+ if (!backref) -+ goto success_in_beg_and_end; -+ } -+ else -+ end = beg + size; -+ -+ /* If we've made it to this point, this means DFA has seen -+ a probable match, and we need to run it through Regex. */ -+ for (i = 0; i < pcount; i++) -+ { -+ patterns[i].regexbuf.not_eol = 0; -+ if (0 <= (start = re_search (&(patterns[i].regexbuf), beg, -+ end - beg - 1, 0, -+ end - beg - 1, &(patterns[i].regs)))) -+ { -+ len = patterns[i].regs.end[0] - start; -+ if (exact && !match_words) -+ goto success_in_start_and_len; -+ if ((!match_lines && !match_words) -+ || (match_lines && len == end - beg - 1)) -+ goto success_in_beg_and_end; -+ /* If -w, check if the match aligns with word boundaries. -+ We do this iteratively because: -+ (a) the line may contain more than one occurence of the -+ pattern, and -+ (b) Several alternatives in the pattern might be valid at a -+ given point, and we may need to consider a shorter one to -+ find a word boundary. */ -+ if (match_words) -+ while (start >= 0) -+ { -+ if ((start == 0 || !WCHAR ((unsigned char) beg[start - 1])) -+ && (len == end - beg - 1 -+ || !WCHAR ((unsigned char) beg[start + len]))) -+ goto success_in_beg_and_end; -+ if (len > 0) -+ { -+ /* Try a shorter length anchored at the same place. */ -+ --len; -+ patterns[i].regexbuf.not_eol = 1; -+ len = re_match (&(patterns[i].regexbuf), beg, -+ start + len, start, -+ &(patterns[i].regs)); -+ } -+ if (len <= 0) -+ { -+ /* Try looking further on. */ -+ if (start == end - beg - 1) -+ break; -+ ++start; -+ patterns[i].regexbuf.not_eol = 0; -+ start = re_search (&(patterns[i].regexbuf), beg, -+ end - beg - 1, -+ start, end - beg - 1 - start, -+ &(patterns[i].regs)); -+ len = patterns[i].regs.end[0] - start; -+ } -+ } -+ } -+ } /* for Regex patterns. */ -+ } /* for (beg = end ..) */ -+ -+ failure: -+#ifdef MBS_SUPPORT -+ if (MB_CUR_MAX > 1 && mb_properties) -+ free (mb_properties); -+#endif /* MBS_SUPPORT */ -+ return (size_t) -1; -+ -+ success_in_beg_and_end: -+ len = end - beg; -+ start = beg - buf; -+ /* FALLTHROUGH */ -+ -+ success_in_start_and_len: -+#ifdef MBS_SUPPORT -+ if (MB_CUR_MAX > 1 && mb_properties) -+ free (mb_properties); -+#endif /* MBS_SUPPORT */ -+ *match_size = len; -+ return start; -+} -+ -+static void -+Fcompile (char const *pattern, size_t size) -+{ -+ char const *beg, *lim, *err; -+ -+ kwsinit (); -+ beg = pattern; -+ do -+ { -+ for (lim = beg; lim < pattern + size && *lim != '\n'; ++lim) -+ ; -+ if ((err = kwsincr (kwset, beg, lim - beg)) != 0) -+ error (2, 0, err); -+ if (lim < pattern + size) -+ ++lim; -+ beg = lim; -+ } -+ while (beg < pattern + size); -+ -+ if ((err = kwsprep (kwset)) != 0) -+ error (2, 0, err); -+} -+ -+static size_t -+Fexecute (char const *buf, size_t size, size_t *match_size, int exact) -+{ -+ register char const *beg, *try, *end; -+ register size_t len; -+ char eol = eolbyte; -+ struct kwsmatch kwsmatch; -+#ifdef MBS_SUPPORT -+ char *mb_properties; -+ if (MB_CUR_MAX > 1) -+ mb_properties = check_multibyte_string (buf, size); -+#endif /* MBS_SUPPORT */ -+ -+ for (beg = buf; beg <= buf + size; ++beg) -+ { -+ size_t offset = kwsexec (kwset, beg, buf + size - beg, &kwsmatch); -+ if (offset == (size_t) -1) -+ goto failure; -+#ifdef MBS_SUPPORT -+ if (MB_CUR_MAX > 1 && mb_properties[offset+beg-buf] == 0) -+ continue; /* It is a part of multibyte character. */ -+#endif /* MBS_SUPPORT */ -+ beg += offset; -+ len = kwsmatch.size[0]; -+ if (exact && !match_words) -+ goto success_in_beg_and_len; -+ if (match_lines) -+ { -+ if (beg > buf && beg[-1] != eol) -+ continue; -+ if (beg + len < buf + size && beg[len] != eol) -+ continue; -+ goto success; -+ } -+ else if (match_words) -+ for (try = beg; len; ) -+ { -+ if (try > buf && WCHAR((unsigned char) try[-1])) -+ break; -+ if (try + len < buf + size && WCHAR((unsigned char) try[len])) -+ { -+ offset = kwsexec (kwset, beg, --len, &kwsmatch); -+ if (offset == (size_t) -1) -+ { -+#ifdef MBS_SUPPORT -+ if (MB_CUR_MAX > 1) -+ free (mb_properties); -+#endif /* MBS_SUPPORT */ -+ return offset; -+ } -+ try = beg + offset; -+ len = kwsmatch.size[0]; -+ } -+ else -+ goto success; -+ } -+ else -+ goto success; -+ } -+ -+ failure: -+#ifdef MBS_SUPPORT -+ if (MB_CUR_MAX > 1) -+ free (mb_properties); -+#endif /* MBS_SUPPORT */ -+ return -1; -+ -+ success: -+ end = memchr (beg + len, eol, (buf + size) - (beg + len)); -+ end++; -+ while (buf < beg && beg[-1] != eol) -+ --beg; -+ len = end - beg; -+ /* FALLTHROUGH */ -+ -+ success_in_beg_and_len: -+ *match_size = len; -+#ifdef MBS_SUPPORT -+ if (MB_CUR_MAX > 1) -+ free (mb_properties); -+#endif /* MBS_SUPPORT */ -+ return beg - buf; -+} -+ -+#if HAVE_LIBPCRE -+/* Compiled internal form of a Perl regular expression. */ -+static pcre *cre; -+ -+/* Additional information about the pattern. */ -+static pcre_extra *extra; -+#endif -+ -+static void -+Pcompile (char const *pattern, size_t size) -+{ -+#if !HAVE_LIBPCRE -+ error (2, 0, _("The -P option is not supported")); -+#else -+ int e; -+ char const *ep; -+ char *re = xmalloc (4 * size + 7); -+ int flags = PCRE_MULTILINE | (match_icase ? PCRE_CASELESS : 0); -+ char const *patlim = pattern + size; -+ char *n = re; -+ char const *p; -+ char const *pnul; -+ -+ /* FIXME: Remove this restriction. */ -+ if (eolbyte != '\n') -+ error (2, 0, _("The -P and -z options cannot be combined")); -+ -+ *n = '\0'; -+ if (match_lines) -+ strcpy (n, "^("); -+ if (match_words) -+ strcpy (n, "\b("); -+ n += strlen (n); -+ -+ /* The PCRE interface doesn't allow NUL bytes in the pattern, so -+ replace each NUL byte in the pattern with the four characters -+ "\000", removing a preceding backslash if there are an odd -+ number of backslashes before the NUL. -+ -+ FIXME: This method does not work with some multibyte character -+ encodings, notably Shift-JIS, where a multibyte character can end -+ in a backslash byte. */ -+ for (p = pattern; (pnul = memchr (p, '\0', patlim - p)); p = pnul + 1) -+ { -+ memcpy (n, p, pnul - p); -+ n += pnul - p; -+ for (p = pnul; pattern < p && p[-1] == '\'; p--) -+ continue; -+ n -= (pnul - p) & 1; -+ strcpy (n, "\000"); -+ n += 4; -+ } -+ -+ memcpy (n, p, patlim - p); -+ n += patlim - p; -+ *n = '\0'; -+ if (match_words) -+ strcpy (n, ")\b"); -+ if (match_lines) -+ strcpy (n, ")$"); -+ -+ cre = pcre_compile (re, flags, &ep, &e, pcre_maketables ()); -+ if (!cre) -+ error (2, 0, ep); -+ -+ extra = pcre_study (cre, 0, &ep); -+ if (ep) -+ error (2, 0, ep); -+ -+ free (re); -+#endif -+} -+ -+static size_t -+Pexecute (char const *buf, size_t size, size_t *match_size, int exact) -+{ -+#if !HAVE_LIBPCRE -+ abort (); -+ return -1; -+#else -+ /* This array must have at least two elements; everything after that -+ is just for performance improvement in pcre_exec. */ -+ int sub[300]; -+ -+ int e = pcre_exec (cre, extra, buf, size, 0, 0, -+ sub, sizeof sub / sizeof *sub); -+ -+ if (e <= 0) -+ { -+ switch (e) -+ { -+ case PCRE_ERROR_NOMATCH: -+ return -1; -+ -+ case PCRE_ERROR_NOMEMORY: -+ error (2, 0, _("Memory exhausted")); -+ -+ default: -+ abort (); -+ } -+ } -+ else -+ { -+ /* Narrow down to the line we've found. */ -+ char const *beg = buf + sub[0]; -+ char const *end = buf + sub[1]; -+ char const *buflim = buf + size; -+ char eol = eolbyte; -+ if (!exact) -+ { -+ end = memchr (end, eol, buflim - end); -+ end++; -+ while (buf < beg && beg[-1] != eol) -+ --beg; -+ } -+ -+ *match_size = end - beg; -+ return beg - buf; -+ } -+#endif -+} -+ -+struct matcher const matchers[] = { -+ { "default", Gcompile, EGexecute }, -+ { "grep", Gcompile, EGexecute }, -+ { "egrep", Ecompile, EGexecute }, -+ { "awk", Ecompile, EGexecute }, -+ { "fgrep", Fcompile, Fexecute }, -+ { "perl", Pcompile, Pexecute }, -+ { "", 0, 0 }, -+}; -diff -urN grep-2.5.1a.orig/tests/fmbtest.sh grep-2.5.1a/tests/fmbtest.sh ---- grep-2.5.1a.orig/tests/fmbtest.sh 1970-01-01 05:00:00.000000000 +0500 -+++ grep-2.5.1a/tests/fmbtest.sh 2005-10-23 09:51:12.000000000 +0600 -@@ -0,0 +1,111 @@ -+#!/bin/sh -+ -+: ${srcdir=.} -+ -+# If cs_CZ.UTF-8 locale doesn't work, skip this test silently -+LC_ALL=cs_CZ.UTF-8 locale -k LC_CTYPE 2>/dev/null | ${GREP} -q charmap.*UTF-8 \ -+ || exit 77 -+ -+failures=0 -+ -+cat > csinput <<EOF -+01 ÅœluÅ¥ouÄká ÄÃÅ¡e -+ÄÃÅ E 02 -+03 Z ÄÃÅ¡Ã ÄiÅ¡Ã cosi -+04 Äà -+Å e 05 -+06 ÄÄÄÄÄÄÄÃÅ¡ÄÃÅ ÄÃÅ¡ -+07 ÄÄÄ ÄÄÄÄÃÅ¡ÄÃÅ ÄÃÅ¡EEEE -+ÄAs 08 -+09Äapka -+10ÄaSy se mÄnà -+ÄÃÅ¡E11 -+Äas12 -+ðÄÃÅ¡Eð13 -+ÅœÄÃÅ¡Eð14 -+ðÄÃÅ¡EÅœ15 -+ÅœÄÃÅ¡EÅœ16 -+ÄÃÅ¡Eð17 -+ÄÃÅ¡EÅœ18 -+19ðÄÃÅ¡e -+20ÅœÄÃÅ¡e -+EOF -+cat > cspatfile <<EOF -+ÄÃÅ¡E -+Äas -+EOF -+ -+for mode in F G E; do -+ -+test1="$(echo `LC_ALL=cs_CZ.UTF-8 ${GREP} -${mode} -f cspatfile csinput \ -+ | LC_ALL=C sed 's/^.*([0-9][0-9]).*$/\1/'`)" -+if test "$test1" != "11 12 13 14 15 16 17 18"; then -+ echo "Test #1 ${mode} failed: $test1" -+ failures=1 -+fi -+ -+test2="$(echo `LC_ALL=cs_CZ.UTF-8 ${GREP} -${mode}i -f cspatfile csinput \ -+ | LC_ALL=C sed 's/^.*([0-9][0-9]).*$/\1/'`)" -+if test "$test2" != "01 02 07 08 10 11 12 13 14 15 16 17 18 19 20"; then -+ echo "Test #2 ${mode} failed: $test2" -+ failures=1 -+fi -+ -+test3="$(echo `LC_ALL=cs_CZ.UTF-8 ${GREP} -${mode}i -e 'ÄÃÅ¡E' -e 'Äas' csinput \ -+ | LC_ALL=C sed 's/^.*([0-9][0-9]).*$/\1/'`)" -+if test "$test3" != "01 02 07 08 10 11 12 13 14 15 16 17 18 19 20"; then -+ echo "Test #3 ${mode} failed: $test3" -+ failures=1 -+fi -+ -+test4="$(echo `LC_ALL=cs_CZ.UTF-8 ${GREP} -${mode}iw -f cspatfile csinput \ -+ | LC_ALL=C sed 's/^.*([0-9][0-9]).*$/\1/'`)" -+if test "$test4" != "01 02 08 13 17 19"; then -+ echo "Test #4 ${mode} failed: $test4" -+ failures=1 -+fi -+ -+done -+ -+# Test that -F --color=always prefers longer matches. -+test5="`echo 'Cosi tu ÄiÅ¡Ã...' \ -+ | LC_ALL=cs_CZ.UTF-8 ${GREP} --color=always -Fi -e 'ÄiÅ¡' -e 'ÄiÅ¡Ã'`" -+if echo "$test5" | LC_ALL=C ${GREP} -q 'Cosi tu .*[.*mÄiÅ¡Ã.*[.*m(.[K)?...'; then -+ : -+else -+ echo "Test #5 F failed: $test5" -+ failures=1 -+fi -+ -+for mode in G E; do -+ -+# Test that -{G,E} --color=always prefers earlier pattern matches. -+test6="`echo 'Cosi tu ÄiÅ¡Ã...' \ -+ | LC_ALL=cs_CZ.UTF-8 ${GREP} --color=always -${mode}i -e 'ÄiÅ¡' -e 'ÄiÅ¡Ã'`" -+if echo "$test6" | LC_ALL=C ${GREP} -q 'Cosi tu .*[.*mÄiÅ¡.*[.*m(.[K)?Ã...'; then -+ : -+else -+ echo "Test #6 ${mode} failed: $test6" -+ failures=1 -+fi -+ -+# Test that -{G,E} --color=always prefers earlier pattern matches. -+test7="`echo 'Cosi tu ÄiÅ¡Ã...' \ -+ | LC_ALL=cs_CZ.UTF-8 ${GREP} --color=always -${mode}i -e 'ÄiÅ¡Ã' -e 'ÄiÅ¡'`" -+if echo "$test7" | LC_ALL=C ${GREP} -q 'Cosi tu .*[.*mÄiÅ¡Ã.*[.*m(.[K)?...'; then -+ : -+else -+ echo "Test #7 ${mode} failed: $test7" -+ failures=1 -+fi -+ -+test8="$(echo `LC_ALL=cs_CZ.UTF-8 ${GREP} -${mode}i -e 'Ä.Å¡E' -e 'Ä[a-f]s' csinput \ -+ | LC_ALL=C sed 's/^.*([0-9][0-9]).*$/\1/'`)" -+if test "$test8" != "01 02 07 08 10 11 12 13 14 15 16 17 18 19 20"; then -+ echo "Test #8 ${mode} failed: $test8" -+ failures=1 -+fi -+ -+done -+ -+exit $failures -diff -urN grep-2.5.1a.orig/tests/Makefile.am grep-2.5.1a/tests/Makefile.am ---- grep-2.5.1a.orig/tests/Makefile.am 2001-03-07 09:11:27.000000000 +0500 -+++ grep-2.5.1a/tests/Makefile.am 2005-10-23 09:51:12.000000000 +0600 -@@ -3,7 +3,8 @@ - AWK=@AWK@ - - TESTS = warning.sh khadafy.sh spencer1.sh bre.sh ere.sh \ -- status.sh empty.sh options.sh backref.sh file.sh -+ status.sh empty.sh options.sh backref.sh file.sh \ -+ fmbtest.sh - EXTRA_DIST = $(TESTS) \ - khadafy.lines khadafy.regexp \ - spencer1.awk spencer1.tests \ -diff -urN grep-2.5.1a.orig/tests/Makefile.in grep-2.5.1a/tests/Makefile.in ---- grep-2.5.1a.orig/tests/Makefile.in 2002-03-26 21:09:36.000000000 +0500 -+++ grep-2.5.1a/tests/Makefile.in 2005-10-23 09:51:13.000000000 +0600 -@@ -97,7 +97,8 @@ - AWK = @AWK@ - - TESTS = warning.sh khadafy.sh spencer1.sh bre.sh ere.sh \ -- status.sh empty.sh options.sh backref.sh file.sh -+ status.sh empty.sh options.sh backref.sh file.sh \ -+ fmbtest.sh - - EXTRA_DIST = $(TESTS) \ - khadafy.lines khadafy.regexp \ diff --git a/src/patches/grub-0.90-append.patch b/src/patches/grub-0.90-append.patch deleted file mode 100644 index 88f79d0..0000000 --- a/src/patches/grub-0.90-append.patch +++ /dev/null @@ -1,111 +0,0 @@ ---- grub-0.90/stage2/stage2.c.append Thu Dec 20 08:20:48 2001 -+++ grub-0.90/stage2/stage2.c Thu Dec 20 17:01:20 2001 -@@ -500,7 +500,8 @@ - if (config_entries) - printf ("\ - Press enter to boot the selected OS, 'e' to edit the\n\ -- commands before booting, or 'c' for a command-line."); -+ commands before booting, 'a' to modify the kernel arguments\n\ -+ before booting, or 'c' for a command-line."); - else - printf ("\ - Press 'b' to boot, 'e' to edit the selected command in the\n\ -@@ -787,6 +788,98 @@ - enter_cmdline (heap, 0); - goto restart; - } -+ if (config_entries && c == 'a') -+ { -+ int new_num_entries = 0, i = 0, j; -+ int needs_padding, amount; -+ char *new_heap; -+ char * entries; -+ char * entry_copy; -+ char * append_line; -+ char * start; -+ -+ entry_copy = new_heap = heap; -+ cur_entry = get_entry (config_entries, first_entry + entryno, -+ 1); -+ -+ do -+ { -+ while ((*(new_heap++) = cur_entry[i++]) != 0); -+ new_num_entries++; -+ } -+ while (config_entries && cur_entry[i]); -+ -+ /* this only needs to be done if config_entries is non-NULL, -+ but it doesn't hurt to do it always */ -+ *(new_heap++) = 0; -+ -+ new_heap = heap + NEW_HEAPSIZE + 1; -+ -+ entries = entry_copy; -+ while (*entries) -+ { -+ if ((strstr(entries, "kernel") == entries) && -+ isspace(entries[6])) -+ break; -+ -+ while (*entries) entries++; -+ entries++; -+ } -+ -+ if (!*entries) -+ goto restart; -+ -+ start = entries + 6; -+ -+ /* skip the white space */ -+ while (*start && isspace(*start)) start++; -+ /* skip the kernel name */ -+ while (*start && !isspace(*start)) start++; -+ -+ /* skip the white space */ -+ needs_padding = (!*start || !isspace(*start)); -+ while (*start && isspace(*start)) start++; -+ -+ append_line = new_heap; -+ grub_strcpy(append_line, start); -+ -+ cls(); -+ print_cmdline_message (CMDLINE_EDIT_MODE); -+ -+ if (get_cmdline(PACKAGE " append> ", -+ append_line, NEW_HEAPSIZE + 1, -+ 0, 1)) -+ goto restart; -+ -+ /* have new args; append_line points to the -+ new args and start points to the old -+ args */ -+ -+ i = grub_strlen(start); -+ j = grub_strlen(append_line); -+ -+ if (i > (j + needs_padding)) -+ amount = i; -+ else -+ amount = j + needs_padding; -+ -+ /* align rest of commands properly */ -+ memmove (start + j + needs_padding, start + i, -+ ((int) append_line) - ((int) start) - (amount)); -+ -+ if (needs_padding) -+ *start = ' '; -+ -+ /* copy command to correct area */ -+ memmove (start + needs_padding, append_line, j); -+ -+ /* set up this entry to boot */ -+ config_entries = NULL; -+ cur_entry = entry_copy; -+ heap = new_heap; -+ -+ break; -+ } - #ifdef GRUB_UTIL - if (c == 'q') - { diff --git a/src/patches/grub-0.90-symlinkmenulst.patch b/src/patches/grub-0.90-symlinkmenulst.patch deleted file mode 100644 index 553d15a..0000000 --- a/src/patches/grub-0.90-symlinkmenulst.patch +++ /dev/null @@ -1,16 +0,0 @@ -Only in grub: ChangeLog~ -diff -ur grub-0.90/util/grub-install.in grub/util/grub-install.in ---- grub-0.90/util/grub-install.in Wed Sep 5 15:50:06 2001 -+++ grub/util/grub-install.in Wed Sep 5 15:50:24 2001 -@@ -320,6 +320,10 @@ - exit 1 - fi - -+if ! test -e ${grubdir}/grub.conf ; then -+ test -e ${grubdir}/menu.lst && ln -s ./menu.lst ${grubdir}/grub.conf -+fi -+ - # Create a safe temporary file. - test -x /bin/mktemp && log_file=`/bin/mktemp /tmp/grub-install.log.XXXXXX` - -Only in grub/util: grub-install.in.orig diff --git a/src/patches/grub-0.91-splashimagehelp.patch b/src/patches/grub-0.91-splashimagehelp.patch deleted file mode 100644 index cc78073..0000000 --- a/src/patches/grub-0.91-splashimagehelp.patch +++ /dev/null @@ -1,28 +0,0 @@ -diff -ur grub-0.91/docs/grub.texi grub/docs/grub.texi ---- grub-0.91/docs/grub.texi Mon Jan 21 22:57:46 2002 -+++ grub/docs/grub.texi Mon Jan 21 22:57:51 2002 -@@ -1891,6 +1891,7 @@ - * rarp:: Initialize a network device via RARP - * serial:: Set up a serial device - * setkey:: Configure the key map -+* splashimage:: Use a splash image - * terminal:: Choose a terminal - * tftpserver:: Specify a TFTP server - * unhide:: Unhide a partition -@@ -2260,6 +2261,16 @@ - @end deffn - - -+@node splashimage -+@subsection splashimage -+ -+@deffn Command splashimage file -+Select an image to use as the background image. This should be -+specified using normal GRUB device naming syntax. The format of the -+file is a gzipped xpm which is 640x480 with a 14 color palette. -+@end deffn -+ -+ - @node terminal - @subsection terminal - diff --git a/src/patches/grub-0.93-configfile.patch b/src/patches/grub-0.93-configfile.patch deleted file mode 100644 index 9cb1182..0000000 --- a/src/patches/grub-0.93-configfile.patch +++ /dev/null @@ -1,75 +0,0 @@ ---- grub-0.93/stage2/asm.S.config 2002-12-02 18:18:56.000000000 -0500 -+++ grub-0.93/stage2/asm.S 2002-12-28 22:01:24.000000000 -0500 -@@ -97,7 +97,7 @@ - .string VERSION - VARIABLE(config_file) - #ifndef STAGE1_5 -- .string "/boot/grub/menu.lst" -+ .string "/boot/grub/grub.conf" - #else /* STAGE1_5 */ - .long 0xffffffff - .string "/boot/grub/stage2" ---- grub-0.93/stage2/builtins.c.config 2002-12-03 23:41:57.000000000 -0500 -+++ grub-0.93/stage2/builtins.c 2002-12-28 22:01:24.000000000 -0500 -@@ -3838,7 +3838,7 @@ - - /* The prefix was determined. */ - grub_sprintf (stage2, "%s%s", prefix, "/stage2"); -- grub_sprintf (config_filename, "%s%s", prefix, "/menu.lst"); -+ grub_sprintf (config_filename, "%s%s", prefix, "/grub.conf"); - *real_config_filename = 0; - - /* Check if stage2 exists. */ ---- grub-0.93/grub/asmstub.c.config 2002-12-02 18:20:45.000000000 -0500 -+++ grub-0.93/grub/asmstub.c 2002-12-28 22:01:24.000000000 -0500 -@@ -71,7 +71,7 @@ - unsigned long boot_drive = 0; - int saved_entryno = 0; - char version_string[] = VERSION; --char config_file[128] = "/boot/grub/menu.lst"; /* FIXME: arbitrary */ -+char config_file[128] = "/boot/grub/grub.conf"; /* FIXME: arbitrary */ - unsigned long linux_text_len = 0; - char *linux_data_tmp_addr = 0; - char *linux_data_real_addr = 0; ---- grub-0.93/docs/grub.8.config 2002-12-07 22:17:59.000000000 -0500 -+++ grub-0.93/docs/grub.8 2002-12-28 22:01:24.000000000 -0500 -@@ -15,7 +15,7 @@ - specify stage2 boot_drive [default=0x0] - .TP - \fB--config-file\fR=\fIFILE\fR --specify stage2 config_file [default=/boot/grub/menu.lst] -+specify stage2 config_file [default=/boot/grub/grub.conf] - .TP - \fB--device-map\fR=\fIFILE\fR - use the device map file FILE ---- grub-0.93/docs/grub.texi.config 2002-12-02 17:35:28.000000000 -0500 -+++ grub-0.93/docs/grub.texi 2002-12-28 22:01:24.000000000 -0500 -@@ -989,7 +989,7 @@ - keys) that will do everything to boot an OS. - - To enable the menu, you need a configuration file, --@file{menu.lst} under the boot directory. We'll analyze an example -+@file{grub.conf} under the boot directory. We'll analyze an example - file. - - The file first contains some general settings, the menu interface -@@ -1596,8 +1596,8 @@ - - An absolute file name resembles a Unix absolute file name, using - @samp{/} for the directory separator (not @samp{} as in DOS). One --example is @samp{(hd0,0)/boot/grub/menu.lst}. This means the file --@file{/boot/grub/menu.lst} in the first partition of the first hard -+example is @samp{(hd0,0)/boot/grub/grub.conf}. This means the file -+@file{/boot/grub/grub.conf} in the first partition of the first hard - disk. If you omit the device name in an absolute file name, GRUB uses - GRUB's @dfn{root device} implicitly. So if you set the root device to, - say, @samp{(hd1,0)} by the command @command{root} (@pxref{root}), then -@@ -3249,7 +3249,7 @@ - - @item --config-file=@var{file} - Read the configuration file @var{file} instead of --@file{/boot/grub/menu.lst}. The format is the same as the normal GRUB -+@file{/boot/grub/grub.conf}. The format is the same as the normal GRUB - syntax. See @ref{Filesystem}, for more information. - - @item --boot-drive=@var{drive} diff --git a/src/patches/grub-0.93-endedit.patch b/src/patches/grub-0.93-endedit.patch deleted file mode 100644 index eb0463c..0000000 --- a/src/patches/grub-0.93-endedit.patch +++ /dev/null @@ -1,77 +0,0 @@ -Index: stage2/cmdline.c -=================================================================== -RCS file: /cvsroot/grub/grub/stage2/cmdline.c,v -retrieving revision 1.27 -diff -u -r1.27 cmdline.c ---- stage2/cmdline.c 3 Dec 2002 00:02:53 -0000 1.27 -+++ stage2/cmdline.c 6 Jan 2003 05:33:33 -0000 -@@ -48,12 +48,17 @@ - - /* Print a helpful message for the command-line interface. */ - void --print_cmdline_message (int forever) -+print_cmdline_message (int type) - { - printf (" [ Minimal BASH-like line editing is supported. For the first word, TAB\n" - " lists possible command completions. Anywhere else TAB lists the possible\n" -- " completions of a device/filename.%s ]\n", -- (forever ? "" : " ESC at any time exits.")); -+ " completions of a device/filename."); -+ if (type == CMDLINE_NORMAL_MODE) -+ printf(" ESC at any time exits."); -+ if (type == CMDLINE_EDIT_MODE) -+ printf(" ESC at any time cancels. ENTER \n" -+ " at any time accepts your changes."); -+ printf("]\n"); - } - - /* Find the builtin whose command name is COMMAND and return the -@@ -128,7 +133,7 @@ - print_network_configuration (); - grub_putchar ('\n'); - #endif -- print_cmdline_message (forever); -+ print_cmdline_message (forever ? CMDLINE_FOREVER_MODE : CMDLINE_NORMAL_MODE); - - while (1) - { -Index: stage2/shared.h -=================================================================== -RCS file: /cvsroot/grub/grub/stage2/shared.h,v -retrieving revision 1.90 -diff -u -r1.90 shared.h ---- stage2/shared.h 3 Dec 2002 00:02:53 -0000 1.90 -+++ stage2/shared.h 6 Jan 2003 05:33:33 -0000 -@@ -843,9 +843,15 @@ - void init_config (void); - char *skip_to (int after_equal, char *cmdline); - struct builtin *find_command (char *command); --void print_cmdline_message (int forever); - void enter_cmdline (char *heap, int forever); - int run_script (char *script, char *heap); -+ -+/* the flags for the cmdline message */ -+#define CMDLINE_FOREVER_MODE 0x0 -+#define CMDLINE_NORMAL_MODE 0x1 -+#define CMDLINE_EDIT_MODE 0x2 -+ -+void print_cmdline_message (int type); - #endif - - /* C library replacement functions with identical semantics. */ -Index: stage2/stage2.c -=================================================================== -RCS file: /cvsroot/grub/grub/stage2/stage2.c,v -retrieving revision 1.42 -diff -u -r1.42 stage2.c ---- stage2/stage2.c 4 Dec 2002 00:55:45 -0000 1.42 -+++ stage2/stage2.c 6 Jan 2003 05:33:33 -0000 -@@ -655,7 +655,7 @@ - else - { - cls (); -- print_cmdline_message (0); -+ print_cmdline_message (CMDLINE_EDIT_MODE); - - new_heap = heap + NEW_HEAPSIZE + 1; - diff --git a/src/patches/grub-0.93-graphics-bootterm.patch b/src/patches/grub-0.93-graphics-bootterm.patch deleted file mode 100644 index 1e2be9a..0000000 --- a/src/patches/grub-0.93-graphics-bootterm.patch +++ /dev/null @@ -1,39 +0,0 @@ ---- grub-0.93/stage2/builtins.c.bootterm 2002-12-29 02:01:50.000000000 -0500 -+++ grub-0.93/stage2/builtins.c 2002-12-29 02:01:07.000000000 -0500 -@@ -233,12 +233,22 @@ - static int - boot_func (char *arg, int flags) - { -+ struct term_entry *prev_term = current_term; - /* Clear the int15 handler if we can boot the kernel successfully. - This assumes that the boot code never fails only if KERNEL_TYPE is - not KERNEL_TYPE_NONE. Is this assumption is bad? */ - if (kernel_type != KERNEL_TYPE_NONE) - unset_int15_handler (); - -+ /* if our terminal needed initialization, we should shut it down -+ * before booting the kernel, but we want to save what it was so -+ * we can come back if needed */ -+ if (current_term->shutdown) -+ { -+ (*current_term->shutdown)(); -+ current_term = term_table; /* assumption: console is first */ -+ } -+ - #ifdef SUPPORT_NETBOOT - /* Shut down the networking. */ - cleanup_net (); -@@ -302,6 +312,13 @@ - return 1; - } - -+ /* if we get back here, we should go back to what our term was before */ -+ current_term = prev_term; -+ if (current_term->startup) -+ /* if our terminal fails to initialize, fall back to console since -+ * it should always work */ -+ if ((*current_term->startup)() == 0) -+ current_term = term_table; /* we know that console is first */ - return 0; - } - diff --git a/src/patches/grub-0.93-special-device-names.patch b/src/patches/grub-0.93-special-device-names.patch deleted file mode 100644 index 894f3e8..0000000 --- a/src/patches/grub-0.93-special-device-names.patch +++ /dev/null @@ -1,18 +0,0 @@ ---- grub-0.93/lib/device.c.raid 2002-05-20 05:53:46.000000000 -0400 -+++ grub-0.93/lib/device.c 2002-12-28 23:24:10.000000000 -0500 -@@ -689,7 +689,14 @@ - if (strcmp (dev + strlen(dev) - 5, "/disc") == 0) - strcpy (dev + strlen(dev) - 5, "/part"); - } -- sprintf (dev + strlen(dev), "%d", ((partition >> 16) & 0xFF) + 1); -+ -+ sprintf (dev + strlen(dev), "%s%d", -+ /* Compaq smart and others */ -+ (strncmp(dev, "/dev/ida/", 9) == 0 || -+ strncmp(dev, "/dev/ataraid/", 13) == 0 || -+ strncmp(dev, "/dev/cciss/", 11) == 0 || -+ strncmp(dev, "/dev/rd/", 8) == 0) ? "p" : "", -+ ((partition >> 16) & 0xFF) + 1); - - /* Open the partition. */ - fd = open (dev, O_RDWR); diff --git a/src/patches/grub-0.94-i2o.patch b/src/patches/grub-0.94-i2o.patch deleted file mode 100644 index 2af846c..0000000 --- a/src/patches/grub-0.94-i2o.patch +++ /dev/null @@ -1,45 +0,0 @@ -Only in grub-0.94/docs: grub.info -Only in grub-0.94/docs: multiboot.info -diff -ur grub-0.94/lib/device.c grub-0.94.new/lib/device.c ---- grub-0.94/lib/device.c 2004-05-07 04:50:36.375238696 +0200 -+++ grub-0.94.new/lib/device.c 2004-05-07 04:48:57.611253104 +0200 -@@ -419,6 +419,12 @@ - { - sprintf (name, "/dev/rd/c%dd%d", controller, drive); - } -+ -+static void -+get_i2o_disk_name (char *name, int unit) -+{ -+ sprintf (name, "/dev/i2o/hd%c", unit + 'a'); -+} - #endif - - /* Check if DEVICE can be read. If an error occurs, return zero, -@@ -789,6 +795,26 @@ - } - } - } -+ -+ /* I2O disks. */ -+ for (i = 0; i < 8; i++) -+ { -+ char name[16]; -+ -+ get_i2o_disk_name (name, i); -+ if (check_device (name)) -+ { -+ (*map)[num_hd + 0x80] = strdup (name); -+ assert ((*map)[num_hd + 0x80]); -+ -+ /* If the device map file is opened, write the map. */ -+ if (fp) -+ fprintf (fp, "(hd%d)\t%s\n", num_hd, name); -+ -+ num_hd++; -+ } -+ } -+ - #endif /* __linux__ */ - - /* OK, close the device map file if opened. */ diff --git a/src/patches/grub-0.94-installcopyonly.patch b/src/patches/grub-0.94-installcopyonly.patch deleted file mode 100644 index a2e38fb..0000000 --- a/src/patches/grub-0.94-installcopyonly.patch +++ /dev/null @@ -1,85 +0,0 @@ ---- grub-0.94/util/grub-install.in.copyonly 2004-02-02 16:33:29.172127985 -0500 -+++ grub-0.94/util/grub-install.in 2004-02-02 16:34:26.027454320 -0500 -@@ -40,6 +40,7 @@ - force_lba= - recheck=no - debug=no -+justcopy=no - - # look for secure tempfile creation wrappers on this platform - if test -x /bin/tempfile; then -@@ -221,6 +222,17 @@ - echo "$tmp_fname" - } - -+copy_images() { -+ # Copy the GRUB images to the GRUB directory. -+ for file in ${grubdir}/stage1 ${grubdir}/stage2 ${grubdir}/*stage1_5; do -+ rm -f $file || exit 1 -+ done -+ for file in \ -+ ${pkgdatadir}/stage1 ${pkgdatadir}/stage2 ${pkgdatadir}/*stage1_5; do -+ cp -f $file ${grubdir} || exit 1 -+ done -+} -+ - # Check the arguments. - for option in "$@"; do - case "$option" in -@@ -240,6 +252,8 @@ - force_lba="--force-lba" ;; - --recheck) - recheck=yes ;; -+ --just-copy) -+ justcopy=yes ;; - # This is an undocumented feature... - --debug) - debug=yes ;; -@@ -258,12 +272,6 @@ - esac - done - --if test "x$install_device" = x; then -- echo "install_device not specified." 1>&2 -- usage -- exit 1 --fi -- - # If the debugging feature is enabled, print commands. - if test $debug = yes; then - set -x -@@ -286,6 +294,18 @@ - grubdir=${bootdir}/grub - device_map=${grubdir}/device.map - -+# if they just want the images copied, copy the images and then exit -+if test $justcopy = yes; then -+ copy_images -+ exit 0 -+fi -+ -+if test "x$install_device" = x; then -+ echo "install_device not specified." 1>&2 -+ usage -+ exit 1 -+fi -+ - # Check if GRUB is installed. - # This is necessary, because the user can specify "grub --read-only". - set $grub_shell dummy -@@ -317,14 +337,7 @@ - test -d "$bootdir" || mkdir "$bootdir" || exit 1 - test -d "$grubdir" || mkdir "$grubdir" || exit 1 - --# Copy the GRUB images to the GRUB directory. --for file in ${grubdir}/stage1 ${grubdir}/stage2 ${grubdir}/*stage1_5; do -- rm -f $file || exit 1 --done --for file in \ -- ${pkgdatadir}/stage1 ${pkgdatadir}/stage2 ${pkgdatadir}/*stage1_5; do -- cp -f $file ${grubdir} || exit 1 --done -+copy_images - - # If --recheck is specified, remove the device map, if present. - if test $recheck = yes; then diff --git a/src/patches/grub-0.95-graphics.patch b/src/patches/grub-0.95-graphics.patch deleted file mode 100644 index 0c62b77..0000000 --- a/src/patches/grub-0.95-graphics.patch +++ /dev/null @@ -1,1283 +0,0 @@ ---- grub-0.95/stage2/asm.S.graphics 2004-06-18 17:35:51.932054040 -0400 -+++ grub-0.95/stage2/asm.S 2004-06-18 17:35:52.473971656 -0400 -@@ -2215,6 +2215,156 @@ - pop %ebx - pop %ebp - ret -+ -+/* graphics mode functions */ -+#ifdef SUPPORT_GRAPHICS -+VARIABLE(cursorX) -+.word 0 -+VARIABLE(cursorY) -+.word 0 -+VARIABLE(cursorCount) -+.word 0 -+VARIABLE(cursorBuf) -+.byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -+ -+ -+/* -+ * int set_videomode(mode) -+ * BIOS call "INT 10H Function 0h" to set video mode -+ * Call with %ah = 0x0 -+ * %al = video mode -+ * Returns old videomode. -+ */ -+ENTRY(set_videomode) -+ push %ebp -+ push %ebx -+ push %ecx -+ -+ movb 0x10(%esp), %cl -+ -+ call EXT_C(prot_to_real) -+ .code16 -+ -+ xorw %bx, %bx -+ movb $0xf, %ah -+ int $0x10 /* Get Current Video mode */ -+ movb %al, %ch -+ xorb %ah, %ah -+ movb %cl, %al -+ int $0x10 /* Set Video mode */ -+ -+ DATA32 call EXT_C(real_to_prot) -+ .code32 -+ -+ xorb %ah, %ah -+ movb %ch, %al -+ -+ pop %ecx -+ pop %ebx -+ pop %ebp -+ ret -+ -+ -+/* -+ * unsigned char * graphics_get_font() -+ * BIOS call "INT 10H Function 11h" to set font -+ * Call with %ah = 0x11 -+ */ -+ENTRY(graphics_get_font) -+ push %ebp -+ push %ebx -+ push %ecx -+ push %edx -+ -+ call EXT_C(prot_to_real) -+ .code16 -+ -+ movw $0x1130, %ax -+ movb $6, %bh /* font 8x16 */ -+ int $0x10 -+ movw %bp, %dx -+ movw %es, %cx -+ -+ DATA32 call EXT_C(real_to_prot) -+ .code32 -+ -+ xorl %eax, %eax -+ movw %cx, %ax -+ shll $4, %eax -+ movw %dx, %ax -+ -+ pop %edx -+ pop %ecx -+ pop %ebx -+ pop %ebp -+ ret -+ -+ -+ -+/* -+ * graphics_set_palette(index, red, green, blue) -+ * BIOS call "INT 10H Function 10h" to set individual dac register -+ * Call with %ah = 0x10 -+ * %bx = register number -+ * %ch = new value for green (0-63) -+ * %cl = new value for blue (0-63) -+ * %dh = new value for red (0-63) -+ */ -+ -+ENTRY(graphics_set_palette) -+ push %ebp -+ push %eax -+ push %ebx -+ push %ecx -+ push %edx -+ -+ movw $0x3c8, %bx /* address write mode register */ -+ -+ /* wait vertical retrace */ -+ -+ movw $0x3da, %dx -+l1b: inb %dx, %al /* wait vertical active display */ -+ test $8, %al -+ jnz l1b -+ -+l2b: inb %dx, %al /* wait vertical retrace */ -+ test $8, %al -+ jnz l2b -+ -+ mov %bx, %dx -+ movb 0x18(%esp), %al /* index */ -+ outb %al, %dx -+ inc %dx -+ -+ movb 0x1c(%esp), %al /* red */ -+ outb %al, %dx -+ -+ movb 0x20(%esp), %al /* green */ -+ outb %al, %dx -+ -+ movb 0x24(%esp), %al /* blue */ -+ outb %al, %dx -+ -+ movw 0x18(%esp), %bx -+ -+ call EXT_C(prot_to_real) -+ .code16 -+ -+ movb %bl, %bh -+ movw $0x1000, %ax -+ int $0x10 -+ -+ DATA32 call EXT_C(real_to_prot) -+ .code32 -+ -+ pop %edx -+ pop %ecx -+ pop %ebx -+ pop %eax -+ pop %ebp -+ ret -+ -+#endif /* SUPPORT_GRAPHICS */ - - /* - * getrtsecs() ---- grub-0.95/stage2/stage2.c.graphics 2004-06-18 17:35:52.314995824 -0400 -+++ grub-0.95/stage2/stage2.c 2004-06-18 17:35:52.494968464 -0400 -@@ -233,6 +233,7 @@ - { - int c, time1, time2 = -1, first_entry = 0; - char *cur_entry = 0; -+ struct term_entry *prev_term = NULL; - - /* - * Main loop for menu UI. -@@ -807,6 +808,15 @@ - - cls (); - setcursor (1); -+ /* if our terminal needed initialization, we should shut it down -+ * before booting the kernel, but we want to save what it was so -+ * we can come back if needed */ -+ prev_term = current_term; -+ if (current_term->shutdown) -+ { -+ (*current_term->shutdown)(); -+ current_term = term_table; /* assumption: console is first */ -+ } - - while (1) - { -@@ -838,6 +848,13 @@ - break; - } - -+ /* if we get back here, we should go back to what our term was before */ -+ current_term = prev_term; -+ if (current_term->startup) -+ /* if our terminal fails to initialize, fall back to console since -+ * it should always work */ -+ if ((*current_term->startup)() == 0) -+ current_term = term_table; /* we know that console is first */ - show_menu = 1; - goto restart; - } -@@ -1082,6 +1099,10 @@ - while (is_preset); - } - -+ /* go ahead and make sure the terminal is setup */ -+ if (current_term->startup) -+ (*current_term->startup)(); -+ - if (! num_entries) - { - /* If no acceptable config file, goto command-line, starting ---- grub-0.95/stage2/builtins.c.graphics 2004-06-18 17:35:52.370987312 -0400 -+++ grub-0.95/stage2/builtins.c 2004-06-18 17:35:52.482970288 -0400 -@@ -858,6 +858,138 @@ - }; - #endif /* SUPPORT_NETBOOT */ - -+static int terminal_func (char *arg, int flags); -+ -+#ifdef SUPPORT_GRAPHICS -+ -+static int splashimage_func(char *arg, int flags) { -+ char splashimage[64]; -+ int i; -+ -+ /* filename can only be 64 characters due to our buffer size */ -+ if (strlen(arg) > 63) -+ return 1; -+ if (flags == BUILTIN_CMDLINE) { -+ if (!grub_open(arg)) -+ return 1; -+ grub_close(); -+ } -+ -+ strcpy(splashimage, arg); -+ -+ /* get rid of TERM_NEED_INIT from the graphics terminal. */ -+ for (i = 0; term_table[i].name; i++) { -+ if (grub_strcmp (term_table[i].name, "graphics") == 0) { -+ term_table[i].flags &= ~TERM_NEED_INIT; -+ break; -+ } -+ } -+ -+ graphics_set_splash(splashimage); -+ -+ if (flags == BUILTIN_CMDLINE && graphics_inited) { -+ graphics_end(); -+ graphics_init(); -+ graphics_cls(); -+ } -+ -+ /* FIXME: should we be explicitly switching the terminal as a -+ * side effect here? */ -+ terminal_func("graphics", flags); -+ -+ return 0; -+} -+ -+static struct builtin builtin_splashimage = -+{ -+ "splashimage", -+ splashimage_func, -+ BUILTIN_CMDLINE | BUILTIN_MENU | BUILTIN_HELP_LIST, -+ "splashimage FILE", -+ "Load FILE as the background image when in graphics mode." -+}; -+ -+ -+/* foreground */ -+static int -+foreground_func(char *arg, int flags) -+{ -+ if (grub_strlen(arg) == 6) { -+ int r = ((hex(arg[0]) << 4) | hex(arg[1])) >> 2; -+ int g = ((hex(arg[2]) << 4) | hex(arg[3])) >> 2; -+ int b = ((hex(arg[4]) << 4) | hex(arg[5])) >> 2; -+ -+ foreground = (r << 16) | (g << 8) | b; -+ if (graphics_inited) -+ graphics_set_palette(15, r, g, b); -+ -+ return (0); -+ } -+ -+ return (1); -+} -+ -+static struct builtin builtin_foreground = -+{ -+ "foreground", -+ foreground_func, -+ BUILTIN_CMDLINE | BUILTIN_MENU | BUILTIN_HELP_LIST, -+ "foreground RRGGBB", -+ "Sets the foreground color when in graphics mode." -+ "RR is red, GG is green, and BB blue. Numbers must be in hexadecimal." -+}; -+ -+ -+/* background */ -+static int -+background_func(char *arg, int flags) -+{ -+ if (grub_strlen(arg) == 6) { -+ int r = ((hex(arg[0]) << 4) | hex(arg[1])) >> 2; -+ int g = ((hex(arg[2]) << 4) | hex(arg[3])) >> 2; -+ int b = ((hex(arg[4]) << 4) | hex(arg[5])) >> 2; -+ -+ background = (r << 16) | (g << 8) | b; -+ if (graphics_inited) -+ graphics_set_palette(0, r, g, b); -+ return (0); -+ } -+ -+ return (1); -+} -+ -+static struct builtin builtin_background = -+{ -+ "background", -+ background_func, -+ BUILTIN_CMDLINE | BUILTIN_MENU | BUILTIN_HELP_LIST, -+ "background RRGGBB", -+ "Sets the background color when in graphics mode." -+ "RR is red, GG is green, and BB blue. Numbers must be in hexadecimal." -+}; -+ -+#endif /* SUPPORT_GRAPHICS */ -+ -+ -+/* clear */ -+static int -+clear_func() -+{ -+ if (current_term->cls) -+ current_term->cls(); -+ -+ return 0; -+} -+ -+static struct builtin builtin_clear = -+{ -+ "clear", -+ clear_func, -+ BUILTIN_CMDLINE | BUILTIN_HELP_LIST, -+ "clear", -+ "Clear the screen" -+}; -+ - - /* displayapm */ - static int -@@ -4090,7 +4222,7 @@ - }; - - --#if defined(SUPPORT_SERIAL) || defined(SUPPORT_HERCULES) -+#if defined(SUPPORT_SERIAL) || defined(SUPPORT_HERCULES) || defined(SUPPORT_GRAPHICS) - /* terminal */ - static int - terminal_func (char *arg, int flags) -@@ -4249,17 +4381,21 @@ - end: - current_term = term_table + default_term; - current_term->flags = term_flags; -- -+ - if (lines) - max_lines = lines; - else -- /* 24 would be a good default value. */ -- max_lines = 24; -- -+ max_lines = current_term->max_lines; -+ - /* If the interface is currently the command-line, - restart it to repaint the screen. */ -- if (current_term != prev_term && (flags & BUILTIN_CMDLINE)) -+ if ((current_term != prev_term) && (flags & BUILTIN_CMDLINE)){ -+ if (prev_term->shutdown) -+ prev_term->shutdown(); -+ if (current_term->startup) -+ current_term->startup(); - grub_longjmp (restart_cmdline_env, 0); -+ } - - return 0; - } -@@ -4269,7 +4405,7 @@ - "terminal", - terminal_func, - BUILTIN_MENU | BUILTIN_CMDLINE | BUILTIN_HELP_LIST, -- "terminal [--dumb] [--no-echo] [--no-edit] [--timeout=SECS] [--lines=LINES] [--silent] [console] [serial] [hercules]", -+ "terminal [--dumb] [--no-echo] [--no-edit] [--timeout=SECS] [--lines=LINES] [--silent] [console] [serial] [hercules] [graphics]", - "Select a terminal. When multiple terminals are specified, wait until" - " you push any key to continue. If both console and serial are specified," - " the terminal to which you input a key first will be selected. If no" -@@ -4281,7 +4417,7 @@ - " seconds. The option --lines specifies the maximum number of lines." - " The option --silent is used to suppress messages." - }; --#endif /* SUPPORT_SERIAL || SUPPORT_HERCULES */ -+#endif /* SUPPORT_SERIAL || SUPPORT_HERCULES || SUPPORT_GRAPHICS */ - - - #ifdef SUPPORT_SERIAL -@@ -4809,6 +4945,9 @@ - /* The table of builtin commands. Sorted in dictionary order. */ - struct builtin *builtin_table[] = - { -+#ifdef SUPPORT_GRAPHICS -+ &builtin_background, -+#endif - &builtin_blocklist, - &builtin_boot, - #ifdef SUPPORT_NETBOOT -@@ -4816,6 +4955,7 @@ - #endif /* SUPPORT_NETBOOT */ - &builtin_cat, - &builtin_chainloader, -+ &builtin_clear, - &builtin_cmp, - &builtin_color, - &builtin_configfile, -@@ -4835,6 +4975,9 @@ - &builtin_embed, - &builtin_fallback, - &builtin_find, -+#ifdef SUPPORT_GRAPHICS -+ &builtin_foreground, -+#endif - &builtin_fstest, - &builtin_geometry, - &builtin_halt, -@@ -4878,9 +5021,12 @@ - #endif /* SUPPORT_SERIAL */ - &builtin_setkey, - &builtin_setup, --#if defined(SUPPORT_SERIAL) || defined(SUPPORT_HERCULES) -+#ifdef SUPPORT_GRAPHICS -+ &builtin_splashimage, -+#endif /* SUPPORT_GRAPHICS */ -+#if defined(SUPPORT_SERIAL) || defined(SUPPORT_HERCULES) || defined(SUPPORT_GRAPHICS) - &builtin_terminal, --#endif /* SUPPORT_SERIAL || SUPPORT_HERCULES */ -+#endif /* SUPPORT_SERIAL || SUPPORT_HERCULES || SUPPORT_GRAPHICS */ - #ifdef SUPPORT_SERIAL - &builtin_terminfo, - #endif /* SUPPORT_SERIAL */ ---- /dev/null 2004-02-23 16:02:56.000000000 -0500 -+++ grub-0.95/stage2/graphics.c 2004-06-18 17:35:52.488969376 -0400 -@@ -0,0 +1,552 @@ -+/* graphics.c - graphics mode support for GRUB */ -+/* Implemented as a terminal type by Jeremy Katz katzj@redhat.com based -+ * on a patch by Paulo César Pereira de Andrade pcpa@conectiva.com.br -+ */ -+/* -+ * GRUB -- GRand Unified Bootloader -+ * Copyright (C) 2001,2002 Red Hat, Inc. -+ * Portions copyright (C) 2000 Conectiva, Inc. -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -+ */ -+ -+ -+ -+#ifdef SUPPORT_GRAPHICS -+ -+#include <term.h> -+#include <shared.h> -+#include <graphics.h> -+ -+int saved_videomode; -+unsigned char *font8x16; -+ -+int graphics_inited = 0; -+static char splashimage[64]; -+ -+#define VSHADOW VSHADOW1 -+unsigned char VSHADOW1[38400]; -+unsigned char VSHADOW2[38400]; -+unsigned char VSHADOW4[38400]; -+unsigned char VSHADOW8[38400]; -+ -+/* constants to define the viewable area */ -+const int x0 = 0; -+const int x1 = 80; -+const int y0 = 0; -+const int y1 = 30; -+ -+/* text buffer has to be kept around so that we can write things as we -+ * scroll and the like */ -+unsigned short text[80 * 30]; -+ -+/* why do these have to be kept here? */ -+int foreground = (63 << 16) | (63 << 8) | (63), background = 0, border = 0; -+ -+/* current position */ -+static int fontx = 0; -+static int fonty = 0; -+ -+/* global state so that we don't try to recursively scroll or cursor */ -+static int no_scroll = 0; -+ -+/* color state */ -+static int graphics_standard_color = A_NORMAL; -+static int graphics_normal_color = A_NORMAL; -+static int graphics_highlight_color = A_REVERSE; -+static int graphics_current_color = A_NORMAL; -+static color_state graphics_color_state = COLOR_STATE_STANDARD; -+ -+ -+/* graphics local functions */ -+static void graphics_setxy(int col, int row); -+static void graphics_scroll(); -+ -+/* FIXME: where do these really belong? */ -+static inline void outb(unsigned short port, unsigned char val) -+{ -+ __asm __volatile ("outb %0,%1"::"a" (val), "d" (port)); -+} -+ -+static void MapMask(int value) { -+ outb(0x3c4, 2); -+ outb(0x3c5, value); -+} -+ -+/* bit mask register */ -+static void BitMask(int value) { -+ outb(0x3ce, 8); -+ outb(0x3cf, value); -+} -+ -+ -+ -+/* Set the splash image */ -+void graphics_set_splash(char *splashfile) { -+ grub_strcpy(splashimage, splashfile); -+} -+ -+/* Get the current splash image */ -+char *graphics_get_splash(void) { -+ return splashimage; -+} -+ -+/* Initialize a vga16 graphics display with the palette based off of -+ * the image in splashimage. If the image doesn't exist, leave graphics -+ * mode. */ -+int graphics_init() -+{ -+ if (!graphics_inited) { -+ saved_videomode = set_videomode(0x12); -+ } -+ -+ if (!read_image(splashimage)) { -+ set_videomode(saved_videomode); -+ grub_printf("failed to read image\n"); -+ return 0; -+ } -+ -+ font8x16 = (unsigned char*)graphics_get_font(); -+ -+ graphics_inited = 1; -+ -+ /* make sure that the highlight color is set correctly */ -+ graphics_highlight_color = ((graphics_normal_color >> 4) | -+ ((graphics_normal_color & 0xf) << 4)); -+ -+ return 1; -+} -+ -+/* Leave graphics mode */ -+void graphics_end(void) -+{ -+ if (graphics_inited) { -+ set_videomode(saved_videomode); -+ graphics_inited = 0; -+ } -+} -+ -+/* Print ch on the screen. Handle any needed scrolling or the like */ -+void graphics_putchar(int ch) { -+ ch &= 0xff; -+ -+ graphics_cursor(0); -+ -+ if (ch == '\n') { -+ if (fonty + 1 < y1) -+ graphics_setxy(fontx, fonty + 1); -+ else -+ graphics_scroll(); -+ graphics_cursor(1); -+ return; -+ } else if (ch == '\r') { -+ graphics_setxy(x0, fonty); -+ graphics_cursor(1); -+ return; -+ } -+ -+ graphics_cursor(0); -+ -+ text[fonty * 80 + fontx] = ch; -+ text[fonty * 80 + fontx] &= 0x00ff; -+ if (graphics_current_color & 0xf0) -+ text[fonty * 80 + fontx] |= 0x100; -+ -+ graphics_cursor(0); -+ -+ if ((fontx + 1) >= x1) { -+ graphics_setxy(x0, fonty); -+ if (fonty + 1 < y1) -+ graphics_setxy(x0, fonty + 1); -+ else -+ graphics_scroll(); -+ } else { -+ graphics_setxy(fontx + 1, fonty); -+ } -+ -+ graphics_cursor(1); -+} -+ -+/* get the current location of the cursor */ -+int graphics_getxy(void) { -+ return (fontx << 8) | fonty; -+} -+ -+void graphics_gotoxy(int x, int y) { -+ graphics_cursor(0); -+ -+ graphics_setxy(x, y); -+ -+ graphics_cursor(1); -+} -+ -+void graphics_cls(void) { -+ int i; -+ unsigned char *mem, *s1, *s2, *s4, *s8; -+ -+ graphics_cursor(0); -+ graphics_gotoxy(x0, y0); -+ -+ mem = (unsigned char*)VIDEOMEM; -+ s1 = (unsigned char*)VSHADOW1; -+ s2 = (unsigned char*)VSHADOW2; -+ s4 = (unsigned char*)VSHADOW4; -+ s8 = (unsigned char*)VSHADOW8; -+ -+ for (i = 0; i < 80 * 30; i++) -+ text[i] = ' '; -+ graphics_cursor(1); -+ -+ BitMask(0xff); -+ -+ /* plano 1 */ -+ MapMask(1); -+ grub_memcpy(mem, s1, 38400); -+ -+ /* plano 2 */ -+ MapMask(2); -+ grub_memcpy(mem, s2, 38400); -+ -+ /* plano 3 */ -+ MapMask(4); -+ grub_memcpy(mem, s4, 38400); -+ -+ /* plano 4 */ -+ MapMask(8); -+ grub_memcpy(mem, s8, 38400); -+ -+ MapMask(15); -+ -+} -+ -+void graphics_setcolorstate (color_state state) { -+ switch (state) { -+ case COLOR_STATE_STANDARD: -+ graphics_current_color = graphics_standard_color; -+ break; -+ case COLOR_STATE_NORMAL: -+ graphics_current_color = graphics_normal_color; -+ break; -+ case COLOR_STATE_HIGHLIGHT: -+ graphics_current_color = graphics_highlight_color; -+ break; -+ default: -+ graphics_current_color = graphics_standard_color; -+ break; -+ } -+ -+ graphics_color_state = state; -+} -+ -+void graphics_setcolor (int normal_color, int highlight_color) { -+ graphics_normal_color = normal_color; -+ graphics_highlight_color = highlight_color; -+ -+ graphics_setcolorstate (graphics_color_state); -+} -+ -+void graphics_setcursor (int on) { -+ /* FIXME: we don't have a cursor in graphics */ -+ return; -+} -+ -+/* Read in the splashscreen image and set the palette up appropriately. -+ * Format of splashscreen is an xpm (can be gzipped) with 16 colors and -+ * 640x480. */ -+int read_image(char *s) -+{ -+ char buf[32], pal[16]; -+ unsigned char c, base, mask, *s1, *s2, *s4, *s8; -+ unsigned i, len, idx, colors, x, y, width, height; -+ -+ if (!grub_open(s)) -+ return 0; -+ -+ /* read header */ -+ if (!grub_read((char*)&buf, 10) || grub_memcmp(buf, "/* XPM */\n", 10)) { -+ grub_close(); -+ return 0; -+ } -+ -+ /* parse info */ -+ while (grub_read(&c, 1)) { -+ if (c == '"') -+ break; -+ } -+ -+ while (grub_read(&c, 1) && (c == ' ' || c == '\t')) -+ ; -+ -+ i = 0; -+ width = c - '0'; -+ while (grub_read(&c, 1)) { -+ if (c >= '0' && c <= '9') -+ width = width * 10 + c - '0'; -+ else -+ break; -+ } -+ while (grub_read(&c, 1) && (c == ' ' || c == '\t')) -+ ; -+ -+ height = c - '0'; -+ while (grub_read(&c, 1)) { -+ if (c >= '0' && c <= '9') -+ height = height * 10 + c - '0'; -+ else -+ break; -+ } -+ while (grub_read(&c, 1) && (c == ' ' || c == '\t')) -+ ; -+ -+ colors = c - '0'; -+ while (grub_read(&c, 1)) { -+ if (c >= '0' && c <= '9') -+ colors = colors * 10 + c - '0'; -+ else -+ break; -+ } -+ -+ base = 0; -+ while (grub_read(&c, 1) && c != '"') -+ ; -+ -+ /* palette */ -+ for (i = 0, idx = 1; i < colors; i++) { -+ len = 0; -+ -+ while (grub_read(&c, 1) && c != '"') -+ ; -+ grub_read(&c, 1); /* char */ -+ base = c; -+ grub_read(buf, 4); /* \t c # */ -+ -+ while (grub_read(&c, 1) && c != '"') { -+ if (len < sizeof(buf)) -+ buf[len++] = c; -+ } -+ -+ if (len == 6 && idx < 15) { -+ int r = ((hex(buf[0]) << 4) | hex(buf[1])) >> 2; -+ int g = ((hex(buf[2]) << 4) | hex(buf[3])) >> 2; -+ int b = ((hex(buf[4]) << 4) | hex(buf[5])) >> 2; -+ -+ pal[idx] = base; -+ graphics_set_palette(idx, r, g, b); -+ ++idx; -+ } -+ } -+ -+ x = y = len = 0; -+ -+ s1 = (unsigned char*)VSHADOW1; -+ s2 = (unsigned char*)VSHADOW2; -+ s4 = (unsigned char*)VSHADOW4; -+ s8 = (unsigned char*)VSHADOW8; -+ -+ for (i = 0; i < 38400; i++) -+ s1[i] = s2[i] = s4[i] = s8[i] = 0; -+ -+ /* parse xpm data */ -+ while (y < height) { -+ while (1) { -+ if (!grub_read(&c, 1)) { -+ grub_close(); -+ return 0; -+ } -+ if (c == '"') -+ break; -+ } -+ -+ while (grub_read(&c, 1) && c != '"') { -+ for (i = 1; i < 15; i++) -+ if (pal[i] == c) { -+ c = i; -+ break; -+ } -+ -+ mask = 0x80 >> (x & 7); -+ if (c & 1) -+ s1[len + (x >> 3)] |= mask; -+ if (c & 2) -+ s2[len + (x >> 3)] |= mask; -+ if (c & 4) -+ s4[len + (x >> 3)] |= mask; -+ if (c & 8) -+ s8[len + (x >> 3)] |= mask; -+ -+ if (++x >= 640) { -+ x = 0; -+ -+ if (y < 480) -+ len += 80; -+ ++y; -+ } -+ } -+ } -+ -+ grub_close(); -+ -+ graphics_set_palette(0, (background >> 16), (background >> 8) & 63, -+ background & 63); -+ graphics_set_palette(15, (foreground >> 16), (foreground >> 8) & 63, -+ foreground & 63); -+ graphics_set_palette(0x11, (border >> 16), (border >> 8) & 63, -+ border & 63); -+ -+ return 1; -+} -+ -+ -+/* Convert a character which is a hex digit to the appropriate integer */ -+int hex(int v) -+{ -+ if (v >= 'A' && v <= 'F') -+ return (v - 'A' + 10); -+ if (v >= 'a' && v <= 'f') -+ return (v - 'a' + 10); -+ return (v - '0'); -+} -+ -+ -+/* move the graphics cursor location to col, row */ -+static void graphics_setxy(int col, int row) { -+ if (col >= x0 && col < x1) { -+ fontx = col; -+ cursorX = col << 3; -+ } -+ if (row >= y0 && row < y1) { -+ fonty = row; -+ cursorY = row << 4; -+ } -+} -+ -+/* scroll the screen */ -+static void graphics_scroll() { -+ int i, j; -+ -+ /* we don't want to scroll recursively... that would be bad */ -+ if (no_scroll) -+ return; -+ no_scroll = 1; -+ -+ /* move everything up a line */ -+ for (j = y0 + 1; j < y1; j++) { -+ graphics_gotoxy(x0, j - 1); -+ for (i = x0; i < x1; i++) { -+ graphics_putchar(text[j * 80 + i]); -+ } -+ } -+ -+ /* last line should be blank */ -+ graphics_gotoxy(x0, y1 - 1); -+ for (i = x0; i < x1; i++) -+ graphics_putchar(' '); -+ graphics_setxy(x0, y1 - 1); -+ -+ no_scroll = 0; -+} -+ -+ -+void graphics_cursor(int set) { -+ unsigned char *pat, *mem, *ptr, chr[16 << 2]; -+ int i, ch, invert, offset; -+ -+ if (set && no_scroll) -+ return; -+ -+ offset = cursorY * 80 + fontx; -+ ch = text[fonty * 80 + fontx] & 0xff; -+ invert = (text[fonty * 80 + fontx] & 0xff00) != 0; -+ pat = font8x16 + (ch << 4); -+ -+ mem = (unsigned char*)VIDEOMEM + offset; -+ -+ if (!set) { -+ for (i = 0; i < 16; i++) { -+ unsigned char mask = pat[i]; -+ -+ if (!invert) { -+ chr[i ] = ((unsigned char*)VSHADOW1)[offset]; -+ chr[16 + i] = ((unsigned char*)VSHADOW2)[offset]; -+ chr[32 + i] = ((unsigned char*)VSHADOW4)[offset]; -+ chr[48 + i] = ((unsigned char*)VSHADOW8)[offset]; -+ -+ /* FIXME: if (shade) */ -+ if (1) { -+ if (ch == DISP_VERT || ch == DISP_LL || -+ ch == DISP_UR || ch == DISP_LR) { -+ unsigned char pmask = ~(pat[i] >> 1); -+ -+ chr[i ] &= pmask; -+ chr[16 + i] &= pmask; -+ chr[32 + i] &= pmask; -+ chr[48 + i] &= pmask; -+ } -+ if (i > 0 && ch != DISP_VERT) { -+ unsigned char pmask = ~(pat[i - 1] >> 1); -+ -+ chr[i ] &= pmask; -+ chr[16 + i] &= pmask; -+ chr[32 + i] &= pmask; -+ chr[48 + i] &= pmask; -+ if (ch == DISP_HORIZ || ch == DISP_UR || ch == DISP_LR) { -+ pmask = ~pat[i - 1]; -+ -+ chr[i ] &= pmask; -+ chr[16 + i] &= pmask; -+ chr[32 + i] &= pmask; -+ chr[48 + i] &= pmask; -+ } -+ } -+ } -+ chr[i ] |= mask; -+ chr[16 + i] |= mask; -+ chr[32 + i] |= mask; -+ chr[48 + i] |= mask; -+ -+ offset += 80; -+ } -+ else { -+ chr[i ] = mask; -+ chr[16 + i] = mask; -+ chr[32 + i] = mask; -+ chr[48 + i] = mask; -+ } -+ } -+ } -+ else { -+ MapMask(15); -+ ptr = mem; -+ for (i = 0; i < 16; i++, ptr += 80) { -+ cursorBuf[i] = pat[i]; -+ *ptr = ~pat[i]; -+ } -+ return; -+ } -+ -+ offset = 0; -+ for (i = 1; i < 16; i <<= 1, offset += 16) { -+ int j; -+ -+ MapMask(i); -+ ptr = mem; -+ for (j = 0; j < 16; j++, ptr += 80) -+ *ptr = chr[j + offset]; -+ } -+ -+ MapMask(15); -+} -+ -+#endif /* SUPPORT_GRAPHICS */ ---- grub-0.95/stage2/Makefile.am.graphics 2004-06-13 13:57:27.000000000 -0400 -+++ grub-0.95/stage2/Makefile.am 2004-06-18 17:36:58.289966104 -0400 -@@ -7,7 +7,7 @@ - fat.h filesys.h freebsd.h fs.h hercules.h i386-elf.h \ - imgact_aout.h iso9660.h jfs.h mb_header.h mb_info.h md5.h \ - nbi.h pc_slice.h serial.h shared.h smp-imps.h term.h \ -- terminfo.h tparm.h nbi.h ufs2.h vstafs.h xfs.h -+ terminfo.h tparm.h nbi.h ufs2.h vstafs.h xfs.h graphics.h - EXTRA_DIST = setjmp.S apm.S $(noinst_SCRIPTS) - - # For <stage1.h>. -@@ -19,7 +19,7 @@ - disk_io.c fsys_ext2fs.c fsys_fat.c fsys_ffs.c fsys_iso9660.c \ - fsys_jfs.c fsys_minix.c fsys_reiserfs.c fsys_ufs2.c \ - fsys_vstafs.c fsys_xfs.c gunzip.c md5.c serial.c stage2.c \ -- terminfo.c tparm.c -+ terminfo.c tparm.c graphics.c - libgrub_a_CFLAGS = $(GRUB_CFLAGS) -I$(top_srcdir)/lib \ - -DGRUB_UTIL=1 -DFSYS_EXT2FS=1 -DFSYS_FAT=1 -DFSYS_FFS=1 \ - -DFSYS_ISO9660=1 -DFSYS_JFS=1 -DFSYS_MINIX=1 -DFSYS_REISERFS=1 \ -@@ -80,8 +80,14 @@ - HERCULES_FLAGS = - endif - -+if GRAPHICS_SUPPORT -+GRAPHICS_FLAGS = -DSUPPORT_GRAPHICS=1 -+else -+GRAPHICS_FLAGS = -+endif -+ - STAGE2_COMPILE = $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ -- $(NETBOOT_FLAGS) $(SERIAL_FLAGS) $(HERCULES_FLAGS) -+ $(NETBOOT_FLAGS) $(SERIAL_FLAGS) $(HERCULES_FLAGS) $(GRAPHICS_FLAGS) - - STAGE1_5_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,2000 - STAGE1_5_COMPILE = $(STAGE2_COMPILE) -DNO_DECOMPRESSION=1 -DSTAGE1_5=1 -@@ -91,7 +97,8 @@ - cmdline.c common.c console.c disk_io.c fsys_ext2fs.c \ - fsys_fat.c fsys_ffs.c fsys_iso9660.c fsys_jfs.c fsys_minix.c \ - fsys_reiserfs.c fsys_ufs2.c fsys_vstafs.c fsys_xfs.c gunzip.c \ -- hercules.c md5.c serial.c smp-imps.c stage2.c terminfo.c tparm.c -+ hercules.c md5.c serial.c smp-imps.c stage2.c terminfo.c tparm.c \ -+ graphics.c - pre_stage2_exec_CFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS) - pre_stage2_exec_CCASFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS) - pre_stage2_exec_LDFLAGS = $(PRE_STAGE2_LINK) ---- grub-0.95/stage2/term.h.graphics 2003-07-09 07:45:53.000000000 -0400 -+++ grub-0.95/stage2/term.h 2004-06-18 17:35:52.496968160 -0400 -@@ -60,6 +60,8 @@ - const char *name; - /* The feature flags defined above. */ - unsigned long flags; -+ /* Default for maximum number of lines if not specified */ -+ unsigned short max_lines; - /* Put a character. */ - void (*putchar) (int c); - /* Check if any input character is available. */ -@@ -79,6 +81,11 @@ - void (*setcolor) (int normal_color, int highlight_color); - /* Turn on/off the cursor. */ - int (*setcursor) (int on); -+ -+ /* function to start a terminal */ -+ int (*startup) (void); -+ /* function to use to shutdown a terminal */ -+ void (*shutdown) (void); - }; - - /* This lists up available terminals. */ -@@ -124,4 +131,23 @@ - int hercules_setcursor (int on); - #endif - -+#ifdef SUPPORT_GRAPHICS -+extern int foreground, background, border, graphics_inited; -+ -+void graphics_set_splash(char *splashfile); -+int set_videomode (int mode); -+void graphics_putchar (int c); -+int graphics_getxy(void); -+void graphics_gotoxy(int x, int y); -+void graphics_cls(void); -+void graphics_setcolorstate (color_state state); -+void graphics_setcolor (int normal_color, int highlight_color); -+void graphics_setcursor (int on); -+int graphics_init(void); -+void graphics_end(void); -+ -+int hex(int v); -+void graphics_set_palette(int idx, int red, int green, int blue); -+#endif /* SUPPORT_GRAPHICS */ -+ - #endif /* ! GRUB_TERM_HEADER */ ---- /dev/null 2004-02-23 16:02:56.000000000 -0500 -+++ grub-0.95/stage2/graphics.h 2004-06-18 17:35:52.490969072 -0400 -@@ -0,0 +1,42 @@ -+/* graphics.h - graphics console interface */ -+/* -+ * GRUB -- GRand Unified Bootloader -+ * Copyright (C) 2002 Free Software Foundation, Inc. -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -+ */ -+ -+#ifndef GRAPHICS_H -+#define GRAPHICS_H -+ -+/* magic constant */ -+#define VIDEOMEM 0xA0000 -+ -+/* function prototypes */ -+char *graphics_get_splash(void); -+ -+int read_image(char *s); -+void graphics_cursor(int set); -+ -+/* function prototypes for asm functions */ -+void * graphics_get_font(); -+void graphics_set_palette(int idx, int red, int green, int blue); -+void set_int1c_handler(); -+void unset_int1c_handler(); -+ -+extern short cursorX, cursorY; -+extern char cursorBuf[16]; -+ -+#endif /* GRAPHICS_H */ ---- grub-0.95/stage2/shared.h.graphics 2004-06-18 17:35:52.372987008 -0400 -+++ grub-0.95/stage2/shared.h 2004-06-18 17:35:52.492968768 -0400 -@@ -873,6 +873,7 @@ - int grub_tolower (int c); - int grub_isspace (int c); - int grub_strncat (char *s1, const char *s2, int n); -+void grub_memcpy(void *dest, const void *src, int len); - void *grub_memmove (void *to, const void *from, int len); - void *grub_memset (void *start, int c, int len); - int grub_strncat (char *s1, const char *s2, int n); ---- grub-0.95/stage2/char_io.c.graphics 2004-05-23 12:45:43.000000000 -0400 -+++ grub-0.95/stage2/char_io.c 2004-06-18 17:35:52.485969832 -0400 -@@ -35,6 +35,7 @@ - { - "console", - 0, -+ 24, - console_putchar, - console_checkkey, - console_getkey, -@@ -43,13 +44,16 @@ - console_cls, - console_setcolorstate, - console_setcolor, -- console_setcursor -+ console_setcursor, -+ 0, -+ 0 - }, - #ifdef SUPPORT_SERIAL - { - "serial", - /* A serial device must be initialized. */ - TERM_NEED_INIT, -+ 24, - serial_putchar, - serial_checkkey, - serial_getkey, -@@ -58,6 +62,8 @@ - serial_cls, - serial_setcolorstate, - 0, -+ 0, -+ 0, - 0 - }, - #endif /* SUPPORT_SERIAL */ -@@ -65,6 +71,7 @@ - { - "hercules", - 0, -+ 24, - hercules_putchar, - console_checkkey, - console_getkey, -@@ -73,9 +80,28 @@ - hercules_cls, - hercules_setcolorstate, - hercules_setcolor, -- hercules_setcursor -+ hercules_setcursor, -+ 0, -+ 0 - }, - #endif /* SUPPORT_HERCULES */ -+#ifdef SUPPORT_GRAPHICS -+ { "graphics", -+ TERM_NEED_INIT, /* flags */ -+ 30, /* number of lines */ -+ graphics_putchar, /* putchar */ -+ console_checkkey, /* checkkey */ -+ console_getkey, /* getkey */ -+ graphics_getxy, /* getxy */ -+ graphics_gotoxy, /* gotoxy */ -+ graphics_cls, /* cls */ -+ graphics_setcolorstate, /* setcolorstate */ -+ graphics_setcolor, /* setcolor */ -+ graphics_setcursor, /* nocursor */ -+ graphics_init, /* initialize */ -+ graphics_end /* shutdown */ -+ }, -+#endif /* SUPPORT_GRAPHICS */ - /* This must be the last entry. */ - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } - }; -@@ -1046,13 +1072,15 @@ - the following grub_printf call will print newlines. */ - count_lines = -1; - -+ grub_printf("\n"); - if (current_term->setcolorstate) - current_term->setcolorstate (COLOR_STATE_HIGHLIGHT); - -- grub_printf ("\n[Hit return to continue]"); -+ grub_printf ("[Hit return to continue]"); - - if (current_term->setcolorstate) - current_term->setcolorstate (COLOR_STATE_NORMAL); -+ - - do - { -@@ -1090,7 +1118,7 @@ - cls (void) - { - /* If the terminal is dumb, there is no way to clean the terminal. */ -- if (current_term->flags & TERM_DUMB) -+ if (current_term->flags & TERM_DUMB) - grub_putchar ('\n'); - else - current_term->cls (); -@@ -1214,6 +1242,16 @@ - return ! errnum; - } - -+void -+grub_memcpy(void *dest, const void *src, int len) -+{ -+ int i; -+ register char *d = (char*)dest, *s = (char*)src; -+ -+ for (i = 0; i < len; i++) -+ d[i] = s[i]; -+} -+ - void * - grub_memmove (void *to, const void *from, int len) - { ---- grub-0.95/configure.ac.graphics 2004-06-18 17:35:52.211011632 -0400 -+++ grub-0.95/configure.ac 2004-06-18 17:35:52.498967856 -0400 -@@ -595,6 +595,11 @@ - [ --enable-diskless enable diskless support]) - AM_CONDITIONAL(DISKLESS_SUPPORT, test "x$enable_diskless" = xyes) - -+dnl Graphical splashscreen support -+AC_ARG_ENABLE(graphics, -+ [ --disable-graphics disable graphics terminal support]) -+AM_CONDITIONAL(GRAPHICS_SUPPORT, test "x$enable_graphics" != xno) -+ - dnl Hercules terminal - AC_ARG_ENABLE(hercules, - [ --disable-hercules disable hercules terminal support]) diff --git a/src/patches/grub-0.95-hiddenmenu-tweak.patch b/src/patches/grub-0.95-hiddenmenu-tweak.patch deleted file mode 100644 index 56fb083..0000000 --- a/src/patches/grub-0.95-hiddenmenu-tweak.patch +++ /dev/null @@ -1,39 +0,0 @@ ---- grub-0.95/stage2/stage2.c.hidden 2004-09-30 16:39:38.028893664 -0400 -+++ grub-0.95/stage2/stage2.c 2004-09-30 16:42:07.981097464 -0400 -@@ -235,6 +235,8 @@ - char *cur_entry = 0; - struct term_entry *prev_term = NULL; - -+ cls(); -+ - /* - * Main loop for menu UI. - */ -@@ -262,14 +264,16 @@ - /* Get current time. */ - while ((time1 = getrtsecs ()) == 0xFF) - ; -+ grub_printf("\rPress any key to enter the menu\n\n\n"); - - while (1) - { - /* Check if ESC is pressed. */ -- if (checkkey () != -1 && ASCII_CHAR (getkey ()) == '\e') -+ if (checkkey () != -1) - { - grub_timeout = -1; - show_menu = 1; -+ getkey (); - break; - } - -@@ -288,7 +292,8 @@ - grub_timeout--; - - /* Print a message. */ -- grub_printf ("\rPress `ESC' to enter the menu... %d ", -+ grub_printf ("\rBooting %s in %d seconds...", -+ get_entry(menu_entries, first_entry + entryno, 0), - grub_timeout); - } - } diff --git a/src/patches/grub-0.95-md-mbr.patch b/src/patches/grub-0.95-md-mbr.patch deleted file mode 100644 index 1aaa3e9..0000000 --- a/src/patches/grub-0.95-md-mbr.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- grub-0.95/util/grub-install.in.md-mbr 2005-02-20 17:56:48.000000000 -0500 -+++ grub-0.95/util/grub-install.in 2005-02-20 17:57:12.000000000 -0500 -@@ -444,7 +444,7 @@ - /dev/*) - install_device=`resolve_symlink "$install_device"` - for install_drive in `find_real_devs $install_device` ; do -- install_drive=`convert $install_drive` -+ install_drive=`convert $install_drive | sed 's/,[0-9]*)/)/'` - if [ "x$install_drive" = "x" ]; then - exit 1 - fi diff --git a/src/patches/grub-0.95-md-rework.patch b/src/patches/grub-0.95-md-rework.patch deleted file mode 100644 index cff1977..0000000 --- a/src/patches/grub-0.95-md-rework.patch +++ /dev/null @@ -1,183 +0,0 @@ ---- grub-0.95/util/grub-install.in.md2 2005-01-03 14:49:18.133866107 -0500 -+++ grub-0.95/util/grub-install.in 2005-01-03 16:35:44.923732271 -0500 -@@ -35,6 +35,7 @@ - rootdir= - grub_prefix=/boot/grub - -+install_drives= - install_device= - no_floppy= - force_lba= -@@ -272,6 +273,30 @@ - done - } - -+ -+dump_boot_block () { -+ sync -+ $grub_shell --batch $no_floppy --device-map=$device_map <<EOF >$log_file -+dump ${root_drive}${tmp} ${img_file} -+quit -+EOF -+} -+ -+ -+install_boot_block () { -+ # Before all invocations of the grub shell, call sync to make sure -+ # the raw device is in sync with any bufferring in filesystems. -+ sync -+ -+ # Now perform the installation. -+ $grub_shell --batch $no_floppy --device-map=$device_map <<EOF >>$log_file -+root $1 -+setup $force_lba --stage2=$grubdir/stage2 --prefix=$grub_prefix $2 -+quit -+EOF -+} -+ -+ - # Check the arguments. - for option in "$@"; do - case "$option" in -@@ -416,28 +441,32 @@ - # Check for INSTALL_DEVICE. - case "$install_device" in - /dev/*) -- # If we are running md on a Linux box, just use the first physical device -- # at this point. - install_device=`resolve_symlink "$install_device"` -- install_device=`find_real_devs $install_device | awk '{print $1}'` -- -- install_drive=`convert "$install_device"` -- # I don't know why, but some shells wouldn't die if exit is -- # called in a function. -- if test "x$install_drive" = x; then -+ for install_drive in `find_real_devs $install_device` ; do -+ install_drive=`convert $install_drive` -+ if [ "x$install_drive" = "x" ]; then -+ exit 1 -+ fi -+ install_drives="${install_drives} ${install_drive}" -+ done -+ unset install_drive -+ -+ if test "x$install_drives" = x ; then - exit 1 - fi ;; - ([hf]d[0-9]*)) -- install_drive="$install_device" ;; -+ install_drives="$install_device" ;; - [hf]d[0-9]*) - # The GRUB format with no parenthesis. -- install_drive="($install_device)" ;; -+ install_drives="($install_device)" ;; - *) - echo "Format of install_device not recognized." 1>&2 - usage - exit 1 ;; - esac - -+unset install_device -+ - # Get the root drive. - root_device=`find_device ${rootdir}` - bootdir_device=`find_device ${bootdir}` -@@ -465,41 +494,39 @@ - test -n "$mkimg" && img_file=`$mkimg` - test -n "$mklog" && log_file=`$mklog` - --for real_device in `find_real_devs $root_device`; do -- # Convert the root deviceto a GRUB drive. -- root_drive=`convert "$real_device"` -- if [ "x$root_drive" = x ]; then -- exit 1 -- fi -+# There's not a real root device, so just pick the first -+if is_raid1_device $root_device ; then -+ root_device=`find_real_devs $root_device | awk '{print $1}'` -+fi - -- for file in ${grubdir}/stage1 ${grubdir}/stage2 ${grubdir}/*stage1_5; do -- count=5 -- tmp=`echo $file | sed "s|^${grubdir}|${grub_prefix}|"` -- while test $count -gt 0; do -- sync -- $grub_shell --batch $no_floppy --device-map=$device_map \ -- <<EOF >$log_file --dump ${root_drive}${tmp} ${img_file} --quit --EOF -- if grep "Error [0-9]*: " $log_file >/dev/null; then -- : -- elif cmp $file $img_file >/dev/null; then -- break -- fi -- sleep 1 -- count=`expr $count - 1` -- done -- if test $count -eq 0; then -- echo "The file $file not read correctly." 1>&2 -- exit 1 -- fi -- done -+# Convert the root deviceto a GRUB drive. -+root_drive=`convert "$root_device"` -+if [ "x$root_drive" = x ]; then -+ exit 1 -+fi - -- rm -f $img_file -- rm -f $log_file -+for file in ${grubdir}/stage1 ${grubdir}/stage2 ${grubdir}/*stage1_5; do -+ count=5 -+ tmp=`echo $file | sed "s|^${grubdir}|${grub_prefix}|"` -+ while test $count -gt 0; do -+ dump_boot_block $root_drive $img_file -+ if grep "Error [0-9]*: " $log_file >/dev/null; then -+ : -+ elif cmp $file $img_file >/dev/null; then -+ break -+ fi -+ sleep 1 -+ count=`expr $count - 1` -+ done -+ if test $count -eq 0; then -+ echo "The file $file not read correctly." 1>&2 -+ exit 1 -+ fi - done - -+rm -f $img_file -+rm -f $log_file -+ - if ! test -e ${grubdir}/grub.conf ; then - test -e ${grubdir}/menu.lst && ln -s ./menu.lst ${grubdir}/grub.conf - fi -@@ -507,24 +534,13 @@ - # Create a safe temporary file. - test -n "$mklog" && log_file=`$mklog` - --for real_device in `find_real_devs $root_device`; do -+for install_drive in $install_drives; do - # Convert the root deviceto a GRUB drive. -- root_drive=`convert "$real_device"` -+ root_drive=`convert "$root_device"` - if [ "x$root_drive" = x ]; then - exit 1 - fi -- -- # Before all invocations of the grub shell, call sync to make sure -- # the raw device is in sync with any bufferring in filesystems. -- sync -- -- # Now perform the installation. -- $grub_shell --batch $no_floppy --device-map=$device_map <<EOF >>$log_file --root $root_drive --setup $force_lba --stage2=$grubdir/stage2 --prefix=$grub_prefix $root_drive --quit --EOF -- -+ install_boot_block $root_drive $install_drive - done - - if grep "Error [0-9]*: " $log_file >/dev/null ; then diff --git a/src/patches/grub-0.95-md.patch b/src/patches/grub-0.95-md.patch deleted file mode 100644 index 9e4ff89..0000000 --- a/src/patches/grub-0.95-md.patch +++ /dev/null @@ -1,183 +0,0 @@ ---- grub-0.95/util/grub-install.in.support_md 2004-12-17 17:50:45.000000000 -0500 -+++ grub-0.95/util/grub-install.in 2004-12-19 19:19:20.509409160 -0500 -@@ -207,6 +207,43 @@ - echo "$tmp_fname" - } - -+# Usage: is_raid1_device devicename -+# Returns 0 if devicename is a raid1 md device, 1 if it is not. -+is_raid1_device () { -+ case "$host_os" in -+ linux*) -+ level=`mdadm --query --detail $1 2>/dev/null | \ -+ awk '/Raid Level :/ {print $4}'` -+ if [ "$level" = "raid1" ]; then -+ return 0 -+ fi -+ ;; -+ esac -+ return 1 -+} -+ -+# Usage: find_real_devs device -+# Returns space separated list of devices for linux if device is -+# a raid1 device. In all other cases, the provided value is returned. -+find_real_devs () { -+ source_device=$1 -+ case "$host_os" in -+ linux*) -+ if is_raid1_device $source_device ; then -+ list="" -+ for device in `mdadm --query --detail "${source_device}" | \ -+ awk '//dev/[^(md)]/ {print $7}'` ; do -+ list="$list $device" -+ done -+ echo $list -+ return 0 -+ fi -+ ;; -+ esac -+ echo $source_device -+ return 0 -+} -+ - # Usage: find_device file - # Find block device on which the file resides. - find_device () { -@@ -219,7 +256,7 @@ - exit 1 - fi - -- tmp_fname=`resolve_symlink $tmp_fname` -+ tmp_fname=`resolve_symlink $tmp_fname` - - echo "$tmp_fname" - } -@@ -379,7 +416,11 @@ - # Check for INSTALL_DEVICE. - case "$install_device" in - /dev/*) -+ # If we are running md on a Linux box, just use the first physical device -+ # at this point. - install_device=`resolve_symlink "$install_device"` -+ install_device=`find_real_devs $install_device | awk '{print $1}'` -+ - install_drive=`convert "$install_device"` - # I don't know why, but some shells wouldn't die if exit is - # called in a function. -@@ -408,14 +449,7 @@ - grub_prefix="/grub" - fi - --# Convert the root device to a GRUB drive. --root_drive=`convert "$root_device"` --if test "x$root_drive" = x; then -- exit 1 --fi -- --# Check if the root directory exists in the same device as the grub --# directory. -+# Check if the root directory exists in the same device as the grub directory. - grubdir_device=`find_device ${grubdir}` - - if test "x$grubdir_device" != "x$root_device"; then -@@ -431,30 +465,40 @@ - test -n "$mkimg" && img_file=`$mkimg` - test -n "$mklog" && log_file=`$mklog` - --for file in ${grubdir}/stage1 ${grubdir}/stage2 ${grubdir}/*stage1_5; do -- count=5 -- tmp=`echo $file | sed "s|^${grubdir}|${grub_prefix}|"` -- while test $count -gt 0; do -- $grub_shell --batch $no_floppy --device-map=$device_map <<EOF >$log_file -+for real_device in `find_real_devs $root_device`; do -+ # Convert the root deviceto a GRUB drive. -+ root_drive=`convert "$real_device"` -+ if [ "x$root_drive" = x ]; then -+ exit 1 -+ fi -+ -+ for file in ${grubdir}/stage1 ${grubdir}/stage2 ${grubdir}/*stage1_5; do -+ count=5 -+ tmp=`echo $file | sed "s|^${grubdir}|${grub_prefix}|"` -+ while test $count -gt 0; do -+ sync -+ $grub_shell --batch $no_floppy --device-map=$device_map \ -+ <<EOF >$log_file - dump ${root_drive}${tmp} ${img_file} - quit - EOF -- if grep "Error [0-9]*: " $log_file >/dev/null; then -- : -- elif cmp $file $img_file >/dev/null; then -- break -+ if grep "Error [0-9]*: " $log_file >/dev/null; then -+ : -+ elif cmp $file $img_file >/dev/null; then -+ break -+ fi -+ sleep 1 -+ count=`expr $count - 1` -+ done -+ if test $count -eq 0; then -+ echo "The file $file not read correctly." 1>&2 -+ exit 1 - fi -- sleep 1 -- count=`expr $count - 1` - done -- if test $count -eq 0; then -- echo "The file $file not read correctly." 1>&2 -- exit 1 -- fi --done - --rm -f $img_file --rm -f $log_file -+ rm -f $img_file -+ rm -f $log_file -+done - - if ! test -e ${grubdir}/grub.conf ; then - test -e ${grubdir}/menu.lst && ln -s ./menu.lst ${grubdir}/grub.conf -@@ -463,21 +507,33 @@ - # Create a safe temporary file. - test -n "$mklog" && log_file=`$mklog` - --# Before all invocations of the grub shell, call sync to make sure --# the raw device is in sync with any bufferring in filesystems. --sync -+for real_device in `find_real_devs $root_device`; do -+ # Convert the root deviceto a GRUB drive. -+ root_drive=`convert "$real_device"` -+ if [ "x$root_drive" = x ]; then -+ exit 1 -+ fi -+ -+ # Before all invocations of the grub shell, call sync to make sure -+ # the raw device is in sync with any bufferring in filesystems. -+ sync - --# Now perform the installation. --$grub_shell --batch $no_floppy --device-map=$device_map <<EOF >$log_file -+ # Now perform the installation. -+ $grub_shell --batch $no_floppy --device-map=$device_map <<EOF >>$log_file - root $root_drive --setup $force_lba --stage2=$grubdir/stage2 --prefix=$grub_prefix $install_drive -+setup $force_lba --stage2=$grubdir/stage2 --prefix=$grub_prefix $root_drive - quit - EOF - --if grep "Error [0-9]*: " $log_file >/dev/null || test $debug = yes; then -+done -+ -+if grep "Error [0-9]*: " $log_file >/dev/null ; then - cat $log_file 1>&2 - exit 1 - fi -+if test $debug = yes; then -+ cat $log_file 1>&2 -+fi - - rm -f $log_file - diff --git a/src/patches/grub-0.95-moreraid.patch b/src/patches/grub-0.95-moreraid.patch deleted file mode 100644 index 39db234..0000000 --- a/src/patches/grub-0.95-moreraid.patch +++ /dev/null @@ -1,100 +0,0 @@ ---- grub-0.95/lib/device.c.moreraid 2004-11-30 17:09:36.736099360 -0500 -+++ grub-0.95/lib/device.c 2004-11-30 17:12:17.319686944 -0500 -@@ -544,6 +544,17 @@ - } - - static void -+get_cciss_disk_name (char * name, int controller, int drive) -+{ -+ sprintf (name, "/dev/cciss/c%dd%d", controller, drive); -+} -+ -+static void -+get_cpqarray_disk_name (char * name, int controller, int drive) -+{ -+ sprintf (name, "/dev/ida/c%dd%d", controller, drive); -+} -+static void - get_ataraid_disk_name (char *name, int unit) - { - sprintf (name, "/dev/ataraid/d%c", unit + '0'); -@@ -920,7 +931,7 @@ - - for (controller = 0; controller < 8; controller++) - { -- for (drive = 0; drive < 15; drive++) -+ for (drive = 0; drive < 32; drive++) - { - char name[24]; - -@@ -940,6 +951,70 @@ - } - } - #endif /* __linux__ */ -+ -+#ifdef __linux__ -+ /* This is for cciss - we have -+ /dev/cciss/c<controller>d<logical drive>p<partition>. -+ -+ cciss driver currently supports up to 8 controllers, 16 logical -+ drives, and 7 partitions. */ -+ { -+ int controller, drive; -+ -+ for (controller = 0; controller < 8; controller++) -+ { -+ for (drive = 0; drive < 16; drive++) -+ { -+ char name[24]; -+ -+ get_cciss_disk_name (name, controller, drive); -+ if (check_device (name)) -+ { -+ (*map)[num_hd + 0x80] = strdup (name); -+ assert ((*map)[num_hd + 0x80]); -+ -+ /* If the device map file is opened, write the map. */ -+ if (fp) -+ fprintf (fp, "(hd%d)\t%s\n", num_hd, name); -+ -+ num_hd++; -+ } -+ } -+ } -+ } -+#endif /* __linux__ */ -+ -+#ifdef __linux__ -+ /* This is for cpqarray - we have -+ /dev/ida/c<controller>d<logical drive>p<partition>. -+ -+ cpqarray driver currently supports up to 8 controllers, 16 logical -+ drives, and 15 partitions. */ -+ { -+ int controller, drive; -+ -+ for (controller = 0; controller < 8; controller++) -+ { -+ for (drive = 0; drive < 15; drive++) -+ { -+ char name[24]; -+ -+ get_cpqarray_disk_name (name, controller, drive); -+ if (check_device (name)) -+ { -+ (*map)[num_hd + 0x80] = strdup (name); -+ assert ((*map)[num_hd + 0x80]); -+ -+ /* If the device map file is opened, write the map. */ -+ if (fp) -+ fprintf (fp, "(hd%d)\t%s\n", num_hd, name); -+ -+ num_hd++; -+ } -+ } -+ } -+ } -+#endif /* __linux__ */ - - /* OK, close the device map file if opened. */ - if (fp) diff --git a/src/patches/grub-0.95-nonmbr.patch b/src/patches/grub-0.95-nonmbr.patch deleted file mode 100644 index 35bd5f3..0000000 --- a/src/patches/grub-0.95-nonmbr.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- grub-0.95/util/grub-install.in.nonmbr 2005-03-16 10:02:50.000000000 -0500 -+++ grub-0.95/util/grub-install.in 2005-03-16 10:02:13.000000000 -0500 -@@ -444,7 +444,10 @@ - /dev/*) - install_device=`resolve_symlink "$install_device"` - for install_drive in `find_real_devs $install_device` ; do -- install_drive=`convert $install_drive | sed 's/,[0-9]*)/)/'` -+ install_drive=`convert $install_drive` -+ if is_raid1_device $install_device; then -+ install_drive=`echo $install_drive | sed 's/,[0-9]*)/)/'` -+ fi - if [ "x$install_drive" = "x" ]; then - exit 1 - fi diff --git a/src/patches/grub-0.95-odirect.patch b/src/patches/grub-0.95-odirect.patch deleted file mode 100644 index 12dd9d9..0000000 --- a/src/patches/grub-0.95-odirect.patch +++ /dev/null @@ -1,115 +0,0 @@ ---- grub-0.95/grub/asmstub.c.odirect 2004-11-30 16:58:06.577019488 -0500 -+++ grub-0.95/grub/asmstub.c 2004-11-30 16:59:56.057375944 -0500 -@@ -53,6 +53,9 @@ - # ifndef BLKFLSBUF - # define BLKFLSBUF _IO (0x12,97) /* flush buffer cache */ - # endif /* ! BLKFLSBUF */ -+# ifndef O_DIRECT -+# define O_DIRECT 040000 -+# endif /* ! O_DIRECT */ - #endif /* __linux__ */ - - /* We want to prevent any circularararity in our stubs, as well as -@@ -764,7 +767,7 @@ - { - /* The unpartitioned device name: /dev/XdX */ - char *devname = device_map[drive]; -- char buf[512]; -+ char * buf, * buf_unaligned; - - if (! devname) - return -1; -@@ -775,13 +778,13 @@ - - /* Open read/write, or read-only if that failed. */ - if (! read_only) -- disks[drive].flags = open (devname, O_RDWR); -+ disks[drive].flags = open (devname, O_RDWR | O_DIRECT); - - if (disks[drive].flags == -1) - { - if (read_only || errno == EACCES || errno == EROFS || errno == EPERM) - { -- disks[drive].flags = open (devname, O_RDONLY); -+ disks[drive].flags = open (devname, O_RDONLY | O_DIRECT); - if (disks[drive].flags == -1) - { - assign_device_name (drive, 0); -@@ -795,6 +798,10 @@ - } - } - -+ buf_unaligned = malloc((512 * sizeof(char)) + 4095); -+ buf = (char *) (((unsigned long)buf_unaligned + 4096 - 1) & -+ (~(4096-1))); -+ - /* Attempt to read the first sector. */ - if (read (disks[drive].flags, buf, 512) != 512) - { -@@ -806,6 +813,7 @@ - - if (disks[drive].flags != -1) - get_drive_geometry (&disks[drive], device_map, drive); -+ free(buf_unaligned); - } - - if (disks[drive].flags == -1) -@@ -827,24 +835,34 @@ - nread (int fd, char *buf, size_t len) - { - int size = len; -+ char * buf_unaligned, * buff, * obuff; -+ int ret; -+ -+ buf_unaligned = malloc((len * sizeof(char)) + 4095); -+ obuff = buff = (char *) (((unsigned long)buf_unaligned + 4096 - 1) & -+ (~(4096-1))); -+ - - while (len) - { -- int ret = read (fd, buf, len); -+ ret = read (fd, buff, len); - - if (ret <= 0) - { - if (errno == EINTR) - continue; - else -- return ret; -+ break; - } - - len -= ret; -- buf += ret; -+ buff += ret; - } - -- return size; -+ if (!len) ret = size; -+ -+ buf = memcpy(buf, obuff, size); -+ return ret; - } - - /* Write LEN bytes from BUF to FD. Return less than or equal to zero if an -@@ -853,10 +871,18 @@ - nwrite (int fd, char *buf, size_t len) - { - int size = len; -+ char * buf_unaligned, * buff; -+ -+ buf_unaligned = malloc((len * sizeof(char)) + 4095); -+ buff = (char *) (((unsigned long)buf_unaligned + 4096 - 1) & -+ (~(4096-1))); - - while (len) - { -- int ret = write (fd, buf, len); -+ int ret; -+ -+ memcpy(buff, buf, len); -+ ret = write (fd, buff, len); - - if (ret <= 0) - { diff --git a/src/patches/grub-0.95-recheck-bad.patch b/src/patches/grub-0.95-recheck-bad.patch deleted file mode 100644 index b55c6ae..0000000 --- a/src/patches/grub-0.95-recheck-bad.patch +++ /dev/null @@ -1,83 +0,0 @@ ---- grub-0.95/docs/grub.texi.recheck-bad 2005-07-25 17:55:57.000000000 -0400 -+++ grub-0.95/docs/grub.texi 2005-07-25 17:58:00.000000000 -0400 -@@ -3417,8 +3417,9 @@ - - @item --recheck - Recheck the device map, even if @file{/boot/grub/device.map} already --exists. You should use this option whenever you add/remove a disk --into/from your computer. -+exists. -+ -+This option is unreliable and its use is strongly discouraged. - @end table - - ---- grub-0.95/util/grub-install.in.recheck-bad 2005-07-25 17:58:19.000000000 -0400 -+++ grub-0.95/util/grub-install.in 2005-07-25 18:05:14.000000000 -0400 -@@ -68,6 +68,8 @@ - --force-lba force GRUB to use LBA mode even for a buggy - BIOS - --recheck probe a device map even if it already exists -+ This flag is unreliable and its use is -+ strongly discouraged. - - INSTALL_DEVICE can be a GRUB device name or a system device filename. - -@@ -328,7 +330,7 @@ - - # If --recheck is specified, remove the device map, if present. - if test $recheck = yes; then -- rm -f $device_map -+ mv $device_map ${device_map}.backup - fi - - # Create the device map file if it is not present. -@@ -357,7 +359,22 @@ - tmp=`sed -n '/^([fh]d[0-9]*)/s/(^(.*)).*/\1/p' $device_map \ - | sort | uniq -d | sed -n 1p` - if test -n "$tmp"; then -- echo "The drive $tmp is defined multiple times in the device map $device_map" 1>&2 -+ echo "The drive $tmp is defined multiple times in the new device map." 1>&2 -+ if test $recheck = yes; then -+ echo "Reverting to backed up copy." 1>&2 -+ mv ${device_map}.backup $device_map -+ fi -+ exit 1 -+fi -+ -+# Make sure device.map has at least one hd device -+grep -q "^(hd[0-9]+)" $device_map -+if [ "x$?" != "x0" ]; then -+ echo "No suitable drive was found in the generated device map." 1>&2 -+ if test $recheck = yes; then -+ echo "Reverting to backed up copy." 1>&2 -+ mv ${device_map}.backup $device_map -+ fi - exit 1 - fi - ---- grub-0.95/docs/grub-install.8.recheck-bad 2004-06-13 13:44:59.000000000 -0400 -+++ grub-0.95/docs/grub-install.8 2005-07-25 18:15:02.000000000 -0400 -@@ -30,6 +30,8 @@ - .TP - \fB--recheck\fR - probe a device map even if it already exists -+ -+This option is unreliable and its use is strongly discouraged. - .PP - INSTALL_DEVICE can be a GRUB device name or a system device filename. - .SH "REPORTING BUGS" ---- grub-0.95/docs/grub.info.recheck-bad 2004-05-11 08:22:54.000000000 -0400 -+++ grub-0.95/docs/grub.info 2005-07-25 18:16:09.000000000 -0400 -@@ -3373,9 +3373,9 @@ - - `--recheck' - Recheck the device map, even if `/boot/grub/device.map' already -- exists. You should use this option whenever you add/remove a disk -- into/from your computer. -+ exists. - -+ This option is unreliable and its use is strongly discouraged. - - File: grub.info, Node: Invoking grub-md5-crypt, Next: Invoking grub-terminfo, Prev: Invoking grub-install, Up: Top - diff --git a/src/patches/grub-0.95-splash-error-term.patch b/src/patches/grub-0.95-splash-error-term.patch deleted file mode 100644 index 71b036a..0000000 --- a/src/patches/grub-0.95-splash-error-term.patch +++ /dev/null @@ -1,25 +0,0 @@ ---- grub-0.95/stage2/graphics.c.old 2005-01-11 09:34:17.125451981 -0500 -+++ grub-0.95/stage2/graphics.c 2005-01-11 09:34:03.743949015 -0500 -@@ -108,12 +108,8 @@ - * mode. */ - int graphics_init() - { -- if (!graphics_inited) { -- saved_videomode = set_videomode(0x12); -- } -- - if (!read_image(splashimage)) { -- set_videomode(saved_videomode); -+ current_term = term_table; - grub_printf("failed to read image\n"); - return 0; - } -@@ -303,6 +299,8 @@ - if (!xpm_open(s)) - return 0; - -+ saved_videomode = set_videomode(0x12); -+ - /* parse info */ - while (grub_read(&c, 1)) { - if (c == '"') diff --git a/src/patches/grub-0.95-staticcurses.patch b/src/patches/grub-0.95-staticcurses.patch deleted file mode 100644 index ff87dd3..0000000 --- a/src/patches/grub-0.95-staticcurses.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- grub-0.95/configure.ac.static 2004-06-13 13:38:17.000000000 -0400 -+++ grub-0.95/configure.ac 2004-06-18 17:35:23.513374336 -0400 -@@ -207,9 +207,9 @@ - - # Unless the user specify --without-curses, check for curses. - if test "x$with_curses" != "xno"; then -- AC_CHECK_LIB(ncurses, wgetch, [GRUB_LIBS="$GRUB_LIBS -lncurses" -+ AC_CHECK_LIB(ncurses, wgetch, [GRUB_LIBS="$GRUB_LIBS -Wl,-Bstatic -lncurses -Wl,-Bdynamic" - AC_DEFINE(HAVE_LIBCURSES, 1, [Define if you have a curses library])], -- [AC_CHECK_LIB(curses, wgetch, [GRUB_LIBS="$GRUB_LIBS -lcurses" -+ [AC_CHECK_LIB(curses, wgetch, [GRUB_LIBS="$GRUB_LIBS -Wl,-Bstatic -lcurses -Wl,-Bdynamic" - AC_DEFINE(HAVE_LIBCURSES, 1, [Define if you have a curses library])])]) - fi - diff --git a/src/patches/grub-0.95-xpmjunk.patch b/src/patches/grub-0.95-xpmjunk.patch deleted file mode 100644 index de02897..0000000 --- a/src/patches/grub-0.95-xpmjunk.patch +++ /dev/null @@ -1,55 +0,0 @@ ---- grub-0.95/stage2/graphics.c.xpmjunk 2005-01-04 17:01:35.492804523 -0500 -+++ grub-0.95/stage2/graphics.c 2005-01-04 17:02:52.722495885 -0500 -@@ -262,6 +262,35 @@ - return; - } - -+/* Open the file, and search for a valid XPM header. Return 1 if one is found, -+ * leaving the current position as the start of the next line. Else, -+ * return 0. -+ */ -+int xpm_open(const char *s) { -+ char buf, prev, target[]="/* XPM */\n"; -+ int pos=0; -+ -+ if (!grub_open(s)) -+ return 0; -+ -+ prev='\n'; -+ buf=0; -+ do { -+ if (grub_read(&buf, 1) != 1) { -+ grub_close(); -+ return 0; -+ } -+ if ((pos == 0 && prev == '\n') || pos > 0) { -+ if (buf == target[pos]) -+ pos++; -+ else -+ pos=0; -+ } -+ prev=buf; -+ } while (target[pos]); -+ return 1; -+} -+ - /* Read in the splashscreen image and set the palette up appropriately. - * Format of splashscreen is an xpm (can be gzipped) with 16 colors and - * 640x480. */ -@@ -271,15 +300,9 @@ - unsigned char c, base, mask, *s1, *s2, *s4, *s8; - unsigned i, len, idx, colors, x, y, width, height; - -- if (!grub_open(s)) -+ if (!xpm_open(s)) - return 0; - -- /* read header */ -- if (!grub_read((char*)&buf, 10) || grub_memcmp(buf, "/* XPM */\n", 10)) { -- grub_close(); -- return 0; -- } -- - /* parse info */ - while (grub_read(&c, 1)) { - if (c == '"') diff --git a/src/patches/grub-0.97-bz429187-cciss.patch b/src/patches/grub-0.97-bz429187-cciss.patch deleted file mode 100644 index 32f18bc..0000000 --- a/src/patches/grub-0.97-bz429187-cciss.patch +++ /dev/null @@ -1,75 +0,0 @@ -diff -up grub-0.97/util/grub-install.in.cciss grub-0.97/util/grub-install.in ---- grub-0.97/util/grub-install.in.cciss 2008-02-04 14:30:31.000000000 -0500 -+++ grub-0.97/util/grub-install.in 2008-02-07 18:34:14.000000000 -0500 -@@ -100,25 +100,56 @@ convert () { - # Break the device name into the disk part and the partition part. - case "$host_os" in - linux*) -+ # formats that need to be handled (disk name -> partition name): -+ # floppies: /dev/fd0 -+ # normal sd/hd devices: /dev/hda -> /dev/hda3 -+ # md: /dev/md0 -> /dev/md0p0 -+ # ide raid devs: /dev/ide/host0/bus0/target0/lun0/disc -+ # -> /dev/ide/host0/bus0/target0/lun0/part1 -+ # cciss: /dev/cciss/c0d0 -> /dev/cciss/c0d0p1 -+ # mpath devs: /dev/mapper/mpath0 -> /dev/mapper/mpath0p1 -+ # /dev/mapper/lalala -> /dev/mapper/lalalap1 -+ # dmraid devs: /dev/mapper/via_abcdef -> /dev/mapper/via_abcdefp1 -+ # /dev/mapper/isw_Volume0_abcdef -> /dev/mapper/isw_Volume0_abcdefp1 -+ # the known list (to me) is (X means we should handle it): -+ # X asr_[unfettered crap] -+ # hpt[0-9]+x_[0-9]+-[0-9]+ -+ # X hpt[0-9]+x_[0-9]+ -+ # hpt[0-9]+x_SPARE -+ # isw_[a-z]+_[a-z]+[0-9]+ -+ # X isw_[a-z]+ -+ # jm_[0-9]+-[0-9]+ -+ # X jm_[0-9]+ -+ # lsi_[0-9]+-[0-9]+ -+ # X lsi_[0-9]+ -+ # nvidia_[a-z]+-[0-9]+ -+ # X nvidia_[a-z]+ -+ # pdc_[a-z]+-[0-9]+ -+ # X pdc_[a-z]+ -+ # sil_[0-9]+-[0-9]+ -+ # X sil_[0-9]+ -+ # via_[a-z]+-[0-9]+ -+ # X via_[a-z]+ -+ # -+ # more? - tmp_disk=`echo "$1" | grep -v '/mapper/control$' | -- grep -v '/mapper/[[:alnum:]]+-[[:alnum:]]+$' | uniq | -+ grep -v '/mapper/[[:alnum:]_]+-[[:digit:]]+$' | uniq | - sed -e 's%([sh]d[a-z])[0-9]*$%\1%' \ -- -e 's%(d[0-9]*)p[0-9]*$%\1%' \ -- -e 's%(fd[0-9]*)$%\1%' \ -- -e 's%/part[0-9]*$%/disc%' \ -- -e 's%(c[0-7]d[0-9]*).*$%\1%' \ -- -e 's%(/mapper/[[:alpha:]]+[[:digit:]]+)p[[:digit:]]+$%\1%' \ -- -e 's%(/mapper/[[:alpha:]]+_[[:alpha:]]+)[[:digit:]]+$%\1%'` -+ -e 's%(/c[0-9]+d[0-9]+).*$%\1%' \ -+ -e 's%(fd[0-9]*)$%\1%' \ -+ -e 's%/part[0-9]*$%/disc%' \ -+ -e 's%(/mapper/[[:alnum:]_-]+)+p[[:digit:]]+$%\1%'\ -+ -e 's%(/mapper/[[:alnum:]]+(_[[:alnum:]]+)+)\p[[:digit:]]+$%\1%'` - tmp_part=`echo "$1" | grep -v '/mapper/control$' | -- grep -v '/mapper/[[:alnum:]]+-[[:alnum:]]+$' | uniq | -+ grep -v '/mapper/[[:alnum:]_]+-[[:digit:]]+$' | uniq | - sed -e 's%.*/[sh]d[a-z]([0-9]*)$%\1%' \ -- -e 's%.*d[0-9]*p%%' \ -- -e 's%.*/fd[0-9]*$%%' \ -- -e 's%.*/floppy/[0-9]*$%%' \ -- -e 's%.*/(disc|part([0-9]*))$%\2%' \ -- -e 's%.*c[0-7]d[0-9]*p%%' \ -- -e 's%.*/mapper/[[:alpha:]]+[[:digit:]]+p([[:digit:]]+)$%\1%' \ -- -e 's%.*/mapper/[[:alpha:]]+_[[:alpha:]]+([[:digit:]]+)$%\1%' | -+ -e 's%.*/c[0-9]+d[0-9]+p([[:digit:]]+)%\1%' \ -+ -e 's%.*/c[0-9]+d[0-9]+$%%' \ -+ -e 's%.*/fd[0-9]+$%%' \ -+ -e 's%.*/floppy/[0-9]*$%%' \ -+ -e 's%.*/(disc|part([0-9]*))$%\2%' \ -+ -e 's%.*/mapper/[[:alpha:]]+[[:digit:]]+p([[:digit:]]+)$%\1%' \ -+ -e 's%.*/mapper/[[:alnum:]]+(_[[:alpha:]]+[[:digit:]]*)+p([[:digit:]]+)$%\2%' | - grep -v '.*/mapper/.*'` - ;; - gnu*) diff --git a/src/patches/grub-0.97-cmdline-size.patch b/src/patches/grub-0.97-cmdline-size.patch deleted file mode 100644 index e93aa98..0000000 --- a/src/patches/grub-0.97-cmdline-size.patch +++ /dev/null @@ -1,45 +0,0 @@ -diff --git a/stage2/boot.c b/stage2/boot.c -index bf442e1..a6872e0 100644 ---- a/stage2/boot.c -+++ b/stage2/boot.c -@@ -241,6 +241,7 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, - } - - if (lh->version >= 0x0202) -+ /* version 0x0202 and higher can handle 4096 */ - lh->cmd_line_ptr = linux_data_real_addr + LINUX_CL_OFFSET; - else - { -@@ -403,8 +404,10 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, - { - char *src = skip_to (0, arg); - char *dest = linux_data_tmp_addr + LINUX_CL_OFFSET; -- -- while (dest < linux_data_tmp_addr + LINUX_CL_END_OFFSET && *src) -+ unsigned long cl_end_offset = lh->version < 0x0202 ? -+ LINUX_CL_END_OFFSET : LINUX_CL_END_OFFSET_202; -+ -+ while (dest < linux_data_tmp_addr + cl_end_offset && *src) - *(dest++) = *(src++); - - /* Old Linux kernels have problems determining the amount of -diff --git a/stage2/shared.h b/stage2/shared.h -index d05644b..c052480 100644 ---- a/stage2/shared.h -+++ b/stage2/shared.h -@@ -160,10 +160,13 @@ extern void *grub_scratch_mem; - #define LINUX_VID_MODE_ASK 0xFFFD - - #define LINUX_CL_OFFSET 0x9000 --#define LINUX_CL_END_OFFSET 0x90FF --#define LINUX_SETUP_MOVE_SIZE 0x9100 - #define LINUX_CL_MAGIC 0xA33F - -+#define LINUX_CL_END_OFFSET 0x90FF -+#define LINUX_CL_END_OFFSET_202 0x9FFF /* version 0x0202 or higher */ -+#define LINUX_SETUP_MOVE_SIZE 0xA000 /* where am I putting it? */ -+ -+ - /* - * General disk stuff - */ diff --git a/src/patches/grub-0.97-datadir.patch b/src/patches/grub-0.97-datadir.patch deleted file mode 100644 index eaa89f0..0000000 --- a/src/patches/grub-0.97-datadir.patch +++ /dev/null @@ -1,229 +0,0 @@ ---- grub-0.97/stage1/Makefile.am.datadir 2005-12-14 11:07:01.000000000 -0500 -+++ grub-0.97/stage1/Makefile.am 2005-12-14 11:07:21.000000000 -0500 -@@ -1,7 +1,7 @@ --pkglibdir = $(libdir)/$(PACKAGE)/$(host_cpu)-$(host_vendor) --nodist_pkglib_DATA = stage1 -+pkgdatadir = $(datadir)/$(PACKAGE)/$(host_cpu)-$(host_vendor) -+nodist_pkgdata_DATA = stage1 - --CLEANFILES = $(nodist_pkglib_DATA) -+CLEANFILES = $(nodist_pkgdata_DATA) - - # We can't use builtins or standard includes. - AM_CCASFLAGS = $(STAGE1_CFLAGS) -fno-builtin -nostdinc ---- grub-0.97/stage1/Makefile.in.datadir 2005-05-07 22:42:36.000000000 -0400 -+++ grub-0.97/stage1/Makefile.in 2005-12-14 11:08:13.000000000 -0500 -@@ -1,8 +1,8 @@ --# Makefile.in generated by automake 1.9.4 from Makefile.am. -+# Makefile.in generated by automake 1.9.6 from Makefile.am. - # @configure_input@ - - # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, --# 2003, 2004 Free Software Foundation, Inc. -+# 2003, 2004, 2005 Free Software Foundation, Inc. - # This Makefile.in is free software; the Free Software Foundation - # gives unlimited permission to copy and/or distribute it, - # with or without modifications, as long as this notice is preserved. -@@ -15,8 +15,6 @@ - @SET_MAKE@ - - --SOURCES = $(stage1_exec_SOURCES) -- - srcdir = @srcdir@ - top_srcdir = @top_srcdir@ - VPATH = @srcdir@ -@@ -67,13 +65,13 @@ - *) f=$$p;; \ - esac; - am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; --am__installdirs = "$(DESTDIR)$(pkglibdir)" --nodist_pkglibDATA_INSTALL = $(INSTALL_DATA) --DATA = $(nodist_pkglib_DATA) -+am__installdirs = "$(DESTDIR)$(pkgdatadir)" -+nodist_pkgdataDATA_INSTALL = $(INSTALL_DATA) -+DATA = $(nodist_pkgdata_DATA) - ETAGS = etags - CTAGS = ctags - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) --pkglibdir = $(libdir)/$(PACKAGE)/$(host_cpu)-$(host_vendor) -+pkgdatadir = $(datadir)/$(PACKAGE)/$(host_cpu)-$(host_vendor) - ACLOCAL = @ACLOCAL@ - AMDEP_FALSE = @AMDEP_FALSE@ - AMDEP_TRUE = @AMDEP_TRUE@ -@@ -102,6 +100,8 @@ - EGREP = @EGREP@ - EXEEXT = @EXEEXT@ - FSYS_CFLAGS = @FSYS_CFLAGS@ -+GRAPHICS_SUPPORT_FALSE = @GRAPHICS_SUPPORT_FALSE@ -+GRAPHICS_SUPPORT_TRUE = @GRAPHICS_SUPPORT_TRUE@ - GRUB_CFLAGS = @GRUB_CFLAGS@ - GRUB_LIBS = @GRUB_LIBS@ - HERCULES_SUPPORT_FALSE = @HERCULES_SUPPORT_FALSE@ -@@ -172,6 +172,7 @@ - infodir = @infodir@ - install_sh = @install_sh@ - libdir = @libdir@ -+datadir = @datadir@ - libexecdir = @libexecdir@ - localstatedir = @localstatedir@ - mandir = @mandir@ -@@ -183,8 +184,8 @@ - sharedstatedir = @sharedstatedir@ - sysconfdir = @sysconfdir@ - target_alias = @target_alias@ --nodist_pkglib_DATA = stage1 --CLEANFILES = $(nodist_pkglib_DATA) -+nodist_pkgdata_DATA = stage1 -+CLEANFILES = $(nodist_pkgdata_DATA) - - # We can't use builtins or standard includes. - AM_CCASFLAGS = $(STAGE1_CFLAGS) -fno-builtin -nostdinc -@@ -242,22 +243,22 @@ - .S.obj: - $(CCASCOMPILE) -c `$(CYGPATH_W) '$<'` - uninstall-info-am: --install-nodist_pkglibDATA: $(nodist_pkglib_DATA) -+install-nodist_pkgdataDATA: $(nodist_pkgdata_DATA) - @$(NORMAL_INSTALL) -- test -z "$(pkglibdir)" || $(mkdir_p) "$(DESTDIR)$(pkglibdir)" -- @list='$(nodist_pkglib_DATA)'; for p in $$list; do \ -+ test -z "$(pkgdatadir)" || $(mkdir_p) "$(DESTDIR)$(pkgdatadir)" -+ @list='$(nodist_pkgdata_DATA)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ -- echo " $(nodist_pkglibDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkglibdir)/$$f'"; \ -- $(nodist_pkglibDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkglibdir)/$$f"; \ -+ echo " $(nodist_pkgdataDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgdatadir)/$$f'"; \ -+ $(nodist_pkgdataDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgdatadir)/$$f"; \ - done - --uninstall-nodist_pkglibDATA: -+uninstall-nodist_pkgdataDATA: - @$(NORMAL_UNINSTALL) -- @list='$(nodist_pkglib_DATA)'; for p in $$list; do \ -+ @list='$(nodist_pkgdata_DATA)'; for p in $$list; do \ - f=$(am__strip_dir) \ -- echo " rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ -- rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ -+ echo " rm -f '$(DESTDIR)$(pkgdatadir)/$$f'"; \ -+ rm -f "$(DESTDIR)$(pkgdatadir)/$$f"; \ - done - - ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) -@@ -339,7 +340,7 @@ - check: check-am - all-am: Makefile $(PROGRAMS) $(DATA) - installdirs: -- for dir in "$(DESTDIR)$(pkglibdir)"; do \ -+ for dir in "$(DESTDIR)$(pkgdatadir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ - done - install: install-am -@@ -388,7 +389,7 @@ - - install-data-am: - --install-exec-am: install-nodist_pkglibDATA -+install-exec-am: install-nodist_pkgdataDATA - - install-info: install-info-am - -@@ -412,19 +413,19 @@ - - ps-am: - --uninstall-am: uninstall-info-am uninstall-nodist_pkglibDATA -+uninstall-am: uninstall-info-am uninstall-nodist_pkgdataDATA - - .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-noinstPROGRAMS ctags distclean distclean-compile \ - distclean-generic distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-exec install-exec-am install-info \ -- install-info-am install-man install-nodist_pkglibDATA \ -+ install-info-am install-man install-nodist_pkgdataDATA \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-info-am \ -- uninstall-nodist_pkglibDATA -+ uninstall-nodist_pkgdataDATA - - .exec: - $(OBJCOPY) -O binary $< $@ ---- grub-0.97/util/grub-install.in.datadir 2005-12-14 11:00:21.000000000 -0500 -+++ grub-0.97/util/grub-install.in 2005-12-14 11:00:21.000000000 -0500 -@@ -21,13 +21,13 @@ - prefix=@prefix@ - exec_prefix=@exec_prefix@ - sbindir=@sbindir@ --libdir=@libdir@ -+datadir=@datadir@ - PACKAGE=@PACKAGE@ - VERSION=@VERSION@ - host_cpu=@host_cpu@ - host_os=@host_os@ - host_vendor=@host_vendor@ --pkglibdir=${libdir}/${PACKAGE}/${host_cpu}-${host_vendor} -+pkgdatadir=${datadir}/${PACKAGE}/${host_cpu}-${host_vendor} - - grub_shell=${sbindir}/grub - mdadm=${sbindir}/mdadm -@@ -388,17 +388,17 @@ - exit 1 - fi - --if test -f "$pkglibdir/stage1"; then -+if test -f "$pkgdatadir/stage1"; then - : - else -- echo "${pkglibdir}/stage1: Not found." 1>&2 -+ echo "${pkgdatadir}/stage1: Not found." 1>&2 - exit 1 - fi - --if test -f "$pkglibdir/stage2"; then -+if test -f "$pkgdatadir/stage2"; then - : - else -- echo "${pkglibdir}/stage2: Not found." 1>&2 -+ echo "${pkgdatadir}/stage2: Not found." 1>&2 - exit 1 - fi - ---- grub-0.97/stage2/Makefile.am.datadir 2005-12-14 11:03:54.000000000 -0500 -+++ grub-0.97/stage2/Makefile.am 2005-12-14 11:05:04.000000000 -0500 -@@ -27,12 +27,12 @@ - -DUSE_MD5_PASSWORDS=1 -DSUPPORT_SERIAL=1 -DSUPPORT_HERCULES=1 - - # Stage 2 and Stage 1.5's. --pkglibdir = $(libdir)/$(PACKAGE)/$(host_cpu)-$(host_vendor) -+pkgdatadir = $(datadir)/$(PACKAGE)/$(host_cpu)-$(host_vendor) - - EXTRA_PROGRAMS = nbloader.exec pxeloader.exec diskless.exec - - if DISKLESS_SUPPORT --pkglib_DATA = stage2 stage2_eltorito e2fs_stage1_5 fat_stage1_5 \ -+pkgdata_DATA = stage2 stage2_eltorito e2fs_stage1_5 fat_stage1_5 \ - ffs_stage1_5 iso9660_stage1_5 jfs_stage1_5 minix_stage1_5 \ - reiserfs_stage1_5 ufs2_stage1_5 vstafs_stage1_5 xfs_stage1_5 \ - nbgrub pxegrub -@@ -43,7 +43,7 @@ - reiserfs_stage1_5.exec ufs2_stage1_5.exec vstafs_stage1_5.exec \ - xfs_stage1_5.exec nbloader.exec pxeloader.exec diskless.exec - else --pkglib_DATA = stage2 stage2_eltorito e2fs_stage1_5 fat_stage1_5 \ -+pkgdata_DATA = stage2 stage2_eltorito e2fs_stage1_5 fat_stage1_5 \ - ffs_stage1_5 iso9660_stage1_5 jfs_stage1_5 minix_stage1_5 \ - reiserfs_stage1_5 ufs2_stage1_5 vstafs_stage1_5 xfs_stage1_5 - noinst_DATA = pre_stage2 start start_eltorito -@@ -112,7 +112,7 @@ - BUILT_SOURCES = stage2_size.h - endif - --CLEANFILES = $(pkglib_DATA) $(noinst_DATA) $(BUILT_SOURCES) -+CLEANFILES = $(pkgdata_DATA) $(noinst_DATA) $(BUILT_SOURCES) - - stage2_size.h: pre_stage2 - -rm -f stage2_size.h diff --git a/src/patches/grub-0.97-disk_geometry-1.patch b/src/patches/grub-0.97-disk_geometry-1.patch deleted file mode 100644 index e09686d..0000000 --- a/src/patches/grub-0.97-disk_geometry-1.patch +++ /dev/null @@ -1,892 +0,0 @@ -Submitted By: Jim Gifford jim@linuxfromscratch.org -Date: 05-28-2006 -Initial Package Version: 0.97 -Upstream Status: Unknown -Origin: Fedora and Mandriva -Description: This patch fixes issues with disk geometry not being - detected properly. Part of this patch also fixes - gcc 4 compile errors, which are a part of the issue. - -diff -Naur grub-0.97.orig/configure grub-0.97/configure ---- grub-0.97.orig/configure 2005-05-07 19:48:12.000000000 -0700 -+++ grub-0.97/configure 2006-05-28 20:29:36.025466751 -0700 -@@ -3485,9 +3485,9 @@ - echo "$as_me:$LINENO: result: $size_flag" >&5 - echo "${ECHO_T}$size_flag" >&6 - if test "x$size_flag" = xyes; then -- STAGE2_CFLAGS="-Os" -+ STAGE2_CFLAGS="-Os -fno-strict-aliasing" - else -- STAGE2_CFLAGS="-O2 -fno-strength-reduce -fno-unroll-loops" -+ STAGE2_CFLAGS="-O2 -fno-strict-aliasing -fno-strength-reduce -fno-unroll-loops" - fi - # OpenBSD has a GCC extension for protecting applications from - # stack smashing attacks, but GRUB doesn't want this feature. -diff -Naur grub-0.97.orig/configure.ac grub-0.97/configure.ac ---- grub-0.97.orig/configure.ac 2005-05-07 19:36:03.000000000 -0700 -+++ grub-0.97/configure.ac 2006-05-28 20:28:41.538819726 -0700 -@@ -93,9 +93,9 @@ - CFLAGS=$saved_CFLAGS - ]) - if test "x$size_flag" = xyes; then -- STAGE2_CFLAGS="-Os" -+ STAGE2_CFLAGS="-Os -fno-strict-aliasing" - else -- STAGE2_CFLAGS="-O2 -fno-strength-reduce -fno-unroll-loops" -+ STAGE2_CFLAGS="-O2 -fno-strict-aliasing -fno-strength-reduce -fno-unroll-loops" - fi - # OpenBSD has a GCC extension for protecting applications from - # stack smashing attacks, but GRUB doesn't want this feature. -diff -Naur grub-0.97.orig/lib/device.c grub-0.97/lib/device.c ---- grub-0.97.orig/lib/device.c 2005-03-27 15:14:25.000000000 -0800 -+++ grub-0.97/lib/device.c 2006-05-28 20:34:03.546804777 -0700 -@@ -131,6 +131,152 @@ - #include <shared.h> - #include <device.h> - -+#if defined(__linux__) -+/* The 2.6 kernel has removed all of the geometry handling for IDE drives -+ * that did fixups for LBA, etc. This means that the geometry we get -+ * with the ioctl has a good chance of being wrong. So, we get to -+ * also know about partition tables and try to read what the geometry -+ * is there. *grumble* Very closely based on code from cfdisk -+ */ -+static void get_kernel_geometry(int fd, long long *cyl, int *heads, int *sectors) { -+ struct hd_geometry hdg; -+ -+ if (ioctl (fd, HDIO_GETGEO, &hdg)) -+ return; -+ -+ *cyl = hdg.cylinders; -+ *heads = hdg.heads; -+ *sectors = hdg.sectors; -+} -+ -+struct partition { -+ unsigned char boot_ind; /* 0x80 - active */ -+ unsigned char head; /* starting head */ -+ unsigned char sector; /* starting sector */ -+ unsigned char cyl; /* starting cylinder */ -+ unsigned char sys_ind; /* What partition type */ -+ unsigned char end_head; /* end head */ -+ unsigned char end_sector; /* end sector */ -+ unsigned char end_cyl; /* end cylinder */ -+ unsigned char start4[4]; /* starting sector counting from 0 */ -+ unsigned char size4[4]; /* nr of sectors in partition */ -+}; -+ -+#define ALIGNMENT 2 -+typedef union { -+ struct { -+ unsigned char align[ALIGNMENT]; -+ unsigned char b[SECTOR_SIZE]; -+ } c; -+ struct { -+ unsigned char align[ALIGNMENT]; -+ unsigned char buffer[0x1BE]; -+ struct partition part[4]; -+ unsigned char magicflag[2]; -+ } p; -+} partition_table; -+ -+#define PART_TABLE_FLAG0 0x55 -+#define PART_TABLE_FLAG1 0xAA -+ -+static void -+get_partition_table_geometry(partition_table *bufp, long long *cyl, int *heads, -+ int *sectors) { -+ struct partition *p; -+ int i,h,s,hh,ss; -+ int first = 1; -+ int bad = 0; -+ -+ if (bufp->p.magicflag[0] != PART_TABLE_FLAG0 || -+ bufp->p.magicflag[1] != PART_TABLE_FLAG1) { -+ /* Matthew Wilcox: slightly friendlier version of -+ fatal(_("Bad signature on partition table"), 3); -+ */ -+ fprintf(stderr, "Unknown partition table signature\n"); -+ return; -+ } -+ -+ hh = ss = 0; -+ for (i=0; i<4; i++) { -+ p = &(bufp->p.part[i]); -+ if (p->sys_ind != 0) { -+ h = p->end_head + 1; -+ s = (p->end_sector & 077); -+ if (first) { -+ hh = h; -+ ss = s; -+ first = 0; -+ } else if (hh != h || ss != s) -+ bad = 1; -+ } -+ } -+ -+ if (!first && !bad) { -+ *heads = hh; -+ *sectors = ss; -+ } -+} -+ -+static long long my_lseek (unsigned int fd, long long offset, -+ unsigned int origin) -+{ -+#if defined(__linux__) && (!defined(__GLIBC__) || \ -+ ((__GLIBC__ < 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ < 1)))) -+ /* Maybe libc doesn't have large file support. */ -+ loff_t offset, result; -+ static int _llseek (uint filedes, ulong hi, ulong lo, -+ loff_t *res, uint wh); -+ _syscall5 (int, _llseek, uint, filedes, ulong, hi, ulong, lo, -+ loff_t *, res, uint, wh); -+ -+ if (_llseek (fd, offset >> 32, offset & 0xffffffff, &result, SEEK_SET) < 0) -+ return (long long) -1; -+ return result; -+#else -+ return lseek(fd, offset, SEEK_SET); -+#endif -+} -+ -+static void get_linux_geometry (int fd, struct geometry *geom) { -+ long long kern_cyl = 0; int kern_head = 0, kern_sectors = 0; -+ long long pt_cyl = 0; int pt_head = 0, pt_sectors = 0; -+ partition_table bufp; -+ char *buff, *buf_unaligned; -+ -+ buf_unaligned = malloc(sizeof(partition_table) + 4095); -+ buff = (char *) (((unsigned long)buf_unaligned + 4096 - 1) & -+ (~(4096-1))); -+ -+ get_kernel_geometry(fd, &kern_cyl, &kern_head, &kern_sectors); -+ -+ if (my_lseek (fd, 0*SECTOR_SIZE, SEEK_SET) < 0) { -+ fprintf(stderr, "Unable to seek"); -+ } -+ -+ if (read(fd, buff, SECTOR_SIZE) == SECTOR_SIZE) { -+ memcpy(bufp.c.b, buff, SECTOR_SIZE); -+ get_partition_table_geometry(&bufp, &pt_cyl, &pt_head, &pt_sectors); -+ } else { -+ fprintf(stderr, "Unable to read partition table: %s\n", strerror(errno)); -+ } -+ -+ if (pt_head && pt_sectors) { -+ int cyl_size; -+ -+ geom->heads = pt_head; -+ geom->sectors = pt_sectors; -+ cyl_size = pt_head * pt_sectors; -+ geom->cylinders = geom->total_sectors/cyl_size; -+ } else { -+ geom->heads = kern_head; -+ geom->sectors = kern_sectors; -+ geom->cylinders = kern_cyl; -+ } -+ -+ return; -+} -+#endif -+ - /* Get the geometry of a drive DRIVE. */ - void - get_drive_geometry (struct geometry *geom, char **map, int drive) -@@ -151,21 +297,16 @@ - #if defined(__linux__) - /* Linux */ - { -- struct hd_geometry hdg; - unsigned long nr; -- -- if (ioctl (fd, HDIO_GETGEO, &hdg)) -- goto fail; - - if (ioctl (fd, BLKGETSIZE, &nr)) - goto fail; - - /* Got the geometry, so save it. */ -- geom->cylinders = hdg.cylinders; -- geom->heads = hdg.heads; -- geom->sectors = hdg.sectors; - geom->total_sectors = nr; -- -+ get_linux_geometry(fd, geom); -+ if (!geom->heads && !geom->cylinders && !geom->sectors) -+ goto fail; - goto success; - } - -@@ -844,6 +985,7 @@ - { - char dev[PATH_MAX]; /* XXX */ - int fd; -+ off_t offset = (off_t) sector * (off_t) SECTOR_SIZE; - - if ((partition & 0x00FF00) != 0x00FF00) - { -@@ -870,35 +1012,13 @@ - errnum = ERR_NO_PART; - return 0; - } -- --#if defined(__linux__) && (!defined(__GLIBC__) || \ -- ((__GLIBC__ < 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ < 1)))) -- /* Maybe libc doesn't have large file support. */ -- { -- loff_t offset, result; -- static int _llseek (uint filedes, ulong hi, ulong lo, -- loff_t *res, uint wh); -- _syscall5 (int, _llseek, uint, filedes, ulong, hi, ulong, lo, -- loff_t *, res, uint, wh); - -- offset = (loff_t) sector * (loff_t) SECTOR_SIZE; -- if (_llseek (fd, offset >> 32, offset & 0xffffffff, &result, SEEK_SET)) -- { -- errnum = ERR_DEV_VALUES; -- return 0; -- } -- } --#else -- { -- off_t offset = (off_t) sector * (off_t) SECTOR_SIZE; - -- if (lseek (fd, offset, SEEK_SET) != offset) -- { -- errnum = ERR_DEV_VALUES; -- return 0; -- } -- } --#endif -+ if (my_lseek(fd, offset, SEEK_SET) != offset) -+ { -+ errnum = ERR_DEV_VALUES; -+ return 0; -+ } - - if (write (fd, buf, size * SECTOR_SIZE) != (size * SECTOR_SIZE)) - { -diff -Naur grub-0.97.orig/stage2/Makefile.am grub-0.97/stage2/Makefile.am ---- grub-0.97.orig/stage2/Makefile.am 2005-02-02 12:37:35.000000000 -0800 -+++ grub-0.97/stage2/Makefile.am 2006-05-28 20:28:41.590818435 -0700 -@@ -24,7 +24,8 @@ - -DGRUB_UTIL=1 -DFSYS_EXT2FS=1 -DFSYS_FAT=1 -DFSYS_FFS=1 \ - -DFSYS_ISO9660=1 -DFSYS_JFS=1 -DFSYS_MINIX=1 -DFSYS_REISERFS=1 \ - -DFSYS_UFS2=1 -DFSYS_VSTAFS=1 -DFSYS_XFS=1 \ -- -DUSE_MD5_PASSWORDS=1 -DSUPPORT_SERIAL=1 -DSUPPORT_HERCULES=1 -+ -DUSE_MD5_PASSWORDS=1 -DSUPPORT_SERIAL=1 -DSUPPORT_HERCULES=1 \ -+ -fno-strict-aliasing - - # Stage 2 and Stage 1.5's. - pkglibdir = $(libdir)/$(PACKAGE)/$(host_cpu)-$(host_vendor) -diff -Naur grub-0.97.orig/stage2/boot.c grub-0.97/stage2/boot.c ---- grub-0.97.orig/stage2/boot.c 2004-03-30 03:44:08.000000000 -0800 -+++ grub-0.97/stage2/boot.c 2006-05-28 20:33:30.123638792 -0700 -@@ -55,7 +55,7 @@ - pu; - /* presuming that MULTIBOOT_SEARCH is large enough to encompass an - executable header */ -- unsigned char buffer[MULTIBOOT_SEARCH]; -+ char buffer[MULTIBOOT_SEARCH]; - - /* sets the header pointer to point to the beginning of the - buffer by default */ -@@ -98,7 +98,7 @@ - /* ELF loading supported if multiboot, FreeBSD and NetBSD. */ - if ((type == KERNEL_TYPE_MULTIBOOT - || pu.elf->e_ident[EI_OSABI] == ELFOSABI_FREEBSD -- || grub_strcmp (pu.elf->e_ident + EI_BRAND, "FreeBSD") == 0 -+ || grub_strcmp ((char *) pu.elf->e_ident + EI_BRAND, "FreeBSD") == 0 - || suggested_type == KERNEL_TYPE_NETBSD) - && len > sizeof (Elf32_Ehdr) - && BOOTABLE_I386_ELF ((*((Elf32_Ehdr *) buffer)))) -@@ -824,8 +824,12 @@ - moveto = (mbi.mem_upper + 0x400) << 10; - - moveto = (moveto - len) & 0xfffff000; -+#if 0 - max_addr = (lh->header == LINUX_MAGIC_SIGNATURE && lh->version >= 0x0203 - ? lh->initrd_addr_max : LINUX_INITRD_MAX_ADDRESS); -+#else -+ max_addr = LINUX_INITRD_MAX_ADDRESS; -+#endif - if (moveto + len >= max_addr) - moveto = (max_addr - len) & 0xfffff000; - -diff -Naur grub-0.97.orig/stage2/disk_io.c grub-0.97/stage2/disk_io.c ---- grub-0.97.orig/stage2/disk_io.c 2004-05-23 09:35:24.000000000 -0700 -+++ grub-0.97/stage2/disk_io.c 2006-05-28 20:28:41.582818634 -0700 -@@ -127,12 +127,19 @@ - int filepos; - int filemax; - --static inline unsigned long --log2 (unsigned long word) -+#define log2(n) ffz(~(n)) -+ -+/* include/asm-i386/bitops.h */ -+/* -+ * ffz = Find First Zero in word. Undefined if no zero exists, -+ * so code should check against ~0UL first.. -+ */ -+static __inline__ unsigned long -+ffz (unsigned long word) - { -- asm volatile ("bsfl %1,%0" -- : "=r" (word) -- : "r" (word)); -+ __asm__ ("bsfl %1,%0" -+: "=r" (word) -+: "r" (~word)); - return word; - } - -diff -Naur grub-0.97.orig/stage2/freebsd.h grub-0.97/stage2/freebsd.h ---- grub-0.97.orig/stage2/freebsd.h 2003-07-09 04:45:52.000000000 -0700 -+++ grub-0.97/stage2/freebsd.h 2006-05-28 20:28:41.582818634 -0700 -@@ -78,7 +78,7 @@ - struct bootinfo - { - unsigned int bi_version; -- unsigned char *bi_kernelname; -+ char *bi_kernelname; - struct nfs_diskless *bi_nfs_diskless; - /* End of fields that are always present. */ - #define bi_endcommon bi_n_bios_used -diff -Naur grub-0.97.orig/stage2/fsys_fat.c grub-0.97/stage2/fsys_fat.c ---- grub-0.97.orig/stage2/fsys_fat.c 2005-03-15 08:52:00.000000000 -0800 -+++ grub-0.97/stage2/fsys_fat.c 2006-05-28 20:28:41.582818634 -0700 -@@ -54,12 +54,19 @@ - - #define FAT_CACHE_SIZE 2048 - -+#define log2(n) ffz(~(n)) -+ -+/* include/asm-i386/bitops.h */ -+/* -+ * ffz = Find First Zero in word. Undefined if no zero exists, -+ * so code should check against ~0UL first.. -+ */ - static __inline__ unsigned long --log2 (unsigned long word) -+ffz (unsigned long word) - { - __asm__ ("bsfl %1,%0" -- : "=r" (word) -- : "r" (word)); -+: "=r" (word) -+: "r" (~word)); - return word; - } - -diff -Naur grub-0.97.orig/stage2/fsys_iso9660.c grub-0.97/stage2/fsys_iso9660.c ---- grub-0.97.orig/stage2/fsys_iso9660.c 2004-05-11 05:11:19.000000000 -0700 -+++ grub-0.97/stage2/fsys_iso9660.c 2006-05-28 20:28:41.582818634 -0700 -@@ -55,13 +55,19 @@ - #define RRCONT_BUF ((unsigned char *)(FSYS_BUF + 6144)) - #define NAME_BUF ((unsigned char *)(FSYS_BUF + 8192)) - -+#define log2(n) ffz(~(n)) - --static inline unsigned long --log2 (unsigned long word) -+/* include/asm-i386/bitops.h */ -+/* -+ * ffz = Find First Zero in word. Undefined if no zero exists, -+ * so code should check against ~0UL first.. -+ */ -+static __inline__ unsigned long -+ffz (unsigned long word) - { -- asm volatile ("bsfl %1,%0" -- : "=r" (word) -- : "r" (word)); -+ __asm__ ("bsfl %1,%0" -+: "=r" (word) -+: "r" (~word)); - return word; - } - -@@ -120,7 +126,7 @@ - break; - /* check ISO_VD_PRIMARY and ISO_STANDARD_ID */ - if (PRIMDESC->type.l == ISO_VD_PRIMARY -- && !memcmp(PRIMDESC->id, ISO_STANDARD_ID, sizeof(PRIMDESC->id))) -+ && !memcmp((char *) PRIMDESC->id, ISO_STANDARD_ID, sizeof(PRIMDESC->id))) - { - ISO_SUPER->vol_sector = sector; - INODE->file_start = 0; -@@ -175,7 +181,7 @@ - for (; idr->length.l > 0; - idr = (struct iso_directory_record *)((char *)idr + idr->length.l) ) - { -- const char *name = idr->name; -+ const u_int8_t *name = idr->name; - unsigned int name_len = idr->name_len.l; - - file_type = (idr->flags.l & 2) ? ISO_DIRECTORY : ISO_REGULAR; -@@ -198,7 +204,7 @@ - rr_len = (idr->length.l - idr->name_len.l - - sizeof(struct iso_directory_record) - + sizeof(idr->name)); -- rr_ptr.ptr = ((unsigned char *)idr + idr->name_len.l -+ rr_ptr.ptr = ((char *)idr + idr->name_len.l - + sizeof(struct iso_directory_record) - - sizeof(idr->name)); - if (rr_ptr.i & 1) -@@ -331,9 +337,9 @@ - memcpy(NAME_BUF, name, name_len); - name = NAME_BUF; - } -- rr_ptr.ptr = RRCONT_BUF + ce_ptr->u.ce.offset.l; -+ rr_ptr.ptr = (char *) RRCONT_BUF + ce_ptr->u.ce.offset.l; - rr_len = ce_ptr->u.ce.size.l; -- if (!iso9660_devread(ce_ptr->u.ce.extent.l, 0, ISO_SECTOR_SIZE, RRCONT_BUF)) -+ if (!iso9660_devread(ce_ptr->u.ce.extent.l, 0, ISO_SECTOR_SIZE, (char *) RRCONT_BUF)) - { - errnum = 0; /* this is not fatal. */ - break; -@@ -344,7 +350,7 @@ - - filemax = MAXINT; - if (name_len >= pathlen -- && !memcmp(name, dirname, pathlen)) -+ && !memcmp((char *) name, dirname, pathlen)) - { - if (dirname[pathlen] == '/' || !print_possibilities) - { -@@ -381,7 +387,7 @@ - print_possibilities = -print_possibilities; - memcpy(NAME_BUF, name, name_len); - NAME_BUF[name_len] = '\0'; -- print_a_completion (NAME_BUF); -+ print_a_completion ((char *) NAME_BUF); - #endif - } - } -diff -Naur grub-0.97.orig/stage2/fsys_reiserfs.c grub-0.97/stage2/fsys_reiserfs.c ---- grub-0.97.orig/stage2/fsys_reiserfs.c 2004-02-18 14:09:10.000000000 -0800 -+++ grub-0.97/stage2/fsys_reiserfs.c 2006-05-28 20:28:41.586818535 -0700 -@@ -365,13 +365,19 @@ - #define JOURNAL_START ((__u32 *) (INFO + 1)) - #define JOURNAL_END ((__u32 *) (FSYS_BUF + FSYS_BUFLEN)) - -+#define log2(n) ffz(~(n)) - -+/* include/asm-i386/bitops.h */ -+/* -+ * ffz = Find First Zero in word. Undefined if no zero exists, -+ * so code should check against ~0UL first.. -+ */ - static __inline__ unsigned long --log2 (unsigned long word) -+ffz (unsigned long word) - { - __asm__ ("bsfl %1,%0" -- : "=r" (word) -- : "r" (word)); -+: "=r" (word) -+: "r" (~word)); - return word; - } - -diff -Naur grub-0.97.orig/stage2/fsys_vstafs.c grub-0.97/stage2/fsys_vstafs.c ---- grub-0.97.orig/stage2/fsys_vstafs.c 2003-07-09 04:45:53.000000000 -0700 -+++ grub-0.97/stage2/fsys_vstafs.c 2006-05-28 20:28:41.586818535 -0700 -@@ -186,35 +186,35 @@ - int - vstafs_read (char *addr, int len) - { -- struct alloc *a; -+ struct alloc *b; - int size, ret = 0, offset, curr_len = 0; -- int curr_ext; -+ int curr_exten; - char extent; - int ext_size; - char *curr_pos; - - get_file_info (f_sector); - size = FILE_INFO->len-VSTAFS_START_DATA; -- a = FILE_INFO->blocks; -+ b = FILE_INFO->blocks; - - if (filepos > 0) - { -- if (filepos < a[0].a_len * 512 - VSTAFS_START_DATA) -+ if (filepos < b[0].a_len * 512 - VSTAFS_START_DATA) - { - offset = filepos + VSTAFS_START_DATA; - extent = 0; -- curr_len = a[0].a_len * 512 - offset - filepos; -+ curr_len = b[0].a_len * 512 - offset - filepos; - } - else - { -- ext_size = a[0].a_len * 512 - VSTAFS_START_DATA; -+ ext_size = b[0].a_len * 512 - VSTAFS_START_DATA; - offset = filepos - ext_size; - extent = 1; - do - { - curr_len -= ext_size; - offset -= ext_size; -- ext_size = a[extent+1].a_len * 512; -+ ext_size = b[extent+1].a_len * 512; - } - while (extent < FILE_INFO->extents && offset>ext_size); - } -@@ -223,16 +223,16 @@ - { - offset = VSTAFS_START_DATA; - extent = 0; -- curr_len = a[0].a_len * 512 - offset; -+ curr_len = b[0].a_len * 512 - offset; - } - - curr_pos = addr; - if (curr_len > len) - curr_len = len; - -- for (curr_ext=extent; -- curr_ext < FILE_INFO->extents; -- curr_len = a[curr_ext].a_len * 512, curr_pos += curr_len, curr_ext++) -+ for (curr_exten = extent; -+ curr_exten < FILE_INFO->extents; -+ curr_len = b[curr_exten].a_len * 512, curr_pos += curr_len, curr_exten++) - { - ret += curr_len; - size -= curr_len; -@@ -242,7 +242,7 @@ - curr_len += size; - } - -- devread (a[curr_ext].a_start,offset, curr_len, curr_pos); -+ devread (b[curr_exten].a_start, offset, curr_len, curr_pos); - offset = 0; - } - -diff -Naur grub-0.97.orig/stage2/fsys_xfs.c grub-0.97/stage2/fsys_xfs.c ---- grub-0.97.orig/stage2/fsys_xfs.c 2005-05-07 19:15:55.000000000 -0700 -+++ grub-0.97/stage2/fsys_xfs.c 2006-05-28 20:28:41.586818535 -0700 -@@ -97,7 +97,7 @@ - return ino & XFS_INO_MASK(XFS_INO_OFFSET_BITS); - } - --static inline __const__ xfs_uint16_t -+static inline __attribute__((const)) xfs_uint16_t - le16 (xfs_uint16_t x) - { - __asm__("xchgb %b0,%h0" \ -@@ -106,7 +106,7 @@ - return x; - } - --static inline __const__ xfs_uint32_t -+static inline __attribute__((const)) xfs_uint32_t - le32 (xfs_uint32_t x) - { - #if 0 -@@ -122,7 +122,7 @@ - return x; - } - --static inline __const__ xfs_uint64_t -+static inline __attribute__((const)) xfs_uint64_t - le64 (xfs_uint64_t x) - { - xfs_uint32_t h = x >> 32; -@@ -368,7 +368,7 @@ - default: - namelen = sfe->namelen; - *ino = sf_ino ((char *)sfe, namelen); -- name = sfe->name; -+ name = (char *) sfe->name; - sfe = (xfs_dir2_sf_entry_t *) - ((char *)sfe + namelen + 11 - xfs.i8param); - } -diff -Naur grub-0.97.orig/stage2/gunzip.c grub-0.97/stage2/gunzip.c ---- grub-0.97.orig/stage2/gunzip.c 2003-07-09 04:45:53.000000000 -0700 -+++ grub-0.97/stage2/gunzip.c 2006-05-28 20:28:41.586818535 -0700 -@@ -277,7 +277,7 @@ - * is a compressed file, and simply mark it as such. - */ - if (no_decompression -- || grub_read (buf, 10) != 10 -+ || grub_read ((char *) buf, 10) != 10 - || ((*((unsigned short *) buf) != GZIP_HDR_LE) - && (*((unsigned short *) buf) != OLD_GZIP_HDR_LE))) - { -@@ -293,7 +293,7 @@ - if (buf[2] != DEFLATED - || (buf[3] & UNSUPP_FLAGS) - || ((buf[3] & EXTRA_FIELD) -- && (grub_read (buf, 2) != 2 -+ && (grub_read ((char *) buf, 2) != 2 - || bad_field (*((unsigned short *) buf)))) - || ((buf[3] & ORIG_NAME) && bad_field (-1)) - || ((buf[3] & COMMENT) && bad_field (-1))) -@@ -308,7 +308,7 @@ - - filepos = filemax - 8; - -- if (grub_read (buf, 8) != 8) -+ if (grub_read ((char *) buf, 8) != 8) - { - if (! errnum) - errnum = ERR_BAD_GZIP_HEADER; -@@ -485,8 +485,8 @@ - - #define INBUFSIZ 0x2000 - --static uch inbuf[INBUFSIZ]; --static int bufloc; -+static unsigned char inbuf[INBUFSIZ]; -+static int bufloc; - - static int - get_byte (void) -@@ -494,7 +494,7 @@ - if (filepos == gzip_data_offset || bufloc == INBUFSIZ) - { - bufloc = 0; -- grub_read (inbuf, INBUFSIZ); -+ grub_read ((char *) inbuf, INBUFSIZ); - } - - return inbuf[bufloc++]; -@@ -925,7 +925,7 @@ - unsigned m; /* mask for bit lengths table */ - unsigned n; /* number of lengths to get */ - unsigned nb; /* number of bit length codes */ -- unsigned nl; /* number of literal/length codes */ -+ unsigned nc; /* number of literal/length codes */ - unsigned nd; /* number of distance codes */ - unsigned ll[286 + 30]; /* literal/length and distance code lengths */ - register ulg b; /* bit buffer */ -@@ -937,7 +937,7 @@ - - /* read in table lengths */ - NEEDBITS (5); -- nl = 257 + ((unsigned) b & 0x1f); /* number of literal/length codes */ -+ nc = 257 + ((unsigned) b & 0x1f); /* number of literal/length codes */ - DUMPBITS (5); - NEEDBITS (5); - nd = 1 + ((unsigned) b & 0x1f); /* number of distance codes */ -@@ -945,7 +945,7 @@ - NEEDBITS (4); - nb = 4 + ((unsigned) b & 0xf); /* number of bit length codes */ - DUMPBITS (4); -- if (nl > 286 || nd > 30) -+ if (nc > 286 || nd > 30) - { - errnum = ERR_BAD_GZIP_DATA; - return; -@@ -970,7 +970,7 @@ - } - - /* read in literal and distance code lengths */ -- n = nl + nd; -+ n = nc + nd; - m = mask_bits[bl]; - i = l = 0; - while ((unsigned) i < n) -@@ -1034,7 +1034,7 @@ - - /* build the decoding tables for literal/length and distance codes */ - bl = lbits; -- if ((i = huft_build (ll, nl, 257, cplens, cplext, &tl, &bl)) != 0) -+ if ((i = huft_build (ll, nc, 257, cplens, cplext, &tl, &bl)) != 0) - { - #if 0 - if (i == 1) -@@ -1045,7 +1045,7 @@ - return; - } - bd = dbits; -- if ((i = huft_build (ll + nl, nd, 0, cpdist, cpdext, &td, &bd)) != 0) -+ if ((i = huft_build (ll + nc, nd, 0, cpdist, cpdext, &td, &bd)) != 0) - { - #if 0 - if (i == 1) -diff -Naur grub-0.97.orig/stage2/md5.c grub-0.97/stage2/md5.c ---- grub-0.97.orig/stage2/md5.c 2003-07-09 04:45:53.000000000 -0700 -+++ grub-0.97/stage2/md5.c 2006-05-28 20:28:41.590818435 -0700 -@@ -166,7 +166,7 @@ - inputlen -= 64 - buflen; - while (inputlen >= 64) - { -- md5_transform (input); -+ md5_transform ((unsigned char *) input); - input += 64; - inputlen -= 64; - } -@@ -211,7 +211,7 @@ - char *p; - int saltlen; - int i, n; -- unsigned char alt_result[16]; -+ char alt_result[16]; - unsigned char *digest; - - if (check) -diff -Naur grub-0.97.orig/stage2/start_eltorito.S grub-0.97/stage2/start_eltorito.S ---- grub-0.97.orig/stage2/start_eltorito.S 2004-03-27 08:14:20.000000000 -0800 -+++ grub-0.97/stage2/start_eltorito.S 2006-05-28 20:31:17.770936712 -0700 -@@ -40,9 +40,9 @@ - #define ABS(x) (x-_start+BOOTSEC_LOCATION) - - #ifdef STAGE1_5 --# define STAGE_ADDR 0x2000 -+# define STAGE_ADDR 0x2200 - #else --# define STAGE_ADDR 0x8000 -+# define STAGE_ADDR 0x8200 - #endif /* STAGE1_5 */ - - /* Print message string */ -@@ -71,12 +71,14 @@ - . = _start + 8 /* Pad to file offset 8 */ - - /* This table gets filled in by mkisofs using the -- -boot-info-table option */ --bi_pvd: .long 0xDEADBEEF /* LBA of primary volume descript */ --bi_file: .long 0xDEADBEEF /* LBA of boot file */ --bi_length: .long 0xDEADBEEF /* Length of boot file */ --bi_csum: .long 0xDEADBEEF /* Checksum of boot file */ --bi_reserved: .space (10*4) /* Reserved */ -+ -boot-info-table option If not, the values in this -+ table are default values that we can use to get us -+ what we need, at least under a certain set of assumptions. */ -+bi_pvd: .long 16 /* LBA of primary volume descript */ -+bi_file: .long 0 /* LBA of boot file */ -+bi_length: .long 0xDEADBEEF /* Length of boot file */ -+bi_csum: .long 0xDEADBEEF /* Checksum of boot file */ -+bi_reserved: .space (10*4) /* Reserved */ - - real_start: - xor %ax, %ax -@@ -92,10 +94,28 @@ - /* save drive reference first thing! */ - mov %dl, ABS(BootDrive) - -- /* print a notification message on the screen */ -- MSG(notification_string) -+ /* check if machine support IBM/MS int 13h extensions */ -+ mov $0x41, %ah -+ mov $0x55AA, %bx -+ int $0x13 -+ jnc load_image -+ -+ /* bios doesn't support int 13h extensions, print error messages */ -+ MSG(int13_error_string1) -+ MSG(notification_done) -+ MSG(int13_error_string2) -+ MSG(notification_done) -+ MSG(int13_error_string3) -+ MSG(notification_done) -+ /* even when bios says that it doesn't support int 13h -+ extensions, do not stop here and try to load image anyway, -+ because some bioses says that there isn't support for -+ extended functions but have the needed extended read function -+ (int 13h, function AH=42h) */ - - load_image: -+ /* print a notification message on the screen */ -+ MSG(notification_string) - /* Set up boot file sector, size, load address */ - mov ABS(bi_length), %eax - add $(ISO_SECTOR_SIZE-1), %eax -@@ -105,6 +125,8 @@ - mov %bx, %es - xor %bx, %bx - mov ABS(bi_file), %eax -+ inc %eax /* do not reload the first sector (this code) */ -+ dec %bp /* this way we have more room for code in stage1 */ - call getlinsec - mov %ds, %ax - mov %ax, %es -@@ -115,7 +137,7 @@ - mov $ABS(firstlist - BOOTSEC_LISTSIZE), %si - mov (%si), %ebp - mov ABS(BootDrive), %dl /* this makes sure %dl is our "boot" drive */ -- ljmp $0, $(STAGE_ADDR+SECTOR_SIZE) /* jump to main() in asm.S */ -+ ljmp $0, $(STAGE_ADDR) /* jump to main() in asm.S */ - - /* go here when you need to stop the machine hard after an error condition */ - stop: jmp stop -@@ -171,11 +193,11 @@ - */ - xint13: - movb $6, ABS(RetryCount) -- pushal - .try: -+ pushal - int $0x13 - jc 1f -- add $(8*4), %sp /* Clean up stack */ -+ popal /* Clean up stack */ - ret - 1: - mov %ah, %dl /* Save error code */ -@@ -276,6 +298,10 @@ - - read_error_string: .string "Read error 0x" - -+int13_error_string1: .string "Support for IBM/MS INT 13h extensions not found" -+int13_error_string2: .string "GRUB cannot be loaded if int 13h/function AH=42h isn't present" -+int13_error_string3: .string "Trying to load stage 2 anyway..." -+ - /* - * EBIOS disk address packet - */ -@@ -306,7 +332,8 @@ - .word 0 - .word 0 - -- . = _start + SECTOR_SIZE - BOOTSEC_LISTSIZE -+ /* size of the code we can place between main body and fixed top location */ -+ . = _start + 1536 - BOOTSEC_LISTSIZE - - /* fill the first data listing with the default */ - blocklist_default_start:/* this is the sector start parameter, in logical -@@ -321,6 +348,12 @@ - #endif - blocklist_default_seg: /* this is the segment of the starting address - to load the data into */ -- .word (STAGE_ADDR + SECTOR_SIZE) >> 4 -+ .word (STAGE_ADDR) >> 4 - - firstlist: /* this label has to be after the list data!!! */ -+ -+ /* this is a workaround to allow more code to be added in stage1, -+ it allows more code to be added for this stage, but for this -+ we can't reload the first sector. So we have to align the code -+ to ISO_SECTOR_SIZE. */ -+ . = _start + ISO_SECTOR_SIZE -diff -Naur grub-0.97.orig/util/grub-install.in grub-0.97/util/grub-install.in ---- grub-0.97.orig/util/grub-install.in 2004-07-24 11:57:31.000000000 -0700 -+++ grub-0.97/util/grub-install.in 2006-05-28 20:30:31.484088268 -0700 -@@ -336,6 +336,10 @@ - # Create a safe temporary file. - test -n "$mklog" && log_file=`$mklog` - -+ # Before all invocations of the grub shell, call sync to make sure -+ # the raw device is in sync with any bufferring in filesystems. -+ sync -+ - $grub_shell --batch $no_floppy --device-map=$device_map <<EOF >$log_file - quit - EOF -@@ -450,6 +454,10 @@ - # Create a safe temporary file. - test -n "$mklog" && log_file=`$mklog` - -+# Before all invocations of the grub shell, call sync to make sure -+# the raw device is in sync with any bufferring in filesystems. -+sync -+ - # Now perform the installation. - $grub_shell --batch $no_floppy --device-map=$device_map <<EOF >$log_file - root $root_drive diff --git a/src/patches/grub-0.97-dmraid-partition-names.patch b/src/patches/grub-0.97-dmraid-partition-names.patch deleted file mode 100644 index 9390b29..0000000 --- a/src/patches/grub-0.97-dmraid-partition-names.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- grub-0.97/lib/device.c.dmraid-partition-names 2006-02-13 18:53:59.000000000 -0500 -+++ grub-0.97/lib/device.c 2006-02-13 18:56:04.000000000 -0500 -@@ -1106,6 +1106,7 @@ - /* Compaq smart and others */ - (strncmp(dev, "/dev/ida/", 9) == 0 || - strncmp(dev, "/dev/ataraid/", 13) == 0 || -+ strncmp(dev, "/dev/mapper/", 12) == 0 || - strncmp(dev, "/dev/cciss/", 11) == 0 || - strncmp(dev, "/dev/rd/", 8) == 0) ? "p" : "", - ((partition >> 16) & 0xFF) + 1); diff --git a/src/patches/grub-0.97-dmraid-recheck-bad.patch b/src/patches/grub-0.97-dmraid-recheck-bad.patch deleted file mode 100644 index 49b33ae..0000000 --- a/src/patches/grub-0.97-dmraid-recheck-bad.patch +++ /dev/null @@ -1,17 +0,0 @@ ---- grub-0.97/util/grub-install.in.dmraid-recheck-bad 2006-01-13 17:04:26.000000000 -0500 -+++ grub-0.97/util/grub-install.in 2006-01-13 17:05:00.000000000 -0500 -@@ -415,6 +415,14 @@ - grubdir=${bootdir}/grub - device_map=${grubdir}/device.map - -+if [ "$recheck" == "yes" ]; then -+ if grep 'mapper' ${device_map} >/dev/null; then -+ echo 'grub-install does not support reprobing of device.map when' 1>&2 -+ echo 'using a device-mapper based boot device.' 1>&2 -+ exit 1 -+ fi -+fi -+ - # if they just want the images copied, copy the images and then exit - if test $justcopy = yes; then - copy_images diff --git a/src/patches/grub-0.97-dmraid.patch b/src/patches/grub-0.97-dmraid.patch deleted file mode 100644 index 5aad8c4..0000000 --- a/src/patches/grub-0.97-dmraid.patch +++ /dev/null @@ -1,92 +0,0 @@ ---- grub-0.97/util/grub-install.in.dmraid 2006-01-13 16:40:24.000000000 -0500 -+++ grub-0.97/util/grub-install.in 2006-01-13 16:40:37.000000000 -0500 -@@ -101,17 +101,24 @@ - # Break the device name into the disk part and the partition part. - case "$host_os" in - linux*) -- tmp_disk=`echo "$1" | sed -e 's%([sh]d[a-z])[0-9]*$%\1%' \ -+ tmp_disk=`echo "$1" | grep -v '/mapper/control$' | -+ grep -v '/mapper/[[:alnum:]]+-[[:alnum:]]+$' | uniq | -+ sed -e 's%([sh]d[a-z])[0-9]*$%\1%' \ - -e 's%(d[0-9]*)p[0-9]*$%\1%' \ - -e 's%(fd[0-9]*)$%\1%' \ - -e 's%/part[0-9]*$%/disc%' \ -- -e 's%(c[0-7]d[0-9]*).*$%\1%'` -- tmp_part=`echo "$1" | sed -e 's%.*/[sh]d[a-z]([0-9]*)$%\1%' \ -+ -e 's%(c[0-7]d[0-9]*).*$%\1%' \ -+ -e 's%(/mapper/[[:alpha:]]+_[[:alpha:]]+)[[:digit:]]+$%\1%'` -+ tmp_part=`echo "$1" | grep -v '/mapper/control$' | -+ grep -v '/mapper/[[:alnum:]]+-[[:alnum:]]+$' | uniq | -+ sed -e 's%.*/[sh]d[a-z]([0-9]*)$%\1%' \ - -e 's%.*d[0-9]*p%%' \ - -e 's%.*/fd[0-9]*$%%' \ - -e 's%.*/floppy/[0-9]*$%%' \ - -e 's%.*/(disc|part([0-9]*))$%\2%' \ -- -e 's%.*c[0-7]d[0-9]*p%%'` -+ -e 's%.*c[0-7]d[0-9]*p%%' \ -+ -e 's%.*/mapper/[[:alpha:]]+_[[:alpha:]]+([[:digit:]]+)$%\1%' | -+ grep -v '.*/mapper/.*'` - ;; - gnu*) - tmp_disk=`echo "$1" | sed 's%([sh]d[0-9]*).*%\1%'` -@@ -253,6 +260,43 @@ - return 0 - } - -+# Usage: stat_device file -+# Find major:minor of a device node. -+stat_device() { -+ majmin=`stat -c "%t:%T" "$1" 2>/dev/null` -+ if test -z "$majmin"; then -+ echo "Could not find device for $1" 2>&1 -+ exit 1 -+ fi -+ -+ echo "$majmin" -+} -+ -+# Usage: find_mapper_device file -+# Find a file in /dev/mapper with the same major:minor as the specified node. -+find_mapper_device() { -+ if [ -b "$1" ]; then -+ dev="$1" -+ else -+ mntpnt=`echo "$1" | sed 's,/,\\/,g'` -+ dev=`awk '($2 ~ /'$mntpnt'/) { print $1 }' /etc/mtab` -+ fi -+ if test -z "$dev"; then -+ echo "Could not find device for $1" 2>&1 -+ exit 1 -+ fi -+ -+ majmin=`stat_device $dev` -+ for x in /dev/mapper/* ; do -+ devmajmin=`stat_device "$x"` -+ if [ "$majmin" == "$devmajmin" ]; then -+ echo "$x" -+ return 0 -+ fi -+ done -+ return 1 -+} -+ - # Usage: find_device file - # Find block device on which the file resides. - find_device () { -@@ -265,9 +309,14 @@ - exit 1 - fi - -- tmp_fname=`resolve_symlink $tmp_fname` -+ ret_fname=`resolve_symlink $tmp_fname` -+ tmp_fname=`find_mapper_device $ret_fname` -+ if test -n "$tmp_fname"; then -+ ret_fname="$tmp_fname" -+ fi - -- echo "$tmp_fname" -+ echo "$ret_fname" -+ return 0 - } - - copy_images() { diff --git a/src/patches/grub-0.97-install.in.patch b/src/patches/grub-0.97-install.in.patch deleted file mode 100644 index a9f2aef..0000000 --- a/src/patches/grub-0.97-install.in.patch +++ /dev/null @@ -1,34 +0,0 @@ ---- grub-0.97/util/grub-install.in.install 2005-12-12 18:15:45.000000000 -0500 -+++ grub-0.97/util/grub-install.in 2005-12-12 18:18:11.000000000 -0500 -@@ -324,6 +324,15 @@ - test -d "$bootdir" || mkdir "$bootdir" || exit 1 - test -d "$grubdir" || mkdir "$grubdir" || exit 1 - -+# Copy the GRUB images to the GRUB directory. -+for file in ${grubdir}/stage1 ${grubdir}/stage2 ${grubdir}/*stage1_5; do -+ rm -f $file || exit 1 -+done -+for file in \ -+ ${pkgdatadir}/stage1 ${pkgdatadir}/stage2 ${pkgdatadir}/*stage1_5; do -+ cp -f $file ${grubdir} || exit 1 -+done -+ - # If --recheck is specified, remove the device map, if present. - if test $recheck = yes; then - rm -f $device_map -@@ -406,15 +415,6 @@ - exit 1 - fi - --# Copy the GRUB images to the GRUB directory. --for file in ${grubdir}/stage1 ${grubdir}/stage2 ${grubdir}/*stage1_5; do -- rm -f $file || exit 1 --done --for file in \ -- ${pkglibdir}/stage1 ${pkglibdir}/stage2 ${pkglibdir}/*stage1_5; do -- cp -f $file ${grubdir} || exit 1 --done -- - # Make a default file. - ${grub_set_default} --root-directory=${rootdir} default - diff --git a/src/patches/grub-0.97-mactel-kbd.patch b/src/patches/grub-0.97-mactel-kbd.patch deleted file mode 100644 index f1de19f..0000000 --- a/src/patches/grub-0.97-mactel-kbd.patch +++ /dev/null @@ -1,100 +0,0 @@ ---- grub-0.97/stage2/asm.S.mactel-kbd 2006-06-12 17:00:10.000000000 -0400 -+++ grub-0.97/stage2/asm.S 2006-06-12 17:03:38.000000000 -0400 -@@ -1651,7 +1651,30 @@ - jnz 3f - ret - --3: /* use keyboard controller */ -+3: /* -+ * try to switch gateA20 using PORT92, the "Fast A20 and Init" -+ * register -+ */ -+ mov $0x92, %dx -+ inb %dx, %al -+ /* skip the port92 code if it's unimplemented (read returns 0xff) */ -+ cmpb $0xff, %al -+ jz 6f -+ -+ /* set or clear bit1, the ALT_A20_GATE bit */ -+ movb 4(%esp), %ah -+ testb %ah, %ah -+ jz 4f -+ orb $2, %al -+ jmp 5f -+4: and $0xfd, %al -+ -+ /* clear the INIT_NOW bit; don't accidently reset the machine */ -+5: and $0xfe, %al -+ outb %al, %dx -+ -+ -+6: /* use keyboard controller */ - pushl %eax - - call gloop1 -@@ -1661,9 +1684,12 @@ - - gloopint1: - inb $K_STATUS -+ cmpb $0xff, %al -+ jz gloopint1_done - andb $K_IBUF_FUL, %al - jnz gloopint1 - -+gloopint1_done: - movb $KB_OUTPUT_MASK, %al - cmpb $0, 0x8(%esp) - jz gdoit -@@ -1684,6 +1710,8 @@ - - gloop1: - inb $K_STATUS -+ cmpb $0xff, %al -+ jz gloop2ret - andb $K_IBUF_FUL, %al - jnz gloop1 - -@@ -1994,8 +2022,25 @@ - call EXT_C(prot_to_real) - .code16 - -+.again: -+ mov $0x11, %ah /* poll kbd */ - int $0x16 - -+ jz .again -+#if 0 -+/* XXX handle serial here? -- pj */ -+ jnz .kbd -+#endif -+.kbd: -+ mov $0x10, %ah -+ int $0x16 -+ cmp $0xe0, %al -+ jnz .not_ext -+ xor %al, %al -+.not_ext: -+ and %al, %al -+ jz .func_key -+.func_key: - movw %ax, %dx /* real_to_prot uses %eax */ - call translate_keycode - call remap_ascii_char -@@ -2003,7 +2048,7 @@ - DATA32 call EXT_C(real_to_prot) - .code32 - -- movw %dx, %ax -+ mov %dx, %ax - - pop %ebp - ret -@@ -2029,7 +2074,7 @@ - call EXT_C(prot_to_real) /* enter real mode */ - .code16 - -- movb $0x1, %ah -+ movb $0x11, %ah - int $0x16 - - DATA32 jz notpending diff --git a/src/patches/grub-0.97-mdadm-path.patch b/src/patches/grub-0.97-mdadm-path.patch deleted file mode 100644 index fff301c..0000000 --- a/src/patches/grub-0.97-mdadm-path.patch +++ /dev/null @@ -1,27 +0,0 @@ ---- grub-0.97/util/grub-install.in.mdadm-path 2005-12-12 18:42:23.000000000 -0500 -+++ grub-0.97/util/grub-install.in 2005-12-12 18:44:15.000000000 -0500 -@@ -30,5 +30,6 @@ - pkglibdir=${libdir}/${PACKAGE}/${host_cpu}-${host_vendor} - - grub_shell=${sbindir}/grub -+mdadm=${sbindir}/mdadm - log_file=/tmp/grub-install.log.$$ - img_file=/tmp/grub-install.img.$$ -@@ -217,7 +218,7 @@ - is_raid1_device () { - case "$host_os" in - linux*) -- level=`mdadm --query --detail $1 2>/dev/null | \ -+ level=`$mdadm --query --detail $1 2>/dev/null | \ - awk '/Raid Level :/ {print $4}'` - if [ "$level" = "raid1" ]; then - return 0 -@@ -236,7 +237,7 @@ - linux*) - if is_raid1_device $source_device ; then - list="" -- for device in `mdadm --query --detail "${source_device}" | \ -+ for device in `$mdadm --query --detail "${source_device}" | \ - awk '//dev/[^(md)]/ {print $7}'` ; do - list="$list $device" - done diff --git a/src/patches/grub-0.97-mpath.patch b/src/patches/grub-0.97-mpath.patch deleted file mode 100644 index 4b7edf3..0000000 --- a/src/patches/grub-0.97-mpath.patch +++ /dev/null @@ -1,18 +0,0 @@ ---- grub-0.97/util/grub-install.in.mpath 2006-08-02 17:21:53.000000000 -0400 -+++ grub-0.97/util/grub-install.in 2006-08-02 17:23:23.000000000 -0400 -@@ -107,6 +107,7 @@ - -e 's%(fd[0-9]*)$%\1%' \ - -e 's%/part[0-9]*$%/disc%' \ - -e 's%(c[0-7]d[0-9]*).*$%\1%' \ -+ -e 's%(/mapper/[[:alpha:]]+[[:digit:]]+)p[[:digit:]]+$%\1%' \ - -e 's%(/mapper/[[:alpha:]]+_[[:alpha:]]+)[[:digit:]]+$%\1%'` - tmp_part=`echo "$1" | grep -v '/mapper/control$' | - grep -v '/mapper/[[:alnum:]]+-[[:alnum:]]+$' | uniq | -@@ -116,6 +117,7 @@ - -e 's%.*/floppy/[0-9]*$%%' \ - -e 's%.*/(disc|part([0-9]*))$%\2%' \ - -e 's%.*c[0-7]d[0-9]*p%%' \ -+ -e 's%.*/mapper/[[:alpha:]]+[[:digit:]]+p([[:digit:]]+)$%\1%' \ - -e 's%.*/mapper/[[:alpha:]]+_[[:alpha:]]+([[:digit:]]+)$%\1%' | - grep -v '.*/mapper/.*'` - ;; diff --git a/src/patches/grub-0.97-nx-multiinstall.patch b/src/patches/grub-0.97-nx-multiinstall.patch deleted file mode 100644 index f0e4ec0..0000000 --- a/src/patches/grub-0.97-nx-multiinstall.patch +++ /dev/null @@ -1,60 +0,0 @@ -2006-03-09 Alexandre Oliva oliva@gnu.org - - * lib/builtins.c (install_blocklist_helper): Move static - last_lenght... - (install_func_context): ... here. - (install_func): Reset it. - -Index: grub-0.97/stage2/builtins.c -=================================================================== ---- grub-0.97.orig/stage2/builtins.c 2006-03-09 10:26:41.000000000 -0300 -+++ grub-0.97/stage2/builtins.c 2006-03-09 11:36:18.000000000 -0300 -@@ -1926,11 +1926,13 @@ static struct { - int saved_sector; - int installaddr; - int installlist; -+ int last_length; - char *stage2_first_buffer; - } install_func_context = { - .saved_sector = 0, - .installaddr = 0, - .installlist = 0, -+ .last_length = SECTOR_SIZE, - .stage2_first_buffer = NULL, - }; - -@@ -1960,19 +1962,19 @@ install_blocklist_helper (int sector, in - int *installlist = &install_func_context.installlist; - char **stage2_first_buffer = &install_func_context.stage2_first_buffer; - /* Was the last sector full? */ -- static int last_length = SECTOR_SIZE; -+ int *last_length = &install_func_context.last_length; - - if (debug) - printf("[%d]", sector); - -- if (offset != 0 || last_length != SECTOR_SIZE) -+ if (offset != 0 || *last_length != SECTOR_SIZE) - { - /* We found a non-sector-aligned data block. */ - errnum = ERR_UNALIGNED; - return; - } - -- last_length = length; -+ *last_length = length; - - if (*((unsigned long *) (*installlist - 4)) - + *((unsigned short *) *installlist) != sector -@@ -2027,7 +2029,11 @@ install_func (char *arg, int flags) - int is_open = 0; - /* If LBA is forced? */ - int is_force_lba = 0; -+ int *last_length = &install_func_context.last_length; - -+ /* Reset state. */ -+ *last_length = SECTOR_SIZE; -+ - *stage2_first_buffer = old_sect + SECTOR_SIZE; - #ifdef GRUB_UTIL - /* If the Stage 2 is in a partition mounted by an OS, this will store diff --git a/src/patches/grub-0.97-nxstack.patch b/src/patches/grub-0.97-nxstack.patch deleted file mode 100644 index 92742cd..0000000 --- a/src/patches/grub-0.97-nxstack.patch +++ /dev/null @@ -1,615 +0,0 @@ ---- grub-0.97/stage2/shared.h.nxstack 2005-12-12 18:31:41.000000000 -0500 -+++ grub-0.97/stage2/shared.h 2005-12-12 18:31:42.000000000 -0500 -@@ -36,8 +36,8 @@ - - /* Maybe redirect memory requests through grub_scratch_mem. */ - #ifdef GRUB_UTIL --extern char *grub_scratch_mem; --# define RAW_ADDR(x) ((x) + (int) grub_scratch_mem) -+extern void *grub_scratch_mem; -+# define RAW_ADDR(x) ((x) + (unsigned long) grub_scratch_mem) - # define RAW_SEG(x) (RAW_ADDR ((x) << 4) >> 4) - #else - # define RAW_ADDR(x) (x) ---- grub-0.97/stage2/builtins.c.nxstack 2005-12-12 18:31:41.000000000 -0500 -+++ grub-0.97/stage2/builtins.c 2005-12-12 18:41:47.000000000 -0500 -@@ -131,62 +131,97 @@ - } - - -+/* blocklist_read_helper nee disk_read_blocklist_func was a nested -+ * function, to which pointers were taken and exposed globally. Even -+ * in the GNU-C nested functions extension, they have local linkage, -+ * and aren't guaranteed to be accessable *at all* outside of their -+ * containing scope. -+ * -+ * Above and beyond all of that, the variables within blocklist_func_context -+ * are originally local variables, with local (not even static) linkage, -+ * from within blocklist_func. These were each referenced by -+ * disk_read_blocklist_func, which is only called from other functions -+ * through a globally scoped pointer. -+ * -+ * The documentation in GCC actually uses the words "all hell will break -+ * loose" to describe this scenario. -+ * -+ * Also, "start_sector" was also used uninitialized, but gcc doesn't warn -+ * about it (possibly because of the scoping madness?) -+ */ -+ -+static struct { -+ int start_sector; -+ int num_sectors; -+ int num_entries; -+ int last_length; -+} blocklist_func_context = { -+ .start_sector = 0, -+ .num_sectors = 0, -+ .num_entries = 0, -+ .last_length = 0 -+}; -+ -+/* Collect contiguous blocks into one entry as many as possible, -+ and print the blocklist notation on the screen. */ -+static void -+blocklist_read_helper (int sector, int offset, int length) -+{ -+ int *start_sector = &blocklist_func_context.start_sector; -+ int *num_sectors = &blocklist_func_context.num_sectors; -+ int *num_entries = &blocklist_func_context.num_entries; -+ int *last_length = &blocklist_func_context.last_length; -+ -+ if (*num_sectors > 0) -+ { -+ if (*start_sector + *num_sectors == sector -+ && offset == 0 && *last_length == SECTOR_SIZE) -+ { -+ *num_sectors++; -+ *last_length = length; -+ return; -+ } -+ else -+ { -+ if (*last_length == SECTOR_SIZE) -+ grub_printf ("%s%d+%d", *num_entries ? "," : "", -+ *start_sector - part_start, *num_sectors); -+ else if (*num_sectors > 1) -+ grub_printf ("%s%d+%d,%d[0-%d]", *num_entries ? "," : "", -+ *start_sector - part_start, *num_sectors-1, -+ *start_sector + *num_sectors-1 - part_start, -+ *last_length); -+ else -+ grub_printf ("%s%d[0-%d]", *num_entries ? "," : "", -+ *start_sector - part_start, *last_length); -+ *num_entries++; -+ *num_sectors = 0; -+ } -+ } -+ -+ if (offset > 0) -+ { -+ grub_printf("%s%d[%d-%d]", *num_entries ? "," : "", -+ sector-part_start, offset, offset+length); -+ *num_entries++; -+ } -+ else -+ { -+ *start_sector = sector; -+ *num_sectors = 1; -+ *last_length = length; -+ } -+} -+ - /* blocklist */ - static int - blocklist_func (char *arg, int flags) - { - char *dummy = (char *) RAW_ADDR (0x100000); -- int start_sector; -- int num_sectors = 0; -- int num_entries = 0; -- int last_length = 0; - -- auto void disk_read_blocklist_func (int sector, int offset, int length); -- -- /* Collect contiguous blocks into one entry as many as possible, -- and print the blocklist notation on the screen. */ -- auto void disk_read_blocklist_func (int sector, int offset, int length) -- { -- if (num_sectors > 0) -- { -- if (start_sector + num_sectors == sector -- && offset == 0 && last_length == SECTOR_SIZE) -- { -- num_sectors++; -- last_length = length; -- return; -- } -- else -- { -- if (last_length == SECTOR_SIZE) -- grub_printf ("%s%d+%d", num_entries ? "," : "", -- start_sector - part_start, num_sectors); -- else if (num_sectors > 1) -- grub_printf ("%s%d+%d,%d[0-%d]", num_entries ? "," : "", -- start_sector - part_start, num_sectors-1, -- start_sector + num_sectors-1 - part_start, -- last_length); -- else -- grub_printf ("%s%d[0-%d]", num_entries ? "," : "", -- start_sector - part_start, last_length); -- num_entries++; -- num_sectors = 0; -- } -- } -- -- if (offset > 0) -- { -- grub_printf("%s%d[%d-%d]", num_entries ? "," : "", -- sector-part_start, offset, offset+length); -- num_entries++; -- } -- else -- { -- start_sector = sector; -- num_sectors = 1; -- last_length = length; -- } -- } -+ int *start_sector = &blocklist_func_context.start_sector; -+ int *num_sectors = &blocklist_func_context.num_sectors; -+ int *num_entries = &blocklist_func_context.num_entries; - - /* Open the file. */ - if (! grub_open (arg)) -@@ -206,15 +241,15 @@ - grub_printf (")"); - - /* Read in the whole file to DUMMY. */ -- disk_read_hook = disk_read_blocklist_func; -+ disk_read_hook = blocklist_read_helper; - if (! grub_read (dummy, -1)) - goto fail; - - /* The last entry may not be printed yet. Don't check if it is a - * full sector, since it doesn't matter if we read too much. */ -- if (num_sectors > 0) -- grub_printf ("%s%d+%d", num_entries ? "," : "", -- start_sector - part_start, num_sectors); -+ if (*num_sectors > 0) -+ grub_printf ("%s%d+%d", *num_entries ? "," : "", -+ *start_sector - part_start, *num_sectors); - - grub_printf ("\n"); - -@@ -1889,6 +1924,77 @@ - - - /* install */ -+static struct { -+ int saved_sector; -+ int installaddr; -+ int installlist; -+ char *stage2_first_buffer; -+} install_func_context = { -+ .saved_sector = 0, -+ .installaddr = 0, -+ .installlist = 0, -+ .stage2_first_buffer = NULL, -+}; -+ -+/* Save the first sector of Stage2 in STAGE2_SECT. */ -+/* Formerly disk_read_savesect_func with local scope inside install_func */ -+static void -+install_savesect_helper(int sector, int offset, int length) -+{ -+ if (debug) -+ printf ("[%d]", sector); -+ -+ /* ReiserFS has files which sometimes contain data not aligned -+ on sector boundaries. Returning an error is better than -+ silently failing. */ -+ if (offset != 0 || length != SECTOR_SIZE) -+ errnum = ERR_UNALIGNED; -+ -+ install_func_context.saved_sector = sector; -+} -+ -+/* Write SECTOR to INSTALLLIST, and update INSTALLADDR and INSTALLSECT. */ -+/* Formerly disk_read_blocklist_func with local scope inside install_func */ -+static void -+install_blocklist_helper (int sector, int offset, int length) -+{ -+ int *installaddr = &install_func_context.installaddr; -+ int *installlist = &install_func_context.installlist; -+ char **stage2_first_buffer = &install_func_context.stage2_first_buffer; -+ /* Was the last sector full? */ -+ static int last_length = SECTOR_SIZE; -+ -+ if (debug) -+ printf("[%d]", sector); -+ -+ if (offset != 0 || last_length != SECTOR_SIZE) -+ { -+ /* We found a non-sector-aligned data block. */ -+ errnum = ERR_UNALIGNED; -+ return; -+ } -+ -+ last_length = length; -+ -+ if (*((unsigned long *) (*installlist - 4)) -+ + *((unsigned short *) *installlist) != sector -+ || *installlist == (int) *stage2_first_buffer + SECTOR_SIZE + 4) -+ { -+ *installlist -= 8; -+ -+ if (*((unsigned long *) (*installlist - 8))) -+ errnum = ERR_WONT_FIT; -+ else -+ { -+ *((unsigned short *) (*installlist + 2)) = (*installaddr >> 4); -+ *((unsigned long *) (*installlist - 4)) = sector; -+ } -+ } -+ -+ *((unsigned short *) *installlist) += 1; -+ *installaddr += 512; -+} -+ - static int - install_func (char *arg, int flags) - { -@@ -1896,8 +2002,12 @@ - char *stage1_buffer = (char *) RAW_ADDR (0x100000); - char *stage2_buffer = stage1_buffer + SECTOR_SIZE; - char *old_sect = stage2_buffer + SECTOR_SIZE; -- char *stage2_first_buffer = old_sect + SECTOR_SIZE; -- char *stage2_second_buffer = stage2_first_buffer + SECTOR_SIZE; -+ /* stage2_first_buffer used to be defined as: -+ * char *stage2_first_buffer = old_sect + SECTOR_SIZE; */ -+ char **stage2_first_buffer = &install_func_context.stage2_first_buffer; -+ /* and stage2_second_buffer was: -+ * char *stage2_second_buffer = stage2_first_buffer + SECTOR_SIZE; */ -+ char *stage2_second_buffer = old_sect + SECTOR_SIZE + SECTOR_SIZE; - /* XXX: Probably SECTOR_SIZE is reasonable. */ - char *config_filename = stage2_second_buffer + SECTOR_SIZE; - char *dummy = config_filename + SECTOR_SIZE; -@@ -1906,10 +2016,11 @@ - int src_drive, src_partition, src_part_start; - int i; - struct geometry dest_geom, src_geom; -- int saved_sector; -+ int *saved_sector = &install_func_context.saved_sector; - int stage2_first_sector, stage2_second_sector; - char *ptr; -- int installaddr, installlist; -+ int *installaddr = &install_func_context.installaddr; -+ int *installlist = &install_func_context.installlist; - /* Point to the location of the name of a configuration file in Stage 2. */ - char *config_file_location; - /* If FILE is a Stage 1.5? */ -@@ -1918,68 +2029,14 @@ - int is_open = 0; - /* If LBA is forced? */ - int is_force_lba = 0; -- /* Was the last sector full? */ -- int last_length = SECTOR_SIZE; - -+ *stage2_first_buffer = old_sect + SECTOR_SIZE; - #ifdef GRUB_UTIL - /* If the Stage 2 is in a partition mounted by an OS, this will store - the filename under the OS. */ - char *stage2_os_file = 0; - #endif /* GRUB_UTIL */ - -- auto void disk_read_savesect_func (int sector, int offset, int length); -- auto void disk_read_blocklist_func (int sector, int offset, int length); -- -- /* Save the first sector of Stage2 in STAGE2_SECT. */ -- auto void disk_read_savesect_func (int sector, int offset, int length) -- { -- if (debug) -- printf ("[%d]", sector); -- -- /* ReiserFS has files which sometimes contain data not aligned -- on sector boundaries. Returning an error is better than -- silently failing. */ -- if (offset != 0 || length != SECTOR_SIZE) -- errnum = ERR_UNALIGNED; -- -- saved_sector = sector; -- } -- -- /* Write SECTOR to INSTALLLIST, and update INSTALLADDR and -- INSTALLSECT. */ -- auto void disk_read_blocklist_func (int sector, int offset, int length) -- { -- if (debug) -- printf("[%d]", sector); -- -- if (offset != 0 || last_length != SECTOR_SIZE) -- { -- /* We found a non-sector-aligned data block. */ -- errnum = ERR_UNALIGNED; -- return; -- } -- -- last_length = length; -- -- if (*((unsigned long *) (installlist - 4)) -- + *((unsigned short *) installlist) != sector -- || installlist == (int) stage2_first_buffer + SECTOR_SIZE + 4) -- { -- installlist -= 8; -- -- if (*((unsigned long *) (installlist - 8))) -- errnum = ERR_WONT_FIT; -- else -- { -- *((unsigned short *) (installlist + 2)) = (installaddr >> 4); -- *((unsigned long *) (installlist - 4)) = sector; -- } -- } -- -- *((unsigned short *) installlist) += 1; -- installaddr += 512; -- } -- - /* First, check the GNU-style long option. */ - while (1) - { -@@ -2011,10 +2068,10 @@ - addr = skip_to (0, file); - - /* Get the installation address. */ -- if (! safe_parse_maxint (&addr, &installaddr)) -+ if (! safe_parse_maxint (&addr, installaddr)) - { - /* ADDR is not specified. */ -- installaddr = 0; -+ *installaddr = 0; - ptr = addr; - errnum = 0; - } -@@ -2110,17 +2167,17 @@ - = 0x9090; - - /* Read the first sector of Stage 2. */ -- disk_read_hook = disk_read_savesect_func; -- if (grub_read (stage2_first_buffer, SECTOR_SIZE) != SECTOR_SIZE) -+ disk_read_hook = install_savesect_helper; -+ if (grub_read (*stage2_first_buffer, SECTOR_SIZE) != SECTOR_SIZE) - goto fail; - -- stage2_first_sector = saved_sector; -+ stage2_first_sector = *saved_sector; - - /* Read the second sector of Stage 2. */ - if (grub_read (stage2_second_buffer, SECTOR_SIZE) != SECTOR_SIZE) - goto fail; - -- stage2_second_sector = saved_sector; -+ stage2_second_sector = *saved_sector; - - /* Check for the version of Stage 2. */ - if (*((short *) (stage2_second_buffer + STAGE2_VER_MAJ_OFFS)) -@@ -2136,27 +2193,27 @@ - - /* If INSTALLADDR is not specified explicitly in the command-line, - determine it by the Stage 2 id. */ -- if (! installaddr) -+ if (! *installaddr) - { - if (! is_stage1_5) - /* Stage 2. */ -- installaddr = 0x8000; -+ *installaddr = 0x8000; - else - /* Stage 1.5. */ -- installaddr = 0x2000; -+ *installaddr = 0x2000; - } - - *((unsigned long *) (stage1_buffer + STAGE1_STAGE2_SECTOR)) - = stage2_first_sector; - *((unsigned short *) (stage1_buffer + STAGE1_STAGE2_ADDRESS)) -- = installaddr; -+ = *installaddr; - *((unsigned short *) (stage1_buffer + STAGE1_STAGE2_SEGMENT)) -- = installaddr >> 4; -+ = *installaddr >> 4; - -- i = (int) stage2_first_buffer + SECTOR_SIZE - 4; -+ i = (int) *stage2_first_buffer + SECTOR_SIZE - 4; - while (*((unsigned long *) i)) - { -- if (i < (int) stage2_first_buffer -+ if (i < (int) *stage2_first_buffer - || (*((int *) (i - 4)) & 0x80000000) - || *((unsigned short *) i) >= 0xA00 - || *((short *) (i + 2)) == 0) -@@ -2170,13 +2227,13 @@ - i -= 8; - } - -- installlist = (int) stage2_first_buffer + SECTOR_SIZE + 4; -- installaddr += SECTOR_SIZE; -+ *installlist = (int) *stage2_first_buffer + SECTOR_SIZE + 4; -+ *installaddr += SECTOR_SIZE; - - /* Read the whole of Stage2 except for the first sector. */ - grub_seek (SECTOR_SIZE); - -- disk_read_hook = disk_read_blocklist_func; -+ disk_read_hook = install_blocklist_helper; - if (! grub_read (dummy, -1)) - goto fail; - -@@ -2259,7 +2316,7 @@ - /* Skip the first sector. */ - grub_seek (SECTOR_SIZE); - -- disk_read_hook = disk_read_savesect_func; -+ disk_read_hook = install_savesect_helper; - if (grub_read (stage2_buffer, SECTOR_SIZE) != SECTOR_SIZE) - goto fail; - -@@ -2329,7 +2386,7 @@ - else - #endif /* GRUB_UTIL */ - { -- if (! devwrite (saved_sector - part_start, 1, stage2_buffer)) -+ if (! devwrite (*saved_sector - part_start, 1, stage2_buffer)) - goto fail; - } - } -@@ -2351,7 +2408,7 @@ - goto fail; - } - -- if (fwrite (stage2_first_buffer, 1, SECTOR_SIZE, fp) != SECTOR_SIZE) -+ if (fwrite (*stage2_first_buffer, 1, SECTOR_SIZE, fp) != SECTOR_SIZE) - { - fclose (fp); - errnum = ERR_WRITE; -@@ -2378,7 +2435,7 @@ - goto fail; - - if (! devwrite (stage2_first_sector - src_part_start, 1, -- stage2_first_buffer)) -+ *stage2_first_buffer)) - goto fail; - - if (! devwrite (stage2_second_sector - src_part_start, 1, ---- grub-0.97/grub/asmstub.c.nxstack 2005-12-12 18:31:41.000000000 -0500 -+++ grub-0.97/grub/asmstub.c 2005-12-12 18:31:42.000000000 -0500 -@@ -42,6 +42,7 @@ - #include <sys/time.h> - #include <termios.h> - #include <signal.h> -+#include <sys/mman.h> - - #ifdef __linux__ - # include <sys/ioctl.h> /* ioctl */ -@@ -82,7 +83,7 @@ - struct apm_info apm_bios_info; - - /* Emulation requirements. */ --char *grub_scratch_mem = 0; -+void *grub_scratch_mem = 0; - - struct geometry *disks = 0; - -@@ -106,14 +107,62 @@ - static unsigned int serial_speed; - #endif /* SIMULATE_SLOWNESS_OF_SERIAL */ - -+/* This allocates page-aligned storage of the specified size, which must be -+ * a multiple of the page size as determined by calling sysconf(_SC_PAGESIZE) -+ */ -+#ifdef __linux__ -+static void * -+grub_mmap_alloc(size_t len) -+{ -+ int mmap_flags = MAP_ANONYMOUS|MAP_PRIVATE|MAP_EXECUTABLE; -+ -+#ifdef MAP_32BIT -+ mmap_flags |= MAP_32BIT; -+#endif -+ /* Mark the simulated stack executable, as GCC uses stack trampolines -+ * to implement nested functions. */ -+ return mmap(NULL, len, PROT_READ|PROT_WRITE|PROT_EXEC, mmap_flags, -1, 0); -+} -+#else /* !defined(__linux__) */ -+static void * -+grub_mmap_alloc(size_t len) -+{ -+ int fd = 0, offset = 0, ret = 0; -+ void *pa = MAP_FAILED; -+ char template[] = "/tmp/grub_mmap_alloc_XXXXXX"; -+ errno_t e; -+ -+ fd = mkstemp(template); -+ if (fd < 0) -+ return pa; -+ -+ unlink(template); -+ -+ ret = ftruncate(fd, len); -+ if (ret < 0) -+ return pa; -+ -+ /* Mark the simulated stack executable, as GCC uses stack trampolines -+ * to implement nested functions. */ -+ pa = mmap(NULL, len, PROT_READ|PROT_WRITE|PROT_EXEC, -+ MAP_PRIVATE|MAP_EXECUTABLE, fd, offset); -+ -+ e = errno; -+ close(fd); -+ errno = e; -+ return pa; -+} -+#endif /* defined(__linux__) */ -+ - /* The main entry point into this mess. */ - int - grub_stage2 (void) - { - /* These need to be static, because they survive our stack transitions. */ - static int status = 0; -- static char *realstack; -- char *scratch, *simstack; -+ static void *realstack; -+ void *simstack_alloc_base, *simstack; -+ size_t simstack_size, page_size; - int i; - - auto void doit (void); -@@ -145,9 +194,35 @@ - } - - assert (grub_scratch_mem == 0); -- scratch = malloc (0x100000 + EXTENDED_MEMSIZE + 15); -- assert (scratch); -- grub_scratch_mem = (char *) ((((int) scratch) >> 4) << 4); -+ -+ /* Allocate enough pages for 0x100000 + EXTENDED_SIZE + 15, and -+ * make sure the memory is aligned to a multiple of the system's -+ * page size */ -+ page_size = sysconf (_SC_PAGESIZE); -+ simstack_size = ( 0x100000 + EXTENDED_MEMSIZE + 15); -+ if (simstack_size % page_size) -+ { -+ /* If we're not on a page_size boundary, round up to the next one */ -+ simstack_size &= ~(page_size-1); -+ simstack_size += page_size; -+ } -+ -+ /* Add one for a PROT_NONE boundary page at each end. */ -+ simstack_size += 2 * page_size; -+ -+ simstack_alloc_base = grub_mmap_alloc(simstack_size); -+ assert (simstack_alloc_base != MAP_FAILED); -+ -+ /* mark pages above and below our simstack area as innaccessable. -+ * If the implementation we're using doesn't support that, then the -+ * new protection modes are undefined. It's safe to just ignore -+ * them, though. It'd be nice if we knew that we'd get a SEGV for -+ * touching the area, but that's all. it'd be nice to have. */ -+ mprotect (simstack_alloc_base, page_size, PROT_NONE); -+ mprotect ((void *)((unsigned long)simstack_alloc_base + -+ simstack_size - page_size), page_size, PROT_NONE); -+ -+ grub_scratch_mem = (void *)((unsigned long)simstack_alloc_base + page_size); - - /* FIXME: simulate the memory holes using mprot, if available. */ - -@@ -220,7 +295,7 @@ - device_map = 0; - free (disks); - disks = 0; -- free (scratch); -+ munmap(simstack_alloc_base, simstack_size); - grub_scratch_mem = 0; - - if (serial_device) diff --git a/src/patches/grub-0.97-once.patch b/src/patches/grub-0.97-once.patch deleted file mode 100644 index 6fb9a8d..0000000 --- a/src/patches/grub-0.97-once.patch +++ /dev/null @@ -1,513 +0,0 @@ ---- grub-0.97/stage2/builtins.c.bootonce 2005-12-12 18:23:12.000000000 -0500 -+++ grub-0.97/stage2/builtins.c 2005-12-12 18:29:20.000000000 -0500 -@@ -3217,146 +3217,175 @@ - }; - - --/* savedefault */ -+ -+#if !defined(SUPPORT_DISKLESS) && !defined(GRUB_UTIL) -+/* Write specified default entry number into stage2 file. */ - static int --savedefault_func (char *arg, int flags) -+savedefault_helper(int new_default) - { --#if !defined(SUPPORT_DISKLESS) && !defined(GRUB_UTIL) -- unsigned long tmp_drive = saved_drive; -- unsigned long tmp_partition = saved_partition; -- char *default_file = (char *) DEFAULT_FILE_BUF; -- char buf[10]; -- char sect[SECTOR_SIZE]; -- int entryno; -- int sector_count = 0; -- int saved_sectors[2]; -- int saved_offsets[2]; -- int saved_lengths[2]; -- -- /* Save sector information about at most two sectors. */ -- auto void disk_read_savesect_func (int sector, int offset, int length); -- void disk_read_savesect_func (int sector, int offset, int length) -- { -- if (sector_count < 2) -- { -- saved_sectors[sector_count] = sector; -- saved_offsets[sector_count] = offset; -- saved_lengths[sector_count] = length; -- } -- sector_count++; -- } -- -- /* This command is only useful when you boot an entry from the menu -- interface. */ -- if (! (flags & BUILTIN_SCRIPT)) -+ char buffer[512]; -+ int *entryno_ptr; -+ -+ /* Get the geometry of the boot drive (i.e. the disk which contains -+ this stage2). */ -+ if (get_diskinfo (boot_drive, &buf_geom)) - { -- errnum = ERR_UNRECOGNIZED; -+ errnum = ERR_NO_DISK; - return 1; - } - -- /* Determine a saved entry number. */ -- if (*arg) -+ /* Load the second sector of this stage2. */ -+ if (! rawread (boot_drive, install_second_sector, 0, SECTOR_SIZE, buffer)) - { -- if (grub_memcmp (arg, "fallback", sizeof ("fallback") - 1) == 0) -- { -- int i; -- int index = 0; -- -- for (i = 0; i < MAX_FALLBACK_ENTRIES; i++) -- { -- if (fallback_entries[i] < 0) -- break; -- if (fallback_entries[i] == current_entryno) -- { -- index = i + 1; -- break; -- } -- } -- -- if (index >= MAX_FALLBACK_ENTRIES || fallback_entries[index] < 0) -- { -- /* This is the last. */ -- errnum = ERR_BAD_ARGUMENT; -- return 1; -- } -+ return 1; -+ } - -- entryno = fallback_entries[index]; -- } -- else if (! safe_parse_maxint (&arg, &entryno)) -- return 1; -+ /* Sanity check. */ -+ if (buffer[STAGE2_STAGE2_ID] != STAGE2_ID_STAGE2 -+ || *((short *) (buffer + STAGE2_VER_MAJ_OFFS)) != COMPAT_VERSION) -+ { -+ errnum = ERR_BAD_VERSION; -+ return 1; - } -- else -- entryno = current_entryno; -+ -+ entryno_ptr = (int *) (buffer + STAGE2_SAVED_ENTRYNO); - -- /* Open the default file. */ -- saved_drive = boot_drive; -- saved_partition = install_partition; -- if (grub_open (default_file)) -+ /* Check if the saved entry number differs from current entry number. */ -+ if (*entryno_ptr != new_default) - { -- int len; -+ /* Overwrite the saved entry number. */ -+ *entryno_ptr = new_default; - -- disk_read_hook = disk_read_savesect_func; -- len = grub_read (buf, sizeof (buf)); -- disk_read_hook = 0; -- grub_close (); -+ /* Save the image in the disk. */ -+ if (! rawwrite (boot_drive, install_second_sector, buffer)) -+ return 1; - -- if (len != sizeof (buf)) -- { -- /* This is too small. Do not modify the file manually, please! */ -- errnum = ERR_READ; -- goto fail; -- } -+ /* Clear the cache. */ -+ buf_track = -1; -+ } - -- if (sector_count > 2) -- { -- /* Is this possible?! Too fragmented! */ -- errnum = ERR_FSYS_CORRUPT; -- goto fail; -- } -- -- /* Set up a string to be written. */ -- grub_memset (buf, '\n', sizeof (buf)); -- grub_sprintf (buf, "%d", entryno); -- -- if (saved_lengths[0] < sizeof (buf)) -- { -- /* The file is anchored to another file and the first few bytes -- are spanned in two sectors. Uggh... */ -- if (! rawread (current_drive, saved_sectors[0], 0, SECTOR_SIZE, -- sect)) -- goto fail; -- grub_memmove (sect + saved_offsets[0], buf, saved_lengths[0]); -- if (! rawwrite (current_drive, saved_sectors[0], sect)) -- goto fail; -+ return 0; -+} -+#endif - -- if (! rawread (current_drive, saved_sectors[1], 0, SECTOR_SIZE, -- sect)) -- goto fail; -- grub_memmove (sect + saved_offsets[1], -- buf + saved_lengths[0], -- sizeof (buf) - saved_lengths[0]); -- if (! rawwrite (current_drive, saved_sectors[1], sect)) -- goto fail; -- } -+#if !defined(SUPPORT_DISKLESS) && defined(GRUB_UTIL) -+/* -+ * Full implementation of new `savedefault' for GRUB shell. -+ * XXX This needs fixing for stage2 files which aren't accessible -+ * through a mounted filesystem. -+ */ -+static int -+savedefault_shell(char *arg, int flags) -+{ -+ char *stage2_os_file = "/boot/grub/stage2"; /* Default filename */ -+ FILE *fp; -+ char buffer[512]; -+ int *entryno_ptr; -+ int new_default = 0; -+ int old_default = 0; -+ -+ while (1) -+ { -+ if (grub_memcmp ("--stage2=", arg, sizeof ("--stage2=") - 1) == 0) -+ { -+ stage2_os_file = arg + sizeof ("--stage2=") - 1; -+ arg = skip_to (0, arg); -+ nul_terminate (stage2_os_file); -+ } -+ else if (grub_memcmp ("--default=", arg, sizeof ("--default=") - 1) == 0) -+ { -+ char *p = arg + sizeof ("--default=") - 1; -+ if (! safe_parse_maxint (&p, &new_default)) -+ return 1; -+ arg = skip_to (0, arg); -+ } -+ else if (grub_memcmp ("--once", arg, sizeof ("--once") - 1) == 0) -+ { -+ new_default <<= 8; -+ new_default |= STAGE2_ONCEONLY_ENTRY; -+ arg = skip_to (0, arg); -+ } - else -- { -- /* This is a simple case. It fits into a single sector. */ -- if (! rawread (current_drive, saved_sectors[0], 0, SECTOR_SIZE, -- sect)) -- goto fail; -- grub_memmove (sect + saved_offsets[0], buf, sizeof (buf)); -- if (! rawwrite (current_drive, saved_sectors[0], sect)) -- goto fail; -- } -+ break; -+ } - -- /* Clear the cache. */ -- buf_track = -1; -+ if (! (fp = fopen(stage2_os_file, "r+"))) -+ { -+ errnum = ERR_FILE_NOT_FOUND; -+ return 1; -+ } -+ -+ if (fseek (fp, SECTOR_SIZE, SEEK_SET) != 0) -+ { -+ fclose (fp); -+ errnum = ERR_BAD_VERSION; -+ return 1; -+ } -+ -+ if (fread (buffer, 1, SECTOR_SIZE, fp) != SECTOR_SIZE) -+ { -+ fclose (fp); -+ errnum = ERR_READ; -+ return 1; - } - -- fail: -- saved_drive = tmp_drive; -- saved_partition = tmp_partition; -- return errnum; -+ /* Sanity check. */ -+ if (buffer[STAGE2_STAGE2_ID] != STAGE2_ID_STAGE2 -+ || *((short *) (buffer + STAGE2_VER_MAJ_OFFS)) != COMPAT_VERSION) -+ { -+ errnum = ERR_BAD_VERSION; -+ return 1; -+ } -+ -+ entryno_ptr = (int *) (buffer + STAGE2_SAVED_ENTRYNO); -+ if (new_default & STAGE2_ONCEONLY_ENTRY) -+ { -+ old_default=*entryno_ptr; -+ *entryno_ptr = new_default + (old_default & 0xFF); -+ } -+ else -+ { -+ *entryno_ptr = new_default; -+ } -+ -+ if (fseek (fp, SECTOR_SIZE, SEEK_SET) != 0) -+ { -+ fclose (fp); -+ errnum = ERR_BAD_VERSION; -+ return 1; -+ } -+ -+ if (fwrite (buffer, 1, SECTOR_SIZE, fp) != SECTOR_SIZE) -+ { -+ fclose (fp); -+ errnum = ERR_WRITE; -+ return 1; -+ } -+ -+ (void)fflush (fp); -+ fclose (fp); -+ return 0; -+} -+#endif -+ -+/* savedefault */ -+static int -+savedefault_func (char *arg, int flags) -+{ -+#if !defined(SUPPORT_DISKLESS) -+#if !defined(GRUB_UTIL) -+ /* This command is only useful when you boot an entry from the menu -+ interface. */ -+ if (! (flags & BUILTIN_SCRIPT)) -+ { -+ errnum = ERR_UNRECOGNIZED; -+ return 1; -+ } -+ -+ return savedefault_helper(current_entryno); -+#else /* defined(GRUB_UTIL) */ -+ return savedefault_shell(arg, flags); -+#endif - #else /* ! SUPPORT_DISKLESS && ! GRUB_UTIL */ - errnum = ERR_UNRECOGNIZED; - return 1; -@@ -3368,10 +3397,14 @@ - "savedefault", - savedefault_func, - BUILTIN_CMDLINE, -- "savedefault [NUM | `fallback']", -- "Save the current entry as the default boot entry if no argument is" -- " specified. If a number is specified, this number is saved. If" -- " `fallback' is used, next fallback entry is saved." -+#ifdef GRUB_UTIL -+ "savedefault [--stage2=STAGE2_FILE] [--default=DEFAULT] [--once]", -+ "Save DEFAULT as the default boot entry in STAGE2_FILE. If '--once'" -+ " is specified, the default is reset after the next reboot." -+#else -+ "savedefault", -+ "Save the current entry as the default boot entry." -+#endif - }; - - -@@ -4598,6 +4631,15 @@ - static int - timeout_func (char *arg, int flags) - { -+ /* One-shot default shenanigans -- don't piss around with the menu! */ -+ if (grub_timeout != -1) -+ return 0; -+ if ((saved_entryno & STAGE2_ONCEONLY_ENTRY) != 0) -+ { -+ grub_timeout = 0; -+ return 0; -+ } -+ - if (! safe_parse_maxint (&arg, &grub_timeout)) - return 1; - ---- grub-0.97/stage2/shared.h.bootonce 2005-12-12 18:23:13.000000000 -0500 -+++ grub-0.97/stage2/shared.h 2005-12-12 18:23:13.000000000 -0500 -@@ -200,6 +200,8 @@ - #define STAGE2_FORCE_LBA 0x11 - #define STAGE2_VER_STR_OFFS 0x12 - -+#define STAGE2_ONCEONLY_ENTRY 0x10000 -+ - /* Stage 2 identifiers */ - #define STAGE2_ID_STAGE2 0 - #define STAGE2_ID_FFS_STAGE1_5 1 ---- grub-0.97/stage2/builtins.c.bootonce 2006-03-13 16:55:11.000000000 -0500 -+++ grub-0.97/stage2/builtins.c 2006-03-13 16:56:01.000000000 -0500 -@@ -761,11 +761,25 @@ - }; - - -+#if !defined(SUPPORT_DISKLESS) && !defined(GRUB_UTIL) -+static int savedefault_helper(int); -+#endif - /* default */ - static int - default_func (char *arg, int flags) - { - #ifndef SUPPORT_DISKLESS -+#ifndef GRUB_UTIL -+ /* Has a forced once-only default been specified? */ -+ if ((saved_entryno & STAGE2_ONCEONLY_ENTRY) != 0) -+ { -+ int old_defaults=saved_entryno & ~STAGE2_ONCEONLY_ENTRY; -+ grub_timeout = 0; -+ default_entry = old_defaults >> 8; -+ savedefault_helper(old_defaults & 0xff); -+ return 0; -+ } -+#endif - if (grub_strcmp (arg, "saved") == 0) - { - default_entry = saved_entryno; ---- grub-0.97/stage2/stage2.c.bootonce 2006-03-13 17:27:40.000000000 -0500 -+++ grub-0.97/stage2/stage2.c 2006-03-13 17:29:11.000000000 -0500 -@@ -960,38 +960,8 @@ - if (use_config_file) - #endif /* GRUB_UTIL */ - { -- char *default_file = (char *) DEFAULT_FILE_BUF; - int i; -- -- /* Get a saved default entry if possible. */ -- saved_entryno = 0; -- *default_file = 0; -- grub_strncat (default_file, config_file, DEFAULT_FILE_BUFLEN); -- for (i = grub_strlen(default_file); i >= 0; i--) -- if (default_file[i] == '/') -- { -- i++; -- break; -- } -- default_file[i] = 0; -- grub_strncat (default_file + i, "default", DEFAULT_FILE_BUFLEN - i); -- if (grub_open (default_file)) -- { -- char buf[10]; /* This is good enough. */ -- char *p = buf; -- int len; -- -- len = grub_read (buf, sizeof (buf)); -- if (len > 0) -- { -- buf[sizeof (buf) - 1] = 0; -- safe_parse_maxint (&p, &saved_entryno); -- } - -- grub_close (); -- } -- errnum = ERR_NONE; -- - do - { - /* STATE 0: Before any title command. ---- grub-0.97/util/grub-install.in.bootonce 2006-03-13 17:39:35.000000000 -0500 -+++ grub-0.97/util/grub-install.in 2006-03-13 17:39:50.000000000 -0500 -@@ -30,7 +30,6 @@ - pkglibdir=${libdir}/${PACKAGE}/${host_cpu}-${host_vendor} - - grub_shell=${sbindir}/grub --grub_set_default=${sbindir}/grub-set-default - log_file=/tmp/grub-install.log.$$ - img_file=/tmp/grub-install.img.$$ - rootdir= -@@ -432,9 +431,6 @@ - exit 1 - fi - --# Make a default file. --${grub_set_default} --root-directory=${rootdir} default -- - # Make sure that GRUB reads the same images as the host OS. - test -n "$mkimg" && img_file=`$mkimg` - test -n "$mklog" && log_file=`$mklog` ---- grub-0.97/configure.bootonce 2006-03-13 17:49:05.000000000 -0500 -+++ grub-0.97/configure 2006-03-13 17:49:16.000000000 -0500 -@@ -6135,7 +6135,7 @@ - - - -- ac_config_files="$ac_config_files Makefile stage1/Makefile stage2/Makefile docs/Makefile lib/Makefile util/Makefile grub/Makefile netboot/Makefile util/grub-image util/grub-install util/grub-md5-crypt util/grub-terminfo util/grub-set-default" -+ ac_config_files="$ac_config_files Makefile stage1/Makefile stage2/Makefile docs/Makefile lib/Makefile util/Makefile grub/Makefile netboot/Makefile util/grub-image util/grub-install util/grub-md5-crypt util/grub-terminfo" - - cat >confcache <<_ACEOF - # This file is a shell script that caches the results of configure -@@ -6754,7 +6754,6 @@ - "util/grub-install" ) CONFIG_FILES="$CONFIG_FILES util/grub-install" ;; - "util/grub-md5-crypt" ) CONFIG_FILES="$CONFIG_FILES util/grub-md5-crypt" ;; - "util/grub-terminfo" ) CONFIG_FILES="$CONFIG_FILES util/grub-terminfo" ;; -- "util/grub-set-default" ) CONFIG_FILES="$CONFIG_FILES util/grub-set-default" ;; - "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 ---- grub-0.97/configure.ac.bootonce 2006-03-13 17:47:24.000000000 -0500 -+++ grub-0.97/configure.ac 2006-03-13 17:47:37.000000000 -0500 -@@ -666,5 +666,5 @@ - docs/Makefile lib/Makefile util/Makefile \ - grub/Makefile netboot/Makefile util/grub-image \ - util/grub-install util/grub-md5-crypt \ -- util/grub-terminfo util/grub-set-default]) -+ util/grub-terminfo]) - AC_OUTPUT ---- grub-0.97/util/Makefile.am.bootonce 2006-03-13 17:48:39.000000000 -0500 -+++ grub-0.97/util/Makefile.am 2006-03-13 17:48:45.000000000 -0500 -@@ -1,6 +1,5 @@ - bin_PROGRAMS = mbchk --sbin_SCRIPTS = grub-install grub-md5-crypt grub-terminfo \ -- grub-set-default -+sbin_SCRIPTS = grub-install grub-md5-crypt grub-terminfo - noinst_SCRIPTS = grub-image mkbimage - - EXTRA_DIST = mkbimage ---- grub-0.97/util/Makefile.in.bootonce 2006-03-13 17:47:56.000000000 -0500 -+++ grub-0.97/util/Makefile.in 2006-03-13 17:48:34.000000000 -0500 -@@ -43,8 +43,7 @@ - subdir = util - DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(srcdir)/grub-image.in $(srcdir)/grub-install.in \ -- $(srcdir)/grub-md5-crypt.in $(srcdir)/grub-set-default.in \ -- $(srcdir)/grub-terminfo.in -+ $(srcdir)/grub-md5-crypt.in $(srcdir)/grub-terminfo.in - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.ac -@@ -52,8 +51,7 @@ - $(ACLOCAL_M4) - mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs - CONFIG_HEADER = $(top_builddir)/config.h --CONFIG_CLEAN_FILES = grub-image grub-install grub-md5-crypt \ -- grub-terminfo grub-set-default -+CONFIG_CLEAN_FILES = grub-image grub-install grub-md5-crypt grub-terminfo - am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(sbindir)" - binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) - PROGRAMS = $(bin_PROGRAMS) -@@ -183,8 +181,7 @@ - sharedstatedir = @sharedstatedir@ - sysconfdir = @sysconfdir@ - target_alias = @target_alias@ --sbin_SCRIPTS = grub-install grub-md5-crypt grub-terminfo \ -- grub-set-default -+sbin_SCRIPTS = grub-install grub-md5-crypt grub-terminfo - - noinst_SCRIPTS = grub-image mkbimage - EXTRA_DIST = mkbimage -@@ -234,8 +231,6 @@ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ - grub-terminfo: $(top_builddir)/config.status $(srcdir)/grub-terminfo.in - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ --grub-set-default: $(top_builddir)/config.status $(srcdir)/grub-set-default.in -- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ - install-binPROGRAMS: $(bin_PROGRAMS) - @$(NORMAL_INSTALL) - test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" diff --git a/src/patches/grub-0.97-prototypes.patch b/src/patches/grub-0.97-prototypes.patch deleted file mode 100644 index 21d65d5..0000000 --- a/src/patches/grub-0.97-prototypes.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- grub-0.97/acinclude.m4.prototypes 2005-12-12 19:07:24.000000000 -0500 -+++ grub-0.97/acinclude.m4 2005-12-12 19:07:56.000000000 -0500 -@@ -44,6 +44,8 @@ - [AC_MSG_CHECKING([whether ${OBJCOPY} works for absolute addresses]) - AC_CACHE_VAL(grub_cv_prog_objcopy_absolute, - [cat > conftest.c <<\EOF -+void cmain(void); -+ - void - cmain (void) - { diff --git a/src/patches/grub-0.97-stderr.patch b/src/patches/grub-0.97-stderr.patch deleted file mode 100644 index 71d20ad..0000000 --- a/src/patches/grub-0.97-stderr.patch +++ /dev/null @@ -1,102 +0,0 @@ ---- grub-0.97/util/grub-install.in.stderr 2006-07-07 10:56:37.000000000 -0400 -+++ grub-0.97/util/grub-install.in 2006-07-07 11:01:35.000000000 -0400 -@@ -207,7 +207,7 @@ - while test -L $tmp_fname; do - tmp_new_fname=`ls -al $tmp_fname | sed -n 's%.*-> (.*)%\1%p'` - if test -z "$tmp_new_fname"; then -- echo "Unrecognized ls output" 2>&1 -+ echo "Unrecognized ls output" 1>&2 - exit 1 - fi - -@@ -264,7 +264,7 @@ - stat_device() { - majmin=`stat -c "%t:%T" "$1" 2>/dev/null` - if test -z "$majmin"; then -- echo "Could not find device for $1" 2>&1 -+ echo "Could not find device for $1" 1>&2 - exit 1 - fi - -@@ -281,7 +281,7 @@ - dev=`awk '($2 ~ /'$mntpnt'/) { print $1 }' /etc/mtab` - fi - if test -z "$dev"; then -- echo "Could not find device for $1" 2>&1 -+ echo "Could not find device for $1" 1>&2 - exit 1 - fi - -@@ -304,11 +304,11 @@ - tmp_fname=`df $1/ | sed -n 's%.*(/dev/[^ ]*).*%\1%p'` - - if test -z "$tmp_fname"; then -- echo "Could not find device for $1" 2>&1 -+ echo "Could not find device for $1" 1>&2 - exit 1 - fi - -- ret_fname=`resolve_symlink $tmp_fname` -+ ret_fname=`resolve_symlink $tmp_fname` || exit 1 - tmp_fname=`find_mapper_device $ret_fname` - if test -n "$tmp_fname"; then - ret_fname="$tmp_fname" -@@ -325,7 +325,7 @@ - done - for file in \ - ${pkgdatadir}/stage1 ${pkgdatadir}/stage2 ${pkgdatadir}/*stage1_5; do -- cp -f $file ${grubdir} || exit 1 -+ cp -f $file ${grubdir} 1>&2 || exit 1 - done - } - -@@ -520,9 +520,9 @@ - # Check for INSTALL_DEVICE. - case "$install_device" in - /dev/*) -- install_device=`resolve_symlink "$install_device"` -+ install_device=`resolve_symlink "$install_device"` || exit 1 - for install_drive in `find_real_devs $install_device` ; do -- install_drive=`convert $install_drive` -+ install_drive=`convert $install_drive` || exit 1 - if is_raid1_device $install_device; then - install_drive=`echo $install_drive | sed 's/,[0-9]*)/)/'` - fi -@@ -550,8 +550,8 @@ - unset install_device - - # Get the root drive. --root_device=`find_device ${rootdir}` --bootdir_device=`find_device ${bootdir}` -+root_device=`find_device ${rootdir}` || exit 1 -+bootdir_device=`find_device ${bootdir}` || exit 1 - - # Check if the boot directory is in the same device as the root directory. - if test "x$root_device" != "x$bootdir_device"; then -@@ -561,7 +561,7 @@ - fi - - # Check if the root directory exists in the same device as the grub directory. --grubdir_device=`find_device ${grubdir}` -+grubdir_device=`find_device ${grubdir}` || exit 1 - - if test "x$grubdir_device" != "x$root_device"; then - # For now, cannot deal with this situation. -@@ -582,7 +582,7 @@ - fi - - # Convert the root deviceto a GRUB drive. --root_drive=`convert "$root_device"` -+root_drive=`convert "$root_device"` || exit 1 - if [ "x$root_drive" = x ]; then - exit 1 - fi -@@ -618,7 +618,7 @@ - - for install_drive in $install_drives; do - # Convert the root deviceto a GRUB drive. -- root_drive=`convert "$root_device"` -+ root_drive=`convert "$root_device"` || exit 1 - if [ "x$root_drive" = x ]; then - exit 1 - fi diff --git a/src/patches/grub-0.97_grub-install_virtio.patch b/src/patches/grub-0.97_grub-install_virtio.patch deleted file mode 100644 index 86afba9..0000000 --- a/src/patches/grub-0.97_grub-install_virtio.patch +++ /dev/null @@ -1,52 +0,0 @@ ---- grub-0.97/util/grub-install.in 2010-06-24 08:47:23.000000000 +0200 -+++ grub-0.97/util/grub-install.in 2010-06-24 09:20:42.000000000 +0200 -@@ -102,7 +102,7 @@ - linux*) - # formats that need to be handled (disk name -> partition name): - # floppies: /dev/fd0 -- # normal sd/hd devices: /dev/hda -> /dev/hda3 -+ # normal sd/hd/vd devices: /dev/hda -> /dev/hda3 - # md: /dev/md0 -> /dev/md0p0 - # ide raid devs: /dev/ide/host0/bus0/target0/lun0/disc - # -> /dev/ide/host0/bus0/target0/lun0/part1 -@@ -134,7 +134,7 @@ - # more? - tmp_disk=`echo "$1" | grep -v '/mapper/control$' | - grep -v '/mapper/[[:alnum:]_]+-[[:digit:]]+$' | uniq | -- sed -e 's%([sh]d[a-z])[0-9]*$%\1%' \ -+ sed -e 's%([shv]d[a-z])[0-9]*$%\1%' \ - -e 's%(/c[0-9]+d[0-9]+).*$%\1%' \ - -e 's%(fd[0-9]*)$%\1%' \ - -e 's%/part[0-9]*$%/disc%' \ -@@ -142,7 +142,7 @@ - -e 's%(/mapper/[[:alnum:]]+(_[[:alnum:]]+)+)\p[[:digit:]]+$%\1%'` - tmp_part=`echo "$1" | grep -v '/mapper/control$' | - grep -v '/mapper/[[:alnum:]_]+-[[:digit:]]+$' | uniq | -- sed -e 's%.*/[sh]d[a-z]([0-9]*)$%\1%' \ -+ sed -e 's%.*/[shv]d[a-z]([0-9]*)$%\1%' \ - -e 's%.*/c[0-9]+d[0-9]+p([[:digit:]]+)%\1%' \ - -e 's%.*/c[0-9]+d[0-9]+$%%' \ - -e 's%.*/fd[0-9]+$%%' \ -@@ -509,6 +509,10 @@ - if test -f "$device_map"; then - : - else -+ -+ tmp_disk=`echo "$install_device" | grep "/dev/vd"` -+ if test "x$tmp_disk" = x; then -+ - # Create a safe temporary file. - test -n "$mklog" && log_file=`$mklog` - -@@ -525,6 +529,11 @@ - fi - - rm -f $log_file -+ -+ else -+ echo "Create fake device.map for virtio device $1" 1>&2 -+ echo "(hd0) $install_device" > $device_map -+ fi - fi - - # Make sure that there is no duplicated entry. diff --git a/src/patches/grub-fedora-18.patch b/src/patches/grub-fedora-18.patch new file mode 100644 index 0000000..e87c180 --- /dev/null +++ b/src/patches/grub-fedora-18.patch @@ -0,0 +1,48870 @@ +From: Peter Jones pjones@redhat.com" +Date: Wed Apr 18 12:53:49 EDT 2012 +Subject: [PATCH] Changes from grub-0.97 to master + +This patch is a bundle of the changes between grub-0.97 and master. +It can be reginerated from the git repository at: + +git://github.com/vathpela/grub-fedora.git + +Using the command: + +git diff grub-0.97 master + + .gitignore | 10 + ChangeLog | 48 + Makefile.am | 7 + Makefile.in | 605 --- + acinclude.m4 | 4 + aclocal.m4 | 1061 ----- + config.h.in | 106 + configure | 7639 ----------------------------------------- + configure.in | 113 + docs/.gitignore | 3 + docs/Makefile.am | 9 + docs/Makefile.in | 770 ---- + docs/grub-crypt.8 | 39 + docs/grub-install.8 | 2 + docs/grub.8 | 2 + docs/grub.info | 370 + + docs/grub.texi | 79 + docs/stamp-vti | 4 + docs/version.texi | 4 + efi/.gitignore | 7 + efi/Makefile.am | 76 + efi/byteswap.h | 37 + efi/dhcp.h | 133 + efi/efichainloader.c | 265 + + efi/eficon.c | 306 + + efi/eficore.c | 241 + + efi/efidisk.c | 801 ++++ + efi/efidp.c | 999 +++++ + efi/efigraph.c | 1501 ++++++++ + efi/efimain.c | 129 + efi/efimisc.c | 665 +++ + efi/efimm.c | 539 ++ + efi/efiserial.c | 265 + + efi/efitftp.c | 228 + + efi/efiuga.c | 982 +++++ + efi/font_8x16.c | 4638 ++++++++++++++++++++++++ + efi/graphics.c | 666 +++ + efi/graphics.h | 81 + efi/grub/.gitignore | 1 + efi/grub/efi/api.h | 1716 +++++++++ + efi/grub/efi/console_control.h | 59 + efi/grub/efi/efi.h | 85 + efi/grub/efi/eficall.h | 162 + efi/grub/efi/misc.h | 60 + efi/grub/efi/time.h | 31 + efi/grub/i386/linux.h | 226 + + efi/grub/i386/types.h | 32 + efi/grub/misc.h | 71 + efi/grub/symbol.h | 34 + efi/grub/types.h | 158 + efi/grub/x86_64/linux.h | 234 + + efi/grub/x86_64/types.h | 32 + efi/ia32/callwrap.S | 1 + efi/ia32/callwrap.c | 131 + efi/ia32/loader/bin_to_h.c | 29 + efi/ia32/loader/linux.c | 648 +++ + efi/ia32/loader/switch.S | 118 + efi/ia32/loader/switch.h | 19 + efi/ia32/reloc.c | 79 + efi/ia32/setjmp.S | 86 + efi/pxe.c | 460 ++ + efi/pxe.h | 237 + + efi/ugadebug.h | 201 + + efi/x86_64/callwrap.S | 274 + + efi/x86_64/crt0-efi.S | 63 + efi/x86_64/elf_efi.lds | 58 + efi/x86_64/loader/Makefile | 20 + efi/x86_64/loader/bin_to_h.c | 29 + efi/x86_64/loader/linux.c | 760 ++++ + efi/x86_64/loader/switch.S | 92 + efi/x86_64/loader/switch.h | 25 + efi/x86_64/reloc.c | 79 + efi/x86_64/setjmp.S | 56 + efi/xpm.c | 231 + + efi/xpm.h | 36 + grub.spec | 438 ++ + grub/.gitignore | 2 + grub/Makefile.am | 2 + grub/Makefile.in | 445 -- + grub/asmstub.c | 194 - + grub/efitftp.c | 34 + grub/main.c | 2 + lib/.gitignore | 2 + lib/Makefile.in | 416 -- + lib/device.c | 360 + + makediff | 21 + netboot/.gitignore | 2 + netboot/Makefile.in | 1091 ----- + netboot/etherboot.h | 34 + netboot/main.c | 6 + netboot/misc.c | 58 + netboot/osdep.h | 24 + stage1/.gitignore | 2 + stage1/Makefile.am | 15 + stage1/Makefile.in | 433 -- + stage1/stage1.S | 4 + stage2/.gitignore | 5 + stage2/Makefile.am | 77 + stage2/Makefile.in | 3250 ----------------- + stage2/asm.S | 284 + + stage2/boot.c | 114 + stage2/builtins.c | 1368 +++++-- + stage2/char_io.c | 609 ++- + stage2/cmdline.c | 19 + stage2/common.c | 16 + stage2/disk_io.c | 213 - + stage2/efistubs.c | 7 + stage2/efistubs.h | 8 + stage2/fat.h | 2 + stage2/filesys.h | 28 + stage2/fsys_ext2fs.c | 394 +- + stage2/fsys_fat.c | 41 + stage2/fsys_iso9660.c | 8 + stage2/fsys_jfs.c | 12 + stage2/fsys_minix.c | 10 + stage2/fsys_reiserfs.c | 44 + stage2/fsys_uefi.c | 265 + + stage2/fsys_vstafs.c | 28 + stage2/fsys_xfs.c | 22 + stage2/gpt.h | 69 + stage2/graphics.c | 573 +++ + stage2/graphics.h | 42 + stage2/gunzip.c | 15 + stage2/iso9660.h | 4 + stage2/mb_info.h | 4 + stage2/pc_slice.h | 51 + stage2/serial.c | 4 + stage2/sha256crypt.c | 723 +++ + stage2/sha512crypt.c | 795 ++++ + stage2/shared.h | 126 + stage2/smp-imps.h | 1 + stage2/stage1_5.c | 3 + stage2/stage2.c | 203 - + stage2/start.S | 13 + stage2/term.h | 35 + stage2/tparm.c | 14 + test | 1 + util/.gitignore | 7 + util/Makefile.am | 11 + util/Makefile.in | 478 -- + util/grub-crypt.in | 80 + util/grub-install.in | 334 + + 142 files changed, 26410 insertions(+), 17652 deletions(-) + +diff --git a/.gitignore b/.gitignore +new file mode 100644 +index 0000000..3d7295a +--- /dev/null ++++ b/.gitignore +@@ -0,0 +1,10 @@ ++Makefile.in ++Makefile ++configure ++aclocal.m4 ++autom4te.cache ++config.h ++config.h.in ++config.log ++config.status ++stamp-h1 +diff --git a/ChangeLog b/ChangeLog +index 0f93033..9602fb9 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -772,6 +772,18 @@ + DATA_LEN is less than or equal to MULTIBOOT_SEARCH. + Reported by Neelkanth Natu neelnatu@yahoo.com. + ++2003-03-12 Leonid Lisovskiy lly@pisem.net ++ ++ * lib/device.c (get_drive_geometry): grub utility didn't work ++ due to uninitialized 'sector_size' struct geometry member. ++ * stage1/stage1.h (GRUB_NO_DRIVE): Constant moved from ++ stage2/shared.h and its value rolled back to 0xFF for backward ++ compatibility with original grub. ++ * stage1/stage1.S (boot_drive): Use GRUB_NO_DRIVE instead of ++ constant. ++ * stage2/bios.c (get_diskinfo): Workaround for BIOS'es that ++ has CD-ROM drive number = last harddisk + 1. ++ + 2003-03-10 Yoshinori K. Okuji okuji@enbug.org + + From Andrew Walrond andrew@walrond.org: +@@ -816,6 +828,42 @@ + thus corrupts the stack. This is why we specify the exactly + necessary size of 0x42 bytes. + ++2003-01-28 Leonid Lisovskiy lly@pisem.net ++ ++ ISO9660 support is added. ++ ++ * stage2/fsys_iso9660.c: New file - a lot of code stolen from ++ GRUB/98 0.5. ++ * stage2/iso9660.h: Likewise. ++ * stage2/start_torito.S: New file - El Torito boot sector. ++ * stage2/Makefile.am (noinst_HEADERS): iso9660.h added. ++ (libgrub_a_SOURCES): fsys_iso9660.c added. ++ (pkgdata_DATA): iso9660_stage1_5 added. ++ (noinst_PROGRAMS): iso9660_stage1_5.exec added. ++ * configure.in (--disable-iso9660): New option. ++ * stage2/builtins.c (setup_func): Add item for ISO9660 into ++ STAGE1_5_MAP. ++ * stage2/disk_io.c (rawread): Ability to read devices with ++ sector size other than 512 added. ++ (fsys_table): Added entry for ISO9660. ++ (check_and_print_mount): Don't print error when probing ++ partition. ++ (real_open_partition): Cleanup globals after probing. ++ * stage2/filesys.h [FSYS_ISO9660]: Add entries for ISO9660 ++ functions. ++ (NUM_FSYS): Added FSYS_ISO9660_NUM. ++ * stage2/shared.h (STAGE2_ID_ISO9660_STAGE1_5): New macro. ++ (GRUB_NO_DRIVE): New constant. ++ (struct geometry): New member 'sector_size'. ++ * stage2/bios.c (get_diskinfo): Request 1.xx version of ++ int13 extensions only since higher version request can ++ destroy El Torito emulation on some BIOS'es. ++ (get_cdinfo): New function - get El Torito emulation parameters. ++ * stage2/asm.S (biosdisk_int13_extensions): pass AX, instead ++ of AH for universality, save EBX,ECX,EDX registers content to ++ avoid data corruption in caller functions. ++ (get_diskinfo_int13_extensions): Removed. ++ + 2003-01-25 Yoshinori K. Okuji okuji@enbug.org + + From Steven Dick ssd.gnu@mmae.ucf.edu: +diff --git a/Makefile.am b/Makefile.am +index 63a9a4f..9bde872 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -1,4 +1,9 @@ + # Do not change this order if you don't know what you are doing. + AUTOMAKE_OPTIONS = 1.7 gnu +-SUBDIRS = netboot stage2 stage1 lib grub util docs ++SUBDIRS = netboot stage2 stage1 lib util docs ++if PLATFORM_EFI ++SUBDIRS += efi ++else ++SUBDIRS += grub ++endif + EXTRA_DIST = BUGS MAINTENANCE +diff --git a/Makefile.in b/Makefile.in +deleted file mode 100644 +index 6652366..0000000 +--- a/Makefile.in ++++ /dev/null +@@ -1,605 +0,0 @@ +-# Makefile.in generated by automake 1.9.4 from Makefile.am. +-# @configure_input@ +- +-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +-# 2003, 2004 Free Software Foundation, Inc. +-# This Makefile.in is free software; the Free Software Foundation +-# gives unlimited permission to copy and/or distribute it, +-# with or without modifications, as long as this notice is preserved. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +-# PARTICULAR PURPOSE. +- +-@SET_MAKE@ +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ +-VPATH = @srcdir@ +-pkgdatadir = $(datadir)/@PACKAGE@ +-pkglibdir = $(libdir)/@PACKAGE@ +-pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = . +-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ +-install_sh_DATA = $(install_sh) -c -m 644 +-install_sh_PROGRAM = $(install_sh) -c +-install_sh_SCRIPT = $(install_sh) -c +-INSTALL_HEADER = $(INSTALL_DATA) +-transform = $(program_transform_name) +-NORMAL_INSTALL = : +-PRE_INSTALL = : +-POST_INSTALL = : +-NORMAL_UNINSTALL = : +-PRE_UNINSTALL = : +-POST_UNINSTALL = : +-build_triplet = @build@ +-host_triplet = @host@ +-DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ +- $(srcdir)/Makefile.in $(srcdir)/config.h.in \ +- $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \ +- THANKS TODO compile config.guess config.sub depcomp install-sh \ +- missing mkinstalldirs +-subdir = . +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ +- $(top_srcdir)/configure.ac +-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ +- $(ACLOCAL_M4) +-am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ +- configure.lineno configure.status.lineno +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = config.h +-CONFIG_CLEAN_FILES = +-SOURCES = +-DIST_SOURCES = +-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ +- html-recursive info-recursive install-data-recursive \ +- install-exec-recursive install-info-recursive \ +- install-recursive installcheck-recursive installdirs-recursive \ +- pdf-recursive ps-recursive uninstall-info-recursive \ +- uninstall-recursive +-ETAGS = etags +-CTAGS = ctags +-DIST_SUBDIRS = $(SUBDIRS) +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +-distdir = $(PACKAGE)-$(VERSION) +-top_distdir = $(distdir) +-am__remove_distdir = \ +- { test ! -d $(distdir) \ +- || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ +- && rm -fr $(distdir); }; } +-DIST_ARCHIVES = $(distdir).tar.gz +-GZIP_ENV = --best +-distuninstallcheck_listfiles = find . -type f -print +-distcleancheck_listfiles = find . -type f -print +-ACLOCAL = @ACLOCAL@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ +-AMTAR = @AMTAR@ +-AUTOCONF = @AUTOCONF@ +-AUTOHEADER = @AUTOHEADER@ +-AUTOMAKE = @AUTOMAKE@ +-AWK = @AWK@ +-BUILD_EXAMPLE_KERNEL_FALSE = @BUILD_EXAMPLE_KERNEL_FALSE@ +-BUILD_EXAMPLE_KERNEL_TRUE = @BUILD_EXAMPLE_KERNEL_TRUE@ +-CC = @CC@ +-CCAS = @CCAS@ +-CCASFLAGS = @CCASFLAGS@ +-CCDEPMODE = @CCDEPMODE@ +-CFLAGS = @CFLAGS@ +-CPP = @CPP@ +-CPPFLAGS = @CPPFLAGS@ +-CYGPATH_W = @CYGPATH_W@ +-DEFS = @DEFS@ +-DEPDIR = @DEPDIR@ +-DISKLESS_SUPPORT_FALSE = @DISKLESS_SUPPORT_FALSE@ +-DISKLESS_SUPPORT_TRUE = @DISKLESS_SUPPORT_TRUE@ +-ECHO_C = @ECHO_C@ +-ECHO_N = @ECHO_N@ +-ECHO_T = @ECHO_T@ +-EGREP = @EGREP@ +-EXEEXT = @EXEEXT@ +-FSYS_CFLAGS = @FSYS_CFLAGS@ +-GRUB_CFLAGS = @GRUB_CFLAGS@ +-GRUB_LIBS = @GRUB_LIBS@ +-HERCULES_SUPPORT_FALSE = @HERCULES_SUPPORT_FALSE@ +-HERCULES_SUPPORT_TRUE = @HERCULES_SUPPORT_TRUE@ +-INSTALL_DATA = @INSTALL_DATA@ +-INSTALL_PROGRAM = @INSTALL_PROGRAM@ +-INSTALL_SCRIPT = @INSTALL_SCRIPT@ +-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +-LDFLAGS = @LDFLAGS@ +-LIBOBJS = @LIBOBJS@ +-LIBS = @LIBS@ +-LTLIBOBJS = @LTLIBOBJS@ +-MAINT = @MAINT@ +-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +-MAKEINFO = @MAKEINFO@ +-NETBOOT_DRIVERS = @NETBOOT_DRIVERS@ +-NETBOOT_SUPPORT_FALSE = @NETBOOT_SUPPORT_FALSE@ +-NETBOOT_SUPPORT_TRUE = @NETBOOT_SUPPORT_TRUE@ +-NET_CFLAGS = @NET_CFLAGS@ +-NET_EXTRAFLAGS = @NET_EXTRAFLAGS@ +-OBJCOPY = @OBJCOPY@ +-OBJEXT = @OBJEXT@ +-PACKAGE = @PACKAGE@ +-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +-PACKAGE_NAME = @PACKAGE_NAME@ +-PACKAGE_STRING = @PACKAGE_STRING@ +-PACKAGE_TARNAME = @PACKAGE_TARNAME@ +-PACKAGE_VERSION = @PACKAGE_VERSION@ +-PATH_SEPARATOR = @PATH_SEPARATOR@ +-PERL = @PERL@ +-RANLIB = @RANLIB@ +-SERIAL_SPEED_SIMULATION_FALSE = @SERIAL_SPEED_SIMULATION_FALSE@ +-SERIAL_SPEED_SIMULATION_TRUE = @SERIAL_SPEED_SIMULATION_TRUE@ +-SERIAL_SUPPORT_FALSE = @SERIAL_SUPPORT_FALSE@ +-SERIAL_SUPPORT_TRUE = @SERIAL_SUPPORT_TRUE@ +-SET_MAKE = @SET_MAKE@ +-SHELL = @SHELL@ +-STAGE1_CFLAGS = @STAGE1_CFLAGS@ +-STAGE2_CFLAGS = @STAGE2_CFLAGS@ +-STRIP = @STRIP@ +-VERSION = @VERSION@ +-ac_ct_CC = @ac_ct_CC@ +-ac_ct_OBJCOPY = @ac_ct_OBJCOPY@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__include = @am__include@ +-am__leading_dot = @am__leading_dot@ +-am__quote = @am__quote@ +-am__tar = @am__tar@ +-am__untar = @am__untar@ +-bindir = @bindir@ +-build = @build@ +-build_alias = @build_alias@ +-build_cpu = @build_cpu@ +-build_os = @build_os@ +-build_vendor = @build_vendor@ +-datadir = @datadir@ +-exec_prefix = @exec_prefix@ +-host = @host@ +-host_alias = @host_alias@ +-host_cpu = @host_cpu@ +-host_os = @host_os@ +-host_vendor = @host_vendor@ +-includedir = @includedir@ +-infodir = @infodir@ +-install_sh = @install_sh@ +-libdir = @libdir@ +-libexecdir = @libexecdir@ +-localstatedir = @localstatedir@ +-mandir = @mandir@ +-mkdir_p = @mkdir_p@ +-oldincludedir = @oldincludedir@ +-prefix = @prefix@ +-program_transform_name = @program_transform_name@ +-sbindir = @sbindir@ +-sharedstatedir = @sharedstatedir@ +-sysconfdir = @sysconfdir@ +-target_alias = @target_alias@ +- +-# Do not change this order if you don't know what you are doing. +-AUTOMAKE_OPTIONS = 1.7 gnu +-SUBDIRS = netboot stage2 stage1 lib grub util docs +-EXTRA_DIST = BUGS MAINTENANCE +-all: config.h +- $(MAKE) $(AM_MAKEFLAGS) all-recursive +- +-.SUFFIXES: +-am--refresh: +- @: +-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) +- @for dep in $?; do \ +- case '$(am__configure_deps)' in \ +- *$$dep*) \ +- echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \ +- cd $(srcdir) && $(AUTOMAKE) --gnu \ +- && exit 0; \ +- exit 1;; \ +- esac; \ +- done; \ +- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ +- cd $(top_srcdir) && \ +- $(AUTOMAKE) --gnu Makefile +-.PRECIOUS: Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- @case '$?' in \ +- *config.status*) \ +- echo ' $(SHELL) ./config.status'; \ +- $(SHELL) ./config.status;; \ +- *) \ +- echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ +- cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ +- esac; +- +-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) +- $(SHELL) ./config.status --recheck +- +-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) +- cd $(srcdir) && $(AUTOCONF) +-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) +- cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +- +-config.h: stamp-h1 +- @if test ! -f $@; then \ +- rm -f stamp-h1; \ +- $(MAKE) stamp-h1; \ +- else :; fi +- +-stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status +- @rm -f stamp-h1 +- cd $(top_builddir) && $(SHELL) ./config.status config.h +-$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) +- cd $(top_srcdir) && $(AUTOHEADER) +- rm -f stamp-h1 +- touch $@ +- +-distclean-hdr: +- -rm -f config.h stamp-h1 +-uninstall-info-am: +- +-# This directory's subdirectories are mostly independent; you can cd +-# into them and run `make' without going through this Makefile. +-# To change the values of `make' variables: instead of editing Makefiles, +-# (1) if the variable is set in `config.status', edit `config.status' +-# (which will cause the Makefiles to be regenerated when you run `make'); +-# (2) otherwise, pass the desired values on the `make' command line. +-$(RECURSIVE_TARGETS): +- @set fnord $$MAKEFLAGS; amf=$$2; \ +- dot_seen=no; \ +- target=`echo $@ | sed s/-recursive//`; \ +- list='$(SUBDIRS)'; for subdir in $$list; do \ +- echo "Making $$target in $$subdir"; \ +- if test "$$subdir" = "."; then \ +- dot_seen=yes; \ +- local_target="$$target-am"; \ +- else \ +- local_target="$$target"; \ +- fi; \ +- (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ +- || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ +- done; \ +- if test "$$dot_seen" = "no"; then \ +- $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ +- fi; test -z "$$fail" +- +-mostlyclean-recursive clean-recursive distclean-recursive \ +-maintainer-clean-recursive: +- @set fnord $$MAKEFLAGS; amf=$$2; \ +- dot_seen=no; \ +- case "$@" in \ +- distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ +- *) list='$(SUBDIRS)' ;; \ +- esac; \ +- rev=''; for subdir in $$list; do \ +- if test "$$subdir" = "."; then :; else \ +- rev="$$subdir $$rev"; \ +- fi; \ +- done; \ +- rev="$$rev ."; \ +- target=`echo $@ | sed s/-recursive//`; \ +- for subdir in $$rev; do \ +- echo "Making $$target in $$subdir"; \ +- if test "$$subdir" = "."; then \ +- local_target="$$target-am"; \ +- else \ +- local_target="$$target"; \ +- fi; \ +- (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ +- || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ +- done && test -z "$$fail" +-tags-recursive: +- list='$(SUBDIRS)'; for subdir in $$list; do \ +- test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ +- done +-ctags-recursive: +- list='$(SUBDIRS)'; for subdir in $$list; do \ +- test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ +- done +- +-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- mkid -fID $$unique +-tags: TAGS +- +-TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ +- $(TAGS_FILES) $(LISP) +- tags=; \ +- here=`pwd`; \ +- if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ +- include_option=--etags-include; \ +- empty_fix=.; \ +- else \ +- include_option=--include; \ +- empty_fix=; \ +- fi; \ +- list='$(SUBDIRS)'; for subdir in $$list; do \ +- if test "$$subdir" = .; then :; else \ +- test ! -f $$subdir/TAGS || \ +- tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ +- fi; \ +- done; \ +- list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ +- test -n "$$unique" || unique=$$empty_fix; \ +- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique; \ +- fi +-ctags: CTAGS +-CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ +- $(TAGS_FILES) $(LISP) +- tags=; \ +- here=`pwd`; \ +- list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- test -z "$(CTAGS_ARGS)$$tags$$unique" \ +- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ +- $$tags $$unique +- +-GTAGS: +- here=`$(am__cd) $(top_builddir) && pwd` \ +- && cd $(top_srcdir) \ +- && gtags -i $(GTAGS_ARGS) $$here +- +-distclean-tags: +- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +- +-distdir: $(DISTFILES) +- $(am__remove_distdir) +- mkdir $(distdir) +- $(mkdir_p) $(distdir)/util +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ +- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkdir_p) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ +- if test -d $$d/$$file; then \ +- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ +- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ +- fi; \ +- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ +- else \ +- test -f $(distdir)/$$file \ +- || cp -p $$d/$$file $(distdir)/$$file \ +- || exit 1; \ +- fi; \ +- done +- list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ +- if test "$$subdir" = .; then :; else \ +- test -d "$(distdir)/$$subdir" \ +- || $(mkdir_p) "$(distdir)/$$subdir" \ +- || exit 1; \ +- distdir=`$(am__cd) $(distdir) && pwd`; \ +- top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ +- (cd $$subdir && \ +- $(MAKE) $(AM_MAKEFLAGS) \ +- top_distdir="$$top_distdir" \ +- distdir="$$distdir/$$subdir" \ +- distdir) \ +- || exit 1; \ +- fi; \ +- done +- -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} ; -o \ +- ! -type d ! -perm -444 -links 1 -exec chmod a+r {} ; -o \ +- ! -type d ! -perm -400 -exec chmod a+r {} ; -o \ +- ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} ; \ +- || chmod -R a+r $(distdir) +-dist-gzip: distdir +- tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz +- $(am__remove_distdir) +- +-dist-bzip2: distdir +- tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 +- $(am__remove_distdir) +- +-dist-tarZ: distdir +- tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z +- $(am__remove_distdir) +- +-dist-shar: distdir +- shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz +- $(am__remove_distdir) +- +-dist-zip: distdir +- -rm -f $(distdir).zip +- zip -rq $(distdir).zip $(distdir) +- $(am__remove_distdir) +- +-dist dist-all: distdir +- tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz +- $(am__remove_distdir) +- +-# This target untars the dist file and tries a VPATH configuration. Then +-# it guarantees that the distribution is self-contained by making another +-# tarfile. +-distcheck: dist +- case '$(DIST_ARCHIVES)' in \ +- *.tar.gz*) \ +- GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ +- *.tar.bz2*) \ +- bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ +- *.tar.Z*) \ +- uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ +- *.shar.gz*) \ +- GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ +- *.zip*) \ +- unzip $(distdir).zip ;;\ +- esac +- chmod -R a-w $(distdir); chmod a+w $(distdir) +- mkdir $(distdir)/_build +- mkdir $(distdir)/_inst +- chmod a-w $(distdir) +- dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\/]:[\/],/,'` \ +- && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ +- && cd $(distdir)/_build \ +- && ../configure --srcdir=.. --prefix="$$dc_install_base" \ +- $(DISTCHECK_CONFIGURE_FLAGS) \ +- && $(MAKE) $(AM_MAKEFLAGS) \ +- && $(MAKE) $(AM_MAKEFLAGS) dvi \ +- && $(MAKE) $(AM_MAKEFLAGS) check \ +- && $(MAKE) $(AM_MAKEFLAGS) install \ +- && $(MAKE) $(AM_MAKEFLAGS) installcheck \ +- && $(MAKE) $(AM_MAKEFLAGS) uninstall \ +- && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ +- distuninstallcheck \ +- && chmod -R a-w "$$dc_install_base" \ +- && ({ \ +- (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ +- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ +- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ +- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ +- distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ +- } || { rm -rf "$$dc_destdir"; exit 1; }) \ +- && rm -rf "$$dc_destdir" \ +- && $(MAKE) $(AM_MAKEFLAGS) dist \ +- && rm -rf $(DIST_ARCHIVES) \ +- && $(MAKE) $(AM_MAKEFLAGS) distcleancheck +- $(am__remove_distdir) +- @(echo "$(distdir) archives ready for distribution: "; \ +- list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ +- sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}' +-distuninstallcheck: +- @cd $(distuninstallcheck_dir) \ +- && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ +- || { echo "ERROR: files left after uninstall:" ; \ +- if test -n "$(DESTDIR)"; then \ +- echo " (check DESTDIR support)"; \ +- fi ; \ +- $(distuninstallcheck_listfiles) ; \ +- exit 1; } >&2 +-distcleancheck: distclean +- @if test '$(srcdir)' = . ; then \ +- echo "ERROR: distcleancheck can only run from a VPATH build" ; \ +- exit 1 ; \ +- fi +- @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ +- || { echo "ERROR: files left in build directory after distclean:" ; \ +- $(distcleancheck_listfiles) ; \ +- exit 1; } >&2 +-check-am: all-am +-check: check-recursive +-all-am: Makefile config.h +-installdirs: installdirs-recursive +-installdirs-am: +-install: install-recursive +-install-exec: install-exec-recursive +-install-data: install-data-recursive +-uninstall: uninstall-recursive +- +-install-am: all-am +- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +- +-installcheck: installcheck-recursive +-install-strip: +- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ +- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ +- `test -z '$(STRIP)' || \ +- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +-mostlyclean-generic: +- +-clean-generic: +- +-distclean-generic: +- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) +- +-maintainer-clean-generic: +- @echo "This command is intended for maintainers to use" +- @echo "it deletes files that may require special tools to rebuild." +-clean: clean-recursive +- +-clean-am: clean-generic mostlyclean-am +- +-distclean: distclean-recursive +- -rm -f $(am__CONFIG_DISTCLEAN_FILES) +- -rm -f Makefile +-distclean-am: clean-am distclean-generic distclean-hdr distclean-tags +- +-dvi: dvi-recursive +- +-dvi-am: +- +-html: html-recursive +- +-info: info-recursive +- +-info-am: +- +-install-data-am: +- +-install-exec-am: +- +-install-info: install-info-recursive +- +-install-man: +- +-installcheck-am: +- +-maintainer-clean: maintainer-clean-recursive +- -rm -f $(am__CONFIG_DISTCLEAN_FILES) +- -rm -rf $(top_srcdir)/autom4te.cache +- -rm -f Makefile +-maintainer-clean-am: distclean-am maintainer-clean-generic +- +-mostlyclean: mostlyclean-recursive +- +-mostlyclean-am: mostlyclean-generic +- +-pdf: pdf-recursive +- +-pdf-am: +- +-ps: ps-recursive +- +-ps-am: +- +-uninstall-am: uninstall-info-am +- +-uninstall-info: uninstall-info-recursive +- +-.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \ +- check-am clean clean-generic clean-recursive ctags \ +- ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-shar \ +- dist-tarZ dist-zip distcheck distclean distclean-generic \ +- distclean-hdr distclean-recursive distclean-tags \ +- distcleancheck distdir distuninstallcheck dvi dvi-am html \ +- html-am info info-am install install-am install-data \ +- install-data-am install-exec install-exec-am install-info \ +- install-info-am install-man install-strip installcheck \ +- installcheck-am installdirs installdirs-am maintainer-clean \ +- maintainer-clean-generic maintainer-clean-recursive \ +- mostlyclean mostlyclean-generic mostlyclean-recursive pdf \ +- pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ +- uninstall-info-am +- +-# Tell versions [3.59,3.63) of GNU make to not export all variables. +-# Otherwise a system limit (for SysV at least) may be exceeded. +-.NOEXPORT: +diff --git a/acinclude.m4 b/acinclude.m4 +index 368839c..1cf1d67 100644 +--- a/acinclude.m4 ++++ b/acinclude.m4 +@@ -44,6 +44,8 @@ AC_DEFUN([grub_PROG_OBJCOPY_ABSOLUTE], + [AC_MSG_CHECKING([whether ${OBJCOPY} works for absolute addresses]) + AC_CACHE_VAL(grub_cv_prog_objcopy_absolute, + [cat > conftest.c <<\EOF ++void cmain(void); ++ + void + cmain (void) + { +@@ -57,7 +59,7 @@ else + fi + grub_cv_prog_objcopy_absolute=yes + for link_addr in 2000 8000 7C00; do +- if AC_TRY_COMMAND([${CC-cc} ${CFLAGS} -nostdlib -Wl,-N -Wl,-Ttext -Wl,$link_addr conftest.o -o conftest.exec]); then : ++ if AC_TRY_COMMAND([${CC-cc} ${CFLAGS} -nostdlib -Wl,-N -Wl,-Ttext -Wl,$link_addr -Wl,--build-id=none conftest.o -o conftest.exec]); then : + else + AC_MSG_ERROR([${CC-cc} cannot link at address $link_addr]) + fi +diff --git a/aclocal.m4 b/aclocal.m4 +deleted file mode 100644 +index aa691f6..0000000 +--- a/aclocal.m4 ++++ /dev/null +@@ -1,1061 +0,0 @@ +-# generated automatically by aclocal 1.9.4 -*- Autoconf -*- +- +-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 +-# Free Software Foundation, Inc. +-# This file is free software; the Free Software Foundation +-# gives unlimited permission to copy and/or distribute it, +-# with or without modifications, as long as this notice is preserved. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +-# PARTICULAR PURPOSE. +- +-# -*- Autoconf -*- +-# Copyright (C) 2002, 2003 Free Software Foundation, Inc. +-# Generated from amversion.in; do not edit by hand. +- +-# This program is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 2, or (at your option) +-# any later version. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +- +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +- +-# AM_AUTOMAKE_VERSION(VERSION) +-# ---------------------------- +-# Automake X.Y traces this macro to ensure aclocal.m4 has been +-# generated from the m4 files accompanying Automake X.Y. +-AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"]) +- +-# AM_SET_CURRENT_AUTOMAKE_VERSION +-# ------------------------------- +-# Call AM_AUTOMAKE_VERSION so it can be traced. +-# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. +-AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +- [AM_AUTOMAKE_VERSION([1.9.4])]) +- +-# AM_AUX_DIR_EXPAND +- +-# Copyright (C) 2001, 2003 Free Software Foundation, Inc. +- +-# This program is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 2, or (at your option) +-# any later version. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +- +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. +- +-# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +-# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to +-# `$srcdir', `$srcdir/..', or `$srcdir/../..'. +-# +-# Of course, Automake must honor this variable whenever it calls a +-# tool from the auxiliary directory. The problem is that $srcdir (and +-# therefore $ac_aux_dir as well) can be either absolute or relative, +-# depending on how configure is run. This is pretty annoying, since +-# it makes $ac_aux_dir quite unusable in subdirectories: in the top +-# source directory, any form will work fine, but in subdirectories a +-# relative path needs to be adjusted first. +-# +-# $ac_aux_dir/missing +-# fails when called from a subdirectory if $ac_aux_dir is relative +-# $top_srcdir/$ac_aux_dir/missing +-# fails if $ac_aux_dir is absolute, +-# fails when called from a subdirectory in a VPATH build with +-# a relative $ac_aux_dir +-# +-# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +-# are both prefixed by $srcdir. In an in-source build this is usually +-# harmless because $srcdir is `.', but things will broke when you +-# start a VPATH build or use an absolute $srcdir. +-# +-# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +-# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +-# am_aux_dir='$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*(.*)"` +-# and then we would define $MISSING as +-# MISSING="${SHELL} $am_aux_dir/missing" +-# This will work as long as MISSING is not called from configure, because +-# unfortunately $(top_srcdir) has no meaning in configure. +-# However there are other variables, like CC, which are often used in +-# configure, and could therefore not use this "fixed" $ac_aux_dir. +-# +-# Another solution, used here, is to always expand $ac_aux_dir to an +-# absolute PATH. The drawback is that using absolute paths prevent a +-# configured tree to be moved without reconfiguration. +- +-AC_DEFUN([AM_AUX_DIR_EXPAND], +-[dnl Rely on autoconf to set up CDPATH properly. +-AC_PREREQ([2.50])dnl +-# expand $ac_aux_dir to an absolute path +-am_aux_dir=`cd $ac_aux_dir && pwd` +-]) +- +-# AM_CONDITIONAL -*- Autoconf -*- +- +-# Copyright (C) 1997, 2000, 2001, 2003, 2004 Free Software Foundation, Inc. +- +-# This program is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 2, or (at your option) +-# any later version. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +- +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. +- +-# serial 6 +- +-# AM_CONDITIONAL(NAME, SHELL-CONDITION) +-# ------------------------------------- +-# Define a conditional. +-AC_DEFUN([AM_CONDITIONAL], +-[AC_PREREQ(2.52)dnl +- ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], +- [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +-AC_SUBST([$1_TRUE]) +-AC_SUBST([$1_FALSE]) +-if $2; then +- $1_TRUE= +- $1_FALSE='#' +-else +- $1_TRUE='#' +- $1_FALSE= +-fi +-AC_CONFIG_COMMANDS_PRE( +-[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then +- AC_MSG_ERROR([[conditional "$1" was never defined. +-Usually this means the macro was only invoked conditionally.]]) +-fi])]) +- +-# serial 7 -*- Autoconf -*- +- +-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 +-# Free Software Foundation, Inc. +- +-# This program is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 2, or (at your option) +-# any later version. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +- +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. +- +- +-# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +-# written in clear, in which case automake, when reading aclocal.m4, +-# will think it sees a *use*, and therefore will trigger all it's +-# C support machinery. Also note that it means that autoscan, seeing +-# CC etc. in the Makefile, will ask for an AC_PROG_CC use... +- +- +- +-# _AM_DEPENDENCIES(NAME) +-# ---------------------- +-# See how the compiler implements dependency checking. +-# NAME is "CC", "CXX", "GCJ", or "OBJC". +-# We try a few techniques and use that to set a single cache variable. +-# +-# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +-# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +-# dependency, and given that the user is not expected to run this macro, +-# just rely on AC_PROG_CC. +-AC_DEFUN([_AM_DEPENDENCIES], +-[AC_REQUIRE([AM_SET_DEPDIR])dnl +-AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +-AC_REQUIRE([AM_MAKE_INCLUDE])dnl +-AC_REQUIRE([AM_DEP_TRACK])dnl +- +-ifelse([$1], CC, [depcc="$CC" am_compiler_list=], +- [$1], CXX, [depcc="$CXX" am_compiler_list=], +- [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], +- [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], +- [depcc="$$1" am_compiler_list=]) +- +-AC_CACHE_CHECK([dependency style of $depcc], +- [am_cv_$1_dependencies_compiler_type], +-[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then +- # We make a subdir and do the tests there. Otherwise we can end up +- # making bogus files that we don't know about and never remove. For +- # instance it was reported that on HP-UX the gcc test will end up +- # making a dummy file named `D' -- because `-MD' means `put the output +- # in D'. +- mkdir conftest.dir +- # Copy depcomp to subdir because otherwise we won't find it if we're +- # using a relative directory. +- cp "$am_depcomp" conftest.dir +- cd conftest.dir +- # We will build objects and dependencies in a subdirectory because +- # it helps to detect inapplicable dependency modes. For instance +- # both Tru64's cc and ICC support -MD to output dependencies as a +- # side effect of compilation, but ICC will put the dependencies in +- # the current directory while Tru64 will put them in the object +- # directory. +- mkdir sub +- +- am_cv_$1_dependencies_compiler_type=none +- if test "$am_compiler_list" = ""; then +- am_compiler_list=`sed -n ['s/^#*([a-zA-Z0-9]*))$/\1/p'] < ./depcomp` +- fi +- for depmode in $am_compiler_list; do +- # Setup a source with many dependencies, because some compilers +- # like to wrap large dependency lists on column 80 (with ), and +- # we should not choose a depcomp mode which is confused by this. +- # +- # We need to recreate these files for each test, as the compiler may +- # overwrite some of them when testing with obscure command lines. +- # This happens at least with the AIX C compiler. +- : > sub/conftest.c +- for i in 1 2 3 4 5 6; do +- echo '#include "conftst'$i'.h"' >> sub/conftest.c +- # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with +- # Solaris 8's {/usr,}/bin/sh. +- touch sub/conftst$i.h +- done +- echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf +- +- case $depmode in +- nosideeffect) +- # after this tag, mechanisms are not by side-effect, so they'll +- # only be used when explicitly requested +- if test "x$enable_dependency_tracking" = xyes; then +- continue +- else +- break +- fi +- ;; +- none) break ;; +- esac +- # We check with `-c' and `-o' for the sake of the "dashmstdout" +- # mode. It turns out that the SunPro C++ compiler does not properly +- # handle `-M -o', and we need to detect this. +- if depmode=$depmode \ +- source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ +- depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ +- $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ +- >/dev/null 2>conftest.err && +- grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && +- grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && +- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then +- # icc doesn't choke on unknown options, it will just issue warnings +- # or remarks (even with -Werror). So we grep stderr for any message +- # that says an option was ignored or not supported. +- # When given -MP, icc 7.0 and 7.1 complain thusly: +- # icc: Command line warning: ignoring option '-M'; no argument required +- # The diagnosis changed in icc 8.0: +- # icc: Command line remark: option '-MP' not supported +- if (grep 'ignoring option' conftest.err || +- grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else +- am_cv_$1_dependencies_compiler_type=$depmode +- break +- fi +- fi +- done +- +- cd .. +- rm -rf conftest.dir +-else +- am_cv_$1_dependencies_compiler_type=none +-fi +-]) +-AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +-AM_CONDITIONAL([am__fastdep$1], [ +- test "x$enable_dependency_tracking" != xno \ +- && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +-]) +- +- +-# AM_SET_DEPDIR +-# ------------- +-# Choose a directory name for dependency files. +-# This macro is AC_REQUIREd in _AM_DEPENDENCIES +-AC_DEFUN([AM_SET_DEPDIR], +-[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +-AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +-]) +- +- +-# AM_DEP_TRACK +-# ------------ +-AC_DEFUN([AM_DEP_TRACK], +-[AC_ARG_ENABLE(dependency-tracking, +-[ --disable-dependency-tracking speeds up one-time build +- --enable-dependency-tracking do not reject slow dependency extractors]) +-if test "x$enable_dependency_tracking" != xno; then +- am_depcomp="$ac_aux_dir/depcomp" +- AMDEPBACKSLASH='' +-fi +-AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +-AC_SUBST([AMDEPBACKSLASH]) +-]) +- +-# Generate code to set up dependency tracking. -*- Autoconf -*- +- +-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 +-# Free Software Foundation, Inc. +- +-# This program is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 2, or (at your option) +-# any later version. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +- +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. +- +-#serial 2 +- +-# _AM_OUTPUT_DEPENDENCY_COMMANDS +-# ------------------------------ +-AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +-[for mf in $CONFIG_FILES; do +- # Strip MF so we end up with the name of the file. +- mf=`echo "$mf" | sed -e 's/:.*$//'` +- # Check whether this is an Automake generated Makefile or not. +- # We used to match only the files named `Makefile.in', but +- # some people rename them; so instead we look at the file content. +- # Grep'ing the first line is not enough: some people post-process +- # each Makefile.in and add a new line on top of each file to say so. +- # So let's grep whole file. +- if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then +- dirpart=`AS_DIRNAME("$mf")` +- else +- continue +- fi +- # Extract the definition of DEPDIR, am__include, and am__quote +- # from the Makefile without running `make'. +- DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` +- test -z "$DEPDIR" && continue +- am__include=`sed -n 's/^am__include = //p' < "$mf"` +- test -z "am__include" && continue +- am__quote=`sed -n 's/^am__quote = //p' < "$mf"` +- # When using ansi2knr, U may be empty or an underscore; expand it +- U=`sed -n 's/^U = //p' < "$mf"` +- # Find all dependency output files, they are included files with +- # $(DEPDIR) in their names. We invoke sed twice because it is the +- # simplest approach to changing $(DEPDIR) to its actual value in the +- # expansion. +- for file in `sed -n " +- s/^$am__include $am__quote(.*(DEPDIR).*)$am__quote"'$/\1/p' <"$mf" | \ +- sed -e 's/$(DEPDIR)/'"$DEPDIR"'/g' -e 's/$U/'"$U"'/g'`; do +- # Make sure the directory exists. +- test -f "$dirpart/$file" && continue +- fdir=`AS_DIRNAME(["$file"])` +- AS_MKDIR_P([$dirpart/$fdir]) +- # echo "creating $dirpart/$file" +- echo '# dummy' > "$dirpart/$file" +- done +-done +-])# _AM_OUTPUT_DEPENDENCY_COMMANDS +- +- +-# AM_OUTPUT_DEPENDENCY_COMMANDS +-# ----------------------------- +-# This macro should only be invoked once -- use via AC_REQUIRE. +-# +-# This code is only required when automatic dependency tracking +-# is enabled. FIXME. This creates each `.P' file that we will +-# need in order to bootstrap the dependency handling code. +-AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +-[AC_CONFIG_COMMANDS([depfiles], +- [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], +- [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +-]) +- +-# Do all the work for Automake. -*- Autoconf -*- +- +-# This macro actually does too much some checks are only needed if +-# your package does certain things. But this isn't really a big deal. +- +-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 +-# Free Software Foundation, Inc. +- +-# This program is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 2, or (at your option) +-# any later version. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +- +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. +- +-# serial 11 +- +-# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +-# AM_INIT_AUTOMAKE([OPTIONS]) +-# ----------------------------------------------- +-# The call with PACKAGE and VERSION arguments is the old style +-# call (pre autoconf-2.50), which is being phased out. PACKAGE +-# and VERSION should now be passed to AC_INIT and removed from +-# the call to AM_INIT_AUTOMAKE. +-# We support both call styles for the transition. After +-# the next Automake release, Autoconf can make the AC_INIT +-# arguments mandatory, and then we can depend on a new Autoconf +-# release and drop the old call support. +-AC_DEFUN([AM_INIT_AUTOMAKE], +-[AC_PREREQ([2.58])dnl +-dnl Autoconf wants to disallow AM_ names. We explicitly allow +-dnl the ones we care about. +-m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +-AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +-AC_REQUIRE([AC_PROG_INSTALL])dnl +-# test to see if srcdir already configured +-if test "`cd $srcdir && pwd`" != "`pwd`" && +- test -f $srcdir/config.status; then +- AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) +-fi +- +-# test whether we have cygpath +-if test -z "$CYGPATH_W"; then +- if (cygpath --version) >/dev/null 2>/dev/null; then +- CYGPATH_W='cygpath -w' +- else +- CYGPATH_W=echo +- fi +-fi +-AC_SUBST([CYGPATH_W]) +- +-# Define the identity of the package. +-dnl Distinguish between old-style and new-style calls. +-m4_ifval([$2], +-[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl +- AC_SUBST([PACKAGE], [$1])dnl +- AC_SUBST([VERSION], [$2])], +-[_AM_SET_OPTIONS([$1])dnl +- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl +- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl +- +-_AM_IF_OPTION([no-define],, +-[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) +- AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl +- +-# Some tools Automake needs. +-AC_REQUIRE([AM_SANITY_CHECK])dnl +-AC_REQUIRE([AC_ARG_PROGRAM])dnl +-AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) +-AM_MISSING_PROG(AUTOCONF, autoconf) +-AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) +-AM_MISSING_PROG(AUTOHEADER, autoheader) +-AM_MISSING_PROG(MAKEINFO, makeinfo) +-AM_PROG_INSTALL_SH +-AM_PROG_INSTALL_STRIP +-AC_REQUIRE([AM_PROG_MKDIR_P])dnl +-# We need awk for the "check" target. The system "awk" is bad on +-# some platforms. +-AC_REQUIRE([AC_PROG_AWK])dnl +-AC_REQUIRE([AC_PROG_MAKE_SET])dnl +-AC_REQUIRE([AM_SET_LEADING_DOT])dnl +-_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], +- [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], +- [_AM_PROG_TAR([v7])])]) +-_AM_IF_OPTION([no-dependencies],, +-[AC_PROVIDE_IFELSE([AC_PROG_CC], +- [_AM_DEPENDENCIES(CC)], +- [define([AC_PROG_CC], +- defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl +-AC_PROVIDE_IFELSE([AC_PROG_CXX], +- [_AM_DEPENDENCIES(CXX)], +- [define([AC_PROG_CXX], +- defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl +-]) +-]) +- +- +-# When config.status generates a header, we must update the stamp-h file. +-# This file resides in the same directory as the config header +-# that is generated. The stamp files are numbered to have different names. +- +-# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +-# loop where config.status creates the headers, so we can generate +-# our stamp files there. +-AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +-[# Compute $1's index in $config_headers. +-_am_stamp_count=1 +-for _am_header in $config_headers :; do +- case $_am_header in +- $1 | $1:* ) +- break ;; +- * ) +- _am_stamp_count=`expr $_am_stamp_count + 1` ;; +- esac +-done +-echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) +- +-# AM_PROG_INSTALL_SH +-# ------------------ +-# Define $install_sh. +- +-# Copyright (C) 2001, 2003 Free Software Foundation, Inc. +- +-# This program is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 2, or (at your option) +-# any later version. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +- +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. +- +-AC_DEFUN([AM_PROG_INSTALL_SH], +-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +-install_sh=${install_sh-"$am_aux_dir/install-sh"} +-AC_SUBST(install_sh)]) +- +-# -*- Autoconf -*- +-# Copyright (C) 2003 Free Software Foundation, Inc. +- +-# This program is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 2, or (at your option) +-# any later version. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +- +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. +- +-# serial 1 +- +-# Check whether the underlying file-system supports filenames +-# with a leading dot. For instance MS-DOS doesn't. +-AC_DEFUN([AM_SET_LEADING_DOT], +-[rm -rf .tst 2>/dev/null +-mkdir .tst 2>/dev/null +-if test -d .tst; then +- am__leading_dot=. +-else +- am__leading_dot=_ +-fi +-rmdir .tst 2>/dev/null +-AC_SUBST([am__leading_dot])]) +- +-# Add --enable-maintainer-mode option to configure. +-# From Jim Meyering +- +-# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004 +-# Free Software Foundation, Inc. +- +-# This program is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 2, or (at your option) +-# any later version. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +- +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. +- +-# serial 3 +- +-AC_DEFUN([AM_MAINTAINER_MODE], +-[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) +- dnl maintainer-mode is disabled by default +- AC_ARG_ENABLE(maintainer-mode, +-[ --enable-maintainer-mode enable make rules and dependencies not useful +- (and sometimes confusing) to the casual installer], +- USE_MAINTAINER_MODE=$enableval, +- USE_MAINTAINER_MODE=no) +- AC_MSG_RESULT([$USE_MAINTAINER_MODE]) +- AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes]) +- MAINT=$MAINTAINER_MODE_TRUE +- AC_SUBST(MAINT)dnl +-] +-) +- +-AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) +- +-# Check to see how 'make' treats includes. -*- Autoconf -*- +- +-# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. +- +-# This program is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 2, or (at your option) +-# any later version. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +- +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. +- +-# serial 2 +- +-# AM_MAKE_INCLUDE() +-# ----------------- +-# Check to see how make treats includes. +-AC_DEFUN([AM_MAKE_INCLUDE], +-[am_make=${MAKE-make} +-cat > confinc << 'END' +-am__doit: +- @echo done +-.PHONY: am__doit +-END +-# If we don't find an include directive, just comment out the code. +-AC_MSG_CHECKING([for style of include used by $am_make]) +-am__include="#" +-am__quote= +-_am_result=none +-# First try GNU make style include. +-echo "include confinc" > confmf +-# We grep out `Entering directory' and `Leaving directory' +-# messages which can occur if `w' ends up in MAKEFLAGS. +-# In particular we don't look at `^make:' because GNU make might +-# be invoked under some other name (usually "gmake"), in which +-# case it prints its new name instead of `make'. +-if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then +- am__include=include +- am__quote= +- _am_result=GNU +-fi +-# Now try BSD make style include. +-if test "$am__include" = "#"; then +- echo '.include "confinc"' > confmf +- if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then +- am__include=.include +- am__quote=""" +- _am_result=BSD +- fi +-fi +-AC_SUBST([am__include]) +-AC_SUBST([am__quote]) +-AC_MSG_RESULT([$_am_result]) +-rm -f confinc confmf +-]) +- +-# -*- Autoconf -*- +- +- +-# Copyright (C) 1997, 1999, 2000, 2001, 2003 Free Software Foundation, Inc. +- +-# This program is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 2, or (at your option) +-# any later version. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +- +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. +- +-# serial 3 +- +-# AM_MISSING_PROG(NAME, PROGRAM) +-# ------------------------------ +-AC_DEFUN([AM_MISSING_PROG], +-[AC_REQUIRE([AM_MISSING_HAS_RUN]) +-$1=${$1-"${am_missing_run}$2"} +-AC_SUBST($1)]) +- +- +-# AM_MISSING_HAS_RUN +-# ------------------ +-# Define MISSING if not defined so far and test if it supports --run. +-# If it does, set am_missing_run to use it, otherwise, to nothing. +-AC_DEFUN([AM_MISSING_HAS_RUN], +-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +-test x"${MISSING+set}" = xset || MISSING="${SHELL} $am_aux_dir/missing" +-# Use eval to expand $SHELL +-if eval "$MISSING --run true"; then +- am_missing_run="$MISSING --run " +-else +- am_missing_run= +- AC_MSG_WARN([`missing' script is too old or missing]) +-fi +-]) +- +-# AM_PROG_MKDIR_P +-# --------------- +-# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise. +- +-# Copyright (C) 2003, 2004 Free Software Foundation, Inc. +- +-# This program is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 2, or (at your option) +-# any later version. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +- +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. +- +-# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories +-# created by `make install' are always world readable, even if the +-# installer happens to have an overly restrictive umask (e.g. 077). +-# This was a mistake. There are at least two reasons why we must not +-# use `-m 0755': +-# - it causes special bits like SGID to be ignored, +-# - it may be too restrictive (some setups expect 775 directories). +-# +-# Do not use -m 0755 and let people choose whatever they expect by +-# setting umask. +-# +-# We cannot accept any implementation of `mkdir' that recognizes `-p'. +-# Some implementations (such as Solaris 8's) are not thread-safe: if a +-# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c' +-# concurrently, both version can detect that a/ is missing, but only +-# one can create it and the other will error out. Consequently we +-# restrict ourselves to GNU make (using the --version option ensures +-# this.) +-AC_DEFUN([AM_PROG_MKDIR_P], +-[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then +- # We used to keeping the `.' as first argument, in order to +- # allow $(mkdir_p) to be used without argument. As in +- # $(mkdir_p) $(somedir) +- # where $(somedir) is conditionally defined. However this is wrong +- # for two reasons: +- # 1. if the package is installed by a user who cannot write `.' +- # make install will fail, +- # 2. the above comment should most certainly read +- # $(mkdir_p) $(DESTDIR)$(somedir) +- # so it does not work when $(somedir) is undefined and +- # $(DESTDIR) is not. +- # To support the latter case, we have to write +- # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), +- # so the `.' trick is pointless. +- mkdir_p='mkdir -p --' +-else +- # On NextStep and OpenStep, the `mkdir' command does not +- # recognize any option. It will interpret all options as +- # directories to create, and then abort because `.' already +- # exists. +- for d in ./-p ./--version; +- do +- test -d $d && rmdir $d +- done +- # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. +- if test -f "$ac_aux_dir/mkinstalldirs"; then +- mkdir_p='$(mkinstalldirs)' +- else +- mkdir_p='$(install_sh) -d' +- fi +-fi +-AC_SUBST([mkdir_p])]) +- +-# Helper functions for option handling. -*- Autoconf -*- +- +-# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. +- +-# This program is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 2, or (at your option) +-# any later version. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +- +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. +- +-# serial 2 +- +-# _AM_MANGLE_OPTION(NAME) +-# ----------------------- +-AC_DEFUN([_AM_MANGLE_OPTION], +-[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) +- +-# _AM_SET_OPTION(NAME) +-# ------------------------------ +-# Set option NAME. Presently that only means defining a flag for this option. +-AC_DEFUN([_AM_SET_OPTION], +-[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) +- +-# _AM_SET_OPTIONS(OPTIONS) +-# ---------------------------------- +-# OPTIONS is a space-separated list of Automake options. +-AC_DEFUN([_AM_SET_OPTIONS], +-[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) +- +-# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +-# ------------------------------------------- +-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +-AC_DEFUN([_AM_IF_OPTION], +-[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) +- +-# +-# Check to make sure that the build environment is sane. +-# +- +-# Copyright (C) 1996, 1997, 2000, 2001, 2003 Free Software Foundation, Inc. +- +-# This program is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 2, or (at your option) +-# any later version. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +- +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. +- +-# serial 3 +- +-# AM_SANITY_CHECK +-# --------------- +-AC_DEFUN([AM_SANITY_CHECK], +-[AC_MSG_CHECKING([whether build environment is sane]) +-# Just in case +-sleep 1 +-echo timestamp > conftest.file +-# Do `set' in a subshell so we don't clobber the current shell's +-# arguments. Must try -L first in case configure is actually a +-# symlink; some systems play weird games with the mod time of symlinks +-# (eg FreeBSD returns the mod time of the symlink's containing +-# directory). +-if ( +- set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` +- if test "$[*]" = "X"; then +- # -L didn't work. +- set X `ls -t $srcdir/configure conftest.file` +- fi +- rm -f conftest.file +- if test "$[*]" != "X $srcdir/configure conftest.file" \ +- && test "$[*]" != "X conftest.file $srcdir/configure"; then +- +- # If neither matched, then we have a broken ls. This can happen +- # if, for instance, CONFIG_SHELL is bash and it inherits a +- # broken ls alias from the environment. This has actually +- # happened. Such a system could not be considered "sane". +- AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +-alias in your environment]) +- fi +- +- test "$[2]" = conftest.file +- ) +-then +- # Ok. +- : +-else +- AC_MSG_ERROR([newly created file is older than distributed files! +-Check your system clock]) +-fi +-AC_MSG_RESULT(yes)]) +- +-# AM_PROG_INSTALL_STRIP +- +-# Copyright (C) 2001, 2003 Free Software Foundation, Inc. +- +-# This program is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 2, or (at your option) +-# any later version. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +- +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. +- +-# One issue with vendor `install' (even GNU) is that you can't +-# specify the program used to strip binaries. This is especially +-# annoying in cross-compiling environments, where the build's strip +-# is unlikely to handle the host's binaries. +-# Fortunately install-sh will honor a STRIPPROG variable, so we +-# always use install-sh in `make install-strip', and initialize +-# STRIPPROG with the value of the STRIP variable (set by the user). +-AC_DEFUN([AM_PROG_INSTALL_STRIP], +-[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +-# Installed binaries are usually stripped using `strip' when the user +-# run `make install-strip'. However `strip' might not be the right +-# tool to use in cross-compilation environments, therefore Automake +-# will honor the `STRIP' environment variable to overrule this program. +-dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +-if test "$cross_compiling" != no; then +- AC_CHECK_TOOL([STRIP], [strip], :) +-fi +-INSTALL_STRIP_PROGRAM="${SHELL} $(install_sh) -c -s" +-AC_SUBST([INSTALL_STRIP_PROGRAM])]) +- +-# Check how to create a tarball. -*- Autoconf -*- +- +-# Copyright (C) 2004 Free Software Foundation, Inc. +- +-# This program is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 2, or (at your option) +-# any later version. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +- +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. +- +-# serial 1 +- +- +-# _AM_PROG_TAR(FORMAT) +-# -------------------- +-# Check how to create a tarball in format FORMAT. +-# FORMAT should be one of `v7', `ustar', or `pax'. +-# +-# Substitute a variable $(am__tar) that is a command +-# writing to stdout a FORMAT-tarball containing the directory +-# $tardir. +-# tardir=directory && $(am__tar) > result.tar +-# +-# Substitute a variable $(am__untar) that extract such +-# a tarball read from stdin. +-# $(am__untar) < result.tar +-AC_DEFUN([_AM_PROG_TAR], +-[# Always define AMTAR for backward compatibility. +-AM_MISSING_PROG([AMTAR], [tar]) +-m4_if([$1], [v7], +- [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], +- [m4_case([$1], [ustar],, [pax],, +- [m4_fatal([Unknown tar format])]) +-AC_MSG_CHECKING([how to create a $1 tar archive]) +-# Loop over all known methods to create a tar archive until one works. +-_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' +-_am_tools=${am_cv_prog_tar_$1-$_am_tools} +-# Do not fold the above two line into one, because Tru64 sh and +-# Solaris sh will not grok spaces in the rhs of `-'. +-for _am_tool in $_am_tools +-do +- case $_am_tool in +- gnutar) +- for _am_tar in tar gnutar gtar; +- do +- AM_RUN_LOG([$_am_tar --version]) && break +- done +- am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' +- am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' +- am__untar="$_am_tar -xf -" +- ;; +- plaintar) +- # Must skip GNU tar: if it does not support --format= it doesn't create +- # ustar tarball either. +- (tar --version) >/dev/null 2>&1 && continue +- am__tar='tar chf - "$$tardir"' +- am__tar_='tar chf - "$tardir"' +- am__untar='tar xf -' +- ;; +- pax) +- am__tar='pax -L -x $1 -w "$$tardir"' +- am__tar_='pax -L -x $1 -w "$tardir"' +- am__untar='pax -r' +- ;; +- cpio) +- am__tar='find "$$tardir" -print | cpio -o -H $1 -L' +- am__tar_='find "$tardir" -print | cpio -o -H $1 -L' +- am__untar='cpio -i -H $1 -d' +- ;; +- none) +- am__tar=false +- am__tar_=false +- am__untar=false +- ;; +- esac +- +- # If the value was cached, stop now. We just wanted to have am__tar +- # and am__untar set. +- test -n "${am_cv_prog_tar_$1}" && break +- +- # tar/untar a dummy directory, and stop if the command works +- rm -rf conftest.dir +- mkdir conftest.dir +- echo GrepMe > conftest.dir/file +- AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) +- rm -rf conftest.dir +- if test -s conftest.tar; then +- AM_RUN_LOG([$am__untar <conftest.tar]) +- grep GrepMe conftest.dir/file >/dev/null 2>&1 && break +- fi +-done +-rm -rf conftest.dir +- +-AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) +-AC_MSG_RESULT([$am_cv_prog_tar_$1])]) +-AC_SUBST([am__tar]) +-AC_SUBST([am__untar]) +-]) # _AM_PROG_TAR +- +-m4_include([acinclude.m4]) +diff --git a/config.h.in b/config.h.in +deleted file mode 100644 +index 68d7c8c..0000000 +--- a/config.h.in ++++ /dev/null +@@ -1,106 +0,0 @@ +-/* config.h.in. Generated from configure.ac by autoheader. */ +- +-/* Define if an absolute indirect call/jump must NOT be prefixed with `*' */ +-#undef ABSOLUTE_WITHOUT_ASTERISK +- +-/* Define it to "addr32" or "addr32;" to make GAS happy */ +-#undef ADDR32 +- +-/* Define if you don't want to pass the mem= option to Linux */ +-#undef AUTO_LINUX_MEM_OPT +- +-/* Define it to "data32" or "data32;" to make GAS happy */ +-#undef DATA32 +- +-/* Define if C symbols get an underscore after compilation */ +-#undef HAVE_ASM_USCORE +- +-/* Define to 1 if you have the <curses.h> header file. */ +-#undef HAVE_CURSES_H +- +-/* Define if edata is defined */ +-#undef HAVE_EDATA_SYMBOL +- +-/* Define if end is defined */ +-#undef HAVE_END_SYMBOL +- +-/* Define to 1 if you have the <inttypes.h> header file. */ +-#undef HAVE_INTTYPES_H +- +-/* Define if you have a curses library */ +-#undef HAVE_LIBCURSES +- +-/* Define to 1 if you have the <memory.h> header file. */ +-#undef HAVE_MEMORY_H +- +-/* Define to 1 if you have the <ncurses/curses.h> header file. */ +-#undef HAVE_NCURSES_CURSES_H +- +-/* Define to 1 if you have the <ncurses.h> header file. */ +-#undef HAVE_NCURSES_H +- +-/* Define if opendisk() in -lutil can be used */ +-#undef HAVE_OPENDISK +- +-/* Define if start is defined */ +-#undef HAVE_START_SYMBOL +- +-/* Define to 1 if you have the <stdint.h> header file. */ +-#undef HAVE_STDINT_H +- +-/* Define to 1 if you have the <stdlib.h> header file. */ +-#undef HAVE_STDLIB_H +- +-/* Define to 1 if you have the <strings.h> header file. */ +-#undef HAVE_STRINGS_H +- +-/* Define to 1 if you have the <string.h> header file. */ +-#undef HAVE_STRING_H +- +-/* Define to 1 if you have the <sys/stat.h> header file. */ +-#undef HAVE_SYS_STAT_H +- +-/* Define to 1 if you have the <sys/types.h> header file. */ +-#undef HAVE_SYS_TYPES_H +- +-/* Define to 1 if you have the <unistd.h> header file. */ +-#undef HAVE_UNISTD_H +- +-/* Define if _edata is defined */ +-#undef HAVE_USCORE_EDATA_SYMBOL +- +-/* Define if end is defined */ +-#undef HAVE_USCORE_END_SYMBOL +- +-/* Define if _start is defined */ +-#undef HAVE_USCORE_START_SYMBOL +- +-/* Define if __bss_start is defined */ +-#undef HAVE_USCORE_USCORE_BSS_START_SYMBOL +- +-/* Name of package */ +-#undef PACKAGE +- +-/* Define to the address where bug reports for this package should be sent. */ +-#undef PACKAGE_BUGREPORT +- +-/* Define to the full name of this package. */ +-#undef PACKAGE_NAME +- +-/* Define to the full name and version of this package. */ +-#undef PACKAGE_STRING +- +-/* Define to the one symbol short name of this package. */ +-#undef PACKAGE_TARNAME +- +-/* Define to the version of this package. */ +-#undef PACKAGE_VERSION +- +-/* Define if there is user specified preset menu string */ +-#undef PRESET_MENU_STRING +- +-/* Define to 1 if you have the ANSI C header files. */ +-#undef STDC_HEADERS +- +-/* Version number of package */ +-#undef VERSION +diff --git a/configure b/configure +deleted file mode 100755 +index 537ab89..0000000 +--- a/configure ++++ /dev/null +@@ -1,7639 +0,0 @@ +-#! /bin/sh +-# Guess values for system-dependent variables and create Makefiles. +-# Generated by GNU Autoconf 2.59 for GRUB 0.97. +-# +-# Report bugs to bug-grub@gnu.org. +-# +-# Copyright (C) 2003 Free Software Foundation, Inc. +-# This configure script is free software; the Free Software Foundation +-# gives unlimited permission to copy, distribute and modify it. +-## --------------------- ## +-## M4sh Initialization. ## +-## --------------------- ## +- +-# Be Bourne compatible +-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then +- emulate sh +- NULLCMD=: +- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which +- # is contrary to our usage. Disable this feature. +- alias -g '${1+"$@"}'='"$@"' +-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then +- set -o posix +-fi +-DUALCASE=1; export DUALCASE # for MKS sh +- +-# Support unset when possible. +-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then +- as_unset=unset +-else +- as_unset=false +-fi +- +- +-# Work around bugs in pre-3.0 UWIN ksh. +-$as_unset ENV MAIL MAILPATH +-PS1='$ ' +-PS2='> ' +-PS4='+ ' +- +-# NLS nuisances. +-for as_var in \ +- LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ +- LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ +- LC_TELEPHONE LC_TIME +-do +- if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then +- eval $as_var=C; export $as_var +- else +- $as_unset $as_var +- fi +-done +- +-# Required to use basename. +-if expr a : '(a)' >/dev/null 2>&1; then +- as_expr=expr +-else +- as_expr=false +-fi +- +-if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then +- as_basename=basename +-else +- as_basename=false +-fi +- +- +-# Name of the executable. +-as_me=`$as_basename "$0" || +-$as_expr X/"$0" : '.*/([^/][^/]*)/*$' | \ +- X"$0" : 'X(//)$' | \ +- X"$0" : 'X(/)$' | \ +- . : '(.)' 2>/dev/null || +-echo X/"$0" | +- sed '/^.*/([^/][^/]*)/*$/{ s//\1/; q; } +- /^X/(//)$/{ s//\1/; q; } +- /^X/(/).*/{ s//\1/; q; } +- s/.*/./; q'` +- +- +-# PATH needs CR, and LINENO needs CR and PATH. +-# Avoid depending upon Character Ranges. +-as_cr_letters='abcdefghijklmnopqrstuvwxyz' +-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +-as_cr_Letters=$as_cr_letters$as_cr_LETTERS +-as_cr_digits='0123456789' +-as_cr_alnum=$as_cr_Letters$as_cr_digits +- +-# The user is always right. +-if test "${PATH_SEPARATOR+set}" != set; then +- echo "#! /bin/sh" >conf$$.sh +- echo "exit 0" >>conf$$.sh +- chmod +x conf$$.sh +- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then +- PATH_SEPARATOR=';' +- else +- PATH_SEPARATOR=: +- fi +- rm -f conf$$.sh +-fi +- +- +- as_lineno_1=$LINENO +- as_lineno_2=$LINENO +- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` +- test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x$as_lineno_3" = "x$as_lineno_2" || { +- # Find who we are. Look in the path if we contain no path at all +- # relative or not. +- case $0 in +- *[\/]* ) as_myself=$0 ;; +- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +-done +- +- ;; +- esac +- # We did not find ourselves, most probably we were run as `sh COMMAND' +- # in which case we are not to be found in the path. +- if test "x$as_myself" = x; then +- as_myself=$0 +- fi +- if test ! -f "$as_myself"; then +- { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 +- { (exit 1); exit 1; }; } +- fi +- case $CONFIG_SHELL in +- '') +- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for as_base in sh bash ksh sh5; do +- case $as_dir in +- /*) +- if ("$as_dir/$as_base" -c ' +- as_lineno_1=$LINENO +- as_lineno_2=$LINENO +- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` +- test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then +- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } +- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } +- CONFIG_SHELL=$as_dir/$as_base +- export CONFIG_SHELL +- exec "$CONFIG_SHELL" "$0" ${1+"$@"} +- fi;; +- esac +- done +-done +-;; +- esac +- +- # Create $as_me.lineno as a copy of $as_myself, but with $LINENO +- # uniformly replaced by the line number. The first 'sed' inserts a +- # line-number line before each line; the second 'sed' does the real +- # work. The second script uses 'N' to pair each line-number line +- # with the numbered line, and appends trailing '-' during +- # substitution so that $LINENO is not a special case at line end. +- # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the +- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) +- sed '=' <$as_myself | +- sed ' +- N +- s,$,-, +- : loop +- s,^(['$as_cr_digits']*)(.*)[$]LINENO([^'$as_cr_alnum'_]),\1\2\1\3, +- t loop +- s,-$,, +- s,^['$as_cr_digits']*\n,, +- ' >$as_me.lineno && +- chmod +x $as_me.lineno || +- { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 +- { (exit 1); exit 1; }; } +- +- # Don't try to exec as it changes $[0], causing all sort of problems +- # (the dirname of $[0] is not the place where we might find the +- # original and so on. Autoconf is especially sensible to this). +- . ./$as_me.lineno +- # Exit status is that of the last command. +- exit +-} +- +- +-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in +- *c*,-n*) ECHO_N= ECHO_C=' +-' ECHO_T=' ' ;; +- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; +- *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +-esac +- +-if expr a : '(a)' >/dev/null 2>&1; then +- as_expr=expr +-else +- as_expr=false +-fi +- +-rm -f conf$$ conf$$.exe conf$$.file +-echo >conf$$.file +-if ln -s conf$$.file conf$$ 2>/dev/null; then +- # We could just check for DJGPP; but this test a) works b) is more generic +- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). +- if test -f conf$$.exe; then +- # Don't use ln at all; we don't have any links +- as_ln_s='cp -p' +- else +- as_ln_s='ln -s' +- fi +-elif ln conf$$.file conf$$ 2>/dev/null; then +- as_ln_s=ln +-else +- as_ln_s='cp -p' +-fi +-rm -f conf$$ conf$$.exe conf$$.file +- +-if mkdir -p . 2>/dev/null; then +- as_mkdir_p=: +-else +- test -d ./-p && rmdir ./-p +- as_mkdir_p=false +-fi +- +-as_executable_p="test -f" +- +-# Sed expression to map a string onto a valid CPP name. +-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" +- +-# Sed expression to map a string onto a valid variable name. +-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" +- +- +-# IFS +-# We need space, tab and new line, in precisely that order. +-as_nl=' +-' +-IFS=" $as_nl" +- +-# CDPATH. +-$as_unset CDPATH +- +- +-# Name of the host. +-# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +-# so uname gets run too. +-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` +- +-exec 6>&1 +- +-# +-# Initializations. +-# +-ac_default_prefix=/usr/local +-ac_config_libobj_dir=. +-cross_compiling=no +-subdirs= +-MFLAGS= +-MAKEFLAGS= +-SHELL=${CONFIG_SHELL-/bin/sh} +- +-# Maximum number of lines to put in a shell here document. +-# This variable seems obsolete. It should probably be removed, and +-# only ac_max_sed_lines should be used. +-: ${ac_max_here_lines=38} +- +-# Identity of this package. +-PACKAGE_NAME='GRUB' +-PACKAGE_TARNAME='grub' +-PACKAGE_VERSION='0.97' +-PACKAGE_STRING='GRUB 0.97' +-PACKAGE_BUGREPORT='bug-grub@gnu.org' +- +-ac_unique_file="stage2/stage2.c" +-# Factoring default headers for most tests. +-ac_includes_default="\ +-#include <stdio.h> +-#if HAVE_SYS_TYPES_H +-# include <sys/types.h> +-#endif +-#if HAVE_SYS_STAT_H +-# include <sys/stat.h> +-#endif +-#if STDC_HEADERS +-# include <stdlib.h> +-# include <stddef.h> +-#else +-# if HAVE_STDLIB_H +-# include <stdlib.h> +-# endif +-#endif +-#if HAVE_STRING_H +-# if !STDC_HEADERS && HAVE_MEMORY_H +-# include <memory.h> +-# endif +-# include <string.h> +-#endif +-#if HAVE_STRINGS_H +-# include <strings.h> +-#endif +-#if HAVE_INTTYPES_H +-# include <inttypes.h> +-#else +-# if HAVE_STDINT_H +-# include <stdint.h> +-# endif +-#endif +-#if HAVE_UNISTD_H +-# include <unistd.h> +-#endif" +- +-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar build build_cpu build_vendor build_os host host_cpu host_vendor host_os MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT PERL CC ac_ct_CC CFLAGS LDFLAGS CPPFLAGS EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CCAS RANLIB ac_ct_RANLIB STAGE1_CFLAGS STAGE2_CFLAGS GRUB_CFLAGS OBJCOPY ac_ct_OBJCOPY GRUB_LIBS CPP EGREP NETBOOT_SUPPORT_T RUE NETBOOT_SUPPORT_FALSE DISKLESS_SUPPORT_TRUE DISKLESS_SUPPORT_FALSE HERCULES_SUPPORT_TRUE HERCULES_SUPPORT_FALSE SERIAL_SUPPORT_TRUE SERIAL_SUPPORT_FALSE SERIAL_SPEED_SIMULATION_TRUE SERIAL_SPEED_SIMULATION_FALSE BUILD_EXAMPLE_KERNEL_TRUE BUILD_EXAMPLE_KERNEL_FALSE FSYS_CFLAGS NET_CFLAGS NET_EXTRAFLAGS NETBOOT_DRIVERS CCASFLAGS LIBOBJS LTLIBOBJS' +-ac_subst_files='' +- +-# Initialize some variables set by options. +-ac_init_help= +-ac_init_version=false +-# The variables have the same names as the options, with +-# dashes changed to underlines. +-cache_file=/dev/null +-exec_prefix=NONE +-no_create= +-no_recursion= +-prefix=NONE +-program_prefix=NONE +-program_suffix=NONE +-program_transform_name=s,x,x, +-silent= +-site= +-srcdir= +-verbose= +-x_includes=NONE +-x_libraries=NONE +- +-# Installation directory options. +-# These are left unexpanded so users can "make install exec_prefix=/foo" +-# and all the variables that are supposed to be based on exec_prefix +-# by default will actually change. +-# Use braces instead of parens because sh, perl, etc. also accept them. +-bindir='${exec_prefix}/bin' +-sbindir='${exec_prefix}/sbin' +-libexecdir='${exec_prefix}/libexec' +-datadir='${prefix}/share' +-sysconfdir='${prefix}/etc' +-sharedstatedir='${prefix}/com' +-localstatedir='${prefix}/var' +-libdir='${exec_prefix}/lib' +-includedir='${prefix}/include' +-oldincludedir='/usr/include' +-infodir='${prefix}/info' +-mandir='${prefix}/man' +- +-ac_prev= +-for ac_option +-do +- # If the previous option needs an argument, assign it. +- if test -n "$ac_prev"; then +- eval "$ac_prev=$ac_option" +- ac_prev= +- continue +- fi +- +- ac_optarg=`expr "x$ac_option" : 'x[^=]*=(.*)'` +- +- # Accept the important Cygnus configure options, so we can diagnose typos. +- +- case $ac_option in +- +- -bindir | --bindir | --bindi | --bind | --bin | --bi) +- ac_prev=bindir ;; +- -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) +- bindir=$ac_optarg ;; +- +- -build | --build | --buil | --bui | --bu) +- ac_prev=build_alias ;; +- -build=* | --build=* | --buil=* | --bui=* | --bu=*) +- build_alias=$ac_optarg ;; +- +- -cache-file | --cache-file | --cache-fil | --cache-fi \ +- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) +- ac_prev=cache_file ;; +- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ +- | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) +- cache_file=$ac_optarg ;; +- +- --config-cache | -C) +- cache_file=config.cache ;; +- +- -datadir | --datadir | --datadi | --datad | --data | --dat | --da) +- ac_prev=datadir ;; +- -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ +- | --da=*) +- datadir=$ac_optarg ;; +- +- -disable-* | --disable-*) +- ac_feature=`expr "x$ac_option" : 'x-*disable-(.*)'` +- # Reject names that are not valid shell variable names. +- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && +- { echo "$as_me: error: invalid feature name: $ac_feature" >&2 +- { (exit 1); exit 1; }; } +- ac_feature=`echo $ac_feature | sed 's/-/_/g'` +- eval "enable_$ac_feature=no" ;; +- +- -enable-* | --enable-*) +- ac_feature=`expr "x$ac_option" : 'x-*enable-([^=]*)'` +- # Reject names that are not valid shell variable names. +- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && +- { echo "$as_me: error: invalid feature name: $ac_feature" >&2 +- { (exit 1); exit 1; }; } +- ac_feature=`echo $ac_feature | sed 's/-/_/g'` +- case $ac_option in +- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\''/g"`;; +- *) ac_optarg=yes ;; +- esac +- eval "enable_$ac_feature='$ac_optarg'" ;; +- +- -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ +- | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ +- | --exec | --exe | --ex) +- ac_prev=exec_prefix ;; +- -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ +- | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ +- | --exec=* | --exe=* | --ex=*) +- exec_prefix=$ac_optarg ;; +- +- -gas | --gas | --ga | --g) +- # Obsolete; use --with-gas. +- with_gas=yes ;; +- +- -help | --help | --hel | --he | -h) +- ac_init_help=long ;; +- -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) +- ac_init_help=recursive ;; +- -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) +- ac_init_help=short ;; +- +- -host | --host | --hos | --ho) +- ac_prev=host_alias ;; +- -host=* | --host=* | --hos=* | --ho=*) +- host_alias=$ac_optarg ;; +- +- -includedir | --includedir | --includedi | --included | --include \ +- | --includ | --inclu | --incl | --inc) +- ac_prev=includedir ;; +- -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ +- | --includ=* | --inclu=* | --incl=* | --inc=*) +- includedir=$ac_optarg ;; +- +- -infodir | --infodir | --infodi | --infod | --info | --inf) +- ac_prev=infodir ;; +- -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) +- infodir=$ac_optarg ;; +- +- -libdir | --libdir | --libdi | --libd) +- ac_prev=libdir ;; +- -libdir=* | --libdir=* | --libdi=* | --libd=*) +- libdir=$ac_optarg ;; +- +- -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ +- | --libexe | --libex | --libe) +- ac_prev=libexecdir ;; +- -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ +- | --libexe=* | --libex=* | --libe=*) +- libexecdir=$ac_optarg ;; +- +- -localstatedir | --localstatedir | --localstatedi | --localstated \ +- | --localstate | --localstat | --localsta | --localst \ +- | --locals | --local | --loca | --loc | --lo) +- ac_prev=localstatedir ;; +- -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ +- | --localstate=* | --localstat=* | --localsta=* | --localst=* \ +- | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) +- localstatedir=$ac_optarg ;; +- +- -mandir | --mandir | --mandi | --mand | --man | --ma | --m) +- ac_prev=mandir ;; +- -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) +- mandir=$ac_optarg ;; +- +- -nfp | --nfp | --nf) +- # Obsolete; use --without-fp. +- with_fp=no ;; +- +- -no-create | --no-create | --no-creat | --no-crea | --no-cre \ +- | --no-cr | --no-c | -n) +- no_create=yes ;; +- +- -no-recursion | --no-recursion | --no-recursio | --no-recursi \ +- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) +- no_recursion=yes ;; +- +- -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ +- | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ +- | --oldin | --oldi | --old | --ol | --o) +- ac_prev=oldincludedir ;; +- -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ +- | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ +- | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) +- oldincludedir=$ac_optarg ;; +- +- -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) +- ac_prev=prefix ;; +- -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) +- prefix=$ac_optarg ;; +- +- -program-prefix | --program-prefix | --program-prefi | --program-pref \ +- | --program-pre | --program-pr | --program-p) +- ac_prev=program_prefix ;; +- -program-prefix=* | --program-prefix=* | --program-prefi=* \ +- | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) +- program_prefix=$ac_optarg ;; +- +- -program-suffix | --program-suffix | --program-suffi | --program-suff \ +- | --program-suf | --program-su | --program-s) +- ac_prev=program_suffix ;; +- -program-suffix=* | --program-suffix=* | --program-suffi=* \ +- | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) +- program_suffix=$ac_optarg ;; +- +- -program-transform-name | --program-transform-name \ +- | --program-transform-nam | --program-transform-na \ +- | --program-transform-n | --program-transform- \ +- | --program-transform | --program-transfor \ +- | --program-transfo | --program-transf \ +- | --program-trans | --program-tran \ +- | --progr-tra | --program-tr | --program-t) +- ac_prev=program_transform_name ;; +- -program-transform-name=* | --program-transform-name=* \ +- | --program-transform-nam=* | --program-transform-na=* \ +- | --program-transform-n=* | --program-transform-=* \ +- | --program-transform=* | --program-transfor=* \ +- | --program-transfo=* | --program-transf=* \ +- | --program-trans=* | --program-tran=* \ +- | --progr-tra=* | --program-tr=* | --program-t=*) +- program_transform_name=$ac_optarg ;; +- +- -q | -quiet | --quiet | --quie | --qui | --qu | --q \ +- | -silent | --silent | --silen | --sile | --sil) +- silent=yes ;; +- +- -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) +- ac_prev=sbindir ;; +- -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ +- | --sbi=* | --sb=*) +- sbindir=$ac_optarg ;; +- +- -sharedstatedir | --sharedstatedir | --sharedstatedi \ +- | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ +- | --sharedst | --shareds | --shared | --share | --shar \ +- | --sha | --sh) +- ac_prev=sharedstatedir ;; +- -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ +- | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ +- | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ +- | --sha=* | --sh=*) +- sharedstatedir=$ac_optarg ;; +- +- -site | --site | --sit) +- ac_prev=site ;; +- -site=* | --site=* | --sit=*) +- site=$ac_optarg ;; +- +- -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) +- ac_prev=srcdir ;; +- -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) +- srcdir=$ac_optarg ;; +- +- -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ +- | --syscon | --sysco | --sysc | --sys | --sy) +- ac_prev=sysconfdir ;; +- -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ +- | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) +- sysconfdir=$ac_optarg ;; +- +- -target | --target | --targe | --targ | --tar | --ta | --t) +- ac_prev=target_alias ;; +- -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) +- target_alias=$ac_optarg ;; +- +- -v | -verbose | --verbose | --verbos | --verbo | --verb) +- verbose=yes ;; +- +- -version | --version | --versio | --versi | --vers | -V) +- ac_init_version=: ;; +- +- -with-* | --with-*) +- ac_package=`expr "x$ac_option" : 'x-*with-([^=]*)'` +- # Reject names that are not valid shell variable names. +- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && +- { echo "$as_me: error: invalid package name: $ac_package" >&2 +- { (exit 1); exit 1; }; } +- ac_package=`echo $ac_package| sed 's/-/_/g'` +- case $ac_option in +- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\''/g"`;; +- *) ac_optarg=yes ;; +- esac +- eval "with_$ac_package='$ac_optarg'" ;; +- +- -without-* | --without-*) +- ac_package=`expr "x$ac_option" : 'x-*without-(.*)'` +- # Reject names that are not valid shell variable names. +- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && +- { echo "$as_me: error: invalid package name: $ac_package" >&2 +- { (exit 1); exit 1; }; } +- ac_package=`echo $ac_package | sed 's/-/_/g'` +- eval "with_$ac_package=no" ;; +- +- --x) +- # Obsolete; use --with-x. +- with_x=yes ;; +- +- -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ +- | --x-incl | --x-inc | --x-in | --x-i) +- ac_prev=x_includes ;; +- -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ +- | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) +- x_includes=$ac_optarg ;; +- +- -x-libraries | --x-libraries | --x-librarie | --x-librari \ +- | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) +- ac_prev=x_libraries ;; +- -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ +- | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) +- x_libraries=$ac_optarg ;; +- +- -*) { echo "$as_me: error: unrecognized option: $ac_option +-Try `$0 --help' for more information." >&2 +- { (exit 1); exit 1; }; } +- ;; +- +- *=*) +- ac_envvar=`expr "x$ac_option" : 'x([^=]*)='` +- # Reject names that are not valid shell variable names. +- expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && +- { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 +- { (exit 1); exit 1; }; } +- ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\''/g"` +- eval "$ac_envvar='$ac_optarg'" +- export $ac_envvar ;; +- +- *) +- # FIXME: should be removed in autoconf 3.0. +- echo "$as_me: WARNING: you should use --build, --host, --target" >&2 +- expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && +- echo "$as_me: WARNING: invalid host type: $ac_option" >&2 +- : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} +- ;; +- +- esac +-done +- +-if test -n "$ac_prev"; then +- ac_option=--`echo $ac_prev | sed 's/_/-/g'` +- { echo "$as_me: error: missing argument to $ac_option" >&2 +- { (exit 1); exit 1; }; } +-fi +- +-# Be sure to have absolute paths. +-for ac_var in exec_prefix prefix +-do +- eval ac_val=$`echo $ac_var` +- case $ac_val in +- [\/$]* | ?:[\/]* | NONE | '' ) ;; +- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 +- { (exit 1); exit 1; }; };; +- esac +-done +- +-# Be sure to have absolute paths. +-for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ +- localstatedir libdir includedir oldincludedir infodir mandir +-do +- eval ac_val=$`echo $ac_var` +- case $ac_val in +- [\/$]* | ?:[\/]* ) ;; +- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 +- { (exit 1); exit 1; }; };; +- esac +-done +- +-# There might be people who depend on the old broken behavior: `$host' +-# used to hold the argument of --host etc. +-# FIXME: To remove some day. +-build=$build_alias +-host=$host_alias +-target=$target_alias +- +-# FIXME: To remove some day. +-if test "x$host_alias" != x; then +- if test "x$build_alias" = x; then +- cross_compiling=maybe +- echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. +- If a cross compiler is detected then cross compile mode will be used." >&2 +- elif test "x$build_alias" != "x$host_alias"; then +- cross_compiling=yes +- fi +-fi +- +-ac_tool_prefix= +-test -n "$host_alias" && ac_tool_prefix=$host_alias- +- +-test "$silent" = yes && exec 6>/dev/null +- +- +-# Find the source files, if location was not specified. +-if test -z "$srcdir"; then +- ac_srcdir_defaulted=yes +- # Try the directory containing this script, then its parent. +- ac_confdir=`(dirname "$0") 2>/dev/null || +-$as_expr X"$0" : 'X(.*[^/])//*[^/][^/]*/*$' | \ +- X"$0" : 'X(//)[^/]' | \ +- X"$0" : 'X(//)$' | \ +- X"$0" : 'X(/)' | \ +- . : '(.)' 2>/dev/null || +-echo X"$0" | +- sed '/^X(.*[^/])//*[^/][^/]*/*$/{ s//\1/; q; } +- /^X(//)[^/].*/{ s//\1/; q; } +- /^X(//)$/{ s//\1/; q; } +- /^X(/).*/{ s//\1/; q; } +- s/.*/./; q'` +- srcdir=$ac_confdir +- if test ! -r $srcdir/$ac_unique_file; then +- srcdir=.. +- fi +-else +- ac_srcdir_defaulted=no +-fi +-if test ! -r $srcdir/$ac_unique_file; then +- if test "$ac_srcdir_defaulted" = yes; then +- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 +- { (exit 1); exit 1; }; } +- else +- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 +- { (exit 1); exit 1; }; } +- fi +-fi +-(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || +- { echo "$as_me: error: sources are in $srcdir, but `cd $srcdir' does not work" >&2 +- { (exit 1); exit 1; }; } +-srcdir=`echo "$srcdir" | sed 's%([^\/])[\/]*$%\1%'` +-ac_env_build_alias_set=${build_alias+set} +-ac_env_build_alias_value=$build_alias +-ac_cv_env_build_alias_set=${build_alias+set} +-ac_cv_env_build_alias_value=$build_alias +-ac_env_host_alias_set=${host_alias+set} +-ac_env_host_alias_value=$host_alias +-ac_cv_env_host_alias_set=${host_alias+set} +-ac_cv_env_host_alias_value=$host_alias +-ac_env_target_alias_set=${target_alias+set} +-ac_env_target_alias_value=$target_alias +-ac_cv_env_target_alias_set=${target_alias+set} +-ac_cv_env_target_alias_value=$target_alias +-ac_env_CC_set=${CC+set} +-ac_env_CC_value=$CC +-ac_cv_env_CC_set=${CC+set} +-ac_cv_env_CC_value=$CC +-ac_env_CFLAGS_set=${CFLAGS+set} +-ac_env_CFLAGS_value=$CFLAGS +-ac_cv_env_CFLAGS_set=${CFLAGS+set} +-ac_cv_env_CFLAGS_value=$CFLAGS +-ac_env_LDFLAGS_set=${LDFLAGS+set} +-ac_env_LDFLAGS_value=$LDFLAGS +-ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +-ac_cv_env_LDFLAGS_value=$LDFLAGS +-ac_env_CPPFLAGS_set=${CPPFLAGS+set} +-ac_env_CPPFLAGS_value=$CPPFLAGS +-ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +-ac_cv_env_CPPFLAGS_value=$CPPFLAGS +-ac_env_CPP_set=${CPP+set} +-ac_env_CPP_value=$CPP +-ac_cv_env_CPP_set=${CPP+set} +-ac_cv_env_CPP_value=$CPP +- +-# +-# Report the --help message. +-# +-if test "$ac_init_help" = "long"; then +- # Omit some internal or obsolete options to make the list less imposing. +- # This message is too long to be a string in the A/UX 3.1 sh. +- cat <<_ACEOF +-`configure' configures GRUB 0.97 to adapt to many kinds of systems. +- +-Usage: $0 [OPTION]... [VAR=VALUE]... +- +-To assign environment variables (e.g., CC, CFLAGS...), specify them as +-VAR=VALUE. See below for descriptions of some of the useful variables. +- +-Defaults for the options are specified in brackets. +- +-Configuration: +- -h, --help display this help and exit +- --help=short display options specific to this package +- --help=recursive display the short help of all the included packages +- -V, --version display version information and exit +- -q, --quiet, --silent do not print `checking...' messages +- --cache-file=FILE cache test results in FILE [disabled] +- -C, --config-cache alias for `--cache-file=config.cache' +- -n, --no-create do not create output files +- --srcdir=DIR find the sources in DIR [configure dir or `..'] +- +-_ACEOF +- +- cat <<_ACEOF +-Installation directories: +- --prefix=PREFIX install architecture-independent files in PREFIX +- [$ac_default_prefix] +- --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX +- [PREFIX] +- +-By default, `make install' will install all the files in +-`$ac_default_prefix/bin', `$ac_default_prefix/lib' etc. You can specify +-an installation prefix other than `$ac_default_prefix' using `--prefix', +-for instance `--prefix=$HOME'. +- +-For better control, use the options below. +- +-Fine tuning of the installation directories: +- --bindir=DIR user executables [EPREFIX/bin] +- --sbindir=DIR system admin executables [EPREFIX/sbin] +- --libexecdir=DIR program executables [EPREFIX/libexec] +- --datadir=DIR read-only architecture-independent data [PREFIX/share] +- --sysconfdir=DIR read-only single-machine data [PREFIX/etc] +- --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] +- --localstatedir=DIR modifiable single-machine data [PREFIX/var] +- --libdir=DIR object code libraries [EPREFIX/lib] +- --includedir=DIR C header files [PREFIX/include] +- --oldincludedir=DIR C header files for non-gcc [/usr/include] +- --infodir=DIR info documentation [PREFIX/info] +- --mandir=DIR man documentation [PREFIX/man] +-_ACEOF +- +- cat <<_ACEOF +- +-Program names: +- --program-prefix=PREFIX prepend PREFIX to installed program names +- --program-suffix=SUFFIX append SUFFIX to installed program names +- --program-transform-name=PROGRAM run sed PROGRAM on installed program names +- +-System types: +- --build=BUILD configure for building on BUILD [guessed] +- --host=HOST cross-compile to build programs to run on HOST [BUILD] +-_ACEOF +-fi +- +-if test -n "$ac_init_help"; then +- case $ac_init_help in +- short | recursive ) echo "Configuration of GRUB 0.97:";; +- esac +- cat <<_ACEOF +- +-Optional Features: +- --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) +- --enable-FEATURE[=ARG] include FEATURE [ARG=yes] +- --enable-maintainer-mode enable make rules and dependencies not useful +- (and sometimes confusing) to the casual installer +- --disable-dependency-tracking speeds up one-time build +- --enable-dependency-tracking do not reject slow dependency extractors +- --disable-ext2fs disable ext2fs support in Stage 2 +- --disable-fat disable FAT support in Stage 2 +- --disable-ffs disable FFS support in Stage 2 +- --disable-ufs2 disable UFS2 support in Stage 2 +- --disable-minix disable Minix fs support in Stage 2 +- --disable-reiserfs disable ReiserFS support in Stage 2 +- --disable-vstafs disable VSTa FS support in Stage 2 +- --disable-jfs disable IBM JFS support in Stage 2 +- --disable-xfs disable SGI XFS support in Stage 2 +- --disable-iso9660 disable ISO9660 support in Stage 2 +- --disable-gunzip disable decompression in Stage 2 +- --disable-md5-password disable MD5 password support in Stage 2 +- --disable-packet-retransmission +- turn off packet retransmission +- --enable-pci-direct access PCI directly instead of using BIOS +- --enable-3c509 enable 3Com509 driver +- --enable-3c529 enable 3Com529 driver +- --enable-3c595 enable 3Com595 driver +- --enable-3c90x enable 3Com90x driver +- --enable-cs89x0 enable CS89x0 driver +- --enable-davicom enable Davicom driver +- --enable-depca enable DEPCA and EtherWORKS driver +- --enable-eepro enable Etherexpress Pro/10 driver +- --enable-eepro100 enable Etherexpress Pro/100 driver +- --enable-epic100 enable SMC 83c170 EPIC/100 driver +- --enable-3c507 enable 3Com507 driver +- --enable-exos205 enable EXOS205 driver +- --enable-ni5210 enable Racal-Interlan NI5210 driver +- --enable-lance enable Lance PCI PCNet/32 driver +- --enable-ne2100 enable Novell NE2100 driver +- --enable-ni6510 enable Racal-Interlan NI6510 driver +- --enable-natsemi enable NatSemi DP8381x driver +- --enable-ni5010 enable Racal-Interlan NI5010 driver +- --enable-3c503 enable 3Com503 driver +- --enable-ne enable NE1000/2000 ISA driver +- --enable-ns8390 enable NE2000 PCI driver +- --enable-wd enable WD8003/8013, SMC8216/8416 driver +- --enable-otulip enable old Tulip driver +- --enable-rtl8139 enable Realtek 8139 driver +- --enable-sis900 enable SIS 900 and SIS 7016 driver +- --enable-sk-g16 enable Schneider and Koch G16 driver +- --enable-smc9000 enable SMC9000 driver +- --enable-tiara enable Tiara driver +- --enable-tulip enable Tulip driver +- --enable-via-rhine enable Rhine-I/II driver +- --enable-w89c840 enable Winbond W89c840, Compex RL100-ATX driver +- --enable-3c503-shmem use 3c503 shared memory mode +- --enable-3c503-aui use AUI by default on 3c503 cards +- --enable-compex-rl2000-fix +- specify this if you have a Compex RL2000 PCI +- --enable-smc9000-scan=LIST +- probe for SMC9000 I/O addresses using LIST +- --enable-ne-scan=LIST probe for NE base address using LIST +- --enable-wd-default-mem=MEM +- set the default memory location for WD/SMC +- --enable-cs-scan=LIST probe for CS89x0 base address using LIST +- --enable-diskless enable diskless support +- --disable-hercules disable hercules terminal support +- --disable-serial disable serial terminal support +- --enable-serial-speed-simulation +- simulate the slowness of a serial device +- --enable-preset-menu=FILE +- preset a menu file FILE in Stage 2 +- --enable-example-kernel +- build the example Multiboot kernel +- --disable-auto-linux-mem-opt +- don't pass Linux mem= option automatically +- +-Optional Packages: +- --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] +- --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) +- --with-binutils=DIR search the directory DIR to find binutils +- --without-curses do not use curses +- +-Some influential environment variables: +- CC C compiler command +- CFLAGS C compiler flags +- LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a +- nonstandard directory <lib dir> +- CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have +- headers in a nonstandard directory <include dir> +- CPP C preprocessor +- +-Use these variables to override the choices made by `configure' or to help +-it to find libraries and programs with nonstandard names/locations. +- +-Report bugs to bug-grub@gnu.org. +-_ACEOF +-fi +- +-if test "$ac_init_help" = "recursive"; then +- # If there are subdirs, report their specific --help. +- ac_popdir=`pwd` +- for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue +- test -d $ac_dir || continue +- ac_builddir=. +- +-if test "$ac_dir" != .; then +- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^.[\/],,'` +- # A "../" for each directory in $ac_dir_suffix. +- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\/]*,../,g'` +-else +- ac_dir_suffix= ac_top_builddir= +-fi +- +-case $srcdir in +- .) # No --srcdir option. We are building in place. +- ac_srcdir=. +- if test -z "$ac_top_builddir"; then +- ac_top_srcdir=. +- else +- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` +- fi ;; +- [\/]* | ?:[\/]* ) # Absolute path. +- ac_srcdir=$srcdir$ac_dir_suffix; +- ac_top_srcdir=$srcdir ;; +- *) # Relative path. +- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix +- ac_top_srcdir=$ac_top_builddir$srcdir ;; +-esac +- +-# Do not use `cd foo && pwd` to compute absolute paths, because +-# the directories may not exist. +-case `pwd` in +-.) ac_abs_builddir="$ac_dir";; +-*) +- case "$ac_dir" in +- .) ac_abs_builddir=`pwd`;; +- [\/]* | ?:[\/]* ) ac_abs_builddir="$ac_dir";; +- *) ac_abs_builddir=`pwd`/"$ac_dir";; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_builddir=${ac_top_builddir}.;; +-*) +- case ${ac_top_builddir}. in +- .) ac_abs_top_builddir=$ac_abs_builddir;; +- [\/]* | ?:[\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; +- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_srcdir=$ac_srcdir;; +-*) +- case $ac_srcdir in +- .) ac_abs_srcdir=$ac_abs_builddir;; +- [\/]* | ?:[\/]* ) ac_abs_srcdir=$ac_srcdir;; +- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_srcdir=$ac_top_srcdir;; +-*) +- case $ac_top_srcdir in +- .) ac_abs_top_srcdir=$ac_abs_builddir;; +- [\/]* | ?:[\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; +- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; +- esac;; +-esac +- +- cd $ac_dir +- # Check for guested configure; otherwise get Cygnus style configure. +- if test -f $ac_srcdir/configure.gnu; then +- echo +- $SHELL $ac_srcdir/configure.gnu --help=recursive +- elif test -f $ac_srcdir/configure; then +- echo +- $SHELL $ac_srcdir/configure --help=recursive +- elif test -f $ac_srcdir/configure.ac || +- test -f $ac_srcdir/configure.in; then +- echo +- $ac_configure --help +- else +- echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 +- fi +- cd $ac_popdir +- done +-fi +- +-test -n "$ac_init_help" && exit 0 +-if $ac_init_version; then +- cat <<_ACEOF +-GRUB configure 0.97 +-generated by GNU Autoconf 2.59 +- +-Copyright (C) 2003 Free Software Foundation, Inc. +-This configure script is free software; the Free Software Foundation +-gives unlimited permission to copy, distribute and modify it. +-_ACEOF +- exit 0 +-fi +-exec 5>config.log +-cat >&5 <<_ACEOF +-This file contains any messages produced by compilers while +-running configure, to aid debugging if configure makes a mistake. +- +-It was created by GRUB $as_me 0.97, which was +-generated by GNU Autoconf 2.59. Invocation command line was +- +- $ $0 $@ +- +-_ACEOF +-{ +-cat <<_ASUNAME +-## --------- ## +-## Platform. ## +-## --------- ## +- +-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +-uname -m = `(uname -m) 2>/dev/null || echo unknown` +-uname -r = `(uname -r) 2>/dev/null || echo unknown` +-uname -s = `(uname -s) 2>/dev/null || echo unknown` +-uname -v = `(uname -v) 2>/dev/null || echo unknown` +- +-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +-/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` +- +-/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +-/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +-hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +-/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +-/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +-/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` +- +-_ASUNAME +- +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- echo "PATH: $as_dir" +-done +- +-} >&5 +- +-cat >&5 <<_ACEOF +- +- +-## ----------- ## +-## Core tests. ## +-## ----------- ## +- +-_ACEOF +- +- +-# Keep a trace of the command line. +-# Strip out --no-create and --no-recursion so they do not pile up. +-# Strip out --silent because we don't want to record it for future runs. +-# Also quote any args containing shell meta-characters. +-# Make two passes to allow for proper duplicate-argument suppression. +-ac_configure_args= +-ac_configure_args0= +-ac_configure_args1= +-ac_sep= +-ac_must_keep_next=false +-for ac_pass in 1 2 +-do +- for ac_arg +- do +- case $ac_arg in +- -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; +- -q | -quiet | --quiet | --quie | --qui | --qu | --q \ +- | -silent | --silent | --silen | --sile | --sil) +- continue ;; +- *" "*|*" "*|*[[]~#$^&*(){}\|;<>?"']*) +- ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\''/g"` ;; +- esac +- case $ac_pass in +- 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; +- 2) +- ac_configure_args1="$ac_configure_args1 '$ac_arg'" +- if test $ac_must_keep_next = true; then +- ac_must_keep_next=false # Got value, back to normal. +- else +- case $ac_arg in +- *=* | --config-cache | -C | -disable-* | --disable-* \ +- | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ +- | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ +- | -with-* | --with-* | -without-* | --without-* | --x) +- case "$ac_configure_args0 " in +- "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; +- esac +- ;; +- -* ) ac_must_keep_next=true ;; +- esac +- fi +- ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" +- # Get rid of the leading space. +- ac_sep=" " +- ;; +- esac +- done +-done +-$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +-$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } +- +-# When interrupted or exit'd, cleanup temporary files, and complete +-# config.log. We remove comments because anyway the quotes in there +-# would cause problems or look ugly. +-# WARNING: Be sure not to use single quotes in there, as some shells, +-# such as our DU 5.0 friend, will then `close' the trap. +-trap 'exit_status=$? +- # Save into config.log some information that might help in debugging. +- { +- echo +- +- cat <<_ASBOX +-## ---------------- ## +-## Cache variables. ## +-## ---------------- ## +-_ASBOX +- echo +- # The following way of writing the cache mishandles newlines in values, +-{ +- (set) 2>&1 | +- case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in +- *ac_space=\ *) +- sed -n \ +- "s/'"'"'/'"'"'\\'"'"''"'"'/g; +- s/^\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\)=\(.*\)/\1='"'"'\2'"'"'/p" +- ;; +- *) +- sed -n \ +- "s/^\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\)=\(.*\)/\1=\2/p" +- ;; +- esac; +-} +- echo +- +- cat <<_ASBOX +-## ----------------- ## +-## Output variables. ## +-## ----------------- ## +-_ASBOX +- echo +- for ac_var in $ac_subst_vars +- do +- eval ac_val=$`echo $ac_var` +- echo "$ac_var='"'"'$ac_val'"'"'" +- done | sort +- echo +- +- if test -n "$ac_subst_files"; then +- cat <<_ASBOX +-## ------------- ## +-## Output files. ## +-## ------------- ## +-_ASBOX +- echo +- for ac_var in $ac_subst_files +- do +- eval ac_val=$`echo $ac_var` +- echo "$ac_var='"'"'$ac_val'"'"'" +- done | sort +- echo +- fi +- +- if test -s confdefs.h; then +- cat <<_ASBOX +-## ----------- ## +-## confdefs.h. ## +-## ----------- ## +-_ASBOX +- echo +- sed "/^$/d" confdefs.h | sort +- echo +- fi +- test "$ac_signal" != 0 && +- echo "$as_me: caught signal $ac_signal" +- echo "$as_me: exit $exit_status" +- } >&5 +- rm -f core *.core && +- rm -rf conftest* confdefs* conf$$* $ac_clean_files && +- exit $exit_status +- ' 0 +-for ac_signal in 1 2 13 15; do +- trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +-done +-ac_signal=0 +- +-# confdefs.h avoids OS command line length limits that DEFS can exceed. +-rm -rf conftest* confdefs.h +-# AIX cpp loses on an empty file, so make sure it contains at least a newline. +-echo >confdefs.h +- +-# Predefined preprocessor variables. +- +-cat >>confdefs.h <<_ACEOF +-#define PACKAGE_NAME "$PACKAGE_NAME" +-_ACEOF +- +- +-cat >>confdefs.h <<_ACEOF +-#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +-_ACEOF +- +- +-cat >>confdefs.h <<_ACEOF +-#define PACKAGE_VERSION "$PACKAGE_VERSION" +-_ACEOF +- +- +-cat >>confdefs.h <<_ACEOF +-#define PACKAGE_STRING "$PACKAGE_STRING" +-_ACEOF +- +- +-cat >>confdefs.h <<_ACEOF +-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +-_ACEOF +- +- +-# Let the site file select an alternate cache file if it wants to. +-# Prefer explicitly selected file to automatically selected ones. +-if test -z "$CONFIG_SITE"; then +- if test "x$prefix" != xNONE; then +- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" +- else +- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" +- fi +-fi +-for ac_site_file in $CONFIG_SITE; do +- if test -r "$ac_site_file"; then +- { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +-echo "$as_me: loading site script $ac_site_file" >&6;} +- sed 's/^/| /' "$ac_site_file" >&5 +- . "$ac_site_file" +- fi +-done +- +-if test -r "$cache_file"; then +- # Some versions of bash will fail to source /dev/null (special +- # files actually), so we avoid doing that. +- if test -f "$cache_file"; then +- { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +-echo "$as_me: loading cache $cache_file" >&6;} +- case $cache_file in +- [\/]* | ?:[\/]* ) . $cache_file;; +- *) . ./$cache_file;; +- esac +- fi +-else +- { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +-echo "$as_me: creating cache $cache_file" >&6;} +- >$cache_file +-fi +- +-# Check that the precious variables saved in the cache have kept the same +-# value. +-ac_cache_corrupted=false +-for ac_var in `(set) 2>&1 | +- sed -n 's/^ac_env_([a-zA-Z_0-9]*)_set=.*/\1/p'`; do +- eval ac_old_set=$ac_cv_env_${ac_var}_set +- eval ac_new_set=$ac_env_${ac_var}_set +- eval ac_old_val="$ac_cv_env_${ac_var}_value" +- eval ac_new_val="$ac_env_${ac_var}_value" +- case $ac_old_set,$ac_new_set in +- set,) +- { echo "$as_me:$LINENO: error: `$ac_var' was set to `$ac_old_val' in the previous run" >&5 +-echo "$as_me: error: `$ac_var' was set to `$ac_old_val' in the previous run" >&2;} +- ac_cache_corrupted=: ;; +- ,set) +- { echo "$as_me:$LINENO: error: `$ac_var' was not set in the previous run" >&5 +-echo "$as_me: error: `$ac_var' was not set in the previous run" >&2;} +- ac_cache_corrupted=: ;; +- ,);; +- *) +- if test "x$ac_old_val" != "x$ac_new_val"; then +- { echo "$as_me:$LINENO: error: `$ac_var' has changed since the previous run:" >&5 +-echo "$as_me: error: `$ac_var' has changed since the previous run:" >&2;} +- { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +-echo "$as_me: former value: $ac_old_val" >&2;} +- { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +-echo "$as_me: current value: $ac_new_val" >&2;} +- ac_cache_corrupted=: +- fi;; +- esac +- # Pass precious variables to config.status. +- if test "$ac_new_set" = set; then +- case $ac_new_val in +- *" "*|*" "*|*[[]~#$^&*(){}\|;<>?"']*) +- ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\''/g"` ;; +- *) ac_arg=$ac_var=$ac_new_val ;; +- esac +- case " $ac_configure_args " in +- *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. +- *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; +- esac +- fi +-done +-if $ac_cache_corrupted; then +- { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +-echo "$as_me: error: changes in the environment can compromise the build" >&2;} +- { { echo "$as_me:$LINENO: error: run `make distclean' and/or `rm $cache_file' and start over" >&5 +-echo "$as_me: error: run `make distclean' and/or `rm $cache_file' and start over" >&2;} +- { (exit 1); exit 1; }; } +-fi +- +-ac_ext=c +-ac_cpp='$CPP $CPPFLAGS' +-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +-ac_compiler_gnu=$ac_cv_c_compiler_gnu +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ac_config_headers="$ac_config_headers config.h" +- +-am__api_version="1.9" +-ac_aux_dir= +-for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do +- if test -f $ac_dir/install-sh; then +- ac_aux_dir=$ac_dir +- ac_install_sh="$ac_aux_dir/install-sh -c" +- break +- elif test -f $ac_dir/install.sh; then +- ac_aux_dir=$ac_dir +- ac_install_sh="$ac_aux_dir/install.sh -c" +- break +- elif test -f $ac_dir/shtool; then +- ac_aux_dir=$ac_dir +- ac_install_sh="$ac_aux_dir/shtool install -c" +- break +- fi +-done +-if test -z "$ac_aux_dir"; then +- { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +-echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} +- { (exit 1); exit 1; }; } +-fi +-ac_config_guess="$SHELL $ac_aux_dir/config.guess" +-ac_config_sub="$SHELL $ac_aux_dir/config.sub" +-ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. +- +-# Find a good install program. We prefer a C program (faster), +-# so one script is as good as another. But avoid the broken or +-# incompatible versions: +-# SysV /etc/install, /usr/sbin/install +-# SunOS /usr/etc/install +-# IRIX /sbin/install +-# AIX /bin/install +-# AmigaOS /C/install, which installs bootblocks on floppy discs +-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +-# AFS /usr/afsws/bin/install, which mishandles nonexistent args +-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +-# OS/2's system install, which has a completely different semantic +-# ./install, which can be erroneously created by make from ./install.sh. +-echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +-if test -z "$INSTALL"; then +-if test "${ac_cv_path_install+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- # Account for people who put trailing slashes in PATH elements. +-case $as_dir/ in +- ./ | .// | /cC/* | \ +- /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ +- ?:\/os2\/install\/* | ?:\/OS2\/INSTALL\/* | \ +- /usr/ucb/* ) ;; +- *) +- # OSF1 and SCO ODT 3.0 have their own names for install. +- # Don't use installbsd from OSF since it installs stuff as root +- # by default. +- for ac_prog in ginstall scoinst install; do +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then +- if test $ac_prog = install && +- grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then +- # AIX install. It has an incompatible calling convention. +- : +- elif test $ac_prog = install && +- grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then +- # program-specific install script used by HP pwplus--don't use. +- : +- else +- ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" +- break 3 +- fi +- fi +- done +- done +- ;; +-esac +-done +- +- +-fi +- if test "${ac_cv_path_install+set}" = set; then +- INSTALL=$ac_cv_path_install +- else +- # As a last resort, use the slow shell script. We don't cache a +- # path for INSTALL within a source directory, because that will +- # break other packages using the cache if that directory is +- # removed, or if the path is relative. +- INSTALL=$ac_install_sh +- fi +-fi +-echo "$as_me:$LINENO: result: $INSTALL" >&5 +-echo "${ECHO_T}$INSTALL" >&6 +- +-# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +-# It thinks the first close brace ends the variable substitution. +-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' +- +-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' +- +-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' +- +-echo "$as_me:$LINENO: checking whether build environment is sane" >&5 +-echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 +-# Just in case +-sleep 1 +-echo timestamp > conftest.file +-# Do `set' in a subshell so we don't clobber the current shell's +-# arguments. Must try -L first in case configure is actually a +-# symlink; some systems play weird games with the mod time of symlinks +-# (eg FreeBSD returns the mod time of the symlink's containing +-# directory). +-if ( +- set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` +- if test "$*" = "X"; then +- # -L didn't work. +- set X `ls -t $srcdir/configure conftest.file` +- fi +- rm -f conftest.file +- if test "$*" != "X $srcdir/configure conftest.file" \ +- && test "$*" != "X conftest.file $srcdir/configure"; then +- +- # If neither matched, then we have a broken ls. This can happen +- # if, for instance, CONFIG_SHELL is bash and it inherits a +- # broken ls alias from the environment. This has actually +- # happened. Such a system could not be considered "sane". +- { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken +-alias in your environment" >&5 +-echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken +-alias in your environment" >&2;} +- { (exit 1); exit 1; }; } +- fi +- +- test "$2" = conftest.file +- ) +-then +- # Ok. +- : +-else +- { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! +-Check your system clock" >&5 +-echo "$as_me: error: newly created file is older than distributed files! +-Check your system clock" >&2;} +- { (exit 1); exit 1; }; } +-fi +-echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 +-test "$program_prefix" != NONE && +- program_transform_name="s,^,$program_prefix,;$program_transform_name" +-# Use a double $ so make ignores it. +-test "$program_suffix" != NONE && +- program_transform_name="s,$,$program_suffix,;$program_transform_name" +-# Double any \ or $. echo might interpret backslashes. +-# By default was `s,x,x', remove it if useless. +-cat <<_ACEOF >conftest.sed +-s/[\$]/&&/g;s/;s,x,x,$// +-_ACEOF +-program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +-rm conftest.sed +- +-# expand $ac_aux_dir to an absolute path +-am_aux_dir=`cd $ac_aux_dir && pwd` +- +-test x"${MISSING+set}" = xset || MISSING="${SHELL} $am_aux_dir/missing" +-# Use eval to expand $SHELL +-if eval "$MISSING --run true"; then +- am_missing_run="$MISSING --run " +-else +- am_missing_run= +- { echo "$as_me:$LINENO: WARNING: `missing' script is too old or missing" >&5 +-echo "$as_me: WARNING: `missing' script is too old or missing" >&2;} +-fi +- +-if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then +- # We used to keeping the `.' as first argument, in order to +- # allow $(mkdir_p) to be used without argument. As in +- # $(mkdir_p) $(somedir) +- # where $(somedir) is conditionally defined. However this is wrong +- # for two reasons: +- # 1. if the package is installed by a user who cannot write `.' +- # make install will fail, +- # 2. the above comment should most certainly read +- # $(mkdir_p) $(DESTDIR)$(somedir) +- # so it does not work when $(somedir) is undefined and +- # $(DESTDIR) is not. +- # To support the latter case, we have to write +- # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), +- # so the `.' trick is pointless. +- mkdir_p='mkdir -p --' +-else +- # On NextStep and OpenStep, the `mkdir' command does not +- # recognize any option. It will interpret all options as +- # directories to create, and then abort because `.' already +- # exists. +- for d in ./-p ./--version; +- do +- test -d $d && rmdir $d +- done +- # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. +- if test -f "$ac_aux_dir/mkinstalldirs"; then +- mkdir_p='$(mkinstalldirs)' +- else +- mkdir_p='$(install_sh) -d' +- fi +-fi +- +-for ac_prog in gawk mawk nawk awk +-do +- # Extract the first word of "$ac_prog", so it can be a program name with args. +-set dummy $ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_AWK+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$AWK"; then +- ac_cv_prog_AWK="$AWK" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_AWK="$ac_prog" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-AWK=$ac_cv_prog_AWK +-if test -n "$AWK"; then +- echo "$as_me:$LINENO: result: $AWK" >&5 +-echo "${ECHO_T}$AWK" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +- test -n "$AWK" && break +-done +- +-echo "$as_me:$LINENO: checking whether ${MAKE-make} sets $(MAKE)" >&5 +-echo $ECHO_N "checking whether ${MAKE-make} sets $(MAKE)... $ECHO_C" >&6 +-set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` +-if eval "test "${ac_cv_prog_make_${ac_make}_set+set}" = set"; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.make <<_ACEOF +-all: +- @echo 'ac_maketemp="$(MAKE)"' +-_ACEOF +-# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +-eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +-if test -n "$ac_maketemp"; then +- eval ac_cv_prog_make_${ac_make}_set=yes +-else +- eval ac_cv_prog_make_${ac_make}_set=no +-fi +-rm -f conftest.make +-fi +-if eval "test "`echo '$ac_cv_prog_make_'${ac_make}_set`" = yes"; then +- echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 +- SET_MAKE= +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +- SET_MAKE="MAKE=${MAKE-make}" +-fi +- +-rm -rf .tst 2>/dev/null +-mkdir .tst 2>/dev/null +-if test -d .tst; then +- am__leading_dot=. +-else +- am__leading_dot=_ +-fi +-rmdir .tst 2>/dev/null +- +-# test to see if srcdir already configured +-if test "`cd $srcdir && pwd`" != "`pwd`" && +- test -f $srcdir/config.status; then +- { { echo "$as_me:$LINENO: error: source directory already configured; run "make distclean" there first" >&5 +-echo "$as_me: error: source directory already configured; run "make distclean" there first" >&2;} +- { (exit 1); exit 1; }; } +-fi +- +-# test whether we have cygpath +-if test -z "$CYGPATH_W"; then +- if (cygpath --version) >/dev/null 2>/dev/null; then +- CYGPATH_W='cygpath -w' +- else +- CYGPATH_W=echo +- fi +-fi +- +- +-# Define the identity of the package. +- PACKAGE='grub' +- VERSION='0.97' +- +- +-cat >>confdefs.h <<_ACEOF +-#define PACKAGE "$PACKAGE" +-_ACEOF +- +- +-cat >>confdefs.h <<_ACEOF +-#define VERSION "$VERSION" +-_ACEOF +- +-# Some tools Automake needs. +- +-ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} +- +- +-AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} +- +- +-AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} +- +- +-AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} +- +- +-MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} +- +-install_sh=${install_sh-"$am_aux_dir/install-sh"} +- +-# Installed binaries are usually stripped using `strip' when the user +-# run `make install-strip'. However `strip' might not be the right +-# tool to use in cross-compilation environments, therefore Automake +-# will honor the `STRIP' environment variable to overrule this program. +-if test "$cross_compiling" != no; then +- if test -n "$ac_tool_prefix"; then +- # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +-set dummy ${ac_tool_prefix}strip; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_STRIP+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$STRIP"; then +- ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_STRIP="${ac_tool_prefix}strip" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-STRIP=$ac_cv_prog_STRIP +-if test -n "$STRIP"; then +- echo "$as_me:$LINENO: result: $STRIP" >&5 +-echo "${ECHO_T}$STRIP" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-fi +-if test -z "$ac_cv_prog_STRIP"; then +- ac_ct_STRIP=$STRIP +- # Extract the first word of "strip", so it can be a program name with args. +-set dummy strip; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$ac_ct_STRIP"; then +- ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_ac_ct_STRIP="strip" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +- test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +-fi +-fi +-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +-if test -n "$ac_ct_STRIP"; then +- echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +-echo "${ECHO_T}$ac_ct_STRIP" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +- STRIP=$ac_ct_STRIP +-else +- STRIP="$ac_cv_prog_STRIP" +-fi +- +-fi +-INSTALL_STRIP_PROGRAM="${SHELL} $(install_sh) -c -s" +- +-# We need awk for the "check" target. The system "awk" is bad on +-# some platforms. +-# Always define AMTAR for backward compatibility. +- +-AMTAR=${AMTAR-"${am_missing_run}tar"} +- +-am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' +- +- +- +- +- +- +-# Make sure we can run config.sub. +-$ac_config_sub sun4 >/dev/null 2>&1 || +- { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +-echo "$as_me: error: cannot run $ac_config_sub" >&2;} +- { (exit 1); exit 1; }; } +- +-echo "$as_me:$LINENO: checking build system type" >&5 +-echo $ECHO_N "checking build system type... $ECHO_C" >&6 +-if test "${ac_cv_build+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_cv_build_alias=$build_alias +-test -z "$ac_cv_build_alias" && +- ac_cv_build_alias=`$ac_config_guess` +-test -z "$ac_cv_build_alias" && +- { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +-echo "$as_me: error: cannot guess build type; you must specify one" >&2;} +- { (exit 1); exit 1; }; } +-ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || +- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +-echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} +- { (exit 1); exit 1; }; } +- +-fi +-echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +-echo "${ECHO_T}$ac_cv_build" >&6 +-build=$ac_cv_build +-build_cpu=`echo $ac_cv_build | sed 's/^([^-]*)-([^-]*)-(.*)$/\1/'` +-build_vendor=`echo $ac_cv_build | sed 's/^([^-]*)-([^-]*)-(.*)$/\2/'` +-build_os=`echo $ac_cv_build | sed 's/^([^-]*)-([^-]*)-(.*)$/\3/'` +- +- +-echo "$as_me:$LINENO: checking host system type" >&5 +-echo $ECHO_N "checking host system type... $ECHO_C" >&6 +-if test "${ac_cv_host+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_cv_host_alias=$host_alias +-test -z "$ac_cv_host_alias" && +- ac_cv_host_alias=$ac_cv_build_alias +-ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || +- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +-echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} +- { (exit 1); exit 1; }; } +- +-fi +-echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +-echo "${ECHO_T}$ac_cv_host" >&6 +-host=$ac_cv_host +-host_cpu=`echo $ac_cv_host | sed 's/^([^-]*)-([^-]*)-(.*)$/\1/'` +-host_vendor=`echo $ac_cv_host | sed 's/^([^-]*)-([^-]*)-(.*)$/\2/'` +-host_os=`echo $ac_cv_host | sed 's/^([^-]*)-([^-]*)-(.*)$/\3/'` +- +- +- +-case "$host_cpu" in +-i[3456]86) host_cpu=i386 ;; +-x86_64) host_cpu=x86_64 ;; +-*) { { echo "$as_me:$LINENO: error: unsupported CPU type" >&5 +-echo "$as_me: error: unsupported CPU type" >&2;} +- { (exit 1); exit 1; }; } ;; +-esac +- +- +- +- +-# +-# Options +-# +- +-echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 +-echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6 +- # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. +-if test "${enable_maintainer_mode+set}" = set; then +- enableval="$enable_maintainer_mode" +- USE_MAINTAINER_MODE=$enableval +-else +- USE_MAINTAINER_MODE=no +-fi; +- echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 +-echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6 +- +- +-if test $USE_MAINTAINER_MODE = yes; then +- MAINTAINER_MODE_TRUE= +- MAINTAINER_MODE_FALSE='#' +-else +- MAINTAINER_MODE_TRUE='#' +- MAINTAINER_MODE_FALSE= +-fi +- +- MAINT=$MAINTAINER_MODE_TRUE +- +- +-if test "x$enable_maintainer_mode" = xyes; then +- # Extract the first word of "perl", so it can be a program name with args. +-set dummy perl; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_path_PERL+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- case $PERL in +- [\/]* | ?:[\/]*) +- ac_cv_path_PERL="$PERL" # Let the user override the test with a path. +- ;; +- *) +- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +- ;; +-esac +-fi +-PERL=$ac_cv_path_PERL +- +-if test -n "$PERL"; then +- echo "$as_me:$LINENO: result: $PERL" >&5 +-echo "${ECHO_T}$PERL" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +- if test -z "$PERL"; then +- { { echo "$as_me:$LINENO: error: perl not found" >&5 +-echo "$as_me: error: perl not found" >&2;} +- { (exit 1); exit 1; }; } +- fi +-fi +- +-# This should be checked before AC_PROG_CC +-if test "x$CFLAGS" = x; then +- default_CFLAGS=yes +-fi +- +-if test "x$host_cpu" = xx86_64; then +- CFLAGS="-m32 $CFLAGS" +-fi +- +-# +-# Programs +-# +- +-if test -n "$ac_tool_prefix"; then +- # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +-set dummy ${ac_tool_prefix}gcc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_CC+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$CC"; then +- ac_cv_prog_CC="$CC" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_CC="${ac_tool_prefix}gcc" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-CC=$ac_cv_prog_CC +-if test -n "$CC"; then +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-fi +-if test -z "$ac_cv_prog_CC"; then +- ac_ct_CC=$CC +- # Extract the first word of "gcc", so it can be a program name with args. +-set dummy gcc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$ac_ct_CC"; then +- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_ac_ct_CC="gcc" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-ac_ct_CC=$ac_cv_prog_ac_ct_CC +-if test -n "$ac_ct_CC"; then +- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +- CC=$ac_ct_CC +-else +- CC="$ac_cv_prog_CC" +-fi +- +-ac_ext=c +-ac_cpp='$CPP $CPPFLAGS' +-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +-ac_compiler_gnu=$ac_cv_c_compiler_gnu +-if test -n "$ac_tool_prefix"; then +- # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +-set dummy ${ac_tool_prefix}gcc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_CC+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$CC"; then +- ac_cv_prog_CC="$CC" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_CC="${ac_tool_prefix}gcc" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-CC=$ac_cv_prog_CC +-if test -n "$CC"; then +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-fi +-if test -z "$ac_cv_prog_CC"; then +- ac_ct_CC=$CC +- # Extract the first word of "gcc", so it can be a program name with args. +-set dummy gcc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$ac_ct_CC"; then +- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_ac_ct_CC="gcc" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-ac_ct_CC=$ac_cv_prog_ac_ct_CC +-if test -n "$ac_ct_CC"; then +- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +- CC=$ac_ct_CC +-else +- CC="$ac_cv_prog_CC" +-fi +- +-if test -z "$CC"; then +- if test -n "$ac_tool_prefix"; then +- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +-set dummy ${ac_tool_prefix}cc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_CC+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$CC"; then +- ac_cv_prog_CC="$CC" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_CC="${ac_tool_prefix}cc" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-CC=$ac_cv_prog_CC +-if test -n "$CC"; then +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-fi +-if test -z "$ac_cv_prog_CC"; then +- ac_ct_CC=$CC +- # Extract the first word of "cc", so it can be a program name with args. +-set dummy cc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$ac_ct_CC"; then +- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_ac_ct_CC="cc" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-ac_ct_CC=$ac_cv_prog_ac_ct_CC +-if test -n "$ac_ct_CC"; then +- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +- CC=$ac_ct_CC +-else +- CC="$ac_cv_prog_CC" +-fi +- +-fi +-if test -z "$CC"; then +- # Extract the first word of "cc", so it can be a program name with args. +-set dummy cc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_CC+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$CC"; then +- ac_cv_prog_CC="$CC" # Let the user override the test. +-else +- ac_prog_rejected=no +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then +- ac_prog_rejected=yes +- continue +- fi +- ac_cv_prog_CC="cc" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-if test $ac_prog_rejected = yes; then +- # We found a bogon in the path, so make sure we never use it. +- set dummy $ac_cv_prog_CC +- shift +- if test $# != 0; then +- # We chose a different compiler from the bogus one. +- # However, it has the same basename, so the bogon will be chosen +- # first if we set CC to just the basename; use the full file name. +- shift +- ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" +- fi +-fi +-fi +-fi +-CC=$ac_cv_prog_CC +-if test -n "$CC"; then +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-fi +-if test -z "$CC"; then +- if test -n "$ac_tool_prefix"; then +- for ac_prog in cl +- do +- # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +-set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_CC+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$CC"; then +- ac_cv_prog_CC="$CC" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_CC="$ac_tool_prefix$ac_prog" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-CC=$ac_cv_prog_CC +-if test -n "$CC"; then +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +- test -n "$CC" && break +- done +-fi +-if test -z "$CC"; then +- ac_ct_CC=$CC +- for ac_prog in cl +-do +- # Extract the first word of "$ac_prog", so it can be a program name with args. +-set dummy $ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$ac_ct_CC"; then +- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_ac_ct_CC="$ac_prog" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-ac_ct_CC=$ac_cv_prog_ac_ct_CC +-if test -n "$ac_ct_CC"; then +- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +- test -n "$ac_ct_CC" && break +-done +- +- CC=$ac_ct_CC +-fi +- +-fi +- +- +-test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in $PATH +-See `config.log' for more details." >&5 +-echo "$as_me: error: no acceptable C compiler found in $PATH +-See `config.log' for more details." >&2;} +- { (exit 1); exit 1; }; } +- +-# Provide some information about the compiler. +-echo "$as_me:$LINENO:" \ +- "checking for C compiler version" >&5 +-ac_compiler=`set X $ac_compile; echo $2` +-{ (eval echo "$as_me:$LINENO: "$ac_compiler --version </dev/null >&5"") >&5 +- (eval $ac_compiler --version </dev/null >&5) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); } +-{ (eval echo "$as_me:$LINENO: "$ac_compiler -v </dev/null >&5"") >&5 +- (eval $ac_compiler -v </dev/null >&5) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); } +-{ (eval echo "$as_me:$LINENO: "$ac_compiler -V </dev/null >&5"") >&5 +- (eval $ac_compiler -V </dev/null >&5) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); } +- +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-int +-main () +-{ +- +- ; +- return 0; +-} +-_ACEOF +-ac_clean_files_save=$ac_clean_files +-ac_clean_files="$ac_clean_files a.out a.exe b.out" +-# Try to create an executable without -o first, disregard a.out. +-# It will help us diagnose broken compilers, and finding out an intuition +-# of exeext. +-echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +-echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 +-ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +-if { (eval echo "$as_me:$LINENO: "$ac_link_default"") >&5 +- (eval $ac_link_default) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; then +- # Find the output, starting from the most likely. This scheme is +-# not robust to junk in `.', hence go to wildcards (a.*) only as a last +-# resort. +- +-# Be careful to initialize this variable, since it used to be cached. +-# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +-ac_cv_exeext= +-# b.out is created by i960 compilers. +-for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out +-do +- test -f "$ac_file" || continue +- case $ac_file in +- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) +- ;; +- conftest.$ac_ext ) +- # This is the source file. +- ;; +- [ab].out ) +- # We found the default executable, but exeext='' is most +- # certainly right. +- break;; +- *.* ) +- ac_cv_exeext=`expr "$ac_file" : '[^.]*(..*)'` +- # FIXME: I believe we export ac_cv_exeext for Libtool, +- # but it would be cool to find out if it's true. Does anybody +- # maintain Libtool? --akim. +- export ac_cv_exeext +- break;; +- * ) +- break;; +- esac +-done +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-{ { echo "$as_me:$LINENO: error: C compiler cannot create executables +-See `config.log' for more details." >&5 +-echo "$as_me: error: C compiler cannot create executables +-See `config.log' for more details." >&2;} +- { (exit 77); exit 77; }; } +-fi +- +-ac_exeext=$ac_cv_exeext +-echo "$as_me:$LINENO: result: $ac_file" >&5 +-echo "${ECHO_T}$ac_file" >&6 +- +-# Check the compiler produces executables we can run. If not, either +-# the compiler is broken, or we cross compile. +-echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +-echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 +-# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +-# If not cross compiling, check that we can run a simple program. +-if test "$cross_compiling" != yes; then +- if { ac_try='./$ac_file' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- cross_compiling=no +- else +- if test "$cross_compiling" = maybe; then +- cross_compiling=yes +- else +- { { echo "$as_me:$LINENO: error: cannot run C compiled programs. +-If you meant to cross compile, use `--host'. +-See `config.log' for more details." >&5 +-echo "$as_me: error: cannot run C compiled programs. +-If you meant to cross compile, use `--host'. +-See `config.log' for more details." >&2;} +- { (exit 1); exit 1; }; } +- fi +- fi +-fi +-echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 +- +-rm -f a.out a.exe conftest$ac_cv_exeext b.out +-ac_clean_files=$ac_clean_files_save +-# Check the compiler produces executables we can run. If not, either +-# the compiler is broken, or we cross compile. +-echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +-echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +-echo "$as_me:$LINENO: result: $cross_compiling" >&5 +-echo "${ECHO_T}$cross_compiling" >&6 +- +-echo "$as_me:$LINENO: checking for suffix of executables" >&5 +-echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +-if { (eval echo "$as_me:$LINENO: "$ac_link"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; then +- # If both `conftest.exe' and `conftest' are `present' (well, observable) +-# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +-# work properly (i.e., refer to `conftest.exe'), while it won't with +-# `rm'. +-for ac_file in conftest.exe conftest conftest.*; do +- test -f "$ac_file" || continue +- case $ac_file in +- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; +- *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*(..*)'` +- export ac_cv_exeext +- break;; +- * ) break;; +- esac +-done +-else +- { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +-See `config.log' for more details." >&5 +-echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +-See `config.log' for more details." >&2;} +- { (exit 1); exit 1; }; } +-fi +- +-rm -f conftest$ac_cv_exeext +-echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +-echo "${ECHO_T}$ac_cv_exeext" >&6 +- +-rm -f conftest.$ac_ext +-EXEEXT=$ac_cv_exeext +-ac_exeext=$EXEEXT +-echo "$as_me:$LINENO: checking for suffix of object files" >&5 +-echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +-if test "${ac_cv_objext+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-int +-main () +-{ +- +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.o conftest.obj +-if { (eval echo "$as_me:$LINENO: "$ac_compile"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; then +- for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do +- case $ac_file in +- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; +- *) ac_cv_objext=`expr "$ac_file" : '.*.(.*)'` +- break;; +- esac +-done +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +-See `config.log' for more details." >&5 +-echo "$as_me: error: cannot compute suffix of object files: cannot compile +-See `config.log' for more details." >&2;} +- { (exit 1); exit 1; }; } +-fi +- +-rm -f conftest.$ac_cv_objext conftest.$ac_ext +-fi +-echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +-echo "${ECHO_T}$ac_cv_objext" >&6 +-OBJEXT=$ac_cv_objext +-ac_objext=$OBJEXT +-echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +-if test "${ac_cv_c_compiler_gnu+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-int +-main () +-{ +-#ifndef __GNUC__ +- choke me +-#endif +- +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: "$ac_compile"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_compiler_gnu=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-ac_compiler_gnu=no +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-ac_cv_c_compiler_gnu=$ac_compiler_gnu +- +-fi +-echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +-GCC=`test $ac_compiler_gnu = yes && echo yes` +-ac_test_CFLAGS=${CFLAGS+set} +-ac_save_CFLAGS=$CFLAGS +-CFLAGS="-g" +-echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +-if test "${ac_cv_prog_cc_g+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-int +-main () +-{ +- +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: "$ac_compile"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_prog_cc_g=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-ac_cv_prog_cc_g=no +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-fi +-echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +-if test "$ac_test_CFLAGS" = set; then +- CFLAGS=$ac_save_CFLAGS +-elif test $ac_cv_prog_cc_g = yes; then +- if test "$GCC" = yes; then +- CFLAGS="-g -O2" +- else +- CFLAGS="-g" +- fi +-else +- if test "$GCC" = yes; then +- CFLAGS="-O2" +- else +- CFLAGS= +- fi +-fi +-echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +-echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +-if test "${ac_cv_prog_cc_stdc+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_cv_prog_cc_stdc=no +-ac_save_CC=$CC +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include <stdarg.h> +-#include <stdio.h> +-#include <sys/types.h> +-#include <sys/stat.h> +-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +-struct buf { int x; }; +-FILE * (*rcsopen) (struct buf *, struct stat *, int); +-static char *e (p, i) +- char **p; +- int i; +-{ +- return p[i]; +-} +-static char *f (char * (*g) (char **, int), char **p, ...) +-{ +- char *s; +- va_list v; +- va_start (v,p); +- s = g (p, va_arg (v,int)); +- va_end (v); +- return s; +-} +- +-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has +- function prototypes and stuff, but not '\xHH' hex character constants. +- These don't provoke an error unfortunately, instead are silently treated +- as 'x'. The following induces an error, until -std1 is added to get +- proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an +- array size at least. It's necessary to write '\x00'==0 to get something +- that's true only with -std1. */ +-int osf4_cc_array ['\x00' == 0 ? 1 : -1]; +- +-int test (int i, double x); +-struct s1 {int (*f) (int a);}; +-struct s2 {int (*f) (double a);}; +-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +-int argc; +-char **argv; +-int +-main () +-{ +-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; +- ; +- return 0; +-} +-_ACEOF +-# Don't try gcc -ansi; that turns off useful extensions and +-# breaks some systems' header files. +-# AIX -qlanglvl=ansi +-# Ultrix and OSF/1 -std1 +-# HP-UX 10.20 and later -Ae +-# HP-UX older versions -Aa -D_HPUX_SOURCE +-# SVR4 -Xc -D__EXTENSIONS__ +-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +-do +- CC="$ac_save_CC $ac_arg" +- rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: "$ac_compile"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_prog_cc_stdc=$ac_arg +-break +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-fi +-rm -f conftest.err conftest.$ac_objext +-done +-rm -f conftest.$ac_ext conftest.$ac_objext +-CC=$ac_save_CC +- +-fi +- +-case "x$ac_cv_prog_cc_stdc" in +- x|xno) +- echo "$as_me:$LINENO: result: none needed" >&5 +-echo "${ECHO_T}none needed" >&6 ;; +- *) +- echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +-echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 +- CC="$CC $ac_cv_prog_cc_stdc" ;; +-esac +- +-# Some people use a C++ compiler to compile C. Since we use `exit', +-# in C++ we need to declare it. In case someone uses the same compiler +-# for both compiling C and C++ we need to have the C++ compiler decide +-# the declaration of exit, since it's the most demanding environment. +-cat >conftest.$ac_ext <<_ACEOF +-#ifndef __cplusplus +- choke me +-#endif +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: "$ac_compile"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- for ac_declaration in \ +- '' \ +- 'extern "C" void std::exit (int) throw (); using std::exit;' \ +- 'extern "C" void std::exit (int); using std::exit;' \ +- 'extern "C" void exit (int) throw ();' \ +- 'extern "C" void exit (int);' \ +- 'void exit (int);' +-do +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_declaration +-#include <stdlib.h> +-int +-main () +-{ +-exit (42); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: "$ac_compile"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- : +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-continue +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_declaration +-int +-main () +-{ +-exit (42); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: "$ac_compile"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- break +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-done +-rm -f conftest* +-if test -n "$ac_declaration"; then +- echo '#ifdef __cplusplus' >>confdefs.h +- echo $ac_declaration >>confdefs.h +- echo '#endif' >>confdefs.h +-fi +- +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-ac_ext=c +-ac_cpp='$CPP $CPPFLAGS' +-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +-ac_compiler_gnu=$ac_cv_c_compiler_gnu +-DEPDIR="${am__leading_dot}deps" +- +- ac_config_commands="$ac_config_commands depfiles" +- +- +-am_make=${MAKE-make} +-cat > confinc << 'END' +-am__doit: +- @echo done +-.PHONY: am__doit +-END +-# If we don't find an include directive, just comment out the code. +-echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 +-echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 +-am__include="#" +-am__quote= +-_am_result=none +-# First try GNU make style include. +-echo "include confinc" > confmf +-# We grep out `Entering directory' and `Leaving directory' +-# messages which can occur if `w' ends up in MAKEFLAGS. +-# In particular we don't look at `^make:' because GNU make might +-# be invoked under some other name (usually "gmake"), in which +-# case it prints its new name instead of `make'. +-if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then +- am__include=include +- am__quote= +- _am_result=GNU +-fi +-# Now try BSD make style include. +-if test "$am__include" = "#"; then +- echo '.include "confinc"' > confmf +- if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then +- am__include=.include +- am__quote=""" +- _am_result=BSD +- fi +-fi +- +- +-echo "$as_me:$LINENO: result: $_am_result" >&5 +-echo "${ECHO_T}$_am_result" >&6 +-rm -f confinc confmf +- +-# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. +-if test "${enable_dependency_tracking+set}" = set; then +- enableval="$enable_dependency_tracking" +- +-fi; +-if test "x$enable_dependency_tracking" != xno; then +- am_depcomp="$ac_aux_dir/depcomp" +- AMDEPBACKSLASH='' +-fi +- +- +-if test "x$enable_dependency_tracking" != xno; then +- AMDEP_TRUE= +- AMDEP_FALSE='#' +-else +- AMDEP_TRUE='#' +- AMDEP_FALSE= +-fi +- +- +- +- +-depcc="$CC" am_compiler_list= +- +-echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +-if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then +- # We make a subdir and do the tests there. Otherwise we can end up +- # making bogus files that we don't know about and never remove. For +- # instance it was reported that on HP-UX the gcc test will end up +- # making a dummy file named `D' -- because `-MD' means `put the output +- # in D'. +- mkdir conftest.dir +- # Copy depcomp to subdir because otherwise we won't find it if we're +- # using a relative directory. +- cp "$am_depcomp" conftest.dir +- cd conftest.dir +- # We will build objects and dependencies in a subdirectory because +- # it helps to detect inapplicable dependency modes. For instance +- # both Tru64's cc and ICC support -MD to output dependencies as a +- # side effect of compilation, but ICC will put the dependencies in +- # the current directory while Tru64 will put them in the object +- # directory. +- mkdir sub +- +- am_cv_CC_dependencies_compiler_type=none +- if test "$am_compiler_list" = ""; then +- am_compiler_list=`sed -n 's/^#*([a-zA-Z0-9]*))$/\1/p' < ./depcomp` +- fi +- for depmode in $am_compiler_list; do +- # Setup a source with many dependencies, because some compilers +- # like to wrap large dependency lists on column 80 (with ), and +- # we should not choose a depcomp mode which is confused by this. +- # +- # We need to recreate these files for each test, as the compiler may +- # overwrite some of them when testing with obscure command lines. +- # This happens at least with the AIX C compiler. +- : > sub/conftest.c +- for i in 1 2 3 4 5 6; do +- echo '#include "conftst'$i'.h"' >> sub/conftest.c +- # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with +- # Solaris 8's {/usr,}/bin/sh. +- touch sub/conftst$i.h +- done +- echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf +- +- case $depmode in +- nosideeffect) +- # after this tag, mechanisms are not by side-effect, so they'll +- # only be used when explicitly requested +- if test "x$enable_dependency_tracking" = xyes; then +- continue +- else +- break +- fi +- ;; +- none) break ;; +- esac +- # We check with `-c' and `-o' for the sake of the "dashmstdout" +- # mode. It turns out that the SunPro C++ compiler does not properly +- # handle `-M -o', and we need to detect this. +- if depmode=$depmode \ +- source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ +- depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ +- $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ +- >/dev/null 2>conftest.err && +- grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && +- grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && +- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then +- # icc doesn't choke on unknown options, it will just issue warnings +- # or remarks (even with -Werror). So we grep stderr for any message +- # that says an option was ignored or not supported. +- # When given -MP, icc 7.0 and 7.1 complain thusly: +- # icc: Command line warning: ignoring option '-M'; no argument required +- # The diagnosis changed in icc 8.0: +- # icc: Command line remark: option '-MP' not supported +- if (grep 'ignoring option' conftest.err || +- grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else +- am_cv_CC_dependencies_compiler_type=$depmode +- break +- fi +- fi +- done +- +- cd .. +- rm -rf conftest.dir +-else +- am_cv_CC_dependencies_compiler_type=none +-fi +- +-fi +-echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +-echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 +-CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type +- +- +- +-if +- test "x$enable_dependency_tracking" != xno \ +- && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then +- am__fastdepCC_TRUE= +- am__fastdepCC_FALSE='#' +-else +- am__fastdepCC_TRUE='#' +- am__fastdepCC_FALSE= +-fi +- +- +-# We need this for older versions of Autoconf. +- +-depcc="$CC" am_compiler_list= +- +-echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +-if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then +- # We make a subdir and do the tests there. Otherwise we can end up +- # making bogus files that we don't know about and never remove. For +- # instance it was reported that on HP-UX the gcc test will end up +- # making a dummy file named `D' -- because `-MD' means `put the output +- # in D'. +- mkdir conftest.dir +- # Copy depcomp to subdir because otherwise we won't find it if we're +- # using a relative directory. +- cp "$am_depcomp" conftest.dir +- cd conftest.dir +- # We will build objects and dependencies in a subdirectory because +- # it helps to detect inapplicable dependency modes. For instance +- # both Tru64's cc and ICC support -MD to output dependencies as a +- # side effect of compilation, but ICC will put the dependencies in +- # the current directory while Tru64 will put them in the object +- # directory. +- mkdir sub +- +- am_cv_CC_dependencies_compiler_type=none +- if test "$am_compiler_list" = ""; then +- am_compiler_list=`sed -n 's/^#*([a-zA-Z0-9]*))$/\1/p' < ./depcomp` +- fi +- for depmode in $am_compiler_list; do +- # Setup a source with many dependencies, because some compilers +- # like to wrap large dependency lists on column 80 (with ), and +- # we should not choose a depcomp mode which is confused by this. +- # +- # We need to recreate these files for each test, as the compiler may +- # overwrite some of them when testing with obscure command lines. +- # This happens at least with the AIX C compiler. +- : > sub/conftest.c +- for i in 1 2 3 4 5 6; do +- echo '#include "conftst'$i'.h"' >> sub/conftest.c +- # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with +- # Solaris 8's {/usr,}/bin/sh. +- touch sub/conftst$i.h +- done +- echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf +- +- case $depmode in +- nosideeffect) +- # after this tag, mechanisms are not by side-effect, so they'll +- # only be used when explicitly requested +- if test "x$enable_dependency_tracking" = xyes; then +- continue +- else +- break +- fi +- ;; +- none) break ;; +- esac +- # We check with `-c' and `-o' for the sake of the "dashmstdout" +- # mode. It turns out that the SunPro C++ compiler does not properly +- # handle `-M -o', and we need to detect this. +- if depmode=$depmode \ +- source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ +- depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ +- $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ +- >/dev/null 2>conftest.err && +- grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && +- grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && +- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then +- # icc doesn't choke on unknown options, it will just issue warnings +- # or remarks (even with -Werror). So we grep stderr for any message +- # that says an option was ignored or not supported. +- # When given -MP, icc 7.0 and 7.1 complain thusly: +- # icc: Command line warning: ignoring option '-M'; no argument required +- # The diagnosis changed in icc 8.0: +- # icc: Command line remark: option '-MP' not supported +- if (grep 'ignoring option' conftest.err || +- grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else +- am_cv_CC_dependencies_compiler_type=$depmode +- break +- fi +- fi +- done +- +- cd .. +- rm -rf conftest.dir +-else +- am_cv_CC_dependencies_compiler_type=none +-fi +- +-fi +-echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +-echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 +-CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type +- +- +- +-if +- test "x$enable_dependency_tracking" != xno \ +- && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then +- am__fastdepCC_TRUE= +- am__fastdepCC_FALSE='#' +-else +- am__fastdepCC_TRUE='#' +- am__fastdepCC_FALSE= +-fi +- +- +- +-CCAS="$CC" +- +- +- +-# Check whether --with-binutils or --without-binutils was given. +-if test "${with_binutils+set}" = set; then +- withval="$with_binutils" +- +-fi; +- +-if test "x$with_binutils" != x; then +- # Extract the first word of "ranlib", so it can be a program name with args. +-set dummy ranlib; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_path_RANLIB+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- case $RANLIB in +- [\/]* | ?:[\/]*) +- ac_cv_path_RANLIB="$RANLIB" # Let the user override the test with a path. +- ;; +- *) +- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-as_dummy=""$with_binutils:$PATH"" +-for as_dir in $as_dummy +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_path_RANLIB="$as_dir/$ac_word$ac_exec_ext" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +- test -z "$ac_cv_path_RANLIB" && ac_cv_path_RANLIB=":" +- ;; +-esac +-fi +-RANLIB=$ac_cv_path_RANLIB +- +-if test -n "$RANLIB"; then +- echo "$as_me:$LINENO: result: $RANLIB" >&5 +-echo "${ECHO_T}$RANLIB" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-else +- if test -n "$ac_tool_prefix"; then +- # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +-set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_RANLIB+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$RANLIB"; then +- ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-RANLIB=$ac_cv_prog_RANLIB +-if test -n "$RANLIB"; then +- echo "$as_me:$LINENO: result: $RANLIB" >&5 +-echo "${ECHO_T}$RANLIB" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-fi +-if test -z "$ac_cv_prog_RANLIB"; then +- ac_ct_RANLIB=$RANLIB +- # Extract the first word of "ranlib", so it can be a program name with args. +-set dummy ranlib; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$ac_ct_RANLIB"; then +- ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_ac_ct_RANLIB="ranlib" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" +-fi +-fi +-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +-if test -n "$ac_ct_RANLIB"; then +- echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +-echo "${ECHO_T}$ac_ct_RANLIB" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +- RANLIB=$ac_ct_RANLIB +-else +- RANLIB="$ac_cv_prog_RANLIB" +-fi +- +-fi +- +-# optimization flags +-if test "x$ac_cv_c_compiler_gnu" = xyes; then +- if test "x$default_CFLAGS" = xyes; then +- # Autoconf may set CFLAGS to -O2 and/or -g. So eliminate them. +- CFLAGS="`echo $CFLAGS | sed -e 's/-g//g' -e 's/-O[0-9]//g'` -g" +- # If the user specify the directory for binutils, add the option `-B'. +- if test "x$with_binutils" != x; then +- CFLAGS="-B$with_binutils/ $CFLAGS" +- fi +- STAGE1_CFLAGS="-O2" +- GRUB_CFLAGS="-O2" +- +-echo "$as_me:$LINENO: checking whether optimization for size works" >&5 +-echo $ECHO_N "checking whether optimization for size works... $ECHO_C" >&6 +-if test "${size_flag+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- +- saved_CFLAGS=$CFLAGS +- CFLAGS="-Os -g" +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-int +-main () +-{ +- +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: "$ac_compile"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- size_flag=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-size_flag=no +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +- CFLAGS=$saved_CFLAGS +- +-fi +-echo "$as_me:$LINENO: result: $size_flag" >&5 +-echo "${ECHO_T}$size_flag" >&6 +- if test "x$size_flag" = xyes; then +- STAGE2_CFLAGS="-Os" +- else +- STAGE2_CFLAGS="-O2 -fno-strength-reduce -fno-unroll-loops" +- fi +- # OpenBSD has a GCC extension for protecting applications from +- # stack smashing attacks, but GRUB doesn't want this feature. +- echo "$as_me:$LINENO: checking whether gcc has -fno-stack-protector" >&5 +-echo $ECHO_N "checking whether gcc has -fno-stack-protector... $ECHO_C" >&6 +-if test "${no_stack_protector_flag+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- +- saved_CFLAGS=$CFLAGS +- CFLAGS="-fno-stack-protector" +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-int +-main () +-{ +- +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: "$ac_compile"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- no_stack_protector_flag=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-no_stack_protector_flag=no +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +- CFLAGS=$saved_CFLAGS +- +-fi +-echo "$as_me:$LINENO: result: $no_stack_protector_flag" >&5 +-echo "${ECHO_T}$no_stack_protector_flag" >&6 +- if test "x$no_stack_protector_flag" = xyes; then +- STAGE2_CFLAGS="$STAGE2_CFLAGS -fno-stack-protector" +- fi +- fi +-fi +- +- +- +- +- +-# Enforce coding standards. +-CPPFLAGS="$CPPFLAGS -Wall -Wmissing-prototypes -Wunused -Wshadow" +-CPPFLAGS="$CPPFLAGS -Wpointer-arith" +- +-echo "$as_me:$LINENO: checking whether -Wundef works" >&5 +-echo $ECHO_N "checking whether -Wundef works... $ECHO_C" >&6 +-if test "${undef_flag+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- +- saved_CPPFLAGS="$CPPFLAGS" +- CPPFLAGS="-Wundef" +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-int +-main () +-{ +- +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: "$ac_compile"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- undef_flag=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-undef_flag=no +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +- CPPFLAGS="$saved_CPPFLAGS" +- +-fi +-echo "$as_me:$LINENO: result: $undef_flag" >&5 +-echo "${ECHO_T}$undef_flag" >&6 +- +-# The options `-falign-*' are supported by gcc 3.0 or later. +-# Probably it is sufficient to only check for -falign-loops. +-echo "$as_me:$LINENO: checking whether -falign-loops works" >&5 +-echo $ECHO_N "checking whether -falign-loops works... $ECHO_C" >&6 +-if test "${falign_loop_flag+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- +- saved_CPPFLAGS="$CPPFLAGS" +- CPPFLAGS="-falign-loops=1" +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-int +-main () +-{ +- +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: "$ac_compile"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- falign_loop_flag=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-falign_loop_flag=no +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +- CPPFLAGS="$saved_CPPFLAGS" +- +-fi +-echo "$as_me:$LINENO: result: $falign_loop_flag" >&5 +-echo "${ECHO_T}$falign_loop_flag" >&6 +- +-# Force no alignment to save space. +-if test "x$falign_loop_flag" = xyes; then +- CPPFLAGS="$CPPFLAGS -falign-jumps=1 -falign-loops=1 -falign-functions=1" +-else +- CPPFLAGS="$CPPFLAGS -malign-jumps=1 -malign-loops=1 -malign-functions=1" +-fi +- +-if test "x$undef_flag" = xyes; then +- CPPFLAGS="$CPPFLAGS -Wundef" +-fi +- +-if test "x$with_binutils" != x; then +- # Extract the first word of "objcopy", so it can be a program name with args. +-set dummy objcopy; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_path_OBJCOPY+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- case $OBJCOPY in +- [\/]* | ?:[\/]*) +- ac_cv_path_OBJCOPY="$OBJCOPY" # Let the user override the test with a path. +- ;; +- *) +- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-as_dummy=""$with_binutils:$PATH"" +-for as_dir in $as_dummy +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_path_OBJCOPY="$as_dir/$ac_word$ac_exec_ext" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +- ;; +-esac +-fi +-OBJCOPY=$ac_cv_path_OBJCOPY +- +-if test -n "$OBJCOPY"; then +- echo "$as_me:$LINENO: result: $OBJCOPY" >&5 +-echo "${ECHO_T}$OBJCOPY" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-else +- if test -n "$ac_tool_prefix"; then +- # Extract the first word of "${ac_tool_prefix}objcopy", so it can be a program name with args. +-set dummy ${ac_tool_prefix}objcopy; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_OBJCOPY+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$OBJCOPY"; then +- ac_cv_prog_OBJCOPY="$OBJCOPY" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_OBJCOPY="${ac_tool_prefix}objcopy" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-OBJCOPY=$ac_cv_prog_OBJCOPY +-if test -n "$OBJCOPY"; then +- echo "$as_me:$LINENO: result: $OBJCOPY" >&5 +-echo "${ECHO_T}$OBJCOPY" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-fi +-if test -z "$ac_cv_prog_OBJCOPY"; then +- ac_ct_OBJCOPY=$OBJCOPY +- # Extract the first word of "objcopy", so it can be a program name with args. +-set dummy objcopy; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_OBJCOPY+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$ac_ct_OBJCOPY"; then +- ac_cv_prog_ac_ct_OBJCOPY="$ac_ct_OBJCOPY" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_ac_ct_OBJCOPY="objcopy" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-ac_ct_OBJCOPY=$ac_cv_prog_ac_ct_OBJCOPY +-if test -n "$ac_ct_OBJCOPY"; then +- echo "$as_me:$LINENO: result: $ac_ct_OBJCOPY" >&5 +-echo "${ECHO_T}$ac_ct_OBJCOPY" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +- OBJCOPY=$ac_ct_OBJCOPY +-else +- OBJCOPY="$ac_cv_prog_OBJCOPY" +-fi +- +-fi +- +-# Defined in acinclude.m4. +- +-echo "$as_me:$LINENO: checking if C symbols get an underscore after compilation" >&5 +-echo $ECHO_N "checking if C symbols get an underscore after compilation... $ECHO_C" >&6 +-if test "${grub_cv_asm_uscore+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat > conftest.c <<\EOF +-int +-func (int *list) +-{ +- *list = 0; +- return *list; +-} +-EOF +- +-if { ac_try='${CC-cc} ${CFLAGS} -S conftest.c' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; } && test -s conftest.s; then +- true +-else +- { { echo "$as_me:$LINENO: error: ${CC-cc} failed to produce assembly code" >&5 +-echo "$as_me: error: ${CC-cc} failed to produce assembly code" >&2;} +- { (exit 1); exit 1; }; } +-fi +- +-if grep _func conftest.s >/dev/null 2>&1; then +- grub_cv_asm_uscore=yes +-else +- grub_cv_asm_uscore=no +-fi +- +-rm -f conftest* +-fi +- +- +-if test "x$grub_cv_asm_uscore" = xyes; then +- +-cat >>confdefs.h <<_ACEOF +-#define HAVE_ASM_USCORE $grub_cv_asm_uscore +-_ACEOF +- +-fi +- +-echo "$as_me:$LINENO: result: $grub_cv_asm_uscore" >&5 +-echo "${ECHO_T}$grub_cv_asm_uscore" >&6 +- +-echo "$as_me:$LINENO: checking whether ${OBJCOPY} works for absolute addresses" >&5 +-echo $ECHO_N "checking whether ${OBJCOPY} works for absolute addresses... $ECHO_C" >&6 +-if test "${grub_cv_prog_objcopy_absolute+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat > conftest.c <<\EOF +-void +-cmain (void) +-{ +- *((int *) 0x1000) = 2; +-} +-EOF +- +-if { (eval echo "$as_me:$LINENO: "$ac_compile"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); } && test -s conftest.o; then : +-else +- { { echo "$as_me:$LINENO: error: ${CC-cc} cannot compile C source code" >&5 +-echo "$as_me: error: ${CC-cc} cannot compile C source code" >&2;} +- { (exit 1); exit 1; }; } +-fi +-grub_cv_prog_objcopy_absolute=yes +-for link_addr in 2000 8000 7C00; do +- if { ac_try='${CC-cc} ${CFLAGS} -nostdlib -Wl,-N -Wl,-Ttext -Wl,$link_addr conftest.o -o conftest.exec' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; }; then : +- else +- { { echo "$as_me:$LINENO: error: ${CC-cc} cannot link at address $link_addr" >&5 +-echo "$as_me: error: ${CC-cc} cannot link at address $link_addr" >&2;} +- { (exit 1); exit 1; }; } +- fi +- if { ac_try='${OBJCOPY-objcopy} -O binary conftest.exec conftest' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; }; then : +- else +- { { echo "$as_me:$LINENO: error: ${OBJCOPY-objcopy} cannot create binary files" >&5 +-echo "$as_me: error: ${OBJCOPY-objcopy} cannot create binary files" >&2;} +- { (exit 1); exit 1; }; } +- fi +- if test ! -f conftest.old || { ac_try='cmp -s conftest.old conftest' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- mv -f conftest conftest.old +- else +- grub_cv_prog_objcopy_absolute=no +- break +- fi +-done +-rm -f conftest* +-fi +- +-echo "$as_me:$LINENO: result: $grub_cv_prog_objcopy_absolute" >&5 +-echo "${ECHO_T}$grub_cv_prog_objcopy_absolute" >&6 +-if test "x$grub_cv_prog_objcopy_absolute" != xyes; then +- { { echo "$as_me:$LINENO: error: GRUB requires a working absolute objcopy; upgrade your binutils" >&5 +-echo "$as_me: error: GRUB requires a working absolute objcopy; upgrade your binutils" >&2;} +- { (exit 1); exit 1; }; } +-fi +- +- +-echo "$as_me:$LINENO: checking whether addr32 must be in the same line as the instruction" >&5 +-echo $ECHO_N "checking whether addr32 must be in the same line as the instruction... $ECHO_C" >&6 +-if test "${grub_cv_asm_prefix_requirement+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat > conftest.s <<\EOF +- .code16 +-l1: addr32 movb %al, l1 +-EOF +- +-if { ac_try='${CC-cc} ${CFLAGS} -c conftest.s' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; } && test -s conftest.o; then +- grub_cv_asm_prefix_requirement=yes +-else +- grub_cv_asm_prefix_requirement=no +-fi +- +-rm -f conftest* +-fi +- +- +-if test "x$grub_cv_asm_prefix_requirement" = xyes; then +- grub_tmp_addr32="addr32" +- grub_tmp_data32="data32" +-else +- grub_tmp_addr32="addr32;" +- grub_tmp_data32="data32;" +-fi +- +- +-cat >>confdefs.h <<_ACEOF +-#define ADDR32 $grub_tmp_addr32 +-_ACEOF +- +- +-cat >>confdefs.h <<_ACEOF +-#define DATA32 $grub_tmp_data32 +-_ACEOF +- +- +-echo "$as_me:$LINENO: result: $grub_cv_asm_prefix_requirement" >&5 +-echo "${ECHO_T}$grub_cv_asm_prefix_requirement" >&6 +- +- +- +-echo "$as_me:$LINENO: checking for .code16 addr32 assembler support" >&5 +-echo $ECHO_N "checking for .code16 addr32 assembler support... $ECHO_C" >&6 +-if test "${grub_cv_asm_addr32+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat > conftest.s.in <<\EOF +- .code16 +-l1: @ADDR32@ movb %al, l1 +-EOF +- +-if test "x$grub_cv_asm_prefix_requirement" = xyes; then +- sed -e s/@ADDR32@/addr32/ < conftest.s.in > conftest.s +-else +- sed -e s/@ADDR32@/addr32;/ < conftest.s.in > conftest.s +-fi +- +-if { ac_try='${CC-cc} ${CFLAGS} -c conftest.s' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; } && test -s conftest.o; then +- grub_cv_asm_addr32=yes +-else +- grub_cv_asm_addr32=no +-fi +- +-rm -f conftest* +-fi +- +- +-echo "$as_me:$LINENO: result: $grub_cv_asm_addr32" >&5 +-echo "${ECHO_T}$grub_cv_asm_addr32" >&6 +-if test "x$grub_cv_asm_addr32" != xyes; then +- { { echo "$as_me:$LINENO: error: GRUB requires GAS .code16 addr32 support; upgrade your binutils" >&5 +-echo "$as_me: error: GRUB requires GAS .code16 addr32 support; upgrade your binutils" >&2;} +- { (exit 1); exit 1; }; } +-fi +- +- +-echo "$as_me:$LINENO: checking whether an absolute indirect call/jump must not be prefixed with an asterisk" >&5 +-echo $ECHO_N "checking whether an absolute indirect call/jump must not be prefixed with an asterisk... $ECHO_C" >&6 +-if test "${grub_cv_asm_absolute_without_asterisk+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat > conftest.s <<\EOF +- lcall *(offset) +-offset: +- .long 0 +- .word 0 +-EOF +- +-if { ac_try='${CC-cc} ${CFLAGS} -c conftest.s' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; } && test -s conftest.o; then +- grub_cv_asm_absolute_without_asterisk=no +-else +- grub_cv_asm_absolute_without_asterisk=yes +-fi +- +-rm -f conftest* +-fi +- +- +-if test "x$grub_cv_asm_absolute_without_asterisk" = xyes; then +- +-cat >>confdefs.h <<_ACEOF +-#define ABSOLUTE_WITHOUT_ASTERISK 1 +-_ACEOF +- +-fi +- +-echo "$as_me:$LINENO: result: $grub_cv_asm_absolute_without_asterisk" >&5 +-echo "${ECHO_T}$grub_cv_asm_absolute_without_asterisk" >&6 +- +- +-echo "$as_me:$LINENO: checking if start is defined by the compiler" >&5 +-echo $ECHO_N "checking if start is defined by the compiler... $ECHO_C" >&6 +-if test "${grub_cv_check_start_symbol+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-int +-main () +-{ +-asm ("incl start") +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: "$ac_link"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- grub_cv_check_start_symbol=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-grub_cv_check_start_symbol=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-fi +- +- +-if test "x$grub_cv_check_start_symbol" = xyes; then +- +-cat >>confdefs.h <<_ACEOF +-#define HAVE_START_SYMBOL 1 +-_ACEOF +- +-fi +- +-echo "$as_me:$LINENO: result: $grub_cv_check_start_symbol" >&5 +-echo "${ECHO_T}$grub_cv_check_start_symbol" >&6 +- +- +-echo "$as_me:$LINENO: checking if _start is defined by the compiler" >&5 +-echo $ECHO_N "checking if _start is defined by the compiler... $ECHO_C" >&6 +-if test "${grub_cv_check_uscore_start_symbol+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-int +-main () +-{ +-asm ("incl _start") +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: "$ac_link"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- grub_cv_check_uscore_start_symbol=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-grub_cv_check_uscore_start_symbol=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-fi +- +- +-if test "x$grub_cv_check_uscore_start_symbol" = xyes; then +- +-cat >>confdefs.h <<_ACEOF +-#define HAVE_USCORE_START_SYMBOL 1 +-_ACEOF +- +-fi +- +-echo "$as_me:$LINENO: result: $grub_cv_check_uscore_start_symbol" >&5 +-echo "${ECHO_T}$grub_cv_check_uscore_start_symbol" >&6 +- +-if test "x$grub_cv_check_start_symbol" != "xyes" \ +- -a "x$grub_cv_check_uscore_start_symbol" != "xyes"; then +- { { echo "$as_me:$LINENO: error: Neither start nor _start is defined" >&5 +-echo "$as_me: error: Neither start nor _start is defined" >&2;} +- { (exit 1); exit 1; }; } +-fi +- +- +-echo "$as_me:$LINENO: checking if __bss_start is defined by the compiler" >&5 +-echo $ECHO_N "checking if __bss_start is defined by the compiler... $ECHO_C" >&6 +-if test "${grub_cv_check_uscore_uscore_bss_start_symbol+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-int +-main () +-{ +-asm ("incl __bss_start") +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: "$ac_link"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- grub_cv_check_uscore_uscore_bss_start_symbol=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-grub_cv_check_uscore_uscore_bss_start_symbol=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-fi +- +- +-if test "x$grub_cv_check_uscore_uscore_bss_start_symbol" = xyes; then +- +-cat >>confdefs.h <<_ACEOF +-#define HAVE_USCORE_USCORE_BSS_START_SYMBOL 1 +-_ACEOF +- +-fi +- +-echo "$as_me:$LINENO: result: $grub_cv_check_uscore_uscore_bss_start_symbol" >&5 +-echo "${ECHO_T}$grub_cv_check_uscore_uscore_bss_start_symbol" >&6 +- +- +-echo "$as_me:$LINENO: checking if _edata is defined by the compiler" >&5 +-echo $ECHO_N "checking if _edata is defined by the compiler... $ECHO_C" >&6 +-if test "${grub_cv_check_uscore_edata_symbol+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-int +-main () +-{ +-asm ("incl _edata") +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: "$ac_link"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- grub_cv_check_uscore_edata_symbol=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-grub_cv_check_uscore_edata_symbol=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-fi +- +- +-if test "x$grub_cv_check_uscore_edata_symbol" = xyes; then +- +-cat >>confdefs.h <<_ACEOF +-#define HAVE_USCORE_EDATA_SYMBOL 1 +-_ACEOF +- +-fi +- +-echo "$as_me:$LINENO: result: $grub_cv_check_uscore_edata_symbol" >&5 +-echo "${ECHO_T}$grub_cv_check_uscore_edata_symbol" >&6 +- +- +-echo "$as_me:$LINENO: checking if edata is defined by the compiler" >&5 +-echo $ECHO_N "checking if edata is defined by the compiler... $ECHO_C" >&6 +-if test "${grub_cv_check_edata_symbol+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-int +-main () +-{ +-asm ("incl edata") +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: "$ac_link"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- grub_cv_check_edata_symbol=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-grub_cv_check_edata_symbol=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-fi +- +- +-if test "x$grub_cv_check_edata_symbol" = xyes; then +- +-cat >>confdefs.h <<_ACEOF +-#define HAVE_EDATA_SYMBOL 1 +-_ACEOF +- +-fi +- +-echo "$as_me:$LINENO: result: $grub_cv_check_edata_symbol" >&5 +-echo "${ECHO_T}$grub_cv_check_edata_symbol" >&6 +- +-if test "x$grub_cv_check_uscore_uscore_bss_start_symbol" != "xyes" \ +- -a "x$grub_cv_check_uscore_edata_symbol" != "xyes" \ +- -a "x$grub_cv_check_edata_symbol" != "xyes"; then +- { { echo "$as_me:$LINENO: error: None of __bss_start, _edata, edata defined" >&5 +-echo "$as_me: error: None of __bss_start, _edata, edata defined" >&2;} +- { (exit 1); exit 1; }; } +-fi +- +- +-echo "$as_me:$LINENO: checking if end is defined by the compiler" >&5 +-echo $ECHO_N "checking if end is defined by the compiler... $ECHO_C" >&6 +-if test "${grub_cv_check_end_symbol+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-int +-main () +-{ +-asm ("incl end") +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: "$ac_link"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- grub_cv_check_end_symbol=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-grub_cv_check_end_symbol=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-fi +- +- +-if test "x$grub_cv_check_end_symbol" = xyes; then +- +-cat >>confdefs.h <<_ACEOF +-#define HAVE_END_SYMBOL 1 +-_ACEOF +- +-fi +- +-echo "$as_me:$LINENO: result: $grub_cv_check_end_symbol" >&5 +-echo "${ECHO_T}$grub_cv_check_end_symbol" >&6 +- +- +-echo "$as_me:$LINENO: checking if _end is defined by the compiler" >&5 +-echo $ECHO_N "checking if _end is defined by the compiler... $ECHO_C" >&6 +-if test "${grub_cv_check_uscore_end_symbol+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-int +-main () +-{ +-asm ("incl _end") +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: "$ac_link"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- grub_cv_check_uscore_end_symbol=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-grub_cv_check_uscore_end_symbol=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-fi +- +- +-if test "x$grub_cv_check_uscore_end_symbol" = xyes; then +- +-cat >>confdefs.h <<_ACEOF +-#define HAVE_USCORE_END_SYMBOL 1 +-_ACEOF +- +-fi +- +-echo "$as_me:$LINENO: result: $grub_cv_check_uscore_end_symbol" >&5 +-echo "${ECHO_T}$grub_cv_check_uscore_end_symbol" >&6 +- +-if test "x$grub_cv_check_end_symbol" != "xyes" \ +- -a "x$grub_cv_check_uscore_end_symbol" != "xyes"; then +- { { echo "$as_me:$LINENO: error: Neither end nor _end is defined" >&5 +-echo "$as_me: error: Neither end nor _end is defined" >&2;} +- { (exit 1); exit 1; }; } +-fi +- +-# Check for curses libraries. +- +-# Check whether --with-curses or --without-curses was given. +-if test "${with_curses+set}" = set; then +- withval="$with_curses" +- +-fi; +- +-# Get the filename or the whole disk and open it. +-# Known to work on NetBSD. +-echo "$as_me:$LINENO: checking for opendisk in -lutil" >&5 +-echo $ECHO_N "checking for opendisk in -lutil... $ECHO_C" >&6 +-if test "${ac_cv_lib_util_opendisk+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lutil $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char opendisk (); +-int +-main () +-{ +-opendisk (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: "$ac_link"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_util_opendisk=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-ac_cv_lib_util_opendisk=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_util_opendisk" >&5 +-echo "${ECHO_T}$ac_cv_lib_util_opendisk" >&6 +-if test $ac_cv_lib_util_opendisk = yes; then +- GRUB_LIBS="$GRUB_LIBS -lutil" +- +-cat >>confdefs.h <<_ACEOF +-#define HAVE_OPENDISK 1 +-_ACEOF +- +-fi +- +- +-# Unless the user specify --without-curses, check for curses. +-if test "x$with_curses" != "xno"; then +- echo "$as_me:$LINENO: checking for wgetch in -lncurses" >&5 +-echo $ECHO_N "checking for wgetch in -lncurses... $ECHO_C" >&6 +-if test "${ac_cv_lib_ncurses_wgetch+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lncurses $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char wgetch (); +-int +-main () +-{ +-wgetch (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: "$ac_link"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_ncurses_wgetch=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-ac_cv_lib_ncurses_wgetch=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_ncurses_wgetch" >&5 +-echo "${ECHO_T}$ac_cv_lib_ncurses_wgetch" >&6 +-if test $ac_cv_lib_ncurses_wgetch = yes; then +- GRUB_LIBS="$GRUB_LIBS -lncurses" +- +-cat >>confdefs.h <<_ACEOF +-#define HAVE_LIBCURSES 1 +-_ACEOF +- +-else +- echo "$as_me:$LINENO: checking for wgetch in -lcurses" >&5 +-echo $ECHO_N "checking for wgetch in -lcurses... $ECHO_C" >&6 +-if test "${ac_cv_lib_curses_wgetch+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lcurses $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char wgetch (); +-int +-main () +-{ +-wgetch (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: "$ac_link"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_curses_wgetch=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-ac_cv_lib_curses_wgetch=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_curses_wgetch" >&5 +-echo "${ECHO_T}$ac_cv_lib_curses_wgetch" >&6 +-if test $ac_cv_lib_curses_wgetch = yes; then +- GRUB_LIBS="$GRUB_LIBS -lcurses" +- +-cat >>confdefs.h <<_ACEOF +-#define HAVE_LIBCURSES 1 +-_ACEOF +- +-fi +- +-fi +- +-fi +- +- +- +-# Check for headers. +-ac_ext=c +-ac_cpp='$CPP $CPPFLAGS' +-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +-ac_compiler_gnu=$ac_cv_c_compiler_gnu +-echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +-echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +-# On Suns, sometimes $CPP names a directory. +-if test -n "$CPP" && test -d "$CPP"; then +- CPP= +-fi +-if test -z "$CPP"; then +- if test "${ac_cv_prog_CPP+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- # Double quotes because CPP needs to be expanded +- for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" +- do +- ac_preproc_ok=false +-for ac_c_preproc_warn_flag in '' yes +-do +- # Use a header file that comes with gcc, so configuring glibc +- # with a fresh cross-compiler works. +- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since +- # <limits.h> exists even on freestanding compilers. +- # On the NeXT, cc -E runs the code through the compiler's parser, +- # not just through cpp. "Syntax error" is here to catch this case. +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#ifdef __STDC__ +-# include <limits.h> +-#else +-# include <assert.h> +-#endif +- Syntax error +-_ACEOF +-if { (eval echo "$as_me:$LINENO: "$ac_cpp conftest.$ac_ext"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then +- : +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- # Broken: fails on valid input. +-continue +-fi +-rm -f conftest.err conftest.$ac_ext +- +- # OK, works on sane cases. Now check whether non-existent headers +- # can be detected and how. +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include <ac_nonexistent.h> +-_ACEOF +-if { (eval echo "$as_me:$LINENO: "$ac_cpp conftest.$ac_ext"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then +- # Broken: success on invalid input. +-continue +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- # Passes both tests. +-ac_preproc_ok=: +-break +-fi +-rm -f conftest.err conftest.$ac_ext +- +-done +-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +-rm -f conftest.err conftest.$ac_ext +-if $ac_preproc_ok; then +- break +-fi +- +- done +- ac_cv_prog_CPP=$CPP +- +-fi +- CPP=$ac_cv_prog_CPP +-else +- ac_cv_prog_CPP=$CPP +-fi +-echo "$as_me:$LINENO: result: $CPP" >&5 +-echo "${ECHO_T}$CPP" >&6 +-ac_preproc_ok=false +-for ac_c_preproc_warn_flag in '' yes +-do +- # Use a header file that comes with gcc, so configuring glibc +- # with a fresh cross-compiler works. +- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since +- # <limits.h> exists even on freestanding compilers. +- # On the NeXT, cc -E runs the code through the compiler's parser, +- # not just through cpp. "Syntax error" is here to catch this case. +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#ifdef __STDC__ +-# include <limits.h> +-#else +-# include <assert.h> +-#endif +- Syntax error +-_ACEOF +-if { (eval echo "$as_me:$LINENO: "$ac_cpp conftest.$ac_ext"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then +- : +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- # Broken: fails on valid input. +-continue +-fi +-rm -f conftest.err conftest.$ac_ext +- +- # OK, works on sane cases. Now check whether non-existent headers +- # can be detected and how. +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include <ac_nonexistent.h> +-_ACEOF +-if { (eval echo "$as_me:$LINENO: "$ac_cpp conftest.$ac_ext"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then +- # Broken: success on invalid input. +-continue +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- # Passes both tests. +-ac_preproc_ok=: +-break +-fi +-rm -f conftest.err conftest.$ac_ext +- +-done +-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +-rm -f conftest.err conftest.$ac_ext +-if $ac_preproc_ok; then +- : +-else +- { { echo "$as_me:$LINENO: error: C preprocessor "$CPP" fails sanity check +-See `config.log' for more details." >&5 +-echo "$as_me: error: C preprocessor "$CPP" fails sanity check +-See `config.log' for more details." >&2;} +- { (exit 1); exit 1; }; } +-fi +- +-ac_ext=c +-ac_cpp='$CPP $CPPFLAGS' +-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +-ac_compiler_gnu=$ac_cv_c_compiler_gnu +- +- +-echo "$as_me:$LINENO: checking for egrep" >&5 +-echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +-if test "${ac_cv_prog_egrep+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if echo a | (grep -E '(a|b)') >/dev/null 2>&1 +- then ac_cv_prog_egrep='grep -E' +- else ac_cv_prog_egrep='egrep' +- fi +-fi +-echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +-echo "${ECHO_T}$ac_cv_prog_egrep" >&6 +- EGREP=$ac_cv_prog_egrep +- +- +-echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +-if test "${ac_cv_header_stdc+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include <stdlib.h> +-#include <stdarg.h> +-#include <string.h> +-#include <float.h> +- +-int +-main () +-{ +- +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: "$ac_compile"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_header_stdc=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-ac_cv_header_stdc=no +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +- +-if test $ac_cv_header_stdc = yes; then +- # SunOS 4.x string.h does not declare mem*, contrary to ANSI. +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include <string.h> +- +-_ACEOF +-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | +- $EGREP "memchr" >/dev/null 2>&1; then +- : +-else +- ac_cv_header_stdc=no +-fi +-rm -f conftest* +- +-fi +- +-if test $ac_cv_header_stdc = yes; then +- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include <stdlib.h> +- +-_ACEOF +-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | +- $EGREP "free" >/dev/null 2>&1; then +- : +-else +- ac_cv_header_stdc=no +-fi +-rm -f conftest* +- +-fi +- +-if test $ac_cv_header_stdc = yes; then +- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. +- if test "$cross_compiling" = yes; then +- : +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include <ctype.h> +-#if ((' ' & 0x0FF) == 0x020) +-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +-#else +-# define ISLOWER(c) \ +- (('a' <= (c) && (c) <= 'i') \ +- || ('j' <= (c) && (c) <= 'r') \ +- || ('s' <= (c) && (c) <= 'z')) +-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +-#endif +- +-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +-int +-main () +-{ +- int i; +- for (i = 0; i < 256; i++) +- if (XOR (islower (i), ISLOWER (i)) +- || toupper (i) != TOUPPER (i)) +- exit(2); +- exit (0); +-} +-_ACEOF +-rm -f conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: "$ac_link"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- : +-else +- echo "$as_me: program exited with status $ac_status" >&5 +-echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-( exit $ac_status ) +-ac_cv_header_stdc=no +-fi +-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +-fi +-fi +-fi +-echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +-echo "${ECHO_T}$ac_cv_header_stdc" >&6 +-if test $ac_cv_header_stdc = yes; then +- +-cat >>confdefs.h <<_ACEOF +-#define STDC_HEADERS 1 +-_ACEOF +- +-fi +- +-# On IRIX 5.3, sys/types and inttypes.h are conflicting. +- +- +- +- +- +- +- +- +- +-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ +- inttypes.h stdint.h unistd.h +-do +-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test "${$as_ac_Header+set}" = set"; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +- +-#include <$ac_header> +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: "$ac_compile"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- eval "$as_ac_Header=yes" +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-eval "$as_ac_Header=no" +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +-if test `eval echo '${'$as_ac_Header'}'` = yes; then +- cat >>confdefs.h <<_ACEOF +-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +-_ACEOF +- +-fi +- +-done +- +- +- +- +- +- +- +-for ac_header in string.h strings.h ncurses/curses.h ncurses.h curses.h +-do +-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if eval "test "${$as_ac_Header+set}" = set"; then +- echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test "${$as_ac_Header+set}" = set"; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +-else +- # Is the header compilable? +-echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +-#include <$ac_header> +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: "$ac_compile"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_header_compiler=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-ac_header_compiler=no +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 +- +-# Is the header present? +-echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include <$ac_header> +-_ACEOF +-if { (eval echo "$as_me:$LINENO: "$ac_cpp conftest.$ac_ext"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then +- ac_header_preproc=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_header_preproc=no +-fi +-rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 +- +-# So? What about this header? +-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +- yes:no: ) +- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} +- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} +- ac_header_preproc=yes +- ;; +- no:yes:* ) +- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} +- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} +- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} +- { echo "$as_me:$LINENO: WARNING: $ac_header: section "Present But Cannot Be Compiled"" >&5 +-echo "$as_me: WARNING: $ac_header: section "Present But Cannot Be Compiled"" >&2;} +- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} +- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<_ASBOX +-## ------------------------------- ## +-## Report this to bug-grub@gnu.org ## +-## ------------------------------- ## +-_ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 +- ;; +-esac +-echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test "${$as_ac_Header+set}" = set"; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- eval "$as_ac_Header=$ac_header_preproc" +-fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +- +-fi +-if test `eval echo '${'$as_ac_Header'}'` = yes; then +- cat >>confdefs.h <<_ACEOF +-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +-_ACEOF +- +-fi +- +-done +- +- +-# Check for user options. +- +-# filesystems support. +-# Check whether --enable-ext2fs or --disable-ext2fs was given. +-if test "${enable_ext2fs+set}" = set; then +- enableval="$enable_ext2fs" +- +-fi; +- +-if test x"$enable_ext2fs" != xno; then +- FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_EXT2FS=1" +-fi +- +-# Check whether --enable-fat or --disable-fat was given. +-if test "${enable_fat+set}" = set; then +- enableval="$enable_fat" +- +-fi; +- +-if test x"$enable_fat" != xno; then +- FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_FAT=1" +-fi +- +-# Check whether --enable-ffs or --disable-ffs was given. +-if test "${enable_ffs+set}" = set; then +- enableval="$enable_ffs" +- +-fi; +- +-if test x"$enable_ffs" != xno; then +- FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_FFS=1" +-fi +- +-# Check whether --enable-ufs2 or --disable-ufs2 was given. +-if test "${enable_ufs2+set}" = set; then +- enableval="$enable_ufs2" +- +-fi; +- +-if test x"$enable_ufs2" != xno; then +- FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_UFS2=1" +-fi +- +-# Check whether --enable-minix or --disable-minix was given. +-if test "${enable_minix+set}" = set; then +- enableval="$enable_minix" +- +-fi; +- +-if test x"$enable_minix" != xno; then +- FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_MINIX=1" +-fi +- +-# Check whether --enable-reiserfs or --disable-reiserfs was given. +-if test "${enable_reiserfs+set}" = set; then +- enableval="$enable_reiserfs" +- +-fi; +- +-if test x"$enable_reiserfs" != xno; then +- FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_REISERFS=1" +-fi +- +-# Check whether --enable-vstafs or --disable-vstafs was given. +-if test "${enable_vstafs+set}" = set; then +- enableval="$enable_vstafs" +- +-fi; +- +-if test x"$enable_vstafs" != xno; then +- FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_VSTAFS=1" +-fi +- +-# Check whether --enable-jfs or --disable-jfs was given. +-if test "${enable_jfs+set}" = set; then +- enableval="$enable_jfs" +- +-fi; +- +-if test x"$enable_jfs" != xno; then +- FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_JFS=1" +-fi +- +-# Check whether --enable-xfs or --disable-xfs was given. +-if test "${enable_xfs+set}" = set; then +- enableval="$enable_xfs" +- +-fi; +- +-if test x"$enable_xfs" != xno; then +- FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_XFS=1" +-fi +- +-# Check whether --enable-iso9660 or --disable-iso9660 was given. +-if test "${enable_iso9660+set}" = set; then +- enableval="$enable_iso9660" +- +-fi; +- +-if test x"$enable_iso9660" != xno; then +- FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_ISO9660=1" +-fi +- +- +-# Check whether --enable-gunzip or --disable-gunzip was given. +-if test "${enable_gunzip+set}" = set; then +- enableval="$enable_gunzip" +- +-fi; +- +-if test x"$enable_gunzip" = xno; then +- FSYS_CFLAGS="$FSYS_CFLAGS -DNO_DECOMPRESSION=1" +-fi +- +-# Check whether --enable-md5-password or --disable-md5-password was given. +-if test "${enable_md5_password+set}" = set; then +- enableval="$enable_md5_password" +- +-fi; +-if test "x$enable_md5_password" != xno; then +- FSYS_CFLAGS="$FSYS_CFLAGS -DUSE_MD5_PASSWORDS=1" +-fi +- +-# Check whether --enable-packet-retransmission or --disable-packet-retransmission was given. +-if test "${enable_packet_retransmission+set}" = set; then +- enableval="$enable_packet_retransmission" +- +-fi; +-if test "x$enable_packet_retransmission" != xno; then +- NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DCONGESTED=1" +-fi +- +-# Check whether --enable-pci-direct or --disable-pci-direct was given. +-if test "${enable_pci_direct+set}" = set; then +- enableval="$enable_pci_direct" +- +-fi; +-if test "x$enable_pci_direct" = xyes; then +- NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DCONFIG_PCI_DIRECT=1" +-fi +- +-# Check whether --enable-3c509 or --disable-3c509 was given. +-if test "${enable_3c509+set}" = set; then +- enableval="$enable_3c509" +- +-fi; +-if test "x$enable_3c509" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_3C509" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS 3c509.o" +-fi +- +-# Check whether --enable-3c529 or --disable-3c529 was given. +-if test "${enable_3c529+set}" = set; then +- enableval="$enable_3c529" +- +-fi; +-if test "x$enable_3c529" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_3C529=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS 3c529.o" +-fi +- +-# Check whether --enable-3c595 or --disable-3c595 was given. +-if test "${enable_3c595+set}" = set; then +- enableval="$enable_3c595" +- +-fi; +-if test "x$enable_3c595" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_3C595=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS 3c595.o" +-fi +- +-# Check whether --enable-3c90x or --disable-3c90x was given. +-if test "${enable_3c90x+set}" = set; then +- enableval="$enable_3c90x" +- +-fi; +-if test "x$enable_3c90x" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_3C90X=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS 3c90x.o" +-fi +- +-# Check whether --enable-cs89x0 or --disable-cs89x0 was given. +-if test "${enable_cs89x0+set}" = set; then +- enableval="$enable_cs89x0" +- +-fi; +-if test "x$enable_cs89x0" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_CS89X0=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS cs89x0.o" +-fi +- +-# Check whether --enable-davicom or --disable-davicom was given. +-if test "${enable_davicom+set}" = set; then +- enableval="$enable_davicom" +- +-fi; +-if test "x$enable_davicom" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_DAVICOM=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS davicom.o" +-fi +- +-# Check whether --enable-depca or --disable-depca was given. +-if test "${enable_depca+set}" = set; then +- enableval="$enable_depca" +- +-fi; +-if test "x$enable_depca" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_DEPCA=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS depca.o" +-fi +- +-# Check whether --enable-eepro or --disable-eepro was given. +-if test "${enable_eepro+set}" = set; then +- enableval="$enable_eepro" +- +-fi; +-if test "x$enable_eepro" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_EEPRO=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS eepro.o" +-fi +- +-# Check whether --enable-eepro100 or --disable-eepro100 was given. +-if test "${enable_eepro100+set}" = set; then +- enableval="$enable_eepro100" +- +-fi; +-if test "x$enable_eepro100" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_EEPRO100=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS eepro100.o" +-fi +- +-# Check whether --enable-epic100 or --disable-epic100 was given. +-if test "${enable_epic100+set}" = set; then +- enableval="$enable_epic100" +- +-fi; +-if test "x$enable_epic100" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_EPIC100=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS epic100.o" +-fi +- +-# Check whether --enable-3c507 or --disable-3c507 was given. +-if test "${enable_3c507+set}" = set; then +- enableval="$enable_3c507" +- +-fi; +-if test "x$enable_3c507" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_3C507=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS 3c507.o" +-fi +- +-# Check whether --enable-exos205 or --disable-exos205 was given. +-if test "${enable_exos205+set}" = set; then +- enableval="$enable_exos205" +- +-fi; +-if test "x$enable_exos205" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_EXOS205=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS exos205.o" +-fi +- +-# Check whether --enable-ni5210 or --disable-ni5210 was given. +-if test "${enable_ni5210+set}" = set; then +- enableval="$enable_ni5210" +- +-fi; +-if test "x$enable_ni5210" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_NI5210=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS ni5210.o" +-fi +- +-# Check whether --enable-lance or --disable-lance was given. +-if test "${enable_lance+set}" = set; then +- enableval="$enable_lance" +- +-fi; +-if test "x$enable_lance" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_LANCE=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS lance.o" +-fi +- +-# Check whether --enable-ne2100 or --disable-ne2100 was given. +-if test "${enable_ne2100+set}" = set; then +- enableval="$enable_ne2100" +- +-fi; +-if test "x$enable_ne2100" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_NE2100=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS ne2100.o" +-fi +- +-# Check whether --enable-ni6510 or --disable-ni6510 was given. +-if test "${enable_ni6510+set}" = set; then +- enableval="$enable_ni6510" +- +-fi; +-if test "x$enable_ni6510" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_NI6510=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS ni6510.o" +-fi +- +-# Check whether --enable-natsemi or --disable-natsemi was given. +-if test "${enable_natsemi+set}" = set; then +- enableval="$enable_natsemi" +- +-fi; +-if test "x$enable_natsemi" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_NATSEMI=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS natsemi.o" +-fi +- +-# Check whether --enable-ni5010 or --disable-ni5010 was given. +-if test "${enable_ni5010+set}" = set; then +- enableval="$enable_ni5010" +- +-fi; +-if test "x$enable_ni5010" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_NI5010=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS ni5010.o" +-fi +- +-# Check whether --enable-3c503 or --disable-3c503 was given. +-if test "${enable_3c503+set}" = set; then +- enableval="$enable_3c503" +- +-fi; +-if test "x$enable_3c503" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_3C503=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS 3c503.o" +-fi +- +-# Check whether --enable-ne or --disable-ne was given. +-if test "${enable_ne+set}" = set; then +- enableval="$enable_ne" +- +-fi; +-if test "x$enable_ne" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_NE=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS ne.o" +-fi +- +-# Check whether --enable-ns8390 or --disable-ns8390 was given. +-if test "${enable_ns8390+set}" = set; then +- enableval="$enable_ns8390" +- +-fi; +-if test "x$enable_ns8390" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_NS8390=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS ns8390.o" +-fi +- +-# Check whether --enable-wd or --disable-wd was given. +-if test "${enable_wd+set}" = set; then +- enableval="$enable_wd" +- +-fi; +-if test "x$enable_wd" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_WD=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS wd.o" +-fi +- +-# Check whether --enable-otulip or --disable-otulip was given. +-if test "${enable_otulip+set}" = set; then +- enableval="$enable_otulip" +- +-fi; +-if test "x$enable_otulip" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_OTULIP=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS otulip.o" +-fi +- +-# Check whether --enable-rtl8139 or --disable-rtl8139 was given. +-if test "${enable_rtl8139+set}" = set; then +- enableval="$enable_rtl8139" +- +-fi; +-if test "x$enable_rtl8139" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_RTL8139=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS rtl8139.o" +-fi +- +-# Check whether --enable-sis900 or --disable-sis900 was given. +-if test "${enable_sis900+set}" = set; then +- enableval="$enable_sis900" +- +-fi; +-if test "x$enable_sis900" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_SIS900=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS sis900.o" +-fi +- +-# Check whether --enable-sk-g16 or --disable-sk-g16 was given. +-if test "${enable_sk_g16+set}" = set; then +- enableval="$enable_sk_g16" +- +-fi; +-if test "x$enable_sk_g16" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_SK_G16=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS sk_g16.o" +-fi +- +-# Check whether --enable-smc9000 or --disable-smc9000 was given. +-if test "${enable_smc9000+set}" = set; then +- enableval="$enable_smc9000" +- +-fi; +-if test "x$enable_smc9000" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_SMC9000=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS smc9000.o" +-fi +- +-# Check whether --enable-tiara or --disable-tiara was given. +-if test "${enable_tiara+set}" = set; then +- enableval="$enable_tiara" +- +-fi; +-if test "x$enable_tiara" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_TIARA=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS tiara.o" +-fi +- +-# Check whether --enable-tulip or --disable-tulip was given. +-if test "${enable_tulip+set}" = set; then +- enableval="$enable_tulip" +- +-fi; +-if test "x$enable_tulip" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_TULIP=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS tulip.o" +-fi +- +-# Check whether --enable-via-rhine or --disable-via-rhine was given. +-if test "${enable_via_rhine+set}" = set; then +- enableval="$enable_via_rhine" +- +-fi; +-if test "x$enable_via_rhine" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_VIA_RHINE=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS via_rhine.o" +-fi +- +-# Check whether --enable-w89c840 or --disable-w89c840 was given. +-if test "${enable_w89c840+set}" = set; then +- enableval="$enable_w89c840" +- +-fi; +-if test "x$enable_w89c840" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_W89C840=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS w89c840.o" +-fi +- +- +- +-if test "x$NET_CFLAGS" != x; then +- NETBOOT_SUPPORT_TRUE= +- NETBOOT_SUPPORT_FALSE='#' +-else +- NETBOOT_SUPPORT_TRUE='#' +- NETBOOT_SUPPORT_FALSE= +-fi +- +-if test "x$NET_CFLAGS" != x; then +- FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_TFTP=1" +-fi +- +-# Check whether --enable-3c503-shmem or --disable-3c503-shmem was given. +-if test "${enable_3c503_shmem+set}" = set; then +- enableval="$enable_3c503_shmem" +- +-fi; +-if test "x$enable_3c503_shmem" = xyes; then +- NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DT503_SHMEM=1" +-fi +- +-# Check whether --enable-3c503-aui or --disable-3c503-aui was given. +-if test "${enable_3c503_aui+set}" = set; then +- enableval="$enable_3c503_aui" +- +-fi; +-if test "x$enable_3c503_aui" = xyes; then +- NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DT503_AUI=1" +-fi +- +-# Check whether --enable-compex-rl2000-fix or --disable-compex-rl2000-fix was given. +-if test "${enable_compex_rl2000_fix+set}" = set; then +- enableval="$enable_compex_rl2000_fix" +- +-fi; +-if test "x$enable_compex_rl2000_fix" = xyes; then +- NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DCOMPEX_RL2000_FIX=1" +-fi +- +-# Check whether --enable-smc9000-scan or --disable-smc9000-scan was given. +-if test "${enable_smc9000_scan+set}" = set; then +- enableval="$enable_smc9000_scan" +- NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DSMC9000_SCAN=$enable_smc9000_scan" +-fi; +- +-# Check whether --enable-ne-scan or --disable-ne-scan was given. +-if test "${enable_ne_scan+set}" = set; then +- enableval="$enable_ne_scan" +- NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DNE_SCAN=$enable_ne_scan" +-else +- NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DNE_SCAN=0x280,0x300,0x320,0x340" +-fi; +- +-# Check whether --enable-wd-default-mem or --disable-wd-default-mem was given. +-if test "${enable_wd_default_mem+set}" = set; then +- enableval="$enable_wd_default_mem" +- NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DWD_DEFAULT_MEM=$enable_wd_default_mem" +-else +- NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DWD_DEFAULT_MEM=0xCC000" +-fi; +- +-# Check whether --enable-cs-scan or --disable-cs-scan was given. +-if test "${enable_cs_scan+set}" = set; then +- enableval="$enable_cs_scan" +- NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DCS_SCAN=$enable_cs_scan" +-fi; +- +-# Check whether --enable-diskless or --disable-diskless was given. +-if test "${enable_diskless+set}" = set; then +- enableval="$enable_diskless" +- +-fi; +- +- +-if test "x$enable_diskless" = xyes; then +- DISKLESS_SUPPORT_TRUE= +- DISKLESS_SUPPORT_FALSE='#' +-else +- DISKLESS_SUPPORT_TRUE='#' +- DISKLESS_SUPPORT_FALSE= +-fi +- +- +-# Check whether --enable-hercules or --disable-hercules was given. +-if test "${enable_hercules+set}" = set; then +- enableval="$enable_hercules" +- +-fi; +- +- +-if test "x$enable_hercules" != xno; then +- HERCULES_SUPPORT_TRUE= +- HERCULES_SUPPORT_FALSE='#' +-else +- HERCULES_SUPPORT_TRUE='#' +- HERCULES_SUPPORT_FALSE= +-fi +- +- +-# Check whether --enable-serial or --disable-serial was given. +-if test "${enable_serial+set}" = set; then +- enableval="$enable_serial" +- +-fi; +- +- +-if test "x$enable_serial" != xno; then +- SERIAL_SUPPORT_TRUE= +- SERIAL_SUPPORT_FALSE='#' +-else +- SERIAL_SUPPORT_TRUE='#' +- SERIAL_SUPPORT_FALSE= +-fi +- +- +-# Check whether --enable-serial-speed-simulation or --disable-serial-speed-simulation was given. +-if test "${enable_serial_speed_simulation+set}" = set; then +- enableval="$enable_serial_speed_simulation" +- +-fi; +- +- +-if test "x$enable_serial_speed_simulation" = xyes; then +- SERIAL_SPEED_SIMULATION_TRUE= +- SERIAL_SPEED_SIMULATION_FALSE='#' +-else +- SERIAL_SPEED_SIMULATION_TRUE='#' +- SERIAL_SPEED_SIMULATION_FALSE= +-fi +- +- +-# Sanity check. +-if test "x$enable_diskless" = xyes; then +- if test "x$NET_CFLAGS" = x; then +- { { echo "$as_me:$LINENO: error: You must enable at least one network driver" >&5 +-echo "$as_me: error: You must enable at least one network driver" >&2;} +- { (exit 1); exit 1; }; } +- fi +-fi +- +-# Check whether --enable-preset-menu or --disable-preset-menu was given. +-if test "${enable_preset_menu+set}" = set; then +- enableval="$enable_preset_menu" +- +-fi; +-if test "x$enable_preset_menu" = x; then +- : +-else +- if test -r $enable_preset_menu; then +- +-# Because early versions of GNU sed 3.x are too buggy, use a C program +-# instead of shell commands. *sigh* +-cat >conftest.c <<\EOF +-#include <stdio.h> +- +-int +-main (void) +-{ +- int c; +- +- while ((c = getchar ()) != EOF) +- { +- switch (c) +- { +- case '\n': +- fputs ("\n", stdout); +- break; +- case '\r': +- fputs ("\r", stdout); +- break; +- case '\': +- fputs ("\\", stdout); +- break; +- case '"': +- fputs ("\"", stdout); +- break; +- default: +- putchar (c); +- } +- } +- +- return 0; +-} +-EOF +- +-if { ac_try='${CC-cc} ${CFLAGS} conftest.c -o conftest' +- { (eval echo "$as_me:$LINENO: "$ac_try"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: $? = $ac_status" >&5 +- (exit $ac_status); }; } && test -s conftest; then +- grub_tmp_value=`./conftest < "$enable_preset_menu"` +-else +- { { echo "$as_me:$LINENO: error: ${CC-cc} failed to produce an executable file" >&5 +-echo "$as_me: error: ${CC-cc} failed to produce an executable file" >&2;} +- { (exit 1); exit 1; }; } +-fi +- +- +-cat >>confdefs.h <<_ACEOF +-#define PRESET_MENU_STRING "$grub_tmp_value" +-_ACEOF +- +-rm -f conftest* +- +- else +- { { echo "$as_me:$LINENO: error: Cannot read the preset menu file $enable_preset_menu" >&5 +-echo "$as_me: error: Cannot read the preset menu file $enable_preset_menu" >&2;} +- { (exit 1); exit 1; }; } +- fi +-fi +- +-# Check whether --enable-example-kernel or --disable-example-kernel was given. +-if test "${enable_example_kernel+set}" = set; then +- enableval="$enable_example_kernel" +- +-fi; +- +- +-if test "x$enable_example_kernel" = xyes; then +- BUILD_EXAMPLE_KERNEL_TRUE= +- BUILD_EXAMPLE_KERNEL_FALSE='#' +-else +- BUILD_EXAMPLE_KERNEL_TRUE='#' +- BUILD_EXAMPLE_KERNEL_FALSE= +-fi +- +- +-# Check whether --enable-auto-linux-mem-opt or --disable-auto-linux-mem-opt was given. +-if test "${enable_auto_linux_mem_opt+set}" = set; then +- enableval="$enable_auto_linux_mem_opt" +- +-fi; +-if test "x$enable_auto_linux_mem_opt" = xno; then +- : +-else +- +-cat >>confdefs.h <<_ACEOF +-#define AUTO_LINUX_MEM_OPT 1 +-_ACEOF +- +-fi +- +- +- +- +- +- +-CCASFLAGS='$(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)' +- +- +- +- ac_config_files="$ac_config_files Makefile stage1/Makefile stage2/Makefile docs/Makefile lib/Makefile util/Makefile grub/Makefile netboot/Makefile util/grub-image util/grub-install util/grub-md5-crypt util/grub-terminfo util/grub-set-default" +- +-cat >confcache <<_ACEOF +-# This file is a shell script that caches the results of configure +-# tests run on this system so they can be shared between configure +-# scripts and configure runs, see configure's option --config-cache. +-# It is not useful on other systems. If it contains results you don't +-# want to keep, you may remove or edit it. +-# +-# config.status only pays attention to the cache file if you give it +-# the --recheck option to rerun configure. +-# +-# `ac_cv_env_foo' variables (set or unset) will be overridden when +-# loading this file, other *unset* `ac_cv_foo' will be assigned the +-# following values. +- +-_ACEOF +- +-# The following way of writing the cache mishandles newlines in values, +-# but we know of no workaround that is simple, portable, and efficient. +-# So, don't put newlines in cache variables' values. +-# Ultrix sh set writes to stderr and can't be redirected directly, +-# and sets the high bit in the cache file unless we assign to the vars. +-{ +- (set) 2>&1 | +- case `(ac_space=' '; set | grep ac_space) 2>&1` in +- *ac_space=\ *) +- # `set' does not quote correctly, so add quotes (double-quote +- # substitution turns \\ into \, and sed turns \ into ). +- sed -n \ +- "s/'/'\\''/g; +- s/^\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\)=\(.*\)/\1='\2'/p" +- ;; +- *) +- # `set' quotes correctly as required by POSIX, so do not add quotes. +- sed -n \ +- "s/^\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\)=\(.*\)/\1=\2/p" +- ;; +- esac; +-} | +- sed ' +- t clear +- : clear +- s/^([^=]*)=(.*[{}].*)$/test "${\1+set}" = set || &/ +- t end +- /^ac_cv_env/!s/^([^=]*)=(.*)$/\1=${\1=\2}/ +- : end' >>confcache +-if diff $cache_file confcache >/dev/null 2>&1; then :; else +- if test -w $cache_file; then +- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" +- cat confcache >$cache_file +- else +- echo "not updating unwritable cache $cache_file" +- fi +-fi +-rm -f confcache +- +-test "x$prefix" = xNONE && prefix=$ac_default_prefix +-# Let make expand exec_prefix. +-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' +- +-# VPATH may cause trouble with some makes, so we remove $(srcdir), +-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +-# trailing colons and then remove the whole line if VPATH becomes empty +-# (actually we leave an empty line to preserve line numbers). +-if test "x$srcdir" = x.; then +- ac_vpsub='/^[ ]*VPATH[ ]*=/{ +-s/:*$(srcdir):*/:/; +-s/:*${srcdir}:*/:/; +-s/:*@srcdir@:*/:/; +-s/^([^=]*=[ ]*):*/\1/; +-s/:*$//; +-s/^[^=]*=[ ]*$//; +-}' +-fi +- +-DEFS=-DHAVE_CONFIG_H +- +-ac_libobjs= +-ac_ltlibobjs= +-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue +- # 1. Remove the extension, and $U if already installed. +- ac_i=`echo "$ac_i" | +- sed 's/$U././;s/.o$//;s/.obj$//'` +- # 2. Add them. +- ac_libobjs="$ac_libobjs $ac_i$U.$ac_objext" +- ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' +-done +-LIBOBJS=$ac_libobjs +- +-LTLIBOBJS=$ac_ltlibobjs +- +- +-if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional "MAINTAINER_MODE" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional "MAINTAINER_MODE" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi +-if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional "AMDEP" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional "AMDEP" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi +-if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional "am__fastdepCC" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional "am__fastdepCC" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi +-if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional "am__fastdepCC" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional "am__fastdepCC" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi +-if test -z "${NETBOOT_SUPPORT_TRUE}" && test -z "${NETBOOT_SUPPORT_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional "NETBOOT_SUPPORT" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional "NETBOOT_SUPPORT" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi +-if test -z "${DISKLESS_SUPPORT_TRUE}" && test -z "${DISKLESS_SUPPORT_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional "DISKLESS_SUPPORT" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional "DISKLESS_SUPPORT" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi +-if test -z "${HERCULES_SUPPORT_TRUE}" && test -z "${HERCULES_SUPPORT_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional "HERCULES_SUPPORT" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional "HERCULES_SUPPORT" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi +-if test -z "${SERIAL_SUPPORT_TRUE}" && test -z "${SERIAL_SUPPORT_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional "SERIAL_SUPPORT" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional "SERIAL_SUPPORT" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi +-if test -z "${SERIAL_SPEED_SIMULATION_TRUE}" && test -z "${SERIAL_SPEED_SIMULATION_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional "SERIAL_SPEED_SIMULATION" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional "SERIAL_SPEED_SIMULATION" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi +-if test -z "${BUILD_EXAMPLE_KERNEL_TRUE}" && test -z "${BUILD_EXAMPLE_KERNEL_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional "BUILD_EXAMPLE_KERNEL" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional "BUILD_EXAMPLE_KERNEL" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi +- +-: ${CONFIG_STATUS=./config.status} +-ac_clean_files_save=$ac_clean_files +-ac_clean_files="$ac_clean_files $CONFIG_STATUS" +-{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +-echo "$as_me: creating $CONFIG_STATUS" >&6;} +-cat >$CONFIG_STATUS <<_ACEOF +-#! $SHELL +-# Generated by $as_me. +-# Run this file to recreate the current configuration. +-# Compiler output produced by configure, useful for debugging +-# configure, is in config.log if it exists. +- +-debug=false +-ac_cs_recheck=false +-ac_cs_silent=false +-SHELL=${CONFIG_SHELL-$SHELL} +-_ACEOF +- +-cat >>$CONFIG_STATUS <<_ACEOF +-## --------------------- ## +-## M4sh Initialization. ## +-## --------------------- ## +- +-# Be Bourne compatible +-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then +- emulate sh +- NULLCMD=: +- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which +- # is contrary to our usage. Disable this feature. +- alias -g '${1+"$@"}'='"$@"' +-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then +- set -o posix +-fi +-DUALCASE=1; export DUALCASE # for MKS sh +- +-# Support unset when possible. +-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then +- as_unset=unset +-else +- as_unset=false +-fi +- +- +-# Work around bugs in pre-3.0 UWIN ksh. +-$as_unset ENV MAIL MAILPATH +-PS1='$ ' +-PS2='> ' +-PS4='+ ' +- +-# NLS nuisances. +-for as_var in \ +- LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ +- LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ +- LC_TELEPHONE LC_TIME +-do +- if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then +- eval $as_var=C; export $as_var +- else +- $as_unset $as_var +- fi +-done +- +-# Required to use basename. +-if expr a : '(a)' >/dev/null 2>&1; then +- as_expr=expr +-else +- as_expr=false +-fi +- +-if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then +- as_basename=basename +-else +- as_basename=false +-fi +- +- +-# Name of the executable. +-as_me=`$as_basename "$0" || +-$as_expr X/"$0" : '.*/([^/][^/]*)/*$' | \ +- X"$0" : 'X(//)$' | \ +- X"$0" : 'X(/)$' | \ +- . : '(.)' 2>/dev/null || +-echo X/"$0" | +- sed '/^.*/([^/][^/]*)/*$/{ s//\1/; q; } +- /^X/(//)$/{ s//\1/; q; } +- /^X/(/).*/{ s//\1/; q; } +- s/.*/./; q'` +- +- +-# PATH needs CR, and LINENO needs CR and PATH. +-# Avoid depending upon Character Ranges. +-as_cr_letters='abcdefghijklmnopqrstuvwxyz' +-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +-as_cr_Letters=$as_cr_letters$as_cr_LETTERS +-as_cr_digits='0123456789' +-as_cr_alnum=$as_cr_Letters$as_cr_digits +- +-# The user is always right. +-if test "${PATH_SEPARATOR+set}" != set; then +- echo "#! /bin/sh" >conf$$.sh +- echo "exit 0" >>conf$$.sh +- chmod +x conf$$.sh +- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then +- PATH_SEPARATOR=';' +- else +- PATH_SEPARATOR=: +- fi +- rm -f conf$$.sh +-fi +- +- +- as_lineno_1=$LINENO +- as_lineno_2=$LINENO +- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` +- test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x$as_lineno_3" = "x$as_lineno_2" || { +- # Find who we are. Look in the path if we contain no path at all +- # relative or not. +- case $0 in +- *[\/]* ) as_myself=$0 ;; +- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +-done +- +- ;; +- esac +- # We did not find ourselves, most probably we were run as `sh COMMAND' +- # in which case we are not to be found in the path. +- if test "x$as_myself" = x; then +- as_myself=$0 +- fi +- if test ! -f "$as_myself"; then +- { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +-echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} +- { (exit 1); exit 1; }; } +- fi +- case $CONFIG_SHELL in +- '') +- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for as_base in sh bash ksh sh5; do +- case $as_dir in +- /*) +- if ("$as_dir/$as_base" -c ' +- as_lineno_1=$LINENO +- as_lineno_2=$LINENO +- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` +- test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then +- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } +- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } +- CONFIG_SHELL=$as_dir/$as_base +- export CONFIG_SHELL +- exec "$CONFIG_SHELL" "$0" ${1+"$@"} +- fi;; +- esac +- done +-done +-;; +- esac +- +- # Create $as_me.lineno as a copy of $as_myself, but with $LINENO +- # uniformly replaced by the line number. The first 'sed' inserts a +- # line-number line before each line; the second 'sed' does the real +- # work. The second script uses 'N' to pair each line-number line +- # with the numbered line, and appends trailing '-' during +- # substitution so that $LINENO is not a special case at line end. +- # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the +- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) +- sed '=' <$as_myself | +- sed ' +- N +- s,$,-, +- : loop +- s,^(['$as_cr_digits']*)(.*)[$]LINENO([^'$as_cr_alnum'_]),\1\2\1\3, +- t loop +- s,-$,, +- s,^['$as_cr_digits']*\n,, +- ' >$as_me.lineno && +- chmod +x $as_me.lineno || +- { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +-echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} +- { (exit 1); exit 1; }; } +- +- # Don't try to exec as it changes $[0], causing all sort of problems +- # (the dirname of $[0] is not the place where we might find the +- # original and so on. Autoconf is especially sensible to this). +- . ./$as_me.lineno +- # Exit status is that of the last command. +- exit +-} +- +- +-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in +- *c*,-n*) ECHO_N= ECHO_C=' +-' ECHO_T=' ' ;; +- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; +- *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +-esac +- +-if expr a : '(a)' >/dev/null 2>&1; then +- as_expr=expr +-else +- as_expr=false +-fi +- +-rm -f conf$$ conf$$.exe conf$$.file +-echo >conf$$.file +-if ln -s conf$$.file conf$$ 2>/dev/null; then +- # We could just check for DJGPP; but this test a) works b) is more generic +- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). +- if test -f conf$$.exe; then +- # Don't use ln at all; we don't have any links +- as_ln_s='cp -p' +- else +- as_ln_s='ln -s' +- fi +-elif ln conf$$.file conf$$ 2>/dev/null; then +- as_ln_s=ln +-else +- as_ln_s='cp -p' +-fi +-rm -f conf$$ conf$$.exe conf$$.file +- +-if mkdir -p . 2>/dev/null; then +- as_mkdir_p=: +-else +- test -d ./-p && rmdir ./-p +- as_mkdir_p=false +-fi +- +-as_executable_p="test -f" +- +-# Sed expression to map a string onto a valid CPP name. +-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" +- +-# Sed expression to map a string onto a valid variable name. +-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" +- +- +-# IFS +-# We need space, tab and new line, in precisely that order. +-as_nl=' +-' +-IFS=" $as_nl" +- +-# CDPATH. +-$as_unset CDPATH +- +-exec 6>&1 +- +-# Open the log real soon, to keep $[0] and so on meaningful, and to +-# report actual input values of CONFIG_FILES etc. instead of their +-# values after options handling. Logging --version etc. is OK. +-exec 5>>config.log +-{ +- echo +- sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +-## Running $as_me. ## +-_ASBOX +-} >&5 +-cat >&5 <<_CSEOF +- +-This file was extended by GRUB $as_me 0.97, which was +-generated by GNU Autoconf 2.59. Invocation command line was +- +- CONFIG_FILES = $CONFIG_FILES +- CONFIG_HEADERS = $CONFIG_HEADERS +- CONFIG_LINKS = $CONFIG_LINKS +- CONFIG_COMMANDS = $CONFIG_COMMANDS +- $ $0 $@ +- +-_CSEOF +-echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +-echo >&5 +-_ACEOF +- +-# Files that config.status was made for. +-if test -n "$ac_config_files"; then +- echo "config_files="$ac_config_files"" >>$CONFIG_STATUS +-fi +- +-if test -n "$ac_config_headers"; then +- echo "config_headers="$ac_config_headers"" >>$CONFIG_STATUS +-fi +- +-if test -n "$ac_config_links"; then +- echo "config_links="$ac_config_links"" >>$CONFIG_STATUS +-fi +- +-if test -n "$ac_config_commands"; then +- echo "config_commands="$ac_config_commands"" >>$CONFIG_STATUS +-fi +- +-cat >>$CONFIG_STATUS <<_ACEOF +- +-ac_cs_usage="\ +-`$as_me' instantiates files from templates according to the +-current configuration. +- +-Usage: $0 [OPTIONS] [FILE]... +- +- -h, --help print this help, then exit +- -V, --version print version number, then exit +- -q, --quiet do not print progress messages +- -d, --debug don't remove temporary files +- --recheck update $as_me by reconfiguring in the same conditions +- --file=FILE[:TEMPLATE] +- instantiate the configuration file FILE +- --header=FILE[:TEMPLATE] +- instantiate the configuration header FILE +- +-Configuration files: +-$config_files +- +-Configuration headers: +-$config_headers +- +-Configuration commands: +-$config_commands +- +-Report bugs to bug-autoconf@gnu.org." +-_ACEOF +- +-cat >>$CONFIG_STATUS <<_ACEOF +-ac_cs_version="\ +-GRUB config.status 0.97 +-configured by $0, generated by GNU Autoconf 2.59, +- with options \"`echo "$ac_configure_args" | sed 's/[\""`$]/\\&/g'`\" +- +-Copyright (C) 2003 Free Software Foundation, Inc. +-This config.status script is free software; the Free Software Foundation +-gives unlimited permission to copy, distribute and modify it." +-srcdir=$srcdir +-INSTALL="$INSTALL" +-_ACEOF +- +-cat >>$CONFIG_STATUS <<_ACEOF +-# If no file are specified by the user, then we need to provide default +-# value. By we need to know if files were specified by the user. +-ac_need_defaults=: +-while test $# != 0 +-do +- case $1 in +- --*=*) +- ac_option=`expr "x$1" : 'x([^=]*)='` +- ac_optarg=`expr "x$1" : 'x[^=]*=(.*)'` +- ac_shift=: +- ;; +- -*) +- ac_option=$1 +- ac_optarg=$2 +- ac_shift=shift +- ;; +- *) # This is not an option, so the user has probably given explicit +- # arguments. +- ac_option=$1 +- ac_need_defaults=false;; +- esac +- +- case $ac_option in +- # Handling of the options. +-_ACEOF +-cat >>$CONFIG_STATUS <<_ACEOF +- -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) +- ac_cs_recheck=: ;; +- --version | --vers* | -V ) +- echo "$ac_cs_version"; exit 0 ;; +- --he | --h) +- # Conflict between --help and --header +- { { echo "$as_me:$LINENO: error: ambiguous option: $1 +-Try `$0 --help' for more information." >&5 +-echo "$as_me: error: ambiguous option: $1 +-Try `$0 --help' for more information." >&2;} +- { (exit 1); exit 1; }; };; +- --help | --hel | -h ) +- echo "$ac_cs_usage"; exit 0 ;; +- --debug | --d* | -d ) +- debug=: ;; +- --file | --fil | --fi | --f ) +- $ac_shift +- CONFIG_FILES="$CONFIG_FILES $ac_optarg" +- ac_need_defaults=false;; +- --header | --heade | --head | --hea ) +- $ac_shift +- CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" +- ac_need_defaults=false;; +- -q | -quiet | --quiet | --quie | --qui | --qu | --q \ +- | -silent | --silent | --silen | --sile | --sil | --si | --s) +- ac_cs_silent=: ;; +- +- # This is an error. +- -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +-Try `$0 --help' for more information." >&5 +-echo "$as_me: error: unrecognized option: $1 +-Try `$0 --help' for more information." >&2;} +- { (exit 1); exit 1; }; } ;; +- +- *) ac_config_targets="$ac_config_targets $1" ;; +- +- esac +- shift +-done +- +-ac_configure_extra_args= +- +-if $ac_cs_silent; then +- exec 6>/dev/null +- ac_configure_extra_args="$ac_configure_extra_args --silent" +-fi +- +-_ACEOF +-cat >>$CONFIG_STATUS <<_ACEOF +-if $ac_cs_recheck; then +- echo "running $SHELL $0 " $ac_configure_args $ac_configure_extra_args " --no-create --no-recursion" >&6 +- exec $SHELL $0 $ac_configure_args $ac_configure_extra_args --no-create --no-recursion +-fi +- +-_ACEOF +- +-cat >>$CONFIG_STATUS <<_ACEOF +-# +-# INIT-COMMANDS section. +-# +- +-AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" +- +-_ACEOF +- +- +- +-cat >>$CONFIG_STATUS <<_ACEOF +-for ac_config_target in $ac_config_targets +-do +- case "$ac_config_target" in +- # Handling of arguments. +- "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; +- "stage1/Makefile" ) CONFIG_FILES="$CONFIG_FILES stage1/Makefile" ;; +- "stage2/Makefile" ) CONFIG_FILES="$CONFIG_FILES stage2/Makefile" ;; +- "docs/Makefile" ) CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;; +- "lib/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; +- "util/Makefile" ) CONFIG_FILES="$CONFIG_FILES util/Makefile" ;; +- "grub/Makefile" ) CONFIG_FILES="$CONFIG_FILES grub/Makefile" ;; +- "netboot/Makefile" ) CONFIG_FILES="$CONFIG_FILES netboot/Makefile" ;; +- "util/grub-image" ) CONFIG_FILES="$CONFIG_FILES util/grub-image" ;; +- "util/grub-install" ) CONFIG_FILES="$CONFIG_FILES util/grub-install" ;; +- "util/grub-md5-crypt" ) CONFIG_FILES="$CONFIG_FILES util/grub-md5-crypt" ;; +- "util/grub-terminfo" ) CONFIG_FILES="$CONFIG_FILES util/grub-terminfo" ;; +- "util/grub-set-default" ) CONFIG_FILES="$CONFIG_FILES util/grub-set-default" ;; +- "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; +- "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; +- *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +-echo "$as_me: error: invalid argument: $ac_config_target" >&2;} +- { (exit 1); exit 1; }; };; +- esac +-done +- +-# If the user did not use the arguments to specify the items to instantiate, +-# then the envvar interface is used. Set only those that are not. +-# We use the long form for the default assignment because of an extremely +-# bizarre bug on SunOS 4.1.3. +-if $ac_need_defaults; then +- test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files +- test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers +- test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +-fi +- +-# Have a temporary directory for convenience. Make it in the build tree +-# simply because there is no reason to put it here, and in addition, +-# creating and moving files from /tmp can sometimes cause problems. +-# Create a temporary directory, and hook for its removal unless debugging. +-$debug || +-{ +- trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 +- trap '{ (exit 1); exit 1; }' 1 2 13 15 +-} +- +-# Create a (secure) tmp directory for tmp files. +- +-{ +- tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && +- test -n "$tmp" && test -d "$tmp" +-} || +-{ +- tmp=./confstat$$-$RANDOM +- (umask 077 && mkdir $tmp) +-} || +-{ +- echo "$me: cannot create a temporary directory in ." >&2 +- { (exit 1); exit 1; } +-} +- +-_ACEOF +- +-cat >>$CONFIG_STATUS <<_ACEOF +- +-# +-# CONFIG_FILES section. +-# +- +-# No need to generate the scripts if there are no CONFIG_FILES. +-# This happens for instance when ./config.status config.h +-if test -n "$CONFIG_FILES"; then +- # Protect against being on the right side of a sed subst in config.status. +- sed 's/,@/@@/; s/@,/@@/; s/,;t t$/@;t t/; /@;t t$/s/[\\&,]/\\&/g; +- s/@@/,@/; s/@@/@,/; s/@;t t$/,;t t/' >$tmp/subs.sed <<\CEOF +-s,@SHELL@,$SHELL,;t t +-s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +-s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +-s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +-s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +-s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +-s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +-s,@exec_prefix@,$exec_prefix,;t t +-s,@prefix@,$prefix,;t t +-s,@program_transform_name@,$program_transform_name,;t t +-s,@bindir@,$bindir,;t t +-s,@sbindir@,$sbindir,;t t +-s,@libexecdir@,$libexecdir,;t t +-s,@datadir@,$datadir,;t t +-s,@sysconfdir@,$sysconfdir,;t t +-s,@sharedstatedir@,$sharedstatedir,;t t +-s,@localstatedir@,$localstatedir,;t t +-s,@libdir@,$libdir,;t t +-s,@includedir@,$includedir,;t t +-s,@oldincludedir@,$oldincludedir,;t t +-s,@infodir@,$infodir,;t t +-s,@mandir@,$mandir,;t t +-s,@build_alias@,$build_alias,;t t +-s,@host_alias@,$host_alias,;t t +-s,@target_alias@,$target_alias,;t t +-s,@DEFS@,$DEFS,;t t +-s,@ECHO_C@,$ECHO_C,;t t +-s,@ECHO_N@,$ECHO_N,;t t +-s,@ECHO_T@,$ECHO_T,;t t +-s,@LIBS@,$LIBS,;t t +-s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +-s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +-s,@INSTALL_DATA@,$INSTALL_DATA,;t t +-s,@CYGPATH_W@,$CYGPATH_W,;t t +-s,@PACKAGE@,$PACKAGE,;t t +-s,@VERSION@,$VERSION,;t t +-s,@ACLOCAL@,$ACLOCAL,;t t +-s,@AUTOCONF@,$AUTOCONF,;t t +-s,@AUTOMAKE@,$AUTOMAKE,;t t +-s,@AUTOHEADER@,$AUTOHEADER,;t t +-s,@MAKEINFO@,$MAKEINFO,;t t +-s,@install_sh@,$install_sh,;t t +-s,@STRIP@,$STRIP,;t t +-s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t +-s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t +-s,@mkdir_p@,$mkdir_p,;t t +-s,@AWK@,$AWK,;t t +-s,@SET_MAKE@,$SET_MAKE,;t t +-s,@am__leading_dot@,$am__leading_dot,;t t +-s,@AMTAR@,$AMTAR,;t t +-s,@am__tar@,$am__tar,;t t +-s,@am__untar@,$am__untar,;t t +-s,@build@,$build,;t t +-s,@build_cpu@,$build_cpu,;t t +-s,@build_vendor@,$build_vendor,;t t +-s,@build_os@,$build_os,;t t +-s,@host@,$host,;t t +-s,@host_cpu@,$host_cpu,;t t +-s,@host_vendor@,$host_vendor,;t t +-s,@host_os@,$host_os,;t t +-s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t +-s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t +-s,@MAINT@,$MAINT,;t t +-s,@PERL@,$PERL,;t t +-s,@CC@,$CC,;t t +-s,@ac_ct_CC@,$ac_ct_CC,;t t +-s,@CFLAGS@,$CFLAGS,;t t +-s,@LDFLAGS@,$LDFLAGS,;t t +-s,@CPPFLAGS@,$CPPFLAGS,;t t +-s,@EXEEXT@,$EXEEXT,;t t +-s,@OBJEXT@,$OBJEXT,;t t +-s,@DEPDIR@,$DEPDIR,;t t +-s,@am__include@,$am__include,;t t +-s,@am__quote@,$am__quote,;t t +-s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t +-s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t +-s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t +-s,@CCDEPMODE@,$CCDEPMODE,;t t +-s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t +-s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t +-s,@CCAS@,$CCAS,;t t +-s,@RANLIB@,$RANLIB,;t t +-s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +-s,@STAGE1_CFLAGS@,$STAGE1_CFLAGS,;t t +-s,@STAGE2_CFLAGS@,$STAGE2_CFLAGS,;t t +-s,@GRUB_CFLAGS@,$GRUB_CFLAGS,;t t +-s,@OBJCOPY@,$OBJCOPY,;t t +-s,@ac_ct_OBJCOPY@,$ac_ct_OBJCOPY,;t t +-s,@GRUB_LIBS@,$GRUB_LIBS,;t t +-s,@CPP@,$CPP,;t t +-s,@EGREP@,$EGREP,;t t +-s,@NETBOOT_SUPPORT_TRUE@,$NETBOOT_SUPPORT_TRUE,;t t +-s,@NETBOOT_SUPPORT_FALSE@,$NETBOOT_SUPPORT_FALSE,;t t +-s,@DISKLESS_SUPPORT_TRUE@,$DISKLESS_SUPPORT_TRUE,;t t +-s,@DISKLESS_SUPPORT_FALSE@,$DISKLESS_SUPPORT_FALSE,;t t +-s,@HERCULES_SUPPORT_TRUE@,$HERCULES_SUPPORT_TRUE,;t t +-s,@HERCULES_SUPPORT_FALSE@,$HERCULES_SUPPORT_FALSE,;t t +-s,@SERIAL_SUPPORT_TRUE@,$SERIAL_SUPPORT_TRUE,;t t +-s,@SERIAL_SUPPORT_FALSE@,$SERIAL_SUPPORT_FALSE,;t t +-s,@SERIAL_SPEED_SIMULATION_TRUE@,$SERIAL_SPEED_SIMULATION_TRUE,;t t +-s,@SERIAL_SPEED_SIMULATION_FALSE@,$SERIAL_SPEED_SIMULATION_FALSE,;t t +-s,@BUILD_EXAMPLE_KERNEL_TRUE@,$BUILD_EXAMPLE_KERNEL_TRUE,;t t +-s,@BUILD_EXAMPLE_KERNEL_FALSE@,$BUILD_EXAMPLE_KERNEL_FALSE,;t t +-s,@FSYS_CFLAGS@,$FSYS_CFLAGS,;t t +-s,@NET_CFLAGS@,$NET_CFLAGS,;t t +-s,@NET_EXTRAFLAGS@,$NET_EXTRAFLAGS,;t t +-s,@NETBOOT_DRIVERS@,$NETBOOT_DRIVERS,;t t +-s,@CCASFLAGS@,$CCASFLAGS,;t t +-s,@LIBOBJS@,$LIBOBJS,;t t +-s,@LTLIBOBJS@,$LTLIBOBJS,;t t +-CEOF +- +-_ACEOF +- +- cat >>$CONFIG_STATUS <<_ACEOF +- # Split the substitutions into bite-sized pieces for seds with +- # small command number limits, like on Digital OSF/1 and HP-UX. +- ac_max_sed_lines=48 +- ac_sed_frag=1 # Number of current file. +- ac_beg=1 # First line for current file. +- ac_end=$ac_max_sed_lines # Line after last line for current file. +- ac_more_lines=: +- ac_sed_cmds= +- while $ac_more_lines; do +- if test $ac_beg -gt 1; then +- sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag +- else +- sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag +- fi +- if test ! -s $tmp/subs.frag; then +- ac_more_lines=false +- else +- # The purpose of the label and of the branching condition is to +- # speed up the sed processing (if there are no `@' at all, there +- # is no need to browse any of the substitutions). +- # These are the two extra sed commands mentioned above. +- (echo ':t +- /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed +- if test -z "$ac_sed_cmds"; then +- ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" +- else +- ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" +- fi +- ac_sed_frag=`expr $ac_sed_frag + 1` +- ac_beg=$ac_end +- ac_end=`expr $ac_end + $ac_max_sed_lines` +- fi +- done +- if test -z "$ac_sed_cmds"; then +- ac_sed_cmds=cat +- fi +-fi # test -n "$CONFIG_FILES" +- +-_ACEOF +-cat >>$CONFIG_STATUS <<_ACEOF +-for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue +- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". +- case $ac_file in +- - | *:- | *:-:* ) # input from stdin +- cat >$tmp/stdin +- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- * ) ac_file_in=$ac_file.in ;; +- esac +- +- # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. +- ac_dir=`(dirname "$ac_file") 2>/dev/null || +-$as_expr X"$ac_file" : 'X(.*[^/])//*[^/][^/]*/*$' | \ +- X"$ac_file" : 'X(//)[^/]' | \ +- X"$ac_file" : 'X(//)$' | \ +- X"$ac_file" : 'X(/)' | \ +- . : '(.)' 2>/dev/null || +-echo X"$ac_file" | +- sed '/^X(.*[^/])//*[^/][^/]*/*$/{ s//\1/; q; } +- /^X(//)[^/].*/{ s//\1/; q; } +- /^X(//)$/{ s//\1/; q; } +- /^X(/).*/{ s//\1/; q; } +- s/.*/./; q'` +- { if $as_mkdir_p; then +- mkdir -p "$ac_dir" +- else +- as_dir="$ac_dir" +- as_dirs= +- while test ! -d "$as_dir"; do +- as_dirs="$as_dir $as_dirs" +- as_dir=`(dirname "$as_dir") 2>/dev/null || +-$as_expr X"$as_dir" : 'X(.*[^/])//*[^/][^/]*/*$' | \ +- X"$as_dir" : 'X(//)[^/]' | \ +- X"$as_dir" : 'X(//)$' | \ +- X"$as_dir" : 'X(/)' | \ +- . : '(.)' 2>/dev/null || +-echo X"$as_dir" | +- sed '/^X(.*[^/])//*[^/][^/]*/*$/{ s//\1/; q; } +- /^X(//)[^/].*/{ s//\1/; q; } +- /^X(//)$/{ s//\1/; q; } +- /^X(/).*/{ s//\1/; q; } +- s/.*/./; q'` +- done +- test ! -n "$as_dirs" || mkdir $as_dirs +- fi || { { echo "$as_me:$LINENO: error: cannot create directory "$ac_dir"" >&5 +-echo "$as_me: error: cannot create directory "$ac_dir"" >&2;} +- { (exit 1); exit 1; }; }; } +- +- ac_builddir=. +- +-if test "$ac_dir" != .; then +- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^.[\/],,'` +- # A "../" for each directory in $ac_dir_suffix. +- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\/]*,../,g'` +-else +- ac_dir_suffix= ac_top_builddir= +-fi +- +-case $srcdir in +- .) # No --srcdir option. We are building in place. +- ac_srcdir=. +- if test -z "$ac_top_builddir"; then +- ac_top_srcdir=. +- else +- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` +- fi ;; +- [\/]* | ?:[\/]* ) # Absolute path. +- ac_srcdir=$srcdir$ac_dir_suffix; +- ac_top_srcdir=$srcdir ;; +- *) # Relative path. +- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix +- ac_top_srcdir=$ac_top_builddir$srcdir ;; +-esac +- +-# Do not use `cd foo && pwd` to compute absolute paths, because +-# the directories may not exist. +-case `pwd` in +-.) ac_abs_builddir="$ac_dir";; +-*) +- case "$ac_dir" in +- .) ac_abs_builddir=`pwd`;; +- [\/]* | ?:[\/]* ) ac_abs_builddir="$ac_dir";; +- *) ac_abs_builddir=`pwd`/"$ac_dir";; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_builddir=${ac_top_builddir}.;; +-*) +- case ${ac_top_builddir}. in +- .) ac_abs_top_builddir=$ac_abs_builddir;; +- [\/]* | ?:[\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; +- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_srcdir=$ac_srcdir;; +-*) +- case $ac_srcdir in +- .) ac_abs_srcdir=$ac_abs_builddir;; +- [\/]* | ?:[\/]* ) ac_abs_srcdir=$ac_srcdir;; +- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_srcdir=$ac_top_srcdir;; +-*) +- case $ac_top_srcdir in +- .) ac_abs_top_srcdir=$ac_abs_builddir;; +- [\/]* | ?:[\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; +- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; +- esac;; +-esac +- +- +- case $INSTALL in +- [\/$]* | ?:[\/]* ) ac_INSTALL=$INSTALL ;; +- *) ac_INSTALL=$ac_top_builddir$INSTALL ;; +- esac +- +- if test x"$ac_file" != x-; then +- { echo "$as_me:$LINENO: creating $ac_file" >&5 +-echo "$as_me: creating $ac_file" >&6;} +- rm -f "$ac_file" +- fi +- # Let's still pretend it is `configure' which instantiates (i.e., don't +- # use $as_me), people would be surprised to read: +- # /* config.h. Generated by config.status. */ +- if test x"$ac_file" = x-; then +- configure_input= +- else +- configure_input="$ac_file. " +- fi +- configure_input=$configure_input"Generated from `echo $ac_file_in | +- sed 's,.*/,,'` by configure." +- +- # First look for the input files in the build tree, otherwise in the +- # src tree. +- ac_file_inputs=`IFS=: +- for f in $ac_file_in; do +- case $f in +- -) echo $tmp/stdin ;; +- [\/$]*) +- # Absolute (can't be DOS-style, as IFS=:) +- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +-echo "$as_me: error: cannot find input file: $f" >&2;} +- { (exit 1); exit 1; }; } +- echo "$f";; +- *) # Relative +- if test -f "$f"; then +- # Build tree +- echo "$f" +- elif test -f "$srcdir/$f"; then +- # Source tree +- echo "$srcdir/$f" +- else +- # /dev/null tree +- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +-echo "$as_me: error: cannot find input file: $f" >&2;} +- { (exit 1); exit 1; }; } +- fi;; +- esac +- done` || { (exit 1); exit 1; } +-_ACEOF +-cat >>$CONFIG_STATUS <<_ACEOF +- sed "$ac_vpsub +-$extrasub +-_ACEOF +-cat >>$CONFIG_STATUS <<_ACEOF +-:t +-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +-s,@configure_input@,$configure_input,;t t +-s,@srcdir@,$ac_srcdir,;t t +-s,@abs_srcdir@,$ac_abs_srcdir,;t t +-s,@top_srcdir@,$ac_top_srcdir,;t t +-s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t +-s,@builddir@,$ac_builddir,;t t +-s,@abs_builddir@,$ac_abs_builddir,;t t +-s,@top_builddir@,$ac_top_builddir,;t t +-s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +-s,@INSTALL@,$ac_INSTALL,;t t +-" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out +- rm -f $tmp/stdin +- if test x"$ac_file" != x-; then +- mv $tmp/out $ac_file +- else +- cat $tmp/out +- rm -f $tmp/out +- fi +- +-done +-_ACEOF +-cat >>$CONFIG_STATUS <<_ACEOF +- +-# +-# CONFIG_HEADER section. +-# +- +-# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +-# NAME is the cpp macro being defined and VALUE is the value it is being given. +-# +-# ac_d sets the value in "#define NAME VALUE" lines. +-ac_dA='s,^([ ]*)#([ ]*define[ ][ ]*)' +-ac_dB='[ ].*$,\1#\2' +-ac_dC=' ' +-ac_dD=',;t' +-# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +-ac_uA='s,^([ ]*)#([ ]*)undef([ ][ ]*)' +-ac_uB='$,\1#\2define\3' +-ac_uC=' ' +-ac_uD=',;t' +- +-for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue +- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". +- case $ac_file in +- - | *:- | *:-:* ) # input from stdin +- cat >$tmp/stdin +- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- * ) ac_file_in=$ac_file.in ;; +- esac +- +- test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +-echo "$as_me: creating $ac_file" >&6;} +- +- # First look for the input files in the build tree, otherwise in the +- # src tree. +- ac_file_inputs=`IFS=: +- for f in $ac_file_in; do +- case $f in +- -) echo $tmp/stdin ;; +- [\/$]*) +- # Absolute (can't be DOS-style, as IFS=:) +- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +-echo "$as_me: error: cannot find input file: $f" >&2;} +- { (exit 1); exit 1; }; } +- # Do quote $f, to prevent DOS paths from being IFS'd. +- echo "$f";; +- *) # Relative +- if test -f "$f"; then +- # Build tree +- echo "$f" +- elif test -f "$srcdir/$f"; then +- # Source tree +- echo "$srcdir/$f" +- else +- # /dev/null tree +- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +-echo "$as_me: error: cannot find input file: $f" >&2;} +- { (exit 1); exit 1; }; } +- fi;; +- esac +- done` || { (exit 1); exit 1; } +- # Remove the trailing spaces. +- sed 's/[ ]*$//' $ac_file_inputs >$tmp/in +- +-_ACEOF +- +-# Transform confdefs.h into two sed scripts, `conftest.defines' and +-# `conftest.undefs', that substitutes the proper values into +-# config.h.in to produce config.h. The first handles `#define' +-# templates, and the second `#undef' templates. +-# And first: Protect against being on the right side of a sed subst in +-# config.status. Protect against being in an unquoted here document +-# in config.status. +-rm -f conftest.defines conftest.undefs +-# Using a here document instead of a string reduces the quoting nightmare. +-# Putting comments in sed scripts is not portable. +-# +-# `end' is used to avoid that the second main sed command (meant for +-# 0-ary CPP macros) applies to n-ary macro definitions. +-# See the Autoconf documentation for `clear'. +-cat >confdef2sed.sed <<_ACEOF +-s/[\&,]/\&/g +-s,[\$`],\&,g +-t clear +-: clear +-s,^[ ]*#[ ]*define[ ][ ]*([^ (][^ (]*)(([^)]*))[ ]*(.*)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp +-t end +-s,^[ ]*#[ ]*define[ ][ ]*([^ ][^ ]*)[ ]*(.*)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +-: end +-_ACEOF +-# If some macros were called several times there might be several times +-# the same #defines, which is useless. Nevertheless, we may not want to +-# sort them, since we want the *last* AC-DEFINE to be honored. +-uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +-sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +-rm -f confdef2sed.sed +- +-# This sed command replaces #undef with comments. This is necessary, for +-# example, in the case of _POSIX_SOURCE, which is predefined and required +-# on some systems where configure will not decide to define it. +-cat >>conftest.undefs <<_ACEOF +-s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, +-_ACEOF +- +-# Break up conftest.defines because some shells have a limit on the size +-# of here documents, and old seds have small limits too (100 cmds). +-echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +-echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +-echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +-echo ' :' >>$CONFIG_STATUS +-rm -f conftest.tail +-while grep . conftest.defines >/dev/null +-do +- # Write a limited-size here document to $tmp/defines.sed. +- echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS +- # Speed up: don't consider the non `#define' lines. +- echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS +- # Work around the forget-to-reset-the-flag bug. +- echo 't clr' >>$CONFIG_STATUS +- echo ': clr' >>$CONFIG_STATUS +- sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS +- echo 'CEOF +- sed -f $tmp/defines.sed $tmp/in >$tmp/out +- rm -f $tmp/in +- mv $tmp/out $tmp/in +-' >>$CONFIG_STATUS +- sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail +- rm -f conftest.defines +- mv conftest.tail conftest.defines +-done +-rm -f conftest.defines +-echo ' fi # grep' >>$CONFIG_STATUS +-echo >>$CONFIG_STATUS +- +-# Break up conftest.undefs because some shells have a limit on the size +-# of here documents, and old seds have small limits too (100 cmds). +-echo ' # Handle all the #undef templates' >>$CONFIG_STATUS +-rm -f conftest.tail +-while grep . conftest.undefs >/dev/null +-do +- # Write a limited-size here document to $tmp/undefs.sed. +- echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS +- # Speed up: don't consider the non `#undef' +- echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS +- # Work around the forget-to-reset-the-flag bug. +- echo 't clr' >>$CONFIG_STATUS +- echo ': clr' >>$CONFIG_STATUS +- sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS +- echo 'CEOF +- sed -f $tmp/undefs.sed $tmp/in >$tmp/out +- rm -f $tmp/in +- mv $tmp/out $tmp/in +-' >>$CONFIG_STATUS +- sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail +- rm -f conftest.undefs +- mv conftest.tail conftest.undefs +-done +-rm -f conftest.undefs +- +-cat >>$CONFIG_STATUS <<_ACEOF +- # Let's still pretend it is `configure' which instantiates (i.e., don't +- # use $as_me), people would be surprised to read: +- # /* config.h. Generated by config.status. */ +- if test x"$ac_file" = x-; then +- echo "/* Generated by configure. */" >$tmp/config.h +- else +- echo "/* $ac_file. Generated by configure. */" >$tmp/config.h +- fi +- cat $tmp/in >>$tmp/config.h +- rm -f $tmp/in +- if test x"$ac_file" != x-; then +- if diff $ac_file $tmp/config.h >/dev/null 2>&1; then +- { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +-echo "$as_me: $ac_file is unchanged" >&6;} +- else +- ac_dir=`(dirname "$ac_file") 2>/dev/null || +-$as_expr X"$ac_file" : 'X(.*[^/])//*[^/][^/]*/*$' | \ +- X"$ac_file" : 'X(//)[^/]' | \ +- X"$ac_file" : 'X(//)$' | \ +- X"$ac_file" : 'X(/)' | \ +- . : '(.)' 2>/dev/null || +-echo X"$ac_file" | +- sed '/^X(.*[^/])//*[^/][^/]*/*$/{ s//\1/; q; } +- /^X(//)[^/].*/{ s//\1/; q; } +- /^X(//)$/{ s//\1/; q; } +- /^X(/).*/{ s//\1/; q; } +- s/.*/./; q'` +- { if $as_mkdir_p; then +- mkdir -p "$ac_dir" +- else +- as_dir="$ac_dir" +- as_dirs= +- while test ! -d "$as_dir"; do +- as_dirs="$as_dir $as_dirs" +- as_dir=`(dirname "$as_dir") 2>/dev/null || +-$as_expr X"$as_dir" : 'X(.*[^/])//*[^/][^/]*/*$' | \ +- X"$as_dir" : 'X(//)[^/]' | \ +- X"$as_dir" : 'X(//)$' | \ +- X"$as_dir" : 'X(/)' | \ +- . : '(.)' 2>/dev/null || +-echo X"$as_dir" | +- sed '/^X(.*[^/])//*[^/][^/]*/*$/{ s//\1/; q; } +- /^X(//)[^/].*/{ s//\1/; q; } +- /^X(//)$/{ s//\1/; q; } +- /^X(/).*/{ s//\1/; q; } +- s/.*/./; q'` +- done +- test ! -n "$as_dirs" || mkdir $as_dirs +- fi || { { echo "$as_me:$LINENO: error: cannot create directory "$ac_dir"" >&5 +-echo "$as_me: error: cannot create directory "$ac_dir"" >&2;} +- { (exit 1); exit 1; }; }; } +- +- rm -f $ac_file +- mv $tmp/config.h $ac_file +- fi +- else +- cat $tmp/config.h +- rm -f $tmp/config.h +- fi +-# Compute $ac_file's index in $config_headers. +-_am_stamp_count=1 +-for _am_header in $config_headers :; do +- case $_am_header in +- $ac_file | $ac_file:* ) +- break ;; +- * ) +- _am_stamp_count=`expr $_am_stamp_count + 1` ;; +- esac +-done +-echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || +-$as_expr X$ac_file : 'X(.*[^/])//*[^/][^/]*/*$' | \ +- X$ac_file : 'X(//)[^/]' | \ +- X$ac_file : 'X(//)$' | \ +- X$ac_file : 'X(/)' | \ +- . : '(.)' 2>/dev/null || +-echo X$ac_file | +- sed '/^X(.*[^/])//*[^/][^/]*/*$/{ s//\1/; q; } +- /^X(//)[^/].*/{ s//\1/; q; } +- /^X(//)$/{ s//\1/; q; } +- /^X(/).*/{ s//\1/; q; } +- s/.*/./; q'`/stamp-h$_am_stamp_count +-done +-_ACEOF +-cat >>$CONFIG_STATUS <<_ACEOF +- +-# +-# CONFIG_COMMANDS section. +-# +-for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue +- ac_dest=`echo "$ac_file" | sed 's,:.*,,'` +- ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_dir=`(dirname "$ac_dest") 2>/dev/null || +-$as_expr X"$ac_dest" : 'X(.*[^/])//*[^/][^/]*/*$' | \ +- X"$ac_dest" : 'X(//)[^/]' | \ +- X"$ac_dest" : 'X(//)$' | \ +- X"$ac_dest" : 'X(/)' | \ +- . : '(.)' 2>/dev/null || +-echo X"$ac_dest" | +- sed '/^X(.*[^/])//*[^/][^/]*/*$/{ s//\1/; q; } +- /^X(//)[^/].*/{ s//\1/; q; } +- /^X(//)$/{ s//\1/; q; } +- /^X(/).*/{ s//\1/; q; } +- s/.*/./; q'` +- { if $as_mkdir_p; then +- mkdir -p "$ac_dir" +- else +- as_dir="$ac_dir" +- as_dirs= +- while test ! -d "$as_dir"; do +- as_dirs="$as_dir $as_dirs" +- as_dir=`(dirname "$as_dir") 2>/dev/null || +-$as_expr X"$as_dir" : 'X(.*[^/])//*[^/][^/]*/*$' | \ +- X"$as_dir" : 'X(//)[^/]' | \ +- X"$as_dir" : 'X(//)$' | \ +- X"$as_dir" : 'X(/)' | \ +- . : '(.)' 2>/dev/null || +-echo X"$as_dir" | +- sed '/^X(.*[^/])//*[^/][^/]*/*$/{ s//\1/; q; } +- /^X(//)[^/].*/{ s//\1/; q; } +- /^X(//)$/{ s//\1/; q; } +- /^X(/).*/{ s//\1/; q; } +- s/.*/./; q'` +- done +- test ! -n "$as_dirs" || mkdir $as_dirs +- fi || { { echo "$as_me:$LINENO: error: cannot create directory "$ac_dir"" >&5 +-echo "$as_me: error: cannot create directory "$ac_dir"" >&2;} +- { (exit 1); exit 1; }; }; } +- +- ac_builddir=. +- +-if test "$ac_dir" != .; then +- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^.[\/],,'` +- # A "../" for each directory in $ac_dir_suffix. +- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\/]*,../,g'` +-else +- ac_dir_suffix= ac_top_builddir= +-fi +- +-case $srcdir in +- .) # No --srcdir option. We are building in place. +- ac_srcdir=. +- if test -z "$ac_top_builddir"; then +- ac_top_srcdir=. +- else +- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` +- fi ;; +- [\/]* | ?:[\/]* ) # Absolute path. +- ac_srcdir=$srcdir$ac_dir_suffix; +- ac_top_srcdir=$srcdir ;; +- *) # Relative path. +- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix +- ac_top_srcdir=$ac_top_builddir$srcdir ;; +-esac +- +-# Do not use `cd foo && pwd` to compute absolute paths, because +-# the directories may not exist. +-case `pwd` in +-.) ac_abs_builddir="$ac_dir";; +-*) +- case "$ac_dir" in +- .) ac_abs_builddir=`pwd`;; +- [\/]* | ?:[\/]* ) ac_abs_builddir="$ac_dir";; +- *) ac_abs_builddir=`pwd`/"$ac_dir";; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_builddir=${ac_top_builddir}.;; +-*) +- case ${ac_top_builddir}. in +- .) ac_abs_top_builddir=$ac_abs_builddir;; +- [\/]* | ?:[\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; +- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_srcdir=$ac_srcdir;; +-*) +- case $ac_srcdir in +- .) ac_abs_srcdir=$ac_abs_builddir;; +- [\/]* | ?:[\/]* ) ac_abs_srcdir=$ac_srcdir;; +- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_srcdir=$ac_top_srcdir;; +-*) +- case $ac_top_srcdir in +- .) ac_abs_top_srcdir=$ac_abs_builddir;; +- [\/]* | ?:[\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; +- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; +- esac;; +-esac +- +- +- { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +-echo "$as_me: executing $ac_dest commands" >&6;} +- case $ac_dest in +- depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do +- # Strip MF so we end up with the name of the file. +- mf=`echo "$mf" | sed -e 's/:.*$//'` +- # Check whether this is an Automake generated Makefile or not. +- # We used to match only the files named `Makefile.in', but +- # some people rename them; so instead we look at the file content. +- # Grep'ing the first line is not enough: some people post-process +- # each Makefile.in and add a new line on top of each file to say so. +- # So let's grep whole file. +- if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then +- dirpart=`(dirname "$mf") 2>/dev/null || +-$as_expr X"$mf" : 'X(.*[^/])//*[^/][^/]*/*$' | \ +- X"$mf" : 'X(//)[^/]' | \ +- X"$mf" : 'X(//)$' | \ +- X"$mf" : 'X(/)' | \ +- . : '(.)' 2>/dev/null || +-echo X"$mf" | +- sed '/^X(.*[^/])//*[^/][^/]*/*$/{ s//\1/; q; } +- /^X(//)[^/].*/{ s//\1/; q; } +- /^X(//)$/{ s//\1/; q; } +- /^X(/).*/{ s//\1/; q; } +- s/.*/./; q'` +- else +- continue +- fi +- # Extract the definition of DEPDIR, am__include, and am__quote +- # from the Makefile without running `make'. +- DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` +- test -z "$DEPDIR" && continue +- am__include=`sed -n 's/^am__include = //p' < "$mf"` +- test -z "am__include" && continue +- am__quote=`sed -n 's/^am__quote = //p' < "$mf"` +- # When using ansi2knr, U may be empty or an underscore; expand it +- U=`sed -n 's/^U = //p' < "$mf"` +- # Find all dependency output files, they are included files with +- # $(DEPDIR) in their names. We invoke sed twice because it is the +- # simplest approach to changing $(DEPDIR) to its actual value in the +- # expansion. +- for file in `sed -n " +- s/^$am__include $am__quote(.*(DEPDIR).*)$am__quote"'$/\1/p' <"$mf" | \ +- sed -e 's/$(DEPDIR)/'"$DEPDIR"'/g' -e 's/$U/'"$U"'/g'`; do +- # Make sure the directory exists. +- test -f "$dirpart/$file" && continue +- fdir=`(dirname "$file") 2>/dev/null || +-$as_expr X"$file" : 'X(.*[^/])//*[^/][^/]*/*$' | \ +- X"$file" : 'X(//)[^/]' | \ +- X"$file" : 'X(//)$' | \ +- X"$file" : 'X(/)' | \ +- . : '(.)' 2>/dev/null || +-echo X"$file" | +- sed '/^X(.*[^/])//*[^/][^/]*/*$/{ s//\1/; q; } +- /^X(//)[^/].*/{ s//\1/; q; } +- /^X(//)$/{ s//\1/; q; } +- /^X(/).*/{ s//\1/; q; } +- s/.*/./; q'` +- { if $as_mkdir_p; then +- mkdir -p $dirpart/$fdir +- else +- as_dir=$dirpart/$fdir +- as_dirs= +- while test ! -d "$as_dir"; do +- as_dirs="$as_dir $as_dirs" +- as_dir=`(dirname "$as_dir") 2>/dev/null || +-$as_expr X"$as_dir" : 'X(.*[^/])//*[^/][^/]*/*$' | \ +- X"$as_dir" : 'X(//)[^/]' | \ +- X"$as_dir" : 'X(//)$' | \ +- X"$as_dir" : 'X(/)' | \ +- . : '(.)' 2>/dev/null || +-echo X"$as_dir" | +- sed '/^X(.*[^/])//*[^/][^/]*/*$/{ s//\1/; q; } +- /^X(//)[^/].*/{ s//\1/; q; } +- /^X(//)$/{ s//\1/; q; } +- /^X(/).*/{ s//\1/; q; } +- s/.*/./; q'` +- done +- test ! -n "$as_dirs" || mkdir $as_dirs +- fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 +-echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} +- { (exit 1); exit 1; }; }; } +- +- # echo "creating $dirpart/$file" +- echo '# dummy' > "$dirpart/$file" +- done +-done +- ;; +- esac +-done +-_ACEOF +- +-cat >>$CONFIG_STATUS <<_ACEOF +- +-{ (exit 0); exit 0; } +-_ACEOF +-chmod +x $CONFIG_STATUS +-ac_clean_files=$ac_clean_files_save +- +- +-# configure is writing to config.log, and then calls config.status. +-# config.status does its own redirection, appending to config.log. +-# Unfortunately, on DOS this fails, as config.log is still kept open +-# by configure, so config.status won't be able to write to it; its +-# output is simply discarded. So we exec the FD to /dev/null, +-# effectively closing config.log, so it can be properly (re)opened and +-# appended to by config.status. When coming back to configure, we +-# need to make the FD available again. +-if test "$no_create" != yes; then +- ac_cs_success=: +- ac_config_status_args= +- test "$silent" = yes && +- ac_config_status_args="$ac_config_status_args --quiet" +- exec 5>/dev/null +- $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false +- exec 5>>config.log +- # Use ||, not &&, to avoid exiting from the if with $? = 1, which +- # would make configure fail if this is the last instruction. +- $ac_cs_success || { (exit 1); exit 1; } +-fi +- +diff --git a/configure.ac b/configure.in +similarity index 86% +rename from configure.ac +rename to configure.in +index bb9e1d9..e5970af 100644 +--- a/configure.ac ++++ b/configure.in +@@ -29,6 +29,65 @@ esac + AC_SUBST(host_cpu) + AC_SUBST(host_vendor) + ++# Specify the platform (such as firmware). ++AC_ARG_WITH([platform], ++ AS_HELP_STRING([--with-platform=PLATFORM], ++ [select the host platform [[guessed]]])) ++ ++# Guess the platform if not specified. ++if test "x$with_platform" = x; then ++ case "$host_cpu"-"$host_vendor" in ++ i386-*) platform=pc ;; ++ x86_64-*) platform=pc ;; ++ *) AC_MSG_ERROR([unsupported machine type $host_cpu-$host_vendor]) ;; ++ esac ++else ++ platform="$with_platform" ++fi ++ ++# Sanity check. ++case "$host_cpu"-"$platform" in ++ i386-pc) ;; ++ i386-efi) ;; ++ x86_64-pc) ;; ++ x86_64-efi) ;; ++ *) AC_MSG_ERROR([unsupported machine type "$host_cpu"-"$platform"]) ;; ++esac ++ ++if test "x$platform" = xefi; then ++ case "$host_cpu" in ++ i386) EFI_ARCH=ia32 ;; ++ x86_64) EFI_ARCH=x86_64 ;; ++ *) AC_MSG_ERROR([unsupported machine type "$host_cpu"]) ;; ++ esac ++ AC_SUBST(EFI_ARCH) ++fi ++ ++gnuefi_path=${libdir}/gnuefi ++gnuefi_crt0=${gnuefi_path}/crt0-efi-${EFI_ARCH}.o ++if ! test -f $gnuefi_crt0 ; then ++ gnuefi_crt0=crt0-efi.o ++fi ++GNUEFI_CRT0=${gnuefi_crt0} ++AC_SUBST(GNUEFI_CRT0) ++gnuefi_lds=${gnuefi_path}/elf_${EFI_ARCH}_efi.lds ++if ! test -f $gnuefi_lds ; then ++ gnuefi_lds=${EFI_ARCH}/elf_efi.lds ++fi ++GNUEFI_LDS=${gnuefi_lds} ++AC_SUBST(GNUEFI_LDS) ++LIBGNUEFI=${libdir}/libgnuefi.a ++AC_SUBST(LIBGNUEFI) ++LIBEFI=${libdir}/libefi.a ++AC_SUBST(LIBEFI) ++ ++AC_SUBST(platform) ++AM_CONDITIONAL(PLATFORM_EFI, test "x$platform" = xefi) ++ ++if test "x$platform" = xefi; then ++ AC_DEFINE(PLATFORM_EFI, 1, [Define if you run on EFI platform.]) ++fi ++ + # + # Options + # +@@ -46,7 +105,7 @@ if test "x$CFLAGS" = x; then + default_CFLAGS=yes + fi + +-if test "x$host_cpu" = xx86_64; then ++if test "x$platform" = xpc -a "x$host_cpu" = xx86_64; then + CFLAGS="-m32 $CFLAGS" + fi + +@@ -63,6 +122,8 @@ dnl Because recent automake complains about AS, set it here. + CCAS="$CC" + AC_SUBST(CCAS) + ++_AM_DEPENDENCIES(CCAS) ++ + AC_ARG_WITH(binutils, + [ --with-binutils=DIR search the directory DIR to find binutils]) + +@@ -114,6 +175,20 @@ if test "x$ac_cv_prog_gcc" = xyes; then + fi + fi + fi ++STAGE2_CFLAGS="$STAGE2_CFLAGS -isystem `$CC -print-file-name=include`" ++ ++LIBGCC=$(gcc $CFLAGS -static-libgcc -print-libgcc-file-name) ++AC_SUBST(LIBGCC) ++ ++LOADER_LDFLAGS="-Wl,--build-id=none ${LIBGCC}" ++AC_SUBST(LOADER_LDFLAGS) ++ ++if test "x$platform" = xefi; then ++ STAGE2_CFLAGS="$STAGE2_CFLAGS -fpic -fshort-wchar -fno-strict-aliasing -fno-merge-constants -fno-reorder-functions" ++ if test "x$EFI_ARCH" = xx86_64; then ++ STAGE2_CFLAGS="$STAGE2_CFLAGS -DEFI_FUNCTION_WRAPPER" ++ fi ++fi + + AC_SUBST(STAGE1_CFLAGS) + AC_SUBST(STAGE2_CFLAGS) +@@ -159,9 +234,12 @@ fi + + # Defined in acinclude.m4. + grub_ASM_USCORE +-grub_PROG_OBJCOPY_ABSOLUTE +-if test "x$grub_cv_prog_objcopy_absolute" != xyes; then +- AC_MSG_ERROR([GRUB requires a working absolute objcopy; upgrade your binutils]) ++ ++if test "x$platform" != xefi; then ++ grub_PROG_OBJCOPY_ABSOLUTE ++ if test "x$grub_cv_prog_objcopy_absolute" != xyes; then ++ AC_MSG_ERROR([GRUB requires a working absolute objcopy; upgrade your binutils]) ++ fi + fi + + grub_ASM_PREFIX_REQUIREMENT +@@ -207,9 +285,9 @@ AC_CHECK_LIB(util, opendisk, [GRUB_LIBS="$GRUB_LIBS -lutil" + + # Unless the user specify --without-curses, check for curses. + if test "x$with_curses" != "xno"; then +- AC_CHECK_LIB(ncurses, wgetch, [GRUB_LIBS="$GRUB_LIBS -lncurses" ++ AC_CHECK_LIB(ncurses, wgetch, [GRUB_LIBS="$GRUB_LIBS -Wl,-Bstatic -lncurses -ltinfo -Wl,-Bdynamic" + AC_DEFINE(HAVE_LIBCURSES, 1, [Define if you have a curses library])], +- [AC_CHECK_LIB(curses, wgetch, [GRUB_LIBS="$GRUB_LIBS -lcurses" ++ [AC_CHECK_LIB(curses, wgetch, [GRUB_LIBS="$GRUB_LIBS -Wl,-Bstatic -lcurses -Wl,-Bdynamic" + AC_DEFINE(HAVE_LIBCURSES, 1, [Define if you have a curses library])])]) + fi + +@@ -595,9 +673,18 @@ AC_ARG_ENABLE(diskless, + [ --enable-diskless enable diskless support]) + AM_CONDITIONAL(DISKLESS_SUPPORT, test "x$enable_diskless" = xyes) + ++dnl Graphical splashscreen support ++AC_ARG_ENABLE(graphics, ++ [ --disable-graphics disable graphics terminal support]) ++AM_CONDITIONAL(GRAPHICS_SUPPORT, test "x$enable_graphics" != xno) ++ + dnl Hercules terminal +-AC_ARG_ENABLE(hercules, +- [ --disable-hercules disable hercules terminal support]) ++if test "x$platform" = xefi; then ++ enable_hercules=no ++else ++ AC_ARG_ENABLE(hercules, ++ [ --disable-hercules disable hercules terminal support]) ++fi + AM_CONDITIONAL(HERCULES_SUPPORT, test "x$enable_hercules" != xno) + + dnl Serial terminal +@@ -662,9 +749,13 @@ AC_SUBST(CCASFLAGS) + + + dnl Output. ++if test "x$platform" = xefi; then ++ AC_CONFIG_FILES([efi/Makefile]) ++ AC_CONFIG_LINKS([efi/grub/cpu:efi/grub/$host_cpu]) ++fi + AC_CONFIG_FILES([Makefile stage1/Makefile stage2/Makefile \ + docs/Makefile lib/Makefile util/Makefile \ +- grub/Makefile netboot/Makefile util/grub-image \ +- util/grub-install util/grub-md5-crypt \ +- util/grub-terminfo util/grub-set-default]) ++ grub/Makefile netboot/Makefile util/grub-crypt \ ++ util/grub-image util/grub-install util/grub-md5-crypt \ ++ util/grub-terminfo]) + AC_OUTPUT +diff --git a/docs/.gitignore b/docs/.gitignore +new file mode 100644 +index 0000000..e440faf +--- /dev/null ++++ b/docs/.gitignore +@@ -0,0 +1,3 @@ ++Makefile.in ++Makefile ++.deps +diff --git a/docs/Makefile.am b/docs/Makefile.am +index db99e2d..fe6b22b 100644 +--- a/docs/Makefile.am ++++ b/docs/Makefile.am +@@ -2,7 +2,8 @@ info_TEXINFOS = grub.texi multiboot.texi + grub_TEXINFOS = internals.texi + EXAMPLES = boot.S kernel.c multiboot.h + multiboot_TEXINFOS = boot.S.texi kernel.c.texi multiboot.h.texi +-man_MANS = grub.8 mbchk.1 grub-install.8 grub-md5-crypt.8 grub-terminfo.8 ++man_MANS = grub.8 mbchk.1 grub-crypt.8 grub-install.8 grub-md5-crypt.8 \ ++ grub-terminfo.8 + HELP2MAN = help2man + SRC2TEXI = src2texi + noinst_SCRIPTS = $(HELP2MAN) $(SRC2TEXI) +@@ -51,6 +52,12 @@ $(srcdir)/mbchk.1: ../util/mbchk $(srcdir)/$(HELP2MAN) + --name="check the format of a Multiboot kernel" \ + --section=1 --output=$@ $< + ++$(srcdir)/grub-crypt.8: ../util/grub-crypt $(srcdir)/$(HELP2MAN) ++ chmod 755 $< ++ $(PERL) $(srcdir)/$(HELP2MAN) \ ++ --name="Encrypt a password" \ ++ --section=8 --output=$@ $< ++ + $(srcdir)/grub-md5-crypt.8: ../util/grub-md5-crypt $(srcdir)/$(HELP2MAN) + chmod 755 $< + $(PERL) $(srcdir)/$(HELP2MAN) \ +diff --git a/docs/Makefile.in b/docs/Makefile.in +deleted file mode 100644 +index 3e2de4b..0000000 +--- a/docs/Makefile.in ++++ /dev/null +@@ -1,770 +0,0 @@ +-# Makefile.in generated by automake 1.9.4 from Makefile.am. +-# @configure_input@ +- +-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +-# 2003, 2004 Free Software Foundation, Inc. +-# This Makefile.in is free software; the Free Software Foundation +-# gives unlimited permission to copy and/or distribute it, +-# with or without modifications, as long as this notice is preserved. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +-# PARTICULAR PURPOSE. +- +-@SET_MAKE@ +- +- +-SOURCES = $(kernel_SOURCES) +- +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ +-VPATH = @srcdir@ +-pkgdatadir = $(datadir)/@PACKAGE@ +-pkglibdir = $(libdir)/@PACKAGE@ +-pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = .. +-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ +-install_sh_DATA = $(install_sh) -c -m 644 +-install_sh_PROGRAM = $(install_sh) -c +-install_sh_SCRIPT = $(install_sh) -c +-INSTALL_HEADER = $(INSTALL_DATA) +-transform = $(program_transform_name) +-NORMAL_INSTALL = : +-PRE_INSTALL = : +-POST_INSTALL = : +-NORMAL_UNINSTALL = : +-PRE_UNINSTALL = : +-POST_UNINSTALL = : +-build_triplet = @build@ +-host_triplet = @host@ +-EXTRA_PROGRAMS = kernel$(EXEEXT) +-@BUILD_EXAMPLE_KERNEL_TRUE@noinst_PROGRAMS = kernel$(EXEEXT) +-subdir = docs +-DIST_COMMON = $(grub_TEXINFOS) $(multiboot_TEXINFOS) \ +- $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ +- $(srcdir)/stamp-vti $(srcdir)/version.texi mdate-sh \ +- texinfo.tex +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ +- $(top_srcdir)/configure.ac +-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ +- $(ACLOCAL_M4) +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/config.h +-CONFIG_CLEAN_FILES = +-PROGRAMS = $(noinst_PROGRAMS) +-am__kernel_SOURCES_DIST = boot.S kernel.c multiboot.h +-am__objects_1 = boot.$(OBJEXT) kernel-kernel.$(OBJEXT) +-@BUILD_EXAMPLE_KERNEL_TRUE@am_kernel_OBJECTS = $(am__objects_1) +-kernel_OBJECTS = $(am_kernel_OBJECTS) +-kernel_LDADD = $(LDADD) +-SCRIPTS = $(noinst_SCRIPTS) +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-am__depfiles_maybe = depfiles +-CCASCOMPILE = $(CCAS) $(AM_CCASFLAGS) $(CCASFLAGS) +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-SOURCES = $(kernel_SOURCES) +-DIST_SOURCES = $(am__kernel_SOURCES_DIST) +-INFO_DEPS = $(srcdir)/grub.info $(srcdir)/multiboot.info +-am__TEXINFO_TEX_DIR = $(srcdir) +-DVIS = grub.dvi multiboot.dvi +-PDFS = grub.pdf multiboot.pdf +-PSS = grub.ps multiboot.ps +-HTMLS = grub.html multiboot.html +-TEXINFOS = grub.texi multiboot.texi +-TEXI2DVI = texi2dvi +-TEXI2PDF = $(TEXI2DVI) --pdf --batch +-MAKEINFOHTML = $(MAKEINFO) --html +-AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS) +-DVIPS = dvips +-am__installdirs = "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)" \ +- "$(DESTDIR)$(man8dir)" +-man1dir = $(mandir)/man1 +-man8dir = $(mandir)/man8 +-NROFF = nroff +-MANS = $(man_MANS) +-ETAGS = etags +-CTAGS = ctags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +-ACLOCAL = @ACLOCAL@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ +-AMTAR = @AMTAR@ +-AUTOCONF = @AUTOCONF@ +-AUTOHEADER = @AUTOHEADER@ +-AUTOMAKE = @AUTOMAKE@ +-AWK = @AWK@ +-BUILD_EXAMPLE_KERNEL_FALSE = @BUILD_EXAMPLE_KERNEL_FALSE@ +-BUILD_EXAMPLE_KERNEL_TRUE = @BUILD_EXAMPLE_KERNEL_TRUE@ +-CC = @CC@ +-CCAS = @CCAS@ +-CCASFLAGS = @CCASFLAGS@ +-CCDEPMODE = @CCDEPMODE@ +-CFLAGS = @CFLAGS@ +-CPP = @CPP@ +-CPPFLAGS = @CPPFLAGS@ +-CYGPATH_W = @CYGPATH_W@ +-DEFS = @DEFS@ +-DEPDIR = @DEPDIR@ +-DISKLESS_SUPPORT_FALSE = @DISKLESS_SUPPORT_FALSE@ +-DISKLESS_SUPPORT_TRUE = @DISKLESS_SUPPORT_TRUE@ +-ECHO_C = @ECHO_C@ +-ECHO_N = @ECHO_N@ +-ECHO_T = @ECHO_T@ +-EGREP = @EGREP@ +-EXEEXT = @EXEEXT@ +-FSYS_CFLAGS = @FSYS_CFLAGS@ +-GRUB_CFLAGS = @GRUB_CFLAGS@ +-GRUB_LIBS = @GRUB_LIBS@ +-HERCULES_SUPPORT_FALSE = @HERCULES_SUPPORT_FALSE@ +-HERCULES_SUPPORT_TRUE = @HERCULES_SUPPORT_TRUE@ +-INSTALL_DATA = @INSTALL_DATA@ +-INSTALL_PROGRAM = @INSTALL_PROGRAM@ +-INSTALL_SCRIPT = @INSTALL_SCRIPT@ +-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +-LDFLAGS = @LDFLAGS@ +-LIBOBJS = @LIBOBJS@ +-LIBS = @LIBS@ +-LTLIBOBJS = @LTLIBOBJS@ +-MAINT = @MAINT@ +-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +-MAKEINFO = @MAKEINFO@ +-NETBOOT_DRIVERS = @NETBOOT_DRIVERS@ +-NETBOOT_SUPPORT_FALSE = @NETBOOT_SUPPORT_FALSE@ +-NETBOOT_SUPPORT_TRUE = @NETBOOT_SUPPORT_TRUE@ +-NET_CFLAGS = @NET_CFLAGS@ +-NET_EXTRAFLAGS = @NET_EXTRAFLAGS@ +-OBJCOPY = @OBJCOPY@ +-OBJEXT = @OBJEXT@ +-PACKAGE = @PACKAGE@ +-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +-PACKAGE_NAME = @PACKAGE_NAME@ +-PACKAGE_STRING = @PACKAGE_STRING@ +-PACKAGE_TARNAME = @PACKAGE_TARNAME@ +-PACKAGE_VERSION = @PACKAGE_VERSION@ +-PATH_SEPARATOR = @PATH_SEPARATOR@ +-PERL = @PERL@ +-RANLIB = @RANLIB@ +-SERIAL_SPEED_SIMULATION_FALSE = @SERIAL_SPEED_SIMULATION_FALSE@ +-SERIAL_SPEED_SIMULATION_TRUE = @SERIAL_SPEED_SIMULATION_TRUE@ +-SERIAL_SUPPORT_FALSE = @SERIAL_SUPPORT_FALSE@ +-SERIAL_SUPPORT_TRUE = @SERIAL_SUPPORT_TRUE@ +-SET_MAKE = @SET_MAKE@ +-SHELL = @SHELL@ +-STAGE1_CFLAGS = @STAGE1_CFLAGS@ +-STAGE2_CFLAGS = @STAGE2_CFLAGS@ +-STRIP = @STRIP@ +-VERSION = @VERSION@ +-ac_ct_CC = @ac_ct_CC@ +-ac_ct_OBJCOPY = @ac_ct_OBJCOPY@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__include = @am__include@ +-am__leading_dot = @am__leading_dot@ +-am__quote = @am__quote@ +-am__tar = @am__tar@ +-am__untar = @am__untar@ +-bindir = @bindir@ +-build = @build@ +-build_alias = @build_alias@ +-build_cpu = @build_cpu@ +-build_os = @build_os@ +-build_vendor = @build_vendor@ +-datadir = @datadir@ +-exec_prefix = @exec_prefix@ +-host = @host@ +-host_alias = @host_alias@ +-host_cpu = @host_cpu@ +-host_os = @host_os@ +-host_vendor = @host_vendor@ +-includedir = @includedir@ +-infodir = @infodir@ +-install_sh = @install_sh@ +-libdir = @libdir@ +-libexecdir = @libexecdir@ +-localstatedir = @localstatedir@ +-mandir = @mandir@ +-mkdir_p = @mkdir_p@ +-oldincludedir = @oldincludedir@ +-prefix = @prefix@ +-program_transform_name = @program_transform_name@ +-sbindir = @sbindir@ +-sharedstatedir = @sharedstatedir@ +-sysconfdir = @sysconfdir@ +-target_alias = @target_alias@ +-info_TEXINFOS = grub.texi multiboot.texi +-grub_TEXINFOS = internals.texi +-EXAMPLES = boot.S kernel.c multiboot.h +-multiboot_TEXINFOS = boot.S.texi kernel.c.texi multiboot.h.texi +-man_MANS = grub.8 mbchk.1 grub-install.8 grub-md5-crypt.8 grub-terminfo.8 +-HELP2MAN = help2man +-SRC2TEXI = src2texi +-noinst_SCRIPTS = $(HELP2MAN) $(SRC2TEXI) +-@BUILD_EXAMPLE_KERNEL_TRUE@kernel_SOURCES = $(EXAMPLES) +-@BUILD_EXAMPLE_KERNEL_TRUE@kernel_CFLAGS = -fno-builtin -nostdinc -O -g -Wall \ +-@BUILD_EXAMPLE_KERNEL_TRUE@ -imacros $(top_builddir)/config.h +- +-@BUILD_EXAMPLE_KERNEL_TRUE@kernel_LDFLAGS = -nostdlib -Wl,-N -Wl,-Ttext -Wl,100000 +-EXTRA_DIST = menu.lst $(man_MANS) $(noinst_SCRIPTS) \ +- $(EXAMPLES) $(multiboot_TEXINFOS) +- +-CLEANFILES = $(noinst_PROGRAMS) +-all: all-am +- +-.SUFFIXES: +-.SUFFIXES: .S .c .dvi .html .info .o .obj .pdf .ps .texi +-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) +- @for dep in $?; do \ +- case '$(am__configure_deps)' in \ +- *$$dep*) \ +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +- && exit 0; \ +- exit 1;; \ +- esac; \ +- done; \ +- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/Makefile'; \ +- cd $(top_srcdir) && \ +- $(AUTOMAKE) --gnu docs/Makefile +-.PRECIOUS: Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- @case '$?' in \ +- *config.status*) \ +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ +- *) \ +- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ +- esac; +- +-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +- +-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +- +-clean-noinstPROGRAMS: +- -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) +-kernel$(EXEEXT): $(kernel_OBJECTS) $(kernel_DEPENDENCIES) +- @rm -f kernel$(EXEEXT) +- $(LINK) $(kernel_LDFLAGS) $(kernel_OBJECTS) $(kernel_LDADD) $(LIBS) +- +-mostlyclean-compile: +- -rm -f *.$(OBJEXT) +- +-distclean-compile: +- -rm -f *.tab.c +- +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kernel-kernel.Po@am__quote@ +- +-.S.o: +- $(CCASCOMPILE) -c $< +- +-.S.obj: +- $(CCASCOMPILE) -c `$(CYGPATH_W) '$<'` +- +-.c.o: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c $< +- +-.c.obj: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +- +-kernel-kernel.o: kernel.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(kernel_CFLAGS) $(CFLAGS) -MT kernel-kernel.o -MD -MP -MF "$(DEPDIR)/kernel-kernel.Tpo" -c -o kernel-kernel.o `test -f 'kernel.c' || echo '$(srcdir)/'`kernel.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/kernel-kernel.Tpo" "$(DEPDIR)/kernel-kernel.Po"; else rm -f "$(DEPDIR)/kernel-kernel.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='kernel.c' object='kernel-kernel.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(kernel_CFLAGS) $(CFLAGS) -c -o kernel-kernel.o `test -f 'kernel.c' || echo '$(srcdir)/'`kernel.c +- +-kernel-kernel.obj: kernel.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(kernel_CFLAGS) $(CFLAGS) -MT kernel-kernel.obj -MD -MP -MF "$(DEPDIR)/kernel-kernel.Tpo" -c -o kernel-kernel.obj `if test -f 'kernel.c'; then $(CYGPATH_W) 'kernel.c'; else $(CYGPATH_W) '$(srcdir)/kernel.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/kernel-kernel.Tpo" "$(DEPDIR)/kernel-kernel.Po"; else rm -f "$(DEPDIR)/kernel-kernel.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='kernel.c' object='kernel-kernel.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(kernel_CFLAGS) $(CFLAGS) -c -o kernel-kernel.obj `if test -f 'kernel.c'; then $(CYGPATH_W) 'kernel.c'; else $(CYGPATH_W) '$(srcdir)/kernel.c'; fi` +- +-.texi.info: +- restore=: && backupdir="$(am__leading_dot)am$$$$" && \ +- am__cwd=`pwd` && cd $(srcdir) && \ +- rm -rf $$backupdir && mkdir $$backupdir && \ +- for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \ +- if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \ +- done; \ +- cd "$$am__cwd"; \ +- if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ +- -o $@ $<; \ +- then \ +- rc=0; \ +- cd $(srcdir); \ +- else \ +- rc=$$?; \ +- cd $(srcdir) && \ +- $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \ +- fi; \ +- rm -rf $$backupdir; exit $$rc +- +-.texi.dvi: +- TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ +- MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ +- $(TEXI2DVI) $< +- +-.texi.pdf: +- TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ +- MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ +- $(TEXI2PDF) $< +- +-.texi.html: +- rm -rf $(@:.html=.htp) +- if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ +- -o $(@:.html=.htp) $<; \ +- then \ +- rm -rf $@; \ +- if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \ +- mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \ +- else \ +- if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \ +- rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \ +- exit 1; \ +- fi +-$(srcdir)/grub.info: grub.texi $(srcdir)/version.texi $(grub_TEXINFOS) +-grub.dvi: grub.texi $(srcdir)/version.texi $(grub_TEXINFOS) +-grub.pdf: grub.texi $(srcdir)/version.texi $(grub_TEXINFOS) +-grub.html: grub.texi $(srcdir)/version.texi $(grub_TEXINFOS) +-$(srcdir)/version.texi: @MAINTAINER_MODE_TRUE@ $(srcdir)/stamp-vti +-$(srcdir)/stamp-vti: grub.texi $(top_srcdir)/configure +- @(dir=.; test -f ./grub.texi || dir=$(srcdir); \ +- set `$(SHELL) $(srcdir)/mdate-sh $$dir/grub.texi`; \ +- echo "@set UPDATED $$1 $$2 $$3"; \ +- echo "@set UPDATED-MONTH $$2 $$3"; \ +- echo "@set EDITION $(VERSION)"; \ +- echo "@set VERSION $(VERSION)") > vti.tmp +- @cmp -s vti.tmp $(srcdir)/version.texi \ +- || (echo "Updating $(srcdir)/version.texi"; \ +- cp vti.tmp $(srcdir)/version.texi) +- -@rm -f vti.tmp +- @cp $(srcdir)/version.texi $@ +- +-mostlyclean-vti: +- -rm -f vti.tmp +- +-maintainer-clean-vti: +-@MAINTAINER_MODE_TRUE@ -rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi +-$(srcdir)/multiboot.info: multiboot.texi $(multiboot_TEXINFOS) +-multiboot.dvi: multiboot.texi $(multiboot_TEXINFOS) +-multiboot.pdf: multiboot.texi $(multiboot_TEXINFOS) +-multiboot.html: multiboot.texi $(multiboot_TEXINFOS) +-.dvi.ps: +- $(DVIPS) -o $@ $< +- +-uninstall-info-am: +- $(PRE_UNINSTALL) +- @if (install-info --version && \ +- install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \ +- list='$(INFO_DEPS)'; \ +- for file in $$list; do \ +- relfile=`echo "$$file" | sed 's|^.*/||'`; \ +- echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \ +- install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \ +- done; \ +- else :; fi +- @$(NORMAL_UNINSTALL) +- @list='$(INFO_DEPS)'; \ +- for file in $$list; do \ +- relfile=`echo "$$file" | sed 's|^.*/||'`; \ +- relfile_i=`echo "$$relfile" | sed 's|.info$$||;s|$$|.i|'`; \ +- (if cd "$(DESTDIR)$(infodir)"; then \ +- echo " rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9])"; \ +- rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \ +- else :; fi); \ +- done +- +-dist-info: $(INFO_DEPS) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- list='$(INFO_DEPS)'; \ +- for base in $$list; do \ +- case $$base in \ +- $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \ +- esac; \ +- if test -f $$base; then d=.; else d=$(srcdir); fi; \ +- for file in $$d/$$base*; do \ +- relfile=`expr "$$file" : "$$d/(.*)"`; \ +- test -f $(distdir)/$$relfile || \ +- cp -p $$file $(distdir)/$$relfile; \ +- done; \ +- done +- +-mostlyclean-aminfo: +- -rm -rf grub.aux grub.cp grub.cps grub.fn grub.ky grub.log grub.pg grub.tmp \ +- grub.toc grub.tp grub.vr grub.dvi grub.pdf grub.ps grub.html \ +- multiboot.aux multiboot.cp multiboot.cps multiboot.fn \ +- multiboot.ky multiboot.log multiboot.pg multiboot.tmp \ +- multiboot.toc multiboot.tp multiboot.vr multiboot.dvi \ +- multiboot.pdf multiboot.ps multiboot.html +- +-maintainer-clean-aminfo: +- @list='$(INFO_DEPS)'; for i in $$list; do \ +- i_i=`echo "$$i" | sed 's|.info$$||;s|$$|.i|'`; \ +- echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \ +- rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \ +- done +-install-man1: $(man1_MANS) $(man_MANS) +- @$(NORMAL_INSTALL) +- test -z "$(man1dir)" || $(mkdir_p) "$(DESTDIR)$(man1dir)" +- @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ +- l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ +- for i in $$l2; do \ +- case "$$i" in \ +- *.1*) list="$$list $$i" ;; \ +- esac; \ +- done; \ +- for i in $$list; do \ +- if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ +- else file=$$i; fi; \ +- ext=`echo $$i | sed -e 's/^.*\.//'`; \ +- case "$$ext" in \ +- 1*) ;; \ +- *) ext='1' ;; \ +- esac; \ +- inst=`echo $$i | sed -e 's/\.[0-9a-z]*$$//'`; \ +- inst=`echo $$inst | sed -e 's/^.*///'`; \ +- inst=`echo $$inst | sed '$(transform)'`.$$ext; \ +- echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ +- $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \ +- done +-uninstall-man1: +- @$(NORMAL_UNINSTALL) +- @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ +- l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ +- for i in $$l2; do \ +- case "$$i" in \ +- *.1*) list="$$list $$i" ;; \ +- esac; \ +- done; \ +- for i in $$list; do \ +- ext=`echo $$i | sed -e 's/^.*\.//'`; \ +- case "$$ext" in \ +- 1*) ;; \ +- *) ext='1' ;; \ +- esac; \ +- inst=`echo $$i | sed -e 's/\.[0-9a-z]*$$//'`; \ +- inst=`echo $$inst | sed -e 's/^.*///'`; \ +- inst=`echo $$inst | sed '$(transform)'`.$$ext; \ +- echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \ +- rm -f "$(DESTDIR)$(man1dir)/$$inst"; \ +- done +-install-man8: $(man8_MANS) $(man_MANS) +- @$(NORMAL_INSTALL) +- test -z "$(man8dir)" || $(mkdir_p) "$(DESTDIR)$(man8dir)" +- @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \ +- l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ +- for i in $$l2; do \ +- case "$$i" in \ +- *.8*) list="$$list $$i" ;; \ +- esac; \ +- done; \ +- for i in $$list; do \ +- if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ +- else file=$$i; fi; \ +- ext=`echo $$i | sed -e 's/^.*\.//'`; \ +- case "$$ext" in \ +- 8*) ;; \ +- *) ext='8' ;; \ +- esac; \ +- inst=`echo $$i | sed -e 's/\.[0-9a-z]*$$//'`; \ +- inst=`echo $$inst | sed -e 's/^.*///'`; \ +- inst=`echo $$inst | sed '$(transform)'`.$$ext; \ +- echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \ +- $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst"; \ +- done +-uninstall-man8: +- @$(NORMAL_UNINSTALL) +- @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \ +- l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ +- for i in $$l2; do \ +- case "$$i" in \ +- *.8*) list="$$list $$i" ;; \ +- esac; \ +- done; \ +- for i in $$list; do \ +- ext=`echo $$i | sed -e 's/^.*\.//'`; \ +- case "$$ext" in \ +- 8*) ;; \ +- *) ext='8' ;; \ +- esac; \ +- inst=`echo $$i | sed -e 's/\.[0-9a-z]*$$//'`; \ +- inst=`echo $$inst | sed -e 's/^.*///'`; \ +- inst=`echo $$inst | sed '$(transform)'`.$$ext; \ +- echo " rm -f '$(DESTDIR)$(man8dir)/$$inst'"; \ +- rm -f "$(DESTDIR)$(man8dir)/$$inst"; \ +- done +- +-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- mkid -fID $$unique +-tags: TAGS +- +-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ +- $(TAGS_FILES) $(LISP) +- tags=; \ +- here=`pwd`; \ +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ +- test -n "$$unique" || unique=$$empty_fix; \ +- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique; \ +- fi +-ctags: CTAGS +-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ +- $(TAGS_FILES) $(LISP) +- tags=; \ +- here=`pwd`; \ +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- test -z "$(CTAGS_ARGS)$$tags$$unique" \ +- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ +- $$tags $$unique +- +-GTAGS: +- here=`$(am__cd) $(top_builddir) && pwd` \ +- && cd $(top_srcdir) \ +- && gtags -i $(GTAGS_ARGS) $$here +- +-distclean-tags: +- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +- +-distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ +- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkdir_p) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ +- if test -d $$d/$$file; then \ +- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ +- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ +- fi; \ +- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ +- else \ +- test -f $(distdir)/$$file \ +- || cp -p $$d/$$file $(distdir)/$$file \ +- || exit 1; \ +- fi; \ +- done +- $(MAKE) $(AM_MAKEFLAGS) \ +- top_distdir="$(top_distdir)" distdir="$(distdir)" \ +- dist-info +-check-am: all-am +-check: check-am +-all-am: Makefile $(INFO_DEPS) $(PROGRAMS) $(SCRIPTS) $(MANS) +-installdirs: +- for dir in "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man8dir)"; do \ +- test -z "$$dir" || $(mkdir_p) "$$dir"; \ +- done +-install: install-am +-install-exec: install-exec-am +-install-data: install-data-am +-uninstall: uninstall-am +- +-install-am: all-am +- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +- +-installcheck: installcheck-am +-install-strip: +- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ +- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ +- `test -z '$(STRIP)' || \ +- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +-mostlyclean-generic: +- +-clean-generic: +- -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) +- +-distclean-generic: +- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) +- +-maintainer-clean-generic: +- @echo "This command is intended for maintainers to use" +- @echo "it deletes files that may require special tools to rebuild." +-clean: clean-am +- +-clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am +- +-distclean: distclean-am +- -rm -rf ./$(DEPDIR) +- -rm -f Makefile +-distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-tags +- +-dvi: dvi-am +- +-dvi-am: $(DVIS) +- +-html: html-am +- +-html-am: $(HTMLS) +- +-info: info-am +- +-info-am: $(INFO_DEPS) +- +-install-data-am: install-info-am install-man +- +-install-exec-am: +- +-install-info: install-info-am +- +-install-info-am: $(INFO_DEPS) +- @$(NORMAL_INSTALL) +- test -z "$(infodir)" || $(mkdir_p) "$(DESTDIR)$(infodir)" +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- list='$(INFO_DEPS)'; \ +- for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- esac; \ +- if test -f $$file; then d=.; else d=$(srcdir); fi; \ +- file_i=`echo "$$file" | sed 's|.info$$||;s|$$|.i|'`; \ +- for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \ +- $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \ +- if test -f $$ifile; then \ +- relfile=`echo "$$ifile" | sed 's|^.*/||'`; \ +- echo " $(INSTALL_DATA) '$$ifile' '$(DESTDIR)$(infodir)/$$relfile'"; \ +- $(INSTALL_DATA) "$$ifile" "$(DESTDIR)$(infodir)/$$relfile"; \ +- else : ; fi; \ +- done; \ +- done +- @$(POST_INSTALL) +- @if (install-info --version && \ +- install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \ +- list='$(INFO_DEPS)'; \ +- for file in $$list; do \ +- relfile=`echo "$$file" | sed 's|^.*/||'`; \ +- echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\ +- install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\ +- done; \ +- else : ; fi +-install-man: install-man1 install-man8 +- +-installcheck-am: +- +-maintainer-clean: maintainer-clean-am +- -rm -rf ./$(DEPDIR) +- -rm -f Makefile +-maintainer-clean-am: distclean-am maintainer-clean-aminfo \ +- maintainer-clean-generic maintainer-clean-vti +- +-mostlyclean: mostlyclean-am +- +-mostlyclean-am: mostlyclean-aminfo mostlyclean-compile \ +- mostlyclean-generic mostlyclean-vti +- +-pdf: pdf-am +- +-pdf-am: $(PDFS) +- +-ps: ps-am +- +-ps-am: $(PSS) +- +-uninstall-am: uninstall-info-am uninstall-man +- +-uninstall-man: uninstall-man1 uninstall-man8 +- +-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ +- clean-noinstPROGRAMS ctags dist-info distclean \ +- distclean-compile distclean-generic distclean-tags distdir dvi \ +- dvi-am html html-am info info-am install install-am \ +- install-data install-data-am install-exec install-exec-am \ +- install-info install-info-am install-man install-man1 \ +- install-man8 install-strip installcheck installcheck-am \ +- installdirs maintainer-clean maintainer-clean-aminfo \ +- maintainer-clean-generic maintainer-clean-vti mostlyclean \ +- mostlyclean-aminfo mostlyclean-compile mostlyclean-generic \ +- mostlyclean-vti pdf pdf-am ps ps-am tags uninstall \ +- uninstall-am uninstall-info-am uninstall-man uninstall-man1 \ +- uninstall-man8 +- +- +-@BUILD_EXAMPLE_KERNEL_TRUE@boot.o: multiboot.h +- +-# Cancel the rule %.texi -> %. This rule may confuse make to determine +-# the dependecies. +-.texi: +- +-%.c.texi: %.c $(srcdir)/$(SRC2TEXI) +- $(SHELL) $(srcdir)/$(SRC2TEXI) $(srcdir) $< $@ +- +-%.h.texi: %.h $(srcdir)/$(SRC2TEXI) +- $(SHELL) $(srcdir)/$(SRC2TEXI) $(srcdir) $< $@ +- +-%.S.texi: %.S $(srcdir)/$(SRC2TEXI) +- $(SHELL) $(srcdir)/$(SRC2TEXI) $(srcdir) $< $@ +- +-@MAINTAINER_MODE_TRUE@$(srcdir)/grub.8: ../grub/grub $(srcdir)/$(HELP2MAN) +-@MAINTAINER_MODE_TRUE@ $(PERL) $(srcdir)/$(HELP2MAN) --name="the grub shell" \ +-@MAINTAINER_MODE_TRUE@ --section=8 --output=$@ $< +- +-@MAINTAINER_MODE_TRUE@$(srcdir)/grub-install.8: ../util/grub-install $(srcdir)/$(HELP2MAN) +-@MAINTAINER_MODE_TRUE@ chmod 755 $< +-@MAINTAINER_MODE_TRUE@ $(PERL) $(srcdir)/$(HELP2MAN) --name="install GRUB on your drive" \ +-@MAINTAINER_MODE_TRUE@ --section=8 --output=$@ $< +- +-@MAINTAINER_MODE_TRUE@$(srcdir)/mbchk.1: ../util/mbchk $(srcdir)/$(HELP2MAN) +-@MAINTAINER_MODE_TRUE@ $(PERL) $(srcdir)/$(HELP2MAN) \ +-@MAINTAINER_MODE_TRUE@ --name="check the format of a Multiboot kernel" \ +-@MAINTAINER_MODE_TRUE@ --section=1 --output=$@ $< +- +-@MAINTAINER_MODE_TRUE@$(srcdir)/grub-md5-crypt.8: ../util/grub-md5-crypt $(srcdir)/$(HELP2MAN) +-@MAINTAINER_MODE_TRUE@ chmod 755 $< +-@MAINTAINER_MODE_TRUE@ $(PERL) $(srcdir)/$(HELP2MAN) \ +-@MAINTAINER_MODE_TRUE@ --name="Encrypt a password in MD5 format" \ +-@MAINTAINER_MODE_TRUE@ --section=8 --output=$@ $< +- +-@MAINTAINER_MODE_TRUE@$(srcdir)/grub-terminfo.8: ../util/grub-terminfo $(srcdir)/$(HELP2MAN) +-@MAINTAINER_MODE_TRUE@ chmod 755 $< +-@MAINTAINER_MODE_TRUE@ $(PERL) $(srcdir)/$(HELP2MAN) \ +-@MAINTAINER_MODE_TRUE@ --name="Generate a terminfo command from a terminfo name" \ +-@MAINTAINER_MODE_TRUE@ --section=8 --output=$@ $< +-# Tell versions [3.59,3.63) of GNU make to not export all variables. +-# Otherwise a system limit (for SysV at least) may be exceeded. +-.NOEXPORT: +diff --git a/docs/grub-crypt.8 b/docs/grub-crypt.8 +new file mode 100644 +index 0000000..eb132d7 +--- /dev/null ++++ b/docs/grub-crypt.8 +@@ -0,0 +1,39 @@ ++." DO NOT MODIFY THIS FILE! It was generated by help2man 1.23. ++.TH GRUB-CRYPT "1" "January 2010" "grub-crypt (GNU GRUB 0.97)" FSF ++.SH NAME ++grub-crypt - manual page for grub-crypt (GNU GRUB 0.97) ++.SH SYNOPSIS ++.B grub-crypt ++[\fIOPTION\fR]... ++.SH DESCRIPTION ++Encrypt a password. ++.TP ++\fB-h\fR, \fB--help\fR ++Print this message and exit ++.TP ++\fB-v\fR, \fB--version\fR ++Print the version information and exit ++.TP ++\fB--md5\fR ++Use MD5 to encrypt the password ++.TP ++\fB--sha-256\fR ++Use SHA-256 to encrypt the password ++.TP ++\fB--sha-512\fR ++Use SHA-512 to encrypt the password (default) ++.SH "REPORTING BUGS" ++Report bugs to bug-grub@gnu.org. ++EOF ++.SH "SEE ALSO" ++The full documentation for ++.B grub-crypt ++is maintained as a Texinfo manual. If the ++.B info ++and ++.B grub-crypt ++programs are properly installed at your site, the command ++.IP ++.B info grub-crypt ++.PP ++should give you access to the complete manual. +diff --git a/docs/grub-install.8 b/docs/grub-install.8 +index ac588a3..accff22 100644 +--- a/docs/grub-install.8 ++++ b/docs/grub-install.8 +@@ -30,6 +30,8 @@ BIOS + .TP + \fB--recheck\fR + probe a device map even if it already exists ++ ++This option is unreliable and its use is strongly discouraged. + .PP + INSTALL_DEVICE can be a GRUB device name or a system device filename. + .PP +diff --git a/docs/grub.8 b/docs/grub.8 +index 92149f7..7a087d6 100644 +--- a/docs/grub.8 ++++ b/docs/grub.8 +@@ -15,7 +15,7 @@ turn on batch mode for non-interactive use + specify stage2 boot_drive [default=0x0] + .TP + \fB--config-file\fR=\fIFILE\fR +-specify stage2 config_file [default=/boot/grub/menu.lst] ++specify stage2 config_file [default=/boot/grub/grub.conf] + .TP + \fB--device-map\fR=\fIFILE\fR + use the device map file FILE +diff --git a/docs/grub.info b/docs/grub.info +index f48783c..7692f31 100644 +--- a/docs/grub.info ++++ b/docs/grub.info +@@ -1,5 +1,4 @@ +-This is ../../docs/grub.info, produced by makeinfo version 4.8 from +-../../docs/grub.texi. ++This is grub.info, produced by makeinfo version 4.9 from grub.texi. + + INFO-DIR-SECTION Kernel + START-INFO-DIR-ENTRY +@@ -1147,7 +1146,7 @@ your OS. There's a solution to that - GRUB provides a menu interface + (*note Menu interface::) from which you can select an item (using arrow + keys) that will do everything to boot an OS. + +- To enable the menu, you need a configuration file, `menu.lst' under ++ To enable the menu, you need a configuration file, `grub.conf' under + the boot directory. We'll analyze an example file. + + The file first contains some general settings, the menu interface +@@ -1693,12 +1692,12 @@ There are two ways to specify files, by "absolute file name" and by + + An absolute file name resembles a Unix absolute file name, using `/' + for the directory separator (not `' as in DOS). One example is +-`(hd0,0)/boot/grub/menu.lst'. This means the file `/boot/grub/menu.lst' +-in the first partition of the first hard disk. If you omit the device +-name in an absolute file name, GRUB uses GRUB's "root device" +-implicitly. So if you set the root device to, say, `(hd1,0)' by the +-command `root' (*note root::), then `/boot/kernel' is the same as +-`(hd1,0)/boot/kernel'. ++`(hd0,0)/boot/grub/grub.conf'. This means the file ++`/boot/grub/grub.conf' in the first partition of the first hard disk. ++If you omit the device name in an absolute file name, GRUB uses GRUB's ++"root device" implicitly. So if you set the root device to, say, ++`(hd1,0)' by the command `root' (*note root::), then `/boot/kernel' is ++the same as `(hd1,0)/boot/kernel'. + + + File: grub.info, Node: Block list syntax, Prev: File name syntax, Up: Filesystem +@@ -2023,6 +2022,7 @@ Commands usable anywhere in the menu and in the command-line. + * rarp:: Initialize a network device via RARP + * serial:: Set up a serial device + * setkey:: Configure the key map ++* splashimage:: Use a splash image + * terminal:: Choose a terminal + * terminfo:: Define escape sequences for a terminal + * tftpserver:: Specify a TFTP server +@@ -2258,7 +2258,7 @@ File: grub.info, Node: serial, Next: setkey, Prev: rarp, Up: General command + support. See also *Note Serial terminal::. + + +-File: grub.info, Node: setkey, Next: terminal, Prev: serial, Up: General commands ++File: grub.info, Node: setkey, Next: splashimage, Prev: serial, Up: General commands + + 13.2.13 setkey + -------------- +@@ -2384,9 +2384,20 @@ File: grub.info, Node: setkey, Next: terminal, Prev: serial, Up: General com + ` ' + + +-File: grub.info, Node: terminal, Next: terminfo, Prev: setkey, Up: General commands ++File: grub.info, Node: splashimage, Next: terminal, Prev: setkey, Up: General commands + +-13.2.14 terminal ++13.2.14 splashimage ++------------------- ++ ++ -- Command: splashimage file ++ Select an image to use as the background image. This should be ++ specified using normal GRUB device naming syntax. The format of ++ the file is a gzipped xpm which is 640x480 with a 14 color palette. ++ ++ ++File: grub.info, Node: terminal, Next: terminfo, Prev: splashimage, Up: General commands ++ ++13.2.15 terminal + ---------------- + + -- Command: terminal [`--dumb'] [`--no-echo'] [`--no-edit'] +@@ -2421,7 +2432,7 @@ File: grub.info, Node: terminal, Next: terminfo, Prev: setkey, Up: General c + + File: grub.info, Node: terminfo, Next: tftpserver, Prev: terminal, Up: General commands + +-13.2.15 terminfo ++13.2.16 terminfo + ---------------- + + -- Command: terminfo `--name=name' `--cursor-address=seq' +@@ -2439,7 +2450,7 @@ File: grub.info, Node: terminfo, Next: tftpserver, Prev: terminal, Up: Gener + + File: grub.info, Node: tftpserver, Next: unhide, Prev: terminfo, Up: General commands + +-13.2.16 tftpserver ++13.2.17 tftpserver + ------------------ + + -- Command: tftpserver ipaddr +@@ -2454,7 +2465,7 @@ File: grub.info, Node: tftpserver, Next: unhide, Prev: terminfo, Up: General + + File: grub.info, Node: unhide, Prev: tftpserver, Up: General commands + +-13.2.17 unhide ++13.2.18 unhide + -------------- + + -- Command: unhide partition +@@ -3405,9 +3416,9 @@ calls with UNIX system calls and libc functions. + grub shell just ignores this option. + + `--config-file=FILE' +- Read the configuration file FILE instead of `/boot/grub/menu.lst'. +- The format is the same as the normal GRUB syntax. See *Note +- Filesystem::, for more information. ++ Read the configuration file FILE instead of ++ `/boot/grub/grub.conf'. The format is the same as the normal GRUB ++ syntax. See *Note Filesystem::, for more information. + + `--boot-drive=DRIVE' + Set the stage2 BOOT_DRIVE to DRIVE. This argument should be an +@@ -3551,8 +3562,9 @@ name. + + `--recheck' + Recheck the device map, even if `/boot/grub/device.map' already +- exists. You should use this option whenever you add/remove a disk +- into/from your computer. ++ exists. ++ ++ This option is unreliable and its use is strongly discouraged. + + + File: grub.info, Node: Invoking grub-md5-crypt, Next: Invoking grub-terminfo, Prev: Invoking grub-install, Up: Top +@@ -4279,6 +4291,7 @@ Index + * serial: serial. (line 9) + * setkey: setkey. (line 7) + * setup: setup. (line 8) ++* splashimage: splashimage. (line 7) + * terminal: terminal. (line 9) + * terminfo: terminfo. (line 9) + * testload: testload. (line 7) +@@ -4293,163 +4306,164 @@ Index + + + Tag Table: +-Node: Top1487 +-Node: Introduction3266 +-Node: Overview3643 +-Node: Overview-Footnotes5865 +-Ref: Overview-Footnote-15926 +-Node: History6087 +-Node: Features7208 +-Node: Features-Footnotes12976 +-Ref: Features-Footnote-113037 +-Node: Role of a boot loader13182 +-Node: Role of a boot loader-Footnotes14520 +-Ref: Role of a boot loader-Footnote-114607 +-Node: Naming convention14686 +-Node: Installation17621 +-Node: Creating a GRUB boot floppy19363 +-Node: Installing GRUB natively20181 +-Node: Installing GRUB natively-Footnotes22461 +-Ref: Installing GRUB natively-Footnote-122554 +-Node: Installing GRUB using grub-install22739 +-Node: Making a GRUB bootable CD-ROM25685 +-Node: Making a GRUB bootable CD-ROM-Footnotes27730 +-Ref: Making a GRUB bootable CD-ROM-Footnote-127833 +-Node: Booting27908 +-Node: General boot methods28363 +-Node: Loading an operating system directly29104 +-Node: Chain-loading30408 +-Node: Chain-loading-Footnotes31718 +-Ref: Chain-loading-Footnote-131789 +-Node: OS-specific notes31861 +-Node: GNU/Hurd32237 +-Node: GNU/Linux32856 +-Node: FreeBSD34104 +-Node: NetBSD34617 +-Node: OpenBSD35275 +-Node: DOS/Windows35475 +-Node: SCO UnixWare37301 +-Node: QNX37719 +-Node: Making your system robust37969 +-Node: Booting once-only39294 +-Node: Booting fallback systems41219 +-Node: Configuration44066 +-Node: Network48495 +-Node: General usage of network support48989 +-Node: General usage of network support-Footnotes50850 +-Ref: General usage of network support-Footnote-150959 +-Node: Diskless51027 +-Node: Serial terminal53211 +-Node: Preset Menu55444 +-Node: Security57812 +-Node: Images60620 +-Node: Filesystem63131 +-Node: Device syntax63814 +-Node: File name syntax65308 +-Node: Block list syntax66051 +-Node: Interface66784 +-Node: Command-line interface67661 +-Node: Command-line interface-Footnotes69602 +-Ref: Command-line interface-Footnote-169691 +-Node: Menu interface69786 +-Node: Menu entry editor70796 +-Node: Hidden menu interface71875 +-Node: Commands72452 +-Node: Menu-specific commands73029 +-Node: default74200 +-Node: fallback74678 +-Node: hiddenmenu75229 +-Node: timeout75717 +-Node: title75995 +-Node: General commands76266 +-Node: bootp77579 +-Node: color78058 +-Node: device79532 +-Node: dhcp80104 +-Node: hide80689 +-Node: ifconfig81066 +-Node: pager81642 +-Node: partnew81976 +-Node: parttype82412 +-Node: password82779 +-Node: rarp83598 +-Node: serial83899 +-Node: setkey85172 +-Node: terminal87341 +-Node: terminfo88878 +-Node: tftpserver89565 +-Node: unhide90111 +-Node: Command-line and menu entry commands90486 +-Node: blocklist93017 +-Node: boot93259 +-Node: cat93580 +-Node: chainloader93884 +-Node: cmp94500 +-Node: configfile95051 +-Node: debug95265 +-Node: displayapm95649 +-Node: displaymem95860 +-Node: embed96562 +-Node: embed-Footnotes97096 +-Ref: embed-Footnote-197151 +-Node: find97208 +-Node: fstest97588 +-Node: geometry98273 +-Node: halt98885 +-Node: help99212 +-Node: impsprobe99833 +-Node: initrd100232 +-Node: install100571 +-Node: install-Footnotes103415 +-Ref: install-Footnote-1103474 +-Node: ioprobe103571 +-Node: kernel103896 +-Node: lock105016 +-Node: makeactive105591 +-Node: map105903 +-Node: md5crypt106470 +-Node: module106817 +-Node: modulenounzip107394 +-Node: pause107687 +-Node: quit108101 +-Node: reboot108377 +-Node: read108558 +-Node: root108800 +-Node: rootnoverify109677 +-Node: savedefault110232 +-Node: setup111208 +-Node: testload112274 +-Node: testvbe112884 +-Node: uppermem113255 +-Node: vbeprobe113837 +-Node: Troubleshooting114220 +-Node: Stage1 errors114758 +-Node: Stage1.5 errors116135 +-Node: Stage2 errors116573 +-Node: Invoking the grub shell124033 +-Node: Basic usage124786 +-Node: Installation under UNIX127073 +-Node: Device map128748 +-Node: Invoking grub-install129896 +-Node: Invoking grub-md5-crypt131484 +-Node: Invoking grub-terminfo132133 +-Node: Invoking grub-set-default132899 +-Node: Invoking mbchk134700 +-Node: Obtaining and Building GRUB135214 +-Node: Reporting bugs136631 +-Node: Future139435 +-Node: Internals139926 +-Node: Memory map141149 +-Node: Embedded data142627 +-Node: Filesystem interface144644 +-Node: Command interface148077 +-Node: Bootstrap tricks149392 +-Node: I/O ports detection151541 +-Node: Memory detection151813 +-Node: Low-level disk I/O152105 +-Node: MBR152374 +-Node: Partition table152571 +-Node: Submitting patches152844 +-Node: Index154332 ++Node: Top1465 ++Node: Introduction3244 ++Node: Overview3621 ++Node: Overview-Footnotes5843 ++Ref: Overview-Footnote-15904 ++Node: History6065 ++Node: Features7186 ++Node: Features-Footnotes12954 ++Ref: Features-Footnote-113015 ++Node: Role of a boot loader13160 ++Node: Role of a boot loader-Footnotes14498 ++Ref: Role of a boot loader-Footnote-114585 ++Node: Naming convention14664 ++Node: Installation17599 ++Node: Creating a GRUB boot floppy19341 ++Node: Installing GRUB natively20159 ++Node: Installing GRUB natively-Footnotes22439 ++Ref: Installing GRUB natively-Footnote-122532 ++Node: Installing GRUB using grub-install22717 ++Node: Making a GRUB bootable CD-ROM25663 ++Node: Making a GRUB bootable CD-ROM-Footnotes27708 ++Ref: Making a GRUB bootable CD-ROM-Footnote-127811 ++Node: Booting27886 ++Node: General boot methods28341 ++Node: Loading an operating system directly29082 ++Node: Chain-loading30386 ++Node: Chain-loading-Footnotes31696 ++Ref: Chain-loading-Footnote-131767 ++Node: OS-specific notes31839 ++Node: GNU/Hurd32215 ++Node: GNU/Linux32834 ++Node: FreeBSD34082 ++Node: NetBSD34595 ++Node: OpenBSD35253 ++Node: DOS/Windows35453 ++Node: SCO UnixWare37279 ++Node: QNX37697 ++Node: Making your system robust37947 ++Node: Booting once-only39272 ++Node: Booting fallback systems41197 ++Node: Configuration44044 ++Node: Network48474 ++Node: General usage of network support48968 ++Node: General usage of network support-Footnotes50829 ++Ref: General usage of network support-Footnote-150938 ++Node: Diskless51006 ++Node: Serial terminal53190 ++Node: Preset Menu55423 ++Node: Security57791 ++Node: Images60599 ++Node: Filesystem63110 ++Node: Device syntax63793 ++Node: File name syntax65287 ++Node: Block list syntax66032 ++Node: Interface66765 ++Node: Command-line interface67642 ++Node: Command-line interface-Footnotes69583 ++Ref: Command-line interface-Footnote-169672 ++Node: Menu interface69767 ++Node: Menu entry editor70777 ++Node: Hidden menu interface71856 ++Node: Commands72433 ++Node: Menu-specific commands73010 ++Node: default74181 ++Node: fallback74659 ++Node: hiddenmenu75210 ++Node: timeout75698 ++Node: title75976 ++Node: General commands76247 ++Node: bootp77611 ++Node: color78090 ++Node: device79564 ++Node: dhcp80136 ++Node: hide80721 ++Node: ifconfig81098 ++Node: pager81674 ++Node: partnew82008 ++Node: parttype82444 ++Node: password82811 ++Node: rarp83630 ++Node: serial83931 ++Node: setkey85204 ++Node: splashimage87376 ++Node: terminal87754 ++Node: terminfo89296 ++Node: tftpserver89983 ++Node: unhide90529 ++Node: Command-line and menu entry commands90904 ++Node: blocklist93435 ++Node: boot93677 ++Node: cat93998 ++Node: chainloader94302 ++Node: cmp94918 ++Node: configfile95469 ++Node: debug95683 ++Node: displayapm96067 ++Node: displaymem96278 ++Node: embed96980 ++Node: embed-Footnotes97514 ++Ref: embed-Footnote-197569 ++Node: find97626 ++Node: fstest98006 ++Node: geometry98691 ++Node: halt99303 ++Node: help99630 ++Node: impsprobe100251 ++Node: initrd100650 ++Node: install100989 ++Node: install-Footnotes103833 ++Ref: install-Footnote-1103892 ++Node: ioprobe103989 ++Node: kernel104314 ++Node: lock105434 ++Node: makeactive106009 ++Node: map106321 ++Node: md5crypt106888 ++Node: module107235 ++Node: modulenounzip107812 ++Node: pause108105 ++Node: quit108519 ++Node: reboot108795 ++Node: read108976 ++Node: root109218 ++Node: rootnoverify110095 ++Node: savedefault110650 ++Node: setup111626 ++Node: testload112692 ++Node: testvbe113302 ++Node: uppermem113673 ++Node: vbeprobe114255 ++Node: Troubleshooting114638 ++Node: Stage1 errors115176 ++Node: Stage1.5 errors116553 ++Node: Stage2 errors116991 ++Node: Invoking the grub shell124451 ++Node: Basic usage125204 ++Node: Installation under UNIX127492 ++Node: Device map129167 ++Node: Invoking grub-install130315 ++Node: Invoking grub-md5-crypt131884 ++Node: Invoking grub-terminfo132533 ++Node: Invoking grub-set-default133299 ++Node: Invoking mbchk135100 ++Node: Obtaining and Building GRUB135614 ++Node: Reporting bugs137031 ++Node: Future139835 ++Node: Internals140326 ++Node: Memory map141549 ++Node: Embedded data143027 ++Node: Filesystem interface145044 ++Node: Command interface148477 ++Node: Bootstrap tricks149792 ++Node: I/O ports detection151941 ++Node: Memory detection152213 ++Node: Low-level disk I/O152505 ++Node: MBR152774 ++Node: Partition table152971 ++Node: Submitting patches153244 ++Node: Index154732 + + End Tag Table +diff --git a/docs/grub.texi b/docs/grub.texi +index 51d330a..5fd324d 100644 +--- a/docs/grub.texi ++++ b/docs/grub.texi +@@ -21,6 +21,7 @@ + @dircategory Kernel + @direntry + * GRUB: (grub). The GRand Unified Bootloader ++* grub-crypt: (grub)Invoking grub-crypt. Encrypt a password + * grub-install: (grub)Invoking grub-install. Install GRUB on your drive + * grub-md5-crypt: (grub)Invoking grub-md5-crypt. Encrypt a password + in MD5 format +@@ -115,8 +116,9 @@ This edition documents version @value{VERSION}. + * Commands:: The list of available builtin commands + * Troubleshooting:: Error messages produced by GRUB + * Invoking the grub shell:: How to use the grub shell ++* Invoking grub-crypt:: How to generate an encrypted password + * Invoking grub-install:: How to use the GRUB installer +-* Invoking grub-md5-crypt:: How to generate a cryptic password ++* Invoking grub-md5-crypt:: How to generate an MD5-encrypted password + * Invoking grub-terminfo:: How to generate a terminfo command + * Invoking grub-set-default:: How to set a default boot entry + * Invoking mbchk:: How to use the Multiboot checker +@@ -1265,7 +1267,7 @@ OS. There's a solution to that - GRUB provides a menu interface + keys) that will do everything to boot an OS. + + To enable the menu, you need a configuration file, +-@file{menu.lst} under the boot directory. We'll analyze an example ++@file{grub.conf} under the boot directory. We'll analyze an example + file. + + The file first contains some general settings, the menu interface +@@ -1685,27 +1687,17 @@ run the command @command{password} in your configuration file + (@pxref{password}), like this: + + @example +-password --md5 PASSWORD ++password --encrypted PASSWORD + @end example + + If this is specified, GRUB disallows any interactive control, until you + press the key @key{p} and enter a correct password. The option +-@option{--md5} tells GRUB that @samp{PASSWORD} is in MD5 format. If it ++@option{--encrypted} tells GRUB that @samp{PASSWORD} is encrypted format. If it + is omitted, GRUB assumes the @samp{PASSWORD} is in clear text. + +-You can encrypt your password with the command @command{md5crypt} +-(@pxref{md5crypt}). For example, run the grub shell (@pxref{Invoking the +-grub shell}), and enter your password: +- +-@example +-@group +-grub> md5crypt +-Password: ********** +-Encrypted: $1$U$JK7xFegdxWH6VuppCUSIb. +-@end group +-@end example +- +-Then, cut and paste the encrypted password to your configuration file. ++You can encrypt your password with the program @command{grub-crypt} ++(@pxref{Invoking grub-crypt}). Then, cut and paste the encrypted password to ++your configuration file. + + Also, you can specify an optional argument to @command{password}. See + this example: +@@ -1882,8 +1874,8 @@ There are two ways to specify files, by @dfn{absolute file name} and by + + An absolute file name resembles a Unix absolute file name, using + @samp{/} for the directory separator (not @samp{} as in DOS). One +-example is @samp{(hd0,0)/boot/grub/menu.lst}. This means the file +-@file{/boot/grub/menu.lst} in the first partition of the first hard ++example is @samp{(hd0,0)/boot/grub/grub.conf}. This means the file ++@file{/boot/grub/grub.conf} in the first partition of the first hard + disk. If you omit the device name in an absolute file name, GRUB uses + GRUB's @dfn{root device} implicitly. So if you set the root device to, + say, @samp{(hd1,0)} by the command @command{root} (@pxref{root}), then +@@ -2199,6 +2191,7 @@ Commands usable anywhere in the menu and in the command-line. + * rarp:: Initialize a network device via RARP + * serial:: Set up a serial device + * setkey:: Configure the key map ++* splashimage:: Use a splash image + * terminal:: Choose a terminal + * terminfo:: Define escape sequences for a terminal + * tftpserver:: Specify a TFTP server +@@ -2398,7 +2391,7 @@ is the new partition type and must be a number in the range 0-0xff. + @node password + @subsection password + +-@deffn Command password [@option{--md5}] passwd [new-config-file] ++@deffn Command password [@option{--md5}] [@option{--encrypted}] passwd [new-config-file] + If used in the first section of a menu file, disable all interactive + editing control (menu entry editor and command-line) and entries + protected by the command @command{lock}. If the password @var{passwd} is +@@ -2408,7 +2401,9 @@ specified. Otherwise, GRUB will just unlock the privileged instructions. + You can also use this command in the script section, in which case it + will ask for the password, before continuing. The option + @option{--md5} tells GRUB that @var{passwd} is encrypted with +-@command{md5crypt} (@pxref{md5crypt}). ++@command{md5crypt} (@pxref{md5crypt}), the option @option{--encrypted} ++tells GRUB that @var{passwd} is using one of the crypt formats (GRUB currently ++supports MD5, SHA-256 and SHA-512 encryption). + @end deffn + + +@@ -2578,6 +2573,16 @@ character each of the symbols corresponds: + @end deffn + + ++@node splashimage ++@subsection splashimage ++ ++@deffn Command splashimage file ++Select an image to use as the background image. This should be ++specified using normal GRUB device naming syntax. The format of the ++file is a gzipped xpm which is 640x480 with a 14 color palette. ++@end deffn ++ ++ + @node terminal + @subsection terminal + +@@ -3542,7 +3547,7 @@ ignores this option. + + @item --config-file=@var{file} + Read the configuration file @var{file} instead of +-@file{/boot/grub/menu.lst}. The format is the same as the normal GRUB ++@file{/boot/grub/grub.conf}. The format is the same as the normal GRUB + syntax. See @ref{Filesystem}, for more information. + + @item --boot-drive=@var{drive} +@@ -3653,6 +3658,31 @@ comments in the file if needed, as the grub shell assumes that a line is + just a comment if the first character is @samp{#}. + + ++@node Invoking grub-crypt ++@chapter Invoking grub-crypt ++ ++The program @command{grub-crypt} encrypts a password in one of the specified ++formats. Passwords encrypted by this program can be used with the ++command @command{password} (@pxref{password}). ++ ++@command{grub-crypt} accepts the following options: ++ ++@table @option ++@item --help ++Print a summary of the command-line options and exit. ++ ++@item --version ++Print the version information and exit. ++ ++@item --md5 ++Use MD5 for password encryption. ++@item --sha-256 ++Use SHA-256 for password encryption. ++@item --sha-512 ++Use SHA-512 for password encryption. This is the default. ++@end table ++ ++ + @node Invoking grub-install + @chapter Invoking grub-install + +@@ -3702,8 +3732,9 @@ Use @var{file} as the grub shell. You can append arbitrary options to + + @item --recheck + Recheck the device map, even if @file{/boot/grub/device.map} already +-exists. You should use this option whenever you add/remove a disk +-into/from your computer. ++exists. ++ ++This option is unreliable and its use is strongly discouraged. + @end table + + +diff --git a/docs/stamp-vti b/docs/stamp-vti +index b97de24..eb5144d 100644 +--- a/docs/stamp-vti ++++ b/docs/stamp-vti +@@ -1,4 +1,4 @@ +-@set UPDATED 8 May 2005 +-@set UPDATED-MONTH May 2005 ++@set UPDATED 7 August 2007 ++@set UPDATED-MONTH August 2007 + @set EDITION 0.97 + @set VERSION 0.97 +diff --git a/docs/version.texi b/docs/version.texi +index b97de24..eb5144d 100644 +--- a/docs/version.texi ++++ b/docs/version.texi +@@ -1,4 +1,4 @@ +-@set UPDATED 8 May 2005 +-@set UPDATED-MONTH May 2005 ++@set UPDATED 7 August 2007 ++@set UPDATED-MONTH August 2007 + @set EDITION 0.97 + @set VERSION 0.97 +diff --git a/efi/.gitignore b/efi/.gitignore +new file mode 100644 +index 0000000..a0e4294 +--- /dev/null ++++ b/efi/.gitignore +@@ -0,0 +1,7 @@ ++.deps ++Makefile.in ++Makefile ++*.a ++*.o ++*.so ++*.efi +diff --git a/efi/Makefile.am b/efi/Makefile.am +new file mode 100644 +index 0000000..1d5bd15 +--- /dev/null ++++ b/efi/Makefile.am +@@ -0,0 +1,76 @@ ++ ++pkglibdir = $(libdir)/$(PACKAGE)/$(host_cpu)-$(host_vendor) ++pkgdatadir = $(datadir)/$(PACKAGE)/$(host_cpu)-$(host_vendor) ++ ++if PLATFORM_EFI ++ ++if NETBOOT_SUPPORT ++NETBOOT_FLAGS = -I$(top_srcdir)/netboot -DSUPPORT_NETBOOT=1 ++else ++NETBOOT_FLAGS = ++endif ++ ++if SERIAL_SUPPORT ++SERIAL_FLAGS = -DSUPPORT_SERIAL=1 ++else ++SERIAL_FLAGS = ++endif ++ ++if HERCULES_SUPPORT ++HERCULES_FLAGS = -DSUPPORT_HERCULES=1 ++else ++HERCULES_FLAGS = ++endif ++ ++if GRAPHICS_SUPPORT ++GRAPHICS_FLAGS = -DSUPPORT_GRAPHICS=1 ++else ++GRAPHICS_FLAGS = ++endif ++ ++GRUBEFI_FORMAT = efi-app-$(EFI_ARCH) ++GRUBSO_LD_SCRIPT = @GNUEFI_LDS@ ++GRUBSO_LD_FLAGS = -T $(GRUBSO_LD_SCRIPT) -nostdlib -shared -Bsymbolic ++ ++GRUBSO_OBJS = efimain.o ++GRUBSO_LIBS = @GNUEFI_CRT0@ $(top_srcdir)/stage2/libstage2.a \ ++ libgrubefi.a @LIBGCC@ ++ ++if NETBOOT_SUPPORT ++GRUBSO_LIBS += $(top_srcdir)/netboot/libdrivers.a ++endif ++ ++pkgdata_DATA = grub.efi ++ ++grub.efi: grub.so ++ $(OBJCOPY) -j .text -j .sdata -j .data -j .dynamic -j .dynsym -j .rel \ ++ -j .rela -j .reloc --target=$(GRUBEFI_FORMAT) $^ $@ ++ ++grub.so: $(GRUBSO_OBJS) $(GRUBSO_LIBS) @LIBGNUEFI@ ++ $(LD) -o $@ $(GRUBSO_LD_FLAGS) $^ ++ echo '-------------- unresolved symbols ---------------------' ++ ! nm $@ | grep -iw u ++ echo '-------------------------------------------------------' ++ ++crt0-efi.o: $(EFI_ARCH)/crt0-efi.S ++ $(CC) -o $@ -c $(libgrubefi_a_CFLAGS) $^ ++ ++efimain.o: efimain.c ++ $(CC) -o $@ -c $(libgrubefi_a_CFLAGS) $^ ++ ++clean-local: ++ -rm -rf grub.so grub.efi ++ ++RELOC_FLAGS = $(STAGE2_CFLAGS) -I$(top_srcdir)/stage1 \ ++ -I$(top_srcdir)/lib -I. -I$(top_srcdir) -I$(top_srcdir)/stage2 \ ++ -fno-builtin $(NETBOOT_FLAGS) $(SERIAL_FLAGS) \ ++ $(HERCULES_FLAGS) $(GRAPHICS_FLAGS) ++ ++noinst_LIBRARIES = libgrubefi.a ++libgrubefi_a_SOURCES = $(EFI_ARCH)/callwrap.S eficore.c efimm.c efimisc.c \ ++ eficon.c efidisk.c graphics.c efigraph.c efiuga.c efidp.c \ ++ font_8x16.c efiserial.c $(EFI_ARCH)/loader/linux.c efichainloader.c \ ++ xpm.c pxe.c efitftp.c ++libgrubefi_a_CFLAGS = $(RELOC_FLAGS) -nostdinc ++ ++endif +diff --git a/efi/byteswap.h b/efi/byteswap.h +new file mode 100644 +index 0000000..5a057c4 +--- /dev/null ++++ b/efi/byteswap.h +@@ -0,0 +1,37 @@ ++#ifndef BYTESWAP_H ++#define BYTESWAP_H 1 ++ ++#if defined(__i386__) ++#define LITTLE_ENDIAN 1 ++#elif defined(__x86_64__) ++#define LITTLE_ENDIAN 1 ++#else ++#error endian not defined ++#endif ++ ++#define bswap_16(x) \ ++ ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)) ++ ++#define bswap_32(x) \ ++ ((((x) & 0xff000000) >> 24) | (((x) & 0x00ff0000) >> 8) | \ ++ (((x) & 0x0000ff00) << 8) | (((x) & 0x000000ff) << 24)) ++ ++static inline grub_efi_uint16_t htons(grub_efi_uint16_t hostshort) ++{ ++#ifdef LITTLE_ENDIAN ++ return bswap_16(hostshort); ++#else ++ return hostshort; ++#endif ++} ++ ++static inline grub_efi_uint32_t htonl(grub_efi_uint32_t hostshort) ++{ ++#ifdef LITTLE_ENDIAN ++ return bswap_32(hostshort); ++#else ++ return hostshort; ++#endif ++} ++ ++#endif /* BYTESWAP_H */ +diff --git a/efi/dhcp.h b/efi/dhcp.h +new file mode 100644 +index 0000000..a82a522 +--- /dev/null ++++ b/efi/dhcp.h +@@ -0,0 +1,133 @@ ++#ifndef DHCP_H ++#define DHCP_H 1 ++ ++#include "pxe.h" ++ ++#define EFI_DHCP4_PROTOCOL_GUID \ ++{ 0x8a219718, 0x4ef5, 0x4761, {0x91,0xc8,0xc0,0xf0,0x4b,0xda,0x9e,0x56} } ++static grub_efi_guid_t DHCP4Protocol = EFI_DHCP4_PROTOCOL_GUID; ++ ++#define EFI_DHCP4_SERVICE_BINDING_PROTOCOL_GUID \ ++{ 0x9d9a39d8, 0xbd42, 0x4a73, {0xa4,0xd5,0x8e,0xe9,0x4b,0xe1,0x13,0x80} } ++static grub_efi_guid_t DHCP4SbProtocol = EFI_DHCP4_SERVICE_BINDING_PROTOCOL_GUID; ++ ++#define EFI_PXE_DHCP4_PROTOCOL_GUID \ ++{ 0x03c4e624, 0xac28, 0x11d3, {0x9a,0x2d,0x00,0x90,0x29,0x3f,0xc1,0x4d} } ++static grub_efi_guid_t PxeDHCP4Protocol = EFI_PXE_DHCP4_PROTOCOL_GUID; ++ ++ ++typedef EFI_STATUS (*EFI_DHCP4_GET_MODE_DATA)(); ++typedef EFI_STATUS (*EFI_DHCP4_CONFIGURE)(); ++typedef EFI_STATUS (*EFI_DHCP4_START)(); ++typedef EFI_STATUS (*EFI_DHCP4_RENEW_REBIND)(); ++typedef EFI_STATUS (*EFI_DHCP4_RELEASE)(); ++typedef EFI_STATUS (*EFI_DHCP4_STOP)(); ++typedef EFI_STATUS (*EFI_DHCP4_BUILD)(); ++typedef EFI_STATUS (*EFI_DHCP4_TRANSMIT_RECIEVE)(); ++typedef EFI_STATUS (*EFI_DHCP4_PARSE)(); ++ ++typedef struct _EFI_DHCP4_PROTOCOL { ++ EFI_DHCP4_GET_MODE_DATA GetModeData; ++ EFI_DHCP4_CONFIGURE Configure; ++ EFI_DHCP4_START Start; ++ EFI_DHCP4_RENEW_REBIND RenewRebind; ++ EFI_DHCP4_RELEASE Release; ++ EFI_DHCP4_STOP Stop; ++ EFI_DHCP4_BUILD Build; ++ EFI_DHCP4_TRANSMIT_RECIEVE TransmitReceive; ++ EFI_DHCP4_PARSE Parse; ++} EFI_DHCP4_PROTOCOL; ++ ++typedef enum { ++ Dhcp4Stopped, ++ Dhcp4Init, ++ Dhcp4Selecting, ++ Dhcp4Requesting, ++ Dhcp4Bound, ++ Dhcp4Renewing, ++ Dhcp4Rebinding, ++ Dhcp4InitReboot, ++ Dhcp4Rebooting, ++} EFI_DHCP4_STATE; ++ ++typedef enum { ++ Dhcp4SendDiscover = 0x1, ++ Dhcp4RcvdOffer, ++ Dhcp4SelectOffer, ++ Dhcp4SendRequest, ++ Dhcp4RcvdAck, ++ Dhcp4RcvdNak, ++ Dhcp4SendDecline, ++ Dhcp4BoundCompleted, ++ Dhcp4EnterRenewing, ++ Dhcp4EnterRebinding, ++ Dhcp4AddressLost, ++ Dhcp4Fail, ++} EFI_DHCP4_EVENT; ++ ++typedef struct { ++ grub_efi_uint8_t OpCode; ++ grub_efi_uint8_t HwType; ++ grub_efi_uint8_t HwAddrLen; ++ grub_efi_uint8_t Hops; ++ grub_efi_uint32_t xid; ++ grub_efi_uint16_t Seconds; ++ grub_efi_uint16_t reserved; ++ EFI_IPv4_ADDRESS ClientAddr; ++ EFI_IPv4_ADDRESS YourAddr; ++ EFI_IPv4_ADDRESS ServerAddr; ++ EFI_IPv4_ADDRESS GatewayAddr; ++ grub_efi_uint8_t ClientHwAddr[16]; ++ char ServerName[64]; ++ char BootFileName[128]; ++} EFI_DHCP4_HEADER; ++ ++typedef struct { ++ grub_efi_uint32_t Size; ++ grub_efi_uint32_t Length; ++ struct { ++ EFI_DHCP4_HEADER Header; ++ grub_efi_uint32_t Magik; ++ grub_efi_uint8_t option[]; ++ } Dhcp4; ++} EFI_DHCP4_PACKET; ++ ++typedef struct { ++ grub_efi_uint8_t OpCode; ++ grub_efi_uint8_t Length; ++ grub_efi_uint8_t Data[1]; ++} EFI_DHCP4_PACKET_OPTION; ++ ++typedef EFI_STATUS (*EFI_DHCP4_CALLBACK) ( ++ EFI_DHCP4_PROTOCOL *This, ++ void *Context, ++ EFI_DHCP4_STATE CurrentState, ++ EFI_DHCP4_EVENT Dhcp4Event, ++ EFI_DHCP4_PACKET *Packet, ++ EFI_DHCP4_PACKET **NewPacket); ++ ++typedef struct { ++ grub_efi_uint32_t DiscoverTryCount; ++ grub_efi_uint32_t *DiscoverTimeout; ++ grub_efi_uint32_t RequestTryCount; ++ grub_efi_uint32_t *RequestTimeout; ++ EFI_IPv4_ADDRESS ClientAddress; ++ EFI_DHCP4_CALLBACK Dhcp4Callback; ++ void *CallbackContext; ++ grub_efi_uint32_t OptionCount; ++ EFI_DHCP4_PACKET_OPTION **OptionList; ++} EFI_DHCP4_CONFIG_DATA; ++ ++typedef struct { ++ EFI_DHCP4_STATE State; ++ EFI_DHCP4_CONFIG_DATA ConfigData; ++ EFI_IPv4_ADDRESS ClientAddress; ++ EFI_MAC_ADDRESS ClientMacAddress; ++ EFI_IPv4_ADDRESS ServerAddress; ++ EFI_IPv4_ADDRESS RouterAddress; ++ EFI_IPv4_ADDRESS SubnetMask; ++ grub_efi_uint32_t LeaseTime; ++ EFI_DHCP4_PACKET *ReplyPacket; ++} EFI_DHCP4_MODE_DATA; ++ ++#endif /* DHCP_H */ +diff --git a/efi/efichainloader.c b/efi/efichainloader.c +new file mode 100644 +index 0000000..016636c +--- /dev/null ++++ b/efi/efichainloader.c +@@ -0,0 +1,265 @@ ++/* efichainloader.c - boot another boot loader */ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2002,2004,2006 Free Software Foundation, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#include <grub/misc.h> ++#include <grub/types.h> ++#include <grub/efi/api.h> ++#include <grub/efi/efi.h> ++#include <grub/efi/misc.h> ++ ++#include <shared.h> ++ ++#define grub_file_size() filemax ++ ++static grub_efi_physical_address_t address; ++static grub_efi_uintn_t pages; ++static grub_efi_device_path_t *file_path; ++static grub_efi_handle_t image_handle; ++ ++static int ++grub_chainloader_unload (void) ++{ ++ grub_efi_boot_services_t *b; ++ ++ b = grub_efi_system_table->boot_services; ++ Call_Service_1 (b->unload_image, image_handle); ++ Call_Service_2 (b->free_pages, address, pages); ++ grub_free (file_path); ++ ++ return 0; ++} ++ ++static int ++grub_chainloader_boot (void) ++{ ++ grub_efi_boot_services_t *b; ++ grub_efi_status_t status; ++ grub_efi_uintn_t exit_data_size = 0; ++ grub_efi_char16_t *exit_data = NULL; ++ ++ b = grub_efi_system_table->boot_services; ++ status = Call_Service_3 (b->start_image, image_handle, ++ &exit_data_size, &exit_data); ++ if (status != GRUB_EFI_SUCCESS) ++ { ++ if (exit_data) ++ { ++ char *buf; ++ ++ buf = grub_malloc (exit_data_size * 4 + 1); ++ if (buf) ++ { ++ *grub_utf16_to_utf8 ((grub_uint8_t *) buf, ++ exit_data, exit_data_size) = 0; ++ ++ grub_printf (buf); ++ grub_free (buf); ++ } ++ else ++ grub_printf ("unknown error\n"); ++ } ++ errnum = ERR_UNRECOGNIZED; ++ } ++ ++ if (exit_data) ++ Call_Service_1 (b->free_pool, exit_data); ++ ++ grub_chainloader_unload (); ++ ++ return 0; ++} ++ ++static void ++copy_file_path (grub_efi_file_path_device_path_t *fp, ++ const char *str, grub_efi_uint16_t len) ++{ ++ grub_efi_char16_t *p; ++ grub_efi_uint16_t size; ++ ++ fp->header.type = GRUB_EFI_MEDIA_DEVICE_PATH_TYPE; ++ fp->header.subtype = GRUB_EFI_FILE_PATH_DEVICE_PATH_SUBTYPE; ++ size = len * sizeof (grub_efi_char16_t) + sizeof (*fp); ++ fp->header.length[0] = (grub_efi_uint8_t) (size & 0xff); ++ fp->header.length[1] = (grub_efi_uint8_t) (size >> 8); ++ for (p = fp->path_name; len > 0; len--, p++, str++) ++ { ++ *p = (grub_efi_char16_t) (*str == '/' ? '\' : *str); ++ } ++} ++ ++static grub_efi_device_path_t * ++make_file_path (const char *filename) ++{ ++ char *dir_start; ++ char *dir_end; ++ grub_size_t size; ++ grub_efi_device_path_t *d; ++ ++ dir_start = grub_strchr (filename, ')'); ++ if (! dir_start) ++ dir_start = (char *) filename; ++ else ++ dir_start++; ++ ++ dir_end = grub_strrchr (dir_start, '/'); ++ if (! dir_end) ++ { ++ errnum = ERR_BAD_FILENAME; ++ grub_printf ("invalid EFI file path"); ++ return 0; ++ } ++ ++ size = 0; ++ file_path = grub_malloc ((grub_strlen (dir_start) + 1) ++ * sizeof (grub_efi_char16_t) ++ + sizeof (grub_efi_file_path_device_path_t) * 2); ++ if (! file_path) ++ return 0; ++ ++ /* Fill the file path for the directory. */ ++ d = (grub_efi_device_path_t *) file_path; ++ ++ if (dir_end - dir_start) ++ { ++ copy_file_path ((grub_efi_file_path_device_path_t *) d, ++ dir_start, dir_end - dir_start); ++ d = GRUB_EFI_NEXT_DEVICE_PATH (d); ++ /* Fill the file path for the file. */ ++ copy_file_path ((grub_efi_file_path_device_path_t *) d, ++ dir_end + 1, grub_strlen (dir_end + 1)); ++ } ++ else ++ { ++ /* Fill the file path for the file. */ ++ copy_file_path ((grub_efi_file_path_device_path_t *) d, ++ dir_end, grub_strlen (dir_end)); ++ } ++ ++ /* Fill the end of device path nodes. */ ++ d = GRUB_EFI_NEXT_DEVICE_PATH (d); ++ d->type = GRUB_EFI_END_DEVICE_PATH_TYPE; ++ d->subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE; ++ d->length[0] = sizeof (*d); ++ d->length[1] = 0; ++ ++ return file_path; ++} ++ ++int ++grub_chainloader (char *filename) ++{ ++ grub_ssize_t size; ++ grub_efi_status_t status; ++ grub_efi_boot_services_t *b; ++ grub_efi_handle_t dev_handle = 0; ++ grub_efi_loaded_image_t *loaded_image; ++ ++ /* Initialize some global variables. */ ++ address = 0xffffffff; ++ image_handle = 0; ++ ++ b = grub_efi_system_table->boot_services; ++ ++ if (! grub_open (filename)) ++ goto fail1; ++ ++ dev_handle = grub_efidisk_get_current_bdev_handle (); ++ if (! dev_handle) ++ { ++ errnum = ERR_UNRECOGNIZED; ++ grub_printf ("not a valid root device\n"); ++ goto fail; ++ } ++ ++ file_path = make_file_path (filename); ++ if (! file_path) ++ goto fail; ++ ++ grub_printf ("file path: "); ++ grub_efi_print_device_path (file_path); ++ ++ size = grub_file_size (); ++ pages = (((grub_efi_uintn_t) size + ((1 << 12) - 1)) >> 12); ++ ++ status = Call_Service_4 (b->allocate_pages, GRUB_EFI_ALLOCATE_ANY_PAGES, ++ GRUB_EFI_LOADER_CODE, pages, &address); ++ if (status != GRUB_EFI_SUCCESS) ++ { ++ errnum = ERR_UNRECOGNIZED; ++ grub_printf ("cannot allocate %u pages", pages); ++ goto fail; ++ } ++ ++ if (grub_read ((void *) ((grub_addr_t) address), size) != size) ++ { ++ if (errnum == ERR_NONE) ++ { ++ errnum = ERR_UNRECOGNIZED; ++ grub_printf ("too small"); ++ } ++ goto fail; ++ } ++ ++ status = Call_Service_6 (b->load_image, 0, grub_efi_image_handle, file_path, ++ (void *) ((grub_addr_t) address), size, ++ &image_handle); ++ if (status != GRUB_EFI_SUCCESS) ++ { ++ errnum = ERR_UNRECOGNIZED; ++ if (status == GRUB_EFI_OUT_OF_RESOURCES) ++ grub_printf ("out of resources"); ++ else ++ grub_printf ("cannot load image"); ++ ++ goto fail; ++ } ++ ++ /* LoadImage does not set a device handler when the image is ++ loaded from memory, so it is necessary to set it explicitly here. ++ This is a mess. */ ++ loaded_image = grub_efi_get_loaded_image (image_handle); ++ if (! loaded_image) ++ { ++ errnum = ERR_UNRECOGNIZED; ++ grub_printf ("no loaded image available"); ++ goto fail; ++ } ++ loaded_image->device_handle = dev_handle; ++ ++ grub_close (); ++ return KERNEL_TYPE_CHAINLOADER; ++ ++ fail: ++ grub_close (); ++ fail1: ++ if (address) ++ b->free_pages (address, pages); ++ ++ return KERNEL_TYPE_NONE; ++} ++ ++/* calls for direct boot-loader chaining */ ++void ++chain_stage1 (unsigned long segment, unsigned long offset, ++ unsigned long part_table_addr) ++{ ++ grub_chainloader_boot (); ++ for (;;); ++} +diff --git a/efi/eficon.c b/efi/eficon.c +new file mode 100644 +index 0000000..037f050 +--- /dev/null ++++ b/efi/eficon.c +@@ -0,0 +1,306 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2006 Free Software Foundation, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#include <grub/misc.h> ++#include <grub/types.h> ++#include <grub/efi/efi.h> ++#include <grub/efi/api.h> ++#include <grub/efi/misc.h> ++ ++#include <shared.h> ++#include <term.h> ++ ++static int ++grub_console_standard_color = GRUB_EFI_TEXT_ATTR (GRUB_EFI_YELLOW, ++ GRUB_EFI_BACKGROUND_BLACK); ++static int ++grub_console_normal_color = GRUB_EFI_TEXT_ATTR (GRUB_EFI_LIGHTGRAY, ++ GRUB_EFI_BACKGROUND_BLACK); ++static int ++grub_console_highlight_color = GRUB_EFI_TEXT_ATTR (GRUB_EFI_BLACK, ++ GRUB_EFI_BACKGROUND_LIGHTGRAY); ++ ++static int read_key = -1; ++ ++void ++console_putchar (int c) ++{ ++ grub_efi_char16_t str[2]; ++ grub_efi_simple_text_output_interface_t *o; ++ ++ o = grub_efi_system_table->con_out; ++ ++ switch (c) ++ { ++ case DISP_LEFT: ++ c = '<'; ++ break; ++ ++ case DISP_UP: ++ c = '^'; ++ break; ++ ++ case DISP_RIGHT: ++ c = '>'; ++ break; ++ ++ case DISP_DOWN: ++ c = 'v'; ++ break; ++ ++ case DISP_HORIZ: ++ c = '-'; ++ break; ++ ++ case DISP_VERT: ++ c = '|'; ++ break; ++ ++ case DISP_UL: ++ case DISP_UR: ++ case DISP_LL: ++ case DISP_LR: ++ c = '+'; ++ break; ++ } ++ ++ /* For now, do not try to use a surrogate pair. */ ++ if (c > 0xffff) ++ c = '?'; ++ ++ str[0] = (grub_efi_char16_t) (c & 0xffff); ++ str[1] = 0; ++ ++ /* Should this test be cached? */ ++ if (c > 0x7f && Call_Service_2 (o->test_string, o, str) != GRUB_EFI_SUCCESS) ++ return; ++ ++ Call_Service_2 (o->output_string, o, str); ++} ++ ++int ++console_checkkey (void) ++{ ++ grub_efi_simple_input_interface_t *i; ++ grub_efi_input_key_t key; ++ grub_efi_status_t status; ++ ++ if (read_key >= 0) ++ return 1; ++ ++ i = grub_efi_system_table->con_in; ++ status = Call_Service_2 (i->read_key_stroke ,i, &key); ++#if 0 ++ switch (status) ++ { ++ case GRUB_EFI_SUCCESS: ++ { ++ int xy; ++ ++ xy = console_getxy (); ++ console_gotoxy (0, 0); ++ grub_printf ("scan_code=%x,unicode_char=%x ", ++ (unsigned) key.scan_code, ++ (unsigned) key.unicode_char); ++ console_gotoxy (xy >> 8, xy & 0xff); ++ } ++ break; ++ ++ case GRUB_EFI_NOT_READY: ++ grub_printf ("not ready "); ++ break; ++ ++ default: ++ grub_printf ("device error "); ++ break; ++ } ++#endif ++ ++ if (status == GRUB_EFI_SUCCESS) ++ { ++ switch (key.scan_code) ++ { ++ case 0x00: ++ read_key = key.unicode_char; ++ break; ++ case 0x01: ++ read_key = 16; ++ break; ++ case 0x02: ++ read_key = 14; ++ break; ++ case 0x03: ++ read_key = 6; ++ break; ++ case 0x04: ++ read_key = 2; ++ break; ++ case 0x05: ++ read_key = 1; ++ break; ++ case 0x06: ++ read_key = 5; ++ break; ++ case 0x07: ++ break; ++ case 0x08: ++ read_key = 4; ++ break; ++ case 0x09: ++ break; ++ case 0x0a: ++ break; ++ case 0x17: ++ read_key = '\e'; ++ break; ++ default: ++ break; ++ } ++ } ++ ++ return read_key; ++} ++ ++int ++console_getkey (void) ++{ ++ grub_efi_simple_input_interface_t *i; ++ grub_efi_boot_services_t *b; ++ grub_efi_uintn_t index; ++ grub_efi_status_t status; ++ int key; ++ ++ if (read_key >= 0) ++ { ++ key = read_key; ++ read_key = -1; ++ return key; ++ } ++ ++ i = grub_efi_system_table->con_in; ++ b = grub_efi_system_table->boot_services; ++ ++ do ++ { ++ status = Call_Service_3 (b->wait_for_event , 1, &(i->wait_for_key), &index); ++ if (status != GRUB_EFI_SUCCESS) ++ return -1; ++ ++ console_checkkey (); ++ } ++ while (read_key < 0); ++ ++ key = read_key; ++ read_key = -1; ++ return key; ++} ++ ++int ++console_keystatus (void) ++{ ++ /* Doesn't look like EFI can support this... */ ++ return 0; ++} ++ ++int ++console_getxy (void) ++{ ++ grub_efi_simple_text_output_interface_t *o; ++ ++ o = grub_efi_system_table->con_out; ++ return ((o->mode->cursor_column << 8) | o->mode->cursor_row); ++} ++ ++void ++console_gotoxy (int x, int y) ++{ ++ grub_efi_simple_text_output_interface_t *o; ++ ++ o = grub_efi_system_table->con_out; ++ Call_Service_3 (o->set_cursor_position , o, x, y); ++} ++ ++void ++console_cls (void) ++{ ++ grub_efi_simple_text_output_interface_t *o; ++ grub_efi_int32_t orig_attr; ++ ++ o = grub_efi_system_table->con_out; ++ orig_attr = o->mode->attribute; ++ Call_Service_2 (o->set_attributes, o, GRUB_EFI_BACKGROUND_BLACK); ++ Call_Service_1 (o->clear_screen , o); ++ Call_Service_2 (o->set_attributes , o, orig_attr); ++} ++ ++void ++console_setcolorstate (color_state state) ++{ ++ grub_efi_simple_text_output_interface_t *o; ++ ++ o = grub_efi_system_table->con_out; ++ ++ switch (state) { ++ case COLOR_STATE_STANDARD: ++ Call_Service_2 (o->set_attributes, o, grub_console_standard_color); ++ break; ++ case COLOR_STATE_NORMAL: ++ Call_Service_2 (o->set_attributes, o, grub_console_normal_color); ++ break; ++ case COLOR_STATE_HIGHLIGHT: ++ Call_Service_2 (o->set_attributes, o, grub_console_highlight_color); ++ break; ++ default: ++ break; ++ } ++} ++ ++void ++console_setcolor (int normal_color, int highlight_color) ++{ ++ grub_console_normal_color = normal_color; ++ grub_console_highlight_color = highlight_color; ++} ++ ++int ++console_setcursor (int on) ++{ ++ grub_efi_simple_text_output_interface_t *o; ++ ++ o = grub_efi_system_table->con_out; ++ Call_Service_2 (o->enable_cursor, o, on); ++ return on; ++} ++ ++void ++grub_console_init (void) ++{ ++ /* FIXME: it is necessary to consider the case where no console control ++ is present but the default is already in text mode. */ ++ if (! grub_efi_set_text_mode (1)) ++ { ++ grub_printf ("cannot set text mode"); ++ return; ++ } ++} ++ ++void ++grub_console_fini (void) ++{ ++} +diff --git a/efi/eficore.c b/efi/eficore.c +new file mode 100644 +index 0000000..8abea7d +--- /dev/null ++++ b/efi/eficore.c +@@ -0,0 +1,241 @@ ++/* eficore.c - generic EFI support */ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2006 Free Software Foundation, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#include <config.h> ++#include <grub/misc.h> ++#include <grub/efi/api.h> ++#include <grub/efi/efi.h> ++#include <grub/efi/eficall.h> ++#include <grub/efi/console_control.h> ++#include <grub/efi/time.h> ++ ++#include <shared.h> ++ ++/* The handle of GRUB itself. Filled in by the startup code. */ ++grub_efi_handle_t grub_efi_image_handle; ++ ++/* The pointer to a system table. Filled in by the startup code. */ ++grub_efi_system_table_t *grub_efi_system_table; ++ ++static grub_efi_guid_t console_control_guid = GRUB_EFI_CONSOLE_CONTROL_GUID; ++static grub_efi_guid_t loaded_image_guid = GRUB_EFI_LOADED_IMAGE_GUID; ++static grub_efi_guid_t device_path_guid = GRUB_EFI_DEVICE_PATH_GUID; ++ ++/* temporary, until we're using gnu-efi's include files --pjones */ ++extern int setjmp(grub_jmp_buf env); ++int grub_setjmp(grub_jmp_buf env) ++{ ++ return setjmp(env); ++} ++ ++extern void longjmp(grub_jmp_buf env, int val); ++void grub_longjmp(grub_jmp_buf env, int val) ++{ ++ longjmp(env, val); ++} ++ ++grub_efi_status_t ++grub_efi_locate_device_path (grub_efi_guid_t *protocol, ++ grub_efi_device_path_t **dp, ++ grub_efi_handle_t *handle) ++{ ++ return Call_Service_3( ++ grub_efi_system_table->boot_services->locate_device_path, ++ protocol, dp, handle); ++} ++ ++grub_efi_status_t ++grub_efi_locate_handle_buffer (grub_efi_locate_search_type_t search_type, ++ grub_efi_guid_t *protocol, ++ void *search_key, ++ grub_efi_uintn_t *no_handles, ++ grub_efi_handle_t **buffer) ++{ ++ return Call_Service_5( ++ grub_efi_system_table->boot_services->locate_handle_buffer, ++ search_type, protocol, search_key, no_handles, buffer); ++} ++ ++void * ++grub_efi_locate_protocol (grub_efi_guid_t *protocol, void *registration) ++{ ++ void *interface; ++ grub_efi_status_t status; ++ ++ status = Call_Service_3 (grub_efi_system_table->boot_services->locate_protocol, ++ protocol, ++ registration, ++ &interface); ++ if (status != GRUB_EFI_SUCCESS) ++ return 0; ++ ++ return interface; ++} ++ ++/* Return the array of handles which meet the requirement. If successful, ++ the number of handles is stored in NUM_HANDLES. The array is allocated ++ from the heap. */ ++grub_efi_handle_t * ++grub_efi_locate_handle (grub_efi_locate_search_type_t search_type, ++ grub_efi_guid_t *protocol, ++ void *search_key, ++ grub_efi_uintn_t *num_handles) ++{ ++ grub_efi_boot_services_t *b; ++ grub_efi_status_t status; ++ grub_efi_handle_t *buffer; ++ grub_efi_uintn_t buffer_size = 8 * sizeof (grub_efi_handle_t); ++ ++ buffer = grub_malloc (buffer_size); ++ if (! buffer) ++ return 0; ++ ++ b = grub_efi_system_table->boot_services; ++ status = Call_Service_5 (b->locate_handle, search_type, protocol, ++ search_key, &buffer_size, buffer); ++ if (status == GRUB_EFI_BUFFER_TOO_SMALL) ++ { ++ grub_free (buffer); ++ buffer = grub_malloc (buffer_size); ++ if (! buffer) ++ return 0; ++ ++ status = Call_Service_5 (b->locate_handle, search_type, protocol, ++ search_key, &buffer_size, buffer); ++ } ++ ++ if (status != GRUB_EFI_SUCCESS) ++ { ++ grub_free (buffer); ++ return 0; ++ } ++ ++ *num_handles = buffer_size / sizeof (grub_efi_handle_t); ++ return buffer; ++} ++ ++void * ++grub_efi_open_protocol (grub_efi_handle_t handle, ++ grub_efi_guid_t *protocol, ++ grub_efi_uint32_t attributes) ++{ ++ grub_efi_boot_services_t *b; ++ grub_efi_status_t status; ++ void *interface; ++ ++ b = grub_efi_system_table->boot_services; ++ status = Call_Service_6 ( b->open_protocol, ++ handle, ++ protocol, ++ &interface, ++ grub_efi_image_handle, ++ 0, ++ attributes); ++ if (status != GRUB_EFI_SUCCESS) ++ return 0; ++ ++ return interface; ++} ++ ++int ++grub_efi_set_text_mode (int on) ++{ ++ grub_efi_console_control_protocol_t *c; ++ grub_efi_screen_mode_t mode, new_mode; ++ ++ c = grub_efi_locate_protocol (&console_control_guid, 0); ++ if (! c) ++ /* No console control protocol instance available, assume it is ++ already in text mode. */ ++ return 1; ++ ++ if (Call_Service_4 (c->get_mode , c, &mode, 0, 0) != GRUB_EFI_SUCCESS) ++ return 0; ++ ++ new_mode = on ? GRUB_EFI_SCREEN_TEXT : GRUB_EFI_SCREEN_GRAPHICS; ++ if (mode != new_mode) ++ if (Call_Service_2 (c->set_mode , c, new_mode) != GRUB_EFI_SUCCESS) ++ return 0; ++ ++ return 1; ++} ++ ++void ++grub_efi_stall (grub_efi_uintn_t microseconds) ++{ ++ Call_Service_1 (grub_efi_system_table->boot_services->stall , microseconds); ++} ++ ++grub_efi_loaded_image_t * ++grub_efi_get_loaded_image (grub_efi_handle_t image_handle) ++{ ++ return grub_efi_open_protocol (image_handle, ++ &loaded_image_guid, ++ GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL); ++} ++ ++void ++grub_exit (void) ++{ ++ grub_efi_fini (); ++ Call_Service_4(grub_efi_system_table->boot_services->exit, ++ grub_efi_image_handle, ++ GRUB_EFI_SUCCESS, ++ 0, ++ 0 ); ++ for (;;); ++} ++ ++int ++grub_efi_exit_boot_services (grub_efi_uintn_t map_key) ++{ ++ grub_efi_boot_services_t *b; ++ grub_efi_status_t status; ++ ++ b = grub_efi_system_table->boot_services; ++ status = Call_Service_2 (b->exit_boot_services , ++ grub_efi_image_handle, ++ map_key); ++ return status == GRUB_EFI_SUCCESS; ++} ++ ++grub_uint32_t ++grub_get_rtc (void) ++{ ++ grub_efi_time_t time; ++ grub_efi_runtime_services_t *r; ++ ++ r = grub_efi_system_table->runtime_services; ++ if (Call_Service_2(r->get_time , &time, 0) != GRUB_EFI_SUCCESS) ++ /* What is possible in this case? */ ++ return 0; ++ ++ return (((time.minute * 60 + time.second) * 1000 ++ + time.nanosecond / 1000000) ++ * GRUB_TICKS_PER_SECOND / 1000); ++} ++ ++grub_efi_device_path_t * ++grub_efi_get_device_path (grub_efi_handle_t handle) ++{ ++ return grub_efi_open_protocol (handle, &device_path_guid, ++ GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL); ++} ++ +diff --git a/efi/efidisk.c b/efi/efidisk.c +new file mode 100644 +index 0000000..6a505f3 +--- /dev/null ++++ b/efi/efidisk.c +@@ -0,0 +1,801 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2006 Free Software Foundation, Inc. ++ * ++ * GRUB is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with GRUB; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#include <grub/types.h> ++#include <grub/misc.h> ++#include <grub/efi/api.h> ++#include <grub/efi/efi.h> ++#include <grub/efi/misc.h> ++ ++#include <shared.h> ++ ++struct grub_efidisk_data ++{ ++ grub_efi_handle_t handle; ++ grub_efi_device_path_t *device_path; ++ grub_efi_device_path_t *last_device_path; ++ grub_efi_block_io_t *block_io; ++ grub_efi_disk_io_t *disk_io; ++ struct grub_efidisk_data *next; ++}; ++ ++/* GUIDs. */ ++static grub_efi_guid_t disk_io_guid = GRUB_EFI_DISK_IO_GUID; ++static grub_efi_guid_t block_io_guid = GRUB_EFI_BLOCK_IO_GUID; ++static grub_efi_guid_t device_path_from_text_guid = GRUB_EFI_DEVICE_PATH_FROM_TEXT_GUID; ++ ++static struct grub_efidisk_data *fd_devices; ++static struct grub_efidisk_data *hd_devices; ++static struct grub_efidisk_data *cd_devices; ++ ++static int get_device_sector_bits(struct grub_efidisk_data *device); ++static int get_device_sector_size(struct grub_efidisk_data *device); ++static struct grub_efidisk_data *get_device_from_drive (int drive); ++ ++static struct grub_efidisk_data * ++make_devices (void) ++{ ++ grub_efi_uintn_t num_handles; ++ grub_efi_handle_t *handles; ++ grub_efi_handle_t *handle; ++ struct grub_efidisk_data *devices = 0; ++ ++ /* Find handles which support the disk io interface. */ ++ handles = grub_efi_locate_handle (GRUB_EFI_BY_PROTOCOL, &disk_io_guid, ++ 0, &num_handles); ++ if (! handles) ++ return 0; ++ ++ /* Make a linked list of devices. */ ++ for (handle = handles; num_handles--; handle++) ++ { ++ grub_efi_device_path_t *dp; ++ grub_efi_device_path_t *ldp; ++ struct grub_efidisk_data *d; ++ grub_efi_block_io_t *bio; ++ grub_efi_disk_io_t *dio; ++ ++ dp = grub_efi_get_device_path (*handle); ++ if (! dp) ++ continue; ++ ++ ldp = find_last_device_path (dp); ++ if (! ldp) ++ /* This is empty. Why? */ ++ continue; ++ ++ bio = grub_efi_open_protocol (*handle, &block_io_guid, ++ GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL); ++ dio = grub_efi_open_protocol (*handle, &disk_io_guid, ++ GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL); ++ if (! bio || ! dio) ++ /* This should not happen... Why? */ ++ continue; ++ ++ d = grub_malloc (sizeof (*d)); ++ if (! d) ++ { ++ /* Uggh. */ ++ grub_free (handles); ++ return 0; ++ } ++ ++ d->handle = *handle; ++ d->device_path = dp; ++ d->last_device_path = ldp; ++ d->block_io = bio; ++ d->disk_io = dio; ++ d->next = devices; ++ devices = d; ++ } ++ ++ grub_free (handles); ++ ++ return devices; ++} ++ ++static int ++iterate_child_devices (struct grub_efidisk_data *devices, ++ struct grub_efidisk_data *d, ++ int (*hook) (struct grub_efidisk_data *child)) ++{ ++ struct grub_efidisk_data *p; ++ ++ for (p = devices; p; p = p->next) ++ { ++ grub_efi_device_path_t *dp, *ldp; ++ ++ dp = duplicate_device_path (p->device_path); ++ if (! dp) ++ return 0; ++ ++ ldp = find_last_device_path (dp); ++ ldp->type = GRUB_EFI_END_DEVICE_PATH_TYPE; ++ ldp->subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE; ++ ldp->length[0] = sizeof (*ldp); ++ ldp->length[1] = 0; ++ ++ if (compare_device_paths (dp, d->device_path) == 0) ++ if (hook (p)) ++ { ++ grub_free (dp); ++ return 1; ++ } ++ ++ grub_free (dp); ++ } ++ ++ return 0; ++} ++ ++/* Add a device into a list of devices in an ascending order. */ ++static void ++add_device (struct grub_efidisk_data **devices, struct grub_efidisk_data *d) ++{ ++ struct grub_efidisk_data **p; ++ struct grub_efidisk_data *n; ++ ++ for (p = devices; *p; p = &((*p)->next)) ++ { ++ int ret; ++ ++ ret = compare_device_paths (find_last_device_path ((*p)->device_path), ++ find_last_device_path (d->device_path)); ++ if (ret == 0) ++ ret = compare_device_paths ((*p)->device_path, ++ d->device_path); ++ if (ret == 0) ++ return; ++ else if (ret > 0) ++ break; ++ } ++ ++ n = grub_malloc (sizeof (*n)); ++ if (! n) ++ return; ++ ++ grub_memcpy (n, d, sizeof (*n)); ++ n->next = (*p); ++ (*p) = n; ++} ++ ++/* Name the devices. */ ++static void ++name_devices (struct grub_efidisk_data *devices) ++{ ++ struct grub_efidisk_data *d; ++ ++ /* Let's see what can be added more. */ ++ for (d = devices; d; d = d->next) ++ { ++ grub_efi_device_path_t *dp; ++ grub_efi_block_io_media_t *m; ++ ++ dp = d->last_device_path; ++ if (! dp) ++ continue; ++ ++ m = d->block_io->media; ++ if (GRUB_EFI_DEVICE_PATH_TYPE(dp) == GRUB_EFI_MESSAGING_DEVICE_PATH_TYPE) ++ { ++ /* XXX FIXME this won't work if we see write-protected disks with ++ * 4k sectors */ ++ if (m->read_only && m->block_size > 0x200) ++ { ++ add_device (&cd_devices, d); ++ } else ++ { ++ add_device (&hd_devices, d); ++ } ++ } ++ if (GRUB_EFI_DEVICE_PATH_TYPE(dp) == GRUB_EFI_ACPI_DEVICE_PATH_TYPE) ++ { ++ add_device (&fd_devices, d); ++ } ++ } ++} ++ ++static void ++free_devices (struct grub_efidisk_data *devices) ++{ ++ struct grub_efidisk_data *p, *q; ++ ++ for (p = devices; p; p = q) ++ { ++ q = p->next; ++ grub_free (p); ++ } ++} ++ ++/* Enumerate all disks to name devices. */ ++static void ++enumerate_disks (void) ++{ ++ struct grub_efidisk_data *devices; ++ ++ devices = make_devices (); ++ if (! devices) ++ return; ++ ++ name_devices (devices); ++ free_devices (devices); ++} ++ ++static struct grub_efidisk_data * ++get_device (struct grub_efidisk_data *devices, int num) ++{ ++ struct grub_efidisk_data *d; ++ ++ for (d = devices; d && num; d = d->next, num--) ++ ; ++ ++ if (num == 0) ++ return d; ++ ++ return 0; ++} ++ ++static int ++grub_efidisk_read (struct grub_efidisk_data *d, grub_disk_addr_t sector, ++ grub_size_t size, char *buf) ++{ ++ /* For now, use the disk io interface rather than the block io's. */ ++ grub_efi_disk_io_t *dio; ++ grub_efi_block_io_t *bio; ++ grub_efi_status_t status; ++ grub_efi_uint64_t sector_size = get_device_sector_size(d); ++ ++ dio = d->disk_io; ++ bio = d->block_io; ++ ++ status = Call_Service_5 (dio->read, ++ dio, bio->media->media_id, ++ sector * sector_size, ++ size * sector_size, ++ buf); ++ if (status != GRUB_EFI_SUCCESS) ++ return -1; ++ ++ return 0; ++} ++ ++static int ++grub_efidisk_write (struct grub_efidisk_data *d, grub_disk_addr_t sector, ++ grub_size_t size, const char *buf) ++{ ++ /* For now, use the disk io interface rather than the block io's. */ ++ grub_efi_disk_io_t *dio; ++ grub_efi_block_io_t *bio; ++ grub_efi_status_t status; ++ grub_efi_uint64_t sector_size = get_device_sector_size(d); ++ ++ dio = d->disk_io; ++ bio = d->block_io; ++ ++ grub_dprintf ("efidisk", ++ "writing 0x%x sectors at the sector 0x%x to ??\n", ++ (unsigned) size, (unsigned int) sector); ++ ++ status = Call_Service_5 (dio->write , ++ dio, bio->media->media_id, ++ sector * sector_size, ++ size * sector_size, ++ (void *) buf); ++ if (status != GRUB_EFI_SUCCESS) ++ return -1; ++ ++ return 0; ++} ++ ++void ++grub_efidisk_init (void) ++{ ++ enumerate_disks (); ++} ++ ++void ++grub_efidisk_fini (void) ++{ ++ free_devices (fd_devices); ++ free_devices (hd_devices); ++ free_devices (cd_devices); ++} ++ ++static int ++get_device_sector_size(struct grub_efidisk_data *device) ++{ ++ return device->block_io->media->block_size; ++} ++ ++int ++get_sector_size(int drive) ++{ ++ struct grub_efidisk_data *device = get_device_from_drive(drive); ++ return get_device_sector_size(device); ++} ++ ++/* ++ * ffz = Find First Zero in word. Undefined if no zero exists, ++ * so code should check against ~0UL first.. ++ */ ++static __inline__ unsigned int ++ffz (unsigned int word) ++{ ++ __asm__ ("bsfl %1,%0" ++: "=r" (word) ++: "r" (~word)); ++ return word; ++} ++#define log2(n) ffz(~(n)) ++ ++static int ++get_device_sector_bits(struct grub_efidisk_data *device) ++{ ++ int sector_size = get_device_sector_size(device); ++ return log2(sector_size); ++} ++ ++int ++get_sector_bits(int drive) ++{ ++ int sector_size = get_sector_size(drive); ++ return log2(sector_size); ++} ++ ++static struct grub_efidisk_data * ++get_device_from_drive (int drive) ++{ ++#ifdef SUPPORT_NETBOOT ++ /* Not supported */ ++ if (drive == NETWORK_DRIVE) ++ return NULL; ++#endif ++ if (drive == GRUB_INVALID_DRIVE) ++ return NULL; ++ if (drive == cdrom_drive) ++ return get_device (cd_devices, 0); ++ /* Hard disk */ ++ if (drive & 0x80) ++ return get_device (hd_devices, drive - 0x80); ++ /* Floppy disk */ ++ else ++ return get_device (fd_devices, drive); ++} ++ ++/* Low-level disk I/O. Our stubbed version just returns a file ++ descriptor, not the actual geometry. */ ++int ++get_diskinfo (int drive, struct geometry *geometry) ++{ ++ struct grub_efidisk_data *d; ++ ++ d = get_device_from_drive (drive); ++ if (!d) ++ return -1; ++ geometry->total_sectors = d->block_io->media->last_block+1; ++ geometry->sector_size = d->block_io->media->block_size; ++ geometry->flags = BIOSDISK_FLAG_LBA_EXTENSION; ++ geometry->sectors = 63; ++ if (geometry->total_sectors / 63 < 255) ++ geometry->heads = 1; ++ else ++ geometry->heads = 255; ++ geometry->cylinders = geometry->total_sectors / 63 / geometry->heads; ++ return 0; ++} ++ ++int ++biosdisk (int subfunc, int drive, struct geometry *geometry, ++ int sector, int nsec, int segment) ++{ ++ char *buf; ++ struct grub_efidisk_data *d; ++ int ret; ++ ++ d = get_device_from_drive (drive); ++ if (!d) ++ return -1; ++ buf = (char *) ((unsigned long) segment << 4); ++ switch (subfunc) ++ { ++ case BIOSDISK_READ: ++ ret = grub_efidisk_read (d, sector, nsec, buf); ++ break; ++ case BIOSDISK_WRITE: ++ ret = grub_efidisk_write (d, sector, nsec, buf); ++ break; ++ default: ++ return -1; ++ } ++ ++ return 0; ++} ++ ++/* Some utility functions to map GRUB devices with EFI devices. */ ++grub_efi_handle_t ++grub_efidisk_get_current_bdev_handle (void) ++{ ++ struct grub_efidisk_data *d; ++ ++ d = get_device_from_drive (current_drive); ++ if (d == NULL) ++ return NULL; ++ ++ if (current_drive == GRUB_INVALID_DRIVE) ++ return NULL; ++ ++ if (current_drive == cdrom_drive) ++ return d->handle; ++ ++ if (! (current_drive & 0x80)) ++ return d->handle; ++ /* If this is the whole disk, just return its own data. */ ++ else if (current_partition == 0xFFFFFF) ++ return d->handle; ++ /* Otherwise, we must query the corresponding device to the firmware. */ ++ else ++ { ++ struct grub_efidisk_data *devices; ++ grub_efi_handle_t handle = 0; ++ auto int find_partition (struct grub_efidisk_data *c); ++ ++ int find_partition (struct grub_efidisk_data *c) ++ { ++ grub_efi_hard_drive_device_path_t hd; ++ ++ grub_memcpy (&hd, c->last_device_path, sizeof (hd)); ++ ++ if ((GRUB_EFI_DEVICE_PATH_TYPE (c->last_device_path) ++ == GRUB_EFI_MEDIA_DEVICE_PATH_TYPE) ++ && (GRUB_EFI_DEVICE_PATH_SUBTYPE (c->last_device_path) ++ == GRUB_EFI_HARD_DRIVE_DEVICE_PATH_SUBTYPE) ++ && (part_start == hd.partition_start)) ++ { ++ handle = c->handle; ++ return 1; ++ } ++ ++ return 0; ++ } ++ ++ devices = make_devices (); ++ iterate_child_devices (devices, d, find_partition); ++ free_devices (devices); ++ ++ if (handle != 0) ++ return handle; ++ } ++ ++ return 0; ++} ++ ++int ++grub_get_drive_partition_from_bdev_handle (grub_efi_handle_t handle, ++ unsigned long *drive, ++ unsigned long *partition) ++{ ++ grub_efi_device_path_t *dp, *dp1; ++ struct grub_efidisk_data *d, *devices; ++ int drv; ++ unsigned long part; ++ grub_efi_hard_drive_device_path_t hd; ++ int found; ++ int part_type, part_entry; ++ unsigned long partition_start, partition_len, part_offset, part_extoffset; ++ unsigned long gpt_offset; ++ int gpt_count, gpt_size; ++ auto int find_bdev (struct grub_efidisk_data *c); ++ ++ int find_bdev (struct grub_efidisk_data *c) ++ { ++ if (! compare_device_paths (c->device_path, dp)) ++ { ++ grub_memcpy (&hd, c->last_device_path, sizeof (hd)); ++ found = 1; ++ return 1; ++ } ++ return 0; ++ } ++ ++ dp = grub_efi_get_device_path (handle); ++ if (! dp) ++ return 0; ++ ++ dp1 = dp; ++ while (1) ++ { ++ grub_efi_uint8_t type = GRUB_EFI_DEVICE_PATH_TYPE (dp1); ++ grub_efi_uint8_t subtype = GRUB_EFI_DEVICE_PATH_SUBTYPE(dp1); ++ grub_efi_uint16_t len = GRUB_EFI_DEVICE_PATH_LENGTH (dp); ++ ++ if (type == GRUB_EFI_MEDIA_DEVICE_PATH_TYPE && ++ subtype == GRUB_EFI_CDROM_DEVICE_PATH_SUBTYPE) ++ { ++ dp1->type = GRUB_EFI_END_DEVICE_PATH_TYPE; ++ dp1->subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE; ++ dp1->length[0] = 4; ++ dp1->length[1] = 0; ++ } ++ ++ if (type == GRUB_EFI_MEDIA_DEVICE_PATH_TYPE && ++ subtype == GRUB_EFI_HARD_DRIVE_DEVICE_PATH_SUBTYPE) ++ { ++ grub_efi_hard_drive_device_path_t temp_hd; ++ grub_memcpy (&temp_hd, dp1, len); ++ if (temp_hd.signature_type == 0 && temp_hd.mbr_type >= 0x10) { ++ /* ++ * Apple Parttion Map CDs appear as hard drives with non-spec ++ * partition type fields. Fix them up. ++ */ ++ dp1->type = GRUB_EFI_END_DEVICE_PATH_TYPE; ++ dp1->subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE; ++ dp1->length[0] = 4; ++ dp1->length[1] = 0; ++ } ++ } ++ ++ if (GRUB_EFI_END_ENTIRE_DEVICE_PATH (dp1)) ++ break; ++ ++ dp1 = GRUB_EFI_NEXT_DEVICE_PATH(dp1); ++ } ++ ++ drv = 0; ++ for (d = fd_devices; d; d = d->next, drv++) ++ { ++ if (! compare_device_paths (d->device_path, dp)) ++ { ++ *partition = 0xFFFFFF; ++ *drive = drv; ++ return 1; ++ } ++ } ++ ++ drv = cdrom_drive; ++ if (cd_devices && ! compare_device_paths (cd_devices->device_path, dp)) ++ { ++ *partition = 0xFFFFFF; ++ *drive = drv; ++ return 1; ++ } ++ ++ drv = 0x80; ++ for (d = hd_devices; d; d = d->next, drv++) ++ { ++ if (! compare_device_paths (d->device_path, dp)) ++ { ++ *partition = 0xFFFFFF; ++ *drive = drv; ++ return 1; ++ } ++ } ++ ++ devices = make_devices (); ++ ++ drv = 0x80; ++ found = 0; ++ for (d = hd_devices; d; d = d->next, drv++) ++ { ++ iterate_child_devices (devices, d, find_bdev); ++ if (found) ++ break; ++ } ++ ++ free_devices (devices); ++ ++ if (! found) ++ return 0; ++ ++ char buf[get_sector_size(drv)]; ++ part = 0xFFFFFF; ++ while (next_partition (drv, 0, &part, &part_type, ++ &partition_start, &partition_len, ++ &part_offset, &part_entry, ++ &part_extoffset, &gpt_offset, &gpt_count, ++ &gpt_size, buf)) ++ { ++ if (part_type ++ && partition_start == hd.partition_start) ++ { ++ *drive = drv; ++ *partition = part; ++ return 1; ++ } ++ } ++ ++ return 0; ++} ++ ++int ++check_device (const char *device) ++{ ++ grub_efi_device_path_t *dp; ++ ++ dp = device_path_from_utf8(device); ++ if (dp == NULL) ++ return 0; ++ ++ grub_free(dp); ++ return 1; ++} ++ ++static void ++swap_devices (struct grub_efidisk_data *d0, ++ struct grub_efidisk_data *d1) ++{ ++ struct grub_efidisk_data tmp; ++ ++ if (!d0 || !d1) ++ return; ++ ++ memcpy(&tmp, d1, sizeof(*d1)); ++ ++ memcpy(&d0->handle, &d1->handle, sizeof(d1->handle)); ++ d0->device_path = d1->device_path; ++ d0->last_device_path = d1->last_device_path; ++ d0->block_io = d1->block_io; ++ d0->disk_io = d1->disk_io; ++ ++ memcpy(d1->handle, tmp.handle, sizeof(tmp.handle)); ++ d1->device_path = tmp.device_path; ++ d1->last_device_path = tmp.last_device_path; ++ d1->block_io = tmp.block_io; ++ d1->disk_io = tmp.disk_io; ++} ++ ++static int ++compare_hd_device_paths(grub_efi_hard_drive_device_path_t *hd0, ++ grub_efi_hard_drive_device_path_t *hd1) ++{ ++ grub_efi_uint64_t x; ++ int sigsize; ++ ++ if ((x = hd1->partition_number - hd0->partition_number)) ++ return x; ++ ++ if ((x = hd1->partition_start - hd0->partition_start)) ++ return x; ++ ++ ++ if ((x = hd1->partition_size - hd0->partition_size)) ++ return x; ++ ++ if ((x = hd1->signature_type - hd0->signature_type)) ++ return x; ++ ++ switch (hd0->signature_type) ++ { ++ case 1: ++ sigsize = 4; ++ break; ++ case 2: ++ sigsize = 16; ++ break; ++ default: ++ sigsize = 0; ++ break; ++ } ++ x = grub_memcmp((char *)hd0->partition_signature, ++ (char *)hd1->partition_signature, sigsize); ++ return x; ++} ++ ++static grub_efi_device_path_t * ++get_parent_of_disk(grub_efi_device_path_t *hd) ++{ ++ grub_efi_uintn_t num_handles; ++ grub_efi_handle_t *handles; ++ grub_efi_handle_t *handle; ++ grub_efi_device_path_t *ret; ++ ++ handles = grub_efi_locate_handle (GRUB_EFI_BY_PROTOCOL, ++ &simple_file_system_guid, ++ 0, &num_handles); ++ for (handle = handles; num_handles--; handle++) ++ { ++ grub_efi_device_path_t *fsdp, *hddp; ++ ++ fsdp = grub_efi_get_device_path (*handle); ++ if (!fsdp) ++ continue; ++ hddp = find_last_device_path(fsdp); ++ ++ if (compare_hd_device_paths((grub_efi_hard_drive_device_path_t *)hddp, ++ (grub_efi_hard_drive_device_path_t *)hd) == 0) ++ { ++ grub_efi_device_path_t *p; ++ ret = duplicate_device_path((grub_efi_device_path_t *)fsdp); ++ if (!ret) ++ return NULL; ++ for (p = ret; ; p = GRUB_EFI_NEXT_DEVICE_PATH(p)) ++ { ++ if (GRUB_EFI_END_ENTIRE_DEVICE_PATH(p)) ++ break; ++ if ((GRUB_EFI_DEVICE_PATH_TYPE(p) == ++ GRUB_EFI_MEDIA_DEVICE_PATH_TYPE) ++ && (GRUB_EFI_DEVICE_PATH_SUBTYPE(p) == ++ GRUB_EFI_HARD_DRIVE_DEVICE_PATH_SUBTYPE)) ++ { ++ p->type = GRUB_EFI_END_DEVICE_PATH_TYPE; ++ p->subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE; ++ p->length[0] = 4; ++ p->length[1] = 0; ++ break; ++ } ++ } ++ return ret; ++ } ++ } ++ return NULL; ++} ++ ++void ++assign_device_name (int drive, const char *device) ++{ ++ grub_efi_device_path_t *dp0, *dp1; ++ struct grub_efidisk_data *devices; ++ struct grub_efidisk_data *d, *d0 = NULL, *d1 = NULL; ++ int n = -1; ++ ++ dp0 = device_path_from_utf8(device); ++ if (!dp0) ++ return; ++ ++ dp1 = get_parent_of_disk(dp0); ++ grub_free(dp0); ++ if (!dp1) ++ return; ++ ++ if (drive & 0x80) ++ { ++ drive -= 0x80; ++ devices = hd_devices; ++ } ++ else ++ { ++ devices = cd_devices; ++ drive -= 0x100; ++ } ++ ++ for (d = devices; d; d = d->next) ++ { ++ if (!d->device_path) ++ continue; ++ ++ if (++n == drive) ++ d0 = d; ++ ++ int x; ++ if (!(x = compare_device_paths(dp1, d->device_path))) ++ d1 = d; ++ ++ if (d0 && d1) ++ { ++ /* if they're the same node, that just means it's already at ++ * the right position. */ ++ if (d0 != d1) ++ { ++ swap_devices(d0, d1); ++ grub_free(dp1); ++ return; ++ } ++ } ++ } ++ grub_free(dp1); ++} +diff --git a/efi/efidp.c b/efi/efidp.c +new file mode 100644 +index 0000000..d8ca03d +--- /dev/null ++++ b/efi/efidp.c +@@ -0,0 +1,999 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2010 Free Software Foundation, Inc. ++ * ++ * GRUB is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with GRUB; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#include <grub/types.h> ++#include <grub/misc.h> ++#include <grub/efi/api.h> ++#include <grub/efi/efi.h> ++#include <grub/efi/misc.h> ++ ++#include <shared.h> ++ ++/* Duplicate a device path. */ ++grub_efi_device_path_t * ++duplicate_device_path (const grub_efi_device_path_t *dp) ++{ ++ grub_efi_device_path_t *p; ++ grub_size_t total_size = 0; ++ ++ for (p = (grub_efi_device_path_t *) dp; ++ ; ++ p = GRUB_EFI_NEXT_DEVICE_PATH (p)) ++ { ++ total_size += GRUB_EFI_DEVICE_PATH_LENGTH (p); ++ if (GRUB_EFI_END_ENTIRE_DEVICE_PATH (p)) ++ break; ++ } ++ ++ p = grub_malloc (total_size); ++ if (! p) ++ return 0; ++ ++ grub_memcpy (p, dp, total_size); ++ return p; ++} ++ ++/* Return the device path node right before the end node. */ ++grub_efi_device_path_t * ++find_last_device_path (const grub_efi_device_path_t *dp) ++{ ++ grub_efi_device_path_t *next, *p; ++ ++ if (GRUB_EFI_END_ENTIRE_DEVICE_PATH (dp)) ++ return 0; ++ ++ for (p = (grub_efi_device_path_t *) dp, next = GRUB_EFI_NEXT_DEVICE_PATH (p); ++ ! GRUB_EFI_END_ENTIRE_DEVICE_PATH (next); ++ p = next, next = GRUB_EFI_NEXT_DEVICE_PATH (next)) ++ ; ++ ++ return p; ++} ++ ++/* Return the parent device path node. Must be freed */ ++grub_efi_device_path_t * ++find_parent_device_path (const grub_efi_device_path_t *dp) ++{ ++ grub_efi_device_path_t *final, *dup; ++ ++ dup = duplicate_device_path(dp); ++ final = find_last_device_path(dup); ++ ++ final->type = GRUB_EFI_END_DEVICE_PATH_TYPE; ++ final->subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE; ++ ++ return dup; ++} ++ ++/* Compare device paths. */ ++int ++compare_device_paths (const grub_efi_device_path_t *dp1, ++ const grub_efi_device_path_t *dp2) ++{ ++ if (! dp1 || ! dp2) ++ /* Return non-zero. */ ++ return 1; ++ ++ while (1) ++ { ++ grub_efi_uint8_t type1, type2; ++ grub_efi_uint8_t subtype1, subtype2; ++ grub_efi_uint16_t len1, len2; ++ int ret; ++ ++ type1 = GRUB_EFI_DEVICE_PATH_TYPE (dp1); ++ type2 = GRUB_EFI_DEVICE_PATH_TYPE (dp2); ++ ++ if (type1 != type2) ++ return (int) type2 - (int) type1; ++ ++ subtype1 = GRUB_EFI_DEVICE_PATH_SUBTYPE (dp1); ++ subtype2 = GRUB_EFI_DEVICE_PATH_SUBTYPE (dp2); ++ ++ if (subtype1 != subtype2) ++ return (int) subtype1 - (int) subtype2; ++ ++ len1 = GRUB_EFI_DEVICE_PATH_LENGTH (dp1); ++ len2 = GRUB_EFI_DEVICE_PATH_LENGTH (dp2); ++ ++ if (len1 != len2) ++ return (int) len1 - (int) len2; ++ ++ ret = grub_memcmp ((char *)dp1, (char *)dp2, len1); ++ if (ret != 0) ++ return ret; ++ ++ if (GRUB_EFI_END_ENTIRE_DEVICE_PATH (dp1)) ++ break; ++ ++ dp1 = (grub_efi_device_path_t *) ((char *) dp1 + len1); ++ dp2 = (grub_efi_device_path_t *) ((char *) dp2 + len2); ++ } ++ ++ return 0; ++} ++ ++/* Print the chain of Device Path nodes. This is mainly for debugging. */ ++void ++grub_efi_print_device_path (grub_efi_device_path_t *dp) ++{ ++ while (1) ++ { ++ grub_efi_uint8_t type = GRUB_EFI_DEVICE_PATH_TYPE (dp); ++ grub_efi_uint8_t subtype = GRUB_EFI_DEVICE_PATH_SUBTYPE (dp); ++ grub_efi_uint16_t len = GRUB_EFI_DEVICE_PATH_LENGTH (dp); ++ ++ switch (type) ++ { ++ case GRUB_EFI_END_DEVICE_PATH_TYPE: ++ switch (subtype) ++ { ++ case GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE: ++ grub_printf ("/EndEntire\n"); ++ //grub_putchar ('\n'); ++ break; ++ case GRUB_EFI_END_THIS_DEVICE_PATH_SUBTYPE: ++ grub_printf ("/EndThis\n"); ++ //grub_putchar ('\n'); ++ break; ++ default: ++ grub_printf ("/EndUnknown(%x)\n", (unsigned) subtype); ++ break; ++ } ++ break; ++ ++ case GRUB_EFI_HARDWARE_DEVICE_PATH_TYPE: ++ switch (subtype) ++ { ++ case GRUB_EFI_PCI_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_pci_device_path_t pci; ++ grub_memcpy (&pci, dp, len); ++ grub_printf ("/PCI(%x,%x)", ++ (unsigned) pci.function, (unsigned) pci.device); ++ } ++ break; ++ case GRUB_EFI_PCCARD_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_pccard_device_path_t pccard; ++ grub_memcpy (&pccard, dp, len); ++ grub_printf ("/PCCARD(%x)", ++ (unsigned) pccard.function); ++ } ++ break; ++ case GRUB_EFI_MEMORY_MAPPED_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_memory_mapped_device_path_t mmapped; ++ grub_memcpy (&mmapped, dp, len); ++ grub_printf ("/MMap(%x,%llx,%llx)", ++ (unsigned) mmapped.memory_type, ++ mmapped.start_address, ++ mmapped.end_address); ++ } ++ break; ++ case GRUB_EFI_VENDOR_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_vendor_device_path_t vendor; ++ grub_memcpy (&vendor, dp, sizeof (vendor)); ++ grub_printf ("/Vendor(%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x)", ++ (unsigned) vendor.vendor_guid.data1, ++ (unsigned) vendor.vendor_guid.data2, ++ (unsigned) vendor.vendor_guid.data3, ++ (unsigned) vendor.vendor_guid.data4[0], ++ (unsigned) vendor.vendor_guid.data4[1], ++ (unsigned) vendor.vendor_guid.data4[2], ++ (unsigned) vendor.vendor_guid.data4[3], ++ (unsigned) vendor.vendor_guid.data4[4], ++ (unsigned) vendor.vendor_guid.data4[5], ++ (unsigned) vendor.vendor_guid.data4[6], ++ (unsigned) vendor.vendor_guid.data4[7]); ++ } ++ break; ++ case GRUB_EFI_CONTROLLER_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_controller_device_path_t controller; ++ grub_memcpy (&controller, dp, len); ++ grub_printf ("/Ctrl(%x)", ++ (unsigned) controller.controller_number); ++ } ++ break; ++ default: ++ grub_printf ("/UnknownHW(%x)", (unsigned) subtype); ++ break; ++ } ++ break; ++ ++ case GRUB_EFI_ACPI_DEVICE_PATH_TYPE: ++ switch (subtype) ++ { ++ case GRUB_EFI_ACPI_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_acpi_device_path_t acpi; ++ grub_memcpy (&acpi, dp, len); ++ grub_printf ("/ACPI(%x,%x)", ++ (unsigned) acpi.hid, ++ (unsigned) acpi.uid); ++ } ++ break; ++ case GRUB_EFI_EXPANDED_ACPI_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_expanded_acpi_device_path_t eacpi; ++ grub_memcpy (&eacpi, dp, sizeof (eacpi)); ++ grub_printf ("/ACPI("); ++ ++ if (GRUB_EFI_EXPANDED_ACPI_HIDSTR (dp)[0] == '\0') ++ grub_printf ("%x,", (unsigned) eacpi.hid); ++ else ++ grub_printf ("%s,", GRUB_EFI_EXPANDED_ACPI_HIDSTR (dp)); ++ ++ if (GRUB_EFI_EXPANDED_ACPI_UIDSTR (dp)[0] == '\0') ++ grub_printf ("%x,", (unsigned) eacpi.uid); ++ else ++ grub_printf ("%s,", GRUB_EFI_EXPANDED_ACPI_UIDSTR (dp)); ++ ++ if (GRUB_EFI_EXPANDED_ACPI_CIDSTR (dp)[0] == '\0') ++ grub_printf ("%x)", (unsigned) eacpi.cid); ++ else ++ grub_printf ("%s)", GRUB_EFI_EXPANDED_ACPI_CIDSTR (dp)); ++ } ++ break; ++ default: ++ grub_printf ("/UnknownACPI(%x)", (unsigned) subtype); ++ break; ++ } ++ break; ++ ++ case GRUB_EFI_MESSAGING_DEVICE_PATH_TYPE: ++ switch (subtype) ++ { ++ case GRUB_EFI_ATAPI_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_atapi_device_path_t atapi; ++ grub_memcpy (&atapi, dp, len); ++ grub_printf ("/ATAPI(%x,%x,%x)", ++ (unsigned) atapi.primary_secondary, ++ (unsigned) atapi.slave_master, ++ (unsigned) atapi.lun); ++ } ++ break; ++ case GRUB_EFI_SCSI_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_scsi_device_path_t scsi; ++ grub_memcpy (&scsi, dp, len); ++ grub_printf ("/SCSI(%x,%x)", ++ (unsigned) scsi.pun, ++ (unsigned) scsi.lun); ++ } ++ break; ++ case GRUB_EFI_FIBRE_CHANNEL_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_fibre_channel_device_path_t fc; ++ grub_memcpy (&fc, dp, len); ++ grub_printf ("/FibreChannel(%llx,%llx)", ++ fc.wwn, fc.lun); ++ } ++ break; ++ case GRUB_EFI_1394_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_1394_device_path_t firewire; ++ grub_memcpy (&firewire, dp, len); ++ grub_printf ("/1394(%llx)", firewire.guid); ++ } ++ break; ++ case GRUB_EFI_USB_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_usb_device_path_t usb; ++ grub_memcpy (&usb, dp, len); ++ grub_printf ("/USB(%x,%x)", ++ (unsigned) usb.parent_port_number, ++ (unsigned) usb.interface); ++ } ++ break; ++ case GRUB_EFI_USB_CLASS_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_usb_class_device_path_t usb_class; ++ grub_memcpy (&usb_class, dp, len); ++ grub_printf ("/USBClass(%x,%x,%x,%x,%x)", ++ (unsigned) usb_class.vendor_id, ++ (unsigned) usb_class.product_id, ++ (unsigned) usb_class.device_class, ++ (unsigned) usb_class.device_subclass, ++ (unsigned) usb_class.device_protocol); ++ } ++ break; ++ case GRUB_EFI_I2O_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_i2o_device_path_t i2o; ++ grub_memcpy (&i2o, dp, len); ++ grub_printf ("/I2O(%x)", (unsigned) i2o.tid); ++ } ++ break; ++ case GRUB_EFI_MAC_ADDRESS_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_mac_address_device_path_t mac; ++ grub_memcpy (&mac, dp, len); ++ grub_printf ("/MacAddr(%x:%x:%x:%x:%x:%x,%x)", ++ (unsigned) mac.mac_address[0], ++ (unsigned) mac.mac_address[1], ++ (unsigned) mac.mac_address[2], ++ (unsigned) mac.mac_address[3], ++ (unsigned) mac.mac_address[4], ++ (unsigned) mac.mac_address[5], ++ (unsigned) mac.if_type); ++ } ++ break; ++ case GRUB_EFI_IPV4_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_ipv4_device_path_t ipv4; ++ grub_memcpy (&ipv4, dp, len); ++ grub_printf ("/IPv4(%u.%u.%u.%u,%u.%u.%u.%u,%u,%u,%x,%x)", ++ (unsigned) ipv4.local_ip_address[0], ++ (unsigned) ipv4.local_ip_address[1], ++ (unsigned) ipv4.local_ip_address[2], ++ (unsigned) ipv4.local_ip_address[3], ++ (unsigned) ipv4.remote_ip_address[0], ++ (unsigned) ipv4.remote_ip_address[1], ++ (unsigned) ipv4.remote_ip_address[2], ++ (unsigned) ipv4.remote_ip_address[3], ++ (unsigned) ipv4.local_port, ++ (unsigned) ipv4.remote_port, ++ (unsigned) ipv4.protocol, ++ (unsigned) ipv4.static_ip_address); ++ } ++ break; ++ case GRUB_EFI_IPV6_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_ipv6_device_path_t ipv6; ++ grub_memcpy (&ipv6, dp, len); ++ grub_printf ("/IPv6(%x:%x:%x:%x:%x:%x:%x:%x,%x:%x:%x:%x:%x:%x:%x:%x,%u,%u,%x,%x)", ++ (unsigned) ipv6.local_ip_address[0], ++ (unsigned) ipv6.local_ip_address[1], ++ (unsigned) ipv6.local_ip_address[2], ++ (unsigned) ipv6.local_ip_address[3], ++ (unsigned) ipv6.local_ip_address[4], ++ (unsigned) ipv6.local_ip_address[5], ++ (unsigned) ipv6.local_ip_address[6], ++ (unsigned) ipv6.local_ip_address[7], ++ (unsigned) ipv6.remote_ip_address[0], ++ (unsigned) ipv6.remote_ip_address[1], ++ (unsigned) ipv6.remote_ip_address[2], ++ (unsigned) ipv6.remote_ip_address[3], ++ (unsigned) ipv6.remote_ip_address[4], ++ (unsigned) ipv6.remote_ip_address[5], ++ (unsigned) ipv6.remote_ip_address[6], ++ (unsigned) ipv6.remote_ip_address[7], ++ (unsigned) ipv6.local_port, ++ (unsigned) ipv6.remote_port, ++ (unsigned) ipv6.protocol, ++ (unsigned) ipv6.static_ip_address); ++ } ++ break; ++ case GRUB_EFI_INFINIBAND_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_infiniband_device_path_t ib; ++ grub_memcpy (&ib, dp, len); ++ grub_printf ("/InfiniBand(%x,%llx,%llx,%llx)", ++ (unsigned) ib.port_gid[0], /* XXX */ ++ ib.remote_id, ++ ib.target_port_id, ++ ib.device_id); ++ } ++ break; ++ case GRUB_EFI_UART_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_uart_device_path_t uart; ++ grub_memcpy (&uart, dp, len); ++ grub_printf ("/UART(%llu,%u,%x,%x)", ++ uart.baud_rate, ++ uart.data_bits, ++ uart.parity, ++ uart.stop_bits); ++ } ++ break; ++ case GRUB_EFI_VENDOR_MESSAGING_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_vendor_messaging_device_path_t vendor; ++ grub_memcpy (&vendor, dp, sizeof (vendor)); ++ grub_printf ("/Vendor(%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x)", ++ (unsigned) vendor.vendor_guid.data1, ++ (unsigned) vendor.vendor_guid.data2, ++ (unsigned) vendor.vendor_guid.data3, ++ (unsigned) vendor.vendor_guid.data4[0], ++ (unsigned) vendor.vendor_guid.data4[1], ++ (unsigned) vendor.vendor_guid.data4[2], ++ (unsigned) vendor.vendor_guid.data4[3], ++ (unsigned) vendor.vendor_guid.data4[4], ++ (unsigned) vendor.vendor_guid.data4[5], ++ (unsigned) vendor.vendor_guid.data4[6], ++ (unsigned) vendor.vendor_guid.data4[7]); ++ } ++ break; ++ default: ++ grub_printf ("/UnknownMessaging(%x)", (unsigned) subtype); ++ break; ++ } ++ break; ++ ++ case GRUB_EFI_MEDIA_DEVICE_PATH_TYPE: ++ switch (subtype) ++ { ++ case GRUB_EFI_HARD_DRIVE_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_hard_drive_device_path_t hd; ++ grub_memcpy (&hd, dp, len); ++ grub_printf ("/HD(%u,%llx,%llx,%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x)", ++ hd.partition_number, ++ hd.partition_start, ++ hd.partition_size, ++ (unsigned) hd.partition_signature[3], ++ (unsigned) hd.partition_signature[2], ++ (unsigned) hd.partition_signature[1], ++ (unsigned) hd.partition_signature[0], ++ (unsigned) hd.partition_signature[5], ++ (unsigned) hd.partition_signature[4], ++ (unsigned) hd.partition_signature[7], ++ (unsigned) hd.partition_signature[6], ++ (unsigned) hd.partition_signature[9], ++ (unsigned) hd.partition_signature[8], ++ (unsigned) hd.partition_signature[10], ++ (unsigned) hd.partition_signature[11], ++ (unsigned) hd.partition_signature[12], ++ (unsigned) hd.partition_signature[13], ++ (unsigned) hd.partition_signature[14], ++ (unsigned) hd.partition_signature[15]); ++ } ++ break; ++ case GRUB_EFI_CDROM_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_cdrom_device_path_t cd; ++ grub_memcpy (&cd, dp, len); ++ grub_printf ("/CD(%u,%llx,%llx)", ++ cd.boot_entry, ++ cd.partition_start, ++ cd.partition_size); ++ } ++ break; ++ case GRUB_EFI_VENDOR_MEDIA_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_vendor_media_device_path_t vendor; ++ grub_memcpy (&vendor, dp, sizeof (vendor)); ++ grub_printf ("/Vendor(%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x)", ++ (unsigned) vendor.vendor_guid.data1, ++ (unsigned) vendor.vendor_guid.data2, ++ (unsigned) vendor.vendor_guid.data3, ++ (unsigned) vendor.vendor_guid.data4[0], ++ (unsigned) vendor.vendor_guid.data4[1], ++ (unsigned) vendor.vendor_guid.data4[2], ++ (unsigned) vendor.vendor_guid.data4[3], ++ (unsigned) vendor.vendor_guid.data4[4], ++ (unsigned) vendor.vendor_guid.data4[5], ++ (unsigned) vendor.vendor_guid.data4[6], ++ (unsigned) vendor.vendor_guid.data4[7]); ++ } ++ break; ++ case GRUB_EFI_FILE_PATH_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_file_path_device_path_t *fp; ++ grub_uint8_t buf[(len - 4) * 2 + 1]; ++ fp = (grub_efi_file_path_device_path_t *) dp; ++ *grub_utf16_to_utf8 (buf, fp->path_name, ++ (len - 4) / sizeof (grub_efi_char16_t)) ++ = '\0'; ++ grub_printf ("/File(%s)", buf); ++ } ++ break; ++ case GRUB_EFI_PROTOCOL_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_protocol_device_path_t proto; ++ grub_memcpy (&proto, dp, sizeof (proto)); ++ grub_printf ("/Protocol(%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x)", ++ (unsigned) proto.guid.data1, ++ (unsigned) proto.guid.data2, ++ (unsigned) proto.guid.data3, ++ (unsigned) proto.guid.data4[0], ++ (unsigned) proto.guid.data4[1], ++ (unsigned) proto.guid.data4[2], ++ (unsigned) proto.guid.data4[3], ++ (unsigned) proto.guid.data4[4], ++ (unsigned) proto.guid.data4[5], ++ (unsigned) proto.guid.data4[6], ++ (unsigned) proto.guid.data4[7]); ++ } ++ break; ++ default: ++ grub_printf ("/UnknownMedia(%x)", (unsigned) subtype); ++ break; ++ } ++ break; ++ ++ case GRUB_EFI_BIOS_DEVICE_PATH_TYPE: ++ switch (subtype) ++ { ++ case GRUB_EFI_BIOS_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_bios_device_path_t bios; ++ grub_memcpy (&bios, dp, sizeof (bios)); ++ grub_printf ("/BIOS(%x,%x,%s)", ++ (unsigned) bios.device_type, ++ (unsigned) bios.status_flags, ++ (char *) (dp + 1)); ++ } ++ break; ++ default: ++ grub_printf ("/UnknownBIOS(%x)", (unsigned) subtype); ++ break; ++ } ++ break; ++ ++ default: ++ grub_printf ("/UnknownType(%x,%x)\n", ++ (unsigned) type, ++ (unsigned) subtype); ++ return; ++ break; ++ } ++ ++ if (GRUB_EFI_END_ENTIRE_DEVICE_PATH (dp)) ++ break; ++ ++ dp = (grub_efi_device_path_t *) ((char *) dp + len); ++ } ++} ++ ++static inline int ++dpname_matches(char *str, char *candidate) ++{ ++ grub_size_t clen = grub_strlen(candidate); ++ char scratch[clen + 2]; ++ int rc; ++ ++ grub_strncpy(scratch, candidate, clen); ++ scratch[clen+1] = '\0'; ++ if (scratch[clen-1] == '$') ++ { ++ scratch[--clen] = '\0'; ++ rc = !grub_strncasecmp(str, scratch, clen); ++ return rc; ++ } ++ ++ grub_strncpy(scratch+clen, "(", 2); ++ clen = grub_strlen(scratch); ++ rc = !grub_strncasecmp(str, scratch, clen); ++ return rc; ++} ++ ++static void ++finish_param_parse(char *pos, char **end, char *tmp) ++{ ++ if (!pos || !end || !tmp) ++ return; ++ ++ if (*end) ++ **end = *tmp; ++} ++ ++static char * ++get_next_param(char *pos, char **end, char *tmp) ++{ ++ char *comma = NULL; ++ char *openparen = NULL; ++ char *closeparen = NULL; ++ ++ if (!pos || !end || !tmp) ++ return NULL; ++ ++ if (*end) ++ **end = *tmp; ++ ++ openparen = grub_strchr(pos, '('); ++ if (openparen && *openparen) ++ { ++ pos = grub_strnchr(openparen + 1, ' '); ++ comma = grub_strchr(pos, ','); ++ closeparen = grub_strchr(pos, ')'); ++ ++ if (comma && *comma) ++ { ++ *tmp = *comma; ++ *comma = '\0'; ++ *end = comma; ++ } ++ else if (closeparen && *closeparen) ++ { ++ *tmp = *closeparen; ++ *closeparen = '\0'; ++ *end = closeparen; ++ } ++ return pos; ++ } ++ ++ comma = grub_strchr(pos, ','); ++ if (comma && *comma) ++ { ++ pos = grub_strnchr(comma + 1, ' '); ++ comma = grub_strchr(pos, ','); ++ closeparen = grub_strchr(pos, ')'); ++ ++ if (comma && *comma) ++ { ++ *tmp = *comma; ++ *comma = '\0'; ++ *end = comma; ++ } ++ else if (closeparen && *closeparen) ++ { ++ *tmp = *closeparen; ++ *closeparen = '\0'; ++ *end = closeparen; ++ } ++ return pos; ++ } ++ ++ closeparen = grub_strchr(pos, ')'); ++ if (closeparen && *closeparen) ++ pos = grub_strnchr(closeparen + 1, ' '); ++ ++ return pos; ++} ++ ++struct generic_device_path ++ { ++ grub_efi_uint8_t type; ++ grub_efi_uint8_t subtype; ++ grub_efi_uint16_t length; ++ } __attribute__((packed)); ++ ++struct hd_media_device_path ++ { ++ grub_efi_uint8_t type; ++ grub_efi_uint8_t subtype; ++ grub_efi_uint16_t length; ++ grub_efi_uint32_t partition; ++ grub_efi_uint64_t startlba; ++ grub_efi_uint64_t size; ++ grub_efi_uint8_t signature[16]; ++ grub_efi_uint8_t mbr_type; ++ grub_efi_uint8_t signature_type; ++ } __attribute__((packed)); ++ ++static inline int ++parse_device_path_component(const char *orig_str, void *data) ++{ ++ int orig_str_len = strlen(orig_str) + 1; ++ char str[orig_str_len]; ++ char tmp; ++ char *pos = str; ++ int ret = 0; ++ ++ grub_strcpy(str, orig_str); ++ if (dpname_matches(str, "pci")) ++ { ++ } ++ else if (dpname_matches(str, "pccard")) ++ { ++ } ++ else if (dpname_matches(str, "mmap")) ++ { ++ } ++ else if (dpname_matches(str, "ctrl")) ++ { ++ } ++ else if (dpname_matches(str, "acpi")) ++ { ++ } ++ /* XXX what about _ADR? */ ++ /* messaging device paths */ ++ else if (dpname_matches(str, "atapi")) ++ { ++ } ++ else if (dpname_matches(str, "scsi")) ++ { ++ } ++ else if (dpname_matches(str, "fibrechannel")) ++ { ++ } ++ else if (dpname_matches(str, "1394")) ++ { ++ } ++ else if (dpname_matches(str, "usb")) ++ { ++ } ++ else if (dpname_matches(str, "sata")) ++ { ++ } ++ /* XXX what about usb-wwid */ ++ /* XXX what about lun */ ++ else if (dpname_matches(str, "usbclass")) ++ { ++ } ++ else if (dpname_matches(str, "i2o")) ++ { ++ } ++ else if (dpname_matches(str, "macaddr")) ++ { ++ } ++ else if (dpname_matches(str, "ipv4")) ++ { ++ } ++ else if (dpname_matches(str, "ipv6")) ++ { ++ } ++ /* XXX what about vlan */ ++ else if (dpname_matches(str, "infiniband")) ++ { ++ } ++ else if (dpname_matches(str, "uart")) ++ { ++ } ++ else if (dpname_matches(str, "uartflowctrl")) ++ { ++ } ++ else if (dpname_matches(str, "sas")) ++ { ++ } ++ else if (dpname_matches(str, "iscsi")) ++ { ++ } ++ /* media device paths */ ++ else if (dpname_matches(str, "hd")) ++ { ++ /* these look roughly like: ++ * HD(Partition,Type,Signature,Start, Size) ++ * but: ++ * - type may be optional. 1 or "MBR" means MBR. 2 or "GPT" means GPT. ++ * - start and size are optional ++ * - there can be random spaces ++ */ ++ struct hd_media_device_path hddp; ++ unsigned long tmpul; ++ char *end = NULL, c; ++ char tmps[19] = "0x"; ++ char *tmpsp; ++ ++ ret = 42; ++ ++ hddp.type = GRUB_EFI_MEDIA_DEVICE_PATH_TYPE; ++ hddp.subtype = GRUB_EFI_HARD_DRIVE_DEVICE_PATH_SUBTYPE; ++ hddp.length = ret; ++ ++ //pos += grub_strcspn(pos, '('); ++ pos = get_next_param(pos, &end, &c); ++ if (!*pos) ++ { ++broken_hd: ++ finish_param_parse(pos, &end, &c); ++ return 0; ++ } ++ grub_strncpy(tmps+2, pos, 16); ++ tmps[18] = '\0'; ++ tmpsp = tmps; ++ safe_parse_maxulong(&tmpsp, &tmpul); ++ hddp.partition = tmpul; ++ ++ pos = get_next_param(pos, &end, &c); ++ if (!*pos) ++ goto broken_hd; ++ grub_strcpy(tmps+2, pos); ++ tmpsp = tmps; ++ safe_parse_maxulong(&tmpsp, &tmpul); ++ hddp.startlba = tmpul; ++ ++ pos = get_next_param(pos, &end, &c); ++ if (!*pos) ++ goto broken_hd; ++ grub_strcpy(tmps+2, pos); ++ tmpsp = tmps; ++ safe_parse_maxulong(&tmpsp, &tmpul); ++ hddp.size = tmpul; ++ ++ pos = get_next_param(pos, &end, &c); ++ if (!*pos) ++ goto broken_hd; ++ if (!grub_strcmp(pos, "None")) ++ { ++ hddp.signature_type = 0; ++ grub_memset(hddp.signature, '\0', sizeof(hddp.signature)); ++ } ++ else if (grub_strnlen(pos, 36) == 8) ++ { ++ grub_efi_uint32_t tmpu32; ++ grub_strncpy(tmps+2, pos, 8); ++ tmps[10] = '\0'; ++ tmpsp = tmps; ++ safe_parse_maxulong(&tmpsp, &tmpul); ++ tmpu32 = tmpul; ++ hddp.signature_type = 1; ++ grub_memcpy(hddp.signature, &tmpu32, sizeof(tmpu32)); ++ } ++ else if (grub_strnlen(pos, 36) == 36) ++ { ++ grub_efi_uint32_t tmpu32; ++ grub_efi_uint16_t tmpu16; ++ grub_efi_uint8_t tmpu8; ++ ++ grub_strncpy(tmps+2, pos, 8); ++ tmps[10] = '\0'; ++ tmpsp = tmps; ++ safe_parse_maxulong(&tmpsp, &tmpul); ++ tmpu32 = tmpul; ++ grub_memcpy(hddp.signature, &tmpu32, sizeof(tmpu32)); ++ ++ grub_strncpy(tmps+2, pos+9, 4); ++ tmps[6] = '\0'; ++ tmpsp = tmps; ++ safe_parse_maxulong(&tmpsp, &tmpul); ++ tmpu16 = tmpul; ++ grub_memcpy(hddp.signature + 4, &tmpu16, sizeof(tmpu16)); ++ ++ grub_strncpy(tmps+2, pos+14, 4); ++ tmps[6] = '\0'; ++ tmpsp = tmps; ++ safe_parse_maxulong(&tmpsp, &tmpul); ++ tmpu16 = tmpul; ++ grub_memcpy(hddp.signature + 6, &tmpu16, sizeof(tmpu16)); ++ ++ /* these are displayed like a u16, but they're a u8. thanks. */ ++ grub_strncpy(tmps+2, pos+19, 2); ++ tmps[4] = '\0'; ++ tmpsp = tmps; ++ safe_parse_maxulong(&tmpsp, &tmpul); ++ tmpu8 = tmpul; ++ grub_memcpy(hddp.signature + 8, &tmpu8, sizeof(tmpu8)); ++ grub_strncpy(tmps+2, pos+21, 2); ++ tmps[4] = '\0'; ++ tmpsp = tmps; ++ safe_parse_maxulong(&tmpsp, &tmpul); ++ tmpu8 = tmpul; ++ grub_memcpy(hddp.signature + 9, &tmpu8, sizeof(tmpu8)); ++ ++ grub_strncpy(tmps+2, pos+24, 2); ++ tmps[4] = '\0'; ++ tmpsp = tmps; ++ safe_parse_maxulong(&tmpsp, &tmpul); ++ tmpu8 = tmpul; ++ grub_memcpy(hddp.signature + 10, &tmpu8, sizeof(tmpu8)); ++ ++ grub_strncpy(tmps+2, pos+26, 2); ++ tmps[4] = '\0'; ++ tmpsp = tmps; ++ safe_parse_maxulong(&tmpsp, &tmpul); ++ tmpu8 = tmpul; ++ grub_memcpy(hddp.signature + 11, &tmpu8, sizeof(tmpu8)); ++ ++ grub_strncpy(tmps+2, pos+28, 2); ++ tmps[4] = '\0'; ++ tmpsp = tmps; ++ safe_parse_maxulong(&tmpsp, &tmpul); ++ tmpu8 = tmpul; ++ grub_memcpy(hddp.signature + 12, &tmpu8, sizeof(tmpu8)); ++ ++ grub_strncpy(tmps+2, pos+30, 2); ++ tmps[4] = '\0'; ++ tmpsp = tmps; ++ safe_parse_maxulong(&tmpsp, &tmpul); ++ tmpu8 = tmpul; ++ grub_memcpy(hddp.signature + 13, &tmpu8, sizeof(tmpu8)); ++ ++ grub_strncpy(tmps+2, pos+32, 2); ++ tmps[4] = '\0'; ++ tmpsp = tmps; ++ safe_parse_maxulong(&tmpsp, &tmpul); ++ tmpu8 = tmpul; ++ grub_memcpy(hddp.signature + 14, &tmpu8, sizeof(tmpu8)); ++ ++ grub_strncpy(tmps+2, pos+34, 2); ++ tmps[4] = '\0'; ++ tmpsp = tmps; ++ safe_parse_maxulong(&tmpsp, &tmpul); ++ tmpu8 = tmpul; ++ grub_memcpy(hddp.signature + 15, &tmpu8, sizeof(tmpu8)); ++ ++ hddp.signature_type = 2; ++ } ++ else ++ goto broken_hd; ++ ++ hddp.mbr_type = hddp.signature_type; ++ ++ if (data) ++ grub_memcpy(data, &hddp, sizeof(hddp)); ++ } ++ else if (dpname_matches(str, "cd")) ++ { ++ } ++ else if (dpname_matches(str, "file")) ++ { ++ } ++ else if (dpname_matches(str, "protocol")) ++ { ++ } ++ /* what about piwg firmware file? */ ++ /* what about piwg firmware volume? */ ++ /* what about relative offset media */ ++ else if (dpname_matches(str, "bios")) ++ { ++ } ++ /* This is the end beautiful friend */ ++ else if (dpname_matches(str, "EndEntire$")) ++ { ++ struct generic_device_path gdp = { ++ .type = GRUB_EFI_END_DEVICE_PATH_TYPE, ++ .subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE, ++ .length = 4 ++ }; ++ ret = 4; ++ if (data) ++ grub_memmove(data, &gdp, sizeof(gdp)); ++ } ++ else if (dpname_matches(str, "EndThis$")) ++ { ++ struct generic_device_path gdp = { ++ .type = GRUB_EFI_END_DEVICE_PATH_TYPE, ++ .subtype = GRUB_EFI_END_THIS_DEVICE_PATH_SUBTYPE, ++ .length = 4 ++ }; ++ ret = 4; ++ if (data) ++ grub_memmove(data, &gdp, sizeof(gdp)); ++ } ++ else if (dpname_matches(str, "EndUnknown$")) ++ { ++ struct generic_device_path gdp = { ++ .type = GRUB_EFI_END_DEVICE_PATH_TYPE, ++ .subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE, ++ .length = 4 ++ }; ++ ret = 4; ++ if (data) ++ grub_memmove(data, &gdp, sizeof(gdp)); ++ } ++ /* handle anything we didn't recognize */ ++ else if (dpname_matches(str, "vendor")) ++ { ++ /* needs to handle: ++ * 1) hw vendor ++ * 2) messaging vendor ++ * 3) media vendor ++ */ ++ } ++ else ++ { ++ } ++ ++ return ret; ++} ++ ++grub_efi_device_path_t * ++device_path_from_utf8 (const char *device) ++{ ++ grub_size_t device_len; ++ grub_efi_device_path_t *dp = NULL; ++ ++ device_len = parse_device_path_component(device, dp); ++ device_len += parse_device_path_component("EndEntire", dp); ++ dp = grub_malloc(device_len); ++ if (!dp) ++ return NULL; ++ device_len = parse_device_path_component(device, dp); ++ device_len += parse_device_path_component("EndEntire", ++ (void *)((unsigned long)dp + device_len)); ++ ++ ++ return dp; ++} +diff --git a/efi/efigraph.c b/efi/efigraph.c +new file mode 100644 +index 0000000..6905e07 +--- /dev/null ++++ b/efi/efigraph.c +@@ -0,0 +1,1501 @@ ++/* efigraph.c - EFI "graphics output" support for GRUB/EFI */ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright 2007 Red Hat, Inc. ++ * Copyright (C) 2007 Intel Corp. ++ * Copyright (C) 2001,2002 Red Hat, Inc. ++ * Portions copyright (C) 2000 Conectiva, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#ifdef SUPPORT_GRAPHICS ++ ++#include <grub/misc.h> ++#include <grub/types.h> ++#include <grub/cpu/linux.h> ++#include <grub/efi/api.h> ++#include <grub/efi/efi.h> ++#include <grub/efi/misc.h> ++ ++#include <term.h> ++#include <shared.h> ++#include <graphics.h> ++ ++#include "graphics.h" ++#include "xpm.h" ++ ++#define dbgdelay(_f, _l) ({\ ++ if (debug_graphics) { \ ++ do { \ ++ grub_efi_stall(1000); \ ++ } while (console_getkey() < 0); \ ++ } \ ++ }) ++ ++#define dprintf(format, args...) ({ \ ++ if (debug_graphics) { \ ++ struct term_entry *_tt = current_term; \ ++ current_term = term_table; \ ++ grub_printf(format, ##args); \ ++ current_term = _tt; \ ++ } \ ++ }) ++ ++struct grub_pixel_info ++{ ++ char depth_bits; ++ char depth_bytes; ++ unsigned char red_size; ++ unsigned char red_pos; ++ unsigned char green_size; ++ unsigned char green_pos; ++ unsigned char blue_size; ++ unsigned char blue_pos; ++ unsigned char reserved_size; ++ unsigned char reserved_pos; ++ int line_length; ++}; ++ ++typedef struct grub_pixel_info grub_pixel_info_t; ++ ++ ++static grub_efi_guid_t graphics_output_guid = GRUB_EFI_GRAPHICS_OUTPUT_GUID; ++static grub_efi_guid_t pci_io_guid = GRUB_EFI_PCI_IO_GUID; ++ ++#ifndef MIN ++#define MIN(x,y) ( ((x) < (y)) ? (x) : (y)) ++#endif ++#ifndef MAX ++#define MAX(x,y) ( ((x) < (y)) ? (y) : (x)) ++#endif ++ ++#define pixel_equal(x,y) ((x).bgrr.red == (y).bgrr.red && \ ++ (x).bgrr.green == (y).bgrr.green && \ ++ (x).bgrr.blue == (y).bgrr.blue && \ ++ (x).bgrr.reserved == (y).bgrr.reserved) ++ ++struct video_mode { ++ grub_efi_uint32_t number; ++ grub_efi_uintn_t size; ++ grub_efi_graphics_output_mode_information_t *info; ++}; ++ ++#define MAX_PALETTE 16 ++struct eg { ++ struct graphics_backend *backend; ++ grub_efi_graphics_output_t *output_intf; ++ struct video_mode **modes; ++ int max_mode; ++ grub_efi_uint32_t text_mode; ++ grub_efi_uint32_t graphics_mode; ++ grub_pixel_info_t pixel_info; ++ enum { TEXT, GRAPHICS } current_mode; ++ ++ position_t screen_size; ++ position_t screen_pos; ++ ++ struct bltbuf *background; ++ ++ grub_efi_graphics_output_pixel_t palette[MAX_PALETTE + 1]; ++}; ++ ++#define RGB(r,g,b) { .bgrr.red = r, .bgrr.green = g, .bgrr.blue = b } ++ ++static grub_efi_graphics_output_pixel_t cga_colors[] = { ++ RGB(0x00,0x00,0x00), // 0 Black ++ RGB(0x7f,0x00,0x00), // 1 Dark Red ++ RGB(0x00,0x7f,0x00), // 2 Dark Green ++ RGB(0x7f,0x7f,0x00), // 3 Dark Yellow ++ RGB(0x00,0x00,0x7f), // 4 Dark Blue ++ RGB(0x7f,0x00,0x7f), // 5 Dark Magenta ++ RGB(0x00,0x7f,0x7f), // 6 Dark Cyan ++ RGB(0xc0,0xc0,0xc0), // 7 Light Grey ++ RGB(0x7f,0x7f,0x7f), // 8 Dark Grey ++ RGB(0xff,0x00,0x00), // 9 Red ++ RGB(0x00,0xff,0x00), // 10 Green ++ RGB(0xff,0xff,0x00), // 11 Yellow ++ RGB(0x00,0x00,0xff), // 12 Blue ++ RGB(0xff,0x00,0xff), // 13 Magenta ++ RGB(0x00,0xff,0xff), // 14 Cyan ++ RGB(0xff,0xff,0xff), // 15 White ++ RGB(0xff,0xff,0xff), // 16 Also white ;) ++}; ++ ++static const int n_cga_colors = sizeof (cga_colors) / sizeof (cga_colors[0]); ++ ++static void ++find_bits (unsigned long mask, unsigned char *first, ++ unsigned char* len) ++{ ++ unsigned char bit_pos = 0, bit_len = 0; ++ *first =0; ++ *len = 0; ++ if (mask == 0) ++ return; ++ while (! (mask & 0x1)) { ++ mask = mask >> 1; ++ bit_pos++; ++ } ++ while (mask & 0x1) { ++ mask = mask >> 1; ++ bit_len++; ++ } ++ *first = bit_pos; ++ *len = bit_len; ++} ++ ++static grub_efi_graphics_output_mode_information_t * ++get_graphics_mode_info_for_mode(struct eg *eg, int mode) ++{ ++ int i; ++ ++ for (i = 0; i < eg->max_mode; i++) { ++ if (eg->modes[i] == NULL) ++ continue; ++ if (eg->modes[i]->number == mode) ++ return eg->modes[i]->info; ++ } ++ return NULL; ++} ++ ++static grub_efi_graphics_output_mode_information_t * ++get_graphics_mode_info(struct eg *eg) ++{ ++ return get_graphics_mode_info_for_mode(eg, eg->graphics_mode); ++} ++ ++static void ++print_mode_info(struct video_mode *mode) ++{ ++ grub_efi_graphics_output_mode_information_t *info = mode->info; ++ dprintf("mode %d (%dx%d, pitch %d, ", ++ mode->number, ++ info->horizontal_resolution, ++ info->vertical_resolution, ++ info->pixels_per_scan_line); ++ switch(info->pixel_format) { ++ case GRUB_EFI_PIXEL_RGBR_8BIT_PER_COLOR: ++ dprintf("rgbr 8bpc"); ++ break; ++ case GRUB_EFI_PIXEL_BGRR_8BIT_PER_COLOR: ++ dprintf("bgrr 8bpc"); ++ break; ++ case GRUB_EFI_PIXEL_BIT_MASK: ++ dprintf("bitmask color"); ++ break; ++ case GRUB_EFI_PIXEL_BLT_ONLY: ++ dprintf("blt only"); ++ break; ++ } ++ dprintf(")\n"); ++ if (info->pixel_format == GRUB_EFI_PIXEL_BIT_MASK) { ++ dprintf("red: %08x green: %08x blue: %08x res: %08x\n", ++ info->pixel_information.red_mask, ++ info->pixel_information.green_mask, ++ info->pixel_information.blue_mask, ++ info->pixel_information.reserved_mask); ++ } ++} ++ ++static void ++set_kernel_params(struct graphics_backend *backend, ++ struct linux_kernel_params *params) ++{ ++ struct eg *eg; ++ ++ if (!backend || !backend->priv) ++ return; ++ ++ eg = backend->priv; ++ grub_efi_graphics_output_t *gop_intf = NULL; ++ grub_efi_graphics_output_mode_t *gop_mode = NULL; ++ grub_efi_status_t efi_status = GRUB_EFI_SUCCESS; ++ grub_efi_graphics_output_mode_information_t *gop_info = NULL; ++ grub_efi_uintn_t size; ++ ++ gop_intf = grub_efi_locate_protocol (&graphics_output_guid, NULL); ++ if (gop_intf == NULL) ++ return; ++ ++ gop_mode = gop_intf->mode; ++ ++ efi_status = Call_Service_4 (gop_intf->query_mode, ++ gop_intf, gop_mode->mode, &size, &gop_info); ++ ++ ++ if (efi_status == GRUB_EFI_SUCCESS) { ++ /* No VBE on EFI. */ ++ params->lfb_width = gop_info->horizontal_resolution; ++ params->lfb_height = gop_info->vertical_resolution; ++ params->lfb_base = gop_mode->frame_buffer_base; ++ params->lfb_size = gop_mode->frame_buffer_size; ++ params->lfb_pages = 1; ++ params->vesapm_segment = 0; ++ params->vesapm_offset = 0; ++ params->vesa_attrib = 0; ++ if (gop_info->pixel_format == GRUB_EFI_PIXEL_RGBR_8BIT_PER_COLOR) { ++ params->lfb_depth = 32; ++ params->red_mask_size = 8; ++ params->red_field_pos = 0; ++ params->green_mask_size = 8; ++ params->green_field_pos = 8; ++ params->blue_mask_size = 8; ++ params->blue_field_pos = 16; ++ params->reserved_mask_size = 8; ++ params->reserved_field_pos = 24; ++ params->lfb_line_len = gop_info->pixels_per_scan_line * 4; ++ } else if (gop_info->pixel_format == ++ GRUB_EFI_PIXEL_BGRR_8BIT_PER_COLOR) { ++ params->lfb_depth = 32; ++ params->red_mask_size = 8; ++ params->red_field_pos = 16; ++ params->green_mask_size = 8; ++ params->green_field_pos = 8; ++ params->blue_mask_size = 8; ++ params->blue_field_pos = 0; ++ params->reserved_mask_size = 8; ++ params->reserved_field_pos = 24; ++ params->lfb_line_len = gop_info->pixels_per_scan_line * 4; ++ } else if (gop_info->pixel_format == GRUB_EFI_PIXEL_BIT_MASK) { ++ find_bits (gop_info->pixel_information.red_mask, ++ ¶ms->red_field_pos, ¶ms->red_mask_size); ++ find_bits (gop_info->pixel_information.green_mask, ++ ¶ms->green_field_pos, ¶ms->green_mask_size); ++ find_bits (gop_info->pixel_information.blue_mask, ++ ¶ms->blue_field_pos, ¶ms->blue_mask_size); ++ find_bits (gop_info->pixel_information.reserved_mask, ++ ¶ms->reserved_field_pos, ¶ms->reserved_mask_size); ++ params->lfb_depth = params->red_mask_size ++ + params->green_mask_size ++ + params->blue_mask_size ++ + params->reserved_mask_size; ++ params->lfb_line_len = ++ (gop_info->pixels_per_scan_line * params->lfb_depth) / 8; ++ } else { ++ params->lfb_depth = 4; ++ params->red_mask_size = 0; ++ params->red_field_pos = 0; ++ params->green_mask_size = 0; ++ params->green_field_pos = 0; ++ params->blue_mask_size = 0; ++ params->blue_field_pos = 0; ++ params->reserved_mask_size = 0; ++ params->reserved_field_pos = 0; ++ params->lfb_line_len = params->lfb_width / 2; ++ } ++#if 0 ++ params->video_cursor_x = 0; ++ params->video_cursor_y = 0; ++ params->video_page = 0; ++ params->video_mode = 0; ++ params->video_width = 0; ++ params->video_ega_bx = 0; ++ params->video_height = 0; ++ params->have_vga = 0x70; ++ params->font_size = 0; ++#else ++ params->video_cursor_x = grub_efi_system_table->con_out->mode->cursor_column; ++ params->video_cursor_y = grub_efi_system_table->con_out->mode->cursor_row; ++ params->video_page = 0; /* ??? */ ++ params->video_mode = grub_efi_system_table->con_out->mode->mode; ++ params->video_width = (grub_console_getwh () >> 8); ++ params->video_ega_bx = 0; ++ params->video_height = (grub_console_getwh () & 0xff); ++ params->have_vga = VIDEO_TYPE_EFI; ++ params->font_size = 16; /* XXX */ ++#endif ++ } ++} ++ ++static void ++pixel_to_rgb(grub_efi_graphics_output_pixel_t *pixel, ++ int *red, int *green, int *blue) ++{ ++ *red = pixel->bgrr.red; ++ *green = pixel->bgrr.green; ++ *blue = pixel->bgrr.blue; ++} ++ ++static void ++rgb_to_pixel(int red, int green, int blue, ++ grub_efi_graphics_output_pixel_t *pixel) ++{ ++ pixel->bgrr.red = red; ++ pixel->bgrr.green = green; ++ pixel->bgrr.blue = blue; ++} ++ ++static void ++position_to_phys(struct eg *eg, position_t *virt, position_t *phys) ++{ ++ phys->x = virt->x + eg->screen_pos.x; ++ phys->y = virt->y + eg->screen_pos.y; ++} ++ ++static int ++abs_paddr(struct eg *eg, position_t *virt) ++{ ++ position_t phys; ++ position_to_phys(eg, virt, &phys); ++ return phys.x + phys.y * eg->screen_size.x; ++} ++ ++struct bltbuf { ++ grub_efi_uintn_t width; ++ grub_efi_uintn_t height; ++ grub_efi_graphics_output_pixel_t pixbuf[]; ++}; ++ ++static struct bltbuf *alloc_bltbuf(grub_efi_uintn_t width, ++ grub_efi_uintn_t height) ++{ ++ struct bltbuf *buf = NULL; ++ grub_efi_uintn_t pixbuf_size = width * height * ++ sizeof (grub_efi_graphics_output_pixel_t); ++ ++ if (!(buf = grub_malloc(sizeof(buf->width) + sizeof(buf->height) + ++ pixbuf_size))) ++ return NULL; ++ ++ buf->width = width; ++ buf->height = height; ++ grub_memset(buf->pixbuf, '\0', pixbuf_size); ++ return buf; ++} ++ ++ ++static void ++hw_blt_pos_to_screen_pos(struct eg *eg, struct bltbuf *bltbuf, ++ position_t *bltpos, position_t *bltsz, position_t *pos) ++{ ++ position_t phys; ++ ++ position_to_phys(eg, pos, &phys); ++ ++ Call_Service_10(eg->output_intf->blt, eg->output_intf, (void *)bltbuf->pixbuf, ++ GRUB_EFI_BLT_BUFFER_TO_VIDEO, ++ bltpos->x, bltpos->y, ++ phys.x, phys.y, ++ bltsz->x, bltsz->y, ++ 0); ++} ++ ++static void ++blt_pos_to_screen_pos(struct eg *eg, struct bltbuf *bltbuf, ++ position_t *bltpos, position_t *bltsz, position_t *pos) ++{ ++ grub_efi_graphics_output_mode_information_t *info = get_graphics_mode_info(eg); ++ grub_efi_graphics_output_pixel_t *pixel; ++ position_t phys; ++ const int pxlstride = info->pixels_per_scan_line; ++ const int bytestride = pxlstride * sizeof (*pixel); ++ ++ position_to_phys(eg, pos, &phys); ++ ++ if (info->pixel_format == GRUB_EFI_PIXEL_BLT_ONLY || 1) { ++ hw_blt_pos_to_screen_pos(eg, bltbuf, bltpos, bltsz, pos); ++#if 0 ++ } else if (info->pixel_format == GRUB_EFI_PIXEL_BIT_MASK) { ++ int y; ++ grub_pixel_info_t *pinfo = &eg->pixel_info; ++ const int maxpixels = ++ MIN(info->horizontal_resolution - pos->x, bltsz->x); ++ ++ for (y = bltpos->y; y < bltpos->y + bltsz->y; y++, phys.y++) { ++ char raw_pixels[maxpixels * pinfo->depth_bytes]; ++ char *fb = (char *)(unsigned long)eg->output_intf->mode->frame_buffer_base; ++ int x; ++ ++ pixel = (void *)&bltbuf->pixbuf[y * bltbuf->width + bltpos->x]; ++ fb += phys.y * pinfo->line_length + phys.x * pinfo->depth_bytes; ++ ++ for (x = 0; x < maxpixels; x++) { ++ char depth_bytes = pinfo->depth_bytes; ++ char *raw_pixel = raw_pixels + x * depth_bytes; ++ ++ int red, green, blue, color; ++ char *colorp; ++ ++#if 0 ++ red = pixel[x].bgrr.red & 0x3f; ++ green = pixel[x].bgrr.green & 0x3f; ++ blue = pixel[x].bgrr.blue & 0x3f; ++ red = red * ((1 << pinfo->red_size) - 1) / 0x3f; ++ green = green * ((1 << pinfo->green_size) - 1) / 0x3f; ++ blue = blue * ((1 << pinfo->blue_size) - 1) / 0x3f; ++#else ++ red = pixel[x].bgrr.red; ++ green = pixel[x].bgrr.green; ++ blue = pixel[x].bgrr.blue; ++ ++ red >>= 8 - pinfo->red_size; ++ green >>= 8 - pinfo->green_size; ++ blue >>= 8 - pinfo->blue_size; ++#endif ++ ++ color = (red << pinfo->red_pos) | ++ (green << pinfo->green_pos) | ++ (blue << pinfo->blue_pos); ++ colorp = (void *)&color; ++ while (depth_bytes--) ++ *raw_pixel++ = *colorp++; ++ } ++ memmove(fb, raw_pixels, maxpixels * pinfo->depth_bytes); ++ } ++#endif ++ } else { ++ int y; ++ grub_pixel_info_t *pinfo = &eg->pixel_info; ++ const int maxpixels = ++ MIN(info->horizontal_resolution - pos->x, bltsz->x); ++ ++ //char *line = &fb[phys.y * bytestride + phys.x * sizeof(*pixel)]; ++ for (y = bltpos->y; y < bltpos->y + bltsz->y; y++, phys.y++) { ++ char raw_pixels[maxpixels * sizeof(*pixel)]; ++ char *fb = (char *)(unsigned long)eg->output_intf->mode->frame_buffer_base; ++ int x; ++ ++ pixel = (void *)&bltbuf->pixbuf[y * bltbuf->width + bltpos->x]; ++ fb += phys.y * pinfo->line_length + phys.x * pinfo->depth_bytes; ++ ++ if (info->pixel_format == GRUB_EFI_PIXEL_BGRR_8BIT_PER_COLOR) { ++ memmove(raw_pixels, pixel, maxpixels * sizeof (*pixel)); ++ continue; ++ } else if (info->pixel_format==GRUB_EFI_PIXEL_RGBR_8BIT_PER_COLOR) { ++ grub_efi_graphics_output_pixel_t shadow[maxpixels]; ++ for (x = 0; x < maxpixels; x++) { ++ shadow[x].rgbr.red = pixel[x].bgrr.red; ++ shadow[x].rgbr.green = pixel[x].bgrr.green; ++ shadow[x].rgbr.blue = pixel[x].bgrr.blue; ++ } ++ ++ memmove(raw_pixels, shadow, maxpixels * sizeof (*pixel)); ++ } else if (info->pixel_format == GRUB_EFI_PIXEL_BIT_MASK) { ++ for (x = 0; x < maxpixels; x++) { ++ char depth_bytes = pinfo->depth_bytes; ++ char *raw_pixel = raw_pixels + x * depth_bytes; ++ ++ int red, green, blue, color; ++ char *colorp; ++ ++#if 0 ++ red = pixel[x].bgrr.red & 0x3f; ++ green = pixel[x].bgrr.green & 0x3f; ++ blue = pixel[x].bgrr.blue & 0x3f; ++ red = red * ((1 << pinfo->red_size) - 1) / 0x3f; ++ green = green * ((1 << pinfo->green_size) - 1) / 0x3f; ++ blue = blue * ((1 << pinfo->blue_size) - 1) / 0x3f; ++#else ++ red = pixel[x].bgrr.red; ++ green = pixel[x].bgrr.green; ++ blue = pixel[x].bgrr.blue; ++ ++ red >>= 8 - pinfo->red_size; ++ green >>= 8 - pinfo->green_size; ++ blue >>= 8 - pinfo->blue_size; ++#endif ++ ++ color = (red << pinfo->red_pos) | ++ (green << pinfo->green_pos) | ++ (blue << pinfo->blue_pos); ++ colorp = (void *)&color; ++ while (depth_bytes--) ++ *raw_pixel++ = *colorp++; ++ } ++ } ++ memmove(fb, raw_pixels, maxpixels * pinfo->depth_bytes); ++ } ++ } ++} ++ ++static void ++blt_to_screen(struct eg *eg, struct bltbuf *bltbuf) ++{ ++#if 0 ++ position_t addr = {0, 0}; ++ ++ position_to_phys(eg, &addr, &addr); ++ ++ Call_Service_10(eg->output_intf->blt, eg->output_intf, bltbuf->pixbuf, ++ GRUB_EFI_BLT_BUFFER_TO_VIDEO, ++ 0, 0, ++ addr.x, addr.y, ++ bltbuf->width, bltbuf->height, ++ 0); ++#else ++ const int pxlstride = eg->output_intf->mode->info->pixels_per_scan_line; ++ position_t bltsz, bltpos = { 0, 0 }, pos = { 0, 0 }; ++ bltsz.x = MIN(bltbuf->width, pxlstride); ++ bltsz.y = MIN(bltbuf->height, eg->output_intf->mode->info->vertical_resolution); ++ ++ blt_pos_to_screen_pos(eg, bltbuf, &bltpos, &bltsz, &pos); ++#endif ++} ++ ++static void ++blt_to_screen_pos(struct eg *eg, struct bltbuf *bltbuf, position_t *pos) ++{ ++ position_t bltpos = {0, 0}; ++ position_t bltsz = { bltbuf->width, bltbuf->height }; ++ blt_pos_to_screen_pos(eg, bltbuf, &bltpos, &bltsz, pos); ++} ++ ++static int ++save_video_mode(struct eg *eg, struct video_mode *mode) ++{ ++ grub_efi_status_t status; ++ ++ ++ ++ status = Call_Service_4(eg->output_intf->query_mode, eg->output_intf, ++ mode->number, &mode->size, &mode->info); ++ return status == GRUB_EFI_SUCCESS; ++} ++ ++static void ++get_screen_size(struct graphics_backend *backend, position_t *size) ++{ ++ struct eg *eg = backend->priv; ++ grub_efi_graphics_output_mode_information_t *info; ++ ++ info = get_graphics_mode_info(eg); ++ ++ size->x = info->horizontal_resolution; ++ size->y = info->vertical_resolution; ++} ++ ++static void ++bltbuf_set_pixel(struct bltbuf *bltbuf, position_t *pos, ++ grub_efi_graphics_output_pixel_t *pixel) ++{ ++ if (pos->x < 0 || pos->x >= bltbuf->width) ++ return; ++ if (pos->x < 0 || pos->y >= bltbuf->height) ++ return; ++ grub_memmove(&bltbuf->pixbuf[pos->x + pos->y * bltbuf->width], pixel, ++ sizeof *pixel); ++} ++ ++static void ++bltbuf_get_pixel(struct bltbuf *bltbuf, position_t *pos, ++ grub_efi_graphics_output_pixel_t *pixel) ++{ ++ if (bltbuf && pos->x < bltbuf->width && pos->y < bltbuf->height) { ++ grub_memmove(pixel, &bltbuf->pixbuf[pos->x + pos->y * bltbuf->width], ++ sizeof *pixel); ++ } else { ++ pixel->bgrr.red = 0x00; ++ pixel->bgrr.green = 0x00; ++ pixel->bgrr.blue = 0x00; ++ } ++} ++ ++static void ++bltbuf_set_pixel_rgb(struct bltbuf *bltbuf, position_t *pos, ++ int red, int green, int blue) ++{ ++ grub_efi_graphics_output_pixel_t pixel; ++ rgb_to_pixel(red, green, blue, &pixel); ++ bltbuf_set_pixel(bltbuf, pos, &pixel); ++} ++ ++static void ++bltbuf_set_pixel_idx(struct eg *eg, struct bltbuf *bltbuf, ++ position_t *pos, int idx) ++{ ++ bltbuf_set_pixel(bltbuf, pos, &eg->palette[idx]); ++} ++ ++static void ++bltbuf_get_pixel_idx(struct bltbuf *bltbuf, position_t *pos, int *idx) ++{ ++ grub_efi_graphics_output_pixel_t pixel; ++ ++ rgb_to_pixel(0, 0, 0, &pixel); ++ bltbuf_get_pixel(bltbuf, pos, &pixel); ++ for (*idx = 0; *idx < 16; (*idx)++) { ++ if (pixel_equal(cga_colors[*idx], pixel)) ++ break; ++ } ++} ++ ++static struct bltbuf * ++xpm_to_bltbuf(struct xpm *xpm) ++{ ++ struct bltbuf *bltbuf = NULL; ++ position_t pos; ++ ++ if (!(bltbuf = alloc_bltbuf(xpm->width, xpm->height))) ++ return NULL; ++ ++ for (pos.y = 0; pos.y < xpm->height; pos.y++) { ++ for (pos.x = 0; pos.x < xpm->width; pos.x++) { ++ xpm_pixel_t xpl; ++ unsigned char idx; ++ ++ idx = xpm_get_pixel_idx(xpm, pos.x, pos.y); ++ xpm_get_idx(xpm, idx, &xpl); ++ ++ bltbuf_set_pixel_rgb(bltbuf, &pos, xpl.red, xpl.green, xpl.blue); ++ } ++ } ++ ++ return bltbuf; ++} ++ ++static void ++cursor(struct graphics_backend *backend, int set) ++{ ++ struct eg *eg; ++ int ch, invert; ++ unsigned short *text; ++ position_t fpos, screensz; ++ int offset; ++ ++ eg = backend->priv; ++ ++ if (set && !graphics_get_scroll()) ++ return; ++ ++ text = graphics_get_text_buf(); ++ graphics_get_font_position(&fpos); ++ graphics_get_screen_rowscols(&screensz); ++ ++ offset = fpos.y * screensz.x + fpos.x; ++ ++ if (set) ++ text[offset] |= 0x0200; ++ ++ graphics_clbl(fpos.x, fpos.y, 1, 1, 1); ++ ++ if (set) ++ text[offset] &= 0xfdff; ++} ++ ++static void blank(struct graphics_backend *backend); ++ ++static void ++reset_screen_geometry(struct graphics_backend *backend) ++{ ++ struct eg *eg = backend->priv; ++ struct xpm *xpm = graphics_get_splash_xpm(); ++ grub_efi_graphics_output_mode_information_t *info; ++ position_t screensz; ++ ++ info = get_graphics_mode_info(eg); ++ ++ if (xpm) { ++ eg->screen_pos.x = ++ (info->horizontal_resolution - xpm->width) / 2; ++ eg->screen_pos.y = ++ (info->vertical_resolution - xpm->height) / 2; ++ } else { ++ eg->screen_pos.x = 0; ++ eg->screen_pos.y = 0; ++ } ++ ++ blank(backend); ++ graphics_get_screen_rowscols(&screensz); ++ graphics_clbl(0, 0, screensz.x, screensz.y, 0); ++ graphics_clbl(0, 0, screensz.x, screensz.y, 1); ++} ++ ++static void ++setxy(struct graphics_backend *backend, position_t *pos) ++{ ++ position_t fpos; ++ ++ fpos.x = pos->x; ++ fpos.y = pos->y; ++ graphics_set_font_position(&fpos); ++} ++ ++static void ++eg_getxy(struct graphics_backend *backend, position_t *pos) ++{ ++ graphics_get_font_position(pos); ++} ++ ++static void ++draw_pixel(struct graphics_backend *backend, position_t *pos, pixel_t *pixel) ++{ ++ struct bltbuf *bltbuf = NULL; ++ grub_efi_graphics_output_pixel_t *eup = (grub_efi_graphics_output_pixel_t *)pixel; ++ ++ bltbuf = alloc_bltbuf(1,1); ++ if (!bltbuf) ++ return; ++ ++ grub_memmove(&bltbuf->pixbuf[0], eup, sizeof (*eup)); ++ ++ blt_to_screen_pos(backend->priv, bltbuf, pos); ++ ++ grub_free(bltbuf); ++} ++ ++static pixel_t * ++get_pixel_idx(struct graphics_backend *backend, int idx) ++{ ++ static grub_efi_graphics_output_pixel_t pixel; ++ struct eg *eg = backend->priv; ++ if (idx < 0 || idx > MAX_PALETTE) ++ return NULL; ++ pixel.bgrr.red = eg->palette[idx].bgrr.red; ++ pixel.bgrr.green = eg->palette[idx].bgrr.green; ++ pixel.bgrr.blue = eg->palette[idx].bgrr.blue; ++ return (pixel_t *)&pixel; ++} ++ ++static pixel_t * ++get_pixel_rgb(struct graphics_backend *backend, int red, int green, int blue) ++{ ++ static grub_efi_graphics_output_pixel_t pixel; ++ rgb_to_pixel(red, green, blue, &pixel); ++ return &pixel; ++} ++ ++static void ++set_palette(struct graphics_backend *backend, int idx, ++ int red, int green, int blue) ++{ ++ grub_efi_graphics_output_pixel_t pixel; ++ struct eg *eg = backend->priv; ++ ++ if (idx > MAX_PALETTE) ++ return; ++ rgb_to_pixel(red, green, blue, &pixel); ++ grub_memmove(&eg->palette[idx], &pixel, sizeof pixel); ++} ++ ++static void ++blank(struct graphics_backend *backend) ++{ ++ struct eg *eg = backend->priv; ++ struct bltbuf *bltbuf; ++ position_t pos = {0, 0}; ++ grub_efi_graphics_output_mode_information_t *info; ++ grub_efi_uintn_t x, y, i, j; ++ unsigned char r = 0 ,g = 0; ++ ++ info = get_graphics_mode_info(eg); ++ x = info->horizontal_resolution; ++ y = info->vertical_resolution; ++ ++ if (x == 0 || y == 0) ++ return; ++ ++ bltbuf = alloc_bltbuf(x, y); ++ for (j = 0; j < y; j++) { ++ if (debug_graphics && j % 16 == 0) { ++ g = g == 0 ? 7 : 0; ++ r = g == 0 ? 7 : 0; ++ } ++ for (i = 0; i < x; i++) { ++ if (debug_graphics && i % 16 == 0) { ++ g = g == 0 ? 7 : 0; ++ r = g == 0 ? 7 : 0; ++ } ++ pos.x = i; ++ pos.y = j; ++ bltbuf_set_pixel_rgb(bltbuf, &pos, r * 16, g * 16, 0x0); ++ } ++ } ++ ++ blt_to_screen(eg, bltbuf); ++ ++ grub_free(bltbuf); ++} ++ ++ ++static void ++draw_white_box(struct graphics_backend *backend) ++{ ++ struct eg *eg = backend->priv; ++ struct bltbuf *bltbuf; ++ position_t pos = {0, 0}, bltpos = {0, 0}, bltsz = {100,100}; ++ ++ bltbuf = alloc_bltbuf(bltsz.x, bltsz.y); ++ for (pos.y = 0; pos.y < bltsz.y; pos.y++) { ++ for (pos.x = 0; pos.x < bltsz.x; pos.x++) { ++ bltbuf_set_pixel_rgb(bltbuf, &pos, 0xff, 0xff, 0xff); ++ } ++ } ++ ++ blt_pos_to_screen_pos(eg, bltbuf, &bltpos, &bltsz, &pos); ++ ++#if 0 ++ Call_Service_10(eg->output_intf->blt, eg->output_intf, bltbuf->pixbuf, ++ GRUB_EFI_BLT_BUFFER_TO_VIDEO, 0, 0, 100, 100, x, y, 0); ++#endif ++ ++ grub_free(bltbuf); ++} ++ ++static void ++bltbuf_cp_bl(struct bltbuf *d, position_t dpos, ++ struct bltbuf *s, position_t spos) ++{ ++ grub_efi_graphics_output_pixel_t *dp, *sp; ++ ++ const int xavail = MAX(0, s ? s->width - spos.x : 0); ++ const int xtotal = MAX(0, d->width - dpos.x); ++ const int xcp = MAX(0, MIN(xtotal, xavail)); ++ const int xcl = MAX(0, xtotal - xcp); ++ ++ const int yavail = MAX(0, s ? s->height - spos.y : 0); ++ const int ytotal = MAX(0, d->height - dpos.y); ++ const int ycp = MAX(0, MIN(ytotal, yavail)); ++ const int ycl = MAX(0, ytotal - ycp); ++ ++ int y, x; ++ ++ for (y = 0; y < ytotal; y++) { ++ dp = &d->pixbuf[(dpos.y + y) * d->width + dpos.x]; ++ ++ if (y < yavail) { ++ sp = &s->pixbuf[(spos.y + y) * s->width + spos.x]; ++ memmove(dp, sp, xcp * sizeof (*dp)); ++ dp = &d->pixbuf[(dpos.y + y) * d->width + dpos.x + xcp]; ++ memset(dp, '\0', xcl * sizeof (*dp)); ++ } else { ++ memset(dp, '\0', xtotal * sizeof (*dp)); ++ } ++ } ++} ++ ++/* copy a region the size of bltbuf from the background into bltbuf, ++ * starting at offset bgpos ++ */ ++static void ++bltbuf_draw_bg(struct graphics_backend *backend, struct bltbuf *bltbuf, ++ position_t bgpos) ++{ ++ struct eg *eg = backend->priv; ++ position_t blpos = { 0, 0 }; ++ ++ bltbuf_cp_bl(bltbuf, blpos, eg->background, bgpos); ++} ++ ++static void ++dbg_dump_palette(struct graphics_backend *backend) ++{ ++ struct eg *eg; ++ int i; ++ if (!backend || !backend->priv) ++ return; ++ eg = backend->priv; ++ if (!eg->palette) ++ return; ++} ++ ++static int ++is_shadow_pixel(position_t screensz, position_t textpos, position_t bitpos, ++ position_t fontsz) ++{ ++ unsigned short *text = graphics_get_text_buf(); ++ const unsigned char *glyph; ++ position_t glyphpos = { textpos.x, textpos.y }; ++ position_t glyphbit = { bitpos.x, bitpos.y }; ++ unsigned short ch; ++ ++ if (glyphbit.x == 0) { ++ glyphbit.x = fontsz.x; ++ glyphpos.x--; ++ } ++ if (glyphbit.y == 0) { ++ glyphbit.y = fontsz.y; ++ glyphpos.y--; ++ } ++ glyphbit.x--; ++ glyphbit.y--; ++ ++ if (glyphpos.x < 0 || glyphpos.y < 0) ++ return 0; ++ ++ ch = text[glyphpos.y * screensz.x + glyphpos.x] & 0xff; ++ glyph = font8x16 + (ch << 4); ++ return glyph[glyphbit.y] & (1 << ((fontsz.x-1) - glyphbit.x)); ++} ++ ++static void ++bltbuf_draw_character(struct graphics_backend *backend, ++ struct bltbuf *bltbuf, /* the bltbuf to draw into */ ++ position_t target, /* the position in the bltbuf to draw to */ ++ position_t fontsz, /* the size of the font, in pixels */ ++ position_t charpos, /* the position of the character in the text ++ screen buffer */ ++ position_t screensz, /* the size of the screen in characters */ ++ unsigned short ch /* the character to draw, plus flags */ ++ ) ++{ ++ struct eg *eg = backend->priv; ++ position_t blpos; ++ position_t glyphpos; ++ ++ blpos.y = target.y; ++ for (glyphpos.y = 0; glyphpos.y < fontsz.y; glyphpos.y++, blpos.y++) { ++ blpos.x = target.x; ++ for (glyphpos.x = 0; glyphpos.x < fontsz.x; glyphpos.x++, blpos.x++) { ++ int invert = (ch & 0x0100) != 0; ++ int set = (ch & 0x0200) != 0; ++ const unsigned char *glyph = font8x16 + ((ch & 0xff) << 4); ++ int bit = glyph[glyphpos.y] & (1 << ((fontsz.x-1) - glyphpos.x)); ++ int idx = -1; ++ ++ if (!set) { ++ if (invert) ++ idx = bit ? 0 : 15; ++ else if (bit) ++ idx = 15; ++ ++ if (idx == -1) { ++ if (is_shadow_pixel(screensz, charpos, glyphpos, fontsz) || ++ !eg->background) ++ idx = invert ? 15 : 0; ++ } ++ } else { ++ idx = bit ? 0 : 15; ++ } ++ ++ if (idx != -1) ++ bltbuf_set_pixel_idx(eg, bltbuf, &blpos, idx); ++ } ++ } ++} ++ ++static void ++bltbuf_draw_text(struct graphics_backend *backend, ++ struct bltbuf *bltbuf, /* the buffer to draw into */ ++ position_t screensz, /* the size of the screen in characters */ ++ position_t fontsz, /* the size of the font in pixels */ ++ position_t txtpos, /* the position of the text on the screen ++ (in characters) */ ++ position_t txtsz /* the size of the block to fill in ++ (in characters) */ ++ ) ++{ ++ struct eg *eg = backend->priv; ++ unsigned short *text = graphics_get_text_buf(); ++ position_t charpos; ++ ++ for (charpos.y = txtpos.y; charpos.y < txtpos.y + txtsz.y; charpos.y++) { ++ for (charpos.x = txtpos.x; charpos.x < txtpos.x + txtsz.x; charpos.x++){ ++ int offset = charpos.y * screensz.x + charpos.x; ++ position_t blpos = { (charpos.x-txtpos.x)*fontsz.x, ++ (charpos.y-txtpos.y)*fontsz.y }; ++ ++ bltbuf_draw_character(backend, bltbuf, blpos, fontsz, charpos, ++ screensz, text[offset]); ++ } ++ } ++} ++ ++static void ++clbl(struct graphics_backend *backend, int col, int row, int width, int height, ++ int draw_text) ++{ ++ struct eg *eg = backend->priv; ++ struct xpm *xpm; ++ ++ struct bltbuf *bltbuf; ++ position_t fontsz, blpos, blsz, screensz; ++ unsigned short *text; ++ ++// blank(backend); ++// ++ xpm = graphics_get_splash_xpm(); ++ if (xpm && !eg->background) ++ eg->background = xpm_to_bltbuf(xpm); ++ ++ graphics_get_screen_rowscols(&screensz); ++ width = MIN(width, screensz.x - col); ++ height = MIN(height, screensz.y - row); ++ graphics_get_font_size(&fontsz); ++ ++ blsz.x = width * fontsz.x; ++ blsz.y = height * fontsz.y; ++ ++ bltbuf = alloc_bltbuf(blsz.x, blsz.y); ++ if (!bltbuf) ++ return; ++ ++ blsz.x = col * fontsz.x; ++ blsz.y = row * fontsz.y; ++ ++ text = graphics_get_text_buf(); ++ bltbuf_draw_bg(backend, bltbuf, blsz); ++ ++ if (draw_text) { ++ blsz.x = width; ++ blsz.y = height; ++ blpos.x = col; ++ blpos.y = row; ++ ++ bltbuf_draw_text(backend, bltbuf, screensz, fontsz, blpos, blsz); ++ } ++ ++ blpos.x = col * fontsz.x; ++ blpos.y = row * fontsz.y; ++ ++ blt_to_screen_pos(eg, bltbuf, &blpos); ++} ++ ++static void ++setup_cga_palette(struct eg *eg) ++{ ++ rgb_to_pixel(0x00,0x00,0x00, &eg->palette[0]); // 0 Black ++ rgb_to_pixel(0x7f,0x00,0x00, &eg->palette[1]); // 1 Dark Red ++ rgb_to_pixel(0x00,0x7f,0x00, &eg->palette[2]); // 2 Dark Green ++ rgb_to_pixel(0x7f,0x7f,0x00, &eg->palette[3]); // 3 Dark Yellow ++ rgb_to_pixel(0x00,0x00,0x7f, &eg->palette[4]); // 4 Dark Blue ++ rgb_to_pixel(0x7f,0x00,0x7f, &eg->palette[5]); // 5 Dark Magenta ++ rgb_to_pixel(0x00,0x7f,0x7f, &eg->palette[6]); // 6 Dark Cyan ++ rgb_to_pixel(0xc0,0xc0,0xc0, &eg->palette[7]); // 7 Light Grey ++ rgb_to_pixel(0x7f,0x7f,0x7f, &eg->palette[8]); // 8 Dark Grey ++ rgb_to_pixel(0xff,0x00,0x00, &eg->palette[9]); // 9 Red ++ rgb_to_pixel(0x00,0xff,0x00, &eg->palette[10]); // 10 Green ++ rgb_to_pixel(0xff,0xff,0x00, &eg->palette[11]); // 11 Yellow ++ rgb_to_pixel(0x00,0x00,0xff, &eg->palette[12]); // 12 Blue ++ rgb_to_pixel(0xff,0x00,0xff, &eg->palette[13]); // 13 Magenta ++ rgb_to_pixel(0x00,0xff,0xff, &eg->palette[14]); // 14 Cyan ++ rgb_to_pixel(0xff,0xff,0xff, &eg->palette[15]); // 15 White ++ rgb_to_pixel(0xff,0xff,0xff, &eg->palette[16]); // 16 Also white ;) ++} ++ ++static grub_efi_status_t ++set_video_mode(struct eg *eg, int mode) ++{ ++ grub_efi_status_t efi_status; ++ efi_status = Call_Service_2(eg->output_intf->set_mode, eg->output_intf, mode); ++ return efi_status; ++} ++ ++static void disable(struct graphics_backend *backend) ++{ ++ struct eg *eg; ++ ++ if (!backend) ++ return; ++ ++ eg = backend->priv; ++ if (!eg || eg->current_mode != GRAPHICS) ++ return; ++ ++#if 0 ++ blank(backend); ++ ++ set_video_mode(eg, eg->text_mode); ++ grub_efi_set_text_mode(1); ++#endif ++ eg->current_mode = TEXT; ++} ++ ++static int ++fill_pixel_info (grub_pixel_info_t *pixel_info, ++ grub_efi_graphics_output_mode_information_t *mode_info) ++{ ++ if (mode_info->pixel_format == GRUB_EFI_PIXEL_RGBR_8BIT_PER_COLOR) ++ { ++ pixel_info->depth_bits = 32; ++ pixel_info->depth_bytes = 4; ++ pixel_info->red_size = 8; ++ pixel_info->red_pos = 0; ++ pixel_info->green_size = 8; ++ pixel_info->green_pos = 8; ++ pixel_info->blue_size = 8; ++ pixel_info->blue_pos = 16; ++ pixel_info->reserved_size = 8; ++ pixel_info->reserved_pos = 24; ++ pixel_info->line_length = mode_info->pixels_per_scan_line * 4; ++ } ++ else if (mode_info->pixel_format == GRUB_EFI_PIXEL_BGRR_8BIT_PER_COLOR) ++ { ++ pixel_info->depth_bits = 32; ++ pixel_info->depth_bytes = 4; ++ pixel_info->red_size = 8; ++ pixel_info->red_pos = 16; ++ pixel_info->green_size = 8; ++ pixel_info->green_pos = 8; ++ pixel_info->blue_size = 8; ++ pixel_info->blue_pos = 0; ++ pixel_info->reserved_size = 8; ++ pixel_info->reserved_pos = 24; ++ pixel_info->line_length = mode_info->pixels_per_scan_line * 4; ++ } ++ else if (mode_info->pixel_format == GRUB_EFI_PIXEL_BIT_MASK) ++ { ++ find_bits (mode_info->pixel_information.red_mask, ++ &pixel_info->red_pos, &pixel_info->red_size); ++ find_bits (mode_info->pixel_information.green_mask, ++ &pixel_info->green_pos, &pixel_info->green_size); ++ find_bits (mode_info->pixel_information.blue_mask, ++ &pixel_info->blue_pos, &pixel_info->blue_size); ++ find_bits (mode_info->pixel_information.reserved_mask, ++ &pixel_info->reserved_pos, &pixel_info->reserved_size); ++ pixel_info->depth_bits = pixel_info->red_size + pixel_info->green_size + ++ pixel_info->blue_size + pixel_info->reserved_size; ++ pixel_info->depth_bytes = (pixel_info->depth_bits + 7) / 8; ++ pixel_info->line_length = mode_info->pixels_per_scan_line * ++ pixel_info->depth_bytes; ++ } ++ else ++ return 0; ++ return 1; ++} ++ ++/* 1 = prefer a ++ * 0 = prefer neither ++ * -1 = prefer b ++ */ ++static int ++modecmp_helper(struct eg *eg, struct video_mode *amode, struct video_mode *bmode) ++{ ++ grub_efi_graphics_output_mode_information_t *a = amode->info; ++ grub_efi_graphics_output_mode_information_t *b = bmode->info; ++ ++ if (a != NULL && b == NULL) ++ return 1; ++ if (a == NULL && b == NULL) ++ return 0; ++ if (a == NULL && b != NULL) ++ return -1; ++ ++#if 0 ++ if (amode->number == eg->graphics_mode && bmode->number != eg->graphics_mode) ++ return 1; ++ if (amode->number == eg->graphics_mode && bmode->number == eg->graphics_mode) ++ return 0; ++ if (amode->number != eg->graphics_mode && bmode->number == eg->graphics_mode) ++ return -1; ++#endif ++ ++ ++ /* kernel doesn't deal with blt only modes, so prefer against them. */ ++ if (a->pixel_format != GRUB_EFI_PIXEL_BLT_ONLY && ++ b->pixel_format == GRUB_EFI_PIXEL_BLT_ONLY) ++ return 1; ++ if (b->pixel_format != GRUB_EFI_PIXEL_BLT_ONLY && ++ a->pixel_format == GRUB_EFI_PIXEL_BLT_ONLY) ++ return -1; ++ ++ /* XXX PJFIX there's something wrong with what we're passing to the ++ * kernel for stride in the bgrr/rgbr modes, and I haven't figured out ++ * just what yet, so for now, prefer bitmask modes. ++ */ ++ if (a->pixel_format == GRUB_EFI_PIXEL_BIT_MASK && ++ b->pixel_format != GRUB_EFI_PIXEL_BIT_MASK) ++ return 1; ++ if (a->pixel_format != GRUB_EFI_PIXEL_BIT_MASK && ++ b->pixel_format == GRUB_EFI_PIXEL_BIT_MASK) ++ return -1; ++ ++ if (a->pixel_format == GRUB_EFI_PIXEL_BGRR_8BIT_PER_COLOR && ++ b->pixel_format != GRUB_EFI_PIXEL_BGRR_8BIT_PER_COLOR) ++ return 1; ++ if (a->pixel_format != GRUB_EFI_PIXEL_BGRR_8BIT_PER_COLOR && ++ b->pixel_format == GRUB_EFI_PIXEL_BGRR_8BIT_PER_COLOR) ++ return -1; ++ ++ if (a->pixel_format == GRUB_EFI_PIXEL_RGBR_8BIT_PER_COLOR && ++ b->pixel_format != GRUB_EFI_PIXEL_RGBR_8BIT_PER_COLOR) ++ return 1; ++ if (a->pixel_format != GRUB_EFI_PIXEL_RGBR_8BIT_PER_COLOR && ++ b->pixel_format == GRUB_EFI_PIXEL_RGBR_8BIT_PER_COLOR) ++ return -1; ++ ++ if (a->horizontal_resolution > b->horizontal_resolution && ++ a->vertical_resolution > b->vertical_resolution) ++ return 1; ++ if (a->horizontal_resolution < b->horizontal_resolution && ++ a->vertical_resolution < b->vertical_resolution) ++ return -1; ++ return 0; ++} ++ ++static int ++modecmp(struct eg *eg, struct video_mode *amode, struct video_mode *bmode) ++{ ++ int rc; ++#if 0 ++ grub_efi_graphics_output_mode_information_t *a = amode->info; ++ grub_efi_graphics_output_mode_information_t *b = bmode->info; ++#endif ++ rc = modecmp_helper(eg, amode, bmode); ++#if 0 ++ grub_printf("comparing nodes:\n"); ++ print_mode_info(amode); ++ print_mode_info(bmode); ++ if (rc > 0) ++ grub_printf("result: a > b\n"); ++ else if (rc < 0) ++ grub_printf("result: a < b\n"); ++ else ++ grub_printf("result: a == b\n"); ++ ++ //dbgdelay(__FILE__, __LINE__); ++#endif ++ return rc; ++} ++ ++static void ++modeswap(struct video_mode *amode, struct video_mode *bmode) ++{ ++ struct video_mode tmp; ++ ++ memcpy(&tmp, amode, sizeof (tmp)); ++ memcpy(amode, bmode, sizeof (tmp)); ++ memcpy(bmode, &tmp, sizeof(tmp)); ++} ++ ++static void ++sort_modes(struct eg *eg, int p, int r) ++{ ++ struct video_mode **modes = eg->modes; ++ ++ int i, j; ++ for (i = 0; i < eg->max_mode; i++) { ++ for (j = i + 1; j < eg->max_mode; j++) { ++ if (modecmp(eg, modes[j], modes[i]) < 0) ++ modeswap(modes[j], modes[i]); ++ } ++ } ++} ++ ++static int ++try_enable(struct graphics_backend *backend) ++{ ++ struct eg *eg = backend->priv; ++ grub_efi_status_t efi_status = GRUB_EFI_UNSUPPORTED; ++ int i; ++ ++ if (eg->text_mode == 0xffffffff) { ++ grub_efi_set_text_mode(1); ++ eg->text_mode = eg->output_intf->mode->mode; ++ } ++ ++ if (eg->graphics_mode == 0xffffffff) { ++ grub_efi_graphics_output_mode_information_t *info; ++ ++ if (!graphics_alloc_text_buf()) ++ return 0; ++ ++ grub_efi_set_text_mode(0); ++ eg->graphics_mode = eg->output_intf->mode->mode; ++ grub_efi_set_text_mode(1); ++#if 0 ++ dprintf("graphics mode is %d\n", eg->graphics_mode); ++ /* this is okay here because we haven't sorted yet.*/ ++ print_mode_info(eg->modes[eg->graphics_mode]); ++ dprintf("text mode is %d\n", eg->text_mode); ++ print_mode_info(eg->modes[eg->text_mode]); ++#endif ++ ++ sort_modes(eg, 0, eg->max_mode-1); ++ ++#if 0 ++ for (i = eg->max_mode - 1; i >= 0; i--) ++ print_mode_info(eg->modes[i]); ++ dbgdelay(__FILE__, __LINE__); ++#endif ++ ++ efi_status = GRUB_EFI_UNSUPPORTED; ++ ++ for (i = eg->max_mode - 1; i >= 0; i--) { ++ if (!eg->modes[i]) ++ continue; ++ ++ info = eg->modes[i]->info; ++ ++#if 0 ++ if (info->pixel_format != GRUB_EFI_PIXEL_RGBR_8BIT_PER_COLOR && ++ info->pixel_format != GRUB_EFI_PIXEL_BGRR_8BIT_PER_COLOR && ++ info->pixel_format != GRUB_EFI_PIXEL_BIT_MASK) { ++ continue; ++ } ++#endif ++ ++ grub_efi_set_text_mode(0); ++ efi_status = set_video_mode(eg, eg->modes[i]->number); ++ if (efi_status == GRUB_EFI_SUCCESS) { ++#if 0 ++ grub_efi_set_text_mode(1); ++ dprintf("switched to mode %d successfully\n", ++ eg->modes[i]->number); ++ dbgdelay(__FILE__,__LINE__); ++ grub_efi_set_text_mode(0); ++#endif ++ eg->graphics_mode = eg->modes[i]->number; ++ fill_pixel_info(&eg->pixel_info, info); ++ break; ++ } else { ++#if 0 ++ set_video_mode(eg, eg->text_mode); ++ grub_efi_set_text_mode(1); ++ dprintf("return code was %d\n", efi_status); ++#endif ++ } ++ } ++ if (efi_status != GRUB_EFI_SUCCESS) { ++#if 1 ++ grub_efi_set_text_mode(1); ++ set_video_mode(eg, eg->text_mode); ++#endif ++ return 0; ++ } ++ ++ } ++ ++ eg->current_mode = GRAPHICS; ++ return 1; ++} ++ ++static int ++enable(struct graphics_backend *backend) ++{ ++ struct eg *eg = backend->priv; ++ int i; ++ ++ if (eg) { ++ if (eg->current_mode == GRAPHICS) { ++ return 1; ++ } ++ } else { ++ grub_efi_status_t efi_status; ++ grub_efi_handle_t *handle, *handles; ++ grub_efi_uintn_t num_handles; ++ grub_efi_pci_io_t *pci_proto; ++ ++ if (!(eg = grub_malloc(sizeof (*eg)))) ++ return 0; ++ ++ grub_memset(eg, '\0', sizeof (*eg)); ++ ++ eg->backend = backend; ++ eg->current_mode = TEXT; ++ ++ handles = grub_efi_locate_handle (GRUB_EFI_BY_PROTOCOL, ++ &graphics_output_guid, ++ NULL, &num_handles); ++ ++ if (!num_handles || !handles) ++ goto fail; ++ ++ for (handle = handles; num_handles--; handle++) ++ { ++ pci_proto = grub_efi_open_protocol (*handle, &pci_io_guid, ++ GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL); ++ ++ if (!pci_proto) ++ continue; ++ ++ eg->output_intf = grub_efi_open_protocol (*handle, ++ &graphics_output_guid, GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL); ++ ++ if (eg->output_intf) ++ { ++ grub_efi_setup_gfx_pci(*handle); ++ break; ++ } ++ } ++ ++ grub_free(handles); ++ ++ if (!eg->output_intf) ++ eg->output_intf = grub_efi_locate_protocol(&graphics_output_guid, NULL); ++ ++ if (!eg->output_intf) ++ goto fail; ++ ++ eg->text_mode = eg->graphics_mode = 0xffffffff; ++ ++ eg->max_mode = eg->output_intf->mode->max_mode; ++ eg->modes = grub_malloc(eg->max_mode * sizeof (void *)); ++ if (!eg->modes) ++ goto fail; ++ memset(eg->modes, '\0', eg->max_mode * sizeof (void *)); ++ ++ for (i = 0; i < eg->max_mode; i++) { ++ eg->modes[i] = grub_malloc(sizeof *(eg->modes[0])); ++ if (!eg->modes[i]) ++ goto fail; ++ memset(eg->modes[i], '\0', sizeof *(eg->modes[0])); ++ eg->modes[i]->number = i; ++ ++ efi_status = Call_Service_4(eg->output_intf->query_mode, ++ eg->output_intf, i, &eg->modes[i]->size, ++ &eg->modes[i]->info); ++ if (efi_status == GRUB_EFI_NOT_STARTED) { ++ /* The firmware didn't turn on GRAPHICS_OUTPUT_PROTOCOL, so ++ * try to do so ourselves. Thanks, Intel. */ ++ set_video_mode(eg, eg->output_intf->mode->mode); ++ efi_status = Call_Service_4(eg->output_intf->query_mode, ++ eg->output_intf, i, &eg->modes[i]->size, ++ &eg->modes[i]->info); ++ } ++ if (efi_status != GRUB_EFI_SUCCESS) { ++ grub_free(eg->modes[i]); ++ eg->modes[i] = NULL; ++ //eg->max_mode = i; ++ break; ++ } ++ } ++ ++ backend->priv = eg; ++ setup_cga_palette(eg); ++ for (i = 0; i < n_cga_colors; i++) { ++ eg->palette[i].bgrr.red = cga_colors[i].bgrr.red; ++ eg->palette[i].bgrr.green = cga_colors[i].bgrr.green; ++ eg->palette[i].bgrr.blue = cga_colors[i].bgrr.blue; ++ } ++ } ++ ++ if (try_enable(backend)) { ++ reset_screen_geometry(backend); ++ return 1; ++ } ++ ++fail: ++ backend->priv = NULL; ++ if (eg->modes) { ++ for (i = 0; i < eg->max_mode; i++) { ++ if (eg->modes[i]) ++ grub_free(eg->modes[i]); ++ } ++ grub_free(eg->modes); ++ } ++ grub_free(eg); ++ return 0; ++} ++ ++struct graphics_backend eg_backend = { ++ .name = "eg", ++ .enable = enable, ++ .disable = disable, ++ .set_kernel_params = set_kernel_params, ++ .clbl = clbl, ++ .set_palette = set_palette, ++ .get_pixel_idx = get_pixel_idx, ++ .get_pixel_rgb = get_pixel_rgb, ++ .draw_pixel = draw_pixel, ++ .reset_screen_geometry = reset_screen_geometry, ++ .get_screen_size = get_screen_size, ++ .getxy = eg_getxy, ++ .setxy = setxy, ++ .gotoxy = NULL, ++ .cursor = cursor, ++}; ++ ++#endif /* SUPPORT_GRAPHICS */ +diff --git a/efi/efimain.c b/efi/efimain.c +new file mode 100644 +index 0000000..e1a1e66 +--- /dev/null ++++ b/efi/efimain.c +@@ -0,0 +1,129 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2007 Intel Corp. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, ++ * MA 02110-1301, USA. ++ */ ++ ++#include <grub/efi/efi.h> ++#include <grub/efi/api.h> ++#include <grub/efi/misc.h> ++#include <grub/misc.h> ++ ++#include <shared.h> ++#include <efistubs.h> ++ ++#include "pxe.h" ++ ++#define GRUB_SCRATCH_MEM_PAGES (GRUB_SCRATCH_MEM_SIZE >> 12) ++ ++/* Emulation requirements. */ ++void *grub_scratch_mem = NULL; ++ ++#define LOW_STACK_SIZE 0x100000 ++#define LOW_STACK_PAGES (LOW_STACK_SIZE >> 12) ++static void *low_stack, *real_stack; ++ ++extern int grub_test_pxe(grub_efi_loaded_image_t *loaded_image); ++ ++static void ++real_main (void) ++{ ++ grub_efi_loaded_image_t *loaded_image; ++ char *path_name = NULL; ++ ++ loaded_image = grub_efi_get_loaded_image (grub_efi_image_handle); ++ ++ path_name = grub_efi_pxe_get_config_path(loaded_image); ++ ++ if (path_name) { ++ network_ready = 1; ++ ++ grub_set_config_file (path_name); ++ grub_free (path_name); ++ } else { ++ grub_get_drive_partition_from_bdev_handle (loaded_image->device_handle, ++ &boot_drive, ++ &install_partition); ++ path_name = grub_efi_file_path_to_path_name (loaded_image->file_path); ++ ++ if (path_name) ++ { ++ grub_set_config_file (path_name); ++ grub_free (path_name); ++ } ++ ++ grub_load_saved_default (loaded_image->device_handle); ++ } ++ ++ init_bios_info (); ++ while (console_getkey() < 0) ++ grub_efi_stall(1000); ++} ++ ++grub_efi_status_t ++efi_main (grub_efi_handle_t image_handle, grub_efi_system_table_t *sys_tab) ++{ ++ grub_efi_image_handle = image_handle; ++ grub_efi_system_table = sys_tab; ++ grub_efi_init (); ++ ++ grub_scratch_mem = grub_efi_allocate_pages (0, GRUB_SCRATCH_MEM_PAGES); ++ if (! grub_scratch_mem) ++ { ++ grub_printf ("Failed to allocate scratch mem!\n"); ++ return GRUB_EFI_OUT_OF_RESOURCES; ++ } ++ ++ /* If current stack reside in memory region > 2G, switch stack to a ++ memory region < 2G */ ++ if ((unsigned long)&image_handle >= 0x80000000UL) ++ { ++ low_stack = grub_efi_allocate_pages (0, LOW_STACK_PAGES); ++ if (! low_stack) ++ { ++ grub_printf("Failed to allocate low memory stack!\n"); ++ return GRUB_EFI_OUT_OF_RESOURCES; ++ } ++ ++#ifdef __x86_64__ ++ asm volatile ("movq %%rsp, %0\n\tmovq %1, %%rsp\n" ++ : "=&r" (real_stack) : "r" (low_stack+LOW_STACK_SIZE)); ++#else ++ asm volatile ("movl %%esp, %0\n\tmovl %1, %%esp\n" ++ : "=&r" (real_stack) : "r" (low_stack+LOW_STACK_SIZE)); ++#endif ++ } ++ ++ real_main (); ++ ++ if (real_stack) { ++#ifdef __x86_64__ ++ asm volatile ("movq %0, %%rsp\n" : : "r" (real_stack)); ++#else ++ asm volatile ("movl %0, %%esp\n" : : "r" (real_stack)); ++#endif ++ ++ grub_efi_free_pages ((grub_efi_physical_address_t)(unsigned long) low_stack, ++ LOW_STACK_PAGES); ++ } ++ ++ grub_efi_free_pages ((grub_efi_physical_address_t)(unsigned long)grub_scratch_mem, ++ GRUB_SCRATCH_MEM_PAGES); ++ grub_efi_fini (); ++ ++ return GRUB_EFI_SUCCESS; ++} +diff --git a/efi/efimisc.c b/efi/efimisc.c +new file mode 100644 +index 0000000..480ba25 +--- /dev/null ++++ b/efi/efimisc.c +@@ -0,0 +1,665 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2006 Free Software Foundation, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, ++ * MA 02110-1301, USA. ++ */ ++ ++#include <config.h> ++#include <grub/efi/efi.h> ++#include <grub/efi/time.h> ++#include <grub/efi/misc.h> ++#include <grub/misc.h> ++ ++#include <shared.h> ++ ++unsigned long install_partition = 0x20000; ++unsigned long boot_drive = 0x80; ++int saved_entryno = 0; ++char version_string[] = VERSION; ++char config_file[128] = "/boot/grub/menu.lst"; ++unsigned short io_map[IO_MAP_SIZE]; ++struct apm_info apm_bios_info; ++/* The key map. */ ++unsigned short bios_key_map[KEY_MAP_SIZE + 1]; ++unsigned short ascii_key_map[KEY_MAP_SIZE + 1]; ++ ++void ++grub_efi_init (void) ++{ ++ /* First of all, initialize the console so that GRUB can display ++ messages. */ ++ grub_console_init (); ++ /* Initialize the memory management system. */ ++ grub_efi_mm_init (); ++ grub_efidisk_init (); ++} ++ ++void ++grub_efi_fini (void) ++{ ++ grub_efidisk_fini (); ++ grub_efi_mm_fini (); ++ grub_console_fini (); ++} ++ ++void * ++grub_malloc (grub_size_t size) ++{ ++ return grub_efi_allocate_pool (size); ++} ++ ++void ++grub_free (void *p) ++{ ++ grub_efi_free_pool (p); ++} ++ ++char * ++grub_stpcpy (char *dest, const char *src) ++{ ++ char *d = dest; ++ const char *s = src; ++ ++ do ++ *d++ = *s; ++ while (*s++ != '\0'); ++ ++ return d - 1; ++} ++ ++void ++grub_fatal (const char *fmt, ...) ++{ ++ va_list ap; ++ ++ va_start (ap, fmt); ++ grub_vsprintf (NULL, fmt, ap); ++ va_end (ap); ++ ++ grub_exit (); ++} ++ ++void ++grub_real_dprintf (const char *file, const int line, const char *condition, ++ const char *fmt, ...) ++{ ++ va_list args; ++ ++ if (! debug) ++ return; ++ ++ grub_printf ("%s:%d: ", file, line); ++ va_start (args, fmt); ++ grub_vsprintf (0, fmt, args); ++ va_end (args); ++} ++ ++grub_size_t ++grub_utf8_char_len(grub_uint8_t ch) ++{ ++ return ((0xe5000000 >> ((ch >> 3) & 0x1e)) & 3) + 1; ++} ++ ++#define UTF8_SHIFT_AND_MASK(unicode, byte) (unicode)<<=6; (unicode) |= (0x3f & (byte)) ++ ++/* convert utf8 to utf32 */ ++grub_uint32_t ++grub_utf8_to_utf32(const grub_uint8_t *src, grub_size_t length) ++{ ++ grub_uint32_t unicode; ++ ++ switch (length) ++ { ++ case 1: ++ return src[0]; ++ case 2: ++ unicode = src[0] & 0x1f; ++ UTF8_SHIFT_AND_MASK(unicode, src[1]); ++ return unicode; ++ case 3: ++ unicode = src[0] & 0x0f; ++ UTF8_SHIFT_AND_MASK(unicode, src[1]); ++ UTF8_SHIFT_AND_MASK(unicode, src[2]); ++ return unicode; ++ case 4: ++ unicode = src[0] & 0x07; ++ UTF8_SHIFT_AND_MASK(unicode, src[1]); ++ UTF8_SHIFT_AND_MASK(unicode, src[2]); ++ UTF8_SHIFT_AND_MASK(unicode, src[3]); ++ return unicode; ++ default: ++ return 0xffff; ++ } ++} ++ ++/* convert utf8 to utf16 */ ++void ++grub_utf8_to_utf16(const grub_uint8_t *src, grub_size_t srclen, ++ grub_uint16_t *dst, grub_size_t dstlen) ++{ ++ const grub_uint8_t *end = src + srclen; ++ grub_efi_char16_t *dstend = dst + dstlen; ++ ++ while (src < end && dst < dstend) ++ { ++ grub_size_t len = grub_utf8_char_len(*src); ++ /* get the utf32 codepoint */ ++ grub_uint32_t codepoint = grub_utf8_to_utf32(src, len); ++ ++ /* convert that codepoint to utf16 codepoints */ ++ if (codepoint <= 0xffff) ++ { ++ /* it's a single utf16 character */ ++ *dst++ = (grub_efi_char16_t) codepoint; ++ } ++ else ++ { ++ /* it's multiple utf16 characters, with surrogate pairs */ ++ codepoint = codepoint - 0x10000; ++ *dst++ = (grub_efi_char16_t) ((codepoint >> 10) + 0xd800); ++ *dst++ = (grub_efi_char16_t) ((codepoint & 0x3ff) + 0xdc00); ++ } ++ ++ src += len; ++ } ++ ++ if (dst < dstend) ++ *dst = 0; ++} ++ ++/* Convert UTF-16 to UTF-8. */ ++grub_uint8_t * ++grub_utf16_to_utf8 (grub_uint8_t *dest, grub_uint16_t *src, ++ grub_size_t size) ++{ ++ grub_uint32_t code_high = 0; ++ ++ while (size--) ++ { ++ grub_uint32_t code = *src++; ++ ++ if (code_high) ++ { ++ if (code >= 0xDC00 && code <= 0xDFFF) ++ { ++ /* Surrogate pair. */ ++ code = ((code_high - 0xD800) << 12) + (code - 0xDC00) + 0x10000; ++ ++ *dest++ = (code >> 18) | 0xF0; ++ *dest++ = ((code >> 12) & 0x3F) | 0x80; ++ *dest++ = ((code >> 6) & 0x3F) | 0x80; ++ *dest++ = (code & 0x3F) | 0x80; ++ } ++ else ++ { ++ /* Error... */ ++ *dest++ = '?'; ++ } ++ ++ code_high = 0; ++ } ++ else ++ { ++ if (code <= 0x007F) ++ *dest++ = code; ++ else if (code <= 0x07FF) ++ { ++ *dest++ = (code >> 6) | 0xC0; ++ *dest++ = (code & 0x3F) | 0x80; ++ } ++ else if (code >= 0xD800 && code <= 0xDBFF) ++ { ++ code_high = code; ++ continue; ++ } ++ else if (code >= 0xDC00 && code <= 0xDFFF) ++ { ++ /* Error... */ ++ *dest++ = '?'; ++ } ++ else ++ { ++ *dest++ = (code >> 16) | 0xE0; ++ *dest++ = ((code >> 12) & 0x3F) | 0x80; ++ *dest++ = (code & 0x3F) | 0x80; ++ } ++ } ++ } ++ ++ return dest; ++} ++ ++/* low-level timing info */ ++int ++getrtsecs (void) ++{ ++ return grub_get_rtc() / GRUB_TICKS_PER_SECOND; ++} ++ ++void ++grub_reboot (void) ++{ ++ grub_efi_runtime_services_t *r; ++ ++ r = grub_efi_system_table->runtime_services; ++ Call_Service_4 (r->reset_system, GRUB_EFI_RESET_COLD, ++ GRUB_EFI_SUCCESS, 0, NULL); ++ for (;;); ++} ++ ++void ++grub_halt (int no_apm) ++{ ++ grub_efi_runtime_services_t *r; ++ ++ r = grub_efi_system_table->runtime_services; ++ Call_Service_4 (r->reset_system, GRUB_EFI_RESET_SHUTDOWN, ++ GRUB_EFI_SUCCESS, 0, NULL); ++ for (;;); ++} ++ ++void ++stop (void) ++{ ++ grub_exit (); ++} ++ ++/* booting a multiboot executable */ ++void ++multi_boot (int start, int mb_info) ++{ ++ stop (); ++} ++ ++/* sets it to linear or wired A20 operation */ ++void ++gateA20 (int linear) ++{ ++} ++ ++/* Set up the int15 handler. */ ++void ++set_int15_handler (void) ++{ ++} ++ ++/* Restore the original int15 handler. */ ++void ++unset_int15_handler (void) ++{ ++} ++ ++/* Copy MAP to the drive map and set up the int13 handler. */ ++void ++set_int13_handler (unsigned short *map) ++{ ++} ++ ++/* Get the ROM configuration table. */ ++unsigned long ++get_rom_config_table (void) ++{ ++ return 0; ++} ++ ++/* Get APM BIOS information. */ ++void ++get_apm_info (void) ++{ ++ /* Nothing to do in the simulator. */ ++} ++ ++void ++stop_floppy (void) ++{ ++ /* NOTUSED */ ++} ++ ++char * ++grub_strndup (const char *s, int n) ++{ ++ int l = grub_strnlen(s, n); ++ char *new = grub_malloc(l + 1); ++ ++ if (new == NULL) ++ return NULL; ++ ++ new[l] = '\0'; ++ return grub_strncpy(new, s, l); ++} ++ ++int ++safe_parse_maxulong (char **str_ptr, unsigned long *myulong_ptr) ++{ ++ char *ptr = *str_ptr; ++ unsigned long myulong = 0; ++ unsigned int mult = 10, found = 0; ++ ++ /* ++ * Is this a hex number? ++ */ ++ if (*ptr == '0' && tolower (*(ptr + 1)) == 'x') ++ { ++ ptr += 2; ++ mult = 16; ++ } ++ ++ while (1) ++ { ++ /* A bit tricky. This below makes use of the equivalence: ++ (A >= B && A <= C) <=> ((A - B) <= (C - B)) ++ when C > B and A is unsigned. */ ++ unsigned int digit; ++ ++ digit = tolower (*ptr) - '0'; ++ if (digit > 9) ++ { ++ digit -= 'a' - '0'; ++ if (mult == 10 || digit > 5) ++ break; ++ digit += 10; ++ } ++ ++ found = 1; ++ if (myulong > ((~0UL - digit) / mult)) ++ { ++ errnum = ERR_NUMBER_OVERFLOW; ++ return 0; ++ } ++ myulong = (myulong * mult) + digit; ++ ptr++; ++ } ++ ++ if (!found) ++ { ++ errnum = ERR_NUMBER_PARSING; ++ return 0; ++ } ++ ++ *str_ptr = ptr; ++ *myulong_ptr = myulong; ++ ++ return 1; ++} ++ ++int ++currticks (void) ++{ ++ return grub_get_rtc (); ++} ++ ++static char * ++fix_path_name (char *path_name) ++{ ++ char *p1, *p2; ++ ++ p1 = path_name; ++ p2 = p1 + 1; ++ if (*p1 == '\') ++ *p1 = '/'; ++ while (*p1) ++ { ++ switch (*p2) ++ { ++ case '\0': ++ *++p1 = *p2; ++ break; ++ case '.': ++ if (*p1 == '/' && *(p2+1) == '\') ++ p2 += 2; ++ else ++ *++p1=*p2++; ++ break; ++ case '\': ++ if (*p1 == '/') ++ p2++; ++ else ++ *++p1 = '/'; ++ break; ++ default: ++ *++p1=*p2++; ++ break; ++ } ++ } ++ return path_name; ++} ++ ++char * ++grub_efi_file_path_to_path_name (grub_efi_device_path_t *file_path) ++{ ++ char *str; ++ grub_efi_uint32_t str_len = 16; ++ grub_efi_uint32_t str_pos = 0; ++ ++ str = grub_malloc (str_len); ++ if (! str) ++ return NULL; ++ str[0] = '\0'; ++ ++ while (1) ++ { ++ grub_efi_uint8_t type = GRUB_EFI_DEVICE_PATH_TYPE (file_path); ++ grub_efi_uint8_t subtype = GRUB_EFI_DEVICE_PATH_SUBTYPE (file_path); ++ grub_efi_uint16_t len = GRUB_EFI_DEVICE_PATH_LENGTH (file_path); ++ ++ switch (type) ++ { ++ case GRUB_EFI_MEDIA_DEVICE_PATH_TYPE: ++ switch (subtype) ++ { ++ case GRUB_EFI_FILE_PATH_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_file_path_device_path_t *fp; ++ grub_uint8_t buf[(len - 4) * 2 + 2]; ++ grub_uint32_t path_name_len; ++ char *tmp_str; ++ ++ fp = (grub_efi_file_path_device_path_t *) file_path; ++ *grub_utf16_to_utf8 (buf, fp->path_name, ++ (len - 4) / sizeof (grub_efi_char16_t)) ++ = '\0'; ++ path_name_len = strlen ((char *)buf) + 1; ++ if ((str_len - str_pos) <= path_name_len) ++ { ++ do ++ str_len *= 2; ++ while ((str_len - str_pos) <= path_name_len); ++ tmp_str = grub_malloc (str_len); ++ if (tmp_str == NULL) ++ goto fail; ++ grub_memmove (tmp_str, str, str_pos); ++ grub_free (str); ++ str = tmp_str; ++ } ++ str[str_pos] = '\'; ++ strcpy (str + str_pos + 1, (char *)buf); ++ str_pos += path_name_len; ++ } ++ break; ++ default: ++ break; ++ } ++ break; ++ default: ++ break; ++ } ++ ++ if (GRUB_EFI_END_ENTIRE_DEVICE_PATH (file_path)) ++ break; ++ ++ file_path = (grub_efi_device_path_t *) ((char *) file_path + len); ++ } ++ return fix_path_name (str); ++ ++ fail: ++ grub_free (str); ++ return NULL; ++} ++ ++#define DEFAULT_SAVED_DEFAULT_FILE_NAME "grub.default" ++#define DEFAULT_CONFIG_FILE_NAME "grub.conf" ++ ++static char saved_default_file[128] = "/boot/grub/grub.default"; ++ ++void ++grub_set_config_file (char *path_name) ++{ ++ char *dir_end; ++ grub_uint32_t path_name_len; ++ ++ path_name_len = strlen (path_name); ++ if (path_name_len > 4 ++ && path_name[path_name_len - 4] == '.' ++ && grub_tolower (path_name[path_name_len - 3]) == 'e' ++ && grub_tolower (path_name[path_name_len - 2]) == 'f' ++ && grub_tolower (path_name[path_name_len - 1]) == 'i') ++ { ++ /* Bigger than buffer of config_file */ ++ if (path_name_len + 1 > 127) ++ return; ++ grub_memmove (config_file, path_name, path_name_len - 4); ++ grub_strcpy (config_file + path_name_len - 4, ".conf"); ++ /* Bigger than buffer of default file */ ++ if (path_name_len + 4 > 127) ++ return; ++ grub_memmove (saved_default_file, path_name, path_name_len - 4); ++ grub_strcpy (saved_default_file + path_name_len - 4, ".default"); ++ return; ++ } ++ dir_end = grub_strrchr (path_name, '/'); ++ if (! dir_end) ++ { ++ grub_strcpy (config_file, DEFAULT_CONFIG_FILE_NAME); ++ grub_strcpy (saved_default_file, DEFAULT_SAVED_DEFAULT_FILE_NAME); ++ return; ++ } ++ if (strlen(dir_end) == 1) { ++ path_name_len = dir_end + 1 - path_name; ++ if (path_name_len + sizeof (DEFAULT_CONFIG_FILE_NAME) > 128) ++ return; ++ grub_memmove (config_file, path_name, path_name_len); ++ grub_strcpy (config_file + path_name_len, DEFAULT_CONFIG_FILE_NAME); ++ } else { ++ grub_memmove (config_file, path_name, path_name_len+1); ++ } ++ if (path_name_len + sizeof (DEFAULT_SAVED_DEFAULT_FILE_NAME) > 128) ++ return; ++ path_name_len = dir_end + 1 - path_name; ++ grub_memmove (saved_default_file, path_name, path_name_len); ++ grub_strcpy (saved_default_file + path_name_len, ++ DEFAULT_SAVED_DEFAULT_FILE_NAME); ++} ++ ++grub_efi_guid_t simple_file_system_guid = GRUB_EFI_SIMPLE_FILE_SYSTEM_GUID; ++ ++static grub_efi_file_t * ++simple_open_file(grub_efi_handle_t dev_handle, ++ char *file_name, ++ int for_write) ++{ ++ grub_efi_simple_file_system_t *file_system; ++ grub_efi_file_t *root; ++ grub_efi_file_t *file = NULL; ++ grub_efi_status_t status; ++ grub_efi_char16_t *file_name_w = NULL; ++ grub_efi_char16_t *chp_w; ++ grub_efi_uint64_t open_mode; ++ ++ file_system = grub_efi_open_protocol (dev_handle, ++ &simple_file_system_guid, ++ GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL); ++ if (! file_system) ++ return NULL; ++ status = Call_Service_2 (file_system->open_volume, file_system, &root); ++ if (status != GRUB_EFI_SUCCESS) ++ return NULL; ++ file_name_w = grub_malloc (2 * strlen(file_name) + 2); ++ if (! file_name_w) ++ goto done; ++ for (chp_w = file_name_w; *file_name; chp_w++, file_name++) ++ if (*file_name == '/') ++ *chp_w = '\'; ++ else ++ *chp_w = *file_name; ++ *chp_w = '\0'; ++ open_mode = for_write ? GRUB_EFI_FILE_MODE_READ | GRUB_EFI_FILE_MODE_WRITE \ ++ | GRUB_EFI_FILE_MODE_CREATE : GRUB_EFI_FILE_MODE_READ; ++ status = Call_Service_5 (root->open, root, &file, file_name_w, ++ open_mode, 0); ++ done: ++ if (file_name_w) ++ grub_free (file_name_w); ++ Call_Service_1 (root->close, root); ++ return file; ++} ++ ++void ++grub_load_saved_default (grub_efi_handle_t dev_handle) ++{ ++ grub_efi_file_t *file; ++ char buf[16]; ++ char *ptr = buf; ++ grub_efi_status_t status; ++ int val; ++ grub_efi_uintn_t buf_size = sizeof(buf); ++ ++ file = simple_open_file (dev_handle, saved_default_file, 0); ++ if (! file) ++ return; ++ status = Call_Service_3 (file->read, file, &buf_size, buf); ++ if (status != GRUB_EFI_SUCCESS) ++ goto done; ++ if (buf_size >= sizeof(buf)) ++ buf_size = sizeof(buf) - 1; ++ buf[buf_size] = '\0'; ++ if (safe_parse_maxint (&ptr, &val)) ++ saved_entryno = val; ++ done: ++ Call_Service_1 (file->close, file); ++} ++ ++int ++grub_save_saved_default (int new_default) ++{ ++ grub_efi_loaded_image_t *loaded_image; ++ grub_efi_file_t *file; ++ char buf[16]; ++ grub_efi_status_t status; ++ grub_efi_uintn_t buf_size; ++ int ret = 0; ++ ++ loaded_image = grub_efi_get_loaded_image (grub_efi_image_handle); ++ file = simple_open_file (loaded_image->device_handle, ++ saved_default_file, 1); ++ if (! file) ++ { ++ errnum = ERR_FILE_NOT_FOUND; ++ return 1; ++ } ++ sprintf (buf, "%d", new_default); ++ buf_size = strlen (buf); ++ status = Call_Service_3 (file->write, file, &buf_size, buf); ++ if (status != GRUB_EFI_SUCCESS) ++ { ++ errnum = ERR_WRITE; ++ ret = 1; ++ goto done; ++ } ++ done: ++ Call_Service_1 (file->close, file); ++ return ret; ++} +diff --git a/efi/efimm.c b/efi/efimm.c +new file mode 100644 +index 0000000..836188d +--- /dev/null ++++ b/efi/efimm.c +@@ -0,0 +1,539 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2006 Free Software Foundation, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, ++ * MA 02110-1301, USA. ++ */ ++ ++#include <config.h> ++#include <grub/misc.h> ++#include <grub/efi/api.h> ++#include <grub/efi/efi.h> ++#include <grub/efi/misc.h> ++ ++#include <shared.h> ++ ++#define NEXT_MEMORY_DESCRIPTOR(desc, size) \ ++ ((grub_efi_memory_descriptor_t *) ((char *) (desc) + (size))) ++ ++#define BYTES_TO_PAGES(bytes) ((bytes) >> 12) ++#define PAGES_TO_BYTES(pages) ((pages) << 12) ++ ++/* Global variables used to store memory map, its size, and the number of ++ * pages allocated for the buffer. */ ++void *mmap_buf; ++grub_efi_uintn_t mmap_size; ++grub_efi_uintn_t mmap_pages; ++ ++/* Maintain the list of allocated pages. */ ++struct allocated_page ++{ ++ grub_efi_physical_address_t addr; ++ grub_efi_uint64_t num_pages; ++}; ++ ++#define ALLOCATED_PAGES_SIZE 0x1000 ++#define MAX_ALLOCATED_PAGES \ ++ (ALLOCATED_PAGES_SIZE / sizeof (struct allocated_page)) ++ ++static struct allocated_page *allocated_pages = 0; ++ ++/* The minimum and maximum heap size for GRUB itself. */ ++#define MIN_HEAP_SIZE 0x100000 ++#define MAX_HEAP_SIZE (16 * 0x100000) ++ ++ ++void * ++grub_efi_allocate_pool (grub_efi_uintn_t size) ++{ ++ grub_efi_status_t status; ++ void *p; ++ grub_efi_boot_services_t *b; ++ ++ b = grub_efi_system_table->boot_services; ++ status = Call_Service_3(b->allocate_pool, GRUB_EFI_LOADER_DATA, size, &p); ++ if (status != GRUB_EFI_SUCCESS) ++ return NULL; ++ ++ return p; ++} ++ ++void ++grub_efi_free_pool (void *buffer) ++{ ++ grub_efi_boot_services_t *b; ++ ++ b = grub_efi_system_table->boot_services; ++ Call_Service_1(b->free_pool, buffer); ++} ++ ++void * ++grub_efi_allocate_anypages(grub_efi_uintn_t pages) ++{ ++ grub_efi_boot_services_t *b; ++ grub_efi_status_t status; ++ grub_efi_physical_address_t address; ++ ++ b = grub_efi_system_table->boot_services; ++ status = Call_Service_4 (b->allocate_pages, ++ GRUB_EFI_ALLOCATE_ANY_PAGES, ++ GRUB_EFI_LOADER_DATA, ++ pages, ++ &address); ++ if (status != GRUB_EFI_SUCCESS) ++ return 0; ++ ++ if (allocated_pages) ++ { ++ unsigned i; ++ ++ for (i = 0; i < MAX_ALLOCATED_PAGES; i++) ++ if (allocated_pages[i].addr == 0) ++ { ++ allocated_pages[i].addr = address; ++ allocated_pages[i].num_pages = pages; ++ break; ++ } ++ ++ if (i == MAX_ALLOCATED_PAGES) ++ { ++ grub_printf ("too many page allocations"); ++ return NULL; ++ } ++ } ++ ++ return (void *) ((grub_addr_t) address); ++ ++} ++ ++/* Allocate pages. Return the pointer to the first of allocated pages. */ ++static void * ++grub_efi_allocate_pages_real (grub_efi_physical_address_t address, ++ grub_efi_uintn_t pages, ++ grub_efi_memory_type_t memtype) ++{ ++ grub_efi_allocate_type_t type; ++ grub_efi_status_t status; ++ grub_efi_boot_services_t *b; ++ ++ /* Limit the memory access to less than 2GB to avoid 64bit ++ * compatible problem of grub */ ++ if (address > 0x7fffffff) ++ return 0; ++ ++ if (address == 0) ++ { ++ type = GRUB_EFI_ALLOCATE_MAX_ADDRESS; ++ address = 0x7fffffff; ++ } ++ else ++ type = GRUB_EFI_ALLOCATE_ADDRESS; ++ ++ b = grub_efi_system_table->boot_services; ++ status = Call_Service_4 (b->allocate_pages, type, ++ memtype, pages, &address); ++ ++ if (status != GRUB_EFI_SUCCESS) ++ { ++ /* EFI_NOT_FOUND means the region was unavailable, which means we can ++ probably just use it. This is only for hacks to start with */ ++ if (memtype == GRUB_EFI_RUNTIME_SERVICES_DATA && ++ status == GRUB_EFI_NOT_FOUND) ++ return (void *) ((grub_addr_t) address); ++ else ++ return 0; ++ } ++ ++ if (address == 0) ++ { ++ /* Uggh, the address 0 was allocated... This is too annoying, ++ so reallocate another one. */ ++ address = 0x7fffffff; ++ status = Call_Service_4 (b->allocate_pages, ++ type, GRUB_EFI_LOADER_DATA, pages, &address); ++ grub_efi_free_pages (0, pages); ++ if (status != GRUB_EFI_SUCCESS) ++ return 0; ++ } ++ ++ /* We don't want to free anything we've allocated for runtime */ ++ if (allocated_pages && memtype != GRUB_EFI_RUNTIME_SERVICES_DATA) ++ { ++ unsigned i; ++ ++ for (i = 0; i < MAX_ALLOCATED_PAGES; i++) ++ if (allocated_pages[i].addr == 0) ++ { ++ allocated_pages[i].addr = address; ++ allocated_pages[i].num_pages = pages; ++ break; ++ } ++ ++ if (i == MAX_ALLOCATED_PAGES) ++ { ++ grub_printf ("too many page allocations"); ++ return NULL; ++ } ++ } ++ ++ return (void *) ((grub_addr_t) address); ++} ++ ++void * ++grub_efi_allocate_pages (grub_efi_physical_address_t address, ++ grub_efi_uintn_t pages) ++ ++{ ++ return grub_efi_allocate_pages_real(address, pages, GRUB_EFI_LOADER_DATA); ++} ++ ++void * ++grub_efi_allocate_runtime_pages (grub_efi_physical_address_t address, ++ grub_efi_uintn_t pages) ++ ++{ ++ return grub_efi_allocate_pages_real(address, pages, ++ GRUB_EFI_RUNTIME_SERVICES_DATA); ++} ++/* Free pages starting from ADDRESS. */ ++void ++grub_efi_free_pages (grub_efi_physical_address_t address, ++ grub_efi_uintn_t pages) ++{ ++ grub_efi_boot_services_t *b; ++ ++ if (allocated_pages ++ && ((grub_efi_physical_address_t) ((grub_addr_t) allocated_pages) ++ != address)) ++ { ++ unsigned i; ++ ++ for (i = 0; i < MAX_ALLOCATED_PAGES; i++) ++ if (allocated_pages[i].addr == address) ++ { ++ allocated_pages[i].addr = 0; ++ break; ++ } ++ } ++ ++ b = grub_efi_system_table->boot_services; ++ Call_Service_2 (b->free_pages ,address, pages); ++} ++ ++/* Get the memory map as defined in the EFI spec. Return 1 if successful, ++ return 0 if partial, or return -1 if an error occurs. ++ ++ This function will allocate memory for (global) mmap_buf if there isn't ++ already a buffer allocated, and will free & reallocate if it needs to ++ be larger. */ ++ ++int ++grub_efi_get_memory_map (grub_efi_uintn_t *map_key, ++ grub_efi_uintn_t *descriptor_size, ++ grub_efi_uint32_t *descriptor_version) ++{ ++ grub_efi_status_t status; ++ grub_efi_boot_services_t *b; ++ grub_efi_uintn_t key; ++ grub_efi_uint32_t version; ++ grub_efi_uintn_t tmp_mmap_size; ++ ++ /* Allow some parameters to be missing. */ ++ if (! map_key) ++ map_key = &key; ++ if (! descriptor_version) ++ descriptor_version = &version; ++ ++ while (1) ++ { ++ b = grub_efi_system_table->boot_services; ++ tmp_mmap_size = PAGES_TO_BYTES(mmap_pages); ++ status = Call_Service_5 (b->get_memory_map, ++ &tmp_mmap_size, mmap_buf, map_key, ++ descriptor_size, descriptor_version); ++ if (status == GRUB_EFI_SUCCESS) ++ { ++ mmap_size = tmp_mmap_size; ++ return 1; ++ } ++ else if (status != GRUB_EFI_BUFFER_TOO_SMALL) ++ return -1; ++ ++ /* we need a larger buffer */ ++ if (mmap_buf) ++ grub_efi_free_pages ((grub_addr_t) mmap_buf, mmap_pages); ++ ++ /* get 1 more page than we need, just in case */ ++ mmap_pages = BYTES_TO_PAGES(tmp_mmap_size + 4095) + 1; ++ mmap_buf = grub_efi_allocate_pages (0, mmap_pages); ++ if (! mmap_buf) ++ { ++ mmap_pages = 0; ++ grub_printf ("cannot allocate memory for memory map"); ++ return -1; ++ } ++ } ++} ++ ++#define MMAR_DESC_LENGTH 20 ++ ++/* ++ * Add a memory region to the kernel e820 map. ++ * ++ * Convert EFI memory map to E820 map for the operating system ++ * This code is based on a Linux kernel patch submitted by Edgar Hucek ++ */ ++static void ++add_memory_region (struct e820_entry *e820_map, ++ int *e820_nr_map, ++ unsigned long long start, ++ unsigned long long size, ++ unsigned int type) ++{ ++ int x = *e820_nr_map; ++ static unsigned long long estart = 0ULL; ++ static unsigned long esize = 0L; ++ static unsigned int etype = -1; ++ static int merge = 0; ++ ++ /* merge adjacent regions of same type */ ++ if ((x > 0) && e820_map[x-1].addr + e820_map[x-1].size == start ++ && e820_map[x-1].type == type) ++ { ++ e820_map[x-1].size += size; ++ estart = e820_map[x-1].addr; ++ esize = e820_map[x-1].size; ++ etype = e820_map[x-1].type; ++ merge++; ++ return; ++ } ++ ++ /* fill up to E820_MAX */ ++ if ( x < E820_MAX ) ++ { ++ e820_map[x].addr = start; ++ e820_map[x].size = size; ++ e820_map[x].type = type; ++ (*e820_nr_map)++; ++ merge=0; ++ return; ++ } ++ ++ /* different type means another region didn't fit */ ++ /* or same type, but there's a hole */ ++ if (etype != type || (estart + esize) != start) ++ { ++ merge = 0; ++ estart = start; ++ esize = size; ++ etype = type; ++ return; ++ } ++ ++ /* same type and no hole, merge it */ ++ estart += esize; ++ esize += size; ++ merge++; ++} ++ ++/* ++ * Make a e820 memory map ++ */ ++void ++e820_map_from_efi_map (struct e820_entry *e820_map, ++ int *e820_nr_map, ++ grub_efi_memory_descriptor_t *memory_map, ++ grub_efi_uintn_t desc_size, ++ grub_efi_uintn_t memory_map_size) ++{ ++ grub_efi_memory_descriptor_t *desc; ++ unsigned long long start = 0; ++ unsigned long long end = 0; ++ unsigned long long size = 0; ++ grub_efi_memory_descriptor_t *memory_map_end; ++ ++ memory_map_end = NEXT_MEMORY_DESCRIPTOR (memory_map, memory_map_size); ++ *e820_nr_map = 0; ++ for (desc = memory_map; ++ desc < memory_map_end; ++ desc = NEXT_MEMORY_DESCRIPTOR (desc, desc_size)) ++ { ++ switch (desc->type) ++ { ++ case GRUB_EFI_ACPI_RECLAIM_MEMORY: ++ add_memory_region (e820_map, e820_nr_map, ++ desc->physical_start, desc->num_pages << 12, ++ E820_ACPI); ++ break; ++ case GRUB_EFI_RUNTIME_SERVICES_CODE: ++ case GRUB_EFI_RUNTIME_SERVICES_DATA: ++ case GRUB_EFI_RESERVED_MEMORY_TYPE: ++ case GRUB_EFI_MEMORY_MAPPED_IO: ++ case GRUB_EFI_MEMORY_MAPPED_IO_PORT_SPACE: ++ case GRUB_EFI_UNUSABLE_MEMORY: ++ case GRUB_EFI_PAL_CODE: ++ add_memory_region (e820_map, e820_nr_map, ++ desc->physical_start, desc->num_pages << 12, ++ E820_RESERVED); ++ break; ++ case GRUB_EFI_LOADER_CODE: ++ case GRUB_EFI_LOADER_DATA: ++ case GRUB_EFI_BOOT_SERVICES_CODE: ++ case GRUB_EFI_BOOT_SERVICES_DATA: ++ case GRUB_EFI_CONVENTIONAL_MEMORY: ++ start = desc->physical_start; ++ size = desc->num_pages << 12; ++ end = start + size; ++ if (start < 0x100000ULL && end > 0xA0000ULL) ++ { ++ if (start < 0xA0000ULL) ++ add_memory_region (e820_map, e820_nr_map, ++ start, 0xA0000ULL-start, ++ E820_RAM); ++ if (end <= 0x100000ULL) ++ continue; ++ start = 0x100000ULL; ++ size = end - start; ++ } ++ add_memory_region (e820_map, e820_nr_map, ++ start, size, E820_RAM); ++ break; ++ case GRUB_EFI_ACPI_MEMORY_NVS: ++ add_memory_region (e820_map, e820_nr_map, ++ desc->physical_start, desc->num_pages << 12, ++ E820_NVS); ++ break; ++ } ++ } ++} ++ ++static void ++update_e820_map (struct e820_entry *e820_map, ++ int *e820_nr_map) ++{ ++ grub_efi_uintn_t desc_size; ++ ++ if (grub_efi_get_memory_map (0, &desc_size, 0) < 0) ++ { ++ grub_printf ("cannot get memory map"); ++ return; ++ } ++ ++ e820_map_from_efi_map (e820_map, e820_nr_map, ++ mmap_buf, desc_size, mmap_size); ++} ++ ++/* Simulated memory sizes. */ ++#define EXTENDED_MEMSIZE (3 * 1024 * 1024) /* 3MB */ ++#define CONVENTIONAL_MEMSIZE (640 * 1024) /* 640kB */ ++ ++int ++get_code_end (void) ++{ ++ /* Just return a little area for simulation. */ ++ return BOOTSEC_LOCATION + (60 * 1024); ++} ++ ++/* memory probe routines */ ++int ++get_memsize (int type) ++{ ++ if (! type) ++ return CONVENTIONAL_MEMSIZE >> 10; ++ else ++ return EXTENDED_MEMSIZE >> 10; ++} ++ ++/* get_eisamemsize() : return packed EISA memory map, lower 16 bits is ++ * memory between 1M and 16M in 1K parts, upper 16 bits is ++ * memory above 16M in 64K parts. If error, return -1. ++ */ ++int ++get_eisamemsize (void) ++{ ++ return (EXTENDED_MEMSIZE >> 10); ++} ++ ++static int grub_e820_nr_map; ++static struct e820_entry grub_e820_map[E820_MAX]; ++ ++/* Fetch the next entry in the memory map and return the continuation ++ value. DESC is a pointer to the descriptor buffer, and CONT is the ++ previous continuation value (0 to get the first entry in the ++ map). */ ++int ++get_mmap_entry (struct mmar_desc *desc, int cont) ++{ ++ if (cont < 0 || cont >= grub_e820_nr_map) ++ { ++ /* Should not happen. */ ++ desc->desc_len = 0; ++ } ++ else ++ { ++ struct e820_entry *entry; ++ /* Copy the entry. */ ++ desc->desc_len = MMAR_DESC_LENGTH; ++ entry = &grub_e820_map[cont++]; ++ desc->addr = entry->addr; ++ desc->length = entry->size; ++ desc->type = entry->type; ++ ++ /* If the next entry exists, return the index. */ ++ if (cont < grub_e820_nr_map) ++ return cont; ++ } ++ ++ return 0; ++} ++ ++void ++grub_efi_mm_init (void) ++{ ++ /* First of all, allocate pages to maintain allocations. */ ++ allocated_pages ++ = grub_efi_allocate_pages (0, BYTES_TO_PAGES (ALLOCATED_PAGES_SIZE)); ++ if (! allocated_pages) ++ { ++ grub_printf ("cannot allocate memory"); ++ return; ++ } ++ ++ grub_memset (allocated_pages, 0, ALLOCATED_PAGES_SIZE); ++ ++ update_e820_map (grub_e820_map, &grub_e820_nr_map); ++} ++ ++void ++grub_efi_mm_fini (void) ++{ ++ if (allocated_pages) ++ { ++ unsigned i; ++ ++ for (i = 0; i < MAX_ALLOCATED_PAGES; i++) ++ { ++ struct allocated_page *p; ++ ++ p = allocated_pages + i; ++ if (p->addr != 0) ++ grub_efi_free_pages ((grub_addr_t) p->addr, p->num_pages); ++ } ++ ++ grub_efi_free_pages ((grub_addr_t) allocated_pages, ++ BYTES_TO_PAGES (ALLOCATED_PAGES_SIZE)); ++ } ++} +diff --git a/efi/efinic.c b/efi/efinic.c +new file mode 100644 +index 0000000..e69de29 +diff --git a/efi/efiserial.c b/efi/efiserial.c +new file mode 100644 +index 0000000..32898a9 +--- /dev/null ++++ b/efi/efiserial.c +@@ -0,0 +1,265 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2007 Intel Corp. ++ * ++ * GRUB is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with GRUB; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#ifdef SUPPORT_SERIAL ++ ++#include <grub/types.h> ++#include <grub/misc.h> ++#include <grub/efi/api.h> ++#include <grub/efi/efi.h> ++#include <grub/efi/misc.h> ++ ++#include <shared.h> ++#include <serial.h> ++#include <term.h> ++ ++struct grub_efiserial_data ++{ ++ grub_efi_handle_t handle; ++ grub_efi_serial_io_t *serial_io; ++ struct grub_efiserial_data *next; ++}; ++ ++/* GUIDs. */ ++static grub_efi_guid_t serial_io_guid = GRUB_EFI_SERIAL_IO_GUID; ++ ++static grub_efi_serial_io_t *serial_device = NULL; ++ ++static struct grub_efiserial_data * ++make_devices (void) ++{ ++ grub_efi_uintn_t num_handles; ++ grub_efi_handle_t *handles; ++ grub_efi_handle_t *handle; ++ struct grub_efiserial_data *devices = 0; ++ ++ /* Find handles which support the serial io interface. */ ++ handles = grub_efi_locate_handle (GRUB_EFI_BY_PROTOCOL, &serial_io_guid, ++ 0, &num_handles); ++ if (! handles) ++ return 0; ++ ++ /* Make a linked list of devices. */ ++ for (handle = handles; num_handles--; handle++) ++ { ++ struct grub_efiserial_data *s; ++ grub_efi_serial_io_t *sio; ++ ++ sio = grub_efi_open_protocol (*handle, &serial_io_guid, ++ GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL); ++ if (! sio) ++ /* This should not happen... Why? */ ++ continue; ++ ++ s = grub_malloc (sizeof (*s)); ++ if (! s) ++ { ++ /* Uggh. */ ++ grub_free (handles); ++ return 0; ++ } ++ ++ s->handle = *handle; ++ s->serial_io = sio; ++ s->next = devices; ++ devices = s; ++ } ++ ++ grub_free (handles); ++ ++ return devices; ++} ++ ++static void ++free_devices (struct grub_efiserial_data *devices) ++{ ++ struct grub_efiserial_data *p, *q; ++ ++ for (p = devices; p; p = q) ++ { ++ q = p->next; ++ grub_free (p); ++ } ++} ++ ++static struct grub_efiserial_data * ++get_device (struct grub_efiserial_data *devices, int num) ++{ ++ struct grub_efiserial_data *s; ++ ++ for (s = devices; s && num; s = s->next, num--) ++ ; ++ ++ if (num == 0) ++ return s; ++ ++ return 0; ++} ++ ++/* Fetch a key from a serial device. */ ++int ++serial_hw_fetch (void) ++{ ++ grub_efi_status_t status; ++ char buf[1]; ++ grub_efi_uintn_t buf_siz = sizeof (buf); ++ grub_efi_uint32_t control; ++ ++ if (! serial_device) ++ return -1; ++ ++ status = Call_Service_2 (serial_device->get_control_bits, serial_device, &control); ++ if (status != GRUB_EFI_SUCCESS) ++ return -1; ++ if (control & GRUB_EFI_SERIAL_INPUT_BUFFER_EMPTY) ++ return -1; ++ status = Call_Service_3 (serial_device->read, serial_device, &buf_siz, buf); ++ if (status != GRUB_EFI_SUCCESS) ++ return -1; ++ ++ return buf[0]; ++} ++ ++/* Put a character to a serial device. */ ++void ++serial_hw_put (int c) ++{ ++ grub_efi_status_t status; ++ char ch = c; ++ grub_efi_uintn_t buf_size = sizeof (ch); ++ ++ if (! serial_device) ++ return; ++ ++ status = Call_Service_3 (serial_device->write, serial_device, &buf_size, &ch); ++} ++ ++void ++serial_hw_delay (void) ++{ ++} ++ ++/* Get the port number of the unit UNIT, the port number is same as ++ serial port unit number in EFI. */ ++unsigned short ++serial_hw_get_port (int unit) ++{ ++ return unit; ++} ++ ++static inline grub_efi_uint8_t ++efi_data_bits_from_8250_LCR (int word_len) ++{ ++ switch (word_len & 0x3) ++ { ++ case 0: ++ return 5; ++ case 1: ++ return 6; ++ case 2: ++ return 7; ++ case 3: ++ return 8; ++ default: ++ return 0; ++ } ++} ++ ++static inline grub_efi_stop_bits_t ++efi_stop_bits_from_8250_LCR (int stop_bit_len) ++{ ++ switch (stop_bit_len & 0x4) ++ { ++ case 0x0: ++ return GRUB_EFI_ONE_STOP_BIT; ++ case 0x4: ++ return GRUB_EFI_TWO_STOP_BITS; ++ default: ++ return GRUB_EFI_DEFAULT_STOP_BITS; ++ } ++} ++ ++static inline grub_efi_parity_t ++efi_parity_from_8250_LCR (int parity_8250) ++{ ++ if (! (parity_8250 & 0x8)) ++ return GRUB_EFI_NO_PARITY; ++ ++ switch (parity_8250 & 0x30) ++ { ++ case 0x00: ++ return GRUB_EFI_ODD_PARITY; ++ case 0x10: ++ return GRUB_EFI_EVEN_PARITY; ++ case 0x20: ++ return GRUB_EFI_MARK_PARITY; ++ case 0x30: ++ return GRUB_EFI_SPACE_PARITY; ++ default: ++ return GRUB_EFI_DEFAULT_PARITY; ++ } ++} ++ ++/* Initialize a serial device. In EFI, PORT is used to assign ++ serial port unit number. */ ++int ++serial_hw_init (unsigned short port, unsigned int speed, ++ int word_len, int parity, int stop_bit_len) ++{ ++ grub_efi_serial_io_t *sio; ++ struct grub_efiserial_data *devices, *s; ++ grub_efi_parity_t efi_parity; ++ grub_efi_stop_bits_t efi_stop_bits; ++ grub_efi_uint8_t efi_data_bits; ++ grub_efi_status_t status; ++ int i; ++ ++ devices = make_devices (); ++ s = get_device (devices, port); ++ if (!s) ++ return 0; ++ sio = s->serial_io; ++ free_devices (devices); ++ ++ efi_data_bits = efi_data_bits_from_8250_LCR (word_len); ++ efi_parity = efi_parity_from_8250_LCR (parity); ++ efi_stop_bits = efi_stop_bits_from_8250_LCR (stop_bit_len); ++ ++ status = Call_Service_1 (sio->reset, sio); ++ if (status != GRUB_EFI_SUCCESS) ++ return 0; ++ ++ status = Call_Service_7 (sio->set_attributes, sio, speed, 0, 0, ++ efi_parity, efi_data_bits, efi_stop_bits); ++ if (status != GRUB_EFI_SUCCESS) ++ return 0; ++ ++ serial_device = sio; ++ /* Get rid of TERM_NEED_INIT from the serial terminal. */ ++ for (i = 0; term_table[i].name; i++) ++ if (grub_strcmp (term_table[i].name, "serial") == 0) ++ { ++ term_table[i].flags &= ~TERM_NEED_INIT; ++ break; ++ } ++ ++ return 1; ++} ++ ++#endif /* SUPPORT_SERIAL */ +diff --git a/efi/efitftp.c b/efi/efitftp.c +new file mode 100644 +index 0000000..ba6918f +--- /dev/null ++++ b/efi/efitftp.c +@@ -0,0 +1,228 @@ ++#include <grub/efi/efi.h> ++#include <grub/efi/api.h> ++#include <grub/efi/misc.h> ++#include <grub/misc.h> ++ ++#include <shared.h> ++#include <filesys.h> ++#include "pxe.h" ++ ++struct tftp_info tftp_info = { ++ .LoadedImage = NULL, ++ .Pxe = NULL, ++ .ServerIp = NULL, ++ .BasePath = NULL ++}; ++ ++/* ++ * CLIENT MAC ADDR: 00 15 17 4C E6 74 ++ * CLIENT IP: 10.16.52.158 MASK: 255.255.255.0 DHCP IP: 10.16.52.16 ++ * GATEWAY IP: 10.16.52.254 ++ * ++ * TSize.Running LoadFile() ++ * ++ * TFTP.status: 5 ++ * got to grub_efi_pxe_get_config_path ++ * SiAddr: 10.16.52.16 ++ * BootpHwAddr: 00:15:17:4c:e6:74:00:00:00:00:00:00:00:00:00:00 ++ * BootpSrvName: ++ * BootpBootFile: X86PC/UNDI/pxelinux/bootx64.efi ++ */ ++ ++static grub_efi_status_t tftp_get_file_size_defective_buffer_fallback( ++ char *Filename, ++ grub_efi_uintn_t *Size) ++{ ++ EFI_PXE_BASE_CODE_TFTP_OPCODE OpCode = EFI_PXE_BASE_CODE_TFTP_READ_FILE; ++ char *Buffer = NULL; ++ grub_efi_boolean_t Overwrite = 0; ++ grub_efi_boolean_t DontUseBuffer = 0; ++ grub_efi_uint64_t BufferSize = 4096; ++ grub_efi_uintn_t BlockSize = 512; ++ grub_efi_status_t rc = GRUB_EFI_BUFFER_TOO_SMALL; ++ char *FullPath = NULL; ++ ++ while (rc == GRUB_EFI_BUFFER_TOO_SMALL) { ++ char *NewBuffer; ++ ++ if (Buffer) { ++ grub_free(Buffer); ++ Buffer = NULL; ++ } ++ BufferSize *= 2; ++ NewBuffer = grub_malloc(BufferSize); ++ if (!NewBuffer) ++ return GRUB_EFI_OUT_OF_RESOURCES; ++ Buffer = NewBuffer; ++ ++ if (tftp_info.BasePath) { ++ int PathSize = 0; ++ PathSize = strlen(tftp_info.BasePath) + 2 + ++ strlen(Filename); ++ FullPath = grub_malloc(PathSize); ++ grub_sprintf(FullPath, "%s/%s", tftp_info.BasePath, ++ Filename); ++ } else { ++ FullPath = grub_malloc(strlen(Filename)); ++ strcpy(FullPath, Filename); ++ } ++ ++ rc = Call_Service_10(tftp_info.Pxe->Mtftp, tftp_info.Pxe, ++ OpCode, Buffer, Overwrite, &BufferSize, &BlockSize, ++ tftp_info.ServerIp, FullPath, NULL, DontUseBuffer); ++ if (rc == GRUB_EFI_SUCCESS || rc == GRUB_EFI_BUFFER_TOO_SMALL) ++ *Size = BufferSize; ++ } ++ grub_free(FullPath); ++ grub_free(Buffer); ++ return rc; ++} ++ ++grub_efi_status_t tftp_get_file_size( ++ char *Filename, ++ grub_efi_uintn_t *Size) ++{ ++ EFI_PXE_BASE_CODE_TFTP_OPCODE OpCode = EFI_PXE_BASE_CODE_TFTP_GET_FILE_SIZE; ++ char Buffer[8192]; ++ grub_efi_boolean_t Overwrite = 0; ++ grub_efi_boolean_t DontUseBuffer = 0; ++ grub_efi_uint64_t BufferSize = 8192; ++ grub_efi_uintn_t BlockSize = 512; ++ grub_efi_status_t rc; ++ char *FullPath = NULL; ++ ++ if (tftp_info.BasePath) { ++ int PathSize = 0; ++ PathSize = strlen(tftp_info.BasePath) + 2 + strlen(Filename); ++ FullPath = grub_malloc(PathSize); ++ grub_sprintf(FullPath, "%s/%s", tftp_info.BasePath, Filename); ++ } else { ++ FullPath = grub_malloc(strlen(Filename)); ++ strcpy(FullPath, Filename); ++ } ++ ++ rc = Call_Service_10(tftp_info.Pxe->Mtftp, tftp_info.Pxe, OpCode, ++ Buffer, Overwrite, &BufferSize, &BlockSize, tftp_info.ServerIp, ++ FullPath, NULL, DontUseBuffer); ++ if (rc == GRUB_EFI_BUFFER_TOO_SMALL) ++ rc = tftp_get_file_size_defective_buffer_fallback(Filename, Size); ++ if (rc == GRUB_EFI_SUCCESS) ++ *Size = BufferSize; ++ grub_free(FullPath); ++ return rc; ++} ++ ++static grub_efi_status_t tftp_read_file( ++ char *Filename, ++ char *Buffer, ++ grub_efi_uint64_t BufferSize) ++{ ++ EFI_PXE_BASE_CODE_TFTP_OPCODE OpCode = EFI_PXE_BASE_CODE_TFTP_READ_FILE; ++ grub_efi_boolean_t Overwrite = 0; ++ grub_efi_boolean_t DontUseBuffer = 0; ++ grub_efi_uintn_t BlockSize = 512; ++ grub_efi_status_t rc; ++ char *FullPath = NULL; ++ ++ if (tftp_info.BasePath) { ++ int PathSize = 0; ++ PathSize = strlen(tftp_info.BasePath) + 2 + strlen(Filename); ++ FullPath = grub_malloc(PathSize); ++ grub_sprintf(FullPath, "%s/%s", tftp_info.BasePath, Filename); ++ } else { ++ FullPath = grub_malloc(strlen(Filename)); ++ strcpy(FullPath, Filename); ++ } ++ ++ rc = Call_Service_10(tftp_info.Pxe->Mtftp, tftp_info.Pxe, OpCode, ++ Buffer, Overwrite, &BufferSize, &BlockSize, tftp_info.ServerIp, ++ FullPath, NULL, DontUseBuffer); ++ grub_free(FullPath); ++ return rc; ++} ++ ++int ++efi_tftp_mount (void) ++{ ++ if (current_drive != NETWORK_DRIVE) { ++ return 0; ++ } ++ return 1; ++} ++ ++int ++efi_tftp_read (char *addr, int size) ++{ ++ int rc; ++ ++ if (tftp_info.LastPath == NULL) { ++ grub_printf(" = 0 (no path known)\n"); ++ return 0; ++ } ++ if (tftp_info.Buffer == NULL) { ++ grub_printf(" = 0 (no file open)\n"); ++ return 0; ++ } ++ if (filemax == -1) { ++ grub_printf(" = 0 (file not found)\n"); ++ return 0; ++ } ++ if (filepos == 0) { ++ rc = tftp_read_file(tftp_info.LastPath, tftp_info.Buffer, ++ filemax); ++ } ++ ++ grub_memmove(addr, tftp_info.Buffer+filepos, size); ++ filepos += size; ++ ++ return size; ++} ++ ++int ++efi_tftp_dir (char *dirname) ++{ ++ int rc; ++ int ch; ++ grub_efi_uintn_t size; ++ int len; ++ char *name; ++ ++ ch = nul_terminate(dirname); ++ len = strlen(dirname); ++ ++ name = grub_malloc(len + 1); ++ grub_memmove(name, dirname, len); ++ name[len] = '\0'; ++ dirname[len] = ch; ++ ++#if 0 ++ if (print_possibilities) ++ return 1; ++#endif ++ ++ filemax = -1; ++ ++ rc = tftp_get_file_size(name, &size); ++ if (rc == GRUB_EFI_SUCCESS) { ++ tftp_info.LastPath = grub_malloc(strlen(name) + 1); ++ sprintf(tftp_info.LastPath, "%s", name); ++ filemax = size; ++ filepos = 0; ++ ++ tftp_info.Buffer = grub_malloc(filemax); ++ ++ return 1; ++ } ++ return 0; ++} ++ ++void ++efi_tftp_close (void) ++{ ++ filepos = 0; ++ filemax = -1; ++ grub_free(tftp_info.LastPath); ++ tftp_info.LastPath = NULL; ++ grub_free(tftp_info.Buffer); ++ tftp_info.Buffer = NULL; ++} +diff --git a/efi/efiuga.c b/efi/efiuga.c +new file mode 100644 +index 0000000..b27500b +--- /dev/null ++++ b/efi/efiuga.c +@@ -0,0 +1,982 @@ ++/* efiuga.c - "univeral graphics adapter" support for GRUB/EFI */ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright 2007 Red Hat, Inc. ++ * Copyright (C) 2007 Intel Corp. ++ * Copyright (C) 2001,2002 Red Hat, Inc. ++ * Portions copyright (C) 2000 Conectiva, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#ifdef SUPPORT_GRAPHICS ++ ++#include <grub/misc.h> ++#include <grub/types.h> ++#include <grub/cpu/linux.h> ++#include <grub/efi/api.h> ++#include <grub/efi/efi.h> ++#include <grub/misc.h> ++ ++#include <term.h> ++#include <shared.h> ++#include <graphics.h> ++ ++#include "graphics.h" ++#include "xpm.h" ++ ++static grub_efi_guid_t draw_guid = GRUB_EFI_UGA_DRAW_GUID; ++static grub_efi_guid_t pci_io_guid = GRUB_EFI_PCI_IO_GUID; ++ ++#if 0 ++#define UGA ++#include "ugadebug.h" ++#endif ++ ++#ifndef MIN ++#define MIN(x,y) ( ((x) < (y)) ? (x) : (y)) ++#endif ++#ifndef MAX ++#define MAX(x,y) ( ((x) < (y)) ? (y) : (x)) ++#endif ++ ++#define pixel_equal(x,y) ((x).red == (y).red && \ ++ (x).green == (y).green && \ ++ (x).blue == (y).blue) ++ ++struct video_mode { ++ grub_efi_uint32_t horizontal_resolution; ++ grub_efi_uint32_t vertical_resolution; ++ grub_efi_uint32_t color_depth; ++ grub_efi_uint32_t refresh_rate; ++}; ++ ++static void ++xpnd_6_to_8(grub_efi_uga_pixel_t *pixel) ++{ ++ if (!((pixel->red | pixel->green | pixel->blue) & 0xc0)) { ++ pixel->red <<= 2; ++ pixel->red |= ((pixel->red & 0xc0) >> 6); ++ pixel->red &= 0xff; ++ pixel->green <<= 2; ++ pixel->green |= ((pixel->green & 0xc0) >> 6); ++ pixel->green &= 0xff; ++ pixel->blue <<= 2; ++ pixel->blue |= ((pixel->blue & 0xc0) >> 6); ++ pixel->blue &= 0xff; ++ } ++} ++ ++ ++ ++#define MAX_PALETTE 16 ++struct uga { ++ grub_efi_uga_draw_t *draw_intf; ++ struct video_mode graphics_mode; ++ struct video_mode text_mode; ++ enum { TEXT, GRAPHICS } current_mode; ++ ++ position_t screen_size; ++ position_t screen_pos; ++ ++ struct bltbuf *background; ++ ++ grub_efi_uga_pixel_t palette[MAX_PALETTE + 1]; ++}; ++ ++#define RGB(r,g,b) { .red = r, .green = g, .blue = b } ++ ++static grub_efi_uga_pixel_t cga_colors[] = { ++ RGB(0x00,0x00,0x00), // 0 Black ++ RGB(0x7f,0x00,0x00), // 1 Dark Red ++ RGB(0x00,0x7f,0x00), // 2 Dark Green ++ RGB(0x7f,0x7f,0x00), // 3 Dark Yellow ++ RGB(0x00,0x00,0x7f), // 4 Dark Blue ++ RGB(0x7f,0x00,0x7f), // 5 Dark Magenta ++ RGB(0x00,0x7f,0x7f), // 6 Dark Cyan ++ RGB(0xc0,0xc0,0xc0), // 7 Light Grey ++ RGB(0x7f,0x7f,0x7f), // 8 Dark Grey ++ RGB(0xff,0x00,0x00), // 9 Red ++ RGB(0x00,0xff,0x00), // 10 Green ++ RGB(0xff,0xff,0x00), // 11 Yellow ++ RGB(0x00,0x00,0xff), // 12 Blue ++ RGB(0xff,0x00,0xff), // 13 Magenta ++ RGB(0x00,0xff,0xff), // 14 Cyan ++ RGB(0xff,0xff,0xff), // 15 White ++ RGB(0xff,0xff,0xff), // 16 Also white ;) ++}; ++ ++static const int n_cga_colors = sizeof (cga_colors) / sizeof (cga_colors[0]); ++ ++static void ++set_kernel_params(struct graphics_backend *backend, ++ struct linux_kernel_params *params) ++{ ++ struct uga *uga; ++ ++ if (!backend || !backend->priv) ++ return; ++ ++ uga = backend->priv; ++ ++ params->lfb_width = uga->graphics_mode.horizontal_resolution; ++ params->lfb_height = uga->graphics_mode.vertical_resolution; ++ params->lfb_depth = 32; ++ params->red_mask_size = 8; ++ params->red_field_pos = 16; ++ params->green_mask_size = 8; ++ params->green_field_pos = 8; ++ params->blue_mask_size = 8; ++ params->blue_field_pos = 0; ++ params->reserved_mask_size = 8; ++ params->reserved_field_pos = 24; ++ params->have_vga = VIDEO_TYPE_EFI; ++} ++ ++static void ++pixel_to_rgb(grub_efi_uga_pixel_t *pixel, int *red, int *green, int *blue) ++{ ++ *red = pixel->red; ++ *green = pixel->green; ++ *blue = pixel->blue; ++} ++ ++static void ++rgb_to_pixel(int red, int green, int blue, grub_efi_uga_pixel_t *pixel) ++{ ++ pixel->red = red; ++ pixel->green = green; ++ pixel->blue = blue; ++} ++ ++static void ++position_to_phys(struct uga *uga, position_t *virt, position_t *phys) ++{ ++ phys->x = virt->x + uga->screen_pos.x; ++ phys->y = virt->y + uga->screen_pos.y; ++} ++ ++static int ++abs_paddr(struct uga *uga, position_t *virt) ++{ ++ position_t phys; ++ position_to_phys(uga, virt, &phys); ++ return phys.x + phys.y * uga->screen_size.x; ++} ++ ++struct bltbuf { ++ grub_efi_uintn_t width; ++ grub_efi_uintn_t height; ++ grub_efi_uga_pixel_t pixbuf[]; ++}; ++ ++static struct bltbuf *alloc_bltbuf(grub_efi_uintn_t width, ++ grub_efi_uintn_t height) ++{ ++ struct bltbuf *buf = NULL; ++ grub_efi_uintn_t pixbuf_size = width * height * ++ sizeof (grub_efi_uga_pixel_t); ++ ++ if (!(buf = grub_malloc(sizeof(buf->width) + sizeof(buf->height) + ++ pixbuf_size))) ++ return NULL; ++ ++ buf->width = width; ++ buf->height = height; ++ grub_memset(buf->pixbuf, '\0', pixbuf_size); ++ return buf; ++} ++ ++static void ++blt_to_screen(struct uga *uga, struct bltbuf *bltbuf) ++{ ++ position_t addr = {0, 0}; ++ ++ position_to_phys(uga, &addr, &addr); ++ ++ Call_Service_10(uga->draw_intf->blt, uga->draw_intf, bltbuf->pixbuf, ++ EfiUgaBltBufferToVideo, ++ 0, 0, ++ addr.x, addr.y, ++ bltbuf->width, bltbuf->height, ++ 0); ++} ++ ++static void ++blt_pos_to_screen_pos(struct uga *uga, struct bltbuf *bltbuf, ++ position_t *bltpos, position_t *bltsz, position_t *pos) ++{ ++ position_t phys; ++ ++ position_to_phys(uga, pos, &phys); ++ ++ Call_Service_10(uga->draw_intf->blt, uga->draw_intf, bltbuf->pixbuf, ++ EfiUgaBltBufferToVideo, ++ bltpos->x, bltpos->y, ++ phys.x, phys.y, ++ bltsz->x, bltsz->y, ++ 0); ++} ++ ++static void ++blt_to_screen_pos(struct uga *uga, struct bltbuf *bltbuf, position_t *pos) ++{ ++ position_t bltpos = {0, 0}; ++ position_t bltsz = { bltbuf->width, bltbuf->height }; ++ blt_pos_to_screen_pos(uga, bltbuf, &bltpos, &bltsz, pos); ++} ++ ++static int ++blt_from_screen_pos(struct uga *uga, struct bltbuf **retbuf, ++ position_t *pos, position_t *size) ++{ ++ struct bltbuf *bltbuf = NULL; ++ position_t phys; ++ ++ if (!retbuf) ++ return 0; ++ ++ if (*retbuf) ++ grub_free(*retbuf); ++ ++ bltbuf = alloc_bltbuf(size->x, size->y); ++ if (!bltbuf) ++ return 0; ++ ++ position_to_phys(uga, pos, &phys); ++ ++ Call_Service_10(uga->draw_intf->blt, uga->draw_intf, bltbuf->pixbuf, ++ EfiUgaVideoToBltBuffer, ++ phys.x, phys.y, ++ 0, 0, ++ size->x, size->y, 0); ++ *retbuf = bltbuf; ++ return 1; ++} ++ ++static int ++save_video_mode(struct uga *uga, struct video_mode *mode) ++{ ++ grub_efi_status_t status; ++ ++ status = Call_Service_5(uga->draw_intf->get_mode, uga->draw_intf, ++ &mode->horizontal_resolution, &mode->vertical_resolution, ++ &mode->color_depth, &mode->refresh_rate); ++ return status == GRUB_EFI_SUCCESS; ++} ++ ++static grub_efi_status_t ++set_video_mode(struct uga *uga, struct video_mode *mode) ++{ ++ grub_efi_status_t status; ++ ++ status = Call_Service_5(uga->draw_intf->set_mode, uga->draw_intf, ++ mode->horizontal_resolution, ++ mode->vertical_resolution, ++ mode->color_depth, ++ mode->refresh_rate); ++ return status; ++} ++ ++static int ++cmp_video_modes(struct video_mode *vm0, struct video_mode *vm1) ++{ ++ if (vm0->horizontal_resolution == vm1->horizontal_resolution && ++ vm0->vertical_resolution == vm1->vertical_resolution) ++ return 0; ++ if (vm0->horizontal_resolution >= vm1->horizontal_resolution && ++ vm0->vertical_resolution >= vm1->vertical_resolution) ++ return 1; ++ return -1; ++} ++ ++static int ++blt_from_screen(struct uga *uga, struct bltbuf **retbuf) ++{ ++ struct bltbuf *bltbuf = NULL; ++ position_t pos = {0 ,0}; ++ position_t size = { ++ .x = uga->graphics_mode.horizontal_resolution, ++ .y = uga->graphics_mode.vertical_resolution ++ }; ++ ++ return blt_from_screen_pos(uga, retbuf, &pos, &size); ++} ++ ++static void ++bltbuf_set_pixel(struct bltbuf *bltbuf, position_t *pos, ++ grub_efi_uga_pixel_t *pixel) ++{ ++ if (pos->x < 0 || pos->x >= bltbuf->width) ++ return; ++ if (pos->x < 0 || pos->y >= bltbuf->height) ++ return; ++ grub_memmove(&bltbuf->pixbuf[pos->x + pos->y * bltbuf->width], pixel, ++ sizeof *pixel); ++} ++ ++static void ++bltbuf_get_pixel(struct bltbuf *bltbuf, position_t *pos, ++ grub_efi_uga_pixel_t *pixel) ++{ ++ if (bltbuf && pos->x < bltbuf->width && pos->y < bltbuf->height) { ++ grub_memmove(pixel, &bltbuf->pixbuf[pos->x + pos->y * bltbuf->width], ++ sizeof *pixel); ++ } else { ++ pixel->red = 0x00; ++ pixel->green = 0x00; ++ pixel->blue = 0x00; ++ } ++} ++ ++static void ++bltbuf_set_pixel_rgb(struct bltbuf *bltbuf, position_t *pos, ++ int red, int green, int blue) ++{ ++ grub_efi_uga_pixel_t pixel; ++ rgb_to_pixel(red, green, blue, &pixel); ++ bltbuf_set_pixel(bltbuf, pos, &pixel); ++} ++ ++static void ++bltbuf_set_pixel_idx(struct uga *uga, struct bltbuf *bltbuf, ++ position_t *pos, int idx) ++{ ++ bltbuf_set_pixel(bltbuf, pos, &uga->palette[idx]); ++} ++ ++static void ++bltbuf_get_pixel_idx(struct bltbuf *bltbuf, position_t *pos, int *idx) ++{ ++ grub_efi_uga_pixel_t pixel; ++ ++ rgb_to_pixel(0, 0, 0, &pixel); ++ bltbuf_get_pixel(bltbuf, pos, &pixel); ++ for (*idx = 0; *idx < 16; (*idx)++) { ++ if (pixel_equal(cga_colors[*idx], pixel)) ++ break; ++ } ++} ++ ++static struct bltbuf * ++xpm_to_bltbuf(struct xpm *xpm) ++{ ++ struct bltbuf *bltbuf = NULL; ++ position_t pos; ++ ++ if (!(bltbuf = alloc_bltbuf(xpm->width, xpm->height))) ++ return NULL; ++ ++ for (pos.y = 0; pos.y < xpm->height; pos.y++) { ++ for (pos.x = 0; pos.x < xpm->width; pos.x++) { ++ xpm_pixel_t xpl; ++ unsigned char idx; ++ ++ idx = xpm_get_pixel_idx(xpm, pos.x, pos.y); ++ xpm_get_idx(xpm, idx, &xpl); ++ ++ bltbuf_set_pixel_rgb(bltbuf, &pos, xpl.red, xpl.green, xpl.blue); ++ } ++ } ++ ++ return bltbuf; ++} ++ ++static void ++cursor(struct graphics_backend *backend, int set) ++{ ++ struct uga *uga; ++ int ch, invert; ++ unsigned short *text; ++ position_t fpos, screensz; ++ int offset; ++ ++ uga = backend->priv; ++ ++ if (set && !graphics_get_scroll()) ++ return; ++ ++ text = graphics_get_text_buf(); ++ graphics_get_font_position(&fpos); ++ graphics_get_screen_rowscols(&screensz); ++ ++ offset = fpos.y * screensz.x + fpos.x; ++ ++ if (set) ++ text[offset] |= 0x200; ++ ++ graphics_clbl(fpos.x, fpos.y, 1, 1, 1); ++ ++ if (set) ++ text[offset] &= 0xfdff; ++} ++ ++static void blank(struct graphics_backend *backend); ++ ++static void ++reset_screen_geometry(struct graphics_backend *backend) ++{ ++ struct uga *uga = backend->priv; ++ struct xpm *xpm = graphics_get_splash_xpm(); ++ position_t screensz = { .x = 640, .y = 480 }; ++ ++ if (xpm) { ++ screensz.x = xpm->width; ++ screensz.y = xpm->height; ++ } ++ ++ uga->screen_pos.x = ++ (uga->graphics_mode.horizontal_resolution - screensz.x) / 2; ++ uga->screen_pos.y = ++ (uga->graphics_mode.vertical_resolution - screensz.y) / 2; ++ ++ blank(backend); ++ graphics_get_screen_rowscols(&screensz); ++ graphics_clbl(0, 0, screensz.x, screensz.y, 0); ++ graphics_clbl(0, 0, screensz.x, screensz.y, 1); ++} ++ ++static void ++get_screen_size(struct graphics_backend *backend, position_t *size) ++{ ++ struct uga *uga = backend->priv; ++ size->x = uga->graphics_mode.horizontal_resolution; ++ size->y = uga->graphics_mode.vertical_resolution; ++} ++ ++static void ++setxy(struct graphics_backend *backend, position_t *pos) ++{ ++ position_t fpos; ++ ++ fpos.x = pos->x; ++ fpos.y = pos->y; ++ graphics_set_font_position(&fpos); ++} ++ ++static void ++uga_getxy(struct graphics_backend *backend, position_t *pos) ++{ ++ graphics_get_font_position(pos); ++} ++ ++static void ++draw_pixel(struct graphics_backend *backend, position_t *pos, pixel_t *pixel) ++{ ++ struct bltbuf *bltbuf = NULL; ++ grub_efi_uga_pixel_t *eup = (grub_efi_uga_pixel_t *)pixel; ++ ++ bltbuf = alloc_bltbuf(1,1); ++ if (!bltbuf) ++ return; ++ ++ grub_memmove(&bltbuf->pixbuf[0], eup, sizeof (*eup)); ++ ++ blt_to_screen_pos(backend->priv, bltbuf, pos); ++ ++ grub_free(bltbuf); ++} ++ ++static pixel_t * ++get_pixel_idx(struct graphics_backend *backend, int idx) ++{ ++ static grub_efi_uga_pixel_t pixel; ++ struct uga *uga = backend->priv; ++ if (idx < 0 || idx > MAX_PALETTE) ++ return NULL; ++ pixel.red = uga->palette[idx].red; ++ pixel.green = uga->palette[idx].green; ++ pixel.blue = uga->palette[idx].blue; ++ return (pixel_t *)&pixel; ++} ++ ++static pixel_t * ++get_pixel_rgb(struct graphics_backend *backend, int red, int green, int blue) ++{ ++ static grub_efi_uga_pixel_t pixel; ++ rgb_to_pixel(red, green, blue, &pixel); ++ return &pixel; ++} ++ ++static void ++set_palette(struct graphics_backend *backend, int idx, ++ int red, int green, int blue) ++{ ++ grub_efi_uga_pixel_t pixel; ++ struct uga *uga = backend->priv; ++ ++ if (idx > MAX_PALETTE) ++ return; ++ rgb_to_pixel(red, green, blue, &pixel); ++ grub_memmove(&uga->palette[idx], &pixel, sizeof pixel); ++} ++ ++static void ++blank(struct graphics_backend *backend) ++{ ++ struct uga *uga = backend->priv; ++ struct bltbuf *bltbuf; ++ position_t pos = {0, 0}; ++ grub_efi_uintn_t x, y, i, j; ++ unsigned char r = 0 ,g = 0; ++ ++ x = uga->graphics_mode.horizontal_resolution; ++ y = uga->graphics_mode.vertical_resolution; ++ ++ if (x == 0 || y == 0) ++ return; ++ ++ bltbuf = alloc_bltbuf(x, y); ++ for (j = 0; j < y; j++) { ++ if (debug_graphics && j % 16 == 0) { ++ g = g == 0 ? 7 : 0; ++ r = g == 0 ? 7 : 0; ++ } ++ for (i = 0; i < x; i++) { ++ if (debug_graphics && i % 16 == 0) { ++ g = g == 0 ? 7 : 0; ++ r = g == 0 ? 7 : 0; ++ } ++ pos.x = i; ++ pos.y = j; ++ bltbuf_set_pixel_rgb(bltbuf, &pos, r * 16, g * 16, 0x0); ++ } ++ } ++ ++ Call_Service_10(uga->draw_intf->blt, uga->draw_intf, bltbuf->pixbuf, ++ EfiUgaBltBufferToVideo, 0, 0, 0, 0, x, y, 0); ++ ++ grub_free(bltbuf); ++} ++ ++static void ++bltbuf_cp_bl(struct bltbuf *d, position_t dpos, ++ struct bltbuf *s, position_t spos) ++{ ++ grub_efi_uga_pixel_t *dp, *sp; ++ ++ const int xavail = MAX(0, s ? s->width - spos.x : 0); ++ const int xtotal = MAX(0, d->width - dpos.x); ++ const int xcp = MAX(0, MIN(xtotal, xavail)); ++ const int xcl = MAX(0, xtotal - xcp); ++ ++ const int yavail = MAX(0, s ? s->height - spos.y : 0); ++ const int ytotal = MAX(0, d->height - dpos.y); ++ const int ycp = MAX(0, MIN(ytotal, yavail)); ++ const int ycl = MAX(0, ytotal - ycp); ++ ++ int y, x; ++ ++ for (y = 0; y < ytotal; y++) { ++ dp = &d->pixbuf[(dpos.y + y) * d->width + dpos.x]; ++ ++ if (y < yavail) { ++ sp = &s->pixbuf[(spos.y + y) * s->width + spos.x]; ++ memmove(dp, sp, xcp * sizeof (*dp)); ++ dp = &d->pixbuf[(dpos.y + y) * d->width + dpos.x + xcp]; ++ memset(dp, '\0', xcl * sizeof (*dp)); ++ } else { ++ memset(dp, '\0', xtotal * sizeof (*dp)); ++ } ++ } ++} ++ ++/* copy a region the size of bltbuf from the background into bltbuf, ++ * starting at offset bgpos ++ */ ++static void ++bltbuf_draw_bg(struct graphics_backend *backend, struct bltbuf *bltbuf, ++ position_t bgpos) ++{ ++ struct uga *uga = backend->priv; ++ position_t blpos = { 0, 0 }; ++ ++ bltbuf_cp_bl(bltbuf, blpos, uga->background, bgpos); ++} ++ ++static void ++dbg_dump_palette(struct graphics_backend *backend) ++{ ++ struct uga *uga; ++ int i; ++ if (!backend || !backend->priv) ++ return; ++ uga = backend->priv; ++ if (!uga->palette) ++ return; ++} ++ ++static int ++is_shadow_pixel(position_t screensz, position_t textpos, position_t bitpos, ++ position_t fontsz) ++{ ++ unsigned short *text = graphics_get_text_buf(); ++ const unsigned char *glyph; ++ position_t glyphpos = { textpos.x, textpos.y }; ++ position_t glyphbit = { bitpos.x, bitpos.y }; ++ unsigned short ch; ++ ++ if (glyphbit.x == 0) { ++ glyphbit.x = fontsz.x; ++ glyphpos.x--; ++ } ++ if (glyphbit.y == 0) { ++ glyphbit.y = fontsz.y; ++ glyphpos.y--; ++ } ++ glyphbit.x--; ++ glyphbit.y--; ++ ++ if (glyphpos.x < 0 || glyphpos.y < 0) ++ return 0; ++ ++ ch = text[glyphpos.y * screensz.x + glyphpos.x] & 0xff; ++ glyph = font8x16 + (ch << 4); ++ return glyph[glyphbit.y] & (1 << ((fontsz.x-1) - glyphbit.x)); ++} ++ ++static void ++bltbuf_draw_character(struct graphics_backend *backend, ++ struct bltbuf *bltbuf, /* the bltbuf to draw into */ ++ position_t target, /* the position in the bltbuf to draw to */ ++ position_t fontsz, /* the size of the font, in pixels */ ++ position_t charpos, /* the position of the character in the text ++ screen buffer */ ++ position_t screensz, /* the size of the screen in characters */ ++ unsigned short ch /* the character to draw, plus flags */ ++ ) ++{ ++ struct uga *uga = backend->priv; ++ position_t blpos; ++ position_t glyphpos; ++ ++ blpos.y = target.y; ++ for (glyphpos.y = 0; glyphpos.y < fontsz.y; glyphpos.y++, blpos.y++) { ++ blpos.x = target.x; ++ for (glyphpos.x = 0; glyphpos.x < fontsz.x; glyphpos.x++, blpos.x++) { ++ int invert = (ch & 0x0100) != 0; ++ int set = (ch & 0x0200) != 0; ++ const unsigned char *glyph = font8x16 + ((ch & 0xff) << 4); ++ int bit = glyph[glyphpos.y] & (1 << ((fontsz.x-1) - glyphpos.x)); ++ int idx = -1; ++ ++ if (!set) { ++ if (invert) ++ idx = bit ? 0 : 15; ++ else if (bit) ++ idx = 15; ++ ++ if (idx == -1) { ++ if (is_shadow_pixel(screensz, charpos, glyphpos, fontsz) || ++ !uga->background) ++ idx = invert ? 15 : 0; ++ } ++ } else { ++ idx = bit ? 0 : 15; ++ } ++ ++ if (idx != -1) ++ bltbuf_set_pixel_idx(uga, bltbuf, &blpos, idx); ++ } ++ } ++} ++ ++static void ++bltbuf_draw_text(struct graphics_backend *backend, ++ struct bltbuf *bltbuf, /* the buffer to draw into */ ++ position_t screensz, /* the size of the screen in characters */ ++ position_t fontsz, /* the size of the font in pixels */ ++ position_t txtpos, /* the position of the text on the screen ++ (in characters) */ ++ position_t txtsz /* the size of the block to fill in ++ (in characters) */ ++ ) ++{ ++ struct uga *uga = backend->priv; ++ unsigned short *text = graphics_get_text_buf(); ++ position_t charpos; ++ ++ for (charpos.y = txtpos.y; charpos.y < txtpos.y + txtsz.y; charpos.y++) { ++ for (charpos.x = txtpos.x; charpos.x < txtpos.x + txtsz.x; charpos.x++){ ++ int offset = charpos.y * screensz.x + charpos.x; ++ position_t blpos = { (charpos.x-txtpos.x)*fontsz.x, ++ (charpos.y-txtpos.y)*fontsz.y }; ++ ++ bltbuf_draw_character(backend, bltbuf, blpos, fontsz, charpos, ++ screensz, text[offset]); ++ } ++ } ++} ++ ++static void ++clbl(struct graphics_backend *backend, int col, int row, int width, int height, ++ int draw_text) ++{ ++ struct uga *uga = backend->priv; ++ struct xpm *xpm; ++ ++ struct bltbuf *bltbuf; ++ position_t fontsz, blpos, blsz, screensz; ++ unsigned short *text; ++ ++// blank(backend); ++// ++ xpm = graphics_get_splash_xpm(); ++ if (xpm && !uga->background) ++ uga->background = xpm_to_bltbuf(xpm); ++ ++ graphics_get_screen_rowscols(&screensz); ++ width = MIN(width, screensz.x - col); ++ height = MIN(height, screensz.y - row); ++ graphics_get_font_size(&fontsz); ++ ++ blsz.x = width * fontsz.x; ++ blsz.y = height * fontsz.y; ++ ++ bltbuf = alloc_bltbuf(blsz.x, blsz.y); ++ if (!bltbuf) ++ return; ++ ++ blsz.x = col * fontsz.x; ++ blsz.y = row * fontsz.y; ++ ++ text = graphics_get_text_buf(); ++ bltbuf_draw_bg(backend, bltbuf, blsz); ++ ++ if (draw_text) { ++ blsz.x = width; ++ blsz.y = height; ++ blpos.x = col; ++ blpos.y = row; ++ ++ bltbuf_draw_text(backend, bltbuf, screensz, fontsz, blpos, blsz); ++ } ++ ++ blpos.x = col * fontsz.x; ++ blpos.y = row * fontsz.y; ++ ++ blt_to_screen_pos(uga, bltbuf, &blpos); ++} ++ ++static void ++setup_cga_palette(void) ++{ ++/* ++ * Nov 27 15:53:19 <pjones> ping? ++ * Nov 27 15:54:13 <ajax> pong? ++ * Nov 27 15:54:16 <pjones> say I've got a color channel in 6 bits, and it's ++ * stored in an 8-bit value. let's call it white. ++ * now let's say I've got hardware with 8 bits per ++ * channel that I'm blitting to. What's the right ++ * way to expand 0x3f to 0xff? ++ * Nov 27 15:55:17 <pjones> (my naive idea, which I haven't tried yet, is ++ * "x <<= 2; if (x) x |= 3;") ++ * Nov 27 15:55:35 <ajax> no. ++ * Nov 27 15:55:43 <pjones> yeah, figured I'd ask instead of doing that. ++ * Nov 27 15:56:15 <ajax> x <<= 2; x |= ((x & 0xc0) >> 6); ++ */ ++ int i; ++ for (i = 0; i < n_cga_colors; i++) { ++ grub_efi_uga_pixel_t *pixel = &cga_colors[i]; ++ ++ if ((pixel->red | pixel->green | pixel->blue) & 0xc0) ++ continue; ++ pixel->red <<= 2; ++ pixel->red |= ((pixel->red & 0xc0) >> 6); ++ pixel->red &= 0xff; ++ pixel->green <<= 2; ++ pixel->green |= ((pixel->green & 0xc0) >> 6); ++ pixel->green &= 0xff; ++ pixel->blue <<= 2; ++ pixel->blue |= ((pixel->blue & 0xc0) >> 6); ++ pixel->blue &= 0xff; ++ } ++} ++ ++static int ++try_enable(struct graphics_backend *backend) ++{ ++ struct uga *uga = backend->priv; ++ struct video_mode modes[] = { ++ { 1440, 900, 32, 60 }, ++ { 640, 480, 32, 60 }, ++ { 800, 600, 32, 60 }, ++ { 640, 480, 16, 60 }, ++ { 800, 600, 16, 60 }, ++ { 640, 480, 8, 60 }, ++ { 800, 600, 8, 60 } ++ }; ++ struct video_mode mode; ++ position_t font_size; ++ int i; ++ ++ if (uga->text_mode.horizontal_resolution == 0) { ++ grub_efi_set_text_mode(1); ++ save_video_mode(uga, &uga->text_mode); ++ } ++ ++ if (uga->graphics_mode.horizontal_resolution == 0) { ++ grub_efi_set_text_mode(0); ++ save_video_mode(uga, &uga->graphics_mode); ++ ++ if (cmp_video_modes(&uga->graphics_mode, &modes[0]) >= 0) { ++ uga->current_mode = GRAPHICS; ++ graphics_alloc_text_buf(); ++ return 1; ++ } ++ for (i = 0; i < sizeof (modes) / sizeof (modes[0]); i++) { ++ set_video_mode(uga, &modes[i]); ++ save_video_mode(uga, &mode); ++ if (!cmp_video_modes(&modes[i], &mode)) { ++ grub_memmove(&uga->graphics_mode, &mode, sizeof (mode)); ++ uga->current_mode = GRAPHICS; ++ graphics_alloc_text_buf(); ++ return 1; ++ } ++ } ++ set_video_mode(uga, &uga->graphics_mode); ++ save_video_mode(uga, &mode); ++ if (!cmp_video_modes(&uga->graphics_mode, &mode)) { ++ uga->current_mode = GRAPHICS; ++ graphics_alloc_text_buf(); ++ return 1; ++ } ++ grub_efi_set_text_mode(1); ++ return 0; ++ } ++ set_video_mode(uga, &uga->graphics_mode); ++ ++ uga->current_mode = GRAPHICS; ++ return 1; ++} ++ ++static int ++enable(struct graphics_backend *backend) ++{ ++ struct uga *uga = backend->priv; ++ grub_efi_handle_t *handle, *handles; ++ grub_efi_uintn_t num_handles; ++ grub_efi_pci_io_t *pci_proto; ++ int i; ++ ++ if (uga) { ++ if (uga->current_mode == GRAPHICS) { ++ return 1; ++ } ++ } else { ++ if (!(uga = grub_malloc(sizeof (*uga)))) { ++ return 0; ++ } ++ grub_memset(uga, '\0', sizeof (*uga)); ++ ++ uga->current_mode = TEXT; ++ ++ handles = grub_efi_locate_handle (GRUB_EFI_BY_PROTOCOL, ++ &draw_guid, NULL, &num_handles); ++ ++ if (!num_handles || !handles) ++ { ++ grub_free(uga); ++ return 0; ++ } ++ ++ for (handle = handles; num_handles--; handle++) ++ { ++ pci_proto = grub_efi_open_protocol (*handle, &pci_io_guid, ++ GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL); ++ ++ if (!pci_proto) ++ continue; ++ ++ uga->draw_intf = grub_efi_open_protocol (*handle, &draw_guid, ++ GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL); ++ ++ if (uga->draw_intf) ++ { ++ grub_efi_setup_gfx_pci(*handle); ++ break; ++ } ++ } ++ ++ grub_free(handles); ++ ++ if (!uga->draw_intf) ++ uga->draw_intf = grub_efi_locate_protocol(&draw_guid, NULL); ++ ++ if (!uga->draw_intf) { ++ grub_free(uga); ++ return 0; ++ } ++ grub_memset(&uga->graphics_mode, '\0', sizeof (uga->graphics_mode)); ++ grub_memset(&uga->text_mode, '\0', sizeof (uga->text_mode)); ++ backend->priv = uga; ++ ++ setup_cga_palette(); ++ for (i = 0; i < n_cga_colors; i++) { ++ uga->palette[i].red = cga_colors[i].red; ++ uga->palette[i].green = cga_colors[i].green; ++ uga->palette[i].blue = cga_colors[i].blue; ++ } ++ } ++ ++ if (try_enable(backend)) { ++ reset_screen_geometry(backend); ++ return 1; ++ } ++ ++ backend->priv = NULL; ++ grub_free(uga); ++ return 0; ++} ++ ++static void disable(struct graphics_backend *backend) ++{ ++ struct uga *uga; ++ ++ if (!backend) ++ return; ++ ++ uga = backend->priv; ++ if (!uga || uga->current_mode != GRAPHICS) ++ return; ++ ++#if 0 ++ blank(backend); ++ ++ set_video_mode(uga, &uga->text_mode); ++ grub_efi_set_text_mode(1); ++#endif ++ uga->current_mode = TEXT; ++} ++ ++struct graphics_backend uga_backend = { ++ .name = "uga", ++ .enable = enable, ++ .disable = disable, ++ .set_kernel_params = set_kernel_params, ++ .clbl = clbl, ++ .set_palette = set_palette, ++ .get_pixel_idx = get_pixel_idx, ++ .get_pixel_rgb = get_pixel_rgb, ++ .draw_pixel = draw_pixel, ++ .reset_screen_geometry = reset_screen_geometry, ++ .get_screen_size = get_screen_size, ++ .getxy = uga_getxy, ++ .setxy = setxy, ++ .gotoxy = NULL, ++ .cursor = cursor, ++}; ++ ++#endif /* SUPPORT_GRAPHICS */ +diff --git a/efi/font_8x16.c b/efi/font_8x16.c +new file mode 100644 +index 0000000..94829ec +--- /dev/null ++++ b/efi/font_8x16.c +@@ -0,0 +1,4638 @@ ++/* font_8x16.c - 8x16 font for GRUB/EFI */ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copied from Linux kernel drivers/video/console/font_8x16.c, ++ * which is generated by cpi2fnt. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#ifdef SUPPORT_GRAPHICS ++ ++#define FONTDATAMAX 4096 ++ ++const unsigned char font8x16[FONTDATAMAX] = { ++ ++ /* 0 0x00 '^@' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 1 0x01 '^A' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7e, /* 01111110 */ ++ 0x81, /* 10000001 */ ++ 0xa5, /* 10100101 */ ++ 0x81, /* 10000001 */ ++ 0x81, /* 10000001 */ ++ 0xbd, /* 10111101 */ ++ 0x99, /* 10011001 */ ++ 0x81, /* 10000001 */ ++ 0x81, /* 10000001 */ ++ 0x7e, /* 01111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 2 0x02 '^B' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7e, /* 01111110 */ ++ 0xff, /* 11111111 */ ++ 0xdb, /* 11011011 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xc3, /* 11000011 */ ++ 0xe7, /* 11100111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0x7e, /* 01111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 3 0x03 '^C' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x6c, /* 01101100 */ ++ 0xfe, /* 11111110 */ ++ 0xfe, /* 11111110 */ ++ 0xfe, /* 11111110 */ ++ 0xfe, /* 11111110 */ ++ 0x7c, /* 01111100 */ ++ 0x38, /* 00111000 */ ++ 0x10, /* 00010000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 4 0x04 '^D' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x10, /* 00010000 */ ++ 0x38, /* 00111000 */ ++ 0x7c, /* 01111100 */ ++ 0xfe, /* 11111110 */ ++ 0x7c, /* 01111100 */ ++ 0x38, /* 00111000 */ ++ 0x10, /* 00010000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 5 0x05 '^E' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x3c, /* 00111100 */ ++ 0xe7, /* 11100111 */ ++ 0xe7, /* 11100111 */ ++ 0xe7, /* 11100111 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 6 0x06 '^F' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x7e, /* 01111110 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0x7e, /* 01111110 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 7 0x07 '^G' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x3c, /* 00111100 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 8 0x08 '^H' */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xe7, /* 11100111 */ ++ 0xc3, /* 11000011 */ ++ 0xc3, /* 11000011 */ ++ 0xe7, /* 11100111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ ++ /* 9 0x09 '^I' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x3c, /* 00111100 */ ++ 0x66, /* 01100110 */ ++ 0x42, /* 01000010 */ ++ 0x42, /* 01000010 */ ++ 0x66, /* 01100110 */ ++ 0x3c, /* 00111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 10 0x0a '^J' */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xc3, /* 11000011 */ ++ 0x99, /* 10011001 */ ++ 0xbd, /* 10111101 */ ++ 0xbd, /* 10111101 */ ++ 0x99, /* 10011001 */ ++ 0xc3, /* 11000011 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ ++ /* 11 0x0b '^K' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x1e, /* 00011110 */ ++ 0x0e, /* 00001110 */ ++ 0x1a, /* 00011010 */ ++ 0x32, /* 00110010 */ ++ 0x78, /* 01111000 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0x78, /* 01111000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 12 0x0c '^L' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x3c, /* 00111100 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x3c, /* 00111100 */ ++ 0x18, /* 00011000 */ ++ 0x7e, /* 01111110 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 13 0x0d '^M' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x3f, /* 00111111 */ ++ 0x33, /* 00110011 */ ++ 0x3f, /* 00111111 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x70, /* 01110000 */ ++ 0xf0, /* 11110000 */ ++ 0xe0, /* 11100000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 14 0x0e '^N' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7f, /* 01111111 */ ++ 0x63, /* 01100011 */ ++ 0x7f, /* 01111111 */ ++ 0x63, /* 01100011 */ ++ 0x63, /* 01100011 */ ++ 0x63, /* 01100011 */ ++ 0x63, /* 01100011 */ ++ 0x67, /* 01100111 */ ++ 0xe7, /* 11100111 */ ++ 0xe6, /* 11100110 */ ++ 0xc0, /* 11000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 15 0x0f '^O' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0xdb, /* 11011011 */ ++ 0x3c, /* 00111100 */ ++ 0xe7, /* 11100111 */ ++ 0x3c, /* 00111100 */ ++ 0xdb, /* 11011011 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 16 0x10 '^P' */ ++ 0x00, /* 00000000 */ ++ 0x80, /* 10000000 */ ++ 0xc0, /* 11000000 */ ++ 0xe0, /* 11100000 */ ++ 0xf0, /* 11110000 */ ++ 0xf8, /* 11111000 */ ++ 0xfe, /* 11111110 */ ++ 0xf8, /* 11111000 */ ++ 0xf0, /* 11110000 */ ++ 0xe0, /* 11100000 */ ++ 0xc0, /* 11000000 */ ++ 0x80, /* 10000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 17 0x11 '^Q' */ ++ 0x00, /* 00000000 */ ++ 0x02, /* 00000010 */ ++ 0x06, /* 00000110 */ ++ 0x0e, /* 00001110 */ ++ 0x1e, /* 00011110 */ ++ 0x3e, /* 00111110 */ ++ 0xfe, /* 11111110 */ ++ 0x3e, /* 00111110 */ ++ 0x1e, /* 00011110 */ ++ 0x0e, /* 00001110 */ ++ 0x06, /* 00000110 */ ++ 0x02, /* 00000010 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 18 0x12 '^R' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x7e, /* 01111110 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x7e, /* 01111110 */ ++ 0x3c, /* 00111100 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 19 0x13 '^S' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x00, /* 00000000 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 20 0x14 '^T' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7f, /* 01111111 */ ++ 0xdb, /* 11011011 */ ++ 0xdb, /* 11011011 */ ++ 0xdb, /* 11011011 */ ++ 0x7b, /* 01111011 */ ++ 0x1b, /* 00011011 */ ++ 0x1b, /* 00011011 */ ++ 0x1b, /* 00011011 */ ++ 0x1b, /* 00011011 */ ++ 0x1b, /* 00011011 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 21 0x15 '^U' */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0x60, /* 01100000 */ ++ 0x38, /* 00111000 */ ++ 0x6c, /* 01101100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x6c, /* 01101100 */ ++ 0x38, /* 00111000 */ ++ 0x0c, /* 00001100 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 22 0x16 '^V' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfe, /* 11111110 */ ++ 0xfe, /* 11111110 */ ++ 0xfe, /* 11111110 */ ++ 0xfe, /* 11111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 23 0x17 '^W' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x7e, /* 01111110 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x7e, /* 01111110 */ ++ 0x3c, /* 00111100 */ ++ 0x18, /* 00011000 */ ++ 0x7e, /* 01111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 24 0x18 '^X' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x7e, /* 01111110 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 25 0x19 '^Y' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x7e, /* 01111110 */ ++ 0x3c, /* 00111100 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 26 0x1a '^Z' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x0c, /* 00001100 */ ++ 0xfe, /* 11111110 */ ++ 0x0c, /* 00001100 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 27 0x1b '^[' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x30, /* 00110000 */ ++ 0x60, /* 01100000 */ ++ 0xfe, /* 11111110 */ ++ 0x60, /* 01100000 */ ++ 0x30, /* 00110000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 28 0x1c '^' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xfe, /* 11111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 29 0x1d '^]' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x28, /* 00101000 */ ++ 0x6c, /* 01101100 */ ++ 0xfe, /* 11111110 */ ++ 0x6c, /* 01101100 */ ++ 0x28, /* 00101000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 30 0x1e '^^' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x10, /* 00010000 */ ++ 0x38, /* 00111000 */ ++ 0x38, /* 00111000 */ ++ 0x7c, /* 01111100 */ ++ 0x7c, /* 01111100 */ ++ 0xfe, /* 11111110 */ ++ 0xfe, /* 11111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 31 0x1f '^_' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfe, /* 11111110 */ ++ 0xfe, /* 11111110 */ ++ 0x7c, /* 01111100 */ ++ 0x7c, /* 01111100 */ ++ 0x38, /* 00111000 */ ++ 0x38, /* 00111000 */ ++ 0x10, /* 00010000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 32 0x20 ' ' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 33 0x21 '!' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x3c, /* 00111100 */ ++ 0x3c, /* 00111100 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 34 0x22 '"' */ ++ 0x00, /* 00000000 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x24, /* 00100100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 35 0x23 '#' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x6c, /* 01101100 */ ++ 0x6c, /* 01101100 */ ++ 0xfe, /* 11111110 */ ++ 0x6c, /* 01101100 */ ++ 0x6c, /* 01101100 */ ++ 0x6c, /* 01101100 */ ++ 0xfe, /* 11111110 */ ++ 0x6c, /* 01101100 */ ++ 0x6c, /* 01101100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 36 0x24 '$' */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xc2, /* 11000010 */ ++ 0xc0, /* 11000000 */ ++ 0x7c, /* 01111100 */ ++ 0x06, /* 00000110 */ ++ 0x06, /* 00000110 */ ++ 0x86, /* 10000110 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 37 0x25 '%' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xc2, /* 11000010 */ ++ 0xc6, /* 11000110 */ ++ 0x0c, /* 00001100 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x60, /* 01100000 */ ++ 0xc6, /* 11000110 */ ++ 0x86, /* 10000110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 38 0x26 '&' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x38, /* 00111000 */ ++ 0x6c, /* 01101100 */ ++ 0x6c, /* 01101100 */ ++ 0x38, /* 00111000 */ ++ 0x76, /* 01110110 */ ++ 0xdc, /* 11011100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0x76, /* 01110110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 39 0x27 ''' */ ++ 0x00, /* 00000000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x60, /* 01100000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 40 0x28 '(' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x0c, /* 00001100 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x18, /* 00011000 */ ++ 0x0c, /* 00001100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 41 0x29 ')' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x30, /* 00110000 */ ++ 0x18, /* 00011000 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 42 0x2a '*' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x66, /* 01100110 */ ++ 0x3c, /* 00111100 */ ++ 0xff, /* 11111111 */ ++ 0x3c, /* 00111100 */ ++ 0x66, /* 01100110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 43 0x2b '+' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x7e, /* 01111110 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 44 0x2c ',' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 45 0x2d '-' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfe, /* 11111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 46 0x2e '.' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 47 0x2f '/' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x02, /* 00000010 */ ++ 0x06, /* 00000110 */ ++ 0x0c, /* 00001100 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x60, /* 01100000 */ ++ 0xc0, /* 11000000 */ ++ 0x80, /* 10000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 48 0x30 '0' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x38, /* 00111000 */ ++ 0x6c, /* 01101100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xd6, /* 11010110 */ ++ 0xd6, /* 11010110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x6c, /* 01101100 */ ++ 0x38, /* 00111000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 49 0x31 '1' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x38, /* 00111000 */ ++ 0x78, /* 01111000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x7e, /* 01111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 50 0x32 '2' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0x06, /* 00000110 */ ++ 0x0c, /* 00001100 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x60, /* 01100000 */ ++ 0xc0, /* 11000000 */ ++ 0xc6, /* 11000110 */ ++ 0xfe, /* 11111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 51 0x33 '3' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0x06, /* 00000110 */ ++ 0x06, /* 00000110 */ ++ 0x3c, /* 00111100 */ ++ 0x06, /* 00000110 */ ++ 0x06, /* 00000110 */ ++ 0x06, /* 00000110 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 52 0x34 '4' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x0c, /* 00001100 */ ++ 0x1c, /* 00011100 */ ++ 0x3c, /* 00111100 */ ++ 0x6c, /* 01101100 */ ++ 0xcc, /* 11001100 */ ++ 0xfe, /* 11111110 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x1e, /* 00011110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 53 0x35 '5' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfe, /* 11111110 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xfc, /* 11111100 */ ++ 0x06, /* 00000110 */ ++ 0x06, /* 00000110 */ ++ 0x06, /* 00000110 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 54 0x36 '6' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x38, /* 00111000 */ ++ 0x60, /* 01100000 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xfc, /* 11111100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 55 0x37 '7' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfe, /* 11111110 */ ++ 0xc6, /* 11000110 */ ++ 0x06, /* 00000110 */ ++ 0x06, /* 00000110 */ ++ 0x0c, /* 00001100 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 56 0x38 '8' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 57 0x39 '9' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x7e, /* 01111110 */ ++ 0x06, /* 00000110 */ ++ 0x06, /* 00000110 */ ++ 0x06, /* 00000110 */ ++ 0x0c, /* 00001100 */ ++ 0x78, /* 01111000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 58 0x3a ':' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 59 0x3b ';' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 60 0x3c '<' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x06, /* 00000110 */ ++ 0x0c, /* 00001100 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x60, /* 01100000 */ ++ 0x30, /* 00110000 */ ++ 0x18, /* 00011000 */ ++ 0x0c, /* 00001100 */ ++ 0x06, /* 00000110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 61 0x3d '=' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7e, /* 01111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7e, /* 01111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 62 0x3e '>' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x60, /* 01100000 */ ++ 0x30, /* 00110000 */ ++ 0x18, /* 00011000 */ ++ 0x0c, /* 00001100 */ ++ 0x06, /* 00000110 */ ++ 0x0c, /* 00001100 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x60, /* 01100000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 63 0x3f '?' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x0c, /* 00001100 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 64 0x40 '@' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xde, /* 11011110 */ ++ 0xde, /* 11011110 */ ++ 0xde, /* 11011110 */ ++ 0xdc, /* 11011100 */ ++ 0xc0, /* 11000000 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 65 0x41 'A' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x10, /* 00010000 */ ++ 0x38, /* 00111000 */ ++ 0x6c, /* 01101100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xfe, /* 11111110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 66 0x42 'B' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfc, /* 11111100 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x7c, /* 01111100 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0xfc, /* 11111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 67 0x43 'C' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x3c, /* 00111100 */ ++ 0x66, /* 01100110 */ ++ 0xc2, /* 11000010 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc2, /* 11000010 */ ++ 0x66, /* 01100110 */ ++ 0x3c, /* 00111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 68 0x44 'D' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xf8, /* 11111000 */ ++ 0x6c, /* 01101100 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x6c, /* 01101100 */ ++ 0xf8, /* 11111000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 69 0x45 'E' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfe, /* 11111110 */ ++ 0x66, /* 01100110 */ ++ 0x62, /* 01100010 */ ++ 0x68, /* 01101000 */ ++ 0x78, /* 01111000 */ ++ 0x68, /* 01101000 */ ++ 0x60, /* 01100000 */ ++ 0x62, /* 01100010 */ ++ 0x66, /* 01100110 */ ++ 0xfe, /* 11111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 70 0x46 'F' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfe, /* 11111110 */ ++ 0x66, /* 01100110 */ ++ 0x62, /* 01100010 */ ++ 0x68, /* 01101000 */ ++ 0x78, /* 01111000 */ ++ 0x68, /* 01101000 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0xf0, /* 11110000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 71 0x47 'G' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x3c, /* 00111100 */ ++ 0x66, /* 01100110 */ ++ 0xc2, /* 11000010 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xde, /* 11011110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x66, /* 01100110 */ ++ 0x3a, /* 00111010 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 72 0x48 'H' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xfe, /* 11111110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 73 0x49 'I' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x3c, /* 00111100 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 74 0x4a 'J' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x1e, /* 00011110 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0x78, /* 01111000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 75 0x4b 'K' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xe6, /* 11100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x6c, /* 01101100 */ ++ 0x78, /* 01111000 */ ++ 0x78, /* 01111000 */ ++ 0x6c, /* 01101100 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0xe6, /* 11100110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 76 0x4c 'L' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xf0, /* 11110000 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0x62, /* 01100010 */ ++ 0x66, /* 01100110 */ ++ 0xfe, /* 11111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 77 0x4d 'M' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xc6, /* 11000110 */ ++ 0xee, /* 11101110 */ ++ 0xfe, /* 11111110 */ ++ 0xfe, /* 11111110 */ ++ 0xd6, /* 11010110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 78 0x4e 'N' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xc6, /* 11000110 */ ++ 0xe6, /* 11100110 */ ++ 0xf6, /* 11110110 */ ++ 0xfe, /* 11111110 */ ++ 0xde, /* 11011110 */ ++ 0xce, /* 11001110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 79 0x4f 'O' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 80 0x50 'P' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfc, /* 11111100 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x7c, /* 01111100 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0xf0, /* 11110000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 81 0x51 'Q' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xd6, /* 11010110 */ ++ 0xde, /* 11011110 */ ++ 0x7c, /* 01111100 */ ++ 0x0c, /* 00001100 */ ++ 0x0e, /* 00001110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 82 0x52 'R' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfc, /* 11111100 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x7c, /* 01111100 */ ++ 0x6c, /* 01101100 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0xe6, /* 11100110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 83 0x53 'S' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x60, /* 01100000 */ ++ 0x38, /* 00111000 */ ++ 0x0c, /* 00001100 */ ++ 0x06, /* 00000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 84 0x54 'T' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7e, /* 01111110 */ ++ 0x7e, /* 01111110 */ ++ 0x5a, /* 01011010 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 85 0x55 'U' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 86 0x56 'V' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x6c, /* 01101100 */ ++ 0x38, /* 00111000 */ ++ 0x10, /* 00010000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 87 0x57 'W' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xd6, /* 11010110 */ ++ 0xd6, /* 11010110 */ ++ 0xd6, /* 11010110 */ ++ 0xfe, /* 11111110 */ ++ 0xee, /* 11101110 */ ++ 0x6c, /* 01101100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 88 0x58 'X' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x6c, /* 01101100 */ ++ 0x7c, /* 01111100 */ ++ 0x38, /* 00111000 */ ++ 0x38, /* 00111000 */ ++ 0x7c, /* 01111100 */ ++ 0x6c, /* 01101100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 89 0x59 'Y' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x3c, /* 00111100 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 90 0x5a 'Z' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfe, /* 11111110 */ ++ 0xc6, /* 11000110 */ ++ 0x86, /* 10000110 */ ++ 0x0c, /* 00001100 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x60, /* 01100000 */ ++ 0xc2, /* 11000010 */ ++ 0xc6, /* 11000110 */ ++ 0xfe, /* 11111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 91 0x5b '[' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x3c, /* 00111100 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x3c, /* 00111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 92 0x5c '' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x80, /* 10000000 */ ++ 0xc0, /* 11000000 */ ++ 0xe0, /* 11100000 */ ++ 0x70, /* 01110000 */ ++ 0x38, /* 00111000 */ ++ 0x1c, /* 00011100 */ ++ 0x0e, /* 00001110 */ ++ 0x06, /* 00000110 */ ++ 0x02, /* 00000010 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 93 0x5d ']' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x3c, /* 00111100 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x3c, /* 00111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 94 0x5e '^' */ ++ 0x10, /* 00010000 */ ++ 0x38, /* 00111000 */ ++ 0x6c, /* 01101100 */ ++ 0xc6, /* 11000110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 95 0x5f '_' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xff, /* 11111111 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 96 0x60 '`' */ ++ 0x00, /* 00000000 */ ++ 0x30, /* 00110000 */ ++ 0x18, /* 00011000 */ ++ 0x0c, /* 00001100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 97 0x61 'a' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x78, /* 01111000 */ ++ 0x0c, /* 00001100 */ ++ 0x7c, /* 01111100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0x76, /* 01110110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 98 0x62 'b' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xe0, /* 11100000 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0x78, /* 01111000 */ ++ 0x6c, /* 01101100 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 99 0x63 'c' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 100 0x64 'd' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x1c, /* 00011100 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x3c, /* 00111100 */ ++ 0x6c, /* 01101100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0x76, /* 01110110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 101 0x65 'e' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xfe, /* 11111110 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 102 0x66 'f' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x1c, /* 00011100 */ ++ 0x36, /* 00110110 */ ++ 0x32, /* 00110010 */ ++ 0x30, /* 00110000 */ ++ 0x78, /* 01111000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x78, /* 01111000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 103 0x67 'g' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x76, /* 01110110 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0x7c, /* 01111100 */ ++ 0x0c, /* 00001100 */ ++ 0xcc, /* 11001100 */ ++ 0x78, /* 01111000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 104 0x68 'h' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xe0, /* 11100000 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0x6c, /* 01101100 */ ++ 0x76, /* 01110110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0xe6, /* 11100110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 105 0x69 'i' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x38, /* 00111000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 106 0x6a 'j' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x06, /* 00000110 */ ++ 0x06, /* 00000110 */ ++ 0x00, /* 00000000 */ ++ 0x0e, /* 00001110 */ ++ 0x06, /* 00000110 */ ++ 0x06, /* 00000110 */ ++ 0x06, /* 00000110 */ ++ 0x06, /* 00000110 */ ++ 0x06, /* 00000110 */ ++ 0x06, /* 00000110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x3c, /* 00111100 */ ++ 0x00, /* 00000000 */ ++ ++ /* 107 0x6b 'k' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xe0, /* 11100000 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0x66, /* 01100110 */ ++ 0x6c, /* 01101100 */ ++ 0x78, /* 01111000 */ ++ 0x78, /* 01111000 */ ++ 0x6c, /* 01101100 */ ++ 0x66, /* 01100110 */ ++ 0xe6, /* 11100110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 108 0x6c 'l' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x38, /* 00111000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 109 0x6d 'm' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xec, /* 11101100 */ ++ 0xfe, /* 11111110 */ ++ 0xd6, /* 11010110 */ ++ 0xd6, /* 11010110 */ ++ 0xd6, /* 11010110 */ ++ 0xd6, /* 11010110 */ ++ 0xc6, /* 11000110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 110 0x6e 'n' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xdc, /* 11011100 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 111 0x6f 'o' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 112 0x70 'p' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xdc, /* 11011100 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x7c, /* 01111100 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0xf0, /* 11110000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 113 0x71 'q' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x76, /* 01110110 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0x7c, /* 01111100 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x1e, /* 00011110 */ ++ 0x00, /* 00000000 */ ++ ++ /* 114 0x72 'r' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xdc, /* 11011100 */ ++ 0x76, /* 01110110 */ ++ 0x66, /* 01100110 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0xf0, /* 11110000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 115 0x73 's' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0x60, /* 01100000 */ ++ 0x38, /* 00111000 */ ++ 0x0c, /* 00001100 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 116 0x74 't' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x10, /* 00010000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0xfc, /* 11111100 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x36, /* 00110110 */ ++ 0x1c, /* 00011100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 117 0x75 'u' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0x76, /* 01110110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 118 0x76 'v' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x6c, /* 01101100 */ ++ 0x38, /* 00111000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 119 0x77 'w' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xd6, /* 11010110 */ ++ 0xd6, /* 11010110 */ ++ 0xd6, /* 11010110 */ ++ 0xfe, /* 11111110 */ ++ 0x6c, /* 01101100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 120 0x78 'x' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xc6, /* 11000110 */ ++ 0x6c, /* 01101100 */ ++ 0x38, /* 00111000 */ ++ 0x38, /* 00111000 */ ++ 0x38, /* 00111000 */ ++ 0x6c, /* 01101100 */ ++ 0xc6, /* 11000110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 121 0x79 'y' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x7e, /* 01111110 */ ++ 0x06, /* 00000110 */ ++ 0x0c, /* 00001100 */ ++ 0xf8, /* 11111000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 122 0x7a 'z' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfe, /* 11111110 */ ++ 0xcc, /* 11001100 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x60, /* 01100000 */ ++ 0xc6, /* 11000110 */ ++ 0xfe, /* 11111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 123 0x7b '{' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x0e, /* 00001110 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x70, /* 01110000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x0e, /* 00001110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 124 0x7c '|' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 125 0x7d '}' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x70, /* 01110000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x0e, /* 00001110 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x70, /* 01110000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 126 0x7e '~' */ ++ 0x00, /* 00000000 */ ++ 0x76, /* 01110110 */ ++ 0xdc, /* 11011100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 127 0x7f '' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x10, /* 00010000 */ ++ 0x38, /* 00111000 */ ++ 0x6c, /* 01101100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xfe, /* 11111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 128 0x80 '' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x3c, /* 00111100 */ ++ 0x66, /* 01100110 */ ++ 0xc2, /* 11000010 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc2, /* 11000010 */ ++ 0x66, /* 01100110 */ ++ 0x3c, /* 00111100 */ ++ 0x18, /* 00011000 */ ++ 0x70, /* 01110000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 129 0x81 '' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xcc, /* 11001100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0x76, /* 01110110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 130 0x82 '' */ ++ 0x00, /* 00000000 */ ++ 0x0c, /* 00001100 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xfe, /* 11111110 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 131 0x83 '' */ ++ 0x00, /* 00000000 */ ++ 0x10, /* 00010000 */ ++ 0x38, /* 00111000 */ ++ 0x6c, /* 01101100 */ ++ 0x00, /* 00000000 */ ++ 0x78, /* 01111000 */ ++ 0x0c, /* 00001100 */ ++ 0x7c, /* 01111100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0x76, /* 01110110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 132 0x84 '' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xcc, /* 11001100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x78, /* 01111000 */ ++ 0x0c, /* 00001100 */ ++ 0x7c, /* 01111100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0x76, /* 01110110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 133 0x85 ' ' */ ++ 0x00, /* 00000000 */ ++ 0x60, /* 01100000 */ ++ 0x30, /* 00110000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x78, /* 01111000 */ ++ 0x0c, /* 00001100 */ ++ 0x7c, /* 01111100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0x76, /* 01110110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 134 0x86 '' */ ++ 0x00, /* 00000000 */ ++ 0x38, /* 00111000 */ ++ 0x6c, /* 01101100 */ ++ 0x38, /* 00111000 */ ++ 0x00, /* 00000000 */ ++ 0x78, /* 01111000 */ ++ 0x0c, /* 00001100 */ ++ 0x7c, /* 01111100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0x76, /* 01110110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 135 0x87 '' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x18, /* 00011000 */ ++ 0x70, /* 01110000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 136 0x88 '' */ ++ 0x00, /* 00000000 */ ++ 0x10, /* 00010000 */ ++ 0x38, /* 00111000 */ ++ 0x6c, /* 01101100 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xfe, /* 11111110 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 137 0x89 '' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xc6, /* 11000110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xfe, /* 11111110 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 138 0x8a '' */ ++ 0x00, /* 00000000 */ ++ 0x60, /* 01100000 */ ++ 0x30, /* 00110000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xfe, /* 11111110 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 139 0x8b '' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x66, /* 01100110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x38, /* 00111000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 140 0x8c '' */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x66, /* 01100110 */ ++ 0x00, /* 00000000 */ ++ 0x38, /* 00111000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 141 0x8d '' */ ++ 0x00, /* 00000000 */ ++ 0x60, /* 01100000 */ ++ 0x30, /* 00110000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x38, /* 00111000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 142 0x8e '' */ ++ 0x00, /* 00000000 */ ++ 0xc6, /* 11000110 */ ++ 0x00, /* 00000000 */ ++ 0x10, /* 00010000 */ ++ 0x38, /* 00111000 */ ++ 0x6c, /* 01101100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xfe, /* 11111110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 143 0x8f '' */ ++ 0x38, /* 00111000 */ ++ 0x6c, /* 01101100 */ ++ 0x38, /* 00111000 */ ++ 0x10, /* 00010000 */ ++ 0x38, /* 00111000 */ ++ 0x6c, /* 01101100 */ ++ 0xc6, /* 11000110 */ ++ 0xfe, /* 11111110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 144 0x90 '' */ ++ 0x0c, /* 00001100 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0xfe, /* 11111110 */ ++ 0x66, /* 01100110 */ ++ 0x62, /* 01100010 */ ++ 0x68, /* 01101000 */ ++ 0x78, /* 01111000 */ ++ 0x68, /* 01101000 */ ++ 0x62, /* 01100010 */ ++ 0x66, /* 01100110 */ ++ 0xfe, /* 11111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 145 0x91 '' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xec, /* 11101100 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x7e, /* 01111110 */ ++ 0xd8, /* 11011000 */ ++ 0xd8, /* 11011000 */ ++ 0x6e, /* 01101110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 146 0x92 '' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x3e, /* 00111110 */ ++ 0x6c, /* 01101100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xfe, /* 11111110 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xce, /* 11001110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 147 0x93 '' */ ++ 0x00, /* 00000000 */ ++ 0x10, /* 00010000 */ ++ 0x38, /* 00111000 */ ++ 0x6c, /* 01101100 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 148 0x94 '' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xc6, /* 11000110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 149 0x95 '' */ ++ 0x00, /* 00000000 */ ++ 0x60, /* 01100000 */ ++ 0x30, /* 00110000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 150 0x96 '' */ ++ 0x00, /* 00000000 */ ++ 0x30, /* 00110000 */ ++ 0x78, /* 01111000 */ ++ 0xcc, /* 11001100 */ ++ 0x00, /* 00000000 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0x76, /* 01110110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 151 0x97 '' */ ++ 0x00, /* 00000000 */ ++ 0x60, /* 01100000 */ ++ 0x30, /* 00110000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0x76, /* 01110110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 152 0x98 '' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xc6, /* 11000110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x7e, /* 01111110 */ ++ 0x06, /* 00000110 */ ++ 0x0c, /* 00001100 */ ++ 0x78, /* 01111000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 153 0x99 '' */ ++ 0x00, /* 00000000 */ ++ 0xc6, /* 11000110 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 154 0x9a '' */ ++ 0x00, /* 00000000 */ ++ 0xc6, /* 11000110 */ ++ 0x00, /* 00000000 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 155 0x9b '' */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 156 0x9c '' */ ++ 0x00, /* 00000000 */ ++ 0x38, /* 00111000 */ ++ 0x6c, /* 01101100 */ ++ 0x64, /* 01100100 */ ++ 0x60, /* 01100000 */ ++ 0xf0, /* 11110000 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0xe6, /* 11100110 */ ++ 0xfc, /* 11111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 157 0x9d '' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x3c, /* 00111100 */ ++ 0x18, /* 00011000 */ ++ 0x7e, /* 01111110 */ ++ 0x18, /* 00011000 */ ++ 0x7e, /* 01111110 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 158 0x9e '' */ ++ 0x00, /* 00000000 */ ++ 0xf8, /* 11111000 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xf8, /* 11111000 */ ++ 0xc4, /* 11000100 */ ++ 0xcc, /* 11001100 */ ++ 0xde, /* 11011110 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xc6, /* 11000110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 159 0x9f '' */ ++ 0x00, /* 00000000 */ ++ 0x0e, /* 00001110 */ ++ 0x1b, /* 00011011 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x7e, /* 01111110 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0xd8, /* 11011000 */ ++ 0x70, /* 01110000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 160 0xa0 ' ' */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x60, /* 01100000 */ ++ 0x00, /* 00000000 */ ++ 0x78, /* 01111000 */ ++ 0x0c, /* 00001100 */ ++ 0x7c, /* 01111100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0x76, /* 01110110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 161 0xa1 '¡' */ ++ 0x00, /* 00000000 */ ++ 0x0c, /* 00001100 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x00, /* 00000000 */ ++ 0x38, /* 00111000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 162 0xa2 '¢' */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x60, /* 01100000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 163 0xa3 '£' */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x60, /* 01100000 */ ++ 0x00, /* 00000000 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0x76, /* 01110110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 164 0xa4 '€' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x76, /* 01110110 */ ++ 0xdc, /* 11011100 */ ++ 0x00, /* 00000000 */ ++ 0xdc, /* 11011100 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 165 0xa5 '¥' */ ++ 0x76, /* 01110110 */ ++ 0xdc, /* 11011100 */ ++ 0x00, /* 00000000 */ ++ 0xc6, /* 11000110 */ ++ 0xe6, /* 11100110 */ ++ 0xf6, /* 11110110 */ ++ 0xfe, /* 11111110 */ ++ 0xde, /* 11011110 */ ++ 0xce, /* 11001110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 166 0xa6 'Š' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x3c, /* 00111100 */ ++ 0x6c, /* 01101100 */ ++ 0x6c, /* 01101100 */ ++ 0x3e, /* 00111110 */ ++ 0x00, /* 00000000 */ ++ 0x7e, /* 01111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 167 0xa7 '§' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x38, /* 00111000 */ ++ 0x6c, /* 01101100 */ ++ 0x6c, /* 01101100 */ ++ 0x38, /* 00111000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 168 0xa8 'š' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x00, /* 00000000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x60, /* 01100000 */ ++ 0xc0, /* 11000000 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 169 0xa9 '©' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfe, /* 11111110 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 170 0xaa 'ª' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfe, /* 11111110 */ ++ 0x06, /* 00000110 */ ++ 0x06, /* 00000110 */ ++ 0x06, /* 00000110 */ ++ 0x06, /* 00000110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 171 0xab '«' */ ++ 0x00, /* 00000000 */ ++ 0x60, /* 01100000 */ ++ 0xe0, /* 11100000 */ ++ 0x62, /* 01100010 */ ++ 0x66, /* 01100110 */ ++ 0x6c, /* 01101100 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x60, /* 01100000 */ ++ 0xdc, /* 11011100 */ ++ 0x86, /* 10000110 */ ++ 0x0c, /* 00001100 */ ++ 0x18, /* 00011000 */ ++ 0x3e, /* 00111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 172 0xac '¬' */ ++ 0x00, /* 00000000 */ ++ 0x60, /* 01100000 */ ++ 0xe0, /* 11100000 */ ++ 0x62, /* 01100010 */ ++ 0x66, /* 01100110 */ ++ 0x6c, /* 01101100 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x66, /* 01100110 */ ++ 0xce, /* 11001110 */ ++ 0x9a, /* 10011010 */ ++ 0x3f, /* 00111111 */ ++ 0x06, /* 00000110 */ ++ 0x06, /* 00000110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 173 0xad '' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x3c, /* 00111100 */ ++ 0x3c, /* 00111100 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 174 0xae '®' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x36, /* 00110110 */ ++ 0x6c, /* 01101100 */ ++ 0xd8, /* 11011000 */ ++ 0x6c, /* 01101100 */ ++ 0x36, /* 00110110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 175 0xaf '¯' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xd8, /* 11011000 */ ++ 0x6c, /* 01101100 */ ++ 0x36, /* 00110110 */ ++ 0x6c, /* 01101100 */ ++ 0xd8, /* 11011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 176 0xb0 '°' */ ++ 0x11, /* 00010001 */ ++ 0x44, /* 01000100 */ ++ 0x11, /* 00010001 */ ++ 0x44, /* 01000100 */ ++ 0x11, /* 00010001 */ ++ 0x44, /* 01000100 */ ++ 0x11, /* 00010001 */ ++ 0x44, /* 01000100 */ ++ 0x11, /* 00010001 */ ++ 0x44, /* 01000100 */ ++ 0x11, /* 00010001 */ ++ 0x44, /* 01000100 */ ++ 0x11, /* 00010001 */ ++ 0x44, /* 01000100 */ ++ 0x11, /* 00010001 */ ++ 0x44, /* 01000100 */ ++ ++ /* 177 0xb1 '±' */ ++ 0x55, /* 01010101 */ ++ 0xaa, /* 10101010 */ ++ 0x55, /* 01010101 */ ++ 0xaa, /* 10101010 */ ++ 0x55, /* 01010101 */ ++ 0xaa, /* 10101010 */ ++ 0x55, /* 01010101 */ ++ 0xaa, /* 10101010 */ ++ 0x55, /* 01010101 */ ++ 0xaa, /* 10101010 */ ++ 0x55, /* 01010101 */ ++ 0xaa, /* 10101010 */ ++ 0x55, /* 01010101 */ ++ 0xaa, /* 10101010 */ ++ 0x55, /* 01010101 */ ++ 0xaa, /* 10101010 */ ++ ++ /* 178 0xb2 '²' */ ++ 0xdd, /* 11011101 */ ++ 0x77, /* 01110111 */ ++ 0xdd, /* 11011101 */ ++ 0x77, /* 01110111 */ ++ 0xdd, /* 11011101 */ ++ 0x77, /* 01110111 */ ++ 0xdd, /* 11011101 */ ++ 0x77, /* 01110111 */ ++ 0xdd, /* 11011101 */ ++ 0x77, /* 01110111 */ ++ 0xdd, /* 11011101 */ ++ 0x77, /* 01110111 */ ++ 0xdd, /* 11011101 */ ++ 0x77, /* 01110111 */ ++ 0xdd, /* 11011101 */ ++ 0x77, /* 01110111 */ ++ ++ /* 179 0xb3 '³' */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ ++ /* 180 0xb4 'Ž' */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0xf8, /* 11111000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ ++ /* 181 0xb5 'µ' */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0xf8, /* 11111000 */ ++ 0x18, /* 00011000 */ ++ 0xf8, /* 11111000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ ++ /* 182 0xb6 '¶' */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0xf6, /* 11110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ ++ /* 183 0xb7 '·' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfe, /* 11111110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ ++ /* 184 0xb8 'ž' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xf8, /* 11111000 */ ++ 0x18, /* 00011000 */ ++ 0xf8, /* 11111000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ ++ /* 185 0xb9 '¹' */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0xf6, /* 11110110 */ ++ 0x06, /* 00000110 */ ++ 0xf6, /* 11110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ ++ /* 186 0xba 'º' */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ ++ /* 187 0xbb '»' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfe, /* 11111110 */ ++ 0x06, /* 00000110 */ ++ 0xf6, /* 11110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ ++ /* 188 0xbc 'Œ' */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0xf6, /* 11110110 */ ++ 0x06, /* 00000110 */ ++ 0xfe, /* 11111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 189 0xbd 'œ' */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0xfe, /* 11111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 190 0xbe 'Ÿ' */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0xf8, /* 11111000 */ ++ 0x18, /* 00011000 */ ++ 0xf8, /* 11111000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 191 0xbf '¿' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xf8, /* 11111000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ ++ /* 192 0xc0 'À' */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x1f, /* 00011111 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 193 0xc1 'Á' */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0xff, /* 11111111 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 194 0xc2 'Â' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xff, /* 11111111 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ ++ /* 195 0xc3 'Ã' */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x1f, /* 00011111 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ ++ /* 196 0xc4 'Ä' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xff, /* 11111111 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 197 0xc5 'Å' */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0xff, /* 11111111 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ ++ /* 198 0xc6 'Æ' */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x1f, /* 00011111 */ ++ 0x18, /* 00011000 */ ++ 0x1f, /* 00011111 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ ++ /* 199 0xc7 'Ç' */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x37, /* 00110111 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ ++ /* 200 0xc8 'È' */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x37, /* 00110111 */ ++ 0x30, /* 00110000 */ ++ 0x3f, /* 00111111 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 201 0xc9 'É' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x3f, /* 00111111 */ ++ 0x30, /* 00110000 */ ++ 0x37, /* 00110111 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ ++ /* 202 0xca 'Ê' */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0xf7, /* 11110111 */ ++ 0x00, /* 00000000 */ ++ 0xff, /* 11111111 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 203 0xcb 'Ë' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xff, /* 11111111 */ ++ 0x00, /* 00000000 */ ++ 0xf7, /* 11110111 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ ++ /* 204 0xcc 'Ì' */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x37, /* 00110111 */ ++ 0x30, /* 00110000 */ ++ 0x37, /* 00110111 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ ++ /* 205 0xcd 'Í' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xff, /* 11111111 */ ++ 0x00, /* 00000000 */ ++ 0xff, /* 11111111 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 206 0xce 'Î' */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0xf7, /* 11110111 */ ++ 0x00, /* 00000000 */ ++ 0xf7, /* 11110111 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ ++ /* 207 0xcf 'Ï' */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0xff, /* 11111111 */ ++ 0x00, /* 00000000 */ ++ 0xff, /* 11111111 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 208 0xd0 'Ð' */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0xff, /* 11111111 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 209 0xd1 'Ñ' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xff, /* 11111111 */ ++ 0x00, /* 00000000 */ ++ 0xff, /* 11111111 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ ++ /* 210 0xd2 'Ò' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xff, /* 11111111 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ ++ /* 211 0xd3 'Ó' */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x3f, /* 00111111 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 212 0xd4 'Ô' */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x1f, /* 00011111 */ ++ 0x18, /* 00011000 */ ++ 0x1f, /* 00011111 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 213 0xd5 'Õ' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x1f, /* 00011111 */ ++ 0x18, /* 00011000 */ ++ 0x1f, /* 00011111 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ ++ /* 214 0xd6 'Ö' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x3f, /* 00111111 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ ++ /* 215 0xd7 '×' */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0xff, /* 11111111 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ ++ /* 216 0xd8 'Ø' */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0xff, /* 11111111 */ ++ 0x18, /* 00011000 */ ++ 0xff, /* 11111111 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ ++ /* 217 0xd9 'Ù' */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0xf8, /* 11111000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 218 0xda 'Ú' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x1f, /* 00011111 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ ++ /* 219 0xdb 'Û' */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ ++ /* 220 0xdc 'Ü' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ ++ /* 221 0xdd 'Ý' */ ++ 0xf0, /* 11110000 */ ++ 0xf0, /* 11110000 */ ++ 0xf0, /* 11110000 */ ++ 0xf0, /* 11110000 */ ++ 0xf0, /* 11110000 */ ++ 0xf0, /* 11110000 */ ++ 0xf0, /* 11110000 */ ++ 0xf0, /* 11110000 */ ++ 0xf0, /* 11110000 */ ++ 0xf0, /* 11110000 */ ++ 0xf0, /* 11110000 */ ++ 0xf0, /* 11110000 */ ++ 0xf0, /* 11110000 */ ++ 0xf0, /* 11110000 */ ++ 0xf0, /* 11110000 */ ++ 0xf0, /* 11110000 */ ++ ++ /* 222 0xde 'Þ' */ ++ 0x0f, /* 00001111 */ ++ 0x0f, /* 00001111 */ ++ 0x0f, /* 00001111 */ ++ 0x0f, /* 00001111 */ ++ 0x0f, /* 00001111 */ ++ 0x0f, /* 00001111 */ ++ 0x0f, /* 00001111 */ ++ 0x0f, /* 00001111 */ ++ 0x0f, /* 00001111 */ ++ 0x0f, /* 00001111 */ ++ 0x0f, /* 00001111 */ ++ 0x0f, /* 00001111 */ ++ 0x0f, /* 00001111 */ ++ 0x0f, /* 00001111 */ ++ 0x0f, /* 00001111 */ ++ 0x0f, /* 00001111 */ ++ ++ /* 223 0xdf 'ß' */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 224 0xe0 'à' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x76, /* 01110110 */ ++ 0xdc, /* 11011100 */ ++ 0xd8, /* 11011000 */ ++ 0xd8, /* 11011000 */ ++ 0xd8, /* 11011000 */ ++ 0xdc, /* 11011100 */ ++ 0x76, /* 01110110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 225 0xe1 'á' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x78, /* 01111000 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xd8, /* 11011000 */ ++ 0xcc, /* 11001100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xcc, /* 11001100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 226 0xe2 'â' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfe, /* 11111110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 227 0xe3 'ã' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfe, /* 11111110 */ ++ 0x6c, /* 01101100 */ ++ 0x6c, /* 01101100 */ ++ 0x6c, /* 01101100 */ ++ 0x6c, /* 01101100 */ ++ 0x6c, /* 01101100 */ ++ 0x6c, /* 01101100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 228 0xe4 'ä' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfe, /* 11111110 */ ++ 0xc6, /* 11000110 */ ++ 0x60, /* 01100000 */ ++ 0x30, /* 00110000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x60, /* 01100000 */ ++ 0xc6, /* 11000110 */ ++ 0xfe, /* 11111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 229 0xe5 'å' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7e, /* 01111110 */ ++ 0xd8, /* 11011000 */ ++ 0xd8, /* 11011000 */ ++ 0xd8, /* 11011000 */ ++ 0xd8, /* 11011000 */ ++ 0xd8, /* 11011000 */ ++ 0x70, /* 01110000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 230 0xe6 'æ' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x7c, /* 01111100 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0xc0, /* 11000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 231 0xe7 'ç' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x76, /* 01110110 */ ++ 0xdc, /* 11011100 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 232 0xe8 'è' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7e, /* 01111110 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x3c, /* 00111100 */ ++ 0x18, /* 00011000 */ ++ 0x7e, /* 01111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 233 0xe9 'é' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x38, /* 00111000 */ ++ 0x6c, /* 01101100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xfe, /* 11111110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x6c, /* 01101100 */ ++ 0x38, /* 00111000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 234 0xea 'ê' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x38, /* 00111000 */ ++ 0x6c, /* 01101100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x6c, /* 01101100 */ ++ 0x6c, /* 01101100 */ ++ 0x6c, /* 01101100 */ ++ 0x6c, /* 01101100 */ ++ 0xee, /* 11101110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 235 0xeb 'ë' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x1e, /* 00011110 */ ++ 0x30, /* 00110000 */ ++ 0x18, /* 00011000 */ ++ 0x0c, /* 00001100 */ ++ 0x3e, /* 00111110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x3c, /* 00111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 236 0xec 'ì' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7e, /* 01111110 */ ++ 0xdb, /* 11011011 */ ++ 0xdb, /* 11011011 */ ++ 0xdb, /* 11011011 */ ++ 0x7e, /* 01111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 237 0xed 'í' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x03, /* 00000011 */ ++ 0x06, /* 00000110 */ ++ 0x7e, /* 01111110 */ ++ 0xdb, /* 11011011 */ ++ 0xdb, /* 11011011 */ ++ 0xf3, /* 11110011 */ ++ 0x7e, /* 01111110 */ ++ 0x60, /* 01100000 */ ++ 0xc0, /* 11000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 238 0xee 'î' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x1c, /* 00011100 */ ++ 0x30, /* 00110000 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0x7c, /* 01111100 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0x30, /* 00110000 */ ++ 0x1c, /* 00011100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 239 0xef 'ï' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 240 0xf0 'ð' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfe, /* 11111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfe, /* 11111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfe, /* 11111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 241 0xf1 'ñ' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x7e, /* 01111110 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7e, /* 01111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 242 0xf2 'ò' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x30, /* 00110000 */ ++ 0x18, /* 00011000 */ ++ 0x0c, /* 00001100 */ ++ 0x06, /* 00000110 */ ++ 0x0c, /* 00001100 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x00, /* 00000000 */ ++ 0x7e, /* 01111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 243 0xf3 'ó' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x0c, /* 00001100 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x60, /* 01100000 */ ++ 0x30, /* 00110000 */ ++ 0x18, /* 00011000 */ ++ 0x0c, /* 00001100 */ ++ 0x00, /* 00000000 */ ++ 0x7e, /* 01111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 244 0xf4 'ô' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x0e, /* 00001110 */ ++ 0x1b, /* 00011011 */ ++ 0x1b, /* 00011011 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ ++ /* 245 0xf5 'õ' */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0xd8, /* 11011000 */ ++ 0xd8, /* 11011000 */ ++ 0xd8, /* 11011000 */ ++ 0x70, /* 01110000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 246 0xf6 'ö' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x7e, /* 01111110 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 247 0xf7 '÷' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x76, /* 01110110 */ ++ 0xdc, /* 11011100 */ ++ 0x00, /* 00000000 */ ++ 0x76, /* 01110110 */ ++ 0xdc, /* 11011100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 248 0xf8 'ø' */ ++ 0x00, /* 00000000 */ ++ 0x38, /* 00111000 */ ++ 0x6c, /* 01101100 */ ++ 0x6c, /* 01101100 */ ++ 0x38, /* 00111000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 249 0xf9 'ù' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 250 0xfa 'ú' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 251 0xfb 'û' */ ++ 0x00, /* 00000000 */ ++ 0x0f, /* 00001111 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0xec, /* 11101100 */ ++ 0x6c, /* 01101100 */ ++ 0x6c, /* 01101100 */ ++ 0x3c, /* 00111100 */ ++ 0x1c, /* 00011100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 252 0xfc 'ü' */ ++ 0x00, /* 00000000 */ ++ 0x6c, /* 01101100 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 253 0xfd 'ý' */ ++ 0x00, /* 00000000 */ ++ 0x3c, /* 00111100 */ ++ 0x66, /* 01100110 */ ++ 0x0c, /* 00001100 */ ++ 0x18, /* 00011000 */ ++ 0x32, /* 00110010 */ ++ 0x7e, /* 01111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 254 0xfe 'þ' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7e, /* 01111110 */ ++ 0x7e, /* 01111110 */ ++ 0x7e, /* 01111110 */ ++ 0x7e, /* 01111110 */ ++ 0x7e, /* 01111110 */ ++ 0x7e, /* 01111110 */ ++ 0x7e, /* 01111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 255 0xff 'ÿ' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++}; ++ ++#endif +diff --git a/efi/graphics.c b/efi/graphics.c +new file mode 100644 +index 0000000..eb98d8a +--- /dev/null ++++ b/efi/graphics.c +@@ -0,0 +1,666 @@ ++#ifdef SUPPORT_GRAPHICS ++ ++#include <grub/misc.h> ++#include <grub/types.h> ++#include <grub/cpu/linux.h> ++#include <grub/efi/api.h> ++#include <grub/efi/efi.h> ++#include <grub/efi/misc.h> ++ ++#include <term.h> ++#include <shared.h> ++#include <graphics.h> ++ ++#include "graphics.h" ++ ++#if 0 ++#include "ugadebug.h" ++#endif ++ ++int foreground = 0x00ffffff, background = 0; ++int graphics_inited = 0; ++ ++/* Convert a character which is a hex digit to the appropriate integer */ ++int ++hex (int v) ++{ ++ if (v >= 'A' && v <= 'F') ++ return (v - 'A' + 10); ++ if (v >= 'a' && v <= 'f') ++ return (v - 'a' + 10); ++ return (v - '0'); ++} ++ ++grub_uint16_t ++grub_console_getwh (void) ++{ ++ grub_efi_simple_text_output_interface_t *o; ++ grub_efi_uintn_t columns, rows; ++ ++ o = grub_efi_system_table->con_out; ++ if (Call_Service_4 (o->query_mode , o, o->mode->mode, &columns, &rows) ++ != GRUB_EFI_SUCCESS) ++ { ++ /* Why does this fail? */ ++ columns = 80; ++ rows = 25; ++ } ++ ++ return ((columns << 8) | rows); ++} ++ ++extern struct graphics_backend uga_backend; ++extern struct graphics_backend eg_backend; ++ ++static struct graphics_backend *backends[] = { ++ &eg_backend, ++ &uga_backend, ++ NULL ++}; ++static struct graphics_backend *backend; ++ ++struct graphics { ++ int scroll; ++ int fontx; ++ int fonty; ++ ++ int standard_color; ++ int normal_color; ++ int highlight_color; ++ int current_color; ++ color_state color_state; ++ ++ char splashpath[64]; ++ struct xpm *splashimage; ++ ++ unsigned short *text; ++}; ++ ++static grub_efi_guid_t device_path_guid = GRUB_EFI_DEVICE_PATH_GUID; ++static grub_efi_guid_t pci_io_guid = GRUB_EFI_PCI_IO_GUID; ++static grub_efi_guid_t pci_root_io_guid = GRUB_EFI_PCI_ROOT_IO_GUID; ++ ++static void ++grub_efi_configure_pci(grub_efi_handle_t handle) ++{ ++ grub_efi_device_path_t *path, *parent; ++ grub_efi_handle_t parent_handle; ++ grub_efi_pci_io_t *pci_proto; ++ grub_efi_pci_root_io_t *pci_root_proto; ++ grub_efi_status_t status; ++ ++ path = grub_efi_get_device_path(handle); ++ parent = find_parent_device_path(path); ++ ++ if (!parent) ++ return; ++ ++ status = grub_efi_locate_device_path (&device_path_guid, &parent, ++ &parent_handle); ++ if (status != GRUB_EFI_SUCCESS) ++ return; ++ ++ pci_proto = grub_efi_open_protocol (parent_handle, &pci_io_guid, ++ GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL); ++ ++ pci_root_proto = grub_efi_open_protocol (parent_handle, &pci_root_io_guid, ++ GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL); ++ ++ ++ if (pci_proto || pci_root_proto) ++ { ++ if (pci_proto) ++ { ++ Call_Service_4 (pci_proto->attributes, pci_proto, ++ grub_efi_pci_io_attribute_operation_enable, ++ GRUB_EFI_PCI_IO_ATTRIBUTE_VGA_MEMORY | ++ GRUB_EFI_PCI_IO_ATTRIBUTE_VGA_IO | ++ GRUB_EFI_PCI_IO_ATTRIBUTE_VGA_PALETTE_IO, NULL); ++ ++ grub_efi_configure_pci (parent_handle); ++ } ++ else ++ { ++ grub_uint8_t value = 0x33; ++ grub_uint16_t vendor; ++ ++ Call_Service_5 (pci_root_proto->pci.read, pci_root_proto, ++ grub_efi_pci_io_width_uint16, 0x00, 1, &vendor); ++ ++ if (vendor == 0x8086) { ++ Call_Service_5 (pci_root_proto->pci.write, pci_root_proto, ++ grub_efi_pci_io_width_uint8, 0x91, 1, &value); ++ Call_Service_5 (pci_root_proto->pci.write, pci_root_proto, ++ grub_efi_pci_io_width_uint8, 0x92, 1, &value); ++ } ++ } ++ } ++ grub_free(parent); ++} ++ ++void ++grub_efi_setup_gfx_pci(grub_efi_handle_t handle) ++{ ++ grub_efi_uint64_t romsize; ++ grub_efi_uint16_t *header; ++ void *vrom; ++ grub_efi_pci_io_t *pci_proto; ++ ++ pci_proto = grub_efi_open_protocol (handle, &pci_io_guid, ++ GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL); ++ ++ if (!pci_proto) ++ return; ++ ++ romsize = pci_proto->rom_size; ++ ++ if (!romsize || romsize > 65536 || !pci_proto->rom_image) ++ return; ++ ++ /* Copy the ROM */ ++ vrom = grub_efi_allocate_runtime_pages(0xc0000, 16); ++ ++ if (!vrom) ++ return; ++ ++ header = vrom; ++ ++ if (*header == 0xaa55) ++ return; ++ ++ grub_efi_configure_pci(handle); ++ ++ grub_memcpy(vrom, pci_proto->rom_image, romsize); ++} ++ ++void ++graphics_set_kernel_params(struct linux_kernel_params *params) ++{ ++ params->video_cursor_x = grub_efi_system_table->con_out->mode->cursor_column; ++ params->video_cursor_y = grub_efi_system_table->con_out->mode->cursor_row; ++ params->video_page = 0; /* ??? */ ++ params->video_mode = grub_efi_system_table->con_out->mode->mode; ++ params->video_width = (grub_console_getwh () >> 8); ++ params->video_ega_bx = 0; ++ params->video_height = (grub_console_getwh () & 0xff); ++ params->have_vga = 0; ++ params->font_size = 16; /* XXX */ ++ ++ /* No VBE. */ ++ params->lfb_width = 0; ++ params->lfb_height = 0; ++ params->lfb_depth = 0; ++ params->lfb_base = 0; ++ params->lfb_size = 0; ++ params->lfb_line_len = 0; ++ params->red_mask_size = 0; ++ params->red_field_pos = 0; ++ params->green_mask_size = 0; ++ params->green_field_pos = 0; ++ params->blue_mask_size = 0; ++ params->blue_field_pos = 0; ++ params->reserved_mask_size = 0; ++ params->reserved_field_pos = 0; ++ params->vesapm_segment = 0; ++ params->vesapm_offset = 0; ++ params->lfb_pages = 0; ++ params->vesa_attrib = 0; ++ ++ if (backend && backend->set_kernel_params) ++ backend->set_kernel_params(backend, params); ++} ++ ++int ++graphics_alloc_text_buf(void) ++{ ++ if (backend) { ++ struct graphics *graphics = backend->graphics; ++ position_t screen_size; ++ ++ if (graphics->text) { ++ grub_free(graphics->text); ++ graphics->text = NULL; ++ } ++ graphics_get_screen_rowscols(&screen_size); ++ graphics->text = grub_malloc(screen_size.x ++ * screen_size.y ++ * sizeof (graphics->text[0])); ++ if (graphics->text) { ++ int x, y; ++ for (y = 0; y < screen_size.y; y++) ++ for (x = 0; x < screen_size.x; x++) ++ graphics->text[y * screen_size.x + x] = ' '; ++ return 1; ++ } ++ } ++ return 0; ++} ++ ++unsigned short * ++graphics_get_text_buf(void) ++{ ++ return backend ? backend->graphics->text : NULL; ++ return NULL; ++} ++ ++int ++graphics_get_screen_rowscols(position_t *size) ++{ ++#if 0 ++ if (backend && backend->get_screen_size) { ++ backend->get_screen_size(backend, size); ++ size->x >>= 3; ++ size->y >>= 4; ++ return 1; ++ } ++ size->x = -1; ++ size->y = -1; ++ return 0; ++#else ++ size->x = 80; ++ size->y = 30; ++ return 1; ++#endif ++} ++ ++int ++graphics_get_scroll(void) ++{ ++ return backend ? backend->graphics->scroll : 1; ++} ++ ++void ++graphics_set_palette(int idx, int red, int green, int blue) ++{ ++ if (backend && backend->set_palette) { ++ backend->set_palette(backend, idx, red, green, blue); ++ backend->set_palette(backend, 0, 0x00, 0x00, 0x00); ++ backend->set_palette(backend, 15, 0xff, 0xff, 0xff); ++ backend->set_palette(backend, 16, 0x00, 0x00, 0x00); ++ } ++} ++ ++static char splashpath[64] = ""; ++ ++static void ++graphics_set_splash_helper(void) ++{ ++ if (backend) { ++ struct xpm *xpm = NULL; ++ ++ if (backend->graphics->splashimage) ++ xpm_free(backend->graphics->splashimage); ++ ++ if (splashpath[0]) ++ xpm = xpm_open(splashpath); ++ ++ if (xpm) { ++ backend->graphics->splashimage = xpm; ++ grub_strcpy(backend->graphics->splashpath, splashpath); ++ } else { ++ backend->graphics->splashimage = NULL; ++ backend->graphics->splashpath[0] = '\0'; ++ } ++ backend->reset_screen_geometry(backend); ++ } ++} ++ ++void ++graphics_set_splash(char *s) ++{ ++ if (s && s[0] != '\0') ++ grub_strcpy(splashpath, s); ++ else ++ splashpath[0] = '\0'; ++ graphics_set_splash_helper(); ++} ++ ++char * ++graphics_get_splash(void) ++{ ++ if (backend) ++ return backend->graphics->splashpath; ++ if (splashpath[0] != '\0') ++ return splashpath; ++ return NULL; ++} ++ ++struct xpm * ++graphics_get_splash_xpm(void) ++{ ++ if (backend) ++ return backend->graphics->splashimage; ++ return NULL; ++} ++ ++void ++graphics_putchar(int ch) ++{ ++ struct graphics *graphics; ++ position_t screensz; ++ int offset; ++ ++ void *old_term = current_term; ++ ++ if (!backend) ++ return; ++ ++ graphics = backend->graphics; ++ graphics_get_screen_rowscols(&screensz); ++ ++ ch &= 0xff; ++ ++ graphics_cursor(0); ++ ++ if (ch == '\n') { ++ if (graphics->fonty + 1 < screensz.y) { ++ graphics_setxy(graphics->fontx, graphics->fonty + 1); ++ } else ++ graphics_scroll(); ++ graphics_cursor(1); ++ return; ++ } else if (ch == '\r') { ++ graphics_setxy(0, graphics->fonty); ++ graphics_cursor(1); ++ return; ++ } ++ ++ graphics_cursor(0); ++ ++ offset = graphics->fontx + graphics->fonty * screensz.x; ++ graphics->text[offset] = ch; ++ graphics->text[offset] &= 0x00ff; ++ if (graphics->current_color & 0xf0) ++ graphics->text[offset] |= 0x100; ++ ++ graphics_cursor(0); ++ ++ if ((graphics->fontx + 1) >= screensz.x) { ++ graphics_setxy(0, graphics->fonty); ++ if (graphics->fonty + 1 < screensz.y) ++ graphics_setxy(0, graphics->fonty + 1); ++ else ++ graphics_scroll(); ++ } else { ++ graphics_setxy(graphics->fontx + 1, graphics->fonty); ++ } ++ ++ graphics_cursor(1); ++} ++ ++void ++graphics_set_font_position(position_t *pos) ++{ ++ if (backend) { ++ backend->graphics->fontx = pos->x; ++ backend->graphics->fonty = pos->y; ++ } ++} ++ ++void ++graphics_get_font_position(position_t *pos) ++{ ++ if (backend) { ++ pos->x = backend->graphics->fontx; ++ pos->y = backend->graphics->fonty; ++ return; ++ } ++ pos->x = -1; ++ pos->y = -1; ++} ++ ++void ++graphics_get_font_size(position_t *size) ++{ ++ size->x = 8; ++ size->y = 16; ++} ++ ++void ++graphics_setxy(int x, int y) ++{ ++ if (!backend) ++ return; ++ ++ if (backend->setxy) { ++ position_t pos = {x, y}; ++ backend->setxy(backend, &pos); ++ return; ++ } ++} ++ ++int ++graphics_getxy(void) ++{ ++ int ret = 0; ++ if (backend) { ++ if (backend->getxy) { ++ position_t pos; ++ backend->getxy(backend, &pos); ++ ret = ((pos.x & 0xff) << 8) | (pos.y & 0xff); ++ } else { ++ ret = ((backend->graphics->fontx & 0xff) << 8) | (backend->graphics->fonty & 0xff); ++ } ++ } ++ return ret; ++} ++ ++void ++graphics_scroll (void) ++{ ++ struct graphics *graphics; ++ position_t screensz; ++ int i; ++ unsigned short *text; ++ int linesz; ++ ++ if (!backend) ++ return; ++ ++ graphics = backend->graphics; ++ ++ /* we don't want to scroll recursively... that would be bad */ ++ if (!graphics->scroll) ++ return; ++ graphics->scroll = 0; ++ graphics_get_screen_rowscols(&screensz); ++ ++ text = graphics_get_text_buf(); ++ linesz = screensz.x * sizeof (text[0]); ++ for (i = 1; i < screensz.y; i++) { ++ unsigned short *prev = &text[(i-1) * screensz.x]; ++ unsigned short *this = prev + screensz.x; ++ ++ memmove(prev, this, linesz); ++ prev = this; ++ this += screensz.x; ++ } ++ graphics_setxy(0, screensz.y - 1); ++ for (i = 0; i < screensz.x; i++) { ++ graphics_putchar(' '); ++ //text[(screensz.y-1) + i] = ' '; ++ } ++ ++ graphics_clbl(0, 0, screensz.x, screensz.y, 1); ++ graphics_setxy(0, screensz.y - 1); ++ graphics->scroll = 1; ++} ++ ++void ++graphics_cursor(int set) ++{ ++ if (backend && backend->cursor) ++ backend->cursor(backend, set); ++} ++ ++void ++graphics_gotoxy(int x, int y) ++{ ++ position_t pos = {x,y}; ++ if (backend) { ++ if (backend->gotoxy) { ++ backend->gotoxy(backend, &pos); ++ } else { ++ graphics_cursor(0); ++ graphics_setxy(x, y); ++ graphics_cursor(1); ++ } ++ } ++} ++ ++void ++graphics_cls(void) ++{ ++ int x = 0, y = 0, xy; ++ unsigned short *text; ++ position_t screensz; ++ ++ graphics_get_screen_rowscols(&screensz); ++ text = graphics_get_text_buf(); ++ for (y = 0; y < screensz.y; y++) ++ for (x = 0; x < screensz.x; x++) ++ text[x + y * screensz.x] = ' '; ++ ++ if (backend) { ++ //int xy = graphics_getxy(); ++ ++ graphics_clbl(0, 0, screensz.x, screensz.y, 0); ++ //graphics_gotoxy(xy & 0xf0 >> 8, xy & 0xf); ++ graphics_gotoxy(0, 0); ++ } ++} ++ ++void ++graphics_clbl(int col, int row, int width, int height, int draw_text) ++{ ++ if (backend) { ++ int x = 0, y = 0, xy; ++ unsigned short *text; ++ position_t screensz; ++ ++ graphics_get_screen_rowscols(&screensz); ++ ++#if 0 ++ xy = graphics_getxy(); ++#endif ++ if (backend->clbl) { ++ backend->clbl(backend, col, row, width, height, draw_text); ++ } else { ++ for (y = 0; y < screensz.y; y++) { ++ for (x = 0; x < screensz.x; x++) { ++ graphics_setxy(x, y); ++ graphics_cursor(0); ++ } ++ } ++ } ++#if 0 ++ graphics_gotoxy(xy >> 8, xy & 0xf); ++#endif ++ } ++} ++ ++void ++graphics_setcolorstate (color_state state) ++{ ++ struct graphics *graphics; ++ if (!backend) ++ return; ++ ++ graphics = backend->graphics; ++ ++ switch (state) { ++ case COLOR_STATE_STANDARD: ++ graphics->current_color = graphics->standard_color; ++ break; ++ case COLOR_STATE_NORMAL: ++ graphics->current_color = graphics->normal_color; ++ break; ++ case COLOR_STATE_HIGHLIGHT: ++ graphics->current_color = graphics->highlight_color; ++ break; ++ default: ++ graphics->current_color = graphics->standard_color; ++ break; ++ } ++ ++ graphics->color_state = state; ++} ++ ++void ++graphics_setcolor (int normal_color, int highlight_color) ++{ ++ backend->graphics->normal_color = normal_color; ++ backend->graphics->highlight_color = highlight_color; ++ ++ graphics_setcolorstate (backend->graphics->color_state); ++} ++ ++int ++graphics_setcursor(int on) ++{ ++ /* FIXME: we don't have a cursor in graphics */ ++ return 0; ++} ++ ++int ++graphics_init(void) ++{ ++ struct graphics *graphics; ++ int i; ++ ++ if (graphics_inited) ++ return 1; ++ ++ if (backend) { ++ if (backend->enable(backend)) { ++ graphics_inited = 1; ++ graphics_set_splash_helper(); ++ return 1; ++ } ++ return 0; ++ } ++ ++ graphics = grub_malloc(sizeof (*graphics)); ++ if (!graphics) ++ return 0; ++ ++ grub_memset(graphics, '\0', sizeof (*graphics)); ++ ++ graphics->scroll = 1; ++ graphics->fontx = 0; ++ graphics->fonty = 0; ++ ++ graphics->standard_color = A_NORMAL; ++ graphics->normal_color = A_NORMAL; ++ graphics->highlight_color = A_REVERSE; ++ graphics->current_color = A_NORMAL; ++ graphics->color_state = COLOR_STATE_STANDARD; ++ ++ grub_memset(graphics->splashpath, '\0', sizeof (graphics->splashpath)); ++ ++ for(i = 0; backends[i] != NULL; i++) { ++ backend = backends[i]; ++ backend->graphics = graphics; ++ if (backend->enable(backend)) { ++ graphics_inited = 1; ++ graphics_set_splash_helper(); ++ return 1; ++ } ++ backend->graphics = NULL; ++ } ++ current_term = term_table; ++ grub_free(graphics->text); ++ grub_free(graphics); ++ return 0; ++} ++ ++void ++graphics_end(void) ++{ ++ if (backend && graphics_inited) { ++ graphics_inited = 0; ++ backend->disable(backend); ++ } ++} ++ ++#endif /* SUPPORT_GRAPHICS */ +diff --git a/efi/graphics.h b/efi/graphics.h +new file mode 100644 +index 0000000..ecf9e0e +--- /dev/null ++++ b/efi/graphics.h +@@ -0,0 +1,81 @@ ++#ifndef GRUB_EFI_GRAPHICS_H ++#define GRUB_EFI_GRAPHICS_H ++ ++#ifdef SUPPORT_GRAPHICS ++ ++#include <term.h> ++#include "xpm.h" ++ ++#define VIDEO_TYPE_EFI 0x70 ++ ++typedef void pixel_t; ++struct graphics; ++ ++struct position { ++ int x; ++ int y; ++}; ++typedef struct position position_t; ++ ++extern void grub_efi_setup_gfx_pci (grub_efi_handle_t handle); ++ ++extern grub_uint16_t grub_console_getwh (void); ++extern void graphics_set_kernel_params(struct linux_kernel_params *params); ++extern void graphics_set_font_position(position_t *pos); ++extern void graphics_get_font_position(position_t *pos); ++extern void graphics_get_font_size(position_t *size); ++extern int graphics_get_screen_rowscols(position_t *size); ++extern int graphics_alloc_text_buf(void); ++extern unsigned short *graphics_get_text_buf(void); ++ ++extern int graphics_get_scroll(void); ++ ++extern char *graphics_get_splash(void); ++extern void graphics_setxy(int x, int y); ++extern void graphics_cls(void); ++extern void graphics_clbl(int x, int y, int width, int height, int draw_text); ++extern void graphics_setcolorstate (color_state state); ++extern void graphics_setcolor (int normal_color, int highlight_color); ++extern int graphics_setcursor(int on); ++extern int graphics_init(void); ++extern void graphics_end(void); ++extern struct xpm *graphics_get_splash_xpm(void); ++extern void graphics_cursor(int set); ++extern void graphics_scroll(void); ++ ++struct graphics_backend { ++ char *name; ++ struct graphics *graphics; ++ void *priv; ++ ++ int (*enable)(struct graphics_backend *backend); ++ void (*disable)(struct graphics_backend *backend); ++ ++ void (*set_kernel_params)(struct graphics_backend *backend, ++ struct linux_kernel_params *params); ++ ++ void (*clbl)(struct graphics_backend *backend, int col, int row, ++ int width, int height, ++ int draw_text); ++ ++ void (*set_palette)(struct graphics_backend *backend, ++ int idx, int red, int green, int blue); ++ pixel_t *(*get_pixel_idx)(struct graphics_backend *backend, int idx); ++ pixel_t *(*get_pixel_rgb)(struct graphics_backend *backend, ++ int red, int green, int blue); ++ void (*draw_pixel)(struct graphics_backend *backend, ++ position_t *pos, pixel_t *pixel); ++ ++ void (*reset_screen_geometry)(struct graphics_backend *backend); ++ void (*get_screen_size)(struct graphics_backend *backend, position_t *size); ++ void (*getxy)(struct graphics_backend *backend, position_t *pos); ++ void (*setxy)(struct graphics_backend *backend, position_t *pos); ++ void (*gotoxy)(struct graphics_backend *backend, position_t *pos); ++ void (*cursor)(struct graphics_backend *backend, int set); ++// void (*putchar)(struct graphics_backend *backend, int ch); ++}; ++ ++extern const unsigned char font8x16[]; ++ ++#endif /* SUPPORT_GRAPHCIS */ ++#endif /* GRUB_EFI_GRAPHICS_H */ +diff --git a/efi/grub/.gitignore b/efi/grub/.gitignore +new file mode 100644 +index 0000000..40a991e +--- /dev/null ++++ b/efi/grub/.gitignore +@@ -0,0 +1 @@ ++cpu +diff --git a/efi/grub/efi/api.h b/efi/grub/efi/api.h +new file mode 100644 +index 0000000..81a0b3f +--- /dev/null ++++ b/efi/grub/efi/api.h +@@ -0,0 +1,1716 @@ ++/* efi.h - declare EFI types and functions */ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2006 Free Software Foundation, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#ifndef GRUB_EFI_API_HEADER ++#define GRUB_EFI_API_HEADER 1 ++ ++#include <grub/types.h> ++#include <grub/efi/eficall.h> ++ ++/* For consistency and safety, we name the EFI-defined types differently. ++ All names are transformed into lower case, _t appended, and ++ grub_efi_ prepended. */ ++ ++/* Constants. */ ++#define GRUB_EFI_EVT_TIMER 0x80000000 ++#define GRUB_EFI_EVT_RUNTIME 0x40000000 ++#define GRUB_EFI_EVT_RUNTIME_CONTEXT 0x20000000 ++#define GRUB_EFI_EVT_NOTIFY_WAIT 0x00000100 ++#define GRUB_EFI_EVT_NOTIFY_SIGNAL 0x00000200 ++#define GRUB_EFI_EVT_SIGNAL_EXIT_BOOT_SERVICES 0x00000201 ++#define GRUB_EFI_EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE 0x60000202 ++ ++#define GRUB_EFI_TPL_APPLICATION 4 ++#define GRUB_EFI_TPL_CALLBACK 8 ++#define GRUB_EFI_TPL_NOTIFY 16 ++#define GRUB_EFI_TPL_HIGH_LEVEL 31 ++ ++#define GRUB_EFI_MEMORY_UC 0x0000000000000001 ++#define GRUB_EFI_MEMORY_WC 0x0000000000000002 ++#define GRUB_EFI_MEMORY_WT 0x0000000000000004 ++#define GRUB_EFI_MEMORY_WB 0x0000000000000008 ++#define GRUB_EFI_MEMORY_UCE 0x0000000000000010 ++#define GRUB_EFI_MEMORY_WP 0x0000000000001000 ++#define GRUB_EFI_MEMORY_RP 0x0000000000002000 ++#define GRUB_EFI_MEMORY_XP 0x0000000000004000 ++#define GRUB_EFI_MEMORY_RUNTIME 0x8000000000000000 ++ ++#define GRUB_EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL 0x00000001 ++#define GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL 0x00000002 ++#define GRUB_EFI_OPEN_PROTOCOL_TEST_PROTOCOL 0x00000004 ++#define GRUB_EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER 0x00000008 ++#define GRUB_EFI_OPEN_PROTOCOL_BY_DRIVER 0x00000010 ++#define GRUB_EFI_OPEN_PROTOCOL_BY_EXCLUSIVE 0x00000020 ++ ++#define GRUB_EFI_VARIABLE_NON_VOLATILE 0x0000000000000001 ++#define GRUB_EFI_VARIABLE_BOOTSERVICE_ACCESS 0x0000000000000002 ++#define GRUB_EFI_VARIABLE_RUNTIME_ACCESS 0x0000000000000004 ++ ++#define GRUB_EFI_TIME_ADJUST_DAYLIGHT 0x01 ++#define GRUB_EFI_TIME_IN_DAYLIGHT 0x02 ++ ++#define GRUB_EFI_UNSPECIFIED_TIMEZONE 0x07FF ++ ++#define GRUB_EFI_OPTIONAL_PTR 0x00000001 ++ ++#define GRUB_EFI_PCI_IO_GUID \ ++ { 0x4cf5b200, 0x68b8, 0x4ca5, \ ++ { 0x9e, 0xec, 0xb2, 0x3e, 0x3f, 0x50, 0x02, 0x9a } \ ++ } ++ ++#define GRUB_EFI_PCI_ROOT_IO_GUID \ ++ { 0x2F707EBB, 0x4A1A, 0x11d4, \ ++ { 0x9A, 0x38, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D } \ ++ } ++ ++#define GRUB_EFI_LOADED_IMAGE_GUID \ ++ { 0x5b1b31a1, 0x9562, 0x11d2, \ ++ { 0x8e, 0x3f, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \ ++ } ++ ++#define GRUB_EFI_DISK_IO_GUID \ ++ { 0xce345171, 0xba0b, 0x11d2, \ ++ { 0x8e, 0x4f, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \ ++ } ++ ++#define GRUB_EFI_BLOCK_IO_GUID \ ++ { 0x964e5b21, 0x6459, 0x11d2, \ ++ { 0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \ ++ } ++ ++#define GRUB_EFI_DEVICE_PATH_GUID \ ++ { 0x09576e91, 0x6d3f, 0x11d2, \ ++ { 0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \ ++ } ++ ++#define GRUB_EFI_DEVICE_PATH_FROM_TEXT_GUID \ ++ { 0x05c99a21, 0xc70f, 0x4ad2, \ ++ { 0x8a, 0x5f, 0x35, 0xdf, 0x33, 0x43, 0xf5, 0x1e } \ ++ } ++ ++#define GRUB_EFI_GRAPHICS_OUTPUT_GUID \ ++ { 0x9042a9de, 0x23dc, 0x4a38, \ ++ { 0x96, 0xfb, 0x7a, 0xde, 0xd0, 0x80, 0x51, 0x6a } \ ++ } ++ ++#define GRUB_EFI_UGA_DRAW_GUID \ ++ { 0x982c298b, 0xf4fa, 0x41cb, \ ++ { 0xb8, 0x38, 0x77, 0xaa, 0x68, 0x8f, 0xb8, 0x39 } \ ++ } ++ ++#define GRUB_EFI_UGA_IO_GUID \ ++ { 0x61a4d49e, 0x6f68, 0x4f1b, \ ++ { 0xb9, 0x22, 0xa8, 0x6e, 0xed, 0xb, 0x7, 0xa2 } \ ++ } ++ ++#define GRUB_EFI_SIMPLE_FILE_SYSTEM_GUID \ ++ { 0x964e5b22, 0x6459, 0x11d2, \ ++ { 0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \ ++ } ++ ++#define GRUB_EFI_SERIAL_IO_GUID \ ++ { 0xbb25cf6f, 0xf1d4, 0x11d2, \ ++ { 0x9a, 0x0c, 0x00, 0x90, 0x27, 0x3F, 0xc1, 0xfd } \ ++ } ++ ++/* Enumerations. */ ++enum grub_efi_timer_delay ++{ ++ GRUB_EFI_TIMER_CANCEL, ++ GRUB_EFI_TIMER_PERIODIC, ++ GRUB_EFI_TIMER_RELATIVE ++}; ++typedef enum grub_efi_timer_delay grub_efi_timer_delay_t; ++ ++enum grub_efi_allocate_type ++{ ++ GRUB_EFI_ALLOCATE_ANY_PAGES, ++ GRUB_EFI_ALLOCATE_MAX_ADDRESS, ++ GRUB_EFI_ALLOCATE_ADDRESS, ++ GRUB_EFI_MAX_ALLOCATION_TYPE ++}; ++typedef enum grub_efi_allocate_type grub_efi_allocate_type_t; ++ ++enum grub_efi_memory_type ++{ ++ GRUB_EFI_RESERVED_MEMORY_TYPE, ++ GRUB_EFI_LOADER_CODE, ++ GRUB_EFI_LOADER_DATA, ++ GRUB_EFI_BOOT_SERVICES_CODE, ++ GRUB_EFI_BOOT_SERVICES_DATA, ++ GRUB_EFI_RUNTIME_SERVICES_CODE, ++ GRUB_EFI_RUNTIME_SERVICES_DATA, ++ GRUB_EFI_CONVENTIONAL_MEMORY, ++ GRUB_EFI_UNUSABLE_MEMORY, ++ GRUB_EFI_ACPI_RECLAIM_MEMORY, ++ GRUB_EFI_ACPI_MEMORY_NVS, ++ GRUB_EFI_MEMORY_MAPPED_IO, ++ GRUB_EFI_MEMORY_MAPPED_IO_PORT_SPACE, ++ GRUB_EFI_PAL_CODE, ++ GRUB_EFI_MAX_MEMORY_TYPE ++}; ++typedef enum grub_efi_memory_type grub_efi_memory_type_t; ++ ++enum grub_efi_interface_type ++{ ++ GRUB_EFI_NATIVE_INTERFACE ++}; ++typedef enum grub_efi_interface_type grub_efi_interface_type_t; ++ ++enum grub_efi_locate_search_type ++{ ++ GRUB_EFI_ALL_HANDLES, ++ GRUB_EFI_BY_REGISTER_NOTIFY, ++ GRUB_EFI_BY_PROTOCOL ++}; ++typedef enum grub_efi_locate_search_type grub_efi_locate_search_type_t; ++ ++enum grub_efi_reset_type ++{ ++ GRUB_EFI_RESET_COLD, ++ GRUB_EFI_RESET_WARM, ++ GRUB_EFI_RESET_SHUTDOWN ++}; ++typedef enum grub_efi_reset_type grub_efi_reset_type_t; ++ ++/* Types. */ ++typedef char grub_efi_boolean_t; ++typedef long grub_efi_intn_t; ++typedef unsigned long grub_efi_uintn_t; ++typedef grub_int8_t grub_efi_int8_t; ++typedef grub_uint8_t grub_efi_uint8_t; ++typedef grub_int16_t grub_efi_int16_t; ++typedef grub_uint16_t grub_efi_uint16_t; ++typedef grub_int32_t grub_efi_int32_t; ++typedef grub_uint32_t grub_efi_uint32_t; ++typedef grub_int64_t grub_efi_int64_t; ++typedef grub_uint64_t grub_efi_uint64_t; ++typedef grub_uint8_t grub_efi_char8_t; ++typedef grub_uint16_t grub_efi_char16_t; ++ ++typedef grub_efi_intn_t grub_efi_status_t; ++ ++#define GRUB_EFI_ERROR_CODE(value) \ ++ ((1L << (sizeof (grub_efi_status_t) * 8 - 1)) | (value)) ++ ++#define GRUB_EFI_WARNING_CODE(value) (value) ++ ++#define GRUB_EFI_SUCCESS 0 ++ ++#define GRUB_EFI_LOAD_ERROR GRUB_EFI_ERROR_CODE (1) ++#define GRUB_EFI_INVALID_PARAMETER GRUB_EFI_ERROR_CODE (2) ++#define GRUB_EFI_UNSUPPORTED GRUB_EFI_ERROR_CODE (3) ++#define GRUB_EFI_BAD_BUFFER_SIZE GRUB_EFI_ERROR_CODE (4) ++#define GRUB_EFI_BUFFER_TOO_SMALL GRUB_EFI_ERROR_CODE (5) ++#define GRUB_EFI_NOT_READY GRUB_EFI_ERROR_CODE (6) ++#define GRUB_EFI_DEVICE_ERROR GRUB_EFI_ERROR_CODE (7) ++#define GRUB_EFI_WRITE_PROTECTED GRUB_EFI_ERROR_CODE (8) ++#define GRUB_EFI_OUT_OF_RESOURCES GRUB_EFI_ERROR_CODE (9) ++#define GRUB_EFI_VOLUME_CORRUPTED GRUB_EFI_ERROR_CODE (10) ++#define GRUB_EFI_VOLUME_FULL GRUB_EFI_ERROR_CODE (11) ++#define GRUB_EFI_NO_MEDIA GRUB_EFI_ERROR_CODE (12) ++#define GRUB_EFI_MEDIA_CHANGED GRUB_EFI_ERROR_CODE (13) ++#define GRUB_EFI_NOT_FOUND GRUB_EFI_ERROR_CODE (14) ++#define GRUB_EFI_ACCESS_DENIED GRUB_EFI_ERROR_CODE (15) ++#define GRUB_EFI_NO_RESPONSE GRUB_EFI_ERROR_CODE (16) ++#define GRUB_EFI_NO_MAPPING GRUB_EFI_ERROR_CODE (17) ++#define GRUB_EFI_TIMEOUT GRUB_EFI_ERROR_CODE (18) ++#define GRUB_EFI_NOT_STARTED GRUB_EFI_ERROR_CODE (19) ++#define GRUB_EFI_ALREADY_STARTED GRUB_EFI_ERROR_CODE (20) ++#define GRUB_EFI_ABORTED GRUB_EFI_ERROR_CODE (21) ++#define GRUB_EFI_ICMP_ERROR GRUB_EFI_ERROR_CODE (22) ++#define GRUB_EFI_TFTP_ERROR GRUB_EFI_ERROR_CODE (23) ++#define GRUB_EFI_PROTOCOL_ERROR GRUB_EFI_ERROR_CODE (24) ++#define GRUB_EFI_INCOMPATIBLE_VERSION GRUB_EFI_ERROR_CODE (25) ++#define GRUB_EFI_SECURITY_VIOLATION GRUB_EFI_ERROR_CODE (26) ++#define GRUB_EFI_CRC_ERROR GRUB_EFI_ERROR_CODE (27) ++ ++#define GRUB_EFI_WARN_UNKNOWN_GLYPH GRUB_EFI_WARNING_CODE (1) ++#define GRUB_EFI_WARN_DELETE_FAILURE GRUB_EFI_WARNING_CODE (2) ++#define GRUB_EFI_WARN_WRITE_FAILURE GRUB_EFI_WARNING_CODE (3) ++#define GRUB_EFI_WARN_BUFFER_TOO_SMALL GRUB_EFI_WARNING_CODE (4) ++ ++typedef void *grub_efi_handle_t; ++typedef void *grub_efi_event_t; ++typedef grub_efi_uint64_t grub_efi_lba_t; ++typedef grub_efi_uintn_t grub_efi_tpl_t; ++typedef grub_uint8_t grub_efi_mac_address_t[32]; ++typedef grub_uint8_t grub_efi_ipv4_address_t[4]; ++typedef grub_uint16_t grub_efi_ipv6_address_t[8]; ++typedef grub_uint8_t grub_efi_ip_address_t[8] __attribute__ ((aligned (4))); ++typedef grub_efi_uint64_t grub_efi_physical_address_t; ++typedef grub_efi_uint64_t grub_efi_virtual_address_t; ++ ++struct grub_efi_guid ++{ ++ grub_uint32_t data1; ++ grub_uint16_t data2; ++ grub_uint16_t data3; ++ grub_uint8_t data4[8]; ++} __attribute__ ((aligned (8))); ++typedef struct grub_efi_guid grub_efi_guid_t; ++ ++/* XXX although the spec does not specify the padding, this actually ++ must have the padding! */ ++struct grub_efi_memory_descriptor ++{ ++ grub_efi_uint32_t type; ++ grub_efi_uint32_t padding; ++ grub_efi_physical_address_t physical_start; ++ grub_efi_virtual_address_t virtual_start; ++ grub_efi_uint64_t num_pages; ++ grub_efi_uint64_t attribute; ++}; ++typedef struct grub_efi_memory_descriptor grub_efi_memory_descriptor_t; ++ ++/* Device Path definitions. */ ++struct grub_efi_device_path ++{ ++ grub_efi_uint8_t type; ++ grub_efi_uint8_t subtype; ++ grub_efi_uint8_t length[2]; ++}; ++typedef struct grub_efi_device_path grub_efi_device_path_t; ++/* XXX EFI does not define EFI_DEVICE_PATH_PROTOCOL but uses it. ++ It seems to be identical to EFI_DEVICE_PATH. */ ++typedef struct grub_efi_device_path grub_efi_device_path_protocol_t; ++ ++#define GRUB_EFI_DEVICE_PATH_TYPE(dp) ((dp)->type & 0x7f) ++#define GRUB_EFI_DEVICE_PATH_SUBTYPE(dp) ((dp)->subtype) ++#define GRUB_EFI_DEVICE_PATH_LENGTH(dp) \ ++ ((dp)->length[0] | ((grub_efi_uint16_t) ((dp)->length[1]) << 8)) ++ ++/* The End of Device Path nodes. */ ++#define GRUB_EFI_END_DEVICE_PATH_TYPE (0xff & 0x7f) ++ ++#define GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE 0xff ++#define GRUB_EFI_END_THIS_DEVICE_PATH_SUBTYPE 0x01 ++ ++#define GRUB_EFI_END_ENTIRE_DEVICE_PATH(dp) \ ++ (GRUB_EFI_DEVICE_PATH_TYPE (dp) == GRUB_EFI_END_DEVICE_PATH_TYPE \ ++ && (GRUB_EFI_DEVICE_PATH_SUBTYPE (dp) \ ++ == GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE)) ++ ++#define GRUB_EFI_NEXT_DEVICE_PATH(dp) \ ++ ((grub_efi_device_path_t *) ((char *) (dp) \ ++ + GRUB_EFI_DEVICE_PATH_LENGTH (dp))) ++ ++/* Hardware Device Path. */ ++#define GRUB_EFI_HARDWARE_DEVICE_PATH_TYPE 1 ++ ++#define GRUB_EFI_PCI_DEVICE_PATH_SUBTYPE 1 ++ ++struct grub_efi_pci_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_uint8_t function; ++ grub_efi_uint8_t device; ++}; ++typedef struct grub_efi_pci_device_path grub_efi_pci_device_path_t; ++ ++#define GRUB_EFI_PCCARD_DEVICE_PATH_SUBTYPE 2 ++ ++struct grub_efi_pccard_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_uint8_t function; ++}; ++typedef struct grub_efi_pccard_device_path grub_efi_pccard_device_path_t; ++ ++#define GRUB_EFI_MEMORY_MAPPED_DEVICE_PATH_SUBTYPE 3 ++ ++struct grub_efi_memory_mapped_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_memory_type_t memory_type; ++ grub_efi_physical_address_t start_address; ++ grub_efi_physical_address_t end_address; ++}; ++typedef struct grub_efi_memory_mapped_device_path ++ grub_efi_memory_mapped_device_path_t; ++ ++#define GRUB_EFI_VENDOR_DEVICE_PATH_SUBTYPE 4 ++ ++struct grub_efi_vendor_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_guid_t vendor_guid; ++ grub_efi_uint8_t vendor_defined_data[0]; ++}; ++typedef struct grub_efi_vendor_device_path grub_efi_vendor_device_path_t; ++ ++#define GRUB_EFI_CONTROLLER_DEVICE_PATH_SUBTYPE 5 ++ ++struct grub_efi_controller_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_uint32_t controller_number; ++}; ++typedef struct grub_efi_controller_device_path ++ grub_efi_controller_device_path_t; ++ ++/* ACPI Device Path. */ ++#define GRUB_EFI_ACPI_DEVICE_PATH_TYPE 2 ++ ++#define GRUB_EFI_ACPI_DEVICE_PATH_SUBTYPE 1 ++ ++struct grub_efi_acpi_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_uint32_t hid; ++ grub_efi_uint32_t uid; ++}; ++typedef struct grub_efi_acpi_device_path grub_efi_acpi_device_path_t; ++ ++#define GRUB_EFI_EXPANDED_ACPI_DEVICE_PATH_SUBTYPE 2 ++ ++struct grub_efi_expanded_acpi_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_uint32_t hid; ++ grub_efi_uint32_t uid; ++ grub_efi_uint32_t cid; ++ char hidstr[1]; ++}; ++typedef struct grub_efi_expanded_acpi_device_path ++ grub_efi_expanded_acpi_device_path_t; ++ ++#define GRUB_EFI_EXPANDED_ACPI_HIDSTR(dp) \ ++ (((grub_efi_expanded_acpi_device_path_t *) dp)->hidstr) ++#define GRUB_EFI_EXPANDED_ACPI_UIDSTR(dp) \ ++ (GRUB_EFI_EXPANDED_ACPI_HIDSTR(dp) \ ++ + grub_strlen (GRUB_EFI_EXPANDED_ACPI_HIDSTR(dp)) + 1) ++#define GRUB_EFI_EXPANDED_ACPI_CIDSTR(dp) \ ++ (GRUB_EFI_EXPANDED_ACPI_UIDSTR(dp) \ ++ + grub_strlen (GRUB_EFI_EXPANDED_ACPI_UIDSTR(dp)) + 1) ++ ++/* Messaging Device Path. */ ++#define GRUB_EFI_MESSAGING_DEVICE_PATH_TYPE 3 ++ ++#define GRUB_EFI_ATAPI_DEVICE_PATH_SUBTYPE 1 ++ ++struct grub_efi_atapi_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_uint8_t primary_secondary; ++ grub_efi_uint8_t slave_master; ++ grub_efi_uint16_t lun; ++}; ++typedef struct grub_efi_atapi_device_path grub_efi_atapi_device_path_t; ++ ++#define GRUB_EFI_SCSI_DEVICE_PATH_SUBTYPE 2 ++ ++struct grub_efi_scsi_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_uint16_t pun; ++ grub_efi_uint16_t lun; ++}; ++typedef struct grub_efi_scsi_device_path grub_efi_scsi_device_path_t; ++ ++#define GRUB_EFI_FIBRE_CHANNEL_DEVICE_PATH_SUBTYPE 3 ++ ++struct grub_efi_fibre_channel_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_uint32_t reserved; ++ grub_efi_uint64_t wwn; ++ grub_efi_uint64_t lun; ++}; ++typedef struct grub_efi_fibre_channel_device_path ++ grub_efi_fibre_channel_device_path_t; ++ ++#define GRUB_EFI_1394_DEVICE_PATH_SUBTYPE 4 ++ ++struct grub_efi_1394_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_uint32_t reserved; ++ grub_efi_uint64_t guid; ++}; ++typedef struct grub_efi_1394_device_path grub_efi_1394_device_path_t; ++ ++#define GRUB_EFI_USB_DEVICE_PATH_SUBTYPE 5 ++ ++struct grub_efi_usb_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_uint8_t parent_port_number; ++ grub_efi_uint8_t interface; ++}; ++typedef struct grub_efi_usb_device_path grub_efi_usb_device_path_t; ++ ++#define GRUB_EFI_USB_CLASS_DEVICE_PATH_SUBTYPE 15 ++ ++struct grub_efi_usb_class_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_uint16_t vendor_id; ++ grub_efi_uint16_t product_id; ++ grub_efi_uint8_t device_class; ++ grub_efi_uint8_t device_subclass; ++ grub_efi_uint8_t device_protocol; ++}; ++typedef struct grub_efi_usb_class_device_path ++ grub_efi_usb_class_device_path_t; ++ ++#define GRUB_EFI_I2O_DEVICE_PATH_SUBTYPE 6 ++ ++struct grub_efi_i2o_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_uint32_t tid; ++}; ++typedef struct grub_efi_i2o_device_path grub_efi_i2o_device_path_t; ++ ++#define GRUB_EFI_MAC_ADDRESS_DEVICE_PATH_SUBTYPE 11 ++ ++struct grub_efi_mac_address_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_mac_address_t mac_address; ++ grub_efi_uint8_t if_type; ++}; ++typedef struct grub_efi_mac_address_device_path ++ grub_efi_mac_address_device_path_t; ++ ++#define GRUB_EFI_IPV4_DEVICE_PATH_SUBTYPE 12 ++ ++struct grub_efi_ipv4_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_ipv4_address_t local_ip_address; ++ grub_efi_ipv4_address_t remote_ip_address; ++ grub_efi_uint16_t local_port; ++ grub_efi_uint16_t remote_port; ++ grub_efi_uint16_t protocol; ++ grub_efi_uint8_t static_ip_address; ++}; ++typedef struct grub_efi_ipv4_device_path grub_efi_ipv4_device_path_t; ++ ++#define GRUB_EFI_IPV6_DEVICE_PATH_SUBTYPE 13 ++ ++struct grub_efi_ipv6_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_ipv6_address_t local_ip_address; ++ grub_efi_ipv6_address_t remote_ip_address; ++ grub_efi_uint16_t local_port; ++ grub_efi_uint16_t remote_port; ++ grub_efi_uint16_t protocol; ++ grub_efi_uint8_t static_ip_address; ++}; ++typedef struct grub_efi_ipv6_device_path grub_efi_ipv6_device_path_t; ++ ++#define GRUB_EFI_INFINIBAND_DEVICE_PATH_SUBTYPE 9 ++ ++struct grub_efi_infiniband_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_uint32_t resource_flags; ++ grub_efi_uint8_t port_gid[16]; ++ grub_efi_uint64_t remote_id; ++ grub_efi_uint64_t target_port_id; ++ grub_efi_uint64_t device_id; ++}; ++typedef struct grub_efi_infiniband_device_path ++ grub_efi_infiniband_device_path_t; ++ ++#define GRUB_EFI_UART_DEVICE_PATH_SUBTYPE 14 ++ ++struct grub_efi_uart_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_uint32_t reserved; ++ grub_efi_uint64_t baud_rate; ++ grub_efi_uint8_t data_bits; ++ grub_efi_uint8_t parity; ++ grub_efi_uint8_t stop_bits; ++}; ++typedef struct grub_efi_uart_device_path grub_efi_uart_device_path_t; ++ ++#define GRUB_EFI_VENDOR_MESSAGING_DEVICE_PATH_SUBTYPE 10 ++ ++struct grub_efi_vendor_messaging_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_guid_t vendor_guid; ++ grub_efi_uint8_t vendor_defined_data[0]; ++}; ++typedef struct grub_efi_vendor_messaging_device_path ++ grub_efi_vendor_messaging_device_path_t; ++ ++/* Media Device Path. */ ++#define GRUB_EFI_MEDIA_DEVICE_PATH_TYPE 4 ++ ++#define GRUB_EFI_HARD_DRIVE_DEVICE_PATH_SUBTYPE 1 ++ ++struct grub_efi_hard_drive_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_uint32_t partition_number; ++ grub_efi_lba_t partition_start; ++ grub_efi_lba_t partition_size; ++ grub_efi_uint8_t partition_signature[16]; ++ grub_efi_uint8_t mbr_type; ++ grub_efi_uint8_t signature_type; ++}; ++typedef struct grub_efi_hard_drive_device_path ++ grub_efi_hard_drive_device_path_t; ++ ++#define GRUB_EFI_CDROM_DEVICE_PATH_SUBTYPE 2 ++ ++struct grub_efi_cdrom_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_uint32_t boot_entry; ++ grub_efi_lba_t partition_start; ++ grub_efi_lba_t partition_size; ++}; ++typedef struct grub_efi_cdrom_device_path grub_efi_cdrom_device_path_t; ++ ++#define GRUB_EFI_VENDOR_MEDIA_DEVICE_PATH_SUBTYPE 3 ++ ++struct grub_efi_vendor_media_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_guid_t vendor_guid; ++ grub_efi_uint8_t vendor_defined_data[0]; ++}; ++typedef struct grub_efi_vendor_media_device_path ++ grub_efi_vendor_media_device_path_t; ++ ++#define GRUB_EFI_FILE_PATH_DEVICE_PATH_SUBTYPE 4 ++ ++struct grub_efi_file_path_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_char16_t path_name[0]; ++}; ++typedef struct grub_efi_file_path_device_path ++ grub_efi_file_path_device_path_t; ++ ++#define GRUB_EFI_PROTOCOL_DEVICE_PATH_SUBTYPE 5 ++ ++struct grub_efi_protocol_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_guid_t guid; ++}; ++typedef struct grub_efi_protocol_device_path grub_efi_protocol_device_path_t; ++ ++/* BIOS Boot Specification Device Path. */ ++#define GRUB_EFI_BIOS_DEVICE_PATH_TYPE 5 ++ ++#define GRUB_EFI_BIOS_DEVICE_PATH_SUBTYPE 1 ++ ++struct grub_efi_bios_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_uint16_t device_type; ++ grub_efi_uint16_t status_flags; ++ char description[0]; ++}; ++typedef struct grub_efi_bios_device_path grub_efi_bios_device_path_t; ++ ++struct grub_efi_device_path_from_text ++{ ++ grub_efi_device_path_t * (*convert_text_to_device_node) (const grub_efi_char16_t *text_device_node); ++ grub_efi_device_path_t * (*convert_text_to_device_path) (const grub_efi_char16_t *text_device_path); ++}; ++typedef struct grub_efi_device_path_from_text grub_efi_device_path_from_text_t; ++ ++struct grub_efi_open_protocol_information_entry ++{ ++ grub_efi_handle_t agent_handle; ++ grub_efi_handle_t controller_handle; ++ grub_efi_uint32_t attributes; ++ grub_efi_uint32_t open_count; ++}; ++typedef struct grub_efi_open_protocol_information_entry ++ grub_efi_open_protocol_information_entry_t; ++ ++struct grub_efi_time ++{ ++ grub_efi_uint16_t year; ++ grub_efi_uint8_t month; ++ grub_efi_uint8_t day; ++ grub_efi_uint8_t hour; ++ grub_efi_uint8_t minute; ++ grub_efi_uint8_t second; ++ grub_efi_uint8_t pad1; ++ grub_efi_uint32_t nanosecond; ++ grub_efi_int16_t time_zone; ++ grub_efi_uint8_t daylight; ++ grub_efi_uint8_t pad2; ++}; ++typedef struct grub_efi_time grub_efi_time_t; ++ ++struct grub_efi_time_capabilities ++{ ++ grub_efi_uint32_t resolution; ++ grub_efi_uint32_t accuracy; ++ grub_efi_boolean_t sets_to_zero; ++}; ++typedef struct grub_efi_time_capabilities grub_efi_time_capabilities_t; ++ ++struct grub_efi_input_key ++{ ++ grub_efi_uint16_t scan_code; ++ grub_efi_char16_t unicode_char; ++}; ++typedef struct grub_efi_input_key grub_efi_input_key_t; ++ ++struct grub_efi_simple_text_output_mode ++{ ++ grub_efi_int32_t max_mode; ++ grub_efi_int32_t mode; ++ grub_efi_int32_t attribute; ++ grub_efi_int32_t cursor_column; ++ grub_efi_int32_t cursor_row; ++ grub_efi_boolean_t cursor_visible; ++}; ++typedef struct grub_efi_simple_text_output_mode ++ grub_efi_simple_text_output_mode_t; ++ ++/* Tables. */ ++struct grub_efi_table_header ++{ ++ grub_efi_uint64_t signature; ++ grub_efi_uint32_t revision; ++ grub_efi_uint32_t header_size; ++ grub_efi_uint32_t crc32; ++ grub_efi_uint32_t reserved; ++}; ++typedef struct grub_efi_table_header grub_efi_table_header_t; ++ ++struct grub_efi_boot_services ++{ ++ grub_efi_table_header_t hdr; ++ ++ grub_efi_tpl_t (*raise_tpl) (grub_efi_tpl_t new_tpl); ++ ++ void (*restore_tpl) (grub_efi_tpl_t old_tpl); ++ ++ grub_efi_status_t ++ (*allocate_pages) (grub_efi_allocate_type_t type, ++ grub_efi_memory_type_t memory_type, ++ grub_efi_uintn_t pages, ++ grub_efi_physical_address_t * memory); ++ ++ grub_efi_status_t ++ (*free_pages) (grub_efi_physical_address_t memory, ++ grub_efi_uintn_t pages); ++ ++ grub_efi_status_t ++ (*get_memory_map) (grub_efi_uintn_t * memory_map_size, ++ grub_efi_memory_descriptor_t * memory_map, ++ grub_efi_uintn_t * map_key, ++ grub_efi_uintn_t * descriptor_size, ++ grub_efi_uint32_t * descriptor_version); ++ ++ grub_efi_status_t ++ (*allocate_pool) (grub_efi_memory_type_t pool_type, ++ grub_efi_uintn_t size, void **buffer); ++ ++ grub_efi_status_t (*free_pool) (void *buffer); ++ ++ grub_efi_status_t ++ (*create_event) (grub_efi_uint32_t type, ++ grub_efi_tpl_t notify_tpl, ++ void (*notify_function) (grub_efi_event_t event, ++ void *context), ++ void *notify_context, grub_efi_event_t * event); ++ ++ grub_efi_status_t ++ (*set_timer) (grub_efi_event_t event, ++ grub_efi_timer_delay_t type, ++ grub_efi_uint64_t trigger_time); ++ ++ grub_efi_status_t ++ (*wait_for_event) (grub_efi_uintn_t num_events, ++ grub_efi_event_t * event, grub_efi_uintn_t * index); ++ ++ grub_efi_status_t (*signal_event) (grub_efi_event_t event); ++ ++ grub_efi_status_t (*close_event) (grub_efi_event_t event); ++ ++ grub_efi_status_t (*check_event) (grub_efi_event_t event); ++ ++ grub_efi_status_t ++ (*install_protocol_interface) (grub_efi_handle_t * handle, ++ grub_efi_guid_t * protocol, ++ grub_efi_interface_type_t interface_type, ++ void *interface); ++ ++ grub_efi_status_t ++ (*reinstall_protocol_interface) (grub_efi_handle_t handle, ++ grub_efi_guid_t * protocol, ++ void *old_interface, void *new_inteface); ++ ++ grub_efi_status_t ++ (*uninstall_protocol_interface) (grub_efi_handle_t handle, ++ grub_efi_guid_t * protocol, ++ void *interface); ++ ++ grub_efi_status_t ++ (*handle_protocol) (grub_efi_handle_t handle, ++ grub_efi_guid_t * protocol, void **interface); ++ ++ void *reserved; ++ ++ grub_efi_status_t ++ (*register_protocol_notify) (grub_efi_guid_t * protocol, ++ grub_efi_event_t event, void **registration); ++ ++ grub_efi_status_t ++ (*locate_handle) (grub_efi_locate_search_type_t search_type, ++ grub_efi_guid_t * protocol, ++ void *search_key, ++ grub_efi_uintn_t * buffer_size, ++ grub_efi_handle_t * buffer); ++ ++ grub_efi_status_t ++ (*locate_device_path) (grub_efi_guid_t * protocol, ++ grub_efi_device_path_t ** device_path, ++ grub_efi_handle_t * device); ++ ++ grub_efi_status_t ++ (*install_configuration_table) (grub_efi_guid_t * guid, void *table); ++ ++ grub_efi_status_t ++ (*load_image) (grub_efi_boolean_t boot_policy, ++ grub_efi_handle_t parent_image_handle, ++ grub_efi_device_path_t * file_path, ++ void *source_buffer, ++ grub_efi_uintn_t source_size, ++ grub_efi_handle_t * image_handle); ++ ++ grub_efi_status_t ++ (*start_image) (grub_efi_handle_t image_handle, ++ grub_efi_uintn_t * exit_data_size, ++ grub_efi_char16_t ** exit_data); ++ ++ grub_efi_status_t ++ (*exit) (grub_efi_handle_t image_handle, ++ grub_efi_status_t exit_status, ++ grub_efi_uintn_t exit_data_size, ++ grub_efi_char16_t * exit_data) __attribute__ ((noreturn)); ++ ++ grub_efi_status_t (*unload_image) (grub_efi_handle_t image_handle); ++ ++ grub_efi_status_t ++ (*exit_boot_services) (grub_efi_handle_t image_handle, ++ grub_efi_uintn_t map_key); ++ ++ grub_efi_status_t (*get_next_monotonic_count) (grub_efi_uint64_t * count); ++ ++ grub_efi_status_t (*stall) (grub_efi_uintn_t microseconds); ++ ++ grub_efi_status_t ++ (*set_watchdog_timer) (grub_efi_uintn_t timeout, ++ grub_efi_uint64_t watchdog_code, ++ grub_efi_uintn_t data_size, ++ grub_efi_char16_t * watchdog_data); ++ ++ grub_efi_status_t ++ (*connect_controller) (grub_efi_handle_t controller_handle, ++ grub_efi_handle_t * driver_image_handle, ++ grub_efi_device_path_protocol_t * ++ remaining_device_path, ++ grub_efi_boolean_t recursive); ++ ++ grub_efi_status_t ++ (*disconnect_controller) (grub_efi_handle_t controller_handle, ++ grub_efi_handle_t driver_image_handle, ++ grub_efi_handle_t child_handle); ++ ++ grub_efi_status_t ++ (*open_protocol) (grub_efi_handle_t handle, ++ grub_efi_guid_t * protocol, ++ void **interface, ++ grub_efi_handle_t agent_handle, ++ grub_efi_handle_t controller_handle, ++ grub_efi_uint32_t attributes); ++ ++ grub_efi_status_t ++ (*close_protocol) (grub_efi_handle_t handle, ++ grub_efi_guid_t * protocol, ++ grub_efi_handle_t agent_handle, ++ grub_efi_handle_t controller_handle); ++ ++ grub_efi_status_t ++ (*open_protocol_information) (grub_efi_handle_t handle, ++ grub_efi_guid_t * protocol, ++ grub_efi_open_protocol_information_entry_t ++ ** entry_buffer, ++ grub_efi_uintn_t * entry_count); ++ ++ grub_efi_status_t ++ (*protocols_per_handle) (grub_efi_handle_t handle, ++ grub_efi_guid_t *** protocol_buffer, ++ grub_efi_uintn_t * protocol_buffer_count); ++ ++ grub_efi_status_t ++ (*locate_handle_buffer) (grub_efi_locate_search_type_t search_type, ++ grub_efi_guid_t * protocol, ++ void *search_key, ++ grub_efi_uintn_t * no_handles, ++ grub_efi_handle_t ** buffer); ++ ++ grub_efi_status_t ++ (*locate_protocol) (grub_efi_guid_t * protocol, ++ void *registration, void **interface); ++ ++ grub_efi_status_t ++ (*install_multiple_protocol_interfaces) (grub_efi_handle_t * handle, ...); ++ ++ grub_efi_status_t ++ (*uninstall_multiple_protocol_interfaces) (grub_efi_handle_t handle, ...); ++ ++ grub_efi_status_t ++ (*calculate_crc32) (void *data, ++ grub_efi_uintn_t data_size, ++ grub_efi_uint32_t * crc32); ++ ++ void (*copy_mem) (void *destination, void *source, grub_efi_uintn_t length); ++ ++ void ++ (*set_mem) (void *buffer, grub_efi_uintn_t size, grub_efi_uint8_t value); ++}; ++typedef struct grub_efi_boot_services grub_efi_boot_services_t; ++ ++struct grub_efi_runtime_services ++{ ++ grub_efi_table_header_t hdr; ++ ++ grub_efi_status_t ++ (*get_time) (grub_efi_time_t * time, ++ grub_efi_time_capabilities_t * capabilities); ++ ++ grub_efi_status_t (*set_time) (grub_efi_time_t * time); ++ ++ grub_efi_status_t ++ (*get_wakeup_time) (grub_efi_boolean_t * enabled, ++ grub_efi_boolean_t * pending, grub_efi_time_t * time); ++ ++ grub_efi_status_t ++ (*set_wakeup_time) (grub_efi_boolean_t enabled, grub_efi_time_t * time); ++ ++ grub_efi_status_t ++ (*set_virtual_address_map) (grub_efi_uintn_t memory_map_size, ++ grub_efi_uintn_t descriptor_size, ++ grub_efi_uint32_t descriptor_version, ++ grub_efi_memory_descriptor_t * virtual_map); ++ ++ grub_efi_status_t ++ (*convert_pointer) (grub_efi_uintn_t debug_disposition, void **address); ++ ++ grub_efi_status_t ++ (*get_variable) (grub_efi_char16_t * variable_name, ++ grub_efi_guid_t * vendor_guid, ++ grub_efi_uint32_t * attributes, ++ grub_efi_uintn_t * data_size, void *data); ++ ++ grub_efi_status_t ++ (*get_next_variable_name) (grub_efi_uintn_t * variable_name_size, ++ grub_efi_char16_t * variable_name, ++ grub_efi_guid_t * vendor_guid); ++ ++ grub_efi_status_t ++ (*set_variable) (grub_efi_char16_t * variable_name, ++ grub_efi_guid_t * vendor_guid, ++ grub_efi_uint32_t attributes, ++ grub_efi_uintn_t data_size, void *data); ++ ++ grub_efi_status_t ++ (*get_next_high_monotonic_count) (grub_efi_uint32_t * high_count); ++ ++ void ++ (*reset_system) (grub_efi_reset_type_t reset_type, ++ grub_efi_status_t reset_status, ++ grub_efi_uintn_t data_size, ++ grub_efi_char16_t * reset_data); ++}; ++typedef struct grub_efi_runtime_services grub_efi_runtime_services_t; ++ ++struct grub_efi_configuration_table ++{ ++ grub_efi_guid_t vendor_guid; ++ void *vendor_table; ++}; ++typedef struct grub_efi_configuration_table grub_efi_configuration_table_t; ++ ++struct grub_efi_simple_input_interface ++{ ++ grub_efi_status_t ++ (*reset) (struct grub_efi_simple_input_interface * this, ++ grub_efi_boolean_t extended_verification); ++ ++ grub_efi_status_t ++ (*read_key_stroke) (struct grub_efi_simple_input_interface * this, ++ grub_efi_input_key_t * key); ++ ++ grub_efi_event_t wait_for_key; ++}; ++typedef struct grub_efi_simple_input_interface ++ grub_efi_simple_input_interface_t; ++ ++struct grub_efi_simple_text_output_interface ++{ ++ grub_efi_status_t ++ (*reset) (struct grub_efi_simple_text_output_interface * this, ++ grub_efi_boolean_t extended_verification); ++ ++ grub_efi_status_t ++ (*output_string) (struct grub_efi_simple_text_output_interface * this, ++ grub_efi_char16_t * string); ++ ++ grub_efi_status_t ++ (*test_string) (struct grub_efi_simple_text_output_interface * this, ++ grub_efi_char16_t * string); ++ ++ grub_efi_status_t ++ (*query_mode) (struct grub_efi_simple_text_output_interface * this, ++ grub_efi_uintn_t mode_number, ++ grub_efi_uintn_t * columns, grub_efi_uintn_t * rows); ++ ++ grub_efi_status_t ++ (*set_mode) (struct grub_efi_simple_text_output_interface * this, ++ grub_efi_uintn_t mode_number); ++ ++ grub_efi_status_t ++ (*set_attributes) (struct grub_efi_simple_text_output_interface * this, ++ grub_efi_uintn_t attribute); ++ ++ grub_efi_status_t ++ (*clear_screen) (struct grub_efi_simple_text_output_interface * this); ++ ++ grub_efi_status_t ++ (*set_cursor_position) (struct grub_efi_simple_text_output_interface * ++ this, grub_efi_uintn_t column, ++ grub_efi_uintn_t row); ++ ++ grub_efi_status_t ++ (*enable_cursor) (struct grub_efi_simple_text_output_interface * this, ++ grub_efi_boolean_t visible); ++ ++ grub_efi_simple_text_output_mode_t *mode; ++}; ++typedef struct grub_efi_simple_text_output_interface ++ grub_efi_simple_text_output_interface_t; ++ ++#define GRUB_EFI_BLACK 0x00 ++#define GRUB_EFI_BLUE 0x01 ++#define GRUB_EFI_GREEN 0x02 ++#define GRUB_EFI_CYAN 0x03 ++#define GRUB_EFI_RED 0x04 ++#define GRUB_EFI_MAGENTA 0x05 ++#define GRUB_EFI_BROWN 0x06 ++#define GRUB_EFI_LIGHTGRAY 0x07 ++#define GRUB_EFI_BRIGHT 0x08 ++#define GRUB_EFI_DARKGRAY 0x08 ++#define GRUB_EFI_LIGHTBLUE 0x09 ++#define GRUB_EFI_LIGHTGREEN 0x0A ++#define GRUB_EFI_LIGHTCYAN 0x0B ++#define GRUB_EFI_LIGHTRED 0x0C ++#define GRUB_EFI_LIGHTMAGENTA 0x0D ++#define GRUB_EFI_YELLOW 0x0E ++#define GRUB_EFI_WHITE 0x0F ++ ++#define GRUB_EFI_BACKGROUND_BLACK 0x00 ++#define GRUB_EFI_BACKGROUND_BLUE 0x10 ++#define GRUB_EFI_BACKGROUND_GREEN 0x20 ++#define GRUB_EFI_BACKGROUND_CYAN 0x30 ++#define GRUB_EFI_BACKGROUND_RED 0x40 ++#define GRUB_EFI_BACKGROUND_MAGENTA 0x50 ++#define GRUB_EFI_BACKGROUND_BROWN 0x60 ++#define GRUB_EFI_BACKGROUND_LIGHTGRAY 0x70 ++ ++#define GRUB_EFI_TEXT_ATTR(fg, bg) ((fg) | ((bg))) ++ ++struct grub_efi_system_table ++{ ++ grub_efi_table_header_t hdr; ++ grub_efi_char16_t *firmware_vendor; ++ grub_efi_uint32_t firmware_revision; ++ grub_efi_handle_t console_in_handler; ++ grub_efi_simple_input_interface_t *con_in; ++ grub_efi_handle_t console_out_handler; ++ grub_efi_simple_text_output_interface_t *con_out; ++ grub_efi_handle_t standard_error_handle; ++ grub_efi_simple_text_output_interface_t *std_err; ++ grub_efi_runtime_services_t *runtime_services; ++ grub_efi_boot_services_t *boot_services; ++ grub_efi_uintn_t num_table_entries; ++ grub_efi_configuration_table_t *configuration_table; ++}; ++typedef struct grub_efi_system_table grub_efi_system_table_t; ++ ++struct grub_efi_loaded_image ++{ ++ grub_efi_uint32_t revision; ++ grub_efi_handle_t parent_handle; ++ grub_efi_system_table_t *system_table; ++ ++ grub_efi_handle_t device_handle; ++ grub_efi_device_path_t *file_path; ++ void *reserved; ++ ++ grub_efi_uint32_t load_options_size; ++ void *load_options; ++ ++ void *image_base; ++ grub_efi_uint64_t image_size; ++ grub_efi_memory_type_t image_code_type; ++ grub_efi_memory_type_t image_data_type; ++ ++ grub_efi_status_t (*unload) (grub_efi_handle_t image_handle); ++}; ++typedef struct grub_efi_loaded_image grub_efi_loaded_image_t; ++ ++struct grub_efi_disk_io ++{ ++ grub_efi_uint64_t revision; ++ grub_efi_status_t (*read) (struct grub_efi_disk_io * this, ++ grub_efi_uint32_t media_id, ++ grub_efi_uint64_t offset, ++ grub_efi_uintn_t buffer_size, void *buffer); ++ grub_efi_status_t (*write) (struct grub_efi_disk_io * this, ++ grub_efi_uint32_t media_id, ++ grub_efi_uint64_t offset, ++ grub_efi_uintn_t buffer_size, void *buffer); ++}; ++typedef struct grub_efi_disk_io grub_efi_disk_io_t; ++ ++struct grub_efi_block_io_media ++{ ++ grub_efi_uint32_t media_id; ++ grub_efi_boolean_t removable_media; ++ grub_efi_boolean_t media_present; ++ grub_efi_boolean_t logical_partition; ++ grub_efi_boolean_t read_only; ++ grub_efi_boolean_t write_caching; ++ grub_efi_uint8_t pad[3]; ++ grub_efi_uint32_t block_size; ++ grub_efi_uint32_t io_align; ++ grub_efi_uint8_t pad2[4]; ++ grub_efi_lba_t last_block; ++}; ++typedef struct grub_efi_block_io_media grub_efi_block_io_media_t; ++ ++struct grub_efi_block_io ++{ ++ grub_efi_uint64_t revision; ++ grub_efi_block_io_media_t *media; ++ grub_efi_status_t (*reset) (struct grub_efi_block_io * this, ++ grub_efi_boolean_t extended_verification); ++ grub_efi_status_t (*read_blocks) (struct grub_efi_block_io * this, ++ grub_efi_uint32_t media_id, ++ grub_efi_lba_t lba, ++ grub_efi_uintn_t buffer_size, ++ void *buffer); ++ grub_efi_status_t (*write_blocks) (struct grub_efi_block_io * this, ++ grub_efi_uint32_t media_id, ++ grub_efi_lba_t lba, ++ grub_efi_uintn_t buffer_size, ++ void *buffer); ++ grub_efi_status_t (*flush_blocks) (struct grub_efi_block_io * this); ++}; ++typedef struct grub_efi_block_io grub_efi_block_io_t; ++ ++struct grub_efi_pixel_bitmask ++{ ++ grub_efi_uint32_t red_mask; ++ grub_efi_uint32_t green_mask; ++ grub_efi_uint32_t blue_mask; ++ grub_efi_uint32_t reserved_mask; ++}; ++typedef struct grub_efi_pixel_bitmask grub_efi_pixel_bitmask_t; ++ ++enum grub_efi_graphics_pixel_format ++{ ++ GRUB_EFI_PIXEL_RGBR_8BIT_PER_COLOR, ++ GRUB_EFI_PIXEL_BGRR_8BIT_PER_COLOR, ++ GRUB_EFI_PIXEL_BIT_MASK, ++ GRUB_EFI_PIXEL_BLT_ONLY, ++}; ++typedef enum grub_efi_graphics_pixel_format grub_efi_graphics_pixel_format_t; ++ ++struct grub_efi_graphics_output_mode_information ++{ ++ grub_efi_uint32_t version; ++ grub_efi_uint32_t horizontal_resolution; ++ grub_efi_uint32_t vertical_resolution; ++ grub_efi_graphics_pixel_format_t pixel_format; ++ grub_efi_pixel_bitmask_t pixel_information; ++ grub_efi_uint32_t pixels_per_scan_line; ++}; ++typedef struct grub_efi_graphics_output_mode_information ++ grub_efi_graphics_output_mode_information_t; ++ ++struct grub_efi_graphics_output_bgrr_pixel ++{ ++ grub_efi_uint8_t blue; ++ grub_efi_uint8_t green; ++ grub_efi_uint8_t red; ++ grub_efi_uint8_t reserved; ++}; ++typedef struct grub_efi_graphics_output_bgrr_pixel ++ grub_efi_graphics_output_bgrr_pixel_t; ++typedef struct grub_efi_graphics_output_bgrr_pixel ++ grub_efi_graphics_output_blt_pixel_t; ++typedef struct grub_efi_graphics_output_bgrr_pixel ++ grub_efi_uga_pixel_t; ++ ++struct grub_efi_graphics_output_rgbr_pixel ++{ ++ grub_efi_uint8_t red; ++ grub_efi_uint8_t green; ++ grub_efi_uint8_t blue; ++ grub_efi_uint8_t reserved; ++}; ++typedef struct grub_efi_graphics_output_rgbr_pixel ++ grub_efi_graphics_output_rgbr_pixel_t; ++ ++union grub_efi_graphics_output_pixel ++{ ++ grub_efi_graphics_output_rgbr_pixel_t rgbr; ++ grub_efi_graphics_output_bgrr_pixel_t bgrr; ++ grub_efi_uint32_t raw; ++}; ++typedef union grub_efi_graphics_output_pixel ++ grub_efi_graphics_output_pixel_t; ++ ++enum grub_efi_graphics_output_blt_operation ++{ ++ GRUB_EFI_BLT_VIDEO_FILL, ++ GRUB_EFI_BLT_VIDEO_TO_BLT_BUFFER, ++ GRUB_EFI_BLT_BUFFER_TO_VIDEO, ++ GRUB_EFI_BLT_VIDEO_TO_VIDEO, ++}; ++typedef enum grub_efi_graphics_output_blt_operation ++ grub_efi_graphics_output_blt_operation_t; ++ ++struct grub_efi_graphics_output_mode ++{ ++ grub_efi_uint32_t max_mode; ++ grub_efi_uint32_t mode; ++ grub_efi_graphics_output_mode_information_t *info; ++ grub_efi_uintn_t size_of_info; ++ grub_efi_physical_address_t frame_buffer_base; ++ grub_efi_uintn_t frame_buffer_size; ++}; ++typedef struct grub_efi_graphics_output_mode grub_efi_graphics_output_mode_t; ++ ++struct grub_efi_graphics_output ++{ ++ grub_efi_status_t (*query_mode) (struct grub_efi_graphics_output * this, ++ grub_efi_uint32_t mode_number, ++ grub_efi_uintn_t * size_of_info, ++ grub_efi_graphics_output_mode_information_t ++ ** info); ++ grub_efi_status_t (*set_mode) (struct grub_efi_graphics_output * this, ++ grub_efi_uint32_t mode_number); ++ ++ grub_efi_status_t (*blt) (struct grub_efi_graphics_output * this, ++ grub_efi_graphics_output_blt_pixel_t * blt_buffer, ++ grub_efi_graphics_output_blt_operation_t ++ blt_operation, grub_efi_uintn_t src_x, ++ grub_efi_uintn_t src_y, grub_efi_uintn_t dest_x, ++ grub_efi_uintn_t dest_y, grub_efi_uintn_t width, ++ grub_efi_uintn_t height, grub_efi_uintn_t delta); ++ grub_efi_graphics_output_mode_t *mode; ++}; ++typedef struct grub_efi_graphics_output grub_efi_graphics_output_t; ++ ++typedef enum { ++ EfiUgaVideoFill, ++ EfiUgaVideoToBltBuffer, ++ EfiUgaBltBufferToVideo, ++ EfiUgaVideoToVideo, ++ EfiUgaBltMax ++} grub_efi_uga_blt_operation_t; ++ ++typedef enum { ++ grub_efi_pci_io_width_uint8, ++ grub_efi_pci_io_width_uint16, ++ grub_efi_pci_io_width_uint32, ++ grub_efi_pci_io_width_uint64, ++ grub_efi_pci_io_width_fifo_uint8, ++ grub_efi_pci_io_width_fifo_uint16, ++ grub_efi_pci_io_width_fifo_uint32, ++ grub_efi_pci_io_width_fifo_uint64, ++ grub_efi_pci_io_width_fill_uint8, ++ grub_efi_pci_io_width_fill_uint16, ++ grub_efi_pci_io_width_fill_uint32, ++ grub_efi_pci_io_width_fill_uint64, ++ grub_efi_pci_io_width_maximum ++} grub_efi_pci_io_width; ++ ++struct grub_efi_pci_io; ++ ++typedef struct ++{ ++ grub_efi_status_t(*read) (struct grub_efi_pci_io *this, ++ grub_efi_pci_io_width width, ++ grub_efi_uint8_t bar_index, ++ grub_efi_uint64_t offset, ++ grub_efi_uintn_t count, ++ void *buffer); ++ grub_efi_status_t(*write) (struct grub_efi_pci_io *this, ++ grub_efi_pci_io_width width, ++ grub_efi_uint8_t bar_index, ++ grub_efi_uint64_t offset, ++ grub_efi_uintn_t count, ++ void *buffer); ++} grub_efi_pci_io_access_t; ++ ++typedef struct ++{ ++ grub_efi_status_t( *read) (struct grub_efi_pci_io *this, ++ grub_efi_pci_io_width width, ++ grub_efi_uint32_t offset, ++ grub_efi_uintn_t count, ++ void *buffer); ++ grub_efi_status_t( *write) (struct grub_efi_pci_io *this, ++ grub_efi_pci_io_width width, ++ grub_efi_uint32_t offset, ++ grub_efi_uintn_t count, ++ void *buffer); ++} grub_efi_pci_io_config_access_t; ++ ++typedef enum { ++ grub_efi_pci_io_operation_bus_masterread, ++ grub_efi_pci_io_operation_bus_masterwrite, ++ grub_efi_pci_io_operation_bus_master_common_buffer, ++ grub_efi_pci_io_operation_maximum ++} grub_efi_pci_io_operation_t; ++ ++#define GRUB_EFI_PCI_IO_ATTRIBUTE_ISA_IO 0x0002 ++#define GRUB_EFI_PCI_IO_ATTRIBUTE_VGA_PALETTE_IO 0x0004 ++#define GRUB_EFI_PCI_IO_ATTRIBUTE_VGA_MEMORY 0x0008 ++#define GRUB_EFI_PCI_IO_ATTRIBUTE_VGA_IO 0x0010 ++#define GRUB_EFI_PCI_IO_ATTRIBUTE_IDE_PRIMARY_IO 0x0020 ++#define GRUB_EFI_PCI_IO_ATTRIBUTE_IDE_SECONDARY_IO 0x0040 ++#define GRUB_EFI_PCI_IO_ATTRIBUTE_MEMORY_WRITE_COMBINE 0x0080 ++#define GRUB_EFI_PCI_IO_ATTRIBUTE_IO 0x0100 ++#define GRUB_EFI_PCI_IO_ATTRIBUTE_MEMORY 0x0200 ++#define GRUB_EFI_PCI_IO_ATTRIBUTE_BUS_MASTER 0x0400 ++#define GRUB_EFI_PCI_IO_ATTRIBUTE_MEMORY_CACHED 0x0800 ++#define GRUB_EFI_PCI_IO_ATTRIBUTE_MEMORY_DISABLE 0x1000 ++#define GRUB_EFI_PCI_IO_ATTRIBUTE_EMBEDDED_DEVICE 0x2000 ++#define GRUB_EFI_PCI_IO_ATTRIBUTE_EMBEDDED_ROM 0x4000 ++#define GRUB_EFI_PCI_IO_ATTRIBUTE_DUAL_ADDRESS_CYCLE 0x8000 ++#define GRUB_EFI_PCI_IO_ATTRIBUTE_ISA_IO_16 0x10000 ++#define GRUB_EFI_PCI_IO_ATTRIBUTE_VGA_PALETTE_IO_16 0x20000 ++#define GRUB_EFI_PCI_IO_ATTRIBUTE_VGA_IO_16 0x40000 ++ ++typedef enum { ++ grub_efi_pci_io_attribute_operation_get, ++ grub_efi_pci_io_attribute_operation_set, ++ grub_efi_pci_io_attribute_operation_enable, ++ grub_efi_pci_io_attribute_operation_disable, ++ grub_efi_pci_io_attribute_operation_supported, ++ grub_efi_pci_io_attribute_operation_maximum ++} grub_efi_pci_io_attribute_operation_t; ++ ++struct grub_efi_pci_io { ++ grub_efi_status_t (*poll_mem) (struct grub_efi_pci_io *this, ++ grub_efi_pci_io_width width, ++ grub_efi_uint8_t bar_ndex, ++ grub_efi_uint64_t offset, ++ grub_efi_uint64_t mask, ++ grub_efi_uint64_t value, ++ grub_efi_uint64_t delay, ++ grub_efi_uint64_t *result); ++ grub_efi_status_t (*poll_io) (struct grub_efi_pci_io *this, ++ grub_efi_pci_io_width Width, ++ grub_efi_uint8_t bar_index, ++ grub_efi_uint64_t offset, ++ grub_efi_uint64_t mask, ++ grub_efi_uint64_t value, ++ grub_efi_uint64_t delay, ++ grub_efi_uint64_t *result); ++ grub_efi_pci_io_access_t mem; ++ grub_efi_pci_io_access_t io; ++ grub_efi_pci_io_config_access_t pci; ++ grub_efi_status_t (*copy_mem) (struct grub_efi_pci_io *this, ++ grub_efi_pci_io_width width, ++ grub_efi_uint8_t dest_bar_index, ++ grub_efi_uint64_t dest_offset, ++ grub_efi_uint8_t src_bar_index, ++ grub_efi_uint64_t src_offset, ++ grub_efi_uintn_t count); ++ grub_efi_status_t (*map) ( struct grub_efi_pci_io *this, ++ grub_efi_pci_io_operation_t operation, ++ void *host_address, ++ grub_efi_uintn_t *number_of_bytes, ++ grub_efi_uint64_t *device_address, ++ void **mapping); ++ grub_efi_status_t (*unmap) (struct grub_efi_pci_io *this, ++ void *mapping); ++ grub_efi_status_t (*allocate_buffer) (struct grub_efi_pci_io *this, ++ grub_efi_allocate_type_t type, ++ grub_efi_memory_type_t memory_type, ++ grub_efi_uintn_t pages, ++ void **host_address, ++ grub_efi_uint64_t attributes); ++ grub_efi_status_t (*free_buffer) (struct grub_efi_pci_io *this, ++ grub_efi_allocate_type_t type, ++ grub_efi_memory_type_t memory_type, ++ grub_efi_uintn_t pages, ++ void **host_address, ++ grub_efi_uint64_t attributes); ++ grub_efi_status_t (*flush) (struct grub_efi_pci_io *this); ++ grub_efi_status_t (*get_location) (struct grub_efi_pci_io *this, ++ grub_efi_uintn_t *segment_number, ++ grub_efi_uintn_t *bus_number, ++ grub_efi_uintn_t *device_number, ++ grub_efi_uintn_t *function_number); ++ grub_efi_status_t (*attributes) (struct grub_efi_pci_io *this, ++ grub_efi_pci_io_attribute_operation_t operation, ++ grub_efi_uint64_t attributes, ++ grub_efi_uint64_t *result); ++ grub_efi_status_t (*get_bar_attributes) (struct grub_efi_pci_io *this, ++ grub_efi_uint8_t bar_index, ++ grub_efi_uint64_t *supports, ++ void **resources); ++ grub_efi_status_t (*set_bar_attributes) (struct grub_efi_pci_io *this, ++ grub_efi_uint64_t attributes, ++ grub_efi_uint8_t bar_index, ++ grub_efi_uint64_t *offset, ++ grub_efi_uint64_t *length); ++ grub_efi_uint64_t rom_size; ++ void *rom_image; ++}; ++typedef struct grub_efi_pci_io grub_efi_pci_io_t; ++ ++struct grub_efi_pci_root_io; ++ ++typedef struct ++{ ++ grub_efi_status_t(*read) (struct grub_efi_pci_root_io *this, ++ grub_efi_pci_io_width width, ++ grub_efi_uint64_t address, ++ grub_efi_uintn_t count, ++ void *buffer); ++ grub_efi_status_t(*write) (struct grub_efi_pci_root_io *this, ++ grub_efi_pci_io_width width, ++ grub_efi_uint64_t address, ++ grub_efi_uintn_t count, ++ void *buffer); ++} grub_efi_pci_root_io_access_t; ++ ++typedef enum { ++ grub_efi_pci_root_io_operation_bus_master_read, ++ grub_efi_pci_root_io_operation_bus_master_write, ++ grub_efi_pci_root_io_operation_bus_master_common_buffer, ++ grub_efi_pci_root_io_operation_bus_master_read_64, ++ grub_efi_pci_root_io_operation_bus_master_write_64, ++ grub_efi_pci_root_io_operation_bus_master_common_buffer_64, ++ grub_efi_pci_root_io_operation_maximum ++} grub_efi_pci_root_io_operation_t; ++ ++struct grub_efi_pci_root_io { ++ grub_efi_handle_t parent; ++ grub_efi_status_t (*poll_mem) (struct grub_efi_pci_root_io *this, ++ grub_efi_pci_io_width width, ++ grub_efi_uint64_t address, ++ grub_efi_uint64_t mask, ++ grub_efi_uint64_t value, ++ grub_efi_uint64_t delay, ++ grub_efi_uint64_t *result); ++ grub_efi_status_t (*poll_io) (struct grub_efi_pci_root_io *this, ++ grub_efi_pci_io_width Width, ++ grub_efi_uint64_t address, ++ grub_efi_uint64_t mask, ++ grub_efi_uint64_t value, ++ grub_efi_uint64_t delay, ++ grub_efi_uint64_t *result); ++ grub_efi_pci_root_io_access_t mem; ++ grub_efi_pci_root_io_access_t io; ++ grub_efi_pci_root_io_access_t pci; ++ grub_efi_status_t (*copy_mem) (struct grub_efi_pci_root_io *this, ++ grub_efi_pci_io_width width, ++ grub_efi_uint64_t dest_offset, ++ grub_efi_uint64_t src_offset, ++ grub_efi_uintn_t count); ++ grub_efi_status_t (*map) ( struct grub_efi_pci_root_io *this, ++ grub_efi_pci_root_io_operation_t operation, ++ void *host_address, ++ grub_efi_uintn_t *number_of_bytes, ++ grub_efi_uint64_t *device_address, ++ void **mapping); ++ grub_efi_status_t (*unmap) (struct grub_efi_pci_root_io *this, ++ void *mapping); ++ grub_efi_status_t (*allocate_buffer) (struct grub_efi_pci_root_io *this, ++ grub_efi_allocate_type_t type, ++ grub_efi_memory_type_t memory_type, ++ grub_efi_uintn_t pages, ++ void **host_address, ++ grub_efi_uint64_t attributes); ++ grub_efi_status_t (*free_buffer) (struct grub_efi_pci_root_io *this, ++ grub_efi_uintn_t pages, ++ void **host_address); ++ grub_efi_status_t (*flush) (struct grub_efi_pci_root_io *this); ++ grub_efi_status_t (*get_attributes) (struct grub_efi_pci_root_io *this, ++ grub_efi_uint64_t *supports, ++ void **resources); ++ grub_efi_status_t (*set_attributes) (struct grub_efi_pci_root_io *this, ++ grub_efi_uint64_t attributes, ++ grub_efi_uint64_t *offset, ++ grub_efi_uint64_t *length); ++ grub_efi_status_t (*configuration) (struct grub_efi_pci_root_io *this, ++ void **resources); ++}; ++ ++typedef struct grub_efi_pci_root_io grub_efi_pci_root_io_t; ++ ++struct grub_efi_uga_draw ++{ ++ grub_efi_status_t (*get_mode) (struct grub_efi_uga_draw * this, ++ grub_efi_uint32_t *horizontal_resolution, ++ grub_efi_uint32_t *vertical_resolution, ++ grub_efi_uint32_t *color_depth, ++ grub_efi_uint32_t *refresh_rate); ++ grub_efi_status_t (*set_mode) (struct grub_efi_uga_draw * this, ++ grub_efi_uint32_t horizontal_resolution, ++ grub_efi_uint32_t vertical_resolution, ++ grub_efi_uint32_t color_depth, ++ grub_efi_uint32_t refresh_rate); ++ grub_efi_status_t (*blt) (struct grub_efi_uga_draw * this, ++ grub_efi_uga_pixel_t *blt_buffer, ++ grub_efi_uga_blt_operation_t blt_operation, ++ grub_efi_uintn_t source_x, ++ grub_efi_uintn_t source_y, ++ grub_efi_uintn_t destination_x, ++ grub_efi_uintn_t destination_y, ++ grub_efi_uintn_t width, ++ grub_efi_uintn_t height, ++ grub_efi_uintn_t delta); ++}; ++typedef struct grub_efi_uga_draw grub_efi_uga_draw_t; ++ ++typedef grub_uint32_t grub_uga_status_t; ++ ++typedef enum { ++ UgaDtParentBus = 1, ++ UgaDtGraphicsController, ++ UgaDtOutputController, ++ UgaDtOutputPort, ++ UgaDtOther ++} grub_uga_device_type_t; ++ ++typedef grub_efi_uint32_t grub_uga_device_id_t; ++ ++struct grub_uga_device_data { ++ grub_uga_device_type_t device_type; ++ grub_uga_device_id_t device_id; ++ grub_efi_uint32_t device_context_size; ++ grub_efi_uint32_t shared_context_size; ++}; ++typedef struct grub_uga_device_data grub_uga_device_data_t; ++ ++struct grub_uga_device { ++ void *device_context; ++ void *shared_context; ++ void *runtime_context; ++ struct grub_uga_device *parent_device; ++ void *bus_io_services; ++ void *stdio_services; ++ grub_uga_device_data_t device_data; ++}; ++typedef struct grub_uga_device grub_uga_device_t; ++ ++typedef enum { ++ UgaIoGetVersion = 1, ++ UgaIoGetChildDevice, ++ UgaIoStartDevice, ++ UgaIoStopDevice, ++ UgaIoFlushDevice, ++ UgaIoResetDevice, ++ UgaIoGetDeviceState, ++ UgaIoSetDeviceState, ++ UgaIoSetPowerState, ++ UgaIoGetMemoryConfiguration, ++ UgaIoSetVideoMode, ++ UgaIoCopyRectangle, ++ UgaIoGetEdidSegment, ++ UgaIoDeviceChannelOpen, ++ UgaIoDeviceChannelClose, ++ UgaIoDeviceChannelRead, ++ UgaIoDeviceChannelWrite, ++ UgaIoGetPersistentDataSize, ++ UgaIoGetPersistentData, ++ UgaIoSetPersistentData, ++ UgaIoGetDevicePropertySize, ++ UgaIoGetDeviceProperty, ++ UgaIoBtPrivateInterface ++} grub_uga_io_request_code_t; ++ ++struct grub_uga_io_request { ++ grub_uga_io_request_code_t io_request_code; ++ void *in_buffer; ++ grub_efi_uint64_t in_buffer_size; ++ grub_efi_uint64_t bytes_returned; ++}; ++typedef struct grub_uga_io_request grub_uga_io_request_t; ++ ++struct grub_efi_uga_io ++{ ++ grub_efi_status_t (*create_device) (struct grub_efi_uga_io * this, ++ grub_uga_device_t *parent_device, ++ grub_uga_device_data_t *device_data, ++ void *runtime_context, ++ grub_uga_device_t **device); ++ grub_efi_status_t (*delete_device) (struct grub_efi_uga_io * this, ++ grub_uga_device_t *device); ++ grub_uga_status_t (*dispatch_service) (grub_uga_device_t *device, ++ grub_uga_io_request_t *io_request); ++}; ++typedef struct grub_efi_uga_io grub_efi_uga_io_t; ++ ++/* XXX PJFIX add uga driver handoff stuff */ ++ ++// File Open Modes ++#define GRUB_EFI_FILE_MODE_READ 0x0000000000000001ULL ++#define GRUB_EFI_FILE_MODE_WRITE 0x0000000000000002ULL ++#define GRUB_EFI_FILE_MODE_CREATE 0x8000000000000000ULL ++ ++// File Attributes ++#define GRUB_EFI_FILE_READ_ONLY 0x0000000000000001ULL ++#define GRUB_EFI_FILE_HIDDEN 0x0000000000000002ULL ++#define GRUB_EFI_FILE_SYSTEM 0x0000000000000004ULL ++#define GRUB_EFI_FILE_RESERVED 0x0000000000000008ULL ++#define GRUB_EFI_FILE_DIRECTORY 0x0000000000000010ULL ++#define GRUB_EFI_FILE_ARCHIVE 0x0000000000000020ULL ++#define GRUB_EFI_FILE_VALID_ATTR 0x0000000000000037ULL ++ ++struct grub_efi_file ++{ ++ grub_efi_uint64_t revision; ++ grub_efi_status_t (*open) (struct grub_efi_file * this, ++ struct grub_efi_file ** new_handle, ++ grub_efi_char16_t * file_name, ++ grub_efi_uint64_t open_mode, ++ grub_efi_uint64_t attributes); ++ grub_efi_status_t (*close) (struct grub_efi_file * this); ++ grub_efi_status_t (*delete) (struct grub_efi_file * this); ++ grub_efi_status_t (*read) (struct grub_efi_file * this, ++ grub_efi_uintn_t * buffer_size, ++ void * buffer); ++ grub_efi_status_t (*write) (struct grub_efi_file * this, ++ grub_efi_uintn_t * buffer_size, ++ void * buffer); ++ grub_efi_status_t (*get_position) (struct grub_efi_file * this, ++ grub_efi_uint64_t * position); ++ grub_efi_status_t (*set_position) (struct grub_efi_file * this, ++ grub_efi_uint64_t position); ++ grub_efi_status_t (*get_info) (struct grub_efi_file * this, ++ grub_efi_guid_t * information_type, ++ grub_efi_uintn_t * buffer_size, ++ void * buffer); ++ grub_efi_status_t (*set_info) (struct grub_efi_file * this, ++ grub_efi_guid_t * information_type, ++ grub_efi_uintn_t buffer_size, ++ void * buffer); ++ grub_efi_status_t (*flush) (struct grub_efi_file * this); ++}; ++typedef struct grub_efi_file grub_efi_file_t; ++ ++struct grub_efi_simple_file_system ++{ ++ grub_efi_uint64_t revision; ++ grub_efi_status_t (*open_volume) (struct grub_efi_simple_file_system * this, ++ grub_efi_file_t ** root); ++}; ++typedef struct grub_efi_simple_file_system grub_efi_simple_file_system_t; ++ ++struct grub_efi_serial_io_mode ++{ ++ grub_efi_uint32_t control_mask; ++ grub_efi_uint32_t timeout; ++ grub_efi_uint64_t baud_rate; ++ grub_efi_uint32_t receive_fifo_depth; ++ grub_efi_uint32_t data_bits; ++ grub_efi_uint32_t parity; ++ grub_efi_uint32_t stop_bits; ++}; ++typedef struct grub_efi_serial_io_mode grub_efi_serial_io_mode_t; ++ ++enum grub_efi_parity ++{ ++ GRUB_EFI_DEFAULT_PARITY, ++ GRUB_EFI_NO_PARITY, ++ GRUB_EFI_EVEN_PARITY, ++ GRUB_EFI_ODD_PARITY, ++ GRUB_EFI_MARK_PARITY, ++ GRUB_EFI_SPACE_PARITY ++}; ++typedef enum grub_efi_parity grub_efi_parity_t; ++ ++enum grub_efi_stop_bits ++{ ++ GRUB_EFI_DEFAULT_STOP_BITS, ++ GRUB_EFI_ONE_STOP_BIT, ++ GRUB_EFI_ONE_FIVE_STOP_BITS, ++ GRUB_EFI_TWO_STOP_BITS ++}; ++typedef enum grub_efi_stop_bits grub_efi_stop_bits_t; ++ ++#define GRUB_EFI_SERIAL_CLEAR_TO_SEND 0x0010 ++#define GRUB_EFI_SERIAL_DATA_SET_READY 0x0020 ++#define GRUB_EFI_SERIAL_RING_INDICATE 0x0040 ++#define GRUB_EFI_SERIAL_CARRIER_DETECT 0x0080 ++#define GRUB_EFI_SERIAL_REQUEST_TO_SEND 0x0002 ++#define GRUB_EFI_SERIAL_DATA_TERMINAL_READY 0x0001 ++#define GRUB_EFI_SERIAL_INPUT_BUFFER_EMPTY 0x0100 ++#define GRUB_EFI_SERIAL_OUTPUT_BUFFER_EMPTY 0x0200 ++#define GRUB_EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE 0x1000 ++#define GRUB_EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE 0x2000 ++#define GRUB_EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE 0x4000 ++ ++struct grub_efi_serial_io ++{ ++ grub_efi_uint32_t revision; ++ grub_efi_status_t (*reset) (struct grub_efi_serial_io * this); ++ grub_efi_status_t (*set_attributes) (struct grub_efi_serial_io * this, ++ grub_efi_uint64_t baud_rate, ++ grub_efi_uint32_t receive_fifo_depth, ++ grub_efi_uint32_t timeout, ++ grub_efi_parity_t parity, ++ grub_efi_uint8_t data_bits, ++ grub_efi_stop_bits_t stop_bits); ++ grub_efi_status_t (*set_control_bits) (struct grub_efi_serial_io * this, ++ grub_efi_uint32_t control); ++ grub_efi_status_t (*get_control_bits) (struct grub_efi_serial_io * this, ++ grub_efi_uint32_t * control); ++ grub_efi_status_t (*write) (struct grub_efi_serial_io * this, ++ grub_efi_uintn_t * buffer_size, ++ void * buffer); ++ grub_efi_status_t (*read) (struct grub_efi_serial_io * this, ++ grub_efi_uintn_t * buffer_size, ++ void * buffer); ++ grub_efi_serial_io_mode_t *mode; ++}; ++typedef struct grub_efi_serial_io grub_efi_serial_io_t; ++ ++#endif /* ! GRUB_EFI_API_HEADER */ +diff --git a/efi/grub/efi/console_control.h b/efi/grub/efi/console_control.h +new file mode 100644 +index 0000000..ffc4305 +--- /dev/null ++++ b/efi/grub/efi/console_control.h +@@ -0,0 +1,59 @@ ++/* console_control.h - definitions of the console control protocol */ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2006 Free Software Foundation, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++/* The console control protocol is not a part of the EFI spec, ++ but defined in Intel's Sample Implementation. */ ++ ++#ifndef GRUB_EFI_CONSOLE_CONTROL_HEADER ++#define GRUB_EFI_CONSOLE_CONTROL_HEADER 1 ++ ++#define GRUB_EFI_CONSOLE_CONTROL_GUID \ ++ { 0xf42f7782, 0x12e, 0x4c12, \ ++ { 0x99, 0x56, 0x49, 0xf9, 0x43, 0x4, 0xf7, 0x21 } \ ++ } ++ ++enum grub_efi_screen_mode ++{ ++ GRUB_EFI_SCREEN_TEXT, ++ GRUB_EFI_SCREEN_GRAPHICS, ++ GRUB_EFI_SCREEN_TEXT_MAX_VALUE ++}; ++typedef enum grub_efi_screen_mode grub_efi_screen_mode_t; ++ ++struct grub_efi_console_control_protocol ++{ ++ grub_efi_status_t ++ (*get_mode) (struct grub_efi_console_control_protocol * this, ++ grub_efi_screen_mode_t * mode, ++ grub_efi_boolean_t * uga_exists, ++ grub_efi_boolean_t * std_in_locked); ++ ++ grub_efi_status_t ++ (*set_mode) (struct grub_efi_console_control_protocol * this, ++ grub_efi_screen_mode_t mode); ++ ++ grub_efi_status_t ++ (*lock_std_in) (struct grub_efi_console_control_protocol * this, ++ grub_efi_char16_t * password); ++}; ++typedef struct grub_efi_console_control_protocol ++ grub_efi_console_control_protocol_t; ++ ++#endif /* ! GRUB_EFI_CONSOLE_CONTROL_HEADER */ +diff --git a/efi/grub/efi/efi.h b/efi/grub/efi/efi.h +new file mode 100644 +index 0000000..301f9d9 +--- /dev/null ++++ b/efi/grub/efi/efi.h +@@ -0,0 +1,85 @@ ++/* efi.h - declare variables and functions for EFI support */ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2006 Free Software Foundation, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#ifndef GRUB_EFI_EFI_HEADER ++#define GRUB_EFI_EFI_HEADER 1 ++ ++#include <grub/types.h> ++#include <grub/efi/api.h> ++ ++/* Functions. */ ++grub_efi_status_t ++grub_efi_locate_device_path (grub_efi_guid_t *protocol, ++ grub_efi_device_path_t **dp, ++ grub_efi_handle_t *handle); ++grub_efi_status_t ++grub_efi_locate_handle_buffer (grub_efi_locate_search_type_t search_type, ++ grub_efi_guid_t *protocol, ++ void *search_key, ++ grub_efi_uintn_t *no_handles, ++ grub_efi_handle_t **buffer); ++void *grub_efi_locate_protocol (grub_efi_guid_t * protocol, ++ void *registration); ++grub_efi_handle_t *grub_efi_locate_handle (grub_efi_locate_search_type_t ++ search_type, ++ grub_efi_guid_t * protocol, ++ void *search_key, ++ grub_efi_uintn_t * num_handles); ++void *grub_efi_open_protocol (grub_efi_handle_t handle, ++ grub_efi_guid_t * protocol, ++ grub_efi_uint32_t attributes); ++int grub_efi_set_text_mode (int on); ++void grub_efi_stall (grub_efi_uintn_t microseconds); ++void *grub_efi_allocate_pool (grub_efi_uintn_t size); ++void grub_efi_free_pool (void *buffer); ++void *grub_efi_allocate_anypages (grub_efi_uintn_t pages); ++void *grub_efi_allocate_pages (grub_efi_physical_address_t address, ++ grub_efi_uintn_t pages); ++void *grub_efi_allocate_runtime_pages (grub_efi_physical_address_t address, ++ grub_efi_uintn_t pages); ++void ++grub_efi_free_pages (grub_efi_physical_address_t address, ++ grub_efi_uintn_t pages); ++int ++grub_efi_get_memory_map (grub_efi_uintn_t * map_key, ++ grub_efi_uintn_t * descriptor_size, ++ grub_efi_uint32_t * descriptor_version); ++grub_efi_loaded_image_t *grub_efi_get_loaded_image (grub_efi_handle_t ++ image_handle); ++void grub_efi_print_device_path (grub_efi_device_path_t * dp); ++char *grub_efi_get_filename (grub_efi_device_path_t * dp); ++grub_efi_device_path_t *grub_efi_get_device_path (grub_efi_handle_t handle); ++int grub_efi_exit_boot_services (grub_efi_uintn_t map_key); ++ ++void grub_efi_mm_init (void); ++void grub_efi_mm_fini (void); ++void grub_efi_init (void); ++void grub_efi_fini (void); ++void grub_efi_set_prefix (void); ++ ++/* Variables. */ ++extern void *mmap_buf; ++extern grub_efi_uintn_t mmap_size; ++extern grub_efi_uintn_t mmap_pages; ++ ++extern grub_efi_system_table_t *grub_efi_system_table; ++extern grub_efi_handle_t grub_efi_image_handle; ++ ++#endif /* ! GRUB_EFI_EFI_HEADER */ +diff --git a/efi/grub/efi/eficall.h b/efi/grub/efi/eficall.h +new file mode 100644 +index 0000000..2e79e04 +--- /dev/null ++++ b/efi/grub/efi/eficall.h +@@ -0,0 +1,162 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2006 Free Software Foundation, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#ifndef _EFI_CALL_INCLUDE_ ++#define _EFI_CALL_INCLUDE_ 1 ++ ++#include <grub/types.h> ++ ++#ifndef __x86_64__ ++#ifdef EFI_FUNCTION_WRAPPER ++#undef EFI_FUNCTION_WRAPPER ++#endif ++#endif ++ ++#ifdef EFI_FUNCTION_WRAPPER ++typedef long EFI_STATUS; ++ ++EFI_STATUS x64_call0 (unsigned long func); ++EFI_STATUS x64_call1 (unsigned long func, unsigned long a); ++EFI_STATUS x64_call2 (unsigned long func, unsigned long a, unsigned long b); ++EFI_STATUS x64_call3 (unsigned long func, unsigned long a, ++ unsigned long b, unsigned long c); ++EFI_STATUS x64_call4 (unsigned long func, unsigned long a, ++ unsigned long b, unsigned long c, unsigned long d); ++EFI_STATUS x64_call5 (unsigned long func, unsigned long a, ++ unsigned long b, unsigned long c, ++ unsigned long d, unsigned long e); ++EFI_STATUS x64_call6 (unsigned long func, unsigned long a, ++ unsigned long b, unsigned long c, ++ unsigned long d, unsigned long e, unsigned long f); ++EFI_STATUS x64_call7 (unsigned long func, unsigned long a, ++ unsigned long b, unsigned long c, ++ unsigned long d, unsigned long e, ++ unsigned long f, unsigned long g); ++EFI_STATUS x64_call8 (unsigned long func, unsigned long a, ++ unsigned long b, unsigned long c, ++ unsigned long d, unsigned long e, ++ unsigned long f, unsigned long g, ++ unsigned long h); ++EFI_STATUS x64_call9 (unsigned long func, unsigned long a, ++ unsigned long b, unsigned long c, ++ unsigned long d, unsigned long e, ++ unsigned long f, unsigned long g, ++ unsigned long h, unsigned long i); ++EFI_STATUS x64_call10(unsigned long func, unsigned long a, ++ unsigned long b, unsigned long c, ++ unsigned long d, unsigned long e, ++ unsigned long f, unsigned long g, ++ unsigned long h, unsigned long i, ++ unsigned long j); ++ ++#define Call_Service(func) x64_call0((unsigned long)func) ++ ++#define Call_Service_1(func,a) x64_call1((unsigned long)func, \ ++ (unsigned long)a) ++ ++#define Call_Service_2(func,a,b) x64_call2((unsigned long)func, \ ++ (unsigned long)a, \ ++ (unsigned long)b) ++ ++#define Call_Service_3(func,a,b,c) x64_call3((unsigned long)func, \ ++ (unsigned long)a, \ ++ (unsigned long)b, \ ++ (unsigned long)c) ++ ++#define Call_Service_4(func,a,b,c,d) x64_call4((unsigned long)func, \ ++ (unsigned long)a, \ ++ (unsigned long)b, \ ++ (unsigned long)c, \ ++ (unsigned long)d) ++ ++#define Call_Service_5(func,a,b,c,d,e) x64_call5((unsigned long)func, \ ++ (unsigned long)a, \ ++ (unsigned long)b, \ ++ (unsigned long)c, \ ++ (unsigned long)d, \ ++ (unsigned long)e) ++ ++#define Call_Service_6(func,a,b,c,d,e,f) x64_call6((unsigned long)func, \ ++ (unsigned long)a, \ ++ (unsigned long)b, \ ++ (unsigned long)c, \ ++ (unsigned long)d, \ ++ (unsigned long)e, \ ++ (unsigned long)f) ++ ++#define Call_Service_7(func,a,b,c,d,e,f,g) x64_call7((unsigned long)func, \ ++ (unsigned long)a, \ ++ (unsigned long)b, \ ++ (unsigned long)c, \ ++ (unsigned long)d, \ ++ (unsigned long)e, \ ++ (unsigned long)f, \ ++ (unsigned long)g) ++ ++#define Call_Service_8(func,a,b,c,d,e,f,g,h) x64_call8((unsigned long)func, \ ++ (unsigned long)a, \ ++ (unsigned long)b, \ ++ (unsigned long)c, \ ++ (unsigned long)d, \ ++ (unsigned long)e, \ ++ (unsigned long)f, \ ++ (unsigned long)g, \ ++ (unsigned long)h) ++ ++#define Call_Service_9(func,a,b,c,d,e,f,g,h,i) x64_call9((unsigned long)func, \ ++ (unsigned long)a, \ ++ (unsigned long)b, \ ++ (unsigned long)c, \ ++ (unsigned long)d, \ ++ (unsigned long)e, \ ++ (unsigned long)f, \ ++ (unsigned long)g, \ ++ (unsigned long)h, \ ++ (unsigned long)i) ++ ++#define Call_Service_10(func,a,b,c,d,e,f,g,h,i,j) \ ++ x64_call10((unsigned long)func, \ ++ (unsigned long)a, \ ++ (unsigned long)b, \ ++ (unsigned long)c, \ ++ (unsigned long)d, \ ++ (unsigned long)e, \ ++ (unsigned long)f, \ ++ (unsigned long)g, \ ++ (unsigned long)h, \ ++ (unsigned long)i, \ ++ (unsigned long)j) ++ ++#else ++ ++typedef long EFI_STATUS; ++#define Call_Service(func) func() ++#define Call_Service_1(func,a) func(a) ++#define Call_Service_2(func,a,b) func(a,b) ++#define Call_Service_3(func,a,b,c) func(a,b,c) ++#define Call_Service_4(func,a,b,c,d) func(a,b,c,d) ++#define Call_Service_5(func,a,b,c,d,e) func(a,b,c,d,e) ++#define Call_Service_6(func,a,b,c,d,e,f) func(a,b,c,d,e,f) ++#define Call_Service_7(func,a,b,c,d,e,f,g) func(a,b,c,d,e,f,g) ++#define Call_Service_8(func,a,b,c,d,e,f,g,h) func(a,b,c,d,e,f,g,h) ++#define Call_Service_9(func,a,b,c,d,e,f,g,h,i) func(a,b,c,d,e,f,g,h,i) ++#define Call_Service_10(func,a,b,c,d,e,f,g,h,i,j) func(a,b,c,d,e,f,g,h,i,j) ++#endif ++ ++#endif +diff --git a/efi/grub/efi/misc.h b/efi/grub/efi/misc.h +new file mode 100644 +index 0000000..e06a2fb +--- /dev/null ++++ b/efi/grub/efi/misc.h +@@ -0,0 +1,60 @@ ++/* misc.h - prototypes for misc EFI functions */ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2002,2003,2005,2006 Free Software Foundation, Inc. ++ * ++ * GRUB is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with GRUB; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#ifndef GRUB_EFI_MISC_HEADER ++#define GRUB_EFI_MISC_HEADER 1 ++ ++struct e820_entry; ++void e820_map_from_efi_map (struct e820_entry *e820_map, ++ int *e820_nr_map, ++ grub_efi_memory_descriptor_t *memory_map, ++ grub_efi_uintn_t desc_size, ++ grub_efi_uintn_t memory_map_size); ++ ++/* Initialize the console system. */ ++void grub_console_init (void); ++/* Finish the console system. */ ++void grub_console_fini (void); ++ ++void grub_efidisk_init (void); ++void grub_efidisk_fini (void); ++grub_efi_handle_t grub_efidisk_get_current_bdev_handle (void); ++int grub_get_drive_partition_from_bdev_handle (grub_efi_handle_t handle, ++ unsigned long *drive, ++ unsigned long *partition); ++ ++char *grub_efi_file_path_to_path_name (grub_efi_device_path_t *file_path); ++void grub_load_saved_default (grub_efi_handle_t dev_handle); ++ ++grub_efi_device_path_t * ++find_last_device_path (const grub_efi_device_path_t *dp); ++grub_efi_device_path_t * ++find_parent_device_path (const grub_efi_device_path_t *dp); ++grub_efi_device_path_t * ++duplicate_device_path (const grub_efi_device_path_t *dp); ++int ++compare_device_paths (const grub_efi_device_path_t *dp1, ++ const grub_efi_device_path_t *dp2); ++grub_efi_device_path_t * ++device_path_from_utf8 (const char *device); ++ ++extern grub_efi_guid_t simple_file_system_guid; ++ ++#endif /* ! GRUB_EFI_MISC_HEADER */ +diff --git a/efi/grub/efi/net.h b/efi/grub/efi/net.h +new file mode 100644 +index 0000000..e69de29 +diff --git a/efi/grub/efi/time.h b/efi/grub/efi/time.h +new file mode 100644 +index 0000000..55bfe68 +--- /dev/null ++++ b/efi/grub/efi/time.h +@@ -0,0 +1,31 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2006 Free Software Foundation, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, ++ * MA 02110-1301, USA. ++ */ ++ ++#ifndef GRUB_EFI_TIME_HEADER ++#define GRUB_EFI_TIME_HEADER 1 ++ ++#include <grub/symbol.h> ++ ++#define GRUB_TICKS_PER_SECOND 18 ++ ++/* Return the real time in ticks. */ ++grub_uint32_t grub_get_rtc (void); ++ ++#endif /* ! GRUB_EFI_TIME_HEADER */ +diff --git a/efi/grub/i386/linux.h b/efi/grub/i386/linux.h +new file mode 100644 +index 0000000..1545a7a +--- /dev/null ++++ b/efi/grub/i386/linux.h +@@ -0,0 +1,226 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 1999,2000,2001,2002,2003,2004 Free Software Foundation, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#ifndef GRUB_LINUX_MACHINE_HEADER ++#define GRUB_LINUX_MACHINE_HEADER 1 ++ ++#define GRUB_LINUX_MAGIC_SIGNATURE 0x53726448 /* "HdrS" */ ++#define GRUB_LINUX_DEFAULT_SETUP_SECTS 4 ++#define GRUB_LINUX_FLAG_CAN_USE_HEAP 0x80 ++#define GRUB_LINUX_INITRD_MAX_ADDRESS 0x37FFFFFF ++#define GRUB_LINUX_MAX_SETUP_SECTS 64 ++#define GRUB_LINUX_BOOT_LOADER_TYPE 0x72 ++#define GRUB_LINUX_HEAP_END_OFFSET (0x9000 - 0x200) ++ ++#define GRUB_LINUX_BZIMAGE_ADDR 0x100000 ++#define GRUB_LINUX_ZIMAGE_ADDR 0x10000 ++#define GRUB_LINUX_OLD_REAL_MODE_ADDR 0x90000 ++#define GRUB_LINUX_SETUP_STACK 0x9000 ++ ++#define GRUB_LINUX_FLAG_BIG_KERNEL 0x1 ++ ++/* Linux's video mode selection support. Actually I hate it! */ ++#define GRUB_LINUX_VID_MODE_NORMAL 0xFFFF ++#define GRUB_LINUX_VID_MODE_EXTENDED 0xFFFE ++#define GRUB_LINUX_VID_MODE_ASK 0xFFFD ++ ++#define GRUB_LINUX_CL_OFFSET 0x9000 ++#define GRUB_LINUX_CL_END_OFFSET 0x90FF ++#define GRUB_LINUX_SETUP_MOVE_SIZE 0x9100 ++#define GRUB_LINUX_CL_MAGIC 0xA33F ++ ++#if 0 ++#define GRUB_LINUX_EFI_SIGNATURE_X64 \ ++ ('4' << 24 | '6' << 16 | 'L' << 8 | 'E') ++#else ++#define GRUB_LINUX_EFI_SIGNATURE_X64 \ ++ ('L' << 24 | 'I' << 16 | 'F' << 8 | 'E') ++#endif ++ ++#ifndef ASM_FILE ++ ++/* For the Linux/i386 boot protocol version 2.07. */ ++struct grub_linux_kernel_header ++{ ++ grub_uint8_t setup_sects; /* The size of the setup in sectors */ ++ grub_uint16_t root_flags; /* If the root is mounted readonly */ ++ grub_uint32_t syssize; /* obsolete */ ++ grub_uint16_t ram_size; /* obsolete */ ++ grub_uint16_t vid_mode; /* Video mode control */ ++ grub_uint16_t root_dev; /* Default root device number */ ++ grub_uint16_t boot_flag; /* 0xAA55 magic number */ ++ grub_uint8_t jump_ins; /* Jump instruction */ ++ grub_uint8_t jump_off; /* Jump offset */ ++ grub_uint32_t header; /* Magic signature "HdrS" */ ++ grub_uint16_t version; /* Boot protocol version supported */ ++ grub_uint32_t realmode_swtch; /* Boot loader hook */ ++ grub_uint16_t start_sys; /* The load-low segment (obsolete) */ ++ grub_uint16_t kernel_version; /* Points to kernel version string */ ++ grub_uint8_t type_of_loader; /* Boot loader identifier */ ++ grub_uint8_t loadflags; /* Boot protocol option flags */ ++ grub_uint16_t setup_move_size;/* Move to high memory size */ ++ grub_uint32_t code32_start; /* Boot loader hook */ ++ grub_uint32_t ramdisk_image; /* initrd load address */ ++ grub_uint32_t ramdisk_size; /* initrd size */ ++ grub_uint32_t bootsect_kludge;/* obsolete */ ++ grub_uint16_t heap_end_ptr; /* Free memory after setup end */ ++ grub_uint16_t pad1; /* Unused */ ++ grub_uint32_t cmd_line_ptr; /* Points to the kernel command line */ ++ grub_uint32_t initrd_addr_max;/* Highest address for initrd */ ++ grub_uint32_t kernel_alignment; ++ grub_uint8_t relocatable_kernel; ++ grub_uint8_t pad2[3]; ++ grub_uint32_t hardware_subarch; ++ grub_uint64_t hardware_subarch_data; ++} __attribute__ ((packed)); ++ ++/* Boot parameters for Linux based on 2.6.12. This is used by the setup ++ sectors of Linux, and must be simulated by GRUB on EFI, because ++ the setup sectors depend on BIOS. */ ++struct linux_kernel_params ++{ ++ grub_uint8_t video_cursor_x; /* 0 */ ++ grub_uint8_t video_cursor_y; ++ ++ grub_uint16_t ext_mem; /* 2 */ ++ ++ grub_uint16_t video_page; /* 4 */ ++ grub_uint8_t video_mode; /* 6 */ ++ grub_uint8_t video_width; /* 7 */ ++ ++ grub_uint8_t padding1[0xa - 0x8]; ++ ++ grub_uint16_t video_ega_bx; /* a */ ++ ++ grub_uint8_t padding2[0xe - 0xc]; ++ ++ grub_uint8_t video_height; /* e */ ++ grub_uint8_t have_vga; /* f */ ++ grub_uint16_t font_size; /* 10 */ ++ ++ grub_uint16_t lfb_width; /* 12 */ ++ grub_uint16_t lfb_height; /* 14 */ ++ grub_uint16_t lfb_depth; /* 16 */ ++ grub_uint32_t lfb_base; /* 18 */ ++ grub_uint32_t lfb_size; /* 1c */ ++ ++ grub_uint16_t cl_magic; /* 20 */ ++ grub_uint16_t cl_offset; ++ ++ grub_uint16_t lfb_line_len; /* 24 */ ++ grub_uint8_t red_mask_size; /* 26 */ ++ grub_uint8_t red_field_pos; ++ grub_uint8_t green_mask_size; ++ grub_uint8_t green_field_pos; ++ grub_uint8_t blue_mask_size; ++ grub_uint8_t blue_field_pos; ++ grub_uint8_t reserved_mask_size; ++ grub_uint8_t reserved_field_pos; ++ grub_uint16_t vesapm_segment; /* 2e */ ++ grub_uint16_t vesapm_offset; /* 30 */ ++ grub_uint16_t lfb_pages; /* 32 */ ++ grub_uint16_t vesa_attrib; /* 34 */ ++ ++ grub_uint8_t padding3[0x40 - 0x36]; ++ ++ grub_uint16_t apm_version; /* 40 */ ++ grub_uint16_t apm_code_segment; /* 42 */ ++ grub_uint32_t apm_entry; /* 44 */ ++ grub_uint16_t apm_16bit_code_segment; /* 48 */ ++ grub_uint16_t apm_data_segment; /* 4a */ ++ grub_uint16_t apm_flags; /* 4c */ ++ grub_uint32_t apm_code_len; /* 4e */ ++ grub_uint16_t apm_data_len; /* 52 */ ++ ++ grub_uint8_t padding4[0x60 - 0x54]; ++ ++ grub_uint32_t ist_signature; /* 60 */ ++ grub_uint32_t ist_command; /* 64 */ ++ grub_uint32_t ist_event; /* 68 */ ++ grub_uint32_t ist_perf_level; /* 6c */ ++ ++ grub_uint8_t padding5[0x80 - 0x70]; ++ ++ grub_uint8_t hd0_drive_info[0x10]; /* 80 */ ++ grub_uint8_t hd1_drive_info[0x10]; /* 90 */ ++ grub_uint16_t rom_config_len; /* a0 */ ++ ++ grub_uint8_t padding6[0x1b8 - 0xa2]; ++ ++ union { ++ struct { ++ grub_uint32_t padding7_1; /* 0x1b8 */ ++ grub_uint32_t padding7_2; /* 0x1bc */ ++ ++ grub_uint32_t efi_signature; /* 1c0 */ ++ grub_uint32_t efi_system_table; /* 1c4 */ ++ grub_uint32_t efi_mem_desc_size; /* 1c8 */ ++ grub_uint32_t efi_mem_desc_version; /* 1cc */ ++ grub_uint32_t efi_mmap; /* 1d0 */ ++ grub_uint32_t efi_mmap_size; /* 1d4 */ ++ grub_uint32_t efi_system_table_hi; /* 1d8 */ ++ grub_uint32_t efi_mmap_hi; /* 1dc */ ++ } dunno; ++ struct { ++ grub_uint32_t efi_system_table; /* 1b8 */ ++ ++ grub_uint32_t padding7_1; /* 0x1bc */ ++ ++ grub_uint32_t efi_signature; /* 1c0 */ ++ grub_uint32_t efi_mem_desc_size; /* 1c4 */ ++ grub_uint32_t efi_mem_desc_version; /* 1c8 */ ++ grub_uint32_t efi_mmap_size; /* 1cc */ ++ grub_uint32_t efi_mmap; /* 1d0 */ ++ ++ grub_uint8_t padding7_2[0x1e0 - 0x1d4]; /* 1d4 */ ++ } version_0204; ++ struct { ++ grub_uint32_t padding7_1; /* 0x1b8 */ ++ grub_uint32_t padding7_2; /* 0x1bc */ ++ grub_uint32_t padding7_3; /* 0x1c0 */ ++ grub_uint32_t efi_system_table; /* 0x1c4 */ ++ grub_uint32_t efi_mem_desc_size; /* 0x1c8 */ ++ grub_uint32_t efi_mem_desc_version; /* 0x1cc */ ++ grub_uint32_t efi_mmap; /* 0x1d0 */ ++ grub_uint32_t efi_mmap_size; /* 0x1d4 */ ++ grub_uint8_t padding7_4[0x1e0 - 0x1d8]; /* 0x1d8 */ ++ } version_0206; ++ }; ++ ++ grub_uint32_t alt_mem; /* 1e0 */ ++ ++ grub_uint8_t padding8[0x1e8 - 0x1e4]; /* 1e4 */ ++ ++ grub_uint8_t e820_nr_map; /* 1e8 */ ++ grub_uint8_t eddbuf_entries; /* 1e9 */ ++ grub_uint8_t edd_mbr_sig_buf_entries; /* 1ea */ ++ ++ grub_uint8_t padding9[0x1f1 - 0x1eb]; ++ ++ struct grub_linux_kernel_header hdr; /* 0x1f1 */ ++ ++ grub_uint8_t padding10[0x2d0-0x1f1-sizeof(struct grub_linux_kernel_header)]; ++ ++ grub_uint8_t e820_map[2560]; /* 0x2d0 */ ++ ++ grub_uint8_t padding11[0x1000 - 0xcd0]; ++} __attribute__ ((packed)); ++#endif /* ! ASM_FILE */ ++ ++#endif /* ! GRUB_LINUX_MACHINE_HEADER */ +diff --git a/efi/grub/i386/types.h b/efi/grub/i386/types.h +new file mode 100644 +index 0000000..ec4174e +--- /dev/null ++++ b/efi/grub/i386/types.h +@@ -0,0 +1,32 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2002,2006 Free Software Foundation, Inc. ++ * ++ * GRUB is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with GRUB; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#ifndef GRUB_TYPES_CPU_HEADER ++#define GRUB_TYPES_CPU_HEADER 1 ++ ++/* The size of void *. */ ++#define GRUB_TARGET_SIZEOF_VOID_P 4 ++ ++/* The size of long. */ ++#define GRUB_TARGET_SIZEOF_LONG 4 ++ ++/* x64_64 is little-endian. */ ++#undef GRUB_TARGET_WORDS_BIGENDIAN ++ ++#endif /* ! GRUB_TYPES_CPU_HEADER */ +diff --git a/efi/grub/misc.h b/efi/grub/misc.h +new file mode 100644 +index 0000000..5ef2226 +--- /dev/null ++++ b/efi/grub/misc.h +@@ -0,0 +1,71 @@ ++/* misc.h - prototypes for misc functions */ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2002,2003,2005,2006 Free Software Foundation, Inc. ++ * ++ * GRUB is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with GRUB; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#ifndef GRUB_MISC_HEADER ++#define GRUB_MISC_HEADER 1 ++ ++#include <stdarg.h> ++#include <grub/types.h> ++ ++#define grub_dprintf(condition, fmt, args...) \ ++ grub_real_dprintf(__FILE__, __LINE__, condition, fmt, ## args) ++ ++char *grub_stpcpy (char *dest, const char *src); ++void grub_real_dprintf (const char *file, ++ const int line, ++ const char *condition, ++ const char *fmt, ...) ++ __attribute__ ((format (printf, 4, 5))); ++void grub_exit (void) __attribute__ ((noreturn)); ++void grub_abort (void) __attribute__ ((noreturn)); ++void grub_fatal (const char *fmt, ...) __attribute__ ((noreturn)); ++grub_size_t grub_utf8_char_len(grub_uint8_t ch); ++grub_uint32_t grub_utf8_to_utf32(const grub_uint8_t *src, grub_size_t length); ++void grub_utf8_to_utf16(const grub_uint8_t *src, grub_size_t srclen, ++ grub_uint16_t *dst, grub_size_t dstlen); ++grub_uint8_t *grub_utf16_to_utf8 (grub_uint8_t * dest, ++ grub_uint16_t * src, grub_size_t size); ++ ++void *grub_malloc (grub_size_t size); ++void grub_free (void *ptr); ++ ++char *grub_strndup (const char *s, int n); ++#define strndup grub_strndup ++ ++int safe_parse_maxulong (char **str_ptr, unsigned long *myulong_ptr); ++ ++#define E820_RAM 1 ++#define E820_RESERVED 2 ++#define E820_ACPI 3 ++#define E820_NVS 4 ++#define E820_EXEC_CODE 5 ++#define E820_MAX 128 ++ ++struct e820_entry ++{ ++ grub_uint64_t addr; /* start of memory segment */ ++ grub_uint64_t size; /* size of memory segment */ ++ grub_uint32_t type; /* type of memory segment */ ++} __attribute__ ((packed)); ++ ++int grub_load_linux (char *kernel, char *arg); ++int grub_load_initrd (char *initrd); ++ ++#endif /* ! GRUB_MISC_HEADER */ +diff --git a/efi/grub/symbol.h b/efi/grub/symbol.h +new file mode 100644 +index 0000000..5204c54 +--- /dev/null ++++ b/efi/grub/symbol.h +@@ -0,0 +1,34 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 1999,2000,2001,2002,2006 Free Software Foundation, Inc. ++ * ++ * GRUB is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with GRUB; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#ifndef GRUB_SYMBOL_HEADER ++#define GRUB_SYMBOL_HEADER 1 ++ ++#include <config.h> ++ ++/* Add an underscore to a C symbol in assembler code if needed. */ ++#ifdef HAVE_ASM_USCORE ++# define EXT_C(sym) _ ## sym ++#else ++# define EXT_C(sym) sym ++#endif ++ ++#define FUNCTION(x) .globl EXT_C(x) ; .type EXT_C(x), "function" ; EXT_C(x): ++ ++#endif /* ! GRUB_SYMBOL_HEADER */ +diff --git a/efi/grub/types.h b/efi/grub/types.h +new file mode 100644 +index 0000000..173adb4 +--- /dev/null ++++ b/efi/grub/types.h +@@ -0,0 +1,158 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2002,2005,2006 Free Software Foundation, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#ifndef GRUB_TYPES_HEADER ++#define GRUB_TYPES_HEADER 1 ++ ++#include <config.h> ++#include <grub/cpu/types.h> ++ ++#define UNUSED __attribute__ ((unused)) ++ ++#ifdef GRUB_UTIL ++# define GRUB_CPU_SIZEOF_VOID_P SIZEOF_VOID_P ++# define GRUB_CPU_SIZEOF_LONG SIZEOF_LONG ++# ifdef WORDS_BIGENDIAN ++# define GRUB_CPU_WORDS_BIGENDIAN 1 ++# else ++# undef GRUB_CPU_WORDS_BIGENDIAN ++# endif ++#else /* ! GRUB_UTIL */ ++# define GRUB_CPU_SIZEOF_VOID_P GRUB_TARGET_SIZEOF_VOID_P ++# define GRUB_CPU_SIZEOF_LONG GRUB_TARGET_SIZEOF_LONG ++# ifdef GRUB_TARGET_WORDS_BIGENDIAN ++# define GRUB_CPU_WORDS_BIGENDIAN 1 ++# else ++# undef GRUB_CPU_WORDS_BIGENDIAN ++# endif ++#endif /* ! GRUB_UTIL */ ++ ++#if GRUB_CPU_SIZEOF_VOID_P != GRUB_CPU_SIZEOF_LONG ++# error "This architecture is not supported because sizeof(void *) != sizeof(long)" ++#endif ++ ++#if GRUB_CPU_SIZEOF_VOID_P != 4 && GRUB_CPU_SIZEOF_VOID_P != 8 ++# error "This architecture is not supported because sizeof(void *) != 4 and sizeof(void *) != 8" ++#endif ++ ++/* Define various wide integers. */ ++typedef signed char grub_int8_t; ++typedef short grub_int16_t; ++typedef int grub_int32_t; ++#if GRUB_CPU_SIZEOF_VOID_P == 8 ++typedef long grub_int64_t; ++#else ++typedef long long grub_int64_t; ++#endif ++ ++typedef unsigned char grub_uint8_t; ++typedef unsigned short grub_uint16_t; ++typedef unsigned grub_uint32_t; ++#if GRUB_CPU_SIZEOF_VOID_P == 8 ++typedef unsigned long grub_uint64_t; ++#else ++typedef unsigned long long grub_uint64_t; ++#endif ++ ++/* Misc types. */ ++#if GRUB_TARGET_SIZEOF_VOID_P == 8 ++typedef grub_uint64_t grub_target_addr_t; ++typedef grub_uint64_t grub_target_off_t; ++typedef grub_uint64_t grub_target_size_t; ++typedef grub_int64_t grub_target_ssize_t; ++#else ++typedef grub_uint32_t grub_target_addr_t; ++typedef grub_uint32_t grub_target_off_t; ++typedef grub_uint32_t grub_target_size_t; ++typedef grub_int32_t grub_target_ssize_t; ++#endif ++ ++typedef unsigned long grub_addr_t; ++#if GRUB_CPU_SIZEOF_VOID_P == 8 ++typedef grub_uint64_t grub_size_t; ++typedef grub_int64_t grub_ssize_t; ++#else ++typedef grub_uint32_t grub_size_t; ++typedef grub_int32_t grub_ssize_t; ++#endif ++ ++/* The type for representing a file offset. */ ++typedef grub_uint64_t grub_off_t; ++ ++/* The type for representing a disk block address. */ ++typedef grub_uint64_t grub_disk_addr_t; ++ ++/* Byte-orders. */ ++#define grub_swap_bytes16(x) \ ++({ \ ++ grub_uint16_t _x = (x); \ ++ (grub_uint16_t) ((_x << 8) | (_x >> 8)); \ ++}) ++ ++#define grub_swap_bytes32(x) \ ++({ \ ++ grub_uint32_t _x = (x); \ ++ (grub_uint32_t) ((_x << 24) \ ++ | ((_x & (grub_uint32_t) 0xFF00UL) << 8) \ ++ | ((_x & (grub_uint32_t) 0xFF0000UL) >> 8) \ ++ | (_x >> 24)); \ ++}) ++ ++#define grub_swap_bytes64(x) \ ++({ \ ++ grub_uint64_t _x = (x); \ ++ (grub_uint64_t) ((_x << 56) \ ++ | ((_x & (grub_uint64_t) 0xFF00ULL) << 40) \ ++ | ((_x & (grub_uint64_t) 0xFF0000ULL) << 24) \ ++ | ((_x & (grub_uint64_t) 0xFF000000ULL) << 8) \ ++ | ((_x & (grub_uint64_t) 0xFF00000000ULL) >> 8) \ ++ | ((_x & (grub_uint64_t) 0xFF0000000000ULL) >> 24) \ ++ | ((_x & (grub_uint64_t) 0xFF000000000000ULL) >> 40) \ ++ | (_x >> 56)); \ ++}) ++ ++#ifdef GRUB_CPU_WORDS_BIGENDIAN ++# define grub_cpu_to_le16(x) grub_swap_bytes16(x) ++# define grub_cpu_to_le32(x) grub_swap_bytes32(x) ++# define grub_cpu_to_le64(x) grub_swap_bytes64(x) ++# define grub_le_to_cpu16(x) grub_swap_bytes16(x) ++# define grub_le_to_cpu32(x) grub_swap_bytes32(x) ++# define grub_le_to_cpu64(x) grub_swap_bytes64(x) ++# define grub_cpu_to_be16(x) ((grub_uint16_t) (x)) ++# define grub_cpu_to_be32(x) ((grub_uint32_t) (x)) ++# define grub_cpu_to_be64(x) ((grub_uint64_t) (x)) ++# define grub_be_to_cpu16(x) ((grub_uint16_t) (x)) ++# define grub_be_to_cpu32(x) ((grub_uint32_t) (x)) ++# define grub_be_to_cpu64(x) ((grub_uint64_t) (x)) ++#else /* ! WORDS_BIGENDIAN */ ++# define grub_cpu_to_le16(x) ((grub_uint16_t) (x)) ++# define grub_cpu_to_le32(x) ((grub_uint32_t) (x)) ++# define grub_cpu_to_le64(x) ((grub_uint64_t) (x)) ++# define grub_le_to_cpu16(x) ((grub_uint16_t) (x)) ++# define grub_le_to_cpu32(x) ((grub_uint32_t) (x)) ++# define grub_le_to_cpu64(x) ((grub_uint64_t) (x)) ++# define grub_cpu_to_be16(x) grub_swap_bytes16(x) ++# define grub_cpu_to_be32(x) grub_swap_bytes32(x) ++# define grub_cpu_to_be64(x) grub_swap_bytes64(x) ++# define grub_be_to_cpu16(x) grub_swap_bytes16(x) ++# define grub_be_to_cpu32(x) grub_swap_bytes32(x) ++# define grub_be_to_cpu64(x) grub_swap_bytes64(x) ++#endif /* ! WORDS_BIGENDIAN */ ++ ++#endif /* ! GRUB_TYPES_HEADER */ +diff --git a/efi/grub/x86_64/linux.h b/efi/grub/x86_64/linux.h +new file mode 100644 +index 0000000..4e81ca6 +--- /dev/null ++++ b/efi/grub/x86_64/linux.h +@@ -0,0 +1,234 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 1999,2000,2001,2002,2003,2004 Free Software Foundation, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#ifndef GRUB_LINUX_MACHINE_HEADER ++#define GRUB_LINUX_MACHINE_HEADER 1 ++ ++#define GRUB_LINUX_MAGIC_SIGNATURE 0x53726448 /* "HdrS" */ ++#define GRUB_LINUX_DEFAULT_SETUP_SECTS 4 ++#define GRUB_LINUX_FLAG_CAN_USE_HEAP 0x80 ++#define GRUB_LINUX_INITRD_MAX_ADDRESS 0x37FFFFFF ++#define GRUB_LINUX_MAX_SETUP_SECTS 64 ++#define GRUB_LINUX_BOOT_LOADER_TYPE 0x72 ++#define GRUB_LINUX_HEAP_END_OFFSET (0x9000 - 0x200) ++ ++#define GRUB_LINUX_BZIMAGE_ADDR 0x100000 ++#define GRUB_LINUX_ZIMAGE_ADDR 0x10000 ++#define GRUB_LINUX_OLD_REAL_MODE_ADDR 0x90000 ++#define GRUB_LINUX_SETUP_STACK 0x9000 ++ ++#define GRUB_LINUX_FLAG_BIG_KERNEL 0x1 ++ ++/* Linux's video mode selection support. Actually I hate it! */ ++#define GRUB_LINUX_VID_MODE_NORMAL 0xFFFF ++#define GRUB_LINUX_VID_MODE_EXTENDED 0xFFFE ++#define GRUB_LINUX_VID_MODE_ASK 0xFFFD ++ ++#define GRUB_LINUX_CL_OFFSET 0x9000 ++#define GRUB_LINUX_CL_END_OFFSET 0x90FF ++#define GRUB_LINUX_SETUP_MOVE_SIZE 0x9100 ++#define GRUB_LINUX_CL_MAGIC 0xA33F ++ ++#if 0 ++#define GRUB_LINUX_EFI_SIGNATURE_X64 \ ++ ('4' << 24 | '6' << 16 | 'L' << 8 | 'E') ++#else ++#define GRUB_LINUX_EFI_SIGNATURE_X64 \ ++ ('L' << 24 | 'I' << 16 | 'F' << 8 | 'E') ++#endif ++ ++#ifndef ASM_FILE ++ ++/* For the Linux/i386 boot protocol version 2.07. */ ++struct grub_linux_kernel_header ++{ ++ grub_uint8_t setup_sects; /* The size of the setup in sectors */ ++ grub_uint16_t root_flags; /* If the root is mounted readonly */ ++ grub_uint32_t syssize; /* obsolete */ ++ grub_uint16_t ram_size; /* obsolete */ ++ grub_uint16_t vid_mode; /* Video mode control */ ++ grub_uint16_t root_dev; /* Default root device number */ ++ grub_uint16_t boot_flag; /* 0xAA55 magic number */ ++ grub_uint8_t jump_ins; /* Jump instruction */ ++ grub_uint8_t jump_off; /* Jump offset */ ++ grub_uint32_t header; /* Magic signature "HdrS" */ ++ grub_uint16_t version; /* Boot protocol version supported */ ++ grub_uint32_t realmode_swtch; /* Boot loader hook */ ++ grub_uint16_t start_sys; /* The load-low segment (obsolete) */ ++ grub_uint16_t kernel_version; /* Points to kernel version string */ ++ grub_uint8_t type_of_loader; /* Boot loader identifier */ ++ grub_uint8_t loadflags; /* Boot protocol option flags */ ++ grub_uint16_t setup_move_size;/* Move to high memory size */ ++ grub_uint32_t code32_start; /* Boot loader hook */ ++ grub_uint32_t ramdisk_image; /* initrd load address */ ++ grub_uint32_t ramdisk_size; /* initrd size */ ++ grub_uint32_t bootsect_kludge;/* obsolete */ ++ grub_uint16_t heap_end_ptr; /* Free memory after setup end */ ++ grub_uint16_t pad1; /* Unused */ ++ grub_uint32_t cmd_line_ptr; /* Points to the kernel command line */ ++ grub_uint32_t initrd_addr_max;/* Highest address for initrd */ ++ grub_uint32_t kernel_alignment; ++ grub_uint8_t relocatable_kernel; ++ grub_uint8_t min_alignment; ++ grub_uint8_t pad2[2]; ++ grub_uint32_t cmdline_size; ++ grub_uint32_t hardware_subarch; ++ grub_uint64_t hardware_subarch_data; ++ grub_uint32_t payload_offset; ++ grub_uint32_t payload_length; ++ grub_uint64_t setup_data; ++ grub_uint64_t pref_address; ++ grub_uint32_t init_size; ++} __attribute__ ((packed)); ++ ++/* Boot parameters for Linux based on 2.6.12. This is used by the setup ++ sectors of Linux, and must be simulated by GRUB on EFI, because ++ the setup sectors depend on BIOS. */ ++struct linux_kernel_params ++{ ++ grub_uint8_t video_cursor_x; /* 0 */ ++ grub_uint8_t video_cursor_y; ++ ++ grub_uint16_t ext_mem; /* 2 */ ++ ++ grub_uint16_t video_page; /* 4 */ ++ grub_uint8_t video_mode; /* 6 */ ++ grub_uint8_t video_width; /* 7 */ ++ ++ grub_uint8_t padding1[0xa - 0x8]; ++ ++ grub_uint16_t video_ega_bx; /* a */ ++ ++ grub_uint8_t padding2[0xe - 0xc]; ++ ++ grub_uint8_t video_height; /* e */ ++ grub_uint8_t have_vga; /* f */ ++ grub_uint16_t font_size; /* 10 */ ++ ++ grub_uint16_t lfb_width; /* 12 */ ++ grub_uint16_t lfb_height; /* 14 */ ++ grub_uint16_t lfb_depth; /* 16 */ ++ grub_uint32_t lfb_base; /* 18 */ ++ grub_uint32_t lfb_size; /* 1c */ ++ ++ grub_uint16_t cl_magic; /* 20 */ ++ grub_uint16_t cl_offset; ++ ++ grub_uint16_t lfb_line_len; /* 24 */ ++ grub_uint8_t red_mask_size; /* 26 */ ++ grub_uint8_t red_field_pos; ++ grub_uint8_t green_mask_size; ++ grub_uint8_t green_field_pos; ++ grub_uint8_t blue_mask_size; ++ grub_uint8_t blue_field_pos; ++ grub_uint8_t reserved_mask_size; ++ grub_uint8_t reserved_field_pos; ++ grub_uint16_t vesapm_segment; /* 2e */ ++ grub_uint16_t vesapm_offset; /* 30 */ ++ grub_uint16_t lfb_pages; /* 32 */ ++ grub_uint16_t vesa_attrib; /* 34 */ ++ grub_uint32_t capabilities; /* 36 */ ++ ++ grub_uint8_t padding3[0x40 - 0x3a]; ++ ++ grub_uint16_t apm_version; /* 40 */ ++ grub_uint16_t apm_code_segment; /* 42 */ ++ grub_uint32_t apm_entry; /* 44 */ ++ grub_uint16_t apm_16bit_code_segment; /* 48 */ ++ grub_uint16_t apm_data_segment; /* 4a */ ++ grub_uint16_t apm_flags; /* 4c */ ++ grub_uint32_t apm_code_len; /* 4e */ ++ grub_uint16_t apm_data_len; /* 52 */ ++ ++ grub_uint8_t padding4[0x60 - 0x54]; ++ ++ grub_uint32_t ist_signature; /* 60 */ ++ grub_uint32_t ist_command; /* 64 */ ++ grub_uint32_t ist_event; /* 68 */ ++ grub_uint32_t ist_perf_level; /* 6c */ ++ ++ grub_uint8_t padding5[0x80 - 0x70]; ++ ++ grub_uint8_t hd0_drive_info[0x10]; /* 80 */ ++ grub_uint8_t hd1_drive_info[0x10]; /* 90 */ ++ grub_uint16_t rom_config_len; /* a0 */ ++ ++ grub_uint8_t padding6[0x1b8 - 0xa2]; ++ ++ union { ++ struct { ++ grub_uint32_t padding7_1; /* 0x1b8 */ ++ grub_uint32_t padding7_2; /* 0x1bc */ ++ ++ grub_uint32_t efi_signature; /* 1c0 */ ++ grub_uint32_t efi_system_table; /* 1c4 */ ++ grub_uint32_t efi_mem_desc_size; /* 1c8 */ ++ grub_uint32_t efi_mem_desc_version; /* 1cc */ ++ grub_uint32_t efi_mmap; /* 1d0 */ ++ grub_uint32_t efi_mmap_size; /* 1d4 */ ++ grub_uint32_t efi_system_table_hi; /* 1d8 */ ++ grub_uint32_t efi_mmap_hi; /* 1dc */ ++ } dunno; ++ struct { ++ grub_uint32_t efi_system_table; /* 1b8 */ ++ ++ grub_uint32_t padding7_1; /* 0x1bc */ ++ ++ grub_uint32_t efi_signature; /* 1c0 */ ++ grub_uint32_t efi_mem_desc_size; /* 1c4 */ ++ grub_uint32_t efi_mem_desc_version; /* 1c8 */ ++ grub_uint32_t efi_mmap_size; /* 1cc */ ++ grub_uint32_t efi_mmap; /* 1d0 */ ++ ++ grub_uint8_t padding7_2[0x1e0 - 0x1d4]; /* 1d4 */ ++ } version_0204; ++ struct { ++ grub_uint32_t padding7_1; /* 0x1b8 */ ++ grub_uint32_t padding7_2; /* 0x1bc */ ++ grub_uint32_t padding7_3; /* 0x1c0 */ ++ grub_uint32_t efi_system_table; /* 0x1c4 */ ++ grub_uint32_t efi_mem_desc_size; /* 0x1c8 */ ++ grub_uint32_t efi_mem_desc_version; /* 0x1cc */ ++ grub_uint32_t efi_mmap; /* 0x1d0 */ ++ grub_uint32_t efi_mmap_size; /* 0x1d4 */ ++ grub_uint8_t padding7_4[0x1e0 - 0x1d8]; /* 0x1d8 */ ++ } version_0206; ++ }; ++ ++ grub_uint32_t alt_mem; /* 1e0 */ ++ ++ grub_uint8_t padding8[0x1e8 - 0x1e4]; /* 1e4 */ ++ ++ grub_uint8_t e820_nr_map; /* 1e8 */ ++ grub_uint8_t eddbuf_entries; /* 1e9 */ ++ grub_uint8_t edd_mbr_sig_buf_entries; /* 1ea */ ++ ++ grub_uint8_t padding9[0x1f1 - 0x1eb]; ++ ++ struct grub_linux_kernel_header hdr; /* 0x1f1 */ ++ ++ grub_uint8_t padding10[0x2d0-0x1f1-sizeof(struct grub_linux_kernel_header)]; ++ ++ grub_uint8_t e820_map[2560]; /* 0x2d0 */ ++ ++ grub_uint8_t padding11[0x1000 - 0xcd0]; ++} __attribute__ ((packed)); ++#endif /* ! ASM_FILE */ ++ ++#endif /* ! GRUB_LINUX_MACHINE_HEADER */ +diff --git a/efi/grub/x86_64/types.h b/efi/grub/x86_64/types.h +new file mode 100644 +index 0000000..0c077f6 +--- /dev/null ++++ b/efi/grub/x86_64/types.h +@@ -0,0 +1,32 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2002,2006 Free Software Foundation, Inc. ++ * ++ * GRUB is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with GRUB; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#ifndef GRUB_TYPES_CPU_HEADER ++#define GRUB_TYPES_CPU_HEADER 1 ++ ++/* The size of void *. */ ++#define GRUB_TARGET_SIZEOF_VOID_P 8 ++ ++/* The size of long. */ ++#define GRUB_TARGET_SIZEOF_LONG 8 ++ ++/* x64_64 is little-endian. */ ++#undef GRUB_TARGET_WORDS_BIGENDIAN ++ ++#endif /* ! GRUB_TYPES_CPU_HEADER */ +diff --git a/efi/ia32/callwrap.S b/efi/ia32/callwrap.S +new file mode 100644 +index 0000000..50d737f +--- /dev/null ++++ b/efi/ia32/callwrap.S +@@ -0,0 +1 @@ ++/* This file is a stub for ia32 building */ +diff --git a/efi/ia32/callwrap.c b/efi/ia32/callwrap.c +new file mode 100644 +index 0000000..56df899 +--- /dev/null ++++ b/efi/ia32/callwrap.c +@@ -0,0 +1,131 @@ ++ ++#define ENTRY(name) \ ++ ".globl " #name ";" \ ++ ".align 16;" \ ++ #name ":" ++ ++asm( ++ENTRY(i386_call0) ++ "pushl %ebp \n" ++ "movl %esp,%ebp \n" ++ "subl $8, %esp \n" ++ "call *8(%ebp) \n" ++ "leave \n" ++ "ret \n" ++ ); ++ ++asm( ++ENTRY(i386_call1) ++ "pushl %ebp \n" ++ "movl %esp,%ebp \n" ++ "subl $20, %esp \n" ++ "pushl 12(%ebp) \n" ++ "call *8(%ebp) \n" ++ "leave \n" ++ "ret \n" ++ ); ++ ++asm( ++ENTRY(i386_call2) ++ "pushl %ebp \n" ++ "movl %esp,%ebp \n" ++ "subl $16, %esp \n" ++ "pushl 16(%ebp) \n" ++ "pushl 12(%ebp) \n" ++ "call *8(%ebp) \n" ++ "leave \n" ++ "ret \n" ++ ); ++ ++asm( ++ENTRY(i386_call3) ++ "pushl %ebp \n" ++ "movl %esp,%ebp \n" ++ "subl $12, %esp \n" ++ "pushl 20(%ebp) \n" ++ "pushl 16(%ebp) \n" ++ "pushl 12(%ebp) \n" ++ "call *8(%ebp) \n" ++ "leave \n" ++ "ret \n" ++ ); ++ ++asm( ++ENTRY(i386_call4) ++ "pushl %ebp \n" ++ "movl %esp,%ebp \n" ++ "subl $8, %esp \n" ++ "pushl 24(%ebp) \n" ++ "pushl 20(%ebp) \n" ++ "pushl 16(%ebp) \n" ++ "pushl 12(%ebp) \n" ++ "call *8(%ebp) \n" ++ "leave \n" ++ "ret \n" ++ ); ++ ++asm( ++ENTRY(i386_call5) ++ "pushl %ebp \n" ++ "movl %esp,%ebp \n" ++ "subl $20, %esp \n" ++ "pushl 28(%ebp) \n" ++ "pushl 24(%ebp) \n" ++ "pushl 20(%ebp) \n" ++ "pushl 16(%ebp) \n" ++ "pushl 12(%ebp) \n" ++ "call *8(%ebp) \n" ++ "leave \n" ++ "ret \n" ++ ); ++ ++asm( ++ENTRY(i386_64_call5) ++ "pushl %ebp \n" ++ "movl %esp,%ebp \n" ++ "subl $12, %esp \n" ++ "pushl 36(%ebp) \n" ++ "pushl 32(%ebp) \n" ++ "pushl 28(%ebp) \n" ++ "pushl 24(%ebp) \n" ++ "pushl 20(%ebp) \n" ++ "pushl 16(%ebp) \n" ++ "pushl 12(%ebp) \n" ++ "call *8(%ebp) \n" ++ "leave \n" ++ "ret \n" ++ ); ++ ++ ++asm( ++ENTRY(i386_call6) ++ "pushl %ebp \n" ++ "movl %esp,%ebp \n" ++ "subl $16, %esp \n" ++ "pushl 32(%ebp) \n" ++ "pushl 28(%ebp) \n" ++ "pushl 24(%ebp) \n" ++ "pushl 20(%ebp) \n" ++ "pushl 16(%ebp) \n" ++ "pushl 12(%ebp) \n" ++ "call *8(%ebp) \n" ++ "leave \n" ++ "ret \n" ++ ); ++ ++asm( ++ENTRY(i386_call7) ++ "pushl %ebp \n" ++ "movl %esp,%ebp \n" ++ "subl $12, %esp \n" ++ "pushl 36(%ebp) \n" ++ "pushl 32(%ebp) \n" ++ "pushl 28(%ebp) \n" ++ "pushl 24(%ebp) \n" ++ "pushl 20(%ebp) \n" ++ "pushl 16(%ebp) \n" ++ "pushl 12(%ebp) \n" ++ "call *8(%ebp) \n" ++ "leave \n" ++ "ret \n" ++ ); +diff --git a/efi/ia32/loader/bin_to_h.c b/efi/ia32/loader/bin_to_h.c +new file mode 100644 +index 0000000..4cff104 +--- /dev/null ++++ b/efi/ia32/loader/bin_to_h.c +@@ -0,0 +1,29 @@ ++#include <stdio.h> ++#include <stdlib.h> ++ ++int ++main (void) ++{ ++ unsigned n = 0; ++ int c; ++ ++ printf ("unsigned char switch_image[] = {\n"); ++ ++ while ((c = getchar ()) != EOF) ++ { ++ printf("0x%02x,%s", ++ c & 0xFF, ++ (++n & 0x07) ? " " : "\n"); ++ } ++ ++ if (n & 0x07) ++ { ++ printf("\n"); ++ } ++ ++ printf("};\n" ++ "int switch_size = sizeof switch_image;\n"); ++ ++ return 0; ++} ++ +diff --git a/efi/ia32/loader/linux.c b/efi/ia32/loader/linux.c +new file mode 100644 +index 0000000..d795d28 +--- /dev/null ++++ b/efi/ia32/loader/linux.c +@@ -0,0 +1,648 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2006 Free Software Foundation, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#include <grub/misc.h> ++#include <grub/types.h> ++#include <grub/cpu/linux.h> ++#include <grub/efi/api.h> ++#include <grub/efi/efi.h> ++#include <grub/efi/misc.h> ++ ++#include "switch.h" ++ ++#include <shared.h> ++ ++#include "graphics.h" ++ ++#define grub_file_size() filemax ++ ++#define NEXT_MEMORY_DESCRIPTOR(desc, size) \ ++ ((grub_efi_memory_descriptor_t *) ((char *) (desc) + (size))) ++ ++#define PTR_HI(x) ((grub_uint32_t) ((unsigned long long)((unsigned long)(x)) >> 32)) ++ ++#ifndef SECTOR_SIZE ++#define SECTOR_SIZE 0x200 ++#endif /* defined(SECTOR_SIZE) */ ++#ifndef SECTOR_BITS ++#define SECTOR_BITS 9 ++#endif /* defined(SECTOR_BITS) */ ++ ++static unsigned long linux_mem_size; ++static int loaded; ++static void *real_mode_mem; ++static void *prot_mode_mem; ++static void *initrd_mem; ++static grub_efi_uintn_t real_mode_pages; ++static grub_efi_uintn_t prot_mode_pages; ++static grub_efi_uintn_t initrd_pages; ++static grub_efi_guid_t graphics_output_guid = GRUB_EFI_GRAPHICS_OUTPUT_GUID; ++ ++static inline grub_size_t ++page_align (grub_size_t size) ++{ ++ return (size + (1 << 12) - 1) & (~((1 << 12) - 1)); ++} ++ ++static void ++free_pages (void) ++{ ++ if (real_mode_mem) ++ { ++ grub_efi_free_pages ((grub_addr_t) real_mode_mem, real_mode_pages); ++ real_mode_mem = 0; ++ } ++ ++ if (prot_mode_mem) ++ { ++ grub_efi_free_pages ((grub_addr_t) prot_mode_mem, prot_mode_pages); ++ prot_mode_mem = 0; ++ } ++ ++ if (initrd_mem) ++ { ++ grub_efi_free_pages ((grub_addr_t) initrd_mem, initrd_pages); ++ initrd_mem = 0; ++ } ++ ++ if (mmap_buf) ++ { ++ grub_efi_free_pages ((grub_addr_t) mmap_buf, mmap_pages); ++ mmap_buf = 0; ++ } ++} ++ ++/* Allocate pages for the real mode code and the protected mode code ++ for linux as well as a memory map buffer. */ ++static int ++allocate_pages (grub_size_t real_size, grub_size_t prot_size) ++{ ++ grub_efi_uintn_t desc_size; ++ grub_efi_memory_descriptor_t *mmap_end; ++ grub_efi_memory_descriptor_t *desc; ++ grub_efi_physical_address_t addr; ++ ++ /* Make sure that each size is aligned to a page boundary. */ ++ real_size = page_align (real_size + SECTOR_SIZE); ++ prot_size = page_align (prot_size); ++ ++ grub_dprintf ("linux", "real_size = %x, prot_size = %x, mmap_size = %x\n", ++ (unsigned int) real_size, (unsigned int) prot_size, ++ (unsigned int) mmap_size); ++ ++ /* Calculate the number of pages; Combine the real mode code with ++ the memory map buffer for simplicity. */ ++ real_mode_pages = (real_size >> 12); ++ prot_mode_pages = (prot_size >> 12); ++ ++ /* Initialize the memory pointers with NULL for convenience. */ ++ real_mode_mem = 0; ++ prot_mode_mem = 0; ++ ++ if (grub_efi_get_memory_map (0, &desc_size, 0) <= 0) ++ grub_fatal ("cannot get memory map"); ++ ++ addr = 0; ++ mmap_end = NEXT_MEMORY_DESCRIPTOR (mmap_buf, mmap_size); ++ /* First, find free pages for the real mode code ++ and the memory map buffer. */ ++ for (desc = mmap_buf; ++ desc < mmap_end; ++ desc = NEXT_MEMORY_DESCRIPTOR (desc, desc_size)) ++ { ++ if (desc->type == GRUB_EFI_CONVENTIONAL_MEMORY ++ && desc->num_pages >= real_mode_pages) ++ { ++ grub_efi_physical_address_t physical_end; ++ ++ physical_end = desc->physical_start + (desc->num_pages << 12); ++ ++ grub_dprintf ("linux", "physical_start = %x, physical_end = %x\n", ++ (unsigned) desc->physical_start, ++ (unsigned) physical_end); ++ addr = physical_end - real_size; ++ if (addr < 0x10000) ++ continue; ++ ++ grub_dprintf ("linux", "trying to allocate %u pages at %x\n", ++ (unsigned) real_mode_pages, (unsigned) addr); ++ real_mode_mem = grub_efi_allocate_pages (addr, real_mode_pages); ++ if (! real_mode_mem) ++ grub_fatal ("cannot allocate pages"); ++ ++ desc->num_pages -= real_mode_pages; ++ break; ++ } ++ } ++ ++ if (! real_mode_mem) ++ { ++ grub_printf ("cannot allocate real mode pages"); ++ errnum = ERR_WONT_FIT; ++ goto fail; ++ } ++ ++ /* Next, find free pages for the protected mode code. */ ++ /* XXX what happens if anything is using this address? */ ++ prot_mode_mem = grub_efi_allocate_pages (0x100000, prot_mode_pages); ++ if (! prot_mode_mem) ++ grub_fatal("Cannot allocate pages for VMLINUZ"); ++ ++ return 1; ++ ++ fail: ++ free_pages (); ++ return 0; ++} ++ ++/* do some funky stuff, then boot linux */ ++void ++linux_boot (void) ++{ ++ grub_printf ("zImage is not supported under EFI.\n"); ++ for (;;); ++} ++ ++#ifndef __x86_64__ ++struct { ++ unsigned short limit; ++ unsigned int base; ++} __attribute__ ((packed)) ++ gdt_addr = { 0x800, 0x94000 }, ++ idt_addr = { 0, 0 }; ++ ++unsigned short init_gdt[] = { ++ /* gdt[0]: dummy */ ++ 0, 0, 0, 0, ++ ++ /* gdt[1]: unused */ ++ 0, 0, 0, 0, ++ ++ /* gdt[2]: code */ ++ 0xFFFF, /* 4Gb - (0x100000*0x1000 = 4Gb) */ ++ 0x0000, /* base address=0 */ ++ 0x9A00, /* code read/exec */ ++ 0x00CF, /* granularity=4096, 386 (+5th nibble of limit) */ ++ ++ /* gdt[3]: data */ ++ 0xFFFF, /* 4Gb - (0x100000*0x1000 = 4Gb) */ ++ 0x0000, /* base address=0 */ ++ 0x9200, /* data read/write */ ++ 0x00CF, /* granularity=4096, 386 (+5th nibble of limit) */ ++}; ++#endif ++ ++void ++big_linux_boot (void) ++{ ++ struct linux_kernel_params *params; ++ struct grub_linux_kernel_header *lh; ++ grub_efi_uintn_t map_key; ++ grub_efi_uintn_t desc_size; ++ grub_efi_uint32_t desc_version; ++ int e820_nr_map; ++ int i; ++ ++ params = real_mode_mem; ++ ++ graphics_set_kernel_params (params); ++ ++ if (grub_efi_get_memory_map (&map_key, &desc_size, &desc_version) <= 0) ++ grub_fatal ("cannot get memory map"); ++ ++ /* Pass e820 memmap. */ ++ e820_map_from_efi_map ((struct e820_entry *) params->e820_map, &e820_nr_map, ++ mmap_buf, desc_size, mmap_size); ++ params->e820_nr_map = e820_nr_map; ++ ++ grub_dprintf(__func__,"got to ExitBootServices...\n"); ++ if (! grub_efi_exit_boot_services (map_key)) ++ grub_fatal ("cannot exit boot services"); ++ /* Note that no boot services are available from here. */ ++ ++ lh = ¶ms->hdr; ++ /* Pass EFI parameters. */ ++ if (grub_le_to_cpu16 (lh->version) >= 0x0206) { ++ params->version_0206.efi_mem_desc_size = desc_size; ++ params->version_0206.efi_mem_desc_version = desc_version; ++ params->version_0206.efi_mmap = (grub_uint32_t) (unsigned long) mmap_buf; ++ params->version_0206.efi_mmap_size = mmap_size; ++ } else if (grub_le_to_cpu16 (lh->version) >= 0x0204) { ++ params->version_0204.efi_mem_desc_size = desc_size; ++ params->version_0204.efi_mem_desc_version = desc_version; ++ params->version_0204.efi_mmap = (grub_uint32_t) (unsigned long) mmap_buf; ++ params->version_0204.efi_mmap_size = mmap_size; ++ } else /* dunno */ { ++ params->dunno.efi_mem_desc_size = desc_size; ++ params->dunno.efi_mem_desc_version = desc_version; ++ params->dunno.efi_mmap = (grub_uint32_t) (unsigned long) mmap_buf; ++ params->dunno.efi_mmap_size = mmap_size; ++ params->dunno.efi_mmap_hi = PTR_HI(mmap_buf); ++ } ++ ++#ifdef __x86_64__ ++ /* copy our real mode transition code to 0x700 */ ++ memcpy ((void *) 0x700, switch_image, switch_size); ++ asm volatile ( "mov $0x700, %%rdi" : :); ++ ++ /* Pass parameters. */ ++ asm volatile ("mov %0, %%rsi" : : "m" (real_mode_mem)); ++ asm volatile ("movl %0, %%ebx" : : "m" (params->hdr.code32_start)); ++ ++ /* Enter Linux, switch from 64-bit long mode ++ * to 32-bit protect mode, this code end address ++ * must not exceed 0x1000, because linux kernel bootstrap ++ * code will flush this area ++ */ ++ asm volatile ( "jmp *%%rdi" : :); ++#else ++ ++ asm volatile ( "cli" : : ); ++ ++ grub_memset((void *)gdt_addr.base, gdt_addr.limit, 0); ++ grub_memcpy((void *)gdt_addr.base, init_gdt, sizeof (init_gdt)); ++ ++ if (0) { ++ /* copy our real mode transition code to 0x7C00 */ ++ memcpy ((void *) 0x7C00, switch_image, switch_size); ++ asm volatile ( "mov $0x7C00, %%ebx" : : ); ++ asm volatile ( "jmp *%%ebx" : : ); ++ } else { ++ ++ /* load descriptor table pointers */ ++ // asm volatile ( "lidt %0" : : "m" (idt_addr) ); ++ asm volatile ( "lgdt %0" : : "m" (gdt_addr) ); ++ ++ /* ++ * ebx := 0 (%%TBD - do not know why, yet) ++ * ecx := kernel entry point ++ * esi := address of boot sector and setup data ++ */ ++ ++ asm volatile ( "movl %0, %%esi" : : "m" (real_mode_mem) ); ++ asm volatile ( "movl %0, %%ecx" : : "m" (params->hdr.code32_start) ); ++ asm volatile ( "xorl %%ebx, %%ebx" : : ); ++ ++ /* ++ * Jump to kernel entry point. ++ */ ++ ++ asm volatile ( "jmp *%%ecx" : : ); ++ } ++#endif ++ ++ /* Never reach here. */ ++ for (;;); ++} ++ ++int ++grub_load_linux (char *kernel, char *arg) ++{ ++ struct grub_linux_kernel_header *lh; ++ struct linux_kernel_params *params; ++ static struct linux_kernel_params params_buf; ++ grub_uint8_t setup_sects; ++ grub_size_t real_size, prot_size; ++ grub_ssize_t len; ++ char *dest; ++ ++ if (kernel == NULL) ++ { ++ errnum = ERR_BAD_FILENAME; ++ grub_printf ("no kernel specified"); ++ goto fail1; ++ } ++ ++ if (! grub_open (kernel)) ++ goto fail1; ++ ++ if (grub_read ((char *) ¶ms_buf, sizeof (params_buf)) ++ != sizeof (params_buf)) ++ { ++ errnum = ERR_EXEC_FORMAT; ++ grub_close(); ++ grub_printf ("cannot read the linux header"); ++ goto fail; ++ } ++ ++ lh = ¶ms_buf.hdr; ++ ++ if (lh->boot_flag != grub_cpu_to_le16 (0xaa55)) ++ { ++ errnum = ERR_EXEC_FORMAT; ++ grub_close(); ++ grub_printf ("invalid magic number: %x", lh->boot_flag); ++ goto fail; ++ } ++ ++ /* EFI support is quite new, so reject old versions. */ ++ if (lh->header != grub_cpu_to_le32 (GRUB_LINUX_MAGIC_SIGNATURE) ++ || grub_le_to_cpu16 (lh->version) < 0x0203) ++ { ++ grub_close(); ++ errnum = ERR_EXEC_FORMAT; ++ grub_printf ("too old version"); ++ goto fail; ++ } ++ ++ /* I'm not sure how to support zImage on EFI. */ ++ if (! (lh->loadflags & GRUB_LINUX_FLAG_BIG_KERNEL)) ++ { ++ errnum = ERR_EXEC_FORMAT; ++ grub_printf ("zImage is not supported"); ++ goto fail; ++ } ++ ++ setup_sects = lh->setup_sects; ++ ++ real_size = 0x1000 + grub_strlen(arg); ++ prot_size = grub_file_size () - (setup_sects << SECTOR_BITS) - SECTOR_SIZE; ++ ++ if (! allocate_pages (real_size, prot_size)) ++ goto fail; ++ ++ /* XXX Linux assumes that only elilo can boot Linux on EFI!!! */ ++ lh->type_of_loader = 0x50; ++ ++ lh->cmd_line_ptr = (grub_uint32_t) (unsigned long) real_mode_mem + 0x1000; ++ ++ lh->heap_end_ptr = LINUX_HEAP_END_OFFSET; ++ lh->loadflags |= LINUX_FLAG_CAN_USE_HEAP; ++ ++ lh->ramdisk_image = 0; ++ lh->ramdisk_size = 0; ++ ++ grub_memset(real_mode_mem, 0, real_size); ++ ++ params = (struct linux_kernel_params *) real_mode_mem; ++ ++ grub_memmove(¶ms->hdr, lh, 0x202 + lh->jump_off - 0x1f1); ++ ++ params->cl_magic = GRUB_LINUX_CL_MAGIC; ++ params->cl_offset = 0x1000; ++ ++ /* These are not needed to be precise, because Linux uses these values ++ only to raise an error when the decompression code cannot find good ++ space. */ ++ params->ext_mem = ((32 * 0x100000) >> 10); ++ params->alt_mem = ((32 * 0x100000) >> 10); ++ ++ /* No APM on EFI. */ ++ params->apm_version = 0; ++ params->apm_code_segment = 0; ++ params->apm_entry = 0; ++ params->apm_16bit_code_segment = 0; ++ params->apm_data_segment = 0; ++ params->apm_flags = 0; ++ params->apm_code_len = 0; ++ params->apm_data_len = 0; ++ ++ /* XXX is there any way to use SpeedStep on EFI? */ ++ params->ist_signature = 0; ++ params->ist_command = 0; ++ params->ist_event = 0; ++ params->ist_perf_level = 0; ++ ++ /* Let the kernel probe the information. */ ++ grub_memset (params->hd0_drive_info, 0, sizeof (params->hd0_drive_info)); ++ grub_memset (params->hd1_drive_info, 0, sizeof (params->hd1_drive_info)); ++ ++ /* No MCA on EFI. */ ++ params->rom_config_len = 0; ++ ++ if (grub_le_to_cpu16 (lh->version) >= 0x0206) { ++ grub_memcpy(¶ms->version_0204.efi_signature, "EL32", 4); ++ params->version_0206.efi_system_table = \ ++ (grub_uint32_t) (unsigned long) grub_efi_system_table; ++ } else if (grub_le_to_cpu16 (lh->version) >= 0x0204) { ++ grub_memcpy(¶ms->version_0204.efi_signature, "EFIL", 4); ++ params->version_0204.efi_system_table = \ ++ (grub_uint32_t) (unsigned long) grub_efi_system_table; ++ } else /* dunno */ { ++ params->dunno.efi_signature = GRUB_LINUX_EFI_SIGNATURE_X64; ++ params->dunno.efi_system_table = \ ++ (grub_uint32_t) (unsigned long) grub_efi_system_table; ++ params->dunno.efi_system_table_hi = PTR_HI(grub_efi_system_table); ++ } ++ /* The other EFI parameters are filled when booting. */ ++ ++ /* No EDD */ ++ params->eddbuf_entries = 0; ++ params->edd_mbr_sig_buf_entries = 0; ++ ++ /* XXX there is no way to know if the kernel really supports EFI. */ ++ grub_printf ("[Linux-EFI, setup=0x%x, size=0x%x]\n", (unsigned int)real_size, ++ (unsigned int)prot_size); ++ ++ /* Check the mem= option to limit memory used for initrd. */ ++ { ++ char *mem; ++ ++ mem = grub_strstr (arg, "mem="); ++ if (mem) ++ { ++ char *value = mem + 4; ++ ++ safe_parse_maxulong (&value, &linux_mem_size); ++ switch (errnum) ++ { ++ case ERR_NUMBER_OVERFLOW: ++ /* If an overflow occurs, use the maximum address for ++ initrd instead. This is good, because MAXINT is ++ greater than LINUX_INITRD_MAX_ADDRESS. */ ++ linux_mem_size = LINUX_INITRD_MAX_ADDRESS; ++ errnum = ERR_NONE; ++ break; ++ ++ case ERR_NONE: ++ { ++ int shift = 0; ++ ++ switch (grub_tolower (*value)) ++ { ++ case 'g': ++ shift += 10; ++ case 'm': ++ shift += 10; ++ case 'k': ++ shift += 10; ++ default: ++ break; ++ } ++ ++ /* Check an overflow. */ ++ if (linux_mem_size > (~0UL >> shift)) ++ linux_mem_size = 0; ++ else ++ linux_mem_size <<= shift; ++ } ++ break; ++ ++ default: ++ linux_mem_size = 0; ++ errnum = ERR_NONE; ++ break; ++ } ++ } ++ else ++ linux_mem_size = 0; ++ } ++ ++ dest = grub_stpcpy ((char *) real_mode_mem + 0x1000, skip_to(0, arg)); ++ ++ grub_seek ((setup_sects << SECTOR_BITS) + SECTOR_SIZE); ++ len = prot_size; ++ if (grub_read ((char *) GRUB_LINUX_BZIMAGE_ADDR, len) != len) ++ grub_printf ("Couldn't read file"); ++ ++ if (errnum == ERR_NONE) ++ { ++ loaded = 1; ++ } ++ ++ fail: ++ ++ grub_close (); ++ ++ fail1: ++ ++ if (errnum != ERR_NONE) ++ { ++ loaded = 0; ++ } ++ return errnum ? KERNEL_TYPE_NONE : KERNEL_TYPE_BIG_LINUX; ++} ++ ++int ++grub_load_initrd (char *initrd) ++{ ++ grub_ssize_t size; ++ grub_addr_t addr_min, addr_max; ++ grub_addr_t addr; ++ grub_efi_uintn_t map_key; ++ grub_efi_memory_descriptor_t *mmap_end; ++ grub_efi_memory_descriptor_t *desc; ++ grub_efi_memory_descriptor_t tdesc; ++ grub_efi_uintn_t desc_size; ++ grub_efi_uint32_t desc_version; ++ struct linux_kernel_params *params; ++ ++ if (initrd == NULL) ++ { ++ errnum = ERR_BAD_FILENAME; ++ grub_printf ("No module specified"); ++ goto fail1; ++ } ++ ++ if (! loaded) ++ { ++ errnum = ERR_UNRECOGNIZED; ++ grub_printf ("You need to load the kernel first."); ++ goto fail1; ++ } ++ ++ if (! grub_open (initrd)) ++ goto fail1; ++ ++ size = grub_file_size (); ++ initrd_pages = (page_align (size) >> 12); ++ ++ params = (struct linux_kernel_params *) real_mode_mem; ++ grub_dprintf(__func__, "initrd_pages: %lu\n", initrd_pages); ++ ++ addr_max = grub_cpu_to_le32 (params->hdr.initrd_addr_max); ++ if (linux_mem_size != 0 && linux_mem_size < addr_max) ++ addr_max = linux_mem_size; ++ addr_max &= ~((1 << 12)-1); ++ ++ /* Linux 2.3.xx has a bug in the memory range check, so avoid ++ the last page. ++ Linux 2.2.xx has a bug in the memory range check, which is ++ worse than that of Linux 2.3.xx, so avoid the last 64kb. */ ++ //addr_max -= 0x10000; ++ ++ /* Usually, the compression ratio is about 50%. */ ++ addr_min = (grub_addr_t) prot_mode_mem + ((prot_mode_pages * 3) << 12); ++ grub_dprintf(__func__, "prot_mode_mem=%p prot_mode_pages=%lu\n", prot_mode_mem, prot_mode_pages); ++ ++ /* Find the highest address to put the initrd. */ ++ if (grub_efi_get_memory_map (&map_key, &desc_size, &desc_version) <= 0) ++ grub_fatal ("cannot get memory map"); ++ ++ mmap_end = NEXT_MEMORY_DESCRIPTOR (mmap_buf, mmap_size); ++ addr = 0; ++ for (desc = mmap_buf; ++ desc < mmap_end; ++ desc = NEXT_MEMORY_DESCRIPTOR (desc, desc_size)) ++ { ++ if (desc->type != GRUB_EFI_CONVENTIONAL_MEMORY) ++ continue; ++ memcpy(&tdesc, desc, sizeof (tdesc)); ++ if (tdesc.physical_start < addr_min ++ && tdesc.num_pages > ((addr_min - tdesc.physical_start) >> 12)) ++ { ++ tdesc.num_pages -= ((addr_min - tdesc.physical_start) >> 12); ++ tdesc.physical_start = addr_min; ++ } ++ ++ grub_dprintf(__func__, "desc = {type=%d,ps=0x%llx,vs=0x%llx,sz=%llu,attr=%llu}\n", desc->type, (unsigned long long)desc->physical_start, (unsigned long long)desc->virtual_start, (unsigned long long)desc->num_pages, (unsigned long long)desc->attribute); ++ if (tdesc.physical_start >= addr_min ++ && tdesc.physical_start + page_align (size) <= addr_max ++ && tdesc.num_pages >= initrd_pages) ++ { ++ grub_efi_physical_address_t physical_end; ++ ++ physical_end = tdesc.physical_start + (tdesc.num_pages << 12); ++ if (physical_end > addr_max) ++ physical_end = addr_max; ++ ++ if (physical_end <= 0x7fffffffUL && physical_end > addr) ++ addr = physical_end - page_align (size); ++ } ++ } ++ ++ if (addr == 0) ++ { ++ errnum = ERR_UNRECOGNIZED; ++ grub_printf ("no free pages available"); ++ goto fail; ++ } ++ ++ initrd_mem = grub_efi_allocate_pages (addr, initrd_pages); ++ if (! initrd_mem) ++ grub_fatal ("cannot allocate pages: %x@%x", (unsigned)initrd_pages, ++ (unsigned)addr); ++ ++ if (grub_read (initrd_mem, size) != size) ++ { ++ grub_printf ("Couldn't read file"); ++ goto fail; ++ } ++ ++ grub_printf (" [Initrd, addr=0x%x, size=0x%x]\n", (unsigned int) addr, ++ (unsigned int) size); ++ ++ params->hdr.ramdisk_image = addr; ++ params->hdr.ramdisk_size = size; ++ ++ fail: ++ grub_close (); ++ fail1: ++ return !errnum; ++} +diff --git a/efi/ia32/loader/switch.S b/efi/ia32/loader/switch.S +new file mode 100644 +index 0000000..14142e9 +--- /dev/null ++++ b/efi/ia32/loader/switch.S +@@ -0,0 +1,118 @@ ++# ++# Switch from protected mode to real mode and jump to setup.S ++# image located at %cx:0. ++# ++# This module must be placed into physical memory at 0:7C00h. ++# EFI has some real mode thunking code at 2000:0h. ++# ++# Processor and non-maskable interrupts should be disabled ++# before control is passed to this module. ++# ++ ++.global _start ++ ++.code32 ++.text ++_start: ++ # ++ # Load identity mapped GDT & real mode IDT. ++ # Add 7C00h to the addresses since this is linked to start ++ # at 0h and it is being placed at 7C00h. ++ # ++ ++ lgdt %cs:gdt_48 + 0x7C00 ++ lidt %cs:idt_48 + 0x7C00 ++ ++ # ++ # Turn off PG bit in CR0 and set CR3 to zero. ++ # ++ ++ movl %cr0, %eax ++ andl $0x7FFFFFFF, %eax ++ movl %eax, %cr0 ++ ++ xorl %eax, %eax ++ movl %eax, %cr3 ++ ++ # ++ # Reload CS. ++ # Now we add 7B00h because we need to force the segment ++ # address and selector to be the same. ++ # ++ ++ .byte 0xEA ++ .long pm_reload + 0x7B00 ++ .word 0x10 ++ ++pm_reload: ++ ++.code16 ++ ++ # ++ # Reload DS, ES, FS, GS & SS. ++ # ++ ++ movw $0x18, %ax ++ movw %ax, %ds ++ movw %ax, %es ++ movw %ax, %fs ++ movw %ax, %gs ++ movw %ax, %ss ++ ++ # ++ # Switch to real mode. Clear PE bit in CR0. ++ # ++ ++ movl %cr0, %eax ++ andl $0xFFFFFFFE, %eax ++ movl %eax, %cr0 ++ ++ # ++ # Reload CS. ++ # ++ ++ .byte 0xEA ++ .word rm_reload + 0x7C00 ++ .word 0 ++ ++rm_reload: ++ ++ # ++ # Reload SS & SP. ++ # ++ ++ xorw %ax, %ax ++ movw %ax, %ss ++ movw $0x7BFE, %sp ++ ++ # ++ # Start running setup.S ++ # ++ ++ .byte 0xEA ++ .word 0 ++ .word 0x9020 ++ ++ # ++ # GDT & IDT stuff for switching into real mode. ++ # ++ ++gdt: .word 0, 0, 0, 0 # unused (00h) ++ .word 0, 0, 0, 0 # dummy (08h) ++ .word 0xFFFF, 0x100 # code (10h) ++ .word 0x9A00, 0 ++ .word 0xFFFF, 0x180 # data (18h) ++ .word 0x9200, 0 ++ ++gdt_48: .word 0x08 * 0x400 ++ .long gdt + 0x7C00 ++ ++idt_48: .word 0x400 ++ .long 0 ++ ++ # ++ # Be careful not to exceed 1F0h or the the bootsect.S ++ # parameters will be lost! ++ # ++ ++.end +diff --git a/efi/ia32/loader/switch.h b/efi/ia32/loader/switch.h +new file mode 100644 +index 0000000..4e18dde +--- /dev/null ++++ b/efi/ia32/loader/switch.h +@@ -0,0 +1,19 @@ ++unsigned char switch_image[] = { ++0x2e, 0x0f, 0x01, 0x15, 0x6f, 0x7c, 0x00, 0x00, ++0x2e, 0x0f, 0x01, 0x1d, 0x75, 0x7c, 0x00, 0x00, ++0x0f, 0x20, 0xc0, 0x25, 0xff, 0xff, 0xff, 0x7f, ++0x0f, 0x22, 0xc0, 0x31, 0xc0, 0x0f, 0x22, 0xd8, ++0xea, 0x27, 0x7b, 0x00, 0x00, 0x10, 0x00, 0xb8, ++0x18, 0x00, 0x8e, 0xd8, 0x8e, 0xc0, 0x8e, 0xe0, ++0x8e, 0xe8, 0x8e, 0xd0, 0x0f, 0x20, 0xc0, 0x66, ++0x83, 0xe0, 0xfe, 0x0f, 0x22, 0xc0, 0xea, 0x43, ++0x7c, 0x00, 0x00, 0x31, 0xc0, 0x8e, 0xd0, 0xbc, ++0xfe, 0x7b, 0xea, 0x00, 0x00, 0x20, 0x90, 0x00, ++0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, ++0xff, 0x00, 0x01, 0x00, 0x9a, 0x00, 0x00, 0xff, ++0xff, 0x80, 0x01, 0x00, 0x92, 0x00, 0x00, 0x00, ++0x20, 0x4f, 0x7c, 0x00, 0x00, 0x00, 0x04, 0x00, ++0x00, 0x00, 0x00, ++}; ++int switch_size = sizeof switch_image; +diff --git a/efi/ia32/reloc.c b/efi/ia32/reloc.c +new file mode 100644 +index 0000000..72db0f6 +--- /dev/null ++++ b/efi/ia32/reloc.c +@@ -0,0 +1,79 @@ ++/* reloc_x86_64.c - position independent x86_64 ELF shared object relocator ++ Copyright (C) 1999 Hewlett-Packard Co. ++ Contributed by David Mosberger davidm@hpl.hp.com. ++ Copyright (C) 2005 Intel Co. ++ Contributed by Fenghua Yu fenghua.yu@intel.com. ++ ++ This file is part of GNU-EFI, the GNU EFI development environment. ++ ++ GNU EFI is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 2, or (at your option) ++ any later version. ++ ++ GNU EFI is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GNU EFI; see the file COPYING. If not, write to the Free ++ Software Foundation, 59 Temple Place - Suite 330, Boston, MA ++ 02111-1307, USA. */ ++ ++#include <grub/efi/efi.h> ++#include <grub/efi/api.h> ++#include <link.h> ++ ++grub_efi_status_t _relocate (long ldbase, ElfW(Dyn) *dyn, ++ grub_efi_handle_t image_handle, ++ grub_efi_system_table_t *sys_tab) ++{ ++ //extern EFI_STATUS efi_main (EFI_HANDLE, EFI_SYSTEM_TABLE *); ++ long relsz = 0, relent = 0; ++ ElfW(Rel) *rel = 0; ++ unsigned long *addr; ++ int i; ++ ++ for (i = 0; dyn[i].d_tag != DT_NULL; ++i) { ++ switch (dyn[i].d_tag) { ++ case DT_REL: ++ rel = (ElfW(Rel)*) ((long) dyn[i].d_un.d_ptr + ldbase); ++ break; ++ ++ case DT_RELSZ: ++ relsz = dyn[i].d_un.d_val; ++ break; ++ ++ case DT_RELENT: ++ relent = dyn[i].d_un.d_val; ++ break; ++ ++ default: ++ continue; ++ } ++ } ++ ++ if (!rel || relent == 0){ ++ return GRUB_EFI_LOAD_ERROR; ++ } ++ while (relsz > 0) { ++ /* apply the relocs */ ++ switch (ELF64_R_TYPE (rel->r_info)) { ++ case R_386_NONE: ++ break; ++ ++ case R_386_RELATIVE: ++ addr = (unsigned long *) (ldbase + rel->r_offset); ++ *addr += ldbase; ++ break; ++ ++ default: ++ break; ++ } ++ rel = (ElfW(Rel)*) ((char *) rel + relent); ++ relsz -= relent; ++ } ++ return GRUB_EFI_SUCCESS; ++} ++ +diff --git a/efi/ia32/setjmp.S b/efi/ia32/setjmp.S +new file mode 100644 +index 0000000..38c33af +--- /dev/null ++++ b/efi/ia32/setjmp.S +@@ -0,0 +1,86 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2000 Free Software Foundation, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++/* This is stolen from libc/x86/setjmp.S in the OSKit */ ++/* ++ * Mach Operating System ++ * Copyright (c) 1991,1990,1989 Carnegie Mellon University ++ * All Rights Reserved. ++ * ++ * Permission to use, copy, modify and distribute this software and its ++ * documentation is hereby granted, provided that both the copyright ++ * notice and this permission notice appear in all copies of the ++ * software, derivative works or modified versions, and any portions ++ * thereof, and that both notices appear in supporting documentation. ++ * ++ * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" ++ * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR ++ * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. ++ * ++ * Carnegie Mellon requests users of this software to return to ++ * ++ * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU ++ * School of Computer Science ++ * Carnegie Mellon University ++ * Pittsburgh PA 15213-3890 ++ * ++ * any improvements or extensions that they make and grant Carnegie Mellon ++ * the rights to redistribute these changes. ++ */ ++/* ++ * C library -- _setjmp, _longjmp ++ * ++ * _longjmp(a,v) ++ * will generate a "return(v)" from ++ * the last call to ++ * _setjmp(a) ++ * by restoring registers from the stack, ++ * The previous signal state is NOT restored. ++ * ++ */ ++#include <grub/symbol.h> ++ ++ .file "setjmp.S" ++ ++ .text ++ ++FUNCTION(grub_setjmp) ++ movl 4(%esp), %ecx /* fetch buffer */ ++ movl %ebx, 0(%ecx) ++ movl %esi, 4(%ecx) ++ movl %edi, 8(%ecx) ++ movl %ebp, 12(%ecx) /* save frame pointer of caller */ ++ popl %edx ++ movl %esp, 16(%ecx) /* save stack pointer of caller */ ++ movl %edx, 20(%ecx) /* save pc of caller */ ++ xorl %eax, %eax ++ jmp *%edx ++ ++FUNCTION(grub_longjmp) ++ movl 8(%esp), %eax /* return(v) */ ++ movl 4(%esp), %ecx /* fetch buffer */ ++ movl 0(%ecx), %ebx ++ movl 4(%ecx), %esi ++ movl 8(%ecx), %edi ++ movl 12(%ecx), %ebp ++ movl 16(%ecx), %esp ++ orl %eax, %eax ++ jnz 0f ++ incl %eax ++0: jmp *20(%ecx) /* done, return.... */ +diff --git a/efi/pxe.c b/efi/pxe.c +new file mode 100644 +index 0000000..59f0d0d +--- /dev/null ++++ b/efi/pxe.c +@@ -0,0 +1,460 @@ ++ ++#include <grub/efi/efi.h> ++#include <grub/efi/api.h> ++#include <grub/efi/misc.h> ++#include <grub/misc.h> ++ ++#include <shared.h> ++#include <stddef.h> ++ ++#include "pxe.h" ++#include "dhcp.h" ++ ++/* Search path is: ++ * ++ * X86PC/UNDI/pxelinux/pxelinux.cfg/1902dcf5-7190-d811-bbd6-6ef21c690030 ++ * X86PC/UNDI/pxelinux/pxelinux.cfg/01-00-30-6e-f2-1c-69 ++ * X86PC/UNDI/pxelinux/pxelinux.cfg/0A103437 ++ * X86PC/UNDI/pxelinux/pxelinux.cfg/0A10343 ++ * X86PC/UNDI/pxelinux/pxelinux.cfg/0A1034 ++ * X86PC/UNDI/pxelinux/pxelinux.cfg/0A103 ++ * X86PC/UNDI/pxelinux/pxelinux.cfg/0A10 ++ * X86PC/UNDI/pxelinux/pxelinux.cfg/0A1 ++ * X86PC/UNDI/pxelinux/pxelinux.cfg/0A ++ * X86PC/UNDI/pxelinux/pxelinux.cfg/0 ++ * X86PC/UNDI/pxelinux/pxelinux.cfg/default ++ * ++ * The paths we get from uefi are like: ++ * .BootBootFile: X86PC/UNDI/pxelinux/bootx64.efi ++ * .BootCiAddr: 0.0.0.0 ++ * .BootYiAddr: 10.16.52.158 ++ * .BootSiAddr: 10.16.52.16 ++ */ ++ ++typedef struct { ++ char *options; ++ EFI_DHCP4_PACKET_OPTION *current_option; ++} dhcp_option_parser; ++ ++static void dhcp_option_parser_reset(dhcp_option_parser *parser, ++ EFI_PXE_BASE_CODE_PACKET *packet) ++{ ++ char *addr; ++ ++ addr = (char *)packet; ++ addr += offsetof(EFI_PXE_BASE_CODE_DHCPV4_PACKET, DhcpOptions); ++ parser->current_option = (void *)addr; ++ parser->options = (void *)addr; ++} ++ ++static int dhcp_option_parser_next(dhcp_option_parser *parser, ++ EFI_DHCP4_PACKET_OPTION **option) ++{ ++ char *current_option; ++ if (parser->current_option->OpCode == 255) { ++ *option = NULL; ++ return 0; ++ } ++ current_option = (char *)parser->current_option; ++ current_option += 2 + parser->current_option->Length; ++ parser->current_option = (EFI_DHCP4_PACKET_OPTION *)current_option; ++ ++ *option = parser->current_option; ++ return 1; ++} ++ ++#define DHCPMAGIK "\x63\x82\x53\x63" ++ ++static int get_dhcp_client_id(EFI_PXE_BASE_CODE_PACKET *packet, uuid_t *uuid) ++{ ++ dhcp_option_parser parser; ++ EFI_DHCP4_PACKET_OPTION *option; ++ ++ dhcp_option_parser_reset(&parser, packet); ++ ++ if (memcmp((char *)&packet->Dhcpv4.DhcpMagik, DHCPMAGIK, 4)) ++ return 0; ++ ++ while (dhcp_option_parser_next(&parser, &option)) { ++ int i; ++ char data[option->Length]; ++ ++ if (option->OpCode != 97) ++ continue; ++ ++ if (option->Length != 17) ++ continue; ++ ++ memcpy(data, option->Data, option->Length); ++ if (data[0] != 0) ++ continue; ++ ++ /* 97[17]: 009cfe245ed0c8bd45a79f54ea5fbd3d97 ++ * ^^^^^^^^^^^^ uint8_t[] ++ * ^^ uint8_t ++ * ^^ uint8_t ++ * ^^^^ BE uint16_t ++ * ^^^^ BE uint16_t ++ * ^^^^^^^^ BE uint32_t ++ * ^^ "type". 0 means UUID. ++ */ ++ memcpy(uuid, data+1, 16); ++ uuid->time_low = htonl(uuid->time_low); ++ uuid->time_mid = htons(uuid->time_mid); ++ uuid->time_hi_ver = htons(uuid->time_hi_ver); ++ ++ return 1; ++ } ++ return 0; ++} ++ ++#if 0 ++static void grub_dump_dhcp_options(EFI_PXE_BASE_CODE_PACKET *packet) ++{ ++ dhcp_option_parser parser; ++ EFI_DHCP4_PACKET_OPTION *option; ++ char hex[] = "0123456789abcdef"; ++ int i; ++ int j = 0; ++ ++ dhcp_option_parser_reset(&parser, packet); ++ ++ if (memcmp((char *)&packet->Dhcpv4.DhcpMagik, DHCPMAGIK, 4)) ++ return; ++ ++ /* 54[4]: a0014301 ++ * 51[4]: 00004506 ++ * 1[4]: ffffff00 ++ * 3[4]: a00143ef ++ * 6[8]: a001ff20a001ff30 ++ * 15[48]: 96e6374716c6c6e226f637e2275646861647e236f6d60226f637e2275646861647e236f6d602275646861647e236f6d6 ++ * 28[4]: a00143ff ++ * 40[10]: 275646861647e236f6d6 ++ * 41[8]: a001ff20a001ff30 ++ * 58[4]: 0000a203 ++ * 59[4]: 0000944d ++ * this is the one we want: ++ * 97[17]: 009cfe245ed0c8bd45a79f54ea5fbd3d97 ++ * ^^^^^^^^^^^^ in order ++ * ^^ ++ * ^^ ++ * ^^^^ out of order ++ * ^^^^ out of order ++ * ^^^^^^^^ out of order ++ * ^^ "type". 0 means UUID. ++ * 255[0]: ++ */ ++ while (dhcp_option_parser_next(&parser, &option)) { ++ char data[option->Length + 1]; ++ ++ memcpy(data, option->Data, option->Length); ++ data[option->Length] = '\0'; ++ ++ grub_printf("%d[%d]: ", option->OpCode, option->Length); ++ for (i = 0; i < option->Length; i++) { ++ grub_printf("%c%c", hex[data[i] & 0xf], ++ hex[(data[i] & 0xf0) >> 4]); ++ } ++ printf("\n"); ++ } ++ ++} ++ ++void grub_print_dhcp_info(grub_efi_loaded_image_t *loaded_image) ++{ ++ EFI_PXE_BASE_CODE *pxe = NULL; ++ EFI_PXE_BASE_CODE_PACKET *packet; ++ ++ grub_printf("got to %s\n", __func__); ++ ++ pxe = grub_efi_locate_protocol(&PxeBaseCodeProtocol, NULL); ++ if (pxe == NULL) ++ return; ++ ++ printf("DhcpDiscover options:\n"); ++ packet = (EFI_PXE_BASE_CODE_PACKET *)&pxe->Mode->DhcpDiscover.Dhcpv4; ++ grub_dump_dhcp_options(packet); ++ ++ printf("DhcpAck options:\n"); ++ packet = (EFI_PXE_BASE_CODE_PACKET *)&pxe->Mode->DhcpAck.Dhcpv4; ++ grub_dump_dhcp_options(packet); ++ ++ printf("PxeDiscover options:\n"); ++ packet = (EFI_PXE_BASE_CODE_PACKET *)&pxe->Mode->PxeDiscover.Dhcpv4; ++ grub_dump_dhcp_options(packet); ++ ++ printf("PxeReply options:\n"); ++ packet = (EFI_PXE_BASE_CODE_PACKET *)&pxe->Mode->PxeReply.Dhcpv4; ++ grub_dump_dhcp_options(packet); ++ ++#if 0 ++ printf("pxe->Mode->DhcpAck.Dhcpv4: \n"); ++ printf("\t.BootSrvName: %s\n", pxe->Mode->DhcpAck.Dhcpv4.BootpSrvName); ++ printf("\t.BootBootFile: %s\n", pxe->Mode->DhcpAck.Dhcpv4.BootpBootFile); ++ printf("\t.BootCiAddr: %d.%d.%d.%d\n", ++ pxe->Mode->DhcpAck.Dhcpv4.BootpCiAddr[0], ++ pxe->Mode->DhcpAck.Dhcpv4.BootpCiAddr[1], ++ pxe->Mode->DhcpAck.Dhcpv4.BootpCiAddr[2], ++ pxe->Mode->DhcpAck.Dhcpv4.BootpCiAddr[3]); ++ printf("\t.BootYiAddr: %d.%d.%d.%d\n", ++ pxe->Mode->DhcpAck.Dhcpv4.BootpYiAddr[0], ++ pxe->Mode->DhcpAck.Dhcpv4.BootpYiAddr[1], ++ pxe->Mode->DhcpAck.Dhcpv4.BootpYiAddr[2], ++ pxe->Mode->DhcpAck.Dhcpv4.BootpYiAddr[3]); ++ printf("\t.BootSiAddr: %d.%d.%d.%d\n", ++ pxe->Mode->DhcpAck.Dhcpv4.BootpSiAddr[0], ++ pxe->Mode->DhcpAck.Dhcpv4.BootpSiAddr[1], ++ pxe->Mode->DhcpAck.Dhcpv4.BootpSiAddr[2], ++ pxe->Mode->DhcpAck.Dhcpv4.BootpSiAddr[3]); ++ printf("\t.BootGiAddr: %d.%d.%d.%d\n", ++ pxe->Mode->DhcpAck.Dhcpv4.BootpGiAddr[0], ++ pxe->Mode->DhcpAck.Dhcpv4.BootpGiAddr[1], ++ pxe->Mode->DhcpAck.Dhcpv4.BootpGiAddr[2], ++ pxe->Mode->DhcpAck.Dhcpv4.BootpGiAddr[3]); ++ } ++ printf("\n"); ++#endif ++ ++ ++} ++#endif ++ ++static void icmp_print_error(EFI_PXE_BASE_CODE *pxe) ++{ ++ EFI_PXE_BASE_CODE_ICMP_ERROR *err = &pxe->Mode->IcmpError; ++ int i; ++ //char hex[] = "0123456789abcdef"; ++ ++ printf("icmp error\n"); ++ printf("type: %d code: %d\n", err->Type, err->Code); ++ printf("data: \n"); ++ for(i = 0; i < 464; i+=16) { ++ int x; ++ for (x = i; x < i+4; x++) ++ printf("%02x ", err->Data[x]); ++ printf(" "); ++ for (x = i+4; x < i+8; x++) ++ printf("%02x ", err->Data[x]); ++ printf(" "); ++ printf(" "); ++ for (x = i+8; x < i+12; x++) ++ printf("%02x ", err->Data[x]); ++ printf(" "); ++ for (x = i+12; x < i+16; x++) ++ printf("%02x ", err->Data[x]); ++ printf("\n"); ++ } ++} ++ ++static int grub_efi_pxe_check_for_file( ++ EFI_PXE_BASE_CODE *pxe, ++ EFI_IP_ADDRESS *ServerIp, ++ char *BootpBootFile, ++ char *configname, ++ char **returnpath) ++{ ++ size_t bplen = strlen(BootpBootFile); ++ char *Filename = grub_malloc(24 + bplen + 40); ++ char *lastslash = Filename + bplen; ++ grub_efi_uintn_t size; ++ int i; ++ EFI_STATUS rc; ++ char Buffer[8192]; ++ ++ memcpy(Filename, BootpBootFile, bplen); ++ ++ for (i = 0; i < bplen; i++) { ++ if (Filename[i] == '/') ++ lastslash = Filename + i; ++ } ++ if (*lastslash) { ++ *lastslash++ = '/'; ++ *lastslash = '\0'; ++ } ++ ++ sprintf(lastslash, configname); ++ ++ printf("tftp://%d.%d.%d.%d/%s\n", ++ ServerIp->v4.Addr[0], ServerIp->v4.Addr[1], ++ ServerIp->v4.Addr[2], ServerIp->v4.Addr[3], ++ Filename); ++ ++ rc = tftp_get_file_size(Filename, &size); ++ if (rc == GRUB_EFI_ICMP_ERROR) ++ icmp_print_error(pxe); ++ ++ if (rc == GRUB_EFI_SUCCESS) { ++ *returnpath = Filename; ++ return size; ++ } ++ grub_free(Filename); ++ return 0; ++} ++ ++static void get_pxe_server(EFI_PXE_BASE_CODE *pxe, EFI_IP_ADDRESS **Address) ++{ ++ EFI_IP_ADDRESS *tmp = grub_malloc(sizeof *tmp); ++ if (tmp) { ++ memset(tmp, '\0', sizeof (*tmp)); ++ memcpy(&tmp->Addr[0], pxe->Mode->DhcpAck.Dhcpv4.BootpSiAddr, 4); ++ *Address = tmp; ++ } ++} ++ ++static char *get_pxe_file_dir(EFI_PXE_BASE_CODE *pxe) ++{ ++ char *FileDir = NULL; ++ char *DirEnd = NULL; ++ char *BootpBootFile; ++ size_t bplen; ++ ++ BootpBootFile = pxe->Mode->DhcpAck.Dhcpv4.BootpBootFile; ++ bplen = strlen(BootpBootFile); ++ FileDir = grub_malloc(bplen + 1); ++ memcpy(FileDir, BootpBootFile, bplen); ++ FileDir[bplen] = '\0'; ++ ++ DirEnd = grub_strrchr(FileDir, '/'); ++ if (!DirEnd) ++ DirEnd = FileDir; ++ ++ *DirEnd = '\0'; ++ ++ return FileDir; ++} ++ ++static void set_pxe_info(grub_efi_loaded_image_t *LoadedImage, ++ EFI_PXE_BASE_CODE *pxe) ++{ ++ tftp_info.LoadedImage = LoadedImage; ++ tftp_info.Pxe = pxe; ++ get_pxe_server(pxe, &tftp_info.ServerIp); ++ tftp_info.BasePath = get_pxe_file_dir(pxe); ++} ++ ++char *grub_efi_pxe_get_config_path(grub_efi_loaded_image_t *LoadedImage) ++{ ++ EFI_PXE_BASE_CODE *pxe = NULL; ++ EFI_IP_ADDRESS ServerIp; ++ char *FileName = NULL; ++ EFI_PXE_BASE_CODE_DHCPV4_PACKET *packet; ++ uuid_t uuid; ++ grub_efi_uintn_t FileSize = 0; ++ grub_efi_status_t rc = GRUB_EFI_SUCCESS; ++ char *ConfigPath = NULL; ++ char hex[] = "0123456789ABCDEF"; ++ char hexip[9]; ++ int hexiplen; ++ ++ grub_efi_handle_t *handle, *handles; ++ grub_efi_uintn_t num_handles; ++ ++ handles = grub_efi_locate_handle(GRUB_EFI_BY_PROTOCOL, ++ &PxeBaseCodeProtocol, ++ NULL, &num_handles); ++ ++ if (!handles) ++ return NULL; ++ ++ for (handle = handles; num_handles--; handle++) { ++ pxe = grub_efi_open_protocol(*handle, &PxeBaseCodeProtocol, ++ GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL); ++ if (!pxe || !pxe->Mode) ++ continue; ++ if (pxe->Mode->Started && pxe->Mode->DhcpAckReceived) ++ break; ++ } ++ grub_free(handles); ++ ++ if (!pxe) ++ return NULL; ++ ++ set_pxe_info(LoadedImage, pxe); ++ ++ FileName = grub_malloc(strlen("1902dcf5-7190-d811-bbd6-6ef21c690030")); ++ ++ packet = &pxe->Mode->DhcpDiscover.Dhcpv4; ++ ++ if (get_dhcp_client_id((EFI_PXE_BASE_CODE_PACKET *)packet, &uuid)) { ++ ++ uuid.time_mid = 0x0011; ++ sprintf(FileName, ++ "%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X", ++ uuid.time_low, uuid.time_mid, uuid.time_hi_ver, ++ uuid.clock_seq_hi, uuid.clock_seq_low, ++ uuid.node[0], uuid.node[1], uuid.node[2], ++ uuid.node[3], uuid.node[4], uuid.node[5]); ++ ++ rc = tftp_get_file_size(FileName, &FileSize); ++ if (rc == GRUB_EFI_SUCCESS) { ++ char *ReturnFile = grub_malloc(strlen("(nd)/") + ++ strlen(FileName) + 1); ++ sprintf(ReturnFile, "(nd)/%s", FileName); ++ grub_free(FileName); ++ //sprintf(tftp_info.LastPath, FileName); ++ return ReturnFile; ++ } ++ } ++ ++ packet = &pxe->Mode->DhcpAck.Dhcpv4; ++ ++ if (!memcmp(packet->BootpHwAddr + 6, "\x00\x00\x00\x00\x00" ++ "\x00\x00\x00\x00\x00", 10) && ++ memcmp(packet->BootpHwAddr, "\x00\x00\x00\x00\x00\x00", ++ 6)) { ++ char mac[21]; ++ sprintf(mac, "01-%c%c-%c%c-%c%c-%c%c-%c%c-%c%c", ++ hex[(packet->BootpHwAddr[0] & 0xf0) >> 4], ++ hex[packet->BootpHwAddr[0] & 0xf], ++ hex[(packet->BootpHwAddr[1] & 0xf0) >> 4], ++ hex[packet->BootpHwAddr[1] & 0xf], ++ hex[(packet->BootpHwAddr[2] & 0xf0) >> 4], ++ hex[packet->BootpHwAddr[2] & 0xf], ++ hex[(packet->BootpHwAddr[3] & 0xf0) >> 4], ++ hex[packet->BootpHwAddr[3] & 0xf], ++ hex[(packet->BootpHwAddr[4] & 0xf0) >> 4], ++ hex[packet->BootpHwAddr[4] & 0xf], ++ hex[(packet->BootpHwAddr[5] & 0xf0) >> 4], ++ hex[packet->BootpHwAddr[5] & 0xf]); ++ ++ rc = tftp_get_file_size(mac, &FileSize); ++ if (rc == GRUB_EFI_SUCCESS) { ++ char *ReturnFile = grub_malloc(strlen("(nd)/") + ++ strlen(mac) + 1); ++ sprintf(ReturnFile, "(nd)/%s", mac); ++ return ReturnFile; ++ } ++ ++ } ++ ++ sprintf(hexip, "%c%c%c%c%c%c%c%c", ++ hex[(packet->BootpYiAddr[0] & 0xf0) >> 4], ++ hex[packet->BootpYiAddr[0] & 0xf], ++ hex[(packet->BootpYiAddr[1] & 0xf0) >> 4], ++ hex[packet->BootpYiAddr[1] & 0xf], ++ hex[(packet->BootpYiAddr[2] & 0xf0) >> 4], ++ hex[packet->BootpYiAddr[2] & 0xf], ++ hex[(packet->BootpYiAddr[3] & 0xf0) >> 4], ++ hex[packet->BootpYiAddr[3] & 0xf]); ++ ++ for (hexiplen = strlen(hexip); hexiplen > 0; hexiplen--) ++ { ++ hexip[hexiplen] = '\0'; ++ rc = tftp_get_file_size(hexip, &FileSize); ++ if (rc == GRUB_EFI_SUCCESS) { ++ char *ReturnFile = grub_malloc(strlen("(nd)/") + ++ strlen(hexip) + 1); ++ sprintf(ReturnFile, "(nd)/%s", hexip); ++ return ReturnFile; ++ } ++ } ++ ++ rc = tftp_get_file_size("efidefault", &FileSize); ++ if (rc == GRUB_EFI_SUCCESS) { ++ char *ReturnFile = grub_malloc(strlen("(nd)/efidefault")+1); ++ sprintf(ReturnFile, "(nd)/efidefault"); ++ return ReturnFile; ++ } ++ ++ return NULL; ++} +diff --git a/efi/pxe.h b/efi/pxe.h +new file mode 100644 +index 0000000..0a68007 +--- /dev/null ++++ b/efi/pxe.h +@@ -0,0 +1,237 @@ ++#ifndef PXE_H ++#define PXE_H 1 ++ ++#include "byteswap.h" ++ ++extern char *grub_efi_pxe_get_config_path(grub_efi_loaded_image_t *LoadedImage); ++extern void grub_print_dhcp_info(grub_efi_loaded_image_t *loaded_image); ++extern char *grub_efi_pxe_path_to_path_name(void); ++ ++ ++#define EFI_PXE_BASE_CODE_PROTOCOL \ ++ { 0x03c4e603, 0xac28, 0x11d3, {0x9a, 0x2d, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} } ++static grub_efi_guid_t PxeBaseCodeProtocol = EFI_PXE_BASE_CODE_PROTOCOL; ++ ++struct _EFI_PXE_BASE_CODE; ++ ++typedef enum { ++ EFI_PXE_BASE_CODE_TFTP_FIRST, ++ EFI_PXE_BASE_CODE_TFTP_GET_FILE_SIZE, ++ EFI_PXE_BASE_CODE_TFTP_READ_FILE, ++ EFI_PXE_BASE_CODE_TFTP_WRITE_FILE, ++ EFI_PXE_BASE_CODE_TFTP_READ_DIRECTORY, ++ EFI_PXE_BASE_CODE_MTFTP_GET_FILE_SIZE, ++ EFI_PXE_BASE_CODE_MTFTP_READ_FILE, ++ EFI_PXE_BASE_CODE_MTFTP_READ_DIRECTORY, ++ EFI_PXE_BASE_CODE_MTFTP_LAST ++} EFI_PXE_BASE_CODE_TFTP_OPCODE; ++ ++typedef struct { ++ grub_efi_uint8_t Addr[4]; ++} EFI_IPv4_ADDRESS; ++ ++typedef struct { ++ grub_efi_uint8_t Addr[16]; ++} EFI_IPv6_ADDRESS; ++ ++typedef struct { ++ grub_efi_uint8_t Addr[32]; ++} EFI_MAC_ADDRESS; ++ ++typedef union { ++ grub_efi_uint32_t Addr[4]; ++ EFI_IPv4_ADDRESS v4; ++ EFI_IPv6_ADDRESS v6; ++} EFI_IP_ADDRESS; ++ ++typedef grub_efi_uint16_t EFI_PXE_BASE_CODE_UDP_PORT; ++ ++typedef struct { ++ EFI_IP_ADDRESS MCastIp; ++ EFI_PXE_BASE_CODE_UDP_PORT CPort; ++ EFI_PXE_BASE_CODE_UDP_PORT SPort; ++ grub_efi_uint16_t ListenTimeout; ++ grub_efi_uint16_t TransmitTimeout; ++} EFI_PXE_BASE_CODE_MTFTP_INFO; ++ ++typedef EFI_STATUS (*EFI_PXE_BASE_CODE_MTFTP)( ++ struct _EFI_PXE_BASE_CODE *This, ++ EFI_PXE_BASE_CODE_TFTP_OPCODE Operation, ++ void *BufferPtr, ++ grub_efi_boolean_t Overwrite, ++ grub_efi_uint64_t *BufferSize, ++ grub_efi_uintn_t *BlockSize, ++ EFI_IP_ADDRESS *ServerIp, ++ grub_efi_uint8_t *Filename, ++ EFI_PXE_BASE_CODE_MTFTP_INFO *Info, ++ grub_efi_boolean_t DontUseBuffer); ++ ++typedef struct { ++ grub_efi_uint8_t BootpOpcode; ++ grub_efi_uint8_t BootpHwType; ++ grub_efi_uint8_t BootpHwAddrLen; ++ grub_efi_uint8_t BootpGateHops; ++ grub_efi_uint32_t BootpIdent; ++ grub_efi_uint16_t BootpSeconds; ++ grub_efi_uint16_t BootpFlags; ++ grub_efi_uint8_t BootpCiAddr[4]; ++ grub_efi_uint8_t BootpYiAddr[4]; ++ grub_efi_uint8_t BootpSiAddr[4]; ++ grub_efi_uint8_t BootpGiAddr[4]; ++ grub_efi_uint8_t BootpHwAddr[16]; ++ grub_efi_uint8_t BootpSrvName[64]; ++ grub_efi_uint8_t BootpBootFile[128]; ++ grub_efi_uint32_t DhcpMagik; ++ grub_efi_uint8_t DhcpOptions[56]; ++} EFI_PXE_BASE_CODE_DHCPV4_PACKET; ++ ++// TBD in EFI v1.1 ++//typedef struct { ++// grub_efi_uint8_t reserved; ++//} EFI_PXE_BASE_CODE_DHCPV6_PACKET; ++ ++typedef union { ++ grub_efi_uint8_t Raw[1472]; ++ EFI_PXE_BASE_CODE_DHCPV4_PACKET Dhcpv4; ++// EFI_PXE_BASE_CODE_DHCPV6_PACKET Dhcpv6; ++} EFI_PXE_BASE_CODE_PACKET; ++ ++typedef struct { ++ grub_efi_uint8_t Type; ++ grub_efi_uint8_t Code; ++ grub_efi_uint16_t Checksum; ++ union { ++ grub_efi_uint32_t reserved; ++ grub_efi_uint32_t Mtu; ++ grub_efi_uint32_t Pointer; ++ struct { ++ grub_efi_uint16_t Identifier; ++ grub_efi_uint16_t Sequence; ++ } Echo; ++ } u; ++ grub_efi_uint8_t Data[494]; ++} EFI_PXE_BASE_CODE_ICMP_ERROR; ++ ++typedef struct { ++ grub_efi_uint8_t ErrorCode; ++ grub_efi_char8_t ErrorString[127]; ++} EFI_PXE_BASE_CODE_TFTP_ERROR; ++ ++ ++#define EFI_PXE_BASE_CODE_MAX_IPCNT 8 ++typedef struct { ++ grub_efi_uint8_t Filters; ++ grub_efi_uint8_t IpCnt; ++ grub_efi_uint16_t reserved; ++ EFI_IP_ADDRESS IpList[EFI_PXE_BASE_CODE_MAX_IPCNT]; ++} EFI_PXE_BASE_CODE_IP_FILTER; ++ ++#define EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP 0x0001 ++#define EFI_PXE_BASE_CODE_IP_FILTER_BROADCAST 0x0002 ++#define EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS 0x0004 ++#define EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS_MULTICAST 0x0008 ++ ++typedef struct { ++ EFI_IP_ADDRESS IpAddr; ++ EFI_MAC_ADDRESS MacAddr; ++} EFI_PXE_BASE_CODE_ARP_ENTRY; ++ ++typedef struct { ++ EFI_IP_ADDRESS IpAddr; ++ EFI_IP_ADDRESS SubnetMask; ++ EFI_IP_ADDRESS GwAddr; ++} EFI_PXE_BASE_CODE_ROUTE_ENTRY; ++ ++#define EFI_PXE_BASE_CODE_MAX_ARP_ENTRIES 8 ++#define EFI_PXE_BASE_CODE_MAX_ROUTE_ENTRIES 8 ++ ++typedef struct { ++ grub_efi_boolean_t Started; ++ grub_efi_boolean_t Ipv6Available; ++ grub_efi_boolean_t Ipv6Supported; ++ grub_efi_boolean_t UsingIpv6; ++ grub_efi_boolean_t BisSupported; ++ grub_efi_boolean_t BisDetected; ++ grub_efi_boolean_t AutoArp; ++ grub_efi_boolean_t SendGUID; ++ grub_efi_boolean_t DhcpDiscoverValid; ++ grub_efi_boolean_t DhcpAckReceived; ++ grub_efi_boolean_t ProxyOfferReceived; ++ grub_efi_boolean_t PxeDiscoverValid; ++ grub_efi_boolean_t PxeReplyReceived; ++ grub_efi_boolean_t PxeBisReplyReceived; ++ grub_efi_boolean_t IcmpErrorReceived; ++ grub_efi_boolean_t TftpErrorReceived; ++ grub_efi_boolean_t MakeCallbacks; ++ grub_efi_uint8_t TTL; ++ grub_efi_uint8_t ToS; ++ EFI_IP_ADDRESS StationIp; ++ EFI_IP_ADDRESS SubnetMask; ++ EFI_PXE_BASE_CODE_PACKET DhcpDiscover; ++ EFI_PXE_BASE_CODE_PACKET DhcpAck; ++ EFI_PXE_BASE_CODE_PACKET ProxyOffer; ++ EFI_PXE_BASE_CODE_PACKET PxeDiscover; ++ EFI_PXE_BASE_CODE_PACKET PxeReply; ++ EFI_PXE_BASE_CODE_PACKET PxeBisReply; ++ EFI_PXE_BASE_CODE_IP_FILTER IpFilter; ++ grub_efi_uint32_t ArpCacheEntries; ++ EFI_PXE_BASE_CODE_ARP_ENTRY ArpCache[EFI_PXE_BASE_CODE_MAX_ARP_ENTRIES]; ++ grub_efi_uint32_t RouteTableEntries; ++ EFI_PXE_BASE_CODE_ROUTE_ENTRY RouteTable[EFI_PXE_BASE_CODE_MAX_ROUTE_ENTRIES]; ++ EFI_PXE_BASE_CODE_ICMP_ERROR IcmpError; ++ EFI_PXE_BASE_CODE_TFTP_ERROR TftpError; ++} EFI_PXE_BASE_CODE_MODE; ++ ++typedef EFI_STATUS (*EFI_PXE_BASE_CODE_START)(); ++typedef EFI_STATUS (*EFI_PXE_BASE_CODE_STOP)(); ++typedef EFI_STATUS (*EFI_PXE_BASE_CODE_DHCP)(); ++typedef EFI_STATUS (*EFI_PXE_BASE_CODE_DISCOVER)(); ++typedef EFI_STATUS (*EFI_PXE_BASE_CODE_UDP_WRITE)(); ++typedef EFI_STATUS (*EFI_PXE_BASE_CODE_UDP_READ)(); ++typedef EFI_STATUS (*EFI_PXE_BASE_CODE_SET_IP_FILTER)(); ++typedef EFI_STATUS (*EFI_PXE_BASE_CODE_ARP)(); ++typedef EFI_STATUS (*EFI_PXE_BASE_CODE_SET_PARAMETERS)(); ++typedef EFI_STATUS (*EFI_PXE_BASE_CODE_SET_STATION_IP)(); ++typedef EFI_STATUS (*EFI_PXE_BASE_CODE_SET_PACKETS)(); ++ ++typedef struct _EFI_PXE_BASE_CODE{ ++ grub_efi_uint64_t Revision; ++ EFI_PXE_BASE_CODE_START Start; ++ EFI_PXE_BASE_CODE_STOP Stop; ++ EFI_PXE_BASE_CODE_DHCP Dhcp; ++ EFI_PXE_BASE_CODE_DISCOVER Discover; ++ EFI_PXE_BASE_CODE_MTFTP Mtftp; ++ EFI_PXE_BASE_CODE_UDP_WRITE UdpWrite; ++ EFI_PXE_BASE_CODE_UDP_READ UdpRead; ++ EFI_PXE_BASE_CODE_SET_IP_FILTER SetIpFilter; ++ EFI_PXE_BASE_CODE_ARP Arp; ++ EFI_PXE_BASE_CODE_SET_PARAMETERS SetParameters; ++ EFI_PXE_BASE_CODE_SET_STATION_IP SetStationIp; ++ EFI_PXE_BASE_CODE_SET_PACKETS SetPackets; ++ EFI_PXE_BASE_CODE_MODE *Mode; ++} EFI_PXE_BASE_CODE; ++ ++typedef struct { ++ grub_efi_uint32_t time_low; ++ grub_efi_uint16_t time_mid; ++ grub_efi_uint16_t time_hi_ver; ++ grub_efi_uint8_t clock_seq_hi; ++ grub_efi_uint8_t clock_seq_low; ++ grub_efi_uint8_t node[6]; ++} uuid_t; ++ ++struct tftp_info { ++ grub_efi_loaded_image_t *LoadedImage; ++ EFI_PXE_BASE_CODE *Pxe; ++ EFI_IP_ADDRESS *ServerIp; ++ char *BasePath; ++ char *LastPath; ++ char *Buffer; ++}; ++ ++extern struct tftp_info tftp_info; ++extern grub_efi_status_t tftp_get_file_size( ++ char *Filename, ++ grub_efi_uintn_t *Size); ++ ++#endif /* PXE_H */ +diff --git a/efi/ugadebug.h b/efi/ugadebug.h +new file mode 100644 +index 0000000..f461c8b +--- /dev/null ++++ b/efi/ugadebug.h +@@ -0,0 +1,201 @@ ++#ifndef UGA_DEBUG_H ++#define UGA_DEBUG_H ++ ++extern void dc(char *file, int line); ++extern void gm(char *file, int line, char *fmt, ...); ++ ++#ifdef UGA ++ ++extern const unsigned char font8x16[]; ++ ++extern grub_efi_guid_t draw_guid; ++ ++static void *tmp_term; ++ ++#define SCREEN_WIDTH 80 ++ ++#define LINE_SIZE_X ( 8 * 100 ) ++#define LINE_START_X(x) (1280 + (x)) ++#define LINE_END_X(x) (LINE_START_X(0) + LINE_SIZE_X - 1) ++ ++#define POS_X(x) (LINE_START_X(x) + (8 * (x))) ++ ++#define LINE_SIZE_Y 16 ++#define LINE_START_Y(y) ((y) * LINE_SIZE_Y) ++#define LINE_END_Y(y) ( (((y)+1) * LINE_SIZE_Y ) - 1) ++ ++#define POS_Y(y) LINE_START_Y(y) ++ ++#define FIRST_LINE 0 ++#define LAST_LINE 75 ++ ++#define format_ascii(buf, val, is_hex, is_cap) ({ \ ++ int _n = sizeof ((buf)) - 2; \ ++ typeof(val) _nval = (val); \ ++ int _negative = 0; \ ++ int _mult = is_hex ? 16 : 10; \ ++ char _a = is_cap ? 'A' : 'a'; \ ++ grub_memset((buf), '\0', sizeof ((buf))); \ ++ if (!(_nval > 0LL)) \ ++ _negative = 1; \ ++ if (_nval == 0LL) \ ++ _negative = 0; \ ++ if (_negative) \ ++ _nval = (_nval ^ -1); \ ++ do { \ ++ int _dig = _nval % _mult; \ ++ (buf)[_n--] = ((_dig > 9) ? _dig + _a - 10 : '0'+_dig); \ ++ } while (_nval /= _mult); \ ++ if (_negative) \ ++ (buf)[_n--] = '-'; \ ++ _mult = 0; \ ++ _n++; \ ++ while (_n < sizeof ((buf))) \ ++ (buf)[_mult++] = (buf)[_n++]; \ ++ if (_negative && _mult > 1) \ ++ ((buf)[_mult-2])++; \ ++ }) ++ ++static grub_efi_uga_draw_t *debug_draw_intf; ++static void debug_putchar(int i, int j, int ch) ++{ ++ grub_efi_uga_pixel_t pixbuf[8 * 16]; ++ grub_efi_uga_pixel_t black = { .red = 0x00, .green = 0x00, .blue = 0x00 }, ++ white = { .red = 0xff, .green = 0xff, .blue = 0xff }; ++ const unsigned char *pat; ++ int x, y; ++ ++ if (!debug_draw_intf) ++ debug_draw_intf = grub_efi_locate_protocol(&draw_guid, NULL); ++ if (!debug_draw_intf) ++ return; ++ ++ pat = font8x16 + (ch << 4); ++ ++ for (y = 0; y < 16; y++) { ++ for (x = 0; x < 8; x++) { ++ int bit = pat[y] & (1 << (7 - x)); ++ ++ grub_memmove(&pixbuf[x + y * 8], bit ? &white : &black, ++ sizeof (pixbuf[0])); ++ } ++ } ++ ++ Call_Service_10(debug_draw_intf->blt, debug_draw_intf, pixbuf, ++ EfiUgaBltBufferToVideo, ++ 0, 0, ++ POS_X(i), POS_Y(j), ++ 8, 16, ++ 0); ++ ++} ++ ++static void dputs(const char *s) ++{ ++ static int row = -1; ++ int col = 89; ++ return; ++ ++ if (s && *s) { ++ do { ++ if (col > 190) { ++ row++; ++ col = 89; ++ } ++ if (row > 50) { ++ row = 0; ++ col = 89; ++ } ++ col++; ++ ++ if (*s == '\n') { ++ col = 1; ++ row++; ++ } else { ++ debug_putchar(col, row, *s); ++ } ++ } while (*(++s)); ++ } ++ row++; ++} ++ ++static int dbg_row = 0; ++static int dbg_col = 0; ++ ++static void dbg_scroll(int new_dbg_col) ++{ ++ grub_efi_uga_pixel_t black[1] ={{.red = 0x00, .green = 0x00, .blue = 0x00}}; ++ ++ if (dbg_row == LAST_LINE) { ++ dbg_col = new_dbg_col; ++ Call_Service_10(debug_draw_intf->blt, debug_draw_intf, NULL, ++ EfiUgaVideoToVideo, ++ 640, LINE_START_Y(1), ++ 640, LINE_START_Y(0), ++ LINE_SIZE_X, LINE_END_Y(LAST_LINE)+1, ++ 0); ++ Call_Service_10(debug_draw_intf->blt, debug_draw_intf, black, ++ EfiUgaVideoFill, ++ 0, 0, ++ 640, LINE_START_Y(LAST_LINE), ++ LINE_END_X(SCREEN_WIDTH)+1, LINE_END_Y(LAST_LINE)+1, ++ 0); ++ } else { ++ dbg_row++; ++ dbg_col = new_dbg_col; ++ } ++// grub_efi_stall(1000000); ++} ++ ++static void dc_backend(char *file, int line) ++{ ++ char linebuf[9] = " "; ++ int pos; ++ ++ linebuf[8] = '\0'; ++ ++ format_ascii(linebuf, line, 0, 0); ++ for (dbg_col=0, pos=0; linebuf[pos]; dbg_col++, pos++) ++ debug_putchar(dbg_col, dbg_row, linebuf[pos]); ++ ++ for (dbg_col=5, pos=0; file[pos]; dbg_col++, pos++) { ++ if (dbg_col > 15) ++ dbg_scroll(0); ++ ++ debug_putchar(dbg_col, dbg_row, file[pos]); ++ } ++} ++ ++void dc(char *file, int line) ++{ ++ dc_backend(file, line); ++ dbg_scroll(0); ++} ++ ++void ++gm(char *file, int line, char *fmt, ...) ++{ ++ va_list ap; ++ char buf[1024]=""; ++ int pos; ++ ++ va_start(ap, fmt); ++ grub_vsprintf(buf, fmt, ap); ++ va_end(ap); ++ ++ dc_backend(file, line); ++ for (dbg_col=16, pos=0; buf[pos]; dbg_col++, pos++) { ++ if (buf[pos] == '\n') ++ continue; ++ if (dbg_col > SCREEN_WIDTH-1) ++ dbg_scroll(16); ++ debug_putchar(dbg_col, dbg_row, buf[pos]); ++ } ++ dbg_scroll(0); ++} ++ ++#define dm() ({ tmp_term = current_term; current_term = term_table; grub_dprintf(__func__, "got here\n"); current_term = tmp_term; }) ++ ++#endif ++ ++#endif /* UGA_DEBUG_H */ +diff --git a/efi/x86_64/callwrap.S b/efi/x86_64/callwrap.S +new file mode 100644 +index 0000000..f574ad0 +--- /dev/null ++++ b/efi/x86_64/callwrap.S +@@ -0,0 +1,274 @@ ++/* ++ * Function calling ABI conversion from Linux to EFI for x86_64 ++ * ++ * Copyright (C) 2007 Intel Corp ++ * Bibo Mao bibo.mao@intel.com ++ * Huang Ying ying.huang@intel.com ++ */ ++ ++/* ++ * EFI calling conventions are documented at: ++ * http://msdn.microsoft.com/en-us/library/ms235286%28v=vs.80%29.aspx ++ * ELF calling conventions are documented at: ++ * http://www.x86-64.org/documentation/abi.pdf ++ * ++ * Basically here are the conversion rules: ++ * a) our function pointer is in %rdi ++ * b) ELF gives us 8-byte aligned %rsp, so we need to pad out to 16-byte ++ * alignment. ++ * c) inside each call thunker, we can only adjust the stack by ++ * multiples of 16 bytes. "offset" below refers to however much ++ * we allocate inside a thunker. ++ * d) rsi through r8 (elf) aka rcx through r9 (ms) require stack space ++ * on the MS side even though it's not getting used at all. ++ * e) arguments are as follows: (elf -> ms) ++ * 1) rdi -> rcx (32 saved) ++ * 2) rsi -> rdx (32 saved) ++ * 3) rdx -> r8 ( 32 saved) ++ * 4) rcx -> r9 (32 saved) ++ * 5) r8 -> 32(%rsp) (48 saved) ++ * 6) r9 -> 40(%rsp) (48 saved) ++ * 7) pad+offset+0(%rsp) -> 48(%rsp) (64 saved) ++ * 8) pad+offset+8(%rsp) -> 56(%rsp) (64 saved) ++ * 9) pad+offset+16(%rsp) -> 64(%rsp) (80 saved) ++ * 10) pad+offset+24(%rsp) -> 72(%rsp) (80 saved) ++ * 11) pad+offset+32(%rsp) -> 80(%rsp) (96 saved) ++ * 12) pad+offset+40(%rsp) -> 88(%rsp) (96 saved) ++ * f) because the first argument we recieve in a thunker is actually the ++ * function to be called, arguments are offset as such: ++ * 0) rdi -> caller ++ * 1) rsi -> rcx (32 saved) ++ * 2) rdx -> rdx (32 saved) ++ * 3) rcx -> r8 (32 saved) ++ * 4) r8 -> r9 (32 saved) ++ * 5) r9 -> 32(%rsp) (48 saved) ++ * 6) pad+offset+0(%rsp) -> 40(%rsp) (48 saved) ++ * 7) pad+offset+8(%rsp) -> 48(%rsp) (64 saved) ++ * 8) pad+offset+16(%rsp) -> 56(%rsp) (64 saved) ++ * 9) pad+offset+24(%rsp) -> 64(%rsp) (80 saved) ++ * 10) pad+offset+32(%rsp) -> 72(%rsp) (80 saved) ++ * 11) pad+offset+40(%rsp) -> 80(%rsp) (96 saved) ++ * 12) pad+offset+48(%rsp) -> 88(%rsp) (96 saved) ++ * e) arguments need to be moved in opposite order to avoid clobbering ++ * f) pad_stack leaves the amount of padding it added in %r11 for functions ++ * to use ++ * g) efi -> elf calls don't need to pad the stack, because the 16-byte ++ * alignment is also always 8-byte aligned. ++ */ ++ ++#define ENTRY(name) \ ++ .globl name; \ ++ name: ++ ++#define out(val) \ ++ push %rax ; \ ++ mov val, %rax ; \ ++ out %al, $128 ; \ ++ pop %rax ++ ++#define pad_stack \ ++ subq $8, %rsp ; /* must be a multiple of 16 - sizeof(%rip) */ \ ++ /* stash some handy integers */ \ ++ mov $0x8, %rax ; \ ++ mov $0x10, %r10 ; \ ++ /* see if we need padding */ \ ++ and %rsp, %rax ; \ ++ /* store the pad amount in %r11 */ \ ++ cmovnz %rax, %r11 ; \ ++ cmovz %r10, %r11 ; \ ++ /* insert the padding */ \ ++ subq %r11, %rsp ; \ ++ /* add the $8 we saved above in %r11 */ \ ++ addq $8, %r11 ; \ ++ /* store the pad amount */ \ ++ mov %r11, (%rsp) ; \ ++ /* compensate for %rip being stored on the stack by call */ \ ++ addq $8, %r11 ++ ++#define unpad_stack \ ++ /* fetch the pad amount we saved (%r11 has been clobbered) */ \ ++ mov (%rsp), %r11 ; \ ++ /* remove the padding */ \ ++ addq %r11, %rsp ++ ++ENTRY(x64_call0) ++ pad_stack ++ subq $32, %rsp ++ call *%rdi ++ addq $32, %rsp ++ unpad_stack ++ ret ++ ++ENTRY(x64_call1) ++ pad_stack ++ subq $32, %rsp ++ mov %rsi, %rcx ++ call *%rdi ++ addq $32, %rsp ++ unpad_stack ++ ret ++ ++ENTRY(x64_call2) ++ pad_stack ++ subq $32, %rsp ++ /* mov %rdx, %rdx */ ++ mov %rsi, %rcx ++ call *%rdi ++ addq $32, %rsp ++ unpad_stack ++ ret ++ ++ENTRY(x64_call3) ++ pad_stack ++ subq $32, %rsp ++ mov %rcx, %r8 ++ /* mov %rdx, %rdx */ ++ mov %rsi, %rcx ++ call *%rdi ++ addq $32, %rsp ++ unpad_stack ++ ret ++ ++ENTRY(x64_call4) ++ pad_stack ++ subq $32, %rsp ++ mov %r8, %r9 ++ mov %rcx, %r8 ++ /* mov %rdx, %rdx */ ++ mov %rsi, %rcx ++ call *%rdi ++ addq $32, %rsp ++ unpad_stack ++ ret ++ ++ENTRY(x64_call5) ++ pad_stack ++ subq $48, %rsp ++ mov %r9, 32(%rsp) ++ mov %r8, %r9 ++ mov %rcx, %r8 ++ /* mov %rdx, %rdx */ ++ mov %rsi, %rcx ++ call *%rdi ++ addq $48, %rsp ++ unpad_stack ++ ret ++ ++ENTRY(x64_call6) ++ pad_stack ++ subq $48, %rsp ++ addq $48, %r11 ++ addq %rsp, %r11 ++ mov (%r11), %rax ++ mov %rax, 40(%rsp) ++ mov %r9, 32(%rsp) ++ mov %r8, %r9 ++ mov %rcx, %r8 ++ /* mov %rdx, %rdx */ ++ mov %rsi, %rcx ++ call *%rdi ++ addq $48, %rsp ++ unpad_stack ++ ret ++ ++ENTRY(x64_call7) ++ pad_stack ++ subq $64, %rsp ++ addq $64, %r11 ++ addq $8, %r11 ++ addq %rsp, %r11 ++ mov (%r11), %rax ++ mov %rax, 48(%rsp) ++ subq $8, %r11 ++ mov (%r11), %rax ++ mov %rax, 40(%rsp) ++ mov %r9, 32(%rsp) ++ mov %r8, %r9 ++ mov %rcx, %r8 ++ /* mov %rdx, %rdx */ ++ mov %rsi, %rcx ++ call *%rdi ++ addq $64, %rsp ++ unpad_stack ++ ret ++ ++ENTRY(x64_call8) ++ pad_stack ++ subq $64, %rsp ++ addq $64, %r11 ++ addq $16, %r11 ++ addq %rsp, %r11 ++ mov (%r11), %rax ++ mov %rax, 56(%rsp) ++ subq $8, %r11 ++ mov (%r11), %rax ++ mov %rax, 48(%rsp) ++ subq $8, %r11 ++ mov (%r11), %rax ++ mov %rax, 40(%rsp) ++ mov %r9, 32(%rsp) ++ mov %r8, %r9 ++ mov %rcx, %r8 ++ /* mov %rdx, %rdx */ ++ mov %rsi, %rcx ++ call *%rdi ++ addq $64, %rsp ++ unpad_stack ++ ret ++ ++ENTRY(x64_call9) ++ pad_stack ++ subq $80, %rsp ++ addq $80, %r11 ++ addq $24, %r11 ++ addq %rsp, %r11 ++ mov (%r11), %rax ++ mov %rax, 64(%rsp) ++ subq $8, %r11 ++ mov (%r11), %rax ++ mov %rax, 56(%rsp) ++ subq $8, %r11 ++ mov (%r11), %rax ++ mov %rax, 48(%rsp) ++ subq $8, %r11 ++ mov (%r11), %rax ++ mov %rax, 40(%rsp) ++ mov %r9, 32(%rsp) ++ mov %r8, %r9 ++ mov %rcx, %r8 ++ /* mov %rdx, %rdx */ ++ mov %rsi, %rcx ++ call *%rdi ++ addq $80, %rsp ++ unpad_stack ++ ret ++ ++ENTRY(x64_call10) ++ pad_stack ++ subq $80, %rsp ++ addq $80, %r11 ++ addq $32, %r11 ++ addq %rsp, %r11 ++ mov (%r11), %rax ++ mov %rax, 72(%rsp) ++ subq $8, %r11 ++ mov (%r11), %rax ++ mov %rax, 64(%rsp) ++ subq $8, %r11 ++ mov (%r11), %rax ++ mov %rax, 56(%rsp) ++ subq $8, %r11 ++ mov (%r11), %rax ++ mov %rax, 48(%rsp) ++ subq $8, %r11 ++ mov (%r11), %rax ++ mov %rax, 40(%rsp) ++ mov %r9, 32(%rsp) ++ mov %r8, %r9 ++ mov %rcx, %r8 ++ /* mov %rdx, %rdx */ ++ mov %rsi, %rcx ++ call *%rdi ++ addq $80, %rsp ++ unpad_stack ++ ret +diff --git a/efi/x86_64/crt0-efi.S b/efi/x86_64/crt0-efi.S +new file mode 100644 +index 0000000..8667694 +--- /dev/null ++++ b/efi/x86_64/crt0-efi.S +@@ -0,0 +1,63 @@ ++/* crt0-efi-x86_64.S - x86_64 EFI startup code. ++ Copyright (C) 1999 Hewlett-Packard Co. ++ Contributed by David Mosberger davidm@hpl.hp.com. ++ Copyright (C) 2005 Intel Co. ++ Contributed by Fenghua Yu fenghua.yu@intel.com. ++ ++ This file is part of GNU-EFI, the GNU EFI development environment. ++ ++ GNU EFI is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 2, or (at your option) ++ any later version. ++ ++ GNU EFI is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GNU EFI; see the file COPYING. If not, write to the Free ++ Software Foundation, 59 Temple Place - Suite 330, Boston, MA ++ 02111-1307, USA. */ ++ ++ .text ++ .align 4 ++ ++ .globl _start ++_start: ++ subq $8, %rsp ++ pushq %rcx ++ pushq %rdx ++ ++0: ++ lea ImageBase(%rip), %rdi ++ lea _DYNAMIC(%rip), %rsi ++ ++ popq %rcx ++ popq %rdx ++ pushq %rcx ++ pushq %rdx ++ call _relocate ++ ++ popq %rdi ++ popq %rsi ++ ++ call efi_main ++ addq $8, %rsp ++ ++.exit: ++ ret ++ ++ // hand-craft a dummy .reloc section so EFI knows it's a relocatable executable: ++ ++ .data ++dummy: .long 0 ++ ++#define IMAGE_REL_ABSOLUTE 0 ++ .section .reloc, "a" ++label1: ++ .long dummy-label1 // Page RVA ++ .long 10 // Block Size (2*4+2) ++ .word (IMAGE_REL_ABSOLUTE<<12) + 0 // reloc for dummy ++ +diff --git a/efi/x86_64/elf_efi.lds b/efi/x86_64/elf_efi.lds +new file mode 100644 +index 0000000..18a9ab9 +--- /dev/null ++++ b/efi/x86_64/elf_efi.lds +@@ -0,0 +1,58 @@ ++OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") ++OUTPUT_ARCH(i386:x86-64) ++ENTRY(_start) ++SECTIONS ++{ ++ . = 0; ++ ImageBase = .; ++ .hash : { *(.hash) } /* this MUST come first! */ ++ . = ALIGN(4096); ++ .eh_frame : ++ { ++ *(.eh_frame) ++ } ++ . = ALIGN(4096); ++ .text : ++ { ++ *(.text) ++ } ++ .reloc : ++ { ++ *(.reloc) ++ } ++ . = ALIGN(4096); ++ .data : ++ { ++ *(.rodata*) ++ *(.got.plt) ++ *(.got) ++ *(.data*) ++ *(.sdata) ++ /* the EFI loader doesn't seem to like a .bss section, so we stick ++ it all into .data: */ ++ *(.sbss) ++ *(.scommon) ++ *(.dynbss) ++ *(.bss) ++ *(COMMON) ++ *(.rel.local) ++ } ++ . = ALIGN(4096); ++ .dynamic : { *(.dynamic) } ++ . = ALIGN(4096); ++ .rela : ++ { ++ *(.rela.data*) ++ *(.rela.got) ++ *(.rela.stab) ++ } ++ . = ALIGN(4096); ++ .dynsym : { *(.dynsym) } ++ . = ALIGN(4096); ++ .dynstr : { *(.dynstr) } ++ . = ALIGN(4096); ++ .ignored.reloc : ++ { ++ *(.rela.reloc) ++ } ++} +diff --git a/efi/x86_64/loader/Makefile b/efi/x86_64/loader/Makefile +new file mode 100644 +index 0000000..0d8b888 +--- /dev/null ++++ b/efi/x86_64/loader/Makefile +@@ -0,0 +1,20 @@ ++ ++all : switch.h ++ ++bin_to_h: bin_to_h.c ++ $(CC) $(CFLAGS) -o $@ $< ++ ++switch.h : switch.bin bin_to_h ++ ./bin_to_h < $< > $@ ++ ++switch.bin : switch ++ objcopy -O binary $< $@ ++ ++switch : switch.o ++ ld.bfd -Ttext-segment=0x688 --init _start -o $@ $< ++ ++switch.o : switch.S ++ as -march=generic64 -defsym _start=0 -o $@ $< ++ ++clean : ++ @rm -vf switch.o switch switch.bin switch.h bin_to_h +diff --git a/efi/x86_64/loader/bin_to_h.c b/efi/x86_64/loader/bin_to_h.c +new file mode 100644 +index 0000000..4cff104 +--- /dev/null ++++ b/efi/x86_64/loader/bin_to_h.c +@@ -0,0 +1,29 @@ ++#include <stdio.h> ++#include <stdlib.h> ++ ++int ++main (void) ++{ ++ unsigned n = 0; ++ int c; ++ ++ printf ("unsigned char switch_image[] = {\n"); ++ ++ while ((c = getchar ()) != EOF) ++ { ++ printf("0x%02x,%s", ++ c & 0xFF, ++ (++n & 0x07) ? " " : "\n"); ++ } ++ ++ if (n & 0x07) ++ { ++ printf("\n"); ++ } ++ ++ printf("};\n" ++ "int switch_size = sizeof switch_image;\n"); ++ ++ return 0; ++} ++ +diff --git a/efi/x86_64/loader/linux.c b/efi/x86_64/loader/linux.c +new file mode 100644 +index 0000000..49a668e +--- /dev/null ++++ b/efi/x86_64/loader/linux.c +@@ -0,0 +1,760 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2006 Free Software Foundation, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#include <grub/misc.h> ++#include <grub/types.h> ++#include <grub/cpu/linux.h> ++#include <grub/efi/api.h> ++#include <grub/efi/efi.h> ++#include <grub/efi/misc.h> ++ ++#include "switch.h" ++ ++#include <shared.h> ++ ++#include "graphics.h" ++ ++#define grub_file_size() filemax ++ ++#define NEXT_MEMORY_DESCRIPTOR(desc, size) \ ++ ((grub_efi_memory_descriptor_t *) ((char *) (desc) + (size))) ++ ++#define PTR_HI(x) ((grub_uint32_t) ((unsigned long long)((unsigned long)(x)) >> 32)) ++ ++#ifndef SECTOR_SIZE ++#define SECTOR_SIZE 0x200 ++#endif /* defined(SECTOR_SIZE) */ ++#ifndef SECTOR_BITS ++#define SECTOR_BITS 9 ++#endif /* defined(SECTOR_BITS) */ ++ ++static unsigned long linux_mem_size; ++static int loaded; ++static void *real_mode_mem; ++static void *prot_mode_mem; ++static grub_size_t prot_kernel_size; ++static void *initrd_mem; ++static grub_efi_uintn_t real_mode_pages; ++static grub_efi_uintn_t prot_mode_pages; ++static grub_efi_uintn_t initrd_pages; ++static grub_efi_guid_t graphics_output_guid = GRUB_EFI_GRAPHICS_OUTPUT_GUID; ++ ++static inline grub_size_t ++page_align (grub_size_t size) ++{ ++ return (size + (1 << 12) - 1) & (~((1 << 12) - 1)); ++} ++ ++static void ++free_pages (void) ++{ ++ if (real_mode_mem) ++ { ++ grub_efi_free_pages ((grub_addr_t) real_mode_mem, real_mode_pages); ++ real_mode_mem = 0; ++ } ++ ++ if (initrd_mem) ++ { ++ grub_efi_free_pages ((grub_addr_t) initrd_mem, initrd_pages); ++ initrd_mem = 0; ++ } ++ ++ if (mmap_buf) ++ { ++ grub_efi_free_pages ((grub_addr_t) mmap_buf, mmap_pages); ++ mmap_buf = 0; ++ } ++} ++ ++/* Allocate pages for the real mode code and the protected mode code ++ for linux as well as a memory map buffer. */ ++static int ++allocate_pages (grub_size_t real_size, grub_size_t prot_size) ++{ ++ grub_efi_uintn_t desc_size; ++ grub_efi_memory_descriptor_t *mmap_end; ++ grub_efi_memory_descriptor_t *desc; ++ grub_efi_physical_address_t addr; ++ ++ /* Make sure that each size is aligned to a page boundary. */ ++ real_size = page_align (real_size + SECTOR_SIZE); ++ prot_size = page_align (prot_size); ++ ++ grub_dprintf ("linux", "real_size = %x, prot_size = %x, mmap_size = %x\n", ++ (unsigned int) real_size, (unsigned int) prot_size, ++ (unsigned int) mmap_size); ++ ++ /* Calculate the number of pages; Combine the real mode code with ++ the memory map buffer for simplicity. */ ++ real_mode_pages = (real_size >> 12); ++ prot_mode_pages = (prot_size >> 12); ++ ++ /* Initialize the memory pointers with NULL for convenience. */ ++ real_mode_mem = 0; ++ prot_mode_mem = 0; ++ ++ if (grub_efi_get_memory_map (0, &desc_size, 0) <= 0) ++ grub_fatal ("cannot get memory map"); ++ ++ addr = 0; ++ mmap_end = NEXT_MEMORY_DESCRIPTOR (mmap_buf, mmap_size); ++ /* First, find free pages for the real mode code ++ and the memory map buffer. */ ++ for (desc = mmap_buf; ++ desc < mmap_end; ++ desc = NEXT_MEMORY_DESCRIPTOR (desc, desc_size)) ++ { ++ if (desc->type == GRUB_EFI_CONVENTIONAL_MEMORY ++ && desc->num_pages >= real_mode_pages) ++ { ++ grub_efi_physical_address_t physical_end; ++ ++ physical_end = desc->physical_start + (desc->num_pages << 12); ++ ++ grub_dprintf ("linux", "physical_start = %x, physical_end = %x\n", ++ (unsigned) desc->physical_start, ++ (unsigned) physical_end); ++ addr = physical_end - real_size; ++ if (addr < 0x100000) ++ continue; ++ ++ /* the kernel wants this address to be under 1 gig.*/ ++ if (desc->physical_start > 0x40000000 - real_size) ++ continue; ++ ++ if (addr > 0x40000000 - real_size) ++ addr = 0x40000000 - real_size; ++ ++ grub_dprintf ("linux", "trying to allocate %u pages at %x\n", ++ (unsigned) real_mode_pages, (unsigned) addr); ++ real_mode_mem = grub_efi_allocate_pages (addr, real_mode_pages); ++ if (! real_mode_mem) ++ grub_fatal ("cannot allocate pages"); ++ ++ desc->num_pages -= real_mode_pages; ++ break; ++ } ++ } ++ ++ if (! real_mode_mem) ++ { ++ grub_printf ("cannot allocate real mode pages"); ++ errnum = ERR_WONT_FIT; ++ goto fail; ++ } ++ ++ grub_printf("Trying to allocate %u pages for VMLINUZ\n", ++ (unsigned) prot_mode_pages); ++ prot_mode_mem = grub_efi_allocate_anypages(prot_mode_pages); ++ ++ if (!prot_mode_mem) ++ grub_fatal("Cannot allocate pages for VMLINUZ"); ++ grub_printf("Got pages at %p\n", prot_mode_mem); ++ ++ return 1; ++ ++ fail: ++ free_pages (); ++ return 0; ++} ++ ++/* do some funky stuff, then boot linux */ ++void ++linux_boot (void) ++{ ++ grub_printf ("zImage is not supported under EFI.\n"); ++ for (;;); ++} ++ ++static void ++grub_efi_disable_network (void) ++{ ++ grub_efi_guid_t pci_io_guid = GRUB_EFI_PCI_IO_GUID; ++ grub_efi_pci_io_t *pci_proto; ++ grub_efi_uintn_t num_handles; ++ grub_efi_handle_t *handle, *handles; ++ ++ handles = grub_efi_locate_handle (GRUB_EFI_BY_PROTOCOL, ++ &pci_io_guid, ++ NULL, &num_handles); ++ if (!handles || !num_handles) ++ return; ++ ++ for (handle = handles; num_handles--; handle++) ++ { ++ grub_efi_uint8_t class, pos, id, pm = 0; ++ grub_efi_uint16_t pm_state, vendor; ++ int ttl = 48; ++ ++ pci_proto = grub_efi_open_protocol (*handle, &pci_io_guid, ++ GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL); ++ ++ if (!pci_proto) ++ continue; ++ ++ Call_Service_5 (pci_proto->pci.read, pci_proto, ++ grub_efi_pci_io_width_uint8, 0x0b, 1, &class); ++ ++ /* Not a network device */ ++ if (class != 0x02) ++ continue; ++ ++ Call_Service_5 (pci_proto->pci.read, pci_proto, ++ grub_efi_pci_io_width_uint16, 0x00, 1, &vendor); ++ ++ /* Not a Broadcom */ ++ if (vendor != 0x14e4) ++ continue; ++ ++ Call_Service_5 (pci_proto->pci.read, pci_proto, ++ grub_efi_pci_io_width_uint16, 0x2c, 1, &vendor); ++ ++ /* Not an Apple */ ++ if (vendor != 0x106b) ++ continue; ++ ++ pos = 0x34; ++ ++ /* Find the power management registers */ ++ while (ttl--) ++ { ++ Call_Service_5 (pci_proto->pci.read, pci_proto, ++ grub_efi_pci_io_width_uint8, pos, 1, &pos); ++ ++ if (pos < 0x40) ++ break; ++ ++ pos &= ~3; ++ ++ Call_Service_5 (pci_proto->pci.read, pci_proto, ++ grub_efi_pci_io_width_uint8, pos, 1, &id); ++ ++ if (id == 0xff) ++ break; ++ ++ if (id == 0x01) ++ { ++ pm = pos; ++ break; ++ } ++ ++ pos += 1; ++ } ++ ++ if (pm) ++ { ++ Call_Service_5 (pci_proto->pci.read, pci_proto, ++ grub_efi_pci_io_width_uint16, pm + 4, 1, &pm_state); ++ ++ pm_state &= ~0x03; ++ pm_state |= 0x03; ++ ++ /* Set to D3 */ ++ ++ Call_Service_5 (pci_proto->pci.write, pci_proto, ++ grub_efi_pci_io_width_uint16, pm + 4, 1, &pm_state); ++ ++ Call_Service_5 (pci_proto->pci.read, pci_proto, ++ grub_efi_pci_io_width_uint16, pm + 4, 1, ++ &pm_state); ++ } ++ } ++} ++ ++void ++big_linux_boot (void) ++{ ++ struct linux_kernel_params *params; ++ struct grub_linux_kernel_header *lh; ++ grub_efi_uintn_t map_key; ++ grub_efi_uintn_t desc_size; ++ grub_efi_uint32_t desc_version; ++ int e820_nr_map; ++ ++ params = real_mode_mem; ++ ++ graphics_set_kernel_params (params); ++ ++ if (grub_efi_get_memory_map (&map_key, &desc_size, &desc_version) <= 0) ++ grub_fatal ("cannot get memory map"); ++ ++ /* Pass e820 memmap. */ ++ e820_map_from_efi_map ((struct e820_entry *) params->e820_map, &e820_nr_map, ++ mmap_buf, desc_size, mmap_size); ++ params->e820_nr_map = e820_nr_map; ++ ++ grub_efi_disable_network(); ++ ++ if (! grub_efi_exit_boot_services (map_key)) ++ grub_fatal ("cannot exit boot services"); ++ ++ /* Note that no boot services are available from here. */ ++ ++ /* copy vmlinuz image to hdr.code32_start */ ++ memcpy ((char *)(unsigned long)(params->hdr.code32_start), (char *)prot_mode_mem, ++ prot_kernel_size); ++ /* copy switch image */ ++ memcpy ((void *) 0x700, switch_image, switch_size); ++ ++ lh = ¶ms->hdr; ++ /* Pass EFI parameters. */ ++ if (grub_le_to_cpu16 (lh->version) >= 0x0206) { ++ params->version_0206.efi_mem_desc_size = desc_size; ++ params->version_0206.efi_mem_desc_version = desc_version; ++ params->version_0206.efi_mmap = (grub_uint32_t) (unsigned long) mmap_buf; ++ params->version_0206.efi_mmap_size = mmap_size; ++ } else if (grub_le_to_cpu16 (lh->version) >= 0x0204) { ++ params->version_0204.efi_mem_desc_size = desc_size; ++ params->version_0204.efi_mem_desc_version = desc_version; ++ params->version_0204.efi_mmap = (grub_uint32_t) (unsigned long) mmap_buf; ++ params->version_0204.efi_mmap_size = mmap_size; ++ } else /* dunno */ { ++ params->dunno.efi_mem_desc_size = desc_size; ++ params->dunno.efi_mem_desc_version = desc_version; ++ params->dunno.efi_mmap = (grub_uint32_t) (unsigned long) mmap_buf; ++ params->dunno.efi_mmap_size = mmap_size; ++ params->dunno.efi_mmap_hi = PTR_HI(mmap_buf); ++ } ++ ++#ifdef __x86_64__ ++ /* Pass parameters. */ ++ asm volatile ("mov %0, %%rsi" : : "m" (real_mode_mem)); ++ asm volatile ("movl %0, %%ebx" : : "m" (params->hdr.code32_start)); ++ ++ /* Enter Linux, switch from 64-bit long mode ++ * to 32-bit protect mode, this code end address ++ * must not exceed 0x1000, because linux kernel bootstrap ++ * code will flush this area ++ */ ++ asm volatile ( "mov $0x700, %%rdi" : :); ++ asm volatile ( "jmp *%%rdi" : :); ++#else ++ /* Pass parameters. */ ++ asm volatile ("mov %0, %%esi" : : "m" (real_mode_mem)); ++ asm volatile ("movl %0, %%ebx" : : "m" (params->hdr.code32_start)); ++ ++ /* Enter Linux, switch from 64-bit long mode ++ * to 32-bit protect mode, this code end address ++ * must not exceed 0x1000, because linux kernel bootstrap ++ * code will flush this area ++ */ ++ asm volatile ( "mov $0x700, %%edi" : :); ++ asm volatile ( "jmp *%%edi" : :); ++#endif ++ ++ /* Never reach here. */ ++ for (;;); ++} ++ ++int ++grub_load_linux (char *kernel, char *arg) ++{ ++ struct grub_linux_kernel_header *lh; ++ struct linux_kernel_params *params; ++ static struct linux_kernel_params params_buf; ++ grub_uint8_t setup_sects; ++ grub_size_t real_size, prot_size; ++ grub_uint64_t kernel_base, kernel_length, kernel_pages; ++ grub_ssize_t len; ++ char *dest; ++ int align, min_alignment; ++ int relocatable = 0; ++ ++ if (kernel == NULL) ++ { ++ errnum = ERR_BAD_FILENAME; ++ grub_printf ("no kernel specified"); ++ goto fail1; ++ } ++ ++ if (! grub_open (kernel)) ++ goto fail1; ++ ++ if (grub_read ((char *) ¶ms_buf, sizeof (params_buf)) ++ != sizeof (params_buf)) ++ { ++ errnum = ERR_EXEC_FORMAT; ++ grub_printf ("cannot read the linux header"); ++ goto fail; ++ } ++ ++ lh = ¶ms_buf.hdr; ++ ++ if (lh->boot_flag != grub_cpu_to_le16 (0xaa55)) ++ { ++ errnum = ERR_EXEC_FORMAT; ++ grub_printf ("invalid magic number: %x", lh->boot_flag); ++ goto fail; ++ } ++ ++ /* EFI support is quite new, so reject old versions. */ ++ if (lh->header != grub_cpu_to_le32 (GRUB_LINUX_MAGIC_SIGNATURE) ++ || grub_le_to_cpu16 (lh->version) < 0x0203) ++ { ++ errnum = ERR_EXEC_FORMAT; ++ grub_printf ("too old version"); ++ goto fail; ++ } ++ ++ /* I'm not sure how to support zImage on EFI. */ ++ if (! (lh->loadflags & GRUB_LINUX_FLAG_BIG_KERNEL)) ++ { ++ errnum = ERR_EXEC_FORMAT; ++ grub_printf ("zImage is not supported"); ++ goto fail; ++ } ++ ++ setup_sects = lh->setup_sects; ++ ++ real_size = 0x1000 + grub_strlen(arg); ++ prot_size = grub_file_size () - (setup_sects << SECTOR_BITS) - SECTOR_SIZE; ++ prot_kernel_size = prot_size; ++ ++ if (! allocate_pages (real_size, prot_size)) ++ goto fail; ++ ++ /* XXX Linux assumes that only elilo can boot Linux on EFI!!! */ ++ lh->type_of_loader = 0x50; ++ ++ lh->cmd_line_ptr = (grub_uint32_t) (unsigned long) real_mode_mem + 0x1000; ++ lh->ramdisk_image = 0; ++ lh->ramdisk_size = 0; ++ ++ grub_memset(real_mode_mem, 0, real_size); ++ ++ params = (struct linux_kernel_params *) real_mode_mem; ++ ++ grub_memmove(¶ms->hdr, lh, 0x202 + lh->jump_off - 0x1f1); ++ ++ params->cl_magic = GRUB_LINUX_CL_MAGIC; ++ params->cl_offset = 0x1000; ++ ++ /* These are not needed to be precise, because Linux uses these values ++ only to raise an error when the decompression code cannot find good ++ space. */ ++ params->ext_mem = ((32 * 0x100000) >> 10); ++ params->alt_mem = ((32 * 0x100000) >> 10); ++ ++ /* No APM on EFI. */ ++ params->apm_version = 0; ++ params->apm_code_segment = 0; ++ params->apm_entry = 0; ++ params->apm_16bit_code_segment = 0; ++ params->apm_data_segment = 0; ++ params->apm_flags = 0; ++ params->apm_code_len = 0; ++ params->apm_data_len = 0; ++ ++ /* XXX is there any way to use SpeedStep on EFI? */ ++ params->ist_signature = 0; ++ params->ist_command = 0; ++ params->ist_event = 0; ++ params->ist_perf_level = 0; ++ ++ /* Let the kernel probe the information. */ ++ grub_memset (params->hd0_drive_info, 0, sizeof (params->hd0_drive_info)); ++ grub_memset (params->hd1_drive_info, 0, sizeof (params->hd1_drive_info)); ++ ++ /* No MCA on EFI. */ ++ params->rom_config_len = 0; ++ ++ if (grub_le_to_cpu16 (lh->version) >= 0x0206) { ++ grub_memcpy(¶ms->version_0204.efi_signature, "EL64", 4); ++ params->version_0206.efi_system_table = \ ++ (grub_uint32_t) (unsigned long) grub_efi_system_table; ++ } else if (grub_le_to_cpu16 (lh->version) >= 0x0204) { ++ grub_memcpy(¶ms->version_0204.efi_signature, "EFIL", 4); ++ params->version_0204.efi_system_table = \ ++ (grub_uint32_t) (unsigned long) grub_efi_system_table; ++ } else /* dunno */ { ++ params->dunno.efi_signature = GRUB_LINUX_EFI_SIGNATURE_X64; ++ params->dunno.efi_system_table = \ ++ (grub_uint32_t) (unsigned long) grub_efi_system_table; ++ params->dunno.efi_system_table_hi = PTR_HI(grub_efi_system_table); ++ } ++ /* The other EFI parameters are filled when booting. */ ++ ++ /* No EDD */ ++ params->eddbuf_entries = 0; ++ params->edd_mbr_sig_buf_entries = 0; ++ ++ /* XXX there is no way to know if the kernel really supports EFI. */ ++ grub_printf ("[Linux-EFI, setup=0x%x, size=0x%x]\n", (unsigned int)real_size, ++ (unsigned int)prot_size); ++ ++ /* Check the mem= option to limit memory used for initrd. */ ++ { ++ char *mem; ++ ++ mem = grub_strstr (arg, "mem="); ++ if (mem) ++ { ++ char *value = mem + 4; ++ ++ safe_parse_maxulong (&value, &linux_mem_size); ++ switch (errnum) ++ { ++ case ERR_NUMBER_OVERFLOW: ++ /* If an overflow occurs, use the maximum address for ++ initrd instead. This is good, because MAXINT is ++ greater than LINUX_INITRD_MAX_ADDRESS. */ ++ linux_mem_size = LINUX_INITRD_MAX_ADDRESS; ++ errnum = ERR_NONE; ++ break; ++ ++ case ERR_NONE: ++ { ++ int shift = 0; ++ ++ switch (grub_tolower (*value)) ++ { ++ case 'g': ++ shift += 10; ++ case 'm': ++ shift += 10; ++ case 'k': ++ shift += 10; ++ default: ++ break; ++ } ++ ++ /* Check an overflow. */ ++ if (linux_mem_size > (~0UL >> shift)) ++ linux_mem_size = 0; ++ else ++ linux_mem_size <<= shift; ++ } ++ break; ++ ++ default: ++ linux_mem_size = 0; ++ errnum = ERR_NONE; ++ break; ++ } ++ } ++ else ++ linux_mem_size = 0; ++ } ++ ++ dest = grub_stpcpy ((char *) real_mode_mem + 0x1000, skip_to(0, arg)); ++ ++ grub_seek ((setup_sects << SECTOR_BITS) + SECTOR_SIZE); ++ len = prot_size; ++ if (grub_read ((char *)prot_mode_mem, len) != len) ++ grub_printf ("Couldn't read file"); ++ ++ if (lh->version >= 0x205) { ++ for (align = lh->min_alignment; align < 32; align++) { ++ if (lh->kernel_alignment & (1 << align)) { ++ break; ++ } ++ } ++ relocatable = lh->relocatable_kernel; ++ } ++ ++ if (lh->version >= 0x20a) { ++ kernel_base = lh->pref_address; ++ kernel_length = lh->init_size; ++ min_alignment = lh->min_alignment; ++ } else { ++ kernel_base = lh->code32_start; ++ kernel_length = prot_kernel_size; ++ min_alignment = 0; ++ } ++ ++ kernel_pages = (kernel_length + 4095) >> 12; ++ ++ /* Attempt to allocate address space for the kernel */ ++ kernel_base = (grub_uint64_t)grub_efi_allocate_pages(kernel_base, kernel_pages); ++ ++ if (!kernel_base && relocatable) { ++ grub_efi_memory_descriptor_t *desc; ++ grub_efi_memory_descriptor_t tdesc; ++ grub_efi_uintn_t desc_size; ++ ++ if (grub_efi_get_memory_map (0, &desc_size, 0) <= 0) ++ grub_fatal ("cannot get memory map"); ++ ++ while (align >= min_alignment) { ++ for (desc = mmap_buf; ++ desc < NEXT_MEMORY_DESCRIPTOR (mmap_buf, mmap_size); ++ desc = NEXT_MEMORY_DESCRIPTOR (desc, desc_size)) ++ { ++ grub_uint64_t addr; ++ grub_uint64_t alignval = (1 << align) - 1; ++ ++ if (desc->type != GRUB_EFI_CONVENTIONAL_MEMORY) ++ continue; ++ ++ memcpy(&tdesc, desc, sizeof(tdesc)); ++ ++ addr = (tdesc.physical_start + alignval) & ~(alignval); ++ ++ if ((addr + kernel_length) > ++ (tdesc.physical_start + (tdesc.num_pages << 12))) ++ continue; ++ ++ kernel_base = (grub_uint64_t)grub_efi_allocate_pages(addr, kernel_pages); ++ ++ if (kernel_base) { ++ lh->kernel_alignment = 1 << align; ++ break; ++ } ++ } ++ align--; ++ if (kernel_base) ++ break; ++ } ++ } ++ ++ if (!kernel_base) { ++ grub_printf("Failed to allocate kernel memory"); ++ errnum = ERR_UNRECOGNIZED; ++ goto fail; ++ } ++ ++ lh->code32_start = kernel_base; ++ ++ if (errnum == ERR_NONE) ++ { ++ loaded = 1; ++ } ++ ++ fail: ++ ++ grub_close (); ++ ++ fail1: ++ ++ if (errnum != ERR_NONE) ++ { ++ loaded = 0; ++ } ++ return errnum ? KERNEL_TYPE_NONE : KERNEL_TYPE_BIG_LINUX; ++} ++ ++int ++grub_load_initrd (char *initrd) ++{ ++ grub_ssize_t size; ++ grub_addr_t addr_min, addr_max; ++ grub_addr_t addr; ++ grub_efi_memory_descriptor_t *desc; ++ grub_efi_memory_descriptor_t tdesc; ++ grub_efi_uintn_t desc_size; ++ struct linux_kernel_params *params; ++ ++ if (initrd == NULL) ++ { ++ errnum = ERR_BAD_FILENAME; ++ grub_printf ("No module specified"); ++ goto fail1; ++ } ++ ++ if (! loaded) ++ { ++ errnum = ERR_UNRECOGNIZED; ++ grub_printf ("You need to load the kernel first."); ++ goto fail1; ++ } ++ ++ if (! grub_open (initrd)) ++ goto fail1; ++ ++ size = grub_file_size (); ++ initrd_pages = (page_align (size) >> 12); ++ ++ params = (struct linux_kernel_params *) real_mode_mem; ++ grub_dprintf(__func__, "initrd_pages: %lu\n", initrd_pages); ++ ++ addr_max = grub_cpu_to_le32 (params->hdr.initrd_addr_max); ++ if (linux_mem_size != 0 && linux_mem_size < addr_max) ++ addr_max = linux_mem_size; ++ addr_max &= ~((1 << 12)-1); ++ ++ /* Usually, the compression ratio is about 50%. */ ++ addr_min = 0; ++ ++ /* Find the highest address to put the initrd. */ ++ grub_dprintf(__func__, "addr_min: 0x%lx addr_max: 0x%lx mmap_size: %lu\n", addr_min, addr_max, mmap_size); ++ if (grub_efi_get_memory_map (0, &desc_size, 0) <= 0) ++ grub_fatal ("cannot get memory map"); ++ ++ addr = 0; ++ for (desc = mmap_buf; ++ desc < NEXT_MEMORY_DESCRIPTOR (mmap_buf, mmap_size); ++ desc = NEXT_MEMORY_DESCRIPTOR (desc, desc_size)) ++ { ++ if (desc->type != GRUB_EFI_CONVENTIONAL_MEMORY) ++ continue; ++ memcpy(&tdesc, desc, sizeof (tdesc)); ++ if (tdesc.physical_start < addr_min ++ && tdesc.num_pages > ((addr_min - tdesc.physical_start) >> 12)) ++ { ++ tdesc.num_pages -= ((addr_min - tdesc.physical_start) >> 12); ++ tdesc.physical_start = addr_min; ++ } ++ ++ grub_dprintf(__func__, "desc = {type=%d,ps=0x%llx,vs=0x%llx,sz=%llu,attr=%llu}\n", desc->type, (unsigned long long)desc->physical_start, (unsigned long long)desc->virtual_start, (unsigned long long)desc->num_pages, (unsigned long long)desc->attribute); ++ if (tdesc.physical_start >= addr_min ++ && tdesc.physical_start + page_align (size) <= addr_max ++ && tdesc.num_pages >= initrd_pages) ++ { ++ grub_efi_physical_address_t physical_end; ++ ++ physical_end = tdesc.physical_start + (tdesc.num_pages << 12); ++ if (physical_end > addr_max) ++ physical_end = addr_max; ++ ++ if (physical_end <= 0x7fffffffUL && physical_end > addr) ++ addr = physical_end - page_align (size); ++ } ++ } ++ ++ if (addr == 0) ++ { ++ errnum = ERR_UNRECOGNIZED; ++ grub_printf ("no free pages available"); ++ goto fail; ++ } ++ ++ initrd_mem = grub_efi_allocate_pages (addr, initrd_pages); ++ if (! initrd_mem) ++ grub_fatal ("cannot allocate pages: %x@%x", (unsigned)initrd_pages, ++ (unsigned)addr); ++ ++ if (grub_read (initrd_mem, size) != size) ++ { ++ grub_printf ("Couldn't read file"); ++ goto fail; ++ } ++ ++ grub_printf (" [Initrd, addr=0x%x, size=0x%x]\n", (unsigned int) addr, ++ (unsigned int) size); ++ ++ params->hdr.ramdisk_image = addr; ++ params->hdr.ramdisk_size = size; ++ params->hdr.root_dev = 0x0100; /* XXX */ ++ ++ fail: ++ grub_close (); ++ fail1: ++ return !errnum; ++} +diff --git a/efi/x86_64/loader/switch.S b/efi/x86_64/loader/switch.S +new file mode 100644 +index 0000000..d0d8dca +--- /dev/null ++++ b/efi/x86_64/loader/switch.S +@@ -0,0 +1,92 @@ ++# ++# Switch from protected mode to real mode and jump to setup.S ++# image located at %cx:0. ++# ++# This module must be placed into physical memory at 0:7C00h. ++# EFI has some real mode thunking code at 2000:0h. ++# ++# Processor and non-maskable interrupts should be disabled ++# before control is passed to this module. ++# ++ ++#define __KERNEL_CS 0x38 ++#define MSR_EFER 0xc0000080 ++#define _EFER_LME 8 /* Long mode enable */ ++ ++.global _start ++ ++.text ++_start: ++ # ++ # Load identity mapped GDT & real mode IDT. ++ # Add 7C00h to the addresses since this is linked to start ++ # at 0h and it is being placed at 7C00h. ++ # ++ ++ # fixme here EFI bios cs segment is 0x38 ++ # switch to IA32e compatible mode ++ # esi point to kernel parameter ++ # ebx point to kernel entry point ++.code64 ++ cli ++ cld ++ lgdt gdt_64 ++ lidt idt_64 ++ ljmp *exit_ia32e ++ ++ /* switch to IA32e compatible mode */ ++.code32 ++mode32: ++ # ++ # Turn off PG bit in CR0 and set CR3 to zero. ++ # ++ movl %cr0, %eax ++ andl $0x7FFFFFFF, %eax ++ movl %eax, %cr0 ++ ++ /* Setup EFER (Extended Feature Enable Register) */ ++ nop ++ nop ++ movl $0xc0000080, %ecx ++ rdmsr ++ /* Enable Long Mode */ ++ andl $0xFFFFFEFF, %eax ++ /* Make changes effective */ ++ wrmsr ++ ++ /* Disable PAE */ ++ xorl %eax, %eax ++ movl %eax, %cr4 ++ ++ jmp 2f ++2: ++ jmp *%ebx ++//jmp to kernel entry ++ ++.align 8 ++exit_ia32e: ++ .long mode32 ++ .long 0x10 ++ ++gdt_64: .word 0x08 * 9 -1 ++ .quad gdt ++ ++ .word 0, 0, 0 ++idt_64: .word 0 ++ .quad 0 ++ # ++ # GDT & IDT stuff for switching into 32 bit protected mode. ++ # ++ .word 0,0,0 ++gdt: ++ .quad 0x0000000000000000 /* NULL descriptor 0*/ ++ .quad 0x0 /* unused 0x08 */ ++ .quad 0x00cf9a000000ffff /* __KERNEL_CS 0x10 */ ++ .quad 0x00cf92000000ffff /* __KERNEL_DS 0x18 */ ++ .quad 0x00cf92000000ffff ++ .quad 0x00cf92000000ffff ++ .quad 0x00cf92000000ffff ++ .quad 0x00cf9a000000ffff /* __KERNEL32_CS 0x38*/ ++ .quad 0 /* unused */ ++.end ++ +diff --git a/efi/x86_64/loader/switch.h b/efi/x86_64/loader/switch.h +new file mode 100644 +index 0000000..b5dc39a +--- /dev/null ++++ b/efi/x86_64/loader/switch.h +@@ -0,0 +1,25 @@ ++unsigned char switch_image[] = { ++0xfa, 0xfc, 0x0f, 0x01, 0x14, 0x25, 0x48, 0x07, ++0x00, 0x00, 0x0f, 0x01, 0x1c, 0x25, 0x58, 0x07, ++0x00, 0x00, 0xff, 0x2c, 0x25, 0x40, 0x07, 0x00, ++0x00, 0x0f, 0x20, 0xc0, 0x25, 0xff, 0xff, 0xff, ++0x7f, 0x0f, 0x22, 0xc0, 0x90, 0x90, 0xb9, 0x80, ++0x00, 0x00, 0xc0, 0x0f, 0x32, 0x25, 0xff, 0xfe, ++0xff, 0xff, 0x0f, 0x30, 0x31, 0xc0, 0x0f, 0x22, ++0xe0, 0xeb, 0x00, 0xff, 0xe3, 0x8d, 0x76, 0x00, ++0x19, 0x07, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, ++0x47, 0x00, 0x68, 0x07, 0x00, 0x00, 0x00, 0x00, ++0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++0xff, 0xff, 0x00, 0x00, 0x00, 0x9a, 0xcf, 0x00, ++0xff, 0xff, 0x00, 0x00, 0x00, 0x92, 0xcf, 0x00, ++0xff, 0xff, 0x00, 0x00, 0x00, 0x92, 0xcf, 0x00, ++0xff, 0xff, 0x00, 0x00, 0x00, 0x92, 0xcf, 0x00, ++0xff, 0xff, 0x00, 0x00, 0x00, 0x92, 0xcf, 0x00, ++0xff, 0xff, 0x00, 0x00, 0x00, 0x9a, 0xcf, 0x00, ++0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++}; ++int switch_size = sizeof switch_image; +diff --git a/efi/x86_64/reloc.c b/efi/x86_64/reloc.c +new file mode 100644 +index 0000000..b53eb63 +--- /dev/null ++++ b/efi/x86_64/reloc.c +@@ -0,0 +1,79 @@ ++/* reloc_x86_64.c - position independent x86_64 ELF shared object relocator ++ Copyright (C) 1999 Hewlett-Packard Co. ++ Contributed by David Mosberger davidm@hpl.hp.com. ++ Copyright (C) 2005 Intel Co. ++ Contributed by Fenghua Yu fenghua.yu@intel.com. ++ ++ This file is part of GNU-EFI, the GNU EFI development environment. ++ ++ GNU EFI is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 2, or (at your option) ++ any later version. ++ ++ GNU EFI is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GNU EFI; see the file COPYING. If not, write to the Free ++ Software Foundation, 59 Temple Place - Suite 330, Boston, MA ++ 02111-1307, USA. */ ++ ++#include <grub/efi/efi.h> ++#include <grub/efi/api.h> ++#include <link.h> ++ ++grub_efi_status_t _relocate (long ldbase, ElfW(Dyn) *dyn, ++ grub_efi_handle_t image_handle, ++ grub_efi_system_table_t *sys_tab) ++{ ++ //extern EFI_STATUS efi_main (EFI_HANDLE, EFI_SYSTEM_TABLE *); ++ long relsz = 0, relent = 0; ++ ElfW(Rel) *rel = 0; ++ unsigned long *addr; ++ int i; ++ ++ for (i = 0; dyn[i].d_tag != DT_NULL; ++i) { ++ switch (dyn[i].d_tag) { ++ case DT_RELA: ++ rel = (ElfW(Rel)*) ((long) dyn[i].d_un.d_ptr + ldbase); ++ break; ++ ++ case DT_RELASZ: ++ relsz = dyn[i].d_un.d_val; ++ break; ++ ++ case DT_RELAENT: ++ relent = dyn[i].d_un.d_val; ++ break; ++ ++ default: ++ break; ++ } ++ } ++ ++ if (!rel || relent == 0){ ++ return GRUB_EFI_LOAD_ERROR; ++ } ++ while (relsz > 0) { ++ /* apply the relocs */ ++ switch (ELF64_R_TYPE (rel->r_info)) { ++ case R_X86_64_NONE: ++ break; ++ ++ case R_X86_64_RELATIVE: ++ addr = (unsigned long *) (ldbase + rel->r_offset); ++ *addr += ldbase; ++ break; ++ ++ default: ++ break; ++ } ++ rel = (ElfW(Rel)*) ((char *) rel + relent); ++ relsz -= relent; ++ } ++ return GRUB_EFI_SUCCESS; ++} ++ +diff --git a/efi/x86_64/setjmp.S b/efi/x86_64/setjmp.S +new file mode 100644 +index 0000000..e042a14 +--- /dev/null ++++ b/efi/x86_64/setjmp.S +@@ -0,0 +1,56 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2003 Free Software Foundation, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#include <grub/symbol.h> ++ ++ .file "setjmp.S" ++ ++ .text ++ ++/* ++ * int grub_setjmp (grub_jmp_buf env) ++ */ ++FUNCTION(grub_setjmp) ++ pop %rsi /* Return address, and adjust the stack */ ++ xor %rax, %rax ++ movq %rbx, 0(%rdi) /* RBX */ ++ movq %rsp, 8(%rdi) /* RSP */ ++ push %rsi ++ movq %rbp, 16(%rdi) /* RBP */ ++ movq %r12, 24(%rdi) /* R12 */ ++ movq %r13, 32(%rdi) /* R13 */ ++ movq %r14, 40(%rdi) /* R14 */ ++ movq %r15, 48(%rdi) /* R15 */ ++ movq %rsi, 56(%rdi) /* RSI */ ++ ret ++ ++/* ++ * int grub_longjmp (grub_jmp_buf env, int val) ++ */ ++FUNCTION(grub_longjmp) ++ movl %esi, %eax ++ movq (%rdi), %rbx ++ movq 8(%rdi), %rsp ++ movq 16(%rdi), %rbp ++ movq 24(%rdi), %r12 ++ movq 32(%rdi), %r13 ++ movq 40(%rdi), %r14 ++ movq 48(%rdi), %r15 ++ jmp *56(%rdi) ++ +diff --git a/efi/xpm.c b/efi/xpm.c +new file mode 100644 +index 0000000..085a10c +--- /dev/null ++++ b/efi/xpm.c +@@ -0,0 +1,231 @@ ++ ++#if defined(SUPPORT_GRAPHICS) || defined(PLATFORM_EFI) || 1 ++ ++#include <grub/efi/api.h> ++#include <grub/efi/efi.h> ++#include <grub/misc.h> ++ ++#include "xpm.h" ++ ++unsigned char ++xpm_get_pixel_idx(struct xpm *xpm, int x, int y) ++{ ++ if (x < 0 || x >= xpm->width) ++ return -1; ++ if (y < 0 || y >= xpm->width) ++ return -1; ++ return xpm->image[x + (y * xpm->width)]; ++} ++ ++void ++xpm_set_pixel_idx(struct xpm *xpm, int x, int y, unsigned char idx) ++{ ++ xpm->image[y * xpm->width + x] = idx; ++} ++ ++void ++xpm_get_idx(struct xpm *xpm, unsigned char idx, xpm_pixel_t *pixel) ++{ ++ xpm_pixel_t *xpl; ++ if (!pixel) ++ return; ++ if (idx >= xpm->colors) { ++ pixel->red = pixel->green = pixel->blue = 0; ++ return; ++ } ++ xpl = &xpm->palette[idx]; ++ memcpy(pixel, xpl, sizeof (*pixel)); ++// pixel->red = xpl->red; ++// pixel->green = xpl->green; ++// pixel->blue = xpl->blue; ++} ++ ++int ++xpm_get_pixel(struct xpm *xpm, int x, int y, xpm_pixel_t *pixel) ++{ ++ unsigned char idx; ++ idx = xpm_get_pixel_idx(xpm, x, y); ++ xpm_get_idx(xpm, idx, pixel); ++ return 1; ++} ++ ++static int ++hex_to_int(int v) ++{ ++ if (v >= 'A' && v <= 'F') ++ return (v - 'A' + 10); ++ if (v >= 'a' && v <= 'f') ++ return (v - 'a' + 10); ++ return (v - '0'); ++} ++ ++struct xpm * ++xpm_open(char *path) ++{ ++ char c, prev, target[]="/* XPM */\n", base; ++ char buf[32]; ++ int pos = 0; ++ unsigned int i, idx, len, x, y; ++ unsigned char pal[XPM_MAX_COLORS]; ++ struct xpm *xpm; ++ ++ xpm = grub_malloc(sizeof (*xpm)); ++ if (!xpm) ++ return NULL; ++ ++ if (!grub_open(path)) { ++ grub_free(xpm); ++ grub_printf("grub_open("%s") failed\n", path); ++ return NULL; ++ } ++ ++ grub_memset(xpm, '\0', sizeof (*xpm)); ++ ++ prev = '\n'; ++ c = 0; ++ do { ++ if (grub_read(&c, 1) != 1) { ++ grub_printf("grub_read() failed\n"); ++ grub_free(xpm); ++ grub_close(); ++ return NULL; ++ } ++ if ((pos == 0 && prev == '\n') || pos > 0) { ++ if (c == target[pos]) ++ pos++; ++ else ++ pos = 0; ++ } ++ prev = c; ++ } while (target[pos]); ++ ++ /* parse info */ ++ while (grub_read(&c, 1)) { ++ if (c == '"') ++ break; ++ } ++ while (grub_read(&c, 1) && (c == ' ' || c == '\t')) ++ ; ++ ++ i = 0; ++ xpm->width = c - '0'; ++ while (grub_read(&c, 1)) { ++ if (c >= '0' && c <= '9') ++ xpm->width = xpm->width * 10 + c - '0'; ++ else ++ break; ++ } ++ if (xpm->width > XPM_MAX_WIDTH) { ++ grub_printf("xpm->width (%d) was greater than XPM_MAX_WIDTH (%d)\n", ++ xpm->width, XPM_MAX_WIDTH); ++ grub_free(xpm); ++ grub_close(); ++ return NULL; ++ } ++ while (grub_read(&c, 1) && (c == ' ' || c == '\t')) ++ ; ++ ++ xpm->height = c - '0'; ++ while (grub_read(&c, 1)) { ++ if (c >= '0' && c <= '9') ++ xpm->height = xpm->height * 10 + c - '0'; ++ else ++ break; ++ } ++ if (xpm->height > XPM_MAX_HEIGHT) { ++ grub_printf("xpm->height (%d) was greater than XPM_MAX_HEIGHT (%d)\n", ++ xpm->height, XPM_MAX_HEIGHT); ++ grub_free(xpm); ++ grub_close(); ++ return NULL; ++ } ++ ++ while (grub_read(&c, 1) && (c == ' ' || c == '\t')) ++ ; ++ ++ xpm->colors = c - '0'; ++ while (grub_read(&c, 1)) { ++ if (c >= '0' && c <= '9') ++ xpm->colors = xpm->colors * 10 + c - '0'; ++ else ++ break; ++ } ++ ++ base = 0; ++ while (grub_read(&c, 1) && c != '"') ++ ; ++ ++ /* palette */ ++ for (i = 0, idx = 1; i < xpm->colors; i++) { ++ len = 0; ++ ++ while (grub_read(&c, 1) && c != '"') ++ ; ++ grub_read(&c, 1); /* char */ ++ base = c; ++ grub_read(buf, 4); /* \t c # */ ++ ++ while (grub_read(&c, 1) && c != '"') { ++ if (len < sizeof(buf)) ++ buf[len++] = c; ++ } ++ ++ if (len == 6 && idx < xpm->colors) { ++ unsigned char r, g, b; ++ ++ r = (hex_to_int(buf[0]) << 4) | hex_to_int(buf[1]); ++ g = (hex_to_int(buf[2]) << 4) | hex_to_int(buf[3]); ++ b = (hex_to_int(buf[4]) << 4) | hex_to_int(buf[5]); ++ ++ pal[idx] = base; ++ xpm->palette[idx].red = r; ++ xpm->palette[idx].green = g; ++ xpm->palette[idx].blue = b; ++ ++idx; ++ } ++ } ++ ++ /* parse xpm data */ ++ x = y = 0; ++ while (y < xpm->height) { ++ xpm_pixel_t *pixel = NULL; ++ while (1) { ++ if (!grub_read(&c, 1)) { ++ grub_printf("%s %s:%d grub_read() failed\n", __FILE__, __func__, __LINE__); ++ grub_free(xpm); ++ grub_close(); ++ return NULL; ++ } ++ if (c == '"') ++ break; ++ } ++ ++ while (grub_read(&c, 1) && c != '"') { ++ unsigned char *iaddr = NULL; ++ for (i = 1; i < xpm->colors; i++) ++ if (pal[i] == c) { ++ idx = i; ++ break; ++ } ++ ++ xpm_set_pixel_idx(xpm, x, y, idx); ++ ++ if (++x >= xpm->width) { ++ x = 0; ++ ++ ++y; ++ } ++ } ++ } ++ grub_close(); ++ return xpm; ++} ++ ++void ++xpm_free(struct xpm *xpm) ++{ ++ grub_free(xpm); ++} ++ ++ ++#endif /* SUPPORT_GRAPHICS || PLATFORM_EFI */ +diff --git a/efi/xpm.h b/efi/xpm.h +new file mode 100644 +index 0000000..258abc1 +--- /dev/null ++++ b/efi/xpm.h +@@ -0,0 +1,36 @@ ++#ifndef GRUB_XPM_H ++#define GRUB_XPM_H ++ ++#include <shared.h> ++ ++#define XPM_MAX_COLORS 31 ++#define XPM_MAX_WIDTH 640 ++#define XPM_MAX_HEIGHT 480 ++ ++struct xpm_pixel { ++ unsigned char reserved; ++ unsigned char red; ++ unsigned char green; ++ unsigned char blue; ++}; ++typedef struct xpm_pixel xpm_pixel_t; ++ ++struct xpm { ++ int colors; ++ xpm_pixel_t palette[32]; ++ ++ int width; ++ int height; ++ unsigned char image[XPM_MAX_WIDTH * XPM_MAX_HEIGHT]; ++}; ++ ++extern struct xpm *xpm_open(char *path); ++extern void xpm_free(struct xpm *xpm); ++ ++extern unsigned char xpm_get_pixel_idx(struct xpm *xpm, int x, int y); ++extern void xpm_set_pixel_idx(struct xpm *xpm, int x, int y, unsigned char idx); ++extern int xpm_get_pixel(struct xpm *xpm, int x, int y, xpm_pixel_t *pixel); ++ ++extern void xpm_get_idx(struct xpm *xpm, unsigned char idx, xpm_pixel_t *pixel); ++ ++#endif /* GRUB_XPM_H */ +diff --git a/grub.spec b/grub.spec +new file mode 100644 +index 0000000..7e5982d +--- /dev/null ++++ b/grub.spec +@@ -0,0 +1,438 @@ ++Name: grub ++Version: 0.97 ++Release: 20%{?dist} ++Summary: GRUB - the Grand Unified Boot Loader. ++Group: System Environment/Base ++License: GPLv2+ ++ ++ExclusiveArch: i386 x86_64 ++BuildRequires: binutils >= 2.9.1.0.23, ncurses-devel, ncurses-static, texinfo ++BuildRequires: autoconf /usr/lib/crt1.o automake ++PreReq: /sbin/install-info ++Requires: mktemp ++Requires: /usr/bin/cmp ++Requires: system-logos ++BuildRoot: %{_tmppath}/%{name}-%{version}-root ++ ++URL: http://www.gnu.org/software/%%7Bname%7D/ ++Source0: ftp://alpha.gnu.org/gnu/%{name}/%{name}-%{version}.tar.gz ++Patch0: grub-fedora-9.patch ++ ++%description ++GRUB (Grand Unified Boot Loader) is an experimental boot loader ++capable of booting into most free operating systems - Linux, FreeBSD, ++NetBSD, GNU Mach, and others as well as most commercial operating ++systems. ++ ++%prep ++%setup -q ++%patch0 -p1 -b .fedora-9 ++ ++%build ++autoreconf ++autoconf ++GCCVERS=$(gcc --version | head -1 | cut -d\ -f3 | cut -d. -f1) ++CFLAGS="-Os -g -fno-strict-aliasing -Wall -Werror -Wno-shadow -Wno-unused" ++if [ "$GCCVERS" == "4" ]; then ++ CFLAGS="$CFLAGS -Wno-pointer-sign" ++fi ++export CFLAGS ++%ifarch x86_64 ++%configure --sbindir=/sbin --disable-auto-linux-mem-opt --datarootdir=%{_datadir} --with-platform=efi ++make ++rm -fr $RPM_BUILD_ROOT ++%makeinstall sbindir=${RPM_BUILD_ROOT}/sbin ++mv ${RPM_BUILD_ROOT}/sbin/grub ${RPM_BUILD_ROOT}/sbin/grub-efi ++make clean ++autoreconf ++autoconf ++CFLAGS="$CFLAGS -static" ++export CFLAGS ++%endif ++%configure --sbindir=/sbin --disable-auto-linux-mem-opt --datarootdir=%{_datadir} ++make ++ ++%install ++%makeinstall sbindir=${RPM_BUILD_ROOT}/sbin ++mkdir -p ${RPM_BUILD_ROOT}/boot/grub ++ ++rm -f ${RPM_BUILD_ROOT}/%{_infodir}/dir ++ ++%clean ++rm -fr $RPM_BUILD_ROOT ++ ++%post ++if [ "$1" = 1 ]; then ++ /sbin/install-info --info-dir=%{_infodir} %{_infodir}/grub.info.gz || : ++ /sbin/install-info --info-dir=%{_infodir} %{_infodir}/multiboot.info.gz || : ++fi ++ ++%preun ++if [ "$1" = 0 ] ;then ++ /sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/grub.info.gz || : ++ /sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/multiboot.info.gz || : ++fi ++ ++%files ++%defattr(-,root,root) ++%doc AUTHORS ChangeLog NEWS README COPYING TODO docs/menu.lst ++/boot/grub ++/sbin/grub ++/sbin/grub-install ++/sbin/grub-terminfo ++/sbin/grub-md5-crypt ++%{_bindir}/mbchk ++%{_infodir}/grub* ++%{_infodir}/multiboot* ++%{_mandir}/man*/* ++%{_datadir}/grub ++%ifarch x86_64 ++/sbin/grub-efi ++%endif ++ ++%changelog ++* Mon Nov 05 2007 Peter Jones pjones@redhat.com - 0.97-20 ++- Add EFI support from Intel on x86_64 ++ ++* Thu Sep 20 2007 Peter Jones pjones@redhat.com - 0.97-19 ++- Fix dmraid detection on Intel (isw) controllers in grub-install . ++ ++* Wed Aug 22 2007 Peter Jones pjones@redhat.com - 0.97-18 ++- Fix license tag. ++ ++* Mon Aug 20 2007 Peter Jones pjones@redhat.com - 0.97-17 ++- Use --build-id=none instead of stripping out the build-id notes in the ++ first and second stage loaders. ++ ++* Tue Aug 7 2007 Peter Jones pjones@redhat.com - 0.97-16 ++- Add ext[23] large inode support (patch from Eric Sandeen) ++- Fix auto* breakage that happened when we switched from autoreconf to autoconf ++- Move to original tarball + patch generated from git ++ ++* Mon Jul 16 2007 Peter Jones pjones@redhat.com - 0.97-15 ++- Support booting from GPT ++ ++* Fri Feb 23 2007 Bill Nottingham notting@redhat.com - 0.97-14 ++- fix scriplet errors when installed with --nodocs ++- coax grub into building (-ltinfo, autoconf instead of autoreconf) ++ ++* Sun Oct 01 2006 Jesse Keating jkeating@redhat.com - 0.97-13 ++- rebuilt for unwind info generation, broken in gcc-4.1.1-21 ++ ++* Thu Sep 21 2006 Peter Jones pjones@redhat.com - 0.97-12 ++- Reenable patch 505, which fixes #116311 ++ ++* Tue Aug 15 2006 Peter Jones pjones@redhat.com - 0.97-11 ++- Disable patch 505 (#164497) ++ ++* Wed Aug 2 2006 Peter Jones pjones@redhat.com - 0.97-10 ++- Fix grub-install for multipath ++ ++* Wed Jul 12 2006 Jesse Keating jkeating@redhat.com - 0.97-9.1 ++- rebuild ++ ++* Fri Jul 7 2006 Peter Jones pjones@redhat.com - 0.97-9 ++- fix broken error reporting from helper functions ++ ++* Mon Jun 12 2006 Peter Jones pjones@redhat.com - 0.97-8 ++- Fix BIOS keyboard handler to use extended keyboard interrupts, so the ++ Mac Mini works. ++ ++* Mon Jun 5 2006 Jesse Keating jkeating@redhat.com - 0.97-7 ++- Added BuildRequires on a 32bit library ++ ++* Sat May 27 2006 Peter Jones pjones@redhat.com - 0.97-6 ++- Fix mactel keyboard problems, patch from Juergen Keil, forwarded by Linus. ++ ++* Mon Mar 13 2006 Peter Jones pjones@redhat.com - 0.97-5 ++- Fix merge error for "bootonce" patch (broken in 0.95->0.97 update) ++- Get rid of the 0.97 "default" stuff, since it conflicts with our working ++ method. ++ ++* Mon Mar 9 2006 Peter Jones pjones@redhat.com - 0.97-4 ++- Fix running "install" multiple times on the same fs in the same invocation ++ of grub. (bz #158426 , patch from lxo@redhat.com) ++ ++* Mon Feb 13 2006 Peter Jones pjones@redhat.com - 0.97-3 ++- fix partition names on dmraid ++ ++* Tue Feb 07 2006 Jesse Keating jkeating@redhat.com - 0.97-2.1 ++- rebuilt for new gcc4.1 snapshot and glibc changes ++ ++* Fri Jan 13 2006 Peter Jones pjones@redhat.com - 0.97-2 ++- add dmraid support ++ ++* Wed Dec 14 2005 Peter Jones pjones@redhat.com - 0.97-1 ++- update to grub 0.97 ++ ++* Mon Dec 5 2005 Peter Jones pjones@redhat.com - 0.95-17 ++- fix configure conftest.c bugs ++- add -Wno-unused to defeat gcc41 "unused" checking when there are aliases. ++ ++* Mon Aug 1 2005 Peter Jones pjones@redhat.com - 0.95-16 ++- minor fix to the --recheck fix. ++ ++* Mon Jul 25 2005 Peter Jones pjones@redhat.com 0.95-15 ++- Make "grub-install --recheck" warn the user about how bad it is, ++ and keep a backup file, which it reverts to upon detecting some errors. ++ ++* Wed Jul 6 2005 Peter Jones pjones@redhat.com 0.95-14 ++- Fix changelog to be UTF-8 ++ ++* Thu May 19 2005 Peter Jones pjones@redhat.com 0.95-13 ++- Make the spec work with gcc3 and gcc4, so people can test on existing ++ installations. ++- don't treat i2o like a cciss device, since its partition names aren't done ++ that way. (#158158) ++ ++* Wed Mar 16 2005 Peter Jones pjones@redhat.com 0.95-12 ++- Make installing on a partition work again when not using raid ++ ++* Thu Mar 3 2005 Peter Jones pjones@redhat.com 0.95-11 ++- Make it build with gcc4 ++ ++* Sun Feb 20 2005 Peter Jones pjones@redhat.com 0.95-10 ++- Always install in MBR for raid1 /boot/ ++ ++* Sun Feb 20 2005 Peter Jones pjones@redhat.com 0.95-9 ++- Always use full path for mdadm in grub-install ++ ++* Tue Feb 8 2005 Peter Jones pjones@redhat.com 0.95-8 ++- Mark the simulation stack executable ++- Eliminate the use of inline functions in stage2/builtins.c ++ ++* Wed Jan 11 2005 Peter Jones pjones@redhat.com 0.95-7 ++- Make grub ignore everything before the XPM header in the splash image, ++ fixing #143879 ++- If the boot splash image is missing, use console mode instead ++ of graphics mode. ++- Don't print out errors using the graphics terminal code if we're not ++ actually in graphics mode. ++ ++* Mon Jan 3 2005 Peter Jones pjones@redhat.com 0.95-6 ++- reworked much of how the RAID1 support in grub-install works. This version ++ does not require all the devices in the raid to be listed in device.map, ++ as long as you specify a physical device or partition rather than an md ++ device. It should also work with a windows dual-boot on the first partition. ++ ++* Fri Dec 17 2004 Peter Jones pjones@redhat.com 0.95-5 ++- added support for RAID1 devices to grub-install, partly based on a ++ patch from David Knierim. (#114690) ++ ++* Tue Nov 30 2004 Jeremy Katz katzj@redhat.com 0.95-4 ++- add patch from upstream CVS to handle sparse files on ext[23] ++- make geometry detection a little bit more robust/correct ++- use O_DIRECT when reading/writing from devices. use aligned buffers as ++ needed for read/write (#125808) ++- actually apply the i2o patch ++- detect cciss/cpqarray devices better (#123249) ++ ++* Thu Sep 30 2004 Jeremy Katz katzj@redhat.com - 0.95-3 ++- don't act on the keypress for the menu (#134029) ++ ++* Mon Jun 28 2004 Jeremy Katz katzj@redhat.com - 0.95-2 ++- add patch from Nicholas Miell to make hiddenmenu work more ++ nicely with splashimage mode (#126764) ++ ++* Fri Jun 18 2004 Jeremy Katz katzj@redhat.com - 0.95-1 ++- update to 0.95 ++- drop emd patch, E-MD isn't making forward progress upstream ++- fix static build for x86_64 (#121095) ++ ++* Tue Jun 15 2004 Elliot Lee sopwith@redhat.com ++- rebuilt ++ ++* Wed Jun 9 2004 Jeremy Katz katzj@redhat.com ++- require system-logos (#120837) ++ ++* Fri Jun 4 2004 Jeremy Katz katzj@redhat.com ++- buildrequire automake (#125326) ++ ++* Thu May 06 2004 Warren Togami wtogami@redhat.com - 0.94-5 ++- i2o patch from Markus Lidel ++ ++* Wed Apr 14 2004 Jeremy Katz katzj@redhat.com - 0.94-4 ++- read geometry off of the disk since HDIO_GETGEO doesn't actually ++ return correct data with a 2.6 kernel ++ ++* Fri Mar 12 2004 Jeremy Katz katzj@redhat.com ++- add texinfo buildrequires (#118146) ++ ++* Wed Feb 25 2004 Jeremy Katz katzj@redhat.com 0.94-3 ++- don't use initrd_max_address ++ ++* Fri Feb 13 2004 Elliot Lee sopwith@redhat.com 0.94-2 ++- rebuilt ++ ++* Thu Feb 12 2004 Jeremy Katz katzj@redhat.com 0.94-1 ++- update to 0.94, patch merging and updating as necessary ++ ++* Sat Jan 3 2004 Jeremy Katz katzj@redhat.com 0.93-8 ++- new bootonce patch from Padraig Brady so that you don't lose ++ the old default (#112775) ++ ++* Mon Nov 24 2003 Jeremy Katz katzj@redhat.com ++- add ncurses-devel as a buildrequires (#110732) ++ ++* Tue Oct 14 2003 Jeremy Katz katzj@redhat.com 0.93-7 ++- rebuild ++ ++* Wed Jul 2 2003 Jeremy Katz katzj@redhat.com ++- Requires: /usr/bin/cmp (#98325) ++ ++* Thu May 22 2003 Jeremy Katz katzj@redhat.com 0.93-6 ++- add patch from upstream to fix build with gcc 3.3 ++ ++* Wed Apr 2 2003 Jeremy Katz katzj@redhat.com 0.93-5 ++- add patch to fix support for serial terminfo (#85595) ++ ++* Wed Jan 22 2003 Tim Powers timp@redhat.com ++- rebuilt ++ ++* Fri Jan 17 2003 Jeremy Katz katzj@redhat.com 0.93-3 ++- add patch from HJ Lu to support large disks (#80980, #63848) ++- add patch to make message when ending edit clearer (#53846) ++ ++* Sun Dec 29 2002 Jeremy Katz katzj@redhat.com 0.93-2 ++- add a patch to reset the terminal type to console before doing 'boot' from ++ the command line (#61069) ++ ++* Sat Dec 28 2002 Jeremy Katz katzj@redhat.com 0.93-1 ++- update to 0.93 ++- update configfile patch ++- graphics patch rework to fit in as a terminal type as present in 0.93 ++- use CFLAGS="-Os -g" ++- patch configure.in to allow building if host_cpu=x86_64, include -m32 in ++ CFLAGS if building on x86_64 ++- link glibc static on x86_64 to not require glibc32 ++- include multiboot info pages ++- drop obsolete patches, reorder remaining patches into some semblance of order ++ ++* Thu Sep 5 2002 Jeremy Katz katzj@redhat.com 0.92-7 ++- splashscreen is in redhat-logos now ++ ++* Tue Sep 3 2002 Jeremy Katz katzj@redhat.com 0.92-6 ++- update splashscreen again ++ ++* Mon Sep 2 2002 Jeremy Katz katzj@redhat.com 0.92-5 ++- update splashscreen ++ ++* Fri Jun 21 2002 Tim Powers timp@redhat.com 0.92-4 ++- automated rebuild ++ ++* Thu May 23 2002 Tim Powers timp@redhat.com 0.92-3 ++- automated rebuild ++ ++* Fri May 3 2002 Jeremy Katz katzj@redhat.com 0.92-2 ++- add patch from Grant Edwards to make vga16 + serial happier (#63491) ++ ++* Wed May 1 2002 Jeremy Katz katzj@redhat.com 0.92-1 ++- update to 0.92 ++- back to autoreconf ++- make it work with automake 1.6/autoconf 2.53 ++- use "-falign-jumps=1 -falign-loops=1 -falign-functions=1" instead of ++ "-malign-jumps=1 -malign-loops=1 -malign-functions=1" to not use ++ deprecated gcc options ++ ++* Tue Apr 9 2002 Jeremy Katz katzj@redhat.com 0.91-4 ++- new splash screen ++ ++* Fri Mar 8 2002 Jeremy Katz katzj@redhat.com 0.91-3 ++- include patch from Denis Kitzmen to fix typo causing several options to ++ never be defined (in upstream CVS) ++- include patch from upstream CVS to make displaymem always use hex for ++ consistency ++- add patch from GRUB mailing list from Keir Fraser to add a --once flag to ++ savedefault function so that you can have the equivalent of lilo -R ++ functionality (use 'savedefault --default=N --once' from the grub shell) ++- back to autoconf ++ ++* Sun Jan 27 2002 Jeremy Katz katzj@redhat.com ++- change to use $grubdir instead of /boot/grub in the symlink patch (#58771) ++ ++* Fri Jan 25 2002 Jeremy Katz katzj@redhat.com 0.91-2 ++- don't ifdef out the auto memory passing, use the configure flag instead ++- add a patch so that grub respects mem= from the kernel command line when ++ deciding where to place the initrd (#52558) ++ ++* Mon Jan 21 2002 Jeremy Katz katzj@redhat.com 0.91-1 ++- update to 0.91 final ++- add documentation on splashimage param (#51609) ++ ++* Wed Jan 2 2002 Jeremy Katz katzj@redhat.com 0.91-0.20020102cvs ++- update to current CVS snapshot to fix some of the hangs on boot related ++ to LBA probing (#57503, #55868, and others) ++ ++* Fri Dec 21 2001 Erik Troan ewt@redhat.com 0.90-14 ++- fixed append patch to not require arguments to begin with ++- changed to autoreconf from autoconf ++ ++* Wed Oct 31 2001 Jeremy Katz katzj@redhat.com 0.90-13 ++- include additional patch from Erich to add sync calls in grub-install to ++ work around updated images not being synced to disk ++- fix segfault in grub shell if 'password --md5' is used without specifying ++ a password (#55008) ++ ++* Fri Oct 26 2001 Jeremy Katz katzj@redhat.com 0.90-12 ++- Include Erich Boleyn erich@uruk.org's patch to disconnect from the ++ BIOS after APM operations. Should fix #54375 ++ ++* Wed Sep 12 2001 Erik Troan ewt@redhat.com ++- added patch for 'a' option in grub boot menu ++ ++* Wed Sep 5 2001 Jeremy Katz katzj@redhat.com 0.90-11 ++- grub-install: if /boot/grub/grub.conf doesn't exist but /boot/grub/menu.lst ++ does, create a symlink ++ ++* Fri Aug 24 2001 Jeremy Katz katzj@redhat.com ++- pull in patch from upstream CVS to fix md5crypt in grub shell (#52220) ++- use mktemp in grub-install to avoid tmp races ++ ++* Fri Aug 3 2001 Jeremy Katz katzj@redhat.com ++- link curses statically (#49519) ++ ++* Thu Aug 2 2001 Jeremy Katz katzj@redhat.com ++- fix segfault with using the serial device before initialization (#50219) ++ ++* Thu Jul 19 2001 Jeremy Katz katzj@redhat.com ++- add --copy-only flag to grub-install ++ ++* Thu Jul 19 2001 Jeremy Katz katzj@redhat.com ++- copy files in grub-install prior to device probe ++ ++* Thu Jul 19 2001 Jeremy Katz katzj@redhat.com ++- original images don't go in /boot and then grub-install does the right ++ thing ++ ++* Thu Jul 19 2001 Jeremy Katz katzj@redhat.com ++- fix the previous patch ++- put the password prompt in the proper location ++ ++* Thu Jul 19 2001 Jeremy Katz katzj@redhat.com ++- reset the screen when the countdown is cancelled so text will disappear ++ in vga16 mode ++ ++* Mon Jul 16 2001 Jeremy Katz katzj@redhat.com ++- change configfile defaults to grub.conf ++ ++* Sun Jul 15 2001 Jeremy Katz katzj@redhat.com ++- updated to grub 0.90 final ++ ++* Fri Jul 6 2001 Matt Wilson msw@redhat.com ++- modifed splash screen to a nice shade of blue ++ ++* Tue Jul 3 2001 Matt Wilson msw@redhat.com ++- added a first cut at a splash screen ++ ++* Sun Jul 1 2001 Nalin Dahyabhai nalin@redhat.com ++- fix datadir mismatch between build and install phases ++ ++* Mon Jun 25 2001 Jeremy Katz katzj@redhat.com ++- update to current CVS ++- forward port VGA16 patch from Paulo César Pereira de ++ Andrade pcpa@conectiva.com.br ++- add patch for cciss, ida, and rd raid controllers ++- don't pass mem= to the kernel ++ ++* Wed May 23 2001 Erik Troan ewt@redhat.com ++- initial build for Red Hat +diff --git a/grub/.gitignore b/grub/.gitignore +new file mode 100644 +index 0000000..5d89f6d +--- /dev/null ++++ b/grub/.gitignore +@@ -0,0 +1,2 @@ ++Makefile.in ++.deps +diff --git a/grub/Makefile.am b/grub/Makefile.am +index 7eb2eaa..d4353f7 100644 +--- a/grub/Makefile.am ++++ b/grub/Makefile.am +@@ -15,5 +15,5 @@ AM_CPPFLAGS = -DGRUB_UTIL=1 -DFSYS_EXT2FS=1 -DFSYS_FAT=1 -DFSYS_FFS=1 \ + + AM_CFLAGS = $(GRUB_CFLAGS) + +-grub_SOURCES = main.c asmstub.c ++grub_SOURCES = main.c asmstub.c efitftp.c + grub_LDADD = ../stage2/libgrub.a ../lib/libcommon.a $(GRUB_LIBS) +diff --git a/grub/Makefile.in b/grub/Makefile.in +deleted file mode 100644 +index 136c38f..0000000 +--- a/grub/Makefile.in ++++ /dev/null +@@ -1,445 +0,0 @@ +-# Makefile.in generated by automake 1.9.4 from Makefile.am. +-# @configure_input@ +- +-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +-# 2003, 2004 Free Software Foundation, Inc. +-# This Makefile.in is free software; the Free Software Foundation +-# gives unlimited permission to copy and/or distribute it, +-# with or without modifications, as long as this notice is preserved. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +-# PARTICULAR PURPOSE. +- +-@SET_MAKE@ +- +-SOURCES = $(grub_SOURCES) +- +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ +-VPATH = @srcdir@ +-pkgdatadir = $(datadir)/@PACKAGE@ +-pkglibdir = $(libdir)/@PACKAGE@ +-pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = .. +-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ +-install_sh_DATA = $(install_sh) -c -m 644 +-install_sh_PROGRAM = $(install_sh) -c +-install_sh_SCRIPT = $(install_sh) -c +-INSTALL_HEADER = $(INSTALL_DATA) +-transform = $(program_transform_name) +-NORMAL_INSTALL = : +-PRE_INSTALL = : +-POST_INSTALL = : +-NORMAL_UNINSTALL = : +-PRE_UNINSTALL = : +-POST_UNINSTALL = : +-build_triplet = @build@ +-host_triplet = @host@ +-sbin_PROGRAMS = grub$(EXEEXT) +-subdir = grub +-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ +- $(top_srcdir)/configure.ac +-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ +- $(ACLOCAL_M4) +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/config.h +-CONFIG_CLEAN_FILES = +-am__installdirs = "$(DESTDIR)$(sbindir)" +-sbinPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +-PROGRAMS = $(sbin_PROGRAMS) +-am_grub_OBJECTS = main.$(OBJEXT) asmstub.$(OBJEXT) +-grub_OBJECTS = $(am_grub_OBJECTS) +-am__DEPENDENCIES_1 = +-grub_DEPENDENCIES = ../stage2/libgrub.a ../lib/libcommon.a \ +- $(am__DEPENDENCIES_1) +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-am__depfiles_maybe = depfiles +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-SOURCES = $(grub_SOURCES) +-DIST_SOURCES = $(grub_SOURCES) +-ETAGS = etags +-CTAGS = ctags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +-ACLOCAL = @ACLOCAL@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ +-AMTAR = @AMTAR@ +-AUTOCONF = @AUTOCONF@ +-AUTOHEADER = @AUTOHEADER@ +-AUTOMAKE = @AUTOMAKE@ +-AWK = @AWK@ +-BUILD_EXAMPLE_KERNEL_FALSE = @BUILD_EXAMPLE_KERNEL_FALSE@ +-BUILD_EXAMPLE_KERNEL_TRUE = @BUILD_EXAMPLE_KERNEL_TRUE@ +-CC = @CC@ +-CCAS = @CCAS@ +-CCASFLAGS = @CCASFLAGS@ +-CCDEPMODE = @CCDEPMODE@ +-CFLAGS = @CFLAGS@ +-CPP = @CPP@ +-CPPFLAGS = @CPPFLAGS@ +-CYGPATH_W = @CYGPATH_W@ +-DEFS = @DEFS@ +-DEPDIR = @DEPDIR@ +-DISKLESS_SUPPORT_FALSE = @DISKLESS_SUPPORT_FALSE@ +-DISKLESS_SUPPORT_TRUE = @DISKLESS_SUPPORT_TRUE@ +-ECHO_C = @ECHO_C@ +-ECHO_N = @ECHO_N@ +-ECHO_T = @ECHO_T@ +-EGREP = @EGREP@ +-EXEEXT = @EXEEXT@ +-FSYS_CFLAGS = @FSYS_CFLAGS@ +-GRUB_CFLAGS = @GRUB_CFLAGS@ +-GRUB_LIBS = @GRUB_LIBS@ +-HERCULES_SUPPORT_FALSE = @HERCULES_SUPPORT_FALSE@ +-HERCULES_SUPPORT_TRUE = @HERCULES_SUPPORT_TRUE@ +-INSTALL_DATA = @INSTALL_DATA@ +-INSTALL_PROGRAM = @INSTALL_PROGRAM@ +-INSTALL_SCRIPT = @INSTALL_SCRIPT@ +-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +-LDFLAGS = @LDFLAGS@ +-LIBOBJS = @LIBOBJS@ +-LIBS = @LIBS@ +-LTLIBOBJS = @LTLIBOBJS@ +-MAINT = @MAINT@ +-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +-MAKEINFO = @MAKEINFO@ +-NETBOOT_DRIVERS = @NETBOOT_DRIVERS@ +-NETBOOT_SUPPORT_FALSE = @NETBOOT_SUPPORT_FALSE@ +-NETBOOT_SUPPORT_TRUE = @NETBOOT_SUPPORT_TRUE@ +-NET_CFLAGS = @NET_CFLAGS@ +-NET_EXTRAFLAGS = @NET_EXTRAFLAGS@ +-OBJCOPY = @OBJCOPY@ +-OBJEXT = @OBJEXT@ +-PACKAGE = @PACKAGE@ +-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +-PACKAGE_NAME = @PACKAGE_NAME@ +-PACKAGE_STRING = @PACKAGE_STRING@ +-PACKAGE_TARNAME = @PACKAGE_TARNAME@ +-PACKAGE_VERSION = @PACKAGE_VERSION@ +-PATH_SEPARATOR = @PATH_SEPARATOR@ +-PERL = @PERL@ +-RANLIB = @RANLIB@ +-SERIAL_SPEED_SIMULATION_FALSE = @SERIAL_SPEED_SIMULATION_FALSE@ +-SERIAL_SPEED_SIMULATION_TRUE = @SERIAL_SPEED_SIMULATION_TRUE@ +-SERIAL_SUPPORT_FALSE = @SERIAL_SUPPORT_FALSE@ +-SERIAL_SUPPORT_TRUE = @SERIAL_SUPPORT_TRUE@ +-SET_MAKE = @SET_MAKE@ +-SHELL = @SHELL@ +-STAGE1_CFLAGS = @STAGE1_CFLAGS@ +-STAGE2_CFLAGS = @STAGE2_CFLAGS@ +-STRIP = @STRIP@ +-VERSION = @VERSION@ +-ac_ct_CC = @ac_ct_CC@ +-ac_ct_OBJCOPY = @ac_ct_OBJCOPY@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__include = @am__include@ +-am__leading_dot = @am__leading_dot@ +-am__quote = @am__quote@ +-am__tar = @am__tar@ +-am__untar = @am__untar@ +-bindir = @bindir@ +-build = @build@ +-build_alias = @build_alias@ +-build_cpu = @build_cpu@ +-build_os = @build_os@ +-build_vendor = @build_vendor@ +-datadir = @datadir@ +-exec_prefix = @exec_prefix@ +-host = @host@ +-host_alias = @host_alias@ +-host_cpu = @host_cpu@ +-host_os = @host_os@ +-host_vendor = @host_vendor@ +-includedir = @includedir@ +-infodir = @infodir@ +-install_sh = @install_sh@ +-libdir = @libdir@ +-libexecdir = @libexecdir@ +-localstatedir = @localstatedir@ +-mandir = @mandir@ +-mkdir_p = @mkdir_p@ +-oldincludedir = @oldincludedir@ +-prefix = @prefix@ +-program_transform_name = @program_transform_name@ +-sbindir = @sbindir@ +-sharedstatedir = @sharedstatedir@ +-sysconfdir = @sysconfdir@ +-target_alias = @target_alias@ +-@SERIAL_SPEED_SIMULATION_FALSE@SERIAL_FLAGS = -DSUPPORT_SERIAL=1 +-@SERIAL_SPEED_SIMULATION_TRUE@SERIAL_FLAGS = -DSUPPORT_SERIAL=1 -DSIMULATE_SLOWNESS_OF_SERIAL=1 +-AM_CPPFLAGS = -DGRUB_UTIL=1 -DFSYS_EXT2FS=1 -DFSYS_FAT=1 -DFSYS_FFS=1 \ +- -DFSYS_ISO9660=1 -DFSYS_JFS=1 -DFSYS_MINIX=1 -DFSYS_REISERFS=1 \ +- -DFSYS_UFS2=1 -DFSYS_VSTAFS=1 -DFSYS_XFS=1 \ +- -DUSE_MD5_PASSWORDS=1 -DSUPPORT_HERCULES=1 \ +- $(SERIAL_FLAGS) -I$(top_srcdir)/stage2 \ +- -I$(top_srcdir)/stage1 -I$(top_srcdir)/lib +- +-AM_CFLAGS = $(GRUB_CFLAGS) +-grub_SOURCES = main.c asmstub.c +-grub_LDADD = ../stage2/libgrub.a ../lib/libcommon.a $(GRUB_LIBS) +-all: all-am +- +-.SUFFIXES: +-.SUFFIXES: .c .o .obj +-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) +- @for dep in $?; do \ +- case '$(am__configure_deps)' in \ +- *$$dep*) \ +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +- && exit 0; \ +- exit 1;; \ +- esac; \ +- done; \ +- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu grub/Makefile'; \ +- cd $(top_srcdir) && \ +- $(AUTOMAKE) --gnu grub/Makefile +-.PRECIOUS: Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- @case '$?' in \ +- *config.status*) \ +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ +- *) \ +- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ +- esac; +- +-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +- +-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +-install-sbinPROGRAMS: $(sbin_PROGRAMS) +- @$(NORMAL_INSTALL) +- test -z "$(sbindir)" || $(mkdir_p) "$(DESTDIR)$(sbindir)" +- @list='$(sbin_PROGRAMS)'; for p in $$list; do \ +- p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ +- if test -f $$p \ +- ; then \ +- f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ +- echo " $(INSTALL_PROGRAM_ENV) $(sbinPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(sbindir)/$$f'"; \ +- $(INSTALL_PROGRAM_ENV) $(sbinPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(sbindir)/$$f" || exit 1; \ +- else :; fi; \ +- done +- +-uninstall-sbinPROGRAMS: +- @$(NORMAL_UNINSTALL) +- @list='$(sbin_PROGRAMS)'; for p in $$list; do \ +- f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ +- echo " rm -f '$(DESTDIR)$(sbindir)/$$f'"; \ +- rm -f "$(DESTDIR)$(sbindir)/$$f"; \ +- done +- +-clean-sbinPROGRAMS: +- -test -z "$(sbin_PROGRAMS)" || rm -f $(sbin_PROGRAMS) +-grub$(EXEEXT): $(grub_OBJECTS) $(grub_DEPENDENCIES) +- @rm -f grub$(EXEEXT) +- $(LINK) $(grub_LDFLAGS) $(grub_OBJECTS) $(grub_LDADD) $(LIBS) +- +-mostlyclean-compile: +- -rm -f *.$(OBJEXT) +- +-distclean-compile: +- -rm -f *.tab.c +- +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asmstub.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ +- +-.c.o: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c $< +- +-.c.obj: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +-uninstall-info-am: +- +-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- mkid -fID $$unique +-tags: TAGS +- +-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ +- $(TAGS_FILES) $(LISP) +- tags=; \ +- here=`pwd`; \ +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ +- test -n "$$unique" || unique=$$empty_fix; \ +- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique; \ +- fi +-ctags: CTAGS +-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ +- $(TAGS_FILES) $(LISP) +- tags=; \ +- here=`pwd`; \ +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- test -z "$(CTAGS_ARGS)$$tags$$unique" \ +- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ +- $$tags $$unique +- +-GTAGS: +- here=`$(am__cd) $(top_builddir) && pwd` \ +- && cd $(top_srcdir) \ +- && gtags -i $(GTAGS_ARGS) $$here +- +-distclean-tags: +- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +- +-distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ +- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkdir_p) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ +- if test -d $$d/$$file; then \ +- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ +- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ +- fi; \ +- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ +- else \ +- test -f $(distdir)/$$file \ +- || cp -p $$d/$$file $(distdir)/$$file \ +- || exit 1; \ +- fi; \ +- done +-check-am: all-am +-check: check-am +-all-am: Makefile $(PROGRAMS) +-installdirs: +- for dir in "$(DESTDIR)$(sbindir)"; do \ +- test -z "$$dir" || $(mkdir_p) "$$dir"; \ +- done +-install: install-am +-install-exec: install-exec-am +-install-data: install-data-am +-uninstall: uninstall-am +- +-install-am: all-am +- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +- +-installcheck: installcheck-am +-install-strip: +- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ +- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ +- `test -z '$(STRIP)' || \ +- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +-mostlyclean-generic: +- +-clean-generic: +- +-distclean-generic: +- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) +- +-maintainer-clean-generic: +- @echo "This command is intended for maintainers to use" +- @echo "it deletes files that may require special tools to rebuild." +-clean: clean-am +- +-clean-am: clean-generic clean-sbinPROGRAMS mostlyclean-am +- +-distclean: distclean-am +- -rm -rf ./$(DEPDIR) +- -rm -f Makefile +-distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-tags +- +-dvi: dvi-am +- +-dvi-am: +- +-html: html-am +- +-info: info-am +- +-info-am: +- +-install-data-am: +- +-install-exec-am: install-sbinPROGRAMS +- +-install-info: install-info-am +- +-install-man: +- +-installcheck-am: +- +-maintainer-clean: maintainer-clean-am +- -rm -rf ./$(DEPDIR) +- -rm -f Makefile +-maintainer-clean-am: distclean-am maintainer-clean-generic +- +-mostlyclean: mostlyclean-am +- +-mostlyclean-am: mostlyclean-compile mostlyclean-generic +- +-pdf: pdf-am +- +-pdf-am: +- +-ps: ps-am +- +-ps-am: +- +-uninstall-am: uninstall-info-am uninstall-sbinPROGRAMS +- +-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ +- clean-sbinPROGRAMS ctags distclean distclean-compile \ +- distclean-generic distclean-tags distdir dvi dvi-am html \ +- html-am info info-am install install-am install-data \ +- install-data-am install-exec install-exec-am install-info \ +- install-info-am install-man install-sbinPROGRAMS install-strip \ +- installcheck installcheck-am installdirs maintainer-clean \ +- maintainer-clean-generic mostlyclean mostlyclean-compile \ +- mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ +- uninstall-am uninstall-info-am uninstall-sbinPROGRAMS +- +-# Tell versions [3.59,3.63) of GNU make to not export all variables. +-# Otherwise a system limit (for SysV at least) may be exceeded. +-.NOEXPORT: +diff --git a/grub/asmstub.c b/grub/asmstub.c +index ab95b4b..818be75 100644 +--- a/grub/asmstub.c ++++ b/grub/asmstub.c +@@ -42,6 +42,7 @@ int grub_stage2 (void); + #include <sys/time.h> + #include <termios.h> + #include <signal.h> ++#include <sys/mman.h> + + #ifdef __linux__ + # include <sys/ioctl.h> /* ioctl */ +@@ -53,6 +54,9 @@ int grub_stage2 (void); + # ifndef BLKFLSBUF + # define BLKFLSBUF _IO (0x12,97) /* flush buffer cache */ + # endif /* ! BLKFLSBUF */ ++# ifndef O_DIRECT ++# define O_DIRECT 040000 ++# endif /* ! O_DIRECT */ + #endif /* __linux__ */ + + /* We want to prevent any circularararity in our stubs, as well as +@@ -71,7 +75,7 @@ unsigned long install_partition = 0x20000; + unsigned long boot_drive = 0; + int saved_entryno = 0; + char version_string[] = VERSION; +-char config_file[128] = "/boot/grub/menu.lst"; /* FIXME: arbitrary */ ++char config_file[128] = "/boot/grub/grub.conf"; /* FIXME: arbitrary */ + unsigned long linux_text_len = 0; + char *linux_data_tmp_addr = 0; + char *linux_data_real_addr = 0; +@@ -79,7 +83,7 @@ unsigned short io_map[IO_MAP_SIZE]; + struct apm_info apm_bios_info; + + /* Emulation requirements. */ +-char *grub_scratch_mem = 0; ++void *grub_scratch_mem = 0; + + struct geometry *disks = 0; + +@@ -103,14 +107,73 @@ static char *serial_device = 0; + static unsigned int serial_speed; + #endif /* SIMULATE_SLOWNESS_OF_SERIAL */ + ++#ifdef GRUB_UTIL ++int get_sector_size (int drive) ++{ ++ return 0x200; ++} ++int get_sector_bits (int drive) ++{ ++ return 9; ++} ++#endif /* GRUB_UTIL */ ++ ++/* This allocates page-aligned storage of the specified size, which must be ++ * a multiple of the page size as determined by calling sysconf(_SC_PAGESIZE) ++ */ ++#ifdef __linux__ ++static void * ++grub_mmap_alloc(size_t len) ++{ ++ int mmap_flags = MAP_ANONYMOUS|MAP_PRIVATE|MAP_EXECUTABLE; ++ ++#ifdef MAP_32BIT ++ mmap_flags |= MAP_32BIT; ++#endif ++ /* Mark the simulated stack executable, as GCC uses stack trampolines ++ * to implement nested functions. */ ++ return mmap(NULL, len, PROT_READ|PROT_WRITE|PROT_EXEC, mmap_flags, -1, 0); ++} ++#else /* !defined(__linux__) */ ++static void * ++grub_mmap_alloc(size_t len) ++{ ++ int fd = 0, offset = 0, ret = 0; ++ void *pa = MAP_FAILED; ++ char template[] = "/tmp/grub_mmap_alloc_XXXXXX"; ++ errno_t e; ++ ++ fd = mkstemp(template); ++ if (fd < 0) ++ return pa; ++ ++ unlink(template); ++ ++ ret = ftruncate(fd, len); ++ if (ret < 0) ++ return pa; ++ ++ /* Mark the simulated stack executable, as GCC uses stack trampolines ++ * to implement nested functions. */ ++ pa = mmap(NULL, len, PROT_READ|PROT_WRITE|PROT_EXEC, ++ MAP_PRIVATE|MAP_EXECUTABLE, fd, offset); ++ ++ e = errno; ++ close(fd); ++ errno = e; ++ return pa; ++} ++#endif /* defined(__linux__) */ ++ + /* The main entry point into this mess. */ + int + grub_stage2 (void) + { + /* These need to be static, because they survive our stack transitions. */ + static int status = 0; +- static char *realstack; +- char *scratch, *simstack; ++ static void *realstack; ++ void *simstack_alloc_base, *simstack; ++ size_t simstack_size, page_size; + int i; + + auto void doit (void); +@@ -120,8 +183,13 @@ grub_stage2 (void) + void doit (void) + { + /* Make sure our stack lives in the simulated memory area. */ ++#ifdef __x86_64 ++ asm volatile ("movq %%rsp, %0\n\tmovq %1, %%rsp\n" ++ : "=&r" (realstack) : "r" (simstack)); ++#else + asm volatile ("movl %%esp, %0\n\tmovl %1, %%esp\n" + : "=&r" (realstack) : "r" (simstack)); ++#endif + + /* Do a setjmp here for the stop command. */ + if (! setjmp (env_for_exit)) +@@ -138,13 +206,43 @@ grub_stage2 (void) + } + + /* Replace our stack before we use any local variables. */ ++#ifdef __x86_64 ++ asm volatile ("movq %0, %%rsp\n" : : "r" (realstack)); ++#else + asm volatile ("movl %0, %%esp\n" : : "r" (realstack)); ++#endif + } + + assert (grub_scratch_mem == 0); +- scratch = malloc (0x100000 + EXTENDED_MEMSIZE + 15); +- assert (scratch); +- grub_scratch_mem = (char *) ((((int) scratch) >> 4) << 4); ++ ++ /* Allocate enough pages for 0x100000 + EXTENDED_SIZE + 15, and ++ * make sure the memory is aligned to a multiple of the system's ++ * page size */ ++ page_size = sysconf (_SC_PAGESIZE); ++ simstack_size = ( 0x100000 + EXTENDED_MEMSIZE + 15); ++ if (simstack_size % page_size) ++ { ++ /* If we're not on a page_size boundary, round up to the next one */ ++ simstack_size &= ~(page_size-1); ++ simstack_size += page_size; ++ } ++ ++ /* Add one for a PROT_NONE boundary page at each end. */ ++ simstack_size += 2 * page_size; ++ ++ simstack_alloc_base = grub_mmap_alloc(simstack_size); ++ assert (simstack_alloc_base != MAP_FAILED); ++ ++ /* mark pages above and below our simstack area as innaccessable. ++ * If the implementation we're using doesn't support that, then the ++ * new protection modes are undefined. It's safe to just ignore ++ * them, though. It'd be nice if we knew that we'd get a SEGV for ++ * touching the area, but that's all. it'd be nice to have. */ ++ mprotect (simstack_alloc_base, page_size, PROT_NONE); ++ mprotect ((void *)((unsigned long)simstack_alloc_base + ++ simstack_size - page_size), page_size, PROT_NONE); ++ ++ grub_scratch_mem = (void *)((unsigned long)simstack_alloc_base + page_size); + + /* FIXME: simulate the memory holes using mprot, if available. */ + +@@ -217,7 +315,7 @@ grub_stage2 (void) + device_map = 0; + free (disks); + disks = 0; +- free (scratch); ++ munmap(simstack_alloc_base, simstack_size); + grub_scratch_mem = 0; + + if (serial_device) +@@ -699,6 +797,13 @@ console_getkey (void) + return console_translate_key (c); + } + ++/* returns modifier status */ ++int ++console_keystatus (void) ++{ ++ return 0; ++} ++ + /* returns packed values, LSB+1 is x, LSB is y */ + int + console_getxy (void) +@@ -766,7 +871,7 @@ get_diskinfo (int drive, struct geometry *geometry) + { + /* The unpartitioned device name: /dev/XdX */ + char *devname = device_map[drive]; +- char buf[512]; ++ char * buf, * buf_unaligned; + + if (! devname) + return -1; +@@ -777,13 +882,13 @@ get_diskinfo (int drive, struct geometry *geometry) + + /* Open read/write, or read-only if that failed. */ + if (! read_only) +- disks[drive].flags = open (devname, O_RDWR); ++ disks[drive].flags = open (devname, O_RDWR | O_DIRECT); + + if (disks[drive].flags == -1) + { + if (read_only || errno == EACCES || errno == EROFS || errno == EPERM) + { +- disks[drive].flags = open (devname, O_RDONLY); ++ disks[drive].flags = open (devname, O_RDONLY | O_DIRECT); + if (disks[drive].flags == -1) + { + assign_device_name (drive, 0); +@@ -797,6 +902,10 @@ get_diskinfo (int drive, struct geometry *geometry) + } + } + ++ buf_unaligned = malloc((512 * sizeof(char)) + 4095); ++ buf = (char *) (((unsigned long)buf_unaligned + 4096 - 1) & ++ (~(4096-1))); ++ + /* Attempt to read the first sector. */ + if (read (disks[drive].flags, buf, 512) != 512) + { +@@ -808,6 +917,7 @@ get_diskinfo (int drive, struct geometry *geometry) + + if (disks[drive].flags != -1) + get_drive_geometry (&disks[drive], device_map, drive); ++ free(buf_unaligned); + } + + if (disks[drive].flags == -1) +@@ -829,24 +939,34 @@ static int + nread (int fd, char *buf, size_t len) + { + int size = len; ++ char * buf_unaligned, * buff, * obuff; ++ int ret; ++ ++ buf_unaligned = malloc((len * sizeof(char)) + 4095); ++ obuff = buff = (char *) (((unsigned long)buf_unaligned + 4096 - 1) & ++ (~(4096-1))); ++ + + while (len) + { +- int ret = read (fd, buf, len); ++ ret = read (fd, buff, len); + + if (ret <= 0) + { + if (errno == EINTR) + continue; + else +- return ret; ++ break; + } + + len -= ret; +- buf += ret; ++ buff += ret; + } + +- return size; ++ if (!len) ret = size; ++ ++ buf = memcpy(buf, obuff, size); ++ return ret; + } + + /* Write LEN bytes from BUF to FD. Return less than or equal to zero if an +@@ -855,10 +975,18 @@ static int + nwrite (int fd, char *buf, size_t len) + { + int size = len; ++ char * buf_unaligned, * buff; ++ ++ buf_unaligned = malloc((len * sizeof(char)) + 4095); ++ buff = (char *) (((unsigned long)buf_unaligned + 4096 - 1) & ++ (~(4096-1))); + + while (len) + { +- int ret = write (fd, buf, len); ++ int ret; ++ ++ memcpy(buff, buf, len); ++ ret = write (fd, buff, len); + + if (ret <= 0) + { +@@ -946,20 +1074,20 @@ biosdisk (int subfunc, int drive, struct geometry *geometry, + _syscall5 (int, _llseek, uint, filedes, ulong, hi, ulong, lo, + loff_t *, res, uint, wh); + +- offset = (loff_t) sector * (loff_t) SECTOR_SIZE; ++ offset = (loff_t) sector * (loff_t) get_sector_size(drive); + if (_llseek (fd, offset >> 32, offset & 0xffffffff, &result, SEEK_SET)) + return -1; + } + #else + { +- off_t offset = (off_t) sector * (off_t) SECTOR_SIZE; ++ off_t offset = (off_t) sector * (off_t) get_sector_size(drive); + + if (lseek (fd, offset, SEEK_SET) != offset) + return -1; + } + #endif + +- buf = (char *) (segment << 4); ++ buf = (char *) (unsigned long) (segment << 4); + + switch (subfunc) + { +@@ -971,13 +1099,13 @@ biosdisk (int subfunc, int drive, struct geometry *geometry, + sectors that are read together with the MBR in one read. It + should only remap the MBR, so we split the read in two + parts. -jochen */ +- if (nread (fd, buf, SECTOR_SIZE) != SECTOR_SIZE) ++ if (nread (fd, buf, get_sector_size(drive)) != get_sector_size(drive)) + return -1; +- buf += SECTOR_SIZE; ++ buf += get_sector_size(drive); + nsec--; + } + #endif +- if (nread (fd, buf, nsec * SECTOR_SIZE) != nsec * SECTOR_SIZE) ++ if (nread (fd, buf, nsec * get_sector_size(drive)) != nsec * get_sector_size(drive)) + return -1; + break; + +@@ -987,10 +1115,10 @@ biosdisk (int subfunc, int drive, struct geometry *geometry, + grub_printf ("Write %d sectors starting from %d sector" + " to drive 0x%x (%s)\n", + nsec, sector, drive, device_map[drive]); +- hex_dump (buf, nsec * SECTOR_SIZE); ++ hex_dump (buf, nsec * get_sector_size(drive)); + } + if (! read_only) +- if (nwrite (fd, buf, nsec * SECTOR_SIZE) != nsec * SECTOR_SIZE) ++ if (nwrite (fd, buf, nsec * get_sector_size(drive)) != nsec * get_sector_size(drive)) + return -1; + break; + +@@ -1273,3 +1401,21 @@ hercules_setcursor (int on) + { + return 1; + } ++ ++int ++grub_load_linux (char *kernel, char *arg) ++{ ++ return 0; ++} ++ ++int ++grub_load_initrd (char *initrd) ++{ ++ return 0; ++} ++ ++int ++grub_chainloader (char *filename) ++{ ++ return 0; ++} +diff --git a/grub/efitftp.c b/grub/efitftp.c +new file mode 100644 +index 0000000..5355dec +--- /dev/null ++++ b/grub/efitftp.c +@@ -0,0 +1,34 @@ ++#include <shared.h> ++#include <filesys.h> ++ ++int efi_tftp_mount (void); ++int efi_tftp_read (char *buf, int len); ++int efi_tftp_dir (char *dirname); ++void efi_tftp_close (void); ++ ++int ++efi_tftp_mount (void) ++{ ++ grub_printf("non-efi efi_tftp_mount()\n"); ++ return 0; ++} ++ ++int ++efi_tftp_read (char *addr, int size) ++{ ++ grub_printf ("non-efi efi_tftp_read (0x%x, %d)\n", (long) addr, size); ++ return 0; ++} ++ ++int ++efi_tftp_dir (char *dirname) ++{ ++ grub_printf ("non-efi efi_ftp_dir (%s)\n", dirname); ++ return 0; ++} ++ ++void ++efi_tftp_close (void) ++{ ++ grub_printf ("non-efi efi_tftp_close ()\n"); ++} +diff --git a/grub/main.c b/grub/main.c +index dfe847e..6083641 100644 +--- a/grub/main.c ++++ b/grub/main.c +@@ -140,7 +140,7 @@ main (int argc, char **argv) + program_name = argv[0]; + default_boot_drive = boot_drive; + default_install_partition = install_partition; +- if (config_file) ++ if (config_file[0]) + default_config_file = config_file; + else + default_config_file = "NONE"; +diff --git a/lib/.gitignore b/lib/.gitignore +new file mode 100644 +index 0000000..5d89f6d +--- /dev/null ++++ b/lib/.gitignore +@@ -0,0 +1,2 @@ ++Makefile.in ++.deps +diff --git a/lib/Makefile.in b/lib/Makefile.in +deleted file mode 100644 +index 3dae206..0000000 +--- a/lib/Makefile.in ++++ /dev/null +@@ -1,416 +0,0 @@ +-# Makefile.in generated by automake 1.9.4 from Makefile.am. +-# @configure_input@ +- +-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +-# 2003, 2004 Free Software Foundation, Inc. +-# This Makefile.in is free software; the Free Software Foundation +-# gives unlimited permission to copy and/or distribute it, +-# with or without modifications, as long as this notice is preserved. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +-# PARTICULAR PURPOSE. +- +-@SET_MAKE@ +- +-SOURCES = $(libcommon_a_SOURCES) +- +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ +-VPATH = @srcdir@ +-pkgdatadir = $(datadir)/@PACKAGE@ +-pkglibdir = $(libdir)/@PACKAGE@ +-pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = .. +-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ +-install_sh_DATA = $(install_sh) -c -m 644 +-install_sh_PROGRAM = $(install_sh) -c +-install_sh_SCRIPT = $(install_sh) -c +-INSTALL_HEADER = $(INSTALL_DATA) +-transform = $(program_transform_name) +-NORMAL_INSTALL = : +-PRE_INSTALL = : +-POST_INSTALL = : +-NORMAL_UNINSTALL = : +-PRE_UNINSTALL = : +-POST_UNINSTALL = : +-build_triplet = @build@ +-host_triplet = @host@ +-subdir = lib +-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ +- $(top_srcdir)/configure.ac +-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ +- $(ACLOCAL_M4) +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/config.h +-CONFIG_CLEAN_FILES = +-LIBRARIES = $(noinst_LIBRARIES) +-AR = ar +-ARFLAGS = cru +-libcommon_a_AR = $(AR) $(ARFLAGS) +-libcommon_a_LIBADD = +-am_libcommon_a_OBJECTS = getopt.$(OBJEXT) getopt1.$(OBJEXT) \ +- device.$(OBJEXT) +-libcommon_a_OBJECTS = $(am_libcommon_a_OBJECTS) +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-am__depfiles_maybe = depfiles +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-SOURCES = $(libcommon_a_SOURCES) +-DIST_SOURCES = $(libcommon_a_SOURCES) +-ETAGS = etags +-CTAGS = ctags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +-ACLOCAL = @ACLOCAL@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ +-AMTAR = @AMTAR@ +-AUTOCONF = @AUTOCONF@ +-AUTOHEADER = @AUTOHEADER@ +-AUTOMAKE = @AUTOMAKE@ +-AWK = @AWK@ +-BUILD_EXAMPLE_KERNEL_FALSE = @BUILD_EXAMPLE_KERNEL_FALSE@ +-BUILD_EXAMPLE_KERNEL_TRUE = @BUILD_EXAMPLE_KERNEL_TRUE@ +-CC = @CC@ +-CCAS = @CCAS@ +-CCASFLAGS = @CCASFLAGS@ +-CCDEPMODE = @CCDEPMODE@ +-CFLAGS = @CFLAGS@ +-CPP = @CPP@ +-CPPFLAGS = @CPPFLAGS@ +-CYGPATH_W = @CYGPATH_W@ +-DEFS = @DEFS@ +-DEPDIR = @DEPDIR@ +-DISKLESS_SUPPORT_FALSE = @DISKLESS_SUPPORT_FALSE@ +-DISKLESS_SUPPORT_TRUE = @DISKLESS_SUPPORT_TRUE@ +-ECHO_C = @ECHO_C@ +-ECHO_N = @ECHO_N@ +-ECHO_T = @ECHO_T@ +-EGREP = @EGREP@ +-EXEEXT = @EXEEXT@ +-FSYS_CFLAGS = @FSYS_CFLAGS@ +-GRUB_CFLAGS = @GRUB_CFLAGS@ +-GRUB_LIBS = @GRUB_LIBS@ +-HERCULES_SUPPORT_FALSE = @HERCULES_SUPPORT_FALSE@ +-HERCULES_SUPPORT_TRUE = @HERCULES_SUPPORT_TRUE@ +-INSTALL_DATA = @INSTALL_DATA@ +-INSTALL_PROGRAM = @INSTALL_PROGRAM@ +-INSTALL_SCRIPT = @INSTALL_SCRIPT@ +-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +-LDFLAGS = @LDFLAGS@ +-LIBOBJS = @LIBOBJS@ +-LIBS = @LIBS@ +-LTLIBOBJS = @LTLIBOBJS@ +-MAINT = @MAINT@ +-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +-MAKEINFO = @MAKEINFO@ +-NETBOOT_DRIVERS = @NETBOOT_DRIVERS@ +-NETBOOT_SUPPORT_FALSE = @NETBOOT_SUPPORT_FALSE@ +-NETBOOT_SUPPORT_TRUE = @NETBOOT_SUPPORT_TRUE@ +-NET_CFLAGS = @NET_CFLAGS@ +-NET_EXTRAFLAGS = @NET_EXTRAFLAGS@ +-OBJCOPY = @OBJCOPY@ +-OBJEXT = @OBJEXT@ +-PACKAGE = @PACKAGE@ +-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +-PACKAGE_NAME = @PACKAGE_NAME@ +-PACKAGE_STRING = @PACKAGE_STRING@ +-PACKAGE_TARNAME = @PACKAGE_TARNAME@ +-PACKAGE_VERSION = @PACKAGE_VERSION@ +-PATH_SEPARATOR = @PATH_SEPARATOR@ +-PERL = @PERL@ +-RANLIB = @RANLIB@ +-SERIAL_SPEED_SIMULATION_FALSE = @SERIAL_SPEED_SIMULATION_FALSE@ +-SERIAL_SPEED_SIMULATION_TRUE = @SERIAL_SPEED_SIMULATION_TRUE@ +-SERIAL_SUPPORT_FALSE = @SERIAL_SUPPORT_FALSE@ +-SERIAL_SUPPORT_TRUE = @SERIAL_SUPPORT_TRUE@ +-SET_MAKE = @SET_MAKE@ +-SHELL = @SHELL@ +-STAGE1_CFLAGS = @STAGE1_CFLAGS@ +-STAGE2_CFLAGS = @STAGE2_CFLAGS@ +-STRIP = @STRIP@ +-VERSION = @VERSION@ +-ac_ct_CC = @ac_ct_CC@ +-ac_ct_OBJCOPY = @ac_ct_OBJCOPY@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__include = @am__include@ +-am__leading_dot = @am__leading_dot@ +-am__quote = @am__quote@ +-am__tar = @am__tar@ +-am__untar = @am__untar@ +-bindir = @bindir@ +-build = @build@ +-build_alias = @build_alias@ +-build_cpu = @build_cpu@ +-build_os = @build_os@ +-build_vendor = @build_vendor@ +-datadir = @datadir@ +-exec_prefix = @exec_prefix@ +-host = @host@ +-host_alias = @host_alias@ +-host_cpu = @host_cpu@ +-host_os = @host_os@ +-host_vendor = @host_vendor@ +-includedir = @includedir@ +-infodir = @infodir@ +-install_sh = @install_sh@ +-libdir = @libdir@ +-libexecdir = @libexecdir@ +-localstatedir = @localstatedir@ +-mandir = @mandir@ +-mkdir_p = @mkdir_p@ +-oldincludedir = @oldincludedir@ +-prefix = @prefix@ +-program_transform_name = @program_transform_name@ +-sbindir = @sbindir@ +-sharedstatedir = @sharedstatedir@ +-sysconfdir = @sysconfdir@ +-target_alias = @target_alias@ +-noinst_LIBRARIES = libcommon.a +-AM_CFLAGS = $(GRUB_CFLAGS) -I$(top_srcdir)/stage2 \ +- -I$(top_srcdir)/stage1 +- +-libcommon_a_SOURCES = getopt.c getopt1.c getopt.h device.c device.h +-all: all-am +- +-.SUFFIXES: +-.SUFFIXES: .c .o .obj +-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) +- @for dep in $?; do \ +- case '$(am__configure_deps)' in \ +- *$$dep*) \ +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +- && exit 0; \ +- exit 1;; \ +- esac; \ +- done; \ +- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/Makefile'; \ +- cd $(top_srcdir) && \ +- $(AUTOMAKE) --gnu lib/Makefile +-.PRECIOUS: Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- @case '$?' in \ +- *config.status*) \ +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ +- *) \ +- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ +- esac; +- +-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +- +-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +- +-clean-noinstLIBRARIES: +- -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +-libcommon.a: $(libcommon_a_OBJECTS) $(libcommon_a_DEPENDENCIES) +- -rm -f libcommon.a +- $(libcommon_a_AR) libcommon.a $(libcommon_a_OBJECTS) $(libcommon_a_LIBADD) +- $(RANLIB) libcommon.a +- +-mostlyclean-compile: +- -rm -f *.$(OBJEXT) +- +-distclean-compile: +- -rm -f *.tab.c +- +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/device.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt1.Po@am__quote@ +- +-.c.o: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c $< +- +-.c.obj: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +-uninstall-info-am: +- +-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- mkid -fID $$unique +-tags: TAGS +- +-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ +- $(TAGS_FILES) $(LISP) +- tags=; \ +- here=`pwd`; \ +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ +- test -n "$$unique" || unique=$$empty_fix; \ +- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique; \ +- fi +-ctags: CTAGS +-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ +- $(TAGS_FILES) $(LISP) +- tags=; \ +- here=`pwd`; \ +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- test -z "$(CTAGS_ARGS)$$tags$$unique" \ +- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ +- $$tags $$unique +- +-GTAGS: +- here=`$(am__cd) $(top_builddir) && pwd` \ +- && cd $(top_srcdir) \ +- && gtags -i $(GTAGS_ARGS) $$here +- +-distclean-tags: +- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +- +-distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ +- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkdir_p) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ +- if test -d $$d/$$file; then \ +- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ +- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ +- fi; \ +- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ +- else \ +- test -f $(distdir)/$$file \ +- || cp -p $$d/$$file $(distdir)/$$file \ +- || exit 1; \ +- fi; \ +- done +-check-am: all-am +-check: check-am +-all-am: Makefile $(LIBRARIES) +-installdirs: +-install: install-am +-install-exec: install-exec-am +-install-data: install-data-am +-uninstall: uninstall-am +- +-install-am: all-am +- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +- +-installcheck: installcheck-am +-install-strip: +- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ +- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ +- `test -z '$(STRIP)' || \ +- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +-mostlyclean-generic: +- +-clean-generic: +- +-distclean-generic: +- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) +- +-maintainer-clean-generic: +- @echo "This command is intended for maintainers to use" +- @echo "it deletes files that may require special tools to rebuild." +-clean: clean-am +- +-clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am +- +-distclean: distclean-am +- -rm -rf ./$(DEPDIR) +- -rm -f Makefile +-distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-tags +- +-dvi: dvi-am +- +-dvi-am: +- +-html: html-am +- +-info: info-am +- +-info-am: +- +-install-data-am: +- +-install-exec-am: +- +-install-info: install-info-am +- +-install-man: +- +-installcheck-am: +- +-maintainer-clean: maintainer-clean-am +- -rm -rf ./$(DEPDIR) +- -rm -f Makefile +-maintainer-clean-am: distclean-am maintainer-clean-generic +- +-mostlyclean: mostlyclean-am +- +-mostlyclean-am: mostlyclean-compile mostlyclean-generic +- +-pdf: pdf-am +- +-pdf-am: +- +-ps: ps-am +- +-ps-am: +- +-uninstall-am: uninstall-info-am +- +-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ +- clean-noinstLIBRARIES ctags distclean distclean-compile \ +- distclean-generic distclean-tags distdir dvi dvi-am html \ +- html-am info info-am install install-am install-data \ +- install-data-am install-exec install-exec-am install-info \ +- install-info-am install-man install-strip installcheck \ +- installcheck-am installdirs maintainer-clean \ +- maintainer-clean-generic mostlyclean mostlyclean-compile \ +- mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ +- uninstall-am uninstall-info-am +- +-# Tell versions [3.59,3.63) of GNU make to not export all variables. +-# Otherwise a system limit (for SysV at least) may be exceeded. +-.NOEXPORT: +diff --git a/lib/device.c b/lib/device.c +index d0663b3..50540bc 100644 +--- a/lib/device.c ++++ b/lib/device.c +@@ -36,6 +36,9 @@ + #include <limits.h> + #include <stdarg.h> + ++#define SECTOR_SIZE 0x200 ++#define SECTOR_BITS 9 ++ + #ifdef __linux__ + # if !defined(__GLIBC__) || \ + ((__GLIBC__ < 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ < 1))) +@@ -131,6 +134,152 @@ get_kfreebsd_version () + #include <shared.h> + #include <device.h> + ++#if defined(__linux__) ++/* The 2.6 kernel has removed all of the geometry handling for IDE drives ++ * that did fixups for LBA, etc. This means that the geometry we get ++ * with the ioctl has a good chance of being wrong. So, we get to ++ * also know about partition tables and try to read what the geometry ++ * is there. *grumble* Very closely based on code from cfdisk ++ */ ++static void get_kernel_geometry(int fd, long long *cyl, int *heads, int *sectors) { ++ struct hd_geometry hdg; ++ ++ if (ioctl (fd, HDIO_GETGEO, &hdg)) ++ return; ++ ++ *cyl = hdg.cylinders; ++ *heads = hdg.heads; ++ *sectors = hdg.sectors; ++} ++ ++struct partition { ++ unsigned char boot_ind; /* 0x80 - active */ ++ unsigned char head; /* starting head */ ++ unsigned char sector; /* starting sector */ ++ unsigned char cyl; /* starting cylinder */ ++ unsigned char sys_ind; /* What partition type */ ++ unsigned char end_head; /* end head */ ++ unsigned char end_sector; /* end sector */ ++ unsigned char end_cyl; /* end cylinder */ ++ unsigned char start4[4]; /* starting sector counting from 0 */ ++ unsigned char size4[4]; /* nr of sectors in partition */ ++}; ++ ++#define ALIGNMENT 2 ++typedef union { ++ struct { ++ unsigned char align[ALIGNMENT]; ++ unsigned char b[SECTOR_SIZE]; ++ } c; ++ struct { ++ unsigned char align[ALIGNMENT]; ++ unsigned char buffer[0x1BE]; ++ struct partition part[4]; ++ unsigned char magicflag[2]; ++ } p; ++} partition_table; ++ ++#define PART_TABLE_FLAG0 0x55 ++#define PART_TABLE_FLAG1 0xAA ++ ++static void ++get_partition_table_geometry(partition_table *bufp, long long *cyl, int *heads, ++ int *sectors) { ++ struct partition *p; ++ int i,h,s,hh,ss; ++ int first = 1; ++ int bad = 0; ++ ++ if (bufp->p.magicflag[0] != PART_TABLE_FLAG0 || ++ bufp->p.magicflag[1] != PART_TABLE_FLAG1) { ++ /* Matthew Wilcox: slightly friendlier version of ++ fatal(_("Bad signature on partition table"), 3); ++ */ ++ fprintf(stderr, "Unknown partition table signature\n"); ++ return; ++ } ++ ++ hh = ss = 0; ++ for (i=0; i<4; i++) { ++ p = &(bufp->p.part[i]); ++ if (p->sys_ind != 0) { ++ h = p->end_head + 1; ++ s = (p->end_sector & 077); ++ if (first) { ++ hh = h; ++ ss = s; ++ first = 0; ++ } else if (hh != h || ss != s) ++ bad = 1; ++ } ++ } ++ ++ if (!first && !bad) { ++ *heads = hh; ++ *sectors = ss; ++ } ++} ++ ++static long long my_lseek (unsigned int fd, long long offset, ++ unsigned int origin) ++{ ++#if defined(__linux__) && (!defined(__GLIBC__) || \ ++ ((__GLIBC__ < 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ < 1)))) ++ /* Maybe libc doesn't have large file support. */ ++ loff_t offset, result; ++ static int _llseek (uint filedes, ulong hi, ulong lo, ++ loff_t *res, uint wh); ++ _syscall5 (int, _llseek, uint, filedes, ulong, hi, ulong, lo, ++ loff_t *, res, uint, wh); ++ ++ if (_llseek (fd, offset >> 32, offset & 0xffffffff, &result, SEEK_SET) < 0) ++ return (long long) -1; ++ return result; ++#else ++ return lseek(fd, offset, SEEK_SET); ++#endif ++} ++ ++static void get_linux_geometry (int fd, struct geometry *geom) { ++ long long kern_cyl = 0; int kern_head = 0, kern_sectors = 0; ++ long long pt_cyl = 0; int pt_head = 0, pt_sectors = 0; ++ partition_table bufp; ++ char *buff, *buf_unaligned; ++ ++ buf_unaligned = malloc(sizeof(partition_table) + 4095); ++ buff = (char *) (((unsigned long)buf_unaligned + 4096 - 1) & ++ (~(4096-1))); ++ ++ get_kernel_geometry(fd, &kern_cyl, &kern_head, &kern_sectors); ++ ++ if (my_lseek (fd, 0*SECTOR_SIZE, SEEK_SET) < 0) { ++ fprintf(stderr, "Unable to seek"); ++ } ++ ++ if (read(fd, buff, SECTOR_SIZE) == SECTOR_SIZE) { ++ memcpy(bufp.c.b, buff, SECTOR_SIZE); ++ get_partition_table_geometry(&bufp, &pt_cyl, &pt_head, &pt_sectors); ++ } else { ++ fprintf(stderr, "Unable to read partition table: %s\n", strerror(errno)); ++ } ++ ++ if (pt_head && pt_sectors) { ++ int cyl_size; ++ ++ geom->heads = pt_head; ++ geom->sectors = pt_sectors; ++ cyl_size = pt_head * pt_sectors; ++ geom->cylinders = geom->total_sectors/cyl_size; ++ } else { ++ geom->heads = kern_head; ++ geom->sectors = kern_sectors; ++ geom->cylinders = kern_cyl; ++ } ++ ++ return; ++} ++#endif ++ + /* Get the geometry of a drive DRIVE. */ + void + get_drive_geometry (struct geometry *geom, char **map, int drive) +@@ -151,21 +300,16 @@ get_drive_geometry (struct geometry *geom, char **map, int drive) + #if defined(__linux__) + /* Linux */ + { +- struct hd_geometry hdg; + unsigned long nr; +- +- if (ioctl (fd, HDIO_GETGEO, &hdg)) +- goto fail; + + if (ioctl (fd, BLKGETSIZE, &nr)) + goto fail; + + /* Got the geometry, so save it. */ +- geom->cylinders = hdg.cylinders; +- geom->heads = hdg.heads; +- geom->sectors = hdg.sectors; + geom->total_sectors = nr; +- ++ get_linux_geometry(fd, geom); ++ if (!geom->heads && !geom->cylinders && !geom->sectors) ++ goto fail; + goto success; + } + +@@ -403,10 +547,27 @@ get_dac960_disk_name (char *name, int controller, int drive) + } + + static void ++get_cciss_disk_name (char * name, int controller, int drive) ++{ ++ sprintf (name, "/dev/cciss/c%dd%d", controller, drive); ++} ++ ++static void ++get_cpqarray_disk_name (char * name, int controller, int drive) ++{ ++ sprintf (name, "/dev/ida/c%dd%d", controller, drive); ++} ++static void + get_ataraid_disk_name (char *name, int unit) + { + sprintf (name, "/dev/ataraid/d%c", unit + '0'); + } ++ ++static void ++get_i2o_disk_name (char *name, int unit) ++{ ++ sprintf (name, "/dev/i2o/hd%c", unit + 'a'); ++} + #endif + + /* Check if DEVICE can be read. If an error occurs, return zero, +@@ -490,27 +651,24 @@ check_device (const char *device) + } + + /* Read mapping information from FP, and write it to MAP. */ ++static void rdm_show_error (const char *map_file, int no, const char *msg) ++{ ++ fprintf (stderr, "%s:%d: error: %s\n", map_file, no, msg); ++} ++ ++static void rdm_show_warning (const char *map_file,int no, const char *msg, ...) ++{ ++ va_list ap; ++ ++ va_start (ap, msg); ++ fprintf (stderr, "%s:%d: warning: ", map_file, no); ++ vfprintf (stderr, msg, ap); ++ va_end (ap); ++} ++ + static int + read_device_map (FILE *fp, char **map, const char *map_file) + { +- auto void show_error (int no, const char *msg); +- auto void show_warning (int no, const char *msg, ...); +- +- auto void show_error (int no, const char *msg) +- { +- fprintf (stderr, "%s:%d: error: %s\n", map_file, no, msg); +- } +- +- auto void show_warning (int no, const char *msg, ...) +- { +- va_list ap; +- +- va_start (ap, msg); +- fprintf (stderr, "%s:%d: warning: ", map_file, no); +- vfprintf (stderr, msg, ap); +- va_end (ap); +- } +- + /* If there is the device map file, use the data in it instead of + probing devices. */ + char buf[1024]; /* XXX */ +@@ -540,14 +698,14 @@ read_device_map (FILE *fp, char **map, const char *map_file) + + if (*ptr != '(') + { +- show_error (line_number, "No open parenthesis found"); ++ rdm_show_error (map_file, line_number, "No open parenthesis found"); + return 0; + } + + ptr++; + if ((*ptr != 'f' && *ptr != 'h') || *(ptr + 1) != 'd') + { +- show_error (line_number, "Bad drive name"); ++ rdm_show_error (map_file, line_number, "Bad drive name"); + return 0; + } + +@@ -558,12 +716,12 @@ read_device_map (FILE *fp, char **map, const char *map_file) + drive = strtoul (ptr, &ptr, 10); + if (drive < 0) + { +- show_error (line_number, "Bad device number"); ++ rdm_show_error (map_file, line_number, "Bad device number"); + return 0; + } + else if (drive > 127) + { +- show_warning (line_number, ++ rdm_show_warning (map_file, line_number, + "Ignoring %cd%d due to a BIOS limitation", + is_floppy ? 'f' : 'h', drive); + continue; +@@ -574,7 +732,7 @@ read_device_map (FILE *fp, char **map, const char *map_file) + + if (*ptr != ')') + { +- show_error (line_number, "No close parenthesis found"); ++ rdm_show_error (map_file, line_number, "No close parenthesis found"); + return 0; + } + +@@ -585,7 +743,7 @@ read_device_map (FILE *fp, char **map, const char *map_file) + + if (! *ptr) + { +- show_error (line_number, "No filename found"); ++ rdm_show_error (map_file, line_number, "No filename found"); + return 0; + } + +@@ -598,7 +756,7 @@ read_device_map (FILE *fp, char **map, const char *map_file) + /* Multiple entries for a given drive is not allowed. */ + if (map[drive]) + { +- show_error (line_number, "Duplicated entry found"); ++ rdm_show_error (map_file, line_number, "Duplicated entry found"); + return 0; + } + +@@ -782,7 +940,7 @@ init_device_map (char ***map, const char *map_file, int floppy_disks) + + for (controller = 0; controller < 8; controller++) + { +- for (drive = 0; drive < 15; drive++) ++ for (drive = 0; drive < 32; drive++) + { + char name[24]; + +@@ -801,6 +959,90 @@ init_device_map (char ***map, const char *map_file, int floppy_disks) + } + } + } ++ ++ /* I2O disks. */ ++ for (i = 0; i < 8; i++) ++ { ++ char name[16]; ++ ++ get_i2o_disk_name (name, i); ++ if (check_device (name)) ++ { ++ (*map)[num_hd + 0x80] = strdup (name); ++ assert ((*map)[num_hd + 0x80]); ++ ++ /* If the device map file is opened, write the map. */ ++ if (fp) ++ fprintf (fp, "(hd%d)\t%s\n", num_hd, name); ++ ++ num_hd++; ++ } ++ } ++ ++#endif /* __linux__ */ ++ ++#ifdef __linux__ ++ /* This is for cciss - we have ++ /dev/cciss/c<controller>d<logical drive>p<partition>. ++ ++ cciss driver currently supports up to 8 controllers, 16 logical ++ drives, and 7 partitions. */ ++ { ++ int controller, drive; ++ ++ for (controller = 0; controller < 8; controller++) ++ { ++ for (drive = 0; drive < 16; drive++) ++ { ++ char name[24]; ++ ++ get_cciss_disk_name (name, controller, drive); ++ if (check_device (name)) ++ { ++ (*map)[num_hd + 0x80] = strdup (name); ++ assert ((*map)[num_hd + 0x80]); ++ ++ /* If the device map file is opened, write the map. */ ++ if (fp) ++ fprintf (fp, "(hd%d)\t%s\n", num_hd, name); ++ ++ num_hd++; ++ } ++ } ++ } ++ } ++#endif /* __linux__ */ ++ ++#ifdef __linux__ ++ /* This is for cpqarray - we have ++ /dev/ida/c<controller>d<logical drive>p<partition>. ++ ++ cpqarray driver currently supports up to 8 controllers, 16 logical ++ drives, and 15 partitions. */ ++ { ++ int controller, drive; ++ ++ for (controller = 0; controller < 8; controller++) ++ { ++ for (drive = 0; drive < 15; drive++) ++ { ++ char name[24]; ++ ++ get_cpqarray_disk_name (name, controller, drive); ++ if (check_device (name)) ++ { ++ (*map)[num_hd + 0x80] = strdup (name); ++ assert ((*map)[num_hd + 0x80]); ++ ++ /* If the device map file is opened, write the map. */ ++ if (fp) ++ fprintf (fp, "(hd%d)\t%s\n", num_hd, name); ++ ++ num_hd++; ++ } ++ } ++ } ++ } + #endif /* __linux__ */ + + /* OK, close the device map file if opened. */ +@@ -844,6 +1086,7 @@ write_to_partition (char **map, int drive, int partition, + { + char dev[PATH_MAX]; /* XXX */ + int fd; ++ off_t offset = (off_t) sector * (off_t) SECTOR_SIZE; + + if ((partition & 0x00FF00) != 0x00FF00) + { +@@ -861,44 +1104,35 @@ write_to_partition (char **map, int drive, int partition, + if (strcmp (dev + strlen(dev) - 5, "/disc") == 0) + strcpy (dev + strlen(dev) - 5, "/part"); + } +- sprintf (dev + strlen(dev), "%d", ((partition >> 16) & 0xFF) + 1); ++ ++ sprintf (dev + strlen(dev), "%s%d", ++ /* Compaq smart and others */ ++ (strncmp(dev, "/dev/ida/", 9) == 0 || ++ strncmp(dev, "/dev/ataraid/", 13) == 0 || ++ strncmp(dev, "/dev/mapper/", 12) == 0 || ++ strncmp(dev, "/dev/md", 7) == 0 || ++ strncmp(dev, "/dev/cciss/", 11) == 0 || ++ strncmp(dev, "/dev/rd/", 8) == 0) ? "p" : "", ++ ((partition >> 16) & 0xFF) + 1); + + /* Open the partition. */ + fd = open (dev, O_RDWR); + if (fd < 0) + { ++ /* No partition file, pass thru and not worry about ++ * cache inconsistency. */ ++ if (errno == ENOENT) ++ return -1; + errnum = ERR_NO_PART; + return 0; + } +- +-#if defined(__linux__) && (!defined(__GLIBC__) || \ +- ((__GLIBC__ < 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ < 1)))) +- /* Maybe libc doesn't have large file support. */ +- { +- loff_t offset, result; +- static int _llseek (uint filedes, ulong hi, ulong lo, +- loff_t *res, uint wh); +- _syscall5 (int, _llseek, uint, filedes, ulong, hi, ulong, lo, +- loff_t *, res, uint, wh); +- +- offset = (loff_t) sector * (loff_t) SECTOR_SIZE; +- if (_llseek (fd, offset >> 32, offset & 0xffffffff, &result, SEEK_SET)) +- { +- errnum = ERR_DEV_VALUES; +- return 0; +- } +- } +-#else +- { +- off_t offset = (off_t) sector * (off_t) SECTOR_SIZE; + +- if (lseek (fd, offset, SEEK_SET) != offset) +- { +- errnum = ERR_DEV_VALUES; +- return 0; +- } +- } +-#endif ++ ++ if (my_lseek(fd, offset, SEEK_SET) != offset) ++ { ++ errnum = ERR_DEV_VALUES; ++ return 0; ++ } + + if (write (fd, buf, size * SECTOR_SIZE) != (size * SECTOR_SIZE)) + { +diff --git a/makediff b/makediff +new file mode 100755 +index 0000000..a82b448 +--- /dev/null ++++ b/makediff +@@ -0,0 +1,21 @@ ++#!/bin/bash ++( ++cat << EOF ++From: Peter Jones pjones@redhat.com" ++Date: $(date) ++Subject: [PATCH] Changes from grub-0.97 to master ++ ++This patch is a bundle of the changes between grub-0.97 and master. ++It can be reginerated from the git repository at: ++ ++git://github.com/vathpela/grub-fedora.git ++ ++Using the command: ++ ++git diff grub-0.97 master ++ ++EOF ++git diff grub-0.97 master | diffstat -p1 ++echo ++git diff grub-0.97 master ++) | cat +diff --git a/netboot/.gitignore b/netboot/.gitignore +new file mode 100644 +index 0000000..5d89f6d +--- /dev/null ++++ b/netboot/.gitignore +@@ -0,0 +1,2 @@ ++Makefile.in ++.deps +diff --git a/netboot/Makefile.in b/netboot/Makefile.in +deleted file mode 100644 +index 75ac299..0000000 +--- a/netboot/Makefile.in ++++ /dev/null +@@ -1,1091 +0,0 @@ +-# Makefile.in generated by automake 1.9.4 from Makefile.am. +-# @configure_input@ +- +-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +-# 2003, 2004 Free Software Foundation, Inc. +-# This Makefile.in is free software; the Free Software Foundation +-# gives unlimited permission to copy and/or distribute it, +-# with or without modifications, as long as this notice is preserved. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +-# PARTICULAR PURPOSE. +- +-@SET_MAKE@ +- +-SOURCES = $(libdrivers_a_SOURCES) $(EXTRA_libdrivers_a_SOURCES) +- +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ +-VPATH = @srcdir@ +-pkgdatadir = $(datadir)/@PACKAGE@ +-pkglibdir = $(libdir)/@PACKAGE@ +-pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = .. +-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ +-install_sh_DATA = $(install_sh) -c -m 644 +-install_sh_PROGRAM = $(install_sh) -c +-install_sh_SCRIPT = $(install_sh) -c +-INSTALL_HEADER = $(INSTALL_DATA) +-transform = $(program_transform_name) +-NORMAL_INSTALL = : +-PRE_INSTALL = : +-POST_INSTALL = : +-NORMAL_UNINSTALL = : +-PRE_UNINSTALL = : +-POST_UNINSTALL = : +-build_triplet = @build@ +-host_triplet = @host@ +-subdir = netboot +-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ +- $(top_srcdir)/configure.ac +-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ +- $(ACLOCAL_M4) +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/config.h +-CONFIG_CLEAN_FILES = +-LIBRARIES = $(noinst_LIBRARIES) +-AR = ar +-ARFLAGS = cru +-libdrivers_a_AR = $(AR) $(ARFLAGS) +-am_libdrivers_a_OBJECTS = libdrivers_a-config.$(OBJEXT) \ +- libdrivers_a-fsys_tftp.$(OBJEXT) libdrivers_a-main.$(OBJEXT) \ +- libdrivers_a-misc.$(OBJEXT) libdrivers_a-pci.$(OBJEXT) \ +- libdrivers_a-timer.$(OBJEXT) +-libdrivers_a_OBJECTS = $(am_libdrivers_a_OBJECTS) +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-am__depfiles_maybe = depfiles +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-SOURCES = $(libdrivers_a_SOURCES) $(EXTRA_libdrivers_a_SOURCES) +-DIST_SOURCES = $(libdrivers_a_SOURCES) $(EXTRA_libdrivers_a_SOURCES) +-ETAGS = etags +-CTAGS = ctags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +-ACLOCAL = @ACLOCAL@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ +-AMTAR = @AMTAR@ +-AUTOCONF = @AUTOCONF@ +-AUTOHEADER = @AUTOHEADER@ +-AUTOMAKE = @AUTOMAKE@ +-AWK = @AWK@ +-BUILD_EXAMPLE_KERNEL_FALSE = @BUILD_EXAMPLE_KERNEL_FALSE@ +-BUILD_EXAMPLE_KERNEL_TRUE = @BUILD_EXAMPLE_KERNEL_TRUE@ +-CC = @CC@ +-CCAS = @CCAS@ +-CCASFLAGS = @CCASFLAGS@ +-CCDEPMODE = @CCDEPMODE@ +-CFLAGS = @CFLAGS@ +-CPP = @CPP@ +-CPPFLAGS = @CPPFLAGS@ +-CYGPATH_W = @CYGPATH_W@ +-DEFS = @DEFS@ +-DEPDIR = @DEPDIR@ +-DISKLESS_SUPPORT_FALSE = @DISKLESS_SUPPORT_FALSE@ +-DISKLESS_SUPPORT_TRUE = @DISKLESS_SUPPORT_TRUE@ +-ECHO_C = @ECHO_C@ +-ECHO_N = @ECHO_N@ +-ECHO_T = @ECHO_T@ +-EGREP = @EGREP@ +-EXEEXT = @EXEEXT@ +-FSYS_CFLAGS = @FSYS_CFLAGS@ +-GRUB_CFLAGS = @GRUB_CFLAGS@ +-GRUB_LIBS = @GRUB_LIBS@ +-HERCULES_SUPPORT_FALSE = @HERCULES_SUPPORT_FALSE@ +-HERCULES_SUPPORT_TRUE = @HERCULES_SUPPORT_TRUE@ +-INSTALL_DATA = @INSTALL_DATA@ +-INSTALL_PROGRAM = @INSTALL_PROGRAM@ +-INSTALL_SCRIPT = @INSTALL_SCRIPT@ +-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +-LDFLAGS = @LDFLAGS@ +-LIBOBJS = @LIBOBJS@ +-LIBS = @LIBS@ +-LTLIBOBJS = @LTLIBOBJS@ +-MAINT = @MAINT@ +-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +-MAKEINFO = @MAKEINFO@ +-NETBOOT_DRIVERS = @NETBOOT_DRIVERS@ +-NETBOOT_SUPPORT_FALSE = @NETBOOT_SUPPORT_FALSE@ +-NETBOOT_SUPPORT_TRUE = @NETBOOT_SUPPORT_TRUE@ +-NET_CFLAGS = @NET_CFLAGS@ +-NET_EXTRAFLAGS = @NET_EXTRAFLAGS@ +-OBJCOPY = @OBJCOPY@ +-OBJEXT = @OBJEXT@ +-PACKAGE = @PACKAGE@ +-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +-PACKAGE_NAME = @PACKAGE_NAME@ +-PACKAGE_STRING = @PACKAGE_STRING@ +-PACKAGE_TARNAME = @PACKAGE_TARNAME@ +-PACKAGE_VERSION = @PACKAGE_VERSION@ +-PATH_SEPARATOR = @PATH_SEPARATOR@ +-PERL = @PERL@ +-RANLIB = @RANLIB@ +-SERIAL_SPEED_SIMULATION_FALSE = @SERIAL_SPEED_SIMULATION_FALSE@ +-SERIAL_SPEED_SIMULATION_TRUE = @SERIAL_SPEED_SIMULATION_TRUE@ +-SERIAL_SUPPORT_FALSE = @SERIAL_SUPPORT_FALSE@ +-SERIAL_SUPPORT_TRUE = @SERIAL_SUPPORT_TRUE@ +-SET_MAKE = @SET_MAKE@ +-SHELL = @SHELL@ +-STAGE1_CFLAGS = @STAGE1_CFLAGS@ +-STAGE2_CFLAGS = @STAGE2_CFLAGS@ +-STRIP = @STRIP@ +-VERSION = @VERSION@ +-ac_ct_CC = @ac_ct_CC@ +-ac_ct_OBJCOPY = @ac_ct_OBJCOPY@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__include = @am__include@ +-am__leading_dot = @am__leading_dot@ +-am__quote = @am__quote@ +-am__tar = @am__tar@ +-am__untar = @am__untar@ +-bindir = @bindir@ +-build = @build@ +-build_alias = @build_alias@ +-build_cpu = @build_cpu@ +-build_os = @build_os@ +-build_vendor = @build_vendor@ +-datadir = @datadir@ +-exec_prefix = @exec_prefix@ +-host = @host@ +-host_alias = @host_alias@ +-host_cpu = @host_cpu@ +-host_os = @host_os@ +-host_vendor = @host_vendor@ +-includedir = @includedir@ +-infodir = @infodir@ +-install_sh = @install_sh@ +-libdir = @libdir@ +-libexecdir = @libexecdir@ +-localstatedir = @localstatedir@ +-mandir = @mandir@ +-mkdir_p = @mkdir_p@ +-oldincludedir = @oldincludedir@ +-prefix = @prefix@ +-program_transform_name = @program_transform_name@ +-sbindir = @sbindir@ +-sharedstatedir = @sharedstatedir@ +-sysconfdir = @sysconfdir@ +-target_alias = @target_alias@ +- +-# For <shared.h> and <stage1.h>. +-INCLUDES = -I$(top_srcdir)/stage2 -I$(top_srcdir)/stage1 +-@NETBOOT_SUPPORT_FALSE@LIBDRIVERS = +- +-# Don't build the netboot support by default. +-@NETBOOT_SUPPORT_TRUE@LIBDRIVERS = libdrivers.a +-noinst_LIBRARIES = $(LIBDRIVERS) +-libdrivers_a_SOURCES = cards.h config.c etherboot.h \ +- fsys_tftp.c linux-asm-io.h linux-asm-string.h \ +- main.c misc.c nic.h osdep.h pci.c pci.h timer.c timer.h +- +-EXTRA_libdrivers_a_SOURCES = 3c509.c 3c509.h 3c595.c 3c595.h 3c90x.c \ +- cs89x0.c cs89x0.h davicom.c depca.c eepro.c eepro100.c \ +- epic100.c epic100.h fa311.c i82586.c lance.c natsemi.c \ +- ni5010.c ns8390.c ns8390.h otulip.c otulip.h rtl8139.c \ +- sis900.c sis900.h sk_g16.c sk_g16.h smc9000.c smc9000.h \ +- tiara.c tlan.c tulip.c via-rhine.c w89c840.c +- +-libdrivers_a_CFLAGS = $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- -DFSYS_TFTP=1 $(NET_CFLAGS) $(NET_EXTRAFLAGS) +- +-# Filled by configure. +-libdrivers_a_LIBADD = @NETBOOT_DRIVERS@ +-libdrivers_a_DEPENDENCIES = $(libdrivers_a_LIBADD) +-EXTRA_DIST = README.netboot 3c90x.txt cs89x0.txt sis900.txt tulip.txt +- +-# These below are several special rules for the device drivers. +-# We cannot use a simple rule for them... +- +-# What objects are derived from a driver? +-3c509_drivers = 3c509.o 3c529.o +-3c595_drivers = 3c595.o +-3c90x_drivers = 3c90x.o +-cs89x0_drivers = cs89x0.o +-davicom_drivers = davicom.o +-depca_drivers = depca.o +-eepro_drivers = eepro.o +-eepro100_drivers = eepro100.o +-epic100_drivers = epic100.o +-#fa311_drivers = fa311.o +-i82586_drivers = 3c507.o exos205.o ni5210.o +-lance_drivers = lance.o ne2100.o ni6510.o +-natsemi_drivers = natsemi.o +-ni5010_drivers = ni5010.o +-ns8390_drivers = 3c503.o ne.o ns8390.o wd.o +-otulip_drivers = otulip.o +-rtl8139_drivers = rtl8139.o +-sis900_drivers = sis900.o +-sk_g16_drivers = sk_g16.o +-smc9000_drivers = smc9000.o +-tiara_drivers = tiara.o +-#tlan_drivers = tlan.o +-tulip_drivers = tulip.o +-via_rhine_drivers = via_rhine.o +-w89c840_drivers = w89c840.o +- +-# Per-object flags. +-3c509_o_CFLAGS = -DINCLUDE_3C509=1 +-3c529_o_CFLAGS = -DINCLUDE_3C529=1 +-3c595_o_CFLAGS = -DINCLUDE_3C595=1 +-3c90x_o_CFLAGS = -DINCLUDE_3C90X=1 +-cs89x0_o_CFLAGS = -DINCLUDE_CS89X0=1 +-davicom_o_CFLAGS = -DINCLUDE_DAVICOM=1 +-depca_o_CFLAGS = -DINCLUDE_DEPCA=1 +-eepro_o_CFLAGS = -DINCLUDE_EEPRO=1 +-eepro100_o_CFLAGS = -DINCLUDE_EEPRO100=1 +-epic100_o_CFLAGS = -DINCLUDE_EPIC100=1 +-#fa311_o_CFLAGS = -DINCLUDE_FA311=1 +-3c507_o_CFLAGS = -DINCLUDE_3C507=1 +-exos205_o_CFLAGS = -DINCLUDE_EXOS205=1 +-ni5210_o_CFLAGS = -DINCLUDE_NI5210=1 +-lance_o_CFLAGS = -DINCLUDE_LANCE=1 +-ne2100_o_CFLAGS = -DINCLUDE_NE2100=1 +-ni6510_o_CFLAGS = -DINCLUDE_NI6510=1 +-natsemi_o_CFLAGS = -DINCLUDE_NATSEMI=1 +-ni5010_o_CFLAGS = -DINCLUDE_NI5010=1 +-3c503_o_CFLAGS = -DINCLUDE_3C503=1 +-ne_o_CFLAGS = -DINCLUDE_NE=1 +-ns8390_o_CFLAGS = -DINCLUDE_NS8390=1 +-wd_o_CFLAGS = -DINCLUDE_WD=1 +-otulip_o_CFLAGS = -DINCLUDE_OTULIP=1 +-rtl8139_o_CFLAGS = -DINCLUDE_RTL8139=1 +-sis900_o_CFLAGS = -DINCLUDE_SIS900=1 +-sk_g16_o_CFLAGS = -DINCLUDE_SK_G16=1 +-smc9000_o_CFLAGS = -DINCLUDE_SMC9000=1 +-tiara_o_CFLAGS = -DINCLUDE_TIARA=1 +-#tlan_o_CFLAGS = -DINCLUDE_TLAN=1 +-tulip_o_CFLAGS = -DINCLUDE_TULIP=1 +-via_rhine_o_CFLAGS = -DINCLUDE_VIA_RHINE=1 +-w89c840_o_CFLAGS = -DINCLUDE_W89C840=1 +-all: all-am +- +-.SUFFIXES: +-.SUFFIXES: .c .o .obj +-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) +- @for dep in $?; do \ +- case '$(am__configure_deps)' in \ +- *$$dep*) \ +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +- && exit 0; \ +- exit 1;; \ +- esac; \ +- done; \ +- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu netboot/Makefile'; \ +- cd $(top_srcdir) && \ +- $(AUTOMAKE) --gnu netboot/Makefile +-.PRECIOUS: Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- @case '$?' in \ +- *config.status*) \ +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ +- *) \ +- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ +- esac; +- +-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +- +-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +- +-clean-noinstLIBRARIES: +- -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +-libdrivers.a: $(libdrivers_a_OBJECTS) $(libdrivers_a_DEPENDENCIES) +- -rm -f libdrivers.a +- $(libdrivers_a_AR) libdrivers.a $(libdrivers_a_OBJECTS) $(libdrivers_a_LIBADD) +- $(RANLIB) libdrivers.a +- +-mostlyclean-compile: +- -rm -f *.$(OBJEXT) +- +-distclean-compile: +- -rm -f *.tab.c +- +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-3c509.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-3c595.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-3c90x.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-config.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-cs89x0.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-davicom.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-depca.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-eepro.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-eepro100.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-epic100.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-fa311.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-fsys_tftp.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-i82586.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-lance.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-main.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-misc.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-natsemi.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-ni5010.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-ns8390.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-otulip.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-pci.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-rtl8139.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-sis900.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-sk_g16.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-smc9000.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-tiara.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-timer.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-tlan.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-tulip.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-via-rhine.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-w89c840.Po@am__quote@ +- +-.c.o: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c $< +- +-.c.obj: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +- +-libdrivers_a-config.o: config.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-config.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-config.Tpo" -c -o libdrivers_a-config.o `test -f 'config.c' || echo '$(srcdir)/'`config.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-config.Tpo" "$(DEPDIR)/libdrivers_a-config.Po"; else rm -f "$(DEPDIR)/libdrivers_a-config.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config.c' object='libdrivers_a-config.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-config.o `test -f 'config.c' || echo '$(srcdir)/'`config.c +- +-libdrivers_a-config.obj: config.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-config.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-config.Tpo" -c -o libdrivers_a-config.obj `if test -f 'config.c'; then $(CYGPATH_W) 'config.c'; else $(CYGPATH_W) '$(srcdir)/config.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-config.Tpo" "$(DEPDIR)/libdrivers_a-config.Po"; else rm -f "$(DEPDIR)/libdrivers_a-config.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config.c' object='libdrivers_a-config.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-config.obj `if test -f 'config.c'; then $(CYGPATH_W) 'config.c'; else $(CYGPATH_W) '$(srcdir)/config.c'; fi` +- +-libdrivers_a-fsys_tftp.o: fsys_tftp.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-fsys_tftp.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-fsys_tftp.Tpo" -c -o libdrivers_a-fsys_tftp.o `test -f 'fsys_tftp.c' || echo '$(srcdir)/'`fsys_tftp.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-fsys_tftp.Tpo" "$(DEPDIR)/libdrivers_a-fsys_tftp.Po"; else rm -f "$(DEPDIR)/libdrivers_a-fsys_tftp.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_tftp.c' object='libdrivers_a-fsys_tftp.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-fsys_tftp.o `test -f 'fsys_tftp.c' || echo '$(srcdir)/'`fsys_tftp.c +- +-libdrivers_a-fsys_tftp.obj: fsys_tftp.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-fsys_tftp.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-fsys_tftp.Tpo" -c -o libdrivers_a-fsys_tftp.obj `if test -f 'fsys_tftp.c'; then $(CYGPATH_W) 'fsys_tftp.c'; else $(CYGPATH_W) '$(srcdir)/fsys_tftp.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-fsys_tftp.Tpo" "$(DEPDIR)/libdrivers_a-fsys_tftp.Po"; else rm -f "$(DEPDIR)/libdrivers_a-fsys_tftp.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_tftp.c' object='libdrivers_a-fsys_tftp.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-fsys_tftp.obj `if test -f 'fsys_tftp.c'; then $(CYGPATH_W) 'fsys_tftp.c'; else $(CYGPATH_W) '$(srcdir)/fsys_tftp.c'; fi` +- +-libdrivers_a-main.o: main.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-main.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-main.Tpo" -c -o libdrivers_a-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-main.Tpo" "$(DEPDIR)/libdrivers_a-main.Po"; else rm -f "$(DEPDIR)/libdrivers_a-main.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='main.c' object='libdrivers_a-main.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c +- +-libdrivers_a-main.obj: main.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-main.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-main.Tpo" -c -o libdrivers_a-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-main.Tpo" "$(DEPDIR)/libdrivers_a-main.Po"; else rm -f "$(DEPDIR)/libdrivers_a-main.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='main.c' object='libdrivers_a-main.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi` +- +-libdrivers_a-misc.o: misc.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-misc.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-misc.Tpo" -c -o libdrivers_a-misc.o `test -f 'misc.c' || echo '$(srcdir)/'`misc.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-misc.Tpo" "$(DEPDIR)/libdrivers_a-misc.Po"; else rm -f "$(DEPDIR)/libdrivers_a-misc.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='misc.c' object='libdrivers_a-misc.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-misc.o `test -f 'misc.c' || echo '$(srcdir)/'`misc.c +- +-libdrivers_a-misc.obj: misc.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-misc.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-misc.Tpo" -c -o libdrivers_a-misc.obj `if test -f 'misc.c'; then $(CYGPATH_W) 'misc.c'; else $(CYGPATH_W) '$(srcdir)/misc.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-misc.Tpo" "$(DEPDIR)/libdrivers_a-misc.Po"; else rm -f "$(DEPDIR)/libdrivers_a-misc.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='misc.c' object='libdrivers_a-misc.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-misc.obj `if test -f 'misc.c'; then $(CYGPATH_W) 'misc.c'; else $(CYGPATH_W) '$(srcdir)/misc.c'; fi` +- +-libdrivers_a-pci.o: pci.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-pci.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-pci.Tpo" -c -o libdrivers_a-pci.o `test -f 'pci.c' || echo '$(srcdir)/'`pci.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-pci.Tpo" "$(DEPDIR)/libdrivers_a-pci.Po"; else rm -f "$(DEPDIR)/libdrivers_a-pci.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pci.c' object='libdrivers_a-pci.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-pci.o `test -f 'pci.c' || echo '$(srcdir)/'`pci.c +- +-libdrivers_a-pci.obj: pci.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-pci.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-pci.Tpo" -c -o libdrivers_a-pci.obj `if test -f 'pci.c'; then $(CYGPATH_W) 'pci.c'; else $(CYGPATH_W) '$(srcdir)/pci.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-pci.Tpo" "$(DEPDIR)/libdrivers_a-pci.Po"; else rm -f "$(DEPDIR)/libdrivers_a-pci.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pci.c' object='libdrivers_a-pci.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-pci.obj `if test -f 'pci.c'; then $(CYGPATH_W) 'pci.c'; else $(CYGPATH_W) '$(srcdir)/pci.c'; fi` +- +-libdrivers_a-timer.o: timer.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-timer.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-timer.Tpo" -c -o libdrivers_a-timer.o `test -f 'timer.c' || echo '$(srcdir)/'`timer.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-timer.Tpo" "$(DEPDIR)/libdrivers_a-timer.Po"; else rm -f "$(DEPDIR)/libdrivers_a-timer.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='timer.c' object='libdrivers_a-timer.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-timer.o `test -f 'timer.c' || echo '$(srcdir)/'`timer.c +- +-libdrivers_a-timer.obj: timer.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-timer.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-timer.Tpo" -c -o libdrivers_a-timer.obj `if test -f 'timer.c'; then $(CYGPATH_W) 'timer.c'; else $(CYGPATH_W) '$(srcdir)/timer.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-timer.Tpo" "$(DEPDIR)/libdrivers_a-timer.Po"; else rm -f "$(DEPDIR)/libdrivers_a-timer.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='timer.c' object='libdrivers_a-timer.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-timer.obj `if test -f 'timer.c'; then $(CYGPATH_W) 'timer.c'; else $(CYGPATH_W) '$(srcdir)/timer.c'; fi` +- +-libdrivers_a-3c509.o: 3c509.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-3c509.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-3c509.Tpo" -c -o libdrivers_a-3c509.o `test -f '3c509.c' || echo '$(srcdir)/'`3c509.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-3c509.Tpo" "$(DEPDIR)/libdrivers_a-3c509.Po"; else rm -f "$(DEPDIR)/libdrivers_a-3c509.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='3c509.c' object='libdrivers_a-3c509.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-3c509.o `test -f '3c509.c' || echo '$(srcdir)/'`3c509.c +- +-libdrivers_a-3c509.obj: 3c509.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-3c509.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-3c509.Tpo" -c -o libdrivers_a-3c509.obj `if test -f '3c509.c'; then $(CYGPATH_W) '3c509.c'; else $(CYGPATH_W) '$(srcdir)/3c509.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-3c509.Tpo" "$(DEPDIR)/libdrivers_a-3c509.Po"; else rm -f "$(DEPDIR)/libdrivers_a-3c509.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='3c509.c' object='libdrivers_a-3c509.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-3c509.obj `if test -f '3c509.c'; then $(CYGPATH_W) '3c509.c'; else $(CYGPATH_W) '$(srcdir)/3c509.c'; fi` +- +-libdrivers_a-3c595.o: 3c595.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-3c595.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-3c595.Tpo" -c -o libdrivers_a-3c595.o `test -f '3c595.c' || echo '$(srcdir)/'`3c595.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-3c595.Tpo" "$(DEPDIR)/libdrivers_a-3c595.Po"; else rm -f "$(DEPDIR)/libdrivers_a-3c595.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='3c595.c' object='libdrivers_a-3c595.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-3c595.o `test -f '3c595.c' || echo '$(srcdir)/'`3c595.c +- +-libdrivers_a-3c595.obj: 3c595.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-3c595.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-3c595.Tpo" -c -o libdrivers_a-3c595.obj `if test -f '3c595.c'; then $(CYGPATH_W) '3c595.c'; else $(CYGPATH_W) '$(srcdir)/3c595.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-3c595.Tpo" "$(DEPDIR)/libdrivers_a-3c595.Po"; else rm -f "$(DEPDIR)/libdrivers_a-3c595.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='3c595.c' object='libdrivers_a-3c595.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-3c595.obj `if test -f '3c595.c'; then $(CYGPATH_W) '3c595.c'; else $(CYGPATH_W) '$(srcdir)/3c595.c'; fi` +- +-libdrivers_a-3c90x.o: 3c90x.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-3c90x.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-3c90x.Tpo" -c -o libdrivers_a-3c90x.o `test -f '3c90x.c' || echo '$(srcdir)/'`3c90x.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-3c90x.Tpo" "$(DEPDIR)/libdrivers_a-3c90x.Po"; else rm -f "$(DEPDIR)/libdrivers_a-3c90x.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='3c90x.c' object='libdrivers_a-3c90x.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-3c90x.o `test -f '3c90x.c' || echo '$(srcdir)/'`3c90x.c +- +-libdrivers_a-3c90x.obj: 3c90x.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-3c90x.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-3c90x.Tpo" -c -o libdrivers_a-3c90x.obj `if test -f '3c90x.c'; then $(CYGPATH_W) '3c90x.c'; else $(CYGPATH_W) '$(srcdir)/3c90x.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-3c90x.Tpo" "$(DEPDIR)/libdrivers_a-3c90x.Po"; else rm -f "$(DEPDIR)/libdrivers_a-3c90x.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='3c90x.c' object='libdrivers_a-3c90x.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-3c90x.obj `if test -f '3c90x.c'; then $(CYGPATH_W) '3c90x.c'; else $(CYGPATH_W) '$(srcdir)/3c90x.c'; fi` +- +-libdrivers_a-cs89x0.o: cs89x0.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-cs89x0.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-cs89x0.Tpo" -c -o libdrivers_a-cs89x0.o `test -f 'cs89x0.c' || echo '$(srcdir)/'`cs89x0.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-cs89x0.Tpo" "$(DEPDIR)/libdrivers_a-cs89x0.Po"; else rm -f "$(DEPDIR)/libdrivers_a-cs89x0.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cs89x0.c' object='libdrivers_a-cs89x0.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-cs89x0.o `test -f 'cs89x0.c' || echo '$(srcdir)/'`cs89x0.c +- +-libdrivers_a-cs89x0.obj: cs89x0.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-cs89x0.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-cs89x0.Tpo" -c -o libdrivers_a-cs89x0.obj `if test -f 'cs89x0.c'; then $(CYGPATH_W) 'cs89x0.c'; else $(CYGPATH_W) '$(srcdir)/cs89x0.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-cs89x0.Tpo" "$(DEPDIR)/libdrivers_a-cs89x0.Po"; else rm -f "$(DEPDIR)/libdrivers_a-cs89x0.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cs89x0.c' object='libdrivers_a-cs89x0.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-cs89x0.obj `if test -f 'cs89x0.c'; then $(CYGPATH_W) 'cs89x0.c'; else $(CYGPATH_W) '$(srcdir)/cs89x0.c'; fi` +- +-libdrivers_a-davicom.o: davicom.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-davicom.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-davicom.Tpo" -c -o libdrivers_a-davicom.o `test -f 'davicom.c' || echo '$(srcdir)/'`davicom.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-davicom.Tpo" "$(DEPDIR)/libdrivers_a-davicom.Po"; else rm -f "$(DEPDIR)/libdrivers_a-davicom.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='davicom.c' object='libdrivers_a-davicom.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-davicom.o `test -f 'davicom.c' || echo '$(srcdir)/'`davicom.c +- +-libdrivers_a-davicom.obj: davicom.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-davicom.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-davicom.Tpo" -c -o libdrivers_a-davicom.obj `if test -f 'davicom.c'; then $(CYGPATH_W) 'davicom.c'; else $(CYGPATH_W) '$(srcdir)/davicom.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-davicom.Tpo" "$(DEPDIR)/libdrivers_a-davicom.Po"; else rm -f "$(DEPDIR)/libdrivers_a-davicom.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='davicom.c' object='libdrivers_a-davicom.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-davicom.obj `if test -f 'davicom.c'; then $(CYGPATH_W) 'davicom.c'; else $(CYGPATH_W) '$(srcdir)/davicom.c'; fi` +- +-libdrivers_a-depca.o: depca.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-depca.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-depca.Tpo" -c -o libdrivers_a-depca.o `test -f 'depca.c' || echo '$(srcdir)/'`depca.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-depca.Tpo" "$(DEPDIR)/libdrivers_a-depca.Po"; else rm -f "$(DEPDIR)/libdrivers_a-depca.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='depca.c' object='libdrivers_a-depca.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-depca.o `test -f 'depca.c' || echo '$(srcdir)/'`depca.c +- +-libdrivers_a-depca.obj: depca.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-depca.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-depca.Tpo" -c -o libdrivers_a-depca.obj `if test -f 'depca.c'; then $(CYGPATH_W) 'depca.c'; else $(CYGPATH_W) '$(srcdir)/depca.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-depca.Tpo" "$(DEPDIR)/libdrivers_a-depca.Po"; else rm -f "$(DEPDIR)/libdrivers_a-depca.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='depca.c' object='libdrivers_a-depca.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-depca.obj `if test -f 'depca.c'; then $(CYGPATH_W) 'depca.c'; else $(CYGPATH_W) '$(srcdir)/depca.c'; fi` +- +-libdrivers_a-eepro.o: eepro.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-eepro.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-eepro.Tpo" -c -o libdrivers_a-eepro.o `test -f 'eepro.c' || echo '$(srcdir)/'`eepro.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-eepro.Tpo" "$(DEPDIR)/libdrivers_a-eepro.Po"; else rm -f "$(DEPDIR)/libdrivers_a-eepro.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='eepro.c' object='libdrivers_a-eepro.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-eepro.o `test -f 'eepro.c' || echo '$(srcdir)/'`eepro.c +- +-libdrivers_a-eepro.obj: eepro.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-eepro.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-eepro.Tpo" -c -o libdrivers_a-eepro.obj `if test -f 'eepro.c'; then $(CYGPATH_W) 'eepro.c'; else $(CYGPATH_W) '$(srcdir)/eepro.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-eepro.Tpo" "$(DEPDIR)/libdrivers_a-eepro.Po"; else rm -f "$(DEPDIR)/libdrivers_a-eepro.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='eepro.c' object='libdrivers_a-eepro.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-eepro.obj `if test -f 'eepro.c'; then $(CYGPATH_W) 'eepro.c'; else $(CYGPATH_W) '$(srcdir)/eepro.c'; fi` +- +-libdrivers_a-eepro100.o: eepro100.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-eepro100.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-eepro100.Tpo" -c -o libdrivers_a-eepro100.o `test -f 'eepro100.c' || echo '$(srcdir)/'`eepro100.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-eepro100.Tpo" "$(DEPDIR)/libdrivers_a-eepro100.Po"; else rm -f "$(DEPDIR)/libdrivers_a-eepro100.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='eepro100.c' object='libdrivers_a-eepro100.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-eepro100.o `test -f 'eepro100.c' || echo '$(srcdir)/'`eepro100.c +- +-libdrivers_a-eepro100.obj: eepro100.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-eepro100.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-eepro100.Tpo" -c -o libdrivers_a-eepro100.obj `if test -f 'eepro100.c'; then $(CYGPATH_W) 'eepro100.c'; else $(CYGPATH_W) '$(srcdir)/eepro100.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-eepro100.Tpo" "$(DEPDIR)/libdrivers_a-eepro100.Po"; else rm -f "$(DEPDIR)/libdrivers_a-eepro100.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='eepro100.c' object='libdrivers_a-eepro100.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-eepro100.obj `if test -f 'eepro100.c'; then $(CYGPATH_W) 'eepro100.c'; else $(CYGPATH_W) '$(srcdir)/eepro100.c'; fi` +- +-libdrivers_a-epic100.o: epic100.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-epic100.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-epic100.Tpo" -c -o libdrivers_a-epic100.o `test -f 'epic100.c' || echo '$(srcdir)/'`epic100.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-epic100.Tpo" "$(DEPDIR)/libdrivers_a-epic100.Po"; else rm -f "$(DEPDIR)/libdrivers_a-epic100.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epic100.c' object='libdrivers_a-epic100.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-epic100.o `test -f 'epic100.c' || echo '$(srcdir)/'`epic100.c +- +-libdrivers_a-epic100.obj: epic100.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-epic100.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-epic100.Tpo" -c -o libdrivers_a-epic100.obj `if test -f 'epic100.c'; then $(CYGPATH_W) 'epic100.c'; else $(CYGPATH_W) '$(srcdir)/epic100.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-epic100.Tpo" "$(DEPDIR)/libdrivers_a-epic100.Po"; else rm -f "$(DEPDIR)/libdrivers_a-epic100.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epic100.c' object='libdrivers_a-epic100.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-epic100.obj `if test -f 'epic100.c'; then $(CYGPATH_W) 'epic100.c'; else $(CYGPATH_W) '$(srcdir)/epic100.c'; fi` +- +-libdrivers_a-fa311.o: fa311.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-fa311.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-fa311.Tpo" -c -o libdrivers_a-fa311.o `test -f 'fa311.c' || echo '$(srcdir)/'`fa311.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-fa311.Tpo" "$(DEPDIR)/libdrivers_a-fa311.Po"; else rm -f "$(DEPDIR)/libdrivers_a-fa311.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fa311.c' object='libdrivers_a-fa311.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-fa311.o `test -f 'fa311.c' || echo '$(srcdir)/'`fa311.c +- +-libdrivers_a-fa311.obj: fa311.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-fa311.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-fa311.Tpo" -c -o libdrivers_a-fa311.obj `if test -f 'fa311.c'; then $(CYGPATH_W) 'fa311.c'; else $(CYGPATH_W) '$(srcdir)/fa311.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-fa311.Tpo" "$(DEPDIR)/libdrivers_a-fa311.Po"; else rm -f "$(DEPDIR)/libdrivers_a-fa311.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fa311.c' object='libdrivers_a-fa311.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-fa311.obj `if test -f 'fa311.c'; then $(CYGPATH_W) 'fa311.c'; else $(CYGPATH_W) '$(srcdir)/fa311.c'; fi` +- +-libdrivers_a-i82586.o: i82586.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-i82586.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-i82586.Tpo" -c -o libdrivers_a-i82586.o `test -f 'i82586.c' || echo '$(srcdir)/'`i82586.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-i82586.Tpo" "$(DEPDIR)/libdrivers_a-i82586.Po"; else rm -f "$(DEPDIR)/libdrivers_a-i82586.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='i82586.c' object='libdrivers_a-i82586.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-i82586.o `test -f 'i82586.c' || echo '$(srcdir)/'`i82586.c +- +-libdrivers_a-i82586.obj: i82586.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-i82586.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-i82586.Tpo" -c -o libdrivers_a-i82586.obj `if test -f 'i82586.c'; then $(CYGPATH_W) 'i82586.c'; else $(CYGPATH_W) '$(srcdir)/i82586.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-i82586.Tpo" "$(DEPDIR)/libdrivers_a-i82586.Po"; else rm -f "$(DEPDIR)/libdrivers_a-i82586.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='i82586.c' object='libdrivers_a-i82586.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-i82586.obj `if test -f 'i82586.c'; then $(CYGPATH_W) 'i82586.c'; else $(CYGPATH_W) '$(srcdir)/i82586.c'; fi` +- +-libdrivers_a-lance.o: lance.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-lance.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-lance.Tpo" -c -o libdrivers_a-lance.o `test -f 'lance.c' || echo '$(srcdir)/'`lance.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-lance.Tpo" "$(DEPDIR)/libdrivers_a-lance.Po"; else rm -f "$(DEPDIR)/libdrivers_a-lance.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='lance.c' object='libdrivers_a-lance.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-lance.o `test -f 'lance.c' || echo '$(srcdir)/'`lance.c +- +-libdrivers_a-lance.obj: lance.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-lance.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-lance.Tpo" -c -o libdrivers_a-lance.obj `if test -f 'lance.c'; then $(CYGPATH_W) 'lance.c'; else $(CYGPATH_W) '$(srcdir)/lance.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-lance.Tpo" "$(DEPDIR)/libdrivers_a-lance.Po"; else rm -f "$(DEPDIR)/libdrivers_a-lance.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='lance.c' object='libdrivers_a-lance.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-lance.obj `if test -f 'lance.c'; then $(CYGPATH_W) 'lance.c'; else $(CYGPATH_W) '$(srcdir)/lance.c'; fi` +- +-libdrivers_a-natsemi.o: natsemi.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-natsemi.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-natsemi.Tpo" -c -o libdrivers_a-natsemi.o `test -f 'natsemi.c' || echo '$(srcdir)/'`natsemi.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-natsemi.Tpo" "$(DEPDIR)/libdrivers_a-natsemi.Po"; else rm -f "$(DEPDIR)/libdrivers_a-natsemi.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='natsemi.c' object='libdrivers_a-natsemi.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-natsemi.o `test -f 'natsemi.c' || echo '$(srcdir)/'`natsemi.c +- +-libdrivers_a-natsemi.obj: natsemi.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-natsemi.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-natsemi.Tpo" -c -o libdrivers_a-natsemi.obj `if test -f 'natsemi.c'; then $(CYGPATH_W) 'natsemi.c'; else $(CYGPATH_W) '$(srcdir)/natsemi.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-natsemi.Tpo" "$(DEPDIR)/libdrivers_a-natsemi.Po"; else rm -f "$(DEPDIR)/libdrivers_a-natsemi.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='natsemi.c' object='libdrivers_a-natsemi.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-natsemi.obj `if test -f 'natsemi.c'; then $(CYGPATH_W) 'natsemi.c'; else $(CYGPATH_W) '$(srcdir)/natsemi.c'; fi` +- +-libdrivers_a-ni5010.o: ni5010.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-ni5010.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-ni5010.Tpo" -c -o libdrivers_a-ni5010.o `test -f 'ni5010.c' || echo '$(srcdir)/'`ni5010.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-ni5010.Tpo" "$(DEPDIR)/libdrivers_a-ni5010.Po"; else rm -f "$(DEPDIR)/libdrivers_a-ni5010.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ni5010.c' object='libdrivers_a-ni5010.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-ni5010.o `test -f 'ni5010.c' || echo '$(srcdir)/'`ni5010.c +- +-libdrivers_a-ni5010.obj: ni5010.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-ni5010.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-ni5010.Tpo" -c -o libdrivers_a-ni5010.obj `if test -f 'ni5010.c'; then $(CYGPATH_W) 'ni5010.c'; else $(CYGPATH_W) '$(srcdir)/ni5010.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-ni5010.Tpo" "$(DEPDIR)/libdrivers_a-ni5010.Po"; else rm -f "$(DEPDIR)/libdrivers_a-ni5010.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ni5010.c' object='libdrivers_a-ni5010.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-ni5010.obj `if test -f 'ni5010.c'; then $(CYGPATH_W) 'ni5010.c'; else $(CYGPATH_W) '$(srcdir)/ni5010.c'; fi` +- +-libdrivers_a-ns8390.o: ns8390.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-ns8390.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-ns8390.Tpo" -c -o libdrivers_a-ns8390.o `test -f 'ns8390.c' || echo '$(srcdir)/'`ns8390.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-ns8390.Tpo" "$(DEPDIR)/libdrivers_a-ns8390.Po"; else rm -f "$(DEPDIR)/libdrivers_a-ns8390.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ns8390.c' object='libdrivers_a-ns8390.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-ns8390.o `test -f 'ns8390.c' || echo '$(srcdir)/'`ns8390.c +- +-libdrivers_a-ns8390.obj: ns8390.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-ns8390.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-ns8390.Tpo" -c -o libdrivers_a-ns8390.obj `if test -f 'ns8390.c'; then $(CYGPATH_W) 'ns8390.c'; else $(CYGPATH_W) '$(srcdir)/ns8390.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-ns8390.Tpo" "$(DEPDIR)/libdrivers_a-ns8390.Po"; else rm -f "$(DEPDIR)/libdrivers_a-ns8390.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ns8390.c' object='libdrivers_a-ns8390.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-ns8390.obj `if test -f 'ns8390.c'; then $(CYGPATH_W) 'ns8390.c'; else $(CYGPATH_W) '$(srcdir)/ns8390.c'; fi` +- +-libdrivers_a-otulip.o: otulip.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-otulip.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-otulip.Tpo" -c -o libdrivers_a-otulip.o `test -f 'otulip.c' || echo '$(srcdir)/'`otulip.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-otulip.Tpo" "$(DEPDIR)/libdrivers_a-otulip.Po"; else rm -f "$(DEPDIR)/libdrivers_a-otulip.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='otulip.c' object='libdrivers_a-otulip.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-otulip.o `test -f 'otulip.c' || echo '$(srcdir)/'`otulip.c +- +-libdrivers_a-otulip.obj: otulip.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-otulip.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-otulip.Tpo" -c -o libdrivers_a-otulip.obj `if test -f 'otulip.c'; then $(CYGPATH_W) 'otulip.c'; else $(CYGPATH_W) '$(srcdir)/otulip.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-otulip.Tpo" "$(DEPDIR)/libdrivers_a-otulip.Po"; else rm -f "$(DEPDIR)/libdrivers_a-otulip.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='otulip.c' object='libdrivers_a-otulip.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-otulip.obj `if test -f 'otulip.c'; then $(CYGPATH_W) 'otulip.c'; else $(CYGPATH_W) '$(srcdir)/otulip.c'; fi` +- +-libdrivers_a-rtl8139.o: rtl8139.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-rtl8139.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-rtl8139.Tpo" -c -o libdrivers_a-rtl8139.o `test -f 'rtl8139.c' || echo '$(srcdir)/'`rtl8139.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-rtl8139.Tpo" "$(DEPDIR)/libdrivers_a-rtl8139.Po"; else rm -f "$(DEPDIR)/libdrivers_a-rtl8139.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='rtl8139.c' object='libdrivers_a-rtl8139.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-rtl8139.o `test -f 'rtl8139.c' || echo '$(srcdir)/'`rtl8139.c +- +-libdrivers_a-rtl8139.obj: rtl8139.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-rtl8139.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-rtl8139.Tpo" -c -o libdrivers_a-rtl8139.obj `if test -f 'rtl8139.c'; then $(CYGPATH_W) 'rtl8139.c'; else $(CYGPATH_W) '$(srcdir)/rtl8139.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-rtl8139.Tpo" "$(DEPDIR)/libdrivers_a-rtl8139.Po"; else rm -f "$(DEPDIR)/libdrivers_a-rtl8139.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='rtl8139.c' object='libdrivers_a-rtl8139.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-rtl8139.obj `if test -f 'rtl8139.c'; then $(CYGPATH_W) 'rtl8139.c'; else $(CYGPATH_W) '$(srcdir)/rtl8139.c'; fi` +- +-libdrivers_a-sis900.o: sis900.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-sis900.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-sis900.Tpo" -c -o libdrivers_a-sis900.o `test -f 'sis900.c' || echo '$(srcdir)/'`sis900.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-sis900.Tpo" "$(DEPDIR)/libdrivers_a-sis900.Po"; else rm -f "$(DEPDIR)/libdrivers_a-sis900.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sis900.c' object='libdrivers_a-sis900.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-sis900.o `test -f 'sis900.c' || echo '$(srcdir)/'`sis900.c +- +-libdrivers_a-sis900.obj: sis900.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-sis900.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-sis900.Tpo" -c -o libdrivers_a-sis900.obj `if test -f 'sis900.c'; then $(CYGPATH_W) 'sis900.c'; else $(CYGPATH_W) '$(srcdir)/sis900.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-sis900.Tpo" "$(DEPDIR)/libdrivers_a-sis900.Po"; else rm -f "$(DEPDIR)/libdrivers_a-sis900.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sis900.c' object='libdrivers_a-sis900.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-sis900.obj `if test -f 'sis900.c'; then $(CYGPATH_W) 'sis900.c'; else $(CYGPATH_W) '$(srcdir)/sis900.c'; fi` +- +-libdrivers_a-sk_g16.o: sk_g16.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-sk_g16.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-sk_g16.Tpo" -c -o libdrivers_a-sk_g16.o `test -f 'sk_g16.c' || echo '$(srcdir)/'`sk_g16.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-sk_g16.Tpo" "$(DEPDIR)/libdrivers_a-sk_g16.Po"; else rm -f "$(DEPDIR)/libdrivers_a-sk_g16.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sk_g16.c' object='libdrivers_a-sk_g16.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-sk_g16.o `test -f 'sk_g16.c' || echo '$(srcdir)/'`sk_g16.c +- +-libdrivers_a-sk_g16.obj: sk_g16.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-sk_g16.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-sk_g16.Tpo" -c -o libdrivers_a-sk_g16.obj `if test -f 'sk_g16.c'; then $(CYGPATH_W) 'sk_g16.c'; else $(CYGPATH_W) '$(srcdir)/sk_g16.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-sk_g16.Tpo" "$(DEPDIR)/libdrivers_a-sk_g16.Po"; else rm -f "$(DEPDIR)/libdrivers_a-sk_g16.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sk_g16.c' object='libdrivers_a-sk_g16.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-sk_g16.obj `if test -f 'sk_g16.c'; then $(CYGPATH_W) 'sk_g16.c'; else $(CYGPATH_W) '$(srcdir)/sk_g16.c'; fi` +- +-libdrivers_a-smc9000.o: smc9000.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-smc9000.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-smc9000.Tpo" -c -o libdrivers_a-smc9000.o `test -f 'smc9000.c' || echo '$(srcdir)/'`smc9000.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-smc9000.Tpo" "$(DEPDIR)/libdrivers_a-smc9000.Po"; else rm -f "$(DEPDIR)/libdrivers_a-smc9000.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='smc9000.c' object='libdrivers_a-smc9000.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-smc9000.o `test -f 'smc9000.c' || echo '$(srcdir)/'`smc9000.c +- +-libdrivers_a-smc9000.obj: smc9000.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-smc9000.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-smc9000.Tpo" -c -o libdrivers_a-smc9000.obj `if test -f 'smc9000.c'; then $(CYGPATH_W) 'smc9000.c'; else $(CYGPATH_W) '$(srcdir)/smc9000.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-smc9000.Tpo" "$(DEPDIR)/libdrivers_a-smc9000.Po"; else rm -f "$(DEPDIR)/libdrivers_a-smc9000.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='smc9000.c' object='libdrivers_a-smc9000.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-smc9000.obj `if test -f 'smc9000.c'; then $(CYGPATH_W) 'smc9000.c'; else $(CYGPATH_W) '$(srcdir)/smc9000.c'; fi` +- +-libdrivers_a-tiara.o: tiara.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-tiara.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-tiara.Tpo" -c -o libdrivers_a-tiara.o `test -f 'tiara.c' || echo '$(srcdir)/'`tiara.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-tiara.Tpo" "$(DEPDIR)/libdrivers_a-tiara.Po"; else rm -f "$(DEPDIR)/libdrivers_a-tiara.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tiara.c' object='libdrivers_a-tiara.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-tiara.o `test -f 'tiara.c' || echo '$(srcdir)/'`tiara.c +- +-libdrivers_a-tiara.obj: tiara.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-tiara.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-tiara.Tpo" -c -o libdrivers_a-tiara.obj `if test -f 'tiara.c'; then $(CYGPATH_W) 'tiara.c'; else $(CYGPATH_W) '$(srcdir)/tiara.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-tiara.Tpo" "$(DEPDIR)/libdrivers_a-tiara.Po"; else rm -f "$(DEPDIR)/libdrivers_a-tiara.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tiara.c' object='libdrivers_a-tiara.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-tiara.obj `if test -f 'tiara.c'; then $(CYGPATH_W) 'tiara.c'; else $(CYGPATH_W) '$(srcdir)/tiara.c'; fi` +- +-libdrivers_a-tlan.o: tlan.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-tlan.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-tlan.Tpo" -c -o libdrivers_a-tlan.o `test -f 'tlan.c' || echo '$(srcdir)/'`tlan.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-tlan.Tpo" "$(DEPDIR)/libdrivers_a-tlan.Po"; else rm -f "$(DEPDIR)/libdrivers_a-tlan.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tlan.c' object='libdrivers_a-tlan.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-tlan.o `test -f 'tlan.c' || echo '$(srcdir)/'`tlan.c +- +-libdrivers_a-tlan.obj: tlan.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-tlan.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-tlan.Tpo" -c -o libdrivers_a-tlan.obj `if test -f 'tlan.c'; then $(CYGPATH_W) 'tlan.c'; else $(CYGPATH_W) '$(srcdir)/tlan.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-tlan.Tpo" "$(DEPDIR)/libdrivers_a-tlan.Po"; else rm -f "$(DEPDIR)/libdrivers_a-tlan.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tlan.c' object='libdrivers_a-tlan.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-tlan.obj `if test -f 'tlan.c'; then $(CYGPATH_W) 'tlan.c'; else $(CYGPATH_W) '$(srcdir)/tlan.c'; fi` +- +-libdrivers_a-tulip.o: tulip.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-tulip.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-tulip.Tpo" -c -o libdrivers_a-tulip.o `test -f 'tulip.c' || echo '$(srcdir)/'`tulip.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-tulip.Tpo" "$(DEPDIR)/libdrivers_a-tulip.Po"; else rm -f "$(DEPDIR)/libdrivers_a-tulip.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tulip.c' object='libdrivers_a-tulip.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-tulip.o `test -f 'tulip.c' || echo '$(srcdir)/'`tulip.c +- +-libdrivers_a-tulip.obj: tulip.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-tulip.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-tulip.Tpo" -c -o libdrivers_a-tulip.obj `if test -f 'tulip.c'; then $(CYGPATH_W) 'tulip.c'; else $(CYGPATH_W) '$(srcdir)/tulip.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-tulip.Tpo" "$(DEPDIR)/libdrivers_a-tulip.Po"; else rm -f "$(DEPDIR)/libdrivers_a-tulip.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tulip.c' object='libdrivers_a-tulip.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-tulip.obj `if test -f 'tulip.c'; then $(CYGPATH_W) 'tulip.c'; else $(CYGPATH_W) '$(srcdir)/tulip.c'; fi` +- +-libdrivers_a-via-rhine.o: via-rhine.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-via-rhine.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-via-rhine.Tpo" -c -o libdrivers_a-via-rhine.o `test -f 'via-rhine.c' || echo '$(srcdir)/'`via-rhine.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-via-rhine.Tpo" "$(DEPDIR)/libdrivers_a-via-rhine.Po"; else rm -f "$(DEPDIR)/libdrivers_a-via-rhine.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='via-rhine.c' object='libdrivers_a-via-rhine.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-via-rhine.o `test -f 'via-rhine.c' || echo '$(srcdir)/'`via-rhine.c +- +-libdrivers_a-via-rhine.obj: via-rhine.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-via-rhine.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-via-rhine.Tpo" -c -o libdrivers_a-via-rhine.obj `if test -f 'via-rhine.c'; then $(CYGPATH_W) 'via-rhine.c'; else $(CYGPATH_W) '$(srcdir)/via-rhine.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-via-rhine.Tpo" "$(DEPDIR)/libdrivers_a-via-rhine.Po"; else rm -f "$(DEPDIR)/libdrivers_a-via-rhine.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='via-rhine.c' object='libdrivers_a-via-rhine.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-via-rhine.obj `if test -f 'via-rhine.c'; then $(CYGPATH_W) 'via-rhine.c'; else $(CYGPATH_W) '$(srcdir)/via-rhine.c'; fi` +- +-libdrivers_a-w89c840.o: w89c840.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-w89c840.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-w89c840.Tpo" -c -o libdrivers_a-w89c840.o `test -f 'w89c840.c' || echo '$(srcdir)/'`w89c840.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-w89c840.Tpo" "$(DEPDIR)/libdrivers_a-w89c840.Po"; else rm -f "$(DEPDIR)/libdrivers_a-w89c840.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='w89c840.c' object='libdrivers_a-w89c840.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-w89c840.o `test -f 'w89c840.c' || echo '$(srcdir)/'`w89c840.c +- +-libdrivers_a-w89c840.obj: w89c840.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-w89c840.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-w89c840.Tpo" -c -o libdrivers_a-w89c840.obj `if test -f 'w89c840.c'; then $(CYGPATH_W) 'w89c840.c'; else $(CYGPATH_W) '$(srcdir)/w89c840.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-w89c840.Tpo" "$(DEPDIR)/libdrivers_a-w89c840.Po"; else rm -f "$(DEPDIR)/libdrivers_a-w89c840.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='w89c840.c' object='libdrivers_a-w89c840.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-w89c840.obj `if test -f 'w89c840.c'; then $(CYGPATH_W) 'w89c840.c'; else $(CYGPATH_W) '$(srcdir)/w89c840.c'; fi` +-uninstall-info-am: +- +-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- mkid -fID $$unique +-tags: TAGS +- +-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ +- $(TAGS_FILES) $(LISP) +- tags=; \ +- here=`pwd`; \ +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ +- test -n "$$unique" || unique=$$empty_fix; \ +- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique; \ +- fi +-ctags: CTAGS +-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ +- $(TAGS_FILES) $(LISP) +- tags=; \ +- here=`pwd`; \ +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- test -z "$(CTAGS_ARGS)$$tags$$unique" \ +- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ +- $$tags $$unique +- +-GTAGS: +- here=`$(am__cd) $(top_builddir) && pwd` \ +- && cd $(top_srcdir) \ +- && gtags -i $(GTAGS_ARGS) $$here +- +-distclean-tags: +- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +- +-distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ +- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkdir_p) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ +- if test -d $$d/$$file; then \ +- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ +- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ +- fi; \ +- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ +- else \ +- test -f $(distdir)/$$file \ +- || cp -p $$d/$$file $(distdir)/$$file \ +- || exit 1; \ +- fi; \ +- done +-check-am: all-am +-check: check-am +-all-am: Makefile $(LIBRARIES) +-installdirs: +-install: install-am +-install-exec: install-exec-am +-install-data: install-data-am +-uninstall: uninstall-am +- +-install-am: all-am +- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +- +-installcheck: installcheck-am +-install-strip: +- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ +- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ +- `test -z '$(STRIP)' || \ +- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +-mostlyclean-generic: +- +-clean-generic: +- +-distclean-generic: +- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) +- +-maintainer-clean-generic: +- @echo "This command is intended for maintainers to use" +- @echo "it deletes files that may require special tools to rebuild." +-clean: clean-am +- +-clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am +- +-distclean: distclean-am +- -rm -rf ./$(DEPDIR) +- -rm -f Makefile +-distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-tags +- +-dvi: dvi-am +- +-dvi-am: +- +-html: html-am +- +-info: info-am +- +-info-am: +- +-install-data-am: +- +-install-exec-am: +- +-install-info: install-info-am +- +-install-man: +- +-installcheck-am: +- +-maintainer-clean: maintainer-clean-am +- -rm -rf ./$(DEPDIR) +- -rm -f Makefile +-maintainer-clean-am: distclean-am maintainer-clean-generic +- +-mostlyclean: mostlyclean-am +- +-mostlyclean-am: mostlyclean-compile mostlyclean-generic +- +-pdf: pdf-am +- +-pdf-am: +- +-ps: ps-am +- +-ps-am: +- +-uninstall-am: uninstall-info-am +- +-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ +- clean-noinstLIBRARIES ctags distclean distclean-compile \ +- distclean-generic distclean-tags distdir dvi dvi-am html \ +- html-am info info-am install install-am install-data \ +- install-data-am install-exec install-exec-am install-info \ +- install-info-am install-man install-strip installcheck \ +- installcheck-am installdirs maintainer-clean \ +- maintainer-clean-generic mostlyclean mostlyclean-compile \ +- mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ +- uninstall-am uninstall-info-am +- +- +-# Is it really necessary to specify dependecies explicitly? +-$(3c509_drivers): 3c509.c 3c509.h +-$(3c509_drivers): %.o: 3c509.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(3c595_drivers): 3c595.c 3c595.h +-$(3c595_drivers): %.o: 3c595.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(3c90x_drivers): 3c90x.c +-$(3c90x_drivers): %.o: 3c90x.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(cs89x0_drivers): cs89x0.c cs89x0.h +-$(cs89x0_drivers): %.o: cs89x0.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(davicom_drivers): davicom.c +-$(davicom_drivers): %.o: davicom.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(depca_drivers): depca.c +-$(depca_drivers): %.o: depca.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(eepro_drivers): eepro.c +-$(eepro_drivers): %.o: eepro.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(eepro100_drivers): eepro100.c +-$(eepro100_drivers): %.o: eepro100.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(epic100_drivers): epic100.c epic100.h +-$(epic100_drivers): %.o: epic100.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-#$(fa311_drivers): fa311.c +-#$(fa311_drivers): %.o: fa311.c +-# $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +-# $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(i82586_drivers): i82586.c +-$(i82586_drivers): %.o: i82586.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(lance_drivers): lance.c +-$(lance_drivers): %.o: lance.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(natsemi_drivers): natsemi.c +-$(natsemi_drivers): %.o: natsemi.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(ni5010_drivers): ni5010.c +-$(ni5010_drivers): %.o: ni5010.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(ns8390_drivers): ns8390.c ns8390.h +-$(ns8390_drivers): %.o: ns8390.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(otulip_drivers): otulip.c otulip.h +-$(otulip_drivers): %.o: otulip.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(rtl8139_drivers): rtl8139.c +-$(rtl8139_drivers): %.o: rtl8139.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(sis900_drivers): sis900.c +-$(sis900_drivers): %.o: sis900.c sis900.h +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(sk_g16_drivers): sk_g16.c sk_g16.h +-$(sk_g16_drivers): %.o: sk_g16.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(smc9000_drivers): smc9000.c smc9000.h +-$(smc9000_drivers): %.o: smc9000.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(tiara_drivers): tiara.c +-$(tiara_drivers): %.o: tiara.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-#$(tlan_drivers): tlan.c +-#$(tlan_drivers): %.o: tlan.c +-# $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +-# $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(tulip_drivers): tulip.c +-$(tulip_drivers): %.o: tulip.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(via_rhine_drivers): via-rhine.c +-$(via_rhine_drivers): %.o: via-rhine.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(w89c840_drivers): w89c840.c +-$(w89c840_drivers): %.o: w89c840.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +-# Tell versions [3.59,3.63) of GNU make to not export all variables. +-# Otherwise a system limit (for SysV at least) may be exceeded. +-.NOEXPORT: +diff --git a/netboot/etherboot.h b/netboot/etherboot.h +index 74ca16f..9c02b25 100644 +--- a/netboot/etherboot.h ++++ b/netboot/etherboot.h +@@ -246,7 +246,7 @@ Author: Martin Renters + + typedef struct + { +- unsigned long s_addr; ++ unsigned int s_addr; + } + in_addr; + +@@ -302,7 +302,7 @@ struct bootp_t + char bp_htype; + char bp_hlen; + char bp_hops; +- unsigned long bp_xid; ++ unsigned int bp_xid; + unsigned short bp_secs; + unsigned short unused; + in_addr bp_ciaddr; +@@ -411,25 +411,25 @@ struct rpc_t + + struct + { +- long id; +- long type; +- long rpcvers; +- long prog; +- long vers; +- long proc; +- long data[1]; ++ int id; ++ int type; ++ int rpcvers; ++ int prog; ++ int vers; ++ int proc; ++ int data[1]; + } + call; + + struct + { +- long id; +- long type; +- long rstatus; +- long verifier; +- long v2; +- long astatus; +- long data[1]; ++ int id; ++ int type; ++ int rstatus; ++ int verifier; ++ int v2; ++ int astatus; ++ int data[1]; + } + reply; + } +@@ -531,9 +531,7 @@ extern int ip_abort; + extern int network_ready; + extern struct rom_info rom; + extern struct arptable_t arptable[MAX_ARP]; +-extern struct bootpd_t bootp_data; + #define BOOTP_DATA_ADDR (&bootp_data) +-extern unsigned char *end_of_rfc1533; + + /* config.c */ + extern struct nic nic; +diff --git a/netboot/main.c b/netboot/main.c +index 82759b6..b8ba920 100644 +--- a/netboot/main.c ++++ b/netboot/main.c +@@ -53,9 +53,9 @@ int network_ready = 0; + struct rom_info rom; + + static int vendorext_isvalid; +-static unsigned long netmask; ++static unsigned int netmask; + static struct bootpd_t bootp_data; +-static unsigned long xid; ++static unsigned int xid; + static unsigned char *end_of_rfc1533 = NULL; + + #ifndef NO_DHCP_SUPPORT +@@ -773,7 +773,7 @@ await_reply (int type, int ival, void *ptr, int timeout) + if (nic.packetlen >= ETH_HLEN + sizeof (struct arprequest) + && ptype == ARP) + { +- unsigned long tmp; ++ unsigned int tmp; + + arpreply = (struct arprequest *) &nic.packet[ETH_HLEN]; + +diff --git a/netboot/misc.c b/netboot/misc.c +index 28614fd..6ea9a8e 100644 +--- a/netboot/misc.c ++++ b/netboot/misc.c +@@ -21,6 +21,7 @@ + + #define GRUB 1 + #include <etherboot.h> ++#include <stdarg.h> + + void + sleep (int secs) +@@ -71,9 +72,10 @@ PRINTF and friends + Note: width specification not supported + **************************************************************************/ + static int +-etherboot_vsprintf (char *buf, const char *fmt, const int *dp) ++etherboot_vsprintf (char *buf, const char *fmt, va_list args) + { + char *p, *s; ++ int n; + + s = buf; + for ( ; *fmt != '\0'; ++fmt) +@@ -86,7 +88,7 @@ etherboot_vsprintf (char *buf, const char *fmt, const int *dp) + + if (*++fmt == 's') + { +- for (p = (char *) *dp++; *p != '\0'; p++) ++ for (p = va_arg (args, char *); *p != '\0'; p++) + buf ? *s++ = *p : grub_putchar (*p); + } + else +@@ -120,46 +122,44 @@ etherboot_vsprintf (char *buf, const char *fmt, const int *dp) + */ + if ((*fmt | 0x20) == 'x') + { +- /* With x86 gcc, sizeof(long) == sizeof(int) */ +- const long *lp = (const long *) dp; +- long h = *lp++; + int ncase = (*fmt & 0x20); ++ ++ n = va_arg (args, int); + +- dp = (const int *) lp; + if (alt) + { + *q++ = '0'; + *q++ = 'X' | ncase; + } + for (; shift >= 0; shift -= 4) +- *q++ = "0123456789ABCDEF"[(h >> shift) & 0xF] | ncase; ++ *q++ = "0123456789ABCDEF"[(n >> shift) & 0xF] | ncase; + } + else if (*fmt == 'd') + { +- int i = *dp++; + char *r; +- +- if (i < 0) ++ ++ n = va_arg (args, int); ++ if (n < 0) + { + *q++ = '-'; +- i = -i; ++ n = -n; + } + + p = q; /* save beginning of digits */ + do + { +- *q++ = '0' + (i % 10); +- i /= 10; ++ *q++ = '0' + (n % 10); ++ n /= 10; + } +- while (i); ++ while (n); + + /* reverse digits, stop in middle */ + r = q; /* don't alter q */ + while (--r > p) + { +- i = *r; ++ n = *r; + *r = *p; +- *p++ = i; ++ *p++ = n; + } + } + else if (*fmt == '@') +@@ -167,14 +167,12 @@ etherboot_vsprintf (char *buf, const char *fmt, const int *dp) + unsigned char *r; + union + { +- long l; ++ int l; + unsigned char c[4]; + } + u; +- const long *lp = (const long *) dp; + +- u.l = *lp++; +- dp = (const int *) lp; ++ u.l = va_arg (args, int); + + for (r = &u.c[0]; r < &u.c[4]; ++r) + q += etherboot_sprintf (q, "%d.", *r); +@@ -184,15 +182,15 @@ etherboot_vsprintf (char *buf, const char *fmt, const int *dp) + else if (*fmt == '!') + { + char *r; +- p = (char *) *dp++; +- ++ ++ p = va_arg (args, char *); + for (r = p + ETH_ALEN; p < r; ++p) + q += etherboot_sprintf (q, "%hhX:", *p); + + --q; + } + else if (*fmt == 'c') +- *q++ = *dp++; ++ *q++ = va_arg (args, int); + else + *q++ = *fmt; + +@@ -211,13 +209,23 @@ etherboot_vsprintf (char *buf, const char *fmt, const int *dp) + int + etherboot_sprintf (char *buf, const char *fmt, ...) + { +- return etherboot_vsprintf (buf, fmt, ((const int *) &fmt) + 1); ++ va_list ap; ++ int ret; ++ ++ va_start (ap, fmt); ++ ret = etherboot_vsprintf (buf, fmt, ap); ++ va_end (ap); ++ return ret; + } + + void + etherboot_printf (const char *fmt, ...) + { +- (void) etherboot_vsprintf (0, fmt, ((const int *) &fmt) + 1); ++ va_list ap; ++ ++ va_start (ap, fmt); ++ (void) etherboot_vsprintf (0, fmt, ap); ++ va_end (ap); + } + + int +diff --git a/netboot/osdep.h b/netboot/osdep.h +index 57218bf..881141b 100644 +--- a/netboot/osdep.h ++++ b/netboot/osdep.h +@@ -21,10 +21,10 @@ + #elif defined(__LITTLE_ENDIAN) + # if !defined(__constant_htonl) + # define __constant_htonl(x) \ +- ((unsigned long int)((((unsigned long int)(x) & 0x000000ffU) << 24) | \ +- (((unsigned long int)(x) & 0x0000ff00U) << 8) | \ +- (((unsigned long int)(x) & 0x00ff0000U) >> 8) | \ +- (((unsigned long int)(x) & 0xff000000U) >> 24))) ++ ((unsigned int)((((unsigned int)(x) & 0x000000ffU) << 24) | \ ++ (((unsigned int)(x) & 0x0000ff00U) << 8) | \ ++ (((unsigned int)(x) & 0x00ff0000U) >> 8) | \ ++ (((unsigned int)(x) & 0xff000000U) >> 24))) + # endif + # if !defined(__constant_htons) + # define __constant_htons(x) \ +@@ -36,11 +36,11 @@ + #endif + + #define ntohl(x) \ +-(__builtin_constant_p(x) ? \ ++(__builtin_constant_p((unsigned int)x) ? \ + __constant_htonl((x)) : \ + __swap32(x)) + #define htonl(x) \ +-(__builtin_constant_p(x) ? \ ++(__builtin_constant_p((unsigned int)x) ? \ + __constant_htonl((x)) : \ + __swap32(x)) + #define ntohs(x) \ +@@ -52,21 +52,29 @@ + __constant_htons((x)) : \ + __swap16(x)) + +-static inline unsigned long int __swap32(unsigned long int x) ++static inline unsigned int __swap32(unsigned int x) + { ++#ifdef PLATFORM_EFI ++ __asm__("bswapl %0" : "=r" (x) : "0" (x)); ++#else + __asm__("xchgb %b0,%h0\n\t" + "rorl $16,%0\n\t" + "xchgb %b0,%h0" + : "=q" (x) + : "0" (x)); ++#endif + return x; + } + + static inline unsigned short int __swap16(unsigned short int x) + { ++#ifdef PLATFORM_EFI ++ return __constant_htons(x); ++#else + __asm__("xchgb %b0,%h0" + : "=q" (x) + : "0" (x)); ++#endif + return x; + } + +@@ -76,7 +84,7 @@ static inline unsigned short int __swap16(unsigned short int x) + + #include "linux-asm-io.h" + +-typedef unsigned long Address; ++typedef unsigned int Address; + + /* ANSI prototyping macro */ + #ifdef __STDC__ +diff --git a/stage1/.gitignore b/stage1/.gitignore +new file mode 100644 +index 0000000..5d89f6d +--- /dev/null ++++ b/stage1/.gitignore +@@ -0,0 +1,2 @@ ++Makefile.in ++.deps +diff --git a/stage1/Makefile.am b/stage1/Makefile.am +index 0afc285..cbae397 100644 +--- a/stage1/Makefile.am ++++ b/stage1/Makefile.am +@@ -1,11 +1,14 @@ +-pkglibdir = $(libdir)/$(PACKAGE)/$(host_cpu)-$(host_vendor) +-nodist_pkglib_DATA = stage1 +- +-CLEANFILES = $(nodist_pkglib_DATA) ++pkgdatadir = $(datadir)/$(PACKAGE)/$(host_cpu)-$(host_vendor) + + # We can't use builtins or standard includes. + AM_CCASFLAGS = $(STAGE1_CFLAGS) -fno-builtin -nostdinc +-LDFLAGS = -nostdlib -Wl,-N,-Ttext,7C00 ++LDFLAGS = $(LOADER_LDFLAGS) -nostdlib -Wl,-N,-Ttext,7C00 ++ ++if !PLATFORM_EFI ++ ++nodist_pkgdata_DATA = stage1 ++ ++CLEANFILES = $(nodist_pkgdata_DATA) + + noinst_PROGRAMS = stage1.exec + stage1_exec_SOURCES = stage1.S stage1.h +@@ -13,3 +16,5 @@ stage1_exec_SOURCES = stage1.S stage1.h + SUFFIXES = .exec + .exec: + $(OBJCOPY) -O binary $< $@ ++ ++endif +diff --git a/stage1/Makefile.in b/stage1/Makefile.in +deleted file mode 100644 +index 7134bdf..0000000 +--- a/stage1/Makefile.in ++++ /dev/null +@@ -1,433 +0,0 @@ +-# Makefile.in generated by automake 1.9.4 from Makefile.am. +-# @configure_input@ +- +-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +-# 2003, 2004 Free Software Foundation, Inc. +-# This Makefile.in is free software; the Free Software Foundation +-# gives unlimited permission to copy and/or distribute it, +-# with or without modifications, as long as this notice is preserved. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +-# PARTICULAR PURPOSE. +- +-@SET_MAKE@ +- +- +-SOURCES = $(stage1_exec_SOURCES) +- +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ +-VPATH = @srcdir@ +-pkgdatadir = $(datadir)/@PACKAGE@ +-pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = .. +-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ +-install_sh_DATA = $(install_sh) -c -m 644 +-install_sh_PROGRAM = $(install_sh) -c +-install_sh_SCRIPT = $(install_sh) -c +-INSTALL_HEADER = $(INSTALL_DATA) +-transform = $(program_transform_name) +-NORMAL_INSTALL = : +-PRE_INSTALL = : +-POST_INSTALL = : +-NORMAL_UNINSTALL = : +-PRE_UNINSTALL = : +-POST_UNINSTALL = : +-build_triplet = @build@ +-host_triplet = @host@ +-noinst_PROGRAMS = stage1.exec$(EXEEXT) +-subdir = stage1 +-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ +- $(top_srcdir)/configure.ac +-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ +- $(ACLOCAL_M4) +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/config.h +-CONFIG_CLEAN_FILES = +-PROGRAMS = $(noinst_PROGRAMS) +-am_stage1_exec_OBJECTS = stage1.$(OBJEXT) +-stage1_exec_OBJECTS = $(am_stage1_exec_OBJECTS) +-stage1_exec_LDADD = $(LDADD) +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-CCASCOMPILE = $(CCAS) $(AM_CCASFLAGS) $(CCASFLAGS) +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-SOURCES = $(stage1_exec_SOURCES) +-DIST_SOURCES = $(stage1_exec_SOURCES) +-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +-am__vpath_adj = case $$p in \ +- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ +- *) f=$$p;; \ +- esac; +-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +-am__installdirs = "$(DESTDIR)$(pkglibdir)" +-nodist_pkglibDATA_INSTALL = $(INSTALL_DATA) +-DATA = $(nodist_pkglib_DATA) +-ETAGS = etags +-CTAGS = ctags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +-pkglibdir = $(libdir)/$(PACKAGE)/$(host_cpu)-$(host_vendor) +-ACLOCAL = @ACLOCAL@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ +-AMTAR = @AMTAR@ +-AUTOCONF = @AUTOCONF@ +-AUTOHEADER = @AUTOHEADER@ +-AUTOMAKE = @AUTOMAKE@ +-AWK = @AWK@ +-BUILD_EXAMPLE_KERNEL_FALSE = @BUILD_EXAMPLE_KERNEL_FALSE@ +-BUILD_EXAMPLE_KERNEL_TRUE = @BUILD_EXAMPLE_KERNEL_TRUE@ +-CC = @CC@ +-CCAS = @CCAS@ +-CCASFLAGS = @CCASFLAGS@ +-CCDEPMODE = @CCDEPMODE@ +-CFLAGS = @CFLAGS@ +-CPP = @CPP@ +-CPPFLAGS = @CPPFLAGS@ +-CYGPATH_W = @CYGPATH_W@ +-DEFS = @DEFS@ +-DEPDIR = @DEPDIR@ +-DISKLESS_SUPPORT_FALSE = @DISKLESS_SUPPORT_FALSE@ +-DISKLESS_SUPPORT_TRUE = @DISKLESS_SUPPORT_TRUE@ +-ECHO_C = @ECHO_C@ +-ECHO_N = @ECHO_N@ +-ECHO_T = @ECHO_T@ +-EGREP = @EGREP@ +-EXEEXT = @EXEEXT@ +-FSYS_CFLAGS = @FSYS_CFLAGS@ +-GRUB_CFLAGS = @GRUB_CFLAGS@ +-GRUB_LIBS = @GRUB_LIBS@ +-HERCULES_SUPPORT_FALSE = @HERCULES_SUPPORT_FALSE@ +-HERCULES_SUPPORT_TRUE = @HERCULES_SUPPORT_TRUE@ +-INSTALL_DATA = @INSTALL_DATA@ +-INSTALL_PROGRAM = @INSTALL_PROGRAM@ +-INSTALL_SCRIPT = @INSTALL_SCRIPT@ +-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +-LDFLAGS = -nostdlib -Wl,-N,-Ttext,7C00 +-LIBOBJS = @LIBOBJS@ +-LIBS = @LIBS@ +-LTLIBOBJS = @LTLIBOBJS@ +-MAINT = @MAINT@ +-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +-MAKEINFO = @MAKEINFO@ +-NETBOOT_DRIVERS = @NETBOOT_DRIVERS@ +-NETBOOT_SUPPORT_FALSE = @NETBOOT_SUPPORT_FALSE@ +-NETBOOT_SUPPORT_TRUE = @NETBOOT_SUPPORT_TRUE@ +-NET_CFLAGS = @NET_CFLAGS@ +-NET_EXTRAFLAGS = @NET_EXTRAFLAGS@ +-OBJCOPY = @OBJCOPY@ +-OBJEXT = @OBJEXT@ +-PACKAGE = @PACKAGE@ +-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +-PACKAGE_NAME = @PACKAGE_NAME@ +-PACKAGE_STRING = @PACKAGE_STRING@ +-PACKAGE_TARNAME = @PACKAGE_TARNAME@ +-PACKAGE_VERSION = @PACKAGE_VERSION@ +-PATH_SEPARATOR = @PATH_SEPARATOR@ +-PERL = @PERL@ +-RANLIB = @RANLIB@ +-SERIAL_SPEED_SIMULATION_FALSE = @SERIAL_SPEED_SIMULATION_FALSE@ +-SERIAL_SPEED_SIMULATION_TRUE = @SERIAL_SPEED_SIMULATION_TRUE@ +-SERIAL_SUPPORT_FALSE = @SERIAL_SUPPORT_FALSE@ +-SERIAL_SUPPORT_TRUE = @SERIAL_SUPPORT_TRUE@ +-SET_MAKE = @SET_MAKE@ +-SHELL = @SHELL@ +-STAGE1_CFLAGS = @STAGE1_CFLAGS@ +-STAGE2_CFLAGS = @STAGE2_CFLAGS@ +-STRIP = @STRIP@ +-VERSION = @VERSION@ +-ac_ct_CC = @ac_ct_CC@ +-ac_ct_OBJCOPY = @ac_ct_OBJCOPY@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__include = @am__include@ +-am__leading_dot = @am__leading_dot@ +-am__quote = @am__quote@ +-am__tar = @am__tar@ +-am__untar = @am__untar@ +-bindir = @bindir@ +-build = @build@ +-build_alias = @build_alias@ +-build_cpu = @build_cpu@ +-build_os = @build_os@ +-build_vendor = @build_vendor@ +-datadir = @datadir@ +-exec_prefix = @exec_prefix@ +-host = @host@ +-host_alias = @host_alias@ +-host_cpu = @host_cpu@ +-host_os = @host_os@ +-host_vendor = @host_vendor@ +-includedir = @includedir@ +-infodir = @infodir@ +-install_sh = @install_sh@ +-libdir = @libdir@ +-libexecdir = @libexecdir@ +-localstatedir = @localstatedir@ +-mandir = @mandir@ +-mkdir_p = @mkdir_p@ +-oldincludedir = @oldincludedir@ +-prefix = @prefix@ +-program_transform_name = @program_transform_name@ +-sbindir = @sbindir@ +-sharedstatedir = @sharedstatedir@ +-sysconfdir = @sysconfdir@ +-target_alias = @target_alias@ +-nodist_pkglib_DATA = stage1 +-CLEANFILES = $(nodist_pkglib_DATA) +- +-# We can't use builtins or standard includes. +-AM_CCASFLAGS = $(STAGE1_CFLAGS) -fno-builtin -nostdinc +-stage1_exec_SOURCES = stage1.S stage1.h +-SUFFIXES = .exec +-all: all-am +- +-.SUFFIXES: +-.SUFFIXES: .exec .S .o .obj +-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) +- @for dep in $?; do \ +- case '$(am__configure_deps)' in \ +- *$$dep*) \ +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +- && exit 0; \ +- exit 1;; \ +- esac; \ +- done; \ +- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu stage1/Makefile'; \ +- cd $(top_srcdir) && \ +- $(AUTOMAKE) --gnu stage1/Makefile +-.PRECIOUS: Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- @case '$?' in \ +- *config.status*) \ +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ +- *) \ +- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ +- esac; +- +-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +- +-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +- +-clean-noinstPROGRAMS: +- -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) +-stage1.exec$(EXEEXT): $(stage1_exec_OBJECTS) $(stage1_exec_DEPENDENCIES) +- @rm -f stage1.exec$(EXEEXT) +- $(LINK) $(stage1_exec_LDFLAGS) $(stage1_exec_OBJECTS) $(stage1_exec_LDADD) $(LIBS) +- +-mostlyclean-compile: +- -rm -f *.$(OBJEXT) +- +-distclean-compile: +- -rm -f *.tab.c +- +-.S.o: +- $(CCASCOMPILE) -c $< +- +-.S.obj: +- $(CCASCOMPILE) -c `$(CYGPATH_W) '$<'` +-uninstall-info-am: +-install-nodist_pkglibDATA: $(nodist_pkglib_DATA) +- @$(NORMAL_INSTALL) +- test -z "$(pkglibdir)" || $(mkdir_p) "$(DESTDIR)$(pkglibdir)" +- @list='$(nodist_pkglib_DATA)'; for p in $$list; do \ +- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ +- f=$(am__strip_dir) \ +- echo " $(nodist_pkglibDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkglibdir)/$$f'"; \ +- $(nodist_pkglibDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkglibdir)/$$f"; \ +- done +- +-uninstall-nodist_pkglibDATA: +- @$(NORMAL_UNINSTALL) +- @list='$(nodist_pkglib_DATA)'; for p in $$list; do \ +- f=$(am__strip_dir) \ +- echo " rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ +- rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ +- done +- +-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- mkid -fID $$unique +-tags: TAGS +- +-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ +- $(TAGS_FILES) $(LISP) +- tags=; \ +- here=`pwd`; \ +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ +- test -n "$$unique" || unique=$$empty_fix; \ +- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique; \ +- fi +-ctags: CTAGS +-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ +- $(TAGS_FILES) $(LISP) +- tags=; \ +- here=`pwd`; \ +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- test -z "$(CTAGS_ARGS)$$tags$$unique" \ +- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ +- $$tags $$unique +- +-GTAGS: +- here=`$(am__cd) $(top_builddir) && pwd` \ +- && cd $(top_srcdir) \ +- && gtags -i $(GTAGS_ARGS) $$here +- +-distclean-tags: +- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +- +-distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ +- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkdir_p) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ +- if test -d $$d/$$file; then \ +- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ +- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ +- fi; \ +- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ +- else \ +- test -f $(distdir)/$$file \ +- || cp -p $$d/$$file $(distdir)/$$file \ +- || exit 1; \ +- fi; \ +- done +-check-am: all-am +-check: check-am +-all-am: Makefile $(PROGRAMS) $(DATA) +-installdirs: +- for dir in "$(DESTDIR)$(pkglibdir)"; do \ +- test -z "$$dir" || $(mkdir_p) "$$dir"; \ +- done +-install: install-am +-install-exec: install-exec-am +-install-data: install-data-am +-uninstall: uninstall-am +- +-install-am: all-am +- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +- +-installcheck: installcheck-am +-install-strip: +- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ +- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ +- `test -z '$(STRIP)' || \ +- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +-mostlyclean-generic: +- +-clean-generic: +- -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) +- +-distclean-generic: +- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) +- +-maintainer-clean-generic: +- @echo "This command is intended for maintainers to use" +- @echo "it deletes files that may require special tools to rebuild." +-clean: clean-am +- +-clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am +- +-distclean: distclean-am +- -rm -f Makefile +-distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-tags +- +-dvi: dvi-am +- +-dvi-am: +- +-html: html-am +- +-info: info-am +- +-info-am: +- +-install-data-am: +- +-install-exec-am: install-nodist_pkglibDATA +- +-install-info: install-info-am +- +-install-man: +- +-installcheck-am: +- +-maintainer-clean: maintainer-clean-am +- -rm -f Makefile +-maintainer-clean-am: distclean-am maintainer-clean-generic +- +-mostlyclean: mostlyclean-am +- +-mostlyclean-am: mostlyclean-compile mostlyclean-generic +- +-pdf: pdf-am +- +-pdf-am: +- +-ps: ps-am +- +-ps-am: +- +-uninstall-am: uninstall-info-am uninstall-nodist_pkglibDATA +- +-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ +- clean-noinstPROGRAMS ctags distclean distclean-compile \ +- distclean-generic distclean-tags distdir dvi dvi-am html \ +- html-am info info-am install install-am install-data \ +- install-data-am install-exec install-exec-am install-info \ +- install-info-am install-man install-nodist_pkglibDATA \ +- install-strip installcheck installcheck-am installdirs \ +- maintainer-clean maintainer-clean-generic mostlyclean \ +- mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ +- tags uninstall uninstall-am uninstall-info-am \ +- uninstall-nodist_pkglibDATA +- +-.exec: +- $(OBJCOPY) -O binary $< $@ +-# Tell versions [3.59,3.63) of GNU make to not export all variables. +-# Otherwise a system limit (for SysV at least) may be exceeded. +-.NOEXPORT: +diff --git a/stage1/stage1.S b/stage1/stage1.S +index 985963d..3a896be 100644 +--- a/stage1/stage1.S ++++ b/stage1/stage1.S +@@ -31,6 +31,8 @@ + + /* Print message string */ + #define MSG(x) movw $ABS(x), %si; call message ++ /* Print verbose message string */ ++#define VMSG(x) + + /* XXX: binutils-2.9.1.0.x doesn't produce a short opcode for this. */ + #define MOV_MEM_TO_AL(x) .byte 0xa0; .word x +@@ -151,7 +153,7 @@ real_start: + pushw %dx + + /* print a notification message on the screen */ +- MSG(notification_string) ++ VMSG(notification_string) + + /* do not probe LBA if the drive is a floppy */ + testb $STAGE1_BIOS_HD_FLAG, %dl +diff --git a/stage2/.gitignore b/stage2/.gitignore +new file mode 100644 +index 0000000..e0480a0 +--- /dev/null ++++ b/stage2/.gitignore +@@ -0,0 +1,5 @@ ++Makefile.in ++Makefile ++.deps ++*.a ++*.o +diff --git a/stage2/Makefile.am b/stage2/Makefile.am +index f8e6d42..04ff165 100644 +--- a/stage2/Makefile.am ++++ b/stage2/Makefile.am +@@ -7,19 +7,23 @@ noinst_HEADERS = apic.h defs.h dir.h disk_inode.h disk_inode_ffs.h \ + fat.h filesys.h freebsd.h fs.h hercules.h i386-elf.h \ + imgact_aout.h iso9660.h jfs.h mb_header.h mb_info.h md5.h \ + nbi.h pc_slice.h serial.h shared.h smp-imps.h term.h \ +- terminfo.h tparm.h nbi.h ufs2.h vstafs.h xfs.h ++ terminfo.h tparm.h nbi.h ufs2.h vstafs.h xfs.h graphics.h gpt.h + EXTRA_DIST = setjmp.S apm.S $(noinst_SCRIPTS) + + # For <stage1.h>. +-INCLUDES = -I$(top_srcdir)/stage1 ++INCLUDES = -I$(top_srcdir)/stage1 -I$(top_srcdir)/efi + + # The library for /sbin/grub. ++if PLATFORM_EFI ++noinst_LIBRARIES = libgrub.a libstage2.a ++else + noinst_LIBRARIES = libgrub.a ++endif + libgrub_a_SOURCES = boot.c builtins.c char_io.c cmdline.c common.c \ + disk_io.c fsys_ext2fs.c fsys_fat.c fsys_ffs.c fsys_iso9660.c \ +- fsys_jfs.c fsys_minix.c fsys_reiserfs.c fsys_ufs2.c \ +- fsys_vstafs.c fsys_xfs.c gunzip.c md5.c serial.c stage2.c \ +- terminfo.c tparm.c ++ fsys_jfs.c fsys_minix.c fsys_reiserfs.c fsys_uefi.c fsys_ufs2.c \ ++ fsys_vstafs.c fsys_xfs.c gunzip.c md5.c serial.c sha256crypt.c \ ++ sha512crypt.c stage2.c terminfo.c tparm.c graphics.c efistubs.c + libgrub_a_CFLAGS = $(GRUB_CFLAGS) -I$(top_srcdir)/lib \ + -DGRUB_UTIL=1 -DFSYS_EXT2FS=1 -DFSYS_FAT=1 -DFSYS_FFS=1 \ + -DFSYS_ISO9660=1 -DFSYS_JFS=1 -DFSYS_MINIX=1 -DFSYS_REISERFS=1 \ +@@ -27,12 +31,14 @@ libgrub_a_CFLAGS = $(GRUB_CFLAGS) -I$(top_srcdir)/lib \ + -DUSE_MD5_PASSWORDS=1 -DSUPPORT_SERIAL=1 -DSUPPORT_HERCULES=1 + + # Stage 2 and Stage 1.5's. +-pkglibdir = $(libdir)/$(PACKAGE)/$(host_cpu)-$(host_vendor) ++pkgdatadir = $(datadir)/$(PACKAGE)/$(host_cpu)-$(host_vendor) ++ ++if !PLATFORM_EFI + + EXTRA_PROGRAMS = nbloader.exec pxeloader.exec diskless.exec + + if DISKLESS_SUPPORT +-pkglib_DATA = stage2 stage2_eltorito e2fs_stage1_5 fat_stage1_5 \ ++pkgdata_DATA = stage2 stage2_eltorito e2fs_stage1_5 fat_stage1_5 \ + ffs_stage1_5 iso9660_stage1_5 jfs_stage1_5 minix_stage1_5 \ + reiserfs_stage1_5 ufs2_stage1_5 vstafs_stage1_5 xfs_stage1_5 \ + nbgrub pxegrub +@@ -43,7 +49,7 @@ noinst_PROGRAMS = pre_stage2.exec start.exec start_eltorito.exec \ + reiserfs_stage1_5.exec ufs2_stage1_5.exec vstafs_stage1_5.exec \ + xfs_stage1_5.exec nbloader.exec pxeloader.exec diskless.exec + else +-pkglib_DATA = stage2 stage2_eltorito e2fs_stage1_5 fat_stage1_5 \ ++pkgdata_DATA = stage2 stage2_eltorito e2fs_stage1_5 fat_stage1_5 \ + ffs_stage1_5 iso9660_stage1_5 jfs_stage1_5 minix_stage1_5 \ + reiserfs_stage1_5 ufs2_stage1_5 vstafs_stage1_5 xfs_stage1_5 + noinst_DATA = pre_stage2 start start_eltorito +@@ -55,11 +61,13 @@ noinst_PROGRAMS = pre_stage2.exec start.exec start_eltorito.exec \ + endif + MOSTLYCLEANFILES = $(noinst_PROGRAMS) + +-PRE_STAGE2_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,8200 +-START_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,8000 +-NBLOADER_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,0 +-PXELOADER_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,7C00 +-START_ELTORITO_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,7C00 ++endif ++ ++PRE_STAGE2_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,8200 $(LOADER_LDFLAGS) ++START_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,8000 $(LOADER_LDFLAGS) ++NBLOADER_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,0 $(LOADER_LDFLAGS) ++PXELOADER_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,7C00 $(LOADER_LDFLAGS) ++START_ELTORITO_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,7C00 $(LOADER_LDFLAGS) + + if NETBOOT_SUPPORT + NETBOOT_FLAGS = -I$(top_srcdir)/netboot -DSUPPORT_NETBOOT=1 +@@ -79,10 +87,25 @@ else + HERCULES_FLAGS = + endif + ++if GRAPHICS_SUPPORT ++GRAPHICS_FLAGS = -DSUPPORT_GRAPHICS=1 ++else ++GRAPHICS_FLAGS = ++endif ++ + STAGE2_COMPILE = $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NETBOOT_FLAGS) $(SERIAL_FLAGS) $(HERCULES_FLAGS) ++ $(NETBOOT_FLAGS) $(SERIAL_FLAGS) $(HERCULES_FLAGS) $(GRAPHICS_FLAGS) ++ ++libstage2_a_SOURCES = boot.c builtins.c char_io.c cmdline.c common.c \ ++ disk_io.c fsys_ext2fs.c fsys_fat.c fsys_ffs.c fsys_iso9660.c \ ++ fsys_jfs.c fsys_minix.c fsys_reiserfs.c fsys_uefi.c fsys_ufs2.c \ ++ fsys_vstafs.c fsys_xfs.c gunzip.c md5.c serial.c sha256crypt.c \ ++ sha512crypt.c stage2.c terminfo.c tparm.c efistubs.c ++libstage2_a_CFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS) + +-STAGE1_5_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,2000 ++if !PLATFORM_EFI ++ ++STAGE1_5_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,2000 $(LOADER_LDFLAGS) + STAGE1_5_COMPILE = $(STAGE2_COMPILE) -DNO_DECOMPRESSION=1 -DSTAGE1_5=1 + + # For stage2 target. +@@ -90,13 +113,15 @@ pre_stage2_exec_SOURCES = asm.S bios.c boot.c builtins.c char_io.c \ + cmdline.c common.c console.c disk_io.c fsys_ext2fs.c \ + fsys_fat.c fsys_ffs.c fsys_iso9660.c fsys_jfs.c fsys_minix.c \ + fsys_reiserfs.c fsys_ufs2.c fsys_vstafs.c fsys_xfs.c gunzip.c \ +- hercules.c md5.c serial.c smp-imps.c stage2.c terminfo.c tparm.c ++ hercules.c md5.c serial.c smp-imps.c sha256crypt.c sha512crypt.c \ ++ stage2.c terminfo.c tparm.c graphics.c + pre_stage2_exec_CFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS) + pre_stage2_exec_CCASFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS) + pre_stage2_exec_LDFLAGS = $(PRE_STAGE2_LINK) + ++pre_stage2_exec_LDADD = @LIBGCC@ + if NETBOOT_SUPPORT +-pre_stage2_exec_LDADD = ../netboot/libdrivers.a ++pre_stage2_exec_LDADD += ../netboot/libdrivers.a + endif + + if DISKLESS_SUPPORT +@@ -105,7 +130,7 @@ else + BUILT_SOURCES = stage2_size.h + endif + +-CLEANFILES = $(pkglib_DATA) $(noinst_DATA) $(BUILT_SOURCES) ++CLEANFILES = $(pkgdata_DATA) $(noinst_DATA) $(BUILT_SOURCES) + + stage2_size.h: pre_stage2 + -rm -f stage2_size.h +@@ -115,6 +140,7 @@ stage2_size.h: pre_stage2 + start_exec_SOURCES = start.S + start_exec_CCASFLAGS = $(STAGE2_COMPILE) + start_exec_LDFLAGS = $(START_LINK) ++start_exec_LDADD = @LIBGCC@ + + # XXX: automake doesn't provide a way to specify dependencies for object + # files explicitly, so we must write this by a general Makefile scheme. +@@ -129,6 +155,7 @@ stage2: pre_stage2 start + start_eltorito_exec_SOURCES = start_eltorito.S + start_eltorito_exec_CCASFLAGS = $(STAGE2_COMPILE) + start_eltorito_exec_LDFLAGS = $(START_ELTORITO_LINK) ++start_eltorito_exec_LDADD = @LIBGCC@ + + start_eltorito_exec-start.$(OBJEXT): stage2_size.h + +@@ -144,6 +171,7 @@ e2fs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_EXT2FS=1 \ + e2fs_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_EXT2FS=1 \ + -DNO_BLOCK_FILES=1 + e2fs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) ++e2fs_stage1_5_exec_LDADD = @LIBGCC@ + + # For fat_stage1_5 target. + fat_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c disk_io.c \ +@@ -153,6 +181,7 @@ fat_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_FAT=1 \ + fat_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_FAT=1 \ + -DNO_BLOCK_FILES=1 + fat_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) ++fat_stage1_5_exec_LDADD = @LIBGCC@ + + # For ffs_stage1_5 target. + ffs_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c disk_io.c \ +@@ -162,6 +191,7 @@ ffs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_FFS=1 \ + ffs_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_FFS=1 \ + -DNO_BLOCK_FILES=1 + ffs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) ++ffs_stage1_5_exec_LDADD = @LIBGCC@ + + # For ufs2_stage1_5 target. + ufs2_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c disk_io.c \ +@@ -171,6 +201,7 @@ ufs2_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_UFS2=1 \ + ufs2_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_UFS2=1 \ + -DNO_BLOCK_FILES=1 + ufs2_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) ++ufs2_stage1_5_exec_LDADD = @LIBGCC@ + + # For minix_stage1_5 target. + minix_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c disk_io.c \ +@@ -180,6 +211,7 @@ minix_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_MINIX=1 \ + minix_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_MINIX=1 \ + -DNO_BLOCK_FILES=1 + minix_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) ++minix_stage1_5_exec_LDADD = @LIBGCC@ + + # For reiserfs_stage1_5 target. + reiserfs_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c \ +@@ -189,6 +221,7 @@ reiserfs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_REISERFS=1 \ + reiserfs_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_REISERFS=1 \ + -DNO_BLOCK_FILES=1 + reiserfs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) ++reiserfs_stage1_5_exec_LDADD = @LIBGCC@ + + # For vstafs_stage1_5 target. + vstafs_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c \ +@@ -198,6 +231,7 @@ vstafs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_VSTAFS=1 \ + vstafs_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_VSTAFS=1 \ + -DNO_BLOCK_FILES=1 + vstafs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) ++vstafs_stage1_5_exec_LDADD = @LIBGCC@ + + # For jfs_stage1_5 target. + jfs_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c \ +@@ -207,6 +241,7 @@ jfs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_JFS=1 \ + jfs_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_JFS=1 \ + -DNO_BLOCK_FILES=1 + jfs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) ++jfs_stage1_5_exec_LDADD = @LIBGCC@ + + # For xfs_stage1_5 target. + xfs_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c \ +@@ -216,6 +251,7 @@ xfs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_XFS=1 \ + xfs_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_XFS=1 \ + -DNO_BLOCK_FILES=1 + xfs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) ++xfs_stage1_5_exec_LDADD = @LIBGCC@ + + # For iso9660_stage1_5 target. + iso9660_stage1_5_exec_SOURCES = start_eltorito.S asm.S common.c char_io.c \ +@@ -225,6 +261,7 @@ iso9660_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_ISO9660=1 \ + iso9660_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_ISO9660=1 \ + -DNO_BLOCK_FILES=1 + iso9660_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) ++iso9660_stage1_5_exec_LDADD = @LIBGCC@ + + # For diskless target. + diskless_exec_SOURCES = $(pre_stage2_exec_SOURCES) +@@ -233,7 +270,7 @@ diskless_exec_CFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS) \ + diskless_exec_CCASFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS) \ + -DSUPPORT_DISKLESS=1 + diskless_exec_LDFLAGS = $(PRE_STAGE2_LINK) +-diskless_exec_LDADD = ../netboot/libdrivers.a ++diskless_exec_LDADD = ../netboot/libdrivers.a @LIBGCC@ + + diskless_size.h: diskless + -rm -f $@ +@@ -270,3 +307,5 @@ pxegrub: pxeloader diskless + SUFFIXES = .exec + .exec: + $(OBJCOPY) -O binary $< $@ ++ ++endif +diff --git a/stage2/Makefile.in b/stage2/Makefile.in +deleted file mode 100644 +index d0062bd..0000000 +--- a/stage2/Makefile.in ++++ /dev/null +@@ -1,3250 +0,0 @@ +-# Makefile.in generated by automake 1.9.4 from Makefile.am. +-# @configure_input@ +- +-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +-# 2003, 2004 Free Software Foundation, Inc. +-# This Makefile.in is free software; the Free Software Foundation +-# gives unlimited permission to copy and/or distribute it, +-# with or without modifications, as long as this notice is preserved. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +-# PARTICULAR PURPOSE. +- +-@SET_MAKE@ +- +- +- +- +- +-SOURCES = $(libgrub_a_SOURCES) $(diskless_exec_SOURCES) $(e2fs_stage1_5_exec_SOURCES) $(fat_stage1_5_exec_SOURCES) $(ffs_stage1_5_exec_SOURCES) $(iso9660_stage1_5_exec_SOURCES) $(jfs_stage1_5_exec_SOURCES) $(minix_stage1_5_exec_SOURCES) $(nbloader_exec_SOURCES) $(pre_stage2_exec_SOURCES) $(pxeloader_exec_SOURCES) $(reiserfs_stage1_5_exec_SOURCES) $(start_exec_SOURCES) $(start_eltorito_exec_SOURCES) $(ufs2_stage1_5_exec_SOURCES) $(vstafs_stage1_5_exec_SOURCES) $(xfs_stage1_5_exec_SOURCES) +- +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ +-VPATH = @srcdir@ +-pkgdatadir = $(datadir)/@PACKAGE@ +-pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = .. +-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ +-install_sh_DATA = $(install_sh) -c -m 644 +-install_sh_PROGRAM = $(install_sh) -c +-install_sh_SCRIPT = $(install_sh) -c +-INSTALL_HEADER = $(INSTALL_DATA) +-transform = $(program_transform_name) +-NORMAL_INSTALL = : +-PRE_INSTALL = : +-POST_INSTALL = : +-NORMAL_UNINSTALL = : +-PRE_UNINSTALL = : +-POST_UNINSTALL = : +-build_triplet = @build@ +-host_triplet = @host@ +-EXTRA_PROGRAMS = nbloader.exec$(EXEEXT) pxeloader.exec$(EXEEXT) \ +- diskless.exec$(EXEEXT) +-@DISKLESS_SUPPORT_FALSE@noinst_PROGRAMS = pre_stage2.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_FALSE@ start.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_FALSE@ start_eltorito.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_FALSE@ e2fs_stage1_5.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_FALSE@ fat_stage1_5.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_FALSE@ ffs_stage1_5.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_FALSE@ iso9660_stage1_5.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_FALSE@ jfs_stage1_5.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_FALSE@ minix_stage1_5.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_FALSE@ reiserfs_stage1_5.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_FALSE@ ufs2_stage1_5.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_FALSE@ vstafs_stage1_5.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_FALSE@ xfs_stage1_5.exec$(EXEEXT) +-@DISKLESS_SUPPORT_TRUE@noinst_PROGRAMS = pre_stage2.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_TRUE@ start.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_TRUE@ start_eltorito.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_TRUE@ e2fs_stage1_5.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_TRUE@ fat_stage1_5.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_TRUE@ ffs_stage1_5.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_TRUE@ iso9660_stage1_5.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_TRUE@ jfs_stage1_5.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_TRUE@ minix_stage1_5.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_TRUE@ reiserfs_stage1_5.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_TRUE@ ufs2_stage1_5.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_TRUE@ vstafs_stage1_5.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_TRUE@ xfs_stage1_5.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_TRUE@ nbloader.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_TRUE@ pxeloader.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_TRUE@ diskless.exec$(EXEEXT) +-subdir = stage2 +-DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ +- $(srcdir)/Makefile.in +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ +- $(top_srcdir)/configure.ac +-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ +- $(ACLOCAL_M4) +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/config.h +-CONFIG_CLEAN_FILES = +-LIBRARIES = $(noinst_LIBRARIES) +-AR = ar +-ARFLAGS = cru +-libgrub_a_AR = $(AR) $(ARFLAGS) +-libgrub_a_LIBADD = +-am_libgrub_a_OBJECTS = libgrub_a-boot.$(OBJEXT) \ +- libgrub_a-builtins.$(OBJEXT) libgrub_a-char_io.$(OBJEXT) \ +- libgrub_a-cmdline.$(OBJEXT) libgrub_a-common.$(OBJEXT) \ +- libgrub_a-disk_io.$(OBJEXT) libgrub_a-fsys_ext2fs.$(OBJEXT) \ +- libgrub_a-fsys_fat.$(OBJEXT) libgrub_a-fsys_ffs.$(OBJEXT) \ +- libgrub_a-fsys_iso9660.$(OBJEXT) libgrub_a-fsys_jfs.$(OBJEXT) \ +- libgrub_a-fsys_minix.$(OBJEXT) \ +- libgrub_a-fsys_reiserfs.$(OBJEXT) \ +- libgrub_a-fsys_ufs2.$(OBJEXT) libgrub_a-fsys_vstafs.$(OBJEXT) \ +- libgrub_a-fsys_xfs.$(OBJEXT) libgrub_a-gunzip.$(OBJEXT) \ +- libgrub_a-md5.$(OBJEXT) libgrub_a-serial.$(OBJEXT) \ +- libgrub_a-stage2.$(OBJEXT) libgrub_a-terminfo.$(OBJEXT) \ +- libgrub_a-tparm.$(OBJEXT) +-libgrub_a_OBJECTS = $(am_libgrub_a_OBJECTS) +-PROGRAMS = $(noinst_PROGRAMS) +-am__objects_1 = diskless_exec-asm.$(OBJEXT) \ +- diskless_exec-bios.$(OBJEXT) diskless_exec-boot.$(OBJEXT) \ +- diskless_exec-builtins.$(OBJEXT) \ +- diskless_exec-char_io.$(OBJEXT) \ +- diskless_exec-cmdline.$(OBJEXT) diskless_exec-common.$(OBJEXT) \ +- diskless_exec-console.$(OBJEXT) \ +- diskless_exec-disk_io.$(OBJEXT) \ +- diskless_exec-fsys_ext2fs.$(OBJEXT) \ +- diskless_exec-fsys_fat.$(OBJEXT) \ +- diskless_exec-fsys_ffs.$(OBJEXT) \ +- diskless_exec-fsys_iso9660.$(OBJEXT) \ +- diskless_exec-fsys_jfs.$(OBJEXT) \ +- diskless_exec-fsys_minix.$(OBJEXT) \ +- diskless_exec-fsys_reiserfs.$(OBJEXT) \ +- diskless_exec-fsys_ufs2.$(OBJEXT) \ +- diskless_exec-fsys_vstafs.$(OBJEXT) \ +- diskless_exec-fsys_xfs.$(OBJEXT) \ +- diskless_exec-gunzip.$(OBJEXT) \ +- diskless_exec-hercules.$(OBJEXT) diskless_exec-md5.$(OBJEXT) \ +- diskless_exec-serial.$(OBJEXT) \ +- diskless_exec-smp-imps.$(OBJEXT) \ +- diskless_exec-stage2.$(OBJEXT) \ +- diskless_exec-terminfo.$(OBJEXT) diskless_exec-tparm.$(OBJEXT) +-am_diskless_exec_OBJECTS = $(am__objects_1) +-diskless_exec_OBJECTS = $(am_diskless_exec_OBJECTS) +-diskless_exec_DEPENDENCIES = ../netboot/libdrivers.a +-am_e2fs_stage1_5_exec_OBJECTS = e2fs_stage1_5_exec-start.$(OBJEXT) \ +- e2fs_stage1_5_exec-asm.$(OBJEXT) \ +- e2fs_stage1_5_exec-common.$(OBJEXT) \ +- e2fs_stage1_5_exec-char_io.$(OBJEXT) \ +- e2fs_stage1_5_exec-disk_io.$(OBJEXT) \ +- e2fs_stage1_5_exec-stage1_5.$(OBJEXT) \ +- e2fs_stage1_5_exec-fsys_ext2fs.$(OBJEXT) \ +- e2fs_stage1_5_exec-bios.$(OBJEXT) +-e2fs_stage1_5_exec_OBJECTS = $(am_e2fs_stage1_5_exec_OBJECTS) +-e2fs_stage1_5_exec_LDADD = $(LDADD) +-am_fat_stage1_5_exec_OBJECTS = fat_stage1_5_exec-start.$(OBJEXT) \ +- fat_stage1_5_exec-asm.$(OBJEXT) \ +- fat_stage1_5_exec-common.$(OBJEXT) \ +- fat_stage1_5_exec-char_io.$(OBJEXT) \ +- fat_stage1_5_exec-disk_io.$(OBJEXT) \ +- fat_stage1_5_exec-stage1_5.$(OBJEXT) \ +- fat_stage1_5_exec-fsys_fat.$(OBJEXT) \ +- fat_stage1_5_exec-bios.$(OBJEXT) +-fat_stage1_5_exec_OBJECTS = $(am_fat_stage1_5_exec_OBJECTS) +-fat_stage1_5_exec_LDADD = $(LDADD) +-am_ffs_stage1_5_exec_OBJECTS = ffs_stage1_5_exec-start.$(OBJEXT) \ +- ffs_stage1_5_exec-asm.$(OBJEXT) \ +- ffs_stage1_5_exec-common.$(OBJEXT) \ +- ffs_stage1_5_exec-char_io.$(OBJEXT) \ +- ffs_stage1_5_exec-disk_io.$(OBJEXT) \ +- ffs_stage1_5_exec-stage1_5.$(OBJEXT) \ +- ffs_stage1_5_exec-fsys_ffs.$(OBJEXT) \ +- ffs_stage1_5_exec-bios.$(OBJEXT) +-ffs_stage1_5_exec_OBJECTS = $(am_ffs_stage1_5_exec_OBJECTS) +-ffs_stage1_5_exec_LDADD = $(LDADD) +-am_iso9660_stage1_5_exec_OBJECTS = \ +- iso9660_stage1_5_exec-start_eltorito.$(OBJEXT) \ +- iso9660_stage1_5_exec-asm.$(OBJEXT) \ +- iso9660_stage1_5_exec-common.$(OBJEXT) \ +- iso9660_stage1_5_exec-char_io.$(OBJEXT) \ +- iso9660_stage1_5_exec-disk_io.$(OBJEXT) \ +- iso9660_stage1_5_exec-stage1_5.$(OBJEXT) \ +- iso9660_stage1_5_exec-fsys_iso9660.$(OBJEXT) \ +- iso9660_stage1_5_exec-bios.$(OBJEXT) +-iso9660_stage1_5_exec_OBJECTS = $(am_iso9660_stage1_5_exec_OBJECTS) +-iso9660_stage1_5_exec_LDADD = $(LDADD) +-am_jfs_stage1_5_exec_OBJECTS = jfs_stage1_5_exec-start.$(OBJEXT) \ +- jfs_stage1_5_exec-asm.$(OBJEXT) \ +- jfs_stage1_5_exec-common.$(OBJEXT) \ +- jfs_stage1_5_exec-char_io.$(OBJEXT) \ +- jfs_stage1_5_exec-disk_io.$(OBJEXT) \ +- jfs_stage1_5_exec-stage1_5.$(OBJEXT) \ +- jfs_stage1_5_exec-fsys_jfs.$(OBJEXT) \ +- jfs_stage1_5_exec-bios.$(OBJEXT) +-jfs_stage1_5_exec_OBJECTS = $(am_jfs_stage1_5_exec_OBJECTS) +-jfs_stage1_5_exec_LDADD = $(LDADD) +-am_minix_stage1_5_exec_OBJECTS = minix_stage1_5_exec-start.$(OBJEXT) \ +- minix_stage1_5_exec-asm.$(OBJEXT) \ +- minix_stage1_5_exec-common.$(OBJEXT) \ +- minix_stage1_5_exec-char_io.$(OBJEXT) \ +- minix_stage1_5_exec-disk_io.$(OBJEXT) \ +- minix_stage1_5_exec-stage1_5.$(OBJEXT) \ +- minix_stage1_5_exec-fsys_minix.$(OBJEXT) \ +- minix_stage1_5_exec-bios.$(OBJEXT) +-minix_stage1_5_exec_OBJECTS = $(am_minix_stage1_5_exec_OBJECTS) +-minix_stage1_5_exec_LDADD = $(LDADD) +-am_nbloader_exec_OBJECTS = nbloader_exec-nbloader.$(OBJEXT) +-nbloader_exec_OBJECTS = $(am_nbloader_exec_OBJECTS) +-nbloader_exec_LDADD = $(LDADD) +-am_pre_stage2_exec_OBJECTS = pre_stage2_exec-asm.$(OBJEXT) \ +- pre_stage2_exec-bios.$(OBJEXT) pre_stage2_exec-boot.$(OBJEXT) \ +- pre_stage2_exec-builtins.$(OBJEXT) \ +- pre_stage2_exec-char_io.$(OBJEXT) \ +- pre_stage2_exec-cmdline.$(OBJEXT) \ +- pre_stage2_exec-common.$(OBJEXT) \ +- pre_stage2_exec-console.$(OBJEXT) \ +- pre_stage2_exec-disk_io.$(OBJEXT) \ +- pre_stage2_exec-fsys_ext2fs.$(OBJEXT) \ +- pre_stage2_exec-fsys_fat.$(OBJEXT) \ +- pre_stage2_exec-fsys_ffs.$(OBJEXT) \ +- pre_stage2_exec-fsys_iso9660.$(OBJEXT) \ +- pre_stage2_exec-fsys_jfs.$(OBJEXT) \ +- pre_stage2_exec-fsys_minix.$(OBJEXT) \ +- pre_stage2_exec-fsys_reiserfs.$(OBJEXT) \ +- pre_stage2_exec-fsys_ufs2.$(OBJEXT) \ +- pre_stage2_exec-fsys_vstafs.$(OBJEXT) \ +- pre_stage2_exec-fsys_xfs.$(OBJEXT) \ +- pre_stage2_exec-gunzip.$(OBJEXT) \ +- pre_stage2_exec-hercules.$(OBJEXT) \ +- pre_stage2_exec-md5.$(OBJEXT) pre_stage2_exec-serial.$(OBJEXT) \ +- pre_stage2_exec-smp-imps.$(OBJEXT) \ +- pre_stage2_exec-stage2.$(OBJEXT) \ +- pre_stage2_exec-terminfo.$(OBJEXT) \ +- pre_stage2_exec-tparm.$(OBJEXT) +-pre_stage2_exec_OBJECTS = $(am_pre_stage2_exec_OBJECTS) +-@NETBOOT_SUPPORT_TRUE@pre_stage2_exec_DEPENDENCIES = \ +-@NETBOOT_SUPPORT_TRUE@ ../netboot/libdrivers.a +-am_pxeloader_exec_OBJECTS = pxeloader_exec-pxeloader.$(OBJEXT) +-pxeloader_exec_OBJECTS = $(am_pxeloader_exec_OBJECTS) +-pxeloader_exec_LDADD = $(LDADD) +-am_reiserfs_stage1_5_exec_OBJECTS = \ +- reiserfs_stage1_5_exec-start.$(OBJEXT) \ +- reiserfs_stage1_5_exec-asm.$(OBJEXT) \ +- reiserfs_stage1_5_exec-common.$(OBJEXT) \ +- reiserfs_stage1_5_exec-char_io.$(OBJEXT) \ +- reiserfs_stage1_5_exec-disk_io.$(OBJEXT) \ +- reiserfs_stage1_5_exec-stage1_5.$(OBJEXT) \ +- reiserfs_stage1_5_exec-fsys_reiserfs.$(OBJEXT) \ +- reiserfs_stage1_5_exec-bios.$(OBJEXT) +-reiserfs_stage1_5_exec_OBJECTS = $(am_reiserfs_stage1_5_exec_OBJECTS) +-reiserfs_stage1_5_exec_LDADD = $(LDADD) +-am_start_exec_OBJECTS = start_exec-start.$(OBJEXT) +-start_exec_OBJECTS = $(am_start_exec_OBJECTS) +-start_exec_LDADD = $(LDADD) +-am_start_eltorito_exec_OBJECTS = \ +- start_eltorito_exec-start_eltorito.$(OBJEXT) +-start_eltorito_exec_OBJECTS = $(am_start_eltorito_exec_OBJECTS) +-start_eltorito_exec_LDADD = $(LDADD) +-am_ufs2_stage1_5_exec_OBJECTS = ufs2_stage1_5_exec-start.$(OBJEXT) \ +- ufs2_stage1_5_exec-asm.$(OBJEXT) \ +- ufs2_stage1_5_exec-common.$(OBJEXT) \ +- ufs2_stage1_5_exec-char_io.$(OBJEXT) \ +- ufs2_stage1_5_exec-disk_io.$(OBJEXT) \ +- ufs2_stage1_5_exec-stage1_5.$(OBJEXT) \ +- ufs2_stage1_5_exec-fsys_ufs2.$(OBJEXT) \ +- ufs2_stage1_5_exec-bios.$(OBJEXT) +-ufs2_stage1_5_exec_OBJECTS = $(am_ufs2_stage1_5_exec_OBJECTS) +-ufs2_stage1_5_exec_LDADD = $(LDADD) +-am_vstafs_stage1_5_exec_OBJECTS = \ +- vstafs_stage1_5_exec-start.$(OBJEXT) \ +- vstafs_stage1_5_exec-asm.$(OBJEXT) \ +- vstafs_stage1_5_exec-common.$(OBJEXT) \ +- vstafs_stage1_5_exec-char_io.$(OBJEXT) \ +- vstafs_stage1_5_exec-disk_io.$(OBJEXT) \ +- vstafs_stage1_5_exec-stage1_5.$(OBJEXT) \ +- vstafs_stage1_5_exec-fsys_vstafs.$(OBJEXT) \ +- vstafs_stage1_5_exec-bios.$(OBJEXT) +-vstafs_stage1_5_exec_OBJECTS = $(am_vstafs_stage1_5_exec_OBJECTS) +-vstafs_stage1_5_exec_LDADD = $(LDADD) +-am_xfs_stage1_5_exec_OBJECTS = xfs_stage1_5_exec-start.$(OBJEXT) \ +- xfs_stage1_5_exec-asm.$(OBJEXT) \ +- xfs_stage1_5_exec-common.$(OBJEXT) \ +- xfs_stage1_5_exec-char_io.$(OBJEXT) \ +- xfs_stage1_5_exec-disk_io.$(OBJEXT) \ +- xfs_stage1_5_exec-stage1_5.$(OBJEXT) \ +- xfs_stage1_5_exec-fsys_xfs.$(OBJEXT) \ +- xfs_stage1_5_exec-bios.$(OBJEXT) +-xfs_stage1_5_exec_OBJECTS = $(am_xfs_stage1_5_exec_OBJECTS) +-xfs_stage1_5_exec_LDADD = $(LDADD) +-SCRIPTS = $(noinst_SCRIPTS) +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-am__depfiles_maybe = depfiles +-CCASCOMPILE = $(CCAS) $(AM_CCASFLAGS) $(CCASFLAGS) +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-SOURCES = $(libgrub_a_SOURCES) $(diskless_exec_SOURCES) \ +- $(e2fs_stage1_5_exec_SOURCES) $(fat_stage1_5_exec_SOURCES) \ +- $(ffs_stage1_5_exec_SOURCES) $(iso9660_stage1_5_exec_SOURCES) \ +- $(jfs_stage1_5_exec_SOURCES) $(minix_stage1_5_exec_SOURCES) \ +- $(nbloader_exec_SOURCES) $(pre_stage2_exec_SOURCES) \ +- $(pxeloader_exec_SOURCES) $(reiserfs_stage1_5_exec_SOURCES) \ +- $(start_exec_SOURCES) $(start_eltorito_exec_SOURCES) \ +- $(ufs2_stage1_5_exec_SOURCES) $(vstafs_stage1_5_exec_SOURCES) \ +- $(xfs_stage1_5_exec_SOURCES) +-DIST_SOURCES = $(libgrub_a_SOURCES) $(diskless_exec_SOURCES) \ +- $(e2fs_stage1_5_exec_SOURCES) $(fat_stage1_5_exec_SOURCES) \ +- $(ffs_stage1_5_exec_SOURCES) $(iso9660_stage1_5_exec_SOURCES) \ +- $(jfs_stage1_5_exec_SOURCES) $(minix_stage1_5_exec_SOURCES) \ +- $(nbloader_exec_SOURCES) $(pre_stage2_exec_SOURCES) \ +- $(pxeloader_exec_SOURCES) $(reiserfs_stage1_5_exec_SOURCES) \ +- $(start_exec_SOURCES) $(start_eltorito_exec_SOURCES) \ +- $(ufs2_stage1_5_exec_SOURCES) $(vstafs_stage1_5_exec_SOURCES) \ +- $(xfs_stage1_5_exec_SOURCES) +-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +-am__vpath_adj = case $$p in \ +- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ +- *) f=$$p;; \ +- esac; +-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +-am__installdirs = "$(DESTDIR)$(pkglibdir)" +-pkglibDATA_INSTALL = $(INSTALL_DATA) +-DATA = $(noinst_DATA) $(pkglib_DATA) +-HEADERS = $(noinst_HEADERS) +-ETAGS = etags +-CTAGS = ctags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +- +-# Stage 2 and Stage 1.5's. +-pkglibdir = $(libdir)/$(PACKAGE)/$(host_cpu)-$(host_vendor) +-ACLOCAL = @ACLOCAL@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ +-AMTAR = @AMTAR@ +-AUTOCONF = @AUTOCONF@ +-AUTOHEADER = @AUTOHEADER@ +-AUTOMAKE = @AUTOMAKE@ +-AWK = @AWK@ +-BUILD_EXAMPLE_KERNEL_FALSE = @BUILD_EXAMPLE_KERNEL_FALSE@ +-BUILD_EXAMPLE_KERNEL_TRUE = @BUILD_EXAMPLE_KERNEL_TRUE@ +-CC = @CC@ +-CCAS = @CCAS@ +-CCASFLAGS = @CCASFLAGS@ +-CCDEPMODE = @CCDEPMODE@ +-CFLAGS = @CFLAGS@ +-CPP = @CPP@ +-CPPFLAGS = @CPPFLAGS@ +-CYGPATH_W = @CYGPATH_W@ +-DEFS = @DEFS@ +-DEPDIR = @DEPDIR@ +-DISKLESS_SUPPORT_FALSE = @DISKLESS_SUPPORT_FALSE@ +-DISKLESS_SUPPORT_TRUE = @DISKLESS_SUPPORT_TRUE@ +-ECHO_C = @ECHO_C@ +-ECHO_N = @ECHO_N@ +-ECHO_T = @ECHO_T@ +-EGREP = @EGREP@ +-EXEEXT = @EXEEXT@ +-FSYS_CFLAGS = @FSYS_CFLAGS@ +-GRUB_CFLAGS = @GRUB_CFLAGS@ +-GRUB_LIBS = @GRUB_LIBS@ +-HERCULES_SUPPORT_FALSE = @HERCULES_SUPPORT_FALSE@ +-HERCULES_SUPPORT_TRUE = @HERCULES_SUPPORT_TRUE@ +-INSTALL_DATA = @INSTALL_DATA@ +-INSTALL_PROGRAM = @INSTALL_PROGRAM@ +-INSTALL_SCRIPT = @INSTALL_SCRIPT@ +-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +-LDFLAGS = @LDFLAGS@ +-LIBOBJS = @LIBOBJS@ +-LIBS = @LIBS@ +-LTLIBOBJS = @LTLIBOBJS@ +-MAINT = @MAINT@ +-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +-MAKEINFO = @MAKEINFO@ +-NETBOOT_DRIVERS = @NETBOOT_DRIVERS@ +-NETBOOT_SUPPORT_FALSE = @NETBOOT_SUPPORT_FALSE@ +-NETBOOT_SUPPORT_TRUE = @NETBOOT_SUPPORT_TRUE@ +-NET_CFLAGS = @NET_CFLAGS@ +-NET_EXTRAFLAGS = @NET_EXTRAFLAGS@ +-OBJCOPY = @OBJCOPY@ +-OBJEXT = @OBJEXT@ +-PACKAGE = @PACKAGE@ +-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +-PACKAGE_NAME = @PACKAGE_NAME@ +-PACKAGE_STRING = @PACKAGE_STRING@ +-PACKAGE_TARNAME = @PACKAGE_TARNAME@ +-PACKAGE_VERSION = @PACKAGE_VERSION@ +-PATH_SEPARATOR = @PATH_SEPARATOR@ +-PERL = @PERL@ +-RANLIB = @RANLIB@ +-SERIAL_SPEED_SIMULATION_FALSE = @SERIAL_SPEED_SIMULATION_FALSE@ +-SERIAL_SPEED_SIMULATION_TRUE = @SERIAL_SPEED_SIMULATION_TRUE@ +-SERIAL_SUPPORT_FALSE = @SERIAL_SUPPORT_FALSE@ +-SERIAL_SUPPORT_TRUE = @SERIAL_SUPPORT_TRUE@ +-SET_MAKE = @SET_MAKE@ +-SHELL = @SHELL@ +-STAGE1_CFLAGS = @STAGE1_CFLAGS@ +-STAGE2_CFLAGS = @STAGE2_CFLAGS@ +-STRIP = @STRIP@ +-VERSION = @VERSION@ +-ac_ct_CC = @ac_ct_CC@ +-ac_ct_OBJCOPY = @ac_ct_OBJCOPY@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__include = @am__include@ +-am__leading_dot = @am__leading_dot@ +-am__quote = @am__quote@ +-am__tar = @am__tar@ +-am__untar = @am__untar@ +-bindir = @bindir@ +-build = @build@ +-build_alias = @build_alias@ +-build_cpu = @build_cpu@ +-build_os = @build_os@ +-build_vendor = @build_vendor@ +-datadir = @datadir@ +-exec_prefix = @exec_prefix@ +-host = @host@ +-host_alias = @host_alias@ +-host_cpu = @host_cpu@ +-host_os = @host_os@ +-host_vendor = @host_vendor@ +-includedir = @includedir@ +-infodir = @infodir@ +-install_sh = @install_sh@ +-libdir = @libdir@ +-libexecdir = @libexecdir@ +-localstatedir = @localstatedir@ +-mandir = @mandir@ +-mkdir_p = @mkdir_p@ +-oldincludedir = @oldincludedir@ +-prefix = @prefix@ +-program_transform_name = @program_transform_name@ +-sbindir = @sbindir@ +-sharedstatedir = @sharedstatedir@ +-sysconfdir = @sysconfdir@ +-target_alias = @target_alias@ +- +-# For test target. +-TESTS = size_test +-noinst_SCRIPTS = $(TESTS) +- +-# For dist target. +-noinst_HEADERS = apic.h defs.h dir.h disk_inode.h disk_inode_ffs.h \ +- fat.h filesys.h freebsd.h fs.h hercules.h i386-elf.h \ +- imgact_aout.h iso9660.h jfs.h mb_header.h mb_info.h md5.h \ +- nbi.h pc_slice.h serial.h shared.h smp-imps.h term.h \ +- terminfo.h tparm.h nbi.h ufs2.h vstafs.h xfs.h +- +-EXTRA_DIST = setjmp.S apm.S $(noinst_SCRIPTS) +- +-# For <stage1.h>. +-INCLUDES = -I$(top_srcdir)/stage1 +- +-# The library for /sbin/grub. +-noinst_LIBRARIES = libgrub.a +-libgrub_a_SOURCES = boot.c builtins.c char_io.c cmdline.c common.c \ +- disk_io.c fsys_ext2fs.c fsys_fat.c fsys_ffs.c fsys_iso9660.c \ +- fsys_jfs.c fsys_minix.c fsys_reiserfs.c fsys_ufs2.c \ +- fsys_vstafs.c fsys_xfs.c gunzip.c md5.c serial.c stage2.c \ +- terminfo.c tparm.c +- +-libgrub_a_CFLAGS = $(GRUB_CFLAGS) -I$(top_srcdir)/lib \ +- -DGRUB_UTIL=1 -DFSYS_EXT2FS=1 -DFSYS_FAT=1 -DFSYS_FFS=1 \ +- -DFSYS_ISO9660=1 -DFSYS_JFS=1 -DFSYS_MINIX=1 -DFSYS_REISERFS=1 \ +- -DFSYS_UFS2=1 -DFSYS_VSTAFS=1 -DFSYS_XFS=1 \ +- -DUSE_MD5_PASSWORDS=1 -DSUPPORT_SERIAL=1 -DSUPPORT_HERCULES=1 +- +-@DISKLESS_SUPPORT_FALSE@pkglib_DATA = stage2 stage2_eltorito e2fs_stage1_5 fat_stage1_5 \ +-@DISKLESS_SUPPORT_FALSE@ ffs_stage1_5 iso9660_stage1_5 jfs_stage1_5 minix_stage1_5 \ +-@DISKLESS_SUPPORT_FALSE@ reiserfs_stage1_5 ufs2_stage1_5 vstafs_stage1_5 xfs_stage1_5 +- +-@DISKLESS_SUPPORT_TRUE@pkglib_DATA = stage2 stage2_eltorito e2fs_stage1_5 fat_stage1_5 \ +-@DISKLESS_SUPPORT_TRUE@ ffs_stage1_5 iso9660_stage1_5 jfs_stage1_5 minix_stage1_5 \ +-@DISKLESS_SUPPORT_TRUE@ reiserfs_stage1_5 ufs2_stage1_5 vstafs_stage1_5 xfs_stage1_5 \ +-@DISKLESS_SUPPORT_TRUE@ nbgrub pxegrub +- +-@DISKLESS_SUPPORT_FALSE@noinst_DATA = pre_stage2 start start_eltorito +-@DISKLESS_SUPPORT_TRUE@noinst_DATA = pre_stage2 start start_eltorito nbloader pxeloader diskless +-MOSTLYCLEANFILES = $(noinst_PROGRAMS) +-PRE_STAGE2_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,8200 +-START_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,8000 +-NBLOADER_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,0 +-PXELOADER_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,7C00 +-START_ELTORITO_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,7C00 +-@NETBOOT_SUPPORT_FALSE@NETBOOT_FLAGS = +-@NETBOOT_SUPPORT_TRUE@NETBOOT_FLAGS = -I$(top_srcdir)/netboot -DSUPPORT_NETBOOT=1 +-@SERIAL_SUPPORT_FALSE@SERIAL_FLAGS = +-@SERIAL_SUPPORT_TRUE@SERIAL_FLAGS = -DSUPPORT_SERIAL=1 +-@HERCULES_SUPPORT_FALSE@HERCULES_FLAGS = +-@HERCULES_SUPPORT_TRUE@HERCULES_FLAGS = -DSUPPORT_HERCULES=1 +-STAGE2_COMPILE = $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NETBOOT_FLAGS) $(SERIAL_FLAGS) $(HERCULES_FLAGS) +- +-STAGE1_5_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,2000 +-STAGE1_5_COMPILE = $(STAGE2_COMPILE) -DNO_DECOMPRESSION=1 -DSTAGE1_5=1 +- +-# For stage2 target. +-pre_stage2_exec_SOURCES = asm.S bios.c boot.c builtins.c char_io.c \ +- cmdline.c common.c console.c disk_io.c fsys_ext2fs.c \ +- fsys_fat.c fsys_ffs.c fsys_iso9660.c fsys_jfs.c fsys_minix.c \ +- fsys_reiserfs.c fsys_ufs2.c fsys_vstafs.c fsys_xfs.c gunzip.c \ +- hercules.c md5.c serial.c smp-imps.c stage2.c terminfo.c tparm.c +- +-pre_stage2_exec_CFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS) +-pre_stage2_exec_CCASFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS) +-pre_stage2_exec_LDFLAGS = $(PRE_STAGE2_LINK) +-@NETBOOT_SUPPORT_TRUE@pre_stage2_exec_LDADD = ../netboot/libdrivers.a +-@DISKLESS_SUPPORT_FALSE@BUILT_SOURCES = stage2_size.h +-@DISKLESS_SUPPORT_TRUE@BUILT_SOURCES = stage2_size.h diskless_size.h +-CLEANFILES = $(pkglib_DATA) $(noinst_DATA) $(BUILT_SOURCES) +-start_exec_SOURCES = start.S +-start_exec_CCASFLAGS = $(STAGE2_COMPILE) +-start_exec_LDFLAGS = $(START_LINK) +-start_eltorito_exec_SOURCES = start_eltorito.S +-start_eltorito_exec_CCASFLAGS = $(STAGE2_COMPILE) +-start_eltorito_exec_LDFLAGS = $(START_ELTORITO_LINK) +- +-# For e2fs_stage1_5 target. +-e2fs_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c disk_io.c \ +- stage1_5.c fsys_ext2fs.c bios.c +- +-e2fs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_EXT2FS=1 \ +- -DNO_BLOCK_FILES=1 +- +-e2fs_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_EXT2FS=1 \ +- -DNO_BLOCK_FILES=1 +- +-e2fs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) +- +-# For fat_stage1_5 target. +-fat_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c disk_io.c \ +- stage1_5.c fsys_fat.c bios.c +- +-fat_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_FAT=1 \ +- -DNO_BLOCK_FILES=1 +- +-fat_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_FAT=1 \ +- -DNO_BLOCK_FILES=1 +- +-fat_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) +- +-# For ffs_stage1_5 target. +-ffs_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c disk_io.c \ +- stage1_5.c fsys_ffs.c bios.c +- +-ffs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_FFS=1 \ +- -DNO_BLOCK_FILES=1 +- +-ffs_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_FFS=1 \ +- -DNO_BLOCK_FILES=1 +- +-ffs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) +- +-# For ufs2_stage1_5 target. +-ufs2_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c disk_io.c \ +- stage1_5.c fsys_ufs2.c bios.c +- +-ufs2_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_UFS2=1 \ +- -DNO_BLOCK_FILES=1 +- +-ufs2_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_UFS2=1 \ +- -DNO_BLOCK_FILES=1 +- +-ufs2_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) +- +-# For minix_stage1_5 target. +-minix_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c disk_io.c \ +- stage1_5.c fsys_minix.c bios.c +- +-minix_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_MINIX=1 \ +- -DNO_BLOCK_FILES=1 +- +-minix_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_MINIX=1 \ +- -DNO_BLOCK_FILES=1 +- +-minix_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) +- +-# For reiserfs_stage1_5 target. +-reiserfs_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c \ +- disk_io.c stage1_5.c fsys_reiserfs.c bios.c +- +-reiserfs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_REISERFS=1 \ +- -DNO_BLOCK_FILES=1 +- +-reiserfs_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_REISERFS=1 \ +- -DNO_BLOCK_FILES=1 +- +-reiserfs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) +- +-# For vstafs_stage1_5 target. +-vstafs_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c \ +- disk_io.c stage1_5.c fsys_vstafs.c bios.c +- +-vstafs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_VSTAFS=1 \ +- -DNO_BLOCK_FILES=1 +- +-vstafs_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_VSTAFS=1 \ +- -DNO_BLOCK_FILES=1 +- +-vstafs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) +- +-# For jfs_stage1_5 target. +-jfs_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c \ +- disk_io.c stage1_5.c fsys_jfs.c bios.c +- +-jfs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_JFS=1 \ +- -DNO_BLOCK_FILES=1 +- +-jfs_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_JFS=1 \ +- -DNO_BLOCK_FILES=1 +- +-jfs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) +- +-# For xfs_stage1_5 target. +-xfs_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c \ +- disk_io.c stage1_5.c fsys_xfs.c bios.c +- +-xfs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_XFS=1 \ +- -DNO_BLOCK_FILES=1 +- +-xfs_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_XFS=1 \ +- -DNO_BLOCK_FILES=1 +- +-xfs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) +- +-# For iso9660_stage1_5 target. +-iso9660_stage1_5_exec_SOURCES = start_eltorito.S asm.S common.c char_io.c \ +- disk_io.c stage1_5.c fsys_iso9660.c bios.c +- +-iso9660_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_ISO9660=1 \ +- -DNO_BLOCK_FILES=1 +- +-iso9660_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_ISO9660=1 \ +- -DNO_BLOCK_FILES=1 +- +-iso9660_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) +- +-# For diskless target. +-diskless_exec_SOURCES = $(pre_stage2_exec_SOURCES) +-diskless_exec_CFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS) \ +- -DSUPPORT_DISKLESS=1 +- +-diskless_exec_CCASFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS) \ +- -DSUPPORT_DISKLESS=1 +- +-diskless_exec_LDFLAGS = $(PRE_STAGE2_LINK) +-diskless_exec_LDADD = ../netboot/libdrivers.a +- +-# For nbloader target. +-nbloader_exec_SOURCES = nbloader.S +-nbloader_exec_CCASFLAGS = $(STAGE2_COMPILE) +-nbloader_exec_LDFLAGS = $(NBLOADER_LINK) +- +-# For pxeloader target. +-pxeloader_exec_SOURCES = pxeloader.S +-pxeloader_exec_CCASFLAGS = $(STAGE2_COMPILE) +-pxeloader_exec_LDFLAGS = $(PXELOADER_LINK) +- +-# General rule for making a raw binary. +-SUFFIXES = .exec +-all: $(BUILT_SOURCES) +- $(MAKE) $(AM_MAKEFLAGS) all-am +- +-.SUFFIXES: +-.SUFFIXES: .exec .S .c .o .obj +-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) +- @for dep in $?; do \ +- case '$(am__configure_deps)' in \ +- *$$dep*) \ +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +- && exit 0; \ +- exit 1;; \ +- esac; \ +- done; \ +- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu stage2/Makefile'; \ +- cd $(top_srcdir) && \ +- $(AUTOMAKE) --gnu stage2/Makefile +-.PRECIOUS: Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- @case '$?' in \ +- *config.status*) \ +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ +- *) \ +- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ +- esac; +- +-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +- +-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +- +-clean-noinstLIBRARIES: +- -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +-libgrub.a: $(libgrub_a_OBJECTS) $(libgrub_a_DEPENDENCIES) +- -rm -f libgrub.a +- $(libgrub_a_AR) libgrub.a $(libgrub_a_OBJECTS) $(libgrub_a_LIBADD) +- $(RANLIB) libgrub.a +- +-clean-noinstPROGRAMS: +- -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) +-diskless.exec$(EXEEXT): $(diskless_exec_OBJECTS) $(diskless_exec_DEPENDENCIES) +- @rm -f diskless.exec$(EXEEXT) +- $(LINK) $(diskless_exec_LDFLAGS) $(diskless_exec_OBJECTS) $(diskless_exec_LDADD) $(LIBS) +-e2fs_stage1_5.exec$(EXEEXT): $(e2fs_stage1_5_exec_OBJECTS) $(e2fs_stage1_5_exec_DEPENDENCIES) +- @rm -f e2fs_stage1_5.exec$(EXEEXT) +- $(LINK) $(e2fs_stage1_5_exec_LDFLAGS) $(e2fs_stage1_5_exec_OBJECTS) $(e2fs_stage1_5_exec_LDADD) $(LIBS) +-fat_stage1_5.exec$(EXEEXT): $(fat_stage1_5_exec_OBJECTS) $(fat_stage1_5_exec_DEPENDENCIES) +- @rm -f fat_stage1_5.exec$(EXEEXT) +- $(LINK) $(fat_stage1_5_exec_LDFLAGS) $(fat_stage1_5_exec_OBJECTS) $(fat_stage1_5_exec_LDADD) $(LIBS) +-ffs_stage1_5.exec$(EXEEXT): $(ffs_stage1_5_exec_OBJECTS) $(ffs_stage1_5_exec_DEPENDENCIES) +- @rm -f ffs_stage1_5.exec$(EXEEXT) +- $(LINK) $(ffs_stage1_5_exec_LDFLAGS) $(ffs_stage1_5_exec_OBJECTS) $(ffs_stage1_5_exec_LDADD) $(LIBS) +-iso9660_stage1_5.exec$(EXEEXT): $(iso9660_stage1_5_exec_OBJECTS) $(iso9660_stage1_5_exec_DEPENDENCIES) +- @rm -f iso9660_stage1_5.exec$(EXEEXT) +- $(LINK) $(iso9660_stage1_5_exec_LDFLAGS) $(iso9660_stage1_5_exec_OBJECTS) $(iso9660_stage1_5_exec_LDADD) $(LIBS) +-jfs_stage1_5.exec$(EXEEXT): $(jfs_stage1_5_exec_OBJECTS) $(jfs_stage1_5_exec_DEPENDENCIES) +- @rm -f jfs_stage1_5.exec$(EXEEXT) +- $(LINK) $(jfs_stage1_5_exec_LDFLAGS) $(jfs_stage1_5_exec_OBJECTS) $(jfs_stage1_5_exec_LDADD) $(LIBS) +-minix_stage1_5.exec$(EXEEXT): $(minix_stage1_5_exec_OBJECTS) $(minix_stage1_5_exec_DEPENDENCIES) +- @rm -f minix_stage1_5.exec$(EXEEXT) +- $(LINK) $(minix_stage1_5_exec_LDFLAGS) $(minix_stage1_5_exec_OBJECTS) $(minix_stage1_5_exec_LDADD) $(LIBS) +-nbloader.exec$(EXEEXT): $(nbloader_exec_OBJECTS) $(nbloader_exec_DEPENDENCIES) +- @rm -f nbloader.exec$(EXEEXT) +- $(LINK) $(nbloader_exec_LDFLAGS) $(nbloader_exec_OBJECTS) $(nbloader_exec_LDADD) $(LIBS) +-pre_stage2.exec$(EXEEXT): $(pre_stage2_exec_OBJECTS) $(pre_stage2_exec_DEPENDENCIES) +- @rm -f pre_stage2.exec$(EXEEXT) +- $(LINK) $(pre_stage2_exec_LDFLAGS) $(pre_stage2_exec_OBJECTS) $(pre_stage2_exec_LDADD) $(LIBS) +-pxeloader.exec$(EXEEXT): $(pxeloader_exec_OBJECTS) $(pxeloader_exec_DEPENDENCIES) +- @rm -f pxeloader.exec$(EXEEXT) +- $(LINK) $(pxeloader_exec_LDFLAGS) $(pxeloader_exec_OBJECTS) $(pxeloader_exec_LDADD) $(LIBS) +-reiserfs_stage1_5.exec$(EXEEXT): $(reiserfs_stage1_5_exec_OBJECTS) $(reiserfs_stage1_5_exec_DEPENDENCIES) +- @rm -f reiserfs_stage1_5.exec$(EXEEXT) +- $(LINK) $(reiserfs_stage1_5_exec_LDFLAGS) $(reiserfs_stage1_5_exec_OBJECTS) $(reiserfs_stage1_5_exec_LDADD) $(LIBS) +-start.exec$(EXEEXT): $(start_exec_OBJECTS) $(start_exec_DEPENDENCIES) +- @rm -f start.exec$(EXEEXT) +- $(LINK) $(start_exec_LDFLAGS) $(start_exec_OBJECTS) $(start_exec_LDADD) $(LIBS) +-start_eltorito.exec$(EXEEXT): $(start_eltorito_exec_OBJECTS) $(start_eltorito_exec_DEPENDENCIES) +- @rm -f start_eltorito.exec$(EXEEXT) +- $(LINK) $(start_eltorito_exec_LDFLAGS) $(start_eltorito_exec_OBJECTS) $(start_eltorito_exec_LDADD) $(LIBS) +-ufs2_stage1_5.exec$(EXEEXT): $(ufs2_stage1_5_exec_OBJECTS) $(ufs2_stage1_5_exec_DEPENDENCIES) +- @rm -f ufs2_stage1_5.exec$(EXEEXT) +- $(LINK) $(ufs2_stage1_5_exec_LDFLAGS) $(ufs2_stage1_5_exec_OBJECTS) $(ufs2_stage1_5_exec_LDADD) $(LIBS) +-vstafs_stage1_5.exec$(EXEEXT): $(vstafs_stage1_5_exec_OBJECTS) $(vstafs_stage1_5_exec_DEPENDENCIES) +- @rm -f vstafs_stage1_5.exec$(EXEEXT) +- $(LINK) $(vstafs_stage1_5_exec_LDFLAGS) $(vstafs_stage1_5_exec_OBJECTS) $(vstafs_stage1_5_exec_LDADD) $(LIBS) +-xfs_stage1_5.exec$(EXEEXT): $(xfs_stage1_5_exec_OBJECTS) $(xfs_stage1_5_exec_DEPENDENCIES) +- @rm -f xfs_stage1_5.exec$(EXEEXT) +- $(LINK) $(xfs_stage1_5_exec_LDFLAGS) $(xfs_stage1_5_exec_OBJECTS) $(xfs_stage1_5_exec_LDADD) $(LIBS) +- +-mostlyclean-compile: +- -rm -f *.$(OBJEXT) +- +-distclean-compile: +- -rm -f *.tab.c +- +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-bios.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-boot.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-builtins.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-char_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-cmdline.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-common.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-console.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-disk_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-fsys_ext2fs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-fsys_fat.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-fsys_ffs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-fsys_iso9660.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-fsys_jfs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-fsys_minix.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-fsys_reiserfs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-fsys_ufs2.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-fsys_vstafs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-fsys_xfs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-gunzip.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-hercules.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-md5.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-serial.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-smp-imps.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-stage2.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-terminfo.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-tparm.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/e2fs_stage1_5_exec-bios.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/e2fs_stage1_5_exec-char_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/e2fs_stage1_5_exec-common.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/e2fs_stage1_5_exec-disk_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/e2fs_stage1_5_exec-fsys_ext2fs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/e2fs_stage1_5_exec-stage1_5.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fat_stage1_5_exec-bios.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fat_stage1_5_exec-char_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fat_stage1_5_exec-common.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fat_stage1_5_exec-disk_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fat_stage1_5_exec-fsys_fat.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fat_stage1_5_exec-stage1_5.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ffs_stage1_5_exec-bios.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ffs_stage1_5_exec-char_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ffs_stage1_5_exec-common.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ffs_stage1_5_exec-disk_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ffs_stage1_5_exec-fsys_ffs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ffs_stage1_5_exec-stage1_5.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso9660_stage1_5_exec-bios.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso9660_stage1_5_exec-char_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso9660_stage1_5_exec-common.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso9660_stage1_5_exec-disk_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso9660_stage1_5_exec-fsys_iso9660.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso9660_stage1_5_exec-stage1_5.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jfs_stage1_5_exec-bios.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jfs_stage1_5_exec-char_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jfs_stage1_5_exec-common.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jfs_stage1_5_exec-disk_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jfs_stage1_5_exec-fsys_jfs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jfs_stage1_5_exec-stage1_5.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-boot.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-builtins.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-char_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-cmdline.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-common.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-disk_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-fsys_ext2fs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-fsys_fat.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-fsys_ffs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-fsys_iso9660.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-fsys_jfs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-fsys_minix.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-fsys_reiserfs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-fsys_ufs2.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-fsys_vstafs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-fsys_xfs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-gunzip.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-md5.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-serial.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-stage2.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-terminfo.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-tparm.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/minix_stage1_5_exec-bios.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/minix_stage1_5_exec-char_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/minix_stage1_5_exec-common.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/minix_stage1_5_exec-disk_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/minix_stage1_5_exec-fsys_minix.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/minix_stage1_5_exec-stage1_5.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-bios.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-boot.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-builtins.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-char_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-cmdline.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-common.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-console.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-disk_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-fsys_ext2fs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-fsys_fat.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-fsys_ffs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-fsys_iso9660.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-fsys_jfs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-fsys_minix.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-fsys_reiserfs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-fsys_ufs2.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-fsys_vstafs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-fsys_xfs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-gunzip.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-hercules.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-md5.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-serial.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-smp-imps.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-stage2.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-terminfo.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-tparm.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reiserfs_stage1_5_exec-bios.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reiserfs_stage1_5_exec-char_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reiserfs_stage1_5_exec-common.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reiserfs_stage1_5_exec-disk_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reiserfs_stage1_5_exec-fsys_reiserfs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reiserfs_stage1_5_exec-stage1_5.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ufs2_stage1_5_exec-bios.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ufs2_stage1_5_exec-char_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ufs2_stage1_5_exec-common.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ufs2_stage1_5_exec-disk_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ufs2_stage1_5_exec-fsys_ufs2.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ufs2_stage1_5_exec-stage1_5.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vstafs_stage1_5_exec-bios.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vstafs_stage1_5_exec-char_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vstafs_stage1_5_exec-common.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vstafs_stage1_5_exec-disk_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vstafs_stage1_5_exec-fsys_vstafs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vstafs_stage1_5_exec-stage1_5.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xfs_stage1_5_exec-bios.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xfs_stage1_5_exec-char_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xfs_stage1_5_exec-common.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xfs_stage1_5_exec-disk_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xfs_stage1_5_exec-fsys_xfs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xfs_stage1_5_exec-stage1_5.Po@am__quote@ +- +-.S.o: +- $(CCASCOMPILE) -c $< +- +-.S.obj: +- $(CCASCOMPILE) -c `$(CYGPATH_W) '$<'` +- +-diskless_exec-asm.o: asm.S +- $(CCAS) $(diskless_exec_CCASFLAGS) $(CCASFLAGS) -c -o diskless_exec-asm.o `test -f 'asm.S' || echo '$(srcdir)/'`asm.S +- +-diskless_exec-asm.obj: asm.S +- $(CCAS) $(diskless_exec_CCASFLAGS) $(CCASFLAGS) -c -o diskless_exec-asm.obj `if test -f 'asm.S'; then $(CYGPATH_W) 'asm.S'; else $(CYGPATH_W) '$(srcdir)/asm.S'; fi` +- +-e2fs_stage1_5_exec-start.o: start.S +- $(CCAS) $(e2fs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o e2fs_stage1_5_exec-start.o `test -f 'start.S' || echo '$(srcdir)/'`start.S +- +-e2fs_stage1_5_exec-start.obj: start.S +- $(CCAS) $(e2fs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o e2fs_stage1_5_exec-start.obj `if test -f 'start.S'; then $(CYGPATH_W) 'start.S'; else $(CYGPATH_W) '$(srcdir)/start.S'; fi` +- +-e2fs_stage1_5_exec-asm.o: asm.S +- $(CCAS) $(e2fs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o e2fs_stage1_5_exec-asm.o `test -f 'asm.S' || echo '$(srcdir)/'`asm.S +- +-e2fs_stage1_5_exec-asm.obj: asm.S +- $(CCAS) $(e2fs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o e2fs_stage1_5_exec-asm.obj `if test -f 'asm.S'; then $(CYGPATH_W) 'asm.S'; else $(CYGPATH_W) '$(srcdir)/asm.S'; fi` +- +-fat_stage1_5_exec-start.o: start.S +- $(CCAS) $(fat_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o fat_stage1_5_exec-start.o `test -f 'start.S' || echo '$(srcdir)/'`start.S +- +-fat_stage1_5_exec-start.obj: start.S +- $(CCAS) $(fat_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o fat_stage1_5_exec-start.obj `if test -f 'start.S'; then $(CYGPATH_W) 'start.S'; else $(CYGPATH_W) '$(srcdir)/start.S'; fi` +- +-fat_stage1_5_exec-asm.o: asm.S +- $(CCAS) $(fat_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o fat_stage1_5_exec-asm.o `test -f 'asm.S' || echo '$(srcdir)/'`asm.S +- +-fat_stage1_5_exec-asm.obj: asm.S +- $(CCAS) $(fat_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o fat_stage1_5_exec-asm.obj `if test -f 'asm.S'; then $(CYGPATH_W) 'asm.S'; else $(CYGPATH_W) '$(srcdir)/asm.S'; fi` +- +-ffs_stage1_5_exec-start.o: start.S +- $(CCAS) $(ffs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o ffs_stage1_5_exec-start.o `test -f 'start.S' || echo '$(srcdir)/'`start.S +- +-ffs_stage1_5_exec-start.obj: start.S +- $(CCAS) $(ffs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o ffs_stage1_5_exec-start.obj `if test -f 'start.S'; then $(CYGPATH_W) 'start.S'; else $(CYGPATH_W) '$(srcdir)/start.S'; fi` +- +-ffs_stage1_5_exec-asm.o: asm.S +- $(CCAS) $(ffs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o ffs_stage1_5_exec-asm.o `test -f 'asm.S' || echo '$(srcdir)/'`asm.S +- +-ffs_stage1_5_exec-asm.obj: asm.S +- $(CCAS) $(ffs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o ffs_stage1_5_exec-asm.obj `if test -f 'asm.S'; then $(CYGPATH_W) 'asm.S'; else $(CYGPATH_W) '$(srcdir)/asm.S'; fi` +- +-iso9660_stage1_5_exec-start_eltorito.o: start_eltorito.S +- $(CCAS) $(iso9660_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o iso9660_stage1_5_exec-start_eltorito.o `test -f 'start_eltorito.S' || echo '$(srcdir)/'`start_eltorito.S +- +-iso9660_stage1_5_exec-start_eltorito.obj: start_eltorito.S +- $(CCAS) $(iso9660_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o iso9660_stage1_5_exec-start_eltorito.obj `if test -f 'start_eltorito.S'; then $(CYGPATH_W) 'start_eltorito.S'; else $(CYGPATH_W) '$(srcdir)/start_eltorito.S'; fi` +- +-iso9660_stage1_5_exec-asm.o: asm.S +- $(CCAS) $(iso9660_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o iso9660_stage1_5_exec-asm.o `test -f 'asm.S' || echo '$(srcdir)/'`asm.S +- +-iso9660_stage1_5_exec-asm.obj: asm.S +- $(CCAS) $(iso9660_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o iso9660_stage1_5_exec-asm.obj `if test -f 'asm.S'; then $(CYGPATH_W) 'asm.S'; else $(CYGPATH_W) '$(srcdir)/asm.S'; fi` +- +-jfs_stage1_5_exec-start.o: start.S +- $(CCAS) $(jfs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o jfs_stage1_5_exec-start.o `test -f 'start.S' || echo '$(srcdir)/'`start.S +- +-jfs_stage1_5_exec-start.obj: start.S +- $(CCAS) $(jfs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o jfs_stage1_5_exec-start.obj `if test -f 'start.S'; then $(CYGPATH_W) 'start.S'; else $(CYGPATH_W) '$(srcdir)/start.S'; fi` +- +-jfs_stage1_5_exec-asm.o: asm.S +- $(CCAS) $(jfs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o jfs_stage1_5_exec-asm.o `test -f 'asm.S' || echo '$(srcdir)/'`asm.S +- +-jfs_stage1_5_exec-asm.obj: asm.S +- $(CCAS) $(jfs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o jfs_stage1_5_exec-asm.obj `if test -f 'asm.S'; then $(CYGPATH_W) 'asm.S'; else $(CYGPATH_W) '$(srcdir)/asm.S'; fi` +- +-minix_stage1_5_exec-start.o: start.S +- $(CCAS) $(minix_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o minix_stage1_5_exec-start.o `test -f 'start.S' || echo '$(srcdir)/'`start.S +- +-minix_stage1_5_exec-start.obj: start.S +- $(CCAS) $(minix_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o minix_stage1_5_exec-start.obj `if test -f 'start.S'; then $(CYGPATH_W) 'start.S'; else $(CYGPATH_W) '$(srcdir)/start.S'; fi` +- +-minix_stage1_5_exec-asm.o: asm.S +- $(CCAS) $(minix_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o minix_stage1_5_exec-asm.o `test -f 'asm.S' || echo '$(srcdir)/'`asm.S +- +-minix_stage1_5_exec-asm.obj: asm.S +- $(CCAS) $(minix_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o minix_stage1_5_exec-asm.obj `if test -f 'asm.S'; then $(CYGPATH_W) 'asm.S'; else $(CYGPATH_W) '$(srcdir)/asm.S'; fi` +- +-nbloader_exec-nbloader.o: nbloader.S +- $(CCAS) $(nbloader_exec_CCASFLAGS) $(CCASFLAGS) -c -o nbloader_exec-nbloader.o `test -f 'nbloader.S' || echo '$(srcdir)/'`nbloader.S +- +-nbloader_exec-nbloader.obj: nbloader.S +- $(CCAS) $(nbloader_exec_CCASFLAGS) $(CCASFLAGS) -c -o nbloader_exec-nbloader.obj `if test -f 'nbloader.S'; then $(CYGPATH_W) 'nbloader.S'; else $(CYGPATH_W) '$(srcdir)/nbloader.S'; fi` +- +-pre_stage2_exec-asm.o: asm.S +- $(CCAS) $(pre_stage2_exec_CCASFLAGS) $(CCASFLAGS) -c -o pre_stage2_exec-asm.o `test -f 'asm.S' || echo '$(srcdir)/'`asm.S +- +-pre_stage2_exec-asm.obj: asm.S +- $(CCAS) $(pre_stage2_exec_CCASFLAGS) $(CCASFLAGS) -c -o pre_stage2_exec-asm.obj `if test -f 'asm.S'; then $(CYGPATH_W) 'asm.S'; else $(CYGPATH_W) '$(srcdir)/asm.S'; fi` +- +-pxeloader_exec-pxeloader.o: pxeloader.S +- $(CCAS) $(pxeloader_exec_CCASFLAGS) $(CCASFLAGS) -c -o pxeloader_exec-pxeloader.o `test -f 'pxeloader.S' || echo '$(srcdir)/'`pxeloader.S +- +-pxeloader_exec-pxeloader.obj: pxeloader.S +- $(CCAS) $(pxeloader_exec_CCASFLAGS) $(CCASFLAGS) -c -o pxeloader_exec-pxeloader.obj `if test -f 'pxeloader.S'; then $(CYGPATH_W) 'pxeloader.S'; else $(CYGPATH_W) '$(srcdir)/pxeloader.S'; fi` +- +-reiserfs_stage1_5_exec-start.o: start.S +- $(CCAS) $(reiserfs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o reiserfs_stage1_5_exec-start.o `test -f 'start.S' || echo '$(srcdir)/'`start.S +- +-reiserfs_stage1_5_exec-start.obj: start.S +- $(CCAS) $(reiserfs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o reiserfs_stage1_5_exec-start.obj `if test -f 'start.S'; then $(CYGPATH_W) 'start.S'; else $(CYGPATH_W) '$(srcdir)/start.S'; fi` +- +-reiserfs_stage1_5_exec-asm.o: asm.S +- $(CCAS) $(reiserfs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o reiserfs_stage1_5_exec-asm.o `test -f 'asm.S' || echo '$(srcdir)/'`asm.S +- +-reiserfs_stage1_5_exec-asm.obj: asm.S +- $(CCAS) $(reiserfs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o reiserfs_stage1_5_exec-asm.obj `if test -f 'asm.S'; then $(CYGPATH_W) 'asm.S'; else $(CYGPATH_W) '$(srcdir)/asm.S'; fi` +- +-start_exec-start.o: start.S +- $(CCAS) $(start_exec_CCASFLAGS) $(CCASFLAGS) -c -o start_exec-start.o `test -f 'start.S' || echo '$(srcdir)/'`start.S +- +-start_exec-start.obj: start.S +- $(CCAS) $(start_exec_CCASFLAGS) $(CCASFLAGS) -c -o start_exec-start.obj `if test -f 'start.S'; then $(CYGPATH_W) 'start.S'; else $(CYGPATH_W) '$(srcdir)/start.S'; fi` +- +-start_eltorito_exec-start_eltorito.o: start_eltorito.S +- $(CCAS) $(start_eltorito_exec_CCASFLAGS) $(CCASFLAGS) -c -o start_eltorito_exec-start_eltorito.o `test -f 'start_eltorito.S' || echo '$(srcdir)/'`start_eltorito.S +- +-start_eltorito_exec-start_eltorito.obj: start_eltorito.S +- $(CCAS) $(start_eltorito_exec_CCASFLAGS) $(CCASFLAGS) -c -o start_eltorito_exec-start_eltorito.obj `if test -f 'start_eltorito.S'; then $(CYGPATH_W) 'start_eltorito.S'; else $(CYGPATH_W) '$(srcdir)/start_eltorito.S'; fi` +- +-ufs2_stage1_5_exec-start.o: start.S +- $(CCAS) $(ufs2_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o ufs2_stage1_5_exec-start.o `test -f 'start.S' || echo '$(srcdir)/'`start.S +- +-ufs2_stage1_5_exec-start.obj: start.S +- $(CCAS) $(ufs2_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o ufs2_stage1_5_exec-start.obj `if test -f 'start.S'; then $(CYGPATH_W) 'start.S'; else $(CYGPATH_W) '$(srcdir)/start.S'; fi` +- +-ufs2_stage1_5_exec-asm.o: asm.S +- $(CCAS) $(ufs2_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o ufs2_stage1_5_exec-asm.o `test -f 'asm.S' || echo '$(srcdir)/'`asm.S +- +-ufs2_stage1_5_exec-asm.obj: asm.S +- $(CCAS) $(ufs2_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o ufs2_stage1_5_exec-asm.obj `if test -f 'asm.S'; then $(CYGPATH_W) 'asm.S'; else $(CYGPATH_W) '$(srcdir)/asm.S'; fi` +- +-vstafs_stage1_5_exec-start.o: start.S +- $(CCAS) $(vstafs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o vstafs_stage1_5_exec-start.o `test -f 'start.S' || echo '$(srcdir)/'`start.S +- +-vstafs_stage1_5_exec-start.obj: start.S +- $(CCAS) $(vstafs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o vstafs_stage1_5_exec-start.obj `if test -f 'start.S'; then $(CYGPATH_W) 'start.S'; else $(CYGPATH_W) '$(srcdir)/start.S'; fi` +- +-vstafs_stage1_5_exec-asm.o: asm.S +- $(CCAS) $(vstafs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o vstafs_stage1_5_exec-asm.o `test -f 'asm.S' || echo '$(srcdir)/'`asm.S +- +-vstafs_stage1_5_exec-asm.obj: asm.S +- $(CCAS) $(vstafs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o vstafs_stage1_5_exec-asm.obj `if test -f 'asm.S'; then $(CYGPATH_W) 'asm.S'; else $(CYGPATH_W) '$(srcdir)/asm.S'; fi` +- +-xfs_stage1_5_exec-start.o: start.S +- $(CCAS) $(xfs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o xfs_stage1_5_exec-start.o `test -f 'start.S' || echo '$(srcdir)/'`start.S +- +-xfs_stage1_5_exec-start.obj: start.S +- $(CCAS) $(xfs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o xfs_stage1_5_exec-start.obj `if test -f 'start.S'; then $(CYGPATH_W) 'start.S'; else $(CYGPATH_W) '$(srcdir)/start.S'; fi` +- +-xfs_stage1_5_exec-asm.o: asm.S +- $(CCAS) $(xfs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o xfs_stage1_5_exec-asm.o `test -f 'asm.S' || echo '$(srcdir)/'`asm.S +- +-xfs_stage1_5_exec-asm.obj: asm.S +- $(CCAS) $(xfs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o xfs_stage1_5_exec-asm.obj `if test -f 'asm.S'; then $(CYGPATH_W) 'asm.S'; else $(CYGPATH_W) '$(srcdir)/asm.S'; fi` +- +-.c.o: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c $< +- +-.c.obj: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +- +-libgrub_a-boot.o: boot.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-boot.o -MD -MP -MF "$(DEPDIR)/libgrub_a-boot.Tpo" -c -o libgrub_a-boot.o `test -f 'boot.c' || echo '$(srcdir)/'`boot.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-boot.Tpo" "$(DEPDIR)/libgrub_a-boot.Po"; else rm -f "$(DEPDIR)/libgrub_a-boot.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='boot.c' object='libgrub_a-boot.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-boot.o `test -f 'boot.c' || echo '$(srcdir)/'`boot.c +- +-libgrub_a-boot.obj: boot.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-boot.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-boot.Tpo" -c -o libgrub_a-boot.obj `if test -f 'boot.c'; then $(CYGPATH_W) 'boot.c'; else $(CYGPATH_W) '$(srcdir)/boot.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-boot.Tpo" "$(DEPDIR)/libgrub_a-boot.Po"; else rm -f "$(DEPDIR)/libgrub_a-boot.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='boot.c' object='libgrub_a-boot.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-boot.obj `if test -f 'boot.c'; then $(CYGPATH_W) 'boot.c'; else $(CYGPATH_W) '$(srcdir)/boot.c'; fi` +- +-libgrub_a-builtins.o: builtins.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-builtins.o -MD -MP -MF "$(DEPDIR)/libgrub_a-builtins.Tpo" -c -o libgrub_a-builtins.o `test -f 'builtins.c' || echo '$(srcdir)/'`builtins.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-builtins.Tpo" "$(DEPDIR)/libgrub_a-builtins.Po"; else rm -f "$(DEPDIR)/libgrub_a-builtins.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='builtins.c' object='libgrub_a-builtins.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-builtins.o `test -f 'builtins.c' || echo '$(srcdir)/'`builtins.c +- +-libgrub_a-builtins.obj: builtins.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-builtins.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-builtins.Tpo" -c -o libgrub_a-builtins.obj `if test -f 'builtins.c'; then $(CYGPATH_W) 'builtins.c'; else $(CYGPATH_W) '$(srcdir)/builtins.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-builtins.Tpo" "$(DEPDIR)/libgrub_a-builtins.Po"; else rm -f "$(DEPDIR)/libgrub_a-builtins.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='builtins.c' object='libgrub_a-builtins.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-builtins.obj `if test -f 'builtins.c'; then $(CYGPATH_W) 'builtins.c'; else $(CYGPATH_W) '$(srcdir)/builtins.c'; fi` +- +-libgrub_a-char_io.o: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-char_io.o -MD -MP -MF "$(DEPDIR)/libgrub_a-char_io.Tpo" -c -o libgrub_a-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-char_io.Tpo" "$(DEPDIR)/libgrub_a-char_io.Po"; else rm -f "$(DEPDIR)/libgrub_a-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='libgrub_a-char_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c +- +-libgrub_a-char_io.obj: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-char_io.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-char_io.Tpo" -c -o libgrub_a-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-char_io.Tpo" "$(DEPDIR)/libgrub_a-char_io.Po"; else rm -f "$(DEPDIR)/libgrub_a-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='libgrub_a-char_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi` +- +-libgrub_a-cmdline.o: cmdline.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-cmdline.o -MD -MP -MF "$(DEPDIR)/libgrub_a-cmdline.Tpo" -c -o libgrub_a-cmdline.o `test -f 'cmdline.c' || echo '$(srcdir)/'`cmdline.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-cmdline.Tpo" "$(DEPDIR)/libgrub_a-cmdline.Po"; else rm -f "$(DEPDIR)/libgrub_a-cmdline.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cmdline.c' object='libgrub_a-cmdline.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-cmdline.o `test -f 'cmdline.c' || echo '$(srcdir)/'`cmdline.c +- +-libgrub_a-cmdline.obj: cmdline.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-cmdline.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-cmdline.Tpo" -c -o libgrub_a-cmdline.obj `if test -f 'cmdline.c'; then $(CYGPATH_W) 'cmdline.c'; else $(CYGPATH_W) '$(srcdir)/cmdline.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-cmdline.Tpo" "$(DEPDIR)/libgrub_a-cmdline.Po"; else rm -f "$(DEPDIR)/libgrub_a-cmdline.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cmdline.c' object='libgrub_a-cmdline.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-cmdline.obj `if test -f 'cmdline.c'; then $(CYGPATH_W) 'cmdline.c'; else $(CYGPATH_W) '$(srcdir)/cmdline.c'; fi` +- +-libgrub_a-common.o: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-common.o -MD -MP -MF "$(DEPDIR)/libgrub_a-common.Tpo" -c -o libgrub_a-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-common.Tpo" "$(DEPDIR)/libgrub_a-common.Po"; else rm -f "$(DEPDIR)/libgrub_a-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='libgrub_a-common.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c +- +-libgrub_a-common.obj: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-common.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-common.Tpo" -c -o libgrub_a-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-common.Tpo" "$(DEPDIR)/libgrub_a-common.Po"; else rm -f "$(DEPDIR)/libgrub_a-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='libgrub_a-common.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi` +- +-libgrub_a-disk_io.o: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-disk_io.o -MD -MP -MF "$(DEPDIR)/libgrub_a-disk_io.Tpo" -c -o libgrub_a-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-disk_io.Tpo" "$(DEPDIR)/libgrub_a-disk_io.Po"; else rm -f "$(DEPDIR)/libgrub_a-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='libgrub_a-disk_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c +- +-libgrub_a-disk_io.obj: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-disk_io.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-disk_io.Tpo" -c -o libgrub_a-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-disk_io.Tpo" "$(DEPDIR)/libgrub_a-disk_io.Po"; else rm -f "$(DEPDIR)/libgrub_a-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='libgrub_a-disk_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi` +- +-libgrub_a-fsys_ext2fs.o: fsys_ext2fs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_ext2fs.o -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_ext2fs.Tpo" -c -o libgrub_a-fsys_ext2fs.o `test -f 'fsys_ext2fs.c' || echo '$(srcdir)/'`fsys_ext2fs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-fsys_ext2fs.Tpo" "$(DEPDIR)/libgrub_a-fsys_ext2fs.Po"; else rm -f "$(DEPDIR)/libgrub_a-fsys_ext2fs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ext2fs.c' object='libgrub_a-fsys_ext2fs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_ext2fs.o `test -f 'fsys_ext2fs.c' || echo '$(srcdir)/'`fsys_ext2fs.c +- +-libgrub_a-fsys_ext2fs.obj: fsys_ext2fs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_ext2fs.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_ext2fs.Tpo" -c -o libgrub_a-fsys_ext2fs.obj `if test -f 'fsys_ext2fs.c'; then $(CYGPATH_W) 'fsys_ext2fs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ext2fs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-fsys_ext2fs.Tpo" "$(DEPDIR)/libgrub_a-fsys_ext2fs.Po"; else rm -f "$(DEPDIR)/libgrub_a-fsys_ext2fs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ext2fs.c' object='libgrub_a-fsys_ext2fs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_ext2fs.obj `if test -f 'fsys_ext2fs.c'; then $(CYGPATH_W) 'fsys_ext2fs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ext2fs.c'; fi` +- +-libgrub_a-fsys_fat.o: fsys_fat.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_fat.o -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_fat.Tpo" -c -o libgrub_a-fsys_fat.o `test -f 'fsys_fat.c' || echo '$(srcdir)/'`fsys_fat.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-fsys_fat.Tpo" "$(DEPDIR)/libgrub_a-fsys_fat.Po"; else rm -f "$(DEPDIR)/libgrub_a-fsys_fat.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_fat.c' object='libgrub_a-fsys_fat.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_fat.o `test -f 'fsys_fat.c' || echo '$(srcdir)/'`fsys_fat.c +- +-libgrub_a-fsys_fat.obj: fsys_fat.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_fat.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_fat.Tpo" -c -o libgrub_a-fsys_fat.obj `if test -f 'fsys_fat.c'; then $(CYGPATH_W) 'fsys_fat.c'; else $(CYGPATH_W) '$(srcdir)/fsys_fat.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-fsys_fat.Tpo" "$(DEPDIR)/libgrub_a-fsys_fat.Po"; else rm -f "$(DEPDIR)/libgrub_a-fsys_fat.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_fat.c' object='libgrub_a-fsys_fat.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_fat.obj `if test -f 'fsys_fat.c'; then $(CYGPATH_W) 'fsys_fat.c'; else $(CYGPATH_W) '$(srcdir)/fsys_fat.c'; fi` +- +-libgrub_a-fsys_ffs.o: fsys_ffs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_ffs.o -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_ffs.Tpo" -c -o libgrub_a-fsys_ffs.o `test -f 'fsys_ffs.c' || echo '$(srcdir)/'`fsys_ffs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-fsys_ffs.Tpo" "$(DEPDIR)/libgrub_a-fsys_ffs.Po"; else rm -f "$(DEPDIR)/libgrub_a-fsys_ffs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ffs.c' object='libgrub_a-fsys_ffs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_ffs.o `test -f 'fsys_ffs.c' || echo '$(srcdir)/'`fsys_ffs.c +- +-libgrub_a-fsys_ffs.obj: fsys_ffs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_ffs.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_ffs.Tpo" -c -o libgrub_a-fsys_ffs.obj `if test -f 'fsys_ffs.c'; then $(CYGPATH_W) 'fsys_ffs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ffs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-fsys_ffs.Tpo" "$(DEPDIR)/libgrub_a-fsys_ffs.Po"; else rm -f "$(DEPDIR)/libgrub_a-fsys_ffs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ffs.c' object='libgrub_a-fsys_ffs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_ffs.obj `if test -f 'fsys_ffs.c'; then $(CYGPATH_W) 'fsys_ffs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ffs.c'; fi` +- +-libgrub_a-fsys_iso9660.o: fsys_iso9660.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_iso9660.o -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_iso9660.Tpo" -c -o libgrub_a-fsys_iso9660.o `test -f 'fsys_iso9660.c' || echo '$(srcdir)/'`fsys_iso9660.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-fsys_iso9660.Tpo" "$(DEPDIR)/libgrub_a-fsys_iso9660.Po"; else rm -f "$(DEPDIR)/libgrub_a-fsys_iso9660.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_iso9660.c' object='libgrub_a-fsys_iso9660.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_iso9660.o `test -f 'fsys_iso9660.c' || echo '$(srcdir)/'`fsys_iso9660.c +- +-libgrub_a-fsys_iso9660.obj: fsys_iso9660.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_iso9660.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_iso9660.Tpo" -c -o libgrub_a-fsys_iso9660.obj `if test -f 'fsys_iso9660.c'; then $(CYGPATH_W) 'fsys_iso9660.c'; else $(CYGPATH_W) '$(srcdir)/fsys_iso9660.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-fsys_iso9660.Tpo" "$(DEPDIR)/libgrub_a-fsys_iso9660.Po"; else rm -f "$(DEPDIR)/libgrub_a-fsys_iso9660.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_iso9660.c' object='libgrub_a-fsys_iso9660.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_iso9660.obj `if test -f 'fsys_iso9660.c'; then $(CYGPATH_W) 'fsys_iso9660.c'; else $(CYGPATH_W) '$(srcdir)/fsys_iso9660.c'; fi` +- +-libgrub_a-fsys_jfs.o: fsys_jfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_jfs.o -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_jfs.Tpo" -c -o libgrub_a-fsys_jfs.o `test -f 'fsys_jfs.c' || echo '$(srcdir)/'`fsys_jfs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-fsys_jfs.Tpo" "$(DEPDIR)/libgrub_a-fsys_jfs.Po"; else rm -f "$(DEPDIR)/libgrub_a-fsys_jfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_jfs.c' object='libgrub_a-fsys_jfs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_jfs.o `test -f 'fsys_jfs.c' || echo '$(srcdir)/'`fsys_jfs.c +- +-libgrub_a-fsys_jfs.obj: fsys_jfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_jfs.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_jfs.Tpo" -c -o libgrub_a-fsys_jfs.obj `if test -f 'fsys_jfs.c'; then $(CYGPATH_W) 'fsys_jfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_jfs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-fsys_jfs.Tpo" "$(DEPDIR)/libgrub_a-fsys_jfs.Po"; else rm -f "$(DEPDIR)/libgrub_a-fsys_jfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_jfs.c' object='libgrub_a-fsys_jfs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_jfs.obj `if test -f 'fsys_jfs.c'; then $(CYGPATH_W) 'fsys_jfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_jfs.c'; fi` +- +-libgrub_a-fsys_minix.o: fsys_minix.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_minix.o -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_minix.Tpo" -c -o libgrub_a-fsys_minix.o `test -f 'fsys_minix.c' || echo '$(srcdir)/'`fsys_minix.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-fsys_minix.Tpo" "$(DEPDIR)/libgrub_a-fsys_minix.Po"; else rm -f "$(DEPDIR)/libgrub_a-fsys_minix.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_minix.c' object='libgrub_a-fsys_minix.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_minix.o `test -f 'fsys_minix.c' || echo '$(srcdir)/'`fsys_minix.c +- +-libgrub_a-fsys_minix.obj: fsys_minix.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_minix.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_minix.Tpo" -c -o libgrub_a-fsys_minix.obj `if test -f 'fsys_minix.c'; then $(CYGPATH_W) 'fsys_minix.c'; else $(CYGPATH_W) '$(srcdir)/fsys_minix.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-fsys_minix.Tpo" "$(DEPDIR)/libgrub_a-fsys_minix.Po"; else rm -f "$(DEPDIR)/libgrub_a-fsys_minix.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_minix.c' object='libgrub_a-fsys_minix.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_minix.obj `if test -f 'fsys_minix.c'; then $(CYGPATH_W) 'fsys_minix.c'; else $(CYGPATH_W) '$(srcdir)/fsys_minix.c'; fi` +- +-libgrub_a-fsys_reiserfs.o: fsys_reiserfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_reiserfs.o -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_reiserfs.Tpo" -c -o libgrub_a-fsys_reiserfs.o `test -f 'fsys_reiserfs.c' || echo '$(srcdir)/'`fsys_reiserfs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-fsys_reiserfs.Tpo" "$(DEPDIR)/libgrub_a-fsys_reiserfs.Po"; else rm -f "$(DEPDIR)/libgrub_a-fsys_reiserfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_reiserfs.c' object='libgrub_a-fsys_reiserfs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_reiserfs.o `test -f 'fsys_reiserfs.c' || echo '$(srcdir)/'`fsys_reiserfs.c +- +-libgrub_a-fsys_reiserfs.obj: fsys_reiserfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_reiserfs.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_reiserfs.Tpo" -c -o libgrub_a-fsys_reiserfs.obj `if test -f 'fsys_reiserfs.c'; then $(CYGPATH_W) 'fsys_reiserfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_reiserfs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-fsys_reiserfs.Tpo" "$(DEPDIR)/libgrub_a-fsys_reiserfs.Po"; else rm -f "$(DEPDIR)/libgrub_a-fsys_reiserfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_reiserfs.c' object='libgrub_a-fsys_reiserfs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_reiserfs.obj `if test -f 'fsys_reiserfs.c'; then $(CYGPATH_W) 'fsys_reiserfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_reiserfs.c'; fi` +- +-libgrub_a-fsys_ufs2.o: fsys_ufs2.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_ufs2.o -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_ufs2.Tpo" -c -o libgrub_a-fsys_ufs2.o `test -f 'fsys_ufs2.c' || echo '$(srcdir)/'`fsys_ufs2.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-fsys_ufs2.Tpo" "$(DEPDIR)/libgrub_a-fsys_ufs2.Po"; else rm -f "$(DEPDIR)/libgrub_a-fsys_ufs2.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ufs2.c' object='libgrub_a-fsys_ufs2.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_ufs2.o `test -f 'fsys_ufs2.c' || echo '$(srcdir)/'`fsys_ufs2.c +- +-libgrub_a-fsys_ufs2.obj: fsys_ufs2.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_ufs2.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_ufs2.Tpo" -c -o libgrub_a-fsys_ufs2.obj `if test -f 'fsys_ufs2.c'; then $(CYGPATH_W) 'fsys_ufs2.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ufs2.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-fsys_ufs2.Tpo" "$(DEPDIR)/libgrub_a-fsys_ufs2.Po"; else rm -f "$(DEPDIR)/libgrub_a-fsys_ufs2.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ufs2.c' object='libgrub_a-fsys_ufs2.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_ufs2.obj `if test -f 'fsys_ufs2.c'; then $(CYGPATH_W) 'fsys_ufs2.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ufs2.c'; fi` +- +-libgrub_a-fsys_vstafs.o: fsys_vstafs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_vstafs.o -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_vstafs.Tpo" -c -o libgrub_a-fsys_vstafs.o `test -f 'fsys_vstafs.c' || echo '$(srcdir)/'`fsys_vstafs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-fsys_vstafs.Tpo" "$(DEPDIR)/libgrub_a-fsys_vstafs.Po"; else rm -f "$(DEPDIR)/libgrub_a-fsys_vstafs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_vstafs.c' object='libgrub_a-fsys_vstafs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_vstafs.o `test -f 'fsys_vstafs.c' || echo '$(srcdir)/'`fsys_vstafs.c +- +-libgrub_a-fsys_vstafs.obj: fsys_vstafs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_vstafs.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_vstafs.Tpo" -c -o libgrub_a-fsys_vstafs.obj `if test -f 'fsys_vstafs.c'; then $(CYGPATH_W) 'fsys_vstafs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_vstafs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-fsys_vstafs.Tpo" "$(DEPDIR)/libgrub_a-fsys_vstafs.Po"; else rm -f "$(DEPDIR)/libgrub_a-fsys_vstafs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_vstafs.c' object='libgrub_a-fsys_vstafs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_vstafs.obj `if test -f 'fsys_vstafs.c'; then $(CYGPATH_W) 'fsys_vstafs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_vstafs.c'; fi` +- +-libgrub_a-fsys_xfs.o: fsys_xfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_xfs.o -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_xfs.Tpo" -c -o libgrub_a-fsys_xfs.o `test -f 'fsys_xfs.c' || echo '$(srcdir)/'`fsys_xfs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-fsys_xfs.Tpo" "$(DEPDIR)/libgrub_a-fsys_xfs.Po"; else rm -f "$(DEPDIR)/libgrub_a-fsys_xfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_xfs.c' object='libgrub_a-fsys_xfs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_xfs.o `test -f 'fsys_xfs.c' || echo '$(srcdir)/'`fsys_xfs.c +- +-libgrub_a-fsys_xfs.obj: fsys_xfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_xfs.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_xfs.Tpo" -c -o libgrub_a-fsys_xfs.obj `if test -f 'fsys_xfs.c'; then $(CYGPATH_W) 'fsys_xfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_xfs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-fsys_xfs.Tpo" "$(DEPDIR)/libgrub_a-fsys_xfs.Po"; else rm -f "$(DEPDIR)/libgrub_a-fsys_xfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_xfs.c' object='libgrub_a-fsys_xfs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_xfs.obj `if test -f 'fsys_xfs.c'; then $(CYGPATH_W) 'fsys_xfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_xfs.c'; fi` +- +-libgrub_a-gunzip.o: gunzip.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-gunzip.o -MD -MP -MF "$(DEPDIR)/libgrub_a-gunzip.Tpo" -c -o libgrub_a-gunzip.o `test -f 'gunzip.c' || echo '$(srcdir)/'`gunzip.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-gunzip.Tpo" "$(DEPDIR)/libgrub_a-gunzip.Po"; else rm -f "$(DEPDIR)/libgrub_a-gunzip.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='gunzip.c' object='libgrub_a-gunzip.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-gunzip.o `test -f 'gunzip.c' || echo '$(srcdir)/'`gunzip.c +- +-libgrub_a-gunzip.obj: gunzip.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-gunzip.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-gunzip.Tpo" -c -o libgrub_a-gunzip.obj `if test -f 'gunzip.c'; then $(CYGPATH_W) 'gunzip.c'; else $(CYGPATH_W) '$(srcdir)/gunzip.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-gunzip.Tpo" "$(DEPDIR)/libgrub_a-gunzip.Po"; else rm -f "$(DEPDIR)/libgrub_a-gunzip.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='gunzip.c' object='libgrub_a-gunzip.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-gunzip.obj `if test -f 'gunzip.c'; then $(CYGPATH_W) 'gunzip.c'; else $(CYGPATH_W) '$(srcdir)/gunzip.c'; fi` +- +-libgrub_a-md5.o: md5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-md5.o -MD -MP -MF "$(DEPDIR)/libgrub_a-md5.Tpo" -c -o libgrub_a-md5.o `test -f 'md5.c' || echo '$(srcdir)/'`md5.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-md5.Tpo" "$(DEPDIR)/libgrub_a-md5.Po"; else rm -f "$(DEPDIR)/libgrub_a-md5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='md5.c' object='libgrub_a-md5.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-md5.o `test -f 'md5.c' || echo '$(srcdir)/'`md5.c +- +-libgrub_a-md5.obj: md5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-md5.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-md5.Tpo" -c -o libgrub_a-md5.obj `if test -f 'md5.c'; then $(CYGPATH_W) 'md5.c'; else $(CYGPATH_W) '$(srcdir)/md5.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-md5.Tpo" "$(DEPDIR)/libgrub_a-md5.Po"; else rm -f "$(DEPDIR)/libgrub_a-md5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='md5.c' object='libgrub_a-md5.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-md5.obj `if test -f 'md5.c'; then $(CYGPATH_W) 'md5.c'; else $(CYGPATH_W) '$(srcdir)/md5.c'; fi` +- +-libgrub_a-serial.o: serial.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-serial.o -MD -MP -MF "$(DEPDIR)/libgrub_a-serial.Tpo" -c -o libgrub_a-serial.o `test -f 'serial.c' || echo '$(srcdir)/'`serial.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-serial.Tpo" "$(DEPDIR)/libgrub_a-serial.Po"; else rm -f "$(DEPDIR)/libgrub_a-serial.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='serial.c' object='libgrub_a-serial.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-serial.o `test -f 'serial.c' || echo '$(srcdir)/'`serial.c +- +-libgrub_a-serial.obj: serial.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-serial.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-serial.Tpo" -c -o libgrub_a-serial.obj `if test -f 'serial.c'; then $(CYGPATH_W) 'serial.c'; else $(CYGPATH_W) '$(srcdir)/serial.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-serial.Tpo" "$(DEPDIR)/libgrub_a-serial.Po"; else rm -f "$(DEPDIR)/libgrub_a-serial.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='serial.c' object='libgrub_a-serial.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-serial.obj `if test -f 'serial.c'; then $(CYGPATH_W) 'serial.c'; else $(CYGPATH_W) '$(srcdir)/serial.c'; fi` +- +-libgrub_a-stage2.o: stage2.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-stage2.o -MD -MP -MF "$(DEPDIR)/libgrub_a-stage2.Tpo" -c -o libgrub_a-stage2.o `test -f 'stage2.c' || echo '$(srcdir)/'`stage2.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-stage2.Tpo" "$(DEPDIR)/libgrub_a-stage2.Po"; else rm -f "$(DEPDIR)/libgrub_a-stage2.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage2.c' object='libgrub_a-stage2.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-stage2.o `test -f 'stage2.c' || echo '$(srcdir)/'`stage2.c +- +-libgrub_a-stage2.obj: stage2.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-stage2.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-stage2.Tpo" -c -o libgrub_a-stage2.obj `if test -f 'stage2.c'; then $(CYGPATH_W) 'stage2.c'; else $(CYGPATH_W) '$(srcdir)/stage2.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-stage2.Tpo" "$(DEPDIR)/libgrub_a-stage2.Po"; else rm -f "$(DEPDIR)/libgrub_a-stage2.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage2.c' object='libgrub_a-stage2.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-stage2.obj `if test -f 'stage2.c'; then $(CYGPATH_W) 'stage2.c'; else $(CYGPATH_W) '$(srcdir)/stage2.c'; fi` +- +-libgrub_a-terminfo.o: terminfo.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-terminfo.o -MD -MP -MF "$(DEPDIR)/libgrub_a-terminfo.Tpo" -c -o libgrub_a-terminfo.o `test -f 'terminfo.c' || echo '$(srcdir)/'`terminfo.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-terminfo.Tpo" "$(DEPDIR)/libgrub_a-terminfo.Po"; else rm -f "$(DEPDIR)/libgrub_a-terminfo.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='terminfo.c' object='libgrub_a-terminfo.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-terminfo.o `test -f 'terminfo.c' || echo '$(srcdir)/'`terminfo.c +- +-libgrub_a-terminfo.obj: terminfo.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-terminfo.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-terminfo.Tpo" -c -o libgrub_a-terminfo.obj `if test -f 'terminfo.c'; then $(CYGPATH_W) 'terminfo.c'; else $(CYGPATH_W) '$(srcdir)/terminfo.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-terminfo.Tpo" "$(DEPDIR)/libgrub_a-terminfo.Po"; else rm -f "$(DEPDIR)/libgrub_a-terminfo.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='terminfo.c' object='libgrub_a-terminfo.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-terminfo.obj `if test -f 'terminfo.c'; then $(CYGPATH_W) 'terminfo.c'; else $(CYGPATH_W) '$(srcdir)/terminfo.c'; fi` +- +-libgrub_a-tparm.o: tparm.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-tparm.o -MD -MP -MF "$(DEPDIR)/libgrub_a-tparm.Tpo" -c -o libgrub_a-tparm.o `test -f 'tparm.c' || echo '$(srcdir)/'`tparm.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-tparm.Tpo" "$(DEPDIR)/libgrub_a-tparm.Po"; else rm -f "$(DEPDIR)/libgrub_a-tparm.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tparm.c' object='libgrub_a-tparm.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-tparm.o `test -f 'tparm.c' || echo '$(srcdir)/'`tparm.c +- +-libgrub_a-tparm.obj: tparm.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-tparm.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-tparm.Tpo" -c -o libgrub_a-tparm.obj `if test -f 'tparm.c'; then $(CYGPATH_W) 'tparm.c'; else $(CYGPATH_W) '$(srcdir)/tparm.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-tparm.Tpo" "$(DEPDIR)/libgrub_a-tparm.Po"; else rm -f "$(DEPDIR)/libgrub_a-tparm.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tparm.c' object='libgrub_a-tparm.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-tparm.obj `if test -f 'tparm.c'; then $(CYGPATH_W) 'tparm.c'; else $(CYGPATH_W) '$(srcdir)/tparm.c'; fi` +- +-diskless_exec-bios.o: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-bios.o -MD -MP -MF "$(DEPDIR)/diskless_exec-bios.Tpo" -c -o diskless_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-bios.Tpo" "$(DEPDIR)/diskless_exec-bios.Po"; else rm -f "$(DEPDIR)/diskless_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='diskless_exec-bios.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c +- +-diskless_exec-bios.obj: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-bios.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-bios.Tpo" -c -o diskless_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-bios.Tpo" "$(DEPDIR)/diskless_exec-bios.Po"; else rm -f "$(DEPDIR)/diskless_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='diskless_exec-bios.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi` +- +-diskless_exec-boot.o: boot.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-boot.o -MD -MP -MF "$(DEPDIR)/diskless_exec-boot.Tpo" -c -o diskless_exec-boot.o `test -f 'boot.c' || echo '$(srcdir)/'`boot.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-boot.Tpo" "$(DEPDIR)/diskless_exec-boot.Po"; else rm -f "$(DEPDIR)/diskless_exec-boot.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='boot.c' object='diskless_exec-boot.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-boot.o `test -f 'boot.c' || echo '$(srcdir)/'`boot.c +- +-diskless_exec-boot.obj: boot.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-boot.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-boot.Tpo" -c -o diskless_exec-boot.obj `if test -f 'boot.c'; then $(CYGPATH_W) 'boot.c'; else $(CYGPATH_W) '$(srcdir)/boot.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-boot.Tpo" "$(DEPDIR)/diskless_exec-boot.Po"; else rm -f "$(DEPDIR)/diskless_exec-boot.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='boot.c' object='diskless_exec-boot.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-boot.obj `if test -f 'boot.c'; then $(CYGPATH_W) 'boot.c'; else $(CYGPATH_W) '$(srcdir)/boot.c'; fi` +- +-diskless_exec-builtins.o: builtins.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-builtins.o -MD -MP -MF "$(DEPDIR)/diskless_exec-builtins.Tpo" -c -o diskless_exec-builtins.o `test -f 'builtins.c' || echo '$(srcdir)/'`builtins.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-builtins.Tpo" "$(DEPDIR)/diskless_exec-builtins.Po"; else rm -f "$(DEPDIR)/diskless_exec-builtins.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='builtins.c' object='diskless_exec-builtins.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-builtins.o `test -f 'builtins.c' || echo '$(srcdir)/'`builtins.c +- +-diskless_exec-builtins.obj: builtins.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-builtins.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-builtins.Tpo" -c -o diskless_exec-builtins.obj `if test -f 'builtins.c'; then $(CYGPATH_W) 'builtins.c'; else $(CYGPATH_W) '$(srcdir)/builtins.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-builtins.Tpo" "$(DEPDIR)/diskless_exec-builtins.Po"; else rm -f "$(DEPDIR)/diskless_exec-builtins.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='builtins.c' object='diskless_exec-builtins.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-builtins.obj `if test -f 'builtins.c'; then $(CYGPATH_W) 'builtins.c'; else $(CYGPATH_W) '$(srcdir)/builtins.c'; fi` +- +-diskless_exec-char_io.o: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-char_io.o -MD -MP -MF "$(DEPDIR)/diskless_exec-char_io.Tpo" -c -o diskless_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-char_io.Tpo" "$(DEPDIR)/diskless_exec-char_io.Po"; else rm -f "$(DEPDIR)/diskless_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='diskless_exec-char_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c +- +-diskless_exec-char_io.obj: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-char_io.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-char_io.Tpo" -c -o diskless_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-char_io.Tpo" "$(DEPDIR)/diskless_exec-char_io.Po"; else rm -f "$(DEPDIR)/diskless_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='diskless_exec-char_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi` +- +-diskless_exec-cmdline.o: cmdline.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-cmdline.o -MD -MP -MF "$(DEPDIR)/diskless_exec-cmdline.Tpo" -c -o diskless_exec-cmdline.o `test -f 'cmdline.c' || echo '$(srcdir)/'`cmdline.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-cmdline.Tpo" "$(DEPDIR)/diskless_exec-cmdline.Po"; else rm -f "$(DEPDIR)/diskless_exec-cmdline.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cmdline.c' object='diskless_exec-cmdline.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-cmdline.o `test -f 'cmdline.c' || echo '$(srcdir)/'`cmdline.c +- +-diskless_exec-cmdline.obj: cmdline.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-cmdline.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-cmdline.Tpo" -c -o diskless_exec-cmdline.obj `if test -f 'cmdline.c'; then $(CYGPATH_W) 'cmdline.c'; else $(CYGPATH_W) '$(srcdir)/cmdline.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-cmdline.Tpo" "$(DEPDIR)/diskless_exec-cmdline.Po"; else rm -f "$(DEPDIR)/diskless_exec-cmdline.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cmdline.c' object='diskless_exec-cmdline.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-cmdline.obj `if test -f 'cmdline.c'; then $(CYGPATH_W) 'cmdline.c'; else $(CYGPATH_W) '$(srcdir)/cmdline.c'; fi` +- +-diskless_exec-common.o: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-common.o -MD -MP -MF "$(DEPDIR)/diskless_exec-common.Tpo" -c -o diskless_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-common.Tpo" "$(DEPDIR)/diskless_exec-common.Po"; else rm -f "$(DEPDIR)/diskless_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='diskless_exec-common.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c +- +-diskless_exec-common.obj: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-common.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-common.Tpo" -c -o diskless_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-common.Tpo" "$(DEPDIR)/diskless_exec-common.Po"; else rm -f "$(DEPDIR)/diskless_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='diskless_exec-common.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi` +- +-diskless_exec-console.o: console.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-console.o -MD -MP -MF "$(DEPDIR)/diskless_exec-console.Tpo" -c -o diskless_exec-console.o `test -f 'console.c' || echo '$(srcdir)/'`console.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-console.Tpo" "$(DEPDIR)/diskless_exec-console.Po"; else rm -f "$(DEPDIR)/diskless_exec-console.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='console.c' object='diskless_exec-console.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-console.o `test -f 'console.c' || echo '$(srcdir)/'`console.c +- +-diskless_exec-console.obj: console.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-console.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-console.Tpo" -c -o diskless_exec-console.obj `if test -f 'console.c'; then $(CYGPATH_W) 'console.c'; else $(CYGPATH_W) '$(srcdir)/console.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-console.Tpo" "$(DEPDIR)/diskless_exec-console.Po"; else rm -f "$(DEPDIR)/diskless_exec-console.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='console.c' object='diskless_exec-console.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-console.obj `if test -f 'console.c'; then $(CYGPATH_W) 'console.c'; else $(CYGPATH_W) '$(srcdir)/console.c'; fi` +- +-diskless_exec-disk_io.o: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-disk_io.o -MD -MP -MF "$(DEPDIR)/diskless_exec-disk_io.Tpo" -c -o diskless_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-disk_io.Tpo" "$(DEPDIR)/diskless_exec-disk_io.Po"; else rm -f "$(DEPDIR)/diskless_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='diskless_exec-disk_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c +- +-diskless_exec-disk_io.obj: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-disk_io.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-disk_io.Tpo" -c -o diskless_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-disk_io.Tpo" "$(DEPDIR)/diskless_exec-disk_io.Po"; else rm -f "$(DEPDIR)/diskless_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='diskless_exec-disk_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi` +- +-diskless_exec-fsys_ext2fs.o: fsys_ext2fs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_ext2fs.o -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_ext2fs.Tpo" -c -o diskless_exec-fsys_ext2fs.o `test -f 'fsys_ext2fs.c' || echo '$(srcdir)/'`fsys_ext2fs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-fsys_ext2fs.Tpo" "$(DEPDIR)/diskless_exec-fsys_ext2fs.Po"; else rm -f "$(DEPDIR)/diskless_exec-fsys_ext2fs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ext2fs.c' object='diskless_exec-fsys_ext2fs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_ext2fs.o `test -f 'fsys_ext2fs.c' || echo '$(srcdir)/'`fsys_ext2fs.c +- +-diskless_exec-fsys_ext2fs.obj: fsys_ext2fs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_ext2fs.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_ext2fs.Tpo" -c -o diskless_exec-fsys_ext2fs.obj `if test -f 'fsys_ext2fs.c'; then $(CYGPATH_W) 'fsys_ext2fs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ext2fs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-fsys_ext2fs.Tpo" "$(DEPDIR)/diskless_exec-fsys_ext2fs.Po"; else rm -f "$(DEPDIR)/diskless_exec-fsys_ext2fs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ext2fs.c' object='diskless_exec-fsys_ext2fs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_ext2fs.obj `if test -f 'fsys_ext2fs.c'; then $(CYGPATH_W) 'fsys_ext2fs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ext2fs.c'; fi` +- +-diskless_exec-fsys_fat.o: fsys_fat.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_fat.o -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_fat.Tpo" -c -o diskless_exec-fsys_fat.o `test -f 'fsys_fat.c' || echo '$(srcdir)/'`fsys_fat.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-fsys_fat.Tpo" "$(DEPDIR)/diskless_exec-fsys_fat.Po"; else rm -f "$(DEPDIR)/diskless_exec-fsys_fat.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_fat.c' object='diskless_exec-fsys_fat.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_fat.o `test -f 'fsys_fat.c' || echo '$(srcdir)/'`fsys_fat.c +- +-diskless_exec-fsys_fat.obj: fsys_fat.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_fat.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_fat.Tpo" -c -o diskless_exec-fsys_fat.obj `if test -f 'fsys_fat.c'; then $(CYGPATH_W) 'fsys_fat.c'; else $(CYGPATH_W) '$(srcdir)/fsys_fat.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-fsys_fat.Tpo" "$(DEPDIR)/diskless_exec-fsys_fat.Po"; else rm -f "$(DEPDIR)/diskless_exec-fsys_fat.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_fat.c' object='diskless_exec-fsys_fat.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_fat.obj `if test -f 'fsys_fat.c'; then $(CYGPATH_W) 'fsys_fat.c'; else $(CYGPATH_W) '$(srcdir)/fsys_fat.c'; fi` +- +-diskless_exec-fsys_ffs.o: fsys_ffs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_ffs.o -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_ffs.Tpo" -c -o diskless_exec-fsys_ffs.o `test -f 'fsys_ffs.c' || echo '$(srcdir)/'`fsys_ffs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-fsys_ffs.Tpo" "$(DEPDIR)/diskless_exec-fsys_ffs.Po"; else rm -f "$(DEPDIR)/diskless_exec-fsys_ffs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ffs.c' object='diskless_exec-fsys_ffs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_ffs.o `test -f 'fsys_ffs.c' || echo '$(srcdir)/'`fsys_ffs.c +- +-diskless_exec-fsys_ffs.obj: fsys_ffs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_ffs.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_ffs.Tpo" -c -o diskless_exec-fsys_ffs.obj `if test -f 'fsys_ffs.c'; then $(CYGPATH_W) 'fsys_ffs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ffs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-fsys_ffs.Tpo" "$(DEPDIR)/diskless_exec-fsys_ffs.Po"; else rm -f "$(DEPDIR)/diskless_exec-fsys_ffs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ffs.c' object='diskless_exec-fsys_ffs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_ffs.obj `if test -f 'fsys_ffs.c'; then $(CYGPATH_W) 'fsys_ffs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ffs.c'; fi` +- +-diskless_exec-fsys_iso9660.o: fsys_iso9660.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_iso9660.o -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_iso9660.Tpo" -c -o diskless_exec-fsys_iso9660.o `test -f 'fsys_iso9660.c' || echo '$(srcdir)/'`fsys_iso9660.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-fsys_iso9660.Tpo" "$(DEPDIR)/diskless_exec-fsys_iso9660.Po"; else rm -f "$(DEPDIR)/diskless_exec-fsys_iso9660.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_iso9660.c' object='diskless_exec-fsys_iso9660.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_iso9660.o `test -f 'fsys_iso9660.c' || echo '$(srcdir)/'`fsys_iso9660.c +- +-diskless_exec-fsys_iso9660.obj: fsys_iso9660.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_iso9660.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_iso9660.Tpo" -c -o diskless_exec-fsys_iso9660.obj `if test -f 'fsys_iso9660.c'; then $(CYGPATH_W) 'fsys_iso9660.c'; else $(CYGPATH_W) '$(srcdir)/fsys_iso9660.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-fsys_iso9660.Tpo" "$(DEPDIR)/diskless_exec-fsys_iso9660.Po"; else rm -f "$(DEPDIR)/diskless_exec-fsys_iso9660.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_iso9660.c' object='diskless_exec-fsys_iso9660.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_iso9660.obj `if test -f 'fsys_iso9660.c'; then $(CYGPATH_W) 'fsys_iso9660.c'; else $(CYGPATH_W) '$(srcdir)/fsys_iso9660.c'; fi` +- +-diskless_exec-fsys_jfs.o: fsys_jfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_jfs.o -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_jfs.Tpo" -c -o diskless_exec-fsys_jfs.o `test -f 'fsys_jfs.c' || echo '$(srcdir)/'`fsys_jfs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-fsys_jfs.Tpo" "$(DEPDIR)/diskless_exec-fsys_jfs.Po"; else rm -f "$(DEPDIR)/diskless_exec-fsys_jfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_jfs.c' object='diskless_exec-fsys_jfs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_jfs.o `test -f 'fsys_jfs.c' || echo '$(srcdir)/'`fsys_jfs.c +- +-diskless_exec-fsys_jfs.obj: fsys_jfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_jfs.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_jfs.Tpo" -c -o diskless_exec-fsys_jfs.obj `if test -f 'fsys_jfs.c'; then $(CYGPATH_W) 'fsys_jfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_jfs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-fsys_jfs.Tpo" "$(DEPDIR)/diskless_exec-fsys_jfs.Po"; else rm -f "$(DEPDIR)/diskless_exec-fsys_jfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_jfs.c' object='diskless_exec-fsys_jfs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_jfs.obj `if test -f 'fsys_jfs.c'; then $(CYGPATH_W) 'fsys_jfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_jfs.c'; fi` +- +-diskless_exec-fsys_minix.o: fsys_minix.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_minix.o -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_minix.Tpo" -c -o diskless_exec-fsys_minix.o `test -f 'fsys_minix.c' || echo '$(srcdir)/'`fsys_minix.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-fsys_minix.Tpo" "$(DEPDIR)/diskless_exec-fsys_minix.Po"; else rm -f "$(DEPDIR)/diskless_exec-fsys_minix.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_minix.c' object='diskless_exec-fsys_minix.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_minix.o `test -f 'fsys_minix.c' || echo '$(srcdir)/'`fsys_minix.c +- +-diskless_exec-fsys_minix.obj: fsys_minix.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_minix.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_minix.Tpo" -c -o diskless_exec-fsys_minix.obj `if test -f 'fsys_minix.c'; then $(CYGPATH_W) 'fsys_minix.c'; else $(CYGPATH_W) '$(srcdir)/fsys_minix.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-fsys_minix.Tpo" "$(DEPDIR)/diskless_exec-fsys_minix.Po"; else rm -f "$(DEPDIR)/diskless_exec-fsys_minix.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_minix.c' object='diskless_exec-fsys_minix.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_minix.obj `if test -f 'fsys_minix.c'; then $(CYGPATH_W) 'fsys_minix.c'; else $(CYGPATH_W) '$(srcdir)/fsys_minix.c'; fi` +- +-diskless_exec-fsys_reiserfs.o: fsys_reiserfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_reiserfs.o -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_reiserfs.Tpo" -c -o diskless_exec-fsys_reiserfs.o `test -f 'fsys_reiserfs.c' || echo '$(srcdir)/'`fsys_reiserfs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-fsys_reiserfs.Tpo" "$(DEPDIR)/diskless_exec-fsys_reiserfs.Po"; else rm -f "$(DEPDIR)/diskless_exec-fsys_reiserfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_reiserfs.c' object='diskless_exec-fsys_reiserfs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_reiserfs.o `test -f 'fsys_reiserfs.c' || echo '$(srcdir)/'`fsys_reiserfs.c +- +-diskless_exec-fsys_reiserfs.obj: fsys_reiserfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_reiserfs.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_reiserfs.Tpo" -c -o diskless_exec-fsys_reiserfs.obj `if test -f 'fsys_reiserfs.c'; then $(CYGPATH_W) 'fsys_reiserfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_reiserfs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-fsys_reiserfs.Tpo" "$(DEPDIR)/diskless_exec-fsys_reiserfs.Po"; else rm -f "$(DEPDIR)/diskless_exec-fsys_reiserfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_reiserfs.c' object='diskless_exec-fsys_reiserfs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_reiserfs.obj `if test -f 'fsys_reiserfs.c'; then $(CYGPATH_W) 'fsys_reiserfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_reiserfs.c'; fi` +- +-diskless_exec-fsys_ufs2.o: fsys_ufs2.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_ufs2.o -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_ufs2.Tpo" -c -o diskless_exec-fsys_ufs2.o `test -f 'fsys_ufs2.c' || echo '$(srcdir)/'`fsys_ufs2.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-fsys_ufs2.Tpo" "$(DEPDIR)/diskless_exec-fsys_ufs2.Po"; else rm -f "$(DEPDIR)/diskless_exec-fsys_ufs2.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ufs2.c' object='diskless_exec-fsys_ufs2.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_ufs2.o `test -f 'fsys_ufs2.c' || echo '$(srcdir)/'`fsys_ufs2.c +- +-diskless_exec-fsys_ufs2.obj: fsys_ufs2.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_ufs2.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_ufs2.Tpo" -c -o diskless_exec-fsys_ufs2.obj `if test -f 'fsys_ufs2.c'; then $(CYGPATH_W) 'fsys_ufs2.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ufs2.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-fsys_ufs2.Tpo" "$(DEPDIR)/diskless_exec-fsys_ufs2.Po"; else rm -f "$(DEPDIR)/diskless_exec-fsys_ufs2.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ufs2.c' object='diskless_exec-fsys_ufs2.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_ufs2.obj `if test -f 'fsys_ufs2.c'; then $(CYGPATH_W) 'fsys_ufs2.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ufs2.c'; fi` +- +-diskless_exec-fsys_vstafs.o: fsys_vstafs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_vstafs.o -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_vstafs.Tpo" -c -o diskless_exec-fsys_vstafs.o `test -f 'fsys_vstafs.c' || echo '$(srcdir)/'`fsys_vstafs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-fsys_vstafs.Tpo" "$(DEPDIR)/diskless_exec-fsys_vstafs.Po"; else rm -f "$(DEPDIR)/diskless_exec-fsys_vstafs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_vstafs.c' object='diskless_exec-fsys_vstafs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_vstafs.o `test -f 'fsys_vstafs.c' || echo '$(srcdir)/'`fsys_vstafs.c +- +-diskless_exec-fsys_vstafs.obj: fsys_vstafs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_vstafs.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_vstafs.Tpo" -c -o diskless_exec-fsys_vstafs.obj `if test -f 'fsys_vstafs.c'; then $(CYGPATH_W) 'fsys_vstafs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_vstafs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-fsys_vstafs.Tpo" "$(DEPDIR)/diskless_exec-fsys_vstafs.Po"; else rm -f "$(DEPDIR)/diskless_exec-fsys_vstafs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_vstafs.c' object='diskless_exec-fsys_vstafs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_vstafs.obj `if test -f 'fsys_vstafs.c'; then $(CYGPATH_W) 'fsys_vstafs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_vstafs.c'; fi` +- +-diskless_exec-fsys_xfs.o: fsys_xfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_xfs.o -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_xfs.Tpo" -c -o diskless_exec-fsys_xfs.o `test -f 'fsys_xfs.c' || echo '$(srcdir)/'`fsys_xfs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-fsys_xfs.Tpo" "$(DEPDIR)/diskless_exec-fsys_xfs.Po"; else rm -f "$(DEPDIR)/diskless_exec-fsys_xfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_xfs.c' object='diskless_exec-fsys_xfs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_xfs.o `test -f 'fsys_xfs.c' || echo '$(srcdir)/'`fsys_xfs.c +- +-diskless_exec-fsys_xfs.obj: fsys_xfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_xfs.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_xfs.Tpo" -c -o diskless_exec-fsys_xfs.obj `if test -f 'fsys_xfs.c'; then $(CYGPATH_W) 'fsys_xfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_xfs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-fsys_xfs.Tpo" "$(DEPDIR)/diskless_exec-fsys_xfs.Po"; else rm -f "$(DEPDIR)/diskless_exec-fsys_xfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_xfs.c' object='diskless_exec-fsys_xfs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_xfs.obj `if test -f 'fsys_xfs.c'; then $(CYGPATH_W) 'fsys_xfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_xfs.c'; fi` +- +-diskless_exec-gunzip.o: gunzip.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-gunzip.o -MD -MP -MF "$(DEPDIR)/diskless_exec-gunzip.Tpo" -c -o diskless_exec-gunzip.o `test -f 'gunzip.c' || echo '$(srcdir)/'`gunzip.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-gunzip.Tpo" "$(DEPDIR)/diskless_exec-gunzip.Po"; else rm -f "$(DEPDIR)/diskless_exec-gunzip.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='gunzip.c' object='diskless_exec-gunzip.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-gunzip.o `test -f 'gunzip.c' || echo '$(srcdir)/'`gunzip.c +- +-diskless_exec-gunzip.obj: gunzip.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-gunzip.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-gunzip.Tpo" -c -o diskless_exec-gunzip.obj `if test -f 'gunzip.c'; then $(CYGPATH_W) 'gunzip.c'; else $(CYGPATH_W) '$(srcdir)/gunzip.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-gunzip.Tpo" "$(DEPDIR)/diskless_exec-gunzip.Po"; else rm -f "$(DEPDIR)/diskless_exec-gunzip.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='gunzip.c' object='diskless_exec-gunzip.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-gunzip.obj `if test -f 'gunzip.c'; then $(CYGPATH_W) 'gunzip.c'; else $(CYGPATH_W) '$(srcdir)/gunzip.c'; fi` +- +-diskless_exec-hercules.o: hercules.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-hercules.o -MD -MP -MF "$(DEPDIR)/diskless_exec-hercules.Tpo" -c -o diskless_exec-hercules.o `test -f 'hercules.c' || echo '$(srcdir)/'`hercules.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-hercules.Tpo" "$(DEPDIR)/diskless_exec-hercules.Po"; else rm -f "$(DEPDIR)/diskless_exec-hercules.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='hercules.c' object='diskless_exec-hercules.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-hercules.o `test -f 'hercules.c' || echo '$(srcdir)/'`hercules.c +- +-diskless_exec-hercules.obj: hercules.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-hercules.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-hercules.Tpo" -c -o diskless_exec-hercules.obj `if test -f 'hercules.c'; then $(CYGPATH_W) 'hercules.c'; else $(CYGPATH_W) '$(srcdir)/hercules.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-hercules.Tpo" "$(DEPDIR)/diskless_exec-hercules.Po"; else rm -f "$(DEPDIR)/diskless_exec-hercules.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='hercules.c' object='diskless_exec-hercules.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-hercules.obj `if test -f 'hercules.c'; then $(CYGPATH_W) 'hercules.c'; else $(CYGPATH_W) '$(srcdir)/hercules.c'; fi` +- +-diskless_exec-md5.o: md5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-md5.o -MD -MP -MF "$(DEPDIR)/diskless_exec-md5.Tpo" -c -o diskless_exec-md5.o `test -f 'md5.c' || echo '$(srcdir)/'`md5.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-md5.Tpo" "$(DEPDIR)/diskless_exec-md5.Po"; else rm -f "$(DEPDIR)/diskless_exec-md5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='md5.c' object='diskless_exec-md5.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-md5.o `test -f 'md5.c' || echo '$(srcdir)/'`md5.c +- +-diskless_exec-md5.obj: md5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-md5.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-md5.Tpo" -c -o diskless_exec-md5.obj `if test -f 'md5.c'; then $(CYGPATH_W) 'md5.c'; else $(CYGPATH_W) '$(srcdir)/md5.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-md5.Tpo" "$(DEPDIR)/diskless_exec-md5.Po"; else rm -f "$(DEPDIR)/diskless_exec-md5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='md5.c' object='diskless_exec-md5.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-md5.obj `if test -f 'md5.c'; then $(CYGPATH_W) 'md5.c'; else $(CYGPATH_W) '$(srcdir)/md5.c'; fi` +- +-diskless_exec-serial.o: serial.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-serial.o -MD -MP -MF "$(DEPDIR)/diskless_exec-serial.Tpo" -c -o diskless_exec-serial.o `test -f 'serial.c' || echo '$(srcdir)/'`serial.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-serial.Tpo" "$(DEPDIR)/diskless_exec-serial.Po"; else rm -f "$(DEPDIR)/diskless_exec-serial.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='serial.c' object='diskless_exec-serial.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-serial.o `test -f 'serial.c' || echo '$(srcdir)/'`serial.c +- +-diskless_exec-serial.obj: serial.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-serial.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-serial.Tpo" -c -o diskless_exec-serial.obj `if test -f 'serial.c'; then $(CYGPATH_W) 'serial.c'; else $(CYGPATH_W) '$(srcdir)/serial.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-serial.Tpo" "$(DEPDIR)/diskless_exec-serial.Po"; else rm -f "$(DEPDIR)/diskless_exec-serial.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='serial.c' object='diskless_exec-serial.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-serial.obj `if test -f 'serial.c'; then $(CYGPATH_W) 'serial.c'; else $(CYGPATH_W) '$(srcdir)/serial.c'; fi` +- +-diskless_exec-smp-imps.o: smp-imps.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-smp-imps.o -MD -MP -MF "$(DEPDIR)/diskless_exec-smp-imps.Tpo" -c -o diskless_exec-smp-imps.o `test -f 'smp-imps.c' || echo '$(srcdir)/'`smp-imps.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-smp-imps.Tpo" "$(DEPDIR)/diskless_exec-smp-imps.Po"; else rm -f "$(DEPDIR)/diskless_exec-smp-imps.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='smp-imps.c' object='diskless_exec-smp-imps.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-smp-imps.o `test -f 'smp-imps.c' || echo '$(srcdir)/'`smp-imps.c +- +-diskless_exec-smp-imps.obj: smp-imps.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-smp-imps.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-smp-imps.Tpo" -c -o diskless_exec-smp-imps.obj `if test -f 'smp-imps.c'; then $(CYGPATH_W) 'smp-imps.c'; else $(CYGPATH_W) '$(srcdir)/smp-imps.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-smp-imps.Tpo" "$(DEPDIR)/diskless_exec-smp-imps.Po"; else rm -f "$(DEPDIR)/diskless_exec-smp-imps.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='smp-imps.c' object='diskless_exec-smp-imps.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-smp-imps.obj `if test -f 'smp-imps.c'; then $(CYGPATH_W) 'smp-imps.c'; else $(CYGPATH_W) '$(srcdir)/smp-imps.c'; fi` +- +-diskless_exec-stage2.o: stage2.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-stage2.o -MD -MP -MF "$(DEPDIR)/diskless_exec-stage2.Tpo" -c -o diskless_exec-stage2.o `test -f 'stage2.c' || echo '$(srcdir)/'`stage2.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-stage2.Tpo" "$(DEPDIR)/diskless_exec-stage2.Po"; else rm -f "$(DEPDIR)/diskless_exec-stage2.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage2.c' object='diskless_exec-stage2.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-stage2.o `test -f 'stage2.c' || echo '$(srcdir)/'`stage2.c +- +-diskless_exec-stage2.obj: stage2.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-stage2.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-stage2.Tpo" -c -o diskless_exec-stage2.obj `if test -f 'stage2.c'; then $(CYGPATH_W) 'stage2.c'; else $(CYGPATH_W) '$(srcdir)/stage2.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-stage2.Tpo" "$(DEPDIR)/diskless_exec-stage2.Po"; else rm -f "$(DEPDIR)/diskless_exec-stage2.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage2.c' object='diskless_exec-stage2.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-stage2.obj `if test -f 'stage2.c'; then $(CYGPATH_W) 'stage2.c'; else $(CYGPATH_W) '$(srcdir)/stage2.c'; fi` +- +-diskless_exec-terminfo.o: terminfo.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-terminfo.o -MD -MP -MF "$(DEPDIR)/diskless_exec-terminfo.Tpo" -c -o diskless_exec-terminfo.o `test -f 'terminfo.c' || echo '$(srcdir)/'`terminfo.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-terminfo.Tpo" "$(DEPDIR)/diskless_exec-terminfo.Po"; else rm -f "$(DEPDIR)/diskless_exec-terminfo.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='terminfo.c' object='diskless_exec-terminfo.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-terminfo.o `test -f 'terminfo.c' || echo '$(srcdir)/'`terminfo.c +- +-diskless_exec-terminfo.obj: terminfo.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-terminfo.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-terminfo.Tpo" -c -o diskless_exec-terminfo.obj `if test -f 'terminfo.c'; then $(CYGPATH_W) 'terminfo.c'; else $(CYGPATH_W) '$(srcdir)/terminfo.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-terminfo.Tpo" "$(DEPDIR)/diskless_exec-terminfo.Po"; else rm -f "$(DEPDIR)/diskless_exec-terminfo.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='terminfo.c' object='diskless_exec-terminfo.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-terminfo.obj `if test -f 'terminfo.c'; then $(CYGPATH_W) 'terminfo.c'; else $(CYGPATH_W) '$(srcdir)/terminfo.c'; fi` +- +-diskless_exec-tparm.o: tparm.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-tparm.o -MD -MP -MF "$(DEPDIR)/diskless_exec-tparm.Tpo" -c -o diskless_exec-tparm.o `test -f 'tparm.c' || echo '$(srcdir)/'`tparm.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-tparm.Tpo" "$(DEPDIR)/diskless_exec-tparm.Po"; else rm -f "$(DEPDIR)/diskless_exec-tparm.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tparm.c' object='diskless_exec-tparm.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-tparm.o `test -f 'tparm.c' || echo '$(srcdir)/'`tparm.c +- +-diskless_exec-tparm.obj: tparm.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-tparm.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-tparm.Tpo" -c -o diskless_exec-tparm.obj `if test -f 'tparm.c'; then $(CYGPATH_W) 'tparm.c'; else $(CYGPATH_W) '$(srcdir)/tparm.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-tparm.Tpo" "$(DEPDIR)/diskless_exec-tparm.Po"; else rm -f "$(DEPDIR)/diskless_exec-tparm.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tparm.c' object='diskless_exec-tparm.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-tparm.obj `if test -f 'tparm.c'; then $(CYGPATH_W) 'tparm.c'; else $(CYGPATH_W) '$(srcdir)/tparm.c'; fi` +- +-e2fs_stage1_5_exec-common.o: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT e2fs_stage1_5_exec-common.o -MD -MP -MF "$(DEPDIR)/e2fs_stage1_5_exec-common.Tpo" -c -o e2fs_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/e2fs_stage1_5_exec-common.Tpo" "$(DEPDIR)/e2fs_stage1_5_exec-common.Po"; else rm -f "$(DEPDIR)/e2fs_stage1_5_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='e2fs_stage1_5_exec-common.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o e2fs_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c +- +-e2fs_stage1_5_exec-common.obj: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT e2fs_stage1_5_exec-common.obj -MD -MP -MF "$(DEPDIR)/e2fs_stage1_5_exec-common.Tpo" -c -o e2fs_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/e2fs_stage1_5_exec-common.Tpo" "$(DEPDIR)/e2fs_stage1_5_exec-common.Po"; else rm -f "$(DEPDIR)/e2fs_stage1_5_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='e2fs_stage1_5_exec-common.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o e2fs_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi` +- +-e2fs_stage1_5_exec-char_io.o: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT e2fs_stage1_5_exec-char_io.o -MD -MP -MF "$(DEPDIR)/e2fs_stage1_5_exec-char_io.Tpo" -c -o e2fs_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/e2fs_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/e2fs_stage1_5_exec-char_io.Po"; else rm -f "$(DEPDIR)/e2fs_stage1_5_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='e2fs_stage1_5_exec-char_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o e2fs_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c +- +-e2fs_stage1_5_exec-char_io.obj: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT e2fs_stage1_5_exec-char_io.obj -MD -MP -MF "$(DEPDIR)/e2fs_stage1_5_exec-char_io.Tpo" -c -o e2fs_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/e2fs_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/e2fs_stage1_5_exec-char_io.Po"; else rm -f "$(DEPDIR)/e2fs_stage1_5_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='e2fs_stage1_5_exec-char_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o e2fs_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi` +- +-e2fs_stage1_5_exec-disk_io.o: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT e2fs_stage1_5_exec-disk_io.o -MD -MP -MF "$(DEPDIR)/e2fs_stage1_5_exec-disk_io.Tpo" -c -o e2fs_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/e2fs_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/e2fs_stage1_5_exec-disk_io.Po"; else rm -f "$(DEPDIR)/e2fs_stage1_5_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='e2fs_stage1_5_exec-disk_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o e2fs_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c +- +-e2fs_stage1_5_exec-disk_io.obj: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT e2fs_stage1_5_exec-disk_io.obj -MD -MP -MF "$(DEPDIR)/e2fs_stage1_5_exec-disk_io.Tpo" -c -o e2fs_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/e2fs_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/e2fs_stage1_5_exec-disk_io.Po"; else rm -f "$(DEPDIR)/e2fs_stage1_5_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='e2fs_stage1_5_exec-disk_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o e2fs_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi` +- +-e2fs_stage1_5_exec-stage1_5.o: stage1_5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT e2fs_stage1_5_exec-stage1_5.o -MD -MP -MF "$(DEPDIR)/e2fs_stage1_5_exec-stage1_5.Tpo" -c -o e2fs_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/e2fs_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/e2fs_stage1_5_exec-stage1_5.Po"; else rm -f "$(DEPDIR)/e2fs_stage1_5_exec-stage1_5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='e2fs_stage1_5_exec-stage1_5.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o e2fs_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c +- +-e2fs_stage1_5_exec-stage1_5.obj: stage1_5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT e2fs_stage1_5_exec-stage1_5.obj -MD -MP -MF "$(DEPDIR)/e2fs_stage1_5_exec-stage1_5.Tpo" -c -o e2fs_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/e2fs_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/e2fs_stage1_5_exec-stage1_5.Po"; else rm -f "$(DEPDIR)/e2fs_stage1_5_exec-stage1_5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='e2fs_stage1_5_exec-stage1_5.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o e2fs_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi` +- +-e2fs_stage1_5_exec-fsys_ext2fs.o: fsys_ext2fs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT e2fs_stage1_5_exec-fsys_ext2fs.o -MD -MP -MF "$(DEPDIR)/e2fs_stage1_5_exec-fsys_ext2fs.Tpo" -c -o e2fs_stage1_5_exec-fsys_ext2fs.o `test -f 'fsys_ext2fs.c' || echo '$(srcdir)/'`fsys_ext2fs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/e2fs_stage1_5_exec-fsys_ext2fs.Tpo" "$(DEPDIR)/e2fs_stage1_5_exec-fsys_ext2fs.Po"; else rm -f "$(DEPDIR)/e2fs_stage1_5_exec-fsys_ext2fs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ext2fs.c' object='e2fs_stage1_5_exec-fsys_ext2fs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o e2fs_stage1_5_exec-fsys_ext2fs.o `test -f 'fsys_ext2fs.c' || echo '$(srcdir)/'`fsys_ext2fs.c +- +-e2fs_stage1_5_exec-fsys_ext2fs.obj: fsys_ext2fs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT e2fs_stage1_5_exec-fsys_ext2fs.obj -MD -MP -MF "$(DEPDIR)/e2fs_stage1_5_exec-fsys_ext2fs.Tpo" -c -o e2fs_stage1_5_exec-fsys_ext2fs.obj `if test -f 'fsys_ext2fs.c'; then $(CYGPATH_W) 'fsys_ext2fs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ext2fs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/e2fs_stage1_5_exec-fsys_ext2fs.Tpo" "$(DEPDIR)/e2fs_stage1_5_exec-fsys_ext2fs.Po"; else rm -f "$(DEPDIR)/e2fs_stage1_5_exec-fsys_ext2fs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ext2fs.c' object='e2fs_stage1_5_exec-fsys_ext2fs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o e2fs_stage1_5_exec-fsys_ext2fs.obj `if test -f 'fsys_ext2fs.c'; then $(CYGPATH_W) 'fsys_ext2fs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ext2fs.c'; fi` +- +-e2fs_stage1_5_exec-bios.o: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT e2fs_stage1_5_exec-bios.o -MD -MP -MF "$(DEPDIR)/e2fs_stage1_5_exec-bios.Tpo" -c -o e2fs_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/e2fs_stage1_5_exec-bios.Tpo" "$(DEPDIR)/e2fs_stage1_5_exec-bios.Po"; else rm -f "$(DEPDIR)/e2fs_stage1_5_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='e2fs_stage1_5_exec-bios.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o e2fs_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c +- +-e2fs_stage1_5_exec-bios.obj: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT e2fs_stage1_5_exec-bios.obj -MD -MP -MF "$(DEPDIR)/e2fs_stage1_5_exec-bios.Tpo" -c -o e2fs_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/e2fs_stage1_5_exec-bios.Tpo" "$(DEPDIR)/e2fs_stage1_5_exec-bios.Po"; else rm -f "$(DEPDIR)/e2fs_stage1_5_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='e2fs_stage1_5_exec-bios.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o e2fs_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi` +- +-fat_stage1_5_exec-common.o: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -MT fat_stage1_5_exec-common.o -MD -MP -MF "$(DEPDIR)/fat_stage1_5_exec-common.Tpo" -c -o fat_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/fat_stage1_5_exec-common.Tpo" "$(DEPDIR)/fat_stage1_5_exec-common.Po"; else rm -f "$(DEPDIR)/fat_stage1_5_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='fat_stage1_5_exec-common.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o fat_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c +- +-fat_stage1_5_exec-common.obj: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -MT fat_stage1_5_exec-common.obj -MD -MP -MF "$(DEPDIR)/fat_stage1_5_exec-common.Tpo" -c -o fat_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/fat_stage1_5_exec-common.Tpo" "$(DEPDIR)/fat_stage1_5_exec-common.Po"; else rm -f "$(DEPDIR)/fat_stage1_5_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='fat_stage1_5_exec-common.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o fat_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi` +- +-fat_stage1_5_exec-char_io.o: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -MT fat_stage1_5_exec-char_io.o -MD -MP -MF "$(DEPDIR)/fat_stage1_5_exec-char_io.Tpo" -c -o fat_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/fat_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/fat_stage1_5_exec-char_io.Po"; else rm -f "$(DEPDIR)/fat_stage1_5_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='fat_stage1_5_exec-char_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o fat_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c +- +-fat_stage1_5_exec-char_io.obj: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -MT fat_stage1_5_exec-char_io.obj -MD -MP -MF "$(DEPDIR)/fat_stage1_5_exec-char_io.Tpo" -c -o fat_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/fat_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/fat_stage1_5_exec-char_io.Po"; else rm -f "$(DEPDIR)/fat_stage1_5_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='fat_stage1_5_exec-char_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o fat_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi` +- +-fat_stage1_5_exec-disk_io.o: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -MT fat_stage1_5_exec-disk_io.o -MD -MP -MF "$(DEPDIR)/fat_stage1_5_exec-disk_io.Tpo" -c -o fat_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/fat_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/fat_stage1_5_exec-disk_io.Po"; else rm -f "$(DEPDIR)/fat_stage1_5_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='fat_stage1_5_exec-disk_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o fat_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c +- +-fat_stage1_5_exec-disk_io.obj: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -MT fat_stage1_5_exec-disk_io.obj -MD -MP -MF "$(DEPDIR)/fat_stage1_5_exec-disk_io.Tpo" -c -o fat_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/fat_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/fat_stage1_5_exec-disk_io.Po"; else rm -f "$(DEPDIR)/fat_stage1_5_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='fat_stage1_5_exec-disk_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o fat_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi` +- +-fat_stage1_5_exec-stage1_5.o: stage1_5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -MT fat_stage1_5_exec-stage1_5.o -MD -MP -MF "$(DEPDIR)/fat_stage1_5_exec-stage1_5.Tpo" -c -o fat_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/fat_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/fat_stage1_5_exec-stage1_5.Po"; else rm -f "$(DEPDIR)/fat_stage1_5_exec-stage1_5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='fat_stage1_5_exec-stage1_5.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o fat_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c +- +-fat_stage1_5_exec-stage1_5.obj: stage1_5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -MT fat_stage1_5_exec-stage1_5.obj -MD -MP -MF "$(DEPDIR)/fat_stage1_5_exec-stage1_5.Tpo" -c -o fat_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/fat_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/fat_stage1_5_exec-stage1_5.Po"; else rm -f "$(DEPDIR)/fat_stage1_5_exec-stage1_5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='fat_stage1_5_exec-stage1_5.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o fat_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi` +- +-fat_stage1_5_exec-fsys_fat.o: fsys_fat.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -MT fat_stage1_5_exec-fsys_fat.o -MD -MP -MF "$(DEPDIR)/fat_stage1_5_exec-fsys_fat.Tpo" -c -o fat_stage1_5_exec-fsys_fat.o `test -f 'fsys_fat.c' || echo '$(srcdir)/'`fsys_fat.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/fat_stage1_5_exec-fsys_fat.Tpo" "$(DEPDIR)/fat_stage1_5_exec-fsys_fat.Po"; else rm -f "$(DEPDIR)/fat_stage1_5_exec-fsys_fat.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_fat.c' object='fat_stage1_5_exec-fsys_fat.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o fat_stage1_5_exec-fsys_fat.o `test -f 'fsys_fat.c' || echo '$(srcdir)/'`fsys_fat.c +- +-fat_stage1_5_exec-fsys_fat.obj: fsys_fat.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -MT fat_stage1_5_exec-fsys_fat.obj -MD -MP -MF "$(DEPDIR)/fat_stage1_5_exec-fsys_fat.Tpo" -c -o fat_stage1_5_exec-fsys_fat.obj `if test -f 'fsys_fat.c'; then $(CYGPATH_W) 'fsys_fat.c'; else $(CYGPATH_W) '$(srcdir)/fsys_fat.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/fat_stage1_5_exec-fsys_fat.Tpo" "$(DEPDIR)/fat_stage1_5_exec-fsys_fat.Po"; else rm -f "$(DEPDIR)/fat_stage1_5_exec-fsys_fat.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_fat.c' object='fat_stage1_5_exec-fsys_fat.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o fat_stage1_5_exec-fsys_fat.obj `if test -f 'fsys_fat.c'; then $(CYGPATH_W) 'fsys_fat.c'; else $(CYGPATH_W) '$(srcdir)/fsys_fat.c'; fi` +- +-fat_stage1_5_exec-bios.o: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -MT fat_stage1_5_exec-bios.o -MD -MP -MF "$(DEPDIR)/fat_stage1_5_exec-bios.Tpo" -c -o fat_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/fat_stage1_5_exec-bios.Tpo" "$(DEPDIR)/fat_stage1_5_exec-bios.Po"; else rm -f "$(DEPDIR)/fat_stage1_5_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='fat_stage1_5_exec-bios.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o fat_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c +- +-fat_stage1_5_exec-bios.obj: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -MT fat_stage1_5_exec-bios.obj -MD -MP -MF "$(DEPDIR)/fat_stage1_5_exec-bios.Tpo" -c -o fat_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/fat_stage1_5_exec-bios.Tpo" "$(DEPDIR)/fat_stage1_5_exec-bios.Po"; else rm -f "$(DEPDIR)/fat_stage1_5_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='fat_stage1_5_exec-bios.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o fat_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi` +- +-ffs_stage1_5_exec-common.o: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ffs_stage1_5_exec-common.o -MD -MP -MF "$(DEPDIR)/ffs_stage1_5_exec-common.Tpo" -c -o ffs_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ffs_stage1_5_exec-common.Tpo" "$(DEPDIR)/ffs_stage1_5_exec-common.Po"; else rm -f "$(DEPDIR)/ffs_stage1_5_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='ffs_stage1_5_exec-common.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ffs_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c +- +-ffs_stage1_5_exec-common.obj: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ffs_stage1_5_exec-common.obj -MD -MP -MF "$(DEPDIR)/ffs_stage1_5_exec-common.Tpo" -c -o ffs_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ffs_stage1_5_exec-common.Tpo" "$(DEPDIR)/ffs_stage1_5_exec-common.Po"; else rm -f "$(DEPDIR)/ffs_stage1_5_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='ffs_stage1_5_exec-common.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ffs_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi` +- +-ffs_stage1_5_exec-char_io.o: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ffs_stage1_5_exec-char_io.o -MD -MP -MF "$(DEPDIR)/ffs_stage1_5_exec-char_io.Tpo" -c -o ffs_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ffs_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/ffs_stage1_5_exec-char_io.Po"; else rm -f "$(DEPDIR)/ffs_stage1_5_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='ffs_stage1_5_exec-char_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ffs_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c +- +-ffs_stage1_5_exec-char_io.obj: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ffs_stage1_5_exec-char_io.obj -MD -MP -MF "$(DEPDIR)/ffs_stage1_5_exec-char_io.Tpo" -c -o ffs_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ffs_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/ffs_stage1_5_exec-char_io.Po"; else rm -f "$(DEPDIR)/ffs_stage1_5_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='ffs_stage1_5_exec-char_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ffs_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi` +- +-ffs_stage1_5_exec-disk_io.o: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ffs_stage1_5_exec-disk_io.o -MD -MP -MF "$(DEPDIR)/ffs_stage1_5_exec-disk_io.Tpo" -c -o ffs_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ffs_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/ffs_stage1_5_exec-disk_io.Po"; else rm -f "$(DEPDIR)/ffs_stage1_5_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='ffs_stage1_5_exec-disk_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ffs_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c +- +-ffs_stage1_5_exec-disk_io.obj: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ffs_stage1_5_exec-disk_io.obj -MD -MP -MF "$(DEPDIR)/ffs_stage1_5_exec-disk_io.Tpo" -c -o ffs_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ffs_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/ffs_stage1_5_exec-disk_io.Po"; else rm -f "$(DEPDIR)/ffs_stage1_5_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='ffs_stage1_5_exec-disk_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ffs_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi` +- +-ffs_stage1_5_exec-stage1_5.o: stage1_5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ffs_stage1_5_exec-stage1_5.o -MD -MP -MF "$(DEPDIR)/ffs_stage1_5_exec-stage1_5.Tpo" -c -o ffs_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ffs_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/ffs_stage1_5_exec-stage1_5.Po"; else rm -f "$(DEPDIR)/ffs_stage1_5_exec-stage1_5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='ffs_stage1_5_exec-stage1_5.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ffs_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c +- +-ffs_stage1_5_exec-stage1_5.obj: stage1_5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ffs_stage1_5_exec-stage1_5.obj -MD -MP -MF "$(DEPDIR)/ffs_stage1_5_exec-stage1_5.Tpo" -c -o ffs_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ffs_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/ffs_stage1_5_exec-stage1_5.Po"; else rm -f "$(DEPDIR)/ffs_stage1_5_exec-stage1_5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='ffs_stage1_5_exec-stage1_5.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ffs_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi` +- +-ffs_stage1_5_exec-fsys_ffs.o: fsys_ffs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ffs_stage1_5_exec-fsys_ffs.o -MD -MP -MF "$(DEPDIR)/ffs_stage1_5_exec-fsys_ffs.Tpo" -c -o ffs_stage1_5_exec-fsys_ffs.o `test -f 'fsys_ffs.c' || echo '$(srcdir)/'`fsys_ffs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ffs_stage1_5_exec-fsys_ffs.Tpo" "$(DEPDIR)/ffs_stage1_5_exec-fsys_ffs.Po"; else rm -f "$(DEPDIR)/ffs_stage1_5_exec-fsys_ffs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ffs.c' object='ffs_stage1_5_exec-fsys_ffs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ffs_stage1_5_exec-fsys_ffs.o `test -f 'fsys_ffs.c' || echo '$(srcdir)/'`fsys_ffs.c +- +-ffs_stage1_5_exec-fsys_ffs.obj: fsys_ffs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ffs_stage1_5_exec-fsys_ffs.obj -MD -MP -MF "$(DEPDIR)/ffs_stage1_5_exec-fsys_ffs.Tpo" -c -o ffs_stage1_5_exec-fsys_ffs.obj `if test -f 'fsys_ffs.c'; then $(CYGPATH_W) 'fsys_ffs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ffs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ffs_stage1_5_exec-fsys_ffs.Tpo" "$(DEPDIR)/ffs_stage1_5_exec-fsys_ffs.Po"; else rm -f "$(DEPDIR)/ffs_stage1_5_exec-fsys_ffs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ffs.c' object='ffs_stage1_5_exec-fsys_ffs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ffs_stage1_5_exec-fsys_ffs.obj `if test -f 'fsys_ffs.c'; then $(CYGPATH_W) 'fsys_ffs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ffs.c'; fi` +- +-ffs_stage1_5_exec-bios.o: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ffs_stage1_5_exec-bios.o -MD -MP -MF "$(DEPDIR)/ffs_stage1_5_exec-bios.Tpo" -c -o ffs_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ffs_stage1_5_exec-bios.Tpo" "$(DEPDIR)/ffs_stage1_5_exec-bios.Po"; else rm -f "$(DEPDIR)/ffs_stage1_5_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='ffs_stage1_5_exec-bios.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ffs_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c +- +-ffs_stage1_5_exec-bios.obj: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ffs_stage1_5_exec-bios.obj -MD -MP -MF "$(DEPDIR)/ffs_stage1_5_exec-bios.Tpo" -c -o ffs_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ffs_stage1_5_exec-bios.Tpo" "$(DEPDIR)/ffs_stage1_5_exec-bios.Po"; else rm -f "$(DEPDIR)/ffs_stage1_5_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='ffs_stage1_5_exec-bios.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ffs_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi` +- +-iso9660_stage1_5_exec-common.o: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -MT iso9660_stage1_5_exec-common.o -MD -MP -MF "$(DEPDIR)/iso9660_stage1_5_exec-common.Tpo" -c -o iso9660_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iso9660_stage1_5_exec-common.Tpo" "$(DEPDIR)/iso9660_stage1_5_exec-common.Po"; else rm -f "$(DEPDIR)/iso9660_stage1_5_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='iso9660_stage1_5_exec-common.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o iso9660_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c +- +-iso9660_stage1_5_exec-common.obj: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -MT iso9660_stage1_5_exec-common.obj -MD -MP -MF "$(DEPDIR)/iso9660_stage1_5_exec-common.Tpo" -c -o iso9660_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iso9660_stage1_5_exec-common.Tpo" "$(DEPDIR)/iso9660_stage1_5_exec-common.Po"; else rm -f "$(DEPDIR)/iso9660_stage1_5_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='iso9660_stage1_5_exec-common.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o iso9660_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi` +- +-iso9660_stage1_5_exec-char_io.o: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -MT iso9660_stage1_5_exec-char_io.o -MD -MP -MF "$(DEPDIR)/iso9660_stage1_5_exec-char_io.Tpo" -c -o iso9660_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iso9660_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/iso9660_stage1_5_exec-char_io.Po"; else rm -f "$(DEPDIR)/iso9660_stage1_5_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='iso9660_stage1_5_exec-char_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o iso9660_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c +- +-iso9660_stage1_5_exec-char_io.obj: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -MT iso9660_stage1_5_exec-char_io.obj -MD -MP -MF "$(DEPDIR)/iso9660_stage1_5_exec-char_io.Tpo" -c -o iso9660_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iso9660_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/iso9660_stage1_5_exec-char_io.Po"; else rm -f "$(DEPDIR)/iso9660_stage1_5_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='iso9660_stage1_5_exec-char_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o iso9660_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi` +- +-iso9660_stage1_5_exec-disk_io.o: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -MT iso9660_stage1_5_exec-disk_io.o -MD -MP -MF "$(DEPDIR)/iso9660_stage1_5_exec-disk_io.Tpo" -c -o iso9660_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iso9660_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/iso9660_stage1_5_exec-disk_io.Po"; else rm -f "$(DEPDIR)/iso9660_stage1_5_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='iso9660_stage1_5_exec-disk_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o iso9660_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c +- +-iso9660_stage1_5_exec-disk_io.obj: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -MT iso9660_stage1_5_exec-disk_io.obj -MD -MP -MF "$(DEPDIR)/iso9660_stage1_5_exec-disk_io.Tpo" -c -o iso9660_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iso9660_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/iso9660_stage1_5_exec-disk_io.Po"; else rm -f "$(DEPDIR)/iso9660_stage1_5_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='iso9660_stage1_5_exec-disk_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o iso9660_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi` +- +-iso9660_stage1_5_exec-stage1_5.o: stage1_5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -MT iso9660_stage1_5_exec-stage1_5.o -MD -MP -MF "$(DEPDIR)/iso9660_stage1_5_exec-stage1_5.Tpo" -c -o iso9660_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iso9660_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/iso9660_stage1_5_exec-stage1_5.Po"; else rm -f "$(DEPDIR)/iso9660_stage1_5_exec-stage1_5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='iso9660_stage1_5_exec-stage1_5.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o iso9660_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c +- +-iso9660_stage1_5_exec-stage1_5.obj: stage1_5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -MT iso9660_stage1_5_exec-stage1_5.obj -MD -MP -MF "$(DEPDIR)/iso9660_stage1_5_exec-stage1_5.Tpo" -c -o iso9660_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iso9660_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/iso9660_stage1_5_exec-stage1_5.Po"; else rm -f "$(DEPDIR)/iso9660_stage1_5_exec-stage1_5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='iso9660_stage1_5_exec-stage1_5.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o iso9660_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi` +- +-iso9660_stage1_5_exec-fsys_iso9660.o: fsys_iso9660.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -MT iso9660_stage1_5_exec-fsys_iso9660.o -MD -MP -MF "$(DEPDIR)/iso9660_stage1_5_exec-fsys_iso9660.Tpo" -c -o iso9660_stage1_5_exec-fsys_iso9660.o `test -f 'fsys_iso9660.c' || echo '$(srcdir)/'`fsys_iso9660.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iso9660_stage1_5_exec-fsys_iso9660.Tpo" "$(DEPDIR)/iso9660_stage1_5_exec-fsys_iso9660.Po"; else rm -f "$(DEPDIR)/iso9660_stage1_5_exec-fsys_iso9660.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_iso9660.c' object='iso9660_stage1_5_exec-fsys_iso9660.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o iso9660_stage1_5_exec-fsys_iso9660.o `test -f 'fsys_iso9660.c' || echo '$(srcdir)/'`fsys_iso9660.c +- +-iso9660_stage1_5_exec-fsys_iso9660.obj: fsys_iso9660.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -MT iso9660_stage1_5_exec-fsys_iso9660.obj -MD -MP -MF "$(DEPDIR)/iso9660_stage1_5_exec-fsys_iso9660.Tpo" -c -o iso9660_stage1_5_exec-fsys_iso9660.obj `if test -f 'fsys_iso9660.c'; then $(CYGPATH_W) 'fsys_iso9660.c'; else $(CYGPATH_W) '$(srcdir)/fsys_iso9660.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iso9660_stage1_5_exec-fsys_iso9660.Tpo" "$(DEPDIR)/iso9660_stage1_5_exec-fsys_iso9660.Po"; else rm -f "$(DEPDIR)/iso9660_stage1_5_exec-fsys_iso9660.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_iso9660.c' object='iso9660_stage1_5_exec-fsys_iso9660.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o iso9660_stage1_5_exec-fsys_iso9660.obj `if test -f 'fsys_iso9660.c'; then $(CYGPATH_W) 'fsys_iso9660.c'; else $(CYGPATH_W) '$(srcdir)/fsys_iso9660.c'; fi` +- +-iso9660_stage1_5_exec-bios.o: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -MT iso9660_stage1_5_exec-bios.o -MD -MP -MF "$(DEPDIR)/iso9660_stage1_5_exec-bios.Tpo" -c -o iso9660_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iso9660_stage1_5_exec-bios.Tpo" "$(DEPDIR)/iso9660_stage1_5_exec-bios.Po"; else rm -f "$(DEPDIR)/iso9660_stage1_5_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='iso9660_stage1_5_exec-bios.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o iso9660_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c +- +-iso9660_stage1_5_exec-bios.obj: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -MT iso9660_stage1_5_exec-bios.obj -MD -MP -MF "$(DEPDIR)/iso9660_stage1_5_exec-bios.Tpo" -c -o iso9660_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iso9660_stage1_5_exec-bios.Tpo" "$(DEPDIR)/iso9660_stage1_5_exec-bios.Po"; else rm -f "$(DEPDIR)/iso9660_stage1_5_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='iso9660_stage1_5_exec-bios.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o iso9660_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi` +- +-jfs_stage1_5_exec-common.o: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT jfs_stage1_5_exec-common.o -MD -MP -MF "$(DEPDIR)/jfs_stage1_5_exec-common.Tpo" -c -o jfs_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/jfs_stage1_5_exec-common.Tpo" "$(DEPDIR)/jfs_stage1_5_exec-common.Po"; else rm -f "$(DEPDIR)/jfs_stage1_5_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='jfs_stage1_5_exec-common.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o jfs_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c +- +-jfs_stage1_5_exec-common.obj: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT jfs_stage1_5_exec-common.obj -MD -MP -MF "$(DEPDIR)/jfs_stage1_5_exec-common.Tpo" -c -o jfs_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/jfs_stage1_5_exec-common.Tpo" "$(DEPDIR)/jfs_stage1_5_exec-common.Po"; else rm -f "$(DEPDIR)/jfs_stage1_5_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='jfs_stage1_5_exec-common.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o jfs_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi` +- +-jfs_stage1_5_exec-char_io.o: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT jfs_stage1_5_exec-char_io.o -MD -MP -MF "$(DEPDIR)/jfs_stage1_5_exec-char_io.Tpo" -c -o jfs_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/jfs_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/jfs_stage1_5_exec-char_io.Po"; else rm -f "$(DEPDIR)/jfs_stage1_5_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='jfs_stage1_5_exec-char_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o jfs_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c +- +-jfs_stage1_5_exec-char_io.obj: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT jfs_stage1_5_exec-char_io.obj -MD -MP -MF "$(DEPDIR)/jfs_stage1_5_exec-char_io.Tpo" -c -o jfs_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/jfs_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/jfs_stage1_5_exec-char_io.Po"; else rm -f "$(DEPDIR)/jfs_stage1_5_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='jfs_stage1_5_exec-char_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o jfs_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi` +- +-jfs_stage1_5_exec-disk_io.o: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT jfs_stage1_5_exec-disk_io.o -MD -MP -MF "$(DEPDIR)/jfs_stage1_5_exec-disk_io.Tpo" -c -o jfs_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/jfs_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/jfs_stage1_5_exec-disk_io.Po"; else rm -f "$(DEPDIR)/jfs_stage1_5_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='jfs_stage1_5_exec-disk_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o jfs_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c +- +-jfs_stage1_5_exec-disk_io.obj: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT jfs_stage1_5_exec-disk_io.obj -MD -MP -MF "$(DEPDIR)/jfs_stage1_5_exec-disk_io.Tpo" -c -o jfs_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/jfs_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/jfs_stage1_5_exec-disk_io.Po"; else rm -f "$(DEPDIR)/jfs_stage1_5_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='jfs_stage1_5_exec-disk_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o jfs_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi` +- +-jfs_stage1_5_exec-stage1_5.o: stage1_5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT jfs_stage1_5_exec-stage1_5.o -MD -MP -MF "$(DEPDIR)/jfs_stage1_5_exec-stage1_5.Tpo" -c -o jfs_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/jfs_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/jfs_stage1_5_exec-stage1_5.Po"; else rm -f "$(DEPDIR)/jfs_stage1_5_exec-stage1_5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='jfs_stage1_5_exec-stage1_5.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o jfs_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c +- +-jfs_stage1_5_exec-stage1_5.obj: stage1_5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT jfs_stage1_5_exec-stage1_5.obj -MD -MP -MF "$(DEPDIR)/jfs_stage1_5_exec-stage1_5.Tpo" -c -o jfs_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/jfs_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/jfs_stage1_5_exec-stage1_5.Po"; else rm -f "$(DEPDIR)/jfs_stage1_5_exec-stage1_5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='jfs_stage1_5_exec-stage1_5.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o jfs_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi` +- +-jfs_stage1_5_exec-fsys_jfs.o: fsys_jfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT jfs_stage1_5_exec-fsys_jfs.o -MD -MP -MF "$(DEPDIR)/jfs_stage1_5_exec-fsys_jfs.Tpo" -c -o jfs_stage1_5_exec-fsys_jfs.o `test -f 'fsys_jfs.c' || echo '$(srcdir)/'`fsys_jfs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/jfs_stage1_5_exec-fsys_jfs.Tpo" "$(DEPDIR)/jfs_stage1_5_exec-fsys_jfs.Po"; else rm -f "$(DEPDIR)/jfs_stage1_5_exec-fsys_jfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_jfs.c' object='jfs_stage1_5_exec-fsys_jfs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o jfs_stage1_5_exec-fsys_jfs.o `test -f 'fsys_jfs.c' || echo '$(srcdir)/'`fsys_jfs.c +- +-jfs_stage1_5_exec-fsys_jfs.obj: fsys_jfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT jfs_stage1_5_exec-fsys_jfs.obj -MD -MP -MF "$(DEPDIR)/jfs_stage1_5_exec-fsys_jfs.Tpo" -c -o jfs_stage1_5_exec-fsys_jfs.obj `if test -f 'fsys_jfs.c'; then $(CYGPATH_W) 'fsys_jfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_jfs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/jfs_stage1_5_exec-fsys_jfs.Tpo" "$(DEPDIR)/jfs_stage1_5_exec-fsys_jfs.Po"; else rm -f "$(DEPDIR)/jfs_stage1_5_exec-fsys_jfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_jfs.c' object='jfs_stage1_5_exec-fsys_jfs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o jfs_stage1_5_exec-fsys_jfs.obj `if test -f 'fsys_jfs.c'; then $(CYGPATH_W) 'fsys_jfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_jfs.c'; fi` +- +-jfs_stage1_5_exec-bios.o: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT jfs_stage1_5_exec-bios.o -MD -MP -MF "$(DEPDIR)/jfs_stage1_5_exec-bios.Tpo" -c -o jfs_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/jfs_stage1_5_exec-bios.Tpo" "$(DEPDIR)/jfs_stage1_5_exec-bios.Po"; else rm -f "$(DEPDIR)/jfs_stage1_5_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='jfs_stage1_5_exec-bios.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o jfs_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c +- +-jfs_stage1_5_exec-bios.obj: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT jfs_stage1_5_exec-bios.obj -MD -MP -MF "$(DEPDIR)/jfs_stage1_5_exec-bios.Tpo" -c -o jfs_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/jfs_stage1_5_exec-bios.Tpo" "$(DEPDIR)/jfs_stage1_5_exec-bios.Po"; else rm -f "$(DEPDIR)/jfs_stage1_5_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='jfs_stage1_5_exec-bios.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o jfs_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi` +- +-minix_stage1_5_exec-common.o: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -MT minix_stage1_5_exec-common.o -MD -MP -MF "$(DEPDIR)/minix_stage1_5_exec-common.Tpo" -c -o minix_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/minix_stage1_5_exec-common.Tpo" "$(DEPDIR)/minix_stage1_5_exec-common.Po"; else rm -f "$(DEPDIR)/minix_stage1_5_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='minix_stage1_5_exec-common.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o minix_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c +- +-minix_stage1_5_exec-common.obj: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -MT minix_stage1_5_exec-common.obj -MD -MP -MF "$(DEPDIR)/minix_stage1_5_exec-common.Tpo" -c -o minix_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/minix_stage1_5_exec-common.Tpo" "$(DEPDIR)/minix_stage1_5_exec-common.Po"; else rm -f "$(DEPDIR)/minix_stage1_5_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='minix_stage1_5_exec-common.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o minix_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi` +- +-minix_stage1_5_exec-char_io.o: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -MT minix_stage1_5_exec-char_io.o -MD -MP -MF "$(DEPDIR)/minix_stage1_5_exec-char_io.Tpo" -c -o minix_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/minix_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/minix_stage1_5_exec-char_io.Po"; else rm -f "$(DEPDIR)/minix_stage1_5_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='minix_stage1_5_exec-char_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o minix_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c +- +-minix_stage1_5_exec-char_io.obj: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -MT minix_stage1_5_exec-char_io.obj -MD -MP -MF "$(DEPDIR)/minix_stage1_5_exec-char_io.Tpo" -c -o minix_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/minix_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/minix_stage1_5_exec-char_io.Po"; else rm -f "$(DEPDIR)/minix_stage1_5_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='minix_stage1_5_exec-char_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o minix_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi` +- +-minix_stage1_5_exec-disk_io.o: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -MT minix_stage1_5_exec-disk_io.o -MD -MP -MF "$(DEPDIR)/minix_stage1_5_exec-disk_io.Tpo" -c -o minix_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/minix_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/minix_stage1_5_exec-disk_io.Po"; else rm -f "$(DEPDIR)/minix_stage1_5_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='minix_stage1_5_exec-disk_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o minix_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c +- +-minix_stage1_5_exec-disk_io.obj: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -MT minix_stage1_5_exec-disk_io.obj -MD -MP -MF "$(DEPDIR)/minix_stage1_5_exec-disk_io.Tpo" -c -o minix_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/minix_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/minix_stage1_5_exec-disk_io.Po"; else rm -f "$(DEPDIR)/minix_stage1_5_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='minix_stage1_5_exec-disk_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o minix_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi` +- +-minix_stage1_5_exec-stage1_5.o: stage1_5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -MT minix_stage1_5_exec-stage1_5.o -MD -MP -MF "$(DEPDIR)/minix_stage1_5_exec-stage1_5.Tpo" -c -o minix_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/minix_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/minix_stage1_5_exec-stage1_5.Po"; else rm -f "$(DEPDIR)/minix_stage1_5_exec-stage1_5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='minix_stage1_5_exec-stage1_5.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o minix_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c +- +-minix_stage1_5_exec-stage1_5.obj: stage1_5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -MT minix_stage1_5_exec-stage1_5.obj -MD -MP -MF "$(DEPDIR)/minix_stage1_5_exec-stage1_5.Tpo" -c -o minix_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/minix_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/minix_stage1_5_exec-stage1_5.Po"; else rm -f "$(DEPDIR)/minix_stage1_5_exec-stage1_5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='minix_stage1_5_exec-stage1_5.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o minix_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi` +- +-minix_stage1_5_exec-fsys_minix.o: fsys_minix.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -MT minix_stage1_5_exec-fsys_minix.o -MD -MP -MF "$(DEPDIR)/minix_stage1_5_exec-fsys_minix.Tpo" -c -o minix_stage1_5_exec-fsys_minix.o `test -f 'fsys_minix.c' || echo '$(srcdir)/'`fsys_minix.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/minix_stage1_5_exec-fsys_minix.Tpo" "$(DEPDIR)/minix_stage1_5_exec-fsys_minix.Po"; else rm -f "$(DEPDIR)/minix_stage1_5_exec-fsys_minix.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_minix.c' object='minix_stage1_5_exec-fsys_minix.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o minix_stage1_5_exec-fsys_minix.o `test -f 'fsys_minix.c' || echo '$(srcdir)/'`fsys_minix.c +- +-minix_stage1_5_exec-fsys_minix.obj: fsys_minix.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -MT minix_stage1_5_exec-fsys_minix.obj -MD -MP -MF "$(DEPDIR)/minix_stage1_5_exec-fsys_minix.Tpo" -c -o minix_stage1_5_exec-fsys_minix.obj `if test -f 'fsys_minix.c'; then $(CYGPATH_W) 'fsys_minix.c'; else $(CYGPATH_W) '$(srcdir)/fsys_minix.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/minix_stage1_5_exec-fsys_minix.Tpo" "$(DEPDIR)/minix_stage1_5_exec-fsys_minix.Po"; else rm -f "$(DEPDIR)/minix_stage1_5_exec-fsys_minix.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_minix.c' object='minix_stage1_5_exec-fsys_minix.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o minix_stage1_5_exec-fsys_minix.obj `if test -f 'fsys_minix.c'; then $(CYGPATH_W) 'fsys_minix.c'; else $(CYGPATH_W) '$(srcdir)/fsys_minix.c'; fi` +- +-minix_stage1_5_exec-bios.o: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -MT minix_stage1_5_exec-bios.o -MD -MP -MF "$(DEPDIR)/minix_stage1_5_exec-bios.Tpo" -c -o minix_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/minix_stage1_5_exec-bios.Tpo" "$(DEPDIR)/minix_stage1_5_exec-bios.Po"; else rm -f "$(DEPDIR)/minix_stage1_5_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='minix_stage1_5_exec-bios.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o minix_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c +- +-minix_stage1_5_exec-bios.obj: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -MT minix_stage1_5_exec-bios.obj -MD -MP -MF "$(DEPDIR)/minix_stage1_5_exec-bios.Tpo" -c -o minix_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/minix_stage1_5_exec-bios.Tpo" "$(DEPDIR)/minix_stage1_5_exec-bios.Po"; else rm -f "$(DEPDIR)/minix_stage1_5_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='minix_stage1_5_exec-bios.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o minix_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi` +- +-pre_stage2_exec-bios.o: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-bios.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-bios.Tpo" -c -o pre_stage2_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-bios.Tpo" "$(DEPDIR)/pre_stage2_exec-bios.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='pre_stage2_exec-bios.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c +- +-pre_stage2_exec-bios.obj: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-bios.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-bios.Tpo" -c -o pre_stage2_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-bios.Tpo" "$(DEPDIR)/pre_stage2_exec-bios.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='pre_stage2_exec-bios.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi` +- +-pre_stage2_exec-boot.o: boot.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-boot.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-boot.Tpo" -c -o pre_stage2_exec-boot.o `test -f 'boot.c' || echo '$(srcdir)/'`boot.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-boot.Tpo" "$(DEPDIR)/pre_stage2_exec-boot.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-boot.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='boot.c' object='pre_stage2_exec-boot.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-boot.o `test -f 'boot.c' || echo '$(srcdir)/'`boot.c +- +-pre_stage2_exec-boot.obj: boot.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-boot.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-boot.Tpo" -c -o pre_stage2_exec-boot.obj `if test -f 'boot.c'; then $(CYGPATH_W) 'boot.c'; else $(CYGPATH_W) '$(srcdir)/boot.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-boot.Tpo" "$(DEPDIR)/pre_stage2_exec-boot.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-boot.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='boot.c' object='pre_stage2_exec-boot.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-boot.obj `if test -f 'boot.c'; then $(CYGPATH_W) 'boot.c'; else $(CYGPATH_W) '$(srcdir)/boot.c'; fi` +- +-pre_stage2_exec-builtins.o: builtins.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-builtins.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-builtins.Tpo" -c -o pre_stage2_exec-builtins.o `test -f 'builtins.c' || echo '$(srcdir)/'`builtins.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-builtins.Tpo" "$(DEPDIR)/pre_stage2_exec-builtins.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-builtins.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='builtins.c' object='pre_stage2_exec-builtins.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-builtins.o `test -f 'builtins.c' || echo '$(srcdir)/'`builtins.c +- +-pre_stage2_exec-builtins.obj: builtins.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-builtins.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-builtins.Tpo" -c -o pre_stage2_exec-builtins.obj `if test -f 'builtins.c'; then $(CYGPATH_W) 'builtins.c'; else $(CYGPATH_W) '$(srcdir)/builtins.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-builtins.Tpo" "$(DEPDIR)/pre_stage2_exec-builtins.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-builtins.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='builtins.c' object='pre_stage2_exec-builtins.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-builtins.obj `if test -f 'builtins.c'; then $(CYGPATH_W) 'builtins.c'; else $(CYGPATH_W) '$(srcdir)/builtins.c'; fi` +- +-pre_stage2_exec-char_io.o: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-char_io.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-char_io.Tpo" -c -o pre_stage2_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-char_io.Tpo" "$(DEPDIR)/pre_stage2_exec-char_io.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='pre_stage2_exec-char_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c +- +-pre_stage2_exec-char_io.obj: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-char_io.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-char_io.Tpo" -c -o pre_stage2_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-char_io.Tpo" "$(DEPDIR)/pre_stage2_exec-char_io.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='pre_stage2_exec-char_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi` +- +-pre_stage2_exec-cmdline.o: cmdline.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-cmdline.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-cmdline.Tpo" -c -o pre_stage2_exec-cmdline.o `test -f 'cmdline.c' || echo '$(srcdir)/'`cmdline.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-cmdline.Tpo" "$(DEPDIR)/pre_stage2_exec-cmdline.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-cmdline.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cmdline.c' object='pre_stage2_exec-cmdline.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-cmdline.o `test -f 'cmdline.c' || echo '$(srcdir)/'`cmdline.c +- +-pre_stage2_exec-cmdline.obj: cmdline.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-cmdline.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-cmdline.Tpo" -c -o pre_stage2_exec-cmdline.obj `if test -f 'cmdline.c'; then $(CYGPATH_W) 'cmdline.c'; else $(CYGPATH_W) '$(srcdir)/cmdline.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-cmdline.Tpo" "$(DEPDIR)/pre_stage2_exec-cmdline.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-cmdline.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cmdline.c' object='pre_stage2_exec-cmdline.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-cmdline.obj `if test -f 'cmdline.c'; then $(CYGPATH_W) 'cmdline.c'; else $(CYGPATH_W) '$(srcdir)/cmdline.c'; fi` +- +-pre_stage2_exec-common.o: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-common.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-common.Tpo" -c -o pre_stage2_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-common.Tpo" "$(DEPDIR)/pre_stage2_exec-common.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='pre_stage2_exec-common.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c +- +-pre_stage2_exec-common.obj: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-common.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-common.Tpo" -c -o pre_stage2_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-common.Tpo" "$(DEPDIR)/pre_stage2_exec-common.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='pre_stage2_exec-common.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi` +- +-pre_stage2_exec-console.o: console.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-console.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-console.Tpo" -c -o pre_stage2_exec-console.o `test -f 'console.c' || echo '$(srcdir)/'`console.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-console.Tpo" "$(DEPDIR)/pre_stage2_exec-console.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-console.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='console.c' object='pre_stage2_exec-console.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-console.o `test -f 'console.c' || echo '$(srcdir)/'`console.c +- +-pre_stage2_exec-console.obj: console.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-console.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-console.Tpo" -c -o pre_stage2_exec-console.obj `if test -f 'console.c'; then $(CYGPATH_W) 'console.c'; else $(CYGPATH_W) '$(srcdir)/console.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-console.Tpo" "$(DEPDIR)/pre_stage2_exec-console.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-console.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='console.c' object='pre_stage2_exec-console.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-console.obj `if test -f 'console.c'; then $(CYGPATH_W) 'console.c'; else $(CYGPATH_W) '$(srcdir)/console.c'; fi` +- +-pre_stage2_exec-disk_io.o: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-disk_io.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-disk_io.Tpo" -c -o pre_stage2_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-disk_io.Tpo" "$(DEPDIR)/pre_stage2_exec-disk_io.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='pre_stage2_exec-disk_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c +- +-pre_stage2_exec-disk_io.obj: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-disk_io.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-disk_io.Tpo" -c -o pre_stage2_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-disk_io.Tpo" "$(DEPDIR)/pre_stage2_exec-disk_io.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='pre_stage2_exec-disk_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi` +- +-pre_stage2_exec-fsys_ext2fs.o: fsys_ext2fs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_ext2fs.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_ext2fs.Tpo" -c -o pre_stage2_exec-fsys_ext2fs.o `test -f 'fsys_ext2fs.c' || echo '$(srcdir)/'`fsys_ext2fs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-fsys_ext2fs.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_ext2fs.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_ext2fs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ext2fs.c' object='pre_stage2_exec-fsys_ext2fs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_ext2fs.o `test -f 'fsys_ext2fs.c' || echo '$(srcdir)/'`fsys_ext2fs.c +- +-pre_stage2_exec-fsys_ext2fs.obj: fsys_ext2fs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_ext2fs.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_ext2fs.Tpo" -c -o pre_stage2_exec-fsys_ext2fs.obj `if test -f 'fsys_ext2fs.c'; then $(CYGPATH_W) 'fsys_ext2fs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ext2fs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-fsys_ext2fs.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_ext2fs.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_ext2fs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ext2fs.c' object='pre_stage2_exec-fsys_ext2fs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_ext2fs.obj `if test -f 'fsys_ext2fs.c'; then $(CYGPATH_W) 'fsys_ext2fs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ext2fs.c'; fi` +- +-pre_stage2_exec-fsys_fat.o: fsys_fat.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_fat.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_fat.Tpo" -c -o pre_stage2_exec-fsys_fat.o `test -f 'fsys_fat.c' || echo '$(srcdir)/'`fsys_fat.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-fsys_fat.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_fat.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_fat.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_fat.c' object='pre_stage2_exec-fsys_fat.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_fat.o `test -f 'fsys_fat.c' || echo '$(srcdir)/'`fsys_fat.c +- +-pre_stage2_exec-fsys_fat.obj: fsys_fat.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_fat.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_fat.Tpo" -c -o pre_stage2_exec-fsys_fat.obj `if test -f 'fsys_fat.c'; then $(CYGPATH_W) 'fsys_fat.c'; else $(CYGPATH_W) '$(srcdir)/fsys_fat.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-fsys_fat.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_fat.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_fat.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_fat.c' object='pre_stage2_exec-fsys_fat.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_fat.obj `if test -f 'fsys_fat.c'; then $(CYGPATH_W) 'fsys_fat.c'; else $(CYGPATH_W) '$(srcdir)/fsys_fat.c'; fi` +- +-pre_stage2_exec-fsys_ffs.o: fsys_ffs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_ffs.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_ffs.Tpo" -c -o pre_stage2_exec-fsys_ffs.o `test -f 'fsys_ffs.c' || echo '$(srcdir)/'`fsys_ffs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-fsys_ffs.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_ffs.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_ffs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ffs.c' object='pre_stage2_exec-fsys_ffs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_ffs.o `test -f 'fsys_ffs.c' || echo '$(srcdir)/'`fsys_ffs.c +- +-pre_stage2_exec-fsys_ffs.obj: fsys_ffs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_ffs.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_ffs.Tpo" -c -o pre_stage2_exec-fsys_ffs.obj `if test -f 'fsys_ffs.c'; then $(CYGPATH_W) 'fsys_ffs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ffs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-fsys_ffs.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_ffs.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_ffs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ffs.c' object='pre_stage2_exec-fsys_ffs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_ffs.obj `if test -f 'fsys_ffs.c'; then $(CYGPATH_W) 'fsys_ffs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ffs.c'; fi` +- +-pre_stage2_exec-fsys_iso9660.o: fsys_iso9660.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_iso9660.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_iso9660.Tpo" -c -o pre_stage2_exec-fsys_iso9660.o `test -f 'fsys_iso9660.c' || echo '$(srcdir)/'`fsys_iso9660.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-fsys_iso9660.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_iso9660.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_iso9660.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_iso9660.c' object='pre_stage2_exec-fsys_iso9660.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_iso9660.o `test -f 'fsys_iso9660.c' || echo '$(srcdir)/'`fsys_iso9660.c +- +-pre_stage2_exec-fsys_iso9660.obj: fsys_iso9660.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_iso9660.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_iso9660.Tpo" -c -o pre_stage2_exec-fsys_iso9660.obj `if test -f 'fsys_iso9660.c'; then $(CYGPATH_W) 'fsys_iso9660.c'; else $(CYGPATH_W) '$(srcdir)/fsys_iso9660.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-fsys_iso9660.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_iso9660.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_iso9660.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_iso9660.c' object='pre_stage2_exec-fsys_iso9660.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_iso9660.obj `if test -f 'fsys_iso9660.c'; then $(CYGPATH_W) 'fsys_iso9660.c'; else $(CYGPATH_W) '$(srcdir)/fsys_iso9660.c'; fi` +- +-pre_stage2_exec-fsys_jfs.o: fsys_jfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_jfs.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_jfs.Tpo" -c -o pre_stage2_exec-fsys_jfs.o `test -f 'fsys_jfs.c' || echo '$(srcdir)/'`fsys_jfs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-fsys_jfs.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_jfs.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_jfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_jfs.c' object='pre_stage2_exec-fsys_jfs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_jfs.o `test -f 'fsys_jfs.c' || echo '$(srcdir)/'`fsys_jfs.c +- +-pre_stage2_exec-fsys_jfs.obj: fsys_jfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_jfs.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_jfs.Tpo" -c -o pre_stage2_exec-fsys_jfs.obj `if test -f 'fsys_jfs.c'; then $(CYGPATH_W) 'fsys_jfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_jfs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-fsys_jfs.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_jfs.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_jfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_jfs.c' object='pre_stage2_exec-fsys_jfs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_jfs.obj `if test -f 'fsys_jfs.c'; then $(CYGPATH_W) 'fsys_jfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_jfs.c'; fi` +- +-pre_stage2_exec-fsys_minix.o: fsys_minix.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_minix.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_minix.Tpo" -c -o pre_stage2_exec-fsys_minix.o `test -f 'fsys_minix.c' || echo '$(srcdir)/'`fsys_minix.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-fsys_minix.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_minix.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_minix.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_minix.c' object='pre_stage2_exec-fsys_minix.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_minix.o `test -f 'fsys_minix.c' || echo '$(srcdir)/'`fsys_minix.c +- +-pre_stage2_exec-fsys_minix.obj: fsys_minix.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_minix.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_minix.Tpo" -c -o pre_stage2_exec-fsys_minix.obj `if test -f 'fsys_minix.c'; then $(CYGPATH_W) 'fsys_minix.c'; else $(CYGPATH_W) '$(srcdir)/fsys_minix.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-fsys_minix.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_minix.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_minix.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_minix.c' object='pre_stage2_exec-fsys_minix.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_minix.obj `if test -f 'fsys_minix.c'; then $(CYGPATH_W) 'fsys_minix.c'; else $(CYGPATH_W) '$(srcdir)/fsys_minix.c'; fi` +- +-pre_stage2_exec-fsys_reiserfs.o: fsys_reiserfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_reiserfs.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_reiserfs.Tpo" -c -o pre_stage2_exec-fsys_reiserfs.o `test -f 'fsys_reiserfs.c' || echo '$(srcdir)/'`fsys_reiserfs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-fsys_reiserfs.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_reiserfs.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_reiserfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_reiserfs.c' object='pre_stage2_exec-fsys_reiserfs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_reiserfs.o `test -f 'fsys_reiserfs.c' || echo '$(srcdir)/'`fsys_reiserfs.c +- +-pre_stage2_exec-fsys_reiserfs.obj: fsys_reiserfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_reiserfs.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_reiserfs.Tpo" -c -o pre_stage2_exec-fsys_reiserfs.obj `if test -f 'fsys_reiserfs.c'; then $(CYGPATH_W) 'fsys_reiserfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_reiserfs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-fsys_reiserfs.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_reiserfs.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_reiserfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_reiserfs.c' object='pre_stage2_exec-fsys_reiserfs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_reiserfs.obj `if test -f 'fsys_reiserfs.c'; then $(CYGPATH_W) 'fsys_reiserfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_reiserfs.c'; fi` +- +-pre_stage2_exec-fsys_ufs2.o: fsys_ufs2.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_ufs2.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_ufs2.Tpo" -c -o pre_stage2_exec-fsys_ufs2.o `test -f 'fsys_ufs2.c' || echo '$(srcdir)/'`fsys_ufs2.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-fsys_ufs2.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_ufs2.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_ufs2.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ufs2.c' object='pre_stage2_exec-fsys_ufs2.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_ufs2.o `test -f 'fsys_ufs2.c' || echo '$(srcdir)/'`fsys_ufs2.c +- +-pre_stage2_exec-fsys_ufs2.obj: fsys_ufs2.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_ufs2.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_ufs2.Tpo" -c -o pre_stage2_exec-fsys_ufs2.obj `if test -f 'fsys_ufs2.c'; then $(CYGPATH_W) 'fsys_ufs2.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ufs2.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-fsys_ufs2.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_ufs2.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_ufs2.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ufs2.c' object='pre_stage2_exec-fsys_ufs2.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_ufs2.obj `if test -f 'fsys_ufs2.c'; then $(CYGPATH_W) 'fsys_ufs2.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ufs2.c'; fi` +- +-pre_stage2_exec-fsys_vstafs.o: fsys_vstafs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_vstafs.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_vstafs.Tpo" -c -o pre_stage2_exec-fsys_vstafs.o `test -f 'fsys_vstafs.c' || echo '$(srcdir)/'`fsys_vstafs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-fsys_vstafs.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_vstafs.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_vstafs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_vstafs.c' object='pre_stage2_exec-fsys_vstafs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_vstafs.o `test -f 'fsys_vstafs.c' || echo '$(srcdir)/'`fsys_vstafs.c +- +-pre_stage2_exec-fsys_vstafs.obj: fsys_vstafs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_vstafs.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_vstafs.Tpo" -c -o pre_stage2_exec-fsys_vstafs.obj `if test -f 'fsys_vstafs.c'; then $(CYGPATH_W) 'fsys_vstafs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_vstafs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-fsys_vstafs.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_vstafs.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_vstafs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_vstafs.c' object='pre_stage2_exec-fsys_vstafs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_vstafs.obj `if test -f 'fsys_vstafs.c'; then $(CYGPATH_W) 'fsys_vstafs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_vstafs.c'; fi` +- +-pre_stage2_exec-fsys_xfs.o: fsys_xfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_xfs.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_xfs.Tpo" -c -o pre_stage2_exec-fsys_xfs.o `test -f 'fsys_xfs.c' || echo '$(srcdir)/'`fsys_xfs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-fsys_xfs.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_xfs.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_xfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_xfs.c' object='pre_stage2_exec-fsys_xfs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_xfs.o `test -f 'fsys_xfs.c' || echo '$(srcdir)/'`fsys_xfs.c +- +-pre_stage2_exec-fsys_xfs.obj: fsys_xfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_xfs.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_xfs.Tpo" -c -o pre_stage2_exec-fsys_xfs.obj `if test -f 'fsys_xfs.c'; then $(CYGPATH_W) 'fsys_xfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_xfs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-fsys_xfs.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_xfs.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_xfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_xfs.c' object='pre_stage2_exec-fsys_xfs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_xfs.obj `if test -f 'fsys_xfs.c'; then $(CYGPATH_W) 'fsys_xfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_xfs.c'; fi` +- +-pre_stage2_exec-gunzip.o: gunzip.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-gunzip.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-gunzip.Tpo" -c -o pre_stage2_exec-gunzip.o `test -f 'gunzip.c' || echo '$(srcdir)/'`gunzip.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-gunzip.Tpo" "$(DEPDIR)/pre_stage2_exec-gunzip.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-gunzip.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='gunzip.c' object='pre_stage2_exec-gunzip.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-gunzip.o `test -f 'gunzip.c' || echo '$(srcdir)/'`gunzip.c +- +-pre_stage2_exec-gunzip.obj: gunzip.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-gunzip.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-gunzip.Tpo" -c -o pre_stage2_exec-gunzip.obj `if test -f 'gunzip.c'; then $(CYGPATH_W) 'gunzip.c'; else $(CYGPATH_W) '$(srcdir)/gunzip.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-gunzip.Tpo" "$(DEPDIR)/pre_stage2_exec-gunzip.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-gunzip.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='gunzip.c' object='pre_stage2_exec-gunzip.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-gunzip.obj `if test -f 'gunzip.c'; then $(CYGPATH_W) 'gunzip.c'; else $(CYGPATH_W) '$(srcdir)/gunzip.c'; fi` +- +-pre_stage2_exec-hercules.o: hercules.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-hercules.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-hercules.Tpo" -c -o pre_stage2_exec-hercules.o `test -f 'hercules.c' || echo '$(srcdir)/'`hercules.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-hercules.Tpo" "$(DEPDIR)/pre_stage2_exec-hercules.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-hercules.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='hercules.c' object='pre_stage2_exec-hercules.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-hercules.o `test -f 'hercules.c' || echo '$(srcdir)/'`hercules.c +- +-pre_stage2_exec-hercules.obj: hercules.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-hercules.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-hercules.Tpo" -c -o pre_stage2_exec-hercules.obj `if test -f 'hercules.c'; then $(CYGPATH_W) 'hercules.c'; else $(CYGPATH_W) '$(srcdir)/hercules.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-hercules.Tpo" "$(DEPDIR)/pre_stage2_exec-hercules.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-hercules.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='hercules.c' object='pre_stage2_exec-hercules.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-hercules.obj `if test -f 'hercules.c'; then $(CYGPATH_W) 'hercules.c'; else $(CYGPATH_W) '$(srcdir)/hercules.c'; fi` +- +-pre_stage2_exec-md5.o: md5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-md5.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-md5.Tpo" -c -o pre_stage2_exec-md5.o `test -f 'md5.c' || echo '$(srcdir)/'`md5.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-md5.Tpo" "$(DEPDIR)/pre_stage2_exec-md5.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-md5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='md5.c' object='pre_stage2_exec-md5.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-md5.o `test -f 'md5.c' || echo '$(srcdir)/'`md5.c +- +-pre_stage2_exec-md5.obj: md5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-md5.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-md5.Tpo" -c -o pre_stage2_exec-md5.obj `if test -f 'md5.c'; then $(CYGPATH_W) 'md5.c'; else $(CYGPATH_W) '$(srcdir)/md5.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-md5.Tpo" "$(DEPDIR)/pre_stage2_exec-md5.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-md5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='md5.c' object='pre_stage2_exec-md5.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-md5.obj `if test -f 'md5.c'; then $(CYGPATH_W) 'md5.c'; else $(CYGPATH_W) '$(srcdir)/md5.c'; fi` +- +-pre_stage2_exec-serial.o: serial.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-serial.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-serial.Tpo" -c -o pre_stage2_exec-serial.o `test -f 'serial.c' || echo '$(srcdir)/'`serial.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-serial.Tpo" "$(DEPDIR)/pre_stage2_exec-serial.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-serial.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='serial.c' object='pre_stage2_exec-serial.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-serial.o `test -f 'serial.c' || echo '$(srcdir)/'`serial.c +- +-pre_stage2_exec-serial.obj: serial.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-serial.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-serial.Tpo" -c -o pre_stage2_exec-serial.obj `if test -f 'serial.c'; then $(CYGPATH_W) 'serial.c'; else $(CYGPATH_W) '$(srcdir)/serial.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-serial.Tpo" "$(DEPDIR)/pre_stage2_exec-serial.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-serial.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='serial.c' object='pre_stage2_exec-serial.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-serial.obj `if test -f 'serial.c'; then $(CYGPATH_W) 'serial.c'; else $(CYGPATH_W) '$(srcdir)/serial.c'; fi` +- +-pre_stage2_exec-smp-imps.o: smp-imps.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-smp-imps.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-smp-imps.Tpo" -c -o pre_stage2_exec-smp-imps.o `test -f 'smp-imps.c' || echo '$(srcdir)/'`smp-imps.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-smp-imps.Tpo" "$(DEPDIR)/pre_stage2_exec-smp-imps.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-smp-imps.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='smp-imps.c' object='pre_stage2_exec-smp-imps.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-smp-imps.o `test -f 'smp-imps.c' || echo '$(srcdir)/'`smp-imps.c +- +-pre_stage2_exec-smp-imps.obj: smp-imps.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-smp-imps.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-smp-imps.Tpo" -c -o pre_stage2_exec-smp-imps.obj `if test -f 'smp-imps.c'; then $(CYGPATH_W) 'smp-imps.c'; else $(CYGPATH_W) '$(srcdir)/smp-imps.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-smp-imps.Tpo" "$(DEPDIR)/pre_stage2_exec-smp-imps.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-smp-imps.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='smp-imps.c' object='pre_stage2_exec-smp-imps.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-smp-imps.obj `if test -f 'smp-imps.c'; then $(CYGPATH_W) 'smp-imps.c'; else $(CYGPATH_W) '$(srcdir)/smp-imps.c'; fi` +- +-pre_stage2_exec-stage2.o: stage2.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-stage2.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-stage2.Tpo" -c -o pre_stage2_exec-stage2.o `test -f 'stage2.c' || echo '$(srcdir)/'`stage2.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-stage2.Tpo" "$(DEPDIR)/pre_stage2_exec-stage2.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-stage2.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage2.c' object='pre_stage2_exec-stage2.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-stage2.o `test -f 'stage2.c' || echo '$(srcdir)/'`stage2.c +- +-pre_stage2_exec-stage2.obj: stage2.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-stage2.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-stage2.Tpo" -c -o pre_stage2_exec-stage2.obj `if test -f 'stage2.c'; then $(CYGPATH_W) 'stage2.c'; else $(CYGPATH_W) '$(srcdir)/stage2.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-stage2.Tpo" "$(DEPDIR)/pre_stage2_exec-stage2.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-stage2.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage2.c' object='pre_stage2_exec-stage2.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-stage2.obj `if test -f 'stage2.c'; then $(CYGPATH_W) 'stage2.c'; else $(CYGPATH_W) '$(srcdir)/stage2.c'; fi` +- +-pre_stage2_exec-terminfo.o: terminfo.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-terminfo.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-terminfo.Tpo" -c -o pre_stage2_exec-terminfo.o `test -f 'terminfo.c' || echo '$(srcdir)/'`terminfo.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-terminfo.Tpo" "$(DEPDIR)/pre_stage2_exec-terminfo.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-terminfo.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='terminfo.c' object='pre_stage2_exec-terminfo.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-terminfo.o `test -f 'terminfo.c' || echo '$(srcdir)/'`terminfo.c +- +-pre_stage2_exec-terminfo.obj: terminfo.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-terminfo.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-terminfo.Tpo" -c -o pre_stage2_exec-terminfo.obj `if test -f 'terminfo.c'; then $(CYGPATH_W) 'terminfo.c'; else $(CYGPATH_W) '$(srcdir)/terminfo.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-terminfo.Tpo" "$(DEPDIR)/pre_stage2_exec-terminfo.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-terminfo.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='terminfo.c' object='pre_stage2_exec-terminfo.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-terminfo.obj `if test -f 'terminfo.c'; then $(CYGPATH_W) 'terminfo.c'; else $(CYGPATH_W) '$(srcdir)/terminfo.c'; fi` +- +-pre_stage2_exec-tparm.o: tparm.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-tparm.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-tparm.Tpo" -c -o pre_stage2_exec-tparm.o `test -f 'tparm.c' || echo '$(srcdir)/'`tparm.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-tparm.Tpo" "$(DEPDIR)/pre_stage2_exec-tparm.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-tparm.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tparm.c' object='pre_stage2_exec-tparm.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-tparm.o `test -f 'tparm.c' || echo '$(srcdir)/'`tparm.c +- +-pre_stage2_exec-tparm.obj: tparm.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-tparm.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-tparm.Tpo" -c -o pre_stage2_exec-tparm.obj `if test -f 'tparm.c'; then $(CYGPATH_W) 'tparm.c'; else $(CYGPATH_W) '$(srcdir)/tparm.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-tparm.Tpo" "$(DEPDIR)/pre_stage2_exec-tparm.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-tparm.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tparm.c' object='pre_stage2_exec-tparm.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-tparm.obj `if test -f 'tparm.c'; then $(CYGPATH_W) 'tparm.c'; else $(CYGPATH_W) '$(srcdir)/tparm.c'; fi` +- +-reiserfs_stage1_5_exec-common.o: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT reiserfs_stage1_5_exec-common.o -MD -MP -MF "$(DEPDIR)/reiserfs_stage1_5_exec-common.Tpo" -c -o reiserfs_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/reiserfs_stage1_5_exec-common.Tpo" "$(DEPDIR)/reiserfs_stage1_5_exec-common.Po"; else rm -f "$(DEPDIR)/reiserfs_stage1_5_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='reiserfs_stage1_5_exec-common.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o reiserfs_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c +- +-reiserfs_stage1_5_exec-common.obj: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT reiserfs_stage1_5_exec-common.obj -MD -MP -MF "$(DEPDIR)/reiserfs_stage1_5_exec-common.Tpo" -c -o reiserfs_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/reiserfs_stage1_5_exec-common.Tpo" "$(DEPDIR)/reiserfs_stage1_5_exec-common.Po"; else rm -f "$(DEPDIR)/reiserfs_stage1_5_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='reiserfs_stage1_5_exec-common.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o reiserfs_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi` +- +-reiserfs_stage1_5_exec-char_io.o: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT reiserfs_stage1_5_exec-char_io.o -MD -MP -MF "$(DEPDIR)/reiserfs_stage1_5_exec-char_io.Tpo" -c -o reiserfs_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/reiserfs_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/reiserfs_stage1_5_exec-char_io.Po"; else rm -f "$(DEPDIR)/reiserfs_stage1_5_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='reiserfs_stage1_5_exec-char_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o reiserfs_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c +- +-reiserfs_stage1_5_exec-char_io.obj: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT reiserfs_stage1_5_exec-char_io.obj -MD -MP -MF "$(DEPDIR)/reiserfs_stage1_5_exec-char_io.Tpo" -c -o reiserfs_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/reiserfs_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/reiserfs_stage1_5_exec-char_io.Po"; else rm -f "$(DEPDIR)/reiserfs_stage1_5_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='reiserfs_stage1_5_exec-char_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o reiserfs_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi` +- +-reiserfs_stage1_5_exec-disk_io.o: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT reiserfs_stage1_5_exec-disk_io.o -MD -MP -MF "$(DEPDIR)/reiserfs_stage1_5_exec-disk_io.Tpo" -c -o reiserfs_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/reiserfs_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/reiserfs_stage1_5_exec-disk_io.Po"; else rm -f "$(DEPDIR)/reiserfs_stage1_5_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='reiserfs_stage1_5_exec-disk_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o reiserfs_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c +- +-reiserfs_stage1_5_exec-disk_io.obj: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT reiserfs_stage1_5_exec-disk_io.obj -MD -MP -MF "$(DEPDIR)/reiserfs_stage1_5_exec-disk_io.Tpo" -c -o reiserfs_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/reiserfs_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/reiserfs_stage1_5_exec-disk_io.Po"; else rm -f "$(DEPDIR)/reiserfs_stage1_5_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='reiserfs_stage1_5_exec-disk_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o reiserfs_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi` +- +-reiserfs_stage1_5_exec-stage1_5.o: stage1_5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT reiserfs_stage1_5_exec-stage1_5.o -MD -MP -MF "$(DEPDIR)/reiserfs_stage1_5_exec-stage1_5.Tpo" -c -o reiserfs_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/reiserfs_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/reiserfs_stage1_5_exec-stage1_5.Po"; else rm -f "$(DEPDIR)/reiserfs_stage1_5_exec-stage1_5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='reiserfs_stage1_5_exec-stage1_5.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o reiserfs_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c +- +-reiserfs_stage1_5_exec-stage1_5.obj: stage1_5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT reiserfs_stage1_5_exec-stage1_5.obj -MD -MP -MF "$(DEPDIR)/reiserfs_stage1_5_exec-stage1_5.Tpo" -c -o reiserfs_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/reiserfs_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/reiserfs_stage1_5_exec-stage1_5.Po"; else rm -f "$(DEPDIR)/reiserfs_stage1_5_exec-stage1_5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='reiserfs_stage1_5_exec-stage1_5.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o reiserfs_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi` +- +-reiserfs_stage1_5_exec-fsys_reiserfs.o: fsys_reiserfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT reiserfs_stage1_5_exec-fsys_reiserfs.o -MD -MP -MF "$(DEPDIR)/reiserfs_stage1_5_exec-fsys_reiserfs.Tpo" -c -o reiserfs_stage1_5_exec-fsys_reiserfs.o `test -f 'fsys_reiserfs.c' || echo '$(srcdir)/'`fsys_reiserfs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/reiserfs_stage1_5_exec-fsys_reiserfs.Tpo" "$(DEPDIR)/reiserfs_stage1_5_exec-fsys_reiserfs.Po"; else rm -f "$(DEPDIR)/reiserfs_stage1_5_exec-fsys_reiserfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_reiserfs.c' object='reiserfs_stage1_5_exec-fsys_reiserfs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o reiserfs_stage1_5_exec-fsys_reiserfs.o `test -f 'fsys_reiserfs.c' || echo '$(srcdir)/'`fsys_reiserfs.c +- +-reiserfs_stage1_5_exec-fsys_reiserfs.obj: fsys_reiserfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT reiserfs_stage1_5_exec-fsys_reiserfs.obj -MD -MP -MF "$(DEPDIR)/reiserfs_stage1_5_exec-fsys_reiserfs.Tpo" -c -o reiserfs_stage1_5_exec-fsys_reiserfs.obj `if test -f 'fsys_reiserfs.c'; then $(CYGPATH_W) 'fsys_reiserfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_reiserfs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/reiserfs_stage1_5_exec-fsys_reiserfs.Tpo" "$(DEPDIR)/reiserfs_stage1_5_exec-fsys_reiserfs.Po"; else rm -f "$(DEPDIR)/reiserfs_stage1_5_exec-fsys_reiserfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_reiserfs.c' object='reiserfs_stage1_5_exec-fsys_reiserfs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o reiserfs_stage1_5_exec-fsys_reiserfs.obj `if test -f 'fsys_reiserfs.c'; then $(CYGPATH_W) 'fsys_reiserfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_reiserfs.c'; fi` +- +-reiserfs_stage1_5_exec-bios.o: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT reiserfs_stage1_5_exec-bios.o -MD -MP -MF "$(DEPDIR)/reiserfs_stage1_5_exec-bios.Tpo" -c -o reiserfs_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/reiserfs_stage1_5_exec-bios.Tpo" "$(DEPDIR)/reiserfs_stage1_5_exec-bios.Po"; else rm -f "$(DEPDIR)/reiserfs_stage1_5_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='reiserfs_stage1_5_exec-bios.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o reiserfs_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c +- +-reiserfs_stage1_5_exec-bios.obj: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT reiserfs_stage1_5_exec-bios.obj -MD -MP -MF "$(DEPDIR)/reiserfs_stage1_5_exec-bios.Tpo" -c -o reiserfs_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/reiserfs_stage1_5_exec-bios.Tpo" "$(DEPDIR)/reiserfs_stage1_5_exec-bios.Po"; else rm -f "$(DEPDIR)/reiserfs_stage1_5_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='reiserfs_stage1_5_exec-bios.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o reiserfs_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi` +- +-ufs2_stage1_5_exec-common.o: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ufs2_stage1_5_exec-common.o -MD -MP -MF "$(DEPDIR)/ufs2_stage1_5_exec-common.Tpo" -c -o ufs2_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ufs2_stage1_5_exec-common.Tpo" "$(DEPDIR)/ufs2_stage1_5_exec-common.Po"; else rm -f "$(DEPDIR)/ufs2_stage1_5_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='ufs2_stage1_5_exec-common.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ufs2_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c +- +-ufs2_stage1_5_exec-common.obj: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ufs2_stage1_5_exec-common.obj -MD -MP -MF "$(DEPDIR)/ufs2_stage1_5_exec-common.Tpo" -c -o ufs2_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ufs2_stage1_5_exec-common.Tpo" "$(DEPDIR)/ufs2_stage1_5_exec-common.Po"; else rm -f "$(DEPDIR)/ufs2_stage1_5_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='ufs2_stage1_5_exec-common.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ufs2_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi` +- +-ufs2_stage1_5_exec-char_io.o: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ufs2_stage1_5_exec-char_io.o -MD -MP -MF "$(DEPDIR)/ufs2_stage1_5_exec-char_io.Tpo" -c -o ufs2_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ufs2_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/ufs2_stage1_5_exec-char_io.Po"; else rm -f "$(DEPDIR)/ufs2_stage1_5_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='ufs2_stage1_5_exec-char_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ufs2_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c +- +-ufs2_stage1_5_exec-char_io.obj: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ufs2_stage1_5_exec-char_io.obj -MD -MP -MF "$(DEPDIR)/ufs2_stage1_5_exec-char_io.Tpo" -c -o ufs2_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ufs2_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/ufs2_stage1_5_exec-char_io.Po"; else rm -f "$(DEPDIR)/ufs2_stage1_5_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='ufs2_stage1_5_exec-char_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ufs2_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi` +- +-ufs2_stage1_5_exec-disk_io.o: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ufs2_stage1_5_exec-disk_io.o -MD -MP -MF "$(DEPDIR)/ufs2_stage1_5_exec-disk_io.Tpo" -c -o ufs2_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ufs2_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/ufs2_stage1_5_exec-disk_io.Po"; else rm -f "$(DEPDIR)/ufs2_stage1_5_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='ufs2_stage1_5_exec-disk_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ufs2_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c +- +-ufs2_stage1_5_exec-disk_io.obj: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ufs2_stage1_5_exec-disk_io.obj -MD -MP -MF "$(DEPDIR)/ufs2_stage1_5_exec-disk_io.Tpo" -c -o ufs2_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ufs2_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/ufs2_stage1_5_exec-disk_io.Po"; else rm -f "$(DEPDIR)/ufs2_stage1_5_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='ufs2_stage1_5_exec-disk_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ufs2_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi` +- +-ufs2_stage1_5_exec-stage1_5.o: stage1_5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ufs2_stage1_5_exec-stage1_5.o -MD -MP -MF "$(DEPDIR)/ufs2_stage1_5_exec-stage1_5.Tpo" -c -o ufs2_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ufs2_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/ufs2_stage1_5_exec-stage1_5.Po"; else rm -f "$(DEPDIR)/ufs2_stage1_5_exec-stage1_5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='ufs2_stage1_5_exec-stage1_5.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ufs2_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c +- +-ufs2_stage1_5_exec-stage1_5.obj: stage1_5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ufs2_stage1_5_exec-stage1_5.obj -MD -MP -MF "$(DEPDIR)/ufs2_stage1_5_exec-stage1_5.Tpo" -c -o ufs2_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ufs2_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/ufs2_stage1_5_exec-stage1_5.Po"; else rm -f "$(DEPDIR)/ufs2_stage1_5_exec-stage1_5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='ufs2_stage1_5_exec-stage1_5.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ufs2_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi` +- +-ufs2_stage1_5_exec-fsys_ufs2.o: fsys_ufs2.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ufs2_stage1_5_exec-fsys_ufs2.o -MD -MP -MF "$(DEPDIR)/ufs2_stage1_5_exec-fsys_ufs2.Tpo" -c -o ufs2_stage1_5_exec-fsys_ufs2.o `test -f 'fsys_ufs2.c' || echo '$(srcdir)/'`fsys_ufs2.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ufs2_stage1_5_exec-fsys_ufs2.Tpo" "$(DEPDIR)/ufs2_stage1_5_exec-fsys_ufs2.Po"; else rm -f "$(DEPDIR)/ufs2_stage1_5_exec-fsys_ufs2.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ufs2.c' object='ufs2_stage1_5_exec-fsys_ufs2.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ufs2_stage1_5_exec-fsys_ufs2.o `test -f 'fsys_ufs2.c' || echo '$(srcdir)/'`fsys_ufs2.c +- +-ufs2_stage1_5_exec-fsys_ufs2.obj: fsys_ufs2.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ufs2_stage1_5_exec-fsys_ufs2.obj -MD -MP -MF "$(DEPDIR)/ufs2_stage1_5_exec-fsys_ufs2.Tpo" -c -o ufs2_stage1_5_exec-fsys_ufs2.obj `if test -f 'fsys_ufs2.c'; then $(CYGPATH_W) 'fsys_ufs2.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ufs2.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ufs2_stage1_5_exec-fsys_ufs2.Tpo" "$(DEPDIR)/ufs2_stage1_5_exec-fsys_ufs2.Po"; else rm -f "$(DEPDIR)/ufs2_stage1_5_exec-fsys_ufs2.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ufs2.c' object='ufs2_stage1_5_exec-fsys_ufs2.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ufs2_stage1_5_exec-fsys_ufs2.obj `if test -f 'fsys_ufs2.c'; then $(CYGPATH_W) 'fsys_ufs2.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ufs2.c'; fi` +- +-ufs2_stage1_5_exec-bios.o: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ufs2_stage1_5_exec-bios.o -MD -MP -MF "$(DEPDIR)/ufs2_stage1_5_exec-bios.Tpo" -c -o ufs2_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ufs2_stage1_5_exec-bios.Tpo" "$(DEPDIR)/ufs2_stage1_5_exec-bios.Po"; else rm -f "$(DEPDIR)/ufs2_stage1_5_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='ufs2_stage1_5_exec-bios.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ufs2_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c +- +-ufs2_stage1_5_exec-bios.obj: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ufs2_stage1_5_exec-bios.obj -MD -MP -MF "$(DEPDIR)/ufs2_stage1_5_exec-bios.Tpo" -c -o ufs2_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ufs2_stage1_5_exec-bios.Tpo" "$(DEPDIR)/ufs2_stage1_5_exec-bios.Po"; else rm -f "$(DEPDIR)/ufs2_stage1_5_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='ufs2_stage1_5_exec-bios.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ufs2_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi` +- +-vstafs_stage1_5_exec-common.o: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT vstafs_stage1_5_exec-common.o -MD -MP -MF "$(DEPDIR)/vstafs_stage1_5_exec-common.Tpo" -c -o vstafs_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/vstafs_stage1_5_exec-common.Tpo" "$(DEPDIR)/vstafs_stage1_5_exec-common.Po"; else rm -f "$(DEPDIR)/vstafs_stage1_5_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='vstafs_stage1_5_exec-common.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o vstafs_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c +- +-vstafs_stage1_5_exec-common.obj: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT vstafs_stage1_5_exec-common.obj -MD -MP -MF "$(DEPDIR)/vstafs_stage1_5_exec-common.Tpo" -c -o vstafs_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/vstafs_stage1_5_exec-common.Tpo" "$(DEPDIR)/vstafs_stage1_5_exec-common.Po"; else rm -f "$(DEPDIR)/vstafs_stage1_5_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='vstafs_stage1_5_exec-common.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o vstafs_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi` +- +-vstafs_stage1_5_exec-char_io.o: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT vstafs_stage1_5_exec-char_io.o -MD -MP -MF "$(DEPDIR)/vstafs_stage1_5_exec-char_io.Tpo" -c -o vstafs_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/vstafs_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/vstafs_stage1_5_exec-char_io.Po"; else rm -f "$(DEPDIR)/vstafs_stage1_5_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='vstafs_stage1_5_exec-char_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o vstafs_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c +- +-vstafs_stage1_5_exec-char_io.obj: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT vstafs_stage1_5_exec-char_io.obj -MD -MP -MF "$(DEPDIR)/vstafs_stage1_5_exec-char_io.Tpo" -c -o vstafs_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/vstafs_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/vstafs_stage1_5_exec-char_io.Po"; else rm -f "$(DEPDIR)/vstafs_stage1_5_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='vstafs_stage1_5_exec-char_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o vstafs_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi` +- +-vstafs_stage1_5_exec-disk_io.o: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT vstafs_stage1_5_exec-disk_io.o -MD -MP -MF "$(DEPDIR)/vstafs_stage1_5_exec-disk_io.Tpo" -c -o vstafs_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/vstafs_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/vstafs_stage1_5_exec-disk_io.Po"; else rm -f "$(DEPDIR)/vstafs_stage1_5_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='vstafs_stage1_5_exec-disk_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o vstafs_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c +- +-vstafs_stage1_5_exec-disk_io.obj: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT vstafs_stage1_5_exec-disk_io.obj -MD -MP -MF "$(DEPDIR)/vstafs_stage1_5_exec-disk_io.Tpo" -c -o vstafs_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/vstafs_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/vstafs_stage1_5_exec-disk_io.Po"; else rm -f "$(DEPDIR)/vstafs_stage1_5_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='vstafs_stage1_5_exec-disk_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o vstafs_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi` +- +-vstafs_stage1_5_exec-stage1_5.o: stage1_5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT vstafs_stage1_5_exec-stage1_5.o -MD -MP -MF "$(DEPDIR)/vstafs_stage1_5_exec-stage1_5.Tpo" -c -o vstafs_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/vstafs_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/vstafs_stage1_5_exec-stage1_5.Po"; else rm -f "$(DEPDIR)/vstafs_stage1_5_exec-stage1_5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='vstafs_stage1_5_exec-stage1_5.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o vstafs_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c +- +-vstafs_stage1_5_exec-stage1_5.obj: stage1_5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT vstafs_stage1_5_exec-stage1_5.obj -MD -MP -MF "$(DEPDIR)/vstafs_stage1_5_exec-stage1_5.Tpo" -c -o vstafs_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/vstafs_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/vstafs_stage1_5_exec-stage1_5.Po"; else rm -f "$(DEPDIR)/vstafs_stage1_5_exec-stage1_5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='vstafs_stage1_5_exec-stage1_5.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o vstafs_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi` +- +-vstafs_stage1_5_exec-fsys_vstafs.o: fsys_vstafs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT vstafs_stage1_5_exec-fsys_vstafs.o -MD -MP -MF "$(DEPDIR)/vstafs_stage1_5_exec-fsys_vstafs.Tpo" -c -o vstafs_stage1_5_exec-fsys_vstafs.o `test -f 'fsys_vstafs.c' || echo '$(srcdir)/'`fsys_vstafs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/vstafs_stage1_5_exec-fsys_vstafs.Tpo" "$(DEPDIR)/vstafs_stage1_5_exec-fsys_vstafs.Po"; else rm -f "$(DEPDIR)/vstafs_stage1_5_exec-fsys_vstafs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_vstafs.c' object='vstafs_stage1_5_exec-fsys_vstafs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o vstafs_stage1_5_exec-fsys_vstafs.o `test -f 'fsys_vstafs.c' || echo '$(srcdir)/'`fsys_vstafs.c +- +-vstafs_stage1_5_exec-fsys_vstafs.obj: fsys_vstafs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT vstafs_stage1_5_exec-fsys_vstafs.obj -MD -MP -MF "$(DEPDIR)/vstafs_stage1_5_exec-fsys_vstafs.Tpo" -c -o vstafs_stage1_5_exec-fsys_vstafs.obj `if test -f 'fsys_vstafs.c'; then $(CYGPATH_W) 'fsys_vstafs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_vstafs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/vstafs_stage1_5_exec-fsys_vstafs.Tpo" "$(DEPDIR)/vstafs_stage1_5_exec-fsys_vstafs.Po"; else rm -f "$(DEPDIR)/vstafs_stage1_5_exec-fsys_vstafs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_vstafs.c' object='vstafs_stage1_5_exec-fsys_vstafs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o vstafs_stage1_5_exec-fsys_vstafs.obj `if test -f 'fsys_vstafs.c'; then $(CYGPATH_W) 'fsys_vstafs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_vstafs.c'; fi` +- +-vstafs_stage1_5_exec-bios.o: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT vstafs_stage1_5_exec-bios.o -MD -MP -MF "$(DEPDIR)/vstafs_stage1_5_exec-bios.Tpo" -c -o vstafs_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/vstafs_stage1_5_exec-bios.Tpo" "$(DEPDIR)/vstafs_stage1_5_exec-bios.Po"; else rm -f "$(DEPDIR)/vstafs_stage1_5_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='vstafs_stage1_5_exec-bios.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o vstafs_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c +- +-vstafs_stage1_5_exec-bios.obj: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT vstafs_stage1_5_exec-bios.obj -MD -MP -MF "$(DEPDIR)/vstafs_stage1_5_exec-bios.Tpo" -c -o vstafs_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/vstafs_stage1_5_exec-bios.Tpo" "$(DEPDIR)/vstafs_stage1_5_exec-bios.Po"; else rm -f "$(DEPDIR)/vstafs_stage1_5_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='vstafs_stage1_5_exec-bios.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o vstafs_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi` +- +-xfs_stage1_5_exec-common.o: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT xfs_stage1_5_exec-common.o -MD -MP -MF "$(DEPDIR)/xfs_stage1_5_exec-common.Tpo" -c -o xfs_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/xfs_stage1_5_exec-common.Tpo" "$(DEPDIR)/xfs_stage1_5_exec-common.Po"; else rm -f "$(DEPDIR)/xfs_stage1_5_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='xfs_stage1_5_exec-common.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o xfs_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c +- +-xfs_stage1_5_exec-common.obj: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT xfs_stage1_5_exec-common.obj -MD -MP -MF "$(DEPDIR)/xfs_stage1_5_exec-common.Tpo" -c -o xfs_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/xfs_stage1_5_exec-common.Tpo" "$(DEPDIR)/xfs_stage1_5_exec-common.Po"; else rm -f "$(DEPDIR)/xfs_stage1_5_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='xfs_stage1_5_exec-common.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o xfs_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi` +- +-xfs_stage1_5_exec-char_io.o: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT xfs_stage1_5_exec-char_io.o -MD -MP -MF "$(DEPDIR)/xfs_stage1_5_exec-char_io.Tpo" -c -o xfs_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/xfs_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/xfs_stage1_5_exec-char_io.Po"; else rm -f "$(DEPDIR)/xfs_stage1_5_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='xfs_stage1_5_exec-char_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o xfs_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c +- +-xfs_stage1_5_exec-char_io.obj: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT xfs_stage1_5_exec-char_io.obj -MD -MP -MF "$(DEPDIR)/xfs_stage1_5_exec-char_io.Tpo" -c -o xfs_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/xfs_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/xfs_stage1_5_exec-char_io.Po"; else rm -f "$(DEPDIR)/xfs_stage1_5_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='xfs_stage1_5_exec-char_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o xfs_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi` +- +-xfs_stage1_5_exec-disk_io.o: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT xfs_stage1_5_exec-disk_io.o -MD -MP -MF "$(DEPDIR)/xfs_stage1_5_exec-disk_io.Tpo" -c -o xfs_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/xfs_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/xfs_stage1_5_exec-disk_io.Po"; else rm -f "$(DEPDIR)/xfs_stage1_5_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='xfs_stage1_5_exec-disk_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o xfs_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c +- +-xfs_stage1_5_exec-disk_io.obj: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT xfs_stage1_5_exec-disk_io.obj -MD -MP -MF "$(DEPDIR)/xfs_stage1_5_exec-disk_io.Tpo" -c -o xfs_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/xfs_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/xfs_stage1_5_exec-disk_io.Po"; else rm -f "$(DEPDIR)/xfs_stage1_5_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='xfs_stage1_5_exec-disk_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o xfs_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi` +- +-xfs_stage1_5_exec-stage1_5.o: stage1_5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT xfs_stage1_5_exec-stage1_5.o -MD -MP -MF "$(DEPDIR)/xfs_stage1_5_exec-stage1_5.Tpo" -c -o xfs_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/xfs_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/xfs_stage1_5_exec-stage1_5.Po"; else rm -f "$(DEPDIR)/xfs_stage1_5_exec-stage1_5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='xfs_stage1_5_exec-stage1_5.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o xfs_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c +- +-xfs_stage1_5_exec-stage1_5.obj: stage1_5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT xfs_stage1_5_exec-stage1_5.obj -MD -MP -MF "$(DEPDIR)/xfs_stage1_5_exec-stage1_5.Tpo" -c -o xfs_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/xfs_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/xfs_stage1_5_exec-stage1_5.Po"; else rm -f "$(DEPDIR)/xfs_stage1_5_exec-stage1_5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='xfs_stage1_5_exec-stage1_5.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o xfs_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi` +- +-xfs_stage1_5_exec-fsys_xfs.o: fsys_xfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT xfs_stage1_5_exec-fsys_xfs.o -MD -MP -MF "$(DEPDIR)/xfs_stage1_5_exec-fsys_xfs.Tpo" -c -o xfs_stage1_5_exec-fsys_xfs.o `test -f 'fsys_xfs.c' || echo '$(srcdir)/'`fsys_xfs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/xfs_stage1_5_exec-fsys_xfs.Tpo" "$(DEPDIR)/xfs_stage1_5_exec-fsys_xfs.Po"; else rm -f "$(DEPDIR)/xfs_stage1_5_exec-fsys_xfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_xfs.c' object='xfs_stage1_5_exec-fsys_xfs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o xfs_stage1_5_exec-fsys_xfs.o `test -f 'fsys_xfs.c' || echo '$(srcdir)/'`fsys_xfs.c +- +-xfs_stage1_5_exec-fsys_xfs.obj: fsys_xfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT xfs_stage1_5_exec-fsys_xfs.obj -MD -MP -MF "$(DEPDIR)/xfs_stage1_5_exec-fsys_xfs.Tpo" -c -o xfs_stage1_5_exec-fsys_xfs.obj `if test -f 'fsys_xfs.c'; then $(CYGPATH_W) 'fsys_xfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_xfs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/xfs_stage1_5_exec-fsys_xfs.Tpo" "$(DEPDIR)/xfs_stage1_5_exec-fsys_xfs.Po"; else rm -f "$(DEPDIR)/xfs_stage1_5_exec-fsys_xfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_xfs.c' object='xfs_stage1_5_exec-fsys_xfs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o xfs_stage1_5_exec-fsys_xfs.obj `if test -f 'fsys_xfs.c'; then $(CYGPATH_W) 'fsys_xfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_xfs.c'; fi` +- +-xfs_stage1_5_exec-bios.o: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT xfs_stage1_5_exec-bios.o -MD -MP -MF "$(DEPDIR)/xfs_stage1_5_exec-bios.Tpo" -c -o xfs_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/xfs_stage1_5_exec-bios.Tpo" "$(DEPDIR)/xfs_stage1_5_exec-bios.Po"; else rm -f "$(DEPDIR)/xfs_stage1_5_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='xfs_stage1_5_exec-bios.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o xfs_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c +- +-xfs_stage1_5_exec-bios.obj: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT xfs_stage1_5_exec-bios.obj -MD -MP -MF "$(DEPDIR)/xfs_stage1_5_exec-bios.Tpo" -c -o xfs_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/xfs_stage1_5_exec-bios.Tpo" "$(DEPDIR)/xfs_stage1_5_exec-bios.Po"; else rm -f "$(DEPDIR)/xfs_stage1_5_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='xfs_stage1_5_exec-bios.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o xfs_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi` +-uninstall-info-am: +-install-pkglibDATA: $(pkglib_DATA) +- @$(NORMAL_INSTALL) +- test -z "$(pkglibdir)" || $(mkdir_p) "$(DESTDIR)$(pkglibdir)" +- @list='$(pkglib_DATA)'; for p in $$list; do \ +- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ +- f=$(am__strip_dir) \ +- echo " $(pkglibDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkglibdir)/$$f'"; \ +- $(pkglibDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkglibdir)/$$f"; \ +- done +- +-uninstall-pkglibDATA: +- @$(NORMAL_UNINSTALL) +- @list='$(pkglib_DATA)'; for p in $$list; do \ +- f=$(am__strip_dir) \ +- echo " rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ +- rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ +- done +- +-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- mkid -fID $$unique +-tags: TAGS +- +-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ +- $(TAGS_FILES) $(LISP) +- tags=; \ +- here=`pwd`; \ +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ +- test -n "$$unique" || unique=$$empty_fix; \ +- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique; \ +- fi +-ctags: CTAGS +-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ +- $(TAGS_FILES) $(LISP) +- tags=; \ +- here=`pwd`; \ +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- test -z "$(CTAGS_ARGS)$$tags$$unique" \ +- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ +- $$tags $$unique +- +-GTAGS: +- here=`$(am__cd) $(top_builddir) && pwd` \ +- && cd $(top_srcdir) \ +- && gtags -i $(GTAGS_ARGS) $$here +- +-distclean-tags: +- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +- +-check-TESTS: $(TESTS) +- @failed=0; all=0; xfail=0; xpass=0; skip=0; \ +- srcdir=$(srcdir); export srcdir; \ +- list='$(TESTS)'; \ +- if test -n "$$list"; then \ +- for tst in $$list; do \ +- if test -f ./$$tst; then dir=./; \ +- elif test -f $$tst; then dir=; \ +- else dir="$(srcdir)/"; fi; \ +- if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ +- all=`expr $$all + 1`; \ +- case " $(XFAIL_TESTS) " in \ +- *" $$tst "*) \ +- xpass=`expr $$xpass + 1`; \ +- failed=`expr $$failed + 1`; \ +- echo "XPASS: $$tst"; \ +- ;; \ +- *) \ +- echo "PASS: $$tst"; \ +- ;; \ +- esac; \ +- elif test $$? -ne 77; then \ +- all=`expr $$all + 1`; \ +- case " $(XFAIL_TESTS) " in \ +- *" $$tst "*) \ +- xfail=`expr $$xfail + 1`; \ +- echo "XFAIL: $$tst"; \ +- ;; \ +- *) \ +- failed=`expr $$failed + 1`; \ +- echo "FAIL: $$tst"; \ +- ;; \ +- esac; \ +- else \ +- skip=`expr $$skip + 1`; \ +- echo "SKIP: $$tst"; \ +- fi; \ +- done; \ +- if test "$$failed" -eq 0; then \ +- if test "$$xfail" -eq 0; then \ +- banner="All $$all tests passed"; \ +- else \ +- banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ +- fi; \ +- else \ +- if test "$$xpass" -eq 0; then \ +- banner="$$failed of $$all tests failed"; \ +- else \ +- banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ +- fi; \ +- fi; \ +- dashes="$$banner"; \ +- skipped=""; \ +- if test "$$skip" -ne 0; then \ +- skipped="($$skip tests were not run)"; \ +- test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ +- dashes="$$skipped"; \ +- fi; \ +- report=""; \ +- if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ +- report="Please report to $(PACKAGE_BUGREPORT)"; \ +- test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ +- dashes="$$report"; \ +- fi; \ +- dashes=`echo "$$dashes" | sed s/./=/g`; \ +- echo "$$dashes"; \ +- echo "$$banner"; \ +- test -z "$$skipped" || echo "$$skipped"; \ +- test -z "$$report" || echo "$$report"; \ +- echo "$$dashes"; \ +- test "$$failed" -eq 0; \ +- else :; fi +- +-distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ +- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkdir_p) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ +- if test -d $$d/$$file; then \ +- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ +- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ +- fi; \ +- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ +- else \ +- test -f $(distdir)/$$file \ +- || cp -p $$d/$$file $(distdir)/$$file \ +- || exit 1; \ +- fi; \ +- done +-check-am: all-am +- $(MAKE) $(AM_MAKEFLAGS) check-TESTS +-check: $(BUILT_SOURCES) +- $(MAKE) $(AM_MAKEFLAGS) check-am +-all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) \ +- $(HEADERS) +-installdirs: +- for dir in "$(DESTDIR)$(pkglibdir)"; do \ +- test -z "$$dir" || $(mkdir_p) "$$dir"; \ +- done +-install: $(BUILT_SOURCES) +- $(MAKE) $(AM_MAKEFLAGS) install-am +-install-exec: install-exec-am +-install-data: install-data-am +-uninstall: uninstall-am +- +-install-am: all-am +- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +- +-installcheck: installcheck-am +-install-strip: +- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ +- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ +- `test -z '$(STRIP)' || \ +- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +-mostlyclean-generic: +- -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) +- +-clean-generic: +- -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) +- +-distclean-generic: +- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) +- +-maintainer-clean-generic: +- @echo "This command is intended for maintainers to use" +- @echo "it deletes files that may require special tools to rebuild." +- -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +-clean: clean-am +- +-clean-am: clean-generic clean-noinstLIBRARIES clean-noinstPROGRAMS \ +- mostlyclean-am +- +-distclean: distclean-am +- -rm -rf ./$(DEPDIR) +- -rm -f Makefile +-distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-tags +- +-dvi: dvi-am +- +-dvi-am: +- +-html: html-am +- +-info: info-am +- +-info-am: +- +-install-data-am: +- +-install-exec-am: install-pkglibDATA +- +-install-info: install-info-am +- +-install-man: +- +-installcheck-am: +- +-maintainer-clean: maintainer-clean-am +- -rm -rf ./$(DEPDIR) +- -rm -f Makefile +-maintainer-clean-am: distclean-am maintainer-clean-generic +- +-mostlyclean: mostlyclean-am +- +-mostlyclean-am: mostlyclean-compile mostlyclean-generic +- +-pdf: pdf-am +- +-pdf-am: +- +-ps: ps-am +- +-ps-am: +- +-uninstall-am: uninstall-info-am uninstall-pkglibDATA +- +-.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ +- clean-generic clean-noinstLIBRARIES clean-noinstPROGRAMS ctags \ +- distclean distclean-compile distclean-generic distclean-tags \ +- distdir dvi dvi-am html html-am info info-am install \ +- install-am install-data install-data-am install-exec \ +- install-exec-am install-info install-info-am install-man \ +- install-pkglibDATA install-strip installcheck installcheck-am \ +- installdirs maintainer-clean maintainer-clean-generic \ +- mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \ +- ps ps-am tags uninstall uninstall-am uninstall-info-am \ +- uninstall-pkglibDATA +- +- +-stage2_size.h: pre_stage2 +- -rm -f stage2_size.h +- set dummy `ls -l pre_stage2`; \ +- echo "#define STAGE2_SIZE $$6" > stage2_size.h +- +-# XXX: automake doesn't provide a way to specify dependencies for object +-# files explicitly, so we must write this by a general Makefile scheme. +-# If automake change the naming scheme for per-executable objects, this +-# will be broken. +-start_exec-start.$(OBJEXT): stage2_size.h +- +-stage2: pre_stage2 start +- -rm -f stage2 +- cat start pre_stage2 > stage2 +- +-start_eltorito_exec-start.$(OBJEXT): stage2_size.h +- +-stage2_eltorito: pre_stage2 start_eltorito +- -rm -f stage2_eltorito +- cat start_eltorito pre_stage2 > stage2_eltorito +- +-diskless_size.h: diskless +- -rm -f $@ +- set dummy `ls -l $^`; \ +- echo "#define DISKLESS_SIZE $$6" > $@ +- +-# XXX: See the comment for start_exec-start.o. +-nbloader_exec-nbloader.$(OBJEXT): diskless_size.h +- +-# For nbgrub target. +-nbgrub: nbloader diskless +- -rm -f $@ +- cat $^ > $@ +- +-# XXX: See the comment for start_exec-start.o. +-pxeloader_exec-pxeloader.$(OBJEXT): diskless_size.h +- +-# For pxegrub target. +-pxegrub: pxeloader diskless +- -rm -f $@ +- cat $^ > $@ +-.exec: +- $(OBJCOPY) -O binary $< $@ +-# Tell versions [3.59,3.63) of GNU make to not export all variables. +-# Otherwise a system limit (for SysV at least) may be exceeded. +-.NOEXPORT: +diff --git a/stage2/asm.S b/stage2/asm.S +index 34b6e7d..5c4dd5e 100644 +--- a/stage2/asm.S ++++ b/stage2/asm.S +@@ -98,7 +98,7 @@ VARIABLE(version_string) + .string VERSION + VARIABLE(config_file) + #ifndef STAGE1_5 +- .string "/boot/grub/menu.lst" ++ .string "/boot/grub/grub.conf" + #else /* STAGE1_5 */ + .long 0xffffffff + .string "/boot/grub/stage2" +@@ -1622,36 +1622,78 @@ ENTRY(set_vbe_mode) + */ + + ENTRY(gateA20) ++ pushl %ebx ++ pushl %edx ++ call testA20 ++ jnz 1f ++ call A20_BIOS ++ call testA20 ++ jnz 1f ++ call A20_PORT92 ++ call testA20 ++ jnz 1f ++ call A20_KBDCTL ++ call testA20 ++ jnz 1f ++ movl $0,%eax ++ jmp 2f ++1: ++ movl $-1,%eax ++2: ++ popl %edx ++ popl %ebx ++ ret ++ ++testA20: ++ movl 0x500,%eax ++ movl 0x100500,%ebx ++ notl %eax ++ movl %eax,0x100500 ++ cmpl %eax,0x500 ++ pushfl ++ movl %ebx,0x100500 ++ notl %eax ++ movl %eax,0x500 ++ popfl ++ ret ++ ++A20_BIOS: + /* first, try a BIOS call */ +- pushl %ebp +- movl 8(%esp), %edx + + call EXT_C(prot_to_real) + + .code16 +- movw $0x2400, %ax +- testw %dx, %dx +- jz 1f +- incw %ax ++ movw $0x2401, %ax + 1: stc + int $0x15 +- jnc 2f +- +- /* set non-zero if failed */ +- movb $1, %ah +- +- /* save the status */ +-2: movb %ah, %dl + + DATA32 call EXT_C(real_to_prot) + .code32 ++ ret + +- popl %ebp +- testb %dl, %dl +- jnz 3f ++A20_PORT92: ++ /* ++ * try to switch gateA20 using PORT92, the "Fast A20 and Init" ++ * register ++ */ ++ mov $0x92, %dx ++ inb %dx, %al ++ /* skip the port92 code if it's unimplemented (read returns 0xff) */ ++ cmpb $0xff, %al ++ jz 6f ++ ++ /* set bit1, the ALT_A20_GATE bit */ ++ orb $2, %al ++ /* and $0xfd, %al */ ++ ++ /* clear the INIT_NOW bit; don't accidently reset the machine */ ++ and $0xfe, %al ++ outb %al, %dx ++6: + ret + +-3: /* use keyboard controller */ ++A20_KBDCTL: ++ /* use keyboard controller */ + pushl %eax + + call gloop1 +@@ -1665,11 +1707,7 @@ gloopint1: + jnz gloopint1 + + movb $KB_OUTPUT_MASK, %al +- cmpb $0, 0x8(%esp) +- jz gdoit +- + orb $KB_A20_ENABLE, %al +-gdoit: + outb $K_RDWR + + call gloop1 +@@ -1994,8 +2032,25 @@ ENTRY(console_getkey) + call EXT_C(prot_to_real) + .code16 + ++.again: ++ mov $0x11, %ah /* poll kbd */ + int $0x16 + ++ jz .again ++#if 0 ++/* XXX handle serial here? -- pj */ ++ jnz .kbd ++#endif ++.kbd: ++ mov $0x10, %ah ++ int $0x16 ++ cmp $0xe0, %al ++ jnz .not_ext ++ xor %al, %al ++.not_ext: ++ and %al, %al ++ jz .func_key ++.func_key: + movw %ax, %dx /* real_to_prot uses %eax */ + call translate_keycode + call remap_ascii_char +@@ -2003,7 +2058,7 @@ ENTRY(console_getkey) + DATA32 call EXT_C(real_to_prot) + .code32 + +- movw %dx, %ax ++ mov %dx, %ax + + pop %ebp + ret +@@ -2029,7 +2084,7 @@ ENTRY(console_checkkey) + call EXT_C(prot_to_real) /* enter real mode */ + .code16 + +- movb $0x1, %ah ++ movb $0x11, %ah + int $0x16 + + DATA32 jz notpending +@@ -2051,6 +2106,37 @@ pending: + pop %ebp + ret + ++ ++/* ++ * int console_keystatus (void) ++ * BIOS call "INT 16H Function 02H" to get keyboard modifier status ++ * Call with %ah = 0x2 ++ * Return: %al = keyboard state: ++ * bit 3: alt key down ++ * bit 2: ctrl key down ++ * bit 1: left shift key down ++ * bit 0: right shift key down ++ */ ++ENTRY(console_keystatus) ++ push %ebp ++ ++ call EXT_C(prot_to_real) ++ .code16 ++ ++ movb $0x12, %ah ++ int $0x16 ++ movw %ax, %dx ++ ++ DATA32 call EXT_C(real_to_prot) ++ .code32 ++ ++ movw %dx, %ax ++ ++ /* Mask out numlock, capslock and insert state. */ ++ andl $0x0f0f, %eax ++ pop %ebp ++ ret ++ + + /* + * int console_getxy (void) +@@ -2216,6 +2302,156 @@ ENTRY(console_setcursor) + pop %ebx + pop %ebp + ret ++ ++/* graphics mode functions */ ++#ifdef SUPPORT_GRAPHICS ++VARIABLE(cursorX) ++.word 0 ++VARIABLE(cursorY) ++.word 0 ++VARIABLE(cursorCount) ++.word 0 ++VARIABLE(cursorBuf) ++.byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ++ ++ ++/* ++ * int set_videomode(mode) ++ * BIOS call "INT 10H Function 0h" to set video mode ++ * Call with %ah = 0x0 ++ * %al = video mode ++ * Returns old videomode. ++ */ ++ENTRY(set_videomode) ++ push %ebp ++ push %ebx ++ push %ecx ++ ++ movb 0x10(%esp), %cl ++ ++ call EXT_C(prot_to_real) ++ .code16 ++ ++ xorw %bx, %bx ++ movb $0xf, %ah ++ int $0x10 /* Get Current Video mode */ ++ movb %al, %ch ++ xorb %ah, %ah ++ movb %cl, %al ++ int $0x10 /* Set Video mode */ ++ ++ DATA32 call EXT_C(real_to_prot) ++ .code32 ++ ++ xorb %ah, %ah ++ movb %ch, %al ++ ++ pop %ecx ++ pop %ebx ++ pop %ebp ++ ret ++ ++ ++/* ++ * unsigned char * graphics_get_font() ++ * BIOS call "INT 10H Function 11h" to set font ++ * Call with %ah = 0x11 ++ */ ++ENTRY(graphics_get_font) ++ push %ebp ++ push %ebx ++ push %ecx ++ push %edx ++ ++ call EXT_C(prot_to_real) ++ .code16 ++ ++ movw $0x1130, %ax ++ movb $6, %bh /* font 8x16 */ ++ int $0x10 ++ movw %bp, %dx ++ movw %es, %cx ++ ++ DATA32 call EXT_C(real_to_prot) ++ .code32 ++ ++ xorl %eax, %eax ++ movw %cx, %ax ++ shll $4, %eax ++ movw %dx, %ax ++ ++ pop %edx ++ pop %ecx ++ pop %ebx ++ pop %ebp ++ ret ++ ++ ++ ++/* ++ * graphics_set_palette(index, red, green, blue) ++ * BIOS call "INT 10H Function 10h" to set individual dac register ++ * Call with %ah = 0x10 ++ * %bx = register number ++ * %ch = new value for green (0-63) ++ * %cl = new value for blue (0-63) ++ * %dh = new value for red (0-63) ++ */ ++ ++ENTRY(graphics_set_palette) ++ push %ebp ++ push %eax ++ push %ebx ++ push %ecx ++ push %edx ++ ++ movw $0x3c8, %bx /* address write mode register */ ++ ++ /* wait vertical retrace */ ++ ++ movw $0x3da, %dx ++l1b: inb %dx, %al /* wait vertical active display */ ++ test $8, %al ++ jnz l1b ++ ++l2b: inb %dx, %al /* wait vertical retrace */ ++ test $8, %al ++ jnz l2b ++ ++ mov %bx, %dx ++ movb 0x18(%esp), %al /* index */ ++ outb %al, %dx ++ inc %dx ++ ++ movb 0x1c(%esp), %al /* red */ ++ outb %al, %dx ++ ++ movb 0x20(%esp), %al /* green */ ++ outb %al, %dx ++ ++ movb 0x24(%esp), %al /* blue */ ++ outb %al, %dx ++ ++ movw 0x18(%esp), %bx ++ ++ call EXT_C(prot_to_real) ++ .code16 ++ ++ movb %bl, %bh ++ movw $0x1000, %ax ++ int $0x10 ++ ++ DATA32 call EXT_C(real_to_prot) ++ .code32 ++ ++ pop %edx ++ pop %ecx ++ pop %ebx ++ pop %eax ++ pop %ebp ++ ret ++ ++#endif /* SUPPORT_GRAPHICS */ + + /* + * getrtsecs() +diff --git a/stage2/boot.c b/stage2/boot.c +index 4185d23..e30daf8 100644 +--- a/stage2/boot.c ++++ b/stage2/boot.c +@@ -25,10 +25,14 @@ + #include "imgact_aout.h" + #include "i386-elf.h" + ++#ifndef PLATFORM_EFI + static int cur_addr; ++#endif + entry_func entry_addr; ++#ifndef PLATFORM_EFI + static struct mod_list mll[99]; + static int linux_mem_size; ++#endif + + /* + * The next two functions, 'load_image' and 'load_module', are the building +@@ -40,6 +44,9 @@ kernel_t + load_image (char *kernel, char *arg, kernel_t suggested_type, + unsigned long load_flags) + { ++#ifdef PLATFORM_EFI ++ return grub_load_linux (kernel, arg); ++#else + int len, i, exec_type = 0, align_4k = 1; + entry_func real_entry_addr = 0; + kernel_t type = KERNEL_TYPE_NONE; +@@ -221,6 +228,7 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, + { + int big_linux = 0; + int setup_sects = lh->setup_sects; ++ int cmdline_size = 0xff; + + if (lh->header == LINUX_MAGIC_SIGNATURE && lh->version >= 0x0200) + { +@@ -248,6 +256,14 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, + lh->cl_offset = LINUX_CL_OFFSET; + lh->setup_move_size = LINUX_SETUP_MOVE_SIZE; + } ++ ++ if (lh->version >= 0x0206) ++ { ++ cmdline_size = lh->cmdline_size; ++ if (cmdline_size > (LINUX_CL_END_OFFSET - LINUX_CL_OFFSET)) ++ cmdline_size = LINUX_CL_END_OFFSET - LINUX_CL_OFFSET; ++ } ++ + } + else + { +@@ -265,7 +281,7 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, + setup_sects = LINUX_DEFAULT_SETUP_SECTS; + + data_len = setup_sects << 9; +- text_len = filemax - data_len - SECTOR_SIZE; ++ text_len = filemax - data_len - get_sector_size(current_drive); + + linux_data_tmp_addr = (char *) LINUX_BZIMAGE_ADDR + text_len; + +@@ -280,8 +296,12 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, + errnum = ERR_WONT_FIT; + else + { +- grub_printf (" [Linux-%s, setup=0x%x, size=0x%x]\n", +- (big_linux ? "bzImage" : "zImage"), data_len, text_len); ++ grub_verbose_printf (" [Linux-%s, setup=0x%x, size=0x%x]\n", ++ (big_linux ? "bzImage" : "zImage"), ++ data_len, text_len); ++ ++ if (silent_grub) ++ lh->vid_mode = 0x0f04; + + /* Video mode selection support. What a mess! */ + /* NOTE: Even the word "mess" is not still enough to +@@ -375,14 +395,15 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, + + /* It is possible that DATA_LEN + SECTOR_SIZE is greater than + MULTIBOOT_SEARCH, so the data may have been read partially. */ +- if (data_len + SECTOR_SIZE <= MULTIBOOT_SEARCH) ++ if (data_len + get_sector_size(current_drive) <= MULTIBOOT_SEARCH) + grub_memmove (linux_data_tmp_addr, buffer, +- data_len + SECTOR_SIZE); ++ data_len + get_sector_size(current_drive)); + else + { + grub_memmove (linux_data_tmp_addr, buffer, MULTIBOOT_SEARCH); + grub_read (linux_data_tmp_addr + MULTIBOOT_SEARCH, +- data_len + SECTOR_SIZE - MULTIBOOT_SEARCH); ++ data_len + get_sector_size(current_drive) ++ - MULTIBOOT_SEARCH); + } + + if (lh->header != LINUX_MAGIC_SIGNATURE || +@@ -404,7 +425,7 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, + char *src = skip_to (0, arg); + char *dest = linux_data_tmp_addr + LINUX_CL_OFFSET; + +- while (dest < linux_data_tmp_addr + LINUX_CL_END_OFFSET && *src) ++ while (dest < linux_data_tmp_addr + LINUX_CL_OFFSET + cmdline_size && *src) + *(dest++) = *(src++); + + /* Old Linux kernels have problems determining the amount of +@@ -425,7 +446,7 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, + if (! grub_strstr (arg, "mem=") + && ! (load_flags & KERNEL_LOAD_NO_MEM_OPTION) + && lh->version < 0x0203 /* kernel version < 2.4.18 */ +- && dest + 15 < linux_data_tmp_addr + LINUX_CL_END_OFFSET) ++ && dest + 15 < linux_data_tmp_addr + LINUX_CL_OFFSET + cmdline_size) + { + *dest++ = ' '; + *dest++ = 'm'; +@@ -441,7 +462,7 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, + } + + /* offset into file */ +- grub_seek (data_len + SECTOR_SIZE); ++ grub_seek (data_len + get_sector_size(current_drive)); + + cur_addr = (int) linux_data_tmp_addr + LINUX_SETUP_MOVE_SIZE; + grub_read ((char *) LINUX_BZIMAGE_ADDR, text_len); +@@ -487,7 +508,7 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, + mbi.syms.a.addr = 0; + mbi.syms.a.pad = 0; + +- printf (" [%s-%s", str2, str); ++ verbose_printf (" [%s-%s", str2, str); + + str = ""; + +@@ -496,7 +517,7 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, + if (flags & MULTIBOOT_AOUT_KLUDGE) + str = "-and-data"; + +- printf (", loadaddr=0x%x, text%s=0x%x", cur_addr, str, text_len); ++ verbose_printf (", loadaddr=0x%x, text%s=0x%x", cur_addr, str, text_len); + + /* read text, then read data */ + if (grub_read ((char *) RAW_ADDR (cur_addr), text_len) == text_len) +@@ -509,9 +530,9 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, + if (align_4k) + cur_addr = (cur_addr + 0xFFF) & 0xFFFFF000; + else +- printf (", C"); ++ verbose_printf (", C"); + +- printf (", data=0x%x", data_len); ++ verbose_printf (", data=0x%x", data_len); + + if ((grub_read ((char *) RAW_ADDR (cur_addr), data_len) + != data_len) +@@ -525,7 +546,7 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, + memset ((char *) RAW_ADDR (cur_addr), 0, bss_len); + cur_addr += bss_len; + +- printf (", bss=0x%x", bss_len); ++ verbose_printf (", bss=0x%x", bss_len); + } + } + else if (!errnum) +@@ -545,7 +566,7 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, + *((int *) RAW_ADDR (cur_addr)) = pu.aout->a_syms; + cur_addr += sizeof (int); + +- printf (", symtab=0x%x", pu.aout->a_syms); ++ verbose_printf (", symtab=0x%x", pu.aout->a_syms); + + if (grub_read ((char *) RAW_ADDR (cur_addr), pu.aout->a_syms) + == pu.aout->a_syms) +@@ -562,7 +583,7 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, + + i -= sizeof (int); + +- printf (", strtab=0x%x", i); ++ verbose_printf (", strtab=0x%x", i); + + symtab_err = (grub_read ((char *) RAW_ADDR (cur_addr), i) + != i); +@@ -576,7 +597,7 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, + + if (symtab_err) + { +- printf ("(bad)"); ++ verbose_printf ("(bad)"); + cur_addr = orig_addr; + mbi.syms.a.tabsize = 0; + mbi.syms.a.strsize = 0; +@@ -630,7 +651,7 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, + /* mark memory as used */ + if (cur_addr < memaddr + memsiz) + cur_addr = memaddr + memsiz; +- printf (", <0x%x:0x%x:0x%x>", memaddr, filesiz, ++ verbose_printf (", <0x%x:0x%x:0x%x>", memaddr, filesiz, + memsiz - filesiz); + /* increment number of segments */ + loaded++; +@@ -676,7 +697,7 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, + shdr = (Elf32_Shdr *) mbi.syms.e.addr; + cur_addr += tab_size; + +- printf (", shtab=0x%x", cur_addr); ++ verbose_printf (", shtab=0x%x", cur_addr); + + for (i = 0; i < mbi.syms.e.num; i++) + { +@@ -718,7 +739,7 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, + + if (symtab_err) + { +- printf ("(bad)"); ++ verbose_printf ("(bad)"); + mbi.syms.e.num = 0; + mbi.syms.e.size = 0; + mbi.syms.e.addr = 0; +@@ -733,7 +754,7 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, + + if (! errnum) + { +- grub_printf (", entry=0x%x]\n", (unsigned) entry_addr); ++ grub_verbose_printf (", entry=0x%x]\n", (unsigned) entry_addr); + + /* If the entry address is physically different from that of the ELF + header, correct it here. */ +@@ -756,8 +777,10 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, + } + + return type; ++#endif + } + ++#ifndef PLATFORM_EFI + int + load_module (char *module, char *arg) + { +@@ -776,7 +799,7 @@ load_module (char *module, char *arg) + return 0; + } + +- printf (" [Multiboot-module @ 0x%x, 0x%x bytes]\n", cur_addr, len); ++ verbose_printf (" [Multiboot-module @ 0x%x, 0x%x bytes]\n", cur_addr, len); + + /* these two simply need to be set if any modules are loaded at all */ + mbi.flags |= MB_INFO_MODS; +@@ -794,11 +817,19 @@ load_module (char *module, char *arg) + grub_close (); + return 1; + } ++#endif + + int + load_initrd (char *initrd) + { +- int len; ++#ifdef PLATFORM_EFI ++#ifndef NO_DECOMPRESSION ++ no_decompression = 1; ++#endif ++ return grub_load_initrd (initrd); ++#else ++ int len, next_addr; ++ char *singleimage, *pos; + unsigned long moveto; + unsigned long max_addr; + struct linux_kernel_header *lh +@@ -807,16 +838,24 @@ load_initrd (char *initrd) + #ifndef NO_DECOMPRESSION + no_decompression = 1; + #endif +- +- if (! grub_open (initrd)) +- goto fail; ++ len = 0; ++ next_addr = cur_addr; + +- len = grub_read ((char *) cur_addr, -1); +- if (! len) +- { +- grub_close (); +- goto fail; +- } ++ /* loop over all initrd images and concatenate them in memory */ ++ singleimage = strtok_r(initrd," \t",&pos); ++ while (singleimage) { ++ if (! grub_open (singleimage)) ++ continue; ++ ++ len += grub_read ((char *) next_addr, -1); ++ grub_close (); ++ ++ next_addr = cur_addr + len; ++ singleimage = strtok_r(NULL," \t",&pos); ++ } ++ ++ if (!len) ++ goto fail; + + if (linux_mem_size) + moveto = linux_mem_size; +@@ -824,8 +863,12 @@ load_initrd (char *initrd) + moveto = (mbi.mem_upper + 0x400) << 10; + + moveto = (moveto - len) & 0xfffff000; ++#if 0 + max_addr = (lh->header == LINUX_MAGIC_SIGNATURE && lh->version >= 0x0203 + ? lh->initrd_addr_max : LINUX_INITRD_MAX_ADDRESS); ++#else ++ max_addr = LINUX_INITRD_MAX_ADDRESS; ++#endif + if (moveto + len >= max_addr) + moveto = (max_addr - len) & 0xfffff000; + +@@ -836,13 +879,12 @@ load_initrd (char *initrd) + moveto -= 0x10000; + memmove ((void *) RAW_ADDR (moveto), (void *) cur_addr, len); + +- printf (" [Linux-initrd @ 0x%x, 0x%x bytes]\n", moveto, len); ++ verbose_printf (" [Linux-initrd @ 0x%x, 0x%x bytes]\n", moveto, len); + + /* FIXME: Should check if the kernel supports INITRD. */ + lh->ramdisk_image = RAW_ADDR (moveto); + lh->ramdisk_size = len; + +- grub_close (); + + fail: + +@@ -851,9 +893,11 @@ load_initrd (char *initrd) + #endif + + return ! errnum; ++#endif + } + + ++#ifndef PLATFORM_EFI + #ifdef GRUB_UTIL + /* Dummy function to fake the *BSD boot. */ + static void +@@ -1018,3 +1062,5 @@ bsd_boot (kernel_t type, int bootdev, char *arg) + extended_memory, mbi.mem_lower); + } + } ++#endif ++ +diff --git a/stage2/builtins.c b/stage2/builtins.c +index 3e08a86..b95b181 100644 +--- a/stage2/builtins.c ++++ b/stage2/builtins.c +@@ -56,6 +56,9 @@ static int bootdev; + /* True when the debug mode is turned on, and false + when it is turned off. */ + int debug = 0; ++int debug_graphics = 0; ++/* Print what we're booting */ ++int grub_verbose = 0; + /* The default entry. */ + int default_entry = 0; + /* The fallback entry. */ +@@ -117,6 +120,27 @@ check_password (char *entered, char* expected, password_t type) + case PASSWORD_MD5: + return check_md5_password (entered, expected); + #endif ++ ++ case PASSWORD_ENCRYPTED: ++ if (grub_memcmp (expected, "$1$", 3) == 0) ++ return check_md5_password (entered, expected); ++ else if (grub_memcmp (expected, "$5$", 3) == 0) ++ { ++ char *hashed; ++ ++ hashed = sha256_crypt (entered, expected); ++ return hashed == NULL || strcmp (expected, hashed); ++ } ++ else if (grub_memcmp (expected, "$6$", 3) == 0) ++ { ++ char *hashed; ++ ++ hashed = sha512_crypt (entered, expected); ++ return hashed == NULL || strcmp (expected, hashed); ++ } ++ else ++ return strcmp (entered, expected); ++ + default: + /* unsupported password type: be secure */ + return 1; +@@ -131,62 +155,98 @@ disk_read_print_func (int sector, int offset, int length) + } + + ++/* blocklist_read_helper nee disk_read_blocklist_func was a nested ++ * function, to which pointers were taken and exposed globally. Even ++ * in the GNU-C nested functions extension, they have local linkage, ++ * and aren't guaranteed to be accessable *at all* outside of their ++ * containing scope. ++ * ++ * Above and beyond all of that, the variables within blocklist_func_context ++ * are originally local variables, with local (not even static) linkage, ++ * from within blocklist_func. These were each referenced by ++ * disk_read_blocklist_func, which is only called from other functions ++ * through a globally scoped pointer. ++ * ++ * The documentation in GCC actually uses the words "all hell will break ++ * loose" to describe this scenario. ++ * ++ * Also, "start_sector" was also used uninitialized, but gcc doesn't warn ++ * about it (possibly because of the scoping madness?) ++ */ ++ ++static struct { ++ int start_sector; ++ int num_sectors; ++ int num_entries; ++ int last_length; ++} blocklist_func_context = { ++ .start_sector = 0, ++ .num_sectors = 0, ++ .num_entries = 0, ++ .last_length = 0 ++}; ++ ++/* Collect contiguous blocks into one entry as many as possible, ++ and print the blocklist notation on the screen. */ ++static void ++blocklist_read_helper (int sector, int offset, int length) ++{ ++ int *start_sector = &blocklist_func_context.start_sector; ++ int *num_sectors = &blocklist_func_context.num_sectors; ++ int *num_entries = &blocklist_func_context.num_entries; ++ int *last_length = &blocklist_func_context.last_length; ++ int sector_size = get_sector_size(current_drive); ++ ++ if (*num_sectors > 0) ++ { ++ if (*start_sector + *num_sectors == sector ++ && offset == 0 && *last_length == sector_size) ++ { ++ *num_sectors++; ++ *last_length = length; ++ return; ++ } ++ else ++ { ++ if (*last_length == sector_size) ++ grub_printf ("%s%d+%d", *num_entries ? "," : "", ++ *start_sector - part_start, *num_sectors); ++ else if (*num_sectors > 1) ++ grub_printf ("%s%d+%d,%d[0-%d]", *num_entries ? "," : "", ++ *start_sector - part_start, *num_sectors-1, ++ *start_sector + *num_sectors-1 - part_start, ++ *last_length); ++ else ++ grub_printf ("%s%d[0-%d]", *num_entries ? "," : "", ++ *start_sector - part_start, *last_length); ++ *num_entries++; ++ *num_sectors = 0; ++ } ++ } ++ ++ if (offset > 0) ++ { ++ grub_printf("%s%d[%d-%d]", *num_entries ? "," : "", ++ sector-part_start, offset, offset+length); ++ *num_entries++; ++ } ++ else ++ { ++ *start_sector = sector; ++ *num_sectors = 1; ++ *last_length = length; ++ } ++} ++ + /* blocklist */ + static int + blocklist_func (char *arg, int flags) + { + char *dummy = (char *) RAW_ADDR (0x100000); +- int start_sector; +- int num_sectors = 0; +- int num_entries = 0; +- int last_length = 0; + +- auto void disk_read_blocklist_func (int sector, int offset, int length); +- +- /* Collect contiguous blocks into one entry as many as possible, +- and print the blocklist notation on the screen. */ +- auto void disk_read_blocklist_func (int sector, int offset, int length) +- { +- if (num_sectors > 0) +- { +- if (start_sector + num_sectors == sector +- && offset == 0 && last_length == SECTOR_SIZE) +- { +- num_sectors++; +- last_length = length; +- return; +- } +- else +- { +- if (last_length == SECTOR_SIZE) +- grub_printf ("%s%d+%d", num_entries ? "," : "", +- start_sector - part_start, num_sectors); +- else if (num_sectors > 1) +- grub_printf ("%s%d+%d,%d[0-%d]", num_entries ? "," : "", +- start_sector - part_start, num_sectors-1, +- start_sector + num_sectors-1 - part_start, +- last_length); +- else +- grub_printf ("%s%d[0-%d]", num_entries ? "," : "", +- start_sector - part_start, last_length); +- num_entries++; +- num_sectors = 0; +- } +- } +- +- if (offset > 0) +- { +- grub_printf("%s%d[%d-%d]", num_entries ? "," : "", +- sector-part_start, offset, offset+length); +- num_entries++; +- } +- else +- { +- start_sector = sector; +- num_sectors = 1; +- last_length = length; +- } +- } ++ int *start_sector = &blocklist_func_context.start_sector; ++ int *num_sectors = &blocklist_func_context.num_sectors; ++ int *num_entries = &blocklist_func_context.num_entries; + + /* Open the file. */ + if (! grub_open (arg)) +@@ -206,15 +266,15 @@ blocklist_func (char *arg, int flags) + grub_printf (")"); + + /* Read in the whole file to DUMMY. */ +- disk_read_hook = disk_read_blocklist_func; ++ disk_read_hook = blocklist_read_helper; + if (! grub_read (dummy, -1)) + goto fail; + + /* The last entry may not be printed yet. Don't check if it is a + * full sector, since it doesn't matter if we read too much. */ +- if (num_sectors > 0) +- grub_printf ("%s%d+%d", num_entries ? "," : "", +- start_sector - part_start, num_sectors); ++ if (*num_sectors > 0) ++ grub_printf ("%s%d+%d", *num_entries ? "," : "", ++ *start_sector - part_start, *num_sectors); + + grub_printf ("\n"); + +@@ -237,12 +297,25 @@ static struct builtin builtin_blocklist = + static int + boot_func (char *arg, int flags) + { ++ struct term_entry *prev_term = current_term; + /* Clear the int15 handler if we can boot the kernel successfully. + This assumes that the boot code never fails only if KERNEL_TYPE is + not KERNEL_TYPE_NONE. Is this assumption is bad? */ + if (kernel_type != KERNEL_TYPE_NONE) + unset_int15_handler (); + ++ /* if our terminal needed initialization, we should shut it down ++ * before booting the kernel, but we want to save what it was so ++ * we can come back if needed */ ++ if (current_term->shutdown) ++ { ++ (*current_term->shutdown)(); ++ current_term = term_table; /* assumption: console is first */ ++ } ++ ++ if (silent_grub) ++ setcursor(0); ++ + #ifdef SUPPORT_NETBOOT + /* Shut down the networking. */ + cleanup_net (); +@@ -250,11 +323,13 @@ boot_func (char *arg, int flags) + + switch (kernel_type) + { ++#ifndef PLATFORM_EFI + case KERNEL_TYPE_FREEBSD: + case KERNEL_TYPE_NETBSD: + /* *BSD */ + bsd_boot (kernel_type, bootdev, (char *) mbi.cmdline); + break; ++#endif + + case KERNEL_TYPE_LINUX: + /* Linux */ +@@ -296,16 +371,25 @@ boot_func (char *arg, int flags) + chain_stage1 (0, BOOTSEC_LOCATION, boot_part_addr); + break; + ++#ifndef PLATFORM_EFI + case KERNEL_TYPE_MULTIBOOT: + /* Multiboot */ + multi_boot ((int) entry_addr, (int) &mbi); + break; ++#endif + + default: + errnum = ERR_BOOT_COMMAND; + return 1; + } + ++ /* if we get back here, we should go back to what our term was before */ ++ current_term = prev_term; ++ if (current_term->startup) ++ /* if our terminal fails to initialize, fall back to console since ++ * it should always work */ ++ if ((*current_term->startup)() == 0) ++ current_term = term_table; /* we know that console is first */ + return 0; + } + +@@ -402,6 +486,10 @@ static struct builtin builtin_cat = + static int + chainloader_func (char *arg, int flags) + { ++#ifdef PLATFORM_EFI ++ kernel_type = grub_chainloader(arg); ++ return kernel_type == KERNEL_TYPE_NONE; ++#else + int force = 0; + char *file = arg; + +@@ -458,6 +546,7 @@ chainloader_func (char *arg, int flags) + errnum = ERR_NONE; + + return 0; ++#endif + } + + static struct builtin builtin_chainloader = +@@ -564,89 +653,88 @@ static struct builtin builtin_cmp = + /* Set new colors used for the menu interface. Support two methods to + specify a color name: a direct integer representation and a symbolic + color name. An example of the latter is "blink-light-gray/blue". */ +-static int +-color_func (char *arg, int flags) +-{ +- char *normal; +- char *highlight; +- int new_normal_color; +- int new_highlight_color; +- static char *color_list[16] = +- { +- "black", +- "blue", +- "green", +- "cyan", +- "red", +- "magenta", +- "brown", +- "light-gray", +- "dark-gray", +- "light-blue", +- "light-green", +- "light-cyan", +- "light-red", +- "light-magenta", +- "yellow", +- "white" +- }; ++static const char * const color_list[16] = ++{ ++ "black", ++ "blue", ++ "green", ++ "cyan", ++ "red", ++ "magenta", ++ "brown", ++ "light-gray", ++ "dark-gray", ++ "light-blue", ++ "light-green", ++ "light-cyan", ++ "light-red", ++ "light-magenta", ++ "yellow", ++ "white" ++}; + +- auto int color_number (char *str); ++/* Convert the color name STR into the magical number. */ ++static int color_number (char *str) ++{ ++ char *ptr; ++ int i; ++ int color = 0; + +- /* Convert the color name STR into the magical number. */ +- auto int color_number (char *str) +- { +- char *ptr; +- int i; +- int color = 0; +- +- /* Find the separator. */ +- for (ptr = str; *ptr && *ptr != '/'; ptr++) +- ; ++ /* Find the separator. */ ++ for (ptr = str; *ptr && *ptr != '/'; ptr++) ++ ; + +- /* If not found, return -1. */ +- if (! *ptr) +- return -1; ++ /* If not found, return -1. */ ++ if (! *ptr) ++ return -1; + +- /* Terminate the string STR. */ +- *ptr++ = 0; ++ /* Terminate the string STR. */ ++ *ptr++ = 0; + +- /* If STR contains the prefix "blink-", then set the `blink' bit +- in COLOR. */ +- if (substring ("blink-", str) <= 0) +- { +- color = 0x80; +- str += 6; +- } +- +- /* Search for the color name. */ +- for (i = 0; i < 16; i++) +- if (grub_strcmp (color_list[i], str) == 0) +- { +- color |= i; +- break; +- } ++ /* If STR contains the prefix "blink-", then set the `blink' bit ++ in COLOR. */ ++ if (substring ("blink-", str) <= 0) ++ { ++ color = 0x80; ++ str += 6; ++ } ++ ++ /* Search for the color name. */ ++ for (i = 0; i < 16; i++) ++ if (grub_strcmp (color_list[i], str) == 0) ++ { ++ color |= i; ++ break; ++ } + +- if (i == 16) +- return -1; ++ if (i == 16) ++ return -1; + +- str = ptr; +- nul_terminate (str); ++ str = ptr; ++ nul_terminate (str); + +- /* Search for the color name. */ +- for (i = 0; i < 8; i++) +- if (grub_strcmp (color_list[i], str) == 0) +- { +- color |= i << 4; +- break; +- } ++ /* Search for the color name. */ ++ for (i = 0; i < 8; i++) ++ if (grub_strcmp (color_list[i], str) == 0) ++ { ++ color |= i << 4; ++ break; ++ } + +- if (i == 8) +- return -1; ++ if (i == 8) ++ return -1; ++ ++ return color; ++} ++ ++static int ++color_func (char *arg, int flags) ++{ ++ char *normal; ++ char *highlight; ++ int new_normal_color; ++ int new_highlight_color; + +- return color; +- } +- + normal = arg; + highlight = skip_to (0, arg); + +@@ -690,7 +778,6 @@ static struct builtin builtin_color = + " But only the first eight names can be used for BG. You can prefix" + " "blink-" to FG if you want a blinking foreground color." + }; +- + + /* configfile */ + static int +@@ -737,14 +824,18 @@ static struct builtin builtin_configfile = + static int + debug_func (char *arg, int flags) + { +- if (debug) ++ int *whichdebug = &debug; ++ if (arg && !strcmp(arg, "--graphics")) ++ whichdebug = &debug_graphics; ++ ++ if (*whichdebug) + { +- debug = 0; ++ *whichdebug = 0; + grub_printf (" Debug mode is turned off\n"); + } + else + { +- debug = 1; ++ *whichdebug = 1; + grub_printf (" Debug mode is turned on\n"); + } + +@@ -755,17 +846,61 @@ static struct builtin builtin_debug = + { + "debug", + debug_func, +- BUILTIN_CMDLINE, ++ BUILTIN_CMDLINE | BUILTIN_MENU, + "debug", + "Turn on/off the debug mode." + }; + + ++/* verbose */ ++static int ++verbose_func (char *arg, int flags) ++{ ++ if (grub_verbose) ++ { ++ grub_verbose = 0; ++ grub_printf (" Verbose mode is turned off\n"); ++ } ++ else ++ { ++ grub_verbose = 1; ++ grub_printf (" Verbose mode is turned on\n"); ++ } ++ ++ return 0; ++} ++ ++static struct builtin builtin_verbose = ++{ ++ "verbose", ++ verbose_func, ++ BUILTIN_CMDLINE | BUILTIN_MENU, ++ "verbose", ++ "Turn on/off verbose output." ++}; ++ ++ ++#if !defined(SUPPORT_DISKLESS) && !defined(GRUB_UTIL) && !defined(PLATFORM_EFI) ++static int savedefault_helper(int); ++#endif + /* default */ + static int + default_func (char *arg, int flags) + { + #ifndef SUPPORT_DISKLESS ++#ifndef GRUB_UTIL ++#ifndef PLATFORM_EFI ++ /* Has a forced once-only default been specified? */ ++ if ((saved_entryno & STAGE2_ONCEONLY_ENTRY) != 0) ++ { ++ int old_defaults=saved_entryno & ~STAGE2_ONCEONLY_ENTRY; ++ grub_timeout = 0; ++ default_entry = old_defaults >> 8; ++ savedefault_helper(old_defaults & 0xff); ++ return 0; ++ } ++#endif ++#endif + if (grub_strcmp (arg, "saved") == 0) + { + default_entry = saved_entryno; +@@ -792,7 +927,7 @@ static struct builtin builtin_default = + }; + + +-#ifdef GRUB_UTIL ++#if defined(GRUB_UTIL) || defined(PLATFORM_EFI) + /* device */ + static int + device_func (char *arg, int flags) +@@ -800,16 +935,17 @@ device_func (char *arg, int flags) + char *drive = arg; + char *device; + +- /* Get the drive number from DRIVE. */ +- if (! set_device (drive)) +- return 1; +- + /* Get the device argument. */ + device = skip_to (0, drive); +- ++ ++ nul_terminate (drive); + /* Terminate DEVICE. */ + nul_terminate (device); + ++ /* Get the drive number from DRIVE. */ ++ if (! set_device (drive)) ++ return 1; ++ + if (! *device || ! check_device (device)) + { + errnum = ERR_FILE_NOT_FOUND; +@@ -817,7 +953,7 @@ device_func (char *arg, int flags) + } + + assign_device_name (current_drive, device); +- ++ + return 0; + } + +@@ -828,9 +964,20 @@ static struct builtin builtin_device = + BUILTIN_MENU | BUILTIN_CMDLINE | BUILTIN_HELP_LIST, + "device DRIVE DEVICE", + "Specify DEVICE as the actual drive for a BIOS drive DRIVE. This command" +- " can be used only in the grub shell." ++ " can be used only in the grub shell and in EFI." + }; +-#endif /* GRUB_UTIL */ ++#endif /* defined(GRUB_UTIL) || defined(PLATFORM_EFI) */ ++#ifdef PLATFORM_EFI ++static struct builtin builtin_efimap = ++{ ++ "efimap", ++ device_func, ++ BUILTIN_MENU | BUILTIN_CMDLINE | BUILTIN_HELP_LIST, ++ "efimap DRIVE DEVICE", ++ "Specify DEVICE as the actual drive for a BIOS drive DRIVE. This command" ++ " can be used only in EFI." ++}; ++#endif /* PLATFORM_EFI */ + + + #ifdef SUPPORT_NETBOOT +@@ -852,6 +999,139 @@ static struct builtin builtin_dhcp = + }; + #endif /* SUPPORT_NETBOOT */ + ++static int terminal_func (char *arg, int flags); ++ ++#ifdef SUPPORT_GRAPHICS ++ ++static int splashimage_func(char *arg, int flags) { ++ char splashimage[64]; ++ int i; ++ ++ /* filename can only be 64 characters due to our buffer size */ ++ if (strlen(arg) > 63) ++ return 1; ++ if (flags == BUILTIN_CMDLINE) { ++ if (!grub_open(arg)) ++ return 1; ++ grub_close(); ++ } ++ ++ strcpy(splashimage, arg); ++ ++ /* get rid of TERM_NEED_INIT from the graphics terminal. */ ++ for (i = 0; term_table[i].name; i++) { ++ if (grub_strcmp (term_table[i].name, "graphics") == 0) { ++ term_table[i].flags &= ~TERM_NEED_INIT; ++ break; ++ } ++ } ++ ++ graphics_set_splash(splashimage); ++ ++ if (flags == BUILTIN_CMDLINE && graphics_inited) { ++ graphics_end(); ++ graphics_init(); ++ graphics_cls(); ++ } ++ ++ /* FIXME: should we be explicitly switching the terminal as a ++ * side effect here? */ ++ terminal_func("graphics", flags); ++ ++ return 0; ++} ++ ++static struct builtin builtin_splashimage = ++{ ++ "splashimage", ++ splashimage_func, ++ BUILTIN_CMDLINE | BUILTIN_MENU | BUILTIN_HELP_LIST, ++ "splashimage FILE", ++ "Load FILE as the background image when in graphics mode." ++}; ++ ++ ++/* foreground */ ++static int ++foreground_func(char *arg, int flags) ++{ ++ if (grub_strlen(arg) == 6) { ++ int r = ((hex(arg[0]) << 4) | hex(arg[1])) >> 2; ++ int g = ((hex(arg[2]) << 4) | hex(arg[3])) >> 2; ++ int b = ((hex(arg[4]) << 4) | hex(arg[5])) >> 2; ++ ++ foreground = (r << 16) | (g << 8) | b; ++ if (graphics_inited) ++ graphics_set_palette(15, r, g, b); ++ ++ return (0); ++ } ++ ++ return (1); ++} ++ ++static struct builtin builtin_foreground = ++{ ++ "foreground", ++ foreground_func, ++ BUILTIN_CMDLINE | BUILTIN_MENU | BUILTIN_HELP_LIST, ++ "foreground RRGGBB", ++ "Sets the foreground color when in graphics mode." ++ "RR is red, GG is green, and BB blue. Numbers must be in hexadecimal." ++}; ++ ++ ++/* background */ ++static int ++background_func(char *arg, int flags) ++{ ++ if (grub_strlen(arg) == 6) { ++ int r = ((hex(arg[0]) << 4) | hex(arg[1])) >> 2; ++ int g = ((hex(arg[2]) << 4) | hex(arg[3])) >> 2; ++ int b = ((hex(arg[4]) << 4) | hex(arg[5])) >> 2; ++ ++ background = (r << 16) | (g << 8) | b; ++ if (graphics_inited) ++ graphics_set_palette(0, r, g, b); ++ return (0); ++ } ++ ++ return (1); ++} ++ ++static struct builtin builtin_background = ++{ ++ "background", ++ background_func, ++ BUILTIN_CMDLINE | BUILTIN_MENU | BUILTIN_HELP_LIST, ++ "background RRGGBB", ++ "Sets the background color when in graphics mode." ++ "RR is red, GG is green, and BB blue. Numbers must be in hexadecimal." ++}; ++ ++#endif /* SUPPORT_GRAPHICS */ ++ ++ ++/* clear */ ++static int ++clear_func() ++{ ++ if (current_term->cls) ++ current_term->cls(); ++ ++ return 0; ++} ++ ++static struct builtin builtin_clear = ++{ ++ "clear", ++ clear_func, ++ BUILTIN_CMDLINE | BUILTIN_HELP_LIST, ++ "clear", ++ "Clear the screen" ++}; ++ ++#ifndef PLATFORM_EFI + + /* displayapm */ + static int +@@ -893,6 +1173,7 @@ static struct builtin builtin_displayapm = + "displayapm", + "Display APM BIOS information." + }; ++#endif /* !PLATFORM_EFI */ + + + /* displaymem */ +@@ -912,11 +1193,11 @@ displaymem_func (char *arg, int flags) + if (mbi.flags & MB_INFO_MEM_MAP) + { + struct AddrRangeDesc *map = (struct AddrRangeDesc *) mbi.mmap_addr; +- int end_addr = mbi.mmap_addr + mbi.mmap_length; ++ unsigned long end_addr = mbi.mmap_addr + mbi.mmap_length; + + grub_printf (" [Address Range Descriptor entries " + "immediately follow (values are 64-bit)]\n"); +- while (end_addr > (int) map) ++ while (end_addr > (unsigned long) map) + { + char *str; + +@@ -924,15 +1205,10 @@ displaymem_func (char *arg, int flags) + str = "Usable RAM"; + else + str = "Reserved"; +- grub_printf (" %s: Base Address: 0x%x X 4GB + 0x%x,\n" +- " Length: 0x%x X 4GB + 0x%x bytes\n", +- str, +- (unsigned long) (map->BaseAddr >> 32), +- (unsigned long) (map->BaseAddr & 0xFFFFFFFF), +- (unsigned long) (map->Length >> 32), +- (unsigned long) (map->Length & 0xFFFFFFFF)); +- +- map = ((struct AddrRangeDesc *) (((int) map) + 4 + map->size)); ++ grub_printf (" %s: Base Address: 0x%lx Length: 0x%lx bytes\n", ++ str, map->BaseAddr, map->Length); ++ ++ map = ((struct AddrRangeDesc *) (((unsigned long) map) + 4 + map->size)); + } + } + +@@ -1009,6 +1285,7 @@ static struct builtin builtin_dump = + }; + #endif /* GRUB_UTIL */ + ++#ifndef PLATFORM_EFI + + static char embed_info[32]; + /* embed */ +@@ -1143,6 +1420,7 @@ static struct builtin builtin_embed = + " is a drive, or in the "bootloader" area if DEVICE is a FFS partition." + " Print the number of sectors which STAGE1_5 occupies if successful." + }; ++#endif /* ! PLATFORM_EFI */ + + + /* fallback */ +@@ -1230,17 +1508,19 @@ find_func (char *arg, int flags) + } + + /* Hard disks. */ +- for (drive = 0x80; drive < 0x88; drive++) ++ for (drive = 0x80; drive < (0x80 + MAX_HD_NUM); drive++) + { + unsigned long part = 0xFFFFFF; +- unsigned long start, len, offset, ext_offset; +- int type, entry; +- char buf[SECTOR_SIZE]; ++ unsigned long start, len, offset, ext_offset, gpt_offset; ++ int type, entry, gpt_count, gpt_size; ++ int sector_size = get_sector_size(drive); ++ char buf[sector_size]; + + current_drive = drive; + while (next_partition (drive, 0xFFFFFF, &part, &type, + &start, &len, &offset, &entry, +- &ext_offset, buf)) ++ &ext_offset, &gpt_offset, ++ &gpt_count, &gpt_size, buf)) + { + if (type != PC_SLICE_TYPE_NONE + && ! IS_PC_SLICE_TYPE_BSD (type) +@@ -1301,6 +1581,59 @@ static struct builtin builtin_find = + "Search for the filename FILENAME in all of partitions and print the list of" + " the devices which contain the file." + }; ++ ++/* findiso */ ++ ++/* Search for an ISO 9660 partition. */ ++static int ++findiso_func (char *arg, int flags) ++{ ++ unsigned long drive; ++ unsigned long tmp_drive = saved_drive; ++ unsigned long tmp_partition = saved_partition; ++ ++ /* Hard disks. */ ++ for (drive = 0x80; drive < 0x89; drive++) ++ { ++ unsigned long part = 0xFFFFFF; ++ ++ if (drive == 0x88) ++ drive = 0x100; ++ ++ current_drive = drive; ++ current_partition = part; ++ ++ if (open_device ()) ++ { ++ char *type = get_fsys_type(); ++ if (!grub_strcmp(type, "iso9660")) ++ { ++ saved_drive = current_drive; ++ saved_partition = current_partition; ++ errnum = ERR_NONE; ++ return 0; ++ } ++ } ++ ++ /* We want to ignore any error here. */ ++ errnum = ERR_NONE; ++ } ++ ++ saved_drive = tmp_drive; ++ saved_partition = tmp_partition; ++ ++ errnum = ERR_FILE_NOT_FOUND; ++ return 1; ++} ++ ++static struct builtin builtin_findiso = ++{ ++ "findiso", ++ findiso_func, ++ BUILTIN_CMDLINE | BUILTIN_HELP_LIST, ++ "findiso FILENAME", ++ "Set root to the first device with a valid ISO 9660 filesystem." ++}; + + + /* fstest */ +@@ -1679,6 +2012,7 @@ static struct builtin builtin_ifconfig = + }; + #endif /* SUPPORT_NETBOOT */ + ++#ifndef PLATFORM_EFI + + /* impsprobe */ + static int +@@ -1706,6 +2040,7 @@ static struct builtin builtin_impsprobe = + " configuration table and boot the various CPUs which are found into" + " a tight loop." + }; ++#endif /* ! PLATFORM_EFI */ + + + /* initrd */ +@@ -1738,8 +2073,82 @@ static struct builtin builtin_initrd = + " appropriate parameters in the Linux setup area in memory." + }; + ++#ifndef PLATFORM_EFI + + /* install */ ++static struct { ++ int saved_sector; ++ int installaddr; ++ int installlist; ++ int last_length; ++ char *stage2_first_buffer; ++} install_func_context = { ++ .saved_sector = 0, ++ .installaddr = 0, ++ .installlist = 0, ++ .last_length = SECTOR_SIZE, ++ .stage2_first_buffer = NULL, ++}; ++ ++/* Save the first sector of Stage2 in STAGE2_SECT. */ ++/* Formerly disk_read_savesect_func with local scope inside install_func */ ++static void ++install_savesect_helper(int sector, int offset, int length) ++{ ++ if (debug) ++ printf ("[%d]", sector); ++ ++ /* ReiserFS has files which sometimes contain data not aligned ++ on sector boundaries. Returning an error is better than ++ silently failing. */ ++ if (offset != 0 || length != SECTOR_SIZE) ++ errnum = ERR_UNALIGNED; ++ ++ install_func_context.saved_sector = sector; ++} ++ ++/* Write SECTOR to INSTALLLIST, and update INSTALLADDR and INSTALLSECT. */ ++/* Formerly disk_read_blocklist_func with local scope inside install_func */ ++static void ++install_blocklist_helper (int sector, int offset, int length) ++{ ++ int *installaddr = &install_func_context.installaddr; ++ int *installlist = &install_func_context.installlist; ++ char **stage2_first_buffer = &install_func_context.stage2_first_buffer; ++ /* Was the last sector full? */ ++ int *last_length = &install_func_context.last_length; ++ ++ if (debug) ++ printf("[%d]", sector); ++ ++ if (offset != 0 || *last_length != SECTOR_SIZE) ++ { ++ /* We found a non-sector-aligned data block. */ ++ errnum = ERR_UNALIGNED; ++ return; ++ } ++ ++ *last_length = length; ++ ++ if (*((unsigned long *) (*installlist - 4)) ++ + *((unsigned short *) *installlist) != sector ++ || *installlist == (int) *stage2_first_buffer + SECTOR_SIZE + 4) ++ { ++ *installlist -= 8; ++ ++ if (*((unsigned long *) (*installlist - 8))) ++ errnum = ERR_WONT_FIT; ++ else ++ { ++ *((unsigned short *) (*installlist + 2)) = (*installaddr >> 4); ++ *((unsigned long *) (*installlist - 4)) = sector; ++ } ++ } ++ ++ *((unsigned short *) *installlist) += 1; ++ *installaddr += 512; ++} ++ + static int + install_func (char *arg, int flags) + { +@@ -1747,8 +2156,12 @@ install_func (char *arg, int flags) + char *stage1_buffer = (char *) RAW_ADDR (0x100000); + char *stage2_buffer = stage1_buffer + SECTOR_SIZE; + char *old_sect = stage2_buffer + SECTOR_SIZE; +- char *stage2_first_buffer = old_sect + SECTOR_SIZE; +- char *stage2_second_buffer = stage2_first_buffer + SECTOR_SIZE; ++ /* stage2_first_buffer used to be defined as: ++ * char *stage2_first_buffer = old_sect + SECTOR_SIZE; */ ++ char **stage2_first_buffer = &install_func_context.stage2_first_buffer; ++ /* and stage2_second_buffer was: ++ * char *stage2_second_buffer = stage2_first_buffer + SECTOR_SIZE; */ ++ char *stage2_second_buffer = old_sect + SECTOR_SIZE + SECTOR_SIZE; + /* XXX: Probably SECTOR_SIZE is reasonable. */ + char *config_filename = stage2_second_buffer + SECTOR_SIZE; + char *dummy = config_filename + SECTOR_SIZE; +@@ -1757,10 +2170,11 @@ install_func (char *arg, int flags) + int src_drive, src_partition, src_part_start; + int i; + struct geometry dest_geom, src_geom; +- int saved_sector; ++ int *saved_sector = &install_func_context.saved_sector; + int stage2_first_sector, stage2_second_sector; + char *ptr; +- int installaddr, installlist; ++ int *installaddr = &install_func_context.installaddr; ++ int *installlist = &install_func_context.installlist; + /* Point to the location of the name of a configuration file in Stage 2. */ + char *config_file_location; + /* If FILE is a Stage 1.5? */ +@@ -1769,68 +2183,18 @@ install_func (char *arg, int flags) + int is_open = 0; + /* If LBA is forced? */ + int is_force_lba = 0; +- /* Was the last sector full? */ +- int last_length = SECTOR_SIZE; ++ int *last_length = &install_func_context.last_length; + ++ /* Reset state. */ ++ *last_length = SECTOR_SIZE; ++ ++ *stage2_first_buffer = old_sect + SECTOR_SIZE; + #ifdef GRUB_UTIL + /* If the Stage 2 is in a partition mounted by an OS, this will store + the filename under the OS. */ + char *stage2_os_file = 0; + #endif /* GRUB_UTIL */ + +- auto void disk_read_savesect_func (int sector, int offset, int length); +- auto void disk_read_blocklist_func (int sector, int offset, int length); +- +- /* Save the first sector of Stage2 in STAGE2_SECT. */ +- auto void disk_read_savesect_func (int sector, int offset, int length) +- { +- if (debug) +- printf ("[%d]", sector); +- +- /* ReiserFS has files which sometimes contain data not aligned +- on sector boundaries. Returning an error is better than +- silently failing. */ +- if (offset != 0 || length != SECTOR_SIZE) +- errnum = ERR_UNALIGNED; +- +- saved_sector = sector; +- } +- +- /* Write SECTOR to INSTALLLIST, and update INSTALLADDR and +- INSTALLSECT. */ +- auto void disk_read_blocklist_func (int sector, int offset, int length) +- { +- if (debug) +- printf("[%d]", sector); +- +- if (offset != 0 || last_length != SECTOR_SIZE) +- { +- /* We found a non-sector-aligned data block. */ +- errnum = ERR_UNALIGNED; +- return; +- } +- +- last_length = length; +- +- if (*((unsigned long *) (installlist - 4)) +- + *((unsigned short *) installlist) != sector +- || installlist == (int) stage2_first_buffer + SECTOR_SIZE + 4) +- { +- installlist -= 8; +- +- if (*((unsigned long *) (installlist - 8))) +- errnum = ERR_WONT_FIT; +- else +- { +- *((unsigned short *) (installlist + 2)) = (installaddr >> 4); +- *((unsigned long *) (installlist - 4)) = sector; +- } +- } +- +- *((unsigned short *) installlist) += 1; +- installaddr += 512; +- } +- + /* First, check the GNU-style long option. */ + while (1) + { +@@ -1862,10 +2226,10 @@ install_func (char *arg, int flags) + addr = skip_to (0, file); + + /* Get the installation address. */ +- if (! safe_parse_maxint (&addr, &installaddr)) ++ if (! safe_parse_maxint (&addr, installaddr)) + { + /* ADDR is not specified. */ +- installaddr = 0; ++ *installaddr = 0; + ptr = addr; + errnum = 0; + } +@@ -1961,17 +2325,17 @@ install_func (char *arg, int flags) + = 0x9090; + + /* Read the first sector of Stage 2. */ +- disk_read_hook = disk_read_savesect_func; +- if (grub_read (stage2_first_buffer, SECTOR_SIZE) != SECTOR_SIZE) ++ disk_read_hook = install_savesect_helper; ++ if (grub_read (*stage2_first_buffer, SECTOR_SIZE) != SECTOR_SIZE) + goto fail; + +- stage2_first_sector = saved_sector; ++ stage2_first_sector = *saved_sector; + + /* Read the second sector of Stage 2. */ + if (grub_read (stage2_second_buffer, SECTOR_SIZE) != SECTOR_SIZE) + goto fail; + +- stage2_second_sector = saved_sector; ++ stage2_second_sector = *saved_sector; + + /* Check for the version of Stage 2. */ + if (*((short *) (stage2_second_buffer + STAGE2_VER_MAJ_OFFS)) +@@ -1987,27 +2351,27 @@ install_func (char *arg, int flags) + + /* If INSTALLADDR is not specified explicitly in the command-line, + determine it by the Stage 2 id. */ +- if (! installaddr) ++ if (! *installaddr) + { + if (! is_stage1_5) + /* Stage 2. */ +- installaddr = 0x8000; ++ *installaddr = 0x8000; + else + /* Stage 1.5. */ +- installaddr = 0x2000; ++ *installaddr = 0x2000; + } + + *((unsigned long *) (stage1_buffer + STAGE1_STAGE2_SECTOR)) + = stage2_first_sector; + *((unsigned short *) (stage1_buffer + STAGE1_STAGE2_ADDRESS)) +- = installaddr; ++ = *installaddr; + *((unsigned short *) (stage1_buffer + STAGE1_STAGE2_SEGMENT)) +- = installaddr >> 4; ++ = *installaddr >> 4; + +- i = (int) stage2_first_buffer + SECTOR_SIZE - 4; ++ i = (int) *stage2_first_buffer + SECTOR_SIZE - 4; + while (*((unsigned long *) i)) + { +- if (i < (int) stage2_first_buffer ++ if (i < (int) *stage2_first_buffer + || (*((int *) (i - 4)) & 0x80000000) + || *((unsigned short *) i) >= 0xA00 + || *((short *) (i + 2)) == 0) +@@ -2021,13 +2385,13 @@ install_func (char *arg, int flags) + i -= 8; + } + +- installlist = (int) stage2_first_buffer + SECTOR_SIZE + 4; +- installaddr += SECTOR_SIZE; ++ *installlist = (int) *stage2_first_buffer + SECTOR_SIZE + 4; ++ *installaddr += SECTOR_SIZE; + + /* Read the whole of Stage2 except for the first sector. */ + grub_seek (SECTOR_SIZE); + +- disk_read_hook = disk_read_blocklist_func; ++ disk_read_hook = install_blocklist_helper; + if (! grub_read (dummy, -1)) + goto fail; + +@@ -2110,7 +2474,7 @@ install_func (char *arg, int flags) + /* Skip the first sector. */ + grub_seek (SECTOR_SIZE); + +- disk_read_hook = disk_read_savesect_func; ++ disk_read_hook = install_savesect_helper; + if (grub_read (stage2_buffer, SECTOR_SIZE) != SECTOR_SIZE) + goto fail; + +@@ -2180,7 +2544,7 @@ install_func (char *arg, int flags) + else + #endif /* GRUB_UTIL */ + { +- if (! devwrite (saved_sector - part_start, 1, stage2_buffer)) ++ if (! devwrite (*saved_sector - part_start, 1, stage2_buffer)) + goto fail; + } + } +@@ -2202,7 +2566,7 @@ install_func (char *arg, int flags) + goto fail; + } + +- if (fwrite (stage2_first_buffer, 1, SECTOR_SIZE, fp) != SECTOR_SIZE) ++ if (fwrite (*stage2_first_buffer, 1, SECTOR_SIZE, fp) != SECTOR_SIZE) + { + fclose (fp); + errnum = ERR_WRITE; +@@ -2229,7 +2593,7 @@ install_func (char *arg, int flags) + goto fail; + + if (! devwrite (stage2_first_sector - src_part_start, 1, +- stage2_first_buffer)) ++ *stage2_first_buffer)) + goto fail; + + if (! devwrite (stage2_second_sector - src_part_start, 1, +@@ -2322,6 +2686,7 @@ static struct builtin builtin_ioprobe = + "ioprobe DRIVE", + "Probe I/O ports used for the drive DRIVE." + }; ++#endif /* ! PLATFORM_EFI */ + + + /* kernel */ +@@ -2456,6 +2821,7 @@ static struct builtin builtin_makeactive = + " This command is limited to _primary_ PC partitions on a hard disk." + }; + ++#ifndef PLATFORM_EFI + + /* map */ + /* Map FROM_DRIVE to TO_DRIVE. */ +@@ -2519,6 +2885,7 @@ static struct builtin builtin_map = + " when you chain-load some operating systems, such as DOS, if such an" + " OS resides at a non-first drive." + }; ++#endif /* ! PLATFORM_EFI */ + + + #ifdef USE_MD5_PASSWORDS +@@ -2579,6 +2946,7 @@ static struct builtin builtin_md5crypt = + }; + #endif /* USE_MD5_PASSWORDS */ + ++#ifndef PLATFORM_EFI + + /* module */ + static int +@@ -2656,6 +3024,7 @@ static struct builtin builtin_modulenounzip = + "The same as `module', except that automatic decompression is" + " disabled." + }; ++#endif /* !PLATFORM_EFI */ + + + /* pager [on|off] */ +@@ -2698,7 +3067,6 @@ partnew_func (char *arg, int flags) + int start_cl, start_ch, start_dh; + int end_cl, end_ch, end_dh; + int entry; +- char mbr[512]; + + /* Convert a LBA address to a CHS address in the INT 13 format. */ + auto void lba_to_chs (int lba, int *cl, int *ch, int *dh); +@@ -2729,6 +3097,9 @@ partnew_func (char *arg, int flags) + return 1; + } + ++ int sector_size = get_sector_size(current_drive); ++ char mbr[sector_size]; ++ + /* The partition must a primary partition. */ + if ((current_partition >> 16) > 3 + || (current_partition & 0xFFFF) != 0xFFFF) +@@ -2762,7 +3133,7 @@ partnew_func (char *arg, int flags) + return 1; + + /* Read the MBR. */ +- if (! rawread (current_drive, 0, 0, SECTOR_SIZE, mbr)) ++ if (! rawread (current_drive, 0, 0, sector_size, mbr)) + return 1; + + /* Check if the new partition will fit in the disk. */ +@@ -2815,9 +3186,8 @@ parttype_func (char *arg, int flags) + { + int new_type; + unsigned long part = 0xFFFFFF; +- unsigned long start, len, offset, ext_offset; +- int entry, type; +- char mbr[512]; ++ unsigned long start, len, offset, ext_offset, gpt_offset; ++ int entry, type, gpt_count, gpt_size; + + /* Get the drive and the partition. */ + if (! set_device (arg)) +@@ -2829,6 +3199,9 @@ parttype_func (char *arg, int flags) + errnum = ERR_BAD_ARGUMENT; + return 1; + } ++ ++ int sector_size = get_sector_size(current_drive); ++ char mbr[sector_size]; + + /* The partition must be a PC slice. */ + if ((current_partition >> 16) == 0xFF +@@ -2853,8 +3226,15 @@ parttype_func (char *arg, int flags) + /* Look for the partition. */ + while (next_partition (current_drive, 0xFFFFFF, &part, &type, + &start, &len, &offset, &entry, +- &ext_offset, mbr)) ++ &ext_offset, &gpt_offset, &gpt_count, &gpt_size, mbr)) + { ++ /* The partition may not be a GPT partition. */ ++ if (gpt_offset != 0) ++ { ++ errnum = ERR_BAD_ARGUMENT; ++ return 1; ++ } ++ + if (part == current_partition) + { + /* Found. */ +@@ -2900,6 +3280,11 @@ password_func (char *arg, int flags) + arg = skip_to (0, arg); + } + #endif ++ else if (grub_memcmp (arg, "--encrypted", 5) == 0) ++ { ++ type = PASSWORD_ENCRYPTED; ++ arg = skip_to (0, arg); ++ } + if (grub_memcmp (arg, "--", 2) == 0) + { + type = PASSWORD_UNSUPPORTED; +@@ -2947,7 +3332,7 @@ static struct builtin builtin_password = + "password", + password_func, + BUILTIN_MENU | BUILTIN_CMDLINE | BUILTIN_NO_ECHO, +- "password [--md5] PASSWD [FILE]", ++ "password [--md5|--encrypted] PASSWD [FILE]", + "If used in the first section of a menu file, disable all" + " interactive editing control (menu entry editor and" + " command line). If the password PASSWD is entered, it loads the" +@@ -2956,7 +3341,8 @@ static struct builtin builtin_password = + " instructions. You can also use it in the script section, in" + " which case it will ask for the password, before continueing." + " The option --md5 tells GRUB that PASSWD is encrypted with" +- " md5crypt." ++ " md5crypt, --encrypted that PASSWD is encrypted (with algorithm" ++ " specified in PASSWD: supported is md5, sha-256, sha-512)." + }; + + +@@ -2982,8 +3368,8 @@ static struct builtin builtin_pause = + "Print MESSAGE, then wait until a key is pressed." + }; + ++#if defined (GRUB_UTIL) || defined (PLATFORM_EFI) + +-#ifdef GRUB_UTIL + /* quit */ + static int + quit_func (char *arg, int flags) +@@ -3002,7 +3388,7 @@ static struct builtin builtin_quit = + "quit", + "Exit from the GRUB shell." + }; +-#endif /* GRUB_UTIL */ ++#endif /* defined (GRUB_UTIL) || defined (PLATFORM_EFI) */ + + + #ifdef SUPPORT_NETBOOT +@@ -3165,7 +3551,8 @@ real_root_func (char *arg, int attempt_mount) + return 1; + + /* Print the type of the filesystem. */ +- print_fsys_type (); ++ if (grub_verbose) ++ print_fsys_type (); + } + + return 0; +@@ -3217,146 +3604,181 @@ static struct builtin builtin_rootnoverify = + }; + + +-/* savedefault */ ++ ++#if !defined(SUPPORT_DISKLESS) && !defined(GRUB_UTIL) && !defined(PLATFORM_EFI) ++/* Write specified default entry number into stage2 file. */ + static int +-savedefault_func (char *arg, int flags) ++savedefault_helper(int new_default) + { +-#if !defined(SUPPORT_DISKLESS) && !defined(GRUB_UTIL) +- unsigned long tmp_drive = saved_drive; +- unsigned long tmp_partition = saved_partition; +- char *default_file = (char *) DEFAULT_FILE_BUF; +- char buf[10]; +- char sect[SECTOR_SIZE]; +- int entryno; +- int sector_count = 0; +- int saved_sectors[2]; +- int saved_offsets[2]; +- int saved_lengths[2]; +- +- /* Save sector information about at most two sectors. */ +- auto void disk_read_savesect_func (int sector, int offset, int length); +- void disk_read_savesect_func (int sector, int offset, int length) +- { +- if (sector_count < 2) +- { +- saved_sectors[sector_count] = sector; +- saved_offsets[sector_count] = offset; +- saved_lengths[sector_count] = length; +- } +- sector_count++; +- } +- +- /* This command is only useful when you boot an entry from the menu +- interface. */ +- if (! (flags & BUILTIN_SCRIPT)) ++ char buffer[512]; ++ int *entryno_ptr; ++ ++ /* Get the geometry of the boot drive (i.e. the disk which contains ++ this stage2). */ ++ if (get_diskinfo (boot_drive, &buf_geom)) + { +- errnum = ERR_UNRECOGNIZED; ++ errnum = ERR_NO_DISK; + return 1; + } + +- /* Determine a saved entry number. */ +- if (*arg) ++ /* Load the second sector of this stage2. */ ++ if (! rawread (boot_drive, install_second_sector, 0, SECTOR_SIZE, buffer)) + { +- if (grub_memcmp (arg, "fallback", sizeof ("fallback") - 1) == 0) +- { +- int i; +- int index = 0; +- +- for (i = 0; i < MAX_FALLBACK_ENTRIES; i++) +- { +- if (fallback_entries[i] < 0) +- break; +- if (fallback_entries[i] == current_entryno) +- { +- index = i + 1; +- break; +- } +- } +- +- if (index >= MAX_FALLBACK_ENTRIES || fallback_entries[index] < 0) +- { +- /* This is the last. */ +- errnum = ERR_BAD_ARGUMENT; +- return 1; +- } ++ return 1; ++ } + +- entryno = fallback_entries[index]; +- } +- else if (! safe_parse_maxint (&arg, &entryno)) +- return 1; ++ /* Sanity check. */ ++ if (buffer[STAGE2_STAGE2_ID] != STAGE2_ID_STAGE2 ++ || *((short *) (buffer + STAGE2_VER_MAJ_OFFS)) != COMPAT_VERSION) ++ { ++ errnum = ERR_BAD_VERSION; ++ return 1; + } +- else +- entryno = current_entryno; ++ ++ entryno_ptr = (int *) (buffer + STAGE2_SAVED_ENTRYNO); + +- /* Open the default file. */ +- saved_drive = boot_drive; +- saved_partition = install_partition; +- if (grub_open (default_file)) ++ /* Check if the saved entry number differs from current entry number. */ ++ if (*entryno_ptr != new_default) + { +- int len; ++ /* Overwrite the saved entry number. */ ++ *entryno_ptr = new_default; + +- disk_read_hook = disk_read_savesect_func; +- len = grub_read (buf, sizeof (buf)); +- disk_read_hook = 0; +- grub_close (); ++ /* Save the image in the disk. */ ++ if (! rawwrite (boot_drive, install_second_sector, buffer)) ++ return 1; + +- if (len != sizeof (buf)) +- { +- /* This is too small. Do not modify the file manually, please! */ +- errnum = ERR_READ; +- goto fail; +- } ++ /* Clear the cache. */ ++ buf_track = -1; ++ } + +- if (sector_count > 2) +- { +- /* Is this possible?! Too fragmented! */ +- errnum = ERR_FSYS_CORRUPT; +- goto fail; +- } +- +- /* Set up a string to be written. */ +- grub_memset (buf, '\n', sizeof (buf)); +- grub_sprintf (buf, "%d", entryno); +- +- if (saved_lengths[0] < sizeof (buf)) +- { +- /* The file is anchored to another file and the first few bytes +- are spanned in two sectors. Uggh... */ +- if (! rawread (current_drive, saved_sectors[0], 0, SECTOR_SIZE, +- sect)) +- goto fail; +- grub_memmove (sect + saved_offsets[0], buf, saved_lengths[0]); +- if (! rawwrite (current_drive, saved_sectors[0], sect)) +- goto fail; ++ return 0; ++} ++#endif + +- if (! rawread (current_drive, saved_sectors[1], 0, SECTOR_SIZE, +- sect)) +- goto fail; +- grub_memmove (sect + saved_offsets[1], +- buf + saved_lengths[0], +- sizeof (buf) - saved_lengths[0]); +- if (! rawwrite (current_drive, saved_sectors[1], sect)) +- goto fail; +- } ++#if !defined(SUPPORT_DISKLESS) && defined(GRUB_UTIL) ++#define SECTOR_SIZE 0x200 ++/* ++ * Full implementation of new `savedefault' for GRUB shell. ++ * XXX This needs fixing for stage2 files which aren't accessible ++ * through a mounted filesystem. ++ */ ++static int ++savedefault_shell(char *arg, int flags) ++{ ++ char *stage2_os_file = "/boot/grub/stage2"; /* Default filename */ ++ FILE *fp; ++ char buffer[512]; ++ int *entryno_ptr; ++ int new_default = 0; ++ int old_default = 0; ++ ++ while (1) ++ { ++ if (grub_memcmp ("--stage2=", arg, sizeof ("--stage2=") - 1) == 0) ++ { ++ stage2_os_file = arg + sizeof ("--stage2=") - 1; ++ arg = skip_to (0, arg); ++ nul_terminate (stage2_os_file); ++ } ++ else if (grub_memcmp ("--default=", arg, sizeof ("--default=") - 1) == 0) ++ { ++ char *p = arg + sizeof ("--default=") - 1; ++ if (! safe_parse_maxint (&p, &new_default)) ++ return 1; ++ arg = skip_to (0, arg); ++ } ++ else if (grub_memcmp ("--once", arg, sizeof ("--once") - 1) == 0) ++ { ++ new_default <<= 8; ++ new_default |= STAGE2_ONCEONLY_ENTRY; ++ arg = skip_to (0, arg); ++ } + else +- { +- /* This is a simple case. It fits into a single sector. */ +- if (! rawread (current_drive, saved_sectors[0], 0, SECTOR_SIZE, +- sect)) +- goto fail; +- grub_memmove (sect + saved_offsets[0], buf, sizeof (buf)); +- if (! rawwrite (current_drive, saved_sectors[0], sect)) +- goto fail; +- } ++ break; ++ } + +- /* Clear the cache. */ +- buf_track = -1; ++ if (! (fp = fopen(stage2_os_file, "r+"))) ++ { ++ errnum = ERR_FILE_NOT_FOUND; ++ return 1; ++ } ++ ++ if (fseek (fp, SECTOR_SIZE, SEEK_SET) != 0) ++ { ++ fclose (fp); ++ errnum = ERR_BAD_VERSION; ++ return 1; ++ } ++ ++ if (fread (buffer, 1, SECTOR_SIZE, fp) != SECTOR_SIZE) ++ { ++ fclose (fp); ++ errnum = ERR_READ; ++ return 1; + } + +- fail: +- saved_drive = tmp_drive; +- saved_partition = tmp_partition; +- return errnum; ++ /* Sanity check. */ ++ if (buffer[STAGE2_STAGE2_ID] != STAGE2_ID_STAGE2 ++ || *((short *) (buffer + STAGE2_VER_MAJ_OFFS)) != COMPAT_VERSION) ++ { ++ errnum = ERR_BAD_VERSION; ++ return 1; ++ } ++ ++ entryno_ptr = (int *) (buffer + STAGE2_SAVED_ENTRYNO); ++ if (new_default & STAGE2_ONCEONLY_ENTRY) ++ { ++ old_default=*entryno_ptr; ++ *entryno_ptr = new_default + (old_default & 0xFF); ++ } ++ else ++ { ++ *entryno_ptr = new_default; ++ } ++ ++ if (fseek (fp, SECTOR_SIZE, SEEK_SET) != 0) ++ { ++ fclose (fp); ++ errnum = ERR_BAD_VERSION; ++ return 1; ++ } ++ ++ if (fwrite (buffer, 1, SECTOR_SIZE, fp) != SECTOR_SIZE) ++ { ++ fclose (fp); ++ errnum = ERR_WRITE; ++ return 1; ++ } ++ ++ (void)fflush (fp); ++ fclose (fp); ++ return 0; ++} ++#undef SECTOR_SIZE ++#endif ++ ++/* savedefault */ ++static int ++savedefault_func (char *arg, int flags) ++{ ++#if !defined(SUPPORT_DISKLESS) ++#if !defined(GRUB_UTIL) ++#if !defined(PLATFORM_EFI) ++ /* This command is only useful when you boot an entry from the menu ++ interface. */ ++ if (! (flags & BUILTIN_SCRIPT)) ++ { ++ errnum = ERR_UNRECOGNIZED; ++ return 1; ++ } ++ ++ return savedefault_helper(current_entryno); ++#else /* defined(PLATFORM_EFI) */ ++ return grub_save_saved_default (current_entryno); ++#endif ++#else /* defined(GRUB_UTIL) */ ++ return savedefault_shell(arg, flags); ++#endif + #else /* ! SUPPORT_DISKLESS && ! GRUB_UTIL */ + errnum = ERR_UNRECOGNIZED; + return 1; +@@ -3368,10 +3790,14 @@ static struct builtin builtin_savedefault = + "savedefault", + savedefault_func, + BUILTIN_CMDLINE, +- "savedefault [NUM | `fallback']", +- "Save the current entry as the default boot entry if no argument is" +- " specified. If a number is specified, this number is saved. If" +- " `fallback' is used, next fallback entry is saved." ++#ifdef GRUB_UTIL ++ "savedefault [--stage2=STAGE2_FILE] [--default=DEFAULT] [--once]", ++ "Save DEFAULT as the default boot entry in STAGE2_FILE. If '--once'" ++ " is specified, the default is reset after the next reboot." ++#else ++ "savedefault", ++ "Save the current entry as the default boot entry." ++#endif + }; + + +@@ -3527,6 +3953,7 @@ static struct builtin builtin_serial = + }; + #endif /* SUPPORT_SERIAL */ + ++#ifndef PLATFORM_EFI + + /* setkey */ + struct keysym +@@ -3612,50 +4039,47 @@ static struct keysym keysym_table[] = + {"delete", 0, 0x7f, 0, 0x53} + }; + +-static int +-setkey_func (char *arg, int flags) ++static int find_key_code (char *key) + { +- char *to_key, *from_key; +- int to_code, from_code; +- int map_in_interrupt = 0; +- +- auto int find_key_code (char *key); +- auto int find_ascii_code (char *key); +- +- auto int find_key_code (char *key) +- { +- int i; ++ int i; + +- for (i = 0; i < sizeof (keysym_table) / sizeof (keysym_table[0]); i++) +- { +- if (keysym_table[i].unshifted_name && +- grub_strcmp (key, keysym_table[i].unshifted_name) == 0) +- return keysym_table[i].keycode; +- else if (keysym_table[i].shifted_name && +- grub_strcmp (key, keysym_table[i].shifted_name) == 0) +- return keysym_table[i].keycode; +- } +- +- return 0; ++ for (i = 0; i < sizeof (keysym_table) / sizeof (keysym_table[0]); i++) ++ { ++ if (keysym_table[i].unshifted_name && ++ grub_strcmp (key, keysym_table[i].unshifted_name) == 0) ++ return keysym_table[i].keycode; ++ else if (keysym_table[i].shifted_name && ++ grub_strcmp (key, keysym_table[i].shifted_name) == 0) ++ return keysym_table[i].keycode; + } + +- auto int find_ascii_code (char *key) ++ return 0; ++} ++ ++static int find_ascii_code (char *key) ++{ ++ int i; ++ ++ for (i = 0; i < sizeof (keysym_table) / sizeof (keysym_table[0]); i++) + { +- int i; +- +- for (i = 0; i < sizeof (keysym_table) / sizeof (keysym_table[0]); i++) +- { +- if (keysym_table[i].unshifted_name && +- grub_strcmp (key, keysym_table[i].unshifted_name) == 0) +- return keysym_table[i].unshifted_ascii; +- else if (keysym_table[i].shifted_name && +- grub_strcmp (key, keysym_table[i].shifted_name) == 0) +- return keysym_table[i].shifted_ascii; +- } +- +- return 0; ++ if (keysym_table[i].unshifted_name && ++ grub_strcmp (key, keysym_table[i].unshifted_name) == 0) ++ return keysym_table[i].unshifted_ascii; ++ else if (keysym_table[i].shifted_name && ++ grub_strcmp (key, keysym_table[i].shifted_name) == 0) ++ return keysym_table[i].shifted_ascii; + } + ++ return 0; ++} ++ ++static int ++setkey_func (char *arg, int flags) ++{ ++ char *to_key, *from_key; ++ int to_code, from_code; ++ int map_in_interrupt = 0; ++ + to_key = arg; + from_key = skip_to (0, to_key); + +@@ -3830,15 +4254,15 @@ setup_func (char *arg, int flags) + { + char tmp[16]; + grub_sprintf (tmp, ",%d", (partition >> 16) & 0xFF); +- grub_strncat (device, tmp, 256); ++ grub_strncat (device, tmp, 16); + } + if ((partition & 0x00FF00) != 0x00FF00) + { + char tmp[16]; + grub_sprintf (tmp, ",%c", 'a' + ((partition >> 8) & 0xFF)); +- grub_strncat (device, tmp, 256); ++ grub_strncat (device, tmp, 16); + } +- grub_strncat (device, ")", 256); ++ grub_strncat (device, ")", 16); + } + + int embed_stage1_5 (char *stage1_5, int drive, int partition) +@@ -3973,7 +4397,7 @@ setup_func (char *arg, int flags) + + /* The prefix was determined. */ + grub_sprintf (stage2, "%s%s", prefix, "/stage2"); +- grub_sprintf (config_filename, "%s%s", prefix, "/menu.lst"); ++ grub_sprintf (config_filename, "%s%s", prefix, "/grub.conf"); + *real_config_filename = 0; + + /* Check if stage2 exists. */ +@@ -4083,9 +4507,26 @@ static struct builtin builtin_setup = + " partition where GRUB images reside, specify the option `--stage2'" + " to tell GRUB the file name under your OS." + }; ++#endif /* ! PLATFORM_EFI */ ++ ++ ++static int ++silent_func (char *arg, int flags) ++{ ++ silent_grub = 1; ++ return 0; ++} ++ ++static struct builtin builtin_silent = ++{ ++ "silent", ++ silent_func, ++ BUILTIN_MENU | BUILTIN_CMDLINE | BUILTIN_HELP_LIST, ++ "grub will attempt to avoid printing anything to the screen" ++}; + + +-#if defined(SUPPORT_SERIAL) || defined(SUPPORT_HERCULES) ++#if defined(SUPPORT_SERIAL) || defined(SUPPORT_HERCULES) || defined(SUPPORT_GRAPHICS) + /* terminal */ + static int + terminal_func (char *arg, int flags) +@@ -4244,17 +4685,21 @@ terminal_func (char *arg, int flags) + end: + current_term = term_table + default_term; + current_term->flags = term_flags; +- ++ + if (lines) + max_lines = lines; + else +- /* 24 would be a good default value. */ +- max_lines = 24; +- ++ max_lines = current_term->max_lines; ++ + /* If the interface is currently the command-line, + restart it to repaint the screen. */ +- if (current_term != prev_term && (flags & BUILTIN_CMDLINE)) ++ if ((current_term != prev_term) && (flags & BUILTIN_CMDLINE)){ ++ if (prev_term->shutdown) ++ prev_term->shutdown(); ++ if (current_term->startup) ++ current_term->startup(); + grub_longjmp (restart_cmdline_env, 0); ++ } + + return 0; + } +@@ -4264,7 +4709,7 @@ static struct builtin builtin_terminal = + "terminal", + terminal_func, + BUILTIN_MENU | BUILTIN_CMDLINE | BUILTIN_HELP_LIST, +- "terminal [--dumb] [--no-echo] [--no-edit] [--timeout=SECS] [--lines=LINES] [--silent] [console] [serial] [hercules]", ++ "terminal [--dumb] [--no-echo] [--no-edit] [--timeout=SECS] [--lines=LINES] [--silent] [console] [serial] [hercules] [graphics]", + "Select a terminal. When multiple terminals are specified, wait until" + " you push any key to continue. If both console and serial are specified," + " the terminal to which you input a key first will be selected. If no" +@@ -4276,7 +4721,7 @@ static struct builtin builtin_terminal = + " seconds. The option --lines specifies the maximum number of lines." + " The option --silent is used to suppress messages." + }; +-#endif /* SUPPORT_SERIAL || SUPPORT_HERCULES */ ++#endif /* SUPPORT_SERIAL || SUPPORT_HERCULES || SUPPORT_GRAPHICS */ + + + #ifdef SUPPORT_SERIAL +@@ -4462,6 +4907,7 @@ static struct builtin builtin_testload = + " step is to try loading a kernel." + }; + ++#ifndef PLATFORM_EFI + + /* testvbe MODE */ + static int +@@ -4566,6 +5012,7 @@ static struct builtin builtin_testvbe = + "testvbe MODE", + "Test the VBE mode MODE. Hit any key to return." + }; ++#endif /* !PLATFORM_EFI */ + + + #ifdef SUPPORT_NETBOOT +@@ -4598,6 +5045,15 @@ static struct builtin builtin_tftpserver = + static int + timeout_func (char *arg, int flags) + { ++ /* One-shot default shenanigans -- don't piss around with the menu! */ ++ if (grub_timeout != -1) ++ return 0; ++ if ((saved_entryno & STAGE2_ONCEONLY_ENTRY) != 0) ++ { ++ grub_timeout = 0; ++ return 0; ++ } ++ + if (! safe_parse_maxint (&arg, &grub_timeout)) + return 1; + +@@ -4661,6 +5117,7 @@ static struct builtin builtin_unhide = + " partition type code." + }; + ++#ifndef PLATFORM_EFI + + /* uppermem */ + static int +@@ -4790,11 +5247,34 @@ static struct builtin builtin_vbeprobe = + "Probe VBE information. If the mode number MODE is specified, show only" + " the information about only the mode." + }; +- ++#endif /* ! PLATFORM_EFI */ ++ ++ ++/* version */ ++static int ++version_func (char *arg, int flags) ++{ ++ grub_printf ("\n GNU GRUB version %s (%dK lower / %dK upper memory)\n\n", ++ version_string, mbi.mem_lower, mbi.mem_upper); ++ return 0; ++} ++ ++static struct builtin builtin_version = ++{ ++ "version", ++ version_func, ++ BUILTIN_CMDLINE | BUILTIN_HELP_LIST, ++ "version", ++ "Display grub version." ++}; ++ + + /* The table of builtin commands. Sorted in dictionary order. */ + struct builtin *builtin_table[] = + { ++#ifdef SUPPORT_GRAPHICS ++ &builtin_background, ++#endif + &builtin_blocklist, + &builtin_boot, + #ifdef SUPPORT_NETBOOT +@@ -4802,25 +5282,37 @@ struct builtin *builtin_table[] = + #endif /* SUPPORT_NETBOOT */ + &builtin_cat, + &builtin_chainloader, ++ &builtin_clear, + &builtin_cmp, + &builtin_color, + &builtin_configfile, + &builtin_debug, + &builtin_default, +-#ifdef GRUB_UTIL ++#if defined(GRUB_UTIL) || defined(PLATFORM_EFI) + &builtin_device, +-#endif /* GRUB_UTIL */ ++#endif /* defined(GRUB_UTIL) || defined(PLATFORM_EFI) */ + #ifdef SUPPORT_NETBOOT + &builtin_dhcp, + #endif /* SUPPORT_NETBOOT */ ++#ifndef PLATFORM_EFI + &builtin_displayapm, ++#endif + &builtin_displaymem, + #ifdef GRUB_UTIL + &builtin_dump, + #endif /* GRUB_UTIL */ ++#ifdef PLATFORM_EFI ++ &builtin_efimap, ++#endif ++#ifndef PLATFORM_EFI + &builtin_embed, ++#endif + &builtin_fallback, + &builtin_find, ++ &builtin_findiso, ++#ifdef SUPPORT_GRAPHICS ++ &builtin_foreground, ++#endif + &builtin_fstest, + &builtin_geometry, + &builtin_halt, +@@ -4830,27 +5322,35 @@ struct builtin *builtin_table[] = + #ifdef SUPPORT_NETBOOT + &builtin_ifconfig, + #endif /* SUPPORT_NETBOOT */ ++#ifndef PLATFORM_EFI + &builtin_impsprobe, ++#endif + &builtin_initrd, ++#ifndef PLATFORM_EFI + &builtin_install, + &builtin_ioprobe, ++#endif + &builtin_kernel, + &builtin_lock, + &builtin_makeactive, ++#ifndef PLATFORM_EFI + &builtin_map, ++#endif + #ifdef USE_MD5_PASSWORDS + &builtin_md5crypt, + #endif /* USE_MD5_PASSWORDS */ ++#ifndef PLATFORM_EFI + &builtin_module, + &builtin_modulenounzip, ++#endif + &builtin_pager, + &builtin_partnew, + &builtin_parttype, + &builtin_password, + &builtin_pause, +-#ifdef GRUB_UTIL ++#if defined(GRUB_UTIL) || defined(PLATFORM_EFI) + &builtin_quit, +-#endif /* GRUB_UTIL */ ++#endif /* defined(GRUB_UTIL) || defined(PLATFORM_EFI) */ + #ifdef SUPPORT_NETBOOT + &builtin_rarp, + #endif /* SUPPORT_NETBOOT */ +@@ -4862,23 +5362,35 @@ struct builtin *builtin_table[] = + #ifdef SUPPORT_SERIAL + &builtin_serial, + #endif /* SUPPORT_SERIAL */ ++#ifndef PLATFORM_EFI + &builtin_setkey, + &builtin_setup, +-#if defined(SUPPORT_SERIAL) || defined(SUPPORT_HERCULES) ++#endif ++ &builtin_silent, ++#ifdef SUPPORT_GRAPHICS ++ &builtin_splashimage, ++#endif /* SUPPORT_GRAPHICS */ ++#if defined(SUPPORT_SERIAL) || defined(SUPPORT_HERCULES) || defined(SUPPORT_GRAPHICS) + &builtin_terminal, +-#endif /* SUPPORT_SERIAL || SUPPORT_HERCULES */ ++#endif /* SUPPORT_SERIAL || SUPPORT_HERCULES || SUPPORT_GRAPHICS */ + #ifdef SUPPORT_SERIAL + &builtin_terminfo, + #endif /* SUPPORT_SERIAL */ + &builtin_testload, ++#ifndef PLATFORM_EFI + &builtin_testvbe, ++#endif + #ifdef SUPPORT_NETBOOT + &builtin_tftpserver, + #endif /* SUPPORT_NETBOOT */ + &builtin_timeout, + &builtin_title, + &builtin_unhide, ++#ifndef PLATFORM_EFI + &builtin_uppermem, + &builtin_vbeprobe, ++#endif ++ &builtin_verbose, ++ &builtin_version, + 0 + }; +diff --git a/stage2/char_io.c b/stage2/char_io.c +index c86c240..073201a 100644 +--- a/stage2/char_io.c ++++ b/stage2/char_io.c +@@ -35,29 +35,37 @@ struct term_entry term_table[] = + { + "console", + 0, ++ 24, + console_putchar, + console_checkkey, + console_getkey, ++ console_keystatus, + console_getxy, + console_gotoxy, + console_cls, + console_setcolorstate, + console_setcolor, +- console_setcursor ++ console_setcursor, ++ 0, ++ 0 + }, + #ifdef SUPPORT_SERIAL + { + "serial", + /* A serial device must be initialized. */ + TERM_NEED_INIT, ++ 24, + serial_putchar, + serial_checkkey, + serial_getkey, ++ 0, + serial_getxy, + serial_gotoxy, + serial_cls, + serial_setcolorstate, + 0, ++ 0, ++ 0, + 0 + }, + #endif /* SUPPORT_SERIAL */ +@@ -65,17 +73,39 @@ struct term_entry term_table[] = + { + "hercules", + 0, ++ 24, + hercules_putchar, + console_checkkey, + console_getkey, ++ console_keystatus, + hercules_getxy, + hercules_gotoxy, + hercules_cls, + hercules_setcolorstate, + hercules_setcolor, +- hercules_setcursor ++ hercules_setcursor, ++ 0, ++ 0 + }, + #endif /* SUPPORT_HERCULES */ ++#ifdef SUPPORT_GRAPHICS ++ { "graphics", ++ TERM_NEED_INIT, /* flags */ ++ 30, /* number of lines */ ++ graphics_putchar, /* putchar */ ++ console_checkkey, /* checkkey */ ++ console_getkey, /* getkey */ ++ console_keystatus, /* keystatus */ ++ graphics_getxy, /* getxy */ ++ graphics_gotoxy, /* gotoxy */ ++ graphics_cls, /* cls */ ++ graphics_setcolorstate, /* setcolorstate */ ++ graphics_setcolor, /* setcolor */ ++ graphics_setcursor, /* nocursor */ ++ graphics_init, /* initialize */ ++ graphics_end /* shutdown */ ++ }, ++#endif /* SUPPORT_GRAPHICS */ + /* This must be the last entry. */ + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } + }; +@@ -101,16 +131,16 @@ print_error (void) + } + + char * +-convert_to_ascii (char *buf, int c,...) ++convert_to_ascii (char *buf, int c, unsigned int num) + { +- unsigned long num = *((&c) + 1), mult = 10; ++ unsigned int mult = 10; + char *ptr = buf; + + #ifndef STAGE1_5 + if (c == 'x' || c == 'X') + mult = 16; + +- if ((num & 0x80000000uL) && c == 'd') ++ if ((int) num < 0 && c == 'd') + { + num = (~num) + 1; + *(ptr++) = '-'; +@@ -149,87 +179,266 @@ grub_putstr (const char *str) + grub_putchar (*str++); + } + +-void +-grub_printf (const char *format,...) ++static void write_char(char **str, char c, int *count) + { +- int *dataptr = (int *) &format; +- char c, str[16]; +- +- dataptr++; +- +- while ((c = *(format++)) != 0) +- { +- if (c != '%') +- grub_putchar (c); +- else +- switch (c = *(format++)) +- { +-#ifndef STAGE1_5 +- case 'd': +- case 'x': +- case 'X': +-#endif +- case 'u': +- *convert_to_ascii (str, c, *((unsigned long *) dataptr++)) = 0; +- grub_putstr (str); +- break; +- +-#ifndef STAGE1_5 +- case 'c': +- grub_putchar ((*(dataptr++)) & 0xff); +- break; ++ if (str && *str) ++ *(*str)++ = c; ++ else ++ putchar(c); ++ (*count)++; ++} + +- case 's': +- grub_putstr ((char *) *(dataptr++)); +- break; +-#endif +- } ++static void write_str(char **str, char *s, int *count) ++{ ++ if (s) { ++ while (*s) ++ write_char(str, *s++, count); ++ } else { ++ write_str(str, "(nil)", count); + } + } + +-#ifndef STAGE1_5 ++#define format_ascii(buf, val, is_hex, is_cap, num_pad_chars) ({ \ ++ int _n = sizeof ((buf)) - 2; \ ++ typeof(val) _nval = (val); \ ++ int _negative = 0; \ ++ int _mult = is_hex ? 16 : 10; \ ++ char _a = is_cap ? 'A' : 'a'; \ ++ int _pad = num_pad_chars; \ ++ char hex[] = "0123456789abcdef"; \ ++ memset((buf), '\0', sizeof ((buf))); \ ++ if (!(_nval > 0LL)) \ ++ _negative = 1; \ ++ if (_nval == 0LL) \ ++ _negative = 0; \ ++ if (_negative) \ ++ _nval = (_nval ^ -1); \ ++ do { \ ++ int _dig = _nval % _mult; \ ++ (buf)[_n--] = ((_dig > 9) ? _dig + _a - 10 : '0'+_dig); \ ++ if (_pad > 0) _pad--; \ ++ } while (_nval /= _mult); \ ++ while (_pad--) \ ++ (buf)[_n--] = '0'; \ ++ if (_negative) \ ++ (buf)[_n--] = '-'; \ ++ _mult = 0; \ ++ _n++; \ ++ while (_n < sizeof ((buf))) \ ++ (buf)[_mult++] = (buf)[_n++]; \ ++ if (_negative && _mult > 1) \ ++ ((buf)[_mult-2])++; \ ++ }) ++ + int +-grub_sprintf (char *buffer, const char *format, ...) ++grub_vsprintf (char *str, const char *fmt, va_list args) + { +- /* XXX hohmuth +- ugly hack -- should unify with printf() */ +- int *dataptr = (int *) &format; +- char c, *ptr, str[16]; +- char *bp = buffer; +- +- dataptr++; +- +- while ((c = *format++) != 0) +- { +- if (c != '%') +- *bp++ = c; /* putchar(c); */ +- else +- switch (c = *(format++)) +- { +- case 'd': case 'u': case 'x': +- *convert_to_ascii (str, c, *((unsigned long *) dataptr++)) = 0; +- +- ptr = str; ++ char c; ++ char buf[40]; ++ int pos = 0; ++ ++ int count = 0; ++ ++ char *str_arg; ++ int int_arg; ++ unsigned char uchar_arg; ++ unsigned ushort_arg; ++ unsigned int uint_arg; ++ signed long long_arg; ++ unsigned long ulong_arg; ++ signed long long longlong_arg; ++ unsigned long long ulonglong_arg; ++ ++ c = *fmt++; ++ if (!c) ++ return 0; ++ ++ int is_fmt = 0, is_long = 0, is_signed = 1, is_cap = 0, is_zero_padded = 0; ++ int num_pad_chars = 0; ++ int restart = 1; ++ do { ++ if (restart) { ++ restart = 0; ++ is_fmt = 0; ++ is_long = 0; ++ is_cap = 0; ++ is_signed = 1; ++ is_zero_padded = 0; ++ num_pad_chars = 0; ++ buf[0] = '\0'; ++ pos = 0; ++ } ++ ++ if (!is_fmt) { ++ if (c == '%') { ++ is_fmt = 1; ++ buf[pos++] = c; ++ buf[pos] = '\0'; ++ continue; ++ } else { ++ write_char(&str, c, &count); ++ continue; ++ } ++ } ++ ++ /* below here we only ever hit when is_fmt is 1 */ ++ switch (c) { ++ /* first, modifiers */ ++ case '%': ++ if (pos != 0) ++ write_str(&str, buf, &count); ++ write_char(&str, c, &count); ++ restart = 1; ++ continue; ++ case '0': ++ if (!is_zero_padded) { ++ buf[pos++] = c; ++ buf[pos] = '\0'; ++ is_zero_padded++; ++ continue; ++ } ++ case '1': ++ case '2': ++ case '3': ++ case '4': ++ case '5': ++ case '6': ++ case '7': ++ case '8': ++ case '9': ++ buf[pos++] = c; ++ buf[pos] = '\0'; ++ num_pad_chars *= 10; ++ num_pad_chars += c - '0'; ++ continue; ++ case 'l': ++ buf[pos++] = c; ++ buf[pos] = '\0'; ++ is_long++; ++ continue; ++ case 'L': ++ buf[pos++] = c; ++ buf[pos] = '\0'; ++ is_long = 2; ++ continue; ++ ++ /* below here are things we actually have to print */ ++ case 'c': ++ int_arg = va_arg(args, int) & 0xff; ++ if (int_arg == 0) { ++ char *tmp_str = "\x00"; ++ write_str(&tmp_str, buf, &count); ++ } else { ++ write_char(&str, int_arg, &count); ++ } ++ restart = 1; ++ continue; ++ case 'd': ++ if (is_long == 0) { ++ int_arg = va_arg(args, signed int); ++ format_ascii(buf, int_arg, 0, 0, 0); ++ } else if (is_long == 1) { ++ long_arg = va_arg(args, signed long); ++ format_ascii(buf, long_arg, 0, 0, 0); ++ } else { ++ longlong_arg = va_arg(args, signed long long); ++ format_ascii(buf, longlong_arg, 0, 0, 0); ++ } ++ write_str(&str, buf, &count); ++ restart = 1; ++ continue; ++ case 's': ++ str_arg = va_arg(args, char *); ++ write_str(&str, str_arg, &count); ++ restart = 1; ++ continue; ++ case 'u': ++ case 'U': ++ if (is_long == 0) { ++ uint_arg = va_arg(args, unsigned int); ++ format_ascii(buf, uint_arg, 0, 0, 0); ++ } else if (is_long == 1) { ++ ulong_arg = va_arg(args, unsigned long); ++ format_ascii(buf, ulong_arg, 0, 0, 0); ++ } else { ++ ulonglong_arg = va_arg(args, unsigned long long); ++ format_ascii(buf, ulonglong_arg, 0, 0, 0); ++ } ++ write_str(&str, buf, &count); ++ restart = 1; ++ continue; ++ case 'P': ++ is_cap = 1; ++ case 'p': ++ ulong_arg = va_arg(args, unsigned long); ++ is_zero_padded = 1; ++ format_ascii(buf, ulong_arg, 1, is_cap, sizeof(ulong_arg)); ++ write_str(&str, is_cap ? "0X" : "0x", &count); ++ write_str(&str, buf, &count); ++ restart = 1; ++ continue; ++ case 'X': ++ is_cap = 1; ++ case 'x': ++ if (num_pad_chars == 2) { ++ int i; ++ char hex[] = "0123456789abcdef"; ++ uint_arg = va_arg(args, unsigned int); ++ uchar_arg = uint_arg & 0xff; ++ format_ascii(buf, uchar_arg, 1, is_cap, num_pad_chars); ++ } else if (num_pad_chars == 4) { ++ uint_arg = va_arg(args, unsigned int); ++ ushort_arg = uint_arg & 0xffff; ++ format_ascii(buf, ushort_arg, 1, is_cap, num_pad_chars); ++ } else if (is_long == 0) { ++ uint_arg = va_arg(args, unsigned int); ++ format_ascii(buf, uint_arg, 1, is_cap, num_pad_chars); ++ } else if (is_long == 1) { ++ ulong_arg = va_arg(args, unsigned long); ++ format_ascii(buf, ulong_arg, 1, is_cap, num_pad_chars); ++ } else { ++ ulonglong_arg = va_arg(args, unsigned long long); ++ format_ascii(buf, ulonglong_arg, 1, is_cap, num_pad_chars); ++ } ++ write_str(&str, buf, &count); ++ restart = 1; ++ continue; ++ default: ++ buf[pos++] = c; ++ buf[pos] = '\0'; ++ write_str(&str, buf, &count); ++ restart = 1; ++ continue; ++ } ++ } while ((c = *fmt++)); ++ ++ if (str) ++ *str = '\0'; ++ return count; ++} + +- while (*ptr) +- *bp++ = *(ptr++); /* putchar(*(ptr++)); */ +- break; ++void ++grub_printf (char *fmt, ...) ++{ ++ va_list ap; + +- case 'c': *bp++ = (*(dataptr++))&0xff; +- /* putchar((*(dataptr++))&0xff); */ +- break; ++ va_start (ap, fmt); ++ grub_vsprintf (0, fmt, ap); ++ va_end (ap); ++} + +- case 's': +- ptr = (char *) (*(dataptr++)); ++#ifndef STAGE1_5 ++int ++grub_sprintf (char *str, const char *fmt, ...) ++{ ++ va_list ap; ++ int ret; + +- while ((c = *ptr++) != 0) +- *bp++ = c; /* putchar(c); */ +- break; +- } +- } ++ va_start (ap, fmt); ++ ret = grub_vsprintf (str, fmt, ap); ++ va_end (ap); + +- *bp = 0; +- return bp - buffer; ++ return ret; + } + + +@@ -898,7 +1107,6 @@ safe_parse_maxint (char **str_ptr, int *myint_ptr) + } + #endif /* STAGE1_5 */ + +-#if !defined(STAGE1_5) || defined(FSYS_FAT) + int + grub_tolower (int c) + { +@@ -907,7 +1115,6 @@ grub_tolower (int c) + + return c; + } +-#endif /* ! STAGE1_5 || FSYS_FAT */ + + int + grub_isspace (int c) +@@ -1004,6 +1211,16 @@ checkkey (void) + { + return current_term->checkkey (); + } ++ ++/* Return keyboard modifier status. */ ++int ++keystatus (void) ++{ ++ if (current_term->keystatus) ++ return current_term->keystatus (); ++ else ++ return 0; ++} + #endif /* ! STAGE1_5 */ + + /* Display an ASCII character. */ +@@ -1046,13 +1263,15 @@ grub_putchar (int c) + the following grub_printf call will print newlines. */ + count_lines = -1; + ++ grub_printf("\n"); + if (current_term->setcolorstate) + current_term->setcolorstate (COLOR_STATE_HIGHLIGHT); + +- grub_printf ("\n[Hit return to continue]"); ++ grub_printf ("[Hit return to continue]"); + + if (current_term->setcolorstate) + current_term->setcolorstate (COLOR_STATE_NORMAL); ++ + + do + { +@@ -1090,7 +1309,7 @@ void + cls (void) + { + /* If the terminal is dumb, there is no way to clean the terminal. */ +- if (current_term->flags & TERM_DUMB) ++ if (current_term->flags & TERM_DUMB) + grub_putchar ('\n'); + else + current_term->cls (); +@@ -1125,6 +1344,26 @@ substring (const char *s1, const char *s2) + return 1; + } + ++int ++subcasestring (const char *s1, const char *s2) ++{ ++ while (tolower(*s1) == tolower(*s2)) ++ { ++ /* The strings match exactly. */ ++ if (! *(s1++)) ++ return 0; ++ s2 ++; ++ } ++ ++ /* S1 is a substring of S2. */ ++ if (*s1 == 0) ++ return -1; ++ ++ /* S1 isn't a substring. */ ++ return 1; ++} ++ ++ + #ifndef STAGE1_5 + /* Terminate the string STR with NUL. */ + int +@@ -1172,41 +1411,180 @@ grub_strlen (const char *str) + + return len; + } +-#endif /* ! STAGE1_5 */ + ++/* this function "borrowed" from dietlibc */ + int +-memcheck (int addr, int len) ++grub_strspn(const char *s, const char *accept) + { +-#ifdef GRUB_UTIL +- auto int start_addr (void); +- auto int end_addr (void); +- +- auto int start_addr (void) ++ int l=0; ++ int a=1,i,al=grub_strlen(accept); ++ ++ while((a)&&(*s)) ++ { ++ for(a=i=0;(!a)&&(i<al);i++) ++ if (*s==accept[i]) a=1; ++ if (a) l++; ++ s++; ++ } ++ return l; ++} ++ ++/* this function "borrowed" from dietlibc */ ++int ++grub_strcspn(const char *s, const char *reject) ++{ ++ int l=0; ++ int a=1,i,al=grub_strlen(reject); ++ ++ while((a)&&(*s)) ++ { ++ for(i=0;(a)&&(i<al);i++) ++ if (*s==reject[i]) a=0; ++ if (a) l++; ++ s++; ++ } ++ return l; ++} ++ ++/* this function "borrowed" from dietlibc */ ++char * ++grub_strtok_r(char *s, const char *delim, char **ptrptr) { ++ char *tmp=0; ++ ++ if (s==0) s=*ptrptr; ++ s+=grub_strspn(s,delim); /* overread leading delimiter */ ++ if (*s) { ++ tmp=s; ++ s+=grub_strcspn(s,delim); ++ if (*s) *s++=0; /* not the end ? => terminate it */ ++ } ++ *ptrptr=s; ++ return tmp; ++} ++ ++char * ++grub_strchr (const char *s, int c) ++{ ++ while (*s) + { +- int ret; ++ if (*s == c) ++ return (char *) s; ++ s++; ++ } ++ ++ return 0; ++} ++ ++char * ++grub_strnchr (const char *s, int c) ++{ ++ while (*s) ++ { ++ if (*s != c) ++ return (char *) s; ++ s++; ++ } ++ ++ return 0; ++} ++ ++char * ++grub_strrchr (const char *s, int c) ++{ ++ char *p = 0; ++ ++ while (*s) ++ { ++ if (*s == c) ++ p = (char *) s; ++ s++; ++ } ++ ++ return p; ++} ++ ++int ++grub_strnlen (const char *s, int n) ++{ ++ int i; ++ ++ if (n == 0) ++ return 0; ++ ++ for (i = 0; s[i] != '\0' && i < n; i++) ++ ; ++ return i; ++} ++ ++char * ++grub_strncpy(char *new, const char *s, int n) ++{ ++ int i; ++ ++ for (i = 0; s[i] != '\0' && i < n; i++) ++ new[i] = s[i]; ++ return new; ++} ++ ++int ++grub_strncasecmp(const char *s0, const char *s1, int n) ++{ ++ int c0, c1; ++ ++ if (s0 == s1 || n == 0) ++ return 0; ++ ++ do { ++ c0 = *s0 & ~0x20; ++ c1 = *s1 & ~0x20; ++ ++ if (--n == 0 || c0 == '\0') ++ break; ++ ++ *s0++; ++ *s1++; ++ } while (c0 == c1); ++ ++ return (c0 > c1 ? 1 : c0 < c1 ? -1 : 0); ++} ++ ++#endif /* ! STAGE1_5 */ ++ ++#ifdef GRUB_UTIL ++static int memcheck_start_addr (void) ++{ ++ int ret; + # if defined(HAVE_START_SYMBOL) +- asm volatile ("movl $start, %0" : "=a" (ret)); ++ asm volatile ("movl $start, %0" : "=a" (ret)); + # elif defined(HAVE_USCORE_START_SYMBOL) +- asm volatile ("movl $_start, %0" : "=a" (ret)); ++ asm volatile ("movl $_start, %0" : "=a" (ret)); + # endif +- return ret; +- } ++ return ret; ++} + +- auto int end_addr (void) +- { +- int ret; ++static int memcheck_end_addr (void) ++{ ++ int ret; + # if defined(HAVE_END_SYMBOL) +- asm volatile ("movl $end, %0" : "=a" (ret)); ++ asm volatile ("movl $end, %0" : "=a" (ret)); + # elif defined(HAVE_USCORE_END_SYMBOL) +- asm volatile ("movl $_end, %0" : "=a" (ret)); ++ asm volatile ("movl $_end, %0" : "=a" (ret)); + # endif +- return ret; +- } ++ return ret; ++} ++#endif /* GRUB_UTIL */ + +- if (start_addr () <= addr && end_addr () > addr + len) ++int ++memcheck (int addr, int len) ++{ ++#ifdef GRUB_UTIL ++ if (memcheck_start_addr () <= addr && memcheck_end_addr () > addr + len) + return ! errnum; + #endif /* GRUB_UTIL */ + ++#ifdef PLATFORM_EFI ++ return 1; ++#else + if ((addr < RAW_ADDR (0x1000)) + || (addr < RAW_ADDR (0x100000) + && RAW_ADDR (mbi.mem_lower * 1024) < (addr + len)) +@@ -1215,12 +1593,23 @@ memcheck (int addr, int len) + errnum = ERR_WONT_FIT; + + return ! errnum; ++#endif ++} ++ ++void ++grub_memcpy(void *dest, const void *src, int len) ++{ ++ int i; ++ register char *d = (char*)dest, *s = (char*)src; ++ ++ for (i = 0; i < len; i++) ++ d[i] = s[i]; + } + + void * + grub_memmove (void *to, const void *from, int len) + { +- if (memcheck ((int) to, len)) ++ if (memcheck ((unsigned long) to, len)) + { + /* This assembly code is stolen from + linux-2.2.2/include/asm-i386/string.h. This is not very fast +@@ -1258,7 +1647,7 @@ grub_memset (void *start, int c, int len) + { + char *p = start; + +- if (memcheck ((int) start, len)) ++ if (memcheck ((unsigned long) start, len)) + { + while (len -- > 0) + *p ++ = c; +@@ -1274,6 +1663,26 @@ grub_strcpy (char *dest, const char *src) + grub_memmove (dest, src, grub_strlen (src) + 1); + return dest; + } ++ ++char * ++grub_stpncpy (char *dest, const char *src, int n) ++{ ++ char *res; ++ ++ res = NULL; ++ while (n != 0) { ++ *dest = *src; ++ if (*src != 0) ++ src++; ++ else if (res == NULL) ++ res = dest; ++ dest++; ++ n--; ++ } ++ if (res == NULL) ++ res = dest; ++ return res; ++} + #endif /* ! STAGE1_5 */ + + #ifndef GRUB_UTIL +diff --git a/stage2/cmdline.c b/stage2/cmdline.c +index a6ee309..cb41eda 100644 +--- a/stage2/cmdline.c ++++ b/stage2/cmdline.c +@@ -48,12 +48,17 @@ skip_to (int after_equal, char *cmdline) + + /* Print a helpful message for the command-line interface. */ + void +-print_cmdline_message (int forever) ++print_cmdline_message (int type) + { + printf (" [ Minimal BASH-like line editing is supported. For the first word, TAB\n" + " lists possible command completions. Anywhere else TAB lists the possible\n" +- " completions of a device/filename.%s ]\n", +- (forever ? "" : " ESC at any time exits.")); ++ " completions of a device/filename."); ++ if (type == CMDLINE_NORMAL_MODE) ++ printf(" ESC at any time exits."); ++ if (type == CMDLINE_EDIT_MODE) ++ printf(" ESC at any time cancels. ENTER \n" ++ " at any time accepts your changes."); ++ printf("]\n"); + } + + /* Find the builtin whose command name is COMMAND and return the +@@ -128,7 +133,7 @@ enter_cmdline (char *heap, int forever) + print_network_configuration (); + grub_putchar ('\n'); + #endif +- print_cmdline_message (forever); ++ print_cmdline_message (forever ? CMDLINE_FOREVER_MODE : CMDLINE_NORMAL_MODE); + + while (1) + { +@@ -215,7 +220,7 @@ run_script (char *script, char *heap) + while (*cur_entry++) + ; + +- grub_memmove (heap, old_entry, (int) cur_entry - (int) old_entry); ++ grub_memmove (heap, old_entry, cur_entry - old_entry); + if (! *heap) + { + /* If there is no more command in SCRIPT... */ +@@ -232,12 +237,12 @@ run_script (char *script, char *heap) + builtin = find_command (heap); + if (! builtin) + { +- grub_printf ("%s\n", old_entry); ++ grub_verbose_printf ("%s\n", old_entry); + continue; + } + + if (! (builtin->flags & BUILTIN_NO_ECHO)) +- grub_printf ("%s\n", old_entry); ++ grub_verbose_printf ("%s\n", old_entry); + + /* If BUILTIN cannot be run in the command-line, skip it. */ + if (! (builtin->flags & BUILTIN_CMDLINE)) +diff --git a/stage2/common.c b/stage2/common.c +index 09f9e31..e96bec2 100644 +--- a/stage2/common.c ++++ b/stage2/common.c +@@ -32,7 +32,7 @@ + struct multiboot_info mbi; + unsigned long saved_drive; + unsigned long saved_partition; +-unsigned long cdrom_drive; ++unsigned long cdrom_drive = 0x100; + #ifndef STAGE1_5 + unsigned long saved_mem_upper; + +@@ -114,7 +114,7 @@ mmap_avail_at (unsigned long bottom) + { + for (cont = 0, addr = mbi.mmap_addr; + addr < mbi.mmap_addr + mbi.mmap_length; +- addr += *((unsigned long *) addr) + 4) ++ addr += *((unsigned int *) addr) + 4) + { + struct AddrRangeDesc *desc = (struct AddrRangeDesc *) addr; + +@@ -183,11 +183,11 @@ init_bios_info (void) + cont = get_mmap_entry ((void *) addr, cont); + + /* If the returned buffer's length is zero, quit. */ +- if (! *((unsigned long *) addr)) ++ if (! *((unsigned int *) addr)) + break; + +- mbi.mmap_length += *((unsigned long *) addr) + 4; +- addr += *((unsigned long *) addr) + 4; ++ mbi.mmap_length += *((unsigned int *) addr) + 4; ++ addr += *((unsigned int *) addr) + 4; + } + while (cont); + +@@ -207,7 +207,7 @@ init_bios_info (void) + /* Find the maximum available address. Ignore any memory holes. */ + for (max_addr = 0, addr = mbi.mmap_addr; + addr < mbi.mmap_addr + mbi.mmap_length; +- addr += *((unsigned long *) addr) + 4) ++ addr += *((unsigned int *) addr) + 4) + { + struct AddrRangeDesc *desc = (struct AddrRangeDesc *) addr; + +@@ -322,6 +322,9 @@ init_bios_info (void) + + /* Set cdrom drive. */ + { ++#ifdef PLATFORM_EFI ++ cdrom_drive = 0x100; ++#else + struct geometry geom; + + /* Get the geometry. */ +@@ -330,6 +333,7 @@ init_bios_info (void) + cdrom_drive = GRUB_INVALID_DRIVE; + else + cdrom_drive = boot_drive; ++#endif + } + + /* Start main routine here. */ +diff --git a/stage2/disk_io.c b/stage2/disk_io.c +index b9bc526..f3fed0e 100644 +--- a/stage2/disk_io.c ++++ b/stage2/disk_io.c +@@ -21,12 +21,17 @@ + + #include <shared.h> + #include <filesys.h> ++#include <gpt.h> + + #ifdef SUPPORT_NETBOOT + # define GRUB 1 + # include <etherboot.h> + #endif + ++#ifdef PLATFORM_EFI ++#include "efistubs.h" ++#endif ++ + #ifdef GRUB_UTIL + # include <device.h> + #endif +@@ -48,6 +53,9 @@ int fsmax; + struct fsys_entry fsys_table[NUM_FSYS + 1] = + { + /* TFTP should come first because others don't handle net device. */ ++# ifdef PLATFORM_EFI ++ {"efitftp", efi_tftp_mount, efi_tftp_read, efi_tftp_dir, efi_tftp_close, 0}, ++# endif + # ifdef FSYS_TFTP + {"tftp", tftp_mount, tftp_read, tftp_dir, tftp_close, 0}, + # endif +@@ -75,6 +83,9 @@ struct fsys_entry fsys_table[NUM_FSYS + 1] = + # ifdef FSYS_UFS2 + {"ufs2", ufs2_mount, ufs2_read, ufs2_dir, 0, ufs2_embed}, + # endif ++# ifdef PLATFORM_EFI ++ {"uefi", uefi_mount, uefi_read, uefi_dir, uefi_close, 0}, ++# endif + # ifdef FSYS_ISO9660 + {"iso9660", iso9660_mount, iso9660_read, iso9660_dir, 0, 0}, + # endif +@@ -127,8 +138,8 @@ struct geometry buf_geom; + int filepos; + int filemax; + +-static inline unsigned long +-log2 (unsigned long word) ++static inline unsigned int ++grub_log2 (unsigned int word) + { + asm volatile ("bsfl %1,%0" + : "=r" (word) +@@ -140,7 +151,7 @@ int + rawread (int drive, int sector, int byte_offset, int byte_len, char *buf) + { + int slen, sectors_per_vtrack; +- int sector_size_bits = log2 (buf_geom.sector_size); ++ int sector_size_bits = grub_log2 (buf_geom.sector_size); + + if (byte_len <= 0) + return 1; +@@ -163,7 +174,7 @@ rawread (int drive, int sector, int byte_offset, int byte_len, char *buf) + } + buf_drive = drive; + buf_track = -1; +- sector_size_bits = log2 (buf_geom.sector_size); ++ sector_size_bits = grub_log2 (buf_geom.sector_size); + } + + /* Make sure that SECTOR is valid. */ +@@ -297,7 +308,7 @@ devread (int sector, int byte_offset, int byte_len, char *buf) + * Check partition boundaries + */ + if (sector < 0 +- || ((sector + ((byte_offset + byte_len - 1) >> SECTOR_BITS)) ++ || ((sector + ((byte_offset + byte_len - 1) >> get_sector_bits(current_drive))) + >= part_length)) + { + errnum = ERR_OUTSIDE_PART; +@@ -307,8 +318,8 @@ devread (int sector, int byte_offset, int byte_len, char *buf) + /* + * Get the read to the beginning of a partition. + */ +- sector += byte_offset >> SECTOR_BITS; +- byte_offset &= SECTOR_SIZE - 1; ++ sector += byte_offset >> get_sector_bits(current_drive); ++ byte_offset &= get_sector_size(current_drive) - 1; + + #if !defined(STAGE1_5) + if (disk_read_hook && debug) +@@ -347,7 +358,7 @@ rawwrite (int drive, int sector, char *buf) + sector = 1; + } + +- memmove ((char *) SCRATCHADDR, buf, SECTOR_SIZE); ++ memmove ((char *) SCRATCHADDR, buf, get_sector_size(drive)); + if (biosdisk (BIOSDISK_WRITE, drive, &buf_geom, + sector, 1, SCRATCHSEG)) + { +@@ -373,23 +384,23 @@ devwrite (int sector, int sector_count, char *buf) + embed a Stage 1.5 into a partition instead of a MBR, use system + calls directly instead of biosdisk, because of the bug in + Linux. *sigh* */ +- return write_to_partition (device_map, current_drive, current_partition, +- sector, sector_count, buf); ++ int ret; ++ ret = write_to_partition (device_map, current_drive, current_partition, ++ sector, sector_count, buf); ++ if (ret != -1) ++ return ret; + } +- else + #endif /* GRUB_UTIL && __linux__ */ +- { +- int i; +- +- for (i = 0; i < sector_count; i++) +- { +- if (! rawwrite (current_drive, part_start + sector + i, +- buf + (i << SECTOR_BITS))) +- return 0; ++ int i; + +- } +- return 1; +- } ++ for (i = 0; i < sector_count; i++) ++ { ++ if (! rawwrite (current_drive, part_start + sector + i, ++ buf + (i << get_sector_bits(current_drive)))) ++ return 0; ++ ++ } ++ return 1; + } + + static int +@@ -400,7 +411,7 @@ sane_partition (void) + return 1; + + if (!(current_partition & 0xFF000000uL) +- && ((current_drive & 0xFFFFFF7F) < 8 ++ && ((current_drive & 0xFFFFFF7F) < MAX_HD_NUM + || current_drive == cdrom_drive) + && (current_partition & 0xFF) == 0xFF + && ((current_partition & 0xFF00) == 0xFF00 +@@ -458,7 +469,7 @@ make_saved_active (void) + } + + /* Read the MBR in the scratch space. */ +- if (! rawread (saved_drive, 0, 0, SECTOR_SIZE, mbr)) ++ if (! rawread (saved_drive, 0, 0, get_sector_size(saved_drive), mbr)) + return 0; + + /* If the partition is an extended partition, setting the active +@@ -502,8 +513,8 @@ int + set_partition_hidden_flag (int hidden) + { + unsigned long part = 0xFFFFFF; +- unsigned long start, len, offset, ext_offset; +- int entry, type; ++ unsigned long start, len, offset, ext_offset, gpt_offset; ++ int entry, type, gpt_count, gpt_size; + char mbr[512]; + + /* The drive must be a hard disk. */ +@@ -524,8 +535,15 @@ set_partition_hidden_flag (int hidden) + /* Look for the partition. */ + while (next_partition (current_drive, 0xFFFFFF, &part, &type, + &start, &len, &offset, &entry, +- &ext_offset, mbr)) +- { ++ &ext_offset, &gpt_offset, &gpt_count, &gpt_size, mbr)) ++ { ++ /* The partition may not be a GPT partition. */ ++ if (gpt_offset != 0) ++ { ++ errnum = ERR_BAD_ARGUMENT; ++ return 1; ++ } ++ + if (part == current_partition) + { + /* Found. */ +@@ -577,11 +595,14 @@ next_partition (unsigned long drive, unsigned long dest, + unsigned long *partition, int *type, + unsigned long *start, unsigned long *len, + unsigned long *offset, int *entry, +- unsigned long *ext_offset, char *buf) ++ unsigned long *ext_offset, ++ unsigned long *gpt_offset, int *gpt_count, ++ int *gpt_size, char *buf) + { + /* Forward declarations. */ + auto int next_bsd_partition (void); + auto int next_pc_slice (void); ++ auto int next_gpt_slice(void); + + /* Get next BSD partition in current PC slice. */ + int next_bsd_partition (void) +@@ -601,7 +622,7 @@ next_partition (unsigned long drive, unsigned long dest, + + /* Read the BSD label. */ + if (! rawread (drive, *start + BSD_LABEL_SECTOR, +- 0, SECTOR_SIZE, buf)) ++ 0, get_sector_size(drive), buf)) + return 0; + + /* Check if it is valid. */ +@@ -656,7 +677,7 @@ next_partition (unsigned long drive, unsigned long dest, + } + + /* Read the MBR or the boot sector of the extended partition. */ +- if (! rawread (drive, *offset, 0, SECTOR_SIZE, buf)) ++ if (! rawread (drive, *offset, 0, get_sector_size(drive), buf)) + return 0; + + /* Check if it is valid. */ +@@ -666,6 +687,42 @@ next_partition (unsigned long drive, unsigned long dest, + return 0; + } + ++ /* If this is a GPT partition table, read it as such. */ ++ if (*entry == -1 && *offset == 0 && ++ (PC_SLICE_TYPE (buf, 0) == PC_SLICE_TYPE_GPT || ++ PC_SLICE_TYPE (buf, 0) == PC_SLICE_TYPE_NONE)) ++ { ++ struct grub_gpt_header *hdr = (struct grub_gpt_header *) buf; ++ ++ /* Read in the GPT Partition table header. */ ++ if (! rawread (drive, 1, 0, get_sector_size(drive), buf)) ++ return 0; ++ ++ if (hdr->magic == GPT_HEADER_MAGIC && hdr->version == 0x10000) ++ { ++ /* Let gpt_offset point to the first entry in the GPT ++ partition table. This can also be used by callers of ++ next_partition to determine if a entry comes from a ++ GPT partition table or not. */ ++ *gpt_offset = hdr->partitions; ++ *gpt_count = hdr->maxpart; ++ *gpt_size = hdr->partentry_size; ++ ++ return next_gpt_slice(); ++ } ++ else ++ { ++ /* This is not a valid header for a GPT partition table. ++ Re-read the MBR or the boot sector of the extended ++ partition. */ ++ if (! rawread (drive, *offset, 0, get_sector_size(drive), buf)) ++ return 0; ++ } ++ } ++ ++ /* Not a GPT partition. */ ++ *gpt_offset = 0; ++ + /* Increase the entry number. */ + (*entry)++; + +@@ -710,6 +767,43 @@ next_partition (unsigned long drive, unsigned long dest, + return 1; + } + ++ /* Get the next GPT slice. */ ++ int next_gpt_slice (void) ++ { ++ struct grub_gpt_partentry *gptentry = (struct grub_gpt_partentry *) buf; ++ /* Make GPT partitions show up as PC slices. */ ++ int pc_slice_no = (*partition & 0xFF0000) >> 16; ++ ++ /* If this is the first time... */ ++ if (pc_slice_no == 0xFF) ++ { ++ pc_slice_no = -1; ++ *entry = -1; ++ } ++ ++ do { ++ (*entry)++; ++ ++ if (*entry >= *gpt_count) ++ { ++ errnum = ERR_NO_PART; ++ return 0; ++ } ++ /* Read in the GPT Partition table entry. */ ++ if (! rawread (drive, (*gpt_offset) + GPT_ENTRY_SECTOR (drive, *gpt_size, *entry), GPT_ENTRY_INDEX (drive, *gpt_size, *entry), *gpt_size, buf)) ++ return 0; ++ } while (! (gptentry->type1 && gptentry->type2)); ++ ++ pc_slice_no++; ++ *start = gptentry->start; ++ *len = gptentry->end - gptentry->start + 1; ++ *type = PC_SLICE_TYPE_EXT2FS; ++ *entry = pc_slice_no; ++ *partition = (*entry << 16) | 0xFFFF; ++ ++ return 1; ++ } ++ + /* Start the body of this function. */ + + #ifndef STAGE1_5 +@@ -717,6 +811,9 @@ next_partition (unsigned long drive, unsigned long dest, + return 0; + #endif + ++ if (*partition != 0xFFFFFF && *gpt_offset != 0) ++ return next_gpt_slice (); ++ + /* If previous partition is a BSD partition or a PC slice which + contains BSD partitions... */ + if ((*partition != 0xFFFFFF && IS_PC_SLICE_TYPE_BSD (*type & 0xff)) +@@ -755,8 +852,11 @@ real_open_partition (int flags) + unsigned long dest_partition = current_partition; + unsigned long part_offset; + unsigned long ext_offset; ++ unsigned long gpt_offset; ++ int gpt_count; ++ int gpt_size; + int entry; +- char buf[SECTOR_SIZE]; ++ char buf[4096]; + int bsd_part, pc_slice; + + /* For simplicity. */ +@@ -766,7 +866,8 @@ real_open_partition (int flags) + int ret = next_partition (current_drive, dest_partition, + ¤t_partition, ¤t_slice, + &part_start, &part_length, +- &part_offset, &entry, &ext_offset, buf); ++ &part_offset, &entry, &ext_offset, ++ &gpt_offset, &gpt_count, &gpt_size, buf); + bsd_part = (current_partition >> 8) & 0xFF; + pc_slice = current_partition >> 16; + return ret; +@@ -926,6 +1027,17 @@ open_partition (void) + return real_open_partition (0); + } + ++#if !defined(PLATFORM_EFI) && !defined(GRUB_UTIL) ++int get_sector_size (int drive) ++{ ++ return SECTOR_SIZE; ++} ++int get_sector_bits (int drive) ++{ ++ return SECTOR_BITS; ++} ++#endif /* !defined(PLATFORM_EFI) && !defined(GRUB_UTIL) */ ++ + + #ifndef STAGE1_5 + /* XX used for device completion in 'set_device' and 'print_completions' */ +@@ -978,7 +1090,7 @@ set_device (char *device) + if (*device != ',' && *device != ')') + { + char ch = *device; +-#ifdef SUPPORT_NETBOOT ++#if defined(SUPPORT_NETBOOT) || defined(PLATFORM_EFI) + if (*device == 'f' || *device == 'h' + || (*device == 'n' && network_ready) + || (*device == 'c' && cdrom_drive != GRUB_INVALID_DRIVE)) +@@ -1002,14 +1114,14 @@ set_device (char *device) + + if ((*device == 'f' + || *device == 'h' +-#ifdef SUPPORT_NETBOOT ++#if defined(SUPPORT_NETBOOT) || defined(PLATFORM_EFI) + || (*device == 'n' && network_ready) + #endif + || (*device == 'c' && cdrom_drive != GRUB_INVALID_DRIVE)) + && (device += 2, (*(device - 1) != 'd'))) + errnum = ERR_NUMBER_PARSING; +- +-#ifdef SUPPORT_NETBOOT ++ ++#if defined(SUPPORT_NETBOOT) || defined(PLATFORM_EFI) + if (ch == 'n' && network_ready) + current_drive = NETWORK_DRIVE; + else +@@ -1131,7 +1243,7 @@ set_bootdev (int hdbias) + if ((saved_drive & 0x80) && cur_part_addr) + { + if (rawread (saved_drive, cur_part_offset, +- 0, SECTOR_SIZE, (char *) SCRATCHADDR)) ++ 0, get_sector_size(saved_drive), (char *) SCRATCHADDR)) + { + char *dst, *src; + +@@ -1243,6 +1355,12 @@ setup_part (char *filename) + + + #ifndef STAGE1_5 ++char * ++get_fsys_type (void) ++{ ++ return fsys_table[fsys_type].name; ++} ++ + /* + * This prints the filesystem type or gives relevant information. + */ +@@ -1376,7 +1494,7 @@ print_completions (int is_filename, int is_completion) + + if (!ptr + || *(ptr-1) != 'd' +-#ifdef SUPPORT_NETBOOT ++#if defined(SUPPORT_NETBOOT) || defined(PLATFORM_EFI) + || *(ptr-2) != 'n' + #endif /* SUPPORT_NETBOOT */ + || *(ptr-2) != 'c') +@@ -1385,7 +1503,7 @@ print_completions (int is_filename, int is_completion) + i < (ptr && (*(ptr-1) == 'd' && *(ptr-2) == 'f') ? 1:2); + i++) + { +- for (j = 0; j < 8; j++) ++ for (j = 0; j < MAX_HD_NUM; j++) + { + disk_no = (i * 0x80) + j; + if ((disk_choice || disk_no == current_drive) +@@ -1407,7 +1525,7 @@ print_completions (int is_filename, int is_completion) + || (*(ptr-1) == 'd' && *(ptr-2) == 'c'))) + print_a_completion ("cd"); + +-# ifdef SUPPORT_NETBOOT ++# if defined(SUPPORT_NETBOOT) || defined(PLATFORM_EFI) + if (network_ready + && (disk_choice || NETWORK_DRIVE == current_drive) + && (!ptr +@@ -1596,7 +1714,7 @@ grub_open (char *filename) + + BLK_BLKLENGTH (list_addr) = tmp; + +- filemax += (tmp * SECTOR_SIZE); ++ filemax += (tmp * get_sector_size(current_drive)); + list_addr += BLK_BLKLIST_INC_VAL; + + if (*ptr != ',') +@@ -1673,6 +1791,7 @@ grub_read (char *buf, int len) + if (block_file) + { + int size, off, ret = 0; ++ int sector_size = get_sector_size(current_drive); + + while (len && !errnum) + { +@@ -1687,10 +1806,10 @@ grub_read (char *buf, int len) + /* run BLK_CUR_FILEPOS up to filepos */ + while (filepos > BLK_CUR_FILEPOS) + { +- if ((filepos - (BLK_CUR_FILEPOS & ~(SECTOR_SIZE - 1))) +- >= SECTOR_SIZE) ++ if ((filepos - (BLK_CUR_FILEPOS & ~(sector_size - 1))) ++ >= sector_size) + { +- BLK_CUR_FILEPOS += SECTOR_SIZE; ++ BLK_CUR_FILEPOS += sector_size; + BLK_CUR_BLKNUM++; + + if (BLK_CUR_BLKNUM >= BLK_BLKLENGTH (BLK_CUR_BLKLIST)) +@@ -1703,9 +1822,9 @@ grub_read (char *buf, int len) + BLK_CUR_FILEPOS = filepos; + } + +- off = filepos & (SECTOR_SIZE - 1); ++ off = filepos & (sector_size - 1); + size = ((BLK_BLKLENGTH (BLK_CUR_BLKLIST) - BLK_CUR_BLKNUM) +- * SECTOR_SIZE) - off; ++ * sector_size) - off; + if (size > len) + size = len; + +diff --git a/stage2/efistubs.c b/stage2/efistubs.c +new file mode 100644 +index 0000000..29b086a +--- /dev/null ++++ b/stage2/efistubs.c +@@ -0,0 +1,7 @@ ++ ++#include "shared.h" ++#include "efistubs.h" ++ ++#if defined(PLATFORM_EFI) ++int network_ready = 0; ++#endif /* defined(PLATFORM_EFI) */ +diff --git a/stage2/efistubs.h b/stage2/efistubs.h +new file mode 100644 +index 0000000..97e407d +--- /dev/null ++++ b/stage2/efistubs.h +@@ -0,0 +1,8 @@ ++#ifndef EFISTUBS_H ++#define EFISTUBS_H 1 ++ ++#if defined(PLATFORM_EFI) ++extern int network_ready; ++#endif /* defined(PLATFORM_EFI) */ ++ ++#endif /* EFISTUBS_H */ +diff --git a/stage2/fat.h b/stage2/fat.h +index 7fed6ba..f154eed 100644 +--- a/stage2/fat.h ++++ b/stage2/fat.h +@@ -92,7 +92,7 @@ struct fat_bpb { + #define FAT_DIRENTRY_FIRST_CLUSTER(entry) \ + ((*((unsigned short *) (entry+26)))+(*((unsigned short *) (entry+20)) << 16)) + #define FAT_DIRENTRY_FILELENGTH(entry) \ +- (*((unsigned long *) (entry+28))) ++ (*((unsigned int *) (entry+28))) + + #define FAT_LONGDIR_ID(entry) \ + (*((unsigned char *) (entry))) +diff --git a/stage2/filesys.h b/stage2/filesys.h +index bbad8b9..79e5f1f 100644 +--- a/stage2/filesys.h ++++ b/stage2/filesys.h +@@ -40,6 +40,16 @@ int ufs2_embed (int *start_sector, int needed_sectors); + #define FSYS_UFS2_NUM 0 + #endif + ++#ifdef PLATFORM_EFI ++#define FSYS_UEFI_NUM 1 ++int uefi_mount (void); ++int uefi_read (char *buf, int len); ++int uefi_dir (char *dirname); ++void uefi_close (void); ++#else ++#define FSYS_UEFI_NUM 0 ++#endif ++ + #ifdef FSYS_FAT + #define FSYS_FAT_NUM 1 + int fat_mount (void); +@@ -115,6 +125,17 @@ void tftp_close (void); + #define FSYS_TFTP_NUM 0 + #endif + ++#ifdef PLATFORM_EFI ++#define FSYS_EFI_TFTP_NUM 1 ++int efi_tftp_mount (void); ++int efi_tftp_read (char *buf, int len); ++int efi_tftp_dir (char *dirname); ++void efi_tftp_close (void); ++#else ++#define FSYS_EFI_TFTP_NUM 0 ++#endif ++ ++ + #ifdef FSYS_ISO9660 + #define FSYS_ISO9660_NUM 1 + int iso9660_mount (void); +@@ -128,7 +149,8 @@ int iso9660_dir (char *dirname); + #define NUM_FSYS \ + (FSYS_FFS_NUM + FSYS_FAT_NUM + FSYS_EXT2FS_NUM + FSYS_MINIX_NUM \ + + FSYS_REISERFS_NUM + FSYS_VSTAFS_NUM + FSYS_JFS_NUM + FSYS_XFS_NUM \ +- + FSYS_TFTP_NUM + FSYS_ISO9660_NUM + FSYS_UFS2_NUM) ++ + FSYS_TFTP_NUM + FSYS_EFI_TFTP_NUM + FSYS_ISO9660_NUM + FSYS_UFS2_NUM \ ++ + FSYS_UEFI_NUM) + #endif + + /* defines for the block filesystem info area */ +@@ -137,8 +159,8 @@ int iso9660_dir (char *dirname); + #define BLK_CUR_BLKLIST (*((int*)(FSYS_BUF+4))) + #define BLK_CUR_BLKNUM (*((int*)(FSYS_BUF+8))) + #define BLK_MAX_ADDR (FSYS_BUF+0x7FF9) +-#define BLK_BLKSTART(l) (*((int*)l)) +-#define BLK_BLKLENGTH(l) (*((int*)(l+4))) ++#define BLK_BLKSTART(l) (*((int*)(unsigned long)l)) ++#define BLK_BLKLENGTH(l) (*((int*)(unsigned long)(l+4))) + #define BLK_BLKLIST_START (FSYS_BUF+12) + #define BLK_BLKLIST_INC_VAL 8 + #endif /* NO_BLOCK_FILES */ +diff --git a/stage2/fsys_ext2fs.c b/stage2/fsys_ext2fs.c +index 560048f..01386d1 100644 +--- a/stage2/fsys_ext2fs.c ++++ b/stage2/fsys_ext2fs.c +@@ -25,7 +25,7 @@ + static int mapblock1, mapblock2; + + /* sizes are always in bytes, BLOCK values are always in DEV_BSIZE (sectors) */ +-#define DEV_BSIZE 512 ++#define DEV_BSIZE get_sector_size(current_drive) + + /* include/linux/fs.h */ + #define BLOCK_SIZE 1024 /* initial block size for superblock read */ +@@ -33,6 +33,7 @@ static int mapblock1, mapblock2; + #define WHICH_SUPER 1 + /* kind of from fs/ext2/super.c */ + #define SBLOCK (WHICH_SUPER * BLOCK_SIZE / DEV_BSIZE) /* = 2 */ ++#define SBOFF ((WHICH_SUPER * BLOCK_SIZE) % DEV_BSIZE) + + /* include/asm-i386/types.h */ + typedef __signed__ char __s8; +@@ -41,6 +42,7 @@ typedef __signed__ short __s16; + typedef unsigned short __u16; + typedef __signed__ int __s32; + typedef unsigned int __u32; ++typedef unsigned long long __u64; + + /* + * Constants relative to the data blocks, from ext2_fs.h +@@ -51,7 +53,7 @@ typedef unsigned int __u32; + #define EXT2_TIND_BLOCK (EXT2_DIND_BLOCK + 1) + #define EXT2_N_BLOCKS (EXT2_TIND_BLOCK + 1) + +-/* include/linux/ext2_fs.h */ ++/* lib/ext2fs/ext2_fs.h from e2fsprogs */ + struct ext2_super_block + { + __u32 s_inodes_count; /* Inodes count */ +@@ -61,9 +63,9 @@ struct ext2_super_block + __u32 s_free_inodes_count; /* Free inodes count */ + __u32 s_first_data_block; /* First Data Block */ + __u32 s_log_block_size; /* Block size */ +- __s32 s_log_frag_size; /* Fragment size */ ++ __s32 s_obso_log_frag_size; /* Obsoleted Fragment size */ + __u32 s_blocks_per_group; /* # Blocks per group */ +- __u32 s_frags_per_group; /* # Fragments per group */ ++ __u32 s_obso_frags_per_group; /* Obsoleted Fragments per group */ + __u32 s_inodes_per_group; /* # Inodes per group */ + __u32 s_mtime; /* Mount time */ + __u32 s_wtime; /* Write time */ +@@ -72,17 +74,76 @@ struct ext2_super_block + __u16 s_magic; /* Magic signature */ + __u16 s_state; /* File system state */ + __u16 s_errors; /* Behaviour when detecting errors */ +- __u16 s_pad; ++ __u16 s_minor_rev_level; /* minor revision level */ + __u32 s_lastcheck; /* time of last check */ + __u32 s_checkinterval; /* max. time between checks */ + __u32 s_creator_os; /* OS */ + __u32 s_rev_level; /* Revision level */ + __u16 s_def_resuid; /* Default uid for reserved blocks */ + __u16 s_def_resgid; /* Default gid for reserved blocks */ +- __u32 s_reserved[235]; /* Padding to the end of the block */ +- }; +- +-struct ext2_group_desc ++ /* ++ * These fields are for EXT2_DYNAMIC_REV superblocks only. ++ * ++ * Note: the difference between the compatible feature set and ++ * the incompatible feature set is that if there is a bit set ++ * in the incompatible feature set that the kernel doesn't ++ * know about, it should refuse to mount the filesystem. ++ * ++ * e2fsck's requirements are more strict; if it doesn't know ++ * about a feature in either the compatible or incompatible ++ * feature set, it must abort and not try to meddle with ++ * things it doesn't understand... ++ */ ++ __u32 s_first_ino; /* First non-reserved inode */ ++ __u16 s_inode_size; /* size of inode structure */ ++ __u16 s_block_group_nr; /* block group # of this superblock */ ++ __u32 s_feature_compat; /* compatible feature set */ ++ __u32 s_feature_incompat; /* incompatible feature set */ ++ __u32 s_feature_ro_compat; /* readonly-compatible feature set */ ++ __u8 s_uuid[16]; /* 128-bit uuid for volume */ ++ char s_volume_name[16]; /* volume name */ ++ char s_last_mounted[64]; /* directory where last mounted */ ++ __u32 s_algorithm_usage_bitmap; /* For compression */ ++ /* ++ * Performance hints. Directory preallocation should only ++ * happen if the EXT2_FEATURE_COMPAT_DIR_PREALLOC flag is on. ++ */ ++ __u8 s_prealloc_blocks; /* Nr of blocks to try to preallocate*/ ++ __u8 s_prealloc_dir_blocks; /* Nr to preallocate for dirs */ ++ __u16 s_reserved_gdt_blocks;/* Per group table for online growth */ ++ /* ++ * Journaling support valid if EXT2_FEATURE_COMPAT_HAS_JOURNAL set. ++ */ ++ __u8 s_journal_uuid[16]; /* uuid of journal superblock */ ++ __u32 s_journal_inum; /* inode number of journal file */ ++ __u32 s_journal_dev; /* device number of journal file */ ++ __u32 s_last_orphan; /* start of list of inodes to delete */ ++ __u32 s_hash_seed[4]; /* HTREE hash seed */ ++ __u8 s_def_hash_version; /* Default hash version to use */ ++ __u8 s_jnl_backup_type; /* Default type of journal backup */ ++ __u16 s_desc_size; /* size of group descriptor */ ++ __u32 s_default_mount_opts; ++ __u32 s_first_meta_bg; /* First metablock group */ ++ __u32 s_mkfs_time; /* When the filesystem was created */ ++ __u32 s_jnl_blocks[17]; /* Backup of the journal inode */ ++ /* 64bit desc support valid if EXT4_FEATURE_INCOMPAT_64BIT */ ++ __u32 s_blocks_count_hi; /* Blocks count */ ++ __u32 s_r_blocks_count_hi; /* Reserved blocks count */ ++ __u32 s_free_blocks_count_hi; /* Free blocks count */ ++ __u16 s_min_extra_isize; /* All inodes have at least # bytes */ ++ __u16 s_max_extra_isize; /* New inodes should reverve # bytes */ ++ __u32 s_flags; /* Miscellaneous flags */ ++ __u16 s_raid_stride; /* Raid stride */ ++ __u16 s_mmp_interval; /* # seconds to wait MMP checking */ ++ __u64 s_mmp_block; /* Block for multi-mount protection */ ++ __u32 s_raid_stripe_width; /* Blocks on all data disks (N*stride)*/ ++ __u8 s_log_groups_per_flex;/* FLEX_BG group size*/ ++ __u8 s_reserved_char_pad; ++ __u16 s_reserved_pad; ++ __u32 s_reserved[162]; /* Padding to the end of the block */ ++}; ++ ++struct ext4_group_desc + { + __u32 bg_block_bitmap; /* Blocks bitmap block */ + __u32 bg_inode_bitmap; /* Inodes bitmap block */ +@@ -90,8 +151,18 @@ struct ext2_group_desc + __u16 bg_free_blocks_count; /* Free blocks count */ + __u16 bg_free_inodes_count; /* Free inodes count */ + __u16 bg_used_dirs_count; /* Directories count */ +- __u16 bg_pad; +- __u32 bg_reserved[3]; ++ __u16 bg_flags; /* EXT4_BG_flags (INODE_UNINIT, etc) */ ++ __u32 bg_reserved[2]; /* Likely block/inode bitmap checksum */ ++ __u16 bg_itable_unused; /* Unused inodes count */ ++ __u16 bg_checksum; /* crc16(sb_uuid+group+desc) */ ++ __u32 bg_block_bitmap_hi; /* Blocks bitmap block MSB */ ++ __u32 bg_inode_bitmap_hi; /* Inodes bitmap block MSB */ ++ __u32 bg_inode_table_hi; /* Inodes table block MSB */ ++ __u16 bg_free_blocks_count_hi;/* Free blocks count MSB */ ++ __u16 bg_free_inodes_count_hi;/* Free inodes count MSB */ ++ __u16 bg_used_dirs_count_hi; /* Directories count MSB */ ++ __u16 bg_itable_unused_hi; /* Unused inodes count MSB */ ++ __u32 bg_reserved2[3]; + }; + + struct ext2_inode +@@ -129,22 +200,22 @@ struct ext2_inode + __u32 i_block[EXT2_N_BLOCKS]; /* 40: Pointers to blocks */ + __u32 i_version; /* File version (for NFS) */ + __u32 i_file_acl; /* File ACL */ +- __u32 i_dir_acl; /* Directory ACL */ +- __u32 i_faddr; /* Fragment address */ ++ __u32 i_size_high; ++ __u32 i_obso_faddr; /* Obsoleted fragment address */ + union + { + struct + { +- __u8 l_i_frag; /* Fragment number */ +- __u8 l_i_fsize; /* Fragment size */ +- __u16 i_pad1; +- __u32 l_i_reserved2[2]; ++ __u16 l_i_blocks_high; /* were l_i_reserved1 */ ++ __u16 l_i_file_acl_high; ++ __u16 l_i_uid_high; /* these 2 fields */ ++ __u16 l_i_gid_high; /* were reserved2[0] */ ++ __u32 l_i_reserved2; + } + linux2; + struct + { +- __u8 h_i_frag; /* Fragment number */ +- __u8 h_i_fsize; /* Fragment size */ ++ __u16 h_i_reserved1; /* Obsoleted fragment number/size which are removed in ext4 */ + __u16 h_i_mode_high; + __u16 h_i_uid_high; + __u16 h_i_gid_high; +@@ -153,16 +224,36 @@ struct ext2_inode + hurd2; + struct + { +- __u8 m_i_frag; /* Fragment number */ +- __u8 m_i_fsize; /* Fragment size */ +- __u16 m_pad1; ++ __u16 h_i_reserved1; /* Obsoleted fragment number/size which are removed in ext4 */ ++ __u16 m_i_file_acl_high; + __u32 m_i_reserved2[2]; + } + masix2; + } + osd2; /* OS dependent 2 */ ++ __u16 i_extra_isize; ++ __u16 i_pad1; ++ __u32 i_ctime_extra; /* extra Change time (nsec << 2 | epoch) */ ++ __u32 i_mtime_extra; /* extra Modification time(nsec << 2 | epoch) */ ++ __u32 i_atime_extra; /* extra Access time (nsec << 2 | epoch) */ ++ __u32 i_crtime; /* File Creation time */ ++ __u32 i_crtime_extra; /* extra FileCreationtime (nsec << 2 | epoch) */ ++ __u32 i_version_hi; /* high 32 bits for 64-bit version */ + }; + ++#define EXT4_FEATURE_INCOMPAT_EXTENTS 0x0040 /* extents support */ ++#define EXT4_FEATURE_INCOMPAT_64BIT 0x0080 /* grub not supported*/ ++#define EXT4_FEATURE_INCOMPAT_MMP 0x0100 ++#define EXT4_FEATURE_INCOMPAT_FLEX_BG 0x0200 ++ ++#define EXT4_HAS_INCOMPAT_FEATURE(sb,mask) \ ++ ( sb->s_feature_incompat & mask ) ++ ++#define EXT4_EXTENTS_FL 0x00080000 /* Inode uses extents */ ++#define EXT4_HUGE_FILE_FL 0x00040000 /* Set to each huge file */ ++ ++#define EXT4_MIN_DESC_SIZE 32 ++ + /* linux/limits.h */ + #define NAME_MAX 255 /* # chars in a file name */ + +@@ -180,6 +271,57 @@ struct ext2_dir_entry + char name[EXT2_NAME_LEN]; /* File name */ + }; + ++/* linux/ext4_fs_extents.h */ ++/* This is the extent on-disk structure. ++ * It's used at the bottom of the tree. ++ */ ++struct ext4_extent ++ { ++ __u32 ee_block; /* first logical block extent covers */ ++ __u16 ee_len; /* number of blocks covered by extent */ ++ __u16 ee_start_hi; /* high 16 bits of physical block */ ++ __u32 ee_start_lo; /* low 32 bits of physical block */ ++ }; ++ ++/* ++ * This is index on-disk structure. ++ * It's used at all the levels except the bottom. ++ */ ++struct ext4_extent_idx ++ { ++ __u32 ei_block; /* index covers logical blocks from 'block' */ ++ __u32 ei_leaf_lo; /* pointer to the physical block of the next * ++ * level. leaf or next index could be there */ ++ __u16 ei_leaf_hi; /* high 16 bits of physical block */ ++ __u16 ei_unused; ++ }; ++ ++/* ++ * Each block (leaves and indexes), even inode-stored has header. ++ */ ++struct ext4_extent_header ++ { ++ __u16 eh_magic; /* probably will support different formats */ ++ __u16 eh_entries; /* number of valid entries */ ++ __u16 eh_max; /* capacity of store in entries */ ++ __u16 eh_depth; /* has tree real underlying blocks? */ ++ __u32 eh_generation; /* generation of the tree */ ++ }; ++ ++#define EXT4_EXT_MAGIC (0xf30a) ++#define EXT_FIRST_EXTENT(__hdr__) \ ++ ((struct ext4_extent *) (((char *) (__hdr__)) + \ ++ sizeof(struct ext4_extent_header))) ++#define EXT_FIRST_INDEX(__hdr__) \ ++ ((struct ext4_extent_idx *) (((char *) (__hdr__)) + \ ++ sizeof(struct ext4_extent_header))) ++#define EXT_LAST_EXTENT(__hdr__) \ ++ (EXT_FIRST_EXTENT((__hdr__)) + (__u16)((__hdr__)->eh_entries) - 1) ++#define EXT_LAST_INDEX(__hdr__) \ ++ (EXT_FIRST_INDEX((__hdr__)) + (__u16)((__hdr__)->eh_entries) - 1) ++ ++ ++ + /* linux/ext2fs.h */ + /* + * EXT2_DIR_PAD defines the directory entries boundaries +@@ -206,25 +348,37 @@ struct ext2_dir_entry + ((struct ext2_super_block *)(FSYS_BUF)) + #define GROUP_DESC \ + ((struct ext2_group_desc *) \ +- ((int)SUPERBLOCK + sizeof(struct ext2_super_block))) ++ ((unsigned long)SUPERBLOCK + sizeof(struct ext2_super_block))) + #define INODE \ +- ((struct ext2_inode *)((int)GROUP_DESC + EXT2_BLOCK_SIZE(SUPERBLOCK))) ++ ((struct ext2_inode *)((unsigned long)GROUP_DESC + EXT2_BLOCK_SIZE(SUPERBLOCK))) + #define DATABLOCK1 \ +- ((int)((int)INODE + sizeof(struct ext2_inode))) ++ ((unsigned long)INODE + sizeof(struct ext2_inode)) + #define DATABLOCK2 \ +- ((int)((int)DATABLOCK1 + EXT2_BLOCK_SIZE(SUPERBLOCK))) ++ ((unsigned long)DATABLOCK1 + EXT2_BLOCK_SIZE(SUPERBLOCK)) + + /* linux/ext2_fs.h */ + #define EXT2_ADDR_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s) / sizeof (__u32)) + #define EXT2_ADDR_PER_BLOCK_BITS(s) (log2(EXT2_ADDR_PER_BLOCK(s))) + ++#define EXT2_INODE_SIZE(s) (SUPERBLOCK->s_inode_size) ++#define EXT2_INODES_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s)/EXT2_INODE_SIZE(s)) ++ + /* linux/ext2_fs.h */ + #define EXT2_BLOCK_SIZE_BITS(s) ((s)->s_log_block_size + 10) + /* kind of from ext2/super.c */ + #define EXT2_BLOCK_SIZE(s) (1 << EXT2_BLOCK_SIZE_BITS(s)) + /* linux/ext2fs.h */ ++/* sizeof(struct ext2_group_desc) is changed in ext4 ++ * in kernel code, ext2/3 uses sizeof(struct ext2_group_desc) to calculate ++ * number of desc per block, while ext4 uses superblock->s_desc_size in stead ++ * superblock->s_desc_size is not available in ext2/3 ++ * */ ++#define EXT2_DESC_SIZE(s) \ ++ (EXT4_HAS_INCOMPAT_FEATURE(s,EXT4_FEATURE_INCOMPAT_64BIT)? \ ++ s->s_desc_size : EXT4_MIN_DESC_SIZE) + #define EXT2_DESC_PER_BLOCK(s) \ +- (EXT2_BLOCK_SIZE(s) / sizeof (struct ext2_group_desc)) ++ (EXT2_BLOCK_SIZE(s) / EXT2_DESC_SIZE(s)) ++ + /* linux/stat.h */ + #define S_IFMT 00170000 + #define S_IFLNK 0120000 +@@ -239,8 +393,8 @@ struct ext2_dir_entry + * ffz = Find First Zero in word. Undefined if no zero exists, + * so code should check against ~0UL first.. + */ +-static __inline__ unsigned long +-ffz (unsigned long word) ++static __inline__ unsigned int ++ffz (unsigned int word) + { + __asm__ ("bsfl %1,%0" + : "=r" (word) +@@ -260,7 +414,7 @@ ext2fs_mount (void) + && (! IS_PC_SLICE_TYPE_BSD_WITH_FS (current_slice, FS_EXT2FS)) + && (! IS_PC_SLICE_TYPE_BSD_WITH_FS (current_slice, FS_OTHER))) + || part_length < (SBLOCK + (sizeof (struct ext2_super_block) / DEV_BSIZE)) +- || !devread (SBLOCK, 0, sizeof (struct ext2_super_block), ++ || !devread (SBLOCK, SBOFF, sizeof (struct ext2_super_block), + (char *) SUPERBLOCK) + || SUPERBLOCK->s_magic != EXT2_SUPER_MAGIC) + retval = 0; +@@ -276,7 +430,7 @@ ext2_rdfsb (int fsblock, int buffer) + printf ("fsblock %d buffer %d\n", fsblock, buffer); + #endif /* E2DEBUG */ + return devread (fsblock * (EXT2_BLOCK_SIZE (SUPERBLOCK) / DEV_BSIZE), 0, +- EXT2_BLOCK_SIZE (SUPERBLOCK), (char *) buffer); ++ EXT2_BLOCK_SIZE (SUPERBLOCK), (char *) (unsigned long) buffer); + } + + /* from +@@ -386,6 +540,122 @@ ext2fs_block_map (int logical_block) + [logical_block & (EXT2_ADDR_PER_BLOCK (SUPERBLOCK) - 1)]; + } + ++/* extent binary search index ++ * find closest index in the current level extent tree ++ * kind of from ext4_ext_binsearch_idx in ext4/extents.c ++ */ ++static struct ext4_extent_idx* ++ext4_ext_binsearch_idx(struct ext4_extent_header* eh, int logical_block) ++{ ++ struct ext4_extent_idx *r, *l, *m; ++ l = EXT_FIRST_INDEX(eh) + 1; ++ r = EXT_LAST_INDEX(eh); ++ while (l <= r) ++ { ++ m = l + (r - l) / 2; ++ if (logical_block < m->ei_block) ++ r = m - 1; ++ else ++ l = m + 1; ++ } ++ return (struct ext4_extent_idx*)(l - 1); ++} ++ ++/* extent binary search ++ * find closest extent in the leaf level ++ * kind of from ext4_ext_binsearch in ext4/extents.c ++ */ ++static struct ext4_extent* ++ext4_ext_binsearch(struct ext4_extent_header* eh, int logical_block) ++{ ++ struct ext4_extent *r, *l, *m; ++ l = EXT_FIRST_EXTENT(eh) + 1; ++ r = EXT_LAST_EXTENT(eh); ++ while (l <= r) ++ { ++ m = l + (r - l) / 2; ++ if (logical_block < m->ee_block) ++ r = m - 1; ++ else ++ l = m + 1; ++ } ++ return (struct ext4_extent*)(l - 1); ++} ++ ++/* Maps extents enabled logical block into physical block via an inode. ++ * EXT4_HUGE_FILE_FL should be checked before calling this. ++ */ ++static int ++ext4fs_block_map (int logical_block) ++{ ++ struct ext4_extent_header *eh; ++ struct ext4_extent *ex, *extent; ++ struct ext4_extent_idx *ei, *index; ++ int depth; ++ int i; ++ ++#ifdef E2DEBUG ++ unsigned char *i; ++ for (i = (unsigned char *) INODE; ++ i < ((unsigned char *) INODE + sizeof (struct ext2_inode)); ++ i++) ++ { ++ printf ("%c", "0123456789abcdef"[*i >> 4]); ++ printf ("%c", "0123456789abcdef"[*i % 16]); ++ if (!((i + 1 - (unsigned char *) INODE) % 16)) ++ { ++ printf ("\n"); ++ } ++ else ++ { ++ printf (" "); ++ } ++ } ++ printf ("logical block %d\n", logical_block); ++#endif /* E2DEBUG */ ++ eh = (struct ext4_extent_header*)INODE->i_block; ++ if (eh->eh_magic != EXT4_EXT_MAGIC) ++ { ++ errnum = ERR_FSYS_CORRUPT; ++ return -1; ++ } ++ while((depth = eh->eh_depth) != 0) ++ { /* extent index */ ++ if (eh->eh_magic != EXT4_EXT_MAGIC) ++ { ++ errnum = ERR_FSYS_CORRUPT; ++ return -1; ++ } ++ ei = ext4_ext_binsearch_idx(eh, logical_block); ++ if (ei->ei_leaf_hi) ++ {/* 64bit physical block number not supported */ ++ errnum = ERR_FILELENGTH; ++ return -1; ++ } ++ if (!ext2_rdfsb(ei->ei_leaf_lo, DATABLOCK1)) ++ { ++ errnum = ERR_FSYS_CORRUPT; ++ return -1; ++ } ++ eh = (struct ext4_extent_header*)DATABLOCK1; ++ } ++ ++ /* depth==0, we come to the leaf */ ++ ex = ext4_ext_binsearch(eh, logical_block); ++ if (ex->ee_start_hi) ++ {/* 64bit physical block number not supported */ ++ errnum = ERR_FILELENGTH; ++ return -1; ++ } ++ if ((ex->ee_block + ex->ee_len) < logical_block) ++ { ++ errnum = ERR_FSYS_CORRUPT; ++ return -1; ++ } ++ return ex->ee_start_lo + logical_block - ex->ee_block; ++ ++} ++ + /* preconditions: all preconds of ext2fs_block_map */ + int + ext2fs_read (char *buf, int len) +@@ -420,6 +690,11 @@ ext2fs_read (char *buf, int len) + /* find the (logical) block component of our location */ + logical_block = filepos >> EXT2_BLOCK_SIZE_BITS (SUPERBLOCK); + offset = filepos & (EXT2_BLOCK_SIZE (SUPERBLOCK) - 1); ++ /* map extents enabled logical block number to physical fs on-disk block number */ ++ if (EXT4_HAS_INCOMPAT_FEATURE(SUPERBLOCK,EXT4_FEATURE_INCOMPAT_EXTENTS) ++ && INODE->i_flags & EXT4_EXTENTS_FL) ++ map = ext4fs_block_map (logical_block); ++ else + map = ext2fs_block_map (logical_block); + #ifdef E2DEBUG + printf ("map=%d\n", map); +@@ -504,7 +779,7 @@ ext2fs_dir (char *dirname) + int desc; /* index within that group */ + int ino_blk; /* fs pointer of the inode's information */ + int str_chk = 0; /* used to hold the results of a string compare */ +- struct ext2_group_desc *gdp; ++ struct ext4_group_desc *ext4_gdp; + struct ext2_inode *raw_inode; /* inode info corresponding to current_ino */ + + char linkbuf[PATH_MAX]; /* buffer for following symbolic links */ +@@ -546,18 +821,25 @@ ext2fs_dir (char *dirname) + #endif /* E2DEBUG */ + if (!ext2_rdfsb ( + (WHICH_SUPER + group_desc + SUPERBLOCK->s_first_data_block), +- (int) GROUP_DESC)) ++ (unsigned long) GROUP_DESC)) + { + return 0; + } +- gdp = GROUP_DESC; +- ino_blk = gdp[desc].bg_inode_table + ++ ext4_gdp = (struct ext4_group_desc *)( (__u8*)GROUP_DESC + ++ desc * EXT2_DESC_SIZE(SUPERBLOCK)); ++ if (EXT4_HAS_INCOMPAT_FEATURE(SUPERBLOCK, EXT4_FEATURE_INCOMPAT_64BIT) ++ && (! ext4_gdp->bg_inode_table_hi)) ++ {/* 64bit itable not supported */ ++ errnum = ERR_FILELENGTH; ++ return -1; ++ } ++ ino_blk = ext4_gdp->bg_inode_table + + (((current_ino - 1) % (SUPERBLOCK->s_inodes_per_group)) +- >> log2 (EXT2_BLOCK_SIZE (SUPERBLOCK) / sizeof (struct ext2_inode))); ++ >> log2 (EXT2_INODES_PER_BLOCK (SUPERBLOCK))); + #ifdef E2DEBUG + printf ("inode table fsblock=%d\n", ino_blk); + #endif /* E2DEBUG */ +- if (!ext2_rdfsb (ino_blk, (int) INODE)) ++ if (!ext2_rdfsb (ino_blk, (unsigned long) INODE)) + { + return 0; + } +@@ -565,13 +847,12 @@ ext2fs_dir (char *dirname) + /* reset indirect blocks! */ + mapblock2 = mapblock1 = -1; + +- raw_inode = INODE + +- ((current_ino - 1) +- & (EXT2_BLOCK_SIZE (SUPERBLOCK) / sizeof (struct ext2_inode) - 1)); ++ raw_inode = (struct ext2_inode *)((char *)INODE + ++ ((current_ino - 1) & (EXT2_INODES_PER_BLOCK (SUPERBLOCK) - 1)) * ++ EXT2_INODE_SIZE (SUPERBLOCK)); + #ifdef E2DEBUG + printf ("ipb=%d, sizeof(inode)=%d\n", +- (EXT2_BLOCK_SIZE (SUPERBLOCK) / sizeof (struct ext2_inode)), +- sizeof (struct ext2_inode)); ++ EXT2_INODES_PER_BLOCK (SUPERBLOCK), EXT2_INODE_SIZE (SUPERBLOCK)); + printf ("inode=%x, raw_inode=%x\n", INODE, raw_inode); + printf ("offset into inode table block=%d\n", (int) raw_inode - (int) INODE); + for (i = (unsigned char *) INODE; i <= (unsigned char *) raw_inode; +@@ -629,7 +910,10 @@ ext2fs_dir (char *dirname) + } + linkbuf[filemax + len] = '\0'; + +- /* Read the symlink data. */ ++ /* Read the symlink data. ++ * Slow symlink is extents enabled ++ * But since grub_read invokes ext2fs_read, nothing to change here ++ */ + if (! ext2_is_fast_symlink ()) + { + /* Read the necessary blocks, and reset the file pointer. */ +@@ -640,7 +924,9 @@ ext2fs_dir (char *dirname) + } + else + { +- /* Copy the data directly from the inode. */ ++ /* Copy the data directly from the inode. ++ * Fast symlink is not extents enabled ++ */ + len = filemax; + memmove (linkbuf, (char *) INODE->i_block, len); + } +@@ -674,6 +960,13 @@ ext2fs_dir (char *dirname) + errnum = ERR_BAD_FILETYPE; + return 0; + } ++ /* if file is too large, just stop and report an error*/ ++ if ( (INODE->i_flags & EXT4_HUGE_FILE_FL) && !(INODE->i_size_high)) ++ { ++ /* file too large, stop reading */ ++ errnum = ERR_FILELENGTH; ++ return 0; ++ } + + filemax = (INODE->i_size); + return 1; +@@ -728,17 +1021,28 @@ ext2fs_dir (char *dirname) + } + + /* else, find the (logical) block component of our location */ ++ /* ext4 logical block number the same as ext2/3 */ + blk = loc >> EXT2_BLOCK_SIZE_BITS (SUPERBLOCK); + + /* we know which logical block of the directory entry we are looking + for, now we have to translate that to the physical (fs) block on + the disk */ ++ /* map extents enabled logical block number to physical fs on-disk block number */ ++ if (EXT4_HAS_INCOMPAT_FEATURE(SUPERBLOCK,EXT4_FEATURE_INCOMPAT_EXTENTS) ++ && INODE->i_flags & EXT4_EXTENTS_FL) ++ map = ext4fs_block_map (blk); ++ else + map = ext2fs_block_map (blk); + #ifdef E2DEBUG + printf ("fs block=%d\n", map); + #endif /* E2DEBUG */ + mapblock2 = -1; +- if ((map < 0) || !ext2_rdfsb (map, DATABLOCK2)) ++ if (map < 0) ++ { ++ *rest = ch; ++ return 0; ++ } ++ if (!ext2_rdfsb (map, DATABLOCK2)) + { + errnum = ERR_FSYS_CORRUPT; + *rest = ch; +diff --git a/stage2/fsys_fat.c b/stage2/fsys_fat.c +index f40e658..f1157f4 100644 +--- a/stage2/fsys_fat.c ++++ b/stage2/fsys_fat.c +@@ -49,13 +49,13 @@ struct fat_superblock + /* pointer(s) into filesystem info buffer for DOS stuff */ + #define FAT_SUPER ( (struct fat_superblock *) \ + ( FSYS_BUF + 32256) )/* 512 bytes long */ +-#define FAT_BUF ( FSYS_BUF + 30208 ) /* 4 sector FAT buffer */ +-#define NAME_BUF ( FSYS_BUF + 29184 ) /* Filename buffer (833 bytes) */ ++#define FAT_BUF ( FSYS_BUF + 28160 ) /* 4 sector FAT buffer */ ++#define NAME_BUF ( FSYS_BUF + 27136 ) /* Filename buffer (833 bytes) */ + +-#define FAT_CACHE_SIZE 2048 ++#define FAT_CACHE_SIZE 4096 + +-static __inline__ unsigned long +-log2 (unsigned long word) ++static __inline__ unsigned int ++grub_log2 (unsigned int word) + { + __asm__ ("bsfl %1,%0" + : "=r" (word) +@@ -68,9 +68,12 @@ fat_mount (void) + { + struct fat_bpb bpb; + __u32 magic, first_fat; ++ int sector_size; + + /* Check partition type for harddisk */ + if (((current_drive & 0x80) || (current_slice != 0)) ++ && (current_slice != PC_SLICE_TYPE_EXT2FS) ++ && (current_slice != PC_SLICE_TYPE_LINUX_RAID) + && ! IS_PC_SLICE_TYPE_FAT (current_slice) + && (! IS_PC_SLICE_TYPE_BSD_WITH_FS (current_slice, FS_MSDOS))) + return 0; +@@ -79,14 +82,16 @@ fat_mount (void) + if (! devread (0, 0, sizeof (bpb), (char *) &bpb)) + return 0; + ++ sector_size = get_sector_size(current_drive); ++ + /* Check if the number of sectors per cluster is zero here, to avoid + zero division. */ + if (bpb.sects_per_clust == 0) + return 0; + +- FAT_SUPER->sectsize_bits = log2 (FAT_CVT_U16 (bpb.bytes_per_sect)); ++ FAT_SUPER->sectsize_bits = grub_log2 (FAT_CVT_U16 (bpb.bytes_per_sect)); + FAT_SUPER->clustsize_bits +- = FAT_SUPER->sectsize_bits + log2 (bpb.sects_per_clust); ++ = FAT_SUPER->sectsize_bits + grub_log2 (bpb.sects_per_clust); + + /* Fill in info about super block */ + FAT_SUPER->num_sectors = FAT_CVT_U16 (bpb.short_sectors) +@@ -106,7 +111,7 @@ fat_mount (void) + FAT_SUPER->data_offset = + FAT_SUPER->root_offset + + ((FAT_SUPER->root_max - 1) >> FAT_SUPER->sectsize_bits) + 1; +- FAT_SUPER->num_clust = ++ FAT_SUPER->num_clust = + 2 + ((FAT_SUPER->num_sectors - FAT_SUPER->data_offset) + / bpb.sects_per_clust); + FAT_SUPER->sects_per_clust = bpb.sects_per_clust; +@@ -153,11 +158,11 @@ fat_mount (void) + /* Now do some sanity checks */ + + if (FAT_CVT_U16(bpb.bytes_per_sect) != (1 << FAT_SUPER->sectsize_bits) +- || FAT_CVT_U16(bpb.bytes_per_sect) != SECTOR_SIZE ++ || FAT_CVT_U16(bpb.bytes_per_sect) != sector_size + || bpb.sects_per_clust != (1 << (FAT_SUPER->clustsize_bits + - FAT_SUPER->sectsize_bits)) + || FAT_SUPER->num_clust <= 2 +- || (FAT_SUPER->fat_size * FAT_SUPER->num_clust / (2 * SECTOR_SIZE) ++ || (FAT_SUPER->fat_size * FAT_SUPER->num_clust / (2 * sector_size) + > FAT_SUPER->fat_length)) + return 0; + +@@ -201,6 +206,7 @@ fat_read (char *buf, int len) + int offset; + int ret = 0; + int size; ++ int sector_size = get_sector_size(current_drive); + + if (FAT_SUPER->file_cluster < 0) + { +@@ -236,10 +242,10 @@ fat_read (char *buf, int len) + if (cached_pos < 0 || + (cached_pos + FAT_SUPER->fat_size) > 2*FAT_CACHE_SIZE) + { +- FAT_SUPER->cached_fat = (fat_entry & ~(2*SECTOR_SIZE - 1)); ++ FAT_SUPER->cached_fat = (fat_entry & ~(2*sector_size - 1)); + cached_pos = (fat_entry - FAT_SUPER->cached_fat); + sector = FAT_SUPER->fat_offset +- + FAT_SUPER->cached_fat / (2*SECTOR_SIZE); ++ + FAT_SUPER->cached_fat / (2*sector_size); + if (!devread (sector, 0, FAT_CACHE_SIZE, (char*) FAT_BUF)) + return 0; + } +@@ -257,6 +263,8 @@ fat_read (char *buf, int len) + return ret; + if (next_cluster < 2 || next_cluster >= FAT_SUPER->num_clust) + { ++ grub_printf("next_cluster: %d FAT_SUPER->num_clust: %d\n", ++ next_cluster, FAT_SUPER->num_clust); + errnum = ERR_FSYS_CORRUPT; + return 0; + } +@@ -340,7 +348,8 @@ fat_dir (char *dirname) + /* Directories don't have a file size */ + filemax = MAXINT; + +- for (rest = dirname; (ch = *rest) && !isspace (ch) && ch != '/'; rest++); ++ for (rest = dirname; (ch = *rest) && !isspace (ch) && ch != '/'; rest++) ++ *rest = tolower(*rest); + + *rest = 0; + +@@ -432,7 +441,7 @@ fat_dir (char *dirname) + goto print_filename; + # endif /* STAGE1_5 */ + +- if (substring (dirname, filename) == 0) ++ if (subcasestring (dirname, filename) == 0) + break; + } + } +@@ -459,7 +468,7 @@ fat_dir (char *dirname) + if (do_possibilities) + { + print_filename: +- if (substring (dirname, filename) <= 0) ++ if (subcasestring (dirname, filename) <= 0) + { + if (print_possibilities > 0) + print_possibilities = -print_possibilities; +@@ -469,7 +478,7 @@ fat_dir (char *dirname) + } + # endif /* STAGE1_5 */ + +- if (substring (dirname, filename) == 0) ++ if (subcasestring (dirname, filename) == 0) + break; + } + +diff --git a/stage2/fsys_iso9660.c b/stage2/fsys_iso9660.c +index 90e4aa8..858238b 100644 +--- a/stage2/fsys_iso9660.c ++++ b/stage2/fsys_iso9660.c +@@ -56,8 +56,8 @@ struct iso_inode_info { + #define NAME_BUF ((unsigned char *)(FSYS_BUF + 8192)) + + +-static inline unsigned long +-log2 (unsigned long word) ++static inline unsigned int ++grub_log2 (unsigned int word) + { + asm volatile ("bsfl %1,%0" + : "=r" (word) +@@ -68,7 +68,7 @@ log2 (unsigned long word) + static int + iso9660_devread (int sector, int byte_offset, int byte_len, char *buf) + { +- unsigned short sector_size_lg2 = log2(buf_geom.sector_size); ++ unsigned short sector_size_lg2 = grub_log2(buf_geom.sector_size); + + /* + * We have to use own devread() function since BIOS return wrong geometry +@@ -81,8 +81,6 @@ iso9660_devread (int sector, int byte_offset, int byte_len, char *buf) + if (byte_len <= 0) + return 1; + +- sector += (byte_offset >> sector_size_lg2); +- byte_offset &= (buf_geom.sector_size - 1); + asm volatile ("shl%L0 %1,%0" + : "=r"(sector) + : "Ic"((int8_t)(ISO_SECTOR_BITS - sector_size_lg2)), +diff --git a/stage2/fsys_jfs.c b/stage2/fsys_jfs.c +index 307f836..d63b1de 100644 +--- a/stage2/fsys_jfs.c ++++ b/stage2/fsys_jfs.c +@@ -207,19 +207,20 @@ int + jfs_mount (void) + { + struct jfs_superblock super; ++ int sector_bits = get_sector_bits(current_drive); + +- if (part_length < MINJFS >> SECTOR_BITS +- || !devread (SUPER1_OFF >> SECTOR_BITS, 0, ++ if (part_length < MINJFS >> sector_bits ++ || !devread (SUPER1_OFF >> sector_bits, 0, + sizeof(struct jfs_superblock), (char *)&super) + || (super.s_magic != JFS_MAGIC) +- || !devread ((AITBL_OFF >> SECTOR_BITS) + FILESYSTEM_I, ++ || !devread ((AITBL_OFF >> sector_bits) + FILESYSTEM_I, + 0, DISIZE, (char*)fileset)) { + return 0; + } + + jfs.bsize = super.s_bsize; + jfs.l2bsize = super.s_l2bsize; +- jfs.bdlog = jfs.l2bsize - SECTOR_BITS; ++ jfs.bdlog = jfs.l2bsize - sector_bits; + + return 1; + } +@@ -387,9 +388,10 @@ int + jfs_embed (int *start_sector, int needed_sectors) + { + struct jfs_superblock super; ++ int sector_bits = get_sector_bits(current_drive); + + if (needed_sectors > 63 +- || !devread (SUPER1_OFF >> SECTOR_BITS, 0, ++ || !devread (SUPER1_OFF >> sector_bits, 0, + sizeof (struct jfs_superblock), + (char *)&super) + || (super.s_magic != JFS_MAGIC)) { +diff --git a/stage2/fsys_minix.c b/stage2/fsys_minix.c +index 5c76796..175ecf2 100644 +--- a/stage2/fsys_minix.c ++++ b/stage2/fsys_minix.c +@@ -138,11 +138,11 @@ struct minix_dir_entry { + #define SUPERBLOCK \ + ((struct minix_super_block *)(FSYS_BUF)) + #define INODE \ +- ((struct minix_inode *)((int) SUPERBLOCK + BLOCK_SIZE)) ++ ((struct minix_inode *)((unsigned long) SUPERBLOCK + BLOCK_SIZE)) + #define DATABLOCK1 \ +- ((int)((int)INODE + sizeof(struct minix_inode))) ++ ((unsigned long)INODE + sizeof(struct minix_inode)) + #define DATABLOCK2 \ +- ((int)((int)DATABLOCK1 + BLOCK_SIZE)) ++ ((unsigned long)DATABLOCK1 + BLOCK_SIZE) + + /* linux/stat.h */ + #define S_IFMT 00170000 +@@ -193,7 +193,7 @@ static int + minix_rdfsb (int fsblock, int buffer) + { + return devread (fsblock * (BLOCK_SIZE / DEV_BSIZE), 0, +- BLOCK_SIZE, (char *) buffer); ++ BLOCK_SIZE, (char *) (unsigned long) buffer); + } + + /* Maps LOGICAL_BLOCK (the file offset divided by the blocksize) into +@@ -336,7 +336,7 @@ minix_dir (char *dirname) + + ino_blk = (2 + SUPERBLOCK->s_imap_blocks + SUPERBLOCK->s_zmap_blocks + + (current_ino - 1) / MINIX_INODES_PER_BLOCK); +- if (! minix_rdfsb (ino_blk, (int) INODE)) ++ if (! minix_rdfsb (ino_blk, (unsigned long) INODE)) + return 0; + + /* reset indirect blocks! */ +diff --git a/stage2/fsys_reiserfs.c b/stage2/fsys_reiserfs.c +index 93ec5f8..f46fcb2 100644 +--- a/stage2/fsys_reiserfs.c ++++ b/stage2/fsys_reiserfs.c +@@ -292,7 +292,6 @@ struct reiserfs_de_head + + /* The size of the node cache */ + #define FSYSREISER_CACHE_SIZE 24*1024 +-#define FSYSREISER_MIN_BLOCKSIZE SECTOR_SIZE + #define FSYSREISER_MAX_BLOCKSIZE FSYSREISER_CACHE_SIZE / 3 + + /* Info about currently opened file */ +@@ -341,19 +340,19 @@ struct fsys_reiser_info + /* The cached s+tree blocks in FSYS_BUF, see below + * for a more detailed description. + */ +-#define ROOT ((char *) ((int) FSYS_BUF)) ++#define ROOT ((char *) ((unsigned long) FSYS_BUF)) + #define CACHE(i) (ROOT + ((i) << INFO->fullblocksize_shift)) + #define LEAF CACHE (DISK_LEAF_NODE_LEVEL) + + #define BLOCKHEAD(cache) ((struct block_head *) cache) +-#define ITEMHEAD ((struct item_head *) ((int) LEAF + BLKH_SIZE)) +-#define KEY(cache) ((struct key *) ((int) cache + BLKH_SIZE)) ++#define ITEMHEAD ((struct item_head *) ((unsigned long) LEAF + BLKH_SIZE)) ++#define KEY(cache) ((struct key *) ((unsigned long) cache + BLKH_SIZE)) + #define DC(cache) ((struct disk_child *) \ +- ((int) cache + BLKH_SIZE + KEY_SIZE * nr_item)) ++ ((unsigned long) cache + BLKH_SIZE + KEY_SIZE * nr_item)) + /* The fsys_reiser_info block. + */ + #define INFO \ +- ((struct fsys_reiser_info *) ((int) FSYS_BUF + FSYSREISER_CACHE_SIZE)) ++ ((struct fsys_reiser_info *) ((unsigned long) FSYS_BUF + FSYSREISER_CACHE_SIZE)) + /* + * The journal cache. For each transaction it contains the number of + * blocks followed by the real block numbers of this transaction. +@@ -366,8 +365,8 @@ struct fsys_reiser_info + #define JOURNAL_END ((__u32 *) (FSYS_BUF + FSYS_BUFLEN)) + + +-static __inline__ unsigned long +-log2 (unsigned long word) ++static __inline__ unsigned int ++grub_log2 (unsigned int word) + { + __asm__ ("bsfl %1,%0" + : "=r" (word) +@@ -569,9 +568,11 @@ int + reiserfs_mount (void) + { + struct reiserfs_super_block super; +- int superblock = REISERFS_DISK_OFFSET_IN_BYTES >> SECTOR_BITS; ++ int sector_bits = get_sector_bits(current_drive); ++ int sector_size = get_sector_size(current_drive); ++ int superblock = REISERFS_DISK_OFFSET_IN_BYTES >> sector_bits; + +- if (part_length < superblock + (sizeof (super) >> SECTOR_BITS) ++ if (part_length < superblock + (sizeof (super) >> sector_bits) + || ! devread (superblock, 0, sizeof (struct reiserfs_super_block), + (char *) &super) + || (substring (REISER3FS_SUPER_MAGIC_STRING, super.s_magic) > 0 +@@ -582,8 +583,8 @@ reiserfs_mount (void) + <= REISERFS_DISK_OFFSET_IN_BYTES)) + { + /* Try old super block position */ +- superblock = REISERFS_OLD_DISK_OFFSET_IN_BYTES >> SECTOR_BITS; +- if (part_length < superblock + (sizeof (super) >> SECTOR_BITS) ++ superblock = REISERFS_OLD_DISK_OFFSET_IN_BYTES >> sector_bits; ++ if (part_length < superblock + (sizeof (super) >> sector_bits) + || ! devread (superblock, 0, sizeof (struct reiserfs_super_block), + (char *) &super)) + return 0; +@@ -594,7 +595,7 @@ reiserfs_mount (void) + { + /* pre journaling super block ? */ + if (substring (REISERFS_SUPER_MAGIC_STRING, +- (char*) ((int) &super + 20)) > 0) ++ (char*) ((unsigned long) &super + 20)) > 0) + return 0; + + super.s_blocksize = REISERFS_OLD_BLOCKSIZE; +@@ -609,8 +610,8 @@ reiserfs_mount (void) + + INFO->version = super.s_version; + INFO->blocksize = super.s_blocksize; +- INFO->fullblocksize_shift = log2 (super.s_blocksize); +- INFO->blocksize_shift = INFO->fullblocksize_shift - SECTOR_BITS; ++ INFO->fullblocksize_shift = grub_log2 (super.s_blocksize); ++ INFO->blocksize_shift = INFO->fullblocksize_shift - sector_bits; + INFO->cached_slots = + (FSYSREISER_CACHE_SIZE >> INFO->fullblocksize_shift) - 1; + +@@ -622,9 +623,9 @@ reiserfs_mount (void) + /* Clear node cache. */ + memset (INFO->blocks, 0, sizeof (INFO->blocks)); + +- if (super.s_blocksize < FSYSREISER_MIN_BLOCKSIZE ++ if (super.s_blocksize < get_sector_size(current_drive) + || super.s_blocksize > FSYSREISER_MAX_BLOCKSIZE +- || (SECTOR_SIZE << INFO->blocksize_shift) != super.s_blocksize) ++ || (sector_size << INFO->blocksize_shift) != super.s_blocksize) + return 0; + + /* Initialize journal code. If something fails we end with zero +@@ -1215,9 +1216,10 @@ int + reiserfs_embed (int *start_sector, int needed_sectors) + { + struct reiserfs_super_block super; ++ int sector_bits = get_sector_bits(current_drive); + int num_sectors; +- +- if (! devread (REISERFS_DISK_OFFSET_IN_BYTES >> SECTOR_BITS, 0, ++ ++ if (! devread (REISERFS_DISK_OFFSET_IN_BYTES >> sector_bits, 0, + sizeof (struct reiserfs_super_block), (char *) &super)) + return 0; + +@@ -1229,9 +1231,9 @@ reiserfs_embed (int *start_sector, int needed_sectors) + * the journal log */ + super.s_journal_block * super.s_blocksize + > REISERFS_DISK_OFFSET_IN_BYTES)) +- num_sectors = (REISERFS_DISK_OFFSET_IN_BYTES >> SECTOR_BITS) - 1; ++ num_sectors = (REISERFS_DISK_OFFSET_IN_BYTES >> sector_bits) - 1; + else +- num_sectors = (REISERFS_OLD_DISK_OFFSET_IN_BYTES >> SECTOR_BITS) - 1; ++ num_sectors = (REISERFS_OLD_DISK_OFFSET_IN_BYTES >> sector_bits) - 1; + + return (needed_sectors <= num_sectors); + } +diff --git a/stage2/fsys_uefi.c b/stage2/fsys_uefi.c +new file mode 100644 +index 0000000..58b7050 +--- /dev/null ++++ b/stage2/fsys_uefi.c +@@ -0,0 +1,265 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2001 Free Software Foundation, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#include "shared.h" ++#include "filesys.h" ++ ++#ifdef PLATFORM_EFI ++#undef GRUB_UTIL ++ ++#include <grub/types.h> ++#include <grub/misc.h> ++#include <grub/efi/efi.h> ++#include <grub/efi/misc.h> ++#include <grub/efi/api.h> ++ ++static grub_efi_simple_file_system_t *file_system; ++static grub_efi_guid_t fsinfo_guid = GRUB_EFI_DEVICE_PATH_GUID; ++grub_efi_file_t *root = NULL; ++grub_efi_file_t *file = NULL; ++ ++typedef struct { ++ grub_efi_uint64_t size; ++ grub_efi_uint64_t filesize; ++ grub_efi_uint64_t physicalsize; ++ grub_efi_time_t createtime; ++ grub_efi_time_t accesstime; ++ grub_efi_time_t modifytime; ++ grub_efi_uint64_t attribute; ++ grub_efi_char16_t filename[]; ++} grub_efi_file_info_t; ++ ++int ++uefi_mount (void) ++{ ++ grub_efi_handle_t dev_handle = grub_efidisk_get_current_bdev_handle(); ++ grub_efi_status_t status; ++ ++ if (!dev_handle) ++ return 0; ++ ++ file_system = grub_efi_open_protocol (dev_handle, &simple_file_system_guid, ++ GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL); ++ ++ if (!file_system) ++ return 0; ++ ++ status = Call_Service_2 (file_system->open_volume, file_system, &root); ++ ++ if (status != GRUB_EFI_SUCCESS) ++ return 0; ++ ++ return 1; ++} ++ ++int ++uefi_dir (char *dirname) ++{ ++ grub_efi_status_t status; ++ grub_efi_char16_t *file_name_w = NULL; ++ grub_efi_char16_t *dir_name_w = NULL; ++ grub_efi_file_info_t *fileinfo = NULL; ++ grub_efi_uintn_t buffersize = 0; ++ grub_efi_file_t *directory = NULL; ++ int i, dirlen = 0, ret = 0; ++ ++ file_name_w = grub_malloc (2 * strlen(dirname) + 2); ++ if (!file_name_w) ++ goto done; ++ ++ for (i=0; i<strlen(dirname); i++) { ++ file_name_w[i] = dirname[i]; ++ if (file_name_w[i] == '/') { ++ file_name_w[i] = '\'; ++ dirlen = i; ++ } ++ } ++ ++ file_name_w[i] = '\0'; ++ ++ status = Call_Service_5 (root->open, root, &file, file_name_w, ++ GRUB_EFI_FILE_MODE_READ, 0); ++ ++ if (status != GRUB_EFI_SUCCESS) ++ goto done; ++ ++ if (dirname[i-1] == '/') { ++ if (print_possibilities) ++ grub_printf("\n"); ++ ++ while (1) { ++ int filenamelen; ++ ++ status = Call_Service_3 (file->read, file, &buffersize, fileinfo); ++ ++ if (status == GRUB_EFI_BUFFER_TOO_SMALL) { ++ fileinfo = grub_malloc(buffersize); ++ continue; ++ } else if (status) { ++ goto done; ++ } else if (buffersize == 0) { ++ ret = 1; ++ if (print_possibilities) ++ grub_printf("\n"); ++ goto done; ++ } ++ ++ filenamelen = fileinfo->size - sizeof(*fileinfo); ++ ++ if (print_possibilities) { ++ for (i=0; i<filenamelen/2; i++) ++ grub_printf("%c", (char)fileinfo->filename[i]); ++ } ++ grub_printf(" "); ++ } ++ } else { ++ char *data = NULL; ++ dir_name_w = grub_malloc (2 * dirlen + 2); ++ if (!dir_name_w) ++ goto done; ++ ++ for (i=0; i<dirlen; i++) ++ dir_name_w[i] = file_name_w[i]; ++ ++ dir_name_w[i] = '\0'; ++ ++ status = Call_Service_5 (root->open, root, &directory, dir_name_w, ++ GRUB_EFI_FILE_MODE_READ, 0); ++ ++ while (1) { ++ int filenamelen; ++ int invalid = 0; ++ ++ status = Call_Service_3 (directory->read, directory, &buffersize, fileinfo); ++ ++ if (status == GRUB_EFI_BUFFER_TOO_SMALL) { ++ fileinfo = grub_malloc(buffersize); ++ continue; ++ } else if (status) { ++ goto done; ++ } else if (buffersize == 0) { ++ goto done; ++ } ++ ++ filenamelen = fileinfo->size - sizeof(*fileinfo); ++ ++ if (filenamelen != ((strlen(dirname) - dirlen) * 2)) ++ continue; ++ ++ for (i=0; i<filenamelen/2; i++) { ++ if (fileinfo->filename[i] != file_name_w[i + dirlen + 1]) { ++ if (fileinfo->filename[i] > 0xff || ++ (grub_tolower(fileinfo->filename[i]) != ++ grub_tolower(file_name_w[i + dirlen + 1]))) ++ invalid = 1; ++ } ++ } ++ ++ if (!invalid) ++ break; ++ } ++ ++ if (fileinfo->filesize < 256 && fileinfo->filesize > 3) ++ { ++ data = grub_malloc(fileinfo->filesize); ++ filepos = 0; ++ ++ uefi_read(data, fileinfo->filesize); ++ ++ /* ++ * UEFI doesn't really support symlinks. Apple's UEFI driver exposes ++ * them as files containing the path of the target. This provides ++ * hacky support in the absence of a real driver. ++ */ ++ if (data[0] == '.' && data[1] == '.' && data[2] == '/') ++ { ++ int j; ++ char *tmpdir = grub_malloc(dirlen + fileinfo->filesize); ++ ++ for (j=0; j<dirlen+1; j++) ++ tmpdir[j] = dirname[j]; ++ for (j=0; j<fileinfo->filesize; j++) ++ tmpdir[j+dirlen+1] = data[j]; ++ tmpdir[j+dirlen+1] = '\0'; ++ ++ /* Open the new file */ ++ ret = uefi_dir(tmpdir); ++ grub_free (tmpdir); ++ grub_free (data); ++ goto done; ++ } ++ } ++ ++ if (data) ++ grub_free(data); ++ ret = 1; ++ filemax = fileinfo->filesize; ++ filepos = 0; ++ } ++ ++ done: ++ if (fileinfo) ++ grub_free (fileinfo); ++ if (dir_name_w) ++ grub_free (dir_name_w); ++ if (file_name_w) ++ grub_free (file_name_w); ++ ++ return ret; ++} ++ ++void ++uefi_close (void) ++{ ++ grub_efi_status_t status = 0; ++ ++ if (file) ++ status = Call_Service_1 (file->close, file); ++ ++ file = NULL; ++} ++ ++int ++uefi_read (char *addr, int len) ++{ ++ grub_efi_status_t status; ++ grub_efi_uintn_t length = len; ++ ++ errnum = 0; ++ ++ status = Call_Service_2 (file->set_position, file, filepos); ++ ++ if (status != GRUB_EFI_SUCCESS) ++ goto out; ++ ++ status = Call_Service_3 (file->read, file, &length, addr); ++ ++ len = length; ++ ++ if (status == GRUB_EFI_SUCCESS) { ++ filepos += len; ++ return len; ++ } ++ ++ out: ++ errnum = ERR_FILE_NOT_FOUND; ++ ++ return 0; ++} ++#endif +diff --git a/stage2/fsys_vstafs.c b/stage2/fsys_vstafs.c +index a116717..652e784 100644 +--- a/stage2/fsys_vstafs.c ++++ b/stage2/fsys_vstafs.c +@@ -30,8 +30,8 @@ static struct dir_entry *vstafs_nextdir (void); + + + #define FIRST_SECTOR ((struct first_sector *) FSYS_BUF) +-#define FILE_INFO ((struct fs_file *) (int) FIRST_SECTOR + 8192) +-#define DIRECTORY_BUF ((struct dir_entry *) (int) FILE_INFO + 512) ++#define FILE_INFO ((struct fs_file *) (unsigned long) FIRST_SECTOR + 8192) ++#define DIRECTORY_BUF ((struct dir_entry *) (unsigned long) FILE_INFO + 512) + + #define ROOT_SECTOR 1 + +@@ -186,35 +186,35 @@ vstafs_dir (char *dirname) + int + vstafs_read (char *addr, int len) + { +- struct alloc *a; ++ struct alloc *al; + int size, ret = 0, offset, curr_len = 0; +- int curr_ext; ++ int this_ext; + char extent; + int ext_size; + char *curr_pos; + + get_file_info (f_sector); + size = FILE_INFO->len-VSTAFS_START_DATA; +- a = FILE_INFO->blocks; ++ al = FILE_INFO->blocks; + + if (filepos > 0) + { +- if (filepos < a[0].a_len * 512 - VSTAFS_START_DATA) ++ if (filepos < al[0].a_len * 512 - VSTAFS_START_DATA) + { + offset = filepos + VSTAFS_START_DATA; + extent = 0; +- curr_len = a[0].a_len * 512 - offset - filepos; ++ curr_len = al[0].a_len * 512 - offset - filepos; + } + else + { +- ext_size = a[0].a_len * 512 - VSTAFS_START_DATA; ++ ext_size = al[0].a_len * 512 - VSTAFS_START_DATA; + offset = filepos - ext_size; + extent = 1; + do + { + curr_len -= ext_size; + offset -= ext_size; +- ext_size = a[extent+1].a_len * 512; ++ ext_size = al[extent+1].a_len * 512; + } + while (extent < FILE_INFO->extents && offset>ext_size); + } +@@ -223,16 +223,16 @@ vstafs_read (char *addr, int len) + { + offset = VSTAFS_START_DATA; + extent = 0; +- curr_len = a[0].a_len * 512 - offset; ++ curr_len = al[0].a_len * 512 - offset; + } + + curr_pos = addr; + if (curr_len > len) + curr_len = len; + +- for (curr_ext=extent; +- curr_ext < FILE_INFO->extents; +- curr_len = a[curr_ext].a_len * 512, curr_pos += curr_len, curr_ext++) ++ for (this_ext=extent; ++ this_ext < FILE_INFO->extents; ++ curr_len = al[this_ext].a_len * 512, curr_pos += curr_len, this_ext++) + { + ret += curr_len; + size -= curr_len; +@@ -242,7 +242,7 @@ vstafs_read (char *addr, int len) + curr_len += size; + } + +- devread (a[curr_ext].a_start,offset, curr_len, curr_pos); ++ devread (al[this_ext].a_start,offset, curr_len, curr_pos); + offset = 0; + } + +diff --git a/stage2/fsys_xfs.c b/stage2/fsys_xfs.c +index 76c4c13..226e343 100644 +--- a/stage2/fsys_xfs.c ++++ b/stage2/fsys_xfs.c +@@ -97,19 +97,23 @@ ino2offset (xfs_ino_t ino) + return ino & XFS_INO_MASK(XFS_INO_OFFSET_BITS); + } + +-static inline __const__ xfs_uint16_t +-le16 (xfs_uint16_t x) ++static inline xfs_uint16_t __attribute__((__const__)) ++le16 (xfs_uint16_t x) + { ++#if 1 ++ return ((x & 0xff00) >> 8) | ((x & 0xff) << 8); ++#else + __asm__("xchgb %b0,%h0" \ + : "=q" (x) \ + : "0" (x)); \ + return x; ++#endif + } + +-static inline __const__ xfs_uint32_t ++static inline xfs_uint32_t __attribute__((__const__)) + le32 (xfs_uint32_t x) + { +-#if 0 ++#if 1 + /* 386 doesn't have bswap. */ + __asm__("bswap %0" : "=r" (x) : "0" (x)); + #else +@@ -122,7 +126,7 @@ le32 (xfs_uint32_t x) + return x; + } + +-static inline __const__ xfs_uint64_t ++static inline xfs_uint64_t __attribute__((__const__)) + le64 (xfs_uint64_t x) + { + xfs_uint32_t h = x >> 32; +@@ -187,12 +191,12 @@ fsb2daddr (xfs_fsblock_t fsbno) + } + + #undef offsetof +-#define offsetof(t,m) ((int)&(((t *)0)->m)) ++#define offsetof(t,m) __builtin_offsetof(t, m) + +-static inline int ++static inline xfs_uint64_t + btroot_maxrecs (void) + { +- int tmp = icore.di_forkoff ? (icore.di_forkoff << 3) : xfs.isize; ++ xfs_uint64_t tmp = icore.di_forkoff ? (icore.di_forkoff << 3) : xfs.isize; + + return (tmp - sizeof(xfs_bmdr_block_t) - offsetof(xfs_dinode_t, di_u)) / + (sizeof (xfs_bmbt_key_t) + sizeof (xfs_bmbt_ptr_t)); +@@ -465,7 +469,7 @@ xfs_mount (void) + + xfs.bsize = le32 (super.sb_blocksize); + xfs.blklog = super.sb_blocklog; +- xfs.bdlog = xfs.blklog - SECTOR_BITS; ++ xfs.bdlog = xfs.blklog - get_sector_bits(current_drive); + xfs.rootino = le64 (super.sb_rootino); + xfs.isize = le16 (super.sb_inodesize); + xfs.agblocks = le32 (super.sb_agblocks); +diff --git a/stage2/gpt.h b/stage2/gpt.h +new file mode 100644 +index 0000000..ad6d8f1 +--- /dev/null ++++ b/stage2/gpt.h +@@ -0,0 +1,69 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2002,2005,2006 Free Software Foundation, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#ifndef _GPT_H ++#define _GPT_H ++ ++typedef signed char grub_int8_t; ++typedef signed short grub_int16_t; ++typedef signed int grub_int32_t; ++typedef signed long long int grub_int64_t; ++typedef unsigned char grub_uint8_t; ++typedef unsigned short grub_uint16_t; ++typedef unsigned int grub_uint32_t; ++typedef unsigned long long int grub_uint64_t; ++ ++struct grub_gpt_header ++{ ++ grub_uint64_t magic; ++ grub_uint32_t version; ++ grub_uint32_t headersize; ++ grub_uint32_t crc32; ++ grub_uint32_t unused1; ++ grub_uint64_t primary; ++ grub_uint64_t backup; ++ grub_uint64_t start; ++ grub_uint64_t end; ++ grub_uint8_t guid[16]; ++ grub_uint64_t partitions; ++ grub_uint32_t maxpart; ++ grub_uint32_t partentry_size; ++ grub_uint32_t partentry_crc32; ++} __attribute__ ((packed)); ++ ++struct grub_gpt_partentry ++{ ++ grub_uint64_t type1; ++ grub_uint64_t type2; ++ grub_uint8_t guid[16]; ++ grub_uint64_t start; ++ grub_uint64_t end; ++ grub_uint8_t attrib; ++ char name[72]; ++} __attribute__ ((packed)); ++ ++#define GPT_HEADER_MAGIC 0x5452415020494645ULL ++ ++#define GPT_ENTRY_SECTOR(drive,size,entry) \ ++ ((((entry) * (size) + 1) & ~(get_sector_size(drive) - 1)) \ ++ >> get_sector_bits(drive)) ++#define GPT_ENTRY_INDEX(drive, size,entry) \ ++ ((((entry) * (size) + 1) & (get_sector_size(drive) - 1)) - 1) ++ ++#endif /* _GPT_H */ +diff --git a/stage2/graphics.c b/stage2/graphics.c +new file mode 100644 +index 0000000..81109ae +--- /dev/null ++++ b/stage2/graphics.c +@@ -0,0 +1,573 @@ ++/* graphics.c - graphics mode support for GRUB */ ++/* Implemented as a terminal type by Jeremy Katz katzj@redhat.com based ++ * on a patch by Paulo César Pereira de Andrade pcpa@conectiva.com.br ++ */ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2001,2002 Red Hat, Inc. ++ * Portions copyright (C) 2000 Conectiva, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++ ++ ++#ifdef SUPPORT_GRAPHICS ++ ++#include <term.h> ++#include <shared.h> ++#include <graphics.h> ++ ++int saved_videomode; ++unsigned char *font8x16; ++ ++int graphics_inited = 0; ++static char splashimage[64]; ++ ++#define VSHADOW VSHADOW1 ++unsigned char VSHADOW1[38400]; ++unsigned char VSHADOW2[38400]; ++unsigned char VSHADOW4[38400]; ++unsigned char VSHADOW8[38400]; ++ ++/* constants to define the viewable area */ ++const int x0 = 0; ++const int x1 = 80; ++const int y0 = 0; ++const int y1 = 30; ++ ++/* text buffer has to be kept around so that we can write things as we ++ * scroll and the like */ ++unsigned short text[80 * 30]; ++ ++/* why do these have to be kept here? */ ++int foreground = (63 << 16) | (63 << 8) | (63), background = 0, border = 0; ++ ++/* current position */ ++static int fontx = 0; ++static int fonty = 0; ++ ++/* global state so that we don't try to recursively scroll or cursor */ ++static int no_scroll = 0; ++ ++/* color state */ ++static int graphics_standard_color = A_NORMAL; ++static int graphics_normal_color = A_NORMAL; ++static int graphics_highlight_color = A_REVERSE; ++static int graphics_current_color = A_NORMAL; ++static color_state graphics_color_state = COLOR_STATE_STANDARD; ++ ++ ++/* graphics local functions */ ++static void graphics_setxy(int col, int row); ++static void graphics_scroll(void); ++ ++/* FIXME: where do these really belong? */ ++static inline void outb(unsigned short port, unsigned char val) ++{ ++ __asm __volatile ("outb %0,%1"::"a" (val), "d" (port)); ++} ++ ++static void MapMask(int value) { ++ outb(0x3c4, 2); ++ outb(0x3c5, value); ++} ++ ++/* bit mask register */ ++static void BitMask(int value) { ++ outb(0x3ce, 8); ++ outb(0x3cf, value); ++} ++ ++ ++ ++/* Set the splash image */ ++void graphics_set_splash(char *splashfile) { ++ grub_strcpy(splashimage, splashfile); ++} ++ ++/* Get the current splash image */ ++char *graphics_get_splash(void) { ++ return splashimage; ++} ++ ++/* Initialize a vga16 graphics display with the palette based off of ++ * the image in splashimage. If the image doesn't exist, leave graphics ++ * mode. */ ++int graphics_init() ++{ ++ if (!read_image(splashimage)) { ++ current_term = term_table; ++ grub_printf("failed to read image\n"); ++ return 0; ++ } ++ ++ font8x16 = (unsigned char*)graphics_get_font(); ++ ++ graphics_inited = 1; ++ ++ /* make sure that the highlight color is set correctly */ ++ graphics_highlight_color = ((graphics_normal_color >> 4) | ++ ((graphics_normal_color & 0xf) << 4)); ++ ++ return 1; ++} ++ ++/* Leave graphics mode */ ++void graphics_end(void) ++{ ++ if (graphics_inited) { ++ set_videomode(saved_videomode); ++ graphics_inited = 0; ++ } ++} ++ ++/* Print ch on the screen. Handle any needed scrolling or the like */ ++void graphics_putchar(int ch) { ++ ch &= 0xff; ++ ++ graphics_cursor(0); ++ ++ if (ch == '\n') { ++ if (fonty + 1 < y1) ++ graphics_setxy(fontx, fonty + 1); ++ else ++ graphics_scroll(); ++ graphics_cursor(1); ++ return; ++ } else if (ch == '\r') { ++ graphics_setxy(x0, fonty); ++ graphics_cursor(1); ++ return; ++ } ++ ++ graphics_cursor(0); ++ ++ text[fonty * 80 + fontx] = ch; ++ text[fonty * 80 + fontx] &= 0x00ff; ++ if (graphics_current_color & 0xf0) ++ text[fonty * 80 + fontx] |= 0x100; ++ ++ graphics_cursor(0); ++ ++ if ((fontx + 1) >= x1) { ++ graphics_setxy(x0, fonty); ++ if (fonty + 1 < y1) ++ graphics_setxy(x0, fonty + 1); ++ else ++ graphics_scroll(); ++ } else { ++ graphics_setxy(fontx + 1, fonty); ++ } ++ ++ graphics_cursor(1); ++} ++ ++/* get the current location of the cursor */ ++int graphics_getxy(void) { ++ return (fontx << 8) | fonty; ++} ++ ++void graphics_gotoxy(int x, int y) { ++ graphics_cursor(0); ++ ++ graphics_setxy(x, y); ++ ++ graphics_cursor(1); ++} ++ ++void graphics_cls(void) { ++ int i; ++ unsigned char *mem, *s1, *s2, *s4, *s8; ++ ++ graphics_cursor(0); ++ graphics_gotoxy(x0, y0); ++ ++ mem = (unsigned char*)VIDEOMEM; ++ s1 = (unsigned char*)VSHADOW1; ++ s2 = (unsigned char*)VSHADOW2; ++ s4 = (unsigned char*)VSHADOW4; ++ s8 = (unsigned char*)VSHADOW8; ++ ++ for (i = 0; i < 80 * 30; i++) ++ text[i] = ' '; ++ graphics_cursor(1); ++ ++ BitMask(0xff); ++ ++ /* plano 1 */ ++ MapMask(1); ++ grub_memcpy(mem, s1, 38400); ++ ++ /* plano 2 */ ++ MapMask(2); ++ grub_memcpy(mem, s2, 38400); ++ ++ /* plano 3 */ ++ MapMask(4); ++ grub_memcpy(mem, s4, 38400); ++ ++ /* plano 4 */ ++ MapMask(8); ++ grub_memcpy(mem, s8, 38400); ++ ++ MapMask(15); ++ ++} ++ ++void graphics_setcolorstate (color_state state) { ++ switch (state) { ++ case COLOR_STATE_STANDARD: ++ graphics_current_color = graphics_standard_color; ++ break; ++ case COLOR_STATE_NORMAL: ++ graphics_current_color = graphics_normal_color; ++ break; ++ case COLOR_STATE_HIGHLIGHT: ++ graphics_current_color = graphics_highlight_color; ++ break; ++ default: ++ graphics_current_color = graphics_standard_color; ++ break; ++ } ++ ++ graphics_color_state = state; ++} ++ ++void graphics_setcolor (int normal_color, int highlight_color) { ++ graphics_normal_color = normal_color; ++ graphics_highlight_color = highlight_color; ++ ++ graphics_setcolorstate (graphics_color_state); ++} ++ ++int graphics_setcursor (int on) { ++ /* FIXME: we don't have a cursor in graphics */ ++ return 0; ++} ++ ++/* Open the file, and search for a valid XPM header. Return 1 if one is found, ++ * leaving the current position as the start of the next line. Else, ++ * return 0. ++ */ ++static int xpm_open(char *s) { ++ char buf, prev, target[]="/* XPM */\n"; ++ int pos=0; ++ ++ if (!grub_open(s)) ++ return 0; ++ ++ prev='\n'; ++ buf=0; ++ do { ++ if (grub_read(&buf, 1) != 1) { ++ grub_close(); ++ return 0; ++ } ++ if ((pos == 0 && prev == '\n') || pos > 0) { ++ if (buf == target[pos]) ++ pos++; ++ else ++ pos=0; ++ } ++ prev=buf; ++ } while (target[pos]); ++ return 1; ++} ++ ++/* Read in the splashscreen image and set the palette up appropriately. ++ * Format of splashscreen is an xpm (can be gzipped) with 16 colors and ++ * 640x480. */ ++int read_image(char *s) ++{ ++ char buf[32], pal[16]; ++ unsigned char c, base, mask, *s1, *s2, *s4, *s8; ++ unsigned i, len, idx, colors, x, y, width, height; ++ ++ if (!xpm_open(s)) ++ return 0; ++ ++ saved_videomode = set_videomode(0x12); ++ ++ /* parse info */ ++ while (grub_read(&c, 1)) { ++ if (c == '"') ++ break; ++ } ++ ++ while (grub_read(&c, 1) && (c == ' ' || c == '\t')) ++ ; ++ ++ i = 0; ++ width = c - '0'; ++ while (grub_read(&c, 1)) { ++ if (c >= '0' && c <= '9') ++ width = width * 10 + c - '0'; ++ else ++ break; ++ } ++ while (grub_read(&c, 1) && (c == ' ' || c == '\t')) ++ ; ++ ++ height = c - '0'; ++ while (grub_read(&c, 1)) { ++ if (c >= '0' && c <= '9') ++ height = height * 10 + c - '0'; ++ else ++ break; ++ } ++ while (grub_read(&c, 1) && (c == ' ' || c == '\t')) ++ ; ++ ++ colors = c - '0'; ++ while (grub_read(&c, 1)) { ++ if (c >= '0' && c <= '9') ++ colors = colors * 10 + c - '0'; ++ else ++ break; ++ } ++ ++ base = 0; ++ while (grub_read(&c, 1) && c != '"') ++ ; ++ ++ /* palette */ ++ for (i = 0, idx = 1; i < colors; i++) { ++ len = 0; ++ ++ while (grub_read(&c, 1) && c != '"') ++ ; ++ grub_read(&c, 1); /* char */ ++ base = c; ++ grub_read(buf, 4); /* \t c # */ ++ ++ while (grub_read(&c, 1) && c != '"') { ++ if (len < sizeof(buf)) ++ buf[len++] = c; ++ } ++ ++ if (len == 6 && idx < 15) { ++ int r = ((hex(buf[0]) << 4) | hex(buf[1])) >> 2; ++ int g = ((hex(buf[2]) << 4) | hex(buf[3])) >> 2; ++ int b = ((hex(buf[4]) << 4) | hex(buf[5])) >> 2; ++ ++ pal[idx] = base; ++ graphics_set_palette(idx, r, g, b); ++ ++idx; ++ } ++ } ++ ++ x = y = len = 0; ++ ++ s1 = (unsigned char*)VSHADOW1; ++ s2 = (unsigned char*)VSHADOW2; ++ s4 = (unsigned char*)VSHADOW4; ++ s8 = (unsigned char*)VSHADOW8; ++ ++ for (i = 0; i < 38400; i++) ++ s1[i] = s2[i] = s4[i] = s8[i] = 0; ++ ++ /* parse xpm data */ ++ while (y < height) { ++ while (1) { ++ if (!grub_read(&c, 1)) { ++ grub_close(); ++ return 0; ++ } ++ if (c == '"') ++ break; ++ } ++ ++ while (grub_read(&c, 1) && c != '"') { ++ for (i = 1; i < 15; i++) ++ if (pal[i] == c) { ++ c = i; ++ break; ++ } ++ ++ mask = 0x80 >> (x & 7); ++ if (c & 1) ++ s1[len + (x >> 3)] |= mask; ++ if (c & 2) ++ s2[len + (x >> 3)] |= mask; ++ if (c & 4) ++ s4[len + (x >> 3)] |= mask; ++ if (c & 8) ++ s8[len + (x >> 3)] |= mask; ++ ++ if (++x >= 640) { ++ x = 0; ++ ++ if (y < 480) ++ len += 80; ++ ++y; ++ } ++ } ++ } ++ ++ grub_close(); ++ ++ graphics_set_palette(0, (background >> 16), (background >> 8) & 63, ++ background & 63); ++ graphics_set_palette(15, (foreground >> 16), (foreground >> 8) & 63, ++ foreground & 63); ++ graphics_set_palette(0x11, (border >> 16), (border >> 8) & 63, ++ border & 63); ++ ++ return 1; ++} ++ ++ ++/* Convert a character which is a hex digit to the appropriate integer */ ++int hex(int v) ++{ ++ if (v >= 'A' && v <= 'F') ++ return (v - 'A' + 10); ++ if (v >= 'a' && v <= 'f') ++ return (v - 'a' + 10); ++ return (v - '0'); ++} ++ ++ ++/* move the graphics cursor location to col, row */ ++static void graphics_setxy(int col, int row) { ++ if (col >= x0 && col < x1) { ++ fontx = col; ++ cursorX = col << 3; ++ } ++ if (row >= y0 && row < y1) { ++ fonty = row; ++ cursorY = row << 4; ++ } ++} ++ ++/* scroll the screen */ ++static void graphics_scroll(void) { ++ int i, j; ++ ++ /* we don't want to scroll recursively... that would be bad */ ++ if (no_scroll) ++ return; ++ no_scroll = 1; ++ ++ /* move everything up a line */ ++ for (j = y0 + 1; j < y1; j++) { ++ graphics_gotoxy(x0, j - 1); ++ for (i = x0; i < x1; i++) { ++ graphics_putchar(text[j * 80 + i]); ++ } ++ } ++ ++ /* last line should be blank */ ++ graphics_gotoxy(x0, y1 - 1); ++ for (i = x0; i < x1; i++) ++ graphics_putchar(' '); ++ graphics_setxy(x0, y1 - 1); ++ ++ no_scroll = 0; ++} ++ ++ ++void graphics_cursor(int set) { ++ unsigned char *pat, *mem, *ptr, chr[16 << 2]; ++ int i, ch, invert, offset; ++ ++ if (set && no_scroll) ++ return; ++ ++ offset = cursorY * 80 + fontx; ++ ch = text[fonty * 80 + fontx] & 0xff; ++ invert = (text[fonty * 80 + fontx] & 0xff00) != 0; ++ pat = font8x16 + (ch << 4); ++ ++ mem = (unsigned char*)VIDEOMEM + offset; ++ ++ if (!set) { ++ for (i = 0; i < 16; i++) { ++ unsigned char mask = pat[i]; ++ ++ if (!invert) { ++ chr[i ] = ((unsigned char*)VSHADOW1)[offset]; ++ chr[16 + i] = ((unsigned char*)VSHADOW2)[offset]; ++ chr[32 + i] = ((unsigned char*)VSHADOW4)[offset]; ++ chr[48 + i] = ((unsigned char*)VSHADOW8)[offset]; ++ ++ /* FIXME: if (shade) */ ++ if (1) { ++ if (ch == DISP_VERT || ch == DISP_LL || ++ ch == DISP_UR || ch == DISP_LR) { ++ unsigned char pmask = ~(pat[i] >> 1); ++ ++ chr[i ] &= pmask; ++ chr[16 + i] &= pmask; ++ chr[32 + i] &= pmask; ++ chr[48 + i] &= pmask; ++ } ++ if (i > 0 && ch != DISP_VERT) { ++ unsigned char pmask = ~(pat[i - 1] >> 1); ++ ++ chr[i ] &= pmask; ++ chr[16 + i] &= pmask; ++ chr[32 + i] &= pmask; ++ chr[48 + i] &= pmask; ++ if (ch == DISP_HORIZ || ch == DISP_UR || ch == DISP_LR) { ++ pmask = ~pat[i - 1]; ++ ++ chr[i ] &= pmask; ++ chr[16 + i] &= pmask; ++ chr[32 + i] &= pmask; ++ chr[48 + i] &= pmask; ++ } ++ } ++ } ++ chr[i ] |= mask; ++ chr[16 + i] |= mask; ++ chr[32 + i] |= mask; ++ chr[48 + i] |= mask; ++ ++ offset += 80; ++ } ++ else { ++ chr[i ] = ~mask; ++ chr[16 + i] = ~mask; ++ chr[32 + i] = ~mask; ++ chr[48 + i] = ~mask; ++ } ++ } ++ } ++ else { ++ MapMask(15); ++ ptr = mem; ++ for (i = 0; i < 16; i++, ptr += 80) { ++ cursorBuf[i] = pat[i]; ++ *ptr = ~pat[i]; ++ } ++ return; ++ } ++ ++ offset = 0; ++ for (i = 1; i < 16; i <<= 1, offset += 16) { ++ int j; ++ ++ MapMask(i); ++ ptr = mem; ++ for (j = 0; j < 16; j++, ptr += 80) ++ *ptr = chr[j + offset]; ++ } ++ ++ MapMask(15); ++} ++ ++#endif /* SUPPORT_GRAPHICS */ +diff --git a/stage2/graphics.h b/stage2/graphics.h +new file mode 100644 +index 0000000..a4cd9e8 +--- /dev/null ++++ b/stage2/graphics.h +@@ -0,0 +1,42 @@ ++/* graphics.h - graphics console interface */ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2002 Free Software Foundation, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#ifndef GRAPHICS_H ++#define GRAPHICS_H ++ ++/* magic constant */ ++#define VIDEOMEM 0xA0000 ++ ++/* function prototypes */ ++char *graphics_get_splash(void); ++ ++int read_image(char *s); ++void graphics_cursor(int set); ++ ++/* function prototypes for asm functions */ ++void * graphics_get_font(); ++void graphics_set_palette(int idx, int red, int green, int blue); ++void set_int1c_handler(); ++void unset_int1c_handler(); ++ ++extern short cursorX, cursorY; ++extern char cursorBuf[16]; ++ ++#endif /* GRAPHICS_H */ +diff --git a/stage2/gunzip.c b/stage2/gunzip.c +index 8835089..45a2312 100644 +--- a/stage2/gunzip.c ++++ b/stage2/gunzip.c +@@ -141,7 +141,7 @@ static int gzip_filepos; + static int gzip_filemax; + static int gzip_fsmax; + static int saved_filepos; +-static unsigned long gzip_crc; ++static unsigned int gzip_crc; + + /* internal extra variables for use of inflate code */ + static int block_type; +@@ -169,7 +169,14 @@ linalloc (int size) + static void + reset_linalloc (void) + { ++#ifdef PLATFORM_EFI ++ unsigned int top = (mbi.mem_upper << 10) + 0x100000; ++ if (top > GRUB_SCRATCH_MEM_SIZE) ++ top = GRUB_SCRATCH_MEM_SIZE; ++ linalloc_topaddr = RAW_ADDR (top); ++#else + linalloc_topaddr = RAW_ADDR ((mbi.mem_upper << 10) + 0x100000); ++#endif + } + + +@@ -253,7 +260,7 @@ bad_field (int len) + + typedef unsigned char uch; + typedef unsigned short ush; +-typedef unsigned long ulg; ++typedef unsigned int ulg; + + /* + * Window Size +@@ -316,8 +323,8 @@ gunzip_test_header (void) + return 0; + } + +- gzip_crc = *((unsigned long *) buf); +- gzip_fsmax = gzip_filemax = *((unsigned long *) (buf + 4)); ++ gzip_crc = *((unsigned int *) buf); ++ gzip_fsmax = gzip_filemax = *((unsigned int *) (buf + 4)); + + initialize_tables (); + +diff --git a/stage2/iso9660.h b/stage2/iso9660.h +index 4a6a8cc..c311ecf 100644 +--- a/stage2/iso9660.h ++++ b/stage2/iso9660.h +@@ -73,11 +73,11 @@ typedef union { + + typedef struct __iso_16bit { + u_int16_t l, b; +-} iso_16bit_t __attribute__ ((packed)); ++} iso_16bit_t; + + typedef struct __iso_32bit { + u_int32_t l, b; +-} iso_32bit_t __attribute__ ((packed)); ++} iso_32bit_t; + + typedef u_int8_t iso_date_t[7]; + +diff --git a/stage2/mb_info.h b/stage2/mb_info.h +index 1e1e63b..3a8dcfb 100644 +--- a/stage2/mb_info.h ++++ b/stage2/mb_info.h +@@ -44,10 +44,10 @@ struct mod_list + + struct AddrRangeDesc + { +- unsigned long size; ++ unsigned int size; + unsigned long long BaseAddr; + unsigned long long Length; +- unsigned long Type; ++ unsigned int Type; + + /* unspecified optional padding... */ + } __attribute__ ((packed)); +diff --git a/stage2/pc_slice.h b/stage2/pc_slice.h +index a38d97f..2206e82 100644 +--- a/stage2/pc_slice.h ++++ b/stage2/pc_slice.h +@@ -38,50 +38,50 @@ + */ + + #define PC_MBR_CHECK_SIG(mbr_ptr) \ +- ( *( (unsigned short *) (((int) mbr_ptr) + PC_MBR_SIG_OFFSET) ) \ ++ ( *( (unsigned short *) (((unsigned long) mbr_ptr) + PC_MBR_SIG_OFFSET) ) \ + == PC_MBR_SIGNATURE ) + + #define PC_MBR_SIG(mbr_ptr) \ +- ( *( (unsigned short *) (((int) mbr_ptr) + PC_MBR_SIG_OFFSET) ) ) ++ ( *( (unsigned short *) (((unsigned long) mbr_ptr) + PC_MBR_SIG_OFFSET) ) ) + + #define PC_SLICE_FLAG(mbr_ptr, part) \ +- ( *( (unsigned char *) (((int) mbr_ptr) + PC_SLICE_OFFSET \ ++ ( *( (unsigned char *) (((unsigned long) mbr_ptr) + PC_SLICE_OFFSET \ + + (part << 4)) ) ) + + #define PC_SLICE_HEAD(mbr_ptr, part) \ +- ( *( (unsigned char *) (((int) mbr_ptr) + PC_SLICE_OFFSET + 1 \ ++ ( *( (unsigned char *) (((unsigned long) mbr_ptr) + PC_SLICE_OFFSET + 1 \ + + (part << 4)) ) ) + + #define PC_SLICE_SEC(mbr_ptr, part) \ +- ( *( (unsigned char *) (((int) mbr_ptr) + PC_SLICE_OFFSET + 2 \ ++ ( *( (unsigned char *) (((unsigned long) mbr_ptr) + PC_SLICE_OFFSET + 2 \ + + (part << 4)) ) ) + + #define PC_SLICE_CYL(mbr_ptr, part) \ +- ( *( (unsigned char *) (((int) mbr_ptr) + PC_SLICE_OFFSET + 3 \ ++ ( *( (unsigned char *) (((unsigned long) mbr_ptr) + PC_SLICE_OFFSET + 3 \ + + (part << 4)) ) ) + + #define PC_SLICE_TYPE(mbr_ptr, part) \ +- ( *( (unsigned char *) (((int) mbr_ptr) + PC_SLICE_OFFSET + 4 \ ++ ( *( (unsigned char *) (((unsigned long) mbr_ptr) + PC_SLICE_OFFSET + 4 \ + + (part << 4)) ) ) + + #define PC_SLICE_EHEAD(mbr_ptr, part) \ +- ( *( (unsigned char *) (((int) mbr_ptr) + PC_SLICE_OFFSET + 5 \ ++ ( *( (unsigned char *) (((unsigned long) mbr_ptr) + PC_SLICE_OFFSET + 5 \ + + (part << 4)) ) ) + + #define PC_SLICE_ESEC(mbr_ptr, part) \ +- ( *( (unsigned char *) (((int) mbr_ptr) + PC_SLICE_OFFSET + 6 \ ++ ( *( (unsigned char *) (((unsigned long) mbr_ptr) + PC_SLICE_OFFSET + 6 \ + + (part << 4)) ) ) + + #define PC_SLICE_ECYL(mbr_ptr, part) \ +- ( *( (unsigned char *) (((int) mbr_ptr) + PC_SLICE_OFFSET + 7 \ ++ ( *( (unsigned char *) (((unsigned long) mbr_ptr) + PC_SLICE_OFFSET + 7 \ + + (part << 4)) ) ) + + #define PC_SLICE_START(mbr_ptr, part) \ +- ( *( (unsigned long *) (((int) mbr_ptr) + PC_SLICE_OFFSET + 8 \ ++ ( *( (unsigned int *) (((unsigned long) mbr_ptr) + PC_SLICE_OFFSET + 8 \ + + (part << 4)) ) ) + + #define PC_SLICE_LENGTH(mbr_ptr, part) \ +- ( *( (unsigned long *) (((int) mbr_ptr) + PC_SLICE_OFFSET + 12 \ ++ ( *( (unsigned int *) (((unsigned long) mbr_ptr) + PC_SLICE_OFFSET + 12 \ + + (part << 4)) ) ) + + +@@ -115,6 +115,8 @@ + #define PC_SLICE_TYPE_LINUX_EXTENDED 0x85 + #define PC_SLICE_TYPE_VSTAFS 0x9e + #define PC_SLICE_TYPE_DELL_UTIL 0xde ++#define PC_SLICE_TYPE_GPT 0xee ++#define PC_SLICE_TYPE_EFI 0xef + #define PC_SLICE_TYPE_LINUX_RAID 0xfd + + +@@ -129,7 +131,8 @@ + || _type == PC_SLICE_TYPE_FAT16_LBA \ + || _type == PC_SLICE_TYPE_FAT32 \ + || _type == PC_SLICE_TYPE_FAT32_LBA \ +- || _type == PC_SLICE_TYPE_DELL_UTIL; }) ++ || _type == PC_SLICE_TYPE_DELL_UTIL \ ++ || _type == PC_SLICE_TYPE_EFI; }) + + #define IS_PC_SLICE_TYPE_EXTENDED(type) \ + (((type) == PC_SLICE_TYPE_EXTENDED) \ +@@ -177,40 +180,40 @@ + */ + + #define BSD_LABEL_CHECK_MAG(l_ptr) \ +- ( *( (unsigned long *) (((int) l_ptr) + BSD_LABEL_MAG_OFFSET) ) \ +- == ( (unsigned long) BSD_LABEL_MAGIC ) ) ++ ( *( (unsigned int *) (((unsigned long) l_ptr) + BSD_LABEL_MAG_OFFSET) ) \ ++ == ( (unsigned int) BSD_LABEL_MAGIC ) ) + + #define BSD_LABEL_MAG(l_ptr) \ +- ( *( (unsigned long *) (((int) l_ptr) + BSD_LABEL_MAG_OFFSET) ) ) ++ ( *( (unsigned int *) (((unsigned long) l_ptr) + BSD_LABEL_MAG_OFFSET) ) ) + + #define BSD_LABEL_DTYPE(l_ptr) \ +- ( *( (unsigned short *) (((int) l_ptr) + BSD_LABEL_MAG_OFFSET + 4) ) ) ++ ( *( (unsigned short *) (((unsigned long) l_ptr) + BSD_LABEL_MAG_OFFSET + 4) ) ) + + #define BSD_LABEL_NPARTS(l_ptr) \ +- ( *( (unsigned short *) (((int) l_ptr) + BSD_LABEL_NPARTS_OFFSET) ) ) ++ ( *( (unsigned short *) (((unsigned long) l_ptr) + BSD_LABEL_NPARTS_OFFSET) ) ) + + #define BSD_PART_LENGTH(l_ptr, part) \ +- ( *( (unsigned long *) (((int) l_ptr) + BSD_PART_OFFSET \ ++ ( *( (unsigned int *) (((unsigned long) l_ptr) + BSD_PART_OFFSET \ + + (part << 4)) ) ) + + #define BSD_PART_START(l_ptr, part) \ +- ( *( (unsigned long *) (((int) l_ptr) + BSD_PART_OFFSET + 4 \ ++ ( *( (unsigned int *) (((unsigned long) l_ptr) + BSD_PART_OFFSET + 4 \ + + (part << 4)) ) ) + + #define BSD_PART_FRAG_SIZE(l_ptr, part) \ +- ( *( (unsigned long *) (((int) l_ptr) + BSD_PART_OFFSET + 8 \ ++ ( *( (unsigned int *) (((unsigned long) l_ptr) + BSD_PART_OFFSET + 8 \ + + (part << 4)) ) ) + + #define BSD_PART_TYPE(l_ptr, part) \ +- ( *( (unsigned char *) (((int) l_ptr) + BSD_PART_OFFSET + 12 \ ++ ( *( (unsigned char *) (((unsigned long) l_ptr) + BSD_PART_OFFSET + 12 \ + + (part << 4)) ) ) + + #define BSD_PART_FRAGS_PER_BLOCK(l_ptr, part) \ +- ( *( (unsigned char *) (((int) l_ptr) + BSD_PART_OFFSET + 13 \ ++ ( *( (unsigned char *) (((unsigned long) l_ptr) + BSD_PART_OFFSET + 13 \ + + (part << 4)) ) ) + + #define BSD_PART_EXTRA(l_ptr, part) \ +- ( *( (unsigned short *) (((int) l_ptr) + BSD_PART_OFFSET + 14 \ ++ ( *( (unsigned short *) (((unsigned long) l_ptr) + BSD_PART_OFFSET + 14 \ + + (part << 4)) ) ) + + +diff --git a/stage2/serial.c b/stage2/serial.c +index 16c376f..37b9532 100644 +--- a/stage2/serial.c ++++ b/stage2/serial.c +@@ -37,7 +37,7 @@ static int keep_track = 1; + + /* Hardware-dependent definitions. */ + +-#ifndef GRUB_UTIL ++#if ! defined (GRUB_UTIL) && ! defined (PLATFORM_EFI) + /* The structure for speed vs. divisor. */ + struct divisor + { +@@ -187,7 +187,7 @@ serial_hw_init (unsigned short port, unsigned int speed, + + return 1; + } +-#endif /* ! GRUB_UTIL */ ++#endif /* ! defined (GRUB_UTIL) && ! defined (PLATFORM_EFI) */ + + + /* Generic definitions. */ +diff --git a/stage2/sha256crypt.c b/stage2/sha256crypt.c +new file mode 100644 +index 0000000..db168a2 +--- /dev/null ++++ b/stage2/sha256crypt.c +@@ -0,0 +1,723 @@ ++/* SHA256-based Unix crypt implementation. ++ Released into the Public Domain by Ulrich Drepper drepper@redhat.com. ++ Adapted for grub by Miloslav Trmac mitr@redhat.com. */ ++ ++#include <stdbool.h> ++#include <stddef.h> ++ ++#include <shared.h> ++ ++typedef unsigned int uint32_t; ++typedef size_t uintptr_t; ++#define alloca(SIZE) (__builtin_alloca (SIZE)) ++#define MIN(A, B) ((A) < (B) ? (A) : (B)) ++#define MAX(A, B) ((A) > (B) ? (A) : (B)) ++ ++/* Structure to save state of computation between the single steps. */ ++struct sha256_ctx ++{ ++ uint32_t H[8]; ++ ++ uint32_t total[2]; ++ uint32_t buflen; ++ char buffer[128]; /* NB: always correctly aligned for uint32_t. */ ++}; ++ ++ ++#if 1 /* __BYTE_ORDER == __LITTLE_ENDIAN */ ++# define SWAP(n) \ ++ (((n) << 24) | (((n) & 0xff00) << 8) | (((n) >> 8) & 0xff00) | ((n) >> 24)) ++#else ++# define SWAP(n) (n) ++#endif ++ ++ ++/* This array contains the bytes used to pad the buffer to the next ++ 64-byte boundary. (FIPS 180-2:5.1.1) */ ++static const unsigned char fillbuf[64] = { 0x80, 0 /* , 0, 0, ... */ }; ++ ++ ++/* Constants for SHA256 from FIPS 180-2:4.2.2. */ ++static const uint32_t K[64] = ++ { ++ 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, ++ 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, ++ 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, ++ 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, ++ 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, ++ 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, ++ 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, ++ 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, ++ 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, ++ 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, ++ 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, ++ 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, ++ 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, ++ 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, ++ 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, ++ 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 ++ }; ++ ++ ++/* Process LEN bytes of BUFFER, accumulating context into CTX. ++ It is assumed that LEN % 64 == 0. */ ++static void ++sha256_process_block (const void *buffer, size_t len, struct sha256_ctx *ctx) ++{ ++ const uint32_t *words = buffer; ++ size_t nwords = len / sizeof (uint32_t); ++ uint32_t a = ctx->H[0]; ++ uint32_t b = ctx->H[1]; ++ uint32_t c = ctx->H[2]; ++ uint32_t d = ctx->H[3]; ++ uint32_t e = ctx->H[4]; ++ uint32_t f = ctx->H[5]; ++ uint32_t g = ctx->H[6]; ++ uint32_t h = ctx->H[7]; ++ ++ /* First increment the byte count. FIPS 180-2 specifies the possible ++ length of the file up to 2^64 bits. Here we only compute the ++ number of bytes. Do a double word increment. */ ++ ctx->total[0] += len; ++ if (ctx->total[0] < len) ++ ++ctx->total[1]; ++ ++ /* Process all bytes in the buffer with 64 bytes in each round of ++ the loop. */ ++ while (nwords > 0) ++ { ++ uint32_t W[64]; ++ uint32_t a_save = a; ++ uint32_t b_save = b; ++ uint32_t c_save = c; ++ uint32_t d_save = d; ++ uint32_t e_save = e; ++ uint32_t f_save = f; ++ uint32_t g_save = g; ++ uint32_t h_save = h; ++ unsigned int t; ++ ++ /* Operators defined in FIPS 180-2:4.1.2. */ ++#define Ch(x, y, z) ((x & y) ^ (~x & z)) ++#define Maj(x, y, z) ((x & y) ^ (x & z) ^ (y & z)) ++#define S0(x) (CYCLIC (x, 2) ^ CYCLIC (x, 13) ^ CYCLIC (x, 22)) ++#define S1(x) (CYCLIC (x, 6) ^ CYCLIC (x, 11) ^ CYCLIC (x, 25)) ++#define R0(x) (CYCLIC (x, 7) ^ CYCLIC (x, 18) ^ (x >> 3)) ++#define R1(x) (CYCLIC (x, 17) ^ CYCLIC (x, 19) ^ (x >> 10)) ++ ++ /* It is unfortunate that C does not provide an operator for ++ cyclic rotation. Hope the C compiler is smart enough. */ ++#define CYCLIC(w, s) ((w >> s) | (w << (32 - s))) ++ ++ /* Compute the message schedule according to FIPS 180-2:6.2.2 step 2. */ ++ for (t = 0; t < 16; ++t) ++ { ++ W[t] = SWAP (*words); ++ ++words; ++ } ++ for (t = 16; t < 64; ++t) ++ W[t] = R1 (W[t - 2]) + W[t - 7] + R0 (W[t - 15]) + W[t - 16]; ++ ++ /* The actual computation according to FIPS 180-2:6.2.2 step 3. */ ++ for (t = 0; t < 64; ++t) ++ { ++ uint32_t T1 = h + S1 (e) + Ch (e, f, g) + K[t] + W[t]; ++ uint32_t T2 = S0 (a) + Maj (a, b, c); ++ h = g; ++ g = f; ++ f = e; ++ e = d + T1; ++ d = c; ++ c = b; ++ b = a; ++ a = T1 + T2; ++ } ++ ++ /* Add the starting values of the context according to FIPS 180-2:6.2.2 ++ step 4. */ ++ a += a_save; ++ b += b_save; ++ c += c_save; ++ d += d_save; ++ e += e_save; ++ f += f_save; ++ g += g_save; ++ h += h_save; ++ ++ /* Prepare for the next round. */ ++ nwords -= 16; ++ } ++ ++ /* Put checksum in context given as argument. */ ++ ctx->H[0] = a; ++ ctx->H[1] = b; ++ ctx->H[2] = c; ++ ctx->H[3] = d; ++ ctx->H[4] = e; ++ ctx->H[5] = f; ++ ctx->H[6] = g; ++ ctx->H[7] = h; ++} ++ ++ ++/* Initialize structure containing state of computation. ++ (FIPS 180-2:5.3.2) */ ++static void ++sha256_init_ctx (struct sha256_ctx *ctx) ++{ ++ ctx->H[0] = 0x6a09e667; ++ ctx->H[1] = 0xbb67ae85; ++ ctx->H[2] = 0x3c6ef372; ++ ctx->H[3] = 0xa54ff53a; ++ ctx->H[4] = 0x510e527f; ++ ctx->H[5] = 0x9b05688c; ++ ctx->H[6] = 0x1f83d9ab; ++ ctx->H[7] = 0x5be0cd19; ++ ++ ctx->total[0] = ctx->total[1] = 0; ++ ctx->buflen = 0; ++} ++ ++ ++/* Process the remaining bytes in the internal buffer and the usual ++ prolog according to the standard and write the result to RESBUF. ++ ++ IMPORTANT: On some systems it is required that RESBUF is correctly ++ aligned for a 32 bits value. */ ++static void * ++sha256_finish_ctx (struct sha256_ctx *ctx, void *resbuf) ++{ ++ /* Take yet unprocessed bytes into account. */ ++ uint32_t bytes = ctx->buflen; ++ size_t pad; ++ unsigned int i; ++ ++ /* Now count remaining bytes. */ ++ ctx->total[0] += bytes; ++ if (ctx->total[0] < bytes) ++ ++ctx->total[1]; ++ ++ pad = bytes >= 56 ? 64 + 56 - bytes : 56 - bytes; ++ memcpy (&ctx->buffer[bytes], fillbuf, pad); ++ ++ /* Put the 64-bit file length in *bits* at the end of the buffer. */ ++ *(uint32_t *) &ctx->buffer[bytes + pad + 4] = SWAP (ctx->total[0] << 3); ++ *(uint32_t *) &ctx->buffer[bytes + pad] = SWAP ((ctx->total[1] << 3) | ++ (ctx->total[0] >> 29)); ++ ++ /* Process last bytes. */ ++ sha256_process_block (ctx->buffer, bytes + pad + 8, ctx); ++ ++ /* Put result from CTX in first 32 bytes following RESBUF. */ ++ for (i = 0; i < 8; ++i) ++ ((uint32_t *) resbuf)[i] = SWAP (ctx->H[i]); ++ ++ return resbuf; ++} ++ ++ ++static void ++sha256_process_bytes (const void *buffer, size_t len, struct sha256_ctx *ctx) ++{ ++ /* When we already have some bits in our internal buffer concatenate ++ both inputs first. */ ++ if (ctx->buflen != 0) ++ { ++ size_t left_over = ctx->buflen; ++ size_t add = 128 - left_over > len ? len : 128 - left_over; ++ ++ memcpy (&ctx->buffer[left_over], buffer, add); ++ ctx->buflen += add; ++ ++ if (ctx->buflen > 64) ++ { ++ sha256_process_block (ctx->buffer, ctx->buflen & ~63, ctx); ++ ++ ctx->buflen &= 63; ++ /* The regions in the following copy operation cannot overlap. */ ++ memcpy (ctx->buffer, &ctx->buffer[(left_over + add) & ~63], ++ ctx->buflen); ++ } ++ ++ buffer = (const char *) buffer + add; ++ len -= add; ++ } ++ ++ /* Process available complete blocks. */ ++ if (len >= 64) ++ { ++/* To check alignment gcc has an appropriate operator. Other ++ compilers don't. */ ++#if __GNUC__ >= 2 ++# define UNALIGNED_P(p) (((uintptr_t) p) % __alignof__ (uint32_t) != 0) ++#else ++# define UNALIGNED_P(p) (((uintptr_t) p) % sizeof (uint32_t) != 0) ++#endif ++ if (UNALIGNED_P (buffer)) ++ while (len > 64) ++ { ++ sha256_process_block (memcpy (ctx->buffer, buffer, 64), 64, ctx); ++ buffer = (const char *) buffer + 64; ++ len -= 64; ++ } ++ else ++ { ++ sha256_process_block (buffer, len & ~63, ctx); ++ buffer = (const char *) buffer + (len & ~63); ++ len &= 63; ++ } ++ } ++ ++ /* Move remaining bytes into internal buffer. */ ++ if (len > 0) ++ { ++ size_t left_over = ctx->buflen; ++ ++ memcpy (&ctx->buffer[left_over], buffer, len); ++ left_over += len; ++ if (left_over >= 64) ++ { ++ sha256_process_block (ctx->buffer, 64, ctx); ++ left_over -= 64; ++ memcpy (ctx->buffer, &ctx->buffer[64], left_over); ++ } ++ ctx->buflen = left_over; ++ } ++} ++ ++ ++/* Define our magic string to mark salt for SHA256 "encryption" ++ replacement. */ ++static const char sha256_salt_prefix[] = "$5$"; ++ ++/* Prefix for optional rounds specification. */ ++static const char sha256_rounds_prefix[] = "rounds="; ++ ++/* Maximum salt string length. */ ++#define SALT_LEN_MAX 16 ++/* Default number of rounds if not explicitly specified. */ ++#define ROUNDS_DEFAULT 5000 ++/* Minimum number of rounds. */ ++#define ROUNDS_MIN 1000 ++/* Maximum number of rounds. */ ++#define ROUNDS_MAX 999999999 ++ ++/* Table with characters for base64 transformation. */ ++static const char b64t[64] = ++"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; ++ ++ ++static char * ++sha256_crypt_r (const char *key, const char *salt, char *buffer, int buflen) ++{ ++ unsigned char alt_result[32] ++ __attribute__ ((__aligned__ (__alignof__ (uint32_t)))); ++ unsigned char temp_result[32] ++ __attribute__ ((__aligned__ (__alignof__ (uint32_t)))); ++ struct sha256_ctx ctx; ++ struct sha256_ctx alt_ctx; ++ size_t salt_len; ++ size_t key_len; ++ size_t cnt; ++ char *cp; ++ char *copied_key = NULL; ++ char *copied_salt = NULL; ++ char *p_bytes; ++ char *s_bytes; ++ /* Default number of rounds. */ ++ size_t rounds = ROUNDS_DEFAULT; ++ bool rounds_custom = false; ++ ++ /* Find beginning of salt string. The prefix should normally always ++ be present. Just in case it is not. */ ++ if (grub_memcmp (sha256_salt_prefix, salt, ++ sizeof (sha256_salt_prefix) - 1) == 0) ++ /* Skip salt prefix. */ ++ salt += sizeof (sha256_salt_prefix) - 1; ++ ++ if (grub_memcmp (salt, sha256_rounds_prefix, ++ sizeof (sha256_rounds_prefix) - 1) == 0) ++ { ++ const char *num = salt + sizeof (sha256_rounds_prefix) - 1; ++ char *endp = (char *)num; ++ int srounds = 0; ++ if (*endp == '0' && tolower (endp[1]) == 'x') ++ /* This would be interpreted as hexadecimal by safe_parse_maxint(). */ ++ endp++; ++ else ++ /* On error, endp and srounds is not changed. */ ++ safe_parse_maxint(&endp, &srounds); ++ if (*endp == '$') ++ { ++ salt = endp + 1; ++ rounds = MAX (ROUNDS_MIN, MIN (srounds, ROUNDS_MAX)); ++ rounds_custom = true; ++ } ++ } ++ ++ salt_len = MIN (strcspn (salt, "$"), SALT_LEN_MAX); ++ key_len = strlen (key); ++ ++ if ((key - (char *) 0) % __alignof__ (uint32_t) != 0) ++ { ++ char *tmp = (char *) alloca (key_len + __alignof__ (uint32_t)); ++ key = copied_key = ++ memcpy (tmp + __alignof__ (uint32_t) ++ - (tmp - (char *) 0) % __alignof__ (uint32_t), ++ key, key_len); ++ } ++ ++ if ((salt - (char *) 0) % __alignof__ (uint32_t) != 0) ++ { ++ char *tmp = (char *) alloca (salt_len + __alignof__ (uint32_t)); ++ salt = copied_salt = ++ memcpy (tmp + __alignof__ (uint32_t) ++ - (tmp - (char *) 0) % __alignof__ (uint32_t), ++ salt, salt_len); ++ } ++ ++ /* Prepare for the real work. */ ++ sha256_init_ctx (&ctx); ++ ++ /* Add the key string. */ ++ sha256_process_bytes (key, key_len, &ctx); ++ ++ /* The last part is the salt string. This must be at most 16 ++ characters and it ends at the first `$' character (for ++ compatibility with existing implementations). */ ++ sha256_process_bytes (salt, salt_len, &ctx); ++ ++ ++ /* Compute alternate SHA256 sum with input KEY, SALT, and KEY. The ++ final result will be added to the first context. */ ++ sha256_init_ctx (&alt_ctx); ++ ++ /* Add key. */ ++ sha256_process_bytes (key, key_len, &alt_ctx); ++ ++ /* Add salt. */ ++ sha256_process_bytes (salt, salt_len, &alt_ctx); ++ ++ /* Add key again. */ ++ sha256_process_bytes (key, key_len, &alt_ctx); ++ ++ /* Now get result of this (32 bytes) and add it to the other ++ context. */ ++ sha256_finish_ctx (&alt_ctx, alt_result); ++ ++ /* Add for any character in the key one byte of the alternate sum. */ ++ for (cnt = key_len; cnt > 32; cnt -= 32) ++ sha256_process_bytes (alt_result, 32, &ctx); ++ sha256_process_bytes (alt_result, cnt, &ctx); ++ ++ /* Take the binary representation of the length of the key and for every ++ 1 add the alternate sum, for every 0 the key. */ ++ for (cnt = key_len; cnt > 0; cnt >>= 1) ++ if ((cnt & 1) != 0) ++ sha256_process_bytes (alt_result, 32, &ctx); ++ else ++ sha256_process_bytes (key, key_len, &ctx); ++ ++ /* Create intermediate result. */ ++ sha256_finish_ctx (&ctx, alt_result); ++ ++ /* Start computation of P byte sequence. */ ++ sha256_init_ctx (&alt_ctx); ++ ++ /* For every character in the password add the entire password. */ ++ for (cnt = 0; cnt < key_len; ++cnt) ++ sha256_process_bytes (key, key_len, &alt_ctx); ++ ++ /* Finish the digest. */ ++ sha256_finish_ctx (&alt_ctx, temp_result); ++ ++ /* Create byte sequence P. */ ++ cp = p_bytes = alloca (key_len); ++ for (cnt = key_len; cnt >= 32; cnt -= 32) ++ { ++ memcpy (cp, temp_result, 32); ++ cp += 32; ++ } ++ memcpy (cp, temp_result, cnt); ++ ++ /* Start computation of S byte sequence. */ ++ sha256_init_ctx (&alt_ctx); ++ ++ /* For every character in the password add the entire password. */ ++ for (cnt = 0; cnt < 16 + alt_result[0]; ++cnt) ++ sha256_process_bytes (salt, salt_len, &alt_ctx); ++ ++ /* Finish the digest. */ ++ sha256_finish_ctx (&alt_ctx, temp_result); ++ ++ /* Create byte sequence S. */ ++ cp = s_bytes = alloca (salt_len); ++ for (cnt = salt_len; cnt >= 32; cnt -= 32) ++ { ++ memcpy (cp, temp_result, 32); ++ cp += 32; ++ } ++ memcpy (cp, temp_result, cnt); ++ ++ /* Repeatedly run the collected hash value through SHA256 to burn ++ CPU cycles. */ ++ for (cnt = 0; cnt < rounds; ++cnt) ++ { ++ /* New context. */ ++ sha256_init_ctx (&ctx); ++ ++ /* Add key or last result. */ ++ if ((cnt & 1) != 0) ++ sha256_process_bytes (p_bytes, key_len, &ctx); ++ else ++ sha256_process_bytes (alt_result, 32, &ctx); ++ ++ /* Add salt for numbers not divisible by 3. */ ++ if (cnt % 3 != 0) ++ sha256_process_bytes (s_bytes, salt_len, &ctx); ++ ++ /* Add key for numbers not divisible by 7. */ ++ if (cnt % 7 != 0) ++ sha256_process_bytes (p_bytes, key_len, &ctx); ++ ++ /* Add key or last result. */ ++ if ((cnt & 1) != 0) ++ sha256_process_bytes (alt_result, 32, &ctx); ++ else ++ sha256_process_bytes (p_bytes, key_len, &ctx); ++ ++ /* Create intermediate result. */ ++ sha256_finish_ctx (&ctx, alt_result); ++ } ++ ++ /* Now we can construct the result string. It consists of three ++ parts. */ ++ cp = stpncpy (buffer, sha256_salt_prefix, MAX (0, buflen)); ++ buflen -= sizeof (sha256_salt_prefix) - 1; ++ ++ if (rounds_custom) ++ { ++ char sbuf[64]; ++ grub_sprintf (sbuf, "%s%llu$", sha256_rounds_prefix, ++ (unsigned long long)rounds); ++ size_t n = strlen (sbuf); ++ memcpy (cp, sbuf, MIN (MAX (0, buflen), n)); ++ cp += n; ++ buflen -= n; ++ } ++ ++ cp = stpncpy (cp, salt, MIN ((size_t) MAX (0, buflen), salt_len)); ++ buflen -= MIN ((size_t) MAX (0, buflen), salt_len); ++ ++ if (buflen > 0) ++ { ++ *cp++ = '$'; ++ --buflen; ++ } ++ ++#define b64_from_24bit(B2, B1, B0, N) \ ++ do { \ ++ unsigned int w = ((B2) << 16) | ((B1) << 8) | (B0); \ ++ int n = (N); \ ++ while (n-- > 0 && buflen > 0) \ ++ { \ ++ *cp++ = b64t[w & 0x3f]; \ ++ --buflen; \ ++ w >>= 6; \ ++ } \ ++ } while (0) ++ ++ b64_from_24bit (alt_result[0], alt_result[10], alt_result[20], 4); ++ b64_from_24bit (alt_result[21], alt_result[1], alt_result[11], 4); ++ b64_from_24bit (alt_result[12], alt_result[22], alt_result[2], 4); ++ b64_from_24bit (alt_result[3], alt_result[13], alt_result[23], 4); ++ b64_from_24bit (alt_result[24], alt_result[4], alt_result[14], 4); ++ b64_from_24bit (alt_result[15], alt_result[25], alt_result[5], 4); ++ b64_from_24bit (alt_result[6], alt_result[16], alt_result[26], 4); ++ b64_from_24bit (alt_result[27], alt_result[7], alt_result[17], 4); ++ b64_from_24bit (alt_result[18], alt_result[28], alt_result[8], 4); ++ b64_from_24bit (alt_result[9], alt_result[19], alt_result[29], 4); ++ b64_from_24bit (0, alt_result[31], alt_result[30], 3); ++ if (buflen <= 0) ++ buffer = NULL; ++ else ++ *cp = '\0'; /* Terminate the string. */ ++ ++ /* Clear the buffer for the intermediate result so that people ++ attaching to processes or reading core dumps cannot get any ++ information. We do it in this way to clear correct_words[] ++ inside the SHA256 implementation as well. */ ++ sha256_init_ctx (&ctx); ++ sha256_finish_ctx (&ctx, alt_result); ++ memset (temp_result, '\0', sizeof (temp_result)); ++ memset (p_bytes, '\0', key_len); ++ memset (s_bytes, '\0', salt_len); ++ memset (&ctx, '\0', sizeof (ctx)); ++ memset (&alt_ctx, '\0', sizeof (alt_ctx)); ++ if (copied_key != NULL) ++ memset (copied_key, '\0', key_len); ++ if (copied_salt != NULL) ++ memset (copied_salt, '\0', salt_len); ++ ++ return buffer; ++} ++ ++ ++/* This entry point is equivalent to the `crypt' function in Unix ++ libcs. */ ++char * ++sha256_crypt (const char *key, const char *salt) ++{ ++ static char buffer[sizeof (sha256_salt_prefix) - 1 ++ + sizeof (sha256_rounds_prefix) + 9 + 1 ++ + 256 + 1 + 43 + 1]; /* 256 bytes for salt */ ++ int needed = (sizeof (sha256_salt_prefix) - 1 ++ + sizeof (sha256_rounds_prefix) + 9 + 1 ++ + strlen (salt) + 1 + 43 + 1); ++ ++ if (sizeof (buffer) < needed) ++ return NULL; ++ ++ return sha256_crypt_r (key, salt, buffer, sizeof (buffer)); ++} ++ ++ ++#ifdef TEST ++static const struct ++{ ++ const char *input; ++ const char result[32]; ++} tests[] = ++ { ++ /* Test vectors from FIPS 180-2: appendix B.1. */ ++ { "abc", ++ "\xba\x78\x16\xbf\x8f\x01\xcf\xea\x41\x41\x40\xde\x5d\xae\x22\x23" ++ "\xb0\x03\x61\xa3\x96\x17\x7a\x9c\xb4\x10\xff\x61\xf2\x00\x15\xad" }, ++ /* Test vectors from FIPS 180-2: appendix B.2. */ ++ { "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", ++ "\x24\x8d\x6a\x61\xd2\x06\x38\xb8\xe5\xc0\x26\x93\x0c\x3e\x60\x39" ++ "\xa3\x3c\xe4\x59\x64\xff\x21\x67\xf6\xec\xed\xd4\x19\xdb\x06\xc1" }, ++ /* Test vectors from the NESSIE project. */ ++ { "", ++ "\xe3\xb0\xc4\x42\x98\xfc\x1c\x14\x9a\xfb\xf4\xc8\x99\x6f\xb9\x24" ++ "\x27\xae\x41\xe4\x64\x9b\x93\x4c\xa4\x95\x99\x1b\x78\x52\xb8\x55" }, ++ { "a", ++ "\xca\x97\x81\x12\xca\x1b\xbd\xca\xfa\xc2\x31\xb3\x9a\x23\xdc\x4d" ++ "\xa7\x86\xef\xf8\x14\x7c\x4e\x72\xb9\x80\x77\x85\xaf\xee\x48\xbb" }, ++ { "message digest", ++ "\xf7\x84\x6f\x55\xcf\x23\xe1\x4e\xeb\xea\xb5\xb4\xe1\x55\x0c\xad" ++ "\x5b\x50\x9e\x33\x48\xfb\xc4\xef\xa3\xa1\x41\x3d\x39\x3c\xb6\x50" }, ++ { "abcdefghijklmnopqrstuvwxyz", ++ "\x71\xc4\x80\xdf\x93\xd6\xae\x2f\x1e\xfa\xd1\x44\x7c\x66\xc9\x52" ++ "\x5e\x31\x62\x18\xcf\x51\xfc\x8d\x9e\xd8\x32\xf2\xda\xf1\x8b\x73" }, ++ { "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", ++ "\x24\x8d\x6a\x61\xd2\x06\x38\xb8\xe5\xc0\x26\x93\x0c\x3e\x60\x39" ++ "\xa3\x3c\xe4\x59\x64\xff\x21\x67\xf6\xec\xed\xd4\x19\xdb\x06\xc1" }, ++ { "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", ++ "\xdb\x4b\xfc\xbd\x4d\xa0\xcd\x85\xa6\x0c\x3c\x37\xd3\xfb\xd8\x80" ++ "\x5c\x77\xf1\x5f\xc6\xb1\xfd\xfe\x61\x4e\xe0\xa7\xc8\xfd\xb4\xc0" }, ++ { "123456789012345678901234567890123456789012345678901234567890" ++ "12345678901234567890", ++ "\xf3\x71\xbc\x4a\x31\x1f\x2b\x00\x9e\xef\x95\x2d\xd8\x3c\xa8\x0e" ++ "\x2b\x60\x02\x6c\x8e\x93\x55\x92\xd0\xf9\xc3\x08\x45\x3c\x81\x3e" } ++ }; ++#define ntests (sizeof (tests) / sizeof (tests[0])) ++ ++ ++static const struct ++{ ++ const char *salt; ++ const char *input; ++ const char *expected; ++} tests2[] = ++{ ++ { "$5$saltstring", "Hello world!", ++ "$5$saltstring$5B8vYYiY.CVt1RlTTf8KbXBH3hsxY/GNooZaBBGWEc5" }, ++ { "$5$rounds=10000$saltstringsaltstring", "Hello world!", ++ "$5$rounds=10000$saltstringsaltst$3xv.VbSHBb41AL9AvLeujZkZRBAwqFMz2." ++ "opqey6IcA" }, ++ { "$5$rounds=5000$toolongsaltstring", "This is just a test", ++ "$5$rounds=5000$toolongsaltstrin$Un/5jzAHMgOGZ5.mWJpuVolil07guHPvOW8" ++ "mGRcvxa5" }, ++ { "$5$rounds=1400$anotherlongsaltstring", ++ "a very much longer text to encrypt. This one even stretches over more" ++ "than one line.", ++ "$5$rounds=1400$anotherlongsalts$Rx.j8H.h8HjEDGomFU8bDkXm3XIUnzyxf12" ++ "oP84Bnq1" }, ++ { "$5$rounds=77777$short", ++ "we have a short salt string but not a short password", ++ "$5$rounds=77777$short$JiO1O3ZpDAxGJeaDIuqCoEFysAe1mZNJRs3pw0KQRd/" }, ++ { "$5$rounds=123456$asaltof16chars..", "a short string", ++ "$5$rounds=123456$asaltof16chars..$gP3VQ/6X7UUEW3HkBn2w1/Ptq2jxPyzV/" ++ "cZKmF/wJvD" }, ++ { "$5$rounds=10$roundstoolow", "the minimum number is still observed", ++ "$5$rounds=1000$roundstoolow$yfvwcWrQ8l/K0DAWyuPMDNHpIVlTQebY9l/gL97" ++ "2bIC" }, ++}; ++#define ntests2 (sizeof (tests2) / sizeof (tests2[0])) ++ ++ ++int ++sha256_test (void) ++{ ++ struct sha256_ctx ctx; ++ char sum[32]; ++ int result = 0; ++ int cnt, i; ++ ++ for (cnt = 0; cnt < (int) ntests; ++cnt) ++ { ++ sha256_init_ctx (&ctx); ++ sha256_process_bytes (tests[cnt].input, strlen (tests[cnt].input), &ctx); ++ sha256_finish_ctx (&ctx, sum); ++ if (memcmp (tests[cnt].result, sum, 32) != 0) ++ { ++ printf ("test %d run %d failed\n", cnt, 1); ++ result = 1; ++ } ++ ++ sha256_init_ctx (&ctx); ++ for (i = 0; tests[cnt].input[i] != '\0'; ++i) ++ sha256_process_bytes (&tests[cnt].input[i], 1, &ctx); ++ sha256_finish_ctx (&ctx, sum); ++ if (memcmp (tests[cnt].result, sum, 32) != 0) ++ { ++ printf ("test %d run %d failed\n", cnt, 2); ++ result = 1; ++ } ++ } ++ ++ /* Test vector from FIPS 180-2: appendix B.3. */ ++ char buf[1000]; ++ memset (buf, 'a', sizeof (buf)); ++ sha256_init_ctx (&ctx); ++ for (i = 0; i < 1000; ++i) ++ sha256_process_bytes (buf, sizeof (buf), &ctx); ++ sha256_finish_ctx (&ctx, sum); ++ static const char expected[32] = ++ "\xcd\xc7\x6e\x5c\x99\x14\xfb\x92\x81\xa1\xc7\xe2\x84\xd7\x3e\x67" ++ "\xf1\x80\x9a\x48\xa4\x97\x20\x0e\x04\x6d\x39\xcc\xc7\x11\x2c\xd0"; ++ if (memcmp (expected, sum, 32) != 0) ++ { ++ printf ("test %d failed\n", cnt); ++ result = 1; ++ } ++ ++ for (cnt = 0; cnt < ntests2; ++cnt) ++ { ++ char *cp = sha256_crypt (tests2[cnt].input, tests2[cnt].salt); ++ ++ if (strcmp (cp, tests2[cnt].expected) != 0) ++ { ++ printf ("test %d: expected "%s", got "%s"\n", ++ cnt, tests2[cnt].expected, cp); ++ result = 1; ++ } ++ } ++ ++ if (result == 0) ++ printf ("all tests OK\n"); ++ ++ return result; ++} ++#endif +diff --git a/stage2/sha512crypt.c b/stage2/sha512crypt.c +new file mode 100644 +index 0000000..ff6cd26 +--- /dev/null ++++ b/stage2/sha512crypt.c +@@ -0,0 +1,795 @@ ++/* SHA512-based Unix crypt implementation. ++ Released into the Public Domain by Ulrich Drepper drepper@redhat.com. ++ Adapted for grub by Miloslav Trmac mitr@redhat.com. */ ++ ++#include <stdbool.h> ++#include <stddef.h> ++ ++#include <shared.h> ++ ++typedef unsigned long long uint64_t; ++typedef size_t uintptr_t; ++#define alloca(SIZE) (__builtin_alloca (SIZE)) ++#define UINT64_C(X) X ## ULL ++#define MIN(a, b) ((a) < (b) ? (a) : (b)) ++#define MAX(a, b) ((a) > (b) ? (a) : (b)) ++ ++/* Structure to save state of computation between the single steps. */ ++struct sha512_ctx ++{ ++ uint64_t H[8]; ++ ++ uint64_t total[2]; ++ uint64_t buflen; ++ char buffer[256]; /* NB: always correctly aligned for uint64_t. */ ++}; ++ ++ ++#if 1 /* __BYTE_ORDER == __LITTLE_ENDIAN */ ++# define SWAP(n) \ ++ (((n) << 56) \ ++ | (((n) & 0xff00) << 40) \ ++ | (((n) & 0xff0000) << 24) \ ++ | (((n) & 0xff000000) << 8) \ ++ | (((n) >> 8) & 0xff000000) \ ++ | (((n) >> 24) & 0xff0000) \ ++ | (((n) >> 40) & 0xff00) \ ++ | ((n) >> 56)) ++#else ++# define SWAP(n) (n) ++#endif ++ ++ ++/* This array contains the bytes used to pad the buffer to the next ++ 64-byte boundary. (FIPS 180-2:5.1.2) */ ++static const unsigned char fillbuf[128] = { 0x80, 0 /* , 0, 0, ... */ }; ++ ++ ++/* Constants for SHA512 from FIPS 180-2:4.2.3. */ ++static const uint64_t K[80] = ++ { ++ UINT64_C (0x428a2f98d728ae22), UINT64_C (0x7137449123ef65cd), ++ UINT64_C (0xb5c0fbcfec4d3b2f), UINT64_C (0xe9b5dba58189dbbc), ++ UINT64_C (0x3956c25bf348b538), UINT64_C (0x59f111f1b605d019), ++ UINT64_C (0x923f82a4af194f9b), UINT64_C (0xab1c5ed5da6d8118), ++ UINT64_C (0xd807aa98a3030242), UINT64_C (0x12835b0145706fbe), ++ UINT64_C (0x243185be4ee4b28c), UINT64_C (0x550c7dc3d5ffb4e2), ++ UINT64_C (0x72be5d74f27b896f), UINT64_C (0x80deb1fe3b1696b1), ++ UINT64_C (0x9bdc06a725c71235), UINT64_C (0xc19bf174cf692694), ++ UINT64_C (0xe49b69c19ef14ad2), UINT64_C (0xefbe4786384f25e3), ++ UINT64_C (0x0fc19dc68b8cd5b5), UINT64_C (0x240ca1cc77ac9c65), ++ UINT64_C (0x2de92c6f592b0275), UINT64_C (0x4a7484aa6ea6e483), ++ UINT64_C (0x5cb0a9dcbd41fbd4), UINT64_C (0x76f988da831153b5), ++ UINT64_C (0x983e5152ee66dfab), UINT64_C (0xa831c66d2db43210), ++ UINT64_C (0xb00327c898fb213f), UINT64_C (0xbf597fc7beef0ee4), ++ UINT64_C (0xc6e00bf33da88fc2), UINT64_C (0xd5a79147930aa725), ++ UINT64_C (0x06ca6351e003826f), UINT64_C (0x142929670a0e6e70), ++ UINT64_C (0x27b70a8546d22ffc), UINT64_C (0x2e1b21385c26c926), ++ UINT64_C (0x4d2c6dfc5ac42aed), UINT64_C (0x53380d139d95b3df), ++ UINT64_C (0x650a73548baf63de), UINT64_C (0x766a0abb3c77b2a8), ++ UINT64_C (0x81c2c92e47edaee6), UINT64_C (0x92722c851482353b), ++ UINT64_C (0xa2bfe8a14cf10364), UINT64_C (0xa81a664bbc423001), ++ UINT64_C (0xc24b8b70d0f89791), UINT64_C (0xc76c51a30654be30), ++ UINT64_C (0xd192e819d6ef5218), UINT64_C (0xd69906245565a910), ++ UINT64_C (0xf40e35855771202a), UINT64_C (0x106aa07032bbd1b8), ++ UINT64_C (0x19a4c116b8d2d0c8), UINT64_C (0x1e376c085141ab53), ++ UINT64_C (0x2748774cdf8eeb99), UINT64_C (0x34b0bcb5e19b48a8), ++ UINT64_C (0x391c0cb3c5c95a63), UINT64_C (0x4ed8aa4ae3418acb), ++ UINT64_C (0x5b9cca4f7763e373), UINT64_C (0x682e6ff3d6b2b8a3), ++ UINT64_C (0x748f82ee5defb2fc), UINT64_C (0x78a5636f43172f60), ++ UINT64_C (0x84c87814a1f0ab72), UINT64_C (0x8cc702081a6439ec), ++ UINT64_C (0x90befffa23631e28), UINT64_C (0xa4506cebde82bde9), ++ UINT64_C (0xbef9a3f7b2c67915), UINT64_C (0xc67178f2e372532b), ++ UINT64_C (0xca273eceea26619c), UINT64_C (0xd186b8c721c0c207), ++ UINT64_C (0xeada7dd6cde0eb1e), UINT64_C (0xf57d4f7fee6ed178), ++ UINT64_C (0x06f067aa72176fba), UINT64_C (0x0a637dc5a2c898a6), ++ UINT64_C (0x113f9804bef90dae), UINT64_C (0x1b710b35131c471b), ++ UINT64_C (0x28db77f523047d84), UINT64_C (0x32caab7b40c72493), ++ UINT64_C (0x3c9ebe0a15c9bebc), UINT64_C (0x431d67c49c100d4c), ++ UINT64_C (0x4cc5d4becb3e42b6), UINT64_C (0x597f299cfc657e2a), ++ UINT64_C (0x5fcb6fab3ad6faec), UINT64_C (0x6c44198c4a475817) ++ }; ++ ++ ++/* Process LEN bytes of BUFFER, accumulating context into CTX. ++ It is assumed that LEN % 128 == 0. */ ++static void ++sha512_process_block (const void *buffer, size_t len, struct sha512_ctx *ctx) ++{ ++ const uint64_t *words = buffer; ++ size_t nwords = len / sizeof (uint64_t); ++ uint64_t a = ctx->H[0]; ++ uint64_t b = ctx->H[1]; ++ uint64_t c = ctx->H[2]; ++ uint64_t d = ctx->H[3]; ++ uint64_t e = ctx->H[4]; ++ uint64_t f = ctx->H[5]; ++ uint64_t g = ctx->H[6]; ++ uint64_t h = ctx->H[7]; ++ ++ /* First increment the byte count. FIPS 180-2 specifies the possible ++ length of the file up to 2^128 bits. Here we only compute the ++ number of bytes. Do a double word increment. */ ++ ctx->total[0] += len; ++ if (ctx->total[0] < len) ++ ++ctx->total[1]; ++ ++ /* Process all bytes in the buffer with 128 bytes in each round of ++ the loop. */ ++ while (nwords > 0) ++ { ++ uint64_t W[80]; ++ uint64_t a_save = a; ++ uint64_t b_save = b; ++ uint64_t c_save = c; ++ uint64_t d_save = d; ++ uint64_t e_save = e; ++ uint64_t f_save = f; ++ uint64_t g_save = g; ++ uint64_t h_save = h; ++ unsigned int t; ++ ++ /* Operators defined in FIPS 180-2:4.1.2. */ ++#define Ch(x, y, z) ((x & y) ^ (~x & z)) ++#define Maj(x, y, z) ((x & y) ^ (x & z) ^ (y & z)) ++#define S0(x) (CYCLIC (x, 28) ^ CYCLIC (x, 34) ^ CYCLIC (x, 39)) ++#define S1(x) (CYCLIC (x, 14) ^ CYCLIC (x, 18) ^ CYCLIC (x, 41)) ++#define R0(x) (CYCLIC (x, 1) ^ CYCLIC (x, 8) ^ (x >> 7)) ++#define R1(x) (CYCLIC (x, 19) ^ CYCLIC (x, 61) ^ (x >> 6)) ++ ++ /* It is unfortunate that C does not provide an operator for ++ cyclic rotation. Hope the C compiler is smart enough. */ ++#define CYCLIC(w, s) ((w >> s) | (w << (64 - s))) ++ ++ /* Compute the message schedule according to FIPS 180-2:6.3.2 step 2. */ ++ for (t = 0; t < 16; ++t) ++ { ++ W[t] = SWAP (*words); ++ ++words; ++ } ++ for (t = 16; t < 80; ++t) ++ W[t] = R1 (W[t - 2]) + W[t - 7] + R0 (W[t - 15]) + W[t - 16]; ++ ++ /* The actual computation according to FIPS 180-2:6.3.2 step 3. */ ++ for (t = 0; t < 80; ++t) ++ { ++ uint64_t T1 = h + S1 (e) + Ch (e, f, g) + K[t] + W[t]; ++ uint64_t T2 = S0 (a) + Maj (a, b, c); ++ h = g; ++ g = f; ++ f = e; ++ e = d + T1; ++ d = c; ++ c = b; ++ b = a; ++ a = T1 + T2; ++ } ++ ++ /* Add the starting values of the context according to FIPS 180-2:6.3.2 ++ step 4. */ ++ a += a_save; ++ b += b_save; ++ c += c_save; ++ d += d_save; ++ e += e_save; ++ f += f_save; ++ g += g_save; ++ h += h_save; ++ ++ /* Prepare for the next round. */ ++ nwords -= 16; ++ } ++ ++ /* Put checksum in context given as argument. */ ++ ctx->H[0] = a; ++ ctx->H[1] = b; ++ ctx->H[2] = c; ++ ctx->H[3] = d; ++ ctx->H[4] = e; ++ ctx->H[5] = f; ++ ctx->H[6] = g; ++ ctx->H[7] = h; ++} ++ ++ ++/* Initialize structure containing state of computation. ++ (FIPS 180-2:5.3.3) */ ++static void ++sha512_init_ctx (struct sha512_ctx *ctx) ++{ ++ ctx->H[0] = UINT64_C (0x6a09e667f3bcc908); ++ ctx->H[1] = UINT64_C (0xbb67ae8584caa73b); ++ ctx->H[2] = UINT64_C (0x3c6ef372fe94f82b); ++ ctx->H[3] = UINT64_C (0xa54ff53a5f1d36f1); ++ ctx->H[4] = UINT64_C (0x510e527fade682d1); ++ ctx->H[5] = UINT64_C (0x9b05688c2b3e6c1f); ++ ctx->H[6] = UINT64_C (0x1f83d9abfb41bd6b); ++ ctx->H[7] = UINT64_C (0x5be0cd19137e2179); ++ ++ ctx->total[0] = ctx->total[1] = 0; ++ ctx->buflen = 0; ++} ++ ++ ++/* Process the remaining bytes in the internal buffer and the usual ++ prolog according to the standard and write the result to RESBUF. ++ ++ IMPORTANT: On some systems it is required that RESBUF is correctly ++ aligned for a 32 bits value. */ ++static void * ++sha512_finish_ctx (struct sha512_ctx *ctx, void *resbuf) ++{ ++ /* Take yet unprocessed bytes into account. */ ++ uint64_t bytes = ctx->buflen; ++ size_t pad; ++ unsigned int i; ++ ++ /* Now count remaining bytes. */ ++ ctx->total[0] += bytes; ++ if (ctx->total[0] < bytes) ++ ++ctx->total[1]; ++ ++ pad = bytes >= 112 ? 128 + 112 - bytes : 112 - bytes; ++ memcpy (&ctx->buffer[bytes], fillbuf, pad); ++ ++ /* Put the 128-bit file length in *bits* at the end of the buffer. */ ++ *(uint64_t *) &ctx->buffer[bytes + pad + 8] = SWAP (ctx->total[0] << 3); ++ *(uint64_t *) &ctx->buffer[bytes + pad] = SWAP ((ctx->total[1] << 3) | ++ (ctx->total[0] >> 61)); ++ ++ /* Process last bytes. */ ++ sha512_process_block (ctx->buffer, bytes + pad + 16, ctx); ++ ++ /* Put result from CTX in first 64 bytes following RESBUF. */ ++ for (i = 0; i < 8; ++i) ++ ((uint64_t *) resbuf)[i] = SWAP (ctx->H[i]); ++ ++ return resbuf; ++} ++ ++ ++static void ++sha512_process_bytes (const void *buffer, size_t len, struct sha512_ctx *ctx) ++{ ++ /* When we already have some bits in our internal buffer concatenate ++ both inputs first. */ ++ if (ctx->buflen != 0) ++ { ++ size_t left_over = ctx->buflen; ++ size_t add = 256 - left_over > len ? len : 256 - left_over; ++ ++ memcpy (&ctx->buffer[left_over], buffer, add); ++ ctx->buflen += add; ++ ++ if (ctx->buflen > 128) ++ { ++ sha512_process_block (ctx->buffer, ctx->buflen & ~127, ctx); ++ ++ ctx->buflen &= 127; ++ /* The regions in the following copy operation cannot overlap. */ ++ memcpy (ctx->buffer, &ctx->buffer[(left_over + add) & ~127], ++ ctx->buflen); ++ } ++ ++ buffer = (const char *) buffer + add; ++ len -= add; ++ } ++ ++ /* Process available complete blocks. */ ++ if (len >= 128) ++ { ++/* To check alignment gcc has an appropriate operator. Other ++ compilers don't. */ ++# if __GNUC__ >= 2 ++# define UNALIGNED_P(p) (((uintptr_t) p) % __alignof__ (uint64_t) != 0) ++# else ++# define UNALIGNED_P(p) (((uintptr_t) p) % sizeof (uint64_t) != 0) ++# endif ++ if (UNALIGNED_P (buffer)) ++ while (len > 128) ++ { ++ sha512_process_block (memcpy (ctx->buffer, buffer, 128), 128, ++ ctx); ++ buffer = (const char *) buffer + 128; ++ len -= 128; ++ } ++ else ++ { ++ sha512_process_block (buffer, len & ~127, ctx); ++ buffer = (const char *) buffer + (len & ~127); ++ len &= 127; ++ } ++ } ++ ++ /* Move remaining bytes into internal buffer. */ ++ if (len > 0) ++ { ++ size_t left_over = ctx->buflen; ++ ++ memcpy (&ctx->buffer[left_over], buffer, len); ++ left_over += len; ++ if (left_over >= 128) ++ { ++ sha512_process_block (ctx->buffer, 128, ctx); ++ left_over -= 128; ++ memcpy (ctx->buffer, &ctx->buffer[128], left_over); ++ } ++ ctx->buflen = left_over; ++ } ++} ++ ++ ++/* Define our magic string to mark salt for SHA512 "encryption" ++ replacement. */ ++static const char sha512_salt_prefix[] = "$6$"; ++ ++/* Prefix for optional rounds specification. */ ++static const char sha512_rounds_prefix[] = "rounds="; ++ ++/* Maximum salt string length. */ ++#define SALT_LEN_MAX 16 ++/* Default number of rounds if not explicitly specified. */ ++#define ROUNDS_DEFAULT 5000 ++/* Minimum number of rounds. */ ++#define ROUNDS_MIN 1000 ++/* Maximum number of rounds. */ ++#define ROUNDS_MAX 999999999 ++ ++/* Table with characters for base64 transformation. */ ++static const char b64t[64] = ++"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; ++ ++ ++static char * ++sha512_crypt_r (const char *key, const char *salt, char *buffer, int buflen) ++{ ++ unsigned char alt_result[64] ++ __attribute__ ((__aligned__ (__alignof__ (uint64_t)))); ++ unsigned char temp_result[64] ++ __attribute__ ((__aligned__ (__alignof__ (uint64_t)))); ++ struct sha512_ctx ctx; ++ struct sha512_ctx alt_ctx; ++ size_t salt_len; ++ size_t key_len; ++ size_t cnt; ++ char *cp; ++ char *copied_key = NULL; ++ char *copied_salt = NULL; ++ char *p_bytes; ++ char *s_bytes; ++ /* Default number of rounds. */ ++ size_t rounds = ROUNDS_DEFAULT; ++ bool rounds_custom = false; ++ ++ /* Find beginning of salt string. The prefix should normally always ++ be present. Just in case it is not. */ ++ if (grub_memcmp (sha512_salt_prefix, salt, ++ sizeof (sha512_salt_prefix) - 1) == 0) ++ /* Skip salt prefix. */ ++ salt += sizeof (sha512_salt_prefix) - 1; ++ ++ if (grub_memcmp (salt, sha512_rounds_prefix, ++ sizeof (sha512_rounds_prefix) - 1) == 0) ++ { ++ const char *num = salt + sizeof (sha512_rounds_prefix) - 1; ++ char *endp = (char *)num; ++ int srounds = 0; ++ if (*endp == '0' && tolower (endp[1]) == 'x') ++ /* This would be interpreted as hexadecimal by safe_parse_maxint(). */ ++ endp++; ++ else ++ /* On error, endp and srounds is not changed. */ ++ safe_parse_maxint(&endp, &srounds); ++ if (*endp == '$') ++ { ++ salt = endp + 1; ++ rounds = MAX (ROUNDS_MIN, MIN (srounds, ROUNDS_MAX)); ++ rounds_custom = true; ++ } ++ } ++ ++ salt_len = MIN (strcspn (salt, "$"), SALT_LEN_MAX); ++ key_len = strlen (key); ++ ++ if ((key - (char *) 0) % __alignof__ (uint64_t) != 0) ++ { ++ char *tmp = (char *) alloca (key_len + __alignof__ (uint64_t)); ++ key = copied_key = ++ memcpy (tmp + __alignof__ (uint64_t) ++ - (tmp - (char *) 0) % __alignof__ (uint64_t), ++ key, key_len); ++ } ++ ++ if ((salt - (char *) 0) % __alignof__ (uint64_t) != 0) ++ { ++ char *tmp = (char *) alloca (salt_len + __alignof__ (uint64_t)); ++ salt = copied_salt = ++ memcpy (tmp + __alignof__ (uint64_t) ++ - (tmp - (char *) 0) % __alignof__ (uint64_t), ++ salt, salt_len); ++ } ++ ++ /* Prepare for the real work. */ ++ sha512_init_ctx (&ctx); ++ ++ /* Add the key string. */ ++ sha512_process_bytes (key, key_len, &ctx); ++ ++ /* The last part is the salt string. This must be at most 16 ++ characters and it ends at the first `$' character (for ++ compatibility with existing implementations). */ ++ sha512_process_bytes (salt, salt_len, &ctx); ++ ++ ++ /* Compute alternate SHA512 sum with input KEY, SALT, and KEY. The ++ final result will be added to the first context. */ ++ sha512_init_ctx (&alt_ctx); ++ ++ /* Add key. */ ++ sha512_process_bytes (key, key_len, &alt_ctx); ++ ++ /* Add salt. */ ++ sha512_process_bytes (salt, salt_len, &alt_ctx); ++ ++ /* Add key again. */ ++ sha512_process_bytes (key, key_len, &alt_ctx); ++ ++ /* Now get result of this (64 bytes) and add it to the other ++ context. */ ++ sha512_finish_ctx (&alt_ctx, alt_result); ++ ++ /* Add for any character in the key one byte of the alternate sum. */ ++ for (cnt = key_len; cnt > 64; cnt -= 64) ++ sha512_process_bytes (alt_result, 64, &ctx); ++ sha512_process_bytes (alt_result, cnt, &ctx); ++ ++ /* Take the binary representation of the length of the key and for every ++ 1 add the alternate sum, for every 0 the key. */ ++ for (cnt = key_len; cnt > 0; cnt >>= 1) ++ if ((cnt & 1) != 0) ++ sha512_process_bytes (alt_result, 64, &ctx); ++ else ++ sha512_process_bytes (key, key_len, &ctx); ++ ++ /* Create intermediate result. */ ++ sha512_finish_ctx (&ctx, alt_result); ++ ++ /* Start computation of P byte sequence. */ ++ sha512_init_ctx (&alt_ctx); ++ ++ /* For every character in the password add the entire password. */ ++ for (cnt = 0; cnt < key_len; ++cnt) ++ sha512_process_bytes (key, key_len, &alt_ctx); ++ ++ /* Finish the digest. */ ++ sha512_finish_ctx (&alt_ctx, temp_result); ++ ++ /* Create byte sequence P. */ ++ cp = p_bytes = alloca (key_len); ++ for (cnt = key_len; cnt >= 64; cnt -= 64) ++ { ++ memcpy (cp, temp_result, 64); ++ cp += 64; ++ } ++ memcpy (cp, temp_result, cnt); ++ ++ /* Start computation of S byte sequence. */ ++ sha512_init_ctx (&alt_ctx); ++ ++ /* For every character in the password add the entire password. */ ++ for (cnt = 0; cnt < 16 + alt_result[0]; ++cnt) ++ sha512_process_bytes (salt, salt_len, &alt_ctx); ++ ++ /* Finish the digest. */ ++ sha512_finish_ctx (&alt_ctx, temp_result); ++ ++ /* Create byte sequence S. */ ++ cp = s_bytes = alloca (salt_len); ++ for (cnt = salt_len; cnt >= 64; cnt -= 64) ++ { ++ memcpy (cp, temp_result, 64); ++ cp += 64; ++ } ++ memcpy (cp, temp_result, cnt); ++ ++ /* Repeatedly run the collected hash value through SHA512 to burn ++ CPU cycles. */ ++ for (cnt = 0; cnt < rounds; ++cnt) ++ { ++ /* New context. */ ++ sha512_init_ctx (&ctx); ++ ++ /* Add key or last result. */ ++ if ((cnt & 1) != 0) ++ sha512_process_bytes (p_bytes, key_len, &ctx); ++ else ++ sha512_process_bytes (alt_result, 64, &ctx); ++ ++ /* Add salt for numbers not divisible by 3. */ ++ if (cnt % 3 != 0) ++ sha512_process_bytes (s_bytes, salt_len, &ctx); ++ ++ /* Add key for numbers not divisible by 7. */ ++ if (cnt % 7 != 0) ++ sha512_process_bytes (p_bytes, key_len, &ctx); ++ ++ /* Add key or last result. */ ++ if ((cnt & 1) != 0) ++ sha512_process_bytes (alt_result, 64, &ctx); ++ else ++ sha512_process_bytes (p_bytes, key_len, &ctx); ++ ++ /* Create intermediate result. */ ++ sha512_finish_ctx (&ctx, alt_result); ++ } ++ ++ /* Now we can construct the result string. It consists of three ++ parts. */ ++ cp = stpncpy (buffer, sha512_salt_prefix, MAX (0, buflen)); ++ buflen -= sizeof (sha512_salt_prefix) - 1; ++ ++ if (rounds_custom) ++ { ++ char sbuf[64]; ++ grub_sprintf (sbuf, "%s%llu$", sha512_rounds_prefix, ++ (unsigned long long)rounds); ++ size_t n = strlen (sbuf); ++ memcpy (cp, sbuf, MIN (MAX (0, buflen), n)); ++ cp += n; ++ buflen -= n; ++ } ++ ++ cp = stpncpy (cp, salt, MIN ((size_t) MAX (0, buflen), salt_len)); ++ buflen -= MIN ((size_t) MAX (0, buflen), salt_len); ++ ++ if (buflen > 0) ++ { ++ *cp++ = '$'; ++ --buflen; ++ } ++ ++#define b64_from_24bit(B2, B1, B0, N) \ ++ do { \ ++ unsigned int w = ((B2) << 16) | ((B1) << 8) | (B0); \ ++ int n = (N); \ ++ while (n-- > 0 && buflen > 0) \ ++ { \ ++ *cp++ = b64t[w & 0x3f]; \ ++ --buflen; \ ++ w >>= 6; \ ++ } \ ++ } while (0) ++ ++ b64_from_24bit (alt_result[0], alt_result[21], alt_result[42], 4); ++ b64_from_24bit (alt_result[22], alt_result[43], alt_result[1], 4); ++ b64_from_24bit (alt_result[44], alt_result[2], alt_result[23], 4); ++ b64_from_24bit (alt_result[3], alt_result[24], alt_result[45], 4); ++ b64_from_24bit (alt_result[25], alt_result[46], alt_result[4], 4); ++ b64_from_24bit (alt_result[47], alt_result[5], alt_result[26], 4); ++ b64_from_24bit (alt_result[6], alt_result[27], alt_result[48], 4); ++ b64_from_24bit (alt_result[28], alt_result[49], alt_result[7], 4); ++ b64_from_24bit (alt_result[50], alt_result[8], alt_result[29], 4); ++ b64_from_24bit (alt_result[9], alt_result[30], alt_result[51], 4); ++ b64_from_24bit (alt_result[31], alt_result[52], alt_result[10], 4); ++ b64_from_24bit (alt_result[53], alt_result[11], alt_result[32], 4); ++ b64_from_24bit (alt_result[12], alt_result[33], alt_result[54], 4); ++ b64_from_24bit (alt_result[34], alt_result[55], alt_result[13], 4); ++ b64_from_24bit (alt_result[56], alt_result[14], alt_result[35], 4); ++ b64_from_24bit (alt_result[15], alt_result[36], alt_result[57], 4); ++ b64_from_24bit (alt_result[37], alt_result[58], alt_result[16], 4); ++ b64_from_24bit (alt_result[59], alt_result[17], alt_result[38], 4); ++ b64_from_24bit (alt_result[18], alt_result[39], alt_result[60], 4); ++ b64_from_24bit (alt_result[40], alt_result[61], alt_result[19], 4); ++ b64_from_24bit (alt_result[62], alt_result[20], alt_result[41], 4); ++ b64_from_24bit (0, 0, alt_result[63], 2); ++ ++ if (buflen <= 0) ++ buffer = NULL; ++ else ++ *cp = '\0'; /* Terminate the string. */ ++ ++ /* Clear the buffer for the intermediate result so that people ++ attaching to processes or reading core dumps cannot get any ++ information. We do it in this way to clear correct_words[] ++ inside the SHA512 implementation as well. */ ++ sha512_init_ctx (&ctx); ++ sha512_finish_ctx (&ctx, alt_result); ++ memset (temp_result, '\0', sizeof (temp_result)); ++ memset (p_bytes, '\0', key_len); ++ memset (s_bytes, '\0', salt_len); ++ memset (&ctx, '\0', sizeof (ctx)); ++ memset (&alt_ctx, '\0', sizeof (alt_ctx)); ++ if (copied_key != NULL) ++ memset (copied_key, '\0', key_len); ++ if (copied_salt != NULL) ++ memset (copied_salt, '\0', salt_len); ++ ++ return buffer; ++} ++ ++ ++/* This entry point is equivalent to the `crypt' function in Unix ++ libcs. */ ++char * ++sha512_crypt (const char *key, const char *salt) ++{ ++ /* We don't want to have an arbitrary limit in the size of the ++ password. We can compute an upper bound for the size of the ++ result in advance and so we can prepare the buffer we pass to ++ `sha512_crypt_r'. */ ++ static char buffer[sizeof (sha512_salt_prefix) - 1 ++ + sizeof (sha512_rounds_prefix) + 9 + 1 ++ + 256 + 1 + 86 + 1]; /* 256 bytes for salt */ ++ int needed = (sizeof (sha512_salt_prefix) - 1 ++ + sizeof (sha512_rounds_prefix) + 9 + 1 ++ + strlen (salt) + 1 + 86 + 1); ++ ++ if (sizeof (buffer) < needed) ++ return NULL; ++ ++ return sha512_crypt_r (key, salt, buffer, sizeof (buffer)); ++} ++ ++ ++#ifdef TEST ++static const struct ++{ ++ const char *input; ++ const char result[64]; ++} tests[] = ++ { ++ /* Test vectors from FIPS 180-2: appendix C.1. */ ++ { "abc", ++ "\xdd\xaf\x35\xa1\x93\x61\x7a\xba\xcc\x41\x73\x49\xae\x20\x41\x31" ++ "\x12\xe6\xfa\x4e\x89\xa9\x7e\xa2\x0a\x9e\xee\xe6\x4b\x55\xd3\x9a" ++ "\x21\x92\x99\x2a\x27\x4f\xc1\xa8\x36\xba\x3c\x23\xa3\xfe\xeb\xbd" ++ "\x45\x4d\x44\x23\x64\x3c\xe8\x0e\x2a\x9a\xc9\x4f\xa5\x4c\xa4\x9f" }, ++ /* Test vectors from FIPS 180-2: appendix C.2. */ ++ { "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmn" ++ "hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu", ++ "\x8e\x95\x9b\x75\xda\xe3\x13\xda\x8c\xf4\xf7\x28\x14\xfc\x14\x3f" ++ "\x8f\x77\x79\xc6\xeb\x9f\x7f\xa1\x72\x99\xae\xad\xb6\x88\x90\x18" ++ "\x50\x1d\x28\x9e\x49\x00\xf7\xe4\x33\x1b\x99\xde\xc4\xb5\x43\x3a" ++ "\xc7\xd3\x29\xee\xb6\xdd\x26\x54\x5e\x96\xe5\x5b\x87\x4b\xe9\x09" }, ++ /* Test vectors from the NESSIE project. */ ++ { "", ++ "\xcf\x83\xe1\x35\x7e\xef\xb8\xbd\xf1\x54\x28\x50\xd6\x6d\x80\x07" ++ "\xd6\x20\xe4\x05\x0b\x57\x15\xdc\x83\xf4\xa9\x21\xd3\x6c\xe9\xce" ++ "\x47\xd0\xd1\x3c\x5d\x85\xf2\xb0\xff\x83\x18\xd2\x87\x7e\xec\x2f" ++ "\x63\xb9\x31\xbd\x47\x41\x7a\x81\xa5\x38\x32\x7a\xf9\x27\xda\x3e" }, ++ { "a", ++ "\x1f\x40\xfc\x92\xda\x24\x16\x94\x75\x09\x79\xee\x6c\xf5\x82\xf2" ++ "\xd5\xd7\xd2\x8e\x18\x33\x5d\xe0\x5a\xbc\x54\xd0\x56\x0e\x0f\x53" ++ "\x02\x86\x0c\x65\x2b\xf0\x8d\x56\x02\x52\xaa\x5e\x74\x21\x05\x46" ++ "\xf3\x69\xfb\xbb\xce\x8c\x12\xcf\xc7\x95\x7b\x26\x52\xfe\x9a\x75" }, ++ { "message digest", ++ "\x10\x7d\xbf\x38\x9d\x9e\x9f\x71\xa3\xa9\x5f\x6c\x05\x5b\x92\x51" ++ "\xbc\x52\x68\xc2\xbe\x16\xd6\xc1\x34\x92\xea\x45\xb0\x19\x9f\x33" ++ "\x09\xe1\x64\x55\xab\x1e\x96\x11\x8e\x8a\x90\x5d\x55\x97\xb7\x20" ++ "\x38\xdd\xb3\x72\xa8\x98\x26\x04\x6d\xe6\x66\x87\xbb\x42\x0e\x7c" }, ++ { "abcdefghijklmnopqrstuvwxyz", ++ "\x4d\xbf\xf8\x6c\xc2\xca\x1b\xae\x1e\x16\x46\x8a\x05\xcb\x98\x81" ++ "\xc9\x7f\x17\x53\xbc\xe3\x61\x90\x34\x89\x8f\xaa\x1a\xab\xe4\x29" ++ "\x95\x5a\x1b\xf8\xec\x48\x3d\x74\x21\xfe\x3c\x16\x46\x61\x3a\x59" ++ "\xed\x54\x41\xfb\x0f\x32\x13\x89\xf7\x7f\x48\xa8\x79\xc7\xb1\xf1" }, ++ { "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", ++ "\x20\x4a\x8f\xc6\xdd\xa8\x2f\x0a\x0c\xed\x7b\xeb\x8e\x08\xa4\x16" ++ "\x57\xc1\x6e\xf4\x68\xb2\x28\xa8\x27\x9b\xe3\x31\xa7\x03\xc3\x35" ++ "\x96\xfd\x15\xc1\x3b\x1b\x07\xf9\xaa\x1d\x3b\xea\x57\x78\x9c\xa0" ++ "\x31\xad\x85\xc7\xa7\x1d\xd7\x03\x54\xec\x63\x12\x38\xca\x34\x45" }, ++ { "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", ++ "\x1e\x07\xbe\x23\xc2\x6a\x86\xea\x37\xea\x81\x0c\x8e\xc7\x80\x93" ++ "\x52\x51\x5a\x97\x0e\x92\x53\xc2\x6f\x53\x6c\xfc\x7a\x99\x96\xc4" ++ "\x5c\x83\x70\x58\x3e\x0a\x78\xfa\x4a\x90\x04\x1d\x71\xa4\xce\xab" ++ "\x74\x23\xf1\x9c\x71\xb9\xd5\xa3\xe0\x12\x49\xf0\xbe\xbd\x58\x94" }, ++ { "123456789012345678901234567890123456789012345678901234567890" ++ "12345678901234567890", ++ "\x72\xec\x1e\xf1\x12\x4a\x45\xb0\x47\xe8\xb7\xc7\x5a\x93\x21\x95" ++ "\x13\x5b\xb6\x1d\xe2\x4e\xc0\xd1\x91\x40\x42\x24\x6e\x0a\xec\x3a" ++ "\x23\x54\xe0\x93\xd7\x6f\x30\x48\xb4\x56\x76\x43\x46\x90\x0c\xb1" ++ "\x30\xd2\xa4\xfd\x5d\xd1\x6a\xbb\x5e\x30\xbc\xb8\x50\xde\xe8\x43" } ++ }; ++#define ntests (sizeof (tests) / sizeof (tests[0])) ++ ++ ++static const struct ++{ ++ const char *salt; ++ const char *input; ++ const char *expected; ++} tests2[] = ++{ ++ { "$6$saltstring", "Hello world!", ++ "$6$saltstring$svn8UoSVapNtMuq1ukKS4tPQd8iKwSMHWjl/O817G3uBnIFNjnQJu" ++ "esI68u4OTLiBFdcbYEdFCoEOfaS35inz1" }, ++ { "$6$rounds=10000$saltstringsaltstring", "Hello world!", ++ "$6$rounds=10000$saltstringsaltst$OW1/O6BYHV6BcXZu8QVeXbDWra3Oeqh0sb" ++ "HbbMCVNSnCM/UrjmM0Dp8vOuZeHBy/YTBmSK6H9qs/y3RnOaw5v." }, ++ { "$6$rounds=5000$toolongsaltstring", "This is just a test", ++ "$6$rounds=5000$toolongsaltstrin$lQ8jolhgVRVhY4b5pZKaysCLi0QBxGoNeKQ" ++ "zQ3glMhwllF7oGDZxUhx1yxdYcz/e1JSbq3y6JMxxl8audkUEm0" }, ++ { "$6$rounds=1400$anotherlongsaltstring", ++ "a very much longer text to encrypt. This one even stretches over more" ++ "than one line.", ++ "$6$rounds=1400$anotherlongsalts$POfYwTEok97VWcjxIiSOjiykti.o/pQs.wP" ++ "vMxQ6Fm7I6IoYN3CmLs66x9t0oSwbtEW7o7UmJEiDwGqd8p4ur1" }, ++ { "$6$rounds=77777$short", ++ "we have a short salt string but not a short password", ++ "$6$rounds=77777$short$WuQyW2YR.hBNpjjRhpYD/ifIw05xdfeEyQoMxIXbkvr0g" ++ "ge1a1x3yRULJ5CCaUeOxFmtlcGZelFl5CxtgfiAc0" }, ++ { "$6$rounds=123456$asaltof16chars..", "a short string", ++ "$6$rounds=123456$asaltof16chars..$BtCwjqMJGx5hrJhZywWvt0RLE8uZ4oPwc" ++ "elCjmw2kSYu.Ec6ycULevoBK25fs2xXgMNrCzIMVcgEJAstJeonj1" }, ++ { "$6$rounds=10$roundstoolow", "the minimum number is still observed", ++ "$6$rounds=1000$roundstoolow$kUMsbe306n21p9R.FRkW3IGn.S9NPN0x50YhH1x" ++ "hLsPuWGsUSklZt58jaTfF4ZEQpyUNGc0dqbpBYYBaHHrsX." }, ++}; ++#define ntests2 (sizeof (tests2) / sizeof (tests2[0])) ++ ++ ++int ++sha512_test (void) ++{ ++ struct sha512_ctx ctx; ++ char sum[64]; ++ int result = 0; ++ int cnt, i; ++ ++ for (cnt = 0; cnt < (int) ntests; ++cnt) ++ { ++ sha512_init_ctx (&ctx); ++ sha512_process_bytes (tests[cnt].input, strlen (tests[cnt].input), &ctx); ++ sha512_finish_ctx (&ctx, sum); ++ if (memcmp (tests[cnt].result, sum, 64) != 0) ++ { ++ printf ("test %d run %d failed\n", cnt, 1); ++ result = 1; ++ } ++ ++ sha512_init_ctx (&ctx); ++ for (i = 0; tests[cnt].input[i] != '\0'; ++i) ++ sha512_process_bytes (&tests[cnt].input[i], 1, &ctx); ++ sha512_finish_ctx (&ctx, sum); ++ if (memcmp (tests[cnt].result, sum, 64) != 0) ++ { ++ printf ("test %d run %d failed\n", cnt, 2); ++ result = 1; ++ } ++ } ++ ++ /* Test vector from FIPS 180-2: appendix C.3. */ ++ char buf[1000]; ++ memset (buf, 'a', sizeof (buf)); ++ sha512_init_ctx (&ctx); ++ for (i = 0; i < 1000; ++i) ++ sha512_process_bytes (buf, sizeof (buf), &ctx); ++ sha512_finish_ctx (&ctx, sum); ++ static const char expected[64] = ++ "\xe7\x18\x48\x3d\x0c\xe7\x69\x64\x4e\x2e\x42\xc7\xbc\x15\xb4\x63" ++ "\x8e\x1f\x98\xb1\x3b\x20\x44\x28\x56\x32\xa8\x03\xaf\xa9\x73\xeb" ++ "\xde\x0f\xf2\x44\x87\x7e\xa6\x0a\x4c\xb0\x43\x2c\xe5\x77\xc3\x1b" ++ "\xeb\x00\x9c\x5c\x2c\x49\xaa\x2e\x4e\xad\xb2\x17\xad\x8c\xc0\x9b"; ++ if (memcmp (expected, sum, 64) != 0) ++ { ++ printf ("test %d failed\n", cnt); ++ result = 1; ++ } ++ ++ for (cnt = 0; cnt < ntests2; ++cnt) ++ { ++ char *cp = sha512_crypt (tests2[cnt].input, tests2[cnt].salt); ++ ++ if (strcmp (cp, tests2[cnt].expected) != 0) ++ { ++ printf ("test %d: expected "%s", got "%s"\n", ++ cnt, tests2[cnt].expected, cp); ++ result = 1; ++ } ++ } ++ ++ if (result == 0) ++ printf ("all tests OK\n"); ++ ++ return result; ++} ++#endif +diff --git a/stage2/shared.h b/stage2/shared.h +index 77eef11..b56b44b 100644 +--- a/stage2/shared.h ++++ b/stage2/shared.h +@@ -35,9 +35,10 @@ + #endif + + /* Maybe redirect memory requests through grub_scratch_mem. */ +-#ifdef GRUB_UTIL +-extern char *grub_scratch_mem; +-# define RAW_ADDR(x) ((x) + (int) grub_scratch_mem) ++#if defined(GRUB_UTIL) || defined(PLATFORM_EFI) ++#define GRUB_SCRATCH_MEM_SIZE 0x400000 ++extern void *grub_scratch_mem; ++# define RAW_ADDR(x) ((x) + (unsigned long) grub_scratch_mem) + # define RAW_SEG(x) (RAW_ADDR ((x) << 4) >> 4) + #else + # define RAW_ADDR(x) (x) +@@ -56,15 +57,15 @@ extern char *grub_scratch_mem; + #define NEW_HEAPSIZE 1500 + + /* 512-byte scratch area */ +-#define SCRATCHADDR RAW_ADDR (0x77e00) +-#define SCRATCHSEG RAW_SEG (0x77e0) ++#define SCRATCHADDR RAW_ADDR (0x77000) ++#define SCRATCHSEG RAW_SEG (0x7700) + + /* +- * This is the location of the raw device buffer. It is 31.5K ++ * This is the location of the raw device buffer. It is 28K + * in size. + */ + +-#define BUFFERLEN 0x7e00 ++#define BUFFERLEN 0x7000 + #define BUFFERADDR RAW_ADDR (0x70000) + #define BUFFERSEG RAW_SEG (0x7000) + +@@ -79,6 +80,8 @@ extern char *grub_scratch_mem; + #define BIOSDISK_FLAG_LBA_EXTENSION 0x1 + #define BIOSDISK_FLAG_CDROM 0x2 + ++#define MAX_HD_NUM 128 ++ + /* + * This is the filesystem (not raw device) buffer. + * It is 32K in size, do not overrun! +@@ -127,7 +130,7 @@ extern char *grub_scratch_mem; + #define MENU_BUFLEN (0x8000 + PASSWORD_BUF - MENU_BUF) + + /* The size of the drive map. */ +-#define DRIVE_MAP_SIZE 8 ++#define DRIVE_MAP_SIZE 128 + + /* The size of the key map. */ + #define KEY_MAP_SIZE 128 +@@ -160,16 +163,18 @@ extern char *grub_scratch_mem; + #define LINUX_VID_MODE_ASK 0xFFFD + + #define LINUX_CL_OFFSET 0x9000 +-#define LINUX_CL_END_OFFSET 0x90FF +-#define LINUX_SETUP_MOVE_SIZE 0x9100 ++#define LINUX_CL_END_OFFSET 0x97FF ++#define LINUX_SETUP_MOVE_SIZE 0x9800 + #define LINUX_CL_MAGIC 0xA33F + + /* + * General disk stuff + */ + ++#ifndef PLATFORM_EFI + #define SECTOR_SIZE 0x200 + #define SECTOR_BITS 9 ++#endif /* PLATFORM_EFI */ + #define BIOS_FLAG_FIXED_DISK 0x80 + + #define BOOTSEC_LOCATION RAW_ADDR (0x7C00) +@@ -200,6 +205,8 @@ extern char *grub_scratch_mem; + #define STAGE2_FORCE_LBA 0x11 + #define STAGE2_VER_STR_OFFS 0x12 + ++#define STAGE2_ONCEONLY_ENTRY 0x10000 ++ + /* Stage 2 identifiers */ + #define STAGE2_ID_STAGE2 0 + #define STAGE2_ID_FFS_STAGE1_5 1 +@@ -360,7 +367,7 @@ extern char *grub_scratch_mem; + #define memcpy grub_memmove /* we don't need a separate memcpy */ + #define memset grub_memset + #define isspace grub_isspace +-#define printf grub_printf ++#define printf(format...) grub_printf(format) + #define sprintf grub_sprintf + #undef putchar + #define putchar grub_putchar +@@ -371,14 +378,24 @@ extern char *grub_scratch_mem; + #define tolower grub_tolower + #define strlen grub_strlen + #define strcpy grub_strcpy ++#define stpncpy grub_stpncpy ++#define strspn grub_strspn ++#define strcspn grub_strcspn ++#define strtok_r grub_strtok_r ++#define strchr grub_strchr ++#define strrchr grub_strrchr ++#define strnchr grub_strnchr ++#define strncpy grub_strncpy ++#define strncasecmp grub_strncasecmp + #endif /* WITHOUT_LIBC_STUBS */ + +- + #ifndef ASM_FILE + /* + * Below this should be ONLY defines and other constructs for C code. + */ + ++#include <stdarg.h> ++ + /* multiboot stuff */ + + #include "mb_header.h" +@@ -400,30 +417,33 @@ struct linux_kernel_header + unsigned short root_dev; /* Default root device number */ + unsigned short boot_flag; /* 0xAA55 magic number */ + unsigned short jump; /* Jump instruction */ +- unsigned long header; /* Magic signature "HdrS" */ ++ unsigned int header; /* Magic signature "HdrS" */ + unsigned short version; /* Boot protocol version supported */ +- unsigned long realmode_swtch; /* Boot loader hook */ +- unsigned long start_sys; /* Points to kernel version string */ ++ unsigned int realmode_swtch; /* Boot loader hook */ ++ unsigned int start_sys; /* Points to kernel version string */ + unsigned char type_of_loader; /* Boot loader identifier */ + unsigned char loadflags; /* Boot protocol option flags */ + unsigned short setup_move_size; /* Move to high memory size */ +- unsigned long code32_start; /* Boot loader hook */ +- unsigned long ramdisk_image; /* initrd load address */ +- unsigned long ramdisk_size; /* initrd size */ +- unsigned long bootsect_kludge; /* obsolete */ ++ unsigned int code32_start; /* Boot loader hook */ ++ unsigned int ramdisk_image; /* initrd load address */ ++ unsigned int ramdisk_size; /* initrd size */ ++ unsigned int bootsect_kludge; /* obsolete */ + unsigned short heap_end_ptr; /* Free memory after setup end */ + unsigned short pad1; /* Unused */ + char *cmd_line_ptr; /* Points to the kernel command line */ +- unsigned long initrd_addr_max; /* The highest address of initrd */ ++ unsigned int initrd_addr_max; /* The highest address of initrd */ ++ unsigned int kernel_alignment; /* Physical addr alignment required for kernel */ ++ unsigned int relocatable_kernel; /* Whether kernel is relocatable or not */ ++ unsigned int cmdline_size; /* Maximum size of the kernel command line */ + } __attribute__ ((packed)); + + /* Memory map address range descriptor used by GET_MMAP_ENTRY. */ + struct mmar_desc + { +- unsigned long desc_len; /* Size of this descriptor. */ ++ unsigned int desc_len; /* Size of this descriptor. */ + unsigned long long addr; /* Base address. */ + unsigned long long length; /* Length in bytes. */ +- unsigned long type; /* Type of address range. */ ++ unsigned int type; /* Type of address range. */ + } __attribute__ ((packed)); + + /* VBE controller information. */ +@@ -600,6 +620,7 @@ typedef enum + { + PASSWORD_PLAIN, + PASSWORD_MD5, ++ PASSWORD_ENCRYPTED, + PASSWORD_UNSUPPORTED + } + password_t; +@@ -627,8 +648,16 @@ extern void (*disk_read_func) (int, int, int); + #ifndef STAGE1_5 + /* The flag for debug mode. */ + extern int debug; ++extern int debug_graphics; + #endif /* STAGE1_5 */ + ++/* Verbose mode flag. */ ++extern int grub_verbose; ++#define verbose_printf(format...) \ ++ do { if (grub_verbose) printf(format); } while (0) ++#define grub_verbose_printf(format...) \ ++ do { if (grub_verbose) grub_printf(format); } while (0) ++ + extern unsigned long current_drive; + extern unsigned long current_partition; + +@@ -666,6 +695,8 @@ extern struct geometry buf_geom; + extern int filepos; + extern int filemax; + ++extern int silent_grub; ++ + /* + * Common BIOS/boot data. + */ +@@ -804,11 +835,17 @@ int getkey (void); + available. */ + int checkkey (void); + ++/* Return keyboard modifier status. */ ++int ++keystatus (void); ++ + /* Low-level disk I/O */ + int get_diskinfo (int drive, struct geometry *geometry); + int biosdisk (int subfunc, int drive, struct geometry *geometry, + int sector, int nsec, int segment); + void stop_floppy (void); ++int get_sector_size (int drive); ++int get_sector_bits (int drive); + + /* Command-line interface functions. */ + #ifndef STAGE1_5 +@@ -860,17 +897,25 @@ void init_builtins (void); + void init_config (void); + char *skip_to (int after_equal, char *cmdline); + struct builtin *find_command (char *command); +-void print_cmdline_message (int forever); + void enter_cmdline (char *heap, int forever); + int run_script (char *script, char *heap); ++ ++/* the flags for the cmdline message */ ++#define CMDLINE_FOREVER_MODE 0x0 ++#define CMDLINE_NORMAL_MODE 0x1 ++#define CMDLINE_EDIT_MODE 0x2 ++ ++void print_cmdline_message (int type); + #endif + + /* C library replacement functions with identical semantics. */ +-void grub_printf (const char *format,...); ++int grub_vsprintf (char *str, const char *fmt, va_list args); ++void grub_printf (char *format,...); + int grub_sprintf (char *buffer, const char *format, ...); + int grub_tolower (int c); + int grub_isspace (int c); + int grub_strncat (char *s1, const char *s2, int n); ++void grub_memcpy(void *dest, const void *src, int len); + void *grub_memmove (void *to, const void *from, int len); + void *grub_memset (void *start, int c, int len); + int grub_strncat (char *s1, const char *s2, int n); +@@ -879,9 +924,19 @@ int grub_memcmp (const char *s1, const char *s2, int n); + int grub_strcmp (const char *s1, const char *s2); + int grub_strlen (const char *str); + char *grub_strcpy (char *dest, const char *src); ++char *grub_stpncpy (char *dest, const char *src, int n); ++int grub_strspn(const char *s, const char *accept); ++int grub_strcspn(const char *s, const char *reject); ++char *grub_strtok_r(char *s, const char *delim, char **ptrptr); ++char *grub_strchr (const char *s, int c); ++char *grub_strrchr (const char *s, int c); ++char *grub_strnchr (const char *s, int c); ++int grub_strnlen (const char *s, int n); ++char *grub_strncpy (char *new, const char *s, int n); ++int grub_strncasecmp(const char *s0, const char *s1, int n); + + #ifndef GRUB_UTIL +-typedef unsigned long grub_jmp_buf[6]; ++typedef unsigned long grub_jmp_buf[8]; + #else + /* In the grub shell, use the libc jmp_buf instead. */ + # include <setjmp.h> +@@ -904,10 +959,11 @@ extern grub_jmp_buf restart_cmdline_env; + /* misc */ + void init_page (void); + void print_error (void); +-char *convert_to_ascii (char *buf, int c, ...); ++char *convert_to_ascii (char *buf, int c, unsigned int num); + int get_cmdline (char *prompt, char *cmdline, int maxlen, + int echo_char, int history); + int substring (const char *s1, const char *s2); ++int subcasestring (const char *s1, const char *s2); + int nul_terminate (char *str); + int get_based_digit (int c, int base); + int safe_parse_maxint (char **str_ptr, int *myint_ptr); +@@ -934,7 +990,9 @@ int next_partition (unsigned long drive, unsigned long dest, + unsigned long *partition, int *type, + unsigned long *start, unsigned long *len, + unsigned long *offset, int *entry, +- unsigned long *ext_offset, char *buf); ++ unsigned long *ext_offset, ++ unsigned long *gpt_offset, int *gpt_count, ++ int *gpt_size, char *buf); + + /* Sets device to the one represented by the SAVED_* parameters. */ + int make_saved_active (void); +@@ -962,6 +1020,8 @@ int dir (char *dirname); + + int set_bootdev (int hdbias); + ++char *get_fsys_type (void); ++ + /* Display statistics on the current active device. */ + void print_fsys_type (void); + +@@ -987,10 +1047,22 @@ int load_module (char *module, char *arg); + int load_initrd (char *initrd); + + int check_password(char *entered, char* expected, password_t type); ++ ++char *sha256_crypt (const char *key, const char *salt); ++char *sha512_crypt (const char *key, const char *salt); + #endif + + void init_bios_info (void); + ++#ifdef PLATFORM_EFI ++void grub_set_config_file (char *path_name); ++int grub_save_saved_default (int new_default); ++extern int check_device (const char *device); ++extern void assign_device_name (int drive, const char *device); ++#endif ++int grub_load_linux (char *kernel, char *arg); ++int grub_load_initrd (char *initrd); ++int grub_chainloader (char *filename); + #endif /* ASM_FILE */ + + #endif /* ! GRUB_SHARED_HEADER */ +diff --git a/stage2/smp-imps.h b/stage2/smp-imps.h +index c0fdce3..bae9b77 100644 +--- a/stage2/smp-imps.h ++++ b/stage2/smp-imps.h +@@ -196,7 +196,6 @@ struct imps_interrupt + + int imps_probe (void); + +- + /* + * Defines that use variables + */ +diff --git a/stage2/stage1_5.c b/stage2/stage1_5.c +index 5c45d4c..c2d9632 100644 +--- a/stage2/stage1_5.c ++++ b/stage2/stage1_5.c +@@ -30,7 +30,8 @@ disk_read_savesect_func (int sector, int offset, int length) + void + cmain (void) + { +- grub_printf ("\n\nGRUB loading, please wait...\n"); ++ if (0) ++ grub_printf ("\n\nGRUB loading, please wait...\n"); + + /* + * Here load the true second-stage boot-loader. +diff --git a/stage2/stage2.c b/stage2/stage2.c +index 4dbf6f5..cca4332 100644 +--- a/stage2/stage2.c ++++ b/stage2/stage2.c +@@ -22,6 +22,8 @@ + + grub_jmp_buf restart_env; + ++int silent_grub = 0; ++ + #if defined(PRESET_MENU_STRING) || defined(SUPPORT_DISKLESS) + + # if defined(PRESET_MENU_STRING) +@@ -233,6 +235,10 @@ run_menu (char *menu_entries, char *config_entries, int num_entries, + { + int c, time1, time2 = -1, first_entry = 0; + char *cur_entry = 0; ++ struct term_entry *prev_term = NULL; ++ ++ if (grub_verbose) ++ cls(); + + /* + * Main loop for menu UI. +@@ -254,18 +260,33 @@ restart: + interface. */ + if (grub_timeout < 0) + show_menu = 1; +- ++ + /* If SHOW_MENU is false, don't display the menu until ESC is pressed. */ + if (! show_menu) + { ++ /* Don't show the "Booting in blah seconds message" if the timeout is 0 */ ++ int print_message = grub_timeout != 0; ++ + /* Get current time. */ + while ((time1 = getrtsecs ()) == 0xFF) + ; + ++ if (print_message) ++ grub_printf("\rPress any key to enter the menu\n\n\n"); ++ + while (1) + { +- /* Check if ESC is pressed. */ +- if (checkkey () != -1 && ASCII_CHAR (getkey ()) == '\e') ++ /* Check if any key is pressed */ ++ if (checkkey () != -1) ++ { ++ grub_timeout = -1; ++ show_menu = 1; ++ getkey (); ++ break; ++ } ++ ++ /* See if a modifier key is held down. */ ++ if (keystatus () != 0) + { + grub_timeout = -1; + show_menu = 1; +@@ -287,8 +308,10 @@ restart: + grub_timeout--; + + /* Print a message. */ +- grub_printf ("\rPress `ESC' to enter the menu... %d ", +- grub_timeout); ++ if (print_message) ++ grub_printf ("\rBooting %s in %d seconds...", ++ get_entry(menu_entries, first_entry + entryno, 0), ++ grub_timeout); + } + } + } +@@ -319,7 +342,8 @@ restart: + if (config_entries) + printf ("\ + Press enter to boot the selected OS, 'e' to edit the\n\ +- commands before booting, or 'c' for a command-line."); ++ commands before booting, 'a' to modify the kernel arguments\n\ ++ before booting, or 'c' for a command-line."); + else + printf ("\ + Press 'b' to boot, 'e' to edit the selected command in the\n\ +@@ -514,7 +538,7 @@ restart: + if (c == 'O') + { + grub_memmove (cur_entry + 2, cur_entry, +- ((int) heap) - ((int) cur_entry)); ++ heap - cur_entry); + + cur_entry[0] = ' '; + cur_entry[1] = 0; +@@ -530,8 +554,8 @@ restart: + 0); + + grub_memmove (cur_entry, ptr, +- ((int) heap) - ((int) ptr)); +- heap -= (((int) ptr) - ((int) cur_entry)); ++ heap - ptr); ++ heap -= ptr - cur_entry; + + num_entries--; + +@@ -655,7 +679,7 @@ restart: + else + { + cls (); +- print_cmdline_message (0); ++ print_cmdline_message (CMDLINE_EDIT_MODE); + + new_heap = heap + NEW_HEAPSIZE + 1; + +@@ -681,7 +705,7 @@ restart: + + /* align rest of commands properly */ + grub_memmove (cur_entry + j, cur_entry + i, +- (int) heap - ((int) cur_entry + i)); ++ (unsigned long) heap - ((unsigned long) cur_entry + i)); + + /* copy command to correct area */ + grub_memmove (cur_entry, new_heap, j); +@@ -697,6 +721,98 @@ restart: + enter_cmdline (heap, 0); + goto restart; + } ++ if (config_entries && c == 'a') ++ { ++ int new_num_entries = 0, i = 0, j; ++ int needs_padding, amount; ++ char *new_heap; ++ char * entries; ++ char * entry_copy; ++ char * append_line; ++ char * start; ++ ++ entry_copy = new_heap = heap; ++ cur_entry = get_entry (config_entries, first_entry + entryno, ++ 1); ++ ++ do ++ { ++ while ((*(new_heap++) = cur_entry[i++]) != 0); ++ new_num_entries++; ++ } ++ while (config_entries && cur_entry[i]); ++ ++ /* this only needs to be done if config_entries is non-NULL, ++ but it doesn't hurt to do it always */ ++ *(new_heap++) = 0; ++ ++ new_heap = heap + NEW_HEAPSIZE + 1; ++ ++ entries = entry_copy; ++ while (*entries) ++ { ++ if ((strstr(entries, "kernel") == entries) && ++ isspace(entries[6])) ++ break; ++ ++ while (*entries) entries++; ++ entries++; ++ } ++ ++ if (!*entries) ++ goto restart; ++ ++ start = entries + 6; ++ ++ /* skip the white space */ ++ while (*start && isspace(*start)) start++; ++ /* skip the kernel name */ ++ while (*start && !isspace(*start)) start++; ++ ++ /* skip the white space */ ++ needs_padding = (!*start || !isspace(*start)); ++ while (*start && isspace(*start)) start++; ++ ++ append_line = new_heap; ++ grub_strcpy(append_line, start); ++ ++ cls(); ++ print_cmdline_message (CMDLINE_EDIT_MODE); ++ ++ if (get_cmdline(PACKAGE " append> ", ++ append_line, NEW_HEAPSIZE + 1, ++ 0, 1)) ++ goto restart; ++ ++ /* have new args; append_line points to the ++ new args and start points to the old ++ args */ ++ ++ i = grub_strlen(start); ++ j = grub_strlen(append_line); ++ ++ if (i > (j + needs_padding)) ++ amount = i; ++ else ++ amount = j + needs_padding; ++ ++ /* align rest of commands properly */ ++ memmove (start + j + needs_padding, start + i, ++ ((unsigned long) append_line) - ((unsigned long) start) - (amount)); ++ ++ if (needs_padding) ++ *start = ' '; ++ ++ /* copy command to correct area */ ++ memmove (start + needs_padding, append_line, j); ++ ++ /* set up this entry to boot */ ++ config_entries = NULL; ++ cur_entry = entry_copy; ++ heap = new_heap; ++ ++ break; ++ } + #ifdef GRUB_UTIL + if (c == 'q') + { +@@ -712,16 +828,31 @@ restart: + + boot_entry: + +- cls (); +- setcursor (1); ++ if (grub_verbose || show_menu) ++ { ++ cls (); ++ setcursor (1); ++ } ++ /* if our terminal needed initialization, we should shut it down ++ * before booting the kernel, but we want to save what it was so ++ * we can come back if needed */ ++ prev_term = current_term; ++ if (current_term->shutdown) ++ { ++ (*current_term->shutdown)(); ++ current_term = term_table; /* assumption: console is first */ ++ } ++ ++ if (silent_grub) ++ setcursor(0); + + while (1) + { + if (config_entries) +- printf (" Booting '%s'\n\n", ++ verbose_printf (" Booting '%s'\n\n", + get_entry (menu_entries, first_entry + entryno, 0)); + else +- printf (" Booting command-list\n\n"); ++ verbose_printf (" Booting command-list\n\n"); + + if (! cur_entry) + cur_entry = get_entry (config_entries, first_entry + entryno, 1); +@@ -748,6 +879,13 @@ restart: + break; + } + ++ /* if we get back here, we should go back to what our term was before */ ++ current_term = prev_term; ++ if (current_term->startup) ++ /* if our terminal fails to initialize, fall back to console since ++ * it should always work */ ++ if ((*current_term->startup)() == 0) ++ current_term = term_table; /* we know that console is first */ + show_menu = 1; + goto restart; + } +@@ -867,38 +1005,8 @@ cmain (void) + if (use_config_file) + #endif /* GRUB_UTIL */ + { +- char *default_file = (char *) DEFAULT_FILE_BUF; + int i; +- +- /* Get a saved default entry if possible. */ +- saved_entryno = 0; +- *default_file = 0; +- grub_strncat (default_file, config_file, DEFAULT_FILE_BUFLEN); +- for (i = grub_strlen(default_file); i >= 0; i--) +- if (default_file[i] == '/') +- { +- i++; +- break; +- } +- default_file[i] = 0; +- grub_strncat (default_file + i, "default", DEFAULT_FILE_BUFLEN - i); +- if (grub_open (default_file)) +- { +- char buf[10]; /* This is good enough. */ +- char *p = buf; +- int len; +- +- len = grub_read (buf, sizeof (buf)); +- if (len > 0) +- { +- buf[sizeof (buf) - 1] = 0; +- safe_parse_maxint (&p, &saved_entryno); +- } + +- grub_close (); +- } +- errnum = ERR_NONE; +- + do + { + /* STATE 0: Before any title command. +@@ -1050,11 +1158,16 @@ cmain (void) + while (is_preset); + } + ++ /* go ahead and make sure the terminal is setup */ ++ if (current_term->startup) ++ (*current_term->startup)(); ++ + if (! num_entries) + { + /* If no acceptable config file, goto command-line, starting + heap from where the config entries would have been stored + if there were any. */ ++ grub_verbose = 1; + enter_cmdline (config_entries, 1); + } + else +diff --git a/stage2/start.S b/stage2/start.S +index 9a7d504..7a6652f 100644 +--- a/stage2/start.S ++++ b/stage2/start.S +@@ -39,6 +39,9 @@ + + /* Print message string */ + #define MSG(x) movw $ABS(x), %si; call message ++ ++ /* Print verbose message string */ ++#define VMSG(x) + + .file "start.S" + +@@ -67,9 +70,9 @@ _start: + + /* print a notification message on the screen */ + pushw %si +- MSG(notification_string) ++ VMSG(notification_string) + popw %si +- ++ + /* this sets up for the first run through "bootloop" */ + movw $ABS(firstlist - BOOTSEC_LISTSIZE), %di + +@@ -291,9 +294,9 @@ copy_buffer: + movsb /* this runs the actual copy */ + + /* restore addressing regs and print a dot with correct DS +- (MSG modifies SI, which is saved, and unused AX and BX) */ ++ (VMSG modifies SI, which is saved, and unused AX and BX) */ + popw %ds +- MSG(notification_step) ++ VMSG(notification_step) + popa + + /* check if finished with this dataset */ +@@ -310,7 +313,7 @@ copy_buffer: + + bootit: + /* print a newline */ +- MSG(notification_done) ++ VMSG(notification_done) + popw %dx /* this makes sure %dl is our "boot" drive */ + #ifdef STAGE1_5 + ljmp $0, $0x2200 +diff --git a/stage2/term.h b/stage2/term.h +index 8261c7c..803de58 100644 +--- a/stage2/term.h ++++ b/stage2/term.h +@@ -54,18 +54,28 @@ typedef enum + /* Set when the terminal needs to be initialized. */ + #define TERM_NEED_INIT (1 << 16) + ++/* Bitmasks for modifier keys returned by term->keystatus(). */ ++#define TERM_STATUS_ALT (1 << 3) ++#define TERM_STATUS_CTRL (1 << 2) ++#define TERM_STATUS_LEFT_SHIFT (1 << 1) ++#define TERM_STATUS_RIGHT_SHIFT (1 << 0) ++ + struct term_entry + { + /* The name of a terminal. */ + const char *name; + /* The feature flags defined above. */ + unsigned long flags; ++ /* Default for maximum number of lines if not specified */ ++ unsigned short max_lines; + /* Put a character. */ + void (*putchar) (int c); + /* Check if any input character is available. */ + int (*checkkey) (void); + /* Get a character. */ + int (*getkey) (void); ++ /* Get keyboard modifier status. */ ++ int (*keystatus) (void); + /* Get the cursor position. The return value is ((X << 8) | Y). */ + int (*getxy) (void); + /* Go to the position (X, Y). */ +@@ -79,6 +89,11 @@ struct term_entry + void (*setcolor) (int normal_color, int highlight_color); + /* Turn on/off the cursor. */ + int (*setcursor) (int on); ++ ++ /* function to start a terminal */ ++ int (*startup) (void); ++ /* function to use to shutdown a terminal */ ++ void (*shutdown) (void); + }; + + /* This lists up available terminals. */ +@@ -96,6 +111,7 @@ void console_putchar (int c); + #ifndef STAGE1_5 + int console_checkkey (void); + int console_getkey (void); ++int console_keystatus (void); + int console_getxy (void); + void console_gotoxy (int x, int y); + void console_cls (void); +@@ -124,4 +140,23 @@ void hercules_setcolor (int normal_color, int highlight_color); + int hercules_setcursor (int on); + #endif + ++#ifdef SUPPORT_GRAPHICS ++extern int foreground, background, border, graphics_inited; ++ ++void graphics_set_splash(char *splashfile); ++int set_videomode (int mode); ++void graphics_putchar (int c); ++int graphics_getxy(void); ++void graphics_gotoxy(int x, int y); ++void graphics_cls(void); ++void graphics_setcolorstate (color_state state); ++void graphics_setcolor (int normal_color, int highlight_color); ++int graphics_setcursor (int on); ++int graphics_init(void); ++void graphics_end(void); ++ ++int hex(int v); ++void graphics_set_palette(int idx, int red, int green, int blue); ++#endif /* SUPPORT_GRAPHICS */ ++ + #endif /* ! GRUB_TERM_HEADER */ +diff --git a/stage2/tparm.c b/stage2/tparm.c +index ff78d53..408b284 100644 +--- a/stage2/tparm.c ++++ b/stage2/tparm.c +@@ -320,7 +320,7 @@ parse_format(const char *s, char *format, int *len) + #define isLOWER(c) ((c) >= 'a' && (c) <= 'z') + + static inline char * +-tparam_internal(const char *string, int *dataptr) ++tparam_internal(const char *string, va_list args) + { + #define NUM_VARS 26 + char *p_is_s[9]; +@@ -461,9 +461,9 @@ tparam_internal(const char *string, int *dataptr) + * a char* and an int may not be the same size on the stack. + */ + if (p_is_s[i] != 0) { +- p_is_s[i] = (char *)(*(dataptr++)); ++ p_is_s[i] = va_arg (args, char *); + } else { +- param[i] = (int)(*(dataptr++)); ++ param[i] = va_arg (args, int); + } + } + +@@ -716,11 +716,11 @@ char * + grub_tparm(const char *string,...) + { + char *result; +- int *dataptr = (int *) &string; ++ va_list ap; + +- dataptr++; +- +- result = tparam_internal(string, dataptr); ++ va_start (ap, string); ++ result = tparam_internal(string, ap); ++ va_end(ap); + + return result; + } +diff --git a/test b/test +new file mode 100644 +index 0000000..b182379 +--- /dev/null ++++ b/test +@@ -0,0 +1 @@ ++fo of fo +diff --git a/util/.gitignore b/util/.gitignore +new file mode 100644 +index 0000000..6687356 +--- /dev/null ++++ b/util/.gitignore +@@ -0,0 +1,7 @@ ++Makefile.in ++Makefile ++.deps ++grub-image ++grub-install ++grub-md5-crypt ++grub-terminfo +diff --git a/util/Makefile.am b/util/Makefile.am +index 2e04711..fa545b1 100644 +--- a/util/Makefile.am ++++ b/util/Makefile.am +@@ -1,6 +1,7 @@ ++if !PLATFORM_EFI ++ + bin_PROGRAMS = mbchk +-sbin_SCRIPTS = grub-install grub-md5-crypt grub-terminfo \ +- grub-set-default ++sbin_SCRIPTS = grub-install grub-md5-crypt grub-terminfo grub-crypt + noinst_SCRIPTS = grub-image mkbimage + + EXTRA_DIST = mkbimage +@@ -10,3 +11,9 @@ AM_CFLAGS = -I$(top_srcdir)/lib -I$(top_srcdir)/docs + + mbchk_SOURCES = mbchk.c + mbchk_LDADD = ../lib/libcommon.a ++ ++else ++ ++sbin_SCRIPTS = grub-md5-crypt grub-terminfo grub-crypt ++ ++endif +diff --git a/util/Makefile.in b/util/Makefile.in +deleted file mode 100644 +index e700cf7..0000000 +--- a/util/Makefile.in ++++ /dev/null +@@ -1,478 +0,0 @@ +-# Makefile.in generated by automake 1.9.4 from Makefile.am. +-# @configure_input@ +- +-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +-# 2003, 2004 Free Software Foundation, Inc. +-# This Makefile.in is free software; the Free Software Foundation +-# gives unlimited permission to copy and/or distribute it, +-# with or without modifications, as long as this notice is preserved. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +-# PARTICULAR PURPOSE. +- +-@SET_MAKE@ +- +- +-SOURCES = $(mbchk_SOURCES) +- +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ +-VPATH = @srcdir@ +-pkgdatadir = $(datadir)/@PACKAGE@ +-pkglibdir = $(libdir)/@PACKAGE@ +-pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = .. +-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ +-install_sh_DATA = $(install_sh) -c -m 644 +-install_sh_PROGRAM = $(install_sh) -c +-install_sh_SCRIPT = $(install_sh) -c +-INSTALL_HEADER = $(INSTALL_DATA) +-transform = $(program_transform_name) +-NORMAL_INSTALL = : +-PRE_INSTALL = : +-POST_INSTALL = : +-NORMAL_UNINSTALL = : +-PRE_UNINSTALL = : +-POST_UNINSTALL = : +-build_triplet = @build@ +-host_triplet = @host@ +-bin_PROGRAMS = mbchk$(EXEEXT) +-subdir = util +-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ +- $(srcdir)/grub-image.in $(srcdir)/grub-install.in \ +- $(srcdir)/grub-md5-crypt.in $(srcdir)/grub-set-default.in \ +- $(srcdir)/grub-terminfo.in +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ +- $(top_srcdir)/configure.ac +-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ +- $(ACLOCAL_M4) +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/config.h +-CONFIG_CLEAN_FILES = grub-image grub-install grub-md5-crypt \ +- grub-terminfo grub-set-default +-am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(sbindir)" +-binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +-PROGRAMS = $(bin_PROGRAMS) +-am_mbchk_OBJECTS = mbchk.$(OBJEXT) +-mbchk_OBJECTS = $(am_mbchk_OBJECTS) +-mbchk_DEPENDENCIES = ../lib/libcommon.a +-sbinSCRIPT_INSTALL = $(INSTALL_SCRIPT) +-SCRIPTS = $(noinst_SCRIPTS) $(sbin_SCRIPTS) +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-am__depfiles_maybe = depfiles +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-SOURCES = $(mbchk_SOURCES) +-DIST_SOURCES = $(mbchk_SOURCES) +-ETAGS = etags +-CTAGS = ctags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +-ACLOCAL = @ACLOCAL@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ +-AMTAR = @AMTAR@ +-AUTOCONF = @AUTOCONF@ +-AUTOHEADER = @AUTOHEADER@ +-AUTOMAKE = @AUTOMAKE@ +-AWK = @AWK@ +-BUILD_EXAMPLE_KERNEL_FALSE = @BUILD_EXAMPLE_KERNEL_FALSE@ +-BUILD_EXAMPLE_KERNEL_TRUE = @BUILD_EXAMPLE_KERNEL_TRUE@ +-CC = @CC@ +-CCAS = @CCAS@ +-CCASFLAGS = @CCASFLAGS@ +-CCDEPMODE = @CCDEPMODE@ +-CFLAGS = @CFLAGS@ +-CPP = @CPP@ +-CPPFLAGS = @CPPFLAGS@ +-CYGPATH_W = @CYGPATH_W@ +-DEFS = @DEFS@ +-DEPDIR = @DEPDIR@ +-DISKLESS_SUPPORT_FALSE = @DISKLESS_SUPPORT_FALSE@ +-DISKLESS_SUPPORT_TRUE = @DISKLESS_SUPPORT_TRUE@ +-ECHO_C = @ECHO_C@ +-ECHO_N = @ECHO_N@ +-ECHO_T = @ECHO_T@ +-EGREP = @EGREP@ +-EXEEXT = @EXEEXT@ +-FSYS_CFLAGS = @FSYS_CFLAGS@ +-GRUB_CFLAGS = @GRUB_CFLAGS@ +-GRUB_LIBS = @GRUB_LIBS@ +-HERCULES_SUPPORT_FALSE = @HERCULES_SUPPORT_FALSE@ +-HERCULES_SUPPORT_TRUE = @HERCULES_SUPPORT_TRUE@ +-INSTALL_DATA = @INSTALL_DATA@ +-INSTALL_PROGRAM = @INSTALL_PROGRAM@ +-INSTALL_SCRIPT = @INSTALL_SCRIPT@ +-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +-LDFLAGS = @LDFLAGS@ +-LIBOBJS = @LIBOBJS@ +-LIBS = @LIBS@ +-LTLIBOBJS = @LTLIBOBJS@ +-MAINT = @MAINT@ +-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +-MAKEINFO = @MAKEINFO@ +-NETBOOT_DRIVERS = @NETBOOT_DRIVERS@ +-NETBOOT_SUPPORT_FALSE = @NETBOOT_SUPPORT_FALSE@ +-NETBOOT_SUPPORT_TRUE = @NETBOOT_SUPPORT_TRUE@ +-NET_CFLAGS = @NET_CFLAGS@ +-NET_EXTRAFLAGS = @NET_EXTRAFLAGS@ +-OBJCOPY = @OBJCOPY@ +-OBJEXT = @OBJEXT@ +-PACKAGE = @PACKAGE@ +-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +-PACKAGE_NAME = @PACKAGE_NAME@ +-PACKAGE_STRING = @PACKAGE_STRING@ +-PACKAGE_TARNAME = @PACKAGE_TARNAME@ +-PACKAGE_VERSION = @PACKAGE_VERSION@ +-PATH_SEPARATOR = @PATH_SEPARATOR@ +-PERL = @PERL@ +-RANLIB = @RANLIB@ +-SERIAL_SPEED_SIMULATION_FALSE = @SERIAL_SPEED_SIMULATION_FALSE@ +-SERIAL_SPEED_SIMULATION_TRUE = @SERIAL_SPEED_SIMULATION_TRUE@ +-SERIAL_SUPPORT_FALSE = @SERIAL_SUPPORT_FALSE@ +-SERIAL_SUPPORT_TRUE = @SERIAL_SUPPORT_TRUE@ +-SET_MAKE = @SET_MAKE@ +-SHELL = @SHELL@ +-STAGE1_CFLAGS = @STAGE1_CFLAGS@ +-STAGE2_CFLAGS = @STAGE2_CFLAGS@ +-STRIP = @STRIP@ +-VERSION = @VERSION@ +-ac_ct_CC = @ac_ct_CC@ +-ac_ct_OBJCOPY = @ac_ct_OBJCOPY@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__include = @am__include@ +-am__leading_dot = @am__leading_dot@ +-am__quote = @am__quote@ +-am__tar = @am__tar@ +-am__untar = @am__untar@ +-bindir = @bindir@ +-build = @build@ +-build_alias = @build_alias@ +-build_cpu = @build_cpu@ +-build_os = @build_os@ +-build_vendor = @build_vendor@ +-datadir = @datadir@ +-exec_prefix = @exec_prefix@ +-host = @host@ +-host_alias = @host_alias@ +-host_cpu = @host_cpu@ +-host_os = @host_os@ +-host_vendor = @host_vendor@ +-includedir = @includedir@ +-infodir = @infodir@ +-install_sh = @install_sh@ +-libdir = @libdir@ +-libexecdir = @libexecdir@ +-localstatedir = @localstatedir@ +-mandir = @mandir@ +-mkdir_p = @mkdir_p@ +-oldincludedir = @oldincludedir@ +-prefix = @prefix@ +-program_transform_name = @program_transform_name@ +-sbindir = @sbindir@ +-sharedstatedir = @sharedstatedir@ +-sysconfdir = @sysconfdir@ +-target_alias = @target_alias@ +-sbin_SCRIPTS = grub-install grub-md5-crypt grub-terminfo \ +- grub-set-default +- +-noinst_SCRIPTS = grub-image mkbimage +-EXTRA_DIST = mkbimage +- +-# XXX: Need to search for a header file in docs, because of multiboot.h. +-AM_CFLAGS = -I$(top_srcdir)/lib -I$(top_srcdir)/docs +-mbchk_SOURCES = mbchk.c +-mbchk_LDADD = ../lib/libcommon.a +-all: all-am +- +-.SUFFIXES: +-.SUFFIXES: .c .o .obj +-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) +- @for dep in $?; do \ +- case '$(am__configure_deps)' in \ +- *$$dep*) \ +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +- && exit 0; \ +- exit 1;; \ +- esac; \ +- done; \ +- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu util/Makefile'; \ +- cd $(top_srcdir) && \ +- $(AUTOMAKE) --gnu util/Makefile +-.PRECIOUS: Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- @case '$?' in \ +- *config.status*) \ +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ +- *) \ +- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ +- esac; +- +-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +- +-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +-grub-image: $(top_builddir)/config.status $(srcdir)/grub-image.in +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +-grub-install: $(top_builddir)/config.status $(srcdir)/grub-install.in +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +-grub-md5-crypt: $(top_builddir)/config.status $(srcdir)/grub-md5-crypt.in +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +-grub-terminfo: $(top_builddir)/config.status $(srcdir)/grub-terminfo.in +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +-grub-set-default: $(top_builddir)/config.status $(srcdir)/grub-set-default.in +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +-install-binPROGRAMS: $(bin_PROGRAMS) +- @$(NORMAL_INSTALL) +- test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" +- @list='$(bin_PROGRAMS)'; for p in $$list; do \ +- p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ +- if test -f $$p \ +- ; then \ +- f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ +- echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ +- $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ +- else :; fi; \ +- done +- +-uninstall-binPROGRAMS: +- @$(NORMAL_UNINSTALL) +- @list='$(bin_PROGRAMS)'; for p in $$list; do \ +- f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ +- echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ +- rm -f "$(DESTDIR)$(bindir)/$$f"; \ +- done +- +-clean-binPROGRAMS: +- -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) +-mbchk$(EXEEXT): $(mbchk_OBJECTS) $(mbchk_DEPENDENCIES) +- @rm -f mbchk$(EXEEXT) +- $(LINK) $(mbchk_LDFLAGS) $(mbchk_OBJECTS) $(mbchk_LDADD) $(LIBS) +-install-sbinSCRIPTS: $(sbin_SCRIPTS) +- @$(NORMAL_INSTALL) +- test -z "$(sbindir)" || $(mkdir_p) "$(DESTDIR)$(sbindir)" +- @list='$(sbin_SCRIPTS)'; for p in $$list; do \ +- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ +- if test -f $$d$$p; then \ +- f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ +- echo " $(sbinSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(sbindir)/$$f'"; \ +- $(sbinSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(sbindir)/$$f"; \ +- else :; fi; \ +- done +- +-uninstall-sbinSCRIPTS: +- @$(NORMAL_UNINSTALL) +- @list='$(sbin_SCRIPTS)'; for p in $$list; do \ +- f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ +- echo " rm -f '$(DESTDIR)$(sbindir)/$$f'"; \ +- rm -f "$(DESTDIR)$(sbindir)/$$f"; \ +- done +- +-mostlyclean-compile: +- -rm -f *.$(OBJEXT) +- +-distclean-compile: +- -rm -f *.tab.c +- +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbchk.Po@am__quote@ +- +-.c.o: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c $< +- +-.c.obj: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +-uninstall-info-am: +- +-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- mkid -fID $$unique +-tags: TAGS +- +-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ +- $(TAGS_FILES) $(LISP) +- tags=; \ +- here=`pwd`; \ +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ +- test -n "$$unique" || unique=$$empty_fix; \ +- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique; \ +- fi +-ctags: CTAGS +-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ +- $(TAGS_FILES) $(LISP) +- tags=; \ +- here=`pwd`; \ +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- test -z "$(CTAGS_ARGS)$$tags$$unique" \ +- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ +- $$tags $$unique +- +-GTAGS: +- here=`$(am__cd) $(top_builddir) && pwd` \ +- && cd $(top_srcdir) \ +- && gtags -i $(GTAGS_ARGS) $$here +- +-distclean-tags: +- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +- +-distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ +- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkdir_p) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ +- if test -d $$d/$$file; then \ +- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ +- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ +- fi; \ +- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ +- else \ +- test -f $(distdir)/$$file \ +- || cp -p $$d/$$file $(distdir)/$$file \ +- || exit 1; \ +- fi; \ +- done +-check-am: all-am +-check: check-am +-all-am: Makefile $(PROGRAMS) $(SCRIPTS) +-installdirs: +- for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(sbindir)"; do \ +- test -z "$$dir" || $(mkdir_p) "$$dir"; \ +- done +-install: install-am +-install-exec: install-exec-am +-install-data: install-data-am +-uninstall: uninstall-am +- +-install-am: all-am +- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +- +-installcheck: installcheck-am +-install-strip: +- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ +- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ +- `test -z '$(STRIP)' || \ +- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +-mostlyclean-generic: +- +-clean-generic: +- +-distclean-generic: +- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) +- +-maintainer-clean-generic: +- @echo "This command is intended for maintainers to use" +- @echo "it deletes files that may require special tools to rebuild." +-clean: clean-am +- +-clean-am: clean-binPROGRAMS clean-generic mostlyclean-am +- +-distclean: distclean-am +- -rm -rf ./$(DEPDIR) +- -rm -f Makefile +-distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-tags +- +-dvi: dvi-am +- +-dvi-am: +- +-html: html-am +- +-info: info-am +- +-info-am: +- +-install-data-am: +- +-install-exec-am: install-binPROGRAMS install-sbinSCRIPTS +- +-install-info: install-info-am +- +-install-man: +- +-installcheck-am: +- +-maintainer-clean: maintainer-clean-am +- -rm -rf ./$(DEPDIR) +- -rm -f Makefile +-maintainer-clean-am: distclean-am maintainer-clean-generic +- +-mostlyclean: mostlyclean-am +- +-mostlyclean-am: mostlyclean-compile mostlyclean-generic +- +-pdf: pdf-am +- +-pdf-am: +- +-ps: ps-am +- +-ps-am: +- +-uninstall-am: uninstall-binPROGRAMS uninstall-info-am \ +- uninstall-sbinSCRIPTS +- +-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ +- clean-generic ctags distclean distclean-compile \ +- distclean-generic distclean-tags distdir dvi dvi-am html \ +- html-am info info-am install install-am install-binPROGRAMS \ +- install-data install-data-am install-exec install-exec-am \ +- install-info install-info-am install-man install-sbinSCRIPTS \ +- install-strip installcheck installcheck-am installdirs \ +- maintainer-clean maintainer-clean-generic mostlyclean \ +- mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ +- tags uninstall uninstall-am uninstall-binPROGRAMS \ +- uninstall-info-am uninstall-sbinSCRIPTS +- +-# Tell versions [3.59,3.63) of GNU make to not export all variables. +-# Otherwise a system limit (for SysV at least) may be exceeded. +-.NOEXPORT: +diff --git a/util/grub-crypt.in b/util/grub-crypt.in +new file mode 100644 +index 0000000..e8783c8 +--- /dev/null ++++ b/util/grub-crypt.in +@@ -0,0 +1,80 @@ ++#! /usr/bin/python ++ ++'''Generate encrypted passwords for GRUB.''' ++ ++import crypt ++import getopt ++import getpass ++import sys ++ ++def usage(): ++ '''Output usage message to stderr and exit.''' ++ print >> sys.stderr, 'Usage: grub-crypt [OPTION]...' ++ print >> sys.stderr, 'Try `$progname --help' for more information.' ++ sys.exit(1) ++ ++def gen_salt(): ++ '''Generate a random salt.''' ++ ret = '' ++ with open('/dev/urandom', 'rb') as urandom: ++ while True: ++ byte = urandom.read(1) ++ if byte in ('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' ++ './0123456789'): ++ ret += byte ++ if len(ret) == 16: ++ break ++ return ret ++ ++def main(): ++ '''Top level.''' ++ crypt_type = '$6$' # SHA-256 ++ try: ++ opts, args = getopt.getopt(sys.argv[1:], 'hv', ++ ('help', 'version', 'md5', 'sha-256', ++ 'sha-512')) ++ except getopt.GetoptError, err: ++ print >> sys.stderr, str(err) ++ usage() ++ if args: ++ print >> sys.stderr, 'Unexpected argument `%s'' % (args[0],) ++ usage() ++ for (opt, _) in opts: ++ if opt in ('-h', '--help'): ++ print ( ++'''Usage: grub-crypt [OPTION]... ++Encrypt a password. ++ ++ -h, --help Print this message and exit ++ -v, --version Print the version information and exit ++ --md5 Use MD5 to encrypt the password ++ --sha-256 Use SHA-256 to encrypt the password ++ --sha-512 Use SHA-512 to encrypt the password (default) ++ ++Report bugs to bug-grub@gnu.org. ++EOF''') ++ sys.exit(0) ++ elif opt in ('-v', '--version'): ++ print 'grub-crypt (GNU GRUB @VERSION@)' ++ sys.exit(0) ++ elif opt == '--md5': ++ crypt_type = '$1$' ++ elif opt == '--sha-256': ++ crypt_type = '$5$' ++ elif opt == '--sha-512': ++ crypt_type = '$6$' ++ else: ++ assert False, 'Unhandled option' ++ password = getpass.getpass('Password: ') ++ password2 = getpass.getpass('Retype password: ') ++ if not password: ++ print >> sys.stderr, 'Empty password is not permitted.' ++ sys.exit(1) ++ if password != password2: ++ print >> sys.stderr, 'Sorry, passwords do not match.' ++ sys.exit(1) ++ salt = crypt_type + gen_salt() ++ print crypt.crypt(password, salt) ++ ++if __name__ == '__main__': ++ main() +diff --git a/util/grub-install.in b/util/grub-install.in +index 2e598b0..12539b8 100644 +--- a/util/grub-install.in ++++ b/util/grub-install.in +@@ -21,34 +21,36 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ + sbindir=@sbindir@ +-libdir=@libdir@ ++datadir=@datadir@ + PACKAGE=@PACKAGE@ + VERSION=@VERSION@ + host_cpu=@host_cpu@ + host_os=@host_os@ + host_vendor=@host_vendor@ +-pkglibdir=${libdir}/${PACKAGE}/${host_cpu}-${host_vendor} ++pkgdatadir=${datadir}/${PACKAGE}/${host_cpu}-${host_vendor} + + grub_shell=${sbindir}/grub +-grub_set_default=${sbindir}/grub-set-default +-log_file=/tmp/grub-install.log.$$ +-img_file=/tmp/grub-install.img.$$ ++mdadm=${sbindir}/mdadm ++log_file=${TMPDIR:-/tmp}/grub-install.log.$$ ++img_file=${TMPDIR:-/tmp}/grub-install.img.$$ + rootdir= + grub_prefix=/boot/grub + ++install_drives= + install_device= + no_floppy= + force_lba= + recheck=no + debug=no ++justcopy=no + + # look for secure tempfile creation wrappers on this platform + if test -x /bin/tempfile; then + mklog="/bin/tempfile --prefix=grub" + mkimg="/bin/tempfile --prefix=grub" + elif test -x /bin/mktemp; then +- mklog="/bin/mktemp /tmp/grub-install.log.XXXXXX" +- mkimg="/bin/mktemp /tmp/grub-install.img.XXXXXX" ++ mklog="/bin/mktemp ${TMPDIR:-/tmp}/grub-install.log.XXXXXX" ++ mkimg="/bin/mktemp ${TMPDIR:-/tmp}/grub-install.img.XXXXXX" + else + mklog="" + mkimg="" +@@ -70,6 +72,8 @@ Install GRUB on your drive. + --force-lba force GRUB to use LBA mode even for a buggy + BIOS + --recheck probe a device map even if it already exists ++ This flag is unreliable and its use is ++ strongly discouraged. + + INSTALL_DEVICE can be a GRUB device name or a system device filename. + +@@ -96,17 +100,28 @@ convert () { + # Break the device name into the disk part and the partition part. + case "$host_os" in + linux*) +- tmp_disk=`echo "$1" | sed -e 's%([sh]d[a-z])[0-9]*$%\1%' \ ++ tmp_disk=`echo "$1" | grep -v '/mapper/control$' | ++ grep -v '/mapper/[[:alnum:]]+-[[:alnum:]]+$' | uniq | ++ sed -e 's%([shv]d[a-z])[0-9]*$%\1%' \ + -e 's%(d[0-9]*)p[0-9]*$%\1%' \ + -e 's%(fd[0-9]*)$%\1%' \ + -e 's%/part[0-9]*$%/disc%' \ +- -e 's%(c[0-7]d[0-9]*).*$%\1%'` +- tmp_part=`echo "$1" | sed -e 's%.*/[sh]d[a-z]([0-9]*)$%\1%' \ ++ -e 's%(c[0-7]d[0-9]*).*$%\1%' \ ++ -e 's%(/mapper/[[:alpha:]]+[[:digit:]]+)p[[:digit:]]+$%\1%' \ ++ -e 's%(/mapper/isw_[[:alpha:]_]+[[:alpha:]]+[[:digit:]]+)p[[:digit:]]+$%\1%' \ ++ -e 's%(/mapper/[[:alpha:]]+_[[:alpha:]]+)[[:digit:]]+$%\1%'` ++ tmp_part=`echo "$1" | grep -v '/mapper/control$' | ++ grep -v '/mapper/[[:alnum:]]+-[[:alnum:]]+$' | uniq | ++ sed -e 's%.*/[shv]d[a-z]([0-9]*)$%\1%' \ + -e 's%.*d[0-9]*p%%' \ + -e 's%.*/fd[0-9]*$%%' \ + -e 's%.*/floppy/[0-9]*$%%' \ + -e 's%.*/(disc|part([0-9]*))$%\2%' \ +- -e 's%.*c[0-7]d[0-9]*p%%'` ++ -e 's%.*c[0-7]d[0-9]*p%%' \ ++ -e 's%.*/mapper/[[:alpha:]]+[[:digit:]]+p([[:digit:]]+)$%\1%' \ ++ -e 's%.*/mapper/isw_[[:alpha:]_]+[[:alpha:]]+[[:digit:]]+p([[:digit:]]+)$%\1%' \ ++ -e 's%.*/mapper/[[:alpha:]]+_[[:alpha:]]+([[:digit:]]+)$%\1%' | ++ grep -v '.*/mapper/.*'` + ;; + gnu*) + tmp_disk=`echo "$1" | sed 's%([sh]d[0-9]*).*%\1%'` +@@ -196,7 +211,7 @@ resolve_symlink () { + while test -L $tmp_fname; do + tmp_new_fname=`ls -al $tmp_fname | sed -n 's%.*-> (.*)%\1%p'` + if test -z "$tmp_new_fname"; then +- echo "Unrecognized ls output" 2>&1 ++ echo "Unrecognized ls output" 1>&2 + exit 1 + fi + +@@ -211,6 +226,80 @@ resolve_symlink () { + echo "$tmp_fname" + } + ++# Usage: is_raid1_device devicename ++# Returns 0 if devicename is a raid1 md device, 1 if it is not. ++is_raid1_device () { ++ case "$host_os" in ++ linux*) ++ level=`$mdadm --query --detail $1 2>/dev/null | \ ++ awk '/Raid Level :/ {print $4}'` ++ if [ "$level" = "raid1" ]; then ++ return 0 ++ fi ++ ;; ++ esac ++ return 1 ++} ++ ++# Usage: find_real_devs device ++# Returns space separated list of devices for linux if device is ++# a raid1 device. In all other cases, the provided value is returned. ++find_real_devs () { ++ source_device=$1 ++ case "$host_os" in ++ linux*) ++ if is_raid1_device $source_device ; then ++ list="" ++ for device in `$mdadm --query --detail "${source_device}" | \ ++ awk '//dev/[^(md)]/ {print $7}'` ; do ++ list="$list $device" ++ done ++ echo $list ++ return 0 ++ fi ++ ;; ++ esac ++ echo $source_device ++ return 0 ++} ++ ++# Usage: stat_device file ++# Find major:minor of a device node. ++stat_device() { ++ majmin=`stat -c "%t:%T" "$1" 2>/dev/null` ++ if test -z "$majmin"; then ++ echo "Could not find device for $1" 1>&2 ++ exit 1 ++ fi ++ ++ echo "$majmin" ++} ++ ++# Usage: find_mapper_device file ++# Find a file in /dev/mapper with the same major:minor as the specified node. ++find_mapper_device() { ++ if [ -b "$1" ]; then ++ dev="$1" ++ else ++ mntpnt=`echo "$1" | sed 's,/,\\/,g'` ++ dev=`awk '($2 ~ /'$mntpnt'/) { print $1 }' /etc/mtab` ++ fi ++ if test -z "$dev"; then ++ echo "Could not find device for $1" 1>&2 ++ exit 1 ++ fi ++ ++ majmin=`stat_device $dev` ++ for x in /dev/mapper/* ; do ++ devmajmin=`stat_device "$x"` ++ if [ "$majmin" == "$devmajmin" ]; then ++ echo "$x" ++ return 0 ++ fi ++ done ++ return 1 ++} ++ + # Usage: find_device file + # Find block device on which the file resides. + find_device () { +@@ -219,15 +308,55 @@ find_device () { + tmp_fname=`df $1/ | sed -n 's%.*(/dev/[^ ]*).*%\1%p'` + + if test -z "$tmp_fname"; then +- echo "Could not find device for $1" 2>&1 ++ echo "Could not find device for $1" 1>&2 + exit 1 + fi + +- tmp_fname=`resolve_symlink $tmp_fname` ++ ret_fname=`resolve_symlink $tmp_fname` || exit 1 ++ tmp_fname=`find_mapper_device $ret_fname` ++ if test -n "$tmp_fname"; then ++ ret_fname="$tmp_fname" ++ fi ++ ++ echo "$ret_fname" ++ return 0 ++} ++ ++copy_images() { ++ # Copy the GRUB images to the GRUB directory. ++ for file in ${grubdir}/stage1 ${grubdir}/stage2 ${grubdir}/*stage1_5; do ++ rm -f $file || exit 1 ++ done ++ for file in \ ++ ${pkgdatadir}/stage1 ${pkgdatadir}/stage2 ${pkgdatadir}/*stage1_5; do ++ cp -f $file ${grubdir} 1>&2 || exit 1 ++ done ++} ++ ++ ++dump_boot_block () { ++ sync ++ $grub_shell --batch $no_floppy --device-map=$device_map <<EOF >$log_file ++dump ${root_drive}${tmp} ${img_file} ++quit ++EOF ++} ++ ++ ++install_boot_block () { ++ # Before all invocations of the grub shell, call sync to make sure ++ # the raw device is in sync with any bufferring in filesystems. ++ sync + +- echo "$tmp_fname" ++ # Now perform the installation. ++ $grub_shell --batch $no_floppy --device-map=$device_map <<EOF >>$log_file ++root $1 ++setup $force_lba --stage2=$grubdir/stage2 --prefix=$grub_prefix $2 ++quit ++EOF + } + ++ + # Check the arguments. + for option in "$@"; do + case "$option" in +@@ -247,6 +376,8 @@ for option in "$@"; do + force_lba="--force-lba" ;; + --recheck) + recheck=yes ;; ++ --just-copy) ++ justcopy=yes ;; + # This is an undocumented feature... + --debug) + debug=yes ;; +@@ -265,12 +396,6 @@ for option in "$@"; do + esac + done + +-if test "x$install_device" = x; then +- echo "install_device not specified." 1>&2 +- usage +- exit 1 +-fi +- + # If the debugging feature is enabled, print commands. + if test $debug = yes; then + set -x +@@ -293,6 +418,26 @@ esac + grubdir=${bootdir}/grub + device_map=${grubdir}/device.map + ++if [ "$recheck" == "yes" ]; then ++ if grep 'mapper' ${device_map} >/dev/null; then ++ echo 'grub-install does not support reprobing of device.map when' 1>&2 ++ echo 'using a device-mapper based boot device.' 1>&2 ++ exit 1 ++ fi ++fi ++ ++# if they just want the images copied, copy the images and then exit ++if test $justcopy = yes; then ++ copy_images ++ exit 0 ++fi ++ ++if test "x$install_device" = x; then ++ echo "install_device not specified." 1>&2 ++ usage ++ exit 1 ++fi ++ + # Check if GRUB is installed. + # This is necessary, because the user can specify "grub --read-only". + set $grub_shell dummy +@@ -303,17 +448,17 @@ else + exit 1 + fi + +-if test -f "$pkglibdir/stage1"; then ++if test -f "$pkgdatadir/stage1"; then + : + else +- echo "${pkglibdir}/stage1: Not found." 1>&2 ++ echo "${pkgdatadir}/stage1: Not found." 1>&2 + exit 1 + fi + +-if test -f "$pkglibdir/stage2"; then ++if test -f "$pkgdatadir/stage2"; then + : + else +- echo "${pkglibdir}/stage2: Not found." 1>&2 ++ echo "${pkgdatadir}/stage2: Not found." 1>&2 + exit 1 + fi + +@@ -324,9 +469,11 @@ fi + test -d "$bootdir" || mkdir "$bootdir" || exit 1 + test -d "$grubdir" || mkdir "$grubdir" || exit 1 + ++copy_images ++ + # If --recheck is specified, remove the device map, if present. + if test $recheck = yes; then +- rm -f $device_map ++ mv $device_map ${device_map}.backup + fi + + # Create the device map file if it is not present. +@@ -336,6 +483,10 @@ else + # Create a safe temporary file. + test -n "$mklog" && log_file=`$mklog` + ++ # Before all invocations of the grub shell, call sync to make sure ++ # the raw device is in sync with any bufferring in filesystems. ++ sync ++ + $grub_shell --batch $no_floppy --device-map=$device_map <<EOF >$log_file + quit + EOF +@@ -351,34 +502,60 @@ fi + tmp=`sed -n '/^([fh]d[0-9]*)/s/(^(.*)).*/\1/p' $device_map \ + | sort | uniq -d | sed -n 1p` + if test -n "$tmp"; then +- echo "The drive $tmp is defined multiple times in the device map $device_map" 1>&2 ++ echo "The drive $tmp is defined multiple times in the new device map." 1>&2 ++ if test $recheck = yes; then ++ echo "Reverting to backed up copy." 1>&2 ++ mv ${device_map}.backup $device_map ++ fi ++ exit 1 ++fi ++ ++# Make sure device.map has at least one hd device ++grep -q "^(hd[0-9]+)" $device_map ++if [ "x$?" != "x0" ]; then ++ echo "No suitable drive was found in the generated device map." 1>&2 ++ if test $recheck = yes; then ++ echo "Reverting to backed up copy." 1>&2 ++ mv ${device_map}.backup $device_map ++ fi + exit 1 + fi + + # Check for INSTALL_DEVICE. + case "$install_device" in + /dev/*) +- install_device=`resolve_symlink "$install_device"` +- install_drive=`convert "$install_device"` +- # I don't know why, but some shells wouldn't die if exit is +- # called in a function. +- if test "x$install_drive" = x; then ++ install_device=`resolve_symlink "$install_device"` || exit 1 ++ for install_drive in `find_real_devs $install_device` ; do ++ install_drive=`convert $install_drive` || exit 1 ++ if is_raid1_device $install_device; then ++ install_drive=`echo $install_drive | sed 's/,[0-9]*)/)/'` ++ fi ++ if [ "x$install_drive" = "x" ]; then ++ exit 1 ++ fi ++ install_drives="${install_drives} ${install_drive}" ++ done ++ unset install_drive ++ ++ if test "x$install_drives" = x ; then + exit 1 + fi ;; + ([hf]d[0-9]*)) +- install_drive="$install_device" ;; ++ install_drives="$install_device" ;; + [hf]d[0-9]*) + # The GRUB format with no parenthesis. +- install_drive="($install_device)" ;; ++ install_drives="($install_device)" ;; + *) + echo "Format of install_device not recognized." 1>&2 + usage + exit 1 ;; + esac + ++unset install_device ++ + # Get the root drive. +-root_device=`find_device ${rootdir}` +-bootdir_device=`find_device ${bootdir}` ++root_device=`find_device ${rootdir}` || exit 1 ++bootdir_device=`find_device ${bootdir}` || exit 1 + + # Check if the boot directory is in the same device as the root directory. + if test "x$root_device" != "x$bootdir_device"; then +@@ -387,15 +564,8 @@ if test "x$root_device" != "x$bootdir_device"; then + grub_prefix="/grub" + fi + +-# Convert the root device to a GRUB drive. +-root_drive=`convert "$root_device"` +-if test "x$root_drive" = x; then +- exit 1 +-fi +- +-# Check if the root directory exists in the same device as the grub +-# directory. +-grubdir_device=`find_device ${grubdir}` ++# Check if the root directory exists in the same device as the grub directory. ++grubdir_device=`find_device ${grubdir}` || exit 1 + + if test "x$grubdir_device" != "x$root_device"; then + # For now, cannot deal with this situation. +@@ -406,61 +576,71 @@ EOF + exit 1 + fi + +-# Copy the GRUB images to the GRUB directory. +-for file in ${grubdir}/stage1 ${grubdir}/stage2 ${grubdir}/*stage1_5; do +- rm -f $file || exit 1 +-done +-for file in \ +- ${pkglibdir}/stage1 ${pkglibdir}/stage2 ${pkglibdir}/*stage1_5; do +- cp -f $file ${grubdir} || exit 1 +-done +- +-# Make a default file. +-${grub_set_default} --root-directory=${rootdir} default +- + # Make sure that GRUB reads the same images as the host OS. + test -n "$mkimg" && img_file=`$mkimg` + test -n "$mklog" && log_file=`$mklog` + ++# There's not a real root device, so just pick the first ++if is_raid1_device $root_device ; then ++ root_device=`find_real_devs $root_device | awk '{print $1}'` ++fi ++ ++# Convert the root deviceto a GRUB drive. ++root_drive=`convert "$root_device"` || exit 1 ++if [ "x$root_drive" = x ]; then ++ exit 1 ++fi ++ + for file in ${grubdir}/stage1 ${grubdir}/stage2 ${grubdir}/*stage1_5; do + count=5 + tmp=`echo $file | sed "s|^${grubdir}|${grub_prefix}|"` + while test $count -gt 0; do +- $grub_shell --batch $no_floppy --device-map=$device_map <<EOF >$log_file +-dump ${root_drive}${tmp} ${img_file} +-quit +-EOF +- if grep "Error [0-9]*: " $log_file >/dev/null; then +- : +- elif cmp $file $img_file >/dev/null; then +- break +- fi +- sleep 1 +- count=`expr $count - 1` ++ dump_boot_block $root_drive $img_file ++ if grep "Error [0-9]*: " $log_file >/dev/null; then ++ : ++ else ++ # Use sha1sum instead of cmp to avoid a dependency on diffutils. ++ sha1=`sha1sum $file | cut -d' ' -f 1` ++ sha2=`sha1sum $img_file | cut -d' ' -f 1` ++ if test -f $file -a -f $img_file -a "$sha1" = "$sha2"; then ++ break ++ fi ++ fi ++ sleep 1 ++ count=`expr $count - 1` + done + if test $count -eq 0; then +- echo "The file $file not read correctly." 1>&2 +- exit 1 ++ echo "The file $file not read correctly." 1>&2 ++ exit 1 + fi + done + + rm -f $img_file + rm -f $log_file + ++if ! test -e ${grubdir}/grub.conf ; then ++ test -e ${grubdir}/menu.lst && ln -s ./menu.lst ${grubdir}/grub.conf ++fi ++ + # Create a safe temporary file. + test -n "$mklog" && log_file=`$mklog` + +-# Now perform the installation. +-$grub_shell --batch $no_floppy --device-map=$device_map <<EOF >$log_file +-root $root_drive +-setup $force_lba --stage2=$grubdir/stage2 --prefix=$grub_prefix $install_drive +-quit +-EOF ++for install_drive in $install_drives; do ++ # Convert the root deviceto a GRUB drive. ++ root_drive=`convert "$root_device"` || exit 1 ++ if [ "x$root_drive" = x ]; then ++ exit 1 ++ fi ++ install_boot_block $root_drive $install_drive ++done + +-if grep "Error [0-9]*: " $log_file >/dev/null || test $debug = yes; then ++if grep "Error [0-9]*: " $log_file >/dev/null ; then + cat $log_file 1>&2 + exit 1 + fi ++if test $debug = yes; then ++ cat $log_file 1>&2 ++fi + + rm -f $log_file + diff --git a/src/patches/icecream-0.9.7-platform-arm.patch b/src/patches/icecream-0.9.7-platform-arm.patch new file mode 100644 index 0000000..53402f0 --- /dev/null +++ b/src/patches/icecream-0.9.7-platform-arm.patch @@ -0,0 +1,22 @@ +Index: services/scheduler.cpp +=================================================================== +--- services/scheduler.cpp (revision 1310078) ++++ services/scheduler.cpp (working copy) +@@ -52,7 +52,7 @@ + #include "config.h" + #include "bench.h" + +-#define DEBUG_SCHEDULER 0 ++#define DEBUG_SCHEDULER 1 + + /* TODO: + * leak check +@@ -613,6 +613,8 @@ + + platform_map.insert( make_pair( string( "ppc" ), string( "ppc64" ) ) ); + platform_map.insert( make_pair( string( "s390" ), string( "s390x" ) ) ); ++ ++ platform_map.insert( make_pair( string( "armv5tel"), string( "armv7l" ) ) ); + } + + multimap<string, string>::const_iterator end = platform_map.upper_bound( target ); diff --git a/src/patches/libmad-0.15.1b-cflags-O2.patch b/src/patches/libmad-0.15.1b-cflags-O2.patch new file mode 100644 index 0000000..61b4b13 --- /dev/null +++ b/src/patches/libmad-0.15.1b-cflags-O2.patch @@ -0,0 +1,12 @@ +diff -Naur libmad-0.15.1b-orig/configure.ac libmad-0.15.1b/configure.ac +--- libmad-0.15.1b-orig/configure.ac 2007-07-01 12:58:13.000000000 -0600 ++++ libmad-0.15.1b/configure.ac 2007-07-01 12:59:13.000000000 -0600 +@@ -105,7 +105,7 @@ + shift + ;; + -O2) +- optimize="-O" ++ optimize="-O2" + shift + ;; + -fomit-frame-pointer) diff --git a/src/patches/libmad-0.15.1b-cflags.patch b/src/patches/libmad-0.15.1b-cflags.patch new file mode 100644 index 0000000..2ec44e3 --- /dev/null +++ b/src/patches/libmad-0.15.1b-cflags.patch @@ -0,0 +1,146 @@ +diff -Naur libmad-0.15.1b-orig/configure.ac libmad-0.15.1b/configure.ac +--- libmad-0.15.1b-orig/configure.ac 2007-06-30 20:22:31.000000000 -0600 ++++ libmad-0.15.1b/configure.ac 2007-06-30 20:25:31.000000000 -0600 +@@ -122,74 +122,74 @@ + esac + done + +-if test "$GCC" = yes +-then +- if test -z "$arch" +- then +- case "$host" in +- i386-*) ;; +- i?86-*) arch="-march=i486" ;; +- arm*-empeg-*) arch="-march=armv4 -mtune=strongarm1100" ;; +- armv4*-*) arch="-march=armv4 -mtune=strongarm" ;; +- powerpc-*) ;; +- mips*-agenda-*) arch="-mcpu=vr4100" ;; +- mips*-luxsonor-*) arch="-mips1 -mcpu=r3000 -Wa,-m4010" ;; +- esac +- fi +- +- case "$optimize" in +- -O|"-O "*) +- optimize="-O" +- optimize="$optimize -fforce-mem" +- optimize="$optimize -fforce-addr" +- : #x optimize="$optimize -finline-functions" +- : #- optimize="$optimize -fstrength-reduce" +- optimize="$optimize -fthread-jumps" +- optimize="$optimize -fcse-follow-jumps" +- optimize="$optimize -fcse-skip-blocks" +- : #x optimize="$optimize -frerun-cse-after-loop" +- : #x optimize="$optimize -frerun-loop-opt" +- : #x optimize="$optimize -fgcse" +- optimize="$optimize -fexpensive-optimizations" +- optimize="$optimize -fregmove" +- : #* optimize="$optimize -fdelayed-branch" +- : #x optimize="$optimize -fschedule-insns" +- optimize="$optimize -fschedule-insns2" +- : #? optimize="$optimize -ffunction-sections" +- : #? optimize="$optimize -fcaller-saves" +- : #> optimize="$optimize -funroll-loops" +- : #> optimize="$optimize -funroll-all-loops" +- : #x optimize="$optimize -fmove-all-movables" +- : #x optimize="$optimize -freduce-all-givs" +- : #? optimize="$optimize -fstrict-aliasing" +- : #* optimize="$optimize -fstructure-noalias" +- +- case "$host" in +- arm*-*) +- optimize="$optimize -fstrength-reduce" +- ;; +- mips*-*) +- optimize="$optimize -fstrength-reduce" +- optimize="$optimize -finline-functions" +- ;; +- i?86-*) +- optimize="$optimize -fstrength-reduce" +- ;; +- powerpc-apple-*) +- # this triggers an internal compiler error with gcc2 +- : #optimize="$optimize -fstrength-reduce" +- +- # this is really only beneficial with gcc3 +- : #optimize="$optimize -finline-functions" +- ;; +- *) +- # this sometimes provokes bugs in gcc 2.95.2 +- : #optimize="$optimize -fstrength-reduce" +- ;; +- esac +- ;; +- esac +-fi ++#if test "$GCC" = yes ++#then ++# if test -z "$arch" ++# then ++# case "$host" in ++# i386-*) ;; ++# i?86-*) arch="-march=i486" ;; ++# arm*-empeg-*) arch="-march=armv4 -mtune=strongarm1100" ;; ++# armv4*-*) arch="-march=armv4 -mtune=strongarm" ;; ++# powerpc-*) ;; ++# mips*-agenda-*) arch="-mcpu=vr4100" ;; ++# mips*-luxsonor-*) arch="-mips1 -mcpu=r3000 -Wa,-m4010" ;; ++# esac ++# fi ++# ++# case "$optimize" in ++# -O|"-O "*) ++# optimize="-O" ++# optimize="$optimize -fforce-mem" ++# optimize="$optimize -fforce-addr" ++# : #x optimize="$optimize -finline-functions" ++# : #- optimize="$optimize -fstrength-reduce" ++# optimize="$optimize -fthread-jumps" ++# optimize="$optimize -fcse-follow-jumps" ++# optimize="$optimize -fcse-skip-blocks" ++# : #x optimize="$optimize -frerun-cse-after-loop" ++# : #x optimize="$optimize -frerun-loop-opt" ++# : #x optimize="$optimize -fgcse" ++# optimize="$optimize -fexpensive-optimizations" ++# optimize="$optimize -fregmove" ++# : #* optimize="$optimize -fdelayed-branch" ++# : #x optimize="$optimize -fschedule-insns" ++# optimize="$optimize -fschedule-insns2" ++# : #? optimize="$optimize -ffunction-sections" ++# : #? optimize="$optimize -fcaller-saves" ++# : #> optimize="$optimize -funroll-loops" ++# : #> optimize="$optimize -funroll-all-loops" ++# : #x optimize="$optimize -fmove-all-movables" ++# : #x optimize="$optimize -freduce-all-givs" ++# : #? optimize="$optimize -fstrict-aliasing" ++# : #* optimize="$optimize -fstructure-noalias" ++# ++# case "$host" in ++# arm*-*) ++# optimize="$optimize -fstrength-reduce" ++# ;; ++# mips*-*) ++# optimize="$optimize -fstrength-reduce" ++# optimize="$optimize -finline-functions" ++# ;; ++# i?86-*) ++# optimize="$optimize -fstrength-reduce" ++# ;; ++# powerpc-apple-*) ++# # this triggers an internal compiler error with gcc2 ++# : #optimize="$optimize -fstrength-reduce" ++# ++# # this is really only beneficial with gcc3 ++# : #optimize="$optimize -finline-functions" ++# ;; ++# *) ++# # this sometimes provokes bugs in gcc 2.95.2 ++# : #optimize="$optimize -fstrength-reduce" ++# ;; ++# esac ++# ;; ++# esac ++#fi + + case "$host" in + mips*-agenda-*) diff --git a/src/patches/libnl-1.1-ULONG_MAX.patch b/src/patches/libnl-1.1-ULONG_MAX.patch new file mode 100644 index 0000000..ca3dd40 --- /dev/null +++ b/src/patches/libnl-1.1-ULONG_MAX.patch @@ -0,0 +1,11 @@ +--- libnl-1.1/include/netlink-local.h.orig 2008-06-08 19:09:20.000000000 +0200 ++++ libnl-1.1/include/netlink-local.h 2008-06-08 19:09:33.000000000 +0200 +@@ -26,6 +26,7 @@ + #include <sys/socket.h> + #include <inttypes.h> + #include <assert.h> ++#include <limits.h> + + #include <arpa/inet.h> + #include <netdb.h> + diff --git a/src/patches/libsafe-alpha.diff b/src/patches/libsafe-alpha.diff deleted file mode 100644 index dfeb9f2..0000000 --- a/src/patches/libsafe-alpha.diff +++ /dev/null @@ -1,232 +0,0 @@ ---- libsafe-2.0-16-orig/src/intercept.c 2003-03-15 16:02:12.000000000 +0100 -+++ libsafe-2.0-16/src/intercept.c 2003-03-15 16:12:22.000000000 +0100 -@@ -165,7 +165,8 @@ - */ - char *strcpy(char *dest, const char *src) - { -- size_t max_size, len; -+ uint max_size; -+ size_t len; - - if (!real_memcpy) - real_memcpy = (memcpy_t) getLibraryFunction("memcpy"); -@@ -196,7 +197,8 @@ - - char *strncpy(char *dest, const char *src, size_t n) - { -- size_t max_size, len; -+ uint max_size; -+ size_t len; - - if (!real_strncpy) - real_strncpy = (strncpy_t) getLibraryFunction("strncpy"); -@@ -219,7 +221,8 @@ - - char *stpcpy(char *dest, const char *src) - { -- size_t max_size, len; -+ uint max_size; -+ size_t len; - - if (!real_memcpy) - real_memcpy = (memcpy_t) getLibraryFunction("memcpy"); -@@ -251,7 +254,8 @@ - #ifndef MISSING_WCSNLEN - wchar_t *wcscpy(wchar_t *dest, const wchar_t *src) - { -- size_t max_bytes, max_wchars, len; -+ size_t max_wchars, len; -+ uint max_bytes; - - if (!real_wcscpy) - real_wcscpy = (wcscpy_t) getLibraryFunction("wcscpy"); -@@ -291,7 +295,8 @@ - - wchar_t *wcpcpy(wchar_t *dest, const wchar_t *src) - { -- size_t max_bytes, max_wchars, len; -+ size_t max_wchars, len; -+ uint max_bytes; - - if (!real_wcpcpy) - real_wcpcpy = (wcpcpy_t) getLibraryFunction("wcpcpy"); -@@ -333,9 +338,15 @@ - /* - * This is needed! See the strcpy() for the reason. -ab. - */ --void *memcpy(void *dest, const void *src, size_t n) -+void *memcpy(void *dest, const void *src, size_t hack) - { -- size_t max_size; -+ /* -+ * a size_t IS an unsigned long everywhere, though it sometimes -+ * doesn't state so, making printf misinterpret it. -+ */ -+ unsigned long n = hack; -+ uint max_size; -+ - - if (!real_memcpy) - real_memcpy = (memcpy_t) getLibraryFunction("memcpy"); -@@ -344,11 +355,11 @@ - return real_memcpy(dest, src, n); - - if ((max_size = _libsafe_stackVariableP(dest)) == 0) { -- LOG(5, "memcpy(<heap var> , <src>, %d)\n", n); -+ LOG(5, "memcpy(<heap var> , <src>, %ld)\n", n); - return real_memcpy(dest, src, n); - } - -- LOG(4, "memcpy(<stack var> , <src>, %d) stack limit=%d)\n", n, max_size); -+ LOG(4, "memcpy(<stack var> , <src>, %ld) stack limit=%d)\n", n, max_size); - if (n > max_size) - _libsafe_die("Overflow caused by memcpy()"); - return real_memcpy(dest, src, n); -@@ -357,7 +368,7 @@ - - char *strcat(char *dest, const char *src) - { -- size_t max_size; -+ uint max_size; - uint dest_len, src_len; - - if (!real_memcpy) -@@ -388,7 +399,7 @@ - - char *strncat(char *dest, const char *src, size_t n) - { -- size_t max_size; -+ uint max_size; - uint dest_len, src_len; - - if (!real_strncat) -@@ -1008,12 +1019,31 @@ - if (is_printf_convspec[(int)*p]) { - caddr_t addr; - c++; -+#if 0 -+ /* -+ * cannot add va_list (ap here) with a number on alpha. -+ * this is faster than the other method, and might be -+ * a good idea to enable this on !alpha arch. -+ */ - if (pnum) { - addr = *((caddr_t*)(ap + (atoi(pnum)-1)*sizeof(char*))); - } - else { - addr = *((caddr_t*)(ap + c*sizeof(char*))); - } -+#else -+ { -+ va_list apc; -+ uint nb = c + 1; -+ -+ va_copy(apc, ap); -+ if (pnum) -+ nb = atoi(pnum); -+ addr = NULL; -+ while (nb--) -+ addr = va_arg(apc, caddr_t); -+ } -+#endif - if (*p == 'n') { - if (_libsafe_raVariableP((void *)(addr))) { - _libsafe_die("printf("%%n")"); -@@ -1172,12 +1202,32 @@ - if (is_printf_convspec[(int)*p]) { - caddr_t addr; - c++; -+#if 0 -+ /* -+ * cannot add va_list (ap here) with a number on alpha. -+ * this is faster than the other method, and might be -+ * a good idea to enable this on !alpha arch. -+ */ -+ - if (pnum) { - addr = *((caddr_t*)(ap + (atoi(pnum)-1)*sizeof(char*))); - } - else { - addr = *((caddr_t*)(ap + c*sizeof(char*))); - } -+#else -+ { -+ va_list apc; -+ uint nb = c + 1; -+ -+ va_copy(apc, ap); -+ if (pnum) -+ nb = atoi(pnum); -+ addr = NULL; -+ while (nb--) -+ addr = va_arg(apc, caddr_t); -+ } -+#endif - if (*p == 'n') { - if (_libsafe_raVariableP((void *)(addr))) { - _libsafe_die("printf("%%n")"); -@@ -1194,7 +1244,7 @@ - - int sprintf(char *str, const char *format, ...) - { -- size_t max_size; -+ uint max_size; - va_list ap; - int res; - -@@ -1242,7 +1292,7 @@ - - int snprintf(char *str, size_t size, const char *format, ...) - { -- size_t max_size; -+ uint max_size; - va_list ap; - int res; - -@@ -1288,7 +1338,7 @@ - - int vsprintf(char *str, const char *format, va_list ap) - { -- size_t max_size; -+ uint max_size; - int res; - - if (!real_vsprintf) -@@ -1325,7 +1375,7 @@ - - int vsnprintf(char *str, size_t size, const char *format, va_list ap) - { -- size_t max_size; -+ uint max_size; - int res; - - if (!real_vsnprintf) -@@ -1360,7 +1410,7 @@ - - char *getwd(char *buf) - { -- size_t max_size; -+ uint max_size; - char *res; - - if (!real_getwd) -@@ -1384,7 +1434,8 @@ - - char *gets(char *s) - { -- size_t max_size, len; -+ uint max_size; -+ size_t len; - - if (!real_gets) - real_gets = (gets_t) getLibraryFunction("gets"); -@@ -1409,7 +1460,8 @@ - - char *realpath(char *path, char resolved_path[]) - { -- size_t max_size, len; -+ uint max_size; -+ size_t len; - char *res; - char buf[MAXPATHLEN + 1]; - diff --git a/src/patches/libsafe-functioncaching.diff b/src/patches/libsafe-functioncaching.diff deleted file mode 100644 index db003a4..0000000 --- a/src/patches/libsafe-functioncaching.diff +++ /dev/null @@ -1,258 +0,0 @@ -From: Goswin Brederlow goswin.brederlow@student.uni-tuebingen.de -Subject: Bug#129345: patch to prevent a loop between libdl and libsafe causing libdl to crash -To: 129345@bugs.debian.org -Date: 01 Sep 2002 23:54:35 +0200 -Reply-To: Goswin Brederlow goswin.brederlow@student.uni-tuebingen.de, - 129345@bugs.debian.org -Resent-From: Goswin Brederlow goswin.brederlow@student.uni-tuebingen.de - - -------- -[D. Coe edited this patch slightly -- moved an unrelated change into the -Makefile itself [it changed the debugging comments only], and corrected a -spelling error and reworded the comments. The original patch is in the -bug tracking system, if you want to see it as submitted by Goswin.] -------- -------- -D. Coe subsequently modified the patch further, because in some cases -the initializations did not occur (e.g. when IO_vfscanf or memcpy was -called from ps or top (likely one of the libraries they use). maybe -they do something that disables libsafe's library globals initialization? - - -In any case, I've adopted both strategise in this new patch; the addresses -are preloaded as Goswin had coded, but they are also individually checked -each time needed (as was the case before Goswin's patch), and are initialized -at that point if necessary. Hopefully this will let ps and top work -and also continue to work around the libdl problem. -------- - -Hi, - -if libsafe is invoked from inside libdl (or only inside dlerror()?) -and a real_XXX function is not yet looked up it will reenter -libdl. That causes memory corruption resulting in a read from 0x0 and -thus segfault. - -The patch below makes libsafe cache all needed symbols once upon -init. That not only causes less lookups than before but should prevent -fatal loops. Failures of the initial lookups might not be reported -correctly but terminate in some odd way if the functions needed to -report are not yet looked up. - -MfG - Goswin - ----------------------------------------------------------------------- -diff -Nurd libsafe-2.0-16/src/intercept.c libsafe-2.0-16-mrvn/src/intercept.c ---- libsafe-2.0-16/src/intercept.c 2002-05-31 19:37:34.000000000 +0200 -+++ libsafe-2.0-16-mrvn/src/intercept.c 2002-09-01 23:44:55.000000000 +0200 -@@ -128,14 +128,29 @@ - } - - --/* Starting with version 2.0, we keep a single global copy of the pointer to -- * the real memcpy() function. This allows us to call -- * getLibraryFunction("memcpy") just once instead of multiple times, since -- * memcpy() is needed in four different functions below. -+/* Starting with Debian version 2.0-16-2, we keep a global copy of the pointer -+ * to each real functions. Otherwise a getLibraryFunction might -+ * be triggered from inside dlsym() and cause memory corruption reulting in a -+ * segfault. - */ --static memcpy_t real_memcpy = NULL; -- -- -+static memcpy_t real_memcpy = NULL; -+static _IO_vfscanf_t real_IO_vfscanf = NULL; -+static vfprintf_t real_vfprintf = NULL; -+static vsnprintf_t real_vsnprintf = NULL; -+static vsprintf_t real_vsprintf = NULL; -+static gets_t real_gets = NULL; -+static getwd_t real_getwd = NULL; -+static realpath_t real_realpath = NULL; -+static stpcpy_t real_stpcpy = NULL; -+static strcat_t real_strcat = NULL; -+static strcpy_t real_strcpy = NULL; -+static strncat_t real_strncat = NULL; -+static strncpy_t real_strncpy = NULL; -+static wcscpy_t real_wcscpy = NULL; -+static wcpcpy_t real_wcpcpy = NULL; -+#ifndef MISSING_WCSNLEN -+static wcscat_t real_wcscat = NULL; -+#endif - /* - * -------------- system library implementations ------------------- - * Here is the story: if a C source file includes <string.h> and is -@@ -150,7 +165,6 @@ - */ - char *strcpy(char *dest, const char *src) - { -- static strcpy_t real_strcpy = NULL; - size_t max_size, len; - - if (!real_memcpy) -@@ -182,7 +196,6 @@ - - char *strncpy(char *dest, const char *src, size_t n) - { -- static strncpy_t real_strncpy = NULL; - size_t max_size, len; - - if (!real_strncpy) -@@ -206,7 +219,6 @@ - - char *stpcpy(char *dest, const char *src) - { -- static stpcpy_t real_stpcpy = NULL; - size_t max_size, len; - - if (!real_memcpy) -@@ -239,7 +251,6 @@ - #ifndef MISSING_WCSNLEN - wchar_t *wcscpy(wchar_t *dest, const wchar_t *src) - { -- static wcscpy_t real_wcscpy = NULL; - size_t max_bytes, max_wchars, len; - - if (!real_wcscpy) -@@ -280,7 +291,6 @@ - - wchar_t *wcpcpy(wchar_t *dest, const wchar_t *src) - { -- static wcpcpy_t real_wcpcpy = NULL; - size_t max_bytes, max_wchars, len; - - if (!real_wcpcpy) -@@ -347,7 +357,6 @@ - - char *strcat(char *dest, const char *src) - { -- static strcat_t real_strcat = NULL; - size_t max_size; - uint dest_len, src_len; - -@@ -379,7 +388,6 @@ - - char *strncat(char *dest, const char *src, size_t n) - { -- static strncat_t real_strncat = NULL; - size_t max_size; - uint dest_len, src_len; - -@@ -408,7 +416,6 @@ - #ifndef MISSING_WCSNLEN - wchar_t *wcscat(wchar_t *dest, const wchar_t *src) - { -- static wcscat_t real_wcscat = NULL; - size_t max_bytes; - uint dest_len, src_len; - -@@ -861,7 +868,6 @@ - */ - int vfprintf(FILE *fp, const char *format, va_list ap) - { -- static vfprintf_t real_vfprintf = NULL; - int res; - char *p, *pnum; - int c = -1; /* Next var arg to be used */ -@@ -1026,7 +1032,6 @@ - */ - int _IO_vfprintf(FILE *fp, const char *format, va_list ap) - { -- static vfprintf_t real_vfprintf = NULL; - int res; - char *p, *pnum; - int c = -1; /* Next var arg to be used */ -@@ -1189,8 +1194,6 @@ - - int sprintf(char *str, const char *format, ...) - { -- static vsprintf_t real_vsprintf = NULL; -- static vsnprintf_t real_vsnprintf = NULL; - size_t max_size; - va_list ap; - int res; -@@ -1239,7 +1242,6 @@ - - int snprintf(char *str, size_t size, const char *format, ...) - { -- static vsnprintf_t real_vsnprintf = NULL; - size_t max_size; - va_list ap; - int res; -@@ -1286,8 +1288,6 @@ - - int vsprintf(char *str, const char *format, va_list ap) - { -- static vsprintf_t real_vsprintf = NULL; -- static vsnprintf_t real_vsnprintf = NULL; - size_t max_size; - int res; - -@@ -1325,7 +1325,6 @@ - - int vsnprintf(char *str, size_t size, const char *format, va_list ap) - { -- static vsnprintf_t real_vsnprintf = NULL; - size_t max_size; - int res; - -@@ -1361,7 +1360,6 @@ - - char *getwd(char *buf) - { -- static getwd_t real_getwd = NULL; - size_t max_size; - char *res; - -@@ -1386,7 +1384,6 @@ - - char *gets(char *s) - { -- static gets_t real_gets = NULL; - size_t max_size, len; - - if (!real_gets) -@@ -1412,7 +1409,6 @@ - - char *realpath(char *path, char resolved_path[]) - { -- static realpath_t real_realpath = NULL; - size_t max_size, len; - char *res; - char buf[MAXPATHLEN + 1]; -@@ -1445,7 +1441,6 @@ - - int _IO_vfscanf (_IO_FILE *s, const char *format, _IO_va_list argptr, int *errp) - { -- static _IO_vfscanf_t real_IO_vfscanf = NULL; - int res, save_count; - caddr_t ra_array[MAXLEVELS], fp_array[MAXLEVELS]; - -@@ -1529,6 +1524,25 @@ - - fclose(fp); - } -+ -+ real_memcpy = (memcpy_t) getLibraryFunction("memcpy"); -+ real_IO_vfscanf = (_IO_vfscanf_t) getLibraryFunction("_IO_vfscanf"); -+ real_vfprintf = (vfprintf_t) getLibraryFunction("vfprintf"); -+ real_vsnprintf = (vsnprintf_t) getLibraryFunction("vsnprintf"); -+ real_vsprintf = (vsprintf_t) getLibraryFunction("vsprintf"); -+ real_gets = (gets_t) getLibraryFunction("gets"); -+ real_getwd = (getwd_t) getLibraryFunction("getwd"); -+ real_realpath = (realpath_t) getLibraryFunction("realpath"); -+ real_stpcpy = (stpcpy_t) getLibraryFunction("stpcpy"); -+ real_strcat = (strcat_t) getLibraryFunction("strcat"); -+ real_strcpy = (strcpy_t) getLibraryFunction("strcpy"); -+ real_strncat = (strncat_t) getLibraryFunction("strncat"); -+ real_strncpy = (strncpy_t) getLibraryFunction("strncpy"); -+ real_wcscpy = (wcscpy_t) getLibraryFunction("wcscpy"); -+ real_wcpcpy = (wcpcpy_t) getLibraryFunction("wcpcpy"); -+#ifndef MISSING_WCSNLEN -+ real_wcscat = (wcscat_t) getLibraryFunction("wcscat"); -+#endif - } - - diff --git a/src/patches/libsigc++-gcc43.patch b/src/patches/libsigc++-gcc43.patch new file mode 100644 index 0000000..528f21e --- /dev/null +++ b/src/patches/libsigc++-gcc43.patch @@ -0,0 +1,85 @@ +diff -urN libsigc++-2.0-2.0.17.old/sigc++/signal.h libsigc++-2.0-2.0.17/sigc++/signal.h +--- libsigc++-2.0-2.0.17.old/sigc++/signal.h 2005-12-20 08:35:21.000000000 +0000 ++++ libsigc++-2.0-2.0.17/sigc++/signal.h 2008-02-22 00:22:44.000000000 +0000 +@@ -1661,7 +1661,7 @@ + typedef internal::signal_emit0<T_return, T_accumulator> emitter_type; + typedef typename emitter_type::result_type result_type; + typedef slot<T_return> slot_type; +- typedef slot_list<slot_type> slot_list_type; ++ typedef sigc::slot_list<slot_type> slot_list_type; + typedef typename slot_list_type::iterator iterator; + typedef typename slot_list_type::const_iterator const_iterator; + typedef typename slot_list_type::reverse_iterator reverse_iterator; +@@ -1770,7 +1770,7 @@ + typedef internal::signal_emit1<T_return, T_arg1, T_accumulator> emitter_type; + typedef typename emitter_type::result_type result_type; + typedef slot<T_return, T_arg1> slot_type; +- typedef slot_list<slot_type> slot_list_type; ++ typedef sigc::slot_list<slot_type> slot_list_type; + typedef typename slot_list_type::iterator iterator; + typedef typename slot_list_type::const_iterator const_iterator; + typedef typename slot_list_type::reverse_iterator reverse_iterator; +@@ -1881,7 +1881,7 @@ + typedef internal::signal_emit2<T_return, T_arg1,T_arg2, T_accumulator> emitter_type; + typedef typename emitter_type::result_type result_type; + typedef slot<T_return, T_arg1,T_arg2> slot_type; +- typedef slot_list<slot_type> slot_list_type; ++ typedef sigc::slot_list<slot_type> slot_list_type; + typedef typename slot_list_type::iterator iterator; + typedef typename slot_list_type::const_iterator const_iterator; + typedef typename slot_list_type::reverse_iterator reverse_iterator; +@@ -1994,7 +1994,7 @@ + typedef internal::signal_emit3<T_return, T_arg1,T_arg2,T_arg3, T_accumulator> emitter_type; + typedef typename emitter_type::result_type result_type; + typedef slot<T_return, T_arg1,T_arg2,T_arg3> slot_type; +- typedef slot_list<slot_type> slot_list_type; ++ typedef sigc::slot_list<slot_type> slot_list_type; + typedef typename slot_list_type::iterator iterator; + typedef typename slot_list_type::const_iterator const_iterator; + typedef typename slot_list_type::reverse_iterator reverse_iterator; +@@ -2109,7 +2109,7 @@ + typedef internal::signal_emit4<T_return, T_arg1,T_arg2,T_arg3,T_arg4, T_accumulator> emitter_type; + typedef typename emitter_type::result_type result_type; + typedef slot<T_return, T_arg1,T_arg2,T_arg3,T_arg4> slot_type; +- typedef slot_list<slot_type> slot_list_type; ++ typedef sigc::slot_list<slot_type> slot_list_type; + typedef typename slot_list_type::iterator iterator; + typedef typename slot_list_type::const_iterator const_iterator; + typedef typename slot_list_type::reverse_iterator reverse_iterator; +@@ -2226,7 +2226,7 @@ + typedef internal::signal_emit5<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5, T_accumulator> emitter_type; + typedef typename emitter_type::result_type result_type; + typedef slot<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5> slot_type; +- typedef slot_list<slot_type> slot_list_type; ++ typedef sigc::slot_list<slot_type> slot_list_type; + typedef typename slot_list_type::iterator iterator; + typedef typename slot_list_type::const_iterator const_iterator; + typedef typename slot_list_type::reverse_iterator reverse_iterator; +@@ -2345,7 +2345,7 @@ + typedef internal::signal_emit6<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6, T_accumulator> emitter_type; + typedef typename emitter_type::result_type result_type; + typedef slot<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6> slot_type; +- typedef slot_list<slot_type> slot_list_type; ++ typedef sigc::slot_list<slot_type> slot_list_type; + typedef typename slot_list_type::iterator iterator; + typedef typename slot_list_type::const_iterator const_iterator; + typedef typename slot_list_type::reverse_iterator reverse_iterator; +@@ -2466,7 +2466,7 @@ + typedef internal::signal_emit7<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7, T_accumulator> emitter_type; + typedef typename emitter_type::result_type result_type; + typedef slot<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> slot_type; +- typedef slot_list<slot_type> slot_list_type; ++ typedef sigc::slot_list<slot_type> slot_list_type; + typedef typename slot_list_type::iterator iterator; + typedef typename slot_list_type::const_iterator const_iterator; + typedef typename slot_list_type::reverse_iterator reverse_iterator; +diff -urN libsigc++-2.0-2.0.17.old/tests/test_copy_invalid_slot.cc libsigc++-2.0-2.0.17/tests/test_copy_invalid_slot.cc +--- libsigc++-2.0-2.0.17.old/tests/test_copy_invalid_slot.cc 2005-05-01 02:00:47.000000000 +0000 ++++ libsigc++-2.0-2.0.17/tests/test_copy_invalid_slot.cc 2008-02-22 00:24:08.000000000 +0000 +@@ -1,4 +1,6 @@ + #include <iostream> ++#include <cstdlib> ++#include <cstring> + #include <sigc++/sigc++.h> + + void Foo(sigc::trackable &t) {} diff --git a/src/patches/miniupnpd-1.4_use_XT_ALIGN.patch b/src/patches/miniupnpd-1.4_use_XT_ALIGN.patch deleted file mode 100644 index 8c33222..0000000 --- a/src/patches/miniupnpd-1.4_use_XT_ALIGN.patch +++ /dev/null @@ -1,47 +0,0 @@ -diff -Naur miniupnpd-1.4.org/netfilter/iptcrdr.c miniupnpd-1.4/netfilter/iptcrdr.c ---- miniupnpd-1.4.org/netfilter/iptcrdr.c 2009-10-10 21:19:41.000000000 +0200 -+++ miniupnpd-1.4/netfilter/iptcrdr.c 2012-07-29 16:09:42.640363971 +0200 -@@ -443,8 +443,8 @@ - struct ipt_entry_match *match; - struct ipt_tcp * tcpinfo; - size_t size; -- size = IPT_ALIGN(sizeof(struct ipt_entry_match)) -- + IPT_ALIGN(sizeof(struct ipt_tcp)); -+ size = XT_ALIGN(sizeof(struct ipt_entry_match)) -+ + XT_ALIGN(sizeof(struct ipt_tcp)); - match = calloc(1, size); - match->u.match_size = size; - strncpy(match->u.user.name, "tcp", IPT_FUNCTION_MAXNAMELEN); -@@ -462,8 +462,8 @@ - struct ipt_entry_match *match; - struct ipt_udp * udpinfo; - size_t size; -- size = IPT_ALIGN(sizeof(struct ipt_entry_match)) -- + IPT_ALIGN(sizeof(struct ipt_udp)); -+ size = XT_ALIGN(sizeof(struct ipt_entry_match)) -+ + XT_ALIGN(sizeof(struct ipt_udp)); - match = calloc(1, size); - match->u.match_size = size; - strncpy(match->u.user.name, "udp", IPT_FUNCTION_MAXNAMELEN); -@@ -483,8 +483,8 @@ - struct ip_nat_range * range; - size_t size; - -- size = IPT_ALIGN(sizeof(struct ipt_entry_target)) -- + IPT_ALIGN(sizeof(struct ip_nat_multi_range)); -+ size = XT_ALIGN(sizeof(struct ipt_entry_target)) -+ + XT_ALIGN(sizeof(struct ip_nat_multi_range)); - target = calloc(1, size); - target->u.target_size = size; - strncpy(target->u.user.name, "DNAT", IPT_FUNCTION_MAXNAMELEN); -@@ -614,8 +614,8 @@ - { - struct ipt_entry_target * target = NULL; - size_t size; -- size = IPT_ALIGN(sizeof(struct ipt_entry_target)) -- + IPT_ALIGN(sizeof(int)); -+ size = XT_ALIGN(sizeof(struct ipt_entry_target)) -+ + XT_ALIGN(sizeof(int)); - target = calloc(1, size); - target->u.user.target_size = size; - strncpy(target->u.user.name, "ACCEPT", IPT_FUNCTION_MAXNAMELEN); diff --git a/src/patches/miniupnpd-iptcrdr.patch b/src/patches/miniupnpd-iptcrdr.patch deleted file mode 100644 index 677043b..0000000 --- a/src/patches/miniupnpd-iptcrdr.patch +++ /dev/null @@ -1,16 +0,0 @@ ---- netfilter/iptcrdr.c.old 2010-02-24 14:22:23.000000000 +0100 -+++ netfilter/iptcrdr.c 2010-02-24 14:48:00.000000000 +0100 -@@ -20,6 +20,13 @@ - - #if IPTABLES_143 - /* IPTABLES API version >= 1.4.3 */ -+ -+#define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:-!!(e); })) -+#define __must_be_array(a) \ -+ BUILD_BUG_ON_ZERO(__builtin_types_compatible_p(typeof(a), typeof(&a[0]))) -+#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr)) -+#define LIST_POISON2 ((void *) 0x00200200 ) -+ - #include <net/netfilter/nf_nat.h> - #define ip_nat_multi_range nf_nat_multi_range - #define ip_nat_range nf_nat_range diff --git a/src/patches/ncurses-5.5-fixes-1.patch b/src/patches/ncurses-5.5-fixes-1.patch deleted file mode 100644 index 73e084d..0000000 --- a/src/patches/ncurses-5.5-fixes-1.patch +++ /dev/null @@ -1,225 +0,0 @@ -Submitted by: Alexander E. Patrakov -Date: 2005-12-07 -Initial Package Version: 5.5 -Upstream Status: Backport -Origin: Cherry-picked from ftp://invisible-island.net/ncurses/5.5/*.gz -Description: Fixes the following bugs: - -* memory leak in keyname() -* mishandling of overlapped wide characters, http://bugs.debian.org/316663 -* problems with line-drawing characters on cygwin, http://bugs.debian.org/338234 -* mishandling of EINTR in tcgetattr/tcsetattr, http://bugs.debian.org/339518 -* mishandling of single-column multibyte characters, http://bugs.debian.org/341661 - ---- ncurses-5.5-20051015+/ncurses/base/MKkeyname.awk 2005-04-30 19:26:25.000000000 +0000 -+++ ncurses-5.5-20051022/ncurses/base/MKkeyname.awk 2005-10-22 19:01:23.000000000 +0000 -@@ -97,6 +97,7 @@ - print " break;" - print " }" - print " }" -+ print " free(bound);" - print " if (result != 0)" - print " break;" - print " }" ---- ncurses-5.5-20051022+/ncurses/base/lib_addch.c 2005-03-27 16:52:16.000000000 +0000 -+++ ncurses-5.5-20051029/ncurses/base/lib_addch.c 2005-10-30 00:51:36.000000000 +0000 -@@ -315,7 +315,7 @@ - * setup though. - */ - for (i = 0; i < len; ++i) { -- if (isWidecBase(win->_line[y].text[i])) { -+ if (isWidecBase(win->_line[y].text[x + i])) { - break; - } else if (isWidecExt(win->_line[y].text[x + i])) { - for (j = i; x + j <= win->_maxx; ++j) { -@@ -334,7 +334,9 @@ - for (i = 0; i < len; ++i) { - NCURSES_CH_T value = ch; - SetWidecExt(value, i); -- TR(TRACE_VIRTPUT, ("multicolumn %d:%d", i + 1, len)); -+ TR(TRACE_VIRTPUT, ("multicolumn %d:%d (%d,%d)", -+ i + 1, len, -+ win->_begy + y, win->_begx + x)); - line->text[x] = value; - CHANGED_CELL(line, x); - ++x; ---- ncurses-5.5-20051022+/ncurses/base/lib_bkgd.c 2005-04-16 18:03:48.000000000 +0000 -+++ ncurses-5.5-20051029/ncurses/base/lib_bkgd.c 2005-10-30 00:41:09.000000000 +0000 -@@ -131,11 +131,11 @@ - - for (y = 0; y <= win->_maxy; y++) { - for (x = 0; x <= win->_maxx; x++) { -- if (CharEq(win->_line[y].text[x], old_bkgrnd)) -+ if (CharEq(win->_line[y].text[x], old_bkgrnd)) { - win->_line[y].text[x] = win->_nc_bkgd; -- else { -+ } else { - NCURSES_CH_T wch = win->_line[y].text[x]; -- RemAttr(wch, (~A_ALTCHARSET)); -+ RemAttr(wch, (~(A_ALTCHARSET | A_CHARTEXT))); - win->_line[y].text[x] = _nc_render(win, wch); - } - } ---- ncurses-5.5-20051022+/ncurses/base/lib_erase.c 2001-12-19 01:06:13.000000000 +0000 -+++ ncurses-5.5-20051029/ncurses/base/lib_erase.c 2005-10-30 00:36:36.000000000 +0000 -@@ -58,6 +59,24 @@ - start = win->_line[y].text; - end = &start[win->_maxx]; - -+ /* -+ * If this is a derived window, we have to handle the case where -+ * a multicolumn character extends into the window that we are -+ * erasing. -+ */ -+ if_WIDEC({ -+ if (isWidecExt(start[0])) { -+ int x = (win->_parent != 0) ? (win->_begx) : 0; -+ while (x-- > 0) { -+ if (isWidecBase(start[-1])) { -+ --start; -+ break; -+ } -+ --start; -+ } -+ } -+ }); -+ - for (sp = start; sp <= end; sp++) - *sp = blank; - ---- ncurses-5.5-20051029+/misc/terminfo.src 2005-10-26 23:21:06.000000000 +0000 -+++ ncurses-5.5-20051112/misc/terminfo.src 2005-11-12 23:01:03.000000000 +0000 -@@ -4731,32 +4731,35 @@ - # civis [make cursor invisible] causes everything to stackdump? \E[?25l\E[?1c - # ech [erase characters param] broken \E[%p1%dX - # kcbt [back-tab key] not implemented in cygwin? \E[Z -+# -+# 2005/11/12 -TD -+# Remove cbt since it does not work in current cygwin -+# Add 'mir' and 'in' flags based on tack - cygwin|ansi emulation for Cygwin, -- am, hs, in, msgr, xon, -+ am, hs, mir, msgr, xon, - colors#8, it#8, pairs#64, - acsc=+\020,\021-\030.^Y0\333`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376, -- bel=^G, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J, cr=^M, -- cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B, -- cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, -- cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, -- dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, fsl=^G, -- home=\E[H, hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@, -- ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J, invis=\E[8m, -- kb2=\E[G, kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, -- kcuu1=\E[A, kdch1=\E[3~, kend=\E[4~, kf1=\E[[A, -- kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, -- kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, -- kf18=\E[32~, kf19=\E[33~, kf2=\E[[B, kf20=\E[34~, -- kf3=\E[[C, kf4=\E[[D, kf5=\E[[E, kf6=\E[17~, kf7=\E[18~, -- kf8=\E[19~, kf9=\E[20~, khome=\E[1~, kich1=\E[2~, -- knp=\E[6~, kpp=\E[5~, kspd=^Z, nel=^M^J, op=\E[39;49m, -- rc=\E8, rev=\E[7m, ri=\EM, rmacs=\E[10m, -- rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmpch=\E[10m, -- rmso=\E[27m, rmul=\E[24m, rs1=\Ec\E]R, sc=\E7, -- setab=\E[4%p1%dm, setaf=\E[3%p1%dm, -+ bel=^G, bold=\E[1m, clear=\E[H\E[J, cr=^M, cub=\E[%p1%dD, -+ cub1=^H, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, -+ cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, -+ cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, -+ dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, fsl=^G, home=\E[H, -+ hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@, ich1=\E[@, -+ il=\E[%p1%dL, il1=\E[L, ind=^J, invis=\E[8m, kb2=\E[G, -+ kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, -+ kdch1=\E[3~, kend=\E[4~, kf1=\E[[A, kf10=\E[21~, -+ kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, -+ kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, -+ kf19=\E[33~, kf2=\E[[B, kf20=\E[34~, kf3=\E[[C, kf4=\E[[D, -+ kf5=\E[[E, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, -+ khome=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, kspd=^Z, -+ nel=^M^J, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, -+ rmacs=\E[10m, rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, -+ rmpch=\E[10m, rmso=\E[27m, rmul=\E[24m, rs1=\Ec\E]R, -+ sc=\E7, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, - sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m, -- sgr0=\E[0;10m, smacs=\E11m, smcup=\E7\E[?47h, smir=\E[4h, -- smpch=\E[11m, smso=\E[7m, smul=\E[4m, tsl=\E];, -+ sgr0=\E[0;10m, smacs=\E[11m, smcup=\E7\E[?47h, -+ smir=\E[4h, smpch=\E[11m, smso=\E[7m, smul=\E[4m, tsl=\E];, - u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?6c, u9=\E[c, - vpa=\E[%i%p1%dd, - ---- ncurses-5.5-20051112+/ncurses/tinfo/lib_ttyflags.c 2003-05-17 23:50:37.000000000 +0000 -+++ ncurses-5.5-20051119/ncurses/tinfo/lib_ttyflags.c 2005-11-19 20:36:23.000000000 +0000 -@@ -59,28 +59,51 @@ - NCURSES_EXPORT(int) - _nc_get_tty_mode(TTY * buf) - { -- if (cur_term == 0 -- || GET_TTY(cur_term->Filedes, buf) != 0) { -- memset(buf, 0, sizeof(*buf)); -- return (ERR); -+ int result = OK; -+ -+ if (cur_term == 0) { -+ result = ERR; -+ } else { -+ for (;;) { -+ if (GET_TTY(cur_term->Filedes, buf) != 0) { -+ if (errno == EINTR) -+ continue; -+ result = ERR; -+ } -+ break; -+ } - } -+ -+ if (result == ERR) -+ memset(buf, 0, sizeof(*buf)); -+ - TR(TRACE_BITS, ("_nc_get_tty_mode(%d): %s", - cur_term->Filedes, _nc_trace_ttymode(buf))); -- return (OK); -+ return (result); - } - - NCURSES_EXPORT(int) - _nc_set_tty_mode(TTY * buf) - { -- if (cur_term == 0 -- || SET_TTY(cur_term->Filedes, buf) != 0) { -- if ((errno == ENOTTY) && (SP != 0)) -- SP->_notty = TRUE; -- return (ERR); -+ int result = OK; -+ -+ if (cur_term == 0) { -+ result = ERR; -+ } else { -+ for (;;) { -+ if (SET_TTY(cur_term->Filedes, buf) != 0) { -+ if (errno == EINTR) -+ continue; -+ if ((errno == ENOTTY) && (SP != 0)) -+ SP->_notty = TRUE; -+ result = ERR; -+ } -+ break; -+ } - } - TR(TRACE_BITS, ("_nc_set_tty_mode(%d): %s", - cur_term->Filedes, _nc_trace_ttymode(buf))); -- return (OK); -+ return (result); - } - - NCURSES_EXPORT(int) ---- ncurses-5.5-20051126+/ncurses/widechar/lib_ins_wch.c 2005-09-17 19:25:13.000000000 +0000 -+++ ncurses-5.5-20051203/ncurses/widechar/lib_ins_wch.c 2005-12-03 20:24:19.000000000 +0000 -@@ -117,7 +117,7 @@ - for (cp = wstr; *cp && ((cp - wstr) < n); cp++) { - int len = wcwidth(*cp); - -- if (len != 1) { -+ if (len != 1 || !is8bits(*cp)) { - cchar_t tmp_cchar; - wchar_t tmp_wchar = *cp; - memset(&tmp_cchar, 0, sizeof(tmp_cchar)); diff --git a/src/patches/netpbm-10.26.46-getline.patch b/src/patches/netpbm-10.26.46-getline.patch new file mode 100644 index 0000000..c5a961b --- /dev/null +++ b/src/patches/netpbm-10.26.46-getline.patch @@ -0,0 +1,202 @@ +The getline function used in a couple of places in netpbm-free is also +defined by POSIX:2008, and so netpbm-free fails to build with newer +versions of (e)glibc. Here's a patch to rename it. + + * Rename getline functions to get_line to avoid conflict with POSIX:2008. + +--- netpbm-free-10.0.orig/ppm/xvminitoppm.c ++++ netpbm-free-10.0/ppm/xvminitoppm.c +@@ -14,7 +14,7 @@ + #include "ppm.h" + #define BUFSIZE 256 + +-static void getline ARGS((FILE *fp, char *buf)); ++static void get_line ARGS((FILE *fp, char *buf)); + + int + main(argc, argv) +@@ -48,18 +48,18 @@ + i++; + } + +- getline(ifp, buf); ++ get_line(ifp, buf); + if( strncmp(buf, "P7 332", 6) != 0 ) + pm_error("bad magic number - not a XV thumbnail picture"); + + while(1) { +- getline(ifp, buf); ++ get_line(ifp, buf); + if( strncmp(buf, "#END_OF_COMMENTS", 16)==0 ) + break; + if( strncmp(buf, "#BUILTIN", 8)==0 ) + pm_error("cannot convert builtin XV thumbnail pictures"); + } +- getline(ifp, buf); ++ get_line(ifp, buf); + if( sscanf(buf, "%d %d %d", &cols, &rows, &maxval) != 3 ) + pm_error("error parsing dimension info"); + if( maxval != 255 ) +@@ -85,7 +85,7 @@ + + + static void +-getline(fp, buf) ++get_line(fp, buf) + FILE *fp; + char *buf; + { +--- netpbm-free-10.0.orig/ppm/xpmtoppm.c ++++ netpbm-free-10.0/ppm/xpmtoppm.c +@@ -114,7 +114,7 @@ + + + static void +-getline(char * const line, int const size, FILE * const stream) { ++get_line(char * const line, int const size, FILE * const stream) { + /*---------------------------------------------------------------------------- + Read the next line from the input file 'stream', through the one-line + buffer lastInputLine[]. +@@ -130,7 +130,7 @@ + Exit program if the line doesn't fit in the buffer. + -----------------------------------------------------------------------------*/ + if (size > MAX_LINE+1) +- pm_error("INTERNAL ERROR: getline() received 'size' parameter " ++ pm_error("INTERNAL ERROR: get_line() received 'size' parameter " + "which is out of bounds"); + + if (backup) { +@@ -346,7 +346,7 @@ + int * const transparentP) { + /*---------------------------------------------------------------------------- + Read the header of the XPM file on stream 'stream'. Assume the +- getline() stream is presently positioned to the beginning of the ++ get_line() stream is presently positioned to the beginning of the + file and it is a Version 3 XPM file. Leave the stream positioned + after the header. + +@@ -377,25 +377,25 @@ + *widthP = *heightP = *ncolorsP = *chars_per_pixelP = -1; + + /* Read the XPM signature comment */ +- getline(line, sizeof(line), stream); ++ get_line(line, sizeof(line), stream); + if (strncmp(line, xpm3_signature, strlen(xpm3_signature)) != 0) + pm_error("Apparent XPM 3 file does not start with '/* XPM */'. " + "First line is '%s'", xpm3_signature); + + /* Read the assignment line */ +- getline(line, sizeof(line), stream); ++ get_line(line, sizeof(line), stream); + if (strncmp(line, "static char", 11) != 0) + pm_error("Cannot find data structure declaration. Expected a " + "line starting with 'static char', but found the line " + "'%s'.", line); + + /* Read the hints line */ +- getline(line, sizeof(line), stream); ++ get_line(line, sizeof(line), stream); + /* skip the comment line if any */ + if (!strncmp(line, "/*", 2)) { + while (!strstr(line, "*/")) +- getline(line, sizeof(line), stream); +- getline(line, sizeof(line), stream); ++ get_line(line, sizeof(line), stream); ++ get_line(line, sizeof(line), stream); + } + if (sscanf(line, ""%d %d %d %d",", widthP, heightP, + ncolorsP, chars_per_pixelP) != 4) +@@ -427,10 +427,10 @@ + *transparentP = -1; /* initial value */ + + for (seqNum = 0; seqNum < *ncolorsP; seqNum++) { +- getline(line, sizeof(line), stream); ++ get_line(line, sizeof(line), stream); + /* skip the comment line if any */ + if (!strncmp(line, "/*", 2)) +- getline(line, sizeof(line), stream); ++ get_line(line, sizeof(line), stream); + + interpretXpm3ColorTableLine(line, seqNum, *chars_per_pixelP, + *colorsP, *ptabP, transparentP); +@@ -445,7 +445,7 @@ + pixel ** const colorsP, int ** const ptabP) { + /*---------------------------------------------------------------------------- + Read the header of the XPM file on stream 'stream'. Assume the +- getline() stream is presently positioned to the beginning of the ++ get_line() stream is presently positioned to the beginning of the + file and it is a Version 1 XPM file. Leave the stream positioned + after the header. + +@@ -464,7 +464,7 @@ + /* Read the initial defines. */ + processedStaticChar = FALSE; + while (!processedStaticChar) { +- getline(line, sizeof(line), stream); ++ get_line(line, sizeof(line), stream); + + if (sscanf(line, "#define %s %d", str1, &v) == 2) { + char *t1; +@@ -512,7 +512,7 @@ + /* If there's a monochrome color table, skip it. */ + if (!strncmp(t1, "mono", 4)) { + for (;;) { +- getline(line, sizeof(line), stream); ++ get_line(line, sizeof(line), stream); + if (!strncmp(line, "static char", 11)) + break; + } +@@ -533,7 +533,7 @@ + + /* Read color table. */ + for (i = 0; i < *ncolorsP; ++i) { +- getline(line, sizeof(line), stream); ++ get_line(line, sizeof(line), stream); + + if ((t1 = strchr(line, '"')) == NULL) + pm_error("D error scanning color table"); +@@ -569,7 +569,7 @@ + "static char ..."). + */ + for (;;) { +- getline(line, sizeof(line), stream); ++ get_line(line, sizeof(line), stream); + if (strncmp(line, "static char", 11) == 0) + break; + } +@@ -660,7 +660,7 @@ + backup = FALSE; + + /* Read the header line */ +- getline(line, sizeof(line), stream); ++ get_line(line, sizeof(line), stream); + backup = TRUE; /* back up so next read reads this line again */ + + rc = sscanf(line, "/* %s */", str1); +@@ -681,7 +681,7 @@ + pm_error("Could not get %d bytes of memory for image", totalpixels); + cursor = *dataP; + maxcursor = *dataP + totalpixels - 1; +- getline(line, sizeof(line), stream); ++ get_line(line, sizeof(line), stream); + /* read next line (first line may not always start with comment) */ + while (cursor <= maxcursor) { + if (strncmp(line, "/*", 2) == 0) { +@@ -691,7 +691,7 @@ + ncolors, ptab, &cursor, maxcursor); + } + if (cursor <= maxcursor) +- getline(line, sizeof(line), stream); ++ get_line(line, sizeof(line), stream); + } + if (ptab) free(ptab); + } + +Thanks, + +-- +Colin Watson [cjwatson@ubuntu.com] + + + + diff --git a/src/patches/openldap-gcc44-fixes.patch b/src/patches/openldap-gcc44-fixes.patch new file mode 100644 index 0000000..53b8ea0 --- /dev/null +++ b/src/patches/openldap-gcc44-fixes.patch @@ -0,0 +1,31 @@ +--- include/ldap_pvt_thread.h~ 2008-11-12 07:37:16.000000000 +0000 ++++ include/ldap_pvt_thread.h 2008-11-12 08:01:45.000000000 +0000 +@@ -59,12 +59,12 @@ + + #ifndef LDAP_PVT_THREAD_H_DONE + #define LDAP_PVT_THREAD_SET_STACK_SIZE +-#ifndef LDAP_PVT_THREAD_STACK_SIZE +- /* LARGE stack. Will be twice as large on 64 bit machine. */ +-#define LDAP_PVT_THREAD_STACK_SIZE ( 1 * 1024 * 1024 * sizeof(void *) ) + /* May be explicitly defined to zero to disable it */ +-#elif LDAP_PVT_THREAD_STACK_SIZE == 0 ++#if LDAP_PVT_THREAD_STACK_SIZE == 0 + #undef LDAP_PVT_THREAD_SET_STACK_SIZE ++#elif !defined(LDAP_PVT_THREAD_STACK_SIZE) ++ /* LARGE stack. Will be twice as large on 64 bit machine. */ ++#define LDAP_PVT_THREAD_STACK_SIZE ( 1 * 1024 * 1024 * sizeof(void *) ) + #endif + #endif /* !LDAP_PVT_THREAD_H_DONE */ + +--- libraries/libldap/os-ip.c~ 2008-11-12 07:33:10.000000000 +0000 ++++ libraries/libldap/os-ip.c 2008-11-12 07:33:31.000000000 +0000 +@@ -690,7 +690,7 @@ + char *herr; + #ifdef NI_MAXHOST + char hbuf[NI_MAXHOST]; +-#elif defined( MAXHOSTNAMELEN ++#elif defined( MAXHOSTNAMELEN ) + char hbuf[MAXHOSTNAMELEN]; + #else + char hbuf[256]; + diff --git a/src/patches/pptp-1.7.2-compat.patch b/src/patches/pptp-1.7.2-compat.patch new file mode 100644 index 0000000..0ea1551 --- /dev/null +++ b/src/patches/pptp-1.7.2-compat.patch @@ -0,0 +1,71 @@ +Index: pptp_compat.c +=================================================================== +RCS file: /cvsroot/pptpclient/pptp-linux/pptp_compat.c,v +retrieving revision 1.1 +retrieving revision 1.3 +diff -u -r1.1 -r1.3 +--- pptp_compat.c 19 Feb 2008 21:43:28 -0000 1.1 ++++ pptp_compat.c 25 Jul 2008 00:13:56 -0000 1.3 +@@ -7,14 +7,15 @@ + #include <fcntl.h> + #include <sys/types.h> + #include <unistd.h> +-#include <stropts.h> + #include <stdlib.h> ++#if defined (__SVR4) && defined (__sun) /* Solaris */ ++#include <stropts.h> ++#endif + #include <strings.h> + #include "pptp_compat.h" + #include <stdio.h> + #include "util.h" + +- + #if defined (__SVR4) && defined (__sun) /* Solaris */ + /* + * daemon implementation from uClibc +Index: pptp.c +=================================================================== +RCS file: /cvsroot/pptpclient/pptp-linux/pptp.c,v +retrieving revision 1.49 +retrieving revision 1.51 +diff -u -r1.49 -r1.51 +--- pptp.c 14 May 2008 06:32:52 -0000 1.49 ++++ pptp.c 24 Jul 2008 05:53:05 -0000 1.51 +@@ -61,9 +61,8 @@ + #include "version.h" + #if defined(__linux__) + #include <sys/prctl.h> +-#else +-#include "inststr.h" + #endif ++#include "inststr.h" + #include "util.h" + #include "pptp_quirks.h" + #include "pqueue.h" +@@ -129,7 +128,7 @@ + } + + #if defined (__SVR4) && defined (__sun) +-struct in_addr localbind = { INADDR_ANY }; ++struct in_addr localbind = { .s_addr = INADDR_ANY }; + #else + struct in_addr localbind = { INADDR_NONE }; + #endif +@@ -183,6 +182,7 @@ + struct in_addr inetaddr; + volatile int callmgr_sock = -1; + char ttydev[PATH_MAX]; ++ char *tty_name; + int pty_fd, tty_fd, gre_fd, rc; + volatile pid_t parent_pid, child_pid; + u_int16_t call_id, peer_call_id; +@@ -391,7 +391,7 @@ + file2fd("/dev/null", "wb", STDERR_FILENO); + } + +- char *tty_name = ttyname(tty_fd); ++ tty_name = ttyname(tty_fd); + snprintf(buf, sizeof(buf), "pptp: GRE-to-PPP gateway on %s", + tty_name ? tty_name : "(null)"); + #ifdef PR_SET_NAME diff --git a/src/patches/readline-5.1-fixes-3.patch b/src/patches/readline-5.1-fixes-3.patch deleted file mode 100644 index e0fb875..0000000 --- a/src/patches/readline-5.1-fixes-3.patch +++ /dev/null @@ -1,128 +0,0 @@ -Submitted By: Matthew Burgess (matthew at linuxfromscratch dot org) -Date: 2006-03-17 -Initial Package Version: 5.1 -Origin: http://ftp.gnu.org/gnu/readline/readline-5.1-patches/ -Upstream Status: From Upstream -Description: Contains Patch 001-004 from Upstream - -diff -Naur readline-5.1.orig/display.c readline-5.1/display.c ---- readline-5.1.orig/display.c 2005-11-30 19:05:02.000000000 +0000 -+++ readline-5.1/display.c 2006-03-17 16:03:09.000000000 +0000 -@@ -1983,11 +1983,15 @@ - int pchar; - { - int len; -- char *pmt; -+ char *pmt, *p; - - rl_save_prompt (); - -- if (saved_local_prompt == 0) -+ /* We've saved the prompt, and can do anything with the various prompt -+ strings we need before they're restored. We want the unexpanded -+ portion of the prompt string after any final newline. */ -+ p = rl_prompt ? strrchr (rl_prompt, '\n') : 0; -+ if (p == 0) - { - len = (rl_prompt && *rl_prompt) ? strlen (rl_prompt) : 0; - pmt = (char *)xmalloc (len + 2); -@@ -1998,19 +2002,17 @@ - } - else - { -- len = *saved_local_prompt ? strlen (saved_local_prompt) : 0; -+ p++; -+ len = strlen (p); - pmt = (char *)xmalloc (len + 2); - if (len) -- strcpy (pmt, saved_local_prompt); -+ strcpy (pmt, p); - pmt[len] = pchar; - pmt[len+1] = '\0'; -- local_prompt = savestring (pmt); -- prompt_last_invisible = saved_last_invisible; -- prompt_visible_length = saved_visible_length + 1; -- } -+ } - -+ /* will be overwritten by expand_prompt, called from rl_message */ - prompt_physical_chars = saved_physical_chars + 1; -- - return pmt; - } - -diff -Naur readline-5.1.orig/readline.c readline-5.1/readline.c ---- readline-5.1.orig/readline.c 2005-07-05 02:29:35.000000000 +0000 -+++ readline-5.1/readline.c 2006-03-17 16:03:05.000000000 +0000 -@@ -282,6 +282,7 @@ - { - FREE (rl_prompt); - rl_prompt = prompt ? savestring (prompt) : (char *)NULL; -+ rl_display_prompt = rl_prompt ? rl_prompt : ""; - - rl_visible_prompt_length = rl_expand_prompt (rl_prompt); - return 0; -@@ -714,7 +715,7 @@ - - rl_dispatching = 1; - RL_SETSTATE(RL_STATE_DISPATCHING); -- r = (*map[key].function)(rl_numeric_arg * rl_arg_sign, key); -+ (*map[key].function)(rl_numeric_arg * rl_arg_sign, key); - RL_UNSETSTATE(RL_STATE_DISPATCHING); - rl_dispatching = 0; - -diff -Naur readline-5.1.orig/terminal.c readline-5.1/terminal.c ---- readline-5.1.orig/terminal.c 2005-11-13 01:46:54.000000000 +0000 -+++ readline-5.1/terminal.c 2006-03-17 16:03:02.000000000 +0000 -@@ -122,7 +122,7 @@ - static char *_rl_visible_bell; - - /* Non-zero means the terminal can auto-wrap lines. */ --int _rl_term_autowrap; -+int _rl_term_autowrap = -1; - - /* Non-zero means that this terminal has a meta key. */ - static int term_has_meta; -@@ -274,6 +274,9 @@ - _rl_set_screen_size (rows, cols) - int rows, cols; - { -+ if (_rl_term_autowrap == -1) -+ _rl_init_terminal_io (rl_terminal_name); -+ - if (rows > 0) - _rl_screenheight = rows; - if (cols > 0) -diff -Naur readline-5.1.orig/text.c readline-5.1/text.c ---- readline-5.1.orig/text.c 2005-09-24 23:06:07.000000000 +0000 -+++ readline-5.1/text.c 2006-03-17 16:02:58.000000000 +0000 -@@ -1071,8 +1071,6 @@ - rl_delete (count, key) - int count, key; - { -- int r; -- - if (count < 0) - return (_rl_rubout_char (-count, key)); - -@@ -1090,17 +1088,17 @@ - else - rl_forward_byte (count, key); - -- r = rl_kill_text (orig_point, rl_point); -+ rl_kill_text (orig_point, rl_point); - rl_point = orig_point; -- return r; - } - else - { - int new_point; - - new_point = MB_NEXTCHAR (rl_line_buffer, rl_point, 1, MB_FIND_NONZERO); -- return (rl_delete_text (rl_point, new_point)); -+ rl_delete_text (rl_point, new_point); - } -+ return 0; - } - - /* Delete the character under the cursor, unless the insertion diff --git a/src/patches/readline/readline52-001 b/src/patches/readline/readline52-001 new file mode 100644 index 0000000..0bec9a2 --- /dev/null +++ b/src/patches/readline/readline52-001 @@ -0,0 +1,30 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 5.2 +Patch-ID: readline52-001 + +Bug-Reported-by: ebb9@byu.net +Bug-Reference-ID: 45540862.9030900@byu.net +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-11/msg00017.html + http://lists.gnu.org/archive/html/bug-bash/2006-11/msg00016.html + +Bug-Description: + +In some cases, code that is intended to be used in the presence of multibyte +characters is called when no such characters are present, leading to incorrect +display position calculations and incorrect redisplay. + +Patch: + +*** ../readline-5.2/display.c Thu Sep 14 14:20:12 2006 +--- display.c Mon Nov 13 17:55:57 2006 +*************** +*** 2381,2384 **** +--- 2409,2414 ---- + if (end <= start) + return 0; ++ if (MB_CUR_MAX == 1 || rl_byte_oriented) ++ return (end - start); + + memset (&ps, 0, sizeof (mbstate_t)); diff --git a/src/patches/readline/readline52-002 b/src/patches/readline/readline52-002 new file mode 100644 index 0000000..b0d8c92 --- /dev/null +++ b/src/patches/readline/readline52-002 @@ -0,0 +1,49 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 5.2 +Patch-ID: readline52-002 + +Bug-Reported-by: Magnus Svensson msvensson@mysql.com +Bug-Reference-ID: 45BDC44D.80609@mysql.com +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2007-01/msg00002.html + +Bug-Description: + +Readline neglects to reallocate the array it uses to keep track of wrapped +screen lines when increasing its size. This will eventually result in +segmentation faults when given sufficiently long input. + +Patch: + +*** ../readline-5.2-patched/display.c Thu Sep 14 14:20:12 2006 +--- display.c Fri Feb 2 20:23:17 2007 +*************** +*** 561,574 **** +--- 561,586 ---- + wrap_offset = prompt_invis_chars_first_line = 0; + } + ++ #if defined (HANDLE_MULTIBYTE) + #define CHECK_INV_LBREAKS() \ + do { \ + if (newlines >= (inv_lbsize - 2)) \ + { \ + inv_lbsize *= 2; \ + inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \ ++ _rl_wrapped_line = (int *)xrealloc (_rl_wrapped_line, inv_lbsize * sizeof (int)); \ + } \ + } while (0) ++ #else ++ #define CHECK_INV_LBREAKS() \ ++ do { \ ++ if (newlines >= (inv_lbsize - 2)) \ ++ { \ ++ inv_lbsize *= 2; \ ++ inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \ ++ } \ ++ } while (0) ++ #endif /* HANDLE_MULTIBYTE */ + + #if defined (HANDLE_MULTIBYTE) + #define CHECK_LPOS() \ diff --git a/src/patches/readline/readline52-003 b/src/patches/readline/readline52-003 new file mode 100644 index 0000000..06916b3 --- /dev/null +++ b/src/patches/readline/readline52-003 @@ -0,0 +1,37 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 5.2 +Patch-ID: readline52-003 + +Bug-Reported-by: Peter Volkov torre_cremata@mail.ru +Bug-Reference-ID: 1171795523.8021.18.camel@localhost +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-02/msg00054.html + +Bug-Description: + +When moving the cursor, bash sometimes misplaces the cursor when the prompt +contains two or more multibyte characters. The particular circumstance that +uncovered the problem was having the (multibyte) current directory name in +the prompt string. + +Patch: + +*** ../readline-5.2.2/display.c Fri Jan 19 13:34:50 2007 +--- display.c Sat Mar 10 17:25:44 2007 +*************** +*** 1745,1749 **** + { + dpos = _rl_col_width (data, 0, new); +! if (dpos > prompt_last_invisible) /* XXX - don't use woff here */ + { + dpos -= woff; +--- 1745,1752 ---- + { + dpos = _rl_col_width (data, 0, new); +! /* Use NEW when comparing against the last invisible character in the +! prompt string, since they're both buffer indices and DPOS is a +! desired display position. */ +! if (new > prompt_last_invisible) /* XXX - don't use woff here */ + { + dpos -= woff; diff --git a/src/patches/readline/readline52-004 b/src/patches/readline/readline52-004 new file mode 100644 index 0000000..b165ad9 --- /dev/null +++ b/src/patches/readline/readline52-004 @@ -0,0 +1,70 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 5.2 +Patch-ID: readline52-004 + +Bug-Reported-by: Peter Volkov torre_cremata@mail.ru +Bug-Reference-ID: 1173636022.7039.36.camel@localhost +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-03/msg00039.html + +Bug-Description: + +When restoring the original prompt after finishing an incremental search, +bash sometimes places the cursor incorrectly if the primary prompt contains +invisible characters. + +Patch: + +*** ../readline-5.2.3/display.c Fri Apr 20 13:30:16 2007 +--- display.c Fri Apr 20 15:17:01 2007 +*************** +*** 1599,1604 **** + if (temp > 0) + { + _rl_output_some_chars (nfd, temp); +! _rl_last_c_pos += _rl_col_width (nfd, 0, temp);; + } + } +--- 1599,1618 ---- + if (temp > 0) + { ++ /* If nfd begins at the prompt, or before the invisible ++ characters in the prompt, we need to adjust _rl_last_c_pos ++ in a multibyte locale to account for the wrap offset and ++ set cpos_adjusted accordingly. */ + _rl_output_some_chars (nfd, temp); +! if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) +! { +! _rl_last_c_pos += _rl_col_width (nfd, 0, temp); +! if (current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible)) +! { +! _rl_last_c_pos -= wrap_offset; +! cpos_adjusted = 1; +! } +! } +! else +! _rl_last_c_pos += temp; + } + } +*************** +*** 1608,1613 **** +--- 1622,1639 ---- + if (temp > 0) + { ++ /* If nfd begins at the prompt, or before the invisible ++ characters in the prompt, we need to adjust _rl_last_c_pos ++ in a multibyte locale to account for the wrap offset and ++ set cpos_adjusted accordingly. */ + _rl_output_some_chars (nfd, temp); + _rl_last_c_pos += col_temp; /* XXX */ ++ if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) ++ { ++ if (current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible)) ++ { ++ _rl_last_c_pos -= wrap_offset; ++ cpos_adjusted = 1; ++ } ++ } + } + lendiff = (oe - old) - (ne - new); diff --git a/src/patches/readline/readline52-005 b/src/patches/readline/readline52-005 new file mode 100644 index 0000000..d192ac1 --- /dev/null +++ b/src/patches/readline/readline52-005 @@ -0,0 +1,328 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 5.2 +Patch-ID: readline52-005 + +Bug-Reported-by: Thomas Loeber ifp@loeber1.de +Bug-Reference-ID: 200703082223.08919.ifp@loeber1.de +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-03/msg00036.html + +Bug-Description: + +When rl_read_key returns -1, indicating that readline's controlling terminal +has been invalidated for some reason (e.g., receiving a SIGHUP), the error +status was not reported correctly to the caller. This could cause input +loops. + +Patch: + +*** ../readline-5.2/complete.c Fri Jul 28 11:35:49 2006 +--- complete.c Tue Mar 13 08:50:16 2007 +*************** +*** 429,433 **** + if (c == 'n' || c == 'N' || c == RUBOUT) + return (0); +! if (c == ABORT_CHAR) + _rl_abort_internal (); + if (for_pager && (c == NEWLINE || c == RETURN)) +--- 440,444 ---- + if (c == 'n' || c == 'N' || c == RUBOUT) + return (0); +! if (c == ABORT_CHAR || c < 0) + _rl_abort_internal (); + if (for_pager && (c == NEWLINE || c == RETURN)) +*** ../readline-5.2/input.c Wed Aug 16 15:15:16 2006 +--- input.c Wed May 2 16:07:59 2007 +*************** +*** 514,518 **** + int size; + { +! int mb_len = 0; + size_t mbchar_bytes_length; + wchar_t wc; +--- 522,526 ---- + int size; + { +! int mb_len, c; + size_t mbchar_bytes_length; + wchar_t wc; +*************** +*** 521,531 **** + memset(&ps, 0, sizeof (mbstate_t)); + memset(&ps_back, 0, sizeof (mbstate_t)); +! + while (mb_len < size) + { + RL_SETSTATE(RL_STATE_MOREINPUT); +! mbchar[mb_len++] = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); + + mbchar_bytes_length = mbrtowc (&wc, mbchar, mb_len, &ps); + if (mbchar_bytes_length == (size_t)(-1)) +--- 529,545 ---- + memset(&ps, 0, sizeof (mbstate_t)); + memset(&ps_back, 0, sizeof (mbstate_t)); +! +! mb_len = 0; + while (mb_len < size) + { + RL_SETSTATE(RL_STATE_MOREINPUT); +! c = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); + ++ if (c < 0) ++ break; ++ ++ mbchar[mb_len++] = c; ++ + mbchar_bytes_length = mbrtowc (&wc, mbchar, mb_len, &ps); + if (mbchar_bytes_length == (size_t)(-1)) +*************** +*** 565,569 **** + c = first; + memset (mb, 0, mlen); +! for (i = 0; i < mlen; i++) + { + mb[i] = (char)c; +--- 579,583 ---- + c = first; + memset (mb, 0, mlen); +! for (i = 0; c >= 0 && i < mlen; i++) + { + mb[i] = (char)c; +*** ../readline-5.2/isearch.c Mon Dec 26 17:18:53 2005 +--- isearch.c Fri Mar 9 14:30:59 2007 +*************** +*** 328,333 **** + + f = (rl_command_func_t *)NULL; +! +! /* Translate the keys we do something with to opcodes. */ + if (c >= 0 && _rl_keymap[c].type == ISFUNC) + { +--- 328,340 ---- + + f = (rl_command_func_t *)NULL; +! +! if (c < 0) +! { +! cxt->sflags |= SF_FAILED; +! cxt->history_pos = cxt->last_found_line; +! return -1; +! } +! +! /* Translate the keys we do something with to opcodes. */ + if (c >= 0 && _rl_keymap[c].type == ISFUNC) + { +*** ../readline-5.2/misc.c Mon Dec 26 17:20:46 2005 +--- misc.c Fri Mar 9 14:44:11 2007 +*************** +*** 147,150 **** +--- 147,152 ---- + rl_clear_message (); + RL_UNSETSTATE(RL_STATE_NUMERICARG); ++ if (key < 0) ++ return -1; + return (_rl_dispatch (key, _rl_keymap)); + } +*** ../readline-5.2/readline.c Wed Aug 16 15:00:36 2006 +--- readline.c Fri Mar 9 14:47:24 2007 +*************** +*** 646,649 **** +--- 669,677 ---- + { + nkey = _rl_subseq_getchar (cxt->okey); ++ if (nkey < 0) ++ { ++ _rl_abort_internal (); ++ return -1; ++ } + r = _rl_dispatch_subseq (nkey, cxt->dmap, cxt->subseq_arg); + cxt->flags |= KSEQ_DISPATCHED; +*** ../readline-5.2/text.c Fri Jul 28 11:55:27 2006 +--- text.c Sun Mar 25 13:41:38 2007 +*************** +*** 858,861 **** +--- 864,870 ---- + RL_UNSETSTATE(RL_STATE_MOREINPUT); + ++ if (c < 0) ++ return -1; ++ + #if defined (HANDLE_SIGNALS) + if (RL_ISSTATE (RL_STATE_CALLBACK) == 0) +*************** +*** 1521,1524 **** +--- 1530,1536 ---- + mb_len = _rl_read_mbchar (mbchar, MB_LEN_MAX); + ++ if (mb_len <= 0) ++ return -1; ++ + if (count < 0) + return (_rl_char_search_internal (-count, bdir, mbchar, mb_len)); +*************** +*** 1537,1540 **** +--- 1549,1555 ---- + RL_UNSETSTATE(RL_STATE_MOREINPUT); + ++ if (c < 0) ++ return -1; ++ + if (count < 0) + return (_rl_char_search_internal (-count, bdir, c)); +*** ../readline-5.2/vi_mode.c Sat Jul 29 16:42:28 2006 +--- vi_mode.c Fri Mar 9 15:02:11 2007 +*************** +*** 887,890 **** +--- 887,897 ---- + c = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); ++ ++ if (c < 0) ++ { ++ *nextkey = 0; ++ return -1; ++ } ++ + *nextkey = c; + +*************** +*** 903,906 **** +--- 910,918 ---- + c = rl_read_key (); /* real command */ + RL_UNSETSTATE(RL_STATE_MOREINPUT); ++ if (c < 0) ++ { ++ *nextkey = 0; ++ return -1; ++ } + *nextkey = c; + } +*************** +*** 1225,1236 **** + _rl_callback_generic_arg *data; + { + #if defined (HANDLE_MULTIBYTE) +! _rl_vi_last_search_mblen = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX); + #else + RL_SETSTATE(RL_STATE_MOREINPUT); +! _rl_vi_last_search_char = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); + #endif + + _rl_callback_func = 0; + _rl_want_redisplay = 1; +--- 1243,1262 ---- + _rl_callback_generic_arg *data; + { ++ int c; + #if defined (HANDLE_MULTIBYTE) +! c = _rl_vi_last_search_mblen = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX); + #else + RL_SETSTATE(RL_STATE_MOREINPUT); +! c = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); + #endif + ++ if (c <= 0) ++ return -1; ++ ++ #if !defined (HANDLE_MULTIBYTE) ++ _rl_vi_last_search_char = c; ++ #endif ++ + _rl_callback_func = 0; + _rl_want_redisplay = 1; +*************** +*** 1248,1251 **** +--- 1274,1278 ---- + int count, key; + { ++ int c; + #if defined (HANDLE_MULTIBYTE) + static char *target; +*************** +*** 1294,1302 **** + { + #if defined (HANDLE_MULTIBYTE) +! _rl_vi_last_search_mblen = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX); + #else + RL_SETSTATE(RL_STATE_MOREINPUT); +! _rl_vi_last_search_char = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); + #endif + } +--- 1321,1335 ---- + { + #if defined (HANDLE_MULTIBYTE) +! c = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX); +! if (c <= 0) +! return -1; +! _rl_vi_last_search_mblen = c; + #else + RL_SETSTATE(RL_STATE_MOREINPUT); +! c = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); ++ if (c < 0) ++ return -1; ++ _rl_vi_last_search_char = c; + #endif + } +*************** +*** 1468,1471 **** +--- 1501,1507 ---- + RL_UNSETSTATE(RL_STATE_MOREINPUT); + ++ if (c < 0) ++ return -1; ++ + #if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) +*************** +*** 1486,1489 **** +--- 1522,1528 ---- + _rl_vi_last_replacement = c = _rl_vi_callback_getchar (mb, MB_LEN_MAX); + ++ if (c < 0) ++ return -1; ++ + _rl_callback_func = 0; + _rl_want_redisplay = 1; +*************** +*** 1517,1520 **** +--- 1556,1562 ---- + _rl_vi_last_replacement = c = _rl_vi_callback_getchar (mb, MB_LEN_MAX); + ++ if (c < 0) ++ return -1; ++ + return (_rl_vi_change_char (count, c, mb)); + } +*************** +*** 1651,1655 **** + RL_UNSETSTATE(RL_STATE_MOREINPUT); + +! if (ch < 'a' || ch > 'z') + { + rl_ding (); +--- 1693,1697 ---- + RL_UNSETSTATE(RL_STATE_MOREINPUT); + +! if (ch < 0 || ch < 'a' || ch > 'z') /* make test against 0 explicit */ + { + rl_ding (); +*************** +*** 1703,1707 **** + return 0; + } +! else if (ch < 'a' || ch > 'z') + { + rl_ding (); +--- 1745,1749 ---- + return 0; + } +! else if (ch < 0 || ch < 'a' || ch > 'z') /* make test against 0 explicit */ + { + rl_ding (); diff --git a/src/patches/readline/readline52-006 b/src/patches/readline/readline52-006 new file mode 100644 index 0000000..d739143 --- /dev/null +++ b/src/patches/readline/readline52-006 @@ -0,0 +1,62 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 5.2 +Patch-ID: readline52-006 + +Bug-Reported-by: Peter Volkov torre_cremata@mail.ru +Bug-Reference-ID: 1178376645.9063.25.camel@localhost +Bug-Reference-URL: http://bugs.gentoo.org/177095 + +Bug-Description: + +The readline display code miscalculated the screen position when performing +a redisplay in which the new text occupies more screen space that the old, +but takes fewer bytes to do so (e.g., when replacing a shorter string +containing multibyte characters with a longer one containing only ASCII). + +Patch: + +*** ../readline-5.2/display.c Thu Apr 26 11:38:22 2007 +--- display.c Thu Jul 12 23:10:10 2007 +*************** +*** 1519,1527 **** + /* Non-zero if we're increasing the number of lines. */ + int gl = current_line >= _rl_vis_botlin && inv_botlin > _rl_vis_botlin; + /* Sometimes it is cheaper to print the characters rather than + use the terminal's capabilities. If we're growing the number + of lines, make sure we actually cause the new line to wrap + around on auto-wrapping terminals. */ +! if (_rl_terminal_can_insert && ((2 * col_temp) >= col_lendiff || _rl_term_IC) && (!_rl_term_autowrap || !gl)) + { + /* If lendiff > prompt_visible_length and _rl_last_c_pos == 0 and +--- 1568,1596 ---- + /* Non-zero if we're increasing the number of lines. */ + int gl = current_line >= _rl_vis_botlin && inv_botlin > _rl_vis_botlin; ++ /* If col_lendiff is > 0, implying that the new string takes up more ++ screen real estate than the old, but lendiff is < 0, meaning that it ++ takes fewer bytes, we need to just output the characters starting ++ from the first difference. These will overwrite what is on the ++ display, so there's no reason to do a smart update. This can really ++ only happen in a multibyte environment. */ ++ if (lendiff < 0) ++ { ++ _rl_output_some_chars (nfd, temp); ++ _rl_last_c_pos += _rl_col_width (nfd, 0, temp); ++ /* If nfd begins before any invisible characters in the prompt, ++ adjust _rl_last_c_pos to account for wrap_offset and set ++ cpos_adjusted to let the caller know. */ ++ if (current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible)) ++ { ++ _rl_last_c_pos -= wrap_offset; ++ cpos_adjusted = 1; ++ } ++ return; ++ } + /* Sometimes it is cheaper to print the characters rather than + use the terminal's capabilities. If we're growing the number + of lines, make sure we actually cause the new line to wrap + around on auto-wrapping terminals. */ +! else if (_rl_terminal_can_insert && ((2 * col_temp) >= col_lendiff || _rl_term_IC) && (!_rl_term_autowrap || !gl)) + { + /* If lendiff > prompt_visible_length and _rl_last_c_pos == 0 and diff --git a/src/patches/readline/readline52-007 b/src/patches/readline/readline52-007 new file mode 100644 index 0000000..f75f53f --- /dev/null +++ b/src/patches/readline/readline52-007 @@ -0,0 +1,65 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 5.2 +Patch-ID: readline52-007 + +Bug-Reported-by: Tom Bjorkholm tom.bjorkholm@ericsson.com +Bug-Reference-ID: AEA1A32F001C6B4F98614B5B80D7647D01C075E9@esealmw115.eemea.ericsson.se +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2007-04/msg00004.html + + +Bug-Description: + +An off-by-one error in readline's input buffering caused readline to drop +each 511th character of buffered input (e.g., when pasting a large amount +of data into a terminal window). + +Patch: + +*** ../readline-5.2/input.c Wed Aug 16 15:15:16 2006 +--- input.c Tue Jul 17 09:24:21 2007 +*************** +*** 134,139 **** + + *key = ibuffer[pop_index++]; +! + if (pop_index >= ibuffer_len) + pop_index = 0; + +--- 134,142 ---- + + *key = ibuffer[pop_index++]; +! #if 0 + if (pop_index >= ibuffer_len) ++ #else ++ if (pop_index > ibuffer_len) ++ #endif + pop_index = 0; + +*************** +*** 251,255 **** + { + k = (*rl_getc_function) (rl_instream); +! rl_stuff_char (k); + if (k == NEWLINE || k == RETURN) + break; +--- 254,259 ---- + { + k = (*rl_getc_function) (rl_instream); +! if (rl_stuff_char (k) == 0) +! break; /* some problem; no more room */ + if (k == NEWLINE || k == RETURN) + break; +*************** +*** 374,378 **** +--- 378,386 ---- + } + ibuffer[push_index++] = key; ++ #if 0 + if (push_index >= ibuffer_len) ++ #else ++ if (push_index > ibuffer_len) ++ #endif + push_index = 0; + diff --git a/src/patches/readline/readline52-008 b/src/patches/readline/readline52-008 new file mode 100644 index 0000000..1d7f327 --- /dev/null +++ b/src/patches/readline/readline52-008 @@ -0,0 +1,70 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 5.2 +Patch-ID: readline52-008 + +Bug-Reported-by: dAniel hAhler ubuntu@thequod.de +Bug-Reference-ID: 4702ED8A.5000503@thequod.de +Bug-Reference-URL: https://bugs.launchpad.net/ubuntu/+source/bash/+bug/119938 + +Bug-Description: + +When updating the display after displaying, for instance, a list of possible +completions, readline will place the cursor at the wrong position if the +prompt contains invisible characters and a newline. + +Patch: + +*** ../readline-5.2-patched/display.c Mon Aug 6 14:26:29 2007 +--- display.c Wed Oct 10 22:43:58 2007 +*************** +*** 1049,1053 **** + else + tx = nleft; +! if (_rl_last_c_pos > tx) + { + _rl_backspace (_rl_last_c_pos - tx); /* XXX */ +--- 1049,1053 ---- + else + tx = nleft; +! if (tx >= 0 && _rl_last_c_pos > tx) + { + _rl_backspace (_rl_last_c_pos - tx); /* XXX */ +*************** +*** 1205,1209 **** + { + register char *ofd, *ols, *oe, *nfd, *nls, *ne; +! int temp, lendiff, wsatend, od, nd; + int current_invis_chars; + int col_lendiff, col_temp; +--- 1205,1209 ---- + { + register char *ofd, *ols, *oe, *nfd, *nls, *ne; +! int temp, lendiff, wsatend, od, nd, o_cpos; + int current_invis_chars; + int col_lendiff, col_temp; +*************** +*** 1466,1469 **** +--- 1466,1471 ---- + } + ++ o_cpos = _rl_last_c_pos; ++ + /* When this function returns, _rl_last_c_pos is correct, and an absolute + cursor postion in multibyte mode, but a buffer index when not in a +*************** +*** 1475,1479 **** + invisible characters in the prompt string. Let's see if setting this when + we make sure we're at the end of the drawn prompt string works. */ +! if (current_line == 0 && MB_CUR_MAX > 1 && rl_byte_oriented == 0 && _rl_last_c_pos == prompt_physical_chars) + cpos_adjusted = 1; + #endif +--- 1477,1483 ---- + invisible characters in the prompt string. Let's see if setting this when + we make sure we're at the end of the drawn prompt string works. */ +! if (current_line == 0 && MB_CUR_MAX > 1 && rl_byte_oriented == 0 && +! (_rl_last_c_pos > 0 || o_cpos > 0) && +! _rl_last_c_pos == prompt_physical_chars) + cpos_adjusted = 1; + #endif diff --git a/src/patches/readline/readline52-009 b/src/patches/readline/readline52-009 new file mode 100644 index 0000000..af9e381 --- /dev/null +++ b/src/patches/readline/readline52-009 @@ -0,0 +1,45 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 5.2 +Patch-ID: readline52-009 + +Bug-Reported-by: dAniel hAhler ubuntu@thequod.de +Bug-Reference-ID: +Bug-Reference-URL: + +Bug-Description: + +Under some circumstances, readline will incorrectly display a prompt string +containing invisible characters after the final newline. + +Patch: + +*** ../readline-5.2-patched/display.c 2007-08-25 13:47:08.000000000 -0400 +--- display.c 2007-11-10 17:51:29.000000000 -0500 +*************** +*** 392,396 **** + local_prompt = expand_prompt (p, &prompt_visible_length, + &prompt_last_invisible, +! (int *)NULL, + &prompt_physical_chars); + c = *t; *t = '\0'; +--- 420,424 ---- + local_prompt = expand_prompt (p, &prompt_visible_length, + &prompt_last_invisible, +! &prompt_invis_chars_first_line, + &prompt_physical_chars); + c = *t; *t = '\0'; +*************** +*** 399,403 **** + local_prompt_prefix = expand_prompt (prompt, &prompt_prefix_length, + (int *)NULL, +! &prompt_invis_chars_first_line, + (int *)NULL); + *t = c; +--- 427,431 ---- + local_prompt_prefix = expand_prompt (prompt, &prompt_prefix_length, + (int *)NULL, +! (int *)NULL, + (int *)NULL); + *t = c; diff --git a/src/patches/readline/readline52-010 b/src/patches/readline/readline52-010 new file mode 100644 index 0000000..ee5c026 --- /dev/null +++ b/src/patches/readline/readline52-010 @@ -0,0 +1,47 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 5.2 +Patch-ID: readline52-010 + +Bug-Reported-by: Miroslav Lichvar mlichvar@redhat.com +Bug-Reference-ID: Fri, 02 Nov 2007 14:07:45 +0100 +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2007-11/msg00000.html + +Bug-Description: + +In certain cases when outputting characters at the end of the line, +e.g., when displaying the prompt string, readline positions the cursor +incorrectly if the prompt string contains invisible characters and the +text being drawn begins before the last invisible character in the line. + +Patch: + +*** ../readline-5.2-patched/display.c 2007-08-25 13:47:08.000000000 -0400 +--- display.c 2007-11-10 17:51:29.000000000 -0500 +*************** +*** 1566,1574 **** + else + { +- /* We have horizontal scrolling and we are not inserting at +- the end. We have invisible characters in this line. This +- is a dumb update. */ + _rl_output_some_chars (nfd, temp); + _rl_last_c_pos += col_temp; + return; + } +--- 1619,1632 ---- + else + { + _rl_output_some_chars (nfd, temp); + _rl_last_c_pos += col_temp; ++ /* If nfd begins before any invisible characters in the prompt, ++ adjust _rl_last_c_pos to account for wrap_offset and set ++ cpos_adjusted to let the caller know. */ ++ if (current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible)) ++ { ++ _rl_last_c_pos -= wrap_offset; ++ cpos_adjusted = 1; ++ } + return; + } diff --git a/src/patches/readline/readline52-011 b/src/patches/readline/readline52-011 new file mode 100644 index 0000000..a1197ed --- /dev/null +++ b/src/patches/readline/readline52-011 @@ -0,0 +1,32 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 5.2 +Patch-ID: readline52-011 + +Bug-Reported-by: Uwe Doering gemini@geminix.org +Bug-Reference-ID: 46F3DD72.2090801@geminix.org +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-09/msg00102.html + +Bug-Description: + +There is an off-by-one error in the code that buffers characters received +very quickly in succession, causing characters to be dropped. + +Patch: + +*** ../readline-5.2-patched/input.c 2007-08-25 13:47:10.000000000 -0400 +--- input.c 2007-10-12 22:55:25.000000000 -0400 +*************** +*** 155,159 **** + pop_index--; + if (pop_index < 0) +! pop_index = ibuffer_len - 1; + ibuffer[pop_index] = key; + return (1); +--- 155,159 ---- + pop_index--; + if (pop_index < 0) +! pop_index = ibuffer_len; + ibuffer[pop_index] = key; + return (1); diff --git a/src/patches/readline/readline52-012 b/src/patches/readline/readline52-012 new file mode 100644 index 0000000..7b37024 --- /dev/null +++ b/src/patches/readline/readline52-012 @@ -0,0 +1,150 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 5.2 +Patch-ID: readline52-012 + +Bug-Reported-by: Chet Ramey chet.ramey@case.edu +Bug-Reference-ID: +Bug-Reference-URL: + +Bug-Description: + +This updates the options required to create shared libraries on several +systems, including Mac OS X 10.5 (darwin9.x), FreeBSD, NetBSD, OpenBSD, +AIX, and HP/UX. + +Patch: + +*** ../readline-5.2-patched/support/shobj-conf 2006-04-11 09:15:43.000000000 -0400 +--- support/shobj-conf 2007-12-06 23:46:41.000000000 -0500 +*************** +*** 11,15 **** + # chet@po.cwru.edu + +! # Copyright (C) 1996-2002 Free Software Foundation, Inc. + # + # This program is free software; you can redistribute it and/or modify +--- 11,15 ---- + # chet@po.cwru.edu + +! # Copyright (C) 1996-2007 Free Software Foundation, Inc. + # + # This program is free software; you can redistribute it and/or modify +*************** +*** 115,119 **** + ;; + +! freebsd2* | netbsd*) + SHOBJ_CFLAGS=-fpic + SHOBJ_LD=ld +--- 115,119 ---- + ;; + +! freebsd2*) + SHOBJ_CFLAGS=-fpic + SHOBJ_LD=ld +*************** +*** 126,130 **** + # FreeBSD-3.x ELF + freebsd[3-9]*|freebsdelf[3-9]*|freebsdaout[3-9]*|dragonfly*) +! SHOBJ_CFLAGS=-fpic + SHOBJ_LD='${CC}' + +--- 126,130 ---- + # FreeBSD-3.x ELF + freebsd[3-9]*|freebsdelf[3-9]*|freebsdaout[3-9]*|dragonfly*) +! SHOBJ_CFLAGS=-fPIC + SHOBJ_LD='${CC}' + +*************** +*** 143,147 **** + + # Darwin/MacOS X +! darwin8*) + SHOBJ_STATUS=supported + SHLIB_STATUS=supported +--- 143,147 ---- + + # Darwin/MacOS X +! darwin[89]*) + SHOBJ_STATUS=supported + SHLIB_STATUS=supported +*************** +*** 154,158 **** + SHLIB_LIBSUFF='dylib' + +! SHOBJ_LDFLAGS='-undefined dynamic_lookup' + SHLIB_XLDFLAGS='-dynamiclib -arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v' + +--- 154,158 ---- + SHLIB_LIBSUFF='dylib' + +! SHOBJ_LDFLAGS='-dynamiclib -dynamic -undefined dynamic_lookup -arch_only `/usr/bin/arch`' + SHLIB_XLDFLAGS='-dynamiclib -arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v' + +*************** +*** 172,176 **** + + case "${host_os}" in +! darwin[78]*) SHOBJ_LDFLAGS='' + SHLIB_XLDFLAGS='-dynamiclib -arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v' + ;; +--- 172,176 ---- + + case "${host_os}" in +! darwin[789]*) SHOBJ_LDFLAGS='' + SHLIB_XLDFLAGS='-dynamiclib -arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v' + ;; +*************** +*** 183,187 **** + ;; + +! openbsd*) + SHOBJ_CFLAGS=-fPIC + SHOBJ_LD='${CC}' +--- 183,187 ---- + ;; + +! openbsd*|netbsd*) + SHOBJ_CFLAGS=-fPIC + SHOBJ_LD='${CC}' +*************** +*** 248,252 **** + ;; + +! aix4.[2-9]*-*gcc*) # lightly tested by jik@cisco.com + SHOBJ_CFLAGS=-fpic + SHOBJ_LD='ld' +--- 248,252 ---- + ;; + +! aix4.[2-9]*-*gcc*|aix[5-9].*-*gcc*) # lightly tested by jik@cisco.com + SHOBJ_CFLAGS=-fpic + SHOBJ_LD='ld' +*************** +*** 259,263 **** + ;; + +! aix4.[2-9]*) + SHOBJ_CFLAGS=-K + SHOBJ_LD='ld' +--- 259,263 ---- + ;; + +! aix4.[2-9]*|aix[5-9].*) + SHOBJ_CFLAGS=-K + SHOBJ_LD='ld' +*************** +*** 330,334 **** + # if you have problems linking here, moving the `-Wl,+h,$@' from + # SHLIB_XLDFLAGS to SHOBJ_LDFLAGS has been reported to work +! SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,+s' + + SHLIB_XLDFLAGS='-Wl,+h,$@ -Wl,+b,$(libdir)' +--- 330,334 ---- + # if you have problems linking here, moving the `-Wl,+h,$@' from + # SHLIB_XLDFLAGS to SHOBJ_LDFLAGS has been reported to work +! SHOBJ_LDFLAGS='-shared -fpic -Wl,-b -Wl,+s' + + SHLIB_XLDFLAGS='-Wl,+h,$@ -Wl,+b,$(libdir)' diff --git a/src/patches/readline/readline52-013 b/src/patches/readline/readline52-013 new file mode 100644 index 0000000..82a1897 --- /dev/null +++ b/src/patches/readline/readline52-013 @@ -0,0 +1,135 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 5.2 +Patch-ID: readline52-013 + +Bug-Reported-by: slinkp stuff@slinkp.com +Bug-Reference-ID: da52a26a-9f38-4861-a918-14d3482b539d@c65g2000hsa.googlegroups.com +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2008-05/msg00085.html + +Bug-Description: + +The presence of invisible characters in a prompt longer than the screenwidth +with invisible characters on the first and last prompt lines caused readline +to place the cursor in the wrong physical location. + +Patch: + +*** ../readline-5.2-patched/display.c 2007-12-14 21:12:40.000000000 -0500 +--- display.c 2008-10-23 09:39:46.000000000 -0400 +*************** +*** 911,914 **** +--- 944,951 ---- + OFFSET (which has already been calculated above). */ + ++ #define INVIS_FIRST() (prompt_physical_chars > _rl_screenwidth ? prompt_invis_chars_first_line : wrap_offset) ++ #define WRAP_OFFSET(line, offset) ((line == 0) \ ++ ? (offset ? INVIS_FIRST() : 0) \ ++ : ((line == prompt_last_screen_line) ? wrap_offset-prompt_invis_chars_first_line : 0)) + #define W_OFFSET(line, offset) ((line) == 0 ? offset : 0) + #define VIS_LLEN(l) ((l) > _rl_vis_botlin ? 0 : (vis_lbreaks[l+1] - vis_lbreaks[l])) +*************** +*** 945,949 **** + _rl_last_c_pos > wrap_offset && + o_cpos < prompt_last_invisible) +! _rl_last_c_pos -= wrap_offset; + + /* If this is the line with the prompt, we might need to +--- 982,992 ---- + _rl_last_c_pos > wrap_offset && + o_cpos < prompt_last_invisible) +! _rl_last_c_pos -= prompt_invis_chars_first_line; /* XXX - was wrap_offset */ +! else if (linenum == prompt_last_screen_line && prompt_physical_chars > _rl_screenwidth && +! (MB_CUR_MAX > 1 && rl_byte_oriented == 0) && +! cpos_adjusted == 0 && +! _rl_last_c_pos != o_cpos && +! _rl_last_c_pos > (prompt_last_invisible - _rl_screenwidth - prompt_invis_chars_first_line)) +! _rl_last_c_pos -= (wrap_offset-prompt_invis_chars_first_line); + + /* If this is the line with the prompt, we might need to +*************** +*** 1205,1209 **** + { + register char *ofd, *ols, *oe, *nfd, *nls, *ne; +! int temp, lendiff, wsatend, od, nd, o_cpos; + int current_invis_chars; + int col_lendiff, col_temp; +--- 1264,1268 ---- + { + register char *ofd, *ols, *oe, *nfd, *nls, *ne; +! int temp, lendiff, wsatend, od, nd, twidth, o_cpos; + int current_invis_chars; + int col_lendiff, col_temp; +*************** +*** 1221,1225 **** + temp = _rl_last_c_pos; + else +! temp = _rl_last_c_pos - W_OFFSET(_rl_last_v_pos, visible_wrap_offset); + if (temp == _rl_screenwidth && _rl_term_autowrap && !_rl_horizontal_scroll_mode + && _rl_last_v_pos == current_line - 1) +--- 1280,1284 ---- + temp = _rl_last_c_pos; + else +! temp = _rl_last_c_pos - WRAP_OFFSET (_rl_last_v_pos, visible_wrap_offset); + if (temp == _rl_screenwidth && _rl_term_autowrap && !_rl_horizontal_scroll_mode + && _rl_last_v_pos == current_line - 1) +*************** +*** 1587,1599 **** + { + _rl_output_some_chars (nfd + lendiff, temp - lendiff); +- #if 1 + /* XXX -- this bears closer inspection. Fixes a redisplay bug + reported against bash-3.0-alpha by Andreas Schwab involving + multibyte characters and prompt strings with invisible + characters, but was previously disabled. */ +! _rl_last_c_pos += _rl_col_width (nfd+lendiff, 0, temp-col_lendiff); +! #else +! _rl_last_c_pos += _rl_col_width (nfd+lendiff, 0, temp-lendiff); +! #endif + } + } +--- 1648,1660 ---- + { + _rl_output_some_chars (nfd + lendiff, temp - lendiff); + /* XXX -- this bears closer inspection. Fixes a redisplay bug + reported against bash-3.0-alpha by Andreas Schwab involving + multibyte characters and prompt strings with invisible + characters, but was previously disabled. */ +! if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) +! twidth = _rl_col_width (nfd+lendiff, 0, temp-col_lendiff); +! else +! twidth = temp - lendiff; +! _rl_last_c_pos += twidth; + } + } +*************** +*** 1789,1793 **** + int cpos, dpos; /* current and desired cursor positions */ + +! woff = W_OFFSET (_rl_last_v_pos, wrap_offset); + cpos = _rl_last_c_pos; + #if defined (HANDLE_MULTIBYTE) +--- 1850,1854 ---- + int cpos, dpos; /* current and desired cursor positions */ + +! woff = WRAP_OFFSET (_rl_last_v_pos, wrap_offset); + cpos = _rl_last_c_pos; + #if defined (HANDLE_MULTIBYTE) +*************** +*** 1803,1807 **** + prompt string, since they're both buffer indices and DPOS is a + desired display position. */ +! if (new > prompt_last_invisible) /* XXX - don't use woff here */ + { + dpos -= woff; +--- 1864,1872 ---- + prompt string, since they're both buffer indices and DPOS is a + desired display position. */ +! if ((new > prompt_last_invisible) || /* XXX - don't use woff here */ +! (prompt_physical_chars > _rl_screenwidth && +! _rl_last_v_pos == prompt_last_screen_line && +! wrap_offset != woff && +! new > (prompt_last_invisible-_rl_screenwidth-wrap_offset))) + { + dpos -= woff; diff --git a/src/patches/readline/readline52-014 b/src/patches/readline/readline52-014 new file mode 100644 index 0000000..8dfaae4 --- /dev/null +++ b/src/patches/readline/readline52-014 @@ -0,0 +1,49 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 5.2 +Patch-ID: readline52-014 + +Bug-Reported-by: Len Lattanzi llattanzi@apple.com +Bug-Reference-ID: 52B1297F-6675-45CC-B63E-24745337D006@apple.com +Bug-Reference-URL: + +Bug-Description: + +On systems where mbrtowc() returns -2 when passed a length argument with +value 0, when using a multibyte locale, Readline's emacs-mode forward-char +at the end of a line will leave the point beyond the end of the line. + +Patch: + +*** ../readline-5.2-patched/mbutil.c 2009-05-29 23:09:26.000000000 -0400 +--- mbutil.c 2009-05-29 23:10:12.000000000 -0400 +*************** +*** 78,82 **** + int seed, count, find_non_zero; + { +! size_t tmp; + mbstate_t ps; + int point; +--- 78,82 ---- + int seed, count, find_non_zero; + { +! size_t tmp, len; + mbstate_t ps; + int point; +*************** +*** 99,103 **** + while (count > 0) + { +! tmp = mbrtowc (&wc, string+point, strlen(string + point), &ps); + if (MB_INVALIDCH ((size_t)tmp)) + { +--- 99,106 ---- + while (count > 0) + { +! len = strlen (string + point); +! if (len == 0) +! break; +! tmp = mbrtowc (&wc, string+point, len, &ps); + if (MB_INVALIDCH ((size_t)tmp)) + { diff --git a/src/patches/readline/readline62-001 b/src/patches/readline/readline62-001 new file mode 100644 index 0000000..d4563c3 --- /dev/null +++ b/src/patches/readline/readline62-001 @@ -0,0 +1,46 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 6.2 +Patch-ID: readline62-001 + +Bug-Reported-by: Clark J. Wang dearvoid@gmail.com +Bug-Reference-ID: AANLkTimGbW7aC4E5infXP6ku5WPci4t=xVc+L1SyHqrD@mail.gmail.com +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2011-02/msg00157.html + +Bug-Description: + +The readline vi-mode `cc', `dd', and `yy' commands failed to modify the +entire line. + +[This patch intentionally does not modify patchlevel] + +Patch (apply with `patch -p0'): + +*** ../readline-6.2-patched/vi_mode.c 2010-11-20 19:51:39.000000000 -0500 +--- vi_mode.c 2011-02-17 20:24:25.000000000 -0500 +*************** +*** 1115,1119 **** + _rl_vi_last_motion = c; + RL_UNSETSTATE (RL_STATE_VIMOTION); +! return (0); + } + #if defined (READLINE_CALLBACKS) +--- 1115,1119 ---- + _rl_vi_last_motion = c; + RL_UNSETSTATE (RL_STATE_VIMOTION); +! return (vidomove_dispatch (m)); + } + #if defined (READLINE_CALLBACKS) +*** ../readline-6.2-patched/callback.c 2010-06-06 12:18:58.000000000 -0400 +--- callback.c 2011-02-17 20:43:28.000000000 -0500 +*************** +*** 149,152 **** +--- 149,155 ---- + /* Should handle everything, including cleanup, numeric arguments, + and turning off RL_STATE_VIMOTION */ ++ if (RL_ISSTATE (RL_STATE_NUMERICARG) == 0) ++ _rl_internal_char_cleanup (); ++ + return; + } diff --git a/src/patches/readline/readline62-002 b/src/patches/readline/readline62-002 new file mode 100644 index 0000000..3dc2604 --- /dev/null +++ b/src/patches/readline/readline62-002 @@ -0,0 +1,57 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 6.2 +Patch-ID: readline62-002 + +Bug-Reported-by: Vincent Sheffer vince.sheffer@apisphere.com +Bug-Reference-ID: F13C1C4F-C44C-4071-BFED-4BB6D13CF92F@apisphere.com +Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-readline/2011-08/msg00000.html + +Bug-Description: + +The readline shared library helper script needs to be updated for Mac OS X +10.7 (Lion, darwin11). + +Patch (apply with `patch -p0'): + +*** ../readline-6.2-patched/support/shobj-conf 2009-10-28 09:20:21.000000000 -0400 +--- support/shobj-conf 2011-08-27 13:25:23.000000000 -0400 +*************** +*** 158,162 **** + + # Darwin/MacOS X +! darwin[89]*|darwin10*) + SHOBJ_STATUS=supported + SHLIB_STATUS=supported +--- 172,176 ---- + + # Darwin/MacOS X +! darwin[89]*|darwin1[012]*) + SHOBJ_STATUS=supported + SHLIB_STATUS=supported +*************** +*** 187,191 **** + + case "${host_os}" in +! darwin[789]*|darwin10*) SHOBJ_LDFLAGS='' + SHLIB_XLDFLAGS='-dynamiclib -arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v' + ;; +--- 201,205 ---- + + case "${host_os}" in +! darwin[789]*|darwin1[012]*) SHOBJ_LDFLAGS='' + SHLIB_XLDFLAGS='-dynamiclib -arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v' + ;; + +*** ../readline-6.2-patched/patchlevel 2010-01-14 10:15:52.000000000 -0500 +--- patchlevel 2011-11-17 11:09:35.000000000 -0500 +*************** +*** 1,3 **** + # Do not edit -- exists only for use by patch + +! 1 +--- 1,3 ---- + # Do not edit -- exists only for use by patch + +! 2 diff --git a/src/patches/readline/readline62-003 b/src/patches/readline/readline62-003 new file mode 100644 index 0000000..0462242 --- /dev/null +++ b/src/patches/readline/readline62-003 @@ -0,0 +1,76 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 6.2 +Patch-ID: readline62-003 + +Bug-Reported-by: Max Horn max@quendi.de +Bug-Reference-ID: 20CC5C60-07C3-4E41-9817-741E48D407C5@quendi.de +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2012-06/msg00005.html + +Bug-Description: + +A change between readline-6.1 and readline-6.2 to prevent the readline input +hook from being called too frequently had the side effect of causing delays +when reading pasted input on systems such as Mac OS X. This patch fixes +those delays while retaining the readline-6.2 behavior. + +Patch (apply with `patch -p0'): + +*** ../readline-6.2-patched/input.c 2010-05-30 18:33:01.000000000 -0400 +--- input.c 2012-06-25 21:08:42.000000000 -0400 +*************** +*** 410,414 **** + rl_read_key () + { +! int c; + + rl_key_sequence_length++; +--- 412,416 ---- + rl_read_key () + { +! int c, r; + + rl_key_sequence_length++; +*************** +*** 430,441 **** + while (rl_event_hook) + { +! if (rl_gather_tyi () < 0) /* XXX - EIO */ + { + rl_done = 1; + return ('\n'); + } + RL_CHECK_SIGNALS (); +- if (rl_get_char (&c) != 0) +- break; + if (rl_done) /* XXX - experimental */ + return ('\n'); +--- 432,447 ---- + while (rl_event_hook) + { +! if (rl_get_char (&c) != 0) +! break; +! +! if ((r = rl_gather_tyi ()) < 0) /* XXX - EIO */ + { + rl_done = 1; + return ('\n'); + } ++ else if (r == 1) /* read something */ ++ continue; ++ + RL_CHECK_SIGNALS (); + if (rl_done) /* XXX - experimental */ + return ('\n'); +*** ../readline-6.2-patched/patchlevel 2010-01-14 10:15:52.000000000 -0500 +--- patchlevel 2011-11-17 11:09:35.000000000 -0500 +*************** +*** 1,3 **** + # Do not edit -- exists only for use by patch + +! 2 +--- 1,3 ---- + # Do not edit -- exists only for use by patch + +! 3 diff --git a/src/patches/readline/readline62-004 b/src/patches/readline/readline62-004 new file mode 100644 index 0000000..5f3ba9b --- /dev/null +++ b/src/patches/readline/readline62-004 @@ -0,0 +1,108 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 6.2 +Patch-ID: readline62-004 + +Bug-Reported-by: Jakub Filak +Bug-Reference-ID: +Bug-Reference-URL: https://bugzilla.redhat.com/show_bug.cgi?id=813289 + +Bug-Description: + +Attempting to redo (using `.') the vi editing mode `cc', `dd', or `yy' +commands leads to an infinite loop. + +Patch (apply with `patch -p0'): + +*** ../readline-6.2-patched/vi_mode.c 2011-02-25 11:17:02.000000000 -0500 +--- vi_mode.c 2012-06-02 12:24:47.000000000 -0400 +*************** +*** 1235,1243 **** + r = rl_domove_motion_callback (_rl_vimvcxt); + } +! else if (vi_redoing) + { + _rl_vimvcxt->motion = _rl_vi_last_motion; + r = rl_domove_motion_callback (_rl_vimvcxt); + } + #if defined (READLINE_CALLBACKS) + else if (RL_ISSTATE (RL_STATE_CALLBACK)) +--- 1297,1313 ---- + r = rl_domove_motion_callback (_rl_vimvcxt); + } +! else if (vi_redoing && _rl_vi_last_motion != 'd') /* `dd' is special */ + { + _rl_vimvcxt->motion = _rl_vi_last_motion; + r = rl_domove_motion_callback (_rl_vimvcxt); + } ++ else if (vi_redoing) /* handle redoing `dd' here */ ++ { ++ _rl_vimvcxt->motion = _rl_vi_last_motion; ++ rl_mark = rl_end; ++ rl_beg_of_line (1, key); ++ RL_UNSETSTATE (RL_STATE_VIMOTION); ++ r = vidomove_dispatch (_rl_vimvcxt); ++ } + #if defined (READLINE_CALLBACKS) + else if (RL_ISSTATE (RL_STATE_CALLBACK)) +*************** +*** 1317,1325 **** + r = rl_domove_motion_callback (_rl_vimvcxt); + } +! else if (vi_redoing) + { + _rl_vimvcxt->motion = _rl_vi_last_motion; + r = rl_domove_motion_callback (_rl_vimvcxt); + } + #if defined (READLINE_CALLBACKS) + else if (RL_ISSTATE (RL_STATE_CALLBACK)) +--- 1387,1403 ---- + r = rl_domove_motion_callback (_rl_vimvcxt); + } +! else if (vi_redoing && _rl_vi_last_motion != 'c') /* `cc' is special */ + { + _rl_vimvcxt->motion = _rl_vi_last_motion; + r = rl_domove_motion_callback (_rl_vimvcxt); + } ++ else if (vi_redoing) /* handle redoing `cc' here */ ++ { ++ _rl_vimvcxt->motion = _rl_vi_last_motion; ++ rl_mark = rl_end; ++ rl_beg_of_line (1, key); ++ RL_UNSETSTATE (RL_STATE_VIMOTION); ++ r = vidomove_dispatch (_rl_vimvcxt); ++ } + #if defined (READLINE_CALLBACKS) + else if (RL_ISSTATE (RL_STATE_CALLBACK)) +*************** +*** 1378,1381 **** +--- 1456,1472 ---- + r = rl_domove_motion_callback (_rl_vimvcxt); + } ++ else if (vi_redoing && _rl_vi_last_motion != 'y') /* `yy' is special */ ++ { ++ _rl_vimvcxt->motion = _rl_vi_last_motion; ++ r = rl_domove_motion_callback (_rl_vimvcxt); ++ } ++ else if (vi_redoing) /* handle redoing `yy' here */ ++ { ++ _rl_vimvcxt->motion = _rl_vi_last_motion; ++ rl_mark = rl_end; ++ rl_beg_of_line (1, key); ++ RL_UNSETSTATE (RL_STATE_VIMOTION); ++ r = vidomove_dispatch (_rl_vimvcxt); ++ } + #if defined (READLINE_CALLBACKS) + else if (RL_ISSTATE (RL_STATE_CALLBACK)) +*** ../readline-6.2-patched/patchlevel 2010-01-14 10:15:52.000000000 -0500 +--- patchlevel 2011-11-17 11:09:35.000000000 -0500 +*************** +*** 1,3 **** + # Do not edit -- exists only for use by patch + +! 3 +--- 1,3 ---- + # Do not edit -- exists only for use by patch + +! 4 diff --git a/src/patches/screen-4.0.3-stropts.patch b/src/patches/screen-4.0.3-stropts.patch new file mode 100644 index 0000000..d6cbed7 --- /dev/null +++ b/src/patches/screen-4.0.3-stropts.patch @@ -0,0 +1,48 @@ +diff -up screen-4.0.3/tty.sh.stropts screen-4.0.3/tty.sh +--- screen-4.0.3/tty.sh.stropts 2003-09-08 16:24:25.000000000 +0200 ++++ screen-4.0.3/tty.sh 2008-04-07 11:28:34.000000000 +0200 +@@ -76,7 +76,7 @@ exit 0 + #endif + + #include "config.h" +-#ifdef SVR4 ++#if 0 + #include <sys/stropts.h> /* for I_POP */ + #endif + +diff -up screen-4.0.3/screen.c.stropts screen-4.0.3/screen.c +--- screen-4.0.3/screen.c.stropts 2008-04-07 11:25:21.000000000 +0200 ++++ screen-4.0.3/screen.c 2008-04-07 11:29:14.000000000 +0200 +@@ -50,7 +50,7 @@ + + #include "config.h" + +-#ifdef SVR4 ++#if 0 + # include <sys/stropts.h> + #endif + +diff -up screen-4.0.3/process.c.stropts screen-4.0.3/process.c +--- screen-4.0.3/process.c.stropts 2003-09-18 14:53:54.000000000 +0200 ++++ screen-4.0.3/process.c 2008-04-07 11:29:47.000000000 +0200 +@@ -37,7 +37,7 @@ + #include "config.h" + + /* for solaris 2.1, Unixware (SVR4.2) and possibly others: */ +-#ifdef SVR4 ++#if 0 + # include <sys/stropts.h> + #endif + +diff -up screen-4.0.3/pty.c.stropts screen-4.0.3/pty.c +--- screen-4.0.3/pty.c.stropts 2003-09-08 16:26:18.000000000 +0200 ++++ screen-4.0.3/pty.c 2008-04-07 11:30:07.000000000 +0200 +@@ -34,7 +34,7 @@ + #endif + + /* for solaris 2.1, Unixware (SVR4.2) and possibly others */ +-#ifdef HAVE_SVR4_PTYS ++#if 0 + # include <sys/stropts.h> + #endif + diff --git a/src/patches/slang-1.4.9-uclibc.patch b/src/patches/slang-1.4.9-uclibc.patch deleted file mode 100644 index 7847147..0000000 --- a/src/patches/slang-1.4.9-uclibc.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -ru slang-1.4.9.orig/src/slmisc.c slang-1.4.9/src/slmisc.c ---- slang-1.4.9.orig/src/slmisc.c 2003-03-23 07:06:40.000000000 +0000 -+++ slang-1.4.9/src/slmisc.c 2004-05-05 14:27:24.000000000 +0000 -@@ -565,7 +565,7 @@ - return (int) SLatol (s); - } - --#if !defined(HAVE_ISSETUGID) && defined(__GLIBC__) && (__GLIBC__ >= 2) -+#if 0 - extern int __libc_enable_secure; - # define HAVE___LIBC_ENABLE_SECURE 1 - #endif diff --git a/src/patches/uClibc-gcc4-genwctype.patch b/src/patches/uClibc-gcc4-genwctype.patch deleted file mode 100644 index 568e5bd..0000000 --- a/src/patches/uClibc-gcc4-genwctype.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- uClibc-0.9.28/extra/locale/gen_wctype.c.orig 2005-08-18 00:49:41.000000000 +0200 -+++ uClibc-0.9.28/extra/locale/gen_wctype.c 2005-12-09 16:29:53.000000000 +0100 -@@ -796,6 +796,7 @@ - ti[i] = ut + j; - j += blocksize; - } -+ memset(uniqblock, 0, sizeof(uniqblock)); - - /* sort */ - nu_val = blocksize; - diff --git a/src/patches/vdr-1.6.0-gcc44-fixes.patch b/src/patches/vdr-1.6.0-gcc44-fixes.patch new file mode 100644 index 0000000..d8841d8 --- /dev/null +++ b/src/patches/vdr-1.6.0-gcc44-fixes.patch @@ -0,0 +1,62 @@ +Index: vdr-1.6.0/recording.c +=================================================================== +--- vdr-1.6.0.orig/recording.c ++++ vdr-1.6.0/recording.c +@@ -509,8 +509,8 @@ cRecording::cRecording(cTimer *Timer, co + Utf8Strn0Cpy(SubtitleBuffer, Subtitle, MAX_SUBTITLE_LENGTH); + Subtitle = SubtitleBuffer; + } +- char *macroTITLE = strstr(Timer->File(), TIMERMACRO_TITLE); +- char *macroEPISODE = strstr(Timer->File(), TIMERMACRO_EPISODE); ++ const char *macroTITLE = strstr(Timer->File(), TIMERMACRO_TITLE); ++ const char *macroEPISODE = strstr(Timer->File(), TIMERMACRO_EPISODE); + if (macroTITLE || macroEPISODE) { + name = strdup(Timer->File()); + name = strreplace(name, TIMERMACRO_TITLE, Title); +@@ -551,7 +551,7 @@ cRecording::cRecording(const char *FileN + sortBuffer = NULL; + fileName = strdup(FileName); + FileName += strlen(VideoDirectory) + 1; +- char *p = strrchr(FileName, '/'); ++ const char *p = strrchr(FileName, '/'); + + name = NULL; + info = new cRecordingInfo; +@@ -1022,7 +1022,8 @@ void cRecordings::DelByName(const char * + if (recording) { + cThreadLock DeletedRecordingsLock(&DeletedRecordings); + Del(recording, false); +- char *ext = strrchr(recording->FileName(), '.'); ++ // wtf? ++ char *ext = strrchr(const_cast<char*>(recording->FileName()), '.'); + if (ext) { + strncpy(ext, DELEXT, strlen(ext)); + recording->fileSizeMB = DirSizeMB(recording->FileName()); +Index: vdr-1.6.0/svdrp.c +=================================================================== +--- vdr-1.6.0.orig/svdrp.c ++++ vdr-1.6.0/svdrp.c +@@ -736,7 +736,7 @@ void cSVDRP::CmdGRAB(const char *Option) + char *strtok_next; + FileName = strtok_r(p, delim, &strtok_next); + // image type: +- char *Extension = strrchr(FileName, '.'); ++ const char *Extension = strrchr(FileName, '.'); + if (Extension) { + if (strcasecmp(Extension, ".jpg") == 0 || strcasecmp(Extension, ".jpeg") == 0) + Jpeg = true; +@@ -796,12 +796,12 @@ void cSVDRP::CmdGRAB(const char *Option) + if (FileName) { + if (grabImageDir) { + cString s; +- char *slash = strrchr(FileName, '/'); ++ char *slash = strrchr(const_cast<char*>(FileName), '/'); + if (!slash) { + s = AddDirectory(grabImageDir, FileName); + FileName = s; + } +- slash = strrchr(FileName, '/'); // there definitely is one ++ slash = strrchr(const_cast<char*>(FileName), '/'); // there definitely is one + *slash = 0; + char *r = realpath(FileName, RealFileName); + *slash = '/'; diff --git a/src/patches/vdr-plugin-epgsearch-gcc44.patch b/src/patches/vdr-plugin-epgsearch-gcc44.patch new file mode 100644 index 0000000..2a92a3b --- /dev/null +++ b/src/patches/vdr-plugin-epgsearch-gcc44.patch @@ -0,0 +1,78 @@ +diff -urNad vdr-plugin-epgsearch-0.9.24~/epgsearchsvdrp.c vdr-plugin-epgsearch-0.9.24/epgsearchsvdrp.c +--- vdr-plugin-epgsearch-0.9.24~/epgsearchsvdrp.c 2008-04-13 20:53:44.000000000 +0200 ++++ vdr-plugin-epgsearch-0.9.24/epgsearchsvdrp.c 2009-10-26 20:27:07.000000000 +0100 +@@ -742,12 +742,13 @@ + { + if (*Option) + { +- char* pipePos = strchr(Option, '|'); ++ const char* pipePos = strchr(Option, '|'); + if (pipePos) + { +- *pipePos = 0; +- const char* oldName = Option; +- const char* newName = pipePos+1; ++ int index = pipePos - Option; ++ char* oldName = strdup(Option); ++ *(oldName + index) = 0; ++ const char* newName = oldName + index + 1; + if (strlen(oldName) > 0 && strlen(newName) > 0) + { + cChannelGroup *changrp = ChannelGroups.GetGroupByName(Option); +@@ -769,15 +770,18 @@ + } + ChannelGroups.Save(); + SearchExts.Save(); ++ free(oldName); + return cString::sprintf("renamed channel group '%s' to '%s'", oldName, newName); + + } + else + { ++ free(oldName); + ReplyCode = 901; + return cString::sprintf("channel group '%s' not defined", Option); + } + } ++ free(oldName); + } + ReplyCode = 901; + return cString("Error in channel group parameters"); +diff -urNad vdr-plugin-epgsearch-0.9.24~/epgsearchtools.c vdr-plugin-epgsearch-0.9.24/epgsearchtools.c +--- vdr-plugin-epgsearch-0.9.24~/epgsearchtools.c 2008-04-13 20:53:42.000000000 +0200 ++++ vdr-plugin-epgsearch-0.9.24/epgsearchtools.c 2009-10-26 20:27:07.000000000 +0100 +@@ -743,7 +743,7 @@ + while(tmp) + { + // extract a single line +- char* lf = strchr(tmp, '\n'); ++ const char* lf = strchr(tmp, '\n'); + char* line = NULL; + if (lf) + line = strndup(tmp, lf-tmp); +diff -urNad vdr-plugin-epgsearch-0.9.24~/menu_dirselect.c vdr-plugin-epgsearch-0.9.24/menu_dirselect.c +--- vdr-plugin-epgsearch-0.9.24~/menu_dirselect.c 2008-04-13 20:53:44.000000000 +0200 ++++ vdr-plugin-epgsearch-0.9.24/menu_dirselect.c 2009-10-26 20:27:07.000000000 +0100 +@@ -83,7 +83,7 @@ + return 1; + do + { +- char* pos = strchr(szDir, '~'); ++ const char* pos = strchr(szDir, '~'); + if (pos) + { + iLevel++; +diff -urNad vdr-plugin-epgsearch-0.9.24~/searchtimer_thread.c vdr-plugin-epgsearch-0.9.24/searchtimer_thread.c +--- vdr-plugin-epgsearch-0.9.24~/searchtimer_thread.c 2008-04-28 18:22:31.000000000 +0200 ++++ vdr-plugin-epgsearch-0.9.24/searchtimer_thread.c 2009-10-26 20:27:28.000000000 +0100 +@@ -565,8 +565,8 @@ + if (!isempty(aux)) + { + tmpaux = strdup(aux); +- char* begin = strstr(aux, "<epgsearch>"); +- char* end = strstr(aux, "</epgsearch>"); ++ const char* begin = strstr(aux, "<epgsearch>"); ++ const char* end = strstr(aux, "</epgsearch>"); + if (begin && end) + { + if (begin == aux) strcpy(tmpaux, ""); else strn0cpy(tmpaux, aux, begin-aux+1); diff --git a/src/stripper b/src/stripper new file mode 100755 index 0000000..2b4feaf --- /dev/null +++ b/src/stripper @@ -0,0 +1,57 @@ +#!/tools/bin/bash + +dirs="" +excludes="/dev /proc /sys /run" + +while [ $# -gt 0 ]; do + case "${1}" in + --exclude=*) + excludes="${excludes} ${1#*=}" + ;; + *) + dirs="${dirs} ${1}" + ;; + esac + shift +done + +function _strip() { + local file=${1} + local cmd="${STRIP-strip}" + + local exclude l + for exclude in ${excludes}; do + l=${#exclude} + if [ "${file:0:${l}}" = "${exclude}" ]; then + return 0 + fi + done + + case "$(file -bi ${file})" in + application/x-sharedlib*|application/x-archive*) + cmd="${cmd} --strip-debug --remove-section=.comment --remove-section=.note" + ;; + *) + cmd="${cmd} --strip-unneeded" + ;; + esac + + echo "Stripping ${file}..." + ${cmd} ${file} +} + +for dir in ${dirs}; do + # Strip shared objects. + find ${dir} -type f ( -perm -0100 -or -perm -0010 -or -perm -0001 ) \ + | file -N -f - | sed -n -e 's/^(.*):[ ]*.*ELF.*, not stripped/\1/p' | + while read file; do + _strip ${file} + done + + # Strip static archives. + find ${dir} -name *.a -a -exec file {} ; \ + | grep 'current ar archive' | sed -n -e 's/^(.*):[ ]*current ar archive/\1/p' | + while read file; do + _strip ${file} + done +done diff --git a/tools/make-functions b/tools/make-functions index 5450689..5af0b4b 100644 --- a/tools/make-functions +++ b/tools/make-functions @@ -220,6 +220,7 @@ get_pkg_ver() if [ 'x86_64' = $MACHINE -o 'i686' = $MACHINE -o 'i586' = $MACHINE ]; then echo "`date -u '+%b %e %T'`: Machine is iX86 (or equivalent)" >> $LOGFILE MACHINE=i586 + CROSSTARGET=${MACHINE}-cross-linux-gnu BUILDTARGET=i586-pc-linux-gnu CFLAGS="-O2 -march=i586 -pipe -fomit-frame-pointer" CXXFLAGS="-O2 -march=i586 -pipe -fomit-frame-pointer" @@ -229,6 +230,7 @@ elif [ 'armv5tejl' = $MACHINE -o 'armv5tel' = $MACHINE -o 'armv6l' = $MACHINE -o echo "`date -u '+%b %e %T'`: Machine is ARM (or equivalent)" >> $LOGFILE MACHINE=armv5tel MACHINE_TYPE=arm + CROSSTARGET=${MACHINE}-cross-linux-gnueabi BUILDTARGET=${MACHINE}-unknown-linux-gnueabi CFLAGS="-O2 -march=armv5te -mfloat-abi=soft -fomit-frame-pointer -pipe" CXXFLAGS="$CFLAGS" @@ -291,8 +293,8 @@ entershell() { fi
echo "Entering to a shell inside LFS chroot, go out with exit" - $linux32 chroot $LFS /tools/bin/env -i HOME=/root TERM=$TERM PS1='\u:\w$ ' \ - PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \ + chroot $LFS /tools/bin/env -i HOME=/root TERM=$TERM PS1='\u:\w$ ' \ + PATH=/tools/ccache/bin:/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \ VERSION=$VERSION CONFIG_ROOT=$CONFIG_ROOT \ NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \ CFLAGS="$CF2LAGS" CXXFLAGS="$CXX2FLAGS" \ @@ -301,6 +303,7 @@ entershell() { CCACHE_COMPILERCHECK="none" \ KVER=$KVER \ BUILDTARGET="$BUILDTARGET" \ + CROSSTARGET="${CROSSTARGET}" \ MACHINE="$MACHINE" \ MACHINE_TYPE="$MACHINE_TYPE" \ KGCC="ccache /usr/bin/gcc" \ @@ -382,13 +385,13 @@ lfsmake1() { local PKG_TIME_START=`date +%s`
cd $BASEDIR/lfs && make -f $* BUILDTARGET=$BUILDTARGET \ + CROSSTARGET="${CROSSTARGET}" \ MACHINE=$MACHINE \ MACHINE_TYPE=$MACHINE_TYPE \ LFS_BASEDIR=$BASEDIR \ ROOT=$LFS \ KVER=$KVER \ MAKETUNING=$MAKETUNING \ - $(fake_environ) \ install >> $LOGFILE 2>&1 local COMPILE_SUCCESS=$? local PKG_TIME_END=`date +%s` @@ -408,9 +411,9 @@ lfsmake2() { [ $? == 1 ] && return 0
local PKG_TIME_START=`date +%s` - $linux32 chroot $LFS /tools/bin/env -i HOME=/root \ + chroot $LFS /tools/bin/env -i HOME=/root \ TERM=$TERM PS1='\u:\w$ ' \ - PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \ + PATH=/tools/ccache/bin:/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \ VERSION=$VERSION \ CONFIG_ROOT=$CONFIG_ROOT \ NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \ @@ -418,7 +421,9 @@ lfsmake2() { CCACHE_DIR=/usr/src/ccache CCACHE_COMPRESS=1 \ CCACHE_COMPILERCHECK="none" \ KVER=$KVER MAKETUNING=$MAKETUNING \ - BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \ + BUILDTARGET="$BUILDTARGET" \ + CROSSTARGET="${CROSSTARGET}" \ + MACHINE="$MACHINE" \ MACHINE_TYPE="$MACHINE_TYPE" \ $(fake_environ) \ /tools/bin/bash -x -c "cd /usr/src/lfs && \ @@ -441,9 +446,9 @@ ipfiremake() { [ $? == 1 ] && return 0
local PKG_TIME_START=`date +%s` - $linux32 chroot $LFS /tools/bin/env -i HOME=/root \ + chroot $LFS /tools/bin/env -i HOME=/root \ TERM=$TERM PS1='\u:\w$ ' \ - PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin \ + PATH=/tools/ccache/bin:/bin:/usr/bin:/sbin:/usr/sbin \ VERSION=$VERSION \ CORE=$CORE \ CONFIG_ROOT=$CONFIG_ROOT \ @@ -452,7 +457,9 @@ ipfiremake() { CCACHE_DIR=/usr/src/ccache CCACHE_COMPRESS=1 \ CCACHE_COMPILERCHECK="none" \ KVER=$KVER MAKETUNING=$MAKETUNING \ - BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \ + BUILDTARGET="$BUILDTARGET" \ + CROSSTARGET="${CROSSTARGET}" \ + MACHINE="$MACHINE" \ MACHINE_TYPE="$MACHINE_TYPE" \ $(fake_environ) \ /bin/bash -x -c "cd /usr/src/lfs && \ @@ -477,7 +484,7 @@ ipfiredist() { local PKG_TIME_START=`date +%s` chroot $LFS /tools/bin/env -i HOME=/root \ TERM=$TERM PS1='\u:\w$ ' \ - PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin \ + PATH=/tools/ccache/bin:/bin:/usr/bin:/sbin:/usr/sbin \ VERSION=$VERSION \ CONFIG_ROOT=$CONFIG_ROOT \ NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \ @@ -485,7 +492,9 @@ ipfiredist() { CCACHE_DIR=/usr/src/ccache CCACHE_COMPRESS=1 \ CCACHE_COMPILERCHECK="none" \ KVER=$KVER \ - BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \ + BUILDTARGET="$BUILDTARGET" \ + CROSSTARGET="${CROSSTARGET}" \ + MACHINE="$MACHINE" \ MACHINE_TYPE="$MACHINE_TYPE" \ $(fake_environ) \ /bin/bash -x -c "cd /usr/src/lfs && \ @@ -508,20 +517,22 @@ installmake() { [ $? == 1 ] && return 0
local PKG_TIME_START=`date +%s` - $linux32 chroot $LFS /tools/bin/env -i HOME=/root \ + chroot $LFS /tools/bin/env -i HOME=/root \ TERM=$TERM PS1='\u:\w$ ' \ - PATH=/opt/i586-uClibc/i586-linux-uclibc/bin:/opt/i586-uClibc/bin:/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin \ + PATH=/tools/ccache/bin:/bin:/usr/bin:/sbin:/usr/sbin \ VERSION=$VERSION \ CONFIG_ROOT=$CONFIG_ROOT \ - LFS_PASS="install" \ NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \ CFLAGS="-Os" CXXFLAGS="-Os" \ CCACHE_DIR=/usr/src/ccache CCACHE_COMPRESS=1 CCACHE_HASHDIR=1 \ KVER=$KVER \ - BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \ + BUILDTARGET="$BUILDTARGET" \ + CROSSTARGET="${CROSSTARGET}" \ + MACHINE="$MACHINE" \ MACHINE_TYPE="$MACHINE_TYPE" \ - /bin/bash -x -c "cd /usr/src/lfs && \ - make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1 + LD_LIBRARY_PATH=/tools/lib \ + /tools/bin/bash -x -c "cd /usr/src/lfs && \ + /tools/bin/make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1
local COMPILE_SUCCESS=$? local PKG_TIME_END=`date +%s`
hooks/post-receive -- IPFire 2.x development tree