From: Nirbhay Choubey Date: January 10 2012 10:53am Subject: bzr push into mysql-5.1 branch (nirbhay.choubey:3662 to 3663) Bug#11760384 List-Archive: http://lists.mysql.com/commits/142353 X-Bug: 11760384 Message-Id: <201201101054.q0AAs7PV015072@acsmt358.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDM2NjMgTmlyYmhheSBDaG91YmV5CTIwMTItMDEtMTAKICAgICAgQlVHIzExNzYwMzg0IC0gNTI3 OTI6IG15c3FsZHVtcCBpbiBYTUwgbW9kZSBkb2VzIG5vdCBkdW1wCiAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJvdXRpbmVzLgogICAgICAKICAgICAgbXlzcWxkdW1wIGluIHhtbCBtb2RlIGRp ZCBub3QgZHVtcCByb3V0aW5lcywgZXZlbnRzIG9yCiAgICAgIHRyaWdnZXJzLgogICAgICAKICAg ICAgVGhpcyBwYXRjaCBmaXhlcyB0aGlzIGlzc3VlIGJ5IGZpeGluZyB0aGUgaWYgY29uZGl0aW9u cwogICAgICB0aGF0IGRpc2FsbG93ZWQgdGhlIGR1bXAgb2YgYWJvdmUgbWVudGlvbmVkIG9iamVj dHMgaW4KICAgICAgeG1sIG1vZGUsIGFuZCBhZGRlZCB0aGUgcmVxdWlyZWQgY29kZSB0byBlbmFi bGUgZHVtcAogICAgICBpbiB4bWwgZm9ybWF0LgogICAgIEAgY2xpZW50L215c3FsZHVtcC5jCiAg ICAgICAgQlVHIzExNzYwMzg0IC0gNTI3OTI6IG15c3FsZHVtcCBpbiBYTUwgbW9kZSBkb2VzIG5v dCBkdW1wCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRpbmVzLgogICAgICAgIAog ICAgICAgIEZpeGVkIHNvbWUgaWYgY29uZGl0aW9ucyB0byBhbGxvdyBleGVjdXRpb24gb2YgZHVt cCBtZXRob2RzCiAgICAgICAgZm9yIHhtbCBhbmQgZnVydGhlciBhZGRlZCB0aGUgcmVsZXZhbnQg Y29kZSBhdCBwbGFjZXMgdG8gcHJvZHVjZQogICAgICAgIHRoZSBkdW1wIGluIHhtbCBmb3JtYXQu CiAgICAgQCBteXNxbC10ZXN0L3IvbXlzcWxkdW1wLnJlc3VsdAogICAgICAgIEFkZGVkIGEgdGVz dCBjYXNlIGZvciBCdWcjMTE3NjAzODQuCiAgICAgQCBteXNxbC10ZXN0L3QvbXlzcWxkdW1wLnRl c3QKICAgICAgICBBZGRlZCBhIHRlc3QgY2FzZSBmb3IgQnVnIzExNzYwMzg0LgoKICAgIG1vZGlm aWVkOgogICAgICBjbGllbnQvbXlzcWxkdW1wLmMKICAgICAgbXlzcWwtdGVzdC9yL215c3FsZHVt cC5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC90L215c3FsZHVtcC50ZXN0CiAzNjYyIFlhc3VmdW1p IEtpbm9zaGl0YQkyMDEyLTAxLTEwCiAgICAgIEJ1ZyMxMjQwMDM0MSBJTk5PREIgQ0FOIExFQVZF IE9SUEhBTiBJQkQgRklMRVMgQVJPVU5ECiAgICAgIAogICAgICBJZiB3ZSBtZWV0IERCX1RPT19N QU5ZX0NPTkNVUlJFTlRfVFJYUyBkdXJpbmcgdGhlIGV4ZWN1dGlvbiB0YWJfY3JlYXRlX2dyYXBo IGZyb20gcm93X2NyZWF0ZV90YWJsZV9mb3JfbXlzcWwoKSwgLmliZCBmaWxlIGZvciB0aGUgdGFi bGUgc2hvdWxkIGJlIGNyZWF0ZWQgYWxyZWFkeSBidXQgd2FzIG5vdCBkZWxldGVkIGZvciB0aGUg ZXJyb3IgaGFuZGxpbmcuCiAgICAgIAogICAgICByYjo4NzUgYXBwcm92ZWQgYnkgSmltbXkgWWFu ZwoKICAgIGFkZGVkOgogICAgICBteXNxbC10ZXN0L3N1aXRlL2lubm9kYi9yL2lubm9kYl9idWcx MjQwMDM0MS5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvdC9pbm5vZGJfYnVn MTI0MDAzNDEtbWFzdGVyLm9wdAogICAgICBteXNxbC10ZXN0L3N1aXRlL2lubm9kYi90L2lubm9k Yl9idWcxMjQwMDM0MS50ZXN0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvaW5ub2RiX3BsdWdpbi9y L2lubm9kYl9idWcxMjQwMDM0MS5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGJf cGx1Z2luL3QvaW5ub2RiX2J1ZzEyNDAwMzQxLW1hc3Rlci5vcHQKICAgICAgbXlzcWwtdGVzdC9z dWl0ZS9pbm5vZGJfcGx1Z2luL3QvaW5ub2RiX2J1ZzEyNDAwMzQxLnRlc3QKICAgIG1vZGlmaWVk OgogICAgICBzdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFfaW5ub2RiLmNjCiAgICAgIHN0b3Jh Z2UvaW5ub2Jhc2UvaW5jbHVkZS90cngwcnNlZy5pYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2lu Y2x1ZGUvdHJ4MHN5cy5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBteXNxbC5jCiAg ICAgIHN0b3JhZ2UvaW5ub2Jhc2UvdHJ4L3RyeDBzeXMuYwogICAgICBzdG9yYWdlL2lubm9kYl9w bHVnaW4vQ2hhbmdlTG9nCiAgICAgIHN0b3JhZ2UvaW5ub2RiX3BsdWdpbi9oYW5kbGVyL2hhX2lu bm9kYi5jYwogICAgICBzdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS90cngwcnNlZy5pYwog ICAgICBzdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS90cngwc3lzLmgKICAgICAgc3RvcmFn ZS9pbm5vZGJfcGx1Z2luL3Jvdy9yb3cwbXlzcWwuYwogICAgICBzdG9yYWdlL2lubm9kYl9wbHVn aW4vdHJ4L3RyeDBzeXMuYwo9PT0gbW9kaWZpZWQgZmlsZSAnY2xpZW50L215c3FsZHVtcC5jJwot LS0gYS9jbGllbnQvbXlzcWxkdW1wLmMJMjAxMS0wNy0yMiAwNzo0Njo0NSArMDAwMAorKysgYi9j bGllbnQvbXlzcWxkdW1wLmMJMjAxMi0wMS0xMCAwODowMzo0NSArMDAwMApAQCAtNzYsNiArNzYs OSBAQAogLyogU2l6ZSBvZiBidWZmZXIgZm9yIGR1bXAncyBzZWxlY3QgcXVlcnkgKi8KICNkZWZp bmUgUVVFUllfTEVOR1RIIDE1MzYKIAorLyogU2l6ZSBvZiBjb21tZW50IGJ1ZmZlci4gKi8KKyNk ZWZpbmUgQ09NTUVOVF9MRU5HVEggMjA0OAorCiAvKiBpZ25vcmUgdGFibGUgZmxhZ3MgKi8KICNk ZWZpbmUgSUdOT1JFX05PTkUgMHgwMCAvKiBubyBpZ25vcmUgKi8KICNkZWZpbmUgSUdOT1JFX0RB VEEgMHgwMSAvKiBkb24ndCBkdW1wIGRhdGEgZm9yIHRoaXMgdGFibGUgKi8KQEAgLTEwMiw3ICsx MDUsNyBAQCBzdGF0aWMgbXlfYm9vbCAgdmVyYm9zZT0gMCwgb3B0X25vX2NyZWF0CiAgICAgICAg ICAgICAgICAgb3B0X2NvbXBsZXRlX2luc2VydD0gMCwgb3B0X2Ryb3BfZGF0YWJhc2U9IDAsCiAg ICAgICAgICAgICAgICAgb3B0X3JlcGxhY2VfaW50bz0gMCwKICAgICAgICAgICAgICAgICBvcHRf ZHVtcF90cmlnZ2Vycz0gMCwgb3B0X3JvdXRpbmVzPTAsIG9wdF90el91dGM9MSwKLSAgICAgICAg ICAgICAgICBvcHRfZXZlbnRzPSAwLAorICAgICAgICAgICAgICAgIG9wdF9ldmVudHM9IDAsIG9w dF9jb21tZW50c191c2VkPSAwLAogICAgICAgICAgICAgICAgIG9wdF9hbGx0c3Bjcz0wLCBvcHRf bm90c3Bjcz0gMDsKIHN0YXRpYyBteV9ib29sIGluc2VydF9wYXRfaW5pdGVkPSAwLCBkZWJ1Z19p bmZvX2ZsYWc9IDAsIGRlYnVnX2NoZWNrX2ZsYWc9IDA7CiBzdGF0aWMgdWxvbmcgb3B0X21heF9h bGxvd2VkX3BhY2tldCwgb3B0X25ldF9idWZmZXJfbGVuZ3RoOwpAQCAtNTA5LDYgKzUxMiw4IEBA IHN0YXRpYyBpbnQgZHVtcF9hbGxfdGFibGVzcGFjZXMoKTsKIHN0YXRpYyBpbnQgZHVtcF90YWJs ZXNwYWNlc19mb3JfdGFibGVzKGNoYXIgKmRiLCBjaGFyICoqdGFibGVfbmFtZXMsIGludCB0YWJs ZXMpOwogc3RhdGljIGludCBkdW1wX3RhYmxlc3BhY2VzX2Zvcl9kYXRhYmFzZXMoY2hhcioqIGRh dGFiYXNlcyk7CiBzdGF0aWMgaW50IGR1bXBfdGFibGVzcGFjZXMoY2hhciogdHNfd2hlcmUpOwor c3RhdGljIHZvaWQgcHJpbnRfY29tbWVudChGSUxFICpzcWxfZmlsZSwgbXlfYm9vbCBpc19lcnJv ciwgY29uc3QgY2hhciAqZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pOwog CiAjaW5jbHVkZSA8aGVscF9zdGFydC5oPgogCkBAIC02MDYsMTkgKzYxMSwxOSBAQCBzdGF0aWMg dm9pZCB3cml0ZV9oZWFkZXIoRklMRSAqc3FsX2ZpbGUsCiAgIH0KICAgZWxzZSBpZiAoIW9wdF9j b21wYWN0KQogICB7Ci0gICAgaWYgKG9wdF9jb21tZW50cykKLSAgICB7Ci0gICAgICBmcHJpbnRm KHNxbF9maWxlLAotICAgICAgICAgICAgICAiLS0gTXlTUUwgZHVtcCAlcyAgRGlzdHJpYiAlcywg Zm9yICVzICglcylcbi0tXG4iLAotICAgICAgICAgICAgICBEVU1QX1ZFUlNJT04sIE1ZU1FMX1NF UlZFUl9WRVJTSU9OLCBTWVNURU1fVFlQRSwgTUFDSElORV9UWVBFKTsKLSAgICAgIGZwcmludGYo c3FsX2ZpbGUsICItLSBIb3N0OiAlcyAgICBEYXRhYmFzZTogJXNcbiIsCi0gICAgICAgICAgICAg IGN1cnJlbnRfaG9zdCA/IGN1cnJlbnRfaG9zdCA6ICJsb2NhbGhvc3QiLCBkYl9uYW1lID8gZGJf bmFtZSA6Ci0gICAgICAgICAgICAgICIiKTsKLSAgICAgIGZwdXRzKCItLSAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIsCi0gICAgICAgICAg ICBzcWxfZmlsZSk7Ci0gICAgICBmcHJpbnRmKHNxbF9maWxlLCAiLS0gU2VydmVyIHZlcnNpb25c dCVzXG4iLAotICAgICAgICAgICAgICBteXNxbF9nZXRfc2VydmVyX2luZm8oJm15c3FsX2Nvbm5l Y3Rpb24pKTsKLSAgICB9CisgICAgcHJpbnRfY29tbWVudChzcWxfZmlsZSwgMCwKKyAgICAgICAg ICAgICAgICAgICItLSBNeVNRTCBkdW1wICVzICBEaXN0cmliICVzLCBmb3IgJXMgKCVzKVxuLS1c biIsCisgICAgICAgICAgICAgICAgICBEVU1QX1ZFUlNJT04sIE1ZU1FMX1NFUlZFUl9WRVJTSU9O LCBTWVNURU1fVFlQRSwKKyAgICAgICAgICAgICAgICAgIE1BQ0hJTkVfVFlQRSk7CisgICAgcHJp bnRfY29tbWVudChzcWxfZmlsZSwgMCwgIi0tIEhvc3Q6ICVzICAgIERhdGFiYXNlOiAlc1xuIiwK KyAgICAgICAgICAgICAgICAgIGN1cnJlbnRfaG9zdCA/IGN1cnJlbnRfaG9zdCA6ICJsb2NhbGhv c3QiLAorICAgICAgICAgICAgICAgICAgZGJfbmFtZSA/IGRiX25hbWUgOiAiIik7CisgICAgcHJp bnRfY29tbWVudChzcWxfZmlsZSwgMCwKKyAgICAgICAgICAgICAgICAgICItLSAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIKKyAgICAgICAg ICAgICAgICAgKTsKKyAgICBwcmludF9jb21tZW50KHNxbF9maWxlLCAwLCAiLS0gU2VydmVyIHZl cnNpb25cdCVzXG4iLAorICAgICAgICAgICAgICAgICAgbXlzcWxfZ2V0X3NlcnZlcl9pbmZvKCZt eXNxbF9jb25uZWN0aW9uKSk7CisKICAgICBpZiAob3B0X3NldF9jaGFyc2V0KQogICAgICAgZnBy aW50ZihzcWxfZmlsZSwKICJcbi8qITQwMTAxIFNFVCBAT0xEX0NIQVJBQ1RFUl9TRVRfQ0xJRU5U PUBAQ0hBUkFDVEVSX1NFVF9DTElFTlQgKi87IgpAQCAtNjc2LDE4ICs2ODEsMTYgQEAgc3RhdGlj IHZvaWQgd3JpdGVfZm9vdGVyKEZJTEUgKnNxbF9maWxlKQogICAgIGZwcmludGYoc3FsX2ZpbGUs CiAgICAgICAgICAgICAiLyohNDAxMTEgU0VUIFNRTF9OT1RFUz1AT0xEX1NRTF9OT1RFUyAqLztc biIpOwogICAgIGZwdXRzKCJcbiIsIHNxbF9maWxlKTsKLSAgICBpZiAob3B0X2NvbW1lbnRzKQor CisgICAgaWYgKG9wdF9kdW1wX2RhdGUpCiAgICAgewotICAgICAgaWYgKG9wdF9kdW1wX2RhdGUp Ci0gICAgICB7Ci0gICAgICAgIGNoYXIgdGltZV9zdHJbMjBdOwotICAgICAgICBnZXRfZGF0ZSh0 aW1lX3N0ciwgR0VUREFURV9EQVRFX1RJTUUsIDApOwotICAgICAgICBmcHJpbnRmKHNxbF9maWxl LCAiLS0gRHVtcCBjb21wbGV0ZWQgb24gJXNcbiIsCi0gICAgICAgICAgICAgICAgdGltZV9zdHIp OwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICBmcHJpbnRmKHNxbF9maWxlLCAiLS0gRHVt cCBjb21wbGV0ZWRcbiIpOworICAgICAgY2hhciB0aW1lX3N0clsyMF07CisgICAgICBnZXRfZGF0 ZSh0aW1lX3N0ciwgR0VUREFURV9EQVRFX1RJTUUsIDApOworICAgICAgcHJpbnRfY29tbWVudChz cWxfZmlsZSwgMCwgIi0tIER1bXAgY29tcGxldGVkIG9uICVzXG4iLCB0aW1lX3N0cik7CiAgICAg fQorICAgIGVsc2UKKyAgICAgIHByaW50X2NvbW1lbnQoc3FsX2ZpbGUsIDAsICItLSBEdW1wIGNv bXBsZXRlZFxuIik7CisKICAgICBjaGVja19pbyhzcWxfZmlsZSk7CiAgIH0KIH0gLyogd3JpdGVf Zm9vdGVyICovCkBAIC03NzIsNiArNzc1LDkgQEAgZ2V0X29uZV9vcHRpb24oaW50IG9wdGlkLCBj b25zdCBzdHJ1Y3QgbQogICAgIGV4dGVuZGVkX2luc2VydD0gb3B0X2Ryb3A9IG9wdF9sb2NrPQog ICAgICAgb3B0X2Rpc2FibGVfa2V5cz0gb3B0X2F1dG9jb21taXQ9IG9wdF9jcmVhdGVfZGI9IDA7 CiAgICAgYnJlYWs7CisgIGNhc2UgJ2knOgorICAgIG9wdF9jb21tZW50c191c2VkPSAxOworICAg IGJyZWFrOwogICBjYXNlICdJJzoKICAgY2FzZSAnPyc6CiAgICAgdXNhZ2UoKTsKQEAgLTc5OCwx MSArODA0LDEyIEBAIGdldF9vbmVfb3B0aW9uKGludCBvcHRpZCwgY29uc3Qgc3RydWN0IG0KICAg ICAgIG9wdF9kaXNhYmxlX2tleXM9IGxvY2tfdGFibGVzPSBvcHRfc2V0X2NoYXJzZXQ9IDA7CiAg ICAgYnJlYWs7CiAgIGNhc2UgKGludCkgT1BUX0NPTVBBQ1Q6Ci0gIGlmIChvcHRfY29tcGFjdCkK LSAgewotICAgIG9wdF9jb21tZW50cz0gb3B0X2Ryb3A9IG9wdF9kaXNhYmxlX2tleXM9IG9wdF9s b2NrPSAwOwotICAgIG9wdF9zZXRfY2hhcnNldD0gMDsKLSAgfQorICAgIGlmIChvcHRfY29tcGFj dCkKKyAgICB7CisgICAgICAgb3B0X2NvbW1lbnRzPSBvcHRfZHJvcD0gb3B0X2Rpc2FibGVfa2V5 cz0gb3B0X2xvY2s9IDA7CisgICAgICAgb3B0X3NldF9jaGFyc2V0PSAwOworICAgIH0KKyAgICBi cmVhazsKICAgY2FzZSAoaW50KSBPUFRfVEFCTEVTOgogICAgIG9wdF9kYXRhYmFzZXM9MDsKICAg ICBicmVhazsKQEAgLTE2NjAsMjAgKzE2NjcsMjAgQEAgc3RhdGljIGNoYXIgKnF1b3RlX2Zvcl9s aWtlKGNvbnN0IGNoYXIgKgogfQogCiAKLS8qCisvKioKICAgUXVvdGUgYW5kIHByaW50IGEgc3Ry aW5nLgogCi0gIFNZTk9QU0lTCi0gICAgcHJpbnRfcXVvdGVkX3htbCgpCi0gICAgeG1sX2ZpbGUg ICAgLSBvdXRwdXQgZmlsZQotICAgIHN0ciAgICAgICAgIC0gc3RyaW5nIHRvIHByaW50Ci0gICAg bGVuICAgICAgICAgLSBpdHMgbGVuZ3RoCisgIEBwYXJhbSB4bWxfZmlsZSAgICAgICAgICAtIE91 dHB1dCBmaWxlLgorICBAcGFyYW0gc3RyICAgICAgICAgICAgICAgLSBTdHJpbmcgdG8gcHJpbnQu CisgIEBwYXJhbSBsZW4gICAgICAgICAgICAgICAtIEl0cyBsZW5ndGguCisgIEBwYXJhbSBpc19h dHRyaWJ1dGVfbmFtZSAtIEEgY2hlY2sgZm9yIGF0dHJpYnV0ZSBuYW1lIG9yIHZhbHVlLgogCi0g IERFU0NSSVBUSU9OCisgIEBkZXNjcmlwdGlvbgogICAgIFF1b3RlICc8JyAnPicgJyYnICdcIicg Y2hhcnMgYW5kIHByaW50IGEgc3RyaW5nIHRvIHRoZSB4bWxfZmlsZS4KICovCiAKLXN0YXRpYyB2 b2lkIHByaW50X3F1b3RlZF94bWwoRklMRSAqeG1sX2ZpbGUsIGNvbnN0IGNoYXIgKnN0ciwgdWxv bmcgbGVuKQorc3RhdGljIHZvaWQgcHJpbnRfcXVvdGVkX3htbChGSUxFICp4bWxfZmlsZSwgY29u c3QgY2hhciAqc3RyLCB1bG9uZyBsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15 X2Jvb2wgaXNfYXR0cmlidXRlX25hbWUpCiB7CiAgIGNvbnN0IGNoYXIgKmVuZDsKIApAQCAtMTY5 Miw2ICsxNjk5LDE0IEBAIHN0YXRpYyB2b2lkIHByaW50X3F1b3RlZF94bWwoRklMRSAqeG1sX2YK ICAgICBjYXNlICdcIic6CiAgICAgICBmcHV0cygiJnF1b3Q7IiwgeG1sX2ZpbGUpOwogICAgICAg YnJlYWs7CisgICAgY2FzZSAnICc6CisgICAgICAvKiBBdHRyaWJ1dGUgbmFtZXMgY2Fubm90IGNv bnRhaW4gc3BhY2VzLiAqLworICAgICAgaWYgKGlzX2F0dHJpYnV0ZV9uYW1lKQorICAgICAgewor ICAgICAgICBmcHV0cygiXyIsIHhtbF9maWxlKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9Cisg ICAgICAvKiBmYWxsIHRocm91Z2ggKi8KICAgICBkZWZhdWx0OgogICAgICAgZnB1dGMoKnN0ciwg eG1sX2ZpbGUpOwogICAgICAgYnJlYWs7CkBAIC0xNzUyLDcgKzE3NjcsNyBAQCBzdGF0aWMgdm9p ZCBwcmludF94bWxfdGFnKEZJTEUgKiB4bWxfZmlsCiAgICAgZnB1dHMoYXR0cmlidXRlX25hbWUs IHhtbF9maWxlKTsgICAgCiAgICAgZnB1dGMoJ1wiJywgeG1sX2ZpbGUpOwogICAgIAotICAgIHBy aW50X3F1b3RlZF94bWwoeG1sX2ZpbGUsIGF0dHJpYnV0ZV92YWx1ZSwgc3RybGVuKGF0dHJpYnV0 ZV92YWx1ZSkpOworICAgIHByaW50X3F1b3RlZF94bWwoeG1sX2ZpbGUsIGF0dHJpYnV0ZV92YWx1 ZSwgc3RybGVuKGF0dHJpYnV0ZV92YWx1ZSksIDApOwogICAgIGZwdXRjKCdcIicsIHhtbF9maWxl KTsKIAogICAgIGF0dHJpYnV0ZV9uYW1lPSB2YV9hcmcoYXJnX2xpc3QsIGNoYXIgKik7CkBAIC0x NzkyLDEzICsxODA3LDUyIEBAIHN0YXRpYyB2b2lkIHByaW50X3htbF9udWxsX3RhZyhGSUxFICog eG0KICAgZnB1dHMoIjwiLCB4bWxfZmlsZSk7CiAgIGZwdXRzKHN0YWdfYXRyLCB4bWxfZmlsZSk7 CiAgIGZwdXRzKCJcIiIsIHhtbF9maWxlKTsKLSAgcHJpbnRfcXVvdGVkX3htbCh4bWxfZmlsZSwg c3ZhbCwgc3RybGVuKHN2YWwpKTsKKyAgcHJpbnRfcXVvdGVkX3htbCh4bWxfZmlsZSwgc3ZhbCwg c3RybGVuKHN2YWwpLCAwKTsKICAgZnB1dHMoIlwiIHhzaTpuaWw9XCJ0cnVlXCIgLz4iLCB4bWxf ZmlsZSk7CiAgIGZwdXRzKGxpbmVfZW5kLCB4bWxfZmlsZSk7CiAgIGNoZWNrX2lvKHhtbF9maWxl KTsKIH0KIAogCisvKioKKyAgUHJpbnQgeG1sIENEQVRBIHNlY3Rpb24uCisKKyAgQHBhcmFtIHht bF9maWxlICAgIC0gb3V0cHV0IGZpbGUKKyAgQHBhcmFtIHN0ciAgICAgICAgIC0gc3RyaW5nIHRv IHByaW50CisgIEBwYXJhbSBsZW4gICAgICAgICAtIGxlbmd0aCBvZiB0aGUgc3RyaW5nCisKKyAg QG5vdGUKKyAgICBUaGlzIGZ1bmN0aW9uIGFsc28gdGFrZXMgY2FyZSBvZiB0aGUgcHJlc2VuY2Ug b2YgJ1tbPicKKyAgICBzdHJpbmcgaW4gdGhlIHN0ci4gSWYgZm91bmQsIHRoZSBDREFUQSBzZWN0 aW9uIGlzIGJyb2tlbgorICAgIGludG8gdHdvIENEQVRBIHNlY3Rpb25zLCA8IVtDREFUQVtdXV1d PiBhbmQgPCFbQ0RBVEFbPl1dLgorKi8KKworc3RhdGljIHZvaWQgcHJpbnRfeG1sX2NkYXRhKEZJ TEUgKnhtbF9maWxlLCBjb25zdCBjaGFyICpzdHIsIHVsb25nIGxlbikKK3sKKyAgY29uc3QgY2hh ciAqZW5kOworCisgIGZwdXRzKCI8IVtDREFUQVtcbiIsIHhtbF9maWxlKTsKKyAgZm9yIChlbmQ9 IHN0ciArIGxlbjsgc3RyICE9IGVuZDsgc3RyKyspCisgIHsKKyAgICBzd2l0Y2goKnN0cikgewor ICAgIGNhc2UgJ10nOgorICAgICAgaWYgKCgqKHN0ciArIDEpID09ICddJykgJiYgKCooc3RyICsg MikgPT0nPicpKQorICAgICAgeworICAgICAgICBmcHV0cygiXV1dXT48IVtDREFUQVs+IiwgeG1s X2ZpbGUpOworICAgICAgICBzdHIgKz0gMjsKKyAgICAgICAgY29udGludWU7CisgICAgICB9Cisg ICAgICAvKiBmYWxsIHRocm91Z2ggKi8KKyAgICBkZWZhdWx0OgorICAgICAgZnB1dGMoKnN0ciwg eG1sX2ZpbGUpOworICAgICAgYnJlYWs7CisgICAgfQorICB9CisgIGZwdXRzKCJcbl1dPlxuIiwg eG1sX2ZpbGUpOworICBjaGVja19pbyh4bWxfZmlsZSk7Cit9CisKKwogLyoKICAgUHJpbnQgeG1s IHRhZyB3aXRoIG1hbnkgYXR0cmlidXRlcy4KIApAQCAtMTgwOCw2ICsxODYyLDcgQEAgc3RhdGlj IHZvaWQgcHJpbnRfeG1sX251bGxfdGFnKEZJTEUgKiB4bQogICAgIHJvd19uYW1lICAgIC0geG1s IHRhZyBuYW1lCiAgICAgdGFibGVSZXMgICAgLSBxdWVyeSByZXN1bHQKICAgICByb3cgICAgICAg ICAtIHJlc3VsdCByb3cKKyAgICBzdHJfY3JlYXRlICAtIGNyZWF0ZSBzdGF0ZW1lbnQgaGVhZGVy IHN0cmluZwogCiAgIERFU0NSSVBUSU9OCiAgICAgUHJpbnQgdGFnIHdpdGggbWFueSBhdHRyaWJ1 dGUgdG8gdGhlIHhtbF9maWxlLiBGb3JtYXQgaXM6CkBAIC0xODE3LDkgKzE4NzIsMTMgQEAgc3Rh dGljIHZvaWQgcHJpbnRfeG1sX251bGxfdGFnKEZJTEUgKiB4bQogKi8KIAogc3RhdGljIHZvaWQg cHJpbnRfeG1sX3JvdyhGSUxFICp4bWxfZmlsZSwgY29uc3QgY2hhciAqcm93X25hbWUsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgIE1ZU1FMX1JFUyAqdGFibGVSZXMsIE1ZU1FMX1JPVyAqcm93 KQorICAgICAgICAgICAgICAgICAgICAgICAgICBNWVNRTF9SRVMgKnRhYmxlUmVzLCBNWVNRTF9S T1cgKnJvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc3RyX2NyZWF0 ZSkKIHsKICAgdWludCBpOworICBteV9ib29sIGJvZHlfZm91bmQ9IDA7CisgIGNoYXIgKmNyZWF0 ZV9zdG10X3B0cjsKKyAgdWxvbmcgY3JlYXRlX3N0bXRfbGVuPSAwOwogICBNWVNRTF9GSUVMRCAq ZmllbGQ7CiAgIHVsb25nICpsZW5ndGhzPSBteXNxbF9mZXRjaF9sZW5ndGhzKHRhYmxlUmVzKTsK IApAQCAtMTgzMCwxOSArMTg4OSwxMDkgQEAgc3RhdGljIHZvaWQgcHJpbnRfeG1sX3JvdyhGSUxF ICp4bWxfZmlsZQogICB7CiAgICAgaWYgKCgqcm93KVtpXSkKICAgICB7Ci0gICAgICBmcHV0Yygn ICcsIHhtbF9maWxlKTsKLSAgICAgIHByaW50X3F1b3RlZF94bWwoeG1sX2ZpbGUsIGZpZWxkLT5u YW1lLCBmaWVsZC0+bmFtZV9sZW5ndGgpOwotICAgICAgZnB1dHMoIj1cIiIsIHhtbF9maWxlKTsK LSAgICAgIHByaW50X3F1b3RlZF94bWwoeG1sX2ZpbGUsICgqcm93KVtpXSwgbGVuZ3Roc1tpXSk7 Ci0gICAgICBmcHV0YygnIicsIHhtbF9maWxlKTsKLSAgICAgIGNoZWNrX2lvKHhtbF9maWxlKTsK KyAgICAgIC8qIEZvciAnY3JlYXRlJyBzdGF0ZW1lbnRzLCBkdW1wIHVzaW5nIENEQVRBLiAqLwor ICAgICAgaWYgKChzdHJfY3JlYXRlKSAmJiAoc3RyY21wKHN0cl9jcmVhdGUsIGZpZWxkLT5uYW1l KSA9PSAwKSkKKyAgICAgIHsKKyAgICAgICAgY3JlYXRlX3N0bXRfcHRyPSAoKnJvdylbaV07Cisg ICAgICAgIGNyZWF0ZV9zdG10X2xlbj0gbGVuZ3Roc1tpXTsKKyAgICAgICAgYm9keV9mb3VuZD0g MTsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgZnB1dGMoJyAnLCB4bWxf ZmlsZSk7CisgICAgICAgIHByaW50X3F1b3RlZF94bWwoeG1sX2ZpbGUsIGZpZWxkLT5uYW1lLCBm aWVsZC0+bmFtZV9sZW5ndGgsIDEpOworICAgICAgICBmcHV0cygiPVwiIiwgeG1sX2ZpbGUpOwor ICAgICAgICBwcmludF9xdW90ZWRfeG1sKHhtbF9maWxlLCAoKnJvdylbaV0sIGxlbmd0aHNbaV0s IDApOworICAgICAgICBmcHV0YygnIicsIHhtbF9maWxlKTsKKyAgICAgICAgY2hlY2tfaW8oeG1s X2ZpbGUpOworICAgICAgfQogICAgIH0KICAgfQotICBmcHV0cygiIC8+XG4iLCB4bWxfZmlsZSk7 CisKKyAgaWYgKGNyZWF0ZV9zdG10X2xlbikKKyAgeworICAgIERCVUdfQVNTRVJUKGJvZHlfZm91 bmQpOworICAgIGZwdXRzKCI+XG4iLCB4bWxfZmlsZSk7CisgICAgcHJpbnRfeG1sX2NkYXRhKHht bF9maWxlLCBjcmVhdGVfc3RtdF9wdHIsIGNyZWF0ZV9zdG10X2xlbik7CisgICAgZnByaW50Zih4 bWxfZmlsZSwgIlx0XHQ8LyVzPlxuIiwgcm93X25hbWUpOworICB9CisgIGVsc2UKKyAgICBmcHV0 cygiIC8+XG4iLCB4bWxfZmlsZSk7CisKICAgY2hlY2tfaW8oeG1sX2ZpbGUpOwogfQogCiAKKy8q KgorICBQcmludCB4bWwgY29tbWVudHMuCisKKyAgQHBhcmFtIHhtbF9maWxlICAgICAgIC0gb3V0 cHV0IGZpbGUKKyAgQHBhcmFtIGxlbiAgICAgICAgICAgIC0gbGVuZ3RoIG9mIGNvbW1lbnQgbWVz c2FnZQorICBAcGFyYW0gY29tbWVudF9zdHJpbmcgLSBjb21tZW50IG1lc3NhZ2UKKworICBAZGVz Y3JpcHRpb24KKyAgICBQcmludCB0aGUgY29tbWVudCBtZXNzYWdlIGluIHRoZSBmb3JtYXQ6Cisg ICAgICAiPCEtLSBcbiBjb21tZW50IHN0cmluZyAgXG4gLS0+XG4iCisKKyAgQG5vdGUKKyAgICBB bnkgb2NjdXJyZW5jZSBvZiBjb250aW51b3VzIGh5cGhlbnMgd2lsbCBiZQorICAgIHNxdWVlemVk IHRvIGEgc2luZ2xlIGh5cGhlbi4KKyovCisKK3N0YXRpYyB2b2lkIHByaW50X3htbF9jb21tZW50 KEZJTEUgKnhtbF9maWxlLCB1bG9uZyBsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBjaGFyICpjb21tZW50X3N0cmluZykKK3sKKyAgY29uc3QgY2hhciogZW5kOworCisg IGZwdXRzKCI8IS0tICIsIHhtbF9maWxlKTsKKworICBmb3IgKGVuZD0gY29tbWVudF9zdHJpbmcg KyBsZW47IGNvbW1lbnRfc3RyaW5nICE9IGVuZDsgY29tbWVudF9zdHJpbmcrKykKKyAgeworICAg IC8qCisgICAgICBUaGUgc3RyaW5nICItLSIgKGRvdWJsZS1oeXBoZW4pIE1VU1QgTk9UIG9jY3Vy IHdpdGhpbiB4bWwgY29tbWVudHMuCisgICAgKi8KKyAgICBzd2l0Y2ggKCpjb21tZW50X3N0cmlu ZykgeworICAgIGNhc2UgJy0nOgorICAgICAgaWYgKCooY29tbWVudF9zdHJpbmcgKyAxKSA9PSAn LScpICAgICAgICAgLyogT25seSBvbmUgaHlwaGVuIGFsbG93ZWQuICovCisgICAgICAgIGJyZWFr OworICAgIGRlZmF1bHQ6CisgICAgICBmcHV0YygqY29tbWVudF9zdHJpbmcsIHhtbF9maWxlKTsK KyAgICAgIGJyZWFrOworICAgIH0KKyAgfQorICBmcHV0cygiIC0tPlxuIiwgeG1sX2ZpbGUpOwor ICBjaGVja19pbyh4bWxfZmlsZSk7Cit9CisKKworCisvKiBBIGNvbW1vbiBwcmludGluZyBmdW5j dGlvbiBmb3IgeG1sIGFuZCBub24teG1sIG1vZGVzLiAqLworCitzdGF0aWMgdm9pZCBwcmludF9j b21tZW50KEZJTEUgKnNxbF9maWxlLCBteV9ib29sIGlzX2Vycm9yLCBjb25zdCBjaGFyICpmb3Jt YXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikKK3sKKyAgc3RhdGljIGNoYXIgY29t bWVudF9idWZmW0NPTU1FTlRfTEVOR1RIXTsKKyAgdmFfbGlzdCBhcmdzOworCisgIC8qIElmIGl0 cyBhbiBlcnJvciBtZXNzYWdlLCBwcmludCBpdCBpZ25vcmluZyBvcHRfY29tbWVudHMuICovCisg IGlmICghaXNfZXJyb3IgJiYgIW9wdF9jb21tZW50cykKKyAgICByZXR1cm47CisKKyAgdmFfc3Rh cnQoYXJncywgZm9ybWF0KTsKKyAgbXlfdnNucHJpbnRmKGNvbW1lbnRfYnVmZiwgQ09NTUVOVF9M RU5HVEgsIGZvcm1hdCwgYXJncyk7CisgIHZhX2VuZChhcmdzKTsKKworICBpZiAoIW9wdF94bWwp CisgIHsKKyAgICBmcHV0cyhjb21tZW50X2J1ZmYsIHNxbF9maWxlKTsKKyAgICBjaGVja19pbyhz cWxfZmlsZSk7CisgICAgcmV0dXJuOworICB9CisKKyAgcHJpbnRfeG1sX2NvbW1lbnQoc3FsX2Zp bGUsIHN0cmxlbihjb21tZW50X2J1ZmYpLCBjb21tZW50X2J1ZmYpOworfQorCisKIC8qCiAgY3Jl YXRlX2RlbGltaXRlcgogIEdlbmVyYXRlIGEgbmV3IChudWxsLXRlcm1pbmF0ZWQpIHN0cmluZyB0 aGF0IGRvZXMgbm90IGV4aXN0IGluICBxdWVyeSAKQEAgLTE5MDksOCArMjA1OCw4IEBAIHN0YXRp YyB1aW50IGR1bXBfZXZlbnRzX2Zvcl9kYihjaGFyICpkYikKICAgbXlzcWxfcmVhbF9lc2NhcGVf c3RyaW5nKG15c3FsLCBkYl9uYW1lX2J1ZmYsIGRiLCBzdHJsZW4oZGIpKTsKIAogICAvKiBuaWNl IGNvbW1lbnRzICovCi0gIGlmIChvcHRfY29tbWVudHMpCi0gICAgZnByaW50ZihzcWxfZmlsZSwg IlxuLS1cbi0tIER1bXBpbmcgZXZlbnRzIGZvciBkYXRhYmFzZSAnJXMnXG4tLVxuIiwgZGIpOwor ICBwcmludF9jb21tZW50KHNxbF9maWxlLCAwLAorICAgICAgICAgICAgICAgICJcbi0tXG4tLSBE dW1waW5nIGV2ZW50cyBmb3IgZGF0YWJhc2UgJyVzJ1xuLS1cbiIsIGRiKTsKIAogICAvKgogICAg IG5vdCB1c2luZyAibXlzcWxfcXVlcnlfd2l0aF9lcnJvcl9yZXBvcnQiIGJlY2F1c2Ugd2UgbWF5 IGhhdmUgbm90CkBAIC0xOTI1LDEyICsyMDc0LDE3IEBAIHN0YXRpYyB1aW50IGR1bXBfZXZlbnRz X2Zvcl9kYihjaGFyICpkYikKICAgc3RyY3B5KGRlbGltaXRlciwgIjsiKTsKICAgaWYgKG15c3Fs X251bV9yb3dzKGV2ZW50X2xpc3RfcmVzKSA+IDApCiAgIHsKLSAgICBmcHJpbnRmKHNxbF9maWxl LCAiLyohNTAxMDYgU0VUIEBzYXZlX3RpbWVfem9uZT0gQEBUSU1FX1pPTkUgKi8gO1xuIik7Cisg ICAgaWYgKG9wdF94bWwpCisgICAgICBmcHV0cygiXHQ8ZXZlbnRzPlxuIiwgc3FsX2ZpbGUpOwor ICAgIGVsc2UKKyAgICB7CisgICAgICBmcHJpbnRmKHNxbF9maWxlLCAiLyohNTAxMDYgU0VUIEBz YXZlX3RpbWVfem9uZT0gQEBUSU1FX1pPTkUgKi8gO1xuIik7CiAKLSAgICAvKiBHZXQgZGF0YWJh c2UgY29sbGF0aW9uLiAqLworICAgICAgLyogR2V0IGRhdGFiYXNlIGNvbGxhdGlvbi4gKi8KIAot ICAgIGlmIChmZXRjaF9kYl9jb2xsYXRpb24oZGJfbmFtZV9idWZmLCBkYl9jbF9uYW1lLCBzaXpl b2YgKGRiX2NsX25hbWUpKSkKLSAgICAgIERCVUdfUkVUVVJOKDEpOworICAgICAgaWYgKGZldGNo X2RiX2NvbGxhdGlvbihkYl9uYW1lX2J1ZmYsIGRiX2NsX25hbWUsIHNpemVvZiAoZGJfY2xfbmFt ZSkpKQorICAgICAgICBEQlVHX1JFVFVSTigxKTsKKyAgICB9CiAKICAgICBpZiAoc3dpdGNoX2No YXJhY3Rlcl9zZXRfcmVzdWx0cyhteXNxbCwgImJpbmFyeSIpKQogICAgICAgREJVR19SRVRVUk4o MSk7CkBAIC0xOTQ3LDYgKzIxMDEsMTMgQEAgc3RhdGljIHVpbnQgZHVtcF9ldmVudHNfZm9yX2Ri KGNoYXIgKmRiKQogCiAgICAgICB3aGlsZSAoKHJvdz0gbXlzcWxfZmV0Y2hfcm93KGV2ZW50X3Jl cykpICE9IE5VTEwpCiAgICAgICB7CisgICAgICAgIGlmIChvcHRfeG1sKQorICAgICAgICB7Cisg ICAgICAgICAgcHJpbnRfeG1sX3JvdyhzcWxfZmlsZSwgImV2ZW50IiwgZXZlbnRfcmVzLCAmcm93 LAorICAgICAgICAgICAgICAgICAgICAgICAgIkNyZWF0ZSBFdmVudCIpOworICAgICAgICAgIGNv bnRpbnVlOworICAgICAgICB9CisKICAgICAgICAgLyoKICAgICAgICAgICBpZiB0aGUgdXNlciBo YXMgRVhFQ1VURSBwcml2aWxlZ2UgaGUgY2FuIHNlZSBldmVudCBuYW1lcywgYnV0IG5vdCB0aGUK ICAgICAgICAgICBldmVudCBib2R5IQpAQCAtMjAyNSw4ICsyMTg2LDE2IEBAIHN0YXRpYyB1aW50 IGR1bXBfZXZlbnRzX2Zvcl9kYihjaGFyICpkYikKICAgICAgIG15c3FsX2ZyZWVfcmVzdWx0KGV2 ZW50X3Jlcyk7CiAKICAgICB9IC8qIGVuZCBvZiBsaXN0IG9mIGV2ZW50cyAqLwotICAgIGZwcmlu dGYoc3FsX2ZpbGUsICJERUxJTUlURVIgO1xuIik7Ci0gICAgZnByaW50ZihzcWxfZmlsZSwgIi8q ITUwMTA2IFNFVCBUSU1FX1pPTkU9IEBzYXZlX3RpbWVfem9uZSAqLyA7XG4iKTsKKyAgICBpZiAo b3B0X3htbCkKKyAgICB7CisgICAgICBmcHV0cygiXHQ8L2V2ZW50cz5cbiIsIHNxbF9maWxlKTsK KyAgICAgIGNoZWNrX2lvKHNxbF9maWxlKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAg IGZwcmludGYoc3FsX2ZpbGUsICJERUxJTUlURVIgO1xuIik7CisgICAgICBmcHJpbnRmKHNxbF9m aWxlLCAiLyohNTAxMDYgU0VUIFRJTUVfWk9ORT0gQHNhdmVfdGltZV96b25lICovIDtcbiIpOwor ICAgIH0KIAogICAgIGlmIChzd2l0Y2hfY2hhcmFjdGVyX3NldF9yZXN1bHRzKG15c3FsLCBkZWZh dWx0X2NoYXJzZXQpKQogICAgICAgREJVR19SRVRVUk4oMSk7CkBAIC0yMDgwLDYgKzIyNDksNyBA QCBzdGF0aWMgdWludCBkdW1wX3JvdXRpbmVzX2Zvcl9kYihjaGFyICpkCiAgIGNvbnN0IGNoYXIg KnJvdXRpbmVfdHlwZVtdPSB7IkZVTkNUSU9OIiwgIlBST0NFRFVSRSJ9OwogICBjaGFyICAgICAg IGRiX25hbWVfYnVmZltOQU1FX0xFTioyKzNdLCBuYW1lX2J1ZmZbTkFNRV9MRU4qMiszXTsKICAg Y2hhciAgICAgICAqcm91dGluZV9uYW1lOworICBjaGFyICAgICAgICpxdWVyeV9zdHI7CiAgIGlu dCAgICAgICAgaTsKICAgRklMRSAgICAgICAqc3FsX2ZpbGU9IG1kX3Jlc3VsdF9maWxlOwogICBN WVNRTF9SRVMgICpyb3V0aW5lX3JlcywgKnJvdXRpbmVfbGlzdF9yZXM7CkBAIC0yMDk0LDggKzIy NjQsOCBAQCBzdGF0aWMgdWludCBkdW1wX3JvdXRpbmVzX2Zvcl9kYihjaGFyICpkCiAgIG15c3Fs X3JlYWxfZXNjYXBlX3N0cmluZyhteXNxbCwgZGJfbmFtZV9idWZmLCBkYiwgc3RybGVuKGRiKSk7 CiAKICAgLyogbmljZSBjb21tZW50cyAqLwotICBpZiAob3B0X2NvbW1lbnRzKQotICAgIGZwcmlu dGYoc3FsX2ZpbGUsICJcbi0tXG4tLSBEdW1waW5nIHJvdXRpbmVzIGZvciBkYXRhYmFzZSAnJXMn XG4tLVxuIiwgZGIpOworICBwcmludF9jb21tZW50KHNxbF9maWxlLCAwLAorICAgICAgICAgICAg ICAgICJcbi0tXG4tLSBEdW1waW5nIHJvdXRpbmVzIGZvciBkYXRhYmFzZSAnJXMnXG4tLVxuIiwg ZGIpOwogCiAgIC8qCiAgICAgbm90IHVzaW5nICJteXNxbF9xdWVyeV93aXRoX2Vycm9yX3JlcG9y dCIgYmVjYXVzZSB3ZSBtYXkgaGF2ZSBub3QKQEAgLTIxMTIsNiArMjI4Miw5IEBAIHN0YXRpYyB1 aW50IGR1bXBfcm91dGluZXNfZm9yX2RiKGNoYXIgKmQKICAgaWYgKHN3aXRjaF9jaGFyYWN0ZXJf c2V0X3Jlc3VsdHMobXlzcWwsICJiaW5hcnkiKSkKICAgICBEQlVHX1JFVFVSTigxKTsKIAorICBp ZiAob3B0X3htbCkKKyAgICBmcHV0cygiXHQ8cm91dGluZXM+XG4iLCBzcWxfZmlsZSk7CisKICAg LyogMCwgcmV0cmlldmUgYW5kIGR1bXAgZnVuY3Rpb25zLCAxLCBwcm9jZWR1cmVzICovCiAgIGZv ciAoaT0gMDsgaSA8PSAxOyBpKyspCiAgIHsKQEAgLTIxNDcsMTMgKzIzMjAsMjUgQEAgc3RhdGlj IHVpbnQgZHVtcF9yb3V0aW5lc19mb3JfZGIoY2hhciAqZAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICByb3dbMl0gPyAoaW50KSBzdHJsZW4ocm93WzJdKSA6IDApKTsKICAgICAgICAgICBp ZiAocm93WzJdID09IE5VTEwpCiAgICAgICAgICAgewotICAgICAgICAgICAgZnByaW50ZihzcWxf ZmlsZSwgIlxuLS0gaW5zdWZmaWNpZW50IHByaXZpbGVnZXMgdG8gJXNcbiIsIHF1ZXJ5X2J1ZmYp OwotICAgICAgICAgICAgZnByaW50ZihzcWxfZmlsZSwgIi0tIGRvZXMgJXMgaGF2ZSBwZXJtaXNz aW9ucyBvbiBteXNxbC5wcm9jP1xuXG4iLCBjdXJyZW50X3VzZXIpOworICAgICAgICAgICAgcHJp bnRfY29tbWVudChzcWxfZmlsZSwgMSwgIlxuLS0gaW5zdWZmaWNpZW50IHByaXZpbGVnZXMgdG8g JXNcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5X2J1ZmYpOworICAgICAgICAg ICAgcHJpbnRfY29tbWVudChzcWxfZmlsZSwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg Ii0tIGRvZXMgJXMgaGF2ZSBwZXJtaXNzaW9ucyBvbiBteXNxbC5wcm9jP1xuXG4iLAorICAgICAg ICAgICAgICAgICAgICAgICAgICBjdXJyZW50X3VzZXIpOwogICAgICAgICAgICAgbWF5YmVfZGll KEVYX01ZU1FMRVJSLCIlcyBoYXMgaW5zdWZmaWNlbnQgcHJpdmlsZWdlcyB0byAlcyEiLCBjdXJy ZW50X3VzZXIsIHF1ZXJ5X2J1ZmYpOwogICAgICAgICAgIH0KICAgICAgICAgICBlbHNlIGlmIChz dHJsZW4ocm93WzJdKSkKICAgICAgICAgICB7Ci0gICAgICAgICAgICBjaGFyICpxdWVyeV9zdHI7 CisgICAgICAgICAgICBpZiAob3B0X3htbCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg aWYgKGkpICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFByb2NlZHVyZXMuCisgICAgICAg ICAgICAgICAgcHJpbnRfeG1sX3JvdyhzcWxfZmlsZSwgInJvdXRpbmUiLCByb3V0aW5lX3Jlcywg JnJvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDcmVhdGUgUHJvY2VkdXJlIik7 CisgICAgICAgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGdW5j dGlvbnMuCisgICAgICAgICAgICAgICAgcHJpbnRfeG1sX3JvdyhzcWxfZmlsZSwgInJvdXRpbmUi LCByb3V0aW5lX3JlcywgJnJvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDcmVh dGUgRnVuY3Rpb24iKTsKKyAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAg ICAgICAgICAgICBpZiAob3B0X2Ryb3ApCiAgICAgICAgICAgICAgIGZwcmludGYoc3FsX2ZpbGUs ICIvKiE1MDAwMyBEUk9QICVzIElGIEVYSVNUUyAlcyAqLztcbiIsCiAgICAgICAgICAgICAgICAg ICAgICAgcm91dGluZV90eXBlW2ldLCByb3V0aW5lX25hbWUpOwpAQCAtMjIyNCw2ICsyNDA5LDEy IEBAIHN0YXRpYyB1aW50IGR1bXBfcm91dGluZXNfZm9yX2RiKGNoYXIgKmQKICAgICBteXNxbF9m cmVlX3Jlc3VsdChyb3V0aW5lX2xpc3RfcmVzKTsKICAgfSAvKiBlbmQgb2YgZm9yIGkgKDAgLi4g MSkgICovCiAKKyAgaWYgKG9wdF94bWwpCisgIHsKKyAgICBmcHV0cygiXHQ8L3JvdXRpbmVzPlxu Iiwgc3FsX2ZpbGUpOworICAgIGNoZWNrX2lvKHNxbF9maWxlKTsKKyAgfQorCiAgIGlmIChzd2l0 Y2hfY2hhcmFjdGVyX3NldF9yZXN1bHRzKG15c3FsLCBkZWZhdWx0X2NoYXJzZXQpKQogICAgIERC VUdfUkVUVVJOKDEpOwogCkBAIC0yMzM2LDE2ICsyNTI3LDE2IEBAIHN0YXRpYyB1aW50IGdldF90 YWJsZV9zdHJ1Y3R1cmUoY2hhciAqdGEKIAogICAgICAgICB3cml0ZV9oZWFkZXIoc3FsX2ZpbGUs IGRiKTsKICAgICAgIH0KLSAgICAgIGlmICghb3B0X3htbCAmJiBvcHRfY29tbWVudHMpCi0gICAg ICB7CisKICAgICAgIGlmIChzdHJjbXAgKHRhYmxlX3R5cGUsICJWSUVXIikgPT0gMCkgICAgICAg ICAvKiB2aWV3ICovCi0gICAgICAgIGZwcmludGYoc3FsX2ZpbGUsICJcbi0tXG4tLSBUZW1wb3Jh cnkgdGFibGUgc3RydWN0dXJlIGZvciB2aWV3ICVzXG4tLVxuXG4iLAotICAgICAgICAgICAgICAg IHJlc3VsdF90YWJsZSk7CisgICAgICAgIHByaW50X2NvbW1lbnQoc3FsX2ZpbGUsIDAsCisgICAg ICAgICAgICAgICAgICAgICAgIlxuLS1cbi0tIFRlbXBvcmFyeSB0YWJsZSBzdHJ1Y3R1cmUgZm9y IHZpZXcgJXNcbi0tXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0X3RhYmxlKTsK ICAgICAgIGVsc2UKLSAgICAgICAgZnByaW50ZihzcWxfZmlsZSwgIlxuLS1cbi0tIFRhYmxlIHN0 cnVjdHVyZSBmb3IgdGFibGUgJXNcbi0tXG5cbiIsCi0gICAgICAgICAgICAgICAgcmVzdWx0X3Rh YmxlKTsKLSAgICAgICAgY2hlY2tfaW8oc3FsX2ZpbGUpOwotICAgICAgfQorICAgICAgICBwcmlu dF9jb21tZW50KHNxbF9maWxlLCAwLAorICAgICAgICAgICAgICAgICAgICAgICJcbi0tXG4tLSBU YWJsZSBzdHJ1Y3R1cmUgZm9yIHRhYmxlICVzXG4tLVxuXG4iLAorICAgICAgICAgICAgICAgICAg ICAgIHJlc3VsdF90YWJsZSk7CisKICAgICAgIGlmIChvcHRfZHJvcCkKICAgICAgIHsKICAgICAg IC8qCkBAIC0yNTQ2LDkgKzI3MzcsMTAgQEAgc3RhdGljIHVpbnQgZ2V0X3RhYmxlX3N0cnVjdHVy ZShjaGFyICp0YQogICAgICAgICAgIERCVUdfUkVUVVJOKDApOwogICAgICAgICB3cml0ZV9oZWFk ZXIoc3FsX2ZpbGUsIGRiKTsKICAgICAgIH0KLSAgICAgIGlmICghb3B0X3htbCAmJiBvcHRfY29t bWVudHMpCi0gICAgICAgIGZwcmludGYoc3FsX2ZpbGUsICJcbi0tXG4tLSBUYWJsZSBzdHJ1Y3R1 cmUgZm9yIHRhYmxlICVzXG4tLVxuXG4iLAotICAgICAgICAgICAgICAgIHJlc3VsdF90YWJsZSk7 CisKKyAgICAgIHByaW50X2NvbW1lbnQoc3FsX2ZpbGUsIDAsCisgICAgICAgICAgICAgICAgICAg ICJcbi0tXG4tLSBUYWJsZSBzdHJ1Y3R1cmUgZm9yIHRhYmxlICVzXG4tLVxuXG4iLAorICAgICAg ICAgICAgICAgICAgICByZXN1bHRfdGFibGUpOwogICAgICAgaWYgKG9wdF9kcm9wKQogICAgICAg ICBmcHJpbnRmKHNxbF9maWxlLCAiRFJPUCBUQUJMRSBJRiBFWElTVFMgJXM7XG4iLCByZXN1bHRf dGFibGUpOwogICAgICAgaWYgKCFvcHRfeG1sKQpAQCAtMjU5OSw3ICsyNzkxLDcgQEAgc3RhdGlj IHVpbnQgZ2V0X3RhYmxlX3N0cnVjdHVyZShjaGFyICp0YQogICAgICAgewogICAgICAgICBpZiAo b3B0X3htbCkKICAgICAgICAgewotICAgICAgICAgIHByaW50X3htbF9yb3coc3FsX2ZpbGUsICJm aWVsZCIsIHJlc3VsdCwgJnJvdyk7CisgICAgICAgICAgcHJpbnRfeG1sX3JvdyhzcWxfZmlsZSwg ImZpZWxkIiwgcmVzdWx0LCAmcm93LCBOdWxsUyk7CiAgICAgICAgICAgY29udGludWU7CiAgICAg ICAgIH0KIApAQCAtMjY3MSw3ICsyODYzLDcgQEAgc3RhdGljIHVpbnQgZ2V0X3RhYmxlX3N0cnVj dHVyZShjaGFyICp0YQogICAgICAgewogICAgICAgICBpZiAob3B0X3htbCkKICAgICAgICAgewot ICAgICAgICAgIHByaW50X3htbF9yb3coc3FsX2ZpbGUsICJrZXkiLCByZXN1bHQsICZyb3cpOwor ICAgICAgICAgIHByaW50X3htbF9yb3coc3FsX2ZpbGUsICJrZXkiLCByZXN1bHQsICZyb3csIE51 bGxTKTsKICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCkBAIC0yNzMwLDcgKzI5MjIs NyBAQCBzdGF0aWMgdWludCBnZXRfdGFibGVfc3RydWN0dXJlKGNoYXIgKnRhCiAgICAgICAgIGVs c2UKICAgICAgICAgewogICAgICAgICAgIGlmIChvcHRfeG1sKQotICAgICAgICAgICAgcHJpbnRf eG1sX3JvdyhzcWxfZmlsZSwgIm9wdGlvbnMiLCByZXN1bHQsICZyb3cpOworICAgICAgICAgICAg cHJpbnRfeG1sX3JvdyhzcWxfZmlsZSwgIm9wdGlvbnMiLCByZXN1bHQsICZyb3csIE51bGxTKTsK ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgewogICAgICAgICAgICAgZnB1dHMoIi8qISIsc3Fs X2ZpbGUpOwpAQCAtMjc3NCw5ICsyOTY2LDE5IEBAIHN0YXRpYyB2b2lkIGR1bXBfdHJpZ2dlcl9v bGQoRklMRSAqc3FsX2YKICAgY2hhciAqcXVvdGVkX3RhYmxlX25hbWU9IHF1b3RlX25hbWUodGFi bGVfbmFtZSwgcXVvdGVkX3RhYmxlX25hbWVfYnVmLCAxKTsKIAogICBjaGFyIG5hbWVfYnVmZltO QU1FX0xFTiAqIDQgKyAzXTsKKyAgY29uc3QgY2hhciAqeG1sX21zZz0gIlxuV2FybmluZyEgbXlz cWxkdW1wIGJlaW5nIHJ1biBhZ2FpbnN0IG9sZCBzZXJ2ZXIgIgorICAgICAgICAgICAgICAgICAg ICAgICAidGhhdCBkb2VzIG5vdFxuc3VwcG9ydCAnU0hPVyBDUkVBVEUgVFJJR0dFUlMnICIKKyAg ICAgICAgICAgICAgICAgICAgICAgInN0YXRlbWVudC4gU2tpcHBpbmcuLlxuIjsKIAogICBEQlVH X0VOVEVSKCJkdW1wX3RyaWdnZXJfb2xkIik7CiAKKyAgaWYgKG9wdF94bWwpCisgIHsKKyAgICBw cmludF94bWxfY29tbWVudChzcWxfZmlsZSwgc3RybGVuKHhtbF9tc2cpLCB4bWxfbXNnKTsKKyAg ICBjaGVja19pbyhzcWxfZmlsZSk7CisgICAgREJVR19WT0lEX1JFVFVSTjsKKyAgfQorCiAgIGZw cmludGYoc3FsX2ZpbGUsCiAgICAgICAgICAgIi0tXG4iCiAgICAgICAgICAgIi0tIFdBUk5JTkc6 IG9sZCBzZXJ2ZXIgdmVyc2lvbi4gIgpAQCAtMjg0MCwxMyArMzA0MiwyMiBAQCBzdGF0aWMgaW50 IGR1bXBfdHJpZ2dlcihGSUxFICpzcWxfZmlsZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBjaGFyICpkYl9jbF9uYW1lKQogewogICBNWVNRTF9ST1cgcm93OworICBjaGFyICpxdWVy eV9zdHI7CiAgIGludCBkYl9jbF9hbHRlcmVkPSBGQUxTRTsKIAogICBEQlVHX0VOVEVSKCJkdW1w X3RyaWdnZXIiKTsKIAogICB3aGlsZSAoKHJvdz0gbXlzcWxfZmV0Y2hfcm93KHNob3dfY3JlYXRl X3RyaWdnZXJfcnMpKSkKICAgewotICAgIGNoYXIgKnF1ZXJ5X3N0cj0gY292ZXJfZGVmaW5lcl9j bGF1c2VfaW5fdHJpZ2dlcihyb3dbMl0sIHN0cmxlbihyb3dbMl0pKTsKKyAgICBpZiAob3B0X3ht bCkKKyAgICB7CisgICAgICBwcmludF94bWxfcm93KHNxbF9maWxlLCAidHJpZ2dlciIsIHNob3df Y3JlYXRlX3RyaWdnZXJfcnMsICZyb3csCisgICAgICAgICAgICAgICAgICAgICJTUUwgT3JpZ2lu YWwgU3RhdGVtZW50Iik7CisgICAgICBjaGVja19pbyhzcWxfZmlsZSk7CisgICAgICBjb250aW51 ZTsKKyAgICB9CisKKyAgICBxdWVyeV9zdHI9IGNvdmVyX2RlZmluZXJfY2xhdXNlX2luX3RyaWdn ZXIocm93WzJdLCBzdHJsZW4ocm93WzJdKSk7CiAKIAogICAgIGlmIChzd2l0Y2hfZGJfY29sbGF0 aW9uKHNxbF9maWxlLCBkYl9uYW1lLCAiOyIsCkBAIC0yOTM2LDYgKzMxNDcsMTMgQEAgc3RhdGlj IGludCBkdW1wX3RyaWdnZXJzX2Zvcl90YWJsZShjaGFyIAogCiAgIC8qIER1bXAgdHJpZ2dlcnMu ICovCiAKKyAgaWYgKCEgbXlzcWxfbnVtX3Jvd3Moc2hvd190cmlnZ2Vyc19ycykpCisgICAgZ290 byBza2lwOworCisgIGlmIChvcHRfeG1sKQorICAgIHByaW50X3htbF90YWcoc3FsX2ZpbGUsICJc dCIsICJcbiIsICJ0cmlnZ2VycyIsICJuYW1lPSIsCisgICAgICAgICAgICAgICAgICB0YWJsZV9u YW1lLCBOdWxsUyk7CisKICAgd2hpbGUgKChyb3c9IG15c3FsX2ZldGNoX3JvdyhzaG93X3RyaWdn ZXJzX3JzKSkpCiAgIHsKIApAQCAtMjk2OCw2ICszMTg2LDEzIEBAIHN0YXRpYyBpbnQgZHVtcF90 cmlnZ2Vyc19mb3JfdGFibGUoY2hhciAKIAogICB9CiAKKyAgaWYgKG9wdF94bWwpCisgIHsKKyAg ICBmcHV0cygiXHQ8L3RyaWdnZXJzPlxuIiwgc3FsX2ZpbGUpOworICAgIGNoZWNrX2lvKHNxbF9m aWxlKTsKKyAgfQorCitza2lwOgogICBteXNxbF9mcmVlX3Jlc3VsdChzaG93X3RyaWdnZXJzX3Jz KTsKIAogICBpZiAoc3dpdGNoX2NoYXJhY3Rlcl9zZXRfcmVzdWx0cyhteXNxbCwgZGVmYXVsdF9j aGFyc2V0KSkKQEAgLTMyMTYsMzQgKzM0NDEsMjQgQEAgc3RhdGljIHZvaWQgZHVtcF90YWJsZShj aGFyICp0YWJsZSwgY2hhcgogICB9CiAgIGVsc2UKICAgewotICAgIGlmICghb3B0X3htbCAmJiBv cHRfY29tbWVudHMpCi0gICAgewotICAgICAgZnByaW50ZihtZF9yZXN1bHRfZmlsZSwiXG4tLVxu LS0gRHVtcGluZyBkYXRhIGZvciB0YWJsZSAlc1xuLS1cbiIsCi0gICAgICAgICAgICAgIHJlc3Vs dF90YWJsZSk7Ci0gICAgICBjaGVja19pbyhtZF9yZXN1bHRfZmlsZSk7Ci0gICAgfQorICAgIHBy aW50X2NvbW1lbnQobWRfcmVzdWx0X2ZpbGUsIDAsCisgICAgICAgICAgICAgICAgICAiXG4tLVxu LS0gRHVtcGluZyBkYXRhIGZvciB0YWJsZSAlc1xuLS1cbiIsCisgICAgICAgICAgICAgICAgICBy ZXN1bHRfdGFibGUpOwogICAgIAogICAgIGR5bnN0cl9hcHBlbmRfY2hlY2tlZCgmcXVlcnlfc3Ry aW5nLCAiU0VMRUNUIC8qITQwMDAxIFNRTF9OT19DQUNIRSAqLyAqIEZST00gIik7CiAgICAgZHlu c3RyX2FwcGVuZF9jaGVja2VkKCZxdWVyeV9zdHJpbmcsIHJlc3VsdF90YWJsZSk7CiAKICAgICBp ZiAod2hlcmUpCiAgICAgewotICAgICAgaWYgKCFvcHRfeG1sICYmIG9wdF9jb21tZW50cykKLSAg ICAgIHsKLSAgICAgICAgZnByaW50ZihtZF9yZXN1bHRfZmlsZSwgIi0tIFdIRVJFOiAgJXNcbiIs IHdoZXJlKTsKLSAgICAgICAgY2hlY2tfaW8obWRfcmVzdWx0X2ZpbGUpOwotICAgICAgfQotICAg ICAgCisgICAgICBwcmludF9jb21tZW50KG1kX3Jlc3VsdF9maWxlLCAwLCAiLS0gV0hFUkU6ICAl c1xuIiwgd2hlcmUpOworCiAgICAgICBkeW5zdHJfYXBwZW5kX2NoZWNrZWQoJnF1ZXJ5X3N0cmlu ZywgIiBXSEVSRSAiKTsKICAgICAgIGR5bnN0cl9hcHBlbmRfY2hlY2tlZCgmcXVlcnlfc3RyaW5n LCB3aGVyZSk7CiAgICAgfQogICAgIGlmIChvcmRlcl9ieSkKICAgICB7Ci0gICAgICBpZiAoIW9w dF94bWwgJiYgb3B0X2NvbW1lbnRzKQotICAgICAgewotICAgICAgICBmcHJpbnRmKG1kX3Jlc3Vs dF9maWxlLCAiLS0gT1JERVIgQlk6ICAlc1xuIiwgb3JkZXJfYnkpOwotICAgICAgICBjaGVja19p byhtZF9yZXN1bHRfZmlsZSk7Ci0gICAgICB9CisgICAgICBwcmludF9jb21tZW50KG1kX3Jlc3Vs dF9maWxlLCAwLCAiLS0gT1JERVIgQlk6ICAlc1xuIiwgb3JkZXJfYnkpOworCiAgICAgICBkeW5z dHJfYXBwZW5kX2NoZWNrZWQoJnF1ZXJ5X3N0cmluZywgIiBPUkRFUiBCWSAiKTsKICAgICAgIGR5 bnN0cl9hcHBlbmRfY2hlY2tlZCgmcXVlcnlfc3RyaW5nLCBvcmRlcl9ieSk7CiAgICAgfQpAQCAt MzQzOSw3ICszNjU0LDcgQEAgc3RhdGljIHZvaWQgZHVtcF90YWJsZShjaGFyICp0YWJsZSwgY2hh cgogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIHByaW50X3htbF90YWcobWRf cmVzdWx0X2ZpbGUsICJcdFx0IiwgIiIsICJmaWVsZCIsICJuYW1lPSIsIAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBmaWVsZC0+bmFtZSwgTnVsbFMpOwotICAgICAgICAgICAgICAg ICAgcHJpbnRfcXVvdGVkX3htbChtZF9yZXN1bHRfZmlsZSwgcm93W2ldLCBsZW5ndGgpOworICAg ICAgICAgICAgICAgICAgcHJpbnRfcXVvdGVkX3htbChtZF9yZXN1bHRfZmlsZSwgcm93W2ldLCBs ZW5ndGgsIDApOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBmcHV0cygiPC9m aWVsZD5cbiIsIG1kX3Jlc3VsdF9maWxlKTsKICAgICAgICAgICAgICAgfQpAQCAtMzc0MywxMSAr Mzk1OCw5IEBAIHN0YXRpYyBpbnQgZHVtcF90YWJsZXNwYWNlcyhjaGFyKiB0c193aGUKICAgICAg IGZpcnN0PSAxOwogICAgIGlmIChmaXJzdCkKICAgICB7Ci0gICAgICBpZiAoIW9wdF94bWwgJiYg b3B0X2NvbW1lbnRzKQotICAgICAgewotCWZwcmludGYobWRfcmVzdWx0X2ZpbGUsIlxuLS1cbi0t IExvZ2ZpbGUgZ3JvdXA6ICVzXG4tLVxuIiwgcm93WzBdKTsKLQljaGVja19pbyhtZF9yZXN1bHRf ZmlsZSk7Ci0gICAgICB9CisgICAgICBwcmludF9jb21tZW50KG1kX3Jlc3VsdF9maWxlLCAwLCAi XG4tLVxuLS0gTG9nZmlsZSBncm91cDogJXNcbi0tXG4iLAorICAgICAgICAgICAgICAgICAgICBy b3dbMF0pOworCiAgICAgICBmcHJpbnRmKG1kX3Jlc3VsdF9maWxlLCAiXG5DUkVBVEUiKTsKICAg ICB9CiAgICAgZWxzZQpAQCAtMzgxNSwxMSArNDAyOCw3IEBAIHN0YXRpYyBpbnQgZHVtcF90YWJs ZXNwYWNlcyhjaGFyKiB0c193aGUKICAgICAgIGZpcnN0PSAxOwogICAgIGlmIChmaXJzdCkKICAg ICB7Ci0gICAgICBpZiAoIW9wdF94bWwgJiYgb3B0X2NvbW1lbnRzKQotICAgICAgewotCWZwcmlu dGYobWRfcmVzdWx0X2ZpbGUsIlxuLS1cbi0tIFRhYmxlc3BhY2U6ICVzXG4tLVxuIiwgcm93WzBd KTsKLQljaGVja19pbyhtZF9yZXN1bHRfZmlsZSk7Ci0gICAgICB9CisgICAgICBwcmludF9jb21t ZW50KG1kX3Jlc3VsdF9maWxlLCAwLCAiXG4tLVxuLS0gVGFibGVzcGFjZTogJXNcbi0tXG4iLCBy b3dbMF0pOwogICAgICAgZnByaW50ZihtZF9yZXN1bHRfZmlsZSwgIlxuQ1JFQVRFIik7CiAgICAg fQogICAgIGVsc2UKQEAgLTQwMDksMTEgKzQyMTgsOSBAQCBzdGF0aWMgaW50IGluaXRfZHVtcGlu ZyhjaGFyICpkYXRhYmFzZSwgCiAgICAgICAqLwogICAgICAgY2hhciBxdW90ZWRfZGF0YWJhc2Vf YnVmW05BTUVfTEVOKjIrM107CiAgICAgICBjaGFyICpxZGF0YWJhc2U9IHF1b3RlX25hbWUoZGF0 YWJhc2UscXVvdGVkX2RhdGFiYXNlX2J1ZixvcHRfcXVvdGVkKTsKLSAgICAgIGlmIChvcHRfY29t bWVudHMpCi0gICAgICB7Ci0gICAgICAgIGZwcmludGYobWRfcmVzdWx0X2ZpbGUsIlxuLS1cbi0t IEN1cnJlbnQgRGF0YWJhc2U6ICVzXG4tLVxuIiwgcWRhdGFiYXNlKTsKLSAgICAgICAgY2hlY2tf aW8obWRfcmVzdWx0X2ZpbGUpOwotICAgICAgfQorCisgICAgICBwcmludF9jb21tZW50KG1kX3Jl c3VsdF9maWxlLCAwLAorICAgICAgICAgICAgICAgICAgICAiXG4tLVxuLS0gQ3VycmVudCBEYXRh YmFzZTogJXNcbi0tXG4iLCBxZGF0YWJhc2UpOwogCiAgICAgICAvKiBDYWxsIHRoZSB2aWV3IG9y IHRhYmxlIHNwZWNpZmljIGZ1bmN0aW9uICovCiAgICAgICBpbml0X2Z1bmMocWRhdGFiYXNlKTsK QEAgLTQwODcsOCArNDI5NCw3IEBAIHN0YXRpYyBpbnQgZHVtcF9hbGxfdGFibGVzX2luX2RiKGNo YXIgKmQKICAgICAgIGR1bXBfdGFibGUodGFibGUsZGF0YWJhc2UpOwogICAgICAgbXlfZnJlZShv cmRlcl9ieSwgTVlGKE1ZX0FMTE9XX1pFUk9fUFRSKSk7CiAgICAgICBvcmRlcl9ieT0gMDsKLSAg ICAgIGlmIChvcHRfZHVtcF90cmlnZ2VycyAmJiAhIG9wdF94bWwgJiYKLSAgICAgICAgICBteXNx bF9nZXRfc2VydmVyX3ZlcnNpb24obXlzcWwpID49IDUwMDA5KQorICAgICAgaWYgKG9wdF9kdW1w X3RyaWdnZXJzICYmIG15c3FsX2dldF9zZXJ2ZXJfdmVyc2lvbihteXNxbCkgPj0gNTAwMDkpCiAg ICAgICB7CiAgICAgICAgIGlmIChkdW1wX3RyaWdnZXJzX2Zvcl90YWJsZSh0YWJsZSwgZGF0YWJh c2UpKQogICAgICAgICB7CkBAIC00MDk5LDE0ICs0MzA1LDEyIEBAIHN0YXRpYyBpbnQgZHVtcF9h bGxfdGFibGVzX2luX2RiKGNoYXIgKmQKICAgICAgIH0KICAgICB9CiAgIH0KLSAgaWYgKG9wdF9l dmVudHMgJiYgIW9wdF94bWwgJiYKLSAgICAgIG15c3FsX2dldF9zZXJ2ZXJfdmVyc2lvbihteXNx bCkgPj0gNTAxMDYpCisgIGlmIChvcHRfZXZlbnRzICYmIG15c3FsX2dldF9zZXJ2ZXJfdmVyc2lv bihteXNxbCkgPj0gNTAxMDYpCiAgIHsKICAgICBEQlVHX1BSSU5UKCJpbmZvIiwgKCJEdW1waW5n IGV2ZW50cyBmb3IgZGF0YWJhc2UgJXMiLCBkYXRhYmFzZSkpOwogICAgIGR1bXBfZXZlbnRzX2Zv cl9kYihkYXRhYmFzZSk7CiAgIH0KLSAgaWYgKG9wdF9yb3V0aW5lcyAmJiAhb3B0X3htbCAmJgot ICAgICAgbXlzcWxfZ2V0X3NlcnZlcl92ZXJzaW9uKG15c3FsKSA+PSA1MDAwOSkKKyAgaWYgKG9w dF9yb3V0aW5lcyAmJiBteXNxbF9nZXRfc2VydmVyX3ZlcnNpb24obXlzcWwpID49IDUwMDA5KQog ICB7CiAgICAgREJVR19QUklOVCgiaW5mbyIsICgiRHVtcGluZyByb3V0aW5lcyBmb3IgZGF0YWJh c2UgJXMiLCBkYXRhYmFzZSkpOwogICAgIGR1bXBfcm91dGluZXNfZm9yX2RiKGRhdGFiYXNlKTsK QEAgLTQzNDEsMTUgKzQ1NDUsMTMgQEAgc3RhdGljIGludCBkdW1wX3NlbGVjdGVkX3RhYmxlcyhj aGFyICpkYgogICAgIGZvciAocG9zPSBkdW1wX3RhYmxlczsgcG9zIDwgZW5kOyBwb3MrKykKICAg ICAgIGdldF92aWV3X3N0cnVjdHVyZSgqcG9zLCBkYik7CiAgIH0KLSAgaWYgKG9wdF9ldmVudHMg JiYgIW9wdF94bWwgJiYKLSAgICAgIG15c3FsX2dldF9zZXJ2ZXJfdmVyc2lvbihteXNxbCkgPj0g NTAxMDYpCisgIGlmIChvcHRfZXZlbnRzICYmIG15c3FsX2dldF9zZXJ2ZXJfdmVyc2lvbihteXNx bCkgPj0gNTAxMDYpCiAgIHsKICAgICBEQlVHX1BSSU5UKCJpbmZvIiwgKCJEdW1waW5nIGV2ZW50 cyBmb3IgZGF0YWJhc2UgJXMiLCBkYikpOwogICAgIGR1bXBfZXZlbnRzX2Zvcl9kYihkYik7CiAg IH0KICAgLyogb2J0YWluIGR1bXAgb2Ygcm91dGluZXMgKHByb2NzL2Z1bmN0aW9ucykgKi8KLSAg aWYgKG9wdF9yb3V0aW5lcyAgJiYgIW9wdF94bWwgJiYKLSAgICAgIG15c3FsX2dldF9zZXJ2ZXJf dmVyc2lvbihteXNxbCkgPj0gNTAwMDkpCisgIGlmIChvcHRfcm91dGluZXMgJiYgbXlzcWxfZ2V0 X3NlcnZlcl92ZXJzaW9uKG15c3FsKSA+PSA1MDAwOSkKICAgewogICAgIERCVUdfUFJJTlQoImlu Zm8iLCAoIkR1bXBpbmcgcm91dGluZXMgZm9yIGRhdGFiYXNlICVzIiwgZGIpKTsKICAgICBkdW1w X3JvdXRpbmVzX2Zvcl9kYihkYik7CkBAIC00Mzg0LDEwICs0NTg2LDkgQEAgc3RhdGljIGludCBk b19zaG93X21hc3Rlcl9zdGF0dXMoTVlTUUwgKgogICAgIGlmIChyb3cgJiYgcm93WzBdICYmIHJv d1sxXSkKICAgICB7CiAgICAgICAvKiBTSE9XIE1BU1RFUiBTVEFUVVMgcmVwb3J0cyBmaWxlIGFu ZCBwb3NpdGlvbiAqLwotICAgICAgaWYgKG9wdF9jb21tZW50cykKLSAgICAgICAgZnByaW50Ziht ZF9yZXN1bHRfZmlsZSwKLSAgICAgICAgICAgICAgICAiXG4tLVxuLS0gUG9zaXRpb24gdG8gc3Rh cnQgcmVwbGljYXRpb24gb3IgcG9pbnQtaW4tdGltZSAiCi0gICAgICAgICAgICAgICAgInJlY292 ZXJ5IGZyb21cbi0tXG5cbiIpOworICAgICAgcHJpbnRfY29tbWVudChtZF9yZXN1bHRfZmlsZSwg MCwKKyAgICAgICAgICAgICAgICAgICAgIlxuLS1cbi0tIFBvc2l0aW9uIHRvIHN0YXJ0IHJlcGxp Y2F0aW9uIG9yIHBvaW50LWluLXRpbWUgIgorICAgICAgICAgICAgICAgICAgICAicmVjb3Zlcnkg ZnJvbVxuLS1cblxuIik7CiAgICAgICBmcHJpbnRmKG1kX3Jlc3VsdF9maWxlLAogICAgICAgICAg ICAgICAiJXNDSEFOR0UgTUFTVEVSIFRPIE1BU1RFUl9MT0dfRklMRT0nJXMnLCBNQVNURVJfTE9H X1BPUz0lcztcbiIsCiAgICAgICAgICAgICAgIGNvbW1lbnRfcHJlZml4LCByb3dbMF0sIHJvd1sx XSk7CkBAIC00ODUwLDEyICs1MDUxLDEwIEBAIHN0YXRpYyBteV9ib29sIGdldF92aWV3X3N0cnVj dHVyZShjaGFyICoKICAgICB3cml0ZV9oZWFkZXIoc3FsX2ZpbGUsIGRiKTsKICAgfQogCi0gIGlm ICghb3B0X3htbCAmJiBvcHRfY29tbWVudHMpCi0gIHsKLSAgICBmcHJpbnRmKHNxbF9maWxlLCAi XG4tLVxuLS0gRmluYWwgdmlldyBzdHJ1Y3R1cmUgZm9yIHZpZXcgJXNcbi0tXG5cbiIsCi0gICAg ICAgICAgICByZXN1bHRfdGFibGUpOwotICAgIGNoZWNrX2lvKHNxbF9maWxlKTsKLSAgfQorICBw cmludF9jb21tZW50KHNxbF9maWxlLCAwLAorICAgICAgICAgICAgICAgICJcbi0tXG4tLSBGaW5h bCB2aWV3IHN0cnVjdHVyZSBmb3IgdmlldyAlc1xuLS1cblxuIiwKKyAgICAgICAgICAgICAgICBy ZXN1bHRfdGFibGUpOworCiAgIC8qIFRhYmxlIG1pZ2h0IG5vdCBleGlzdCBpZiB0aGlzIHZpZXcg d2FzIGR1bXBlZCB3aXRoIC0tdGFiLiAqLwogICBmcHJpbnRmKHNxbF9maWxlLCAiLyohNTAwMDEg RFJPUCBUQUJMRSBJRiBFWElTVFMgJXMqLztcbiIsIG9wdF9xdW90ZWRfdGFibGUpOwogICBpZiAo b3B0X2Ryb3ApCkBAIC01MDUyLDYgKzUyNTEsMTIgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIg Kiphcmd2KQogICAgIGV4aXQoZXhpdF9jb2RlKTsKICAgfQogCisgIC8qCisgICAgRGlzYWJsZSBj b21tZW50cyBpbiB4bWwgbW9kZSBpZiAnY29tbWVudHMnIG9wdGlvbiBpcyBub3QgZXhwbGljaXRs eSB1c2VkLgorICAqLworICBpZiAob3B0X3htbCAmJiAhb3B0X2NvbW1lbnRzX3VzZWQpCisgICAg b3B0X2NvbW1lbnRzPSAwOworCiAgIGlmIChsb2dfZXJyb3JfZmlsZSkKICAgewogICAgIGlmKCEo c3RkZXJyb3JfZmlsZT0gZnJlb3Blbihsb2dfZXJyb3JfZmlsZSwgImErIiwgc3RkZXJyKSkpCgo9 PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC9yL215c3FsZHVtcC5yZXN1bHQnCi0tLSBhL215 c3FsLXRlc3Qvci9teXNxbGR1bXAucmVzdWx0CTIwMTEtMDMtMTcgMTA6NTg6MTYgKzAwMDAKKysr IGIvbXlzcWwtdGVzdC9yL215c3FsZHVtcC5yZXN1bHQJMjAxMi0wMS0xMCAwODowMzo0NSArMDAw MApAQCAtNDYyOCw1ICs0NjI4LDQ0NCBAQCBBTFRFUiBEQVRBQkFTRSBgdGVzdC1kYXRhYmFzZWAg Q0hBUkFDVEVSCiBEUk9QIERBVEFCQVNFIGB0ZXN0LWRhdGFiYXNlYDsKIFVTRSBgdGVzdGA7CiAj CisjIEJVRyMxMTc2MDM4NCA6IDUyNzkyOiBteXNxbGR1bXAgaW4gWE1MIG1vZGUgZG9lcyBub3Qg ZHVtcCByb3V0aW5lcy4KKyMKK0NSRUFURSBEQVRBQkFTRSBCVUc1Mjc5MjsKK1VTRSBCVUc1Mjc5 MjsKK0NSRUFURSBUQUJMRSB0MSAoYzEgSU5ULCBjMiBWQVJDSEFSKDIwKSk7CitDUkVBVEUgVEFC TEUgdDIgKGMxIElOVCk7CitJTlNFUlQgSU5UTyB0MSBWQUxVRVMgKDEsICdhYWEnKSwgKDIsICdi YmInKSwgKDMsICdjY2MnKTsKK0lOU0VSVCBJTlRPIHQyIFZBTFVFUyAoMSksKDIpLCgzKTsKKyMg U3RvcmVkIFByb2NlZHVyZXMuCitDUkVBVEUgUFJPQ0VEVVJFIHNpbXBsZXByb2MxIChPVVQgcGFy YW0xIElOVCkKK0JFR0lOCitTRUxFQ1QgQ09VTlQoKikgSU5UTyBwYXJhbTEgRlJPTSB0MTsKK0VO RC8vCitDUkVBVEUgUFJPQ0VEVVJFIHNpbXBsZXByb2MyIChPVVQgcGFyYW0xIElOVCkKK0JFR0lO CitTRUxFQ1QgQ09VTlQoKikgSU5UTyBwYXJhbTEgRlJPTSB0MjsKK0VORC8vCisjIEV2ZW50cy4K K0NSRUFURSBFVkVOVCBlMSBPTiBTQ0hFRFVMRSBFVkVSWSAxIFNFQ09ORCBETyBEUk9QIERBVEFC QVNFIEJVRzUyNzkyOworQ1JFQVRFIEVWRU5UIGUyIE9OIFNDSEVEVUxFIEVWRVJZIDEgU0VDT05E IERPIERST1AgREFUQUJBU0UgQlVHNTI3OTI7CisjIEZ1bmN0aW9ucy4KK0NSRUFURSBGVU5DVElP TiBgaGVsbG8xYCAocyBDSEFSKDIwKSkKK1JFVFVSTlMgQ0hBUig1MCkgREVURVJNSU5JU1RJQwor UkVUVVJOIENPTkNBVCgnSGVsbG8sICcgLHMgLCchJyk7CitDUkVBVEUgRlVOQ1RJT04gYGhlbGxv MmAgKHMgQ0hBUigyMCkpCitSRVRVUk5TIENIQVIoNTApIERFVEVSTUlOSVNUSUMKK1JFVFVSTiBD T05DQVQoJ11dPiwgJyAsIHMgLCchJyk7CisjIFRyaWdnZXJzLgorQ1JFQVRFIFRSSUdHRVIgdHJp ZzEgQkVGT1JFIElOU0VSVCBPTiB0MgorRk9SIEVBQ0ggUk9XIEJFR0lOCitJTlNFUlQgSU5UTyB0 MiBWQUxVRVMoMSk7CitFTkQ7Cit8CitDUkVBVEUgVFJJR0dFUiB0cmlnMiBBRlRFUiBJTlNFUlQg T04gdDIKK0ZPUiBFQUNIIFJPVyBCRUdJTgorSU5TRVJUIElOVE8gdDIgVkFMVUVTKDEsICddXT4n KTsKK0lOU0VSVCBJTlRPIHQyIFZBTFVFUygyLCAnPCFbQ0RBVEFdXT4nKTsKK0lOU0VSVCBJTlRP IHQyIFZBTFVFUygzLCAnPCFbQ0RBVEFbJyk7CitJTlNFUlQgSU5UTyB0MiBWQUxVRVMoNCwgJzwg PiAmIFwgIiBfJyk7CitFTkQ7Cit8CisjIFZpZXdzCitDUkVBVEUgVklFVyB2MSBBUyBTRUxFQ1Qg KiBGUk9NIHQxOworQ1JFQVRFIFZJRVcgdjIgQVMgU0VMRUNUICogRlJPTSB0MjsKKworIyBEdW1w aW5nIEJVRzUyNzkyIGRhdGFiYXNlIGluIHhtbCBmb3JtYXQuCisKKyMgUnVubmluZyAncmVwbGFj ZV9yZWdleCBvbiB0aW1lc3RhbXAnCis8P3htbCB2ZXJzaW9uPSIxLjAiPz4KKzxteXNxbGR1bXAg eG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSI+Cis8 ZGF0YWJhc2UgbmFtZT0iQlVHNTI3OTIiPgorCTx0YWJsZV9zdHJ1Y3R1cmUgbmFtZT0idDEiPgor CQk8ZmllbGQgRmllbGQ9ImMxIiBUeXBlPSJpbnQoMTEpIiBOdWxsPSJZRVMiIEtleT0iIiBFeHRy YT0iIiBDb21tZW50PSIiIC8+CisJCTxmaWVsZCBGaWVsZD0iYzIiIFR5cGU9InZhcmNoYXIoMjAp IiBOdWxsPSJZRVMiIEtleT0iIiBFeHRyYT0iIiBDb21tZW50PSIiIC8+CisJCTxvcHRpb25zIE5h bWU9InQxIiBFbmdpbmU9Ik15SVNBTSIgVmVyc2lvbj0iMTAiIFJvd19mb3JtYXQ9IkR5bmFtaWMi IFJvd3M9IjMiIEF2Z19yb3dfbGVuZ3RoPSIyMCIgRGF0YV9sZW5ndGg9IjYwIiBNYXhfZGF0YV9s ZW5ndGg9IjI4MTQ3NDk3NjcxMDY1NSIgSW5kZXhfbGVuZ3RoPSIxMDI0IiBEYXRhX2ZyZWU9IjAi IENyZWF0ZV90aW1lPSItLVRJTUUtLSIgVXBkYXRlX3RpbWU9Ii0tVElNRS0tIiBDb2xsYXRpb249 ImxhdGluMV9zd2VkaXNoX2NpIiBDcmVhdGVfb3B0aW9ucz0iIiBDb21tZW50PSIiIC8+CisJPC90 YWJsZV9zdHJ1Y3R1cmU+CisJPHRhYmxlX2RhdGEgbmFtZT0idDEiPgorCTxyb3c+CisJCTxmaWVs ZCBuYW1lPSJjMSI+MTwvZmllbGQ+CisJCTxmaWVsZCBuYW1lPSJjMiI+YWFhPC9maWVsZD4KKwk8 L3Jvdz4KKwk8cm93PgorCQk8ZmllbGQgbmFtZT0iYzEiPjI8L2ZpZWxkPgorCQk8ZmllbGQgbmFt ZT0iYzIiPmJiYjwvZmllbGQ+CisJPC9yb3c+CisJPHJvdz4KKwkJPGZpZWxkIG5hbWU9ImMxIj4z PC9maWVsZD4KKwkJPGZpZWxkIG5hbWU9ImMyIj5jY2M8L2ZpZWxkPgorCTwvcm93PgorCTwvdGFi bGVfZGF0YT4KKwk8dGFibGVfc3RydWN0dXJlIG5hbWU9InQyIj4KKwkJPGZpZWxkIEZpZWxkPSJj MSIgVHlwZT0iaW50KDExKSIgTnVsbD0iWUVTIiBLZXk9IiIgRXh0cmE9IiIgQ29tbWVudD0iIiAv PgorCQk8b3B0aW9ucyBOYW1lPSJ0MiIgRW5naW5lPSJNeUlTQU0iIFZlcnNpb249IjEwIiBSb3df Zm9ybWF0PSJGaXhlZCIgUm93cz0iMyIgQXZnX3Jvd19sZW5ndGg9IjciIERhdGFfbGVuZ3RoPSIy MSIgTWF4X2RhdGFfbGVuZ3RoPSIxOTcwMzI0ODM2OTc0NTkxIiBJbmRleF9sZW5ndGg9IjEwMjQi IERhdGFfZnJlZT0iMCIgQ3JlYXRlX3RpbWU9Ii0tVElNRS0tIiBVcGRhdGVfdGltZT0iLS1USU1F LS0iIENvbGxhdGlvbj0ibGF0aW4xX3N3ZWRpc2hfY2kiIENyZWF0ZV9vcHRpb25zPSIiIENvbW1l bnQ9IiIgLz4KKwk8L3RhYmxlX3N0cnVjdHVyZT4KKwk8dGFibGVfZGF0YSBuYW1lPSJ0MiI+CisJ PHJvdz4KKwkJPGZpZWxkIG5hbWU9ImMxIj4xPC9maWVsZD4KKwk8L3Jvdz4KKwk8cm93PgorCQk8 ZmllbGQgbmFtZT0iYzEiPjI8L2ZpZWxkPgorCTwvcm93PgorCTxyb3c+CisJCTxmaWVsZCBuYW1l PSJjMSI+MzwvZmllbGQ+CisJPC9yb3c+CisJPC90YWJsZV9kYXRhPgorCTx0cmlnZ2VycyBuYW1l PSJ0MiI+CisJCTx0cmlnZ2VyIFRyaWdnZXI9InRyaWcxIiBzcWxfbW9kZT0iIiBjaGFyYWN0ZXJf c2V0X2NsaWVudD0ibGF0aW4xIiBjb2xsYXRpb25fY29ubmVjdGlvbj0ibGF0aW4xX3N3ZWRpc2hf Y2kiIERhdGFiYXNlX0NvbGxhdGlvbj0ibGF0aW4xX3N3ZWRpc2hfY2kiPgorPCFbQ0RBVEFbCitD UkVBVEUgREVGSU5FUj1gcm9vdGBAYGxvY2FsaG9zdGAgVFJJR0dFUiB0cmlnMSBCRUZPUkUgSU5T RVJUIE9OIHQyCitGT1IgRUFDSCBST1cgQkVHSU4KK0lOU0VSVCBJTlRPIHQyIFZBTFVFUygxKTsK K0VORAorXV0+CisJCTwvdHJpZ2dlcj4KKwkJPHRyaWdnZXIgVHJpZ2dlcj0idHJpZzIiIHNxbF9t b2RlPSIiIGNoYXJhY3Rlcl9zZXRfY2xpZW50PSJsYXRpbjEiIGNvbGxhdGlvbl9jb25uZWN0aW9u PSJsYXRpbjFfc3dlZGlzaF9jaSIgRGF0YWJhc2VfQ29sbGF0aW9uPSJsYXRpbjFfc3dlZGlzaF9j aSI+Cis8IVtDREFUQVsKK0NSRUFURSBERUZJTkVSPWByb290YEBgbG9jYWxob3N0YCBUUklHR0VS IHRyaWcyIEFGVEVSIElOU0VSVCBPTiB0MgorRk9SIEVBQ0ggUk9XIEJFR0lOCitJTlNFUlQgSU5U TyB0MiBWQUxVRVMoMSwgJ11dXV0+PCFbQ0RBVEFbPicpOworSU5TRVJUIElOVE8gdDIgVkFMVUVT KDIsICc8IVtDREFUQV1dXV0+PCFbQ0RBVEFbPicpOworSU5TRVJUIElOVE8gdDIgVkFMVUVTKDMs ICc8IVtDREFUQVsnKTsKK0lOU0VSVCBJTlRPIHQyIFZBTFVFUyg0LCAnPCA+ICYgXCAiIF8nKTsK K0VORAorXV0+CisJCTwvdHJpZ2dlcj4KKwk8L3RyaWdnZXJzPgorCTx0YWJsZV9zdHJ1Y3R1cmUg bmFtZT0idjEiPgorCQk8ZmllbGQgRmllbGQ9ImMxIiBUeXBlPSJpbnQoMTEpIiBOdWxsPSJZRVMi IEtleT0iIiBFeHRyYT0iIiBDb21tZW50PSIiIC8+CisJCTxmaWVsZCBGaWVsZD0iYzIiIFR5cGU9 InZhcmNoYXIoMjApIiBOdWxsPSJZRVMiIEtleT0iIiBFeHRyYT0iIiBDb21tZW50PSIiIC8+CisJ CTxvcHRpb25zIE5hbWU9InYxIiBDb21tZW50PSJWSUVXIiAvPgorCTwvdGFibGVfc3RydWN0dXJl PgorCTx0YWJsZV9zdHJ1Y3R1cmUgbmFtZT0idjIiPgorCQk8ZmllbGQgRmllbGQ9ImMxIiBUeXBl PSJpbnQoMTEpIiBOdWxsPSJZRVMiIEtleT0iIiBFeHRyYT0iIiBDb21tZW50PSIiIC8+CisJCTxv cHRpb25zIE5hbWU9InYyIiBDb21tZW50PSJWSUVXIiAvPgorCTwvdGFibGVfc3RydWN0dXJlPgor CTxldmVudHM+CisJCTxldmVudCBFdmVudD0iZTEiIHNxbF9tb2RlPSIiIHRpbWVfem9uZT0iU1lT VEVNIiBjaGFyYWN0ZXJfc2V0X2NsaWVudD0ibGF0aW4xIiBjb2xsYXRpb25fY29ubmVjdGlvbj0i bGF0aW4xX3N3ZWRpc2hfY2kiIERhdGFiYXNlX0NvbGxhdGlvbj0ibGF0aW4xX3N3ZWRpc2hfY2ki PgorPCFbQ0RBVEFbCitDUkVBVEUgRVZFTlQgYGUxYCBPTiBTQ0hFRFVMRSBFVkVSWSAxIFNFQ09O RCBTVEFSVFMgJy0tVElNRS0tJyBPTiBDT01QTEVUSU9OIE5PVCBQUkVTRVJWRSBFTkFCTEUgRE8g RFJPUCBEQVRBQkFTRSBCVUc1Mjc5MgorXV0+CisJCTwvZXZlbnQ+CisJCTxldmVudCBFdmVudD0i ZTIiIHNxbF9tb2RlPSIiIHRpbWVfem9uZT0iU1lTVEVNIiBjaGFyYWN0ZXJfc2V0X2NsaWVudD0i bGF0aW4xIiBjb2xsYXRpb25fY29ubmVjdGlvbj0ibGF0aW4xX3N3ZWRpc2hfY2kiIERhdGFiYXNl X0NvbGxhdGlvbj0ibGF0aW4xX3N3ZWRpc2hfY2kiPgorPCFbQ0RBVEFbCitDUkVBVEUgRVZFTlQg YGUyYCBPTiBTQ0hFRFVMRSBFVkVSWSAxIFNFQ09ORCBTVEFSVFMgJy0tVElNRS0tJyBPTiBDT01Q TEVUSU9OIE5PVCBQUkVTRVJWRSBFTkFCTEUgRE8gRFJPUCBEQVRBQkFTRSBCVUc1Mjc5MgorXV0+ CisJCTwvZXZlbnQ+CisJPC9ldmVudHM+CisJPHJvdXRpbmVzPgorCQk8cm91dGluZSBGdW5jdGlv bj0iaGVsbG8xIiBzcWxfbW9kZT0iIiBjaGFyYWN0ZXJfc2V0X2NsaWVudD0ibGF0aW4xIiBjb2xs YXRpb25fY29ubmVjdGlvbj0ibGF0aW4xX3N3ZWRpc2hfY2kiIERhdGFiYXNlX0NvbGxhdGlvbj0i bGF0aW4xX3N3ZWRpc2hfY2kiPgorPCFbQ0RBVEFbCitDUkVBVEUgREVGSU5FUj1gcm9vdGBAYGxv Y2FsaG9zdGAgRlVOQ1RJT04gYGhlbGxvMWAocyBDSEFSKDIwKSkgUkVUVVJOUyBjaGFyKDUwKSBD SEFSU0VUIGxhdGluMQorICAgIERFVEVSTUlOSVNUSUMKK1JFVFVSTiBDT05DQVQoJ0hlbGxvLCAn ICxzICwnIScpCitdXT4KKwkJPC9yb3V0aW5lPgorCQk8cm91dGluZSBGdW5jdGlvbj0iaGVsbG8y IiBzcWxfbW9kZT0iIiBjaGFyYWN0ZXJfc2V0X2NsaWVudD0ibGF0aW4xIiBjb2xsYXRpb25fY29u bmVjdGlvbj0ibGF0aW4xX3N3ZWRpc2hfY2kiIERhdGFiYXNlX0NvbGxhdGlvbj0ibGF0aW4xX3N3 ZWRpc2hfY2kiPgorPCFbQ0RBVEFbCitDUkVBVEUgREVGSU5FUj1gcm9vdGBAYGxvY2FsaG9zdGAg RlVOQ1RJT04gYGhlbGxvMmAocyBDSEFSKDIwKSkgUkVUVVJOUyBjaGFyKDUwKSBDSEFSU0VUIGxh dGluMQorICAgIERFVEVSTUlOSVNUSUMKK1JFVFVSTiBDT05DQVQoJ11dXV0+PCFbQ0RBVEFbPiwg JyAsIHMgLCchJykKK11dPgorCQk8L3JvdXRpbmU+CisJCTxyb3V0aW5lIFByb2NlZHVyZT0ic2lt cGxlcHJvYzEiIHNxbF9tb2RlPSIiIGNoYXJhY3Rlcl9zZXRfY2xpZW50PSJsYXRpbjEiIGNvbGxh dGlvbl9jb25uZWN0aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSIgRGF0YWJhc2VfQ29sbGF0aW9uPSJs YXRpbjFfc3dlZGlzaF9jaSI+Cis8IVtDREFUQVsKK0NSRUFURSBERUZJTkVSPWByb290YEBgbG9j YWxob3N0YCBQUk9DRURVUkUgYHNpbXBsZXByb2MxYChPVVQgcGFyYW0xIElOVCkKK0JFR0lOCitT RUxFQ1QgQ09VTlQoKikgSU5UTyBwYXJhbTEgRlJPTSB0MTsKK0VORAorXV0+CisJCTwvcm91dGlu ZT4KKwkJPHJvdXRpbmUgUHJvY2VkdXJlPSJzaW1wbGVwcm9jMiIgc3FsX21vZGU9IiIgY2hhcmFj dGVyX3NldF9jbGllbnQ9ImxhdGluMSIgY29sbGF0aW9uX2Nvbm5lY3Rpb249ImxhdGluMV9zd2Vk aXNoX2NpIiBEYXRhYmFzZV9Db2xsYXRpb249ImxhdGluMV9zd2VkaXNoX2NpIj4KKzwhW0NEQVRB WworQ1JFQVRFIERFRklORVI9YHJvb3RgQGBsb2NhbGhvc3RgIFBST0NFRFVSRSBgc2ltcGxlcHJv YzJgKE9VVCBwYXJhbTEgSU5UKQorQkVHSU4KK1NFTEVDVCBDT1VOVCgqKSBJTlRPIHBhcmFtMSBG Uk9NIHQyOworRU5ECitdXT4KKwkJPC9yb3V0aW5lPgorCTwvcm91dGluZXM+Cis8L2RhdGFiYXNl PgorPC9teXNxbGR1bXA+CisKKyMgRHVtcGluZyBCVUc1Mjc5MiBkYXRhYmFzZSBpbiB4bWwgZm9y bWF0IHdpdGggY29tbWVudHMuCisKKyMgUnVubmluZyAncmVwbGFjZV9yZWdleCBvbiB0aW1lc3Rh bXAnCis8P3htbCB2ZXJzaW9uPSIxLjAiPz4KKzxteXNxbGR1bXAgeG1sbnM6eHNpPSJodHRwOi8v d3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSI+Cis8ZGF0YWJhc2UgbmFtZT0iQlVH NTI3OTIiPgorPCEtLSAKKy0KKy0gVGFibGUgc3RydWN0dXJlIGZvciB0YWJsZSBgdDFgCistCisK KyAtLT4KKwk8dGFibGVfc3RydWN0dXJlIG5hbWU9InQxIj4KKwkJPGZpZWxkIEZpZWxkPSJjMSIg VHlwZT0iaW50KDExKSIgTnVsbD0iWUVTIiBLZXk9IiIgRXh0cmE9IiIgQ29tbWVudD0iIiAvPgor CQk8ZmllbGQgRmllbGQ9ImMyIiBUeXBlPSJ2YXJjaGFyKDIwKSIgTnVsbD0iWUVTIiBLZXk9IiIg RXh0cmE9IiIgQ29tbWVudD0iIiAvPgorCQk8b3B0aW9ucyBOYW1lPSJ0MSIgRW5naW5lPSJNeUlT QU0iIFZlcnNpb249IjEwIiBSb3dfZm9ybWF0PSJEeW5hbWljIiBSb3dzPSIzIiBBdmdfcm93X2xl bmd0aD0iMjAiIERhdGFfbGVuZ3RoPSI2MCIgTWF4X2RhdGFfbGVuZ3RoPSIyODE0NzQ5NzY3MTA2 NTUiIEluZGV4X2xlbmd0aD0iMTAyNCIgRGF0YV9mcmVlPSIwIiBDcmVhdGVfdGltZT0iLS1USU1F LS0iIFVwZGF0ZV90aW1lPSItLVRJTUUtLSIgQ29sbGF0aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSIg Q3JlYXRlX29wdGlvbnM9IiIgQ29tbWVudD0iIiAvPgorCTwvdGFibGVfc3RydWN0dXJlPgorPCEt LSAKKy0KKy0gRHVtcGluZyBkYXRhIGZvciB0YWJsZSBgdDFgCistCisgLS0+CisJPHRhYmxlX2Rh dGEgbmFtZT0idDEiPgorCTxyb3c+CisJCTxmaWVsZCBuYW1lPSJjMSI+MTwvZmllbGQ+CisJCTxm aWVsZCBuYW1lPSJjMiI+YWFhPC9maWVsZD4KKwk8L3Jvdz4KKwk8cm93PgorCQk8ZmllbGQgbmFt ZT0iYzEiPjI8L2ZpZWxkPgorCQk8ZmllbGQgbmFtZT0iYzIiPmJiYjwvZmllbGQ+CisJPC9yb3c+ CisJPHJvdz4KKwkJPGZpZWxkIG5hbWU9ImMxIj4zPC9maWVsZD4KKwkJPGZpZWxkIG5hbWU9ImMy Ij5jY2M8L2ZpZWxkPgorCTwvcm93PgorCTwvdGFibGVfZGF0YT4KKzwhLS0gCistCistIFRhYmxl IHN0cnVjdHVyZSBmb3IgdGFibGUgYHQyYAorLQorCisgLS0+CisJPHRhYmxlX3N0cnVjdHVyZSBu YW1lPSJ0MiI+CisJCTxmaWVsZCBGaWVsZD0iYzEiIFR5cGU9ImludCgxMSkiIE51bGw9IllFUyIg S2V5PSIiIEV4dHJhPSIiIENvbW1lbnQ9IiIgLz4KKwkJPG9wdGlvbnMgTmFtZT0idDIiIEVuZ2lu ZT0iTXlJU0FNIiBWZXJzaW9uPSIxMCIgUm93X2Zvcm1hdD0iRml4ZWQiIFJvd3M9IjMiIEF2Z19y b3dfbGVuZ3RoPSI3IiBEYXRhX2xlbmd0aD0iMjEiIE1heF9kYXRhX2xlbmd0aD0iMTk3MDMyNDgz Njk3NDU5MSIgSW5kZXhfbGVuZ3RoPSIxMDI0IiBEYXRhX2ZyZWU9IjAiIENyZWF0ZV90aW1lPSIt LVRJTUUtLSIgVXBkYXRlX3RpbWU9Ii0tVElNRS0tIiBDb2xsYXRpb249ImxhdGluMV9zd2VkaXNo X2NpIiBDcmVhdGVfb3B0aW9ucz0iIiBDb21tZW50PSIiIC8+CisJPC90YWJsZV9zdHJ1Y3R1cmU+ Cis8IS0tIAorLQorLSBEdW1waW5nIGRhdGEgZm9yIHRhYmxlIGB0MmAKKy0KKyAtLT4KKwk8dGFi bGVfZGF0YSBuYW1lPSJ0MiI+CisJPHJvdz4KKwkJPGZpZWxkIG5hbWU9ImMxIj4xPC9maWVsZD4K Kwk8L3Jvdz4KKwk8cm93PgorCQk8ZmllbGQgbmFtZT0iYzEiPjI8L2ZpZWxkPgorCTwvcm93Pgor CTxyb3c+CisJCTxmaWVsZCBuYW1lPSJjMSI+MzwvZmllbGQ+CisJPC9yb3c+CisJPC90YWJsZV9k YXRhPgorCTx0cmlnZ2VycyBuYW1lPSJ0MiI+CisJCTx0cmlnZ2VyIFRyaWdnZXI9InRyaWcxIiBz cWxfbW9kZT0iIiBjaGFyYWN0ZXJfc2V0X2NsaWVudD0ibGF0aW4xIiBjb2xsYXRpb25fY29ubmVj dGlvbj0ibGF0aW4xX3N3ZWRpc2hfY2kiIERhdGFiYXNlX0NvbGxhdGlvbj0ibGF0aW4xX3N3ZWRp c2hfY2kiPgorPCFbQ0RBVEFbCitDUkVBVEUgREVGSU5FUj1gcm9vdGBAYGxvY2FsaG9zdGAgVFJJ R0dFUiB0cmlnMSBCRUZPUkUgSU5TRVJUIE9OIHQyCitGT1IgRUFDSCBST1cgQkVHSU4KK0lOU0VS VCBJTlRPIHQyIFZBTFVFUygxKTsKK0VORAorXV0+CisJCTwvdHJpZ2dlcj4KKwkJPHRyaWdnZXIg VHJpZ2dlcj0idHJpZzIiIHNxbF9tb2RlPSIiIGNoYXJhY3Rlcl9zZXRfY2xpZW50PSJsYXRpbjEi IGNvbGxhdGlvbl9jb25uZWN0aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSIgRGF0YWJhc2VfQ29sbGF0 aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSI+Cis8IVtDREFUQVsKK0NSRUFURSBERUZJTkVSPWByb290 YEBgbG9jYWxob3N0YCBUUklHR0VSIHRyaWcyIEFGVEVSIElOU0VSVCBPTiB0MgorRk9SIEVBQ0gg Uk9XIEJFR0lOCitJTlNFUlQgSU5UTyB0MiBWQUxVRVMoMSwgJ11dXV0+PCFbQ0RBVEFbPicpOwor SU5TRVJUIElOVE8gdDIgVkFMVUVTKDIsICc8IVtDREFUQV1dXV0+PCFbQ0RBVEFbPicpOworSU5T RVJUIElOVE8gdDIgVkFMVUVTKDMsICc8IVtDREFUQVsnKTsKK0lOU0VSVCBJTlRPIHQyIFZBTFVF Uyg0LCAnPCA+ICYgXCAiIF8nKTsKK0VORAorXV0+CisJCTwvdHJpZ2dlcj4KKwk8L3RyaWdnZXJz PgorPCEtLSAKKy0KKy0gVGFibGUgc3RydWN0dXJlIGZvciB0YWJsZSBgdjFgCistCisKKyAtLT4K Kwk8dGFibGVfc3RydWN0dXJlIG5hbWU9InYxIj4KKwkJPGZpZWxkIEZpZWxkPSJjMSIgVHlwZT0i aW50KDExKSIgTnVsbD0iWUVTIiBLZXk9IiIgRXh0cmE9IiIgQ29tbWVudD0iIiAvPgorCQk8Zmll bGQgRmllbGQ9ImMyIiBUeXBlPSJ2YXJjaGFyKDIwKSIgTnVsbD0iWUVTIiBLZXk9IiIgRXh0cmE9 IiIgQ29tbWVudD0iIiAvPgorCQk8b3B0aW9ucyBOYW1lPSJ2MSIgQ29tbWVudD0iVklFVyIgLz4K Kwk8L3RhYmxlX3N0cnVjdHVyZT4KKzwhLS0gCistCistIFRhYmxlIHN0cnVjdHVyZSBmb3IgdGFi bGUgYHYyYAorLQorCisgLS0+CisJPHRhYmxlX3N0cnVjdHVyZSBuYW1lPSJ2MiI+CisJCTxmaWVs ZCBGaWVsZD0iYzEiIFR5cGU9ImludCgxMSkiIE51bGw9IllFUyIgS2V5PSIiIEV4dHJhPSIiIENv bW1lbnQ9IiIgLz4KKwkJPG9wdGlvbnMgTmFtZT0idjIiIENvbW1lbnQ9IlZJRVciIC8+CisJPC90 YWJsZV9zdHJ1Y3R1cmU+Cis8IS0tIAorLQorLSBEdW1waW5nIGV2ZW50cyBmb3IgZGF0YWJhc2Ug J0JVRzUyNzkyJworLQorIC0tPgorCTxldmVudHM+CisJCTxldmVudCBFdmVudD0iZTEiIHNxbF9t b2RlPSIiIHRpbWVfem9uZT0iU1lTVEVNIiBjaGFyYWN0ZXJfc2V0X2NsaWVudD0ibGF0aW4xIiBj b2xsYXRpb25fY29ubmVjdGlvbj0ibGF0aW4xX3N3ZWRpc2hfY2kiIERhdGFiYXNlX0NvbGxhdGlv bj0ibGF0aW4xX3N3ZWRpc2hfY2kiPgorPCFbQ0RBVEFbCitDUkVBVEUgRVZFTlQgYGUxYCBPTiBT Q0hFRFVMRSBFVkVSWSAxIFNFQ09ORCBTVEFSVFMgJy0tVElNRS0tJyBPTiBDT01QTEVUSU9OIE5P VCBQUkVTRVJWRSBFTkFCTEUgRE8gRFJPUCBEQVRBQkFTRSBCVUc1Mjc5MgorXV0+CisJCTwvZXZl bnQ+CisJCTxldmVudCBFdmVudD0iZTIiIHNxbF9tb2RlPSIiIHRpbWVfem9uZT0iU1lTVEVNIiBj aGFyYWN0ZXJfc2V0X2NsaWVudD0ibGF0aW4xIiBjb2xsYXRpb25fY29ubmVjdGlvbj0ibGF0aW4x X3N3ZWRpc2hfY2kiIERhdGFiYXNlX0NvbGxhdGlvbj0ibGF0aW4xX3N3ZWRpc2hfY2kiPgorPCFb Q0RBVEFbCitDUkVBVEUgRVZFTlQgYGUyYCBPTiBTQ0hFRFVMRSBFVkVSWSAxIFNFQ09ORCBTVEFS VFMgJy0tVElNRS0tJyBPTiBDT01QTEVUSU9OIE5PVCBQUkVTRVJWRSBFTkFCTEUgRE8gRFJPUCBE QVRBQkFTRSBCVUc1Mjc5MgorXV0+CisJCTwvZXZlbnQ+CisJPC9ldmVudHM+Cis8IS0tIAorLQor LSBEdW1waW5nIHJvdXRpbmVzIGZvciBkYXRhYmFzZSAnQlVHNTI3OTInCistCisgLS0+CisJPHJv dXRpbmVzPgorCQk8cm91dGluZSBGdW5jdGlvbj0iaGVsbG8xIiBzcWxfbW9kZT0iIiBjaGFyYWN0 ZXJfc2V0X2NsaWVudD0ibGF0aW4xIiBjb2xsYXRpb25fY29ubmVjdGlvbj0ibGF0aW4xX3N3ZWRp c2hfY2kiIERhdGFiYXNlX0NvbGxhdGlvbj0ibGF0aW4xX3N3ZWRpc2hfY2kiPgorPCFbQ0RBVEFb CitDUkVBVEUgREVGSU5FUj1gcm9vdGBAYGxvY2FsaG9zdGAgRlVOQ1RJT04gYGhlbGxvMWAocyBD SEFSKDIwKSkgUkVUVVJOUyBjaGFyKDUwKSBDSEFSU0VUIGxhdGluMQorICAgIERFVEVSTUlOSVNU SUMKK1JFVFVSTiBDT05DQVQoJ0hlbGxvLCAnICxzICwnIScpCitdXT4KKwkJPC9yb3V0aW5lPgor CQk8cm91dGluZSBGdW5jdGlvbj0iaGVsbG8yIiBzcWxfbW9kZT0iIiBjaGFyYWN0ZXJfc2V0X2Ns aWVudD0ibGF0aW4xIiBjb2xsYXRpb25fY29ubmVjdGlvbj0ibGF0aW4xX3N3ZWRpc2hfY2kiIERh dGFiYXNlX0NvbGxhdGlvbj0ibGF0aW4xX3N3ZWRpc2hfY2kiPgorPCFbQ0RBVEFbCitDUkVBVEUg REVGSU5FUj1gcm9vdGBAYGxvY2FsaG9zdGAgRlVOQ1RJT04gYGhlbGxvMmAocyBDSEFSKDIwKSkg UkVUVVJOUyBjaGFyKDUwKSBDSEFSU0VUIGxhdGluMQorICAgIERFVEVSTUlOSVNUSUMKK1JFVFVS TiBDT05DQVQoJ11dXV0+PCFbQ0RBVEFbPiwgJyAsIHMgLCchJykKK11dPgorCQk8L3JvdXRpbmU+ CisJCTxyb3V0aW5lIFByb2NlZHVyZT0ic2ltcGxlcHJvYzEiIHNxbF9tb2RlPSIiIGNoYXJhY3Rl cl9zZXRfY2xpZW50PSJsYXRpbjEiIGNvbGxhdGlvbl9jb25uZWN0aW9uPSJsYXRpbjFfc3dlZGlz aF9jaSIgRGF0YWJhc2VfQ29sbGF0aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSI+Cis8IVtDREFUQVsK K0NSRUFURSBERUZJTkVSPWByb290YEBgbG9jYWxob3N0YCBQUk9DRURVUkUgYHNpbXBsZXByb2Mx YChPVVQgcGFyYW0xIElOVCkKK0JFR0lOCitTRUxFQ1QgQ09VTlQoKikgSU5UTyBwYXJhbTEgRlJP TSB0MTsKK0VORAorXV0+CisJCTwvcm91dGluZT4KKwkJPHJvdXRpbmUgUHJvY2VkdXJlPSJzaW1w bGVwcm9jMiIgc3FsX21vZGU9IiIgY2hhcmFjdGVyX3NldF9jbGllbnQ9ImxhdGluMSIgY29sbGF0 aW9uX2Nvbm5lY3Rpb249ImxhdGluMV9zd2VkaXNoX2NpIiBEYXRhYmFzZV9Db2xsYXRpb249Imxh dGluMV9zd2VkaXNoX2NpIj4KKzwhW0NEQVRBWworQ1JFQVRFIERFRklORVI9YHJvb3RgQGBsb2Nh bGhvc3RgIFBST0NFRFVSRSBgc2ltcGxlcHJvYzJgKE9VVCBwYXJhbTEgSU5UKQorQkVHSU4KK1NF TEVDVCBDT1VOVCgqKSBJTlRPIHBhcmFtMSBGUk9NIHQyOworRU5ECitdXT4KKwkJPC9yb3V0aW5l PgorCTwvcm91dGluZXM+Cis8L2RhdGFiYXNlPgorPC9teXNxbGR1bXA+CisKKyMgVGVzdCB0byBj aGVjayAnSW5zdWZmaWNpZW50IHByaXZpbGVnZXMnIGVycm9yLgorCitHUkFOVCBBTEwgUFJJVklM RUdFUyBPTiBCVUc1Mjc5Mi4qIFRPIHVzZXIxOworIyBSdW5uaW5nICdyZXBsYWNlX3JlZ2V4IG9u IHRpbWVzdGFtcCcKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPG15c3FsZHVtcCB4bWxuczp4c2k9 Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIj4KKzxkYXRhYmFzZSBu YW1lPSJCVUc1Mjc5MiI+CisJPHRhYmxlX3N0cnVjdHVyZSBuYW1lPSJ0MSI+CisJCTxmaWVsZCBG aWVsZD0iYzEiIFR5cGU9ImludCgxMSkiIE51bGw9IllFUyIgS2V5PSIiIEV4dHJhPSIiIENvbW1l bnQ9IiIgLz4KKwkJPGZpZWxkIEZpZWxkPSJjMiIgVHlwZT0idmFyY2hhcigyMCkiIE51bGw9IllF UyIgS2V5PSIiIEV4dHJhPSIiIENvbW1lbnQ9IiIgLz4KKwkJPG9wdGlvbnMgTmFtZT0idDEiIEVu Z2luZT0iTXlJU0FNIiBWZXJzaW9uPSIxMCIgUm93X2Zvcm1hdD0iRHluYW1pYyIgUm93cz0iMyIg QXZnX3Jvd19sZW5ndGg9IjIwIiBEYXRhX2xlbmd0aD0iNjAiIE1heF9kYXRhX2xlbmd0aD0iMjgx NDc0OTc2NzEwNjU1IiBJbmRleF9sZW5ndGg9IjEwMjQiIERhdGFfZnJlZT0iMCIgQ3JlYXRlX3Rp bWU9Ii0tVElNRS0tIiBVcGRhdGVfdGltZT0iLS1USU1FLS0iIENvbGxhdGlvbj0ibGF0aW4xX3N3 ZWRpc2hfY2kiIENyZWF0ZV9vcHRpb25zPSIiIENvbW1lbnQ9IiIgLz4KKwk8L3RhYmxlX3N0cnVj dHVyZT4KKwk8dGFibGVfZGF0YSBuYW1lPSJ0MSI+CisJPHJvdz4KKwkJPGZpZWxkIG5hbWU9ImMx Ij4xPC9maWVsZD4KKwkJPGZpZWxkIG5hbWU9ImMyIj5hYWE8L2ZpZWxkPgorCTwvcm93PgorCTxy b3c+CisJCTxmaWVsZCBuYW1lPSJjMSI+MjwvZmllbGQ+CisJCTxmaWVsZCBuYW1lPSJjMiI+YmJi PC9maWVsZD4KKwk8L3Jvdz4KKwk8cm93PgorCQk8ZmllbGQgbmFtZT0iYzEiPjM8L2ZpZWxkPgor CQk8ZmllbGQgbmFtZT0iYzIiPmNjYzwvZmllbGQ+CisJPC9yb3c+CisJPC90YWJsZV9kYXRhPgor CTx0YWJsZV9zdHJ1Y3R1cmUgbmFtZT0idDIiPgorCQk8ZmllbGQgRmllbGQ9ImMxIiBUeXBlPSJp bnQoMTEpIiBOdWxsPSJZRVMiIEtleT0iIiBFeHRyYT0iIiBDb21tZW50PSIiIC8+CisJCTxvcHRp b25zIE5hbWU9InQyIiBFbmdpbmU9Ik15SVNBTSIgVmVyc2lvbj0iMTAiIFJvd19mb3JtYXQ9IkZp eGVkIiBSb3dzPSIzIiBBdmdfcm93X2xlbmd0aD0iNyIgRGF0YV9sZW5ndGg9IjIxIiBNYXhfZGF0 YV9sZW5ndGg9IjE5NzAzMjQ4MzY5NzQ1OTEiIEluZGV4X2xlbmd0aD0iMTAyNCIgRGF0YV9mcmVl PSIwIiBDcmVhdGVfdGltZT0iLS1USU1FLS0iIFVwZGF0ZV90aW1lPSItLVRJTUUtLSIgQ29sbGF0 aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSIgQ3JlYXRlX29wdGlvbnM9IiIgQ29tbWVudD0iIiAvPgor CTwvdGFibGVfc3RydWN0dXJlPgorCTx0YWJsZV9kYXRhIG5hbWU9InQyIj4KKwk8cm93PgorCQk8 ZmllbGQgbmFtZT0iYzEiPjE8L2ZpZWxkPgorCTwvcm93PgorCTxyb3c+CisJCTxmaWVsZCBuYW1l PSJjMSI+MjwvZmllbGQ+CisJPC9yb3c+CisJPHJvdz4KKwkJPGZpZWxkIG5hbWU9ImMxIj4zPC9m aWVsZD4KKwk8L3Jvdz4KKwk8L3RhYmxlX2RhdGE+CisJPHRyaWdnZXJzIG5hbWU9InQyIj4KKwkJ PHRyaWdnZXIgVHJpZ2dlcj0idHJpZzEiIHNxbF9tb2RlPSIiIGNoYXJhY3Rlcl9zZXRfY2xpZW50 PSJsYXRpbjEiIGNvbGxhdGlvbl9jb25uZWN0aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSIgRGF0YWJh c2VfQ29sbGF0aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSI+Cis8IVtDREFUQVsKK0NSRUFURSBERUZJ TkVSPWByb290YEBgbG9jYWxob3N0YCBUUklHR0VSIHRyaWcxIEJFRk9SRSBJTlNFUlQgT04gdDIK K0ZPUiBFQUNIIFJPVyBCRUdJTgorSU5TRVJUIElOVE8gdDIgVkFMVUVTKDEpOworRU5ECitdXT4K KwkJPC90cmlnZ2VyPgorCQk8dHJpZ2dlciBUcmlnZ2VyPSJ0cmlnMiIgc3FsX21vZGU9IiIgY2hh cmFjdGVyX3NldF9jbGllbnQ9ImxhdGluMSIgY29sbGF0aW9uX2Nvbm5lY3Rpb249ImxhdGluMV9z d2VkaXNoX2NpIiBEYXRhYmFzZV9Db2xsYXRpb249ImxhdGluMV9zd2VkaXNoX2NpIj4KKzwhW0NE QVRBWworQ1JFQVRFIERFRklORVI9YHJvb3RgQGBsb2NhbGhvc3RgIFRSSUdHRVIgdHJpZzIgQUZU RVIgSU5TRVJUIE9OIHQyCitGT1IgRUFDSCBST1cgQkVHSU4KK0lOU0VSVCBJTlRPIHQyIFZBTFVF UygxLCAnXV1dXT48IVtDREFUQVs+Jyk7CitJTlNFUlQgSU5UTyB0MiBWQUxVRVMoMiwgJzwhW0NE QVRBXV1dXT48IVtDREFUQVs+Jyk7CitJTlNFUlQgSU5UTyB0MiBWQUxVRVMoMywgJzwhW0NEQVRB WycpOworSU5TRVJUIElOVE8gdDIgVkFMVUVTKDQsICc8ID4gJiBcICIgXycpOworRU5ECitdXT4K KwkJPC90cmlnZ2VyPgorCTwvdHJpZ2dlcnM+CisJPHRhYmxlX3N0cnVjdHVyZSBuYW1lPSJ2MSI+ CisJCTxmaWVsZCBGaWVsZD0iYzEiIFR5cGU9ImludCgxMSkiIE51bGw9IllFUyIgS2V5PSIiIEV4 dHJhPSIiIENvbW1lbnQ9IiIgLz4KKwkJPGZpZWxkIEZpZWxkPSJjMiIgVHlwZT0idmFyY2hhcigy MCkiIE51bGw9IllFUyIgS2V5PSIiIEV4dHJhPSIiIENvbW1lbnQ9IiIgLz4KKwkJPG9wdGlvbnMg TmFtZT0idjEiIENvbW1lbnQ9IlZJRVciIC8+CisJPC90YWJsZV9zdHJ1Y3R1cmU+CisJPHRhYmxl X3N0cnVjdHVyZSBuYW1lPSJ2MiI+CisJCTxmaWVsZCBGaWVsZD0iYzEiIFR5cGU9ImludCgxMSki IE51bGw9IllFUyIgS2V5PSIiIEV4dHJhPSIiIENvbW1lbnQ9IiIgLz4KKwkJPG9wdGlvbnMgTmFt ZT0idjIiIENvbW1lbnQ9IlZJRVciIC8+CisJPC90YWJsZV9zdHJ1Y3R1cmU+CisJPGV2ZW50cz4K KwkJPGV2ZW50IEV2ZW50PSJlMSIgc3FsX21vZGU9IiIgdGltZV96b25lPSJTWVNURU0iIGNoYXJh Y3Rlcl9zZXRfY2xpZW50PSJsYXRpbjEiIGNvbGxhdGlvbl9jb25uZWN0aW9uPSJsYXRpbjFfc3dl ZGlzaF9jaSIgRGF0YWJhc2VfQ29sbGF0aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSI+Cis8IVtDREFU QVsKK0NSRUFURSBFVkVOVCBgZTFgIE9OIFNDSEVEVUxFIEVWRVJZIDEgU0VDT05EIFNUQVJUUyAn LS1USU1FLS0nIE9OIENPTVBMRVRJT04gTk9UIFBSRVNFUlZFIEVOQUJMRSBETyBEUk9QIERBVEFC QVNFIEJVRzUyNzkyCitdXT4KKwkJPC9ldmVudD4KKwkJPGV2ZW50IEV2ZW50PSJlMiIgc3FsX21v ZGU9IiIgdGltZV96b25lPSJTWVNURU0iIGNoYXJhY3Rlcl9zZXRfY2xpZW50PSJsYXRpbjEiIGNv bGxhdGlvbl9jb25uZWN0aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSIgRGF0YWJhc2VfQ29sbGF0aW9u PSJsYXRpbjFfc3dlZGlzaF9jaSI+Cis8IVtDREFUQVsKK0NSRUFURSBFVkVOVCBgZTJgIE9OIFND SEVEVUxFIEVWRVJZIDEgU0VDT05EIFNUQVJUUyAnLS1USU1FLS0nIE9OIENPTVBMRVRJT04gTk9U IFBSRVNFUlZFIEVOQUJMRSBETyBEUk9QIERBVEFCQVNFIEJVRzUyNzkyCitdXT4KKwkJPC9ldmVu dD4KKwk8L2V2ZW50cz4KKwk8cm91dGluZXM+Cis8IS0tIAorLSBpbnN1ZmZpY2llbnQgcHJpdmls ZWdlcyB0byBTSE9XIENSRUFURSBGVU5DVElPTiBgaGVsbG8xYAorIC0tPgorPCEtLSAtIGRvZXMg dXNlcjEgaGF2ZSBwZXJtaXNzaW9ucyBvbiBteXNxbC5wcm9jPworCisgLS0+CitEUk9QIFVTRVIg dXNlcjE7CitEUk9QIERBVEFCQVNFIEJVRzUyNzkyOworIyBVVEYtOAorQ1JFQVRFIERBVEFCQVNF IEJVRzUyNzkyOworVVNFIEJVRzUyNzkyOworU0VUIE5BTUVTIHV0Zjg7CitDUkVBVEUgRlVOQ1RJ T04gYHN0cmHDn2VgICggYzEgQ0hBUigyMCkpCitSRVRVUk5TIENIQVIoNTApIERFVEVSTUlOSVNU SUMKK1JFVFVSTiBDT05DQVQoJ11dPiwgJywgcywgJyEnKTsKKzw/eG1sIHZlcnNpb249IjEuMCI/ PgorPG15c3FsZHVtcCB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1h LWluc3RhbmNlIj4KKzxkYXRhYmFzZSBuYW1lPSJCVUc1Mjc5MiI+CisJPHJvdXRpbmVzPgorCQk8 cm91dGluZSBGdW5jdGlvbj0ic3RyYcOfZSIgc3FsX21vZGU9IiIgY2hhcmFjdGVyX3NldF9jbGll bnQ9InV0ZjgiIGNvbGxhdGlvbl9jb25uZWN0aW9uPSJ1dGY4X2dlbmVyYWxfY2kiIERhdGFiYXNl X0NvbGxhdGlvbj0ibGF0aW4xX3N3ZWRpc2hfY2kiPgorPCFbQ0RBVEFbCitDUkVBVEUgREVGSU5F Uj1gcm9vdGBAYGxvY2FsaG9zdGAgRlVOQ1RJT04gYHN0cmHDn2VgKCBjMSBDSEFSKDIwKSkgUkVU VVJOUyBjaGFyKDUwKSBDSEFSU0VUIGxhdGluMQorICAgIERFVEVSTUlOSVNUSUMKK1JFVFVSTiBD T05DQVQoJ11dXV0+PCFbQ0RBVEFbPiwgJywgcywgJyEnKQorXV0+CisJCTwvcm91dGluZT4KKwk8 L3JvdXRpbmVzPgorPC9kYXRhYmFzZT4KKzwvbXlzcWxkdW1wPgorRFJPUCBEQVRBQkFTRSBCVUc1 Mjc5MjsKK1VTRSB0ZXN0OworIwogIyBFbmQgb2YgNS4xIHRlc3RzCiAjCgo9PT0gbW9kaWZpZWQg ZmlsZSAnbXlzcWwtdGVzdC90L215c3FsZHVtcC50ZXN0JwotLS0gYS9teXNxbC10ZXN0L3QvbXlz cWxkdW1wLnRlc3QJMjAxMS0wMy0xNyAxMDo1ODoxNiArMDAwMAorKysgYi9teXNxbC10ZXN0L3Qv bXlzcWxkdW1wLnRlc3QJMjAxMi0wMS0xMCAwODowMzo0NSArMDAwMApAQCAtMjE5Nyw2ICsyMTk3 LDExOCBAQCBEUk9QIERBVEFCQVNFIGB0ZXN0LWRhdGFiYXNlYDsKIFVTRSBgdGVzdGA7CiAKIC0t ZWNobyAjCistLWVjaG8gIyBCVUcjMTE3NjAzODQgOiA1Mjc5MjogbXlzcWxkdW1wIGluIFhNTCBt b2RlIGRvZXMgbm90IGR1bXAgcm91dGluZXMuCistLWVjaG8gIworQ1JFQVRFIERBVEFCQVNFIEJV RzUyNzkyOworVVNFIEJVRzUyNzkyOworQ1JFQVRFIFRBQkxFIHQxIChjMSBJTlQsIGMyIFZBUkNI QVIoMjApKTsKK0NSRUFURSBUQUJMRSB0MiAoYzEgSU5UKTsKK0lOU0VSVCBJTlRPIHQxIFZBTFVF UyAoMSwgJ2FhYScpLCAoMiwgJ2JiYicpLCAoMywgJ2NjYycpOworSU5TRVJUIElOVE8gdDIgVkFM VUVTICgxKSwoMiksKDMpOworCistLWVjaG8gIyBTdG9yZWQgUHJvY2VkdXJlcy4KKworREVMSU1J VEVSIC8vOworQ1JFQVRFIFBST0NFRFVSRSBzaW1wbGVwcm9jMSAoT1VUIHBhcmFtMSBJTlQpCitC RUdJTgorICBTRUxFQ1QgQ09VTlQoKikgSU5UTyBwYXJhbTEgRlJPTSB0MTsKK0VORC8vCitERUxJ TUlURVIgOy8vCisKK0RFTElNSVRFUiAvLzsKK0NSRUFURSBQUk9DRURVUkUgc2ltcGxlcHJvYzIg KE9VVCBwYXJhbTEgSU5UKQorQkVHSU4KKyAgU0VMRUNUIENPVU5UKCopIElOVE8gcGFyYW0xIEZS T00gdDI7CitFTkQvLworREVMSU1JVEVSIDsvLworCistLWVjaG8gIyBFdmVudHMuCisKK0NSRUFU RSBFVkVOVCBlMSBPTiBTQ0hFRFVMRSBFVkVSWSAxIFNFQ09ORCBETyBEUk9QIERBVEFCQVNFIEJV RzUyNzkyOworQ1JFQVRFIEVWRU5UIGUyIE9OIFNDSEVEVUxFIEVWRVJZIDEgU0VDT05EIERPIERS T1AgREFUQUJBU0UgQlVHNTI3OTI7CisKKy0tZWNobyAjIEZ1bmN0aW9ucy4KKworQ1JFQVRFIEZV TkNUSU9OIGBoZWxsbzFgIChzIENIQVIoMjApKQorICBSRVRVUk5TIENIQVIoNTApIERFVEVSTUlO SVNUSUMKK1JFVFVSTiBDT05DQVQoJ0hlbGxvLCAnICxzICwnIScpOworCitDUkVBVEUgRlVOQ1RJ T04gYGhlbGxvMmAgKHMgQ0hBUigyMCkpCisgICAgUkVUVVJOUyBDSEFSKDUwKSBERVRFUk1JTklT VElDCitSRVRVUk4gQ09OQ0FUKCddXT4sICcgLCBzICwnIScpOworCistLWVjaG8gIyBUcmlnZ2Vy cy4KKworREVMSU1JVEVSIHw7CitDUkVBVEUgVFJJR0dFUiB0cmlnMSBCRUZPUkUgSU5TRVJUIE9O IHQyCisgIEZPUiBFQUNIIFJPVyBCRUdJTgorICAgIElOU0VSVCBJTlRPIHQyIFZBTFVFUygxKTsK K0VORDsKK3wKK0RFTElNSVRFUiA7fAorCitERUxJTUlURVIgfDsKK0NSRUFURSBUUklHR0VSIHRy aWcyIEFGVEVSIElOU0VSVCBPTiB0MgorICBGT1IgRUFDSCBST1cgQkVHSU4KKyAgICBJTlNFUlQg SU5UTyB0MiBWQUxVRVMoMSwgJ11dPicpOworICAgIElOU0VSVCBJTlRPIHQyIFZBTFVFUygyLCAn PCFbQ0RBVEFdXT4nKTsKKyAgICBJTlNFUlQgSU5UTyB0MiBWQUxVRVMoMywgJzwhW0NEQVRBWycp OworICAgIElOU0VSVCBJTlRPIHQyIFZBTFVFUyg0LCAnPCA+ICYgXCAiIF8nKTsKK0VORDsKK3wK K0RFTElNSVRFUiA7fAorCistLWVjaG8gIyBWaWV3cworCitDUkVBVEUgVklFVyB2MSBBUyBTRUxF Q1QgKiBGUk9NIHQxOworQ1JFQVRFIFZJRVcgdjIgQVMgU0VMRUNUICogRlJPTSB0MjsKKy0tZWNo bworLS1lY2hvICMgRHVtcGluZyBCVUc1Mjc5MiBkYXRhYmFzZSBpbiB4bWwgZm9ybWF0LgorLS1l Y2hvCistLWVjaG8gIyBSdW5uaW5nICdyZXBsYWNlX3JlZ2V4IG9uIHRpbWVzdGFtcCcKKy0tcmVw bGFjZV9yZWdleCAvWzAtOV17NH0tWzAtOV17Mn0tWzAtOV17Mn0gWzAtOV17Mn06WzAtOV17Mn06 WzAtOV17Mn0vLS1USU1FLS0vCistLWV4ZWMgJE1ZU1FMX0RVTVAgLS11c2VyPXJvb3QgLS1jb21w YWN0IC1SIC1FIC0tdHJpZ2dlcnMgLVggQlVHNTI3OTIKKy0tZWNobworLS1lY2hvICMgRHVtcGlu ZyBCVUc1Mjc5MiBkYXRhYmFzZSBpbiB4bWwgZm9ybWF0IHdpdGggY29tbWVudHMuCistLWVjaG8K Ky0tZWNobyAjIFJ1bm5pbmcgJ3JlcGxhY2VfcmVnZXggb24gdGltZXN0YW1wJworLS1yZXBsYWNl X3JlZ2V4IC9bMC05XXs0fS1bMC05XXsyfS1bMC05XXsyfSBbMC05XXsyfTpbMC05XXsyfTpbMC05 XXsyfS8tLVRJTUUtLS8KKy0tZXhlYyAkTVlTUUxfRFVNUCAtLWNvbW1lbnRzIC0tdXNlcj1yb290 IC1SIC1FIC0tdHJpZ2dlcnMgLVggQlVHNTI3OTIKKworLS1lY2hvCistLWVjaG8gIyBUZXN0IHRv IGNoZWNrICdJbnN1ZmZpY2llbnQgcHJpdmlsZWdlcycgZXJyb3IuCistLWVjaG8KKworR1JBTlQg QUxMIFBSSVZJTEVHRVMgT04gQlVHNTI3OTIuKiBUTyB1c2VyMTsKKworY29ubmVjdCAoY29ubl8x LCBsb2NhbGhvc3QsIHVzZXIxLCAsIEJVRzUyNzkyLCAkTUFTVEVSX01ZUE9SVCwgJE1BU1RFUl9N WVNPQ0spOworY29ubmVjdGlvbiBjb25uXzE7CisKKy0tZWNobyAjIFJ1bm5pbmcgJ3JlcGxhY2Vf cmVnZXggb24gdGltZXN0YW1wJworLS1yZXBsYWNlX3JlZ2V4IC9bMC05XXs0fS1bMC05XXsyfS1b MC05XXsyfSBbMC05XXsyfTpbMC05XXsyfTpbMC05XXsyfS8tLVRJTUUtLS8KKy0tZXJyb3IgMgor LS1leGVjICRNWVNRTF9EVU1QIC0tdXNlcj11c2VyMSAtUiAtRSAtLXRyaWdnZXJzIC1YIEJVRzUy NzkyCisKK2Nvbm5lY3Rpb24gZGVmYXVsdDsKK2Rpc2Nvbm5lY3QgY29ubl8xOworCitEUk9QIFVT RVIgdXNlcjE7CitEUk9QIERBVEFCQVNFIEJVRzUyNzkyOworLS1lY2hvICMgVVRGLTgKK0NSRUFU RSBEQVRBQkFTRSBCVUc1Mjc5MjsKK1VTRSBCVUc1Mjc5MjsKK1NFVCBOQU1FUyB1dGY4OworQ1JF QVRFIEZVTkNUSU9OIGBzdHJhw59lYCAoIGMxIENIQVIoMjApKQorICBSRVRVUk5TIENIQVIoNTAp IERFVEVSTUlOSVNUSUMKK1JFVFVSTiBDT05DQVQoJ11dPiwgJywgcywgJyEnKTsKKworLS1leGVj ICRNWVNRTF9EVU1QIC0tY2hhcmFjdGVyLXNldHMtZGlyPSRDSEFSU0VUU0RJUiAtLXNraXAtY29t bWVudHMgLS1kZWZhdWx0LWNoYXJhY3Rlci1zZXQ9dXRmOCAtLWNvbXBhdGlibGU9bXlzcWwzMjMg LVIgLVggQlVHNTI3OTIKKworRFJPUCBEQVRBQkFTRSBCVUc1Mjc5MjsKKworVVNFIHRlc3Q7CisK Ky0tZWNobyAjCiAtLWVjaG8gIyBFbmQgb2YgNS4xIHRlc3RzCiAtLWVjaG8gIwogCgpObyBidW5k bGUgKHJlYXNvbjogdXNlbGVzcyBmb3IgcHVzaCBlbWFpbHMpLg==