From: Nirbhay Choubey Date: January 10 2012 10:53am Subject: bzr push into mysql-5.5 branch (nirbhay.choubey:3679 to 3680) Bug#11760384 List-Archive: http://lists.mysql.com/commits/142357 X-Bug: 11760384 Message-Id: <201201101053.q0AArWdu014680@acsmt358.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDM2ODAgTmlyYmhheSBDaG91YmV5CTIwMTItMDEtMTAgW21lcmdlXQogICAgICBNZXJnZSBvZiBm aXggZm9yIGJ1ZyMxMTc2MDM4NCBmcm9tIG15c3FsLTUuMS4KCiAgICBtb2RpZmllZDoKICAgICAg Y2xpZW50L215c3FsZHVtcC5jCiAgICAgIG15c3FsLXRlc3Qvci9teXNxbGR1bXAucmVzdWx0CiAg ICAgIG15c3FsLXRlc3QvdC9teXNxbGR1bXAudGVzdAogMzY3OSBTbmVoYSBNb2RpCTIwMTItMDEt MTAKICAgICAgQnVnIzExNzQ4NTcyOiBBTExPQ0FUSU5HIEEgTEFSR0UgUVVFUlkgQ0FDSEUgSVMg Tk9UIERFVEVSTUlOSVNUSUMKICAgICAgCiAgICAgIE1vdmluZyBxdWVyeV9jYWNoZV9zaXplX2Jh c2ljXzMyLnRlc3QgYW5kIHF1ZXJ5X2NhY2hlX3NpemVfYmFzaWNfNjQudGVzdCBmcm9tIGV4cGVy aW1lbnRhbAogICAgICB0byBkaXNhYmxlZCBhcyBhIHNvbHV0aW9uIGhhcyBzdGlsbCBub3QgYmVl biBmb3VuZC4KCiAgICBtb2RpZmllZDoKICAgICAgbXlzcWwtdGVzdC9jb2xsZWN0aW9ucy9kZWZh dWx0LmV4cGVyaW1lbnRhbAogICAgICBteXNxbC10ZXN0L3N1aXRlL3N5c192YXJzL3QvZGlzYWJs ZWQuZGVmCj09PSBtb2RpZmllZCBmaWxlICdjbGllbnQvbXlzcWxkdW1wLmMnCi0tLSBhL2NsaWVu dC9teXNxbGR1bXAuYwkyMDExLTEyLTI0IDA5OjM4OjU5ICswMDAwCisrKyBiL2NsaWVudC9teXNx bGR1bXAuYwkyMDEyLTAxLTEwIDEwOjQwOjQ4ICswMDAwCkBAIC03Nyw2ICs3Nyw5IEBACiAvKiBT aXplIG9mIGJ1ZmZlciBmb3IgZHVtcCdzIHNlbGVjdCBxdWVyeSAqLwogI2RlZmluZSBRVUVSWV9M RU5HVEggMTUzNgogCisvKiBTaXplIG9mIGNvbW1lbnQgYnVmZmVyLiAqLworI2RlZmluZSBDT01N RU5UX0xFTkdUSCAyMDQ4CisKIC8qIGlnbm9yZSB0YWJsZSBmbGFncyAqLwogI2RlZmluZSBJR05P UkVfTk9ORSAweDAwIC8qIG5vIGlnbm9yZSAqLwogI2RlZmluZSBJR05PUkVfREFUQSAweDAxIC8q IGRvbid0IGR1bXAgZGF0YSBmb3IgdGhpcyB0YWJsZSAqLwpAQCAtMTA1LDcgKzEwOCw3IEBAIHN0 YXRpYyBteV9ib29sICB2ZXJib3NlPSAwLCBvcHRfbm9fY3JlYXQKICAgICAgICAgICAgICAgICBv cHRfZHVtcF90cmlnZ2Vycz0gMCwgb3B0X3JvdXRpbmVzPTAsIG9wdF90el91dGM9MSwKICAgICAg ICAgICAgICAgICBvcHRfc2xhdmVfYXBwbHk9IDAsIAogICAgICAgICAgICAgICAgIG9wdF9pbmNs dWRlX21hc3Rlcl9ob3N0X3BvcnQ9IDAsCi0gICAgICAgICAgICAgICAgb3B0X2V2ZW50cz0gMCwK KyAgICAgICAgICAgICAgICBvcHRfZXZlbnRzPSAwLCBvcHRfY29tbWVudHNfdXNlZD0gMCwKICAg ICAgICAgICAgICAgICBvcHRfYWxsdHNwY3M9MCwgb3B0X25vdHNwY3M9IDA7CiBzdGF0aWMgbXlf Ym9vbCBpbnNlcnRfcGF0X2luaXRlZD0gMCwgZGVidWdfaW5mb19mbGFnPSAwLCBkZWJ1Z19jaGVj a19mbGFnPSAwOwogc3RhdGljIHVsb25nIG9wdF9tYXhfYWxsb3dlZF9wYWNrZXQsIG9wdF9uZXRf YnVmZmVyX2xlbmd0aDsKQEAgLTUzOSw2ICs1NDIsOCBAQCBzdGF0aWMgaW50IGR1bXBfYWxsX3Rh Ymxlc3BhY2VzKCk7CiBzdGF0aWMgaW50IGR1bXBfdGFibGVzcGFjZXNfZm9yX3RhYmxlcyhjaGFy ICpkYiwgY2hhciAqKnRhYmxlX25hbWVzLCBpbnQgdGFibGVzKTsKIHN0YXRpYyBpbnQgZHVtcF90 YWJsZXNwYWNlc19mb3JfZGF0YWJhc2VzKGNoYXIqKiBkYXRhYmFzZXMpOwogc3RhdGljIGludCBk dW1wX3RhYmxlc3BhY2VzKGNoYXIqIHRzX3doZXJlKTsKK3N0YXRpYyB2b2lkIHByaW50X2NvbW1l bnQoRklMRSAqc3FsX2ZpbGUsIG15X2Jvb2wgaXNfZXJyb3IsIGNvbnN0IGNoYXIgKmZvcm1hdCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTsKIAogCiAvKgpAQCAtNjMzLDE5ICs2Mzgs MTkgQEAgc3RhdGljIHZvaWQgd3JpdGVfaGVhZGVyKEZJTEUgKnNxbF9maWxlLAogICB9CiAgIGVs c2UgaWYgKCFvcHRfY29tcGFjdCkKICAgewotICAgIGlmIChvcHRfY29tbWVudHMpCi0gICAgewot ICAgICAgZnByaW50ZihzcWxfZmlsZSwKLSAgICAgICAgICAgICAgIi0tIE15U1FMIGR1bXAgJXMg IERpc3RyaWIgJXMsIGZvciAlcyAoJXMpXG4tLVxuIiwKLSAgICAgICAgICAgICAgRFVNUF9WRVJT SU9OLCBNWVNRTF9TRVJWRVJfVkVSU0lPTiwgU1lTVEVNX1RZUEUsIE1BQ0hJTkVfVFlQRSk7Ci0g ICAgICBmcHJpbnRmKHNxbF9maWxlLCAiLS0gSG9zdDogJXMgICAgRGF0YWJhc2U6ICVzXG4iLAot ICAgICAgICAgICAgICBjdXJyZW50X2hvc3QgPyBjdXJyZW50X2hvc3QgOiAibG9jYWxob3N0Iiwg ZGJfbmFtZSA/IGRiX25hbWUgOgotICAgICAgICAgICAgICAiIik7Ci0gICAgICBmcHV0cygiLS0g LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4i LAotICAgICAgICAgICAgc3FsX2ZpbGUpOwotICAgICAgZnByaW50ZihzcWxfZmlsZSwgIi0tIFNl cnZlciB2ZXJzaW9uXHQlc1xuIiwKLSAgICAgICAgICAgICAgbXlzcWxfZ2V0X3NlcnZlcl9pbmZv KCZteXNxbF9jb25uZWN0aW9uKSk7Ci0gICAgfQorICAgIHByaW50X2NvbW1lbnQoc3FsX2ZpbGUs IDAsCisgICAgICAgICAgICAgICAgICAiLS0gTXlTUUwgZHVtcCAlcyAgRGlzdHJpYiAlcywgZm9y ICVzICglcylcbi0tXG4iLAorICAgICAgICAgICAgICAgICAgRFVNUF9WRVJTSU9OLCBNWVNRTF9T RVJWRVJfVkVSU0lPTiwgU1lTVEVNX1RZUEUsCisgICAgICAgICAgICAgICAgICBNQUNISU5FX1RZ UEUpOworICAgIHByaW50X2NvbW1lbnQoc3FsX2ZpbGUsIDAsICItLSBIb3N0OiAlcyAgICBEYXRh YmFzZTogJXNcbiIsCisgICAgICAgICAgICAgICAgICBjdXJyZW50X2hvc3QgPyBjdXJyZW50X2hv c3QgOiAibG9jYWxob3N0IiwKKyAgICAgICAgICAgICAgICAgIGRiX25hbWUgPyBkYl9uYW1lIDog IiIpOworICAgIHByaW50X2NvbW1lbnQoc3FsX2ZpbGUsIDAsCisgICAgICAgICAgICAgICAgICAi LS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t XG4iCisgICAgICAgICAgICAgICAgICk7CisgICAgcHJpbnRfY29tbWVudChzcWxfZmlsZSwgMCwg Ii0tIFNlcnZlciB2ZXJzaW9uXHQlc1xuIiwKKyAgICAgICAgICAgICAgICAgIG15c3FsX2dldF9z ZXJ2ZXJfaW5mbygmbXlzcWxfY29ubmVjdGlvbikpOworCiAgICAgaWYgKG9wdF9zZXRfY2hhcnNl dCkKICAgICAgIGZwcmludGYoc3FsX2ZpbGUsCiAiXG4vKiE0MDEwMSBTRVQgQE9MRF9DSEFSQUNU RVJfU0VUX0NMSUVOVD1AQENIQVJBQ1RFUl9TRVRfQ0xJRU5UICovOyIKQEAgLTcwMywxOCArNzA4 LDE2IEBAIHN0YXRpYyB2b2lkIHdyaXRlX2Zvb3RlcihGSUxFICpzcWxfZmlsZSkKICAgICBmcHJp bnRmKHNxbF9maWxlLAogICAgICAgICAgICAgIi8qITQwMTExIFNFVCBTUUxfTk9URVM9QE9MRF9T UUxfTk9URVMgKi87XG4iKTsKICAgICBmcHV0cygiXG4iLCBzcWxfZmlsZSk7Ci0gICAgaWYgKG9w dF9jb21tZW50cykKKworICAgIGlmIChvcHRfZHVtcF9kYXRlKQogICAgIHsKLSAgICAgIGlmIChv cHRfZHVtcF9kYXRlKQotICAgICAgewotICAgICAgICBjaGFyIHRpbWVfc3RyWzIwXTsKLSAgICAg ICAgZ2V0X2RhdGUodGltZV9zdHIsIEdFVERBVEVfREFURV9USU1FLCAwKTsKLSAgICAgICAgZnBy aW50ZihzcWxfZmlsZSwgIi0tIER1bXAgY29tcGxldGVkIG9uICVzXG4iLAotICAgICAgICAgICAg ICAgIHRpbWVfc3RyKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICAgZnByaW50ZihzcWxf ZmlsZSwgIi0tIER1bXAgY29tcGxldGVkXG4iKTsKKyAgICAgIGNoYXIgdGltZV9zdHJbMjBdOwor ICAgICAgZ2V0X2RhdGUodGltZV9zdHIsIEdFVERBVEVfREFURV9USU1FLCAwKTsKKyAgICAgIHBy aW50X2NvbW1lbnQoc3FsX2ZpbGUsIDAsICItLSBEdW1wIGNvbXBsZXRlZCBvbiAlc1xuIiwgdGlt ZV9zdHIpOwogICAgIH0KKyAgICBlbHNlCisgICAgICBwcmludF9jb21tZW50KHNxbF9maWxlLCAw LCAiLS0gRHVtcCBjb21wbGV0ZWRcbiIpOworCiAgICAgY2hlY2tfaW8oc3FsX2ZpbGUpOwogICB9 CiB9IC8qIHdyaXRlX2Zvb3RlciAqLwpAQCAtNzg4LDYgKzc5MSw5IEBAIGdldF9vbmVfb3B0aW9u KGludCBvcHRpZCwgY29uc3Qgc3RydWN0IG0KICAgICBleHRlbmRlZF9pbnNlcnQ9IG9wdF9kcm9w PSBvcHRfbG9jaz0KICAgICAgIG9wdF9kaXNhYmxlX2tleXM9IG9wdF9hdXRvY29tbWl0PSBvcHRf Y3JlYXRlX2RiPSAwOwogICAgIGJyZWFrOworICBjYXNlICdpJzoKKyAgICBvcHRfY29tbWVudHNf dXNlZD0gMTsKKyAgICBicmVhazsKICAgY2FzZSAnSSc6CiAgIGNhc2UgJz8nOgogICAgIHVzYWdl KCk7CkBAIC04MDksMTEgKzgxNSwxMiBAQCBnZXRfb25lX29wdGlvbihpbnQgb3B0aWQsIGNvbnN0 IHN0cnVjdCBtCiAgICAgICBvcHRfZGlzYWJsZV9rZXlzPSBsb2NrX3RhYmxlcz0gb3B0X3NldF9j aGFyc2V0PSAwOwogICAgIGJyZWFrOwogICBjYXNlIChpbnQpIE9QVF9DT01QQUNUOgotICBpZiAo b3B0X2NvbXBhY3QpCi0gIHsKLSAgICBvcHRfY29tbWVudHM9IG9wdF9kcm9wPSBvcHRfZGlzYWJs ZV9rZXlzPSBvcHRfbG9jaz0gMDsKLSAgICBvcHRfc2V0X2NoYXJzZXQ9IDA7Ci0gIH0KKyAgICBp ZiAob3B0X2NvbXBhY3QpCisgICAgeworICAgICAgIG9wdF9jb21tZW50cz0gb3B0X2Ryb3A9IG9w dF9kaXNhYmxlX2tleXM9IG9wdF9sb2NrPSAwOworICAgICAgIG9wdF9zZXRfY2hhcnNldD0gMDsK KyAgICB9CisgICAgYnJlYWs7CiAgIGNhc2UgKGludCkgT1BUX1RBQkxFUzoKICAgICBvcHRfZGF0 YWJhc2VzPTA7CiAgICAgYnJlYWs7CkBAIC0xNjM3LDIwICsxNjQ0LDIwIEBAIHN0YXRpYyBjaGFy ICpxdW90ZV9mb3JfbGlrZShjb25zdCBjaGFyICoKIH0KIAogCi0vKgorLyoqCiAgIFF1b3RlIGFu ZCBwcmludCBhIHN0cmluZy4KIAotICBTWU5PUFNJUwotICAgIHByaW50X3F1b3RlZF94bWwoKQot ICAgIHhtbF9maWxlICAgIC0gb3V0cHV0IGZpbGUKLSAgICBzdHIgICAgICAgICAtIHN0cmluZyB0 byBwcmludAotICAgIGxlbiAgICAgICAgIC0gaXRzIGxlbmd0aAorICBAcGFyYW0geG1sX2ZpbGUg ICAgICAgICAgLSBPdXRwdXQgZmlsZS4KKyAgQHBhcmFtIHN0ciAgICAgICAgICAgICAgIC0gU3Ry aW5nIHRvIHByaW50LgorICBAcGFyYW0gbGVuICAgICAgICAgICAgICAgLSBJdHMgbGVuZ3RoLgor ICBAcGFyYW0gaXNfYXR0cmlidXRlX25hbWUgLSBBIGNoZWNrIGZvciBhdHRyaWJ1dGUgbmFtZSBv ciB2YWx1ZS4KIAotICBERVNDUklQVElPTgorICBAZGVzY3JpcHRpb24KICAgICBRdW90ZSAnPCcg Jz4nICcmJyAnXCInIGNoYXJzIGFuZCBwcmludCBhIHN0cmluZyB0byB0aGUgeG1sX2ZpbGUuCiAq LwogCi1zdGF0aWMgdm9pZCBwcmludF9xdW90ZWRfeG1sKEZJTEUgKnhtbF9maWxlLCBjb25zdCBj aGFyICpzdHIsIHVsb25nIGxlbikKK3N0YXRpYyB2b2lkIHByaW50X3F1b3RlZF94bWwoRklMRSAq eG1sX2ZpbGUsIGNvbnN0IGNoYXIgKnN0ciwgdWxvbmcgbGVuLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBteV9ib29sIGlzX2F0dHJpYnV0ZV9uYW1lKQogewogICBjb25zdCBjaGFyICpl bmQ7CiAKQEAgLTE2NjksNiArMTY3NiwxNCBAQCBzdGF0aWMgdm9pZCBwcmludF9xdW90ZWRfeG1s KEZJTEUgKnhtbF9mCiAgICAgY2FzZSAnXCInOgogICAgICAgZnB1dHMoIiZxdW90OyIsIHhtbF9m aWxlKTsKICAgICAgIGJyZWFrOworICAgIGNhc2UgJyAnOgorICAgICAgLyogQXR0cmlidXRlIG5h bWVzIGNhbm5vdCBjb250YWluIHNwYWNlcy4gKi8KKyAgICAgIGlmIChpc19hdHRyaWJ1dGVfbmFt ZSkKKyAgICAgIHsKKyAgICAgICAgZnB1dHMoIl8iLCB4bWxfZmlsZSk7CisgICAgICAgIGJyZWFr OworICAgICAgfQorICAgICAgLyogZmFsbCB0aHJvdWdoICovCiAgICAgZGVmYXVsdDoKICAgICAg IGZwdXRjKCpzdHIsIHhtbF9maWxlKTsKICAgICAgIGJyZWFrOwpAQCAtMTcyOSw3ICsxNzQ0LDcg QEAgc3RhdGljIHZvaWQgcHJpbnRfeG1sX3RhZyhGSUxFICogeG1sX2ZpbAogICAgIGZwdXRzKGF0 dHJpYnV0ZV9uYW1lLCB4bWxfZmlsZSk7ICAgIAogICAgIGZwdXRjKCdcIicsIHhtbF9maWxlKTsK ICAgICAKLSAgICBwcmludF9xdW90ZWRfeG1sKHhtbF9maWxlLCBhdHRyaWJ1dGVfdmFsdWUsIHN0 cmxlbihhdHRyaWJ1dGVfdmFsdWUpKTsKKyAgICBwcmludF9xdW90ZWRfeG1sKHhtbF9maWxlLCBh dHRyaWJ1dGVfdmFsdWUsIHN0cmxlbihhdHRyaWJ1dGVfdmFsdWUpLCAwKTsKICAgICBmcHV0Yygn XCInLCB4bWxfZmlsZSk7CiAKICAgICBhdHRyaWJ1dGVfbmFtZT0gdmFfYXJnKGFyZ19saXN0LCBj aGFyICopOwpAQCAtMTc2OSwxMyArMTc4NCw1MiBAQCBzdGF0aWMgdm9pZCBwcmludF94bWxfbnVs bF90YWcoRklMRSAqIHhtCiAgIGZwdXRzKCI8IiwgeG1sX2ZpbGUpOwogICBmcHV0cyhzdGFnX2F0 ciwgeG1sX2ZpbGUpOwogICBmcHV0cygiXCIiLCB4bWxfZmlsZSk7Ci0gIHByaW50X3F1b3RlZF94 bWwoeG1sX2ZpbGUsIHN2YWwsIHN0cmxlbihzdmFsKSk7CisgIHByaW50X3F1b3RlZF94bWwoeG1s X2ZpbGUsIHN2YWwsIHN0cmxlbihzdmFsKSwgMCk7CiAgIGZwdXRzKCJcIiB4c2k6bmlsPVwidHJ1 ZVwiIC8+IiwgeG1sX2ZpbGUpOwogICBmcHV0cyhsaW5lX2VuZCwgeG1sX2ZpbGUpOwogICBjaGVj a19pbyh4bWxfZmlsZSk7CiB9CiAKIAorLyoqCisgIFByaW50IHhtbCBDREFUQSBzZWN0aW9uLgor CisgIEBwYXJhbSB4bWxfZmlsZSAgICAtIG91dHB1dCBmaWxlCisgIEBwYXJhbSBzdHIgICAgICAg ICAtIHN0cmluZyB0byBwcmludAorICBAcGFyYW0gbGVuICAgICAgICAgLSBsZW5ndGggb2YgdGhl IHN0cmluZworCisgIEBub3RlCisgICAgVGhpcyBmdW5jdGlvbiBhbHNvIHRha2VzIGNhcmUgb2Yg dGhlIHByZXNlbmNlIG9mICdbWz4nCisgICAgc3RyaW5nIGluIHRoZSBzdHIuIElmIGZvdW5kLCB0 aGUgQ0RBVEEgc2VjdGlvbiBpcyBicm9rZW4KKyAgICBpbnRvIHR3byBDREFUQSBzZWN0aW9ucywg PCFbQ0RBVEFbXV1dXT4gYW5kIDwhW0NEQVRBWz5dXS4KKyovCisKK3N0YXRpYyB2b2lkIHByaW50 X3htbF9jZGF0YShGSUxFICp4bWxfZmlsZSwgY29uc3QgY2hhciAqc3RyLCB1bG9uZyBsZW4pCit7 CisgIGNvbnN0IGNoYXIgKmVuZDsKKworICBmcHV0cygiPCFbQ0RBVEFbXG4iLCB4bWxfZmlsZSk7 CisgIGZvciAoZW5kPSBzdHIgKyBsZW47IHN0ciAhPSBlbmQ7IHN0cisrKQorICB7CisgICAgc3dp dGNoKCpzdHIpIHsKKyAgICBjYXNlICddJzoKKyAgICAgIGlmICgoKihzdHIgKyAxKSA9PSAnXScp ICYmICgqKHN0ciArIDIpID09Jz4nKSkKKyAgICAgIHsKKyAgICAgICAgZnB1dHMoIl1dXV0+PCFb Q0RBVEFbPiIsIHhtbF9maWxlKTsKKyAgICAgICAgc3RyICs9IDI7CisgICAgICAgIGNvbnRpbnVl OworICAgICAgfQorICAgICAgLyogZmFsbCB0aHJvdWdoICovCisgICAgZGVmYXVsdDoKKyAgICAg IGZwdXRjKCpzdHIsIHhtbF9maWxlKTsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgfQorICBmcHV0 cygiXG5dXT5cbiIsIHhtbF9maWxlKTsKKyAgY2hlY2tfaW8oeG1sX2ZpbGUpOworfQorCisKIC8q CiAgIFByaW50IHhtbCB0YWcgd2l0aCBtYW55IGF0dHJpYnV0ZXMuCiAKQEAgLTE3ODUsNiArMTgz OSw3IEBAIHN0YXRpYyB2b2lkIHByaW50X3htbF9udWxsX3RhZyhGSUxFICogeG0KICAgICByb3df bmFtZSAgICAtIHhtbCB0YWcgbmFtZQogICAgIHRhYmxlUmVzICAgIC0gcXVlcnkgcmVzdWx0CiAg ICAgcm93ICAgICAgICAgLSByZXN1bHQgcm93CisgICAgc3RyX2NyZWF0ZSAgLSBjcmVhdGUgc3Rh dGVtZW50IGhlYWRlciBzdHJpbmcKIAogICBERVNDUklQVElPTgogICAgIFByaW50IHRhZyB3aXRo IG1hbnkgYXR0cmlidXRlIHRvIHRoZSB4bWxfZmlsZS4gRm9ybWF0IGlzOgpAQCAtMTc5NCw5ICsx ODQ5LDEzIEBAIHN0YXRpYyB2b2lkIHByaW50X3htbF9udWxsX3RhZyhGSUxFICogeG0KICovCiAK IHN0YXRpYyB2b2lkIHByaW50X3htbF9yb3coRklMRSAqeG1sX2ZpbGUsIGNvbnN0IGNoYXIgKnJv d19uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICBNWVNRTF9SRVMgKnRhYmxlUmVzLCBN WVNRTF9ST1cgKnJvdykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTVlTUUxfUkVTICp0YWJs ZVJlcywgTVlTUUxfUk9XICpyb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo YXIgKnN0cl9jcmVhdGUpCiB7CiAgIHVpbnQgaTsKKyAgbXlfYm9vbCBib2R5X2ZvdW5kPSAwOwor ICBjaGFyICpjcmVhdGVfc3RtdF9wdHI7CisgIHVsb25nIGNyZWF0ZV9zdG10X2xlbj0gMDsKICAg TVlTUUxfRklFTEQgKmZpZWxkOwogICB1bG9uZyAqbGVuZ3Rocz0gbXlzcWxfZmV0Y2hfbGVuZ3Ro cyh0YWJsZVJlcyk7CiAKQEAgLTE4MDcsMTkgKzE4NjYsMTA5IEBAIHN0YXRpYyB2b2lkIHByaW50 X3htbF9yb3coRklMRSAqeG1sX2ZpbGUKICAgewogICAgIGlmICgoKnJvdylbaV0pCiAgICAgewot ICAgICAgZnB1dGMoJyAnLCB4bWxfZmlsZSk7Ci0gICAgICBwcmludF9xdW90ZWRfeG1sKHhtbF9m aWxlLCBmaWVsZC0+bmFtZSwgZmllbGQtPm5hbWVfbGVuZ3RoKTsKLSAgICAgIGZwdXRzKCI9XCIi LCB4bWxfZmlsZSk7Ci0gICAgICBwcmludF9xdW90ZWRfeG1sKHhtbF9maWxlLCAoKnJvdylbaV0s IGxlbmd0aHNbaV0pOwotICAgICAgZnB1dGMoJyInLCB4bWxfZmlsZSk7Ci0gICAgICBjaGVja19p byh4bWxfZmlsZSk7CisgICAgICAvKiBGb3IgJ2NyZWF0ZScgc3RhdGVtZW50cywgZHVtcCB1c2lu ZyBDREFUQS4gKi8KKyAgICAgIGlmICgoc3RyX2NyZWF0ZSkgJiYgKHN0cmNtcChzdHJfY3JlYXRl LCBmaWVsZC0+bmFtZSkgPT0gMCkpCisgICAgICB7CisgICAgICAgIGNyZWF0ZV9zdG10X3B0cj0g KCpyb3cpW2ldOworICAgICAgICBjcmVhdGVfc3RtdF9sZW49IGxlbmd0aHNbaV07CisgICAgICAg IGJvZHlfZm91bmQ9IDE7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIGZw dXRjKCcgJywgeG1sX2ZpbGUpOworICAgICAgICBwcmludF9xdW90ZWRfeG1sKHhtbF9maWxlLCBm aWVsZC0+bmFtZSwgZmllbGQtPm5hbWVfbGVuZ3RoLCAxKTsKKyAgICAgICAgZnB1dHMoIj1cIiIs IHhtbF9maWxlKTsKKyAgICAgICAgcHJpbnRfcXVvdGVkX3htbCh4bWxfZmlsZSwgKCpyb3cpW2ld LCBsZW5ndGhzW2ldLCAwKTsKKyAgICAgICAgZnB1dGMoJyInLCB4bWxfZmlsZSk7CisgICAgICAg IGNoZWNrX2lvKHhtbF9maWxlKTsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICBpZiAoY3JlYXRl X3N0bXRfbGVuKQorICB7CisgICAgREJVR19BU1NFUlQoYm9keV9mb3VuZCk7CisgICAgZnB1dHMo Ij5cbiIsIHhtbF9maWxlKTsKKyAgICBwcmludF94bWxfY2RhdGEoeG1sX2ZpbGUsIGNyZWF0ZV9z dG10X3B0ciwgY3JlYXRlX3N0bXRfbGVuKTsKKyAgICBmcHJpbnRmKHhtbF9maWxlLCAiXHRcdDwv JXM+XG4iLCByb3dfbmFtZSk7CisgIH0KKyAgZWxzZQorICAgIGZwdXRzKCIgLz5cbiIsIHhtbF9m aWxlKTsKKworICBjaGVja19pbyh4bWxfZmlsZSk7Cit9CisKKworLyoqCisgIFByaW50IHhtbCBj b21tZW50cy4KKworICBAcGFyYW0geG1sX2ZpbGUgICAgICAgLSBvdXRwdXQgZmlsZQorICBAcGFy YW0gbGVuICAgICAgICAgICAgLSBsZW5ndGggb2YgY29tbWVudCBtZXNzYWdlCisgIEBwYXJhbSBj b21tZW50X3N0cmluZyAtIGNvbW1lbnQgbWVzc2FnZQorCisgIEBkZXNjcmlwdGlvbgorICAgIFBy aW50IHRoZSBjb21tZW50IG1lc3NhZ2UgaW4gdGhlIGZvcm1hdDoKKyAgICAgICI8IS0tIFxuIGNv bW1lbnQgc3RyaW5nICBcbiAtLT5cbiIKKworICBAbm90ZQorICAgIEFueSBvY2N1cnJlbmNlIG9m IGNvbnRpbnVvdXMgaHlwaGVucyB3aWxsIGJlCisgICAgc3F1ZWV6ZWQgdG8gYSBzaW5nbGUgaHlw aGVuLgorKi8KKworc3RhdGljIHZvaWQgcHJpbnRfeG1sX2NvbW1lbnQoRklMRSAqeG1sX2ZpbGUs IHVsb25nIGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNv bW1lbnRfc3RyaW5nKQoreworICBjb25zdCBjaGFyKiBlbmQ7CisKKyAgZnB1dHMoIjwhLS0gIiwg eG1sX2ZpbGUpOworCisgIGZvciAoZW5kPSBjb21tZW50X3N0cmluZyArIGxlbjsgY29tbWVudF9z dHJpbmcgIT0gZW5kOyBjb21tZW50X3N0cmluZysrKQorICB7CisgICAgLyoKKyAgICAgIFRoZSBz dHJpbmcgIi0tIiAoZG91YmxlLWh5cGhlbikgTVVTVCBOT1Qgb2NjdXIgd2l0aGluIHhtbCBjb21t ZW50cy4KKyAgICAqLworICAgIHN3aXRjaCAoKmNvbW1lbnRfc3RyaW5nKSB7CisgICAgY2FzZSAn LSc6CisgICAgICBpZiAoKihjb21tZW50X3N0cmluZyArIDEpID09ICctJykgICAgICAgICAvKiBP bmx5IG9uZSBoeXBoZW4gYWxsb3dlZC4gKi8KKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoK KyAgICAgIGZwdXRjKCpjb21tZW50X3N0cmluZywgeG1sX2ZpbGUpOworICAgICAgYnJlYWs7CiAg ICAgfQogICB9Ci0gIGZwdXRzKCIgLz5cbiIsIHhtbF9maWxlKTsKKyAgZnB1dHMoIiAtLT5cbiIs IHhtbF9maWxlKTsKICAgY2hlY2tfaW8oeG1sX2ZpbGUpOwogfQogCiAKKworLyogQSBjb21tb24g cHJpbnRpbmcgZnVuY3Rpb24gZm9yIHhtbCBhbmQgbm9uLXhtbCBtb2Rlcy4gKi8KKworc3RhdGlj IHZvaWQgcHJpbnRfY29tbWVudChGSUxFICpzcWxfZmlsZSwgbXlfYm9vbCBpc19lcnJvciwgY29u c3QgY2hhciAqZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pCit7CisgIHN0 YXRpYyBjaGFyIGNvbW1lbnRfYnVmZltDT01NRU5UX0xFTkdUSF07CisgIHZhX2xpc3QgYXJnczsK KworICAvKiBJZiBpdHMgYW4gZXJyb3IgbWVzc2FnZSwgcHJpbnQgaXQgaWdub3Jpbmcgb3B0X2Nv bW1lbnRzLiAqLworICBpZiAoIWlzX2Vycm9yICYmICFvcHRfY29tbWVudHMpCisgICAgcmV0dXJu OworCisgIHZhX3N0YXJ0KGFyZ3MsIGZvcm1hdCk7CisgIG15X3ZzbnByaW50Zihjb21tZW50X2J1 ZmYsIENPTU1FTlRfTEVOR1RILCBmb3JtYXQsIGFyZ3MpOworICB2YV9lbmQoYXJncyk7CisKKyAg aWYgKCFvcHRfeG1sKQorICB7CisgICAgZnB1dHMoY29tbWVudF9idWZmLCBzcWxfZmlsZSk7Cisg ICAgY2hlY2tfaW8oc3FsX2ZpbGUpOworICAgIHJldHVybjsKKyAgfQorCisgIHByaW50X3htbF9j b21tZW50KHNxbF9maWxlLCBzdHJsZW4oY29tbWVudF9idWZmKSwgY29tbWVudF9idWZmKTsKK30K KworCiAvKgogIGNyZWF0ZV9kZWxpbWl0ZXIKICBHZW5lcmF0ZSBhIG5ldyAobnVsbC10ZXJtaW5h dGVkKSBzdHJpbmcgdGhhdCBkb2VzIG5vdCBleGlzdCBpbiAgcXVlcnkgCkBAIC0xODg2LDggKzIw MzUsOCBAQCBzdGF0aWMgdWludCBkdW1wX2V2ZW50c19mb3JfZGIoY2hhciAqZGIpCiAgIG15c3Fs X3JlYWxfZXNjYXBlX3N0cmluZyhteXNxbCwgZGJfbmFtZV9idWZmLCBkYiwgc3RybGVuKGRiKSk7 CiAKICAgLyogbmljZSBjb21tZW50cyAqLwotICBpZiAob3B0X2NvbW1lbnRzKQotICAgIGZwcmlu dGYoc3FsX2ZpbGUsICJcbi0tXG4tLSBEdW1waW5nIGV2ZW50cyBmb3IgZGF0YWJhc2UgJyVzJ1xu LS1cbiIsIGRiKTsKKyAgcHJpbnRfY29tbWVudChzcWxfZmlsZSwgMCwKKyAgICAgICAgICAgICAg ICAiXG4tLVxuLS0gRHVtcGluZyBldmVudHMgZm9yIGRhdGFiYXNlICclcydcbi0tXG4iLCBkYik7 CiAKICAgLyoKICAgICBub3QgdXNpbmcgIm15c3FsX3F1ZXJ5X3dpdGhfZXJyb3JfcmVwb3J0IiBi ZWNhdXNlIHdlIG1heSBoYXZlIG5vdApAQCAtMTkwMiwxMiArMjA1MSwxNyBAQCBzdGF0aWMgdWlu dCBkdW1wX2V2ZW50c19mb3JfZGIoY2hhciAqZGIpCiAgIHN0cmNweShkZWxpbWl0ZXIsICI7Iik7 CiAgIGlmIChteXNxbF9udW1fcm93cyhldmVudF9saXN0X3JlcykgPiAwKQogICB7Ci0gICAgZnBy aW50ZihzcWxfZmlsZSwgIi8qITUwMTA2IFNFVCBAc2F2ZV90aW1lX3pvbmU9IEBAVElNRV9aT05F ICovIDtcbiIpOworICAgIGlmIChvcHRfeG1sKQorICAgICAgZnB1dHMoIlx0PGV2ZW50cz5cbiIs IHNxbF9maWxlKTsKKyAgICBlbHNlCisgICAgeworICAgICAgZnByaW50ZihzcWxfZmlsZSwgIi8q ITUwMTA2IFNFVCBAc2F2ZV90aW1lX3pvbmU9IEBAVElNRV9aT05FICovIDtcbiIpOwogCi0gICAg LyogR2V0IGRhdGFiYXNlIGNvbGxhdGlvbi4gKi8KKyAgICAgIC8qIEdldCBkYXRhYmFzZSBjb2xs YXRpb24uICovCiAKLSAgICBpZiAoZmV0Y2hfZGJfY29sbGF0aW9uKGRiX25hbWVfYnVmZiwgZGJf Y2xfbmFtZSwgc2l6ZW9mIChkYl9jbF9uYW1lKSkpCi0gICAgICBEQlVHX1JFVFVSTigxKTsKKyAg ICAgIGlmIChmZXRjaF9kYl9jb2xsYXRpb24oZGJfbmFtZV9idWZmLCBkYl9jbF9uYW1lLCBzaXpl b2YgKGRiX2NsX25hbWUpKSkKKyAgICAgICAgREJVR19SRVRVUk4oMSk7CisgICAgfQogCiAgICAg aWYgKHN3aXRjaF9jaGFyYWN0ZXJfc2V0X3Jlc3VsdHMobXlzcWwsICJiaW5hcnkiKSkKICAgICAg IERCVUdfUkVUVVJOKDEpOwpAQCAtMTkyNCw2ICsyMDc4LDEzIEBAIHN0YXRpYyB1aW50IGR1bXBf ZXZlbnRzX2Zvcl9kYihjaGFyICpkYikKIAogICAgICAgd2hpbGUgKChyb3c9IG15c3FsX2ZldGNo X3JvdyhldmVudF9yZXMpKSAhPSBOVUxMKQogICAgICAgeworICAgICAgICBpZiAob3B0X3htbCkK KyAgICAgICAgeworICAgICAgICAgIHByaW50X3htbF9yb3coc3FsX2ZpbGUsICJldmVudCIsIGV2 ZW50X3JlcywgJnJvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICJDcmVhdGUgRXZlbnQiKTsK KyAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCiAgICAgICAgIC8qCiAgICAgICAgICAg aWYgdGhlIHVzZXIgaGFzIEVYRUNVVEUgcHJpdmlsZWdlIGhlIGNhbiBzZWUgZXZlbnQgbmFtZXMs IGJ1dCBub3QgdGhlCiAgICAgICAgICAgZXZlbnQgYm9keSEKQEAgLTIwMDksOCArMjE3MCwxNiBA QCBzdGF0aWMgdWludCBkdW1wX2V2ZW50c19mb3JfZGIoY2hhciAqZGIpCiAgICAgICBteXNxbF9m cmVlX3Jlc3VsdChldmVudF9yZXMpOwogCiAgICAgfSAvKiBlbmQgb2YgbGlzdCBvZiBldmVudHMg Ki8KLSAgICBmcHJpbnRmKHNxbF9maWxlLCAiREVMSU1JVEVSIDtcbiIpOwotICAgIGZwcmludGYo c3FsX2ZpbGUsICIvKiE1MDEwNiBTRVQgVElNRV9aT05FPSBAc2F2ZV90aW1lX3pvbmUgKi8gO1xu Iik7CisgICAgaWYgKG9wdF94bWwpCisgICAgeworICAgICAgZnB1dHMoIlx0PC9ldmVudHM+XG4i LCBzcWxfZmlsZSk7CisgICAgICBjaGVja19pbyhzcWxfZmlsZSk7CisgICAgfQorICAgIGVsc2UK KyAgICB7CisgICAgICBmcHJpbnRmKHNxbF9maWxlLCAiREVMSU1JVEVSIDtcbiIpOworICAgICAg ZnByaW50ZihzcWxfZmlsZSwgIi8qITUwMTA2IFNFVCBUSU1FX1pPTkU9IEBzYXZlX3RpbWVfem9u ZSAqLyA7XG4iKTsKKyAgICB9CiAKICAgICBpZiAoc3dpdGNoX2NoYXJhY3Rlcl9zZXRfcmVzdWx0 cyhteXNxbCwgZGVmYXVsdF9jaGFyc2V0KSkKICAgICAgIERCVUdfUkVUVVJOKDEpOwpAQCAtMjA2 NCw2ICsyMjMzLDcgQEAgc3RhdGljIHVpbnQgZHVtcF9yb3V0aW5lc19mb3JfZGIoY2hhciAqZAog ICBjb25zdCBjaGFyICpyb3V0aW5lX3R5cGVbXT0geyJGVU5DVElPTiIsICJQUk9DRURVUkUifTsK ICAgY2hhciAgICAgICBkYl9uYW1lX2J1ZmZbTkFNRV9MRU4qMiszXSwgbmFtZV9idWZmW05BTUVf TEVOKjIrM107CiAgIGNoYXIgICAgICAgKnJvdXRpbmVfbmFtZTsKKyAgY2hhciAgICAgICAqcXVl cnlfc3RyOwogICBpbnQgICAgICAgIGk7CiAgIEZJTEUgICAgICAgKnNxbF9maWxlPSBtZF9yZXN1 bHRfZmlsZTsKICAgTVlTUUxfUkVTICAqcm91dGluZV9yZXMsICpyb3V0aW5lX2xpc3RfcmVzOwpA QCAtMjA3OCw4ICsyMjQ4LDggQEAgc3RhdGljIHVpbnQgZHVtcF9yb3V0aW5lc19mb3JfZGIoY2hh ciAqZAogICBteXNxbF9yZWFsX2VzY2FwZV9zdHJpbmcobXlzcWwsIGRiX25hbWVfYnVmZiwgZGIs IHN0cmxlbihkYikpOwogCiAgIC8qIG5pY2UgY29tbWVudHMgKi8KLSAgaWYgKG9wdF9jb21tZW50 cykKLSAgICBmcHJpbnRmKHNxbF9maWxlLCAiXG4tLVxuLS0gRHVtcGluZyByb3V0aW5lcyBmb3Ig ZGF0YWJhc2UgJyVzJ1xuLS1cbiIsIGRiKTsKKyAgcHJpbnRfY29tbWVudChzcWxfZmlsZSwgMCwK KyAgICAgICAgICAgICAgICAiXG4tLVxuLS0gRHVtcGluZyByb3V0aW5lcyBmb3IgZGF0YWJhc2Ug JyVzJ1xuLS1cbiIsIGRiKTsKIAogICAvKgogICAgIG5vdCB1c2luZyAibXlzcWxfcXVlcnlfd2l0 aF9lcnJvcl9yZXBvcnQiIGJlY2F1c2Ugd2UgbWF5IGhhdmUgbm90CkBAIC0yMDk2LDYgKzIyNjYs OSBAQCBzdGF0aWMgdWludCBkdW1wX3JvdXRpbmVzX2Zvcl9kYihjaGFyICpkCiAgIGlmIChzd2l0 Y2hfY2hhcmFjdGVyX3NldF9yZXN1bHRzKG15c3FsLCAiYmluYXJ5IikpCiAgICAgREJVR19SRVRV Uk4oMSk7CiAKKyAgaWYgKG9wdF94bWwpCisgICAgZnB1dHMoIlx0PHJvdXRpbmVzPlxuIiwgc3Fs X2ZpbGUpOworCiAgIC8qIDAsIHJldHJpZXZlIGFuZCBkdW1wIGZ1bmN0aW9ucywgMSwgcHJvY2Vk dXJlcyAqLwogICBmb3IgKGk9IDA7IGkgPD0gMTsgaSsrKQogICB7CkBAIC0yMTMxLDEzICsyMzA0 LDI1IEBAIHN0YXRpYyB1aW50IGR1bXBfcm91dGluZXNfZm9yX2RiKGNoYXIgKmQKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcm93WzJdID8gKGludCkgc3RybGVuKHJvd1syXSkgOiAwKSk7 CiAgICAgICAgICAgaWYgKHJvd1syXSA9PSBOVUxMKQogICAgICAgICAgIHsKLSAgICAgICAgICAg IGZwcmludGYoc3FsX2ZpbGUsICJcbi0tIGluc3VmZmljaWVudCBwcml2aWxlZ2VzIHRvICVzXG4i LCBxdWVyeV9idWZmKTsKLSAgICAgICAgICAgIGZwcmludGYoc3FsX2ZpbGUsICItLSBkb2VzICVz IGhhdmUgcGVybWlzc2lvbnMgb24gbXlzcWwucHJvYz9cblxuIiwgY3VycmVudF91c2VyKTsKKyAg ICAgICAgICAgIHByaW50X2NvbW1lbnQoc3FsX2ZpbGUsIDEsICJcbi0tIGluc3VmZmljaWVudCBw cml2aWxlZ2VzIHRvICVzXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeV9idWZm KTsKKyAgICAgICAgICAgIHByaW50X2NvbW1lbnQoc3FsX2ZpbGUsIDEsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICItLSBkb2VzICVzIGhhdmUgcGVybWlzc2lvbnMgb24gbXlzcWwucHJvYz9c blxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF91c2VyKTsKICAgICAgICAg ICAgIG1heWJlX2RpZShFWF9NWVNRTEVSUiwiJXMgaGFzIGluc3VmZmljZW50IHByaXZpbGVnZXMg dG8gJXMhIiwgY3VycmVudF91c2VyLCBxdWVyeV9idWZmKTsKICAgICAgICAgICB9CiAgICAgICAg ICAgZWxzZSBpZiAoc3RybGVuKHJvd1syXSkpCiAgICAgICAgICAgewotICAgICAgICAgICAgY2hh ciAqcXVlcnlfc3RyOworICAgICAgICAgICAgaWYgKG9wdF94bWwpCisgICAgICAgICAgICB7Cisg ICAgICAgICAgICAgIGlmIChpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQcm9jZWR1 cmVzLgorICAgICAgICAgICAgICAgIHByaW50X3htbF9yb3coc3FsX2ZpbGUsICJyb3V0aW5lIiwg cm91dGluZV9yZXMsICZyb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ3JlYXRl IFByb2NlZHVyZSIpOworICAgICAgICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLy8gRnVuY3Rpb25zLgorICAgICAgICAgICAgICAgIHByaW50X3htbF9yb3coc3FsX2Zp bGUsICJyb3V0aW5lIiwgcm91dGluZV9yZXMsICZyb3csCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiQ3JlYXRlIEZ1bmN0aW9uIik7CisgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg ICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG9wdF9kcm9wKQogICAgICAgICAgICAgICBmcHJp bnRmKHNxbF9maWxlLCAiLyohNTAwMDMgRFJPUCAlcyBJRiBFWElTVFMgJXMgKi87XG4iLAogICAg ICAgICAgICAgICAgICAgICAgIHJvdXRpbmVfdHlwZVtpXSwgcm91dGluZV9uYW1lKTsKQEAgLTIy MTcsNiArMjQwMiwxMiBAQCBzdGF0aWMgdWludCBkdW1wX3JvdXRpbmVzX2Zvcl9kYihjaGFyICpk CiAgICAgbXlzcWxfZnJlZV9yZXN1bHQocm91dGluZV9saXN0X3Jlcyk7CiAgIH0gLyogZW5kIG9m IGZvciBpICgwIC4uIDEpICAqLwogCisgIGlmIChvcHRfeG1sKQorICB7CisgICAgZnB1dHMoIlx0 PC9yb3V0aW5lcz5cbiIsIHNxbF9maWxlKTsKKyAgICBjaGVja19pbyhzcWxfZmlsZSk7CisgIH0K KwogICBpZiAoc3dpdGNoX2NoYXJhY3Rlcl9zZXRfcmVzdWx0cyhteXNxbCwgZGVmYXVsdF9jaGFy c2V0KSkKICAgICBEQlVHX1JFVFVSTigxKTsKIApAQCAtMjMyOSwxNiArMjUyMCwxNiBAQCBzdGF0 aWMgdWludCBnZXRfdGFibGVfc3RydWN0dXJlKGNoYXIgKnRhCiAKICAgICAgICAgd3JpdGVfaGVh ZGVyKHNxbF9maWxlLCBkYik7CiAgICAgICB9Ci0gICAgICBpZiAoIW9wdF94bWwgJiYgb3B0X2Nv bW1lbnRzKQotICAgICAgeworCiAgICAgICBpZiAoc3RyY21wICh0YWJsZV90eXBlLCAiVklFVyIp ID09IDApICAgICAgICAgLyogdmlldyAqLwotICAgICAgICBmcHJpbnRmKHNxbF9maWxlLCAiXG4t LVxuLS0gVGVtcG9yYXJ5IHRhYmxlIHN0cnVjdHVyZSBmb3IgdmlldyAlc1xuLS1cblxuIiwKLSAg ICAgICAgICAgICAgICByZXN1bHRfdGFibGUpOworICAgICAgICBwcmludF9jb21tZW50KHNxbF9m aWxlLCAwLAorICAgICAgICAgICAgICAgICAgICAgICJcbi0tXG4tLSBUZW1wb3JhcnkgdGFibGUg c3RydWN0dXJlIGZvciB2aWV3ICVzXG4tLVxuXG4iLAorICAgICAgICAgICAgICAgICAgICAgIHJl c3VsdF90YWJsZSk7CiAgICAgICBlbHNlCi0gICAgICAgIGZwcmludGYoc3FsX2ZpbGUsICJcbi0t XG4tLSBUYWJsZSBzdHJ1Y3R1cmUgZm9yIHRhYmxlICVzXG4tLVxuXG4iLAotICAgICAgICAgICAg ICAgIHJlc3VsdF90YWJsZSk7Ci0gICAgICAgIGNoZWNrX2lvKHNxbF9maWxlKTsKLSAgICAgIH0K KyAgICAgICAgcHJpbnRfY29tbWVudChzcWxfZmlsZSwgMCwKKyAgICAgICAgICAgICAgICAgICAg ICAiXG4tLVxuLS0gVGFibGUgc3RydWN0dXJlIGZvciB0YWJsZSAlc1xuLS1cblxuIiwKKyAgICAg ICAgICAgICAgICAgICAgICByZXN1bHRfdGFibGUpOworCiAgICAgICBpZiAob3B0X2Ryb3ApCiAg ICAgICB7CiAgICAgICAvKgpAQCAtMjUzOSw5ICsyNzMwLDEwIEBAIHN0YXRpYyB1aW50IGdldF90 YWJsZV9zdHJ1Y3R1cmUoY2hhciAqdGEKICAgICAgICAgICBEQlVHX1JFVFVSTigwKTsKICAgICAg ICAgd3JpdGVfaGVhZGVyKHNxbF9maWxlLCBkYik7CiAgICAgICB9Ci0gICAgICBpZiAoIW9wdF94 bWwgJiYgb3B0X2NvbW1lbnRzKQotICAgICAgICBmcHJpbnRmKHNxbF9maWxlLCAiXG4tLVxuLS0g VGFibGUgc3RydWN0dXJlIGZvciB0YWJsZSAlc1xuLS1cblxuIiwKLSAgICAgICAgICAgICAgICBy ZXN1bHRfdGFibGUpOworCisgICAgICBwcmludF9jb21tZW50KHNxbF9maWxlLCAwLAorICAgICAg ICAgICAgICAgICAgICAiXG4tLVxuLS0gVGFibGUgc3RydWN0dXJlIGZvciB0YWJsZSAlc1xuLS1c blxuIiwKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0X3RhYmxlKTsKICAgICAgIGlmIChvcHRf ZHJvcCkKICAgICAgICAgZnByaW50ZihzcWxfZmlsZSwgIkRST1AgVEFCTEUgSUYgRVhJU1RTICVz O1xuIiwgcmVzdWx0X3RhYmxlKTsKICAgICAgIGlmICghb3B0X3htbCkKQEAgLTI1OTIsNyArMjc4 NCw3IEBAIHN0YXRpYyB1aW50IGdldF90YWJsZV9zdHJ1Y3R1cmUoY2hhciAqdGEKICAgICAgIHsK ICAgICAgICAgaWYgKG9wdF94bWwpCiAgICAgICAgIHsKLSAgICAgICAgICBwcmludF94bWxfcm93 KHNxbF9maWxlLCAiZmllbGQiLCByZXN1bHQsICZyb3cpOworICAgICAgICAgIHByaW50X3htbF9y b3coc3FsX2ZpbGUsICJmaWVsZCIsIHJlc3VsdCwgJnJvdywgTnVsbFMpOwogICAgICAgICAgIGNv bnRpbnVlOwogICAgICAgICB9CiAKQEAgLTI2NjQsNyArMjg1Niw3IEBAIHN0YXRpYyB1aW50IGdl dF90YWJsZV9zdHJ1Y3R1cmUoY2hhciAqdGEKICAgICAgIHsKICAgICAgICAgaWYgKG9wdF94bWwp CiAgICAgICAgIHsKLSAgICAgICAgICBwcmludF94bWxfcm93KHNxbF9maWxlLCAia2V5IiwgcmVz dWx0LCAmcm93KTsKKyAgICAgICAgICBwcmludF94bWxfcm93KHNxbF9maWxlLCAia2V5IiwgcmVz dWx0LCAmcm93LCBOdWxsUyk7CiAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAt MjcyMyw3ICsyOTE1LDcgQEAgc3RhdGljIHVpbnQgZ2V0X3RhYmxlX3N0cnVjdHVyZShjaGFyICp0 YQogICAgICAgICBlbHNlCiAgICAgICAgIHsKICAgICAgICAgICBpZiAob3B0X3htbCkKLSAgICAg ICAgICAgIHByaW50X3htbF9yb3coc3FsX2ZpbGUsICJvcHRpb25zIiwgcmVzdWx0LCAmcm93KTsK KyAgICAgICAgICAgIHByaW50X3htbF9yb3coc3FsX2ZpbGUsICJvcHRpb25zIiwgcmVzdWx0LCAm cm93LCBOdWxsUyk7CiAgICAgICAgICAgZWxzZQogICAgICAgICAgIHsKICAgICAgICAgICAgIGZw dXRzKCIvKiEiLHNxbF9maWxlKTsKQEAgLTI3NjcsOSArMjk1OSwxOSBAQCBzdGF0aWMgdm9pZCBk dW1wX3RyaWdnZXJfb2xkKEZJTEUgKnNxbF9mCiAgIGNoYXIgKnF1b3RlZF90YWJsZV9uYW1lPSBx dW90ZV9uYW1lKHRhYmxlX25hbWUsIHF1b3RlZF90YWJsZV9uYW1lX2J1ZiwgMSk7CiAKICAgY2hh ciBuYW1lX2J1ZmZbTkFNRV9MRU4gKiA0ICsgM107CisgIGNvbnN0IGNoYXIgKnhtbF9tc2c9ICJc bldhcm5pbmchIG15c3FsZHVtcCBiZWluZyBydW4gYWdhaW5zdCBvbGQgc2VydmVyICIKKyAgICAg ICAgICAgICAgICAgICAgICAgInRoYXQgZG9lcyBub3RcbnN1cHBvcnQgJ1NIT1cgQ1JFQVRFIFRS SUdHRVJTJyAiCisgICAgICAgICAgICAgICAgICAgICAgICJzdGF0ZW1lbnQuIFNraXBwaW5nLi5c biI7CiAKICAgREJVR19FTlRFUigiZHVtcF90cmlnZ2VyX29sZCIpOwogCisgIGlmIChvcHRfeG1s KQorICB7CisgICAgcHJpbnRfeG1sX2NvbW1lbnQoc3FsX2ZpbGUsIHN0cmxlbih4bWxfbXNnKSwg eG1sX21zZyk7CisgICAgY2hlY2tfaW8oc3FsX2ZpbGUpOworICAgIERCVUdfVk9JRF9SRVRVUk47 CisgIH0KKwogICBmcHJpbnRmKHNxbF9maWxlLAogICAgICAgICAgICItLVxuIgogICAgICAgICAg ICItLSBXQVJOSU5HOiBvbGQgc2VydmVyIHZlcnNpb24uICIKQEAgLTI4MzMsMTcgKzMwMzUsMjUg QEAgc3RhdGljIGludCBkdW1wX3RyaWdnZXIoRklMRSAqc3FsX2ZpbGUsIAogICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgY2hhciAqZGJfY2xfbmFtZSkKIHsKICAgTVlTUUxfUk9XIHJvdzsK KyAgY2hhciAqcXVlcnlfc3RyOwogICBpbnQgZGJfY2xfYWx0ZXJlZD0gRkFMU0U7CiAKICAgREJV R19FTlRFUigiZHVtcF90cmlnZ2VyIik7CiAKICAgd2hpbGUgKChyb3c9IG15c3FsX2ZldGNoX3Jv dyhzaG93X2NyZWF0ZV90cmlnZ2VyX3JzKSkpCiAgIHsKLSAgICBjaGFyICpxdWVyeV9zdHI9IGNv dmVyX2RlZmluZXJfY2xhdXNlKHJvd1syXSwgc3RybGVuKHJvd1syXSksCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDX1NUUklOR19XSVRIX0xFTigiNTAwMTciKSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENfU1RSSU5HX1dJVEhf TEVOKCI1MDAwMyIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Q19TVFJJTkdfV0lUSF9MRU4oIiBUUklHR0VSIikpOworICAgIGlmIChvcHRfeG1sKQorICAgIHsK KyAgICAgIHByaW50X3htbF9yb3coc3FsX2ZpbGUsICJ0cmlnZ2VyIiwgc2hvd19jcmVhdGVfdHJp Z2dlcl9ycywgJnJvdywKKyAgICAgICAgICAgICAgICAgICAgIlNRTCBPcmlnaW5hbCBTdGF0ZW1l bnQiKTsKKyAgICAgIGNoZWNrX2lvKHNxbF9maWxlKTsKKyAgICAgIGNvbnRpbnVlOworICAgIH0K IAorICAgIHF1ZXJ5X3N0cj0gY292ZXJfZGVmaW5lcl9jbGF1c2Uocm93WzJdLCBzdHJsZW4ocm93 WzJdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENfU1RSSU5HX1dJVEhf TEVOKCI1MDAxNyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ19TVFJJ TkdfV0lUSF9MRU4oIjUwMDAzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBDX1NUUklOR19XSVRIX0xFTigiIFRSSUdHRVIiKSk7CiAgICAgaWYgKHN3aXRjaF9kYl9jb2xs YXRpb24oc3FsX2ZpbGUsIGRiX25hbWUsICI7IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkYl9jbF9uYW1lLCByb3dbNV0sICZkYl9jbF9hbHRlcmVkKSkKICAgICAgIERCVUdfUkVUVVJO KFRSVUUpOwpAQCAtMjkzMSw2ICszMTQxLDEzIEBAIHN0YXRpYyBpbnQgZHVtcF90cmlnZ2Vyc19m b3JfdGFibGUoY2hhciAKIAogICAvKiBEdW1wIHRyaWdnZXJzLiAqLwogCisgIGlmICghIG15c3Fs X251bV9yb3dzKHNob3dfdHJpZ2dlcnNfcnMpKQorICAgIGdvdG8gc2tpcDsKKworICBpZiAob3B0 X3htbCkKKyAgICBwcmludF94bWxfdGFnKHNxbF9maWxlLCAiXHQiLCAiXG4iLCAidHJpZ2dlcnMi LCAibmFtZT0iLAorICAgICAgICAgICAgICAgICAgdGFibGVfbmFtZSwgTnVsbFMpOworCiAgIHdo aWxlICgocm93PSBteXNxbF9mZXRjaF9yb3coc2hvd190cmlnZ2Vyc19ycykpKQogICB7CiAKQEAg LTI5NjMsNiArMzE4MCwxMyBAQCBzdGF0aWMgaW50IGR1bXBfdHJpZ2dlcnNfZm9yX3RhYmxlKGNo YXIgCiAKICAgfQogCisgIGlmIChvcHRfeG1sKQorICB7CisgICAgZnB1dHMoIlx0PC90cmlnZ2Vy cz5cbiIsIHNxbF9maWxlKTsKKyAgICBjaGVja19pbyhzcWxfZmlsZSk7CisgIH0KKworc2tpcDoK ICAgbXlzcWxfZnJlZV9yZXN1bHQoc2hvd190cmlnZ2Vyc19ycyk7CiAKICAgaWYgKHN3aXRjaF9j aGFyYWN0ZXJfc2V0X3Jlc3VsdHMobXlzcWwsIGRlZmF1bHRfY2hhcnNldCkpCkBAIC0zMjExLDM0 ICszNDM1LDI0IEBAIHN0YXRpYyB2b2lkIGR1bXBfdGFibGUoY2hhciAqdGFibGUsIGNoYXIKICAg fQogICBlbHNlCiAgIHsKLSAgICBpZiAoIW9wdF94bWwgJiYgb3B0X2NvbW1lbnRzKQotICAgIHsK LSAgICAgIGZwcmludGYobWRfcmVzdWx0X2ZpbGUsIlxuLS1cbi0tIER1bXBpbmcgZGF0YSBmb3Ig dGFibGUgJXNcbi0tXG4iLAotICAgICAgICAgICAgICByZXN1bHRfdGFibGUpOwotICAgICAgY2hl Y2tfaW8obWRfcmVzdWx0X2ZpbGUpOwotICAgIH0KKyAgICBwcmludF9jb21tZW50KG1kX3Jlc3Vs dF9maWxlLCAwLAorICAgICAgICAgICAgICAgICAgIlxuLS1cbi0tIER1bXBpbmcgZGF0YSBmb3Ig dGFibGUgJXNcbi0tXG4iLAorICAgICAgICAgICAgICAgICAgcmVzdWx0X3RhYmxlKTsKICAgICAK ICAgICBkeW5zdHJfYXBwZW5kX2NoZWNrZWQoJnF1ZXJ5X3N0cmluZywgIlNFTEVDVCAvKiE0MDAw MSBTUUxfTk9fQ0FDSEUgKi8gKiBGUk9NICIpOwogICAgIGR5bnN0cl9hcHBlbmRfY2hlY2tlZCgm cXVlcnlfc3RyaW5nLCByZXN1bHRfdGFibGUpOwogCiAgICAgaWYgKHdoZXJlKQogICAgIHsKLSAg ICAgIGlmICghb3B0X3htbCAmJiBvcHRfY29tbWVudHMpCi0gICAgICB7Ci0gICAgICAgIGZwcmlu dGYobWRfcmVzdWx0X2ZpbGUsICItLSBXSEVSRTogICVzXG4iLCB3aGVyZSk7Ci0gICAgICAgIGNo ZWNrX2lvKG1kX3Jlc3VsdF9maWxlKTsKLSAgICAgIH0KLSAgICAgIAorICAgICAgcHJpbnRfY29t bWVudChtZF9yZXN1bHRfZmlsZSwgMCwgIi0tIFdIRVJFOiAgJXNcbiIsIHdoZXJlKTsKKwogICAg ICAgZHluc3RyX2FwcGVuZF9jaGVja2VkKCZxdWVyeV9zdHJpbmcsICIgV0hFUkUgIik7CiAgICAg ICBkeW5zdHJfYXBwZW5kX2NoZWNrZWQoJnF1ZXJ5X3N0cmluZywgd2hlcmUpOwogICAgIH0KICAg ICBpZiAob3JkZXJfYnkpCiAgICAgewotICAgICAgaWYgKCFvcHRfeG1sICYmIG9wdF9jb21tZW50 cykKLSAgICAgIHsKLSAgICAgICAgZnByaW50ZihtZF9yZXN1bHRfZmlsZSwgIi0tIE9SREVSIEJZ OiAgJXNcbiIsIG9yZGVyX2J5KTsKLSAgICAgICAgY2hlY2tfaW8obWRfcmVzdWx0X2ZpbGUpOwot ICAgICAgfQorICAgICAgcHJpbnRfY29tbWVudChtZF9yZXN1bHRfZmlsZSwgMCwgIi0tIE9SREVS IEJZOiAgJXNcbiIsIG9yZGVyX2J5KTsKKwogICAgICAgZHluc3RyX2FwcGVuZF9jaGVja2VkKCZx dWVyeV9zdHJpbmcsICIgT1JERVIgQlkgIik7CiAgICAgICBkeW5zdHJfYXBwZW5kX2NoZWNrZWQo JnF1ZXJ5X3N0cmluZywgb3JkZXJfYnkpOwogICAgIH0KQEAgLTM0MzQsNyArMzY0OCw3IEBAIHN0 YXRpYyB2b2lkIGR1bXBfdGFibGUoY2hhciAqdGFibGUsIGNoYXIKICAgICAgICAgICAgICAgICB7 CiAgICAgICAgICAgICAgICAgICBwcmludF94bWxfdGFnKG1kX3Jlc3VsdF9maWxlLCAiXHRcdCIs ICIiLCAiZmllbGQiLCAibmFtZT0iLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZmllbGQtPm5hbWUsIE51bGxTKTsKLSAgICAgICAgICAgICAgICAgIHByaW50X3F1b3RlZF94bWwo bWRfcmVzdWx0X2ZpbGUsIHJvd1tpXSwgbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgIHByaW50 X3F1b3RlZF94bWwobWRfcmVzdWx0X2ZpbGUsIHJvd1tpXSwgbGVuZ3RoLCAwKTsKICAgICAgICAg ICAgICAgICB9CiAgICAgICAgICAgICAgICAgZnB1dHMoIjwvZmllbGQ+XG4iLCBtZF9yZXN1bHRf ZmlsZSk7CiAgICAgICAgICAgICAgIH0KQEAgLTM3MzgsMTEgKzM5NTIsOSBAQCBzdGF0aWMgaW50 IGR1bXBfdGFibGVzcGFjZXMoY2hhciogdHNfd2hlCiAgICAgICBmaXJzdD0gMTsKICAgICBpZiAo Zmlyc3QpCiAgICAgewotICAgICAgaWYgKCFvcHRfeG1sICYmIG9wdF9jb21tZW50cykKLSAgICAg IHsKLQlmcHJpbnRmKG1kX3Jlc3VsdF9maWxlLCJcbi0tXG4tLSBMb2dmaWxlIGdyb3VwOiAlc1xu LS1cbiIsIHJvd1swXSk7Ci0JY2hlY2tfaW8obWRfcmVzdWx0X2ZpbGUpOwotICAgICAgfQorICAg ICAgcHJpbnRfY29tbWVudChtZF9yZXN1bHRfZmlsZSwgMCwgIlxuLS1cbi0tIExvZ2ZpbGUgZ3Jv dXA6ICVzXG4tLVxuIiwKKyAgICAgICAgICAgICAgICAgICAgcm93WzBdKTsKKwogICAgICAgZnBy aW50ZihtZF9yZXN1bHRfZmlsZSwgIlxuQ1JFQVRFIik7CiAgICAgfQogICAgIGVsc2UKQEAgLTM4 MTAsMTEgKzQwMjIsNyBAQCBzdGF0aWMgaW50IGR1bXBfdGFibGVzcGFjZXMoY2hhciogdHNfd2hl CiAgICAgICBmaXJzdD0gMTsKICAgICBpZiAoZmlyc3QpCiAgICAgewotICAgICAgaWYgKCFvcHRf eG1sICYmIG9wdF9jb21tZW50cykKLSAgICAgIHsKLQlmcHJpbnRmKG1kX3Jlc3VsdF9maWxlLCJc bi0tXG4tLSBUYWJsZXNwYWNlOiAlc1xuLS1cbiIsIHJvd1swXSk7Ci0JY2hlY2tfaW8obWRfcmVz dWx0X2ZpbGUpOwotICAgICAgfQorICAgICAgcHJpbnRfY29tbWVudChtZF9yZXN1bHRfZmlsZSwg MCwgIlxuLS1cbi0tIFRhYmxlc3BhY2U6ICVzXG4tLVxuIiwgcm93WzBdKTsKICAgICAgIGZwcmlu dGYobWRfcmVzdWx0X2ZpbGUsICJcbkNSRUFURSIpOwogICAgIH0KICAgICBlbHNlCkBAIC00MDEy LDExICs0MjIwLDkgQEAgc3RhdGljIGludCBpbml0X2R1bXBpbmcoY2hhciAqZGF0YWJhc2UsIAog ICAgICAgKi8KICAgICAgIGNoYXIgcXVvdGVkX2RhdGFiYXNlX2J1ZltOQU1FX0xFTioyKzNdOwog ICAgICAgY2hhciAqcWRhdGFiYXNlPSBxdW90ZV9uYW1lKGRhdGFiYXNlLHF1b3RlZF9kYXRhYmFz ZV9idWYsb3B0X3F1b3RlZCk7Ci0gICAgICBpZiAob3B0X2NvbW1lbnRzKQotICAgICAgewotICAg ICAgICBmcHJpbnRmKG1kX3Jlc3VsdF9maWxlLCJcbi0tXG4tLSBDdXJyZW50IERhdGFiYXNlOiAl c1xuLS1cbiIsIHFkYXRhYmFzZSk7Ci0gICAgICAgIGNoZWNrX2lvKG1kX3Jlc3VsdF9maWxlKTsK LSAgICAgIH0KKworICAgICAgcHJpbnRfY29tbWVudChtZF9yZXN1bHRfZmlsZSwgMCwKKyAgICAg ICAgICAgICAgICAgICAgIlxuLS1cbi0tIEN1cnJlbnQgRGF0YWJhc2U6ICVzXG4tLVxuIiwgcWRh dGFiYXNlKTsKIAogICAgICAgLyogQ2FsbCB0aGUgdmlldyBvciB0YWJsZSBzcGVjaWZpYyBmdW5j dGlvbiAqLwogICAgICAgaW5pdF9mdW5jKHFkYXRhYmFzZSk7CkBAIC00MDkyLDggKzQyOTgsNyBA QCBzdGF0aWMgaW50IGR1bXBfYWxsX3RhYmxlc19pbl9kYihjaGFyICpkCiAgICAgICBkdW1wX3Rh YmxlKHRhYmxlLGRhdGFiYXNlKTsKICAgICAgIG15X2ZyZWUob3JkZXJfYnkpOwogICAgICAgb3Jk ZXJfYnk9IDA7Ci0gICAgICBpZiAob3B0X2R1bXBfdHJpZ2dlcnMgJiYgISBvcHRfeG1sICYmCi0g ICAgICAgICAgbXlzcWxfZ2V0X3NlcnZlcl92ZXJzaW9uKG15c3FsKSA+PSA1MDAwOSkKKyAgICAg IGlmIChvcHRfZHVtcF90cmlnZ2VycyAmJiBteXNxbF9nZXRfc2VydmVyX3ZlcnNpb24obXlzcWwp ID49IDUwMDA5KQogICAgICAgewogICAgICAgICBpZiAoZHVtcF90cmlnZ2Vyc19mb3JfdGFibGUo dGFibGUsIGRhdGFiYXNlKSkKICAgICAgICAgewpAQCAtNDEwNCwxNCArNDMwOSwxMiBAQCBzdGF0 aWMgaW50IGR1bXBfYWxsX3RhYmxlc19pbl9kYihjaGFyICpkCiAgICAgICB9CiAgICAgfQogICB9 Ci0gIGlmIChvcHRfZXZlbnRzICYmICFvcHRfeG1sICYmCi0gICAgICBteXNxbF9nZXRfc2VydmVy X3ZlcnNpb24obXlzcWwpID49IDUwMTA2KQorICBpZiAob3B0X2V2ZW50cyAmJiBteXNxbF9nZXRf c2VydmVyX3ZlcnNpb24obXlzcWwpID49IDUwMTA2KQogICB7CiAgICAgREJVR19QUklOVCgiaW5m byIsICgiRHVtcGluZyBldmVudHMgZm9yIGRhdGFiYXNlICVzIiwgZGF0YWJhc2UpKTsKICAgICBk dW1wX2V2ZW50c19mb3JfZGIoZGF0YWJhc2UpOwogICB9Ci0gIGlmIChvcHRfcm91dGluZXMgJiYg IW9wdF94bWwgJiYKLSAgICAgIG15c3FsX2dldF9zZXJ2ZXJfdmVyc2lvbihteXNxbCkgPj0gNTAw MDkpCisgIGlmIChvcHRfcm91dGluZXMgJiYgbXlzcWxfZ2V0X3NlcnZlcl92ZXJzaW9uKG15c3Fs KSA+PSA1MDAwOSkKICAgewogICAgIERCVUdfUFJJTlQoImluZm8iLCAoIkR1bXBpbmcgcm91dGlu ZXMgZm9yIGRhdGFiYXNlICVzIiwgZGF0YWJhc2UpKTsKICAgICBkdW1wX3JvdXRpbmVzX2Zvcl9k YihkYXRhYmFzZSk7CkBAIC00MzUyLDE1ICs0NTU1LDEzIEBAIHN0YXRpYyBpbnQgZHVtcF9zZWxl Y3RlZF90YWJsZXMoY2hhciAqZGIKICAgICBmb3IgKHBvcz0gZHVtcF90YWJsZXM7IHBvcyA8IGVu ZDsgcG9zKyspCiAgICAgICBnZXRfdmlld19zdHJ1Y3R1cmUoKnBvcywgZGIpOwogICB9Ci0gIGlm IChvcHRfZXZlbnRzICYmICFvcHRfeG1sICYmCi0gICAgICBteXNxbF9nZXRfc2VydmVyX3ZlcnNp b24obXlzcWwpID49IDUwMTA2KQorICBpZiAob3B0X2V2ZW50cyAmJiBteXNxbF9nZXRfc2VydmVy X3ZlcnNpb24obXlzcWwpID49IDUwMTA2KQogICB7CiAgICAgREJVR19QUklOVCgiaW5mbyIsICgi RHVtcGluZyBldmVudHMgZm9yIGRhdGFiYXNlICVzIiwgZGIpKTsKICAgICBkdW1wX2V2ZW50c19m b3JfZGIoZGIpOwogICB9CiAgIC8qIG9idGFpbiBkdW1wIG9mIHJvdXRpbmVzIChwcm9jcy9mdW5j dGlvbnMpICovCi0gIGlmIChvcHRfcm91dGluZXMgICYmICFvcHRfeG1sICYmCi0gICAgICBteXNx bF9nZXRfc2VydmVyX3ZlcnNpb24obXlzcWwpID49IDUwMDA5KQorICBpZiAob3B0X3JvdXRpbmVz ICYmIG15c3FsX2dldF9zZXJ2ZXJfdmVyc2lvbihteXNxbCkgPj0gNTAwMDkpCiAgIHsKICAgICBE QlVHX1BSSU5UKCJpbmZvIiwgKCJEdW1waW5nIHJvdXRpbmVzIGZvciBkYXRhYmFzZSAlcyIsIGRi KSk7CiAgICAgZHVtcF9yb3V0aW5lc19mb3JfZGIoZGIpOwpAQCAtNDM5NSwxMCArNDU5Niw5IEBA IHN0YXRpYyBpbnQgZG9fc2hvd19tYXN0ZXJfc3RhdHVzKE1ZU1FMICoKICAgICBpZiAocm93ICYm IHJvd1swXSAmJiByb3dbMV0pCiAgICAgewogICAgICAgLyogU0hPVyBNQVNURVIgU1RBVFVTIHJl cG9ydHMgZmlsZSBhbmQgcG9zaXRpb24gKi8KLSAgICAgIGlmIChvcHRfY29tbWVudHMpCi0gICAg ICAgIGZwcmludGYobWRfcmVzdWx0X2ZpbGUsCi0gICAgICAgICAgICAgICAgIlxuLS1cbi0tIFBv c2l0aW9uIHRvIHN0YXJ0IHJlcGxpY2F0aW9uIG9yIHBvaW50LWluLXRpbWUgIgotICAgICAgICAg ICAgICAgICJyZWNvdmVyeSBmcm9tXG4tLVxuXG4iKTsKKyAgICAgIHByaW50X2NvbW1lbnQobWRf cmVzdWx0X2ZpbGUsIDAsCisgICAgICAgICAgICAgICAgICAgICJcbi0tXG4tLSBQb3NpdGlvbiB0 byBzdGFydCByZXBsaWNhdGlvbiBvciBwb2ludC1pbi10aW1lICIKKyAgICAgICAgICAgICAgICAg ICAgInJlY292ZXJ5IGZyb21cbi0tXG5cbiIpOwogICAgICAgZnByaW50ZihtZF9yZXN1bHRfZmls ZSwKICAgICAgICAgICAgICAgIiVzQ0hBTkdFIE1BU1RFUiBUTyBNQVNURVJfTE9HX0ZJTEU9JyVz JywgTUFTVEVSX0xPR19QT1M9JXM7XG4iLAogICAgICAgICAgICAgICBjb21tZW50X3ByZWZpeCwg cm93WzBdLCByb3dbMV0pOwpAQCAtNDk4NiwxMiArNTE4NiwxMCBAQCBzdGF0aWMgbXlfYm9vbCBn ZXRfdmlld19zdHJ1Y3R1cmUoY2hhciAqCiAgICAgd3JpdGVfaGVhZGVyKHNxbF9maWxlLCBkYik7 CiAgIH0KIAotICBpZiAoIW9wdF94bWwgJiYgb3B0X2NvbW1lbnRzKQotICB7Ci0gICAgZnByaW50 ZihzcWxfZmlsZSwgIlxuLS1cbi0tIEZpbmFsIHZpZXcgc3RydWN0dXJlIGZvciB2aWV3ICVzXG4t LVxuXG4iLAotICAgICAgICAgICAgcmVzdWx0X3RhYmxlKTsKLSAgICBjaGVja19pbyhzcWxfZmls ZSk7Ci0gIH0KKyAgcHJpbnRfY29tbWVudChzcWxfZmlsZSwgMCwKKyAgICAgICAgICAgICAgICAi XG4tLVxuLS0gRmluYWwgdmlldyBzdHJ1Y3R1cmUgZm9yIHZpZXcgJXNcbi0tXG5cbiIsCisgICAg ICAgICAgICAgICAgcmVzdWx0X3RhYmxlKTsKKwogICAvKiBUYWJsZSBtaWdodCBub3QgZXhpc3Qg aWYgdGhpcyB2aWV3IHdhcyBkdW1wZWQgd2l0aCAtLXRhYi4gKi8KICAgZnByaW50ZihzcWxfZmls ZSwgIi8qITUwMDAxIERST1AgVEFCTEUgSUYgRVhJU1RTICVzKi87XG4iLCBvcHRfcXVvdGVkX3Rh YmxlKTsKICAgaWYgKG9wdF9kcm9wKQpAQCAtNTE4OCw2ICs1Mzg2LDEyIEBAIGludCBtYWluKGlu dCBhcmdjLCBjaGFyICoqYXJndikKICAgICBleGl0KGV4aXRfY29kZSk7CiAgIH0KIAorICAvKgor ICAgIERpc2FibGUgY29tbWVudHMgaW4geG1sIG1vZGUgaWYgJ2NvbW1lbnRzJyBvcHRpb24gaXMg bm90IGV4cGxpY2l0bHkgdXNlZC4KKyAgKi8KKyAgaWYgKG9wdF94bWwgJiYgIW9wdF9jb21tZW50 c191c2VkKQorICAgIG9wdF9jb21tZW50cz0gMDsKKwogICBpZiAobG9nX2Vycm9yX2ZpbGUpCiAg IHsKICAgICBpZighKHN0ZGVycm9yX2ZpbGU9IGZyZW9wZW4obG9nX2Vycm9yX2ZpbGUsICJhKyIs IHN0ZGVycikpKQoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qvci9teXNxbGR1bXAucmVz dWx0JwotLS0gYS9teXNxbC10ZXN0L3IvbXlzcWxkdW1wLnJlc3VsdAkyMDExLTEyLTI0IDA5OjM4 OjU5ICswMDAwCisrKyBiL215c3FsLXRlc3Qvci9teXNxbGR1bXAucmVzdWx0CTIwMTItMDEtMTAg MTA6NDA6NDggKzAwMDAKQEAgLTQ2MjgsNiArNDYyOCw0NDUgQEAgQUxURVIgREFUQUJBU0UgYHRl c3QtZGF0YWJhc2VgIENIQVJBQ1RFUgogRFJPUCBEQVRBQkFTRSBgdGVzdC1kYXRhYmFzZWA7CiBV U0UgdGVzdDsKICMKKyMgQlVHIzExNzYwMzg0IDogNTI3OTI6IG15c3FsZHVtcCBpbiBYTUwgbW9k ZSBkb2VzIG5vdCBkdW1wIHJvdXRpbmVzLgorIworQ1JFQVRFIERBVEFCQVNFIEJVRzUyNzkyOwor VVNFIEJVRzUyNzkyOworQ1JFQVRFIFRBQkxFIHQxIChjMSBJTlQsIGMyIFZBUkNIQVIoMjApKTsK K0NSRUFURSBUQUJMRSB0MiAoYzEgSU5UKTsKK0lOU0VSVCBJTlRPIHQxIFZBTFVFUyAoMSwgJ2Fh YScpLCAoMiwgJ2JiYicpLCAoMywgJ2NjYycpOworSU5TRVJUIElOVE8gdDIgVkFMVUVTICgxKSwo MiksKDMpOworIyBTdG9yZWQgUHJvY2VkdXJlcy4KK0NSRUFURSBQUk9DRURVUkUgc2ltcGxlcHJv YzEgKE9VVCBwYXJhbTEgSU5UKQorQkVHSU4KK1NFTEVDVCBDT1VOVCgqKSBJTlRPIHBhcmFtMSBG Uk9NIHQxOworRU5ELy8KK0NSRUFURSBQUk9DRURVUkUgc2ltcGxlcHJvYzIgKE9VVCBwYXJhbTEg SU5UKQorQkVHSU4KK1NFTEVDVCBDT1VOVCgqKSBJTlRPIHBhcmFtMSBGUk9NIHQyOworRU5ELy8K KyMgRXZlbnRzLgorQ1JFQVRFIEVWRU5UIGUxIE9OIFNDSEVEVUxFIEVWRVJZIDEgU0VDT05EIERP IERST1AgREFUQUJBU0UgQlVHNTI3OTI7CitDUkVBVEUgRVZFTlQgZTIgT04gU0NIRURVTEUgRVZF UlkgMSBTRUNPTkQgRE8gRFJPUCBEQVRBQkFTRSBCVUc1Mjc5MjsKKyMgRnVuY3Rpb25zLgorQ1JF QVRFIEZVTkNUSU9OIGBoZWxsbzFgIChzIENIQVIoMjApKQorUkVUVVJOUyBDSEFSKDUwKSBERVRF Uk1JTklTVElDCitSRVRVUk4gQ09OQ0FUKCdIZWxsbywgJyAscyAsJyEnKTsKK0NSRUFURSBGVU5D VElPTiBgaGVsbG8yYCAocyBDSEFSKDIwKSkKK1JFVFVSTlMgQ0hBUig1MCkgREVURVJNSU5JU1RJ QworUkVUVVJOIENPTkNBVCgnXV0+LCAnICwgcyAsJyEnKTsKKyMgVHJpZ2dlcnMuCitDUkVBVEUg VFJJR0dFUiB0cmlnMSBCRUZPUkUgSU5TRVJUIE9OIHQyCitGT1IgRUFDSCBST1cgQkVHSU4KK0lO U0VSVCBJTlRPIHQyIFZBTFVFUygxKTsKK0VORDsKK3wKK0NSRUFURSBUUklHR0VSIHRyaWcyIEFG VEVSIElOU0VSVCBPTiB0MgorRk9SIEVBQ0ggUk9XIEJFR0lOCitJTlNFUlQgSU5UTyB0MiBWQUxV RVMoMSwgJ11dPicpOworSU5TRVJUIElOVE8gdDIgVkFMVUVTKDIsICc8IVtDREFUQV1dPicpOwor SU5TRVJUIElOVE8gdDIgVkFMVUVTKDMsICc8IVtDREFUQVsnKTsKK0lOU0VSVCBJTlRPIHQyIFZB TFVFUyg0LCAnPCA+ICYgXCAiIF8nKTsKK0VORDsKK3wKKyMgVmlld3MKK0NSRUFURSBWSUVXIHYx IEFTIFNFTEVDVCAqIEZST00gdDE7CitDUkVBVEUgVklFVyB2MiBBUyBTRUxFQ1QgKiBGUk9NIHQy OworCisjIER1bXBpbmcgQlVHNTI3OTIgZGF0YWJhc2UgaW4geG1sIGZvcm1hdC4KKworIyBSdW5u aW5nICdyZXBsYWNlX3JlZ2V4IG9uIHRpbWVzdGFtcCcKKzw/eG1sIHZlcnNpb249IjEuMCI/Pgor PG15c3FsZHVtcCB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWlu c3RhbmNlIj4KKzxkYXRhYmFzZSBuYW1lPSJCVUc1Mjc5MiI+CisJPHRhYmxlX3N0cnVjdHVyZSBu YW1lPSJ0MSI+CisJCTxmaWVsZCBGaWVsZD0iYzEiIFR5cGU9ImludCgxMSkiIE51bGw9IllFUyIg S2V5PSIiIEV4dHJhPSIiIENvbW1lbnQ9IiIgLz4KKwkJPGZpZWxkIEZpZWxkPSJjMiIgVHlwZT0i dmFyY2hhcigyMCkiIE51bGw9IllFUyIgS2V5PSIiIEV4dHJhPSIiIENvbW1lbnQ9IiIgLz4KKwkJ PG9wdGlvbnMgTmFtZT0idDEiIEVuZ2luZT0iTXlJU0FNIiBWZXJzaW9uPSIxMCIgUm93X2Zvcm1h dD0iRHluYW1pYyIgUm93cz0iMyIgQXZnX3Jvd19sZW5ndGg9IjIwIiBEYXRhX2xlbmd0aD0iNjAi IE1heF9kYXRhX2xlbmd0aD0iMjgxNDc0OTc2NzEwNjU1IiBJbmRleF9sZW5ndGg9IjEwMjQiIERh dGFfZnJlZT0iMCIgQ3JlYXRlX3RpbWU9Ii0tVElNRS0tIiBVcGRhdGVfdGltZT0iLS1USU1FLS0i IENvbGxhdGlvbj0ibGF0aW4xX3N3ZWRpc2hfY2kiIENyZWF0ZV9vcHRpb25zPSIiIENvbW1lbnQ9 IiIgLz4KKwk8L3RhYmxlX3N0cnVjdHVyZT4KKwk8dGFibGVfZGF0YSBuYW1lPSJ0MSI+CisJPHJv dz4KKwkJPGZpZWxkIG5hbWU9ImMxIj4xPC9maWVsZD4KKwkJPGZpZWxkIG5hbWU9ImMyIj5hYWE8 L2ZpZWxkPgorCTwvcm93PgorCTxyb3c+CisJCTxmaWVsZCBuYW1lPSJjMSI+MjwvZmllbGQ+CisJ CTxmaWVsZCBuYW1lPSJjMiI+YmJiPC9maWVsZD4KKwk8L3Jvdz4KKwk8cm93PgorCQk8ZmllbGQg bmFtZT0iYzEiPjM8L2ZpZWxkPgorCQk8ZmllbGQgbmFtZT0iYzIiPmNjYzwvZmllbGQ+CisJPC9y b3c+CisJPC90YWJsZV9kYXRhPgorCTx0YWJsZV9zdHJ1Y3R1cmUgbmFtZT0idDIiPgorCQk8Zmll bGQgRmllbGQ9ImMxIiBUeXBlPSJpbnQoMTEpIiBOdWxsPSJZRVMiIEtleT0iIiBFeHRyYT0iIiBD b21tZW50PSIiIC8+CisJCTxvcHRpb25zIE5hbWU9InQyIiBFbmdpbmU9Ik15SVNBTSIgVmVyc2lv bj0iMTAiIFJvd19mb3JtYXQ9IkZpeGVkIiBSb3dzPSIzIiBBdmdfcm93X2xlbmd0aD0iNyIgRGF0 YV9sZW5ndGg9IjIxIiBNYXhfZGF0YV9sZW5ndGg9IjE5NzAzMjQ4MzY5NzQ1OTEiIEluZGV4X2xl bmd0aD0iMTAyNCIgRGF0YV9mcmVlPSIwIiBDcmVhdGVfdGltZT0iLS1USU1FLS0iIFVwZGF0ZV90 aW1lPSItLVRJTUUtLSIgQ29sbGF0aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSIgQ3JlYXRlX29wdGlv bnM9IiIgQ29tbWVudD0iIiAvPgorCTwvdGFibGVfc3RydWN0dXJlPgorCTx0YWJsZV9kYXRhIG5h bWU9InQyIj4KKwk8cm93PgorCQk8ZmllbGQgbmFtZT0iYzEiPjE8L2ZpZWxkPgorCTwvcm93Pgor CTxyb3c+CisJCTxmaWVsZCBuYW1lPSJjMSI+MjwvZmllbGQ+CisJPC9yb3c+CisJPHJvdz4KKwkJ PGZpZWxkIG5hbWU9ImMxIj4zPC9maWVsZD4KKwk8L3Jvdz4KKwk8L3RhYmxlX2RhdGE+CisJPHRy aWdnZXJzIG5hbWU9InQyIj4KKwkJPHRyaWdnZXIgVHJpZ2dlcj0idHJpZzEiIHNxbF9tb2RlPSIi IGNoYXJhY3Rlcl9zZXRfY2xpZW50PSJsYXRpbjEiIGNvbGxhdGlvbl9jb25uZWN0aW9uPSJsYXRp bjFfc3dlZGlzaF9jaSIgRGF0YWJhc2VfQ29sbGF0aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSI+Cis8 IVtDREFUQVsKK0NSRUFURSBERUZJTkVSPWByb290YEBgbG9jYWxob3N0YCBUUklHR0VSIHRyaWcx IEJFRk9SRSBJTlNFUlQgT04gdDIKK0ZPUiBFQUNIIFJPVyBCRUdJTgorSU5TRVJUIElOVE8gdDIg VkFMVUVTKDEpOworRU5ECitdXT4KKwkJPC90cmlnZ2VyPgorCQk8dHJpZ2dlciBUcmlnZ2VyPSJ0 cmlnMiIgc3FsX21vZGU9IiIgY2hhcmFjdGVyX3NldF9jbGllbnQ9ImxhdGluMSIgY29sbGF0aW9u X2Nvbm5lY3Rpb249ImxhdGluMV9zd2VkaXNoX2NpIiBEYXRhYmFzZV9Db2xsYXRpb249ImxhdGlu MV9zd2VkaXNoX2NpIj4KKzwhW0NEQVRBWworQ1JFQVRFIERFRklORVI9YHJvb3RgQGBsb2NhbGhv c3RgIFRSSUdHRVIgdHJpZzIgQUZURVIgSU5TRVJUIE9OIHQyCitGT1IgRUFDSCBST1cgQkVHSU4K K0lOU0VSVCBJTlRPIHQyIFZBTFVFUygxLCAnXV1dXT48IVtDREFUQVs+Jyk7CitJTlNFUlQgSU5U TyB0MiBWQUxVRVMoMiwgJzwhW0NEQVRBXV1dXT48IVtDREFUQVs+Jyk7CitJTlNFUlQgSU5UTyB0 MiBWQUxVRVMoMywgJzwhW0NEQVRBWycpOworSU5TRVJUIElOVE8gdDIgVkFMVUVTKDQsICc8ID4g JiBcICIgXycpOworRU5ECitdXT4KKwkJPC90cmlnZ2VyPgorCTwvdHJpZ2dlcnM+CisJPHRhYmxl X3N0cnVjdHVyZSBuYW1lPSJ2MSI+CisJCTxmaWVsZCBGaWVsZD0iYzEiIFR5cGU9ImludCgxMSki IE51bGw9IllFUyIgS2V5PSIiIEV4dHJhPSIiIENvbW1lbnQ9IiIgLz4KKwkJPGZpZWxkIEZpZWxk PSJjMiIgVHlwZT0idmFyY2hhcigyMCkiIE51bGw9IllFUyIgS2V5PSIiIEV4dHJhPSIiIENvbW1l bnQ9IiIgLz4KKwkJPG9wdGlvbnMgTmFtZT0idjEiIENvbW1lbnQ9IlZJRVciIC8+CisJPC90YWJs ZV9zdHJ1Y3R1cmU+CisJPHRhYmxlX3N0cnVjdHVyZSBuYW1lPSJ2MiI+CisJCTxmaWVsZCBGaWVs ZD0iYzEiIFR5cGU9ImludCgxMSkiIE51bGw9IllFUyIgS2V5PSIiIEV4dHJhPSIiIENvbW1lbnQ9 IiIgLz4KKwkJPG9wdGlvbnMgTmFtZT0idjIiIENvbW1lbnQ9IlZJRVciIC8+CisJPC90YWJsZV9z dHJ1Y3R1cmU+CisJPGV2ZW50cz4KKwkJPGV2ZW50IEV2ZW50PSJlMSIgc3FsX21vZGU9IiIgdGlt ZV96b25lPSJTWVNURU0iIGNoYXJhY3Rlcl9zZXRfY2xpZW50PSJsYXRpbjEiIGNvbGxhdGlvbl9j b25uZWN0aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSIgRGF0YWJhc2VfQ29sbGF0aW9uPSJsYXRpbjFf c3dlZGlzaF9jaSI+Cis8IVtDREFUQVsKK0NSRUFURSBERUZJTkVSPWByb290YEBgbG9jYWxob3N0 YCBFVkVOVCBgZTFgIE9OIFNDSEVEVUxFIEVWRVJZIDEgU0VDT05EIFNUQVJUUyAnLS1USU1FLS0n IE9OIENPTVBMRVRJT04gTk9UIFBSRVNFUlZFIEVOQUJMRSBETyBEUk9QIERBVEFCQVNFIEJVRzUy NzkyCitdXT4KKwkJPC9ldmVudD4KKwkJPGV2ZW50IEV2ZW50PSJlMiIgc3FsX21vZGU9IiIgdGlt ZV96b25lPSJTWVNURU0iIGNoYXJhY3Rlcl9zZXRfY2xpZW50PSJsYXRpbjEiIGNvbGxhdGlvbl9j b25uZWN0aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSIgRGF0YWJhc2VfQ29sbGF0aW9uPSJsYXRpbjFf c3dlZGlzaF9jaSI+Cis8IVtDREFUQVsKK0NSRUFURSBERUZJTkVSPWByb290YEBgbG9jYWxob3N0 YCBFVkVOVCBgZTJgIE9OIFNDSEVEVUxFIEVWRVJZIDEgU0VDT05EIFNUQVJUUyAnLS1USU1FLS0n IE9OIENPTVBMRVRJT04gTk9UIFBSRVNFUlZFIEVOQUJMRSBETyBEUk9QIERBVEFCQVNFIEJVRzUy NzkyCitdXT4KKwkJPC9ldmVudD4KKwk8L2V2ZW50cz4KKwk8cm91dGluZXM+CisJCTxyb3V0aW5l IEZ1bmN0aW9uPSJoZWxsbzEiIHNxbF9tb2RlPSIiIGNoYXJhY3Rlcl9zZXRfY2xpZW50PSJsYXRp bjEiIGNvbGxhdGlvbl9jb25uZWN0aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSIgRGF0YWJhc2VfQ29s bGF0aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSI+Cis8IVtDREFUQVsKK0NSRUFURSBERUZJTkVSPWBy b290YEBgbG9jYWxob3N0YCBGVU5DVElPTiBgaGVsbG8xYChzIENIQVIoMjApKSBSRVRVUk5TIGNo YXIoNTApIENIQVJTRVQgbGF0aW4xCisgICAgREVURVJNSU5JU1RJQworUkVUVVJOIENPTkNBVCgn SGVsbG8sICcgLHMgLCchJykKK11dPgorCQk8L3JvdXRpbmU+CisJCTxyb3V0aW5lIEZ1bmN0aW9u PSJoZWxsbzIiIHNxbF9tb2RlPSIiIGNoYXJhY3Rlcl9zZXRfY2xpZW50PSJsYXRpbjEiIGNvbGxh dGlvbl9jb25uZWN0aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSIgRGF0YWJhc2VfQ29sbGF0aW9uPSJs YXRpbjFfc3dlZGlzaF9jaSI+Cis8IVtDREFUQVsKK0NSRUFURSBERUZJTkVSPWByb290YEBgbG9j YWxob3N0YCBGVU5DVElPTiBgaGVsbG8yYChzIENIQVIoMjApKSBSRVRVUk5TIGNoYXIoNTApIENI QVJTRVQgbGF0aW4xCisgICAgREVURVJNSU5JU1RJQworUkVUVVJOIENPTkNBVCgnXV1dXT48IVtD REFUQVs+LCAnICwgcyAsJyEnKQorXV0+CisJCTwvcm91dGluZT4KKwkJPHJvdXRpbmUgUHJvY2Vk dXJlPSJzaW1wbGVwcm9jMSIgc3FsX21vZGU9IiIgY2hhcmFjdGVyX3NldF9jbGllbnQ9ImxhdGlu MSIgY29sbGF0aW9uX2Nvbm5lY3Rpb249ImxhdGluMV9zd2VkaXNoX2NpIiBEYXRhYmFzZV9Db2xs YXRpb249ImxhdGluMV9zd2VkaXNoX2NpIj4KKzwhW0NEQVRBWworQ1JFQVRFIERFRklORVI9YHJv b3RgQGBsb2NhbGhvc3RgIFBST0NFRFVSRSBgc2ltcGxlcHJvYzFgKE9VVCBwYXJhbTEgSU5UKQor QkVHSU4KK1NFTEVDVCBDT1VOVCgqKSBJTlRPIHBhcmFtMSBGUk9NIHQxOworRU5ECitdXT4KKwkJ PC9yb3V0aW5lPgorCQk8cm91dGluZSBQcm9jZWR1cmU9InNpbXBsZXByb2MyIiBzcWxfbW9kZT0i IiBjaGFyYWN0ZXJfc2V0X2NsaWVudD0ibGF0aW4xIiBjb2xsYXRpb25fY29ubmVjdGlvbj0ibGF0 aW4xX3N3ZWRpc2hfY2kiIERhdGFiYXNlX0NvbGxhdGlvbj0ibGF0aW4xX3N3ZWRpc2hfY2kiPgor PCFbQ0RBVEFbCitDUkVBVEUgREVGSU5FUj1gcm9vdGBAYGxvY2FsaG9zdGAgUFJPQ0VEVVJFIGBz aW1wbGVwcm9jMmAoT1VUIHBhcmFtMSBJTlQpCitCRUdJTgorU0VMRUNUIENPVU5UKCopIElOVE8g cGFyYW0xIEZST00gdDI7CitFTkQKK11dPgorCQk8L3JvdXRpbmU+CisJPC9yb3V0aW5lcz4KKzwv ZGF0YWJhc2U+Cis8L215c3FsZHVtcD4KKworIyBEdW1waW5nIEJVRzUyNzkyIGRhdGFiYXNlIGlu IHhtbCBmb3JtYXQgd2l0aCBjb21tZW50cy4KKworIyBSdW5uaW5nICdyZXBsYWNlX3JlZ2V4IG9u IHRpbWVzdGFtcCcKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPG15c3FsZHVtcCB4bWxuczp4c2k9 Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIj4KKzxkYXRhYmFzZSBu YW1lPSJCVUc1Mjc5MiI+Cis8IS0tIAorLQorLSBUYWJsZSBzdHJ1Y3R1cmUgZm9yIHRhYmxlIGB0 MWAKKy0KKworIC0tPgorCTx0YWJsZV9zdHJ1Y3R1cmUgbmFtZT0idDEiPgorCQk8ZmllbGQgRmll bGQ9ImMxIiBUeXBlPSJpbnQoMTEpIiBOdWxsPSJZRVMiIEtleT0iIiBFeHRyYT0iIiBDb21tZW50 PSIiIC8+CisJCTxmaWVsZCBGaWVsZD0iYzIiIFR5cGU9InZhcmNoYXIoMjApIiBOdWxsPSJZRVMi IEtleT0iIiBFeHRyYT0iIiBDb21tZW50PSIiIC8+CisJCTxvcHRpb25zIE5hbWU9InQxIiBFbmdp bmU9Ik15SVNBTSIgVmVyc2lvbj0iMTAiIFJvd19mb3JtYXQ9IkR5bmFtaWMiIFJvd3M9IjMiIEF2 Z19yb3dfbGVuZ3RoPSIyMCIgRGF0YV9sZW5ndGg9IjYwIiBNYXhfZGF0YV9sZW5ndGg9IjI4MTQ3 NDk3NjcxMDY1NSIgSW5kZXhfbGVuZ3RoPSIxMDI0IiBEYXRhX2ZyZWU9IjAiIENyZWF0ZV90aW1l PSItLVRJTUUtLSIgVXBkYXRlX3RpbWU9Ii0tVElNRS0tIiBDb2xsYXRpb249ImxhdGluMV9zd2Vk aXNoX2NpIiBDcmVhdGVfb3B0aW9ucz0iIiBDb21tZW50PSIiIC8+CisJPC90YWJsZV9zdHJ1Y3R1 cmU+Cis8IS0tIAorLQorLSBEdW1waW5nIGRhdGEgZm9yIHRhYmxlIGB0MWAKKy0KKyAtLT4KKwk8 dGFibGVfZGF0YSBuYW1lPSJ0MSI+CisJPHJvdz4KKwkJPGZpZWxkIG5hbWU9ImMxIj4xPC9maWVs ZD4KKwkJPGZpZWxkIG5hbWU9ImMyIj5hYWE8L2ZpZWxkPgorCTwvcm93PgorCTxyb3c+CisJCTxm aWVsZCBuYW1lPSJjMSI+MjwvZmllbGQ+CisJCTxmaWVsZCBuYW1lPSJjMiI+YmJiPC9maWVsZD4K Kwk8L3Jvdz4KKwk8cm93PgorCQk8ZmllbGQgbmFtZT0iYzEiPjM8L2ZpZWxkPgorCQk8ZmllbGQg bmFtZT0iYzIiPmNjYzwvZmllbGQ+CisJPC9yb3c+CisJPC90YWJsZV9kYXRhPgorPCEtLSAKKy0K Ky0gVGFibGUgc3RydWN0dXJlIGZvciB0YWJsZSBgdDJgCistCisKKyAtLT4KKwk8dGFibGVfc3Ry dWN0dXJlIG5hbWU9InQyIj4KKwkJPGZpZWxkIEZpZWxkPSJjMSIgVHlwZT0iaW50KDExKSIgTnVs bD0iWUVTIiBLZXk9IiIgRXh0cmE9IiIgQ29tbWVudD0iIiAvPgorCQk8b3B0aW9ucyBOYW1lPSJ0 MiIgRW5naW5lPSJNeUlTQU0iIFZlcnNpb249IjEwIiBSb3dfZm9ybWF0PSJGaXhlZCIgUm93cz0i MyIgQXZnX3Jvd19sZW5ndGg9IjciIERhdGFfbGVuZ3RoPSIyMSIgTWF4X2RhdGFfbGVuZ3RoPSIx OTcwMzI0ODM2OTc0NTkxIiBJbmRleF9sZW5ndGg9IjEwMjQiIERhdGFfZnJlZT0iMCIgQ3JlYXRl X3RpbWU9Ii0tVElNRS0tIiBVcGRhdGVfdGltZT0iLS1USU1FLS0iIENvbGxhdGlvbj0ibGF0aW4x X3N3ZWRpc2hfY2kiIENyZWF0ZV9vcHRpb25zPSIiIENvbW1lbnQ9IiIgLz4KKwk8L3RhYmxlX3N0 cnVjdHVyZT4KKzwhLS0gCistCistIER1bXBpbmcgZGF0YSBmb3IgdGFibGUgYHQyYAorLQorIC0t PgorCTx0YWJsZV9kYXRhIG5hbWU9InQyIj4KKwk8cm93PgorCQk8ZmllbGQgbmFtZT0iYzEiPjE8 L2ZpZWxkPgorCTwvcm93PgorCTxyb3c+CisJCTxmaWVsZCBuYW1lPSJjMSI+MjwvZmllbGQ+CisJ PC9yb3c+CisJPHJvdz4KKwkJPGZpZWxkIG5hbWU9ImMxIj4zPC9maWVsZD4KKwk8L3Jvdz4KKwk8 L3RhYmxlX2RhdGE+CisJPHRyaWdnZXJzIG5hbWU9InQyIj4KKwkJPHRyaWdnZXIgVHJpZ2dlcj0i dHJpZzEiIHNxbF9tb2RlPSIiIGNoYXJhY3Rlcl9zZXRfY2xpZW50PSJsYXRpbjEiIGNvbGxhdGlv bl9jb25uZWN0aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSIgRGF0YWJhc2VfQ29sbGF0aW9uPSJsYXRp bjFfc3dlZGlzaF9jaSI+Cis8IVtDREFUQVsKK0NSRUFURSBERUZJTkVSPWByb290YEBgbG9jYWxo b3N0YCBUUklHR0VSIHRyaWcxIEJFRk9SRSBJTlNFUlQgT04gdDIKK0ZPUiBFQUNIIFJPVyBCRUdJ TgorSU5TRVJUIElOVE8gdDIgVkFMVUVTKDEpOworRU5ECitdXT4KKwkJPC90cmlnZ2VyPgorCQk8 dHJpZ2dlciBUcmlnZ2VyPSJ0cmlnMiIgc3FsX21vZGU9IiIgY2hhcmFjdGVyX3NldF9jbGllbnQ9 ImxhdGluMSIgY29sbGF0aW9uX2Nvbm5lY3Rpb249ImxhdGluMV9zd2VkaXNoX2NpIiBEYXRhYmFz ZV9Db2xsYXRpb249ImxhdGluMV9zd2VkaXNoX2NpIj4KKzwhW0NEQVRBWworQ1JFQVRFIERFRklO RVI9YHJvb3RgQGBsb2NhbGhvc3RgIFRSSUdHRVIgdHJpZzIgQUZURVIgSU5TRVJUIE9OIHQyCitG T1IgRUFDSCBST1cgQkVHSU4KK0lOU0VSVCBJTlRPIHQyIFZBTFVFUygxLCAnXV1dXT48IVtDREFU QVs+Jyk7CitJTlNFUlQgSU5UTyB0MiBWQUxVRVMoMiwgJzwhW0NEQVRBXV1dXT48IVtDREFUQVs+ Jyk7CitJTlNFUlQgSU5UTyB0MiBWQUxVRVMoMywgJzwhW0NEQVRBWycpOworSU5TRVJUIElOVE8g dDIgVkFMVUVTKDQsICc8ID4gJiBcICIgXycpOworRU5ECitdXT4KKwkJPC90cmlnZ2VyPgorCTwv dHJpZ2dlcnM+Cis8IS0tIAorLQorLSBUYWJsZSBzdHJ1Y3R1cmUgZm9yIHRhYmxlIGB2MWAKKy0K KworIC0tPgorCTx0YWJsZV9zdHJ1Y3R1cmUgbmFtZT0idjEiPgorCQk8ZmllbGQgRmllbGQ9ImMx IiBUeXBlPSJpbnQoMTEpIiBOdWxsPSJZRVMiIEtleT0iIiBFeHRyYT0iIiBDb21tZW50PSIiIC8+ CisJCTxmaWVsZCBGaWVsZD0iYzIiIFR5cGU9InZhcmNoYXIoMjApIiBOdWxsPSJZRVMiIEtleT0i IiBFeHRyYT0iIiBDb21tZW50PSIiIC8+CisJCTxvcHRpb25zIE5hbWU9InYxIiBDb21tZW50PSJW SUVXIiAvPgorCTwvdGFibGVfc3RydWN0dXJlPgorPCEtLSAKKy0KKy0gVGFibGUgc3RydWN0dXJl IGZvciB0YWJsZSBgdjJgCistCisKKyAtLT4KKwk8dGFibGVfc3RydWN0dXJlIG5hbWU9InYyIj4K KwkJPGZpZWxkIEZpZWxkPSJjMSIgVHlwZT0iaW50KDExKSIgTnVsbD0iWUVTIiBLZXk9IiIgRXh0 cmE9IiIgQ29tbWVudD0iIiAvPgorCQk8b3B0aW9ucyBOYW1lPSJ2MiIgQ29tbWVudD0iVklFVyIg Lz4KKwk8L3RhYmxlX3N0cnVjdHVyZT4KKzwhLS0gCistCistIER1bXBpbmcgZXZlbnRzIGZvciBk YXRhYmFzZSAnQlVHNTI3OTInCistCisgLS0+CisJPGV2ZW50cz4KKwkJPGV2ZW50IEV2ZW50PSJl MSIgc3FsX21vZGU9IiIgdGltZV96b25lPSJTWVNURU0iIGNoYXJhY3Rlcl9zZXRfY2xpZW50PSJs YXRpbjEiIGNvbGxhdGlvbl9jb25uZWN0aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSIgRGF0YWJhc2Vf Q29sbGF0aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSI+Cis8IVtDREFUQVsKK0NSRUFURSBERUZJTkVS PWByb290YEBgbG9jYWxob3N0YCBFVkVOVCBgZTFgIE9OIFNDSEVEVUxFIEVWRVJZIDEgU0VDT05E IFNUQVJUUyAnLS1USU1FLS0nIE9OIENPTVBMRVRJT04gTk9UIFBSRVNFUlZFIEVOQUJMRSBETyBE Uk9QIERBVEFCQVNFIEJVRzUyNzkyCitdXT4KKwkJPC9ldmVudD4KKwkJPGV2ZW50IEV2ZW50PSJl MiIgc3FsX21vZGU9IiIgdGltZV96b25lPSJTWVNURU0iIGNoYXJhY3Rlcl9zZXRfY2xpZW50PSJs YXRpbjEiIGNvbGxhdGlvbl9jb25uZWN0aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSIgRGF0YWJhc2Vf Q29sbGF0aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSI+Cis8IVtDREFUQVsKK0NSRUFURSBERUZJTkVS PWByb290YEBgbG9jYWxob3N0YCBFVkVOVCBgZTJgIE9OIFNDSEVEVUxFIEVWRVJZIDEgU0VDT05E IFNUQVJUUyAnLS1USU1FLS0nIE9OIENPTVBMRVRJT04gTk9UIFBSRVNFUlZFIEVOQUJMRSBETyBE Uk9QIERBVEFCQVNFIEJVRzUyNzkyCitdXT4KKwkJPC9ldmVudD4KKwk8L2V2ZW50cz4KKzwhLS0g CistCistIER1bXBpbmcgcm91dGluZXMgZm9yIGRhdGFiYXNlICdCVUc1Mjc5MicKKy0KKyAtLT4K Kwk8cm91dGluZXM+CisJCTxyb3V0aW5lIEZ1bmN0aW9uPSJoZWxsbzEiIHNxbF9tb2RlPSIiIGNo YXJhY3Rlcl9zZXRfY2xpZW50PSJsYXRpbjEiIGNvbGxhdGlvbl9jb25uZWN0aW9uPSJsYXRpbjFf c3dlZGlzaF9jaSIgRGF0YWJhc2VfQ29sbGF0aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSI+Cis8IVtD REFUQVsKK0NSRUFURSBERUZJTkVSPWByb290YEBgbG9jYWxob3N0YCBGVU5DVElPTiBgaGVsbG8x YChzIENIQVIoMjApKSBSRVRVUk5TIGNoYXIoNTApIENIQVJTRVQgbGF0aW4xCisgICAgREVURVJN SU5JU1RJQworUkVUVVJOIENPTkNBVCgnSGVsbG8sICcgLHMgLCchJykKK11dPgorCQk8L3JvdXRp bmU+CisJCTxyb3V0aW5lIEZ1bmN0aW9uPSJoZWxsbzIiIHNxbF9tb2RlPSIiIGNoYXJhY3Rlcl9z ZXRfY2xpZW50PSJsYXRpbjEiIGNvbGxhdGlvbl9jb25uZWN0aW9uPSJsYXRpbjFfc3dlZGlzaF9j aSIgRGF0YWJhc2VfQ29sbGF0aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSI+Cis8IVtDREFUQVsKK0NS RUFURSBERUZJTkVSPWByb290YEBgbG9jYWxob3N0YCBGVU5DVElPTiBgaGVsbG8yYChzIENIQVIo MjApKSBSRVRVUk5TIGNoYXIoNTApIENIQVJTRVQgbGF0aW4xCisgICAgREVURVJNSU5JU1RJQwor UkVUVVJOIENPTkNBVCgnXV1dXT48IVtDREFUQVs+LCAnICwgcyAsJyEnKQorXV0+CisJCTwvcm91 dGluZT4KKwkJPHJvdXRpbmUgUHJvY2VkdXJlPSJzaW1wbGVwcm9jMSIgc3FsX21vZGU9IiIgY2hh cmFjdGVyX3NldF9jbGllbnQ9ImxhdGluMSIgY29sbGF0aW9uX2Nvbm5lY3Rpb249ImxhdGluMV9z d2VkaXNoX2NpIiBEYXRhYmFzZV9Db2xsYXRpb249ImxhdGluMV9zd2VkaXNoX2NpIj4KKzwhW0NE QVRBWworQ1JFQVRFIERFRklORVI9YHJvb3RgQGBsb2NhbGhvc3RgIFBST0NFRFVSRSBgc2ltcGxl cHJvYzFgKE9VVCBwYXJhbTEgSU5UKQorQkVHSU4KK1NFTEVDVCBDT1VOVCgqKSBJTlRPIHBhcmFt MSBGUk9NIHQxOworRU5ECitdXT4KKwkJPC9yb3V0aW5lPgorCQk8cm91dGluZSBQcm9jZWR1cmU9 InNpbXBsZXByb2MyIiBzcWxfbW9kZT0iIiBjaGFyYWN0ZXJfc2V0X2NsaWVudD0ibGF0aW4xIiBj b2xsYXRpb25fY29ubmVjdGlvbj0ibGF0aW4xX3N3ZWRpc2hfY2kiIERhdGFiYXNlX0NvbGxhdGlv bj0ibGF0aW4xX3N3ZWRpc2hfY2kiPgorPCFbQ0RBVEFbCitDUkVBVEUgREVGSU5FUj1gcm9vdGBA YGxvY2FsaG9zdGAgUFJPQ0VEVVJFIGBzaW1wbGVwcm9jMmAoT1VUIHBhcmFtMSBJTlQpCitCRUdJ TgorU0VMRUNUIENPVU5UKCopIElOVE8gcGFyYW0xIEZST00gdDI7CitFTkQKK11dPgorCQk8L3Jv dXRpbmU+CisJPC9yb3V0aW5lcz4KKzwvZGF0YWJhc2U+Cis8L215c3FsZHVtcD4KKworIyBUZXN0 IHRvIGNoZWNrICdJbnN1ZmZpY2llbnQgcHJpdmlsZWdlcycgZXJyb3IuCisKK0dSQU5UIEFMTCBQ UklWSUxFR0VTIE9OIEJVRzUyNzkyLiogVE8gdXNlcjE7CisjIFJ1bm5pbmcgJ3JlcGxhY2VfcmVn ZXggb24gdGltZXN0YW1wJworPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8bXlzcWxkdW1wIHhtbG5z OnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPgorPGRhdGFi YXNlIG5hbWU9IkJVRzUyNzkyIj4KKwk8dGFibGVfc3RydWN0dXJlIG5hbWU9InQxIj4KKwkJPGZp ZWxkIEZpZWxkPSJjMSIgVHlwZT0iaW50KDExKSIgTnVsbD0iWUVTIiBLZXk9IiIgRXh0cmE9IiIg Q29tbWVudD0iIiAvPgorCQk8ZmllbGQgRmllbGQ9ImMyIiBUeXBlPSJ2YXJjaGFyKDIwKSIgTnVs bD0iWUVTIiBLZXk9IiIgRXh0cmE9IiIgQ29tbWVudD0iIiAvPgorCQk8b3B0aW9ucyBOYW1lPSJ0 MSIgRW5naW5lPSJNeUlTQU0iIFZlcnNpb249IjEwIiBSb3dfZm9ybWF0PSJEeW5hbWljIiBSb3dz PSIzIiBBdmdfcm93X2xlbmd0aD0iMjAiIERhdGFfbGVuZ3RoPSI2MCIgTWF4X2RhdGFfbGVuZ3Ro PSIyODE0NzQ5NzY3MTA2NTUiIEluZGV4X2xlbmd0aD0iMTAyNCIgRGF0YV9mcmVlPSIwIiBDcmVh dGVfdGltZT0iLS1USU1FLS0iIFVwZGF0ZV90aW1lPSItLVRJTUUtLSIgQ29sbGF0aW9uPSJsYXRp bjFfc3dlZGlzaF9jaSIgQ3JlYXRlX29wdGlvbnM9IiIgQ29tbWVudD0iIiAvPgorCTwvdGFibGVf c3RydWN0dXJlPgorCTx0YWJsZV9kYXRhIG5hbWU9InQxIj4KKwk8cm93PgorCQk8ZmllbGQgbmFt ZT0iYzEiPjE8L2ZpZWxkPgorCQk8ZmllbGQgbmFtZT0iYzIiPmFhYTwvZmllbGQ+CisJPC9yb3c+ CisJPHJvdz4KKwkJPGZpZWxkIG5hbWU9ImMxIj4yPC9maWVsZD4KKwkJPGZpZWxkIG5hbWU9ImMy Ij5iYmI8L2ZpZWxkPgorCTwvcm93PgorCTxyb3c+CisJCTxmaWVsZCBuYW1lPSJjMSI+MzwvZmll bGQ+CisJCTxmaWVsZCBuYW1lPSJjMiI+Y2NjPC9maWVsZD4KKwk8L3Jvdz4KKwk8L3RhYmxlX2Rh dGE+CisJPHRhYmxlX3N0cnVjdHVyZSBuYW1lPSJ0MiI+CisJCTxmaWVsZCBGaWVsZD0iYzEiIFR5 cGU9ImludCgxMSkiIE51bGw9IllFUyIgS2V5PSIiIEV4dHJhPSIiIENvbW1lbnQ9IiIgLz4KKwkJ PG9wdGlvbnMgTmFtZT0idDIiIEVuZ2luZT0iTXlJU0FNIiBWZXJzaW9uPSIxMCIgUm93X2Zvcm1h dD0iRml4ZWQiIFJvd3M9IjMiIEF2Z19yb3dfbGVuZ3RoPSI3IiBEYXRhX2xlbmd0aD0iMjEiIE1h eF9kYXRhX2xlbmd0aD0iMTk3MDMyNDgzNjk3NDU5MSIgSW5kZXhfbGVuZ3RoPSIxMDI0IiBEYXRh X2ZyZWU9IjAiIENyZWF0ZV90aW1lPSItLVRJTUUtLSIgVXBkYXRlX3RpbWU9Ii0tVElNRS0tIiBD b2xsYXRpb249ImxhdGluMV9zd2VkaXNoX2NpIiBDcmVhdGVfb3B0aW9ucz0iIiBDb21tZW50PSIi IC8+CisJPC90YWJsZV9zdHJ1Y3R1cmU+CisJPHRhYmxlX2RhdGEgbmFtZT0idDIiPgorCTxyb3c+ CisJCTxmaWVsZCBuYW1lPSJjMSI+MTwvZmllbGQ+CisJPC9yb3c+CisJPHJvdz4KKwkJPGZpZWxk IG5hbWU9ImMxIj4yPC9maWVsZD4KKwk8L3Jvdz4KKwk8cm93PgorCQk8ZmllbGQgbmFtZT0iYzEi PjM8L2ZpZWxkPgorCTwvcm93PgorCTwvdGFibGVfZGF0YT4KKwk8dHJpZ2dlcnMgbmFtZT0idDIi PgorCQk8dHJpZ2dlciBUcmlnZ2VyPSJ0cmlnMSIgc3FsX21vZGU9IiIgY2hhcmFjdGVyX3NldF9j bGllbnQ9ImxhdGluMSIgY29sbGF0aW9uX2Nvbm5lY3Rpb249ImxhdGluMV9zd2VkaXNoX2NpIiBE YXRhYmFzZV9Db2xsYXRpb249ImxhdGluMV9zd2VkaXNoX2NpIj4KKzwhW0NEQVRBWworQ1JFQVRF IERFRklORVI9YHJvb3RgQGBsb2NhbGhvc3RgIFRSSUdHRVIgdHJpZzEgQkVGT1JFIElOU0VSVCBP TiB0MgorRk9SIEVBQ0ggUk9XIEJFR0lOCitJTlNFUlQgSU5UTyB0MiBWQUxVRVMoMSk7CitFTkQK K11dPgorCQk8L3RyaWdnZXI+CisJCTx0cmlnZ2VyIFRyaWdnZXI9InRyaWcyIiBzcWxfbW9kZT0i IiBjaGFyYWN0ZXJfc2V0X2NsaWVudD0ibGF0aW4xIiBjb2xsYXRpb25fY29ubmVjdGlvbj0ibGF0 aW4xX3N3ZWRpc2hfY2kiIERhdGFiYXNlX0NvbGxhdGlvbj0ibGF0aW4xX3N3ZWRpc2hfY2kiPgor PCFbQ0RBVEFbCitDUkVBVEUgREVGSU5FUj1gcm9vdGBAYGxvY2FsaG9zdGAgVFJJR0dFUiB0cmln MiBBRlRFUiBJTlNFUlQgT04gdDIKK0ZPUiBFQUNIIFJPVyBCRUdJTgorSU5TRVJUIElOVE8gdDIg VkFMVUVTKDEsICddXV1dPjwhW0NEQVRBWz4nKTsKK0lOU0VSVCBJTlRPIHQyIFZBTFVFUygyLCAn PCFbQ0RBVEFdXV1dPjwhW0NEQVRBWz4nKTsKK0lOU0VSVCBJTlRPIHQyIFZBTFVFUygzLCAnPCFb Q0RBVEFbJyk7CitJTlNFUlQgSU5UTyB0MiBWQUxVRVMoNCwgJzwgPiAmIFwgIiBfJyk7CitFTkQK K11dPgorCQk8L3RyaWdnZXI+CisJPC90cmlnZ2Vycz4KKwk8dGFibGVfc3RydWN0dXJlIG5hbWU9 InYxIj4KKwkJPGZpZWxkIEZpZWxkPSJjMSIgVHlwZT0iaW50KDExKSIgTnVsbD0iWUVTIiBLZXk9 IiIgRXh0cmE9IiIgQ29tbWVudD0iIiAvPgorCQk8ZmllbGQgRmllbGQ9ImMyIiBUeXBlPSJ2YXJj aGFyKDIwKSIgTnVsbD0iWUVTIiBLZXk9IiIgRXh0cmE9IiIgQ29tbWVudD0iIiAvPgorCQk8b3B0 aW9ucyBOYW1lPSJ2MSIgQ29tbWVudD0iVklFVyIgLz4KKwk8L3RhYmxlX3N0cnVjdHVyZT4KKwk8 dGFibGVfc3RydWN0dXJlIG5hbWU9InYyIj4KKwkJPGZpZWxkIEZpZWxkPSJjMSIgVHlwZT0iaW50 KDExKSIgTnVsbD0iWUVTIiBLZXk9IiIgRXh0cmE9IiIgQ29tbWVudD0iIiAvPgorCQk8b3B0aW9u cyBOYW1lPSJ2MiIgQ29tbWVudD0iVklFVyIgLz4KKwk8L3RhYmxlX3N0cnVjdHVyZT4KKwk8ZXZl bnRzPgorCQk8ZXZlbnQgRXZlbnQ9ImUxIiBzcWxfbW9kZT0iIiB0aW1lX3pvbmU9IlNZU1RFTSIg Y2hhcmFjdGVyX3NldF9jbGllbnQ9ImxhdGluMSIgY29sbGF0aW9uX2Nvbm5lY3Rpb249ImxhdGlu MV9zd2VkaXNoX2NpIiBEYXRhYmFzZV9Db2xsYXRpb249ImxhdGluMV9zd2VkaXNoX2NpIj4KKzwh W0NEQVRBWworQ1JFQVRFIERFRklORVI9YHJvb3RgQGBsb2NhbGhvc3RgIEVWRU5UIGBlMWAgT04g U0NIRURVTEUgRVZFUlkgMSBTRUNPTkQgU1RBUlRTICctLVRJTUUtLScgT04gQ09NUExFVElPTiBO T1QgUFJFU0VSVkUgRU5BQkxFIERPIERST1AgREFUQUJBU0UgQlVHNTI3OTIKK11dPgorCQk8L2V2 ZW50PgorCQk8ZXZlbnQgRXZlbnQ9ImUyIiBzcWxfbW9kZT0iIiB0aW1lX3pvbmU9IlNZU1RFTSIg Y2hhcmFjdGVyX3NldF9jbGllbnQ9ImxhdGluMSIgY29sbGF0aW9uX2Nvbm5lY3Rpb249ImxhdGlu MV9zd2VkaXNoX2NpIiBEYXRhYmFzZV9Db2xsYXRpb249ImxhdGluMV9zd2VkaXNoX2NpIj4KKzwh W0NEQVRBWworQ1JFQVRFIERFRklORVI9YHJvb3RgQGBsb2NhbGhvc3RgIEVWRU5UIGBlMmAgT04g U0NIRURVTEUgRVZFUlkgMSBTRUNPTkQgU1RBUlRTICctLVRJTUUtLScgT04gQ09NUExFVElPTiBO T1QgUFJFU0VSVkUgRU5BQkxFIERPIERST1AgREFUQUJBU0UgQlVHNTI3OTIKK11dPgorCQk8L2V2 ZW50PgorCTwvZXZlbnRzPgorCTxyb3V0aW5lcz4KKzwhLS0gCistIGluc3VmZmljaWVudCBwcml2 aWxlZ2VzIHRvIFNIT1cgQ1JFQVRFIEZVTkNUSU9OIGBoZWxsbzFgCisgLS0+Cis8IS0tIC0gZG9l cyB1c2VyMSBoYXZlIHBlcm1pc3Npb25zIG9uIG15c3FsLnByb2M/CisKKyAtLT4KK0RST1AgVVNF UiB1c2VyMTsKK0RST1AgREFUQUJBU0UgQlVHNTI3OTI7CisjIFVURi04CitDUkVBVEUgREFUQUJB U0UgQlVHNTI3OTI7CitVU0UgQlVHNTI3OTI7CitTRVQgTkFNRVMgdXRmODsKK0NSRUFURSBGVU5D VElPTiBgc3RyYcOfZWAgKCBjMSBDSEFSKDIwKSkKK1JFVFVSTlMgQ0hBUig1MCkgREVURVJNSU5J U1RJQworUkVUVVJOIENPTkNBVCgnXV0+LCAnLCBzLCAnIScpOworPD94bWwgdmVyc2lvbj0iMS4w Ij8+Cis8bXlzcWxkdW1wIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hl bWEtaW5zdGFuY2UiPgorPGRhdGFiYXNlIG5hbWU9IkJVRzUyNzkyIj4KKwk8cm91dGluZXM+CisJ CTxyb3V0aW5lIEZ1bmN0aW9uPSJzdHJhw59lIiBzcWxfbW9kZT0iIiBjaGFyYWN0ZXJfc2V0X2Ns aWVudD0idXRmOCIgY29sbGF0aW9uX2Nvbm5lY3Rpb249InV0ZjhfZ2VuZXJhbF9jaSIgRGF0YWJh c2VfQ29sbGF0aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSI+Cis8IVtDREFUQVsKK0NSRUFURSBERUZJ TkVSPWByb290YEBgbG9jYWxob3N0YCBGVU5DVElPTiBgc3RyYcOfZWAoIGMxIENIQVIoMjApKSBS RVRVUk5TIGNoYXIoNTApIENIQVJTRVQgbGF0aW4xCisgICAgREVURVJNSU5JU1RJQworUkVUVVJO IENPTkNBVCgnXV1dXT48IVtDREFUQVs+LCAnLCBzLCAnIScpCitdXT4KKwkJPC9yb3V0aW5lPgor CTwvcm91dGluZXM+Cis8L2RhdGFiYXNlPgorPC9teXNxbGR1bXA+CitEUk9QIERBVEFCQVNFIEJV RzUyNzkyOworVVNFIHRlc3Q7CisjCiAjIEVuZCBvZiA1LjEgdGVzdHMKICMKICMKCj09PSBtb2Rp ZmllZCBmaWxlICdteXNxbC10ZXN0L3QvbXlzcWxkdW1wLnRlc3QnCi0tLSBhL215c3FsLXRlc3Qv dC9teXNxbGR1bXAudGVzdAkyMDExLTEyLTI0IDA5OjM4OjU5ICswMDAwCisrKyBiL215c3FsLXRl c3QvdC9teXNxbGR1bXAudGVzdAkyMDEyLTAxLTEwIDEwOjQwOjQ4ICswMDAwCkBAIC0yMjAyLDYg KzIyMDIsMTE4IEBAIERST1AgREFUQUJBU0UgYHRlc3QtZGF0YWJhc2VgOwogVVNFIHRlc3Q7CiAK IC0tZWNobyAjCistLWVjaG8gIyBCVUcjMTE3NjAzODQgOiA1Mjc5MjogbXlzcWxkdW1wIGluIFhN TCBtb2RlIGRvZXMgbm90IGR1bXAgcm91dGluZXMuCistLWVjaG8gIworQ1JFQVRFIERBVEFCQVNF IEJVRzUyNzkyOworVVNFIEJVRzUyNzkyOworQ1JFQVRFIFRBQkxFIHQxIChjMSBJTlQsIGMyIFZB UkNIQVIoMjApKTsKK0NSRUFURSBUQUJMRSB0MiAoYzEgSU5UKTsKK0lOU0VSVCBJTlRPIHQxIFZB TFVFUyAoMSwgJ2FhYScpLCAoMiwgJ2JiYicpLCAoMywgJ2NjYycpOworSU5TRVJUIElOVE8gdDIg VkFMVUVTICgxKSwoMiksKDMpOworCistLWVjaG8gIyBTdG9yZWQgUHJvY2VkdXJlcy4KKworREVM SU1JVEVSIC8vOworQ1JFQVRFIFBST0NFRFVSRSBzaW1wbGVwcm9jMSAoT1VUIHBhcmFtMSBJTlQp CitCRUdJTgorICBTRUxFQ1QgQ09VTlQoKikgSU5UTyBwYXJhbTEgRlJPTSB0MTsKK0VORC8vCitE RUxJTUlURVIgOy8vCisKK0RFTElNSVRFUiAvLzsKK0NSRUFURSBQUk9DRURVUkUgc2ltcGxlcHJv YzIgKE9VVCBwYXJhbTEgSU5UKQorQkVHSU4KKyAgU0VMRUNUIENPVU5UKCopIElOVE8gcGFyYW0x IEZST00gdDI7CitFTkQvLworREVMSU1JVEVSIDsvLworCistLWVjaG8gIyBFdmVudHMuCisKK0NS RUFURSBFVkVOVCBlMSBPTiBTQ0hFRFVMRSBFVkVSWSAxIFNFQ09ORCBETyBEUk9QIERBVEFCQVNF IEJVRzUyNzkyOworQ1JFQVRFIEVWRU5UIGUyIE9OIFNDSEVEVUxFIEVWRVJZIDEgU0VDT05EIERP IERST1AgREFUQUJBU0UgQlVHNTI3OTI7CisKKy0tZWNobyAjIEZ1bmN0aW9ucy4KKworQ1JFQVRF IEZVTkNUSU9OIGBoZWxsbzFgIChzIENIQVIoMjApKQorICBSRVRVUk5TIENIQVIoNTApIERFVEVS TUlOSVNUSUMKK1JFVFVSTiBDT05DQVQoJ0hlbGxvLCAnICxzICwnIScpOworCitDUkVBVEUgRlVO Q1RJT04gYGhlbGxvMmAgKHMgQ0hBUigyMCkpCisgICAgUkVUVVJOUyBDSEFSKDUwKSBERVRFUk1J TklTVElDCitSRVRVUk4gQ09OQ0FUKCddXT4sICcgLCBzICwnIScpOworCistLWVjaG8gIyBUcmln Z2Vycy4KKworREVMSU1JVEVSIHw7CitDUkVBVEUgVFJJR0dFUiB0cmlnMSBCRUZPUkUgSU5TRVJU IE9OIHQyCisgIEZPUiBFQUNIIFJPVyBCRUdJTgorICAgIElOU0VSVCBJTlRPIHQyIFZBTFVFUygx KTsKK0VORDsKK3wKK0RFTElNSVRFUiA7fAorCitERUxJTUlURVIgfDsKK0NSRUFURSBUUklHR0VS IHRyaWcyIEFGVEVSIElOU0VSVCBPTiB0MgorICBGT1IgRUFDSCBST1cgQkVHSU4KKyAgICBJTlNF UlQgSU5UTyB0MiBWQUxVRVMoMSwgJ11dPicpOworICAgIElOU0VSVCBJTlRPIHQyIFZBTFVFUygy LCAnPCFbQ0RBVEFdXT4nKTsKKyAgICBJTlNFUlQgSU5UTyB0MiBWQUxVRVMoMywgJzwhW0NEQVRB WycpOworICAgIElOU0VSVCBJTlRPIHQyIFZBTFVFUyg0LCAnPCA+ICYgXCAiIF8nKTsKK0VORDsK K3wKK0RFTElNSVRFUiA7fAorCistLWVjaG8gIyBWaWV3cworCitDUkVBVEUgVklFVyB2MSBBUyBT RUxFQ1QgKiBGUk9NIHQxOworQ1JFQVRFIFZJRVcgdjIgQVMgU0VMRUNUICogRlJPTSB0MjsKKy0t ZWNobworLS1lY2hvICMgRHVtcGluZyBCVUc1Mjc5MiBkYXRhYmFzZSBpbiB4bWwgZm9ybWF0Lgor LS1lY2hvCistLWVjaG8gIyBSdW5uaW5nICdyZXBsYWNlX3JlZ2V4IG9uIHRpbWVzdGFtcCcKKy0t cmVwbGFjZV9yZWdleCAvWzAtOV17NH0tWzAtOV17Mn0tWzAtOV17Mn0gWzAtOV17Mn06WzAtOV17 Mn06WzAtOV17Mn0vLS1USU1FLS0vCistLWV4ZWMgJE1ZU1FMX0RVTVAgLS11c2VyPXJvb3QgLS1j b21wYWN0IC1SIC1FIC0tdHJpZ2dlcnMgLVggQlVHNTI3OTIKKy0tZWNobworLS1lY2hvICMgRHVt cGluZyBCVUc1Mjc5MiBkYXRhYmFzZSBpbiB4bWwgZm9ybWF0IHdpdGggY29tbWVudHMuCistLWVj aG8KKy0tZWNobyAjIFJ1bm5pbmcgJ3JlcGxhY2VfcmVnZXggb24gdGltZXN0YW1wJworLS1yZXBs YWNlX3JlZ2V4IC9bMC05XXs0fS1bMC05XXsyfS1bMC05XXsyfSBbMC05XXsyfTpbMC05XXsyfTpb MC05XXsyfS8tLVRJTUUtLS8KKy0tZXhlYyAkTVlTUUxfRFVNUCAtLWNvbW1lbnRzIC0tdXNlcj1y b290IC1SIC1FIC0tdHJpZ2dlcnMgLVggQlVHNTI3OTIKKworLS1lY2hvCistLWVjaG8gIyBUZXN0 IHRvIGNoZWNrICdJbnN1ZmZpY2llbnQgcHJpdmlsZWdlcycgZXJyb3IuCistLWVjaG8KKworR1JB TlQgQUxMIFBSSVZJTEVHRVMgT04gQlVHNTI3OTIuKiBUTyB1c2VyMTsKKworY29ubmVjdCAoY29u bl8xLCBsb2NhbGhvc3QsIHVzZXIxLCAsIEJVRzUyNzkyLCAkTUFTVEVSX01ZUE9SVCwgJE1BU1RF Ul9NWVNPQ0spOworY29ubmVjdGlvbiBjb25uXzE7CisKKy0tZWNobyAjIFJ1bm5pbmcgJ3JlcGxh Y2VfcmVnZXggb24gdGltZXN0YW1wJworLS1yZXBsYWNlX3JlZ2V4IC9bMC05XXs0fS1bMC05XXsy fS1bMC05XXsyfSBbMC05XXsyfTpbMC05XXsyfTpbMC05XXsyfS8tLVRJTUUtLS8KKy0tZXJyb3Ig MgorLS1leGVjICRNWVNRTF9EVU1QIC0tdXNlcj11c2VyMSAtUiAtRSAtLXRyaWdnZXJzIC1YIEJV RzUyNzkyCisKK2Nvbm5lY3Rpb24gZGVmYXVsdDsKK2Rpc2Nvbm5lY3QgY29ubl8xOworCitEUk9Q IFVTRVIgdXNlcjE7CitEUk9QIERBVEFCQVNFIEJVRzUyNzkyOworLS1lY2hvICMgVVRGLTgKK0NS RUFURSBEQVRBQkFTRSBCVUc1Mjc5MjsKK1VTRSBCVUc1Mjc5MjsKK1NFVCBOQU1FUyB1dGY4Owor Q1JFQVRFIEZVTkNUSU9OIGBzdHJhw59lYCAoIGMxIENIQVIoMjApKQorICBSRVRVUk5TIENIQVIo NTApIERFVEVSTUlOSVNUSUMKK1JFVFVSTiBDT05DQVQoJ11dPiwgJywgcywgJyEnKTsKKworLS1l eGVjICRNWVNRTF9EVU1QIC0tY2hhcmFjdGVyLXNldHMtZGlyPSRDSEFSU0VUU0RJUiAtLXNraXAt Y29tbWVudHMgLS1kZWZhdWx0LWNoYXJhY3Rlci1zZXQ9dXRmOCAtLWNvbXBhdGlibGU9bXlzcWwz MjMgLVIgLVggQlVHNTI3OTIKKworRFJPUCBEQVRBQkFTRSBCVUc1Mjc5MjsKKworVVNFIHRlc3Q7 CisKKy0tZWNobyAjCiAtLWVjaG8gIyBFbmQgb2YgNS4xIHRlc3RzCiAtLWVjaG8gIwogCgpObyBi dW5kbGUgKHJlYXNvbjogdXNlbGVzcyBmb3IgcHVzaCBlbWFpbHMpLg==