From: Bjorn Munch Date: February 9 2011 10:30am Subject: bzr push into mysql-5.1-mtr branch (bjorn.munch:2980 to 2981) List-Archive: http://lists.mysql.com/commits/130829 Message-Id: <201102091030.p19AUU13010215@khepri15.norway.sun.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDI5ODEgQmpvcm4gTXVuY2gJMjAxMS0wMi0wOSBbbWVyZ2VdCiAgICAgIG1lcmdlIGZyb20gNS4x CgogICAgcmVtb3ZlZDoKICAgICAgbXlzcWwtdGVzdC9jb2xsZWN0aW9ucy9teXNxbC01LjEtYnVn dGVhbS5kYWlseQogICAgICBteXNxbC10ZXN0L2NvbGxlY3Rpb25zL215c3FsLTUuMS1idWd0ZWFt LnB1c2gKICAgIGFkZGVkOgogICAgICBteXNxbC10ZXN0L3N1aXRlL2lubm9kYl9wbHVnaW4vci9p bm5vZGItYXV0b2luYy01NjIyOC5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGJf cGx1Z2luL3QvaW5ub2RiLWF1dG9pbmMtNTYyMjgtbWFzdGVyLm9wdAogICAgICBteXNxbC10ZXN0 L3N1aXRlL2lubm9kYl9wbHVnaW4vdC9pbm5vZGItYXV0b2luYy01NjIyOC50ZXN0CiAgICAgIG15 c3FsLXRlc3Qvc3VpdGUvc3lzX3ZhcnMvci9zZWN1cmVfZmlsZV9wcml2Mi5yZXN1bHQKICAgICAg bXlzcWwtdGVzdC9zdWl0ZS9zeXNfdmFycy90L3NlY3VyZV9maWxlX3ByaXYyLW1hc3Rlci5vcHQK ICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9zeXNfdmFycy90L3NlY3VyZV9maWxlX3ByaXYyLnRlc3QK ICAgIG1vZGlmaWVkOgogICAgICBSRUFETUUKICAgICAgY2xpZW50L215X3JlYWRsaW5lLmgKICAg ICAgY2xpZW50L215c3FsLmNjCiAgICAgIGNsaWVudC9yZWFkbGluZS5jYwogICAgICBpbmNsdWRl L215X3B0aHJlYWQuaAogICAgICBpbmNsdWRlL215X3N5cy5oCiAgICAgIG15c3FsLXRlc3QvY29s bGVjdGlvbnMvZGVmYXVsdC53ZWVrbHkKICAgICAgbXlzcWwtdGVzdC9pbmNsdWRlL215c3FsaG90 Y29weS5pbmMKICAgICAgbXlzcWwtdGVzdC9pbmNsdWRlL3JwbF9zeW5jLmluYwogICAgICBteXNx bC10ZXN0L215c3FsLXRlc3QtcnVuLnBsCiAgICAgIG15c3FsLXRlc3Qvci9ncmFudC5yZXN1bHQK ICAgICAgbXlzcWwtdGVzdC9yL29yZGVyX2J5LnJlc3VsdAogICAgICBteXNxbC10ZXN0L3IvdHlw ZV95ZWFyLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3IvdXNlcl92YXIucmVzdWx0CiAgICAgIG15 c3FsLXRlc3Qvc3VpdGUvYmlubG9nL3IvYmlubG9nX3Vuc2FmZS5yZXN1bHQKICAgICAgbXlzcWwt dGVzdC9zdWl0ZS9iaW5sb2cvdC9iaW5sb2dfdW5zYWZlLnRlc3QKICAgICAgbXlzcWwtdGVzdC9z dWl0ZS9lbmdpbmVzL2Z1bmNzL3IvcHNfc3RyaW5nX25vdF9udWxsLnJlc3VsdAogICAgICBteXNx bC10ZXN0L3N1aXRlL2VuZ2luZXMvZnVuY3MvdC9wc19zdHJpbmdfbm90X251bGwudGVzdAogICAg ICBteXNxbC10ZXN0L3N1aXRlL3JwbC9yL3JwbF9jaXJjdWxhcl9mb3JfNF9ob3N0cy5yZXN1bHQK ICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9ycGwvdC9ycGxfY2lyY3VsYXJfZm9yXzRfaG9zdHMudGVz dAogICAgICBteXNxbC10ZXN0L3QvZ3JhbnQudGVzdAogICAgICBteXNxbC10ZXN0L3QvbXlzcWwu dGVzdAogICAgICBteXNxbC10ZXN0L3Qvb3JkZXJfYnkudGVzdAogICAgICBteXNxbC10ZXN0L3Qv dHlwZV95ZWFyLnRlc3QKICAgICAgbXlzcWwtdGVzdC90L3VzZXJfdmFyLnRlc3QKICAgICAgbXlz cWwtdGVzdC92YWxncmluZC5zdXBwCiAgICAgIG15c3lzL215X2ZvcGVuLmMKICAgICAgbXlzeXMv bXlfZ2V0c3lzdGltZS5jCiAgICAgIHNxbC9oYW5kbGVyLmNjCiAgICAgIHNxbC9pdGVtLmgKICAg ICAgc3FsL2l0ZW1fY21wZnVuYy5jYwogICAgICBzcWwvaXRlbV9mdW5jLmNjCiAgICAgIHNxbC9p dGVtX2dlb2Z1bmMuaAogICAgICBzcWwvbG9nLmNjCiAgICAgIHNxbC9uZXRfc2Vydi5jYwogICAg ICBzcWwvc3FsX2Jhc2UuY2MKICAgICAgc3FsL3NxbF9sb2FkLmNjCiAgICAgIHNxbC9zcWxfc2Vs ZWN0LmNjCiAgICAgIHNxbC9zcWxfc2hvdy5jYwogICAgICBzcWwvc3FsX3ZpZXcuY2MKICAgICAg c3RvcmFnZS9pbm5vZGJfcGx1Z2luL0NoYW5nZUxvZwogICAgICBzdG9yYWdlL2lubm9kYl9wbHVn aW4vYnRyL2J0cjBjdXIuYwogICAgICBzdG9yYWdlL2lubm9kYl9wbHVnaW4vYnVmL2J1ZjBidWYu YwogICAgICBzdG9yYWdlL2lubm9kYl9wbHVnaW4vZGljdC9kaWN0MGRpY3QuYwogICAgICBzdG9y YWdlL2lubm9kYl9wbHVnaW4vZnNwL2ZzcDBmc3AuYwogICAgICBzdG9yYWdlL2lubm9kYl9wbHVn aW4vaGFuZGxlci9oYV9pbm5vZGIuY2MKICAgICAgc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2hhbmRs ZXIvaV9zLmNjCiAgICAgIHN0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pYnVmL2lidWYwaWJ1Zi5jCiAg ICAgIHN0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL2J0cjBjdXIuaAogICAgICBzdG9yYWdl L2lubm9kYl9wbHVnaW4vaW5jbHVkZS9idWYwYnVmLmgKICAgICAgc3RvcmFnZS9pbm5vZGJfcGx1 Z2luL2luY2x1ZGUvcm93MHVwZC5oCiAgICAgIHN0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRl L3VuaXYuaQogICAgICBzdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS91dDB2ZWMuaAogICAg ICBzdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS91dDB2ZWMuaWMKICAgICAgc3RvcmFnZS9p bm5vZGJfcGx1Z2luL2xvY2svbG9jazBsb2NrLmMKICAgICAgc3RvcmFnZS9pbm5vZGJfcGx1Z2lu L3Jvdy9yb3cwaW5zLmMKICAgICAgc3RvcmFnZS9pbm5vZGJfcGx1Z2luL3Jvdy9yb3cwbWVyZ2Uu YwogICAgICBzdG9yYWdlL2lubm9kYl9wbHVnaW4vcm93L3JvdzBwdXJnZS5jCiAgICAgIHN0b3Jh Z2UvaW5ub2RiX3BsdWdpbi9yb3cvcm93MHVtb2QuYwogICAgICBzdG9yYWdlL2lubm9kYl9wbHVn aW4vcm93L3JvdzB1cGQuYwogICAgICBzdG9yYWdlL2lubm9kYl9wbHVnaW4vdHJ4L3RyeDByb2xs LmMKIDI5ODAgQmpvcm4gTXVuY2gJMjAxMS0wMi0wNwogICAgICBCdWcgIzU5OTc5IEFkZCBtdHIg b3B0aW9uIHRvIHJ1biBkZWJ1ZyBzZXJ2ZXIsIGJ1dCB3aXRob3V0IHR1cm5pbmcgb24gZGVidWcK ICAgICAgQWRkZWQgLS1kZWJ1Zy1zZXJ2ZXIgYW5kIHVzZSAkb3B0X2RlYnVnX3NlcnZlciB3aGVy ZSBhcHByb3ByaWF0ZQogICAgICBMZXQgLS1kZWJ1ZyBpbXBseSAtLWRlYnVnLXNlcnZlcgogICAg ICBXaGVuIG1lcmdpbmcgdG8gNS41LCBtdXN0IGFkYXB0IGZpeCBmb3IgNTkxNDgKICAgICAgT29w cywgc2V0IGRlYnVnID0+IGRlYnVnLXNlcnZlciB0b28gbGF0ZSwgZml4ZWQKCiAgICBtb2RpZmll ZDoKICAgICAgbXlzcWwtdGVzdC9teXNxbC10ZXN0LXJ1bi5wbAo9PT0gbW9kaWZpZWQgZmlsZSAn UkVBRE1FJwotLS0gYS9SRUFETUUJMjAxMC0xMS0yNCAxMzoxNDo0MyArMDAwMAorKysgYi9SRUFE TUUJMjAxMS0wMS0yNSAxNDo0Mjo0MCArMDAwMApAQCAtNSw3ICs1LDcgQEAgRm9yIHRoZSBhdm9p ZGFuY2Ugb2YgZG91YnQsIHRoaXMgcGFydGljdQogaXMgcmVsZWFzZWQgdW5kZXIgdGhlIHZlcnNp b24gMiBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuIA0KIE15U1FMIGlzIGJyb3Vn aHQgdG8geW91IGJ5IHRoZSBNeVNRTCB0ZWFtIGF0IE9yYWNsZS4NCiANCi1Db3B5cmlnaHQgKGMp IDIwMDAsIDIwMTAsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVz ZXJ2ZWQuDQorQ29weXJpZ2h0IChjKSAyMDAwLCAyMDExLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZp bGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KIA0KIExpY2Vuc2UgaW5mb3JtYXRpb24gY2Fu IGJlIGZvdW5kIGluIHRoZSBDT1BZSU5HIGZpbGUuDQogDQoKPT09IG1vZGlmaWVkIGZpbGUgJ2Ns aWVudC9teV9yZWFkbGluZS5oJwotLS0gYS9jbGllbnQvbXlfcmVhZGxpbmUuaAkyMDA5LTAzLTE4 IDA4OjI3OjQ5ICswMDAwCisrKyBiL2NsaWVudC9teV9yZWFkbGluZS5oCTIwMTEtMDItMDUgMDU6 MDI6MDAgKzAwMDAKQEAgLTI1LDkgKzI1LDExIEBAIHR5cGVkZWYgc3RydWN0IHN0X2xpbmVfYnVm ZmVyCiAgIHVpbnQgZW9mOwogICB1bG9uZyBtYXhfc2l6ZTsKICAgdWxvbmcgcmVhZF9sZW5ndGg7 CQkvKiBMZW5ndGggb2YgbGFzdCByZWFkIHN0cmluZyAqLworICBpbnQgZXJyb3I7CisgIGJvb2wg dHJ1bmNhdGVkOwogfSBMSU5FX0JVRkZFUjsKIAogZXh0ZXJuIExJTkVfQlVGRkVSICpiYXRjaF9y ZWFkbGluZV9pbml0KHVsb25nIG1heF9zaXplLEZJTEUgKmZpbGUpOwogZXh0ZXJuIExJTkVfQlVG RkVSICpiYXRjaF9yZWFkbGluZV9jb21tYW5kKExJTkVfQlVGRkVSICpidWZmZXIsIGNoYXIgKiBz dHIpOwotZXh0ZXJuIGNoYXIgKmJhdGNoX3JlYWRsaW5lKExJTkVfQlVGRkVSICpidWZmZXIsIGJv b2wgKnRydW5jYXRlZCk7CitleHRlcm4gY2hhciAqYmF0Y2hfcmVhZGxpbmUoTElORV9CVUZGRVIg KmJ1ZmZlcik7CiBleHRlcm4gdm9pZCBiYXRjaF9yZWFkbGluZV9lbmQoTElORV9CVUZGRVIgKmJ1 ZmZlcik7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnY2xpZW50L215c3FsLmNjJwotLS0gYS9jbGllbnQv bXlzcWwuY2MJMjAxMC0xMS0yNiAxMzo1Nzo1OSArMDAwMAorKysgYi9jbGllbnQvbXlzcWwuY2MJ MjAxMS0wMi0wNSAwNTowMjowMCArMDAwMApAQCAtMTg3MiwxNCArMTg3MiwxMyBAQCBzdGF0aWMg aW50IHJlYWRfYW5kX2V4ZWN1dGUoYm9vbCBpbnRlcmFjCiAgIHVsb25nIGxpbmVfbnVtYmVyPTA7 CiAgIGJvb2wgbWxfY29tbWVudD0gMDsgIAogICBDT01NQU5EUyAqY29tOwotICBib29sIHRydW5j YXRlZD0gMDsKICAgc3RhdHVzLmV4aXRfc3RhdHVzPTE7Ci0gIAorCiAgIGZvciAoOzspCiAgIHsK ICAgICBpZiAoIWludGVyYWN0aXZlKQogICAgIHsKLSAgICAgIGxpbmU9YmF0Y2hfcmVhZGxpbmUo c3RhdHVzLmxpbmVfYnVmZiwgJnRydW5jYXRlZCk7CisgICAgICBsaW5lPWJhdGNoX3JlYWRsaW5l KHN0YXR1cy5saW5lX2J1ZmYpOwogICAgICAgLyoKICAgICAgICAgU2tpcCBVVEY4IEJ5dGUgT3Jk ZXIgTWFya2VyIChCT00pIDB4RUZCQkJGLgogICAgICAgICBFZGl0b3JzIGxpa2UgIm5vdGVwYWQi IHB1dCB0aGlzIG1hcmtlciBpbgpAQCAtMTk1Myw5ICsxOTUyLDEzIEBAIHN0YXRpYyBpbnQgcmVh ZF9hbmRfZXhlY3V0ZShib29sIGludGVyYWMKICAgICAgIGlmIChvcHRfb3V0ZmlsZSAmJiBsaW5l KQogCWZwcmludGYoT1VURklMRSwgIiVzXG4iLCBsaW5lKTsKICAgICB9Ci0gICAgaWYgKCFsaW5l KQkJCQkJLy8gRW5kIG9mIGZpbGUKKyAgICAvLyBFbmQgb2YgZmlsZSBvciBzeXN0ZW0gZXJyb3IK KyAgICBpZiAoIWxpbmUpCiAgICAgewotICAgICAgc3RhdHVzLmV4aXRfc3RhdHVzPTA7CisgICAg ICBpZiAoc3RhdHVzLmxpbmVfYnVmZiAmJiBzdGF0dXMubGluZV9idWZmLT5lcnJvcikKKyAgICAg ICAgc3RhdHVzLmV4aXRfc3RhdHVzPSAxOworICAgICAgZWxzZQorICAgICAgICBzdGF0dXMuZXhp dF9zdGF0dXM9IDA7CiAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTE5NzYsNyArMTk3OSw4IEBA IHN0YXRpYyBpbnQgcmVhZF9hbmRfZXhlY3V0ZShib29sIGludGVyYWMKICNlbmRpZgogICAgICAg Y29udGludWU7CiAgICAgfQotICAgIGlmIChhZGRfbGluZShnbG9iX2J1ZmZlcixsaW5lLCZpbl9z dHJpbmcsJm1sX2NvbW1lbnQsIHRydW5jYXRlZCkpCisgICAgaWYgKGFkZF9saW5lKGdsb2JfYnVm ZmVyLCBsaW5lLCAmaW5fc3RyaW5nLCAmbWxfY29tbWVudCwKKyAgICAgICAgICAgICAgICAgc3Rh dHVzLmxpbmVfYnVmZiA/IHN0YXR1cy5saW5lX2J1ZmYtPnRydW5jYXRlZCA6IDApKQogICAgICAg YnJlYWs7CiAgIH0KICAgLyogaWYgaW4gYmF0Y2ggbW9kZSwgc2VuZCBsYXN0IHF1ZXJ5IGV2ZW4g aWYgaXQgZG9lc24ndCBlbmQgd2l0aCBcZyBvciBnbyAqLwoKPT09IG1vZGlmaWVkIGZpbGUgJ2Ns aWVudC9yZWFkbGluZS5jYycKLS0tIGEvY2xpZW50L3JlYWRsaW5lLmNjCTIwMDktMDMtMTggMDg6 Mjc6NDkgKzAwMDAKKysrIGIvY2xpZW50L3JlYWRsaW5lLmNjCTIwMTEtMDItMDUgMDU6MDI6MDAg KzAwMDAKQEAgLTI0LDcgKzI0LDcgQEAgc3RhdGljIGJvb2wgaW5pdF9saW5lX2J1ZmZlcihMSU5F X0JVRkZFUgogCQkJICAgIHVsb25nIG1heF9zaXplKTsKIHN0YXRpYyBib29sIGluaXRfbGluZV9i dWZmZXJfZnJvbV9zdHJpbmcoTElORV9CVUZGRVIgKmJ1ZmZlcixjaGFyICogc3RyKTsKIHN0YXRp YyBzaXplX3QgZmlsbF9idWZmZXIoTElORV9CVUZGRVIgKmJ1ZmZlcik7Ci1zdGF0aWMgY2hhciAq aW50ZXJuX3JlYWRfbGluZShMSU5FX0JVRkZFUiAqYnVmZmVyLCB1bG9uZyAqb3V0X2xlbmd0aCwg Ym9vbCAqdHJ1bmNhdGVkKTsKK3N0YXRpYyBjaGFyICppbnRlcm5fcmVhZF9saW5lKExJTkVfQlVG RkVSICpidWZmZXIsIHVsb25nICpvdXRfbGVuZ3RoKTsKIAogCiBMSU5FX0JVRkZFUiAqYmF0Y2hf cmVhZGxpbmVfaW5pdCh1bG9uZyBtYXhfc2l6ZSxGSUxFICpmaWxlKQpAQCAtNDIsMTMgKzQyLDEy IEBAIExJTkVfQlVGRkVSICpiYXRjaF9yZWFkbGluZV9pbml0KHVsb25nIG0KIH0KIAogCi1jaGFy ICpiYXRjaF9yZWFkbGluZShMSU5FX0JVRkZFUiAqbGluZV9idWZmLCBib29sICp0cnVuY2F0ZWQp CitjaGFyICpiYXRjaF9yZWFkbGluZShMSU5FX0JVRkZFUiAqbGluZV9idWZmKQogewogICBjaGFy ICpwb3M7CiAgIHVsb25nIG91dF9sZW5ndGg7Ci0gIERCVUdfQVNTRVJUKHRydW5jYXRlZCAhPSBO VUxMKTsKIAotICBpZiAoIShwb3M9aW50ZXJuX3JlYWRfbGluZShsaW5lX2J1ZmYsJm91dF9sZW5n dGgsIHRydW5jYXRlZCkpKQorICBpZiAoIShwb3M9aW50ZXJuX3JlYWRfbGluZShsaW5lX2J1ZmYs ICZvdXRfbGVuZ3RoKSkpCiAgICAgcmV0dXJuIDA7CiAgIGlmIChvdXRfbGVuZ3RoICYmIHBvc1tv dXRfbGVuZ3RoLTFdID09ICdcbicpCiAgICAgaWYgKC0tb3V0X2xlbmd0aCAmJiBwb3Nbb3V0X2xl bmd0aC0xXSA9PSAnXHInKSAgLyogUmVtb3ZlICdcbicgKi8KQEAgLTE2Miw3ICsxNjEsMTAgQEAg c3RhdGljIHNpemVfdCBmaWxsX2J1ZmZlcihMSU5FX0JVRkZFUiAqYgogICAgIGlmICghKGJ1ZmZl ci0+YnVmZmVyID0gKGNoYXIqKSBteV9yZWFsbG9jKGJ1ZmZlci0+YnVmZmVyLAogCQkJCQkgICAg ICBidWZmZXItPmJ1ZnJlYWQrMSwKIAkJCQkJICAgICAgTVlGKE1ZX1dNRSB8IE1ZX0ZBRSkpKSkK LSAgICAgIHJldHVybiAodWludCkgLTE7CisgICAgeworICAgICAgYnVmZmVyLT5lcnJvcj0gbXlf ZXJybm87CisgICAgICByZXR1cm4gKHNpemVfdCkgLTE7CisgICAgfQogICAgIGJ1ZmZlci0+c3Rh cnRfb2ZfbGluZT1idWZmZXItPmJ1ZmZlcitzdGFydF9vZmZzZXQ7CiAgICAgYnVmZmVyLT5lbmQ9 YnVmZmVyLT5idWZmZXIrYnVmYnl0ZXM7CiAgIH0KQEAgLTE3Nyw3ICsxNzksMTAgQEAgc3RhdGlj IHNpemVfdCBmaWxsX2J1ZmZlcihMSU5FX0JVRkZFUiAqYgogICAvKiBSZWFkIGluIG5ldyBzdHVm Zi4gKi8KICAgaWYgKChyZWFkX2NvdW50PSBteV9yZWFkKGJ1ZmZlci0+ZmlsZSwgKHVjaGFyKikg YnVmZmVyLT5lbmQsIHJlYWRfY291bnQsCiAJCQkgICBNWUYoTVlfV01FKSkpID09IE1ZX0ZJTEVf RVJST1IpCisgIHsKKyAgICBidWZmZXItPmVycm9yPSBteV9lcnJubzsKICAgICByZXR1cm4gKHNp emVfdCkgLTE7CisgIH0KIAogICBEQlVHX1BSSU5UKCJmaWxsX2J1ZmYiLCAoIkdvdCAlbHUgYnl0 ZXMiLCAodWxvbmcpIHJlYWRfY291bnQpKTsKIApAQCAtMTk4LDggKzIwMyw3IEBAIHN0YXRpYyBz aXplX3QgZmlsbF9idWZmZXIoTElORV9CVUZGRVIgKmIKIH0KIAogCi0KLWNoYXIgKmludGVybl9y ZWFkX2xpbmUoTElORV9CVUZGRVIgKmJ1ZmZlciwgdWxvbmcgKm91dF9sZW5ndGgsIGJvb2wgKnRy dW5jYXRlZCkKK2NoYXIgKmludGVybl9yZWFkX2xpbmUoTElORV9CVUZGRVIgKmJ1ZmZlciwgdWxv bmcgKm91dF9sZW5ndGgpCiB7CiAgIGNoYXIgKnBvczsKICAgc2l6ZV90IGxlbmd0aDsKQEAgLTIx NCwyMiArMjE4LDI1IEBAIGNoYXIgKmludGVybl9yZWFkX2xpbmUoTElORV9CVUZGRVIgKmJ1ZmYK ICAgICBpZiAocG9zID09IGJ1ZmZlci0+ZW5kKQogICAgIHsKICAgICAgIC8qCi0gICAgICAgIGZp bGxfYnVmZmVyKCkgY2FuIHJldHVybiAwIGVpdGhlciBvbiBFT0YgaW4gd2hpY2ggY2FzZSB3ZSBh Ym9ydAotICAgICAgICBvciB3aGVuIHRoZSBpbnRlcm5hbCBidWZmZXIgaGFzIGhpdCB0aGUgc2l6 ZSBsaW1pdC4gSW4gdGhlIGxhdHRlciBjYXNlCi0gICAgICAgIHJldHVybiB3aGF0IHdlIGhhdmUg cmVhZCBzbyBmYXIgYW5kIHNpZ25hbCBzdHJpbmcgdHJ1bmNhdGlvbi4KKyAgICAgICAgZmlsbF9i dWZmZXIoKSBjYW4gcmV0dXJuIE5VTEwgb24gRU9GIChpbiB3aGljaCBjYXNlIHdlIGFib3J0KSwK KyAgICAgICAgb24gZXJyb3IsIG9yIHdoZW4gdGhlIGludGVybmFsIGJ1ZmZlciBoYXMgaGl0IHRo ZSBzaXplIGxpbWl0LgorICAgICAgICBJbiB0aGUgbGF0dGVyIGNhc2UgcmV0dXJuIHdoYXQgd2Ug aGF2ZSByZWFkIHNvIGZhciBhbmQgc2lnbmFsCisgICAgICAgIHN0cmluZyB0cnVuY2F0aW9uLgog ICAgICAgKi8KLSAgICAgIGlmICghKGxlbmd0aD1maWxsX2J1ZmZlcihidWZmZXIpKSB8fCBsZW5n dGggPT0gKHVpbnQpIC0xKQorICAgICAgaWYgKCEobGVuZ3RoPSBmaWxsX2J1ZmZlcihidWZmZXIp KSkKICAgICAgIHsKICAgICAgICAgaWYgKGJ1ZmZlci0+ZW9mKQogICAgICAgICAgIERCVUdfUkVU VVJOKDApOwogICAgICAgfQorICAgICAgZWxzZSBpZiAobGVuZ3RoID09IChzaXplX3QpIC0xKQor ICAgICAgICBEQlVHX1JFVFVSTihOVUxMKTsKICAgICAgIGVsc2UKICAgICAgICAgY29udGludWU7 CiAgICAgICBwb3MtLTsJCQkJCS8qIGJyZWFrIGxpbmUgaGVyZSAqLwotICAgICAgKnRydW5jYXRl ZD0gMTsKKyAgICAgIGJ1ZmZlci0+dHJ1bmNhdGVkPSAxOwogICAgIH0KICAgICBlbHNlCi0gICAg ICAqdHJ1bmNhdGVkPSAwOworICAgICAgYnVmZmVyLT50cnVuY2F0ZWQ9IDA7CiAgICAgYnVmZmVy LT5lbmRfb2ZfbGluZT1wb3MrMTsKICAgICAqb3V0X2xlbmd0aD0odWxvbmcpIChwb3MgKyAxIC0g YnVmZmVyLT5lb2YgLSBidWZmZXItPnN0YXJ0X29mX2xpbmUpOwogICAgIERCVUdfUkVUVVJOKGJ1 ZmZlci0+c3RhcnRfb2ZfbGluZSk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnaW5jbHVkZS9teV9wdGhy ZWFkLmgnCi0tLSBhL2luY2x1ZGUvbXlfcHRocmVhZC5oCTIwMTEtMDEtMDcgMTk6Mjg6MDYgKzAw MDAKKysrIGIvaW5jbHVkZS9teV9wdGhyZWFkLmgJMjAxMS0wMS0yNSAxNDo0Mjo0MCArMDAwMApA QCAtMSw0ICsxLDQgQEAKLS8qIENvcHlyaWdodCAoQykgMjAwMCBNeVNRTCBBQgorLyogQ29weXJp Z2h0IChjKSAyMDAwLCAyMDExLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmln aHRzIHJlc2VydmVkLgogCiAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKCj09PSBtb2Rp ZmllZCBmaWxlICdpbmNsdWRlL215X3N5cy5oJwotLS0gYS9pbmNsdWRlL215X3N5cy5oCTIwMTEt MDEtMDcgMTg6MzM6MzYgKzAwMDAKKysrIGIvaW5jbHVkZS9teV9zeXMuaAkyMDExLTAxLTI1IDE0 OjQyOjQwICswMDAwCkBAIC0xLDQgKzEsNCBAQAotLyogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDEw LCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLyog Q29weXJpZ2h0IChjKSAyMDAwLCAyMDExLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBB bGwgcmlnaHRzIHJlc2VydmVkLgogCiAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICAgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKCj09 PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L2NvbGxlY3Rpb25zL2RlZmF1bHQud2Vla2x5Jwot LS0gYS9teXNxbC10ZXN0L2NvbGxlY3Rpb25zL2RlZmF1bHQud2Vla2x5CTIwMTEtMDEtMDYgMTA6 Mzk6NDUgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC9jb2xsZWN0aW9ucy9kZWZhdWx0LndlZWtseQky MDExLTAyLTA4IDA2OjAwOjM1ICswMDAwCkBAIC0xLDQgKzEsMyBAQAotcGVybCBteXNxbC10ZXN0 LXJ1bi5wbCAtLXRpbWVyIC0tZm9yY2UgLS1jb21tZW50PTFzdCAgICAgICAtLWV4cGVyaW1lbnRh bD1jb2xsZWN0aW9ucy9kZWZhdWx0LmV4cGVyaW1lbnRhbCAxc3QKIHBlcmwgbXlzcWwtdGVzdC1y dW4ucGwgLS10aW1lciAtLWZvcmNlIC0tY29tbWVudD1iaWctdGVzdHMgLS1leHBlcmltZW50YWw9 Y29sbGVjdGlvbnMvZGVmYXVsdC5leHBlcmltZW50YWwgLS12YXJkaXI9dmFyLWJpZy10ZXN0cyAt LWJpZy10ZXN0IC0tdGVzdGNhc2UtdGltZW91dD02MCAtLXN1aXRlLXRpbWVvdXQ9NjAwIHBhcnRz LnBhcnRpdGlvbl9hbHRlcjFfMl9uZGIgcGFydHMucGFydF9zdXBwb3J0ZWRfc3FsX2Z1bmNfaW5u b2RiIHBhcnRzLnBhcnRpdGlvbl9hbHRlcjFfMl9pbm5vZGIgcGFydHMucGFydGl0aW9uX2FsdGVy NF9pbm5vZGIgcGFydHMucGFydGl0aW9uX2FsdGVyMV8xXzJfbmRiIHBhcnRzLnBhcnRpdGlvbl9h bHRlcjFfMV8yX2lubm9kYiBwYXJ0cy5wYXJ0aXRpb25fYWx0ZXIxXzFfbmRiIHJwbF9uZGIucnBs X3RydW5jYXRlXzduZGJfMiBtYWluLmFyY2hpdmUtYmlnIG1haW4uc3VtX2Rpc3RpbmN0LWJpZyBt YWluLm15c3FsYmlubG9nX3Jvd19iaWcgbWFpbi5hbHRlcl90YWJsZS1iaWcgbWFpbi52YXJpYWJs ZXMtYmlnIG1haW4udHlwZV9uZXdkZWNpbWFsLWJpZyBtYWluLnJlYWRfbWFueV9yb3dzX2lubm9k YiBtYWluLmxvZ190YWJsZXMtYmlnIG1haW4uY291bnRfZGlzdGluY3QzIG1haW4uZXZlbnRzX3Rp bWVfem9uZSBtYWluLm1lcmdlLWJpZyBtYWluLmNyZWF0ZS1iaWcgbWFpbi5ldmVudHNfc3RyZXNz IG1haW4uc3NsLWJpZyBmdW5jc18xLm15aXNhbV92aWV3cy1iaWcKIHBlcmwgbXlzcWwtdGVzdC1y dW4ucGwgLS10aW1lciAtLWZvcmNlIC0tcGFyYWxsZWw9YXV0byAtLWNvbW1lbnQ9ZWl0cy10ZXN0 cy1teWlzYW0tZW5naW5lIC0tZXhwZXJpbWVudGFsPWNvbGxlY3Rpb25zL2RlZmF1bHQuZXhwZXJp bWVudGFsIC0tdmFyZGlyPXZhci1zdG10LWVpdHMtdGVzdHMtbXlpc2FtLWVuZ2luZSAtLXN1aXRl PWVuZ2luZXMvaXVkcyxlbmdpbmVzL2Z1bmNzIC0tc3VpdGUtdGltZW91dD01MDAgLS1tYXgtdGVz dC1mYWlsPTAgLS1yZXRyeS1mYWlsdXJlPTAgLS1teXNxbGQ9LS1kZWZhdWx0LXN0b3JhZ2UtZW5n aW5lPW15aXNhbSAKIHBlcmwgbXlzcWwtdGVzdC1ydW4ucGwgLS10aW1lciAtLWZvcmNlIC0tcGFy YWxsZWw9YXV0byAtLWNvbW1lbnQ9ZWl0cy1ycGwtYmlubG9nLXJvdy10ZXN0cy1teWlzYW0tZW5n aW5lIC0tZXhwZXJpbWVudGFsPWNvbGxlY3Rpb25zL2RlZmF1bHQuZXhwZXJpbWVudGFsIC0tdmFy ZGlyPXZhci1iaW5sb2ctcm93LWVpdHMtdGVzdHMtbXlpc2FtLWVuZ2luZSAtLXN1aXRlPWVuZ2lu ZXMvaXVkcyxlbmdpbmVzL2Z1bmNzIC0tc3VpdGUtdGltZW91dD01MDAgLS1tYXgtdGVzdC1mYWls PTAgLS1yZXRyeS1mYWlsdXJlPTAgLS1teXNxbGQ9LS1kZWZhdWx0LXN0b3JhZ2UtZW5naW5lPW15 aXNhbSAtLWRvLXRlc3Q9cnBsIC0tbXlzcWxkPS0tYmlubG9nLWZvcm1hdD1yb3cKCj09PSByZW1v dmVkIGZpbGUgJ215c3FsLXRlc3QvY29sbGVjdGlvbnMvbXlzcWwtNS4xLWJ1Z3RlYW0uZGFpbHkn Ci0tLSBhL215c3FsLXRlc3QvY29sbGVjdGlvbnMvbXlzcWwtNS4xLWJ1Z3RlYW0uZGFpbHkJMjAx MC0xMS0wOCAwOToyNzowNSArMDAwMAorKysgYi9teXNxbC10ZXN0L2NvbGxlY3Rpb25zL215c3Fs LTUuMS1idWd0ZWFtLmRhaWx5CTE5NzAtMDEtMDEgMDA6MDA6MDAgKzAwMDAKQEAgLTEsNSArMCww IEBACi1wZXJsIG15c3FsLXRlc3QtcnVuLnBsIC0tdGltZXIgLS1mb3JjZSAtLXBhcmFsbGVsPWF1 dG8gLS1jb21tZW50PW5fbWl4IC0tdmFyZGlyPXZhci1uX21peCAtLW15c3FsZD0tLWJpbmxvZy1m b3JtYXQ9bWl4ZWQgLS1leHBlcmltZW50YWw9Y29sbGVjdGlvbnMvZGVmYXVsdC5leHBlcmltZW50 YWwKLXBlcmwgbXlzcWwtdGVzdC1ydW4ucGwgLS10aW1lciAtLWZvcmNlIC0tcGFyYWxsZWw9YXV0 byAtLWNvbW1lbnQ9cHNfcm93IC0tdmFyZGlyPXZhci1wc19yb3cgLS1wcy1wcm90b2NvbCAtLW15 c3FsZD0tLWJpbmxvZy1mb3JtYXQ9cm93IC0tZXhwZXJpbWVudGFsPWNvbGxlY3Rpb25zL2RlZmF1 bHQuZXhwZXJpbWVudGFsCi1wZXJsIG15c3FsLXRlc3QtcnVuLnBsIC0tdGltZXIgLS1mb3JjZSAt LXBhcmFsbGVsPWF1dG8gLS1jb21tZW50PWVtYmVkZGVkIC0tdmFyZGlyPXZhci1lbWViYmVkICAt LWVtYmVkZGVkIC0tZXhwZXJpbWVudGFsPWNvbGxlY3Rpb25zL2RlZmF1bHQuZXhwZXJpbWVudGFs Ci1wZXJsIG15c3FsLXRlc3QtcnVuLnBsIC0tdGltZXIgLS1mb3JjZSAtLXBhcmFsbGVsPWF1dG8g LS1jb21tZW50PXJwbF9iaW5sb2dfcm93IC0tdmFyZGlyPXZhci1ycGxfYmlubG9nX3JvdyAgLS1z dWl0ZT1ycGwsYmlubG9nIC0tbXlzcWxkPS0tYmlubG9nLWZvcm1hdD1yb3cgLS1leHBlcmltZW50 YWw9Y29sbGVjdGlvbnMvZGVmYXVsdC5leHBlcmltZW50YWwKLXBlcmwgbXlzcWwtdGVzdC1ydW4u cGwgLS10aW1lciAtLWZvcmNlIC0tcGFyYWxsZWw9YXV0byAtLWNvbW1lbnQ9ZnVuY3NfMSAtLXZh cmRpcj12YXItZnVuY3NfMSAtLXN1aXRlPWZ1bmNzXzEgLS1leHBlcmltZW50YWw9Y29sbGVjdGlv bnMvZGVmYXVsdC5leHBlcmltZW50YWwKCj09PSByZW1vdmVkIGZpbGUgJ215c3FsLXRlc3QvY29s bGVjdGlvbnMvbXlzcWwtNS4xLWJ1Z3RlYW0ucHVzaCcKLS0tIGEvbXlzcWwtdGVzdC9jb2xsZWN0 aW9ucy9teXNxbC01LjEtYnVndGVhbS5wdXNoCTIwMTAtMTEtMDggMDk6Mjc6MDUgKzAwMDAKKysr IGIvbXlzcWwtdGVzdC9jb2xsZWN0aW9ucy9teXNxbC01LjEtYnVndGVhbS5wdXNoCTE5NzAtMDEt MDEgMDA6MDA6MDAgKzAwMDAKQEAgLTEsNCArMCwwIEBACi1wZXJsIG15c3FsLXRlc3QtcnVuLnBs IC0tdGltZXIgLS1mb3JjZSAtLXBhcmFsbGVsPWF1dG8gLS1jb21tZW50PW5fbWl4IC0tdmFyZGly PXZhci1uX21peCAtLW15c3FsZD0tLWJpbmxvZy1mb3JtYXQ9bWl4ZWQgLS1leHBlcmltZW50YWw9 Y29sbGVjdGlvbnMvZGVmYXVsdC5leHBlcmltZW50YWwgLS1za2lwLW5kYgotcGVybCBteXNxbC10 ZXN0LXJ1bi5wbCAtLXRpbWVyIC0tZm9yY2UgLS1wYXJhbGxlbD1hdXRvIC0tY29tbWVudD1wc19y b3cgLS12YXJkaXI9dmFyLXBzX3JvdyAtLXN1aXRlPW1haW4gLS1wcy1wcm90b2NvbCAtLW15c3Fs ZD0tLWJpbmxvZy1mb3JtYXQ9cm93IC0tZXhwZXJpbWVudGFsPWNvbGxlY3Rpb25zL2RlZmF1bHQu ZXhwZXJpbWVudGFsIC0tc2tpcC1uZGIKLXBlcmwgbXlzcWwtdGVzdC1ydW4ucGwgLS10aW1lciAt LWZvcmNlIC0tcGFyYWxsZWw9YXV0byAtLWNvbW1lbnQ9ZW1iZWRkZWQgLS12YXJkaXI9dmFyLWVt ZWJiZWQgIC0tc3VpdGU9bWFpbiAtLWVtYmVkZGVkIC0tZXhwZXJpbWVudGFsPWNvbGxlY3Rpb25z L2RlZmF1bHQuZXhwZXJpbWVudGFsIC0tc2tpcC1uZGIKLXBlcmwgbXlzcWwtdGVzdC1ydW4ucGwg LS10aW1lciAtLWZvcmNlIC0tcGFyYWxsZWw9YXV0byAtLWNvbW1lbnQ9ZnVuY3NfMSAtLXZhcmRp cj12YXItZnVuY3NfMSAtLXN1aXRlPWZ1bmNzXzEgLS1leHBlcmltZW50YWw9Y29sbGVjdGlvbnMv ZGVmYXVsdC5leHBlcmltZW50YWwgLS1za2lwLW5kYgoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3Fs LXRlc3QvaW5jbHVkZS9teXNxbGhvdGNvcHkuaW5jJwotLS0gYS9teXNxbC10ZXN0L2luY2x1ZGUv bXlzcWxob3Rjb3B5LmluYwkyMDExLTAxLTI5IDExOjM4OjM2ICswMDAwCisrKyBiL215c3FsLXRl c3QvaW5jbHVkZS9teXNxbGhvdGNvcHkuaW5jCTIwMTEtMDItMDggMDk6NTE6MDkgKzAwMDAKQEAg LTEwNyw3ICsxMDcsNyBAQCBEUk9QIERBVEFCQVNFIGhvdGNvcHlfc2F2ZTsKIC0tcmVwbGFjZV9y ZXN1bHQgJE1ZU1FMRF9EQVRBRElSIE1ZU1FMRF9EQVRBRElSCiAtLWxpc3RfZmlsZXMgJE1ZU1FM RF9EQVRBRElSL2hvdGNvcHlfc2F2ZQogLS1yZXBsYWNlX3Jlc3VsdCAkTUFTVEVSX01ZU09DSyBN QVNURVJfTVlTT0NLCi0tLWVycm9yIDksMjMwNAorLS1lcnJvciA5LDExLDIzMDQKIC0tZXhlYyAk TVlTUUxIT1RDT1BZIC0tcXVpZXQgLVMgJE1BU1RFUl9NWVNPQ0sgLXUgcm9vdCBob3Rjb3B5X3Rl c3QgaG90Y29weV9zYXZlCiAtLXJlcGxhY2VfcmVzdWx0ICRNQVNURVJfTVlTT0NLIE1BU1RFUl9N WVNPQ0sKIC0tZXhlYyAkTVlTUUxIT1RDT1BZIC0tcXVpZXQgLS1hbGxvd29sZCAtUyAkTUFTVEVS X01ZU09DSyAtdSByb290IGhvdGNvcHlfdGVzdCBob3Rjb3B5X3NhdmUKCj09PSBtb2RpZmllZCBm aWxlICdteXNxbC10ZXN0L2luY2x1ZGUvcnBsX3N5bmMuaW5jJwotLS0gYS9teXNxbC10ZXN0L2lu Y2x1ZGUvcnBsX3N5bmMuaW5jCTIwMTAtMTItMTkgMTc6MDc6MjggKzAwMDAKKysrIGIvbXlzcWwt dGVzdC9pbmNsdWRlL3JwbF9zeW5jLmluYwkyMDExLTAyLTAzIDE2OjA5OjMzICswMDAwCkBAIC04 OCw3ICs4OCw3IEBAIHdoaWxlICgkX3JwbF9pKSB7CiAgICAgICB7CiAgICAgICAgIC0tZWNobyBT eW5jIElPOiAkX3JwbF9zbGF2ZV9pb19ydW5uaW5nOyBTeW5jIFNRTDogJF9ycGxfc2xhdmVfc3Fs X3J1bm5pbmcKICAgICAgIH0KLSAgICAgIC0tbGV0ICRfcnBsX3NsYXZlX2lvX3J1bm5pbmc9IGBT RUxFQ1QgSUYoJyRfcnBsX3NsYXZlX2lvX3J1bm5pbmcnID0gJ1llcycsIDEsICcnKWAKKyAgICAg IC0tbGV0ICRfcnBsX3NsYXZlX2lvX3J1bm5pbmc9IGBTRUxFQ1QgSUYoJyRfcnBsX3NsYXZlX2lv X3J1bm5pbmcnICE9ICdObycsIDEsICcnKWAKICAgICAgIC0tbGV0ICRfcnBsX3NsYXZlX3NxbF9y dW5uaW5nPSBgU0VMRUNUIElGKCckX3JwbF9zbGF2ZV9zcWxfcnVubmluZycgPSAnWWVzJywgMSwg JycpYAogICAgICAgaWYgKCRfcnBsX3NsYXZlX2lvX3J1bm5pbmcpCiAgICAgICB7Cgo9PT0gbW9k aWZpZWQgZmlsZSAnbXlzcWwtdGVzdC9teXNxbC10ZXN0LXJ1bi5wbCcKLS0tIGEvbXlzcWwtdGVz dC9teXNxbC10ZXN0LXJ1bi5wbAkyMDExLTAyLTA3IDExOjQyOjIxICswMDAwCisrKyBiL215c3Fs LXRlc3QvbXlzcWwtdGVzdC1ydW4ucGwJMjAxMS0wMi0wOCAxMTo1MjozMyArMDAwMApAQCAtMjA1 NSw2ICsyMDU1LDE2IEBAIHN1YiBlbnZpcm9ubWVudF9zZXR1cCB7CiAgICRFTlZ7J0RFRkFVTFRf TUFTVEVSX1BPUlQnfT0gJG15c3FsZF92YXJpYWJsZXN7J21hc3Rlci1wb3J0J30gfHwgMzMwNjsK ICAgJEVOVnsnTVlTUUxfVE1QX0RJUid9PSAgICAgICRvcHRfdG1wZGlyOwogICAkRU5WeydNWVNR TFRFU1RfVkFSRElSJ309ICAgJG9wdF92YXJkaXI7CisgIAorICBpZiAoSVNfV0lORE9XUykKKyAg eworICAgICRFTlZ7J1NFQ1VSRV9MT0FEX1BBVEgnfT0gJGdsb2JfbXlzcWxfdGVzdF9kaXIuIlxc c3RkX2RhdGEiOworICB9CisgIGVsc2UKKyAgeworICAgICRFTlZ7J1NFQ1VSRV9MT0FEX1BBVEgn fT0gJGdsb2JfbXlzcWxfdGVzdF9kaXIuIi9zdGRfZGF0YSI7CisgIH0KKyAgICAKIAogICAjIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIyBT ZXR1cCBlbnYgZm9yIE5EQgoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qvci9ncmFudC5y ZXN1bHQnCi0tLSBhL215c3FsLXRlc3Qvci9ncmFudC5yZXN1bHQJMjAxMC0xMC0xMyAwNToyODo1 OCArMDAwMAorKysgYi9teXNxbC10ZXN0L3IvZ3JhbnQucmVzdWx0CTIwMTAtMTItMTUgMTY6MDg6 MjEgKzAwMDAKQEAgLTEyNTIsNiArMTI1Miw4MCBAQCBDVVJSRU5UX1VTRVIoKQogcm9vdEBsb2Nh bGhvc3QKIFNFVCBQQVNTV09SRCBGT1IgQ1VSUkVOVF9VU0VSKCkgPSBQQVNTV09SRCgiYWRtaW4i KTsKIFNFVCBQQVNTV09SRCBGT1IgQ1VSUkVOVF9VU0VSKCkgPSBQQVNTV09SRCgiIik7CisKKyMg QnVnIzU3OTUyCisKK0RST1AgREFUQUJBU0UgSUYgRVhJU1RTIG15c3FsdGVzdDE7CitEUk9QIERB VEFCQVNFIElGIEVYSVNUUyBteXNxbHRlc3QyOworQ1JFQVRFIERBVEFCQVNFIG15c3FsdGVzdDE7 CitDUkVBVEUgREFUQUJBU0UgbXlzcWx0ZXN0MjsKK3VzZSBteXNxbHRlc3QxOworQ1JFQVRFIFRB QkxFIHQxKGEgSU5ULCBiIElOVCk7CitJTlNFUlQgSU5UTyB0MSBWQUxVRVMgKDEsIDEpOworQ1JF QVRFIFRBQkxFIHQyKGEgSU5UKTsKK0lOU0VSVCBJTlRPIHQyIFZBTFVFUyAoMik7CitDUkVBVEUg VEFCTEUgbXlzcWx0ZXN0Mi50MyhhIElOVCk7CitJTlNFUlQgSU5UTyBteXNxbHRlc3QyLnQzIFZB TFVFUyAoNCk7CitDUkVBVEUgVVNFUiB0ZXN0dXNlckBsb2NhbGhvc3Q7CitHUkFOVCBDUkVBVEUg Uk9VVElORSwgRVhFQ1VURSBPTiBteXNxbHRlc3QxLiogVE8gdGVzdHVzZXJAbG9jYWxob3N0Owor R1JBTlQgU0VMRUNUKGIpIE9OIHQxIFRPIHRlc3R1c2VyQGxvY2FsaG9zdDsKK0dSQU5UIFNFTEVD VCAgICBPTiB0MiBUTyB0ZXN0dXNlckBsb2NhbGhvc3Q7CitHUkFOVCBTRUxFQ1QgICAgT04gbXlz cWx0ZXN0Mi4qIFRPIHRlc3R1c2VyQGxvY2FsaG9zdDsKKworIyBDb25uZWN0aW9uOiBidWc1Nzk1 Ml9jb24xICh0ZXN0dXNlckBsb2NhbGhvc3QsIGRiOiBteXNxbHRlc3QxKQorUFJFUEFSRSBzMSBG Uk9NICdTRUxFQ1QgYiBGUk9NIHQxJzsKK1BSRVBBUkUgczIgRlJPTSAnU0VMRUNUIGEgRlJPTSB0 Mic7CitQUkVQQVJFIHMzIEZST00gJ1NIT1cgVEFCTEVTIEZST00gbXlzcWx0ZXN0Mic7CitDUkVB VEUgUFJPQ0VEVVJFIHAxKCkgU0VMRUNUIGIgRlJPTSB0MTsKK0NSRUFURSBQUk9DRURVUkUgcDIo KSBTRUxFQ1QgYSBGUk9NIHQyOworQ1JFQVRFIFBST0NFRFVSRSBwMygpIFNIT1cgVEFCTEVTIEZS T00gbXlzcWx0ZXN0MjsKK0NBTEwgcDE7CitiCisxCitDQUxMIHAyOworYQorMgorQ0FMTCBwMzsK K1RhYmxlc19pbl9teXNxbHRlc3QyCit0MworCisjIENvbm5lY3Rpb246IGRlZmF1bHQKK1JFVk9L RSBTRUxFQ1QgT04gdDEgRlJPTSB0ZXN0dXNlckBsb2NhbGhvc3Q7CitHUkFOVCBTRUxFQ1QoYSkg T04gdDEgVE8gdGVzdHVzZXJAbG9jYWxob3N0OworUkVWT0tFIFNFTEVDVCBPTiB0MiBGUk9NIHRl c3R1c2VyQGxvY2FsaG9zdDsKK1JFVk9LRSBTRUxFQ1QgT04gbXlzcWx0ZXN0Mi4qIEZST00gdGVz dHVzZXJAbG9jYWxob3N0OworCisjIENvbm5lY3Rpb246IGJ1ZzU3OTUyX2NvbjEgKHRlc3R1c2Vy QGxvY2FsaG9zdCwgZGI6IG15c3FsdGVzdDEpCisjICAgLSBDaGVjayBjb2x1bW4tbGV2ZWwgcHJp dmlsZWdlcy4uLgorRVhFQ1VURSBzMTsKK0VSUk9SIDQyMDAwOiBTRUxFQ1QgY29tbWFuZCBkZW5p ZWQgdG8gdXNlciAndGVzdHVzZXInQCdsb2NhbGhvc3QnIGZvciBjb2x1bW4gJ2InIGluIHRhYmxl ICd0MScKK1NFTEVDVCBiIEZST00gdDE7CitFUlJPUiA0MjAwMDogU0VMRUNUIGNvbW1hbmQgZGVu aWVkIHRvIHVzZXIgJ3Rlc3R1c2VyJ0AnbG9jYWxob3N0JyBmb3IgY29sdW1uICdiJyBpbiB0YWJs ZSAndDEnCitFWEVDVVRFIHMxOworRVJST1IgNDIwMDA6IFNFTEVDVCBjb21tYW5kIGRlbmllZCB0 byB1c2VyICd0ZXN0dXNlcidAJ2xvY2FsaG9zdCcgZm9yIGNvbHVtbiAnYicgaW4gdGFibGUgJ3Qx JworQ0FMTCBwMTsKK0VSUk9SIDQyMDAwOiBTRUxFQ1QgY29tbWFuZCBkZW5pZWQgdG8gdXNlciAn dGVzdHVzZXInQCdsb2NhbGhvc3QnIGZvciBjb2x1bW4gJ2InIGluIHRhYmxlICd0MScKKyMgICAt IENoZWNrIHRhYmxlLWxldmVsIHByaXZpbGVnZXMuLi4KK1NFTEVDVCBhIEZST00gdDI7CitFUlJP UiA0MjAwMDogU0VMRUNUIGNvbW1hbmQgZGVuaWVkIHRvIHVzZXIgJ3Rlc3R1c2VyJ0AnbG9jYWxo b3N0JyBmb3IgdGFibGUgJ3QyJworRVhFQ1VURSBzMjsKK0VSUk9SIDQyMDAwOiBTRUxFQ1QgY29t bWFuZCBkZW5pZWQgdG8gdXNlciAndGVzdHVzZXInQCdsb2NhbGhvc3QnIGZvciB0YWJsZSAndDIn CitDQUxMIHAyOworRVJST1IgNDIwMDA6IFNFTEVDVCBjb21tYW5kIGRlbmllZCB0byB1c2VyICd0 ZXN0dXNlcidAJ2xvY2FsaG9zdCcgZm9yIHRhYmxlICd0MicKKyMgICAtIENoZWNrIGRhdGFiYXNl LWxldmVsIHByaXZpbGVnZXMuLi4KK1NIT1cgVEFCTEVTIEZST00gbXlzcWx0ZXN0MjsKK0VSUk9S IDQyMDAwOiBBY2Nlc3MgZGVuaWVkIGZvciB1c2VyICd0ZXN0dXNlcidAJ2xvY2FsaG9zdCcgdG8g ZGF0YWJhc2UgJ215c3FsdGVzdDInCitFWEVDVVRFIHMzOworRVJST1IgNDIwMDA6IEFjY2VzcyBk ZW5pZWQgZm9yIHVzZXIgJ3Rlc3R1c2VyJ0AnbG9jYWxob3N0JyB0byBkYXRhYmFzZSAnbXlzcWx0 ZXN0MicKK0NBTEwgcDM7CitFUlJPUiA0MjAwMDogQWNjZXNzIGRlbmllZCBmb3IgdXNlciAndGVz dHVzZXInQCdsb2NhbGhvc3QnIHRvIGRhdGFiYXNlICdteXNxbHRlc3QyJworCisjIENvbm5lY3Rp b246IGRlZmF1bHQKK0RST1AgREFUQUJBU0UgbXlzcWx0ZXN0MTsKK0RST1AgREFUQUJBU0UgbXlz cWx0ZXN0MjsKK0RST1AgVVNFUiB0ZXN0dXNlckBsb2NhbGhvc3Q7Cit1c2UgdGVzdDsKKwogRW5k IG9mIDUuMCB0ZXN0cwogc2V0IG5hbWVzIHV0Zjg7CiBncmFudCBzZWxlY3Qgb24gdGVzdC4qIHRv IO+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/vV/vv73vv73vv73vv73vv73vv73vv73vv71AbG9jYWxo b3N0OwoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qvci9vcmRlcl9ieS5yZXN1bHQnCi0t LSBhL215c3FsLXRlc3Qvci9vcmRlcl9ieS5yZXN1bHQJMjAxMC0wOS0xMyAxMTozMzoxOSArMDAw MAorKysgYi9teXNxbC10ZXN0L3Ivb3JkZXJfYnkucmVzdWx0CTIwMTEtMDItMDcgMDk6MzY6MjEg KzAwMDAKQEAgLTE2MzgsNCArMTYzOCwyOSBAQCBpZAlzZWxlY3RfdHlwZQl0YWJsZQl0eXBlCXBv c3NpYmxlX2tleXMKIDEJU0lNUExFCXQxCWluZGV4CU5VTEwJYQk4CU5VTEwJMTAJVXNpbmcgaW5k ZXg7IFVzaW5nIHRlbXBvcmFyeTsgVXNpbmcgZmlsZXNvcnQKIDEJU0lNUExFCXQyCWVxX3JlZglQ UklNQVJZCVBSSU1BUlkJNAl0ZXN0LnQxLmIJMQlVc2luZyB3aGVyZQogRFJPUCBUQUJMRSB0MSwg dDI7CisjCisjIEJ1ZyAjNTkxMTA6IE1lbW9yeSBsZWFrIG9mIFFVSUNLX1NFTEVDVF9JIGFsbG9j YXRlZCBtZW1vcnkgCisjICBhbmQKKyMgQnVnICM1OTMwODogSW5jb3JyZWN0IHJlc3VsdCBmb3Ig CitTRUxFQ1QgRElTVElOQ1QgPGNvbD4uLi4gT1JERVIgQlkgPGNvbD4gREVTQyAKKworIyBVc2Ug VmFsZ3JpbmQgdG8gZGV0ZWN0ICM1OTExMCEKKyMKK0NSRUFURSBUQUJMRSB0MSAoYSBJTlQsS0VZ IChhKSk7CitJTlNFUlQgSU5UTyB0MSBWQUxVRVMgKDEpLCgyKSwoMyksKDQpLCg1KSwoNiksKDcp LCg4KSwoOSksKDEwKTsKK0VYUExBSU4gU0VMRUNUIERJU1RJTkNUIGEsMSBGUk9NIHQxIFdIRVJF IGEgPD4gMSBPUkRFUiBCWSBhIERFU0M7CitpZAlzZWxlY3RfdHlwZQl0YWJsZQl0eXBlCXBvc3Np YmxlX2tleXMJa2V5CWtleV9sZW4JcmVmCXJvd3MJRXh0cmEKKzEJU0lNUExFCXQxCWluZGV4CWEJ YQk1CU5VTEwJMTAJVXNpbmcgd2hlcmU7IFVzaW5nIGluZGV4OyBVc2luZyBmaWxlc29ydAorU0VM RUNUIERJU1RJTkNUIGEsMSBGUk9NIHQxIFdIRVJFIGEgPD4gMSBPUkRFUiBCWSBhIERFU0M7Cith CTEKKzEwCTEKKzkJMQorOAkxCis3CTEKKzYJMQorNQkxCis0CTEKKzMJMQorMgkxCitEUk9QIFRB QkxFIHQxOwogRW5kIG9mIDUuMSB0ZXN0cwoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qv ci90eXBlX3llYXIucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3IvdHlwZV95ZWFyLnJlc3VsdAky MDEwLTAzLTIyIDA4OjMzOjI1ICswMDAwCisrKyBiL215c3FsLXRlc3Qvci90eXBlX3llYXIucmVz dWx0CTIwMTEtMDEtMTIgMDk6Mzc6MTUgKzAwMDAKQEAgLTM0MSw0ICszNDEsMTggQEAgdGFfeQlz CXRiX3kJcwogMjAwMQkyMDAxCTIwMDEJMjAwMQogRFJPUCBUQUJMRSB0MTsKICMKKyMgQnVnICM1 OTIxMTogU2VsZWN0IFJldHVybnMgRGlmZmVyZW50IFZhbHVlIGZvciBtaW4oeWVhcikgRnVuY3Rp b24KKyMKK0NSRUFURSBUQUJMRSB0MShjMSBZRUFSKDQpKTsKK0lOU0VSVCBJTlRPIHQxIFZBTFVF UyAoMTkwMSksKDIxNTUpLCgwMDAwKTsKK1NFTEVDVCAqIEZST00gdDE7CitjMQorMTkwMQorMjE1 NQorMDAwMAorU0VMRUNUIENPVU5UKCopIEFTIHRvdGFsX3Jvd3MsIE1JTihjMSkgQVMgbWluX3Zh bHVlLCBNQVgoYzEpIEZST00gdDE7Cit0b3RhbF9yb3dzCW1pbl92YWx1ZQlNQVgoYzEpCiszCTAJ MjE1NQorRFJPUCBUQUJMRSB0MTsKKyMKIEVuZCBvZiA1LjEgdGVzdHMKCj09PSBtb2RpZmllZCBm aWxlICdteXNxbC10ZXN0L3IvdXNlcl92YXIucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3IvdXNl cl92YXIucmVzdWx0CTIwMTAtMTEtMjIgMDg6NTc6NTkgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC9y L3VzZXJfdmFyLnJlc3VsdAkyMDEwLTEyLTA2IDIwOjM4OjMxICswMDAwCkBAIC00NTAsNCArNDUw LDEwIEBAIERST1AgVEFCTEUgdDE7CiBzZWxlY3QgQHY6PUB2Oj1zdW0oMSkgZnJvbSBkdWFsOwog QHY6PUB2Oj1zdW0oMSkKIDEKK0NSRUFURSBUQUJMRSB0MShhIERFQ0lNQUwoMzEsMjEpKTsKK0lO U0VSVCBJTlRPIHQxIFZBTFVFUyAoMCk7CitTRUxFQ1QgKEB2Oj1hKSA8PiAoQHY6PTEpIEZST00g dDE7CisoQHY6PWEpIDw+IChAdjo9MSkKKzEKK0RST1AgVEFCTEUgdDE7CiBFbmQgb2YgNS4xIHRl c3RzCgo9PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC9zdWl0ZS9iaW5sb2cvci9iaW5sb2df dW5zYWZlLnJlc3VsdCcKLS0tIGEvbXlzcWwtdGVzdC9zdWl0ZS9iaW5sb2cvci9iaW5sb2dfdW5z YWZlLnJlc3VsdAkyMDEwLTEyLTIwIDA5OjA3OjM1ICswMDAwCisrKyBiL215c3FsLXRlc3Qvc3Vp dGUvYmlubG9nL3IvYmlubG9nX3Vuc2FmZS5yZXN1bHQJMjAxMC0xMi0yMyAxMTozNTo0MiArMDAw MApAQCAtMjcxLDcgKzI3MSw3IEBAIElOU0VSVCBJTlRPIHQxIFNFTEVDVCAqIEZST00gdDIgTElN SVQgMTsKIERST1AgVEFCTEUgdDEsdDI7CiAiU2hvdWxkIE5PVCBoYXZlIGFueSB3YXJuaW5nIG1l c3NhZ2UgaXNzdWVkIGluIHRoZSBmb2xsb3dpbmcgZnVuYzcoKSBhbmQgdHJpZyIKIENSRUFURSBU QUJMRSB0MSAoYSBJTlQpOwotQ1JFQVRFIFRBQkxFIHQyIChhIENIQVIoNDApKTsKK0NSRUFURSBU QUJMRSB0MiAoYSBURVhUKTsKIENSRUFURSBUQUJMRSB0cmlnZ2VyX3RhYmxlIChhIENIQVIoNykp OwogQ1JFQVRFIEZVTkNUSU9OIGZ1bmM3KCkKIFJFVFVSTlMgSU5UCgo9PT0gbW9kaWZpZWQgZmls ZSAnbXlzcWwtdGVzdC9zdWl0ZS9iaW5sb2cvdC9iaW5sb2dfdW5zYWZlLnRlc3QnCi0tLSBhL215 c3FsLXRlc3Qvc3VpdGUvYmlubG9nL3QvYmlubG9nX3Vuc2FmZS50ZXN0CTIwMTAtMTItMjAgMDk6 MDc6MzUgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC9zdWl0ZS9iaW5sb2cvdC9iaW5sb2dfdW5zYWZl LnRlc3QJMjAxMC0xMi0yMyAxMTozNTo0MiArMDAwMApAQCAtMzI5LDcgKzMyOSw3IEBAIERST1Ag VEFCTEUgdDEsdDI7CiAKIC0tZWNobyAiU2hvdWxkIE5PVCBoYXZlIGFueSB3YXJuaW5nIG1lc3Nh Z2UgaXNzdWVkIGluIHRoZSBmb2xsb3dpbmcgZnVuYzcoKSBhbmQgdHJpZyIKIENSRUFURSBUQUJM RSB0MSAoYSBJTlQpOwotQ1JFQVRFIFRBQkxFIHQyIChhIENIQVIoNDApKTsKK0NSRUFURSBUQUJM RSB0MiAoYSBURVhUKTsKIENSRUFURSBUQUJMRSB0cmlnZ2VyX3RhYmxlIChhIENIQVIoNykpOwog REVMSU1JVEVSIHw7CiBDUkVBVEUgRlVOQ1RJT04gZnVuYzcoKQoKPT09IG1vZGlmaWVkIGZpbGUg J215c3FsLXRlc3Qvc3VpdGUvZW5naW5lcy9mdW5jcy9yL3BzX3N0cmluZ19ub3RfbnVsbC5yZXN1 bHQnCkZpbGVzIGEvbXlzcWwtdGVzdC9zdWl0ZS9lbmdpbmVzL2Z1bmNzL3IvcHNfc3RyaW5nX25v dF9udWxsLnJlc3VsdAkyMDEwLTAzLTE4IDA2OjQyOjA3ICswMDAwIGFuZCBiL215c3FsLXRlc3Qv c3VpdGUvZW5naW5lcy9mdW5jcy9yL3BzX3N0cmluZ19ub3RfbnVsbC5yZXN1bHQJMjAxMS0wMi0w NyAwNTo0MDozNSArMDAwMCBkaWZmZXIKCj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3N1 aXRlL2VuZ2luZXMvZnVuY3MvdC9wc19zdHJpbmdfbm90X251bGwudGVzdCcKLS0tIGEvbXlzcWwt dGVzdC9zdWl0ZS9lbmdpbmVzL2Z1bmNzL3QvcHNfc3RyaW5nX25vdF9udWxsLnRlc3QJMjAxMC0w My0xOCAwNjo0MjowNyArMDAwMAorKysgYi9teXNxbC10ZXN0L3N1aXRlL2VuZ2luZXMvZnVuY3Mv dC9wc19zdHJpbmdfbm90X251bGwudGVzdAkyMDExLTAyLTA3IDA1OjQwOjM1ICswMDAwCkBAIC0x LDUgKzEsNSBAQAogLS1kaXNhYmxlX3dhcm5pbmdzCi1EUk9QIFRBQkxFIElGIEVYSVNUUyB0MjsK K0RST1AgVEFCTEUgSUYgRVhJU1RTIHQxOwogLS1lbmFibGVfd2FybmluZ3MKIENSRUFURSBUQUJM RSB0MShjMSBDSEFSKDEwMCkgTk9UIE5VTEwpOwogUFJFUEFSRSBzdG10MSBGUk9NICdJTlNFUlQg SU5UTyB0MSAoYzEpIFZBTFVFUyg/KSc7Cgo9PT0gYWRkZWQgZmlsZSAnbXlzcWwtdGVzdC9zdWl0 ZS9pbm5vZGJfcGx1Z2luL3IvaW5ub2RiLWF1dG9pbmMtNTYyMjgucmVzdWx0JwotLS0gYS9teXNx bC10ZXN0L3N1aXRlL2lubm9kYl9wbHVnaW4vci9pbm5vZGItYXV0b2luYy01NjIyOC5yZXN1bHQJ MTk3MC0wMS0wMSAwMDowMDowMCArMDAwMAorKysgYi9teXNxbC10ZXN0L3N1aXRlL2lubm9kYl9w bHVnaW4vci9pbm5vZGItYXV0b2luYy01NjIyOC5yZXN1bHQJMjAxMC0xMS0zMCAwOToxMToyNiAr MDAwMApAQCAtMCwwICsxLDMwIEBACitEUk9QIFRBQkxFIElGIEVYSVNUUyB0MV81NjIyODsKK1dh cm5pbmdzOgorTm90ZQkxMDUxCVVua25vd24gdGFibGUgJ3QxXzU2MjI4JworRFJPUCBUQUJMRSBJ RiBFWElTVFMgdDJfNTYyMjg7CitXYXJuaW5nczoKK05vdGUJMTA1MQlVbmtub3duIHRhYmxlICd0 Ml81NjIyOCcKK0RST1AgRlVOQ1RJT04gSUYgRVhJU1RTIGJ1ZzU2MjI4OworV2FybmluZ3M6CitO b3RlCTEzMDUJRlVOQ1RJT04gYnVnNTYyMjggZG9lcyBub3QgZXhpc3QKK0NSRUFURSBURU1QT1JB UlkgVEFCTEUgdDFfNTYyMjgoCitjMSBpTlQgQVVUT19JTkNSRU1FTlQgUFJJTUFSWSBLRVkpIEVO R0lORT1Jbm5vREI7CitDUkVBVEUgVEVNUE9SQVJZIFRBQkxFIHQyXzU2MjI4KAorYzEgaU5UIEFV VE9fSU5DUkVNRU5UIFBSSU1BUlkgS0VZKSBFTkdJTkU9SW5ub0RCOworQ1JFQVRFIEZVTkNUSU9O IGJ1ZzU2MjI4KCkgUkVUVVJOUyBJTlQgREVURVJNSU5JU1RJQworQkVHSU4KK0lOU0VSVCBJTlRP IHQxXzU2MjI4IFZBTFVFUyhOVUxMKTsKK0lOU0VSVCBJTlRPIHQyXzU2MjI4IFZBTFVFUyhOVUxM KTsKK0lOU0VSVCBJTlRPIHQxXzU2MjI4IFZBTFVFUyhOVUxMKTsKK0lOU0VSVCBJTlRPIHQyXzU2 MjI4IFZBTFVFUyhOVUxMKTsKK0RST1AgVEVNUE9SQVJZIFRBQkxFIHQxXzU2MjI4OworUkVUVVJO IDQyOworRU5EIC8vCitTRUxFQ1QgYnVnNTYyMjgoKTsKK2J1ZzU2MjI4KCkKKzQyCitEUk9QIEZV TkNUSU9OIGJ1ZzU2MjI4OworRFJPUCBURU1QT1JBUlkgVEFCTEUgdDJfNTYyMjg7CitEUk9QIFRF TVBPUkFSWSBUQUJMRSBJRiBFWElTVFMgdDFfNTYyMjg7CitXYXJuaW5nczoKK05vdGUJMTA1MQlV bmtub3duIHRhYmxlICd0MV81NjIyOCcKCj09PSBhZGRlZCBmaWxlICdteXNxbC10ZXN0L3N1aXRl L2lubm9kYl9wbHVnaW4vdC9pbm5vZGItYXV0b2luYy01NjIyOC1tYXN0ZXIub3B0JwotLS0gYS9t eXNxbC10ZXN0L3N1aXRlL2lubm9kYl9wbHVnaW4vdC9pbm5vZGItYXV0b2luYy01NjIyOC1tYXN0 ZXIub3B0CTE5NzAtMDEtMDEgMDA6MDA6MDAgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC9zdWl0ZS9p bm5vZGJfcGx1Z2luL3QvaW5ub2RiLWF1dG9pbmMtNTYyMjgtbWFzdGVyLm9wdAkyMDEwLTExLTMw IDA5OjExOjI2ICswMDAwCkBAIC0wLDAgKzEgQEAKKy0taW5ub2RiX2F1dG9pbmNfbG9ja19tb2Rl PTAKCj09PSBhZGRlZCBmaWxlICdteXNxbC10ZXN0L3N1aXRlL2lubm9kYl9wbHVnaW4vdC9pbm5v ZGItYXV0b2luYy01NjIyOC50ZXN0JwotLS0gYS9teXNxbC10ZXN0L3N1aXRlL2lubm9kYl9wbHVn aW4vdC9pbm5vZGItYXV0b2luYy01NjIyOC50ZXN0CTE5NzAtMDEtMDEgMDA6MDA6MDAgKzAwMDAK KysrIGIvbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGJfcGx1Z2luL3QvaW5ub2RiLWF1dG9pbmMtNTYy MjgudGVzdAkyMDEwLTExLTMwIDA5OjExOjI2ICswMDAwCkBAIC0wLDAgKzEsNDIgQEAKKy0tIHNv dXJjZSBpbmNsdWRlL2hhdmVfaW5ub2RiX3BsdWdpbi5pbmMKKworbGV0ICRpbm5vZGJfZmlsZV9m b3JtYXRfY2hlY2tfb3JpZz1gc2VsZWN0IEBAaW5ub2RiX2ZpbGVfZm9ybWF0X2NoZWNrYDsKKwor IyMKKyMgQnVnICM1NjIyODogZHJvcHBpbmcgdGFibGVzIGZyb20gd2l0aGluIGFuIGFjdGl2ZSBz dGF0ZW1lbnQgY3Jhc2hlcyBzZXJ2ZXIKKyMKK0RST1AgVEFCTEUgSUYgRVhJU1RTIHQxXzU2MjI4 OworRFJPUCBUQUJMRSBJRiBFWElTVFMgdDJfNTYyMjg7CitEUk9QIEZVTkNUSU9OIElGIEVYSVNU UyBidWc1NjIyODsKKworQ1JFQVRFIFRFTVBPUkFSWSBUQUJMRSB0MV81NjIyOCgKKwljMSBpTlQg QVVUT19JTkNSRU1FTlQgUFJJTUFSWSBLRVkpIEVOR0lORT1Jbm5vREI7CitDUkVBVEUgVEVNUE9S QVJZIFRBQkxFIHQyXzU2MjI4KAorCWMxIGlOVCBBVVRPX0lOQ1JFTUVOVCBQUklNQVJZIEtFWSkg RU5HSU5FPUlubm9EQjsKKworREVMSU1JVEVSIC8vOworCitDUkVBVEUgRlVOQ1RJT04gYnVnNTYy MjgoKSBSRVRVUk5TIElOVCBERVRFUk1JTklTVElDCitCRUdJTgorIElOU0VSVCBJTlRPIHQxXzU2 MjI4IFZBTFVFUyhOVUxMKTsKKyBJTlNFUlQgSU5UTyB0Ml81NjIyOCBWQUxVRVMoTlVMTCk7Cisg SU5TRVJUIElOVE8gdDFfNTYyMjggVkFMVUVTKE5VTEwpOworIElOU0VSVCBJTlRPIHQyXzU2MjI4 IFZBTFVFUyhOVUxMKTsKKyBEUk9QIFRFTVBPUkFSWSBUQUJMRSB0MV81NjIyODsKKyBSRVRVUk4g NDI7CitFTkQgLy8KKworREVMSU1JVEVSIDsvLworCitTRUxFQ1QgYnVnNTYyMjgoKTsKKworRFJP UCBGVU5DVElPTiBidWc1NjIyODsKK0RST1AgVEVNUE9SQVJZIFRBQkxFIHQyXzU2MjI4OworRFJP UCBURU1QT1JBUlkgVEFCTEUgSUYgRVhJU1RTIHQxXzU2MjI4OworCisjCisjIHJlc3RvcmUgZW52 aXJvbm1lbnQgdG8gdGhlIHN0YXRlIGl0IHdhcyBiZWZvcmUgdGhpcyB0ZXN0IGV4ZWN1dGlvbgor IworCistLSBkaXNhYmxlX3F1ZXJ5X2xvZworZXZhbCBzZXQgZ2xvYmFsIGlubm9kYl9maWxlX2Zv cm1hdF9jaGVjaz0kaW5ub2RiX2ZpbGVfZm9ybWF0X2NoZWNrX29yaWc7Cgo9PT0gbW9kaWZpZWQg ZmlsZSAnbXlzcWwtdGVzdC9zdWl0ZS9ycGwvci9ycGxfY2lyY3VsYXJfZm9yXzRfaG9zdHMucmVz dWx0JwotLS0gYS9teXNxbC10ZXN0L3N1aXRlL3JwbC9yL3JwbF9jaXJjdWxhcl9mb3JfNF9ob3N0 cy5yZXN1bHQJMjAxMC0xMi0xOSAxNzowNzoyOCArMDAwMAorKysgYi9teXNxbC10ZXN0L3N1aXRl L3JwbC9yL3JwbF9jaXJjdWxhcl9mb3JfNF9ob3N0cy5yZXN1bHQJMjAxMS0wMi0wMyAxNjowOToz MyArMDAwMApAQCAtMTIxLDExICsxMjEsMTEgQEAgTWFzdGVyIEQJMTIJRAogKiBSZW1vdmUgd3Jv bmcgZXZlbnQgZnJvbSBDIGFuZCByZXN0b3JlIEItPkMtPkQgKgogaW5jbHVkZS9zdG9wX3NsYXZl LmluYwogREVMRVRFIEZST00gdDEgV0hFUkUgYSA9IDY7Ci1TVEFSVCBTTEFWRTsKK2luY2x1ZGUv c3RhcnRfc2xhdmUuaW5jCiBSRVNFVCBNQVNURVI7CiBSRVNFVCBTTEFWRTsKIGluY2x1ZGUvcnBs X2NoYW5nZV90b3BvbG9neS5pbmMgW25ldyB0b3BvbG9neT0xLT4yLT4zLT40LT4xXQotU1RBUlQg U0xBVkU7CitpbmNsdWRlL3N0YXJ0X3NsYXZlLmluYwogaW5jbHVkZS9ycGxfc3luYy5pbmMKIAog KiBDaGVjayBkYXRhIGluc2VydGVkIGJlZm9yZSByZXN0b3Jpbmcgc2NoZW1hIEEtPkItPkMtPkQt PkEgKgoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qvc3VpdGUvcnBsL3QvcnBsX2NpcmN1 bGFyX2Zvcl80X2hvc3RzLnRlc3QnCi0tLSBhL215c3FsLXRlc3Qvc3VpdGUvcnBsL3QvcnBsX2Np cmN1bGFyX2Zvcl80X2hvc3RzLnRlc3QJMjAxMC0xMi0xOSAxNzowNzoyOCArMDAwMAorKysgYi9t eXNxbC10ZXN0L3N1aXRlL3JwbC90L3JwbF9jaXJjdWxhcl9mb3JfNF9ob3N0cy50ZXN0CTIwMTEt MDItMDMgMTY6MDk6MzMgKzAwMDAKQEAgLTE3NSw3ICsxNzUsNyBAQCBTRUxFQ1QgJ01hc3RlciBE JyxhLGIgRlJPTSB0MSBXSEVSRSBjID0KIHNvdXJjZSBpbmNsdWRlL3N0b3Bfc2xhdmUuaW5jOwog LS1jb25uZWN0aW9uIHNlcnZlcl8zCiBERUxFVEUgRlJPTSB0MSBXSEVSRSBhID0gNjsKLVNUQVJU IFNMQVZFOworLS1zb3VyY2UgaW5jbHVkZS9zdGFydF9zbGF2ZS5pbmMKIC0tY29ubmVjdGlvbiBz ZXJ2ZXJfMgogLS1zeW5jX3NsYXZlX3dpdGhfbWFzdGVyIHNlcnZlcl8zCiBSRVNFVCBNQVNURVI7 CkBAIC0xODksNyArMTg5LDcgQEAgUkVTRVQgU0xBVkU7CiAtLXNvdXJjZSBpbmNsdWRlL3JwbF9j aGFuZ2VfdG9wb2xvZ3kuaW5jCiAjLS1yZXBsYWNlX3Jlc3VsdCAkU0VSVkVSX01ZUE9SVF8zIFNF UlZFUl9NWVBPUlRfMyAkZmlsZV9kIExPR19GSUxFICRwb3NfZCBMT0dfUE9TIAogIy0tZXZhbCBD SEFOR0UgTUFTVEVSIFRPIG1hc3Rlcl9ob3N0PScxMjcuMC4wLjEnLG1hc3Rlcl9wb3J0PSRTRVJW RVJfTVlQT1JUXzMsbWFzdGVyX3VzZXI9J3Jvb3QnLG1hc3Rlcl9sb2dfZmlsZT0nJGZpbGVfZCcs bWFzdGVyX2xvZ19wb3M9JHBvc19kCi1TVEFSVCBTTEFWRTsKKy0tc291cmNlIGluY2x1ZGUvc3Rh cnRfc2xhdmUuaW5jCiAtLWNvbm5lY3Rpb24gc2VydmVyXzMKIC0tc3luY19zbGF2ZV93aXRoX21h c3RlciBzZXJ2ZXJfNAogLS1zb3VyY2UgaW5jbHVkZS9ycGxfc3luYy5pbmMKCj09PSBhZGRlZCBm aWxlICdteXNxbC10ZXN0L3N1aXRlL3N5c192YXJzL3Ivc2VjdXJlX2ZpbGVfcHJpdjIucmVzdWx0 JwotLS0gYS9teXNxbC10ZXN0L3N1aXRlL3N5c192YXJzL3Ivc2VjdXJlX2ZpbGVfcHJpdjIucmVz dWx0CTE5NzAtMDEtMDEgMDA6MDA6MDAgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC9zdWl0ZS9zeXNf dmFycy9yL3NlY3VyZV9maWxlX3ByaXYyLnJlc3VsdAkyMDEwLTEyLTE2IDEwOjQ5OjQwICswMDAw CkBAIC0wLDAgKzEsNiBAQAorQ1JFQVRFIFRBQkxFIHQxIChjMSBJTlQpOworTE9BRCBEQVRBIElO RklMRSAidDEuTVlJIiBpbnRvIHRhYmxlIHQxOworRVJST1IgSFkwMDA6IFRoZSBNeVNRTCBzZXJ2 ZXIgaXMgcnVubmluZyB3aXRoIHRoZSAtLXNlY3VyZS1maWxlLXByaXYgb3B0aW9uIHNvIGl0IGNh bm5vdCBleGVjdXRlIHRoaXMgc3RhdGVtZW50CitMT0FEIERBVEEgSU5GSUxFICIvdGVzdCIgaW50 byB0YWJsZSB0MTsKK0VSUk9SIEhZMDAwOiBUaGUgTXlTUUwgc2VydmVyIGlzIHJ1bm5pbmcgd2l0 aCB0aGUgLS1zZWN1cmUtZmlsZS1wcml2IG9wdGlvbiBzbyBpdCBjYW5ub3QgZXhlY3V0ZSB0aGlz IHN0YXRlbWVudAorRFJPUCBUQUJMRSB0MTsKCj09PSBhZGRlZCBmaWxlICdteXNxbC10ZXN0L3N1 aXRlL3N5c192YXJzL3Qvc2VjdXJlX2ZpbGVfcHJpdjItbWFzdGVyLm9wdCcKLS0tIGEvbXlzcWwt dGVzdC9zdWl0ZS9zeXNfdmFycy90L3NlY3VyZV9maWxlX3ByaXYyLW1hc3Rlci5vcHQJMTk3MC0w MS0wMSAwMDowMDowMCArMDAwMAorKysgYi9teXNxbC10ZXN0L3N1aXRlL3N5c192YXJzL3Qvc2Vj dXJlX2ZpbGVfcHJpdjItbWFzdGVyLm9wdAkyMDEwLTEyLTE2IDEwOjQ5OjQwICswMDAwCkBAIC0w LDAgKzEgQEAKKy0tc2VjdXJlX2ZpbGVfcHJpdj0kU0VDVVJFX0xPQURfUEFUSAoKPT09IGFkZGVk IGZpbGUgJ215c3FsLXRlc3Qvc3VpdGUvc3lzX3ZhcnMvdC9zZWN1cmVfZmlsZV9wcml2Mi50ZXN0 JwotLS0gYS9teXNxbC10ZXN0L3N1aXRlL3N5c192YXJzL3Qvc2VjdXJlX2ZpbGVfcHJpdjIudGVz dAkxOTcwLTAxLTAxIDAwOjAwOjAwICswMDAwCisrKyBiL215c3FsLXRlc3Qvc3VpdGUvc3lzX3Zh cnMvdC9zZWN1cmVfZmlsZV9wcml2Mi50ZXN0CTIwMTAtMTItMTYgMTA6NDk6NDAgKzAwMDAKQEAg LTAsMCArMSwyMyBAQAorIworIyBCdWc1ODc0NyBicmVha3Mgc2VjdXJlX2ZpbGVfcHJpditub3Qg c2VjdXJlIHlldCtzdGlsbCBhY2Nlc3NlcyBvdGhlciBmb2xkZXJzCisjCitDUkVBVEUgVEFCTEUg dDEgKGMxIElOVCk7CisjCisjIEJlZm9yZSB0aGUgcGF0Y2ggdGhpcyBzdGF0ZW1lbnQgZmFpbGVk IHdpdGgKKyMgTGludXg6CisjICAtPiBlcnJubyAxMzogJ0Nhbid0IGdldCBzdGF0IG9mICcKKyMg V2luZG93czoKKyMgIC0+IFdhcm5pbmcgMTM2NiBJbmNvcnJlY3QgaW50ZWdlciB2YWx1ZTogJ++/ ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/vScgZm9yCisjICAtPiAgICAgICAgICAgICAgY29sdW1u ICdjMScgYXQgcm93IDEKKyMgTm93IGl0IHNob3VsZCBjb25zaXN0ZW50bHkgZmFpbCB3aXRoIEVS X09QVElPTl9QUkVWRU5UU19TVEFURU1FTlQKKyMgb24gYWxsIHBsYXRmb3Jtcy4KKy0tZXJyb3Ig RVJfT1BUSU9OX1BSRVZFTlRTX1NUQVRFTUVOVAorTE9BRCBEQVRBIElORklMRSAidDEuTVlJIiBp bnRvIHRhYmxlIHQxOworCisjCisjIFRoZSBmb2xsb3dpbmcgdGVzdCBtYWtlcyB0aGUgYXNzdXB0 aW9uIHRoYXQgL3Rlc3QgaXNuJ3QgYSB2YWxpZCBwYXRoIGluIGFueQorIyBvcGVyYXRpbmcgc3lz dGVtIHJ1bm5pbmcgdGhlIHRlc3Qgc3VpdGUuCistLWVycm9yIEVSX09QVElPTl9QUkVWRU5UU19T VEFURU1FTlQKK0xPQUQgREFUQSBJTkZJTEUgIi90ZXN0IiBpbnRvIHRhYmxlIHQxOworCitEUk9Q IFRBQkxFIHQxOwoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3QvdC9ncmFudC50ZXN0Jwot LS0gYS9teXNxbC10ZXN0L3QvZ3JhbnQudGVzdAkyMDEwLTEwLTEzIDA1OjI4OjU4ICswMDAwCisr KyBiL215c3FsLXRlc3QvdC9ncmFudC50ZXN0CTIwMTAtMTItMTUgMTY6MDg6MjEgKzAwMDAKQEAg LTEyOTUsNiArMTI5NSwxMDcgQEAgU0VMRUNUIENVUlJFTlRfVVNFUigpOwogU0VUIFBBU1NXT1JE IEZPUiBDVVJSRU5UX1VTRVIoKSA9IFBBU1NXT1JEKCJhZG1pbiIpOwogU0VUIFBBU1NXT1JEIEZP UiBDVVJSRU5UX1VTRVIoKSA9IFBBU1NXT1JEKCIiKTsKIAorIworIyBCdWcjNTc5NTI6IHByaXZp bGVnZSBjaGFuZ2UgaXMgbm90IHRha2VuIGludG8gYWNjb3VudCBieSBFWEVDVVRFLgorIworCist LWVjaG8KKy0tZWNobyAjIEJ1ZyM1Nzk1MgorLS1lY2hvCisKKy0tZGlzYWJsZV93YXJuaW5ncwor RFJPUCBEQVRBQkFTRSBJRiBFWElTVFMgbXlzcWx0ZXN0MTsKK0RST1AgREFUQUJBU0UgSUYgRVhJ U1RTIG15c3FsdGVzdDI7CistLWVuYWJsZV93YXJuaW5ncworCitDUkVBVEUgREFUQUJBU0UgbXlz cWx0ZXN0MTsKK0NSRUFURSBEQVRBQkFTRSBteXNxbHRlc3QyOworCit1c2UgbXlzcWx0ZXN0MTsK K0NSRUFURSBUQUJMRSB0MShhIElOVCwgYiBJTlQpOworSU5TRVJUIElOVE8gdDEgVkFMVUVTICgx LCAxKTsKKworQ1JFQVRFIFRBQkxFIHQyKGEgSU5UKTsKK0lOU0VSVCBJTlRPIHQyIFZBTFVFUyAo Mik7CisKK0NSRUFURSBUQUJMRSBteXNxbHRlc3QyLnQzKGEgSU5UKTsKK0lOU0VSVCBJTlRPIG15 c3FsdGVzdDIudDMgVkFMVUVTICg0KTsKKworQ1JFQVRFIFVTRVIgdGVzdHVzZXJAbG9jYWxob3N0 OworR1JBTlQgQ1JFQVRFIFJPVVRJTkUsIEVYRUNVVEUgT04gbXlzcWx0ZXN0MS4qIFRPIHRlc3R1 c2VyQGxvY2FsaG9zdDsKK0dSQU5UIFNFTEVDVChiKSBPTiB0MSBUTyB0ZXN0dXNlckBsb2NhbGhv c3Q7CitHUkFOVCBTRUxFQ1QgICAgT04gdDIgVE8gdGVzdHVzZXJAbG9jYWxob3N0OworR1JBTlQg U0VMRUNUICAgIE9OIG15c3FsdGVzdDIuKiBUTyB0ZXN0dXNlckBsb2NhbGhvc3Q7CisKKy0tZWNo bworLS1lY2hvICMgQ29ubmVjdGlvbjogYnVnNTc5NTJfY29uMSAodGVzdHVzZXJAbG9jYWxob3N0 LCBkYjogbXlzcWx0ZXN0MSkKKy0tY29ubmVjdCAoYnVnNTc5NTJfY29uMSxsb2NhbGhvc3QsdGVz dHVzZXIsLG15c3FsdGVzdDEpCitQUkVQQVJFIHMxIEZST00gJ1NFTEVDVCBiIEZST00gdDEnOwor UFJFUEFSRSBzMiBGUk9NICdTRUxFQ1QgYSBGUk9NIHQyJzsKK1BSRVBBUkUgczMgRlJPTSAnU0hP VyBUQUJMRVMgRlJPTSBteXNxbHRlc3QyJzsKKworQ1JFQVRFIFBST0NFRFVSRSBwMSgpIFNFTEVD VCBiIEZST00gdDE7CitDUkVBVEUgUFJPQ0VEVVJFIHAyKCkgU0VMRUNUIGEgRlJPTSB0MjsKK0NS RUFURSBQUk9DRURVUkUgcDMoKSBTSE9XIFRBQkxFUyBGUk9NIG15c3FsdGVzdDI7CisKK0NBTEwg cDE7CitDQUxMIHAyOworQ0FMTCBwMzsKKworLS1lY2hvCistLWVjaG8gIyBDb25uZWN0aW9uOiBk ZWZhdWx0CistLWNvbm5lY3Rpb24gZGVmYXVsdAorUkVWT0tFIFNFTEVDVCBPTiB0MSBGUk9NIHRl c3R1c2VyQGxvY2FsaG9zdDsKK0dSQU5UIFNFTEVDVChhKSBPTiB0MSBUTyB0ZXN0dXNlckBsb2Nh bGhvc3Q7CitSRVZPS0UgU0VMRUNUIE9OIHQyIEZST00gdGVzdHVzZXJAbG9jYWxob3N0OworUkVW T0tFIFNFTEVDVCBPTiBteXNxbHRlc3QyLiogRlJPTSB0ZXN0dXNlckBsb2NhbGhvc3Q7CisKKy0t ZWNobworLS1lY2hvICMgQ29ubmVjdGlvbjogYnVnNTc5NTJfY29uMSAodGVzdHVzZXJAbG9jYWxo b3N0LCBkYjogbXlzcWx0ZXN0MSkKKy0tY29ubmVjdGlvbiBidWc1Nzk1Ml9jb24xCistLWVjaG8g IyAgIC0gQ2hlY2sgY29sdW1uLWxldmVsIHByaXZpbGVnZXMuLi4KKy0tZXJyb3IgRVJfQ09MVU1O QUNDRVNTX0RFTklFRF9FUlJPUgorRVhFQ1VURSBzMTsKKworLS1lcnJvciBFUl9DT0xVTU5BQ0NF U1NfREVOSUVEX0VSUk9SCitTRUxFQ1QgYiBGUk9NIHQxOworCistLWVycm9yIEVSX0NPTFVNTkFD Q0VTU19ERU5JRURfRVJST1IKK0VYRUNVVEUgczE7CisKKy0tZXJyb3IgRVJfQ09MVU1OQUNDRVNT X0RFTklFRF9FUlJPUgorQ0FMTCBwMTsKKworLS1lY2hvICMgICAtIENoZWNrIHRhYmxlLWxldmVs IHByaXZpbGVnZXMuLi4KKy0tZXJyb3IgRVJfVEFCTEVBQ0NFU1NfREVOSUVEX0VSUk9SCitTRUxF Q1QgYSBGUk9NIHQyOworCistLWVycm9yIEVSX1RBQkxFQUNDRVNTX0RFTklFRF9FUlJPUgorRVhF Q1VURSBzMjsKKworLS1lcnJvciBFUl9UQUJMRUFDQ0VTU19ERU5JRURfRVJST1IKK0NBTEwgcDI7 CisKKy0tZWNobyAjICAgLSBDaGVjayBkYXRhYmFzZS1sZXZlbCBwcml2aWxlZ2VzLi4uCistLWVy cm9yIEVSX0RCQUNDRVNTX0RFTklFRF9FUlJPUgorU0hPVyBUQUJMRVMgRlJPTSBteXNxbHRlc3Qy OworCistLWVycm9yIEVSX0RCQUNDRVNTX0RFTklFRF9FUlJPUgorRVhFQ1VURSBzMzsKKworLS1l cnJvciBFUl9EQkFDQ0VTU19ERU5JRURfRVJST1IKK0NBTEwgcDM7CisKKy0tZWNobworLS1lY2hv ICMgQ29ubmVjdGlvbjogZGVmYXVsdAorLS1jb25uZWN0aW9uIGRlZmF1bHQKKy0tZGlzY29ubmVj dCBidWc1Nzk1Ml9jb24xCitEUk9QIERBVEFCQVNFIG15c3FsdGVzdDE7CitEUk9QIERBVEFCQVNF IG15c3FsdGVzdDI7CitEUk9QIFVTRVIgdGVzdHVzZXJAbG9jYWxob3N0OwordXNlIHRlc3Q7Cist LWVjaG8KKwogLS1lY2hvIEVuZCBvZiA1LjAgdGVzdHMKIAogIwoKPT09IG1vZGlmaWVkIGZpbGUg J215c3FsLXRlc3QvdC9teXNxbC50ZXN0JwotLS0gYS9teXNxbC10ZXN0L3QvbXlzcWwudGVzdAky MDEwLTEyLTAxIDA2OjU1OjMxICswMDAwCisrKyBiL215c3FsLXRlc3QvdC9teXNxbC50ZXN0CTIw MTEtMDItMDUgMDU6MDI6MDAgKzAwMDAKQEAgLTQxMiw2ICs0MTIsMTIgQEAgZHJvcCB0YWJsZSB0 MTsKIC0tZWNobwogLS1leGVjICRNWVNRTCAtLXNraXAtY29sdW1uLW5hbWVzIC0tdmVydGljYWwg dGVzdCAtZSAic2VsZWN0IDEgYXMgYSIKIAorIworIyBCdWcjNTc0NTA6IG15c3FsIGNsaWVudCBl bnRlciBpbiBhbiBpbmZpbml0ZSBsb29wIGlmIHRoZSBzdGFuZGFyZCBpbnB1dCBpcyBhIGRpcmVj dG9yeQorIworLS1lcnJvciAxCistLWV4ZWMgJE1ZU1FMIDwgLgorCiAtLWVjaG8KIAogLS1lY2hv ICMKCj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3Qvb3JkZXJfYnkudGVzdCcKLS0tIGEv bXlzcWwtdGVzdC90L29yZGVyX2J5LnRlc3QJMjAxMC0wOS0xMyAxMTozMzoxOSArMDAwMAorKysg Yi9teXNxbC10ZXN0L3Qvb3JkZXJfYnkudGVzdAkyMDExLTAyLTA3IDA5OjM2OjIxICswMDAwCkBA IC0xNDkyLDQgKzE0OTIsMjEgQEAgTElNSVQgMjsKIERST1AgVEFCTEUgdDEsIHQyOwogCiAKKy0t ZWNobyAjCistLWVjaG8gIyBCdWcgIzU5MTEwOiBNZW1vcnkgbGVhayBvZiBRVUlDS19TRUxFQ1Rf SSBhbGxvY2F0ZWQgbWVtb3J5IAorLS1lY2hvICMgIGFuZAorLS1lY2hvICMgQnVnICM1OTMwODog SW5jb3JyZWN0IHJlc3VsdCBmb3IgCistLWVjaG8gICAgICAgICAgICAgICBTRUxFQ1QgRElTVElO Q1QgPGNvbD4uLi4gT1JERVIgQlkgPGNvbD4gREVTQyAKKy0tZWNobworLS1lY2hvICMgVXNlIFZh bGdyaW5kIHRvIGRldGVjdCAjNTkxMTAhCistLWVjaG8gIworCitDUkVBVEUgVEFCTEUgdDEgKGEg SU5ULEtFWSAoYSkpOworSU5TRVJUIElOVE8gdDEgVkFMVUVTICgxKSwoMiksKDMpLCg0KSwoNSks KDYpLCg3KSwoOCksKDkpLCgxMCk7CisKK0VYUExBSU4gU0VMRUNUIERJU1RJTkNUIGEsMSBGUk9N IHQxIFdIRVJFIGEgPD4gMSBPUkRFUiBCWSBhIERFU0M7CitTRUxFQ1QgRElTVElOQ1QgYSwxIEZS T00gdDEgV0hFUkUgYSA8PiAxIE9SREVSIEJZIGEgREVTQzsKKworRFJPUCBUQUJMRSB0MTsKKwog LS1lY2hvIEVuZCBvZiA1LjEgdGVzdHMKCj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3Qv dHlwZV95ZWFyLnRlc3QnCi0tLSBhL215c3FsLXRlc3QvdC90eXBlX3llYXIudGVzdAkyMDEwLTAz LTIyIDA4OjMzOjI1ICswMDAwCisrKyBiL215c3FsLXRlc3QvdC90eXBlX3llYXIudGVzdAkyMDEx LTAxLTEyIDA5OjM3OjE1ICswMDAwCkBAIC0xNTAsNSArMTUwLDE1IEBAIFNFTEVDVCB0YS55IEFT IHRhX3ksIHRhLnMsIHRiLnkgQVMgdGJfeSwKIERST1AgVEFCTEUgdDE7CiAKIC0tZWNobyAjCist LWVjaG8gIyBCdWcgIzU5MjExOiBTZWxlY3QgUmV0dXJucyBEaWZmZXJlbnQgVmFsdWUgZm9yIG1p bih5ZWFyKSBGdW5jdGlvbgorLS1lY2hvICMKKworQ1JFQVRFIFRBQkxFIHQxKGMxIFlFQVIoNCkp OworSU5TRVJUIElOVE8gdDEgVkFMVUVTICgxOTAxKSwoMjE1NSksKDAwMDApOworU0VMRUNUICog RlJPTSB0MTsKK1NFTEVDVCBDT1VOVCgqKSBBUyB0b3RhbF9yb3dzLCBNSU4oYzEpIEFTIG1pbl92 YWx1ZSwgTUFYKGMxKSBGUk9NIHQxOworRFJPUCBUQUJMRSB0MTsKKworLS1lY2hvICMKIAogLS1l Y2hvIEVuZCBvZiA1LjEgdGVzdHMKCj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3QvdXNl cl92YXIudGVzdCcKLS0tIGEvbXlzcWwtdGVzdC90L3VzZXJfdmFyLnRlc3QJMjAxMC0xMS0yMiAw ODo1Nzo1OSArMDAwMAorKysgYi9teXNxbC10ZXN0L3QvdXNlcl92YXIudGVzdAkyMDEwLTEyLTA2 IDIwOjM4OjMxICswMDAwCkBAIC0zNTMsNCArMzUzLDE2IEBAIERST1AgVEFCTEUgdDE7CiAKIHNl bGVjdCBAdjo9QHY6PXN1bSgxKSBmcm9tIGR1YWw7CiAKKyMKKyMgQnVnICM1NzE4NzogbW9yZSB1 c2VyIHZhcmlhYmxlIGZ1biB3aXRoIG11bHRpcGxlIGFzc2lnbm1lbnRzIGFuZAorIyAgICAgICAg ICAgICBjb21wYXJpc29uIGluIHF1ZXJ5CisjCisKK0NSRUFURSBUQUJMRSB0MShhIERFQ0lNQUwo MzEsMjEpKTsKK0lOU0VSVCBJTlRPIHQxIFZBTFVFUyAoMCk7CisKK1NFTEVDVCAoQHY6PWEpIDw+ IChAdjo9MSkgRlJPTSB0MTsKKworRFJPUCBUQUJMRSB0MTsKKwogLS1lY2hvIEVuZCBvZiA1LjEg dGVzdHMKCj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3ZhbGdyaW5kLnN1cHAnCi0tLSBh L215c3FsLXRlc3QvdmFsZ3JpbmQuc3VwcAkyMDExLTAxLTE4IDEwOjAzOjQ0ICswMDAwCisrKyBi L215c3FsLXRlc3QvdmFsZ3JpbmQuc3VwcAkyMDExLTAyLTA3IDE0OjQ1OjM3ICswMDAwCkBAIC03 NDQsMyArNzQ0LDUwIEBACiAgICBNZW1jaGVjazpBZGRyMQogICAgZnVuOmJ1Zl9idWRkeV9yZWxv Y2F0ZQogfQorCit7CisgICBCdWcgNTk4NzQgVmFsZ3JpbmQgd2FybmluZyBpbiBJbm5vREIgY29t cHJlc3Npb24gY29kZQorICAgTWVtY2hlY2s6Q29uZAorICAgZnVuOioKKyAgIGZ1bjoqCisgICBm dW46ZGVmbGF0ZQorICAgZnVuOmJ0cl9zdG9yZV9iaWdfcmVjX2V4dGVybl9maWVsZHNfZnVuYwor ICAgZnVuOnJvd19pbnNfaW5kZXhfZW50cnlfbG93CisgICBmdW46cm93X2luc19pbmRleF9lbnRy eQorICAgZnVuOnJvd19pbnNfaW5kZXhfZW50cnlfc3RlcAorICAgZnVuOnJvd19pbnMKKyAgIGZ1 bjpyb3dfaW5zX3N0ZXAKKyAgIGZ1bjpyb3dfaW5zZXJ0X2Zvcl9teXNxbAorfQorCit7CisgICBJ biBwYWdlMHppcC5jIHdlIGhhdmUgYWxyZWFkeSBjaGVja2VkIHRoYXQgdGhlIG1lbW9yeSBpcyBp bml0aWFsaXplZCBiZWZvcmUgY2FsbGluZyBkZWZsYXRlKCkKKyAgIE1lbWNoZWNrOkNvbmQKKyAg IGZ1bjoqCisgICBmdW46KgorICAgZnVuOmRlZmxhdGUKKyAgIGZ1bjpwYWdlX3ppcF9jb21wcmVz cworICAgZnVuOnBhZ2VfY3VyX2luc2VydF9yZWNfemlwX3Jlb3JnCisgICBmdW46cGFnZV9jdXJf aW5zZXJ0X3JlY196aXAKKyAgIGZ1bjpwYWdlX2N1cl90dXBsZV9pbnNlcnQKKyAgIGZ1bjpidHJf Y3VyX29wdGltaXN0aWNfaW5zZXJ0CisgICBmdW46cm93X2luc19pbmRleF9lbnRyeV9sb3cKKyAg IGZ1bjpyb3dfaW5zX2luZGV4X2VudHJ5CisgICBmdW46cm93X2luc19pbmRleF9lbnRyeV9zdGVw CisgICBmdW46cm93X2lucworICAgZnVuOnJvd19pbnNfc3RlcAorICAgZnVuOnJvd19pbnNlcnRf Zm9yX215c3FsCit9CisKK3sKKyAgIEJ1ZyA1OTg3NSBWYWxncmluZCB3YXJuaW5nIGluIGJ1ZjBi dWRkeS5jCisgICBNZW1jaGVjazpBZGRyMQorICAgZnVuOm1hY2hfcmVhZF9mcm9tXzQKKyAgIGZ1 bjpidWZfYnVkZHlfcmVsb2NhdGUKKyAgIGZ1bjpidWZfYnVkZHlfZnJlZV9sb3cKKyAgIGZ1bjpi dWZfYnVkZHlfZnJlZQorICAgZnVuOmJ1Zl9MUlVfYmxvY2tfcmVtb3ZlX2hhc2hlZF9wYWdlCisg ICBmdW46YnVmX0xSVV9pbnZhbGlkYXRlX3RhYmxlc3BhY2UKKyAgIGZ1bjpmaWxfZGVsZXRlX3Rh Ymxlc3BhY2UKKyAgIGZ1bjpyb3dfZHJvcF90YWJsZV9mb3JfbXlzcWwKK30KCj09PSBtb2RpZmll ZCBmaWxlICdteXN5cy9teV9mb3Blbi5jJwotLS0gYS9teXN5cy9teV9mb3Blbi5jCTIwMTEtMDEt MDcgMTk6Mjg6MDYgKzAwMDAKKysrIGIvbXlzeXMvbXlfZm9wZW4uYwkyMDExLTAxLTI1IDE0OjQy OjQwICswMDAwCkBAIC0xLDQgKzEsNCBAQAotLyogQ29weXJpZ2h0IChDKSAyMDAwIE15U1FMIEFC CisvKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMTEsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0 ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3lzL215X2dldHN5c3RpbWUuYycKLS0tIGEvbXlzeXMv bXlfZ2V0c3lzdGltZS5jCTIwMTEtMDEtMTEgMTM6NDQ6MzggKzAwMDAKKysrIGIvbXlzeXMvbXlf Z2V0c3lzdGltZS5jCTIwMTEtMDEtMjUgMTQ6NDI6NDAgKzAwMDAKQEAgLTEsNCArMSw0IEBACi0v KiBDb3B5cmlnaHQgKEMpIDIwMDQgTXlTUUwgQUIKKy8qIENvcHlyaWdodCAoYykgMjAwNCwgMjAx MSwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIAog ICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3FsL2hh bmRsZXIuY2MnCi0tLSBhL3NxbC9oYW5kbGVyLmNjCTIwMTEtMDEtMTEgMTE6MDk6NTQgKzAwMDAK KysrIGIvc3FsL2hhbmRsZXIuY2MJMjAxMS0wMS0yNSAxNDo0Mjo0MCArMDAwMApAQCAtMSw0ICsx LDQgQEAKLS8qIENvcHlyaWdodCAyMDAwLTIwMDggTXlTUUwgQUIsIDIwMDggU3VuIE1pY3Jvc3lz dGVtcywgSW5jLgorLyogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDExLCBPcmFjbGUgYW5kL29yIGl0 cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiAgICBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICAg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKCj09PSBtb2RpZmllZCBmaWxlICdzcWwvaXRlbS5oJwotLS0gYS9zcWwvaXRl bS5oCTIwMTEtMDEtMjcgMjI6NDc6MjQgKzAwMDAKKysrIGIvc3FsL2l0ZW0uaAkyMDExLTAyLTA4 IDExOjUyOjMzICswMDAwCkBAIC0yOTYwLDExICsyOTYwLDEwIEBAIGNsYXNzIEl0ZW1fY2FjaGU6 IHB1YmxpYyBJdGVtX2Jhc2ljX2NvbnMKIHByb3RlY3RlZDoKICAgSXRlbSAqZXhhbXBsZTsKICAg dGFibGVfbWFwIHVzZWRfdGFibGVfbWFwOwotICAvKgotICAgIEZpZWxkIHRoYXQgdGhpcyBvYmpl Y3Qgd2lsbCBnZXQgdmFsdWUgZnJvbS4gVGhpcyBpcyBzZXQvdXNlZCBieSAKKyAgLyoqCisgICAg RmllbGQgdGhhdCB0aGlzIG9iamVjdCB3aWxsIGdldCB2YWx1ZSBmcm9tLiBUaGlzIGlzIHVzZWQg YnkgCiAgICAgaW5kZXgtYmFzZWQgc3VicXVlcnkgZW5naW5lcyB0byBkZXRlY3QgYW5kIHJlbW92 ZSB0aGUgZXF1YWxpdHkgaW5qZWN0ZWQgCiAgICAgYnkgSU4tPkVYSVNUUyB0cmFuc2Zvcm1hdGlv bi4KLSAgICBGb3IgYWxsIG90aGVyIHVzZXMgb2YgSXRlbV9jYWNoZSwgY2FjaGVkX2ZpZWxkIGRv ZXNuJ3QgbWF0dGVyLgogICAqLyAgCiAgIEZpZWxkICpjYWNoZWRfZmllbGQ7CiAgIGVudW0gZW51 bV9maWVsZF90eXBlcyBjYWNoZWRfZmllbGRfdHlwZTsKQEAgLTMwMjEsNiArMzAyMCwxNCBAQCBw dWJsaWM6CiAgIHsKICAgICByZXR1cm4gdGhpcyA9PSBpdGVtOwogICB9CisKKyAgLyoqIAorICAg IElmIHRoaXMgaXRlbSBjYWNoZXMgYSBmaWVsZCB2YWx1ZSwgcmV0dXJuIHBvaW50ZXIgdG8gdW5k ZXJseWluZyBmaWVsZC4KKworICAgIEByZXR1cm4gUG9pbnRlciB0byBmaWVsZCwgb3IgTlVMTCBp ZiB0aGlzIGlzIG5vdCBhIGNhY2hlIGZvciBhIGZpZWxkIHZhbHVlLgorICAqLworICBGaWVsZCog ZmllbGQoKSB7IHJldHVybiBjYWNoZWRfZmllbGQ7IH0KKwogICB2aXJ0dWFsIHZvaWQgc3RvcmUo SXRlbSAqaXRlbSk7CiAgIHZpcnR1YWwgYm9vbCBjYWNoZV92YWx1ZSgpPSAwOwogfTsKCj09PSBt b2RpZmllZCBmaWxlICdzcWwvaXRlbV9jbXBmdW5jLmNjJwotLS0gYS9zcWwvaXRlbV9jbXBmdW5j LmNjCTIwMTEtMDEtMTkgMTQ6MDk6MzIgKzAwMDAKKysrIGIvc3FsL2l0ZW1fY21wZnVuYy5jYwky MDExLTAyLTA4IDExOjUyOjMzICswMDAwCkBAIC0xLDQgKzEsNCBAQAotLyogQ29weXJpZ2h0IChj KSAyMDAwLCAyMDEwLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJl c2VydmVkLgorLyogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDExLCBPcmFjbGUgYW5kL29yIGl0cyBh ZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiAgICBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICAgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKQEAgLTExOTYsOSArMTE5NiwxMiBAQCBnZXRfeWVhcl92YWx1ZShUSEQgKnRoZCwg SXRlbSAqKippdGVtX2FyCiAgICAgICAgICB2YWx1ZSBvZiAyMDAwLgogICAqLwogICBJdGVtICpy ZWFsX2l0ZW09IGl0ZW0tPnJlYWxfaXRlbSgpOwotICBpZiAoIShyZWFsX2l0ZW0tPnR5cGUoKSA9 PSBJdGVtOjpGSUVMRF9JVEVNICYmCi0gICAgICAgICgoSXRlbV9maWVsZCAqKXJlYWxfaXRlbSkt PmZpZWxkLT50eXBlKCkgPT0gTVlTUUxfVFlQRV9ZRUFSICYmCi0gICAgICAgICgoSXRlbV9maWVs ZCAqKXJlYWxfaXRlbSktPmZpZWxkLT5maWVsZF9sZW5ndGggPT0gNCkpCisgIEZpZWxkICpmaWVs ZD0gTlVMTDsKKyAgaWYgKHJlYWxfaXRlbS0+dHlwZSgpID09IEl0ZW06OkZJRUxEX0lURU0pCisg ICAgZmllbGQ9ICgoSXRlbV9maWVsZCAqKXJlYWxfaXRlbSktPmZpZWxkOworICBlbHNlIGlmIChy ZWFsX2l0ZW0tPnR5cGUoKSA9PSBJdGVtOjpDQUNIRV9JVEVNKQorICAgIGZpZWxkPSAoKEl0ZW1f Y2FjaGUgKilyZWFsX2l0ZW0pLT5maWVsZCgpOworICBpZiAoIShmaWVsZCAmJiBmaWVsZC0+dHlw ZSgpID09IE1ZU1FMX1RZUEVfWUVBUiAmJiBmaWVsZC0+ZmllbGRfbGVuZ3RoID09IDQpKQogICB7 CiAgICAgaWYgKHZhbHVlIDwgNzApCiAgICAgICB2YWx1ZSs9IDEwMDsKCj09PSBtb2RpZmllZCBm aWxlICdzcWwvaXRlbV9mdW5jLmNjJwotLS0gYS9zcWwvaXRlbV9mdW5jLmNjCTIwMTAtMTItMjgg MjM6NDc6MDUgKzAwMDAKKysrIGIvc3FsL2l0ZW1fZnVuYy5jYwkyMDExLTAxLTA3IDE0OjA2OjI0 ICswMDAwCkBAIC00MDY5LDcgKzQwNjksNyBAQCBteV9kZWNpbWFsICp1c2VyX3Zhcl9lbnRyeTo6 dmFsX2RlY2ltYWwoCiAgICAgaW50Mm15X2RlY2ltYWwoRV9ERUNfRkFUQUxfRVJST1IsICoobG9u Z2xvbmcqKSB2YWx1ZSwgMCwgdmFsKTsKICAgICBicmVhazsKICAgY2FzZSBERUNJTUFMX1JFU1VM VDoKLSAgICB2YWw9IChteV9kZWNpbWFsICopdmFsdWU7CisgICAgbXlfZGVjaW1hbDJkZWNpbWFs KChteV9kZWNpbWFsICopIHZhbHVlLCB2YWwpOwogICAgIGJyZWFrOwogICBjYXNlIFNUUklOR19S RVNVTFQ6CiAgICAgc3RyMm15X2RlY2ltYWwoRV9ERUNfRkFUQUxfRVJST1IsIHZhbHVlLCBsZW5n dGgsIGNvbGxhdGlvbi5jb2xsYXRpb24sIHZhbCk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3FsL2l0 ZW1fZ2VvZnVuYy5oJwotLS0gYS9zcWwvaXRlbV9nZW9mdW5jLmgJMjAxMS0wMS0xMiAxMzowMjo0 MSArMDAwMAorKysgYi9zcWwvaXRlbV9nZW9mdW5jLmgJMjAxMS0wMS0yNSAxNDo0Mjo0MCArMDAw MApAQCAtMSw0ICsxLDQgQEAKLS8qIENvcHlyaWdodCAoQykgMjAwMC0yMDAzIE15U1FMIEFCCisv KiBDb3B5cmlnaHQgKGMpIDIwMDMsIDIwMTEsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMu IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQoK PT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9sb2cuY2MnCi0tLSBhL3NxbC9sb2cuY2MJMjAxMS0wMS0w NyAxODozMzozNiArMDAwMAorKysgYi9zcWwvbG9nLmNjCTIwMTEtMDEtMjUgMTQ6NDI6NDAgKzAw MDAKQEAgLTEsNCArMSw0IEBACi0vKiBDb3B5cmlnaHQgMjAwMC0yMDA4IE15U1FMIEFCLCAyMDA4 IFN1biBNaWNyb3N5c3RlbXMsIEluYy4KKy8qIENvcHlyaWdodCAoYykgMjAwMCwgMjAxMSwgT3Jh Y2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIAogICAgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3FsL25ldF9zZXJ2 LmNjJwotLS0gYS9zcWwvbmV0X3NlcnYuY2MJMjAxMS0wMS0xMSAxNToxODoyNSArMDAwMAorKysg Yi9zcWwvbmV0X3NlcnYuY2MJMjAxMS0wMS0yNSAxNDo0Mjo0MCArMDAwMApAQCAtMSw0ICsxLDQg QEAKLS8qIENvcHlyaWdodCAoYykgMjAwMCwgMjAxMCwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxp YXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8qIENvcHlyaWdodCAoYykgMjAwMCwgMjAxMSwg T3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIAogICAg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3FsL3NxbF9i YXNlLmNjJwotLS0gYS9zcWwvc3FsX2Jhc2UuY2MJMjAxMS0wMS0xMSAxMTowOTo1NCArMDAwMAor KysgYi9zcWwvc3FsX2Jhc2UuY2MJMjAxMS0wMS0yNSAxNDo0Mjo0MCArMDAwMApAQCAtMSw0ICsx LDQgQEAKLS8qIENvcHlyaWdodCAoYykgMjAwMCwgMjAxMCwgT3JhY2xlIGFuZC9vciBpdHMgYWZm aWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8qIENvcHlyaWdodCAoYykgMjAwMCwgMjAx MSwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIAog ICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBAIC01OTQxLDYgKzU5NDEsOCBAQCBmaW5k X2ZpZWxkX2luX25hdHVyYWxfam9pbihUSEQgKnRoZCwgVEFCCiAvKgogICBGaW5kIGZpZWxkIGJ5 IG5hbWUgaW4gYSBiYXNlIHRhYmxlIG9yIGEgdmlldyB3aXRoIHRlbXAgdGFibGUgYWxnb3JpdGht LgogCisgIFRoZSBjYWxsZXIgaXMgZXhwZWN0ZWQgdG8gY2hlY2sgY29sdW1uLWxldmVsIHByaXZp bGVnZXMuCisKICAgU1lOT1BTSVMKICAgICBmaW5kX2ZpZWxkX2luX3RhYmxlKCkKICAgICB0aGQJ CQkJdGhyZWFkIGhhbmRsZXIKQEAgLTYwNDgsNiArNjA1MCw4IEBAIGZpbmRfZmllbGRfaW5fdGFi bGUoVEhEICp0aGQsIFRBQkxFICp0YWIKICAgICBUaGlzIHByb2NlZHVyZSBkZXRlY3RzIHRoZSB0 eXBlIG9mIHRoZSB0YWJsZSByZWZlcmVuY2UgJ3RhYmxlX2xpc3QnCiAgICAgYW5kIGNhbGxzIHRo ZSBjb3JyZXNwb25kaW5nIHNlYXJjaCByb3V0aW5lLgogCisgICAgVGhlIHJvdXRpbmUgY2hlY2tz IGNvbHVtbi1sZXZlbCBwcml2aWVsZWdlcyBmb3IgdGhlIGZvdW5kIGZpZWxkLgorCiAgIFJFVFVS TgogICAgIDAJCQlmaWVsZCBpcyBub3QgZm91bmQKICAgICB2aWV3X3JlZl9mb3VuZAlmb3VuZCB2 YWx1ZSBpbiBWSUVXIChyZWFsIHJlc3VsdCBpcyBpbiAqcmVmKQpAQCAtNjMyMSw4ICs2MzI1LDE2 IEBAIGZpbmRfZmllbGRfaW5fdGFibGVzKFRIRCAqdGhkLCBJdGVtX2lkZW4KICAgICAgIHdoZW4g dGFibGVfcmVmLT5maWVsZF90cmFuc2xhdGlvbiAhPSBOVUxMLgogICAgICAgKi8KICAgICBpZiAo dGFibGVfcmVmLT50YWJsZSAmJiAhdGFibGVfcmVmLT52aWV3KQorICAgIHsKICAgICAgIGZvdW5k PSBmaW5kX2ZpZWxkX2luX3RhYmxlKHRoZCwgdGFibGVfcmVmLT50YWJsZSwgbmFtZSwgbGVuZ3Ro LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwgJihpdGVtLT5jYWNoZWRf ZmllbGRfaW5kZXgpKTsKKyNpZm5kZWYgTk9fRU1CRURERURfQUNDRVNTX0NIRUNLUworICAgICAg LyogQ2hlY2sgaWYgdGhlcmUgYXJlIHN1ZmZpY2llbnQgYWNjZXNzIHJpZ2h0cyB0byB0aGUgZm91 bmQgZmllbGQuICovCisgICAgICBpZiAoZm91bmQgJiYgY2hlY2tfcHJpdmlsZWdlcyAmJgorICAg ICAgICAgIGNoZWNrX2NvbHVtbl9ncmFudF9pbl90YWJsZV9yZWYodGhkLCB0YWJsZV9yZWYsIG5h bWUsIGxlbmd0aCkpCisgICAgICAgIGZvdW5kPSBXUk9OR19HUkFOVDsKKyNlbmRpZgorICAgIH0K ICAgICBlbHNlCiAgICAgICBmb3VuZD0gZmluZF9maWVsZF9pbl90YWJsZV9yZWYodGhkLCB0YWJs ZV9yZWYsIG5hbWUsIGxlbmd0aCwgaXRlbS0+bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBOVUxMLCBOVUxMLCByZWYsIGNoZWNrX3ByaXZpbGVnZXMsCgo9PT0gbW9k aWZpZWQgZmlsZSAnc3FsL3NxbF9sb2FkLmNjJwotLS0gYS9zcWwvc3FsX2xvYWQuY2MJMjAxMC0x MS0zMCAyMzozMjo1MSArMDAwMAorKysgYi9zcWwvc3FsX2xvYWQuY2MJMjAxMC0xMi0xNyAxMzow NTo1MCArMDAwMApAQCAtMzE0LDU2ICszMTQsNTcgQEAgaW50IG15c3FsX2xvYWQoVEhEICp0aGQs c3FsX2V4Y2hhbmdlICpleAogICAgICAgKHZvaWQpIGZuX2Zvcm1hdChuYW1lLCBleC0+ZmlsZV9u YW1lLCBteXNxbF9yZWFsX2RhdGFfaG9tZSwgIiIsCiAgICAgICAgICAgICAgICAgICAgICAgIE1Z X1JFTEFUSVZFX1BBVEggfCBNWV9VTlBBQ0tfRklMRU5BTUUgfAogICAgICAgICAgICAgICAgICAg ICAgICBNWV9SRVRVUk5fUkVBTF9QQVRIKTsKLSNpZiAhZGVmaW5lZChfX1dJTl9fKSAmJiAhIGRl ZmluZWQoX19ORVRXQVJFX18pCi0gICAgICBNWV9TVEFUIHN0YXRfaW5mbzsKLSAgICAgIGlmICgh bXlfc3RhdChuYW1lLCZzdGF0X2luZm8sTVlGKE1ZX1dNRSkpKQotCURCVUdfUkVUVVJOKFRSVUUp OwotCi0gICAgICAvLyBpZiB3ZSBhcmUgbm90IGluIHNsYXZlIHRocmVhZCwgdGhlIGZpbGUgbXVz dCBiZToKLSAgICAgIGlmICghdGhkLT5zbGF2ZV90aHJlYWQgJiYKLQkgICEoKHN0YXRfaW5mby5z dF9tb2RlICYgU19JUk9USCkgPT0gU19JUk9USCAmJiAgLy8gcmVhZGFibGUgYnkgb3RoZXJzCi0J ICAgIChzdGF0X2luZm8uc3RfbW9kZSAmIFNfSUZMTkspICE9IFNfSUZMTksgJiYgLy8gYW5kIG5v dCBhIHN5bWxpbmsKLQkgICAgKChzdGF0X2luZm8uc3RfbW9kZSAmIFNfSUZSRUcpID09IFNfSUZS RUcgfHwKLQkgICAgIChzdGF0X2luZm8uc3RfbW9kZSAmIFNfSUZJRk8pID09IFNfSUZJRk8pKSkK LSAgICAgIHsKLQlteV9lcnJvcihFUl9URVhURklMRV9OT1RfUkVBREFCTEUsIE1ZRigwKSwgbmFt ZSk7Ci0JREJVR19SRVRVUk4oVFJVRSk7Ci0gICAgICB9Ci0gICAgICBpZiAoKHN0YXRfaW5mby5z dF9tb2RlICYgU19JRklGTykgPT0gU19JRklGTykKLQlpc19maWZvID0gMTsKLSNlbmRpZgorICAg IH0KIAotICAgICAgaWYgKHRoZC0+c2xhdmVfdGhyZWFkKQotICAgICAgeworICAgIGlmICh0aGQt PnNsYXZlX3RocmVhZCkKKyAgICB7CiAjaWYgZGVmaW5lZChIQVZFX1JFUExJQ0FUSU9OKSAmJiAh ZGVmaW5lZChNWVNRTF9DTElFTlQpCi0gICAgICAgIGlmIChzdHJuY21wKGFjdGl2ZV9taS0+cmxp LnNsYXZlX3BhdHRlcm5sb2FkX2ZpbGUsIG5hbWUsIAotICAgICAgICAgICAgYWN0aXZlX21pLT5y bGkuc2xhdmVfcGF0dGVybmxvYWRfZmlsZV9zaXplKSkKLSAgICAgICAgewotICAgICAgICAgIC8q Ci0gICAgICAgICAgICBMT0FEIERBVEEgSU5GSUxFIGluIHRoZSBzbGF2ZSBTUUwgVGhyZWFkIGNh biBvbmx5IHJlYWQgZnJvbSAKLSAgICAgICAgICAgIC0tc2xhdmUtbG9hZC10bXBkaXIiLiBUaGlz IHNob3VsZCBuZXZlciBoYXBwZW4uIFBsZWFzZSwgcmVwb3J0IGEgYnVnLgotICAgICAgICAgICAq LwotCi0gICAgICAgICAgc3FsX3ByaW50X2Vycm9yKCJMT0FEIERBVEEgSU5GSUxFIGluIHRoZSBz bGF2ZSBTUUwgVGhyZWFkIGNhbiBvbmx5IHJlYWQgZnJvbSAtLXNsYXZlLWxvYWQtdG1wZGlyLiAi IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIlBsZWFzZSwgcmVwb3J0IGEgYnVnLiIpOwot ICAgICAgICAgIG15X2Vycm9yKEVSX09QVElPTl9QUkVWRU5UU19TVEFURU1FTlQsIE1ZRigwKSwg Ii0tc2xhdmUtbG9hZC10bXBkaXIiKTsKLSAgICAgICAgICBEQlVHX1JFVFVSTihUUlVFKTsKLSAg ICAgICAgfQotI2Vsc2UKKyAgICAgIGlmIChzdHJuY21wKGFjdGl2ZV9taS0+cmxpLnNsYXZlX3Bh dHRlcm5sb2FkX2ZpbGUsIG5hbWUsIAorICAgICAgICAgIGFjdGl2ZV9taS0+cmxpLnNsYXZlX3Bh dHRlcm5sb2FkX2ZpbGVfc2l6ZSkpCisgICAgICB7CiAgICAgICAgIC8qCi0gICAgICAgICAgVGhp cyBpcyBpbXBvc3NpYmxlIGFuZCBzaG91bGQgbmV2ZXIgaGFwcGVuLgorICAgICAgICAgIExPQUQg REFUQSBJTkZJTEUgaW4gdGhlIHNsYXZlIFNRTCBUaHJlYWQgY2FuIG9ubHkgcmVhZCBmcm9tIAor ICAgICAgICAgIC0tc2xhdmUtbG9hZC10bXBkaXIiLiBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4u IFBsZWFzZSwgcmVwb3J0IGEgYnVnLgogICAgICAgICAqLwotICAgICAgICBEQlVHX0FTU0VSVChG QUxTRSk7IAotI2VuZGlmCi0gICAgICB9Ci0gICAgICBlbHNlIGlmICghaXNfc2VjdXJlX2ZpbGVf cGF0aChuYW1lKSkKLSAgICAgIHsKLSAgICAgICAgLyogUmVhZCBvbmx5IGFsbG93ZWQgZnJvbSB3 aXRoaW4gZGlyIHNwZWNpZmllZCBieSBzZWN1cmVfZmlsZV9wcml2ICovCi0gICAgICAgIG15X2Vy cm9yKEVSX09QVElPTl9QUkVWRU5UU19TVEFURU1FTlQsIE1ZRigwKSwgIi0tc2VjdXJlLWZpbGUt cHJpdiIpOworCisgICAgICAgIHNxbF9wcmludF9lcnJvcigiTE9BRCBEQVRBIElORklMRSBpbiB0 aGUgc2xhdmUgU1FMIFRocmVhZCBjYW4gb25seSByZWFkIGZyb20gLS1zbGF2ZS1sb2FkLXRtcGRp ci4gIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAiUGxlYXNlLCByZXBvcnQgYSBidWcuIik7 CisgICAgICAgIG15X2Vycm9yKEVSX09QVElPTl9QUkVWRU5UU19TVEFURU1FTlQsIE1ZRigwKSwg Ii0tc2xhdmUtbG9hZC10bXBkaXIiKTsKICAgICAgICAgREJVR19SRVRVUk4oVFJVRSk7CiAgICAg ICB9CisjZWxzZQorICAgICAgLyoKKyAgICAgICAgVGhpcyBpcyBpbXBvc3NpYmxlIGFuZCBzaG91 bGQgbmV2ZXIgaGFwcGVuLgorICAgICAgKi8KKyAgICAgIERCVUdfQVNTRVJUKEZBTFNFKTsgCisj ZW5kaWYKKyAgICB9CisgICAgZWxzZSBpZiAoIWlzX3NlY3VyZV9maWxlX3BhdGgobmFtZSkpCisg ICAgeworICAgICAgLyogUmVhZCBvbmx5IGFsbG93ZWQgZnJvbSB3aXRoaW4gZGlyIHNwZWNpZmll ZCBieSBzZWN1cmVfZmlsZV9wcml2ICovCisgICAgICBteV9lcnJvcihFUl9PUFRJT05fUFJFVkVO VFNfU1RBVEVNRU5ULCBNWUYoMCksICItLXNlY3VyZS1maWxlLXByaXYiKTsKKyAgICAgIERCVUdf UkVUVVJOKFRSVUUpOworICAgIH0KKworI2lmICFkZWZpbmVkKF9fV0lOX18pICYmICEgZGVmaW5l ZChfX05FVFdBUkVfXykKKyAgICBNWV9TVEFUIHN0YXRfaW5mbzsKKyAgICBpZiAoIW15X3N0YXQo bmFtZSwmc3RhdF9pbmZvLE1ZRihNWV9XTUUpKSkKKwkgICAgREJVR19SRVRVUk4oVFJVRSk7CiAK KyAgICAvLyBpZiB3ZSBhcmUgbm90IGluIHNsYXZlIHRocmVhZCwgdGhlIGZpbGUgbXVzdCBiZToK KyAgICBpZiAoIXRoZC0+c2xhdmVfdGhyZWFkICYmCisJICAgICAgISgoc3RhdF9pbmZvLnN0X21v ZGUgJiBTX0lST1RIKSA9PSBTX0lST1RIICYmICAvLyByZWFkYWJsZSBieSBvdGhlcnMKKwkgICAg ICAgIChzdGF0X2luZm8uc3RfbW9kZSAmIFNfSUZMTkspICE9IFNfSUZMTksgJiYgLy8gYW5kIG5v dCBhIHN5bWxpbmsKKwkgICAgICAgICgoc3RhdF9pbmZvLnN0X21vZGUgJiBTX0lGUkVHKSA9PSBT X0lGUkVHIHx8CisJICAgICAgICAgKHN0YXRfaW5mby5zdF9tb2RlICYgU19JRklGTykgPT0gU19J RklGTykpKQorICAgIHsKKwkgICAgbXlfZXJyb3IoRVJfVEVYVEZJTEVfTk9UX1JFQURBQkxFLCBN WUYoMCksIG5hbWUpOworCSAgICBEQlVHX1JFVFVSTihUUlVFKTsKICAgICB9CisgICAgaWYgKChz dGF0X2luZm8uc3RfbW9kZSAmIFNfSUZJRk8pID09IFNfSUZJRk8pCisJICAgIGlzX2ZpZm8gPSAx OworI2VuZGlmCisKICAgICBpZiAoKGZpbGU9bXlfb3BlbihuYW1lLE9fUkRPTkxZLE1ZRihNWV9X TUUpKSkgPCAwKQogICAgICAgREJVR19SRVRVUk4oVFJVRSk7CiAgIH0KCj09PSBtb2RpZmllZCBm aWxlICdzcWwvc3FsX3NlbGVjdC5jYycKLS0tIGEvc3FsL3NxbF9zZWxlY3QuY2MJMjAxMS0wMi0w MSAxMjoyMDoxNiArMDAwMAorKysgYi9zcWwvc3FsX3NlbGVjdC5jYwkyMDExLTAyLTA4IDExOjUy OjMzICswMDAwCkBAIC0xLDQgKzEsNCBAQAotLyogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDEwLCBP cmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLyogQ29w eXJpZ2h0IChjKSAyMDAwLCAyMDExLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwg cmlnaHRzIHJlc2VydmVkLgogCiAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICAgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTEz MzY0LDEyICsxMzM2NCwxNCBAQCB0ZXN0X2lmX3NraXBfc29ydF9vcmRlcihKT0lOX1RBQiAqdGFi LE9SCiB7CiAgIGludCByZWZfa2V5OwogICB1aW50IHJlZl9rZXlfcGFydHM7Ci0gIGludCBvcmRl cl9kaXJlY3Rpb247CisgIGludCBvcmRlcl9kaXJlY3Rpb249IDA7CiAgIHVpbnQgdXNlZF9rZXlf cGFydHM7CiAgIFRBQkxFICp0YWJsZT10YWItPnRhYmxlOwogICBTUUxfU0VMRUNUICpzZWxlY3Q9 dGFiLT5zZWxlY3Q7CiAgIGtleV9tYXAgdXNhYmxlX2tleXM7CiAgIFFVSUNLX1NFTEVDVF9JICpz YXZlX3F1aWNrPSAwOworICBpbnQgYmVzdF9rZXk9IC0xOworCiAgIERCVUdfRU5URVIoInRlc3Rf aWZfc2tpcF9zb3J0X29yZGVyIik7CiAgIExJTlRfSU5JVChyZWZfa2V5X3BhcnRzKTsKIApAQCAt MTM0NzMsMTMgKzEzNDc1LDE0IEBAIHRlc3RfaWZfc2tpcF9zb3J0X29yZGVyKEpPSU5fVEFCICp0 YWIsT1IKICAgICAgICAgICBuZXdfcmVmX2tleV9tYXAuY2xlYXJfYWxsKCk7ICAvLyBGb3JjZSB0 aGUgY3JlYXRpb24gb2YgcXVpY2sgc2VsZWN0CiAgICAgICAgICAgbmV3X3JlZl9rZXlfbWFwLnNl dF9iaXQobmV3X3JlZl9rZXkpOyAvLyBvbmx5IGZvciBuZXdfcmVmX2tleS4KIAorICAgICAgICAg IHNlbGVjdC0+cXVpY2s9IDA7CiAgICAgICAgICAgaWYgKHNlbGVjdC0+dGVzdF9xdWlja19zZWxl Y3QodGFiLT5qb2luLT50aGQsIG5ld19yZWZfa2V5X21hcCwgMCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAodGFiLT5qb2luLT5zZWxlY3Rfb3B0aW9ucyAmCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QVElPTl9GT1VORF9ST1dTKSA/ CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFfUE9TX0VSUk9SIDoK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWItPmpvaW4tPnVuaXQt PnNlbGVjdF9saW1pdF9jbnQsMCkgPD0KICAgICAgICAgICAgICAgMCkKLSAgICAgICAgICAgIERC VUdfUkVUVVJOKDApOworICAgICAgICAgICAgZ290byB1c2VfZmlsZXNvcnQ7CiAJfQogICAgICAg ICByZWZfa2V5PSBuZXdfcmVmX2tleTsKICAgICAgIH0KQEAgLTEzNTA0LDcgKzEzNTA3LDYgQEAg dGVzdF9pZl9za2lwX3NvcnRfb3JkZXIoSk9JTl9UQUIgKnRhYixPUgogICAgIGludCBiZXN0X2tl eV9kaXJlY3Rpb249IDA7CiAgICAgaGFfcm93cyBiZXN0X3JlY29yZHM9IDA7CiAgICAgZG91Ymxl IHJlYWRfdGltZTsKLSAgICBpbnQgYmVzdF9rZXk9IC0xOwogICAgIGJvb2wgaXNfYmVzdF9jb3Zl cmluZz0gRkFMU0U7CiAgICAgZG91YmxlIGZhbm91dD0gMTsKICAgICBKT0lOICpqb2luPSB0YWIt PmpvaW47CkBAIC0xMzY4MSw3MiArMTM2ODMsMjEgQEAgdGVzdF9pZl9za2lwX3NvcnRfb3JkZXIo Sk9JTl9UQUIgKnRhYixPUgogICAgICAgICAgdGFiLT5qb2luLT50YWJsZXMgPiB0YWItPmpvaW4t PmNvbnN0X3RhYmxlcyArIDEpICYmCiAgICAgICAgICAoKHVuc2lnbmVkKSBiZXN0X2tleSAhPSB0 YWJsZS0+cy0+cHJpbWFyeV9rZXkgfHwKICAgICAgICAgICAhdGFibGUtPmZpbGUtPnByaW1hcnlf a2V5X2lzX2NsdXN0ZXJlZCgpKSkKLSAgICAgIERCVUdfUkVUVVJOKDApOworICAgICAgZ290byB1 c2VfZmlsZXNvcnQ7CiAKICAgICBpZiAoYmVzdF9rZXkgPj0gMCkKICAgICB7Ci0gICAgICBib29s IHF1aWNrX2NyZWF0ZWQ9IEZBTFNFOwogICAgICAgaWYgKHRhYmxlLT5xdWlja19rZXlzLmlzX3Nl dChiZXN0X2tleSkgJiYgYmVzdF9rZXkgIT0gcmVmX2tleSkKICAgICAgIHsKICAgICAgICAga2V5 X21hcCBtYXA7CiAgICAgICAgIG1hcC5jbGVhcl9hbGwoKTsgICAgICAgLy8gRm9yY2UgdGhlIGNy ZWF0aW9uIG9mIHF1aWNrIHNlbGVjdAogICAgICAgICBtYXAuc2V0X2JpdChiZXN0X2tleSk7IC8v IG9ubHkgYmVzdF9rZXkuCi0gICAgICAgIHF1aWNrX2NyZWF0ZWQ9ICAgICAgICAgCi0gICAgICAg ICAgc2VsZWN0LT50ZXN0X3F1aWNrX3NlbGVjdChqb2luLT50aGQsIG1hcCwgMCwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpvaW4tPnNlbGVjdF9vcHRpb25zICYgT1BUSU9O X0ZPVU5EX1JPV1MgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFfUE9T X0VSUk9SIDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpvaW4tPnVuaXQt PnNlbGVjdF9saW1pdF9jbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw KSA+IDA7Ci0gICAgICB9Ci0gICAgICBpZiAoIW5vX2NoYW5nZXMpCi0gICAgICB7Ci0gICAgICAg IC8qIAotICAgICAgICAgICBJZiByZWZfa2V5IHVzZWQgaW5kZXggdHJlZSByZWFkaW5nIG9ubHkg KCdVc2luZyBpbmRleCcgaW4gRVhQTEFJTiksCi0gICAgICAgICAgIGFuZCBiZXN0X2tleSBkb2Vz bid0LCB0aGVuIHJldmVydCB0aGUgZGVjaXNpb24uCi0gICAgICAgICovCi0gICAgICAgIGlmICgh dGFibGUtPmNvdmVyaW5nX2tleXMuaXNfc2V0KGJlc3Rfa2V5KSkKLSAgICAgICAgICB0YWJsZS0+ c2V0X2tleXJlYWQoRkFMU0UpOwotICAgICAgICBpZiAoIXF1aWNrX2NyZWF0ZWQpCi0JewotICAg ICAgICAgIHRhYi0+aW5kZXg9IGJlc3Rfa2V5OwotICAgICAgICAgIHRhYi0+cmVhZF9maXJzdF9y ZWNvcmQ9IGJlc3Rfa2V5X2RpcmVjdGlvbiA+IDAgPwotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGpvaW5fcmVhZF9maXJzdDpqb2luX3JlYWRfbGFzdDsKLSAgICAgICAgICB0YWIt PnR5cGU9SlRfTkVYVDsgICAgICAgICAgIC8vIFJlYWQgd2l0aCBpbmRleF9maXJzdCgpLCBpbmRl eF9uZXh0KCkKLSAgICAgICAgICBpZiAoc2VsZWN0ICYmIHNlbGVjdC0+cXVpY2spCi0gICAgICAg ICAgewotICAgICAgICAgICAgZGVsZXRlIHNlbGVjdC0+cXVpY2s7Ci0gICAgICAgICAgICBzZWxl Y3QtPnF1aWNrPSAwOwotICAgICAgICAgIH0KLSAgICAgICAgICBpZiAodGFibGUtPmNvdmVyaW5n X2tleXMuaXNfc2V0KGJlc3Rfa2V5KSkKLSAgICAgICAgICAgIHRhYmxlLT5zZXRfa2V5cmVhZChU UlVFKTsKLSAgICAgICAgICB0YWJsZS0+ZmlsZS0+aGFfaW5kZXhfb3Jfcm5kX2VuZCgpOwotICAg ICAgICAgIGlmIChqb2luLT5zZWxlY3Rfb3B0aW9ucyAmIFNFTEVDVF9ERVNDUklCRSkKLSAgICAg ICAgICB7Ci0gICAgICAgICAgICB0YWItPnJlZi5rZXk9IC0xOwotICAgICAgICAgICAgdGFiLT5y ZWYua2V5X3BhcnRzPSAwOwotICAgICAgICAgICAgaWYgKHNlbGVjdF9saW1pdCA8IHRhYmxlX3Jl Y29yZHMpIAotICAgICAgICAgICAgICB0YWItPmxpbWl0PSBzZWxlY3RfbGltaXQ7Ci0gICAgICAg ICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHRhYi0+dHlwZSAhPSBKVF9BTEwpCi0g ICAgICAgIHsKLSAgICAgICAgICAvKgotICAgICAgICAgICAgV2UncmUgYWJvdXQgdG8gdXNlIGEg cXVpY2sgYWNjZXNzIHRvIHRoZSB0YWJsZS4KLSAgICAgICAgICAgIFdlIG5lZWQgdG8gY2hhbmdl IHRoZSBhY2Nlc3MgbWV0aG9kIHNvIGFzIHRoZSBxdWljayBhY2Nlc3MKLSAgICAgICAgICAgIG1l dGhvZCBpcyBhY3R1YWxseSB1c2VkLgotICAgICAgICAgICovCi0gICAgICAgICAgREJVR19BU1NF UlQodGFiLT5zZWxlY3QtPnF1aWNrKTsKLSAgICAgICAgICB0YWItPnR5cGU9SlRfQUxMOwotICAg ICAgICAgIHRhYi0+dXNlX3F1aWNrPTE7Ci0gICAgICAgICAgdGFiLT5yZWYua2V5PSAtMTsKLSAg ICAgICAgICB0YWItPnJlZi5rZXlfcGFydHM9MDsJCS8vIERvbid0IHVzZSByZWYga2V5LgotICAg ICAgICAgIHRhYi0+cmVhZF9maXJzdF9yZWNvcmQ9IGpvaW5faW5pdF9yZWFkX3JlY29yZDsKLSAg ICAgICAgICBpZiAodGFiLT5pc191c2luZ19sb29zZV9pbmRleF9zY2FuKCkpCi0gICAgICAgICAg ICBqb2luLT50bXBfdGFibGVfcGFyYW0ucHJlY29tcHV0ZWRfZ3JvdXBfYnk9IFRSVUU7Ci0gICAg ICAgICAgLyoKLSAgICAgICAgICAgIFRPRE86IHVwZGF0ZSB0aGUgbnVtYmVyIG9mIHJlY29yZHMg aW4gam9pbi0+YmVzdF9wb3NpdGlvbnNbdGFibGVucl0KLSAgICAgICAgICAqLwotICAgICAgICB9 CisgICAgICAgIHNlbGVjdC0+cXVpY2s9IDA7CisgICAgICAgIHNlbGVjdC0+dGVzdF9xdWlja19z ZWxlY3Qoam9pbi0+dGhkLCBtYXAsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgam9pbi0+c2VsZWN0X29wdGlvbnMgJiBPUFRJT05fRk9VTkRfUk9XUyA/CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgSEFfUE9TX0VSUk9SIDoKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBqb2luLT51bml0LT5zZWxlY3RfbGltaXRfY250LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDApOwogICAgICAgfQogICAgICAgb3JkZXJfZGlyZWN0 aW9uPSBiZXN0X2tleV9kaXJlY3Rpb247CiAgICAgICAvKgpAQCAtMTM3NTksMTAgKzEzNzEwLDEy IEBAIHRlc3RfaWZfc2tpcF9zb3J0X29yZGVyKEpPSU5fVEFCICp0YWIsT1IKICAgICAgICAgc2F2 ZWRfYmVzdF9rZXlfcGFydHMgOiAgYmVzdF9rZXlfcGFydHM7CiAgICAgfQogICAgIGVsc2UKLSAg ICAgIERCVUdfUkVUVVJOKDApOyAKKyAgICAgIGdvdG8gdXNlX2ZpbGVzb3J0OwogICB9IAogCiBj aGVja19yZXZlcnNlX29yZGVyOiAgICAgICAgICAgICAgICAgIAorICBEQlVHX0FTU0VSVChvcmRl cl9kaXJlY3Rpb24gIT0gMCk7CisKICAgaWYgKG9yZGVyX2RpcmVjdGlvbiA9PSAtMSkJCS8vIElm IE9SREVSIEJZIC4uLiBERVNDCiAgIHsKICAgICBpZiAoc2VsZWN0ICYmIHNlbGVjdC0+cXVpY2sp CkBAIC0xMzc3MSw5ICsxMzcyNCwxMCBAQCBjaGVja19yZXZlcnNlX29yZGVyOgogCURvbid0IHJl dmVyc2UgdGhlIHNvcnQgb3JkZXIsIGlmIGl0J3MgYWxyZWFkeSBkb25lLgogICAgICAgICAoSW4g c29tZSBjYXNlcyB0ZXN0X2lmX29yZGVyX2J5X2tleSgpIGNhbiBiZSBjYWxsZWQgbXVsdGlwbGUg dGltZXMKICAgICAgICovCi0gICAgICBpZiAoIXNlbGVjdC0+cXVpY2stPnJldmVyc2Vfc29ydGVk KCkpCisgICAgICBpZiAoc2VsZWN0LT5xdWljay0+cmV2ZXJzZV9zb3J0ZWQoKSkKKyAgICAgICAg Z290byBza2lwcGVkX2ZpbGVzb3J0OworICAgICAgZWxzZQogICAgICAgewotICAgICAgICBRVUlD S19TRUxFQ1RfREVTQyAqdG1wOwogICAgICAgICBpbnQgcXVpY2tfdHlwZT0gc2VsZWN0LT5xdWlj ay0+Z2V0X3R5cGUoKTsKICAgICAgICAgaWYgKHF1aWNrX3R5cGUgPT0gUVVJQ0tfU0VMRUNUX0k6 OlFTX1RZUEVfSU5ERVhfTUVSR0UgfHwKICAgICAgICAgICAgIHF1aWNrX3R5cGUgPT0gUVVJQ0tf U0VMRUNUX0k6OlFTX1RZUEVfUk9SX0lOVEVSU0VDVCB8fApAQCAtMTM3ODEsMzkgKzEzNzM1LDEz MiBAQCBjaGVja19yZXZlcnNlX29yZGVyOgogICAgICAgICAgICAgcXVpY2tfdHlwZSA9PSBRVUlD S19TRUxFQ1RfSTo6UVNfVFlQRV9HUk9VUF9NSU5fTUFYKQogICAgICAgICB7CiAgICAgICAgICAg dGFiLT5saW1pdD0gMDsKLSAgICAgICAgICBzZWxlY3QtPnF1aWNrPSBzYXZlX3F1aWNrOwotICAg ICAgICAgIERCVUdfUkVUVVJOKDApOyAgICAgICAgICAgICAgICAgICAvLyBVc2UgZmlsZXNvcnQK KyAgICAgICAgICBnb3RvIHVzZV9maWxlc29ydDsgICAgICAgICAgICAgICAvLyBVc2UgZmlsZXNv cnQKICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgIC8qIE9SREVSIEJZIHJhbmdlX2tl eSBERVNDICovCi0JdG1wPSBuZXcgUVVJQ0tfU0VMRUNUX0RFU0MoKFFVSUNLX1JBTkdFX1NFTEVD VCopKHNlbGVjdC0+cXVpY2spLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dXNlZF9rZXlfcGFydHMpOwotCWlmICghdG1wIHx8IHRtcC0+ZXJyb3IpCi0JewotCSAgZGVsZXRl IHRtcDsKLSAgICAgICAgICBzZWxlY3QtPnF1aWNrPSBzYXZlX3F1aWNrOwotICAgICAgICAgIHRh Yi0+bGltaXQ9IDA7Ci0JICBEQlVHX1JFVFVSTigwKTsJCS8vIFJldmVyc2Ugc29ydCBub3Qgc3Vw cG9ydGVkCi0JfQotCXNlbGVjdC0+cXVpY2s9dG1wOwogICAgICAgfQogICAgIH0KLSAgICBlbHNl IGlmICh0YWItPnR5cGUgIT0gSlRfTkVYVCAmJiB0YWItPnR5cGUgIT0gSlRfUkVGX09SX05VTEwg JiYKLSAgICAgICAgICAgICB0YWItPnJlZi5rZXkgPj0gMCAmJiB0YWItPnJlZi5rZXlfcGFydHMg PD0gdXNlZF9rZXlfcGFydHMpCisgIH0KKworICAvKgorICAgIFVwZGF0ZSBxdWVyeSBwbGFuIHdp dGggYWNjZXNzIHBhdHRlcm4gZm9yIGRvaW5nIAorICAgIG9yZGVyZWQgYWNjZXNzIGFjY29yZGlu ZyB0byB3aGF0IHdlIGhhdmUgZGVjaWRlZAorICAgIGFib3ZlLgorICAqLworICBpZiAoIW5vX2No YW5nZXMpIC8vIFdlIGFyZSBhbGxvd2VkIHRvIHVwZGF0ZSBRRVAKKyAgeworICAgIGlmIChiZXN0 X2tleSA+PSAwKQogICAgIHsKLSAgICAgIC8qCi0JU0VMRUNUICogRlJPTSB0MSBXSEVSRSBhPTEg T1JERVIgQlkgYSBERVNDLGIgREVTQworICAgICAgYm9vbCBxdWlja19jcmVhdGVkPSAKKyAgICAg ICAgKHNlbGVjdCAmJiBzZWxlY3QtPnF1aWNrICYmIHNlbGVjdC0+cXVpY2shPXNhdmVfcXVpY2sp OwogCi0JVXNlIGEgdHJhdmVyc2FsIGZ1bmN0aW9uIHRoYXQgc3RhcnRzIGJ5IHJlYWRpbmcgdGhl IGxhc3Qgcm93Ci0Jd2l0aCBrZXkgcGFydCAoQSkgYW5kIHRoZW4gdHJhdmVyc2UgdGhlIGluZGV4 IGJhY2t3YXJkcy4KKyAgICAgIC8qIAorICAgICAgICAgSWYgcmVmX2tleSB1c2VkIGluZGV4IHRy ZWUgcmVhZGluZyBvbmx5ICgnVXNpbmcgaW5kZXgnIGluIEVYUExBSU4pLAorICAgICAgICAgYW5k IGJlc3Rfa2V5IGRvZXNuJ3QsIHRoZW4gcmV2ZXJ0IHRoZSBkZWNpc2lvbi4KICAgICAgICovCi0g ICAgICB0YWItPnJlYWRfZmlyc3RfcmVjb3JkPSBqb2luX3JlYWRfbGFzdF9rZXk7Ci0gICAgICB0 YWItPnJlYWRfcmVjb3JkLnJlYWRfcmVjb3JkPSBqb2luX3JlYWRfcHJldl9zYW1lOworICAgICAg aWYgKCF0YWJsZS0+Y292ZXJpbmdfa2V5cy5pc19zZXQoYmVzdF9rZXkpKQorICAgICAgICB0YWJs ZS0+c2V0X2tleXJlYWQoRkFMU0UpOworICAgICAgaWYgKCFxdWlja19jcmVhdGVkKQorICAgICAg eworICAgICAgICBpZiAoc2VsZWN0KSAgICAgICAgICAgICAgICAgIC8vIFRocm93IGFueSBleGlz dGluZyBxdWljayBzZWxlY3QKKyAgICAgICAgICBzZWxlY3QtPnF1aWNrPSAwOyAgICAgICAgICAv LyBDbGVhbnVwIGVpdGhlciByZXNldCB0byBzYXZlX3F1aWNrLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC8vIG9yICdkZWxldGUgc2F2ZV9xdWljaycKKyAgICAgICAgdGFi LT5pbmRleD0gYmVzdF9rZXk7CisgICAgICAgIHRhYi0+cmVhZF9maXJzdF9yZWNvcmQ9IG9yZGVy X2RpcmVjdGlvbiA+IDAgPworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqb2luX3Jl YWRfZmlyc3Q6am9pbl9yZWFkX2xhc3Q7CisgICAgICAgIHRhYi0+dHlwZT1KVF9ORVhUOyAgICAg ICAgICAgLy8gUmVhZCB3aXRoIGluZGV4X2ZpcnN0KCksIGluZGV4X25leHQoKQorCisgICAgICAg IGlmICh0YWJsZS0+Y292ZXJpbmdfa2V5cy5pc19zZXQoYmVzdF9rZXkpKQorICAgICAgICAgIHRh YmxlLT5zZXRfa2V5cmVhZChUUlVFKTsKKyAgICAgICAgdGFibGUtPmZpbGUtPmhhX2luZGV4X29y X3JuZF9lbmQoKTsKKyAgICAgICAgaWYgKHRhYi0+am9pbi0+c2VsZWN0X29wdGlvbnMgJiBTRUxF Q1RfREVTQ1JJQkUpCisgICAgICAgIHsKKyAgICAgICAgICB0YWItPnJlZi5rZXk9IC0xOworICAg ICAgICAgIHRhYi0+cmVmLmtleV9wYXJ0cz0gMDsKKyAgICAgICAgICBpZiAoc2VsZWN0X2xpbWl0 IDwgdGFibGUtPmZpbGUtPnN0YXRzLnJlY29yZHMpIAorICAgICAgICAgICAgdGFiLT5saW1pdD0g c2VsZWN0X2xpbWl0OworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIGlmICh0YWItPnR5 cGUgIT0gSlRfQUxMKQorICAgICAgeworICAgICAgICAvKgorICAgICAgICAgIFdlJ3JlIGFib3V0 IHRvIHVzZSBhIHF1aWNrIGFjY2VzcyB0byB0aGUgdGFibGUuCisgICAgICAgICAgV2UgbmVlZCB0 byBjaGFuZ2UgdGhlIGFjY2VzcyBtZXRob2Qgc28gYXMgdGhlIHF1aWNrIGFjY2VzcworICAgICAg ICAgIG1ldGhvZCBpcyBhY3R1YWxseSB1c2VkLgorICAgICAgICAqLworICAgICAgICBEQlVHX0FT U0VSVCh0YWItPnNlbGVjdC0+cXVpY2spOworICAgICAgICB0YWItPnR5cGU9SlRfQUxMOworICAg ICAgICB0YWItPnVzZV9xdWljaz0xOworICAgICAgICB0YWItPnJlZi5rZXk9IC0xOworICAgICAg ICB0YWItPnJlZi5rZXlfcGFydHM9MDsJCS8vIERvbid0IHVzZSByZWYga2V5LgorICAgICAgICB0 YWItPnJlYWRfZmlyc3RfcmVjb3JkPSBqb2luX2luaXRfcmVhZF9yZWNvcmQ7CisgICAgICAgIGlm ICh0YWItPmlzX3VzaW5nX2xvb3NlX2luZGV4X3NjYW4oKSkKKyAgICAgICAgICB0YWItPmpvaW4t PnRtcF90YWJsZV9wYXJhbS5wcmVjb21wdXRlZF9ncm91cF9ieT0gVFJVRTsKKyAgICAgICAgLyoK KyAgICAgICAgICBUT0RPOiB1cGRhdGUgdGhlIG51bWJlciBvZiByZWNvcmRzIGluIGpvaW4tPmJl c3RfcG9zaXRpb25zW3RhYmxlbnJdCisgICAgICAgICovCisgICAgICB9CisgICAgfSAvLyBiZXN0 X2tleSA+PSAwCisKKyAgICBpZiAob3JkZXJfZGlyZWN0aW9uID09IC0xKQkJLy8gSWYgT1JERVIg QlkgLi4uIERFU0MKKyAgICB7CisgICAgICBpZiAoc2VsZWN0ICYmIHNlbGVjdC0+cXVpY2spCisg ICAgICB7CisgICAgICAgIFFVSUNLX1NFTEVDVF9ERVNDICp0bXA7CisgICAgICAgIC8qIE9SREVS IEJZIHJhbmdlX2tleSBERVNDICovCisgICAgICAgIHRtcD0gbmV3IFFVSUNLX1NFTEVDVF9ERVND KChRVUlDS19SQU5HRV9TRUxFQ1QqKShzZWxlY3QtPnF1aWNrKSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVzZWRfa2V5X3BhcnRzKTsKKyAgICAgICAgaWYgKHRtcCAmJiBz ZWxlY3QtPnF1aWNrID09IHNhdmVfcXVpY2spCisgICAgICAgICAgc2F2ZV9xdWljaz0gMDsgICAg Ly8gOjpRVUlDS19TRUxFQ1RfREVTQyBjb25zdW1lZCBpdAorCisgICAgICAgIGlmICghdG1wIHx8 IHRtcC0+ZXJyb3IpCisgICAgICAgIHsKKyAgICAgICAgICBkZWxldGUgdG1wOworICAgICAgICAg IHRhYi0+bGltaXQ9IDA7CisgICAgICAgICAgZ290byB1c2VfZmlsZXNvcnQ7ICAgICAgICAgICAv LyBSZXZlcnNlIHNvcnQgZmFpbGVkIC0+IGZpbGVzb3J0CisgICAgICAgIH0KKyAgICAgICAgc2Vs ZWN0LT5xdWljaz0gdG1wOworICAgICAgfQorICAgICAgZWxzZSBpZiAodGFiLT50eXBlICE9IEpU X05FWFQgJiYgdGFiLT50eXBlICE9IEpUX1JFRl9PUl9OVUxMICYmCisgICAgICAgICAgICAgICB0 YWItPnJlZi5rZXkgPj0gMCAmJiB0YWItPnJlZi5rZXlfcGFydHMgPD0gdXNlZF9rZXlfcGFydHMp CisgICAgICB7CisgICAgICAgIC8qCisgICAgICAgICAgU0VMRUNUICogRlJPTSB0MSBXSEVSRSBh PTEgT1JERVIgQlkgYSBERVNDLGIgREVTQworCisgICAgICAgICAgVXNlIGEgdHJhdmVyc2FsIGZ1 bmN0aW9uIHRoYXQgc3RhcnRzIGJ5IHJlYWRpbmcgdGhlIGxhc3Qgcm93CisgICAgICAgICAgd2l0 aCBrZXkgcGFydCAoQSkgYW5kIHRoZW4gdHJhdmVyc2UgdGhlIGluZGV4IGJhY2t3YXJkcy4KKyAg ICAgICAgKi8KKyAgICAgICAgdGFiLT5yZWFkX2ZpcnN0X3JlY29yZD0gam9pbl9yZWFkX2xhc3Rf a2V5OworICAgICAgICB0YWItPnJlYWRfcmVjb3JkLnJlYWRfcmVjb3JkPSBqb2luX3JlYWRfcHJl dl9zYW1lOworICAgICAgfQogICAgIH0KKyAgICBlbHNlIGlmIChzZWxlY3QgJiYgc2VsZWN0LT5x dWljaykKKyAgICAgIHNlbGVjdC0+cXVpY2stPnNvcnRlZD0gMTsKKworICB9IC8vIFFFUCBoYXMg YmVlbiBtb2RpZmllZAorCisgIC8qCisgICAgQ2xlYW51cDoKKyAgICBXZSBtYXkgaGF2ZSBib3Ro IGEgJ3NlbGVjdC0+cXVpY2snIGFuZCAnc2F2ZV9xdWljaycgKG9yaWdpbmFsKQorICAgIGF0IHRo aXMgcG9pbnQuIERlbGV0ZSB0aGUgb25lIHRoYXQgd2Ugd2FuJ3QgdXNlLgorICAqLworCitza2lw cGVkX2ZpbGVzb3J0OgorICAvLyBLZWVwIGN1cnJlbnQgKG9yZGVyZWQpIHNlbGVjdC0+cXVpY2sg CisgIGlmIChzZWxlY3QgJiYgc2F2ZV9xdWljayAhPSBzZWxlY3QtPnF1aWNrKQorICB7CisgICAg ZGVsZXRlIHNhdmVfcXVpY2s7CisgICAgc2F2ZV9xdWljaz0gTlVMTDsKICAgfQotICBlbHNlIGlm IChzZWxlY3QgJiYgc2VsZWN0LT5xdWljaykKLSAgICBzZWxlY3QtPnF1aWNrLT5zb3J0ZWQ9IDE7 CiAgIERCVUdfUkVUVVJOKDEpOworCit1c2VfZmlsZXNvcnQ6CisgIC8vIFJlc3RvcmUgb3JpZ2lu YWwgc2F2ZV9xdWljaworICBpZiAoc2VsZWN0ICYmIHNlbGVjdC0+cXVpY2sgIT0gc2F2ZV9xdWlj aykKKyAgeworICAgIGRlbGV0ZSBzZWxlY3QtPnF1aWNrOworICAgIHNlbGVjdC0+cXVpY2s9IHNh dmVfcXVpY2s7CisgIH0KKyAgREJVR19SRVRVUk4oMCk7CiB9CiAKIAoKPT09IG1vZGlmaWVkIGZp bGUgJ3NxbC9zcWxfc2hvdy5jYycKLS0tIGEvc3FsL3NxbF9zaG93LmNjCTIwMTEtMDEtMDcgMTE6 NDY6MjEgKzAwMDAKKysrIGIvc3FsL3NxbF9zaG93LmNjCTIwMTEtMDEtMjUgMTQ6NDI6NDAgKzAw MDAKQEAgLTEsNCArMSw0IEBACi0vKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMTAsIE9yYWNsZSBh bmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvKiBDb3B5cmlnaHQg KGMpIDIwMDAsIDIwMTEsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMg cmVzZXJ2ZWQuCiAKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQoKPT09IG1vZGlmaWVk IGZpbGUgJ3NxbC9zcWxfdmlldy5jYycKLS0tIGEvc3FsL3NxbF92aWV3LmNjCTIwMTEtMDEtMTIg MTM6MDg6MzAgKzAwMDAKKysrIGIvc3FsL3NxbF92aWV3LmNjCTIwMTEtMDEtMjUgMTQ6NDI6NDAg KzAwMDAKQEAgLTEsNCArMSw0IEBACi0vKiBDb3B5cmlnaHQgKEMpIDIwMDQgTXlTUUwgQUIKKy8q IENvcHlyaWdodCAoYykgMjAwNCwgMjAxMSwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4g QWxsIHJpZ2h0cyByZXNlcnZlZC4KIAogICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICAgIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cgo9 PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL0NoYW5nZUxvZycKLS0tIGEv c3RvcmFnZS9pbm5vZGJfcGx1Z2luL0NoYW5nZUxvZwkyMDExLTAxLTMwIDE2OjQxOjU4ICswMDAw CisrKyBiL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9DaGFuZ2VMb2cJMjAxMS0wMi0wOCAxNzoyNjo0 MiArMDAwMApAQCAtMSwzICsxLDEwIEBACisyMDExLTAxLTMxCVRoZSBJbm5vREIgVGVhbQorCisJ KiBidHIvYnRyMGN1ci5jLCBpbmNsdWRlL3JvdzB1cGQuaCwKKwlyb3cvcm93MHB1cmdlLmMsIHJv dy9yb3cwdW1vZC5jLCByb3cvcm93MHVwZC5jOgorCUJ1ZyM1OTIzMCBhc3NlcnQgMCByb3dfdXBk X2NoYW5nZXNfb3JkX2ZpZWxkX2JpbmFyeSgpCisJaW4gcG9zdC1jcmFzaCByb2xsYmFjayBvciBw dXJnZQorCiAyMDExLTAxLTI3CVRoZSBJbm5vREIgVGVhbQogCiAJKiBidHIvYnRyMGN1ci5jOgpA QCAtNTAsNiArNTcsMTYgQEAKIAliYWQgInJvd3MgZXhhbWluZWQiIGVzdGltYXRlcwogCiAyMDEx LTAxLTA2CVRoZSBJbm5vREIgVGVhbQorCSogcm93L3JvdzBtZXJnZS5jOgorCUZpeCBCdWcjNTkz MTIgRXhhbWluZSBNQVhfRlVMTF9OQU1FX0xFTiBpbiBJbm5vREIgdG8gYWRkcmVzcworCXBvc3Np YmxlIGluc3VmZmljaWVudCBuYW1lIGJ1ZmZlcgorCisyMDExLTAxLTA2CVRoZSBJbm5vREIgVGVh bQorCSogZGljdC9kaWN0MGRpY3QuYywgaGFuZGxlci9oYV9pbm5vZGIuY2MsIGhhbmRsZXIvaV9z LmNjLAorCWluY2x1ZGUvdW5pdi5pOiAKKwlGaXggQnVnIzU4NjQzIElubm9EQjogdG9vIGxvbmcg dGFibGUgbmFtZQorCisyMDExLTAxLTA2CVRoZSBJbm5vREIgVGVhbQogCSogaGFuZGxlci9pX3Mu Y2MsIGluY2x1ZGUvdHJ4MGlfcy5oLCB0cngvdHJ4MGlfcy5jOgogCUZpeCBCdWcjNTUzOTcgY2Fu bm90IHNlbGVjdCBmcm9tIGlubm9kYl90cnggd2hlbiB0cnhfcXVlcnkgY29udGFpbnMKIAlibG9i cyB0aGF0IGFyZW4ndCBzdHJpbmdzCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJf cGx1Z2luL2J0ci9idHIwY3VyLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9idHIvYnRy MGN1ci5jCTIwMTEtMDEtMjggMDg6NTA6MTAgKzAwMDAKKysrIGIvc3RvcmFnZS9pbm5vZGJfcGx1 Z2luL2J0ci9idHIwY3VyLmMJMjAxMS0wMi0wMiAxMzo1MTowOCArMDAwMApAQCAtMTg2LDcgKzE4 Niw3IEBAIHN0YXRpYwogdWxpbnQKIGJ0cl9yZWNfZ2V0X2V4dGVybmFsbHlfc3RvcmVkX2xlbigK IC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLQlyZWNfdCoJCXJlYywJLyohPCBp bjogcmVjb3JkICovCisJY29uc3QgcmVjX3QqCXJlYywJLyohPCBpbjogcmVjb3JkICovCiAJY29u c3QgdWxpbnQqCW9mZnNldHMpOy8qITwgaW46IGFycmF5IHJldHVybmVkIGJ5IHJlY19nZXRfb2Zm c2V0cygpICovCiAjZW5kaWYgLyogIVVOSVZfSE9UQkFDS1VQICovCiAKQEAgLTE3NjgsOCArMTc2 OCw4IEBAIGJ0cl9jdXJfdXBkYXRlX2luX3BsYWNlKAogCQlOT1QgY2FsbCBpdCBpZiBpbmRleCBp cyBzZWNvbmRhcnkgKi8KIAogCQlpZiAoIWRpY3RfaW5kZXhfaXNfY2x1c3QoaW5kZXgpCi0JCSAg ICB8fCByb3dfdXBkX2NoYW5nZXNfb3JkX2ZpZWxkX2JpbmFyeShOVUxMLCBOVUxMLAotCQkJCQkJ CWluZGV4LCB1cGRhdGUpKSB7CisJCSAgICB8fCByb3dfdXBkX2NoYW5nZXNfb3JkX2ZpZWxkX2Jp bmFyeShpbmRleCwgdXBkYXRlLCB0aHIsCisJCQkJCQkJTlVMTCwgTlVMTCkpIHsKIAogCQkJLyog UmVtb3ZlIHBvc3NpYmxlIGhhc2ggaW5kZXggcG9pbnRlciB0byB0aGlzIHJlY29yZCAqLwogCQkJ YnRyX3NlYXJjaF91cGRhdGVfaGFzaF9vbl9kZWxldGUoY3Vyc29yKTsKQEAgLTM0ODQsMzQgKzM0 ODQsNjIgQEAgYnRyX2VzdGltYXRlX251bWJlcl9vZl9kaWZmZXJlbnRfa2V5X3ZhbAogLyo9PT09 PT09PT09PT09PT09PT0gRVhURVJOQUwgU1RPUkFHRSBPRiBCSUcgRklFTERTID09PT09PT09PT09 PT09PT09PT0qLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovLyoqCitHZXRzIHRoZSBvZmZzZXQgb2YgdGhlIHBvaW50ZXIgdG8g dGhlIGV4dGVybmFsbHkgc3RvcmVkIHBhcnQgb2YgYSBmaWVsZC4KK0ByZXR1cm4Jb2Zmc2V0IG9m IHRoZSBwb2ludGVyIHRvIHRoZSBleHRlcm5hbGx5IHN0b3JlZCBwYXJ0ICovCitzdGF0aWMKK3Vs aW50CitidHJfcmVjX2dldF9maWVsZF9yZWZfb2ZmcygKKy8qPT09PT09PT09PT09PT09PT09PT09 PT0qLworCWNvbnN0IHVsaW50KglvZmZzZXRzLC8qITwgaW46IGFycmF5IHJldHVybmVkIGJ5IHJl Y19nZXRfb2Zmc2V0cygpICovCisJdWxpbnQJCW4pCS8qITwgaW46IGluZGV4IG9mIHRoZSBleHRl cm5hbCBmaWVsZCAqLworeworCXVsaW50CWZpZWxkX3JlZl9vZmZzOworCXVsaW50CWxvY2FsX2xl bjsKKworCXV0X2EocmVjX29mZnNfbnRoX2V4dGVybihvZmZzZXRzLCBuKSk7CisJZmllbGRfcmVm X29mZnMgPSByZWNfZ2V0X250aF9maWVsZF9vZmZzKG9mZnNldHMsIG4sICZsb2NhbF9sZW4pOwor CXV0X2EobG9jYWxfbGVuICE9IFVOSVZfU1FMX05VTEwpOworCXV0X2EobG9jYWxfbGVuID49IEJU Ul9FWFRFUk5fRklFTERfUkVGX1NJWkUpOworCisJcmV0dXJuKGZpZWxkX3JlZl9vZmZzICsgbG9j YWxfbGVuIC0gQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSk7Cit9CisKKy8qKiBHZXRzIGEgcG9p bnRlciB0byB0aGUgZXh0ZXJuYWxseSBzdG9yZWQgcGFydCBvZiBhIGZpZWxkLgorQHBhcmFtIHJl YwlyZWNvcmQKK0BwYXJhbSBvZmZzZXRzCXJlY19nZXRfb2Zmc2V0cyhyZWMpCitAcGFyYW0gbglp bmRleCBvZiB0aGUgZXh0ZXJuYWxseSBzdG9yZWQgZmllbGQKK0ByZXR1cm4gcG9pbnRlciB0byB0 aGUgZXh0ZXJuYWxseSBzdG9yZWQgcGFydCAqLworI2RlZmluZSBidHJfcmVjX2dldF9maWVsZF9y ZWYocmVjLCBvZmZzZXRzLCBuKQkJCVwKKwkoKHJlYykgKyBidHJfcmVjX2dldF9maWVsZF9yZWZf b2ZmcyhvZmZzZXRzLCBuKSkKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogR2V0cyB0aGUgZXh0ZXJuYWxseSBzdG9yZWQg c2l6ZSBvZiBhIHJlY29yZCwgaW4gdW5pdHMgb2YgYSBkYXRhYmFzZSBwYWdlLgogQHJldHVybgll eHRlcm5hbGx5IHN0b3JlZCBwYXJ0LCBpbiB1bml0cyBvZiBhIGRhdGFiYXNlIHBhZ2UgKi8KIHN0 YXRpYwogdWxpbnQKIGJ0cl9yZWNfZ2V0X2V4dGVybmFsbHlfc3RvcmVkX2xlbigKIC8qPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLQlyZWNfdCoJCXJlYywJLyohPCBpbjogcmVjb3Jk ICovCisJY29uc3QgcmVjX3QqCXJlYywJLyohPCBpbjogcmVjb3JkICovCiAJY29uc3QgdWxpbnQq CW9mZnNldHMpLyohPCBpbjogYXJyYXkgcmV0dXJuZWQgYnkgcmVjX2dldF9vZmZzZXRzKCkgKi8K IHsKIAl1bGludAluX2ZpZWxkczsKLQlieXRlKglkYXRhOwotCXVsaW50CWxvY2FsX2xlbjsKLQl1 bGludAlleHRlcm5fbGVuOwogCXVsaW50CXRvdGFsX2V4dGVybl9sZW4gPSAwOwogCXVsaW50CWk7 CiAKIAl1dF9hZCghcmVjX29mZnNfY29tcChvZmZzZXRzKSB8fCAhcmVjX2dldF9ub2RlX3B0cl9m bGFnKHJlYykpOworCisJaWYgKCFyZWNfb2Zmc19hbnlfZXh0ZXJuKG9mZnNldHMpKSB7CisJCXJl dHVybigwKTsKKwl9CisKIAluX2ZpZWxkcyA9IHJlY19vZmZzX25fZmllbGRzKG9mZnNldHMpOwog CiAJZm9yIChpID0gMDsgaSA8IG5fZmllbGRzOyBpKyspIHsKIAkJaWYgKHJlY19vZmZzX250aF9l eHRlcm4ob2Zmc2V0cywgaSkpIHsKIAotCQkJZGF0YSA9IHJlY19nZXRfbnRoX2ZpZWxkKHJlYywg b2Zmc2V0cywgaSwgJmxvY2FsX2xlbik7Ci0KLQkJCWxvY2FsX2xlbiAtPSBCVFJfRVhURVJOX0ZJ RUxEX1JFRl9TSVpFOwotCi0JCQlleHRlcm5fbGVuID0gbWFjaF9yZWFkX2Zyb21fNChkYXRhICsg bG9jYWxfbGVuCi0JCQkJCQkgICAgICArIEJUUl9FWFRFUk5fTEVOICsgNCk7CisJCQl1bGludAll eHRlcm5fbGVuID0gbWFjaF9yZWFkX2Zyb21fNCgKKwkJCQlidHJfcmVjX2dldF9maWVsZF9yZWYo cmVjLCBvZmZzZXRzLCBpKQorCQkJCSsgQlRSX0VYVEVSTl9MRU4gKyA0KTsKIAogCQkJdG90YWxf ZXh0ZXJuX2xlbiArPSB1dF9jYWxjX2FsaWduKGV4dGVybl9sZW4sCiAJCQkJCQkJICBVTklWX1BB R0VfU0laRSk7CkBAIC0zNTQxLDcgKzM1NjksNyBAQCBidHJfY3VyX3NldF9vd25lcnNoaXBfb2Zf ZXh0ZXJuX2ZpZWxkKAogCXVsaW50CWJ5dGVfdmFsOwogCiAJZGF0YSA9IHJlY19nZXRfbnRoX2Zp ZWxkKHJlYywgb2Zmc2V0cywgaSwgJmxvY2FsX2xlbik7Ci0KKwl1dF9hZChyZWNfb2Zmc19udGhf ZXh0ZXJuKG9mZnNldHMsIGkpKTsKIAl1dF9hKGxvY2FsX2xlbiA+PSBCVFJfRVhURVJOX0ZJRUxE X1JFRl9TSVpFKTsKIAogCWxvY2FsX2xlbiAtPSBCVFJfRVhURVJOX0ZJRUxEX1JFRl9TSVpFOwpA QCAtMzU1MSw2ICszNTc5LDkgQEAgYnRyX2N1cl9zZXRfb3duZXJzaGlwX29mX2V4dGVybl9maWVs ZCgKIAlpZiAodmFsKSB7CiAJCWJ5dGVfdmFsID0gYnl0ZV92YWwgJiAofkJUUl9FWFRFUk5fT1dO RVJfRkxBRyk7CiAJfSBlbHNlIHsKKyNpZiBkZWZpbmVkIFVOSVZfREVCVUcgfHwgZGVmaW5lZCBV TklWX0JMT0JfTElHSFRfREVCVUcKKwkJdXRfYSghKGJ5dGVfdmFsICYgQlRSX0VYVEVSTl9PV05F Ul9GTEFHKSk7CisjZW5kaWYgLyogVU5JVl9ERUJVRyB8fCBVTklWX0JMT0JfTElHSFRfREVCVUcg Ki8KIAkJYnl0ZV92YWwgPSBieXRlX3ZhbCB8IEJUUl9FWFRFUk5fT1dORVJfRkxBRzsKIAl9CiAK QEAgLTM3ODgsOCArMzgxOSw4IEBAIGZpbGUgc2VnbWVudCBvZiB0aGUgaW5kZXggdHJlZS4KIEBy ZXR1cm4JREJfU1VDQ0VTUyBvciBEQl9PVVRfT0ZfRklMRV9TUEFDRSAqLwogVU5JVl9JTlRFUk4K IHVsaW50Ci1idHJfc3RvcmVfYmlnX3JlY19leHRlcm5fZmllbGRzKAotLyo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ki8KK2J0cl9zdG9yZV9iaWdfcmVjX2V4dGVybl9maWVsZHNfZnVuYygK Ky8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KIAlkaWN0X2luZGV4X3QqCWlu ZGV4LAkJLyohPCBpbjogaW5kZXggb2YgcmVjOyB0aGUgaW5kZXggdHJlZQogCQkJCQlNVVNUIGJl IFgtbGF0Y2hlZCAqLwogCWJ1Zl9ibG9ja190KglyZWNfYmxvY2ssCS8qITwgaW4vb3V0OiBibG9j ayBjb250YWluaW5nIHJlYyAqLwpAQCAtMzc5OCwxMSArMzgyOSwxNyBAQCBidHJfc3RvcmVfYmln X3JlY19leHRlcm5fZmllbGRzKAogCQkJCQl0aGUgImV4dGVybmFsIHN0b3JhZ2UiIGZsYWdzIGlu IG9mZnNldHMKIAkJCQkJd2lsbCBub3QgY29ycmVzcG9uZCB0byByZWMgd2hlbgogCQkJCQl0aGlz IGZ1bmN0aW9uIHJldHVybnMgKi8KLQliaWdfcmVjX3QqCWJpZ19yZWNfdmVjLAkvKiE8IGluOiB2 ZWN0b3IgY29udGFpbmluZyBmaWVsZHMKKyNpZmRlZiBVTklWX0RFQlVHCisJbXRyX3QqCQlsb2Nh bF9tdHIsCS8qITwgaW46IG10ciBjb250YWluaW5nIHRoZQorCQkJCQlsYXRjaCB0byByZWMgYW5k IHRvIHRoZSB0cmVlICovCisjZW5kaWYgLyogVU5JVl9ERUJVRyAqLworI2lmIGRlZmluZWQgVU5J Vl9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfQkxPQl9MSUdIVF9ERUJVRworCWlib29sCQl1cGRhdGVf aW5fcGxhY2UsLyohIGluOiBUUlVFIGlmIHRoZSByZWNvcmQgaXMgdXBkYXRlZAorCQkJCQlpbiBw bGFjZSAobm90IGRlbGV0ZStpbnNlcnQpICovCisjZW5kaWYgLyogVU5JVl9ERUJVRyB8fCBVTklW X0JMT0JfTElHSFRfREVCVUcgKi8KKwljb25zdCBiaWdfcmVjX3QqYmlnX3JlY192ZWMpCS8qITwg aW46IHZlY3RvciBjb250YWluaW5nIGZpZWxkcwogCQkJCQl0byBiZSBzdG9yZWQgZXh0ZXJuYWxs eSAqLwotCW10cl90KgkJbG9jYWxfbXRyIF9fYXR0cmlidXRlX18oKHVudXNlZCkpKSAvKiE8IGlu OiBtdHIKLQkJCQkJY29udGFpbmluZyB0aGUgbGF0Y2ggdG8gcmVjIGFuZCB0byB0aGUKLQkJCQkJ dHJlZSAqLworCiB7CiAJdWxpbnQJcmVjX3BhZ2Vfbm87CiAJYnl0ZSoJZmllbGRfcmVmOwpAQCAt MzgyMCw2ICszODU3LDcgQEAgYnRyX3N0b3JlX2JpZ19yZWNfZXh0ZXJuX2ZpZWxkcygKIAl6X3N0 cmVhbSBjX3N0cmVhbTsKIAogCXV0X2FkKHJlY19vZmZzX3ZhbGlkYXRlKHJlYywgaW5kZXgsIG9m ZnNldHMpKTsKKwl1dF9hZChyZWNfb2Zmc19hbnlfZXh0ZXJuKG9mZnNldHMpKTsKIAl1dF9hZCht dHJfbWVtb19jb250YWlucyhsb2NhbF9tdHIsIGRpY3RfaW5kZXhfZ2V0X2xvY2soaW5kZXgpLAog CQkJCU1UUl9NRU1PX1hfTE9DSykpOwogCXV0X2FkKG10cl9tZW1vX2NvbnRhaW5zKGxvY2FsX210 ciwgcmVjX2Jsb2NrLCBNVFJfTUVNT19QQUdFX1hfRklYKSk7CkBAIC0zODUxLDIxICszODg5LDM3 IEBAIGJ0cl9zdG9yZV9iaWdfcmVjX2V4dGVybl9maWVsZHMoCiAJCXV0X2EoZXJyID09IFpfT0sp OwogCX0KIAorI2lmIGRlZmluZWQgVU5JVl9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfQkxPQl9MSUdI VF9ERUJVRworCS8qIEFsbCBwb2ludGVycyB0byBleHRlcm5hbGx5IHN0b3JlZCBjb2x1bW5zIGlu IHRoZSByZWNvcmQKKwltdXN0IGVpdGhlciBiZSB6ZXJvIG9yIHRoZXkgbXVzdCBiZSBwb2ludGVy cyB0byBpbmhlcml0ZWQKKwljb2x1bW5zLCBvd25lZCBieSB0aGlzIHJlY29yZCBvciBhbiBlYXJs aWVyIHJlY29yZCB2ZXJzaW9uLiAqLworCWZvciAoaSA9IDA7IGkgPCByZWNfb2Zmc19uX2ZpZWxk cyhvZmZzZXRzKTsgaSsrKSB7CisJCWlmICghcmVjX29mZnNfbnRoX2V4dGVybihvZmZzZXRzLCBp KSkgeworCQkJY29udGludWU7CisJCX0KKwkJZmllbGRfcmVmID0gYnRyX3JlY19nZXRfZmllbGRf cmVmKHJlYywgb2Zmc2V0cywgaSk7CisKKwkJdXRfYSghKGZpZWxkX3JlZltCVFJfRVhURVJOX0xF Tl0gJiBCVFJfRVhURVJOX09XTkVSX0ZMQUcpKTsKKwkJLyogRWl0aGVyIHRoaXMgbXVzdCBiZSBh biB1cGRhdGUgaW4gcGxhY2UsCisJCW9yIHRoZSBCTE9CIG11c3QgYmUgaW5oZXJpdGVkLCBvciB0 aGUgQkxPQiBwb2ludGVyCisJCW11c3QgYmUgemVybyAod2lsbCBiZSB3cml0dGVuIGluIHRoaXMg ZnVuY3Rpb24pLiAqLworCQl1dF9hKHVwZGF0ZV9pbl9wbGFjZQorCQkgICAgIHx8IChmaWVsZF9y ZWZbQlRSX0VYVEVSTl9MRU5dICYgQlRSX0VYVEVSTl9JTkhFUklURURfRkxBRykKKwkJICAgICB8 fCAhbWVtY21wKGZpZWxkX3JlZiwgZmllbGRfcmVmX3plcm8sCisJCQkJQlRSX0VYVEVSTl9GSUVM RF9SRUZfU0laRSkpOworCX0KKyNlbmRpZiAvKiBVTklWX0RFQlVHIHx8IFVOSVZfQkxPQl9MSUdI VF9ERUJVRyAqLwogCS8qIFdlIGhhdmUgdG8gY3JlYXRlIGEgZmlsZSBzZWdtZW50IHRvIHRoZSB0 YWJsZXNwYWNlCiAJZm9yIGVhY2ggZmllbGQgYW5kIHB1dCB0aGUgcG9pbnRlciB0byB0aGUgZmll bGQgaW4gcmVjICovCiAKIAlmb3IgKGkgPSAwOyBpIDwgYmlnX3JlY192ZWMtPm5fZmllbGRzOyBp KyspIHsKLQkJdXRfYWQocmVjX29mZnNfbnRoX2V4dGVybihvZmZzZXRzLAotCQkJCQkgIGJpZ19y ZWNfdmVjLT5maWVsZHNbaV0uZmllbGRfbm8pKTsKLQkJewotCQkJdWxpbnQJbG9jYWxfbGVuOwot CQkJZmllbGRfcmVmID0gcmVjX2dldF9udGhfZmllbGQoCi0JCQkJcmVjLCBvZmZzZXRzLCBiaWdf cmVjX3ZlYy0+ZmllbGRzW2ldLmZpZWxkX25vLAotCQkJCSZsb2NhbF9sZW4pOwotCQkJdXRfYShs b2NhbF9sZW4gPj0gQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSk7Ci0JCQlsb2NhbF9sZW4gLT0g QlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRTsKLQkJCWZpZWxkX3JlZiArPSBsb2NhbF9sZW47Ci0J CX0KKwkJZmllbGRfcmVmID0gYnRyX3JlY19nZXRfZmllbGRfcmVmKAorCQkJcmVjLCBvZmZzZXRz LCBiaWdfcmVjX3ZlYy0+ZmllbGRzW2ldLmZpZWxkX25vKTsKKyNpZiBkZWZpbmVkIFVOSVZfREVC VUcgfHwgZGVmaW5lZCBVTklWX0JMT0JfTElHSFRfREVCVUcKKwkJLyogQSB6ZXJvIEJMT0IgcG9p bnRlciBzaG91bGQgaGF2ZSBiZWVuIGluaXRpYWxseSBpbnNlcnRlZC4gKi8KKwkJdXRfYSghbWVt Y21wKGZpZWxkX3JlZiwgZmllbGRfcmVmX3plcm8sCisJCQkgICAgIEJUUl9FWFRFUk5fRklFTERf UkVGX1NJWkUpKTsKKyNlbmRpZiAvKiBVTklWX0RFQlVHIHx8IFVOSVZfQkxPQl9MSUdIVF9ERUJV RyAqLwogCQlleHRlcm5fbGVuID0gYmlnX3JlY192ZWMtPmZpZWxkc1tpXS5sZW47CiAJCVVOSVZf TUVNX0FTU0VSVF9SVyhiaWdfcmVjX3ZlYy0+ZmllbGRzW2ldLmRhdGEsCiAJCQkJICAgZXh0ZXJu X2xlbik7CkBAIC00MTQ3LDYgKzQyMDEsMjMgQEAgbmV4dF96aXBfcGFnZToKIAkJbWVtX2hlYXBf ZnJlZShoZWFwKTsKIAl9CiAKKyNpZiBkZWZpbmVkIFVOSVZfREVCVUcgfHwgZGVmaW5lZCBVTklW X0JMT0JfTElHSFRfREVCVUcKKwkvKiBBbGwgcG9pbnRlcnMgdG8gZXh0ZXJuYWxseSBzdG9yZWQg Y29sdW1ucyBpbiB0aGUgcmVjb3JkCisJbXVzdCBiZSB2YWxpZC4gKi8KKwlmb3IgKGkgPSAwOyBp IDwgcmVjX29mZnNfbl9maWVsZHMob2Zmc2V0cyk7IGkrKykgeworCQlpZiAoIXJlY19vZmZzX250 aF9leHRlcm4ob2Zmc2V0cywgaSkpIHsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJZmllbGRfcmVm ID0gYnRyX3JlY19nZXRfZmllbGRfcmVmKHJlYywgb2Zmc2V0cywgaSk7CisKKwkJLyogVGhlIHBv aW50ZXIgbXVzdCBub3QgYmUgemVyby4gKi8KKwkJdXRfYSgwICE9IG1lbWNtcChmaWVsZF9yZWYs IGZpZWxkX3JlZl96ZXJvLAorCQkJCSBCVFJfRVhURVJOX0ZJRUxEX1JFRl9TSVpFKSk7CisJCS8q IFRoZSBjb2x1bW4gbXVzdCBub3QgYmUgZGlzb3duZWQgYnkgdGhpcyByZWNvcmQuICovCisJCXV0 X2EoIShmaWVsZF9yZWZbQlRSX0VYVEVSTl9MRU5dICYgQlRSX0VYVEVSTl9PV05FUl9GTEFHKSk7 CisJfQorI2VuZGlmIC8qIFVOSVZfREVCVUcgfHwgVU5JVl9CTE9CX0xJR0hUX0RFQlVHICovCiAJ cmV0dXJuKERCX1NVQ0NFU1MpOwogfQogCkBAIC00MTY5LDYgKzQyNDAsNyBAQCBidHJfY2hlY2tf YmxvYl9maWxfcGFnZV90eXBlKAogCWlmIChVTklWX1VOTElLRUxZKHR5cGUgIT0gRklMX1BBR0Vf VFlQRV9CTE9CKSkgewogCQl1bGludAlmbGFncyA9IGZpbF9zcGFjZV9nZXRfZmxhZ3Moc3BhY2Vf aWQpOwogCisjaWZuZGVmIFVOSVZfREVCVUcgLyogSW1wcm92ZSBkZWJ1ZyB0ZXN0IGNvdmVyYWdl ICovCiAJCWlmIChVTklWX0xJS0VMWQogCQkgICAgKChmbGFncyAmIERJQ1RfVEZfRk9STUFUX01B U0spID09IERJQ1RfVEZfRk9STUFUXzUxKSkgewogCQkJLyogT2xkIHZlcnNpb25zIG9mIElubm9E QiBkaWQgbm90IGluaXRpYWxpemUKQEAgLTQxNzcsNiArNDI0OSw3IEBAIGJ0cl9jaGVja19ibG9i X2ZpbF9wYWdlX3R5cGUoCiAJCQlhIEJMT0IgcGFnZSB0aGF0IGlzIGluIEFudGVsb3BlIGZvcm1h dC4qLwogCQkJcmV0dXJuOwogCQl9CisjZW5kaWYgLyogIVVOSVZfREVCVUcgKi8KIAogCQl1dF9w cmludF90aW1lc3RhbXAoc3RkZXJyKTsKIAkJZnByaW50ZihzdGRlcnIsCkBAIC00MjI2LDIzICs0 Mjk5LDEzIEBAIGJ0cl9mcmVlX2V4dGVybmFsbHlfc3RvcmVkX2ZpZWxkKAogCXVsaW50CQlwYWdl X25vOwogCXVsaW50CQluZXh0X3BhZ2Vfbm87CiAJbXRyX3QJCW10cjsKLSNpZmRlZiBVTklWX0RF QlVHCisKIAl1dF9hZChtdHJfbWVtb19jb250YWlucyhsb2NhbF9tdHIsIGRpY3RfaW5kZXhfZ2V0 X2xvY2soaW5kZXgpLAogCQkJCU1UUl9NRU1PX1hfTE9DSykpOwogCXV0X2FkKG10cl9tZW1vX2Nv bnRhaW5zX3BhZ2UobG9jYWxfbXRyLCBmaWVsZF9yZWYsCiAJCQkJICAgICBNVFJfTUVNT19QQUdF X1hfRklYKSk7CiAJdXRfYWQoIXJlYyB8fCByZWNfb2Zmc192YWxpZGF0ZShyZWMsIGluZGV4LCBv ZmZzZXRzKSk7Ci0KLQlpZiAocmVjKSB7Ci0JCXVsaW50CWxvY2FsX2xlbjsKLQkJY29uc3QgYnl0 ZSoJZiA9IHJlY19nZXRfbnRoX2ZpZWxkKHJlYywgb2Zmc2V0cywKLQkJCQkJCSAgICAgIGksICZs b2NhbF9sZW4pOwotCQl1dF9hKGxvY2FsX2xlbiA+PSBCVFJfRVhURVJOX0ZJRUxEX1JFRl9TSVpF KTsKLQkJbG9jYWxfbGVuIC09IEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkU7Ci0JCWYgKz0gbG9j YWxfbGVuOwotCQl1dF9hZChmID09IGZpZWxkX3JlZik7Ci0JfQotI2VuZGlmIC8qIFVOSVZfREVC VUcgKi8KKwl1dF9hZCghcmVjIHx8IGZpZWxkX3JlZiA9PSBidHJfcmVjX2dldF9maWVsZF9yZWYo cmVjLCBvZmZzZXRzLCBpKSk7CiAKIAlpZiAoVU5JVl9VTkxJS0VMWSghbWVtY21wKGZpZWxkX3Jl ZiwgZmllbGRfcmVmX3plcm8sCiAJCQkJICBCVFJfRVhURVJOX0ZJRUxEX1JFRl9TSVpFKSkpIHsK QEAgLTQ0MDcsMTMgKzQ0NzAsOCBAQCBidHJfcmVjX2ZyZWVfZXh0ZXJuYWxseV9zdG9yZWRfZmll bGRzKAogCiAJZm9yIChpID0gMDsgaSA8IG5fZmllbGRzOyBpKyspIHsKIAkJaWYgKHJlY19vZmZz X250aF9leHRlcm4ob2Zmc2V0cywgaSkpIHsKLQkJCXVsaW50CWxlbjsKLQkJCWJ5dGUqCWRhdGEK LQkJCQk9IHJlY19nZXRfbnRoX2ZpZWxkKHJlYywgb2Zmc2V0cywgaSwgJmxlbik7Ci0JCQl1dF9h KGxlbiA+PSBCVFJfRVhURVJOX0ZJRUxEX1JFRl9TSVpFKTsKLQogCQkJYnRyX2ZyZWVfZXh0ZXJu YWxseV9zdG9yZWRfZmllbGQoCi0JCQkJaW5kZXgsIGRhdGEgKyBsZW4gLSBCVFJfRVhURVJOX0ZJ RUxEX1JFRl9TSVpFLAorCQkJCWluZGV4LCBidHJfcmVjX2dldF9maWVsZF9yZWYocmVjLCBvZmZz ZXRzLCBpKSwKIAkJCQlyZWMsIG9mZnNldHMsIHBhZ2VfemlwLCBpLCByYl9jdHgsIG10cik7CiAJ CX0KIAl9Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2J1Zi9idWYw YnVmLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9idWYvYnVmMGJ1Zi5jCTIwMTEtMDEt MjUgMDc6NTY6MTggKzAwMDAKKysrIGIvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2J1Zi9idWYwYnVm LmMJMjAxMS0wMi0wMiAxMjowNToxMiArMDAwMApAQCAtNjU3LDkgKzY1Nyw5IEBAIGJ1Zl9ibG9j a19pbml0KAogCiAJYmxvY2stPm1vZGlmeV9jbG9jayA9IDA7CiAKLSNpZmRlZiBVTklWX0RFQlVH X0ZJTEVfQUNDRVNTRVMKKyNpZiBkZWZpbmVkIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUyB8fCBk ZWZpbmVkIFVOSVZfREVCVUcKIAlibG9jay0+cGFnZS5maWxlX3BhZ2Vfd2FzX2ZyZWVkID0gRkFM U0U7Ci0jZW5kaWYgLyogVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VTICovCisjZW5kaWYgLyogVU5J Vl9ERUJVR19GSUxFX0FDQ0VTU0VTIHx8IFVOSVZfREVCVUcgKi8KIAogCWJsb2NrLT5jaGVja19p bmRleF9wYWdlX2F0X2ZsdXNoID0gRkFMU0U7CiAJYmxvY2stPmluZGV4ID0gTlVMTDsKQEAgLTE2 MDAsNyArMTYwMCw3IEBAIGJ1Zl9wYWdlX3BlZWtfaWZfc2VhcmNoX2hhc2hlZCgKIAlyZXR1cm4o aXNfaGFzaGVkKTsKIH0KIAotI2lmZGVmIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUworI2lmIGRl ZmluZWQgVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VTIHx8IGRlZmluZWQgVU5JVl9ERUJVRwogLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLy8qKgogU2V0cyBmaWxlX3BhZ2Vfd2FzX2ZyZWVkIFRSVUUgaWYgdGhlIHBhZ2Ug aXMgZm91bmQgaW4gdGhlIGJ1ZmZlciBwb29sLgogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2Fs bGVkIHdoZW4gd2UgZnJlZSBhIGZpbGUgcGFnZSBhbmQgd2FudCB0aGUKQEAgLTE2MjEsNiArMTYy MSw4IEBAIGJ1Zl9wYWdlX3NldF9maWxlX3BhZ2Vfd2FzX2ZyZWVkKAogCWJwYWdlID0gYnVmX3Bh Z2VfaGFzaF9nZXQoc3BhY2UsIG9mZnNldCk7CiAKIAlpZiAoYnBhZ2UpIHsKKwkJLyogYnBhZ2Ut PmZpbGVfcGFnZV93YXNfZnJlZWQgY2FuIGFscmVhZHkgaG9sZAorCQl3aGVuIHRoaXMgY29kZSBp cyBpbnZva2VkIGZyb20gZGljdF9kcm9wX2luZGV4X3RyZWUoKSAqLwogCQlicGFnZS0+ZmlsZV9w YWdlX3dhc19mcmVlZCA9IFRSVUU7CiAJfQogCkBAIC0xNjU2LDcgKzE2NTgsNyBAQCBidWZfcGFn ZV9yZXNldF9maWxlX3BhZ2Vfd2FzX2ZyZWVkKAogCiAJcmV0dXJuKGJwYWdlKTsKIH0KLSNlbmRp ZiAvKiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMgKi8KKyNlbmRpZiAvKiBVTklWX0RFQlVHX0ZJ TEVfQUNDRVNTRVMgfHwgVU5JVl9ERUJVRyAqLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBHZXQgcmVh ZCBhY2Nlc3MgdG8gYSBjb21wcmVzc2VkIHBhZ2UgKHVzdWFsbHkgb2YgdHlwZQpAQCAtMTc1Myw3 ICsxNzU1LDcgQEAgZ290X2Jsb2NrOgogCiAJYnVmX3BhZ2Vfc2V0X2FjY2Vzc2VkX21ha2VfeW91 bmcoYnBhZ2UsIGFjY2Vzc190aW1lKTsKIAotI2lmZGVmIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NF UworI2lmIGRlZmluZWQgVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VTIHx8IGRlZmluZWQgVU5JVl9E RUJVRwogCXV0X2EoIWJwYWdlLT5maWxlX3BhZ2Vfd2FzX2ZyZWVkKTsKICNlbmRpZgogCkBAIC0y MzIxLDcgKzIzMjMsNyBAQCB3YWl0X3VudGlsX3VuZml4ZWQ6CiAKIAlidWZfcGFnZV9zZXRfYWNj ZXNzZWRfbWFrZV95b3VuZygmYmxvY2stPnBhZ2UsIGFjY2Vzc190aW1lKTsKIAotI2lmZGVmIFVO SVZfREVCVUdfRklMRV9BQ0NFU1NFUworI2lmIGRlZmluZWQgVU5JVl9ERUJVR19GSUxFX0FDQ0VT U0VTIHx8IGRlZmluZWQgVU5JVl9ERUJVRwogCXV0X2EoIWJsb2NrLT5wYWdlLmZpbGVfcGFnZV93 YXNfZnJlZWQpOwogI2VuZGlmCiAKQEAgLTI0NzksNyArMjQ4MSw3IEBAIGJ1Zl9wYWdlX29wdGlt aXN0aWNfZ2V0KAogCXV0X2EoYnVmX2Jsb2NrX2dldF9zdGF0ZShibG9jaykgPT0gQlVGX0JMT0NL X0ZJTEVfUEFHRSk7CiAjZW5kaWYgLyogVU5JVl9ERUJVRyB8fCBVTklWX0JVRl9ERUJVRyAqLwog Ci0jaWZkZWYgVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VTCisjaWYgZGVmaW5lZCBVTklWX0RFQlVH X0ZJTEVfQUNDRVNTRVMgfHwgZGVmaW5lZCBVTklWX0RFQlVHCiAJdXRfYShibG9jay0+cGFnZS5m aWxlX3BhZ2Vfd2FzX2ZyZWVkID09IEZBTFNFKTsKICNlbmRpZgogCWlmIChVTklWX1VOTElLRUxZ KCFhY2Nlc3NfdGltZSkpIHsKQEAgLTI1ODcsNyArMjU4OSw3IEBAIGJ1Zl9wYWdlX2dldF9rbm93 bl9ub3dhaXQoCiAJdXRfYShibG9jay0+cGFnZS5idWZfZml4X2NvdW50ID4gMCk7CiAJdXRfYShi dWZfYmxvY2tfZ2V0X3N0YXRlKGJsb2NrKSA9PSBCVUZfQkxPQ0tfRklMRV9QQUdFKTsKICNlbmRp ZiAvKiBVTklWX0RFQlVHIHx8IFVOSVZfQlVGX0RFQlVHICovCi0jaWZkZWYgVU5JVl9ERUJVR19G SUxFX0FDQ0VTU0VTCisjaWYgZGVmaW5lZCBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMgfHwgZGVm aW5lZCBVTklWX0RFQlVHCiAJdXRfYShibG9jay0+cGFnZS5maWxlX3BhZ2Vfd2FzX2ZyZWVkID09 IEZBTFNFKTsKICNlbmRpZgogCkBAIC0yNjcwLDkgKzI2NzIsOSBAQCBidWZfcGFnZV90cnlfZ2V0 X2Z1bmMoCiAJdXRfYShibG9jay0+cGFnZS5idWZfZml4X2NvdW50ID4gMCk7CiAJdXRfYShidWZf YmxvY2tfZ2V0X3N0YXRlKGJsb2NrKSA9PSBCVUZfQkxPQ0tfRklMRV9QQUdFKTsKICNlbmRpZiAv KiBVTklWX0RFQlVHIHx8IFVOSVZfQlVGX0RFQlVHICovCi0jaWZkZWYgVU5JVl9ERUJVR19GSUxF X0FDQ0VTU0VTCisjaWYgZGVmaW5lZCBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMgfHwgZGVmaW5l ZCBVTklWX0RFQlVHCiAJdXRfYShibG9jay0+cGFnZS5maWxlX3BhZ2Vfd2FzX2ZyZWVkID09IEZB TFNFKTsKLSNlbmRpZiAvKiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMgKi8KKyNlbmRpZiAvKiBV TklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMgfHwgVU5JVl9ERUJVRyAqLwogCWJ1Zl9ibG9ja19kYmdf YWRkX2xldmVsKGJsb2NrLCBTWU5DX05PX09SREVSX0NIRUNLKTsKIAogCWJ1Zl9wb29sLT5zdGF0 Lm5fcGFnZV9nZXRzKys7CkBAIC0yNzAxLDkgKzI3MDMsOSBAQCBidWZfcGFnZV9pbml0X2xvdygK IAlicGFnZS0+bmV3ZXN0X21vZGlmaWNhdGlvbiA9IDA7CiAJYnBhZ2UtPm9sZGVzdF9tb2RpZmlj YXRpb24gPSAwOwogCUhBU0hfSU5WQUxJREFURShicGFnZSwgaGFzaCk7Ci0jaWZkZWYgVU5JVl9E RUJVR19GSUxFX0FDQ0VTU0VTCisjaWYgZGVmaW5lZCBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMg fHwgZGVmaW5lZCBVTklWX0RFQlVHCiAJYnBhZ2UtPmZpbGVfcGFnZV93YXNfZnJlZWQgPSBGQUxT RTsKLSNlbmRpZiAvKiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMgKi8KKyNlbmRpZiAvKiBVTklW X0RFQlVHX0ZJTEVfQUNDRVNTRVMgfHwgVU5JVl9ERUJVRyAqLwogfQogCiAvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov LyoqCkBAIC0zMDA5LDkgKzMwMTEsOSBAQCBidWZfcGFnZV9jcmVhdGUoCiAjaWZkZWYgVU5JVl9J QlVGX0NPVU5UX0RFQlVHCiAJCXV0X2EoaWJ1Zl9jb3VudF9nZXQoc3BhY2UsIG9mZnNldCkgPT0g MCk7CiAjZW5kaWYKLSNpZmRlZiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMKKyNpZiBkZWZpbmVk IFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUyB8fCBkZWZpbmVkIFVOSVZfREVCVUcKIAkJYmxvY2st PnBhZ2UuZmlsZV9wYWdlX3dhc19mcmVlZCA9IEZBTFNFOwotI2VuZGlmIC8qIFVOSVZfREVCVUdf RklMRV9BQ0NFU1NFUyAqLworI2VuZGlmIC8qIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUyB8fCBV TklWX0RFQlVHICovCiAKIAkJLyogUGFnZSBjYW4gYmUgZm91bmQgaW4gYnVmX3Bvb2wgKi8KIAkJ YnVmX3Bvb2xfbXV0ZXhfZXhpdCgpOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Ri X3BsdWdpbi9kaWN0L2RpY3QwZGljdC5jJwotLS0gYS9zdG9yYWdlL2lubm9kYl9wbHVnaW4vZGlj dC9kaWN0MGRpY3QuYwkyMDExLTAxLTE0IDE3OjAyOjI4ICswMDAwCisrKyBiL3N0b3JhZ2UvaW5u b2RiX3BsdWdpbi9kaWN0L2RpY3QwZGljdC5jCTIwMTEtMDItMDggMTE6NTI6MzMgKzAwMDAKQEAg LTkzMiw3ICs5MzIsNyBAQCBkaWN0X3RhYmxlX3JlbmFtZV9pbl9jYWNoZSgKIAlkaWN0X2ZvcmVp Z25fdCoJZm9yZWlnbjsKIAlkaWN0X2luZGV4X3QqCWluZGV4OwogCXVsaW50CQlmb2xkOwotCWNo YXIJCW9sZF9uYW1lW01BWF9UQUJMRV9OQU1FX0xFTiArIDFdOworCWNoYXIJCW9sZF9uYW1lW01B WF9GVUxMX05BTUVfTEVOICsgMV07CiAKIAl1dF9hZCh0YWJsZSk7CiAJdXRfYWQobXV0ZXhfb3du KCYoZGljdF9zeXMtPm11dGV4KSkpOwpAQCAtOTQ0LDcgKzk0NCw3IEBAIGRpY3RfdGFibGVfcmVu YW1lX2luX2NhY2hlKAogCQl1dF9wcmludF90aW1lc3RhbXAoc3RkZXJyKTsKIAkJZnByaW50Zihz dGRlcnIsICJJbm5vREI6IHRvbyBsb25nIHRhYmxlIG5hbWU6ICclcycsICIKIAkJCSJtYXggbGVu Z3RoIGlzICVkXG4iLCB0YWJsZS0+bmFtZSwKLQkJCU1BWF9UQUJMRV9OQU1FX0xFTik7CisJCQlN QVhfRlVMTF9OQU1FX0xFTik7CiAJCXV0X2Vycm9yOwogCX0KIApAQCAtOTk0LDExICs5OTQsMTEg QEAgZGljdF90YWJsZV9yZW5hbWVfaW5fY2FjaGUoCiAJCSAgICB1dF9mb2xkX3N0cmluZyhvbGRf bmFtZSksIHRhYmxlKTsKIAogCWlmIChzdHJsZW4obmV3X25hbWUpID4gc3RybGVuKHRhYmxlLT5u YW1lKSkgewotCQkvKiBXZSBhbGxvY2F0ZSBNQVhfVEFCTEVfTkFNRV9MRU4rMSBieXRlcyBoZXJl IHRvIGF2b2lkCisJCS8qIFdlIGFsbG9jYXRlIE1BWF9GVUxMX05BTUVfTEVOICsgMSBieXRlcyBo ZXJlIHRvIGF2b2lkCiAJCW1lbW9yeSBmcmFnbWVudGF0aW9uLCB3ZSBhc3N1bWUgYSByZXBlYXRl ZCBjYWxscyBvZgogCQl1dF9yZWFsbG9jKCkgd2l0aCB0aGUgc2FtZSBzaXplIGRvIG5vdCBjYXVz ZSBmcmFnbWVudGF0aW9uICovCi0JCXV0X2Eoc3RybGVuKG5ld19uYW1lKSA8PSBNQVhfVEFCTEVf TkFNRV9MRU4pOwotCQl0YWJsZS0+bmFtZSA9IHV0X3JlYWxsb2ModGFibGUtPm5hbWUsIE1BWF9U QUJMRV9OQU1FX0xFTiArIDEpOworCQl1dF9hKHN0cmxlbihuZXdfbmFtZSkgPD0gTUFYX0ZVTExf TkFNRV9MRU4pOworCQl0YWJsZS0+bmFtZSA9IHV0X3JlYWxsb2ModGFibGUtPm5hbWUsIE1BWF9G VUxMX05BTUVfTEVOICsgMSk7CiAJfQogCW1lbWNweSh0YWJsZS0+bmFtZSwgbmV3X25hbWUsIHN0 cmxlbihuZXdfbmFtZSkgKyAxKTsKIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Ri X3BsdWdpbi9mc3AvZnNwMGZzcC5jJwotLS0gYS9zdG9yYWdlL2lubm9kYl9wbHVnaW4vZnNwL2Zz cDBmc3AuYwkyMDExLTAxLTA2IDA3OjEyOjUzICswMDAwCisrKyBiL3N0b3JhZ2UvaW5ub2RiX3Bs dWdpbi9mc3AvZnNwMGZzcC5jCTIwMTEtMDItMDIgMTI6MDU6MTIgKzAwMDAKQEAgLTM0NDQsOSAr MzQ0NCw5IEBAIGZzZWdfZnJlZV9wYWdlKAogCiAJZnNlZ19mcmVlX3BhZ2VfbG93KHNlZ19pbm9k ZSwgc3BhY2UsIHppcF9zaXplLCBwYWdlLCBtdHIpOwogCi0jaWZkZWYgVU5JVl9ERUJVR19GSUxF X0FDQ0VTU0VTCisjaWYgZGVmaW5lZCBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMgfHwgZGVmaW5l ZCBVTklWX0RFQlVHCiAJYnVmX3BhZ2Vfc2V0X2ZpbGVfcGFnZV93YXNfZnJlZWQoc3BhY2UsIHBh Z2UpOwotI2VuZGlmCisjZW5kaWYgLyogVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VTIHx8IFVOSVZf REVCVUcgKi8KIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCkBAIC0zNTEzLDEzICszNTEzLDEzIEBA IGZzZWdfZnJlZV9leHRlbnQoCiAKIAlmc3BfZnJlZV9leHRlbnQoc3BhY2UsIHppcF9zaXplLCBw YWdlLCBtdHIpOwogCi0jaWZkZWYgVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VTCisjaWYgZGVmaW5l ZCBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMgfHwgZGVmaW5lZCBVTklWX0RFQlVHCiAJZm9yIChp ID0gMDsgaSA8IEZTUF9FWFRFTlRfU0laRTsgaSsrKSB7CiAKIAkJYnVmX3BhZ2Vfc2V0X2ZpbGVf cGFnZV93YXNfZnJlZWQoc3BhY2UsCiAJCQkJCQkgZmlyc3RfcGFnZV9pbl9leHRlbnQgKyBpKTsK IAl9Ci0jZW5kaWYKKyNlbmRpZiAvKiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMgfHwgVU5JVl9E RUJVRyAqLwogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKCj09PSBtb2RpZmllZCBmaWxlICdzdG9y YWdlL2lubm9kYl9wbHVnaW4vaGFuZGxlci9oYV9pbm5vZGIuY2MnCi0tLSBhL3N0b3JhZ2UvaW5u b2RiX3BsdWdpbi9oYW5kbGVyL2hhX2lubm9kYi5jYwkyMDExLTAxLTE0IDE3OjAyOjI4ICswMDAw CisrKyBiL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9oYW5kbGVyL2hhX2lubm9kYi5jYwkyMDExLTAy LTA4IDExOjUyOjMzICswMDAwCkBAIC02MDI4LDYgKzYwMjgsMTYgQEAgY3JlYXRlX3RhYmxlX2Rl ZigKIAkJREJVR19SRVRVUk4oSEFfRVJSX0dFTkVSSUMpOwogCX0KIAorCS8qIE15U1FMIGRvZXMg dGhlIG5hbWUgbGVuZ3RoIGNoZWNrLiBCdXQgd2UgZG8gYWRkaXRpb25hbCBjaGVjaworCW9uIHRo ZSBuYW1lIGxlbmd0aCBoZXJlICovCisJaWYgKHN0cmxlbih0YWJsZV9uYW1lKSA+IE1BWF9GVUxM X05BTUVfTEVOKSB7CisJCXB1c2hfd2FybmluZ19wcmludGYoCisJCQkoVEhEKikgdHJ4LT5teXNx bF90aGQsIE1ZU1FMX0VSUk9SOjpXQVJOX0xFVkVMX1dBUk4sCisJCQlFUl9UQUJMRV9OQU1FLAor CQkJIklubm9EQjogVGFibGUgTmFtZSBvciBEYXRhYmFzZSBOYW1lIGlzIHRvbyBsb25nIik7CisJ CURCVUdfUkVUVVJOKEVSX1RBQkxFX05BTUUpOworCX0KKwogCW5fY29scyA9IGZvcm0tPnMtPmZp ZWxkczsKIAogCS8qIFdlIHBhc3MgMCBhcyB0aGUgc3BhY2UgaWQsIGFuZCBkZXRlcm1pbmUgYXQg YSBsb3dlciBsZXZlbCB0aGUgc3BhY2UKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9k Yl9wbHVnaW4vaGFuZGxlci9pX3MuY2MnCi0tLSBhL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9oYW5k bGVyL2lfcy5jYwkyMDExLTAxLTA3IDAzOjM2OjIwICswMDAwCisrKyBiL3N0b3JhZ2UvaW5ub2Ri X3BsdWdpbi9oYW5kbGVyL2lfcy5jYwkyMDExLTAxLTEwIDEzOjA4OjMzICswMDAwCkBAIC01ODcs MTYgKzU4Nyw3IEBAIGZpbGxfaW5ub2RiX2xvY2tzX2Zyb21fY2FjaGUoCiAJZm9yIChpID0gMDsg aSA8IHJvd3NfbnVtOyBpKyspIHsKIAogCQlpX3NfbG9ja3Nfcm93X3QqCXJvdzsKLQotCQkvKiBu b3RlIHRoYXQgdGhlIGRlY29kZWQgZGF0YWJhc2Ugb3IgdGFibGUgbmFtZSBpcwotCQluZXZlciBl eHBlY3RlZCB0byBiZSBsb25nZXIgdGhhbiBOQU1FX0xFTjsKLQkJTkFNRV9MRU4gZm9yIGRhdGFi YXNlIG5hbWUKLQkJMiBmb3Igc3Vycm91bmRpbmcgcXVvdGVzIGFyb3VuZCBkYXRhYmFzZSBuYW1l Ci0JCU5BTUVfTEVOIGZvciB0YWJsZSBuYW1lCi0JCTIgZm9yIHN1cnJvdW5kaW5nIHF1b3RlcyBh cm91bmQgdGFibGUgbmFtZQotCQkxIGZvciB0aGUgc2VwYXJhdGluZyBkb3QgKC4pCi0JCTkgZm9y IHRoZSAjbXlzcWw1MCMgcHJlZml4ICovCi0JCWNoYXIJCQlidWZbMiAqIE5BTUVfTEVOICsgMTRd OworCQljaGFyCQkJYnVmW01BWF9GVUxMX05BTUVfTEVOICsgMV07CiAJCWNvbnN0IGNoYXIqCQli dWZlbmQ7CiAKIAkJY2hhcgkJCWxvY2tfdHJ4X2lkW1RSWF9JRF9NQVhfTEVOICsgMV07Cgo9PT0g bW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2lidWYvaWJ1ZjBpYnVmLmMnCi0t LSBhL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pYnVmL2lidWYwaWJ1Zi5jCTIwMTAtMTAtMTkgMDY6 MDQ6MTUgKzAwMDAKKysrIGIvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2lidWYvaWJ1ZjBpYnVmLmMJ MjAxMS0wMi0wMiAxMjowNToxMiArMDAwMApAQCAtMTg3OCw5ICsxODc4LDkgQEAgaWJ1Zl9yZW1v dmVfZnJlZV9wYWdlKHZvaWQpCiAJZnNlZ19mcmVlX3BhZ2UoaGVhZGVyX3BhZ2UgKyBJQlVGX0hF QURFUiArIElCVUZfVFJFRV9TRUdfSEVBREVSLAogCQkgICAgICAgSUJVRl9TUEFDRV9JRCwgcGFn ZV9ubywgJm10cik7CiAKLSNpZmRlZiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMKKyNpZiBkZWZp bmVkIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUyB8fCBkZWZpbmVkIFVOSVZfREVCVUcKIAlidWZf cGFnZV9yZXNldF9maWxlX3BhZ2Vfd2FzX2ZyZWVkKElCVUZfU1BBQ0VfSUQsIHBhZ2Vfbm8pOwot I2VuZGlmCisjZW5kaWYgLyogVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VTIHx8IFVOSVZfREVCVUcg Ki8KIAogCWlidWZfZW50ZXIoKTsKIApAQCAtMTkyMiw5ICsxOTIyLDkgQEAgaWJ1Zl9yZW1vdmVf ZnJlZV9wYWdlKHZvaWQpCiAJaWJ1Zl9iaXRtYXBfcGFnZV9zZXRfYml0cygKIAkJYml0bWFwX3Bh Z2UsIHBhZ2Vfbm8sIHppcF9zaXplLCBJQlVGX0JJVE1BUF9JQlVGLCBGQUxTRSwgJm10cik7CiAK LSNpZmRlZiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMKKyNpZiBkZWZpbmVkIFVOSVZfREVCVUdf RklMRV9BQ0NFU1NFUyB8fCBkZWZpbmVkIFVOSVZfREVCVUcKIAlidWZfcGFnZV9zZXRfZmlsZV9w YWdlX3dhc19mcmVlZChJQlVGX1NQQUNFX0lELCBwYWdlX25vKTsKLSNlbmRpZgorI2VuZGlmIC8q IFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUyB8fCBVTklWX0RFQlVHICovCiAJbXRyX2NvbW1pdCgm bXRyKTsKIAogCW11dGV4X2V4aXQoJmlidWZfbXV0ZXgpOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0 b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL2J0cjBjdXIuaCcKLS0tIGEvc3RvcmFnZS9pbm5v ZGJfcGx1Z2luL2luY2x1ZGUvYnRyMGN1ci5oCTIwMTEtMDEtMTQgMTc6MDI6MjggKzAwMDAKKysr IGIvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvYnRyMGN1ci5oCTIwMTEtMDItMDIgMTM6 NTE6MDggKzAwMDAKQEAgLTUxMiw4ICs1MTIsOCBAQCBmaWxlIHNlZ21lbnQgb2YgdGhlIGluZGV4 IHRyZWUuCiBAcmV0dXJuCURCX1NVQ0NFU1Mgb3IgREJfT1VUX09GX0ZJTEVfU1BBQ0UgKi8KIFVO SVZfSU5URVJOCiB1bGludAotYnRyX3N0b3JlX2JpZ19yZWNfZXh0ZXJuX2ZpZWxkcygKLS8qPT09 PT09PT09PT09PT09PT09PT09PT09PT09PSovCitidHJfc3RvcmVfYmlnX3JlY19leHRlcm5fZmll bGRzX2Z1bmMoCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCiAJZGljdF9p bmRleF90KglpbmRleCwJCS8qITwgaW46IGluZGV4IG9mIHJlYzsgdGhlIGluZGV4IHRyZWUKIAkJ CQkJTVVTVCBiZSBYLWxhdGNoZWQgKi8KIAlidWZfYmxvY2tfdCoJcmVjX2Jsb2NrLAkvKiE8IGlu L291dDogYmxvY2sgY29udGFpbmluZyByZWMgKi8KQEAgLTUyMiwxMCArNTIyLDQyIEBAIGJ0cl9z dG9yZV9iaWdfcmVjX2V4dGVybl9maWVsZHMoCiAJCQkJCXRoZSAiZXh0ZXJuYWwgc3RvcmFnZSIg ZmxhZ3MgaW4gb2Zmc2V0cwogCQkJCQl3aWxsIG5vdCBjb3JyZXNwb25kIHRvIHJlYyB3aGVuCiAJ CQkJCXRoaXMgZnVuY3Rpb24gcmV0dXJucyAqLwotCWJpZ19yZWNfdCoJYmlnX3JlY192ZWMsCS8q ITwgaW46IHZlY3RvciBjb250YWluaW5nIGZpZWxkcworI2lmZGVmIFVOSVZfREVCVUcKKwltdHJf dCoJCWxvY2FsX210ciwJLyohPCBpbjogbXRyIGNvbnRhaW5pbmcgdGhlCisJCQkJCWxhdGNoIHRv IHJlYyBhbmQgdG8gdGhlIHRyZWUgKi8KKyNlbmRpZiAvKiBVTklWX0RFQlVHICovCisjaWYgZGVm aW5lZCBVTklWX0RFQlVHIHx8IGRlZmluZWQgVU5JVl9CTE9CX0xJR0hUX0RFQlVHCisJaWJvb2wJ CXVwZGF0ZV9pbl9wbGFjZSwvKiEgaW46IFRSVUUgaWYgdGhlIHJlY29yZCBpcyB1cGRhdGVkCisJ CQkJCWluIHBsYWNlIChub3QgZGVsZXRlK2luc2VydCkgKi8KKyNlbmRpZiAvKiBVTklWX0RFQlVH IHx8IFVOSVZfQkxPQl9MSUdIVF9ERUJVRyAqLworCWNvbnN0IGJpZ19yZWNfdCpiaWdfcmVjX3Zl YykJLyohPCBpbjogdmVjdG9yIGNvbnRhaW5pbmcgZmllbGRzCiAJCQkJCXRvIGJlIHN0b3JlZCBl eHRlcm5hbGx5ICovCi0JbXRyX3QqCQlsb2NhbF9tdHIpOwkvKiE8IGluOiBtdHIgY29udGFpbmlu ZyB0aGUgbGF0Y2ggdG8KLQkJCQkJcmVjIGFuZCB0byB0aGUgdHJlZSAqLworCV9fYXR0cmlidXRl X18oKG5vbm51bGwpKTsKKworLyoqIFN0b3JlcyB0aGUgZmllbGRzIGluIGJpZ19yZWNfdmVjIHRv IHRoZSB0YWJsZXNwYWNlIGFuZCBwdXRzIHBvaW50ZXJzIHRvCit0aGVtIGluIHJlYy4gIFRoZSBl eHRlcm4gZmxhZ3MgaW4gcmVjIHdpbGwgaGF2ZSB0byBiZSBzZXQgYmVmb3JlaGFuZC4KK1RoZSBm aWVsZHMgYXJlIHN0b3JlZCBvbiBwYWdlcyBhbGxvY2F0ZWQgZnJvbSBsZWFmIG5vZGUKK2ZpbGUg c2VnbWVudCBvZiB0aGUgaW5kZXggdHJlZS4KK0BwYXJhbSBpbmRleAlpbjogY2x1c3RlcmVkIGlu ZGV4OyBNVVNUIGJlIFgtbGF0Y2hlZCBieSBtdHIKK0BwYXJhbSBiCWluL291dDogYmxvY2sgY29u dGFpbmluZyByZWM7IE1VU1QgYmUgWC1sYXRjaGVkIGJ5IG10cgorQHBhcmFtIHJlYwlpbi9vdXQ6 IGNsdXN0ZXJlZCBpbmRleCByZWNvcmQKK0BwYXJhbSBvZmZzZXRzCWluOiByZWNfZ2V0X29mZnNl dHMocmVjLCBpbmRleCk7CisJCXRoZSAiZXh0ZXJuYWwgc3RvcmFnZSIgZmxhZ3MgaW4gb2Zmc2V0 cyB3aWxsIG5vdCBiZSBhZGp1c3RlZAorQHBhcmFtIG10cglpbjogbWluaS10cmFuc2FjdGlvbiB0 aGF0IGhvbGRzIHgtbGF0Y2ggb24gaW5kZXggYW5kIGIKK0BwYXJhbSB1cGQJaW46IFRSVUUgaWYg dGhlIHJlY29yZCBpcyB1cGRhdGVkIGluIHBsYWNlIChub3QgZGVsZXRlK2luc2VydCkKK0BwYXJh bSBiaWcJaW46IHZlY3RvciBjb250YWluaW5nIGZpZWxkcyB0byBiZSBzdG9yZWQgZXh0ZXJuYWxs eQorQHJldHVybglEQl9TVUNDRVNTIG9yIERCX09VVF9PRl9GSUxFX1NQQUNFICovCisjaWZkZWYg VU5JVl9ERUJVRworIyBkZWZpbmUgYnRyX3N0b3JlX2JpZ19yZWNfZXh0ZXJuX2ZpZWxkcyhpbmRl eCxiLHJlYyxvZmZzZXRzLG10cix1cGQsYmlnKSBcCisJYnRyX3N0b3JlX2JpZ19yZWNfZXh0ZXJu X2ZpZWxkc19mdW5jKGluZGV4LGIscmVjLG9mZnNldHMsbXRyLHVwZCxiaWcpCisjZWxpZiBkZWZp bmVkIFVOSVZfQkxPQl9MSUdIVF9ERUJVRworIyBkZWZpbmUgYnRyX3N0b3JlX2JpZ19yZWNfZXh0 ZXJuX2ZpZWxkcyhpbmRleCxiLHJlYyxvZmZzZXRzLG10cix1cGQsYmlnKSBcCisJYnRyX3N0b3Jl X2JpZ19yZWNfZXh0ZXJuX2ZpZWxkc19mdW5jKGluZGV4LGIscmVjLG9mZnNldHMsdXBkLGJpZykK KyNlbHNlCisjIGRlZmluZSBidHJfc3RvcmVfYmlnX3JlY19leHRlcm5fZmllbGRzKGluZGV4LGIs cmVjLG9mZnNldHMsbXRyLHVwZCxiaWcpIFwKKwlidHJfc3RvcmVfYmlnX3JlY19leHRlcm5fZmll bGRzX2Z1bmMoaW5kZXgsYixyZWMsb2Zmc2V0cyxiaWcpCisjZW5kaWYKKwogLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov LyoqCiBGcmVlcyB0aGUgc3BhY2UgaW4gYW4gZXh0ZXJuYWxseSBzdG9yZWQgZmllbGQgdG8gdGhl IGZpbGUgc3BhY2UKIG1hbmFnZW1lbnQgaWYgdGhlIGZpZWxkIGluIGRhdGEgaXMgb3duZWQgdGhl IGV4dGVybmFsbHkgc3RvcmVkIGZpZWxkLAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5u b2RiX3BsdWdpbi9pbmNsdWRlL2J1ZjBidWYuaCcKLS0tIGEvc3RvcmFnZS9pbm5vZGJfcGx1Z2lu L2luY2x1ZGUvYnVmMGJ1Zi5oCTIwMTEtMDEtMjUgMDc6NTY6MTggKzAwMDAKKysrIGIvc3RvcmFn ZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvYnVmMGJ1Zi5oCTIwMTEtMDItMDIgMTI6MDU6MTIgKzAw MDAKQEAgLTM2OCw3ICszNjgsNyBAQCBidWZfcmVzZXRfY2hlY2tfaW5kZXhfcGFnZV9hdF9mbHVz aCgKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwogCXVsaW50CXNwYWNlLAkv KiE8IGluOiBzcGFjZSBpZCAqLwogCXVsaW50CW9mZnNldCk7LyohPCBpbjogcGFnZSBudW1iZXIg Ki8KLSNpZmRlZiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMKKyNpZiBkZWZpbmVkIFVOSVZfREVC VUdfRklMRV9BQ0NFU1NFUyB8fCBkZWZpbmVkIFVOSVZfREVCVUcKIC8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioK IFNldHMgZmlsZV9wYWdlX3dhc19mcmVlZCBUUlVFIGlmIHRoZSBwYWdlIGlzIGZvdW5kIGluIHRo ZSBidWZmZXIgcG9vbC4KIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCB3aGVuIHdlIGZy ZWUgYSBmaWxlIHBhZ2UgYW5kIHdhbnQgdGhlCkBAIC0zOTMsNyArMzkzLDcgQEAgYnVmX3BhZ2Vf cmVzZXRfZmlsZV9wYWdlX3dhc19mcmVlZCgKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PSovCiAJdWxpbnQJc3BhY2UsCS8qITwgaW46IHNwYWNlIGlkICovCiAJdWxpbnQJb2Zmc2V0 KTsJLyohPCBpbjogcGFnZSBudW1iZXIgKi8KLSNlbmRpZiAvKiBVTklWX0RFQlVHX0ZJTEVfQUND RVNTRVMgKi8KKyNlbmRpZiAvKiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMgfHwgVU5JVl9ERUJV RyAqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLy8qKgogUmVhZHMgdGhlIGZyZWVkX3BhZ2VfY2xvY2sgb2YgYSBi dWZmZXIgYmxvY2suCiBAcmV0dXJuCWZyZWVkX3BhZ2VfY2xvY2sgKi8KQEAgLTExMzUsMTEgKzEx MzUsMTEgQEAgc3RydWN0IGJ1Zl9wYWdlX3N0cnVjdHsKIAkJCQkJMCBpZiB0aGUgYmxvY2sgd2Fz IG5ldmVyIGFjY2Vzc2VkCiAJCQkJCWluIHRoZSBidWZmZXIgcG9vbCAqLwogCS8qIEB9ICovCi0j IGlmZGVmIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUworIyBpZiBkZWZpbmVkIFVOSVZfREVCVUdf RklMRV9BQ0NFU1NFUyB8fCBkZWZpbmVkIFVOSVZfREVCVUcKIAlpYm9vbAkJZmlsZV9wYWdlX3dh c19mcmVlZDsKIAkJCQkJLyohPCB0aGlzIGlzIHNldCB0byBUUlVFIHdoZW4gZnNwCiAJCQkJCWZy ZWVzIGEgcGFnZSBpbiBidWZmZXIgcG9vbCAqLwotIyBlbmRpZiAvKiBVTklWX0RFQlVHX0ZJTEVf QUNDRVNTRVMgKi8KKyMgZW5kaWYgLyogVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VTIHx8IFVOSVZf REVCVUcgKi8KICNlbmRpZiAvKiAhVU5JVl9IT1RCQUNLVVAgKi8KIH07CiAKCj09PSBtb2RpZmll ZCBmaWxlICdzdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS9yb3cwdXBkLmgnCi0tLSBhL3N0 b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL3JvdzB1cGQuaAkyMDEwLTEyLTIxIDExOjI3OjIy ICswMDAwCisrKyBiL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL3JvdzB1cGQuaAkyMDEx LTAxLTMxIDA3OjU2OjUxICswMDAwCkBAIC0yODAsMTkgKzI4MCwyOSBAQCBOT1RFOiB3ZSBjb21w YXJlIHRoZSBmaWVsZHMgYXMgYmluYXJ5IHN0CiBAcmV0dXJuIFRSVUUgaWYgdXBkYXRlIHZlY3Rv ciBjaGFuZ2VzIGFuIG9yZGVyaW5nIGZpZWxkIGluIHRoZSBpbmRleCByZWNvcmQgKi8KIFVOSVZf SU5URVJOCiBpYm9vbAotcm93X3VwZF9jaGFuZ2VzX29yZF9maWVsZF9iaW5hcnkoCi0vKj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ki8KK3Jvd191cGRfY2hhbmdlc19vcmRfZmllbGRfYmlu YXJ5X2Z1bmMoCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworCWRpY3Rf aW5kZXhfdCoJaW5kZXgsCS8qITwgaW46IGluZGV4IG9mIHRoZSByZWNvcmQgKi8KKwljb25zdCB1 cGRfdCoJdXBkYXRlLAkvKiE8IGluOiB1cGRhdGUgdmVjdG9yIGZvciB0aGUgcm93OyBOT1RFOiB0 aGUKKwkJCQlmaWVsZCBudW1iZXJzIGluIHRoaXMgTVVTVCBiZSBjbHVzdGVyZWQgaW5kZXgKKwkJ CQlwb3NpdGlvbnMhICovCisjaWZkZWYgVU5JVl9ERUJVRworCWNvbnN0IHF1ZV90aHJfdCp0aHIs CS8qITwgaW46IHF1ZXJ5IHRocmVhZCAqLworI2VuZGlmIC8qIFVOSVZfREVCVUcgKi8KIAljb25z dCBkdHVwbGVfdCoJcm93LAkvKiE8IGluOiBvbGQgdmFsdWUgb2Ygcm93LCBvciBOVUxMIGlmIHRo ZQogCQkJCXJvdyBhbmQgdGhlIGRhdGEgdmFsdWVzIGluIHVwZGF0ZSBhcmUgbm90CiAJCQkJa25v d24gd2hlbiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCwgZS5nLiwgYXQKIAkJCQljb21waWxlIHRp bWUgKi8KLQljb25zdCByb3dfZXh0X3QqZXh0LAkvKiE8IE5VTEwsIG9yIHByZWZpeGVzIG9mIHRo ZSBleHRlcm5hbGx5CisJY29uc3Qgcm93X2V4dF90KmV4dCkJLyohPCBOVUxMLCBvciBwcmVmaXhl cyBvZiB0aGUgZXh0ZXJuYWxseQogCQkJCXN0b3JlZCBjb2x1bW5zIGluIHRoZSBvbGQgcm93ICov Ci0JZGljdF9pbmRleF90KglpbmRleCwJLyohPCBpbjogaW5kZXggb2YgdGhlIHJlY29yZCAqLwot CWNvbnN0IHVwZF90Kgl1cGRhdGUpCS8qITwgaW46IHVwZGF0ZSB2ZWN0b3IgZm9yIHRoZSByb3c7 IE5PVEU6IHRoZQotCQkJCWZpZWxkIG51bWJlcnMgaW4gdGhpcyBNVVNUIGJlIGNsdXN0ZXJlZCBp bmRleAotCQkJCXBvc2l0aW9ucyEgKi8KLQlfX2F0dHJpYnV0ZV9fKChub25udWxsKDMsNCksIHdh cm5fdW51c2VkX3Jlc3VsdCkpOworCV9fYXR0cmlidXRlX18oKG5vbm51bGwoMSwyKSwgd2Fybl91 bnVzZWRfcmVzdWx0KSk7CisjaWZkZWYgVU5JVl9ERUJVRworIyBkZWZpbmUgcm93X3VwZF9jaGFu Z2VzX29yZF9maWVsZF9iaW5hcnkoaW5kZXgsdXBkYXRlLHRocixyb3csZXh0KQlcCisJcm93X3Vw ZF9jaGFuZ2VzX29yZF9maWVsZF9iaW5hcnlfZnVuYyhpbmRleCx1cGRhdGUsdGhyLHJvdyxleHQp CisjZWxzZSAvKiBVTklWX0RFQlVHICovCisjIGRlZmluZSByb3dfdXBkX2NoYW5nZXNfb3JkX2Zp ZWxkX2JpbmFyeShpbmRleCx1cGRhdGUsdGhyLHJvdyxleHQpCVwKKwlyb3dfdXBkX2NoYW5nZXNf b3JkX2ZpZWxkX2JpbmFyeV9mdW5jKGluZGV4LHVwZGF0ZSxyb3csZXh0KQorI2VuZGlmIC8qIFVO SVZfREVCVUcgKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8vKioKIENoZWNrcyBpZiBhbiB1cGRhdGUgdmVjdG9yIGNoYW5nZXMg YW4gb3JkZXJpbmcgZmllbGQgb2YgYW4gaW5kZXggcmVjb3JkLgogVGhpcyBmdW5jdGlvbiBpcyBm YXN0IGlmIHRoZSB1cGRhdGUgdmVjdG9yIGlzIHNob3J0IG9yIHRoZSBudW1iZXIgb2Ygb3JkZXJp bmcKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS91bml2 LmknCi0tLSBhL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL3VuaXYuaQkyMDExLTAxLTEw IDEzOjM0OjQ1ICswMDAwCisrKyBiL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL3VuaXYu aQkyMDExLTAyLTA4IDE3OjI2OjQyICswMDAwCkBAIC0xNzcsMTQgKzE3NywxNSBAQCBjb21tYW5k LiBOb3QgdGVzdGVkIG9uIFdpbmRvd3MuICovCiAJCQkJCQlkZWJ1Z2dpbmcgd2l0aG91dCBVTklW X0RFQlVHICovCiAjZGVmaW5lIFVOSVZfQlVGX0RFQlVHCQkJCS8qIEVuYWJsZSBidWZmZXIgcG9v bAogCQkJCQkJZGVidWdnaW5nIHdpdGhvdXQgVU5JVl9ERUJVRyAqLworI2RlZmluZSBVTklWX0JM T0JfTElHSFRfREVCVUcJCQkvKiBFbmFibGUgb2ZmLXBhZ2UgY29sdW1uCisJCQkJCQlkZWJ1Z2dp bmcgd2l0aG91dCBVTklWX0RFQlVHICovCiAjZGVmaW5lIFVOSVZfREVCVUcJCQkJLyogRW5hYmxl IHV0X2FkKCkgYXNzZXJ0aW9ucwogCQkJCQkJYW5kIGRpc2FibGUgVU5JVl9JTkxJTkUgKi8KICNk ZWZpbmUgVU5JVl9ERUJVR19MT0NLX1ZBTElEQVRFCQkvKiBFbmFibGUKIAkJCQkJCXV0X2FkKGxv Y2tfcmVjX3ZhbGlkYXRlX3BhZ2UoKSkKIAkJCQkJCWFzc2VydGlvbnMuICovCi0jZGVmaW5lIFVO SVZfREVCVUdfRklMRV9BQ0NFU1NFUwkJLyogRGVidWcgLmliZCBmaWxlIGFjY2VzcwotCQkJCQkJ KGZpZWxkIGZpbGVfcGFnZV93YXNfZnJlZWQKLQkJCQkJCWluIGJ1Zl9wYWdlX3QpICovCisjZGVm aW5lIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUwkJLyogRW5hYmxlIGZyZWVkIGJsb2NrIGFjY2Vz cworCQkJCQkJZGVidWdnaW5nIHdpdGhvdXQgVU5JVl9ERUJVRyAqLwogI2RlZmluZSBVTklWX0xS VV9ERUJVRwkJCQkvKiBkZWJ1ZyB0aGUgYnVmZmVyIHBvb2wgTFJVICovCiAjZGVmaW5lIFVOSVZf SEFTSF9ERUJVRwkJCQkvKiBkZWJ1ZyBIQVNIXyBtYWNyb3MgKi8KICNkZWZpbmUgVU5JVl9MSVNU X0RFQlVHCQkJCS8qIGRlYnVnIFVUX0xJU1RfIG1hY3JvcyAqLwpAQCAtMjk2LDYgKzI5NywxOCBA QCBudW1iZXIgZG9lcyBub3QgaW5jbHVkZSBhIHRlcm1pbmF0aW5nICdcCiBsb25nZXIgbmFtZXMg aW50ZXJuYWxseSAqLwogI2RlZmluZSBNQVhfVEFCTEVfTkFNRV9MRU4JMTkyCiAKKy8qIFRoZSBt YXhpbXVtIGxlbmd0aCBvZiBhIGRhdGFiYXNlIG5hbWUuIExpa2UgTUFYX1RBQkxFX05BTUVfTEVO IHRoaXMgaXMKK3RoZSBNeVNRTCdzIE5BTUVfTEVOLCBzZWUgY2hlY2tfYW5kX2NvbnZlcnRfZGJf bmFtZSgpLiAqLworI2RlZmluZSBNQVhfREFUQUJBU0VfTkFNRV9MRU4JTUFYX1RBQkxFX05BTUVf TEVOCisKKy8qIE1BWF9GVUxMX05BTUVfTEVOIGRlZmluZXMgdGhlIGZ1bGwgbmFtZSBwYXRoIGlu Y2x1ZGluZyB0aGUKK2RhdGFiYXNlIG5hbWUgYW5kIHRhYmxlIG5hbWUuIEluIGFkZGl0aW9uLCAx NCBieXRlcyBpcyBhZGRlZCBmb3I6CisJMiBmb3Igc3Vycm91bmRpbmcgcXVvdGVzIGFyb3VuZCB0 YWJsZSBuYW1lCisJMSBmb3IgdGhlIHNlcGFyYXRpbmcgZG90ICguKQorCTkgZm9yIHRoZSAjbXlz cWw1MCMgcHJlZml4ICovCisjZGVmaW5lIE1BWF9GVUxMX05BTUVfTEVOCQkJCVwKKwkoTUFYX1RB QkxFX05BTUVfTEVOICsgTUFYX0RBVEFCQVNFX05BTUVfTEVOICsgMTQpCisKIC8qCiAJCQlVTklW RVJTQUwgVFlQRSBERUZJTklUSU9OUwogCQkJPT09PT09PT09PT09PT09PT09PT09PT09PT0KCj09 PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS91dDB2ZWMuaCcK LS0tIGEvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvdXQwdmVjLmgJMjAwOS0wNS0yNSAx MjowOToyNCArMDAwMAorKysgYi9zdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS91dDB2ZWMu aAkyMDEwLTExLTMwIDA5OjExOjI2ICswMDAwCkBAIC05NCw2ICs5NCwyNSBAQCBpYl92ZWN0b3Jf Z2V0KAogCXVsaW50CQluKTsJLyohPCBpbjogZWxlbWVudCBpbmRleCB0byBnZXQgKi8KIAogLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovLyoqCitHZXQgbGFzdCBlbGVtZW50LiBUaGUgdmVjdG9yIG11c3Qgbm90IGJlIGVtcHR5 LgorQHJldHVybglsYXN0IGVsZW1lbnQgKi8KK1VOSVZfSU5MSU5FCit2b2lkKgoraWJfdmVjdG9y X2dldF9sYXN0KAorLyo9PT09PT09PT09PT09PT0qLworCWliX3ZlY3Rvcl90Kgl2ZWMpOwkvKiE8 IGluOiB2ZWN0b3IgKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCitTZXQgdGhlIG4ndGggZWxlbWVudC4gKi8K K1VOSVZfSU5MSU5FCit2b2lkCitpYl92ZWN0b3Jfc2V0KAorLyo9PT09PT09PT09Ki8KKwlpYl92 ZWN0b3JfdCoJdmVjLAkvKiE8IGluL291dDogdmVjdG9yICovCisJdWxpbnQJCW4sCS8qITwgaW46 IGVsZW1lbnQgaW5kZXggdG8gc2V0ICovCisJdm9pZCoJCWVsZW0pOwkvKiE8IGluOiBkYXRhIGVs ZW1lbnQgKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovLyoqCiBSZW1vdmUgdGhlIGxhc3QgZWxlbWVudCBmcm9tIHRo ZSB2ZWN0b3IuICovCiBVTklWX0lOTElORQogdm9pZCoKCj09PSBtb2RpZmllZCBmaWxlICdzdG9y YWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS91dDB2ZWMuaWMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Ri X3BsdWdpbi9pbmNsdWRlL3V0MHZlYy5pYwkyMDA5LTA1LTI1IDA5OjUyOjI5ICswMDAwCisrKyBi L3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL3V0MHZlYy5pYwkyMDEwLTExLTMwIDA5OjEx OjI2ICswMDAwCkBAIC01MSw2ICs1MSwzNSBAQCBpYl92ZWN0b3JfZ2V0KAogfQogCiAvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8vKioKK0dldCBsYXN0IGVsZW1lbnQuIFRoZSB2ZWN0b3IgbXVzdCBub3QgYmUgZW1wdHkuCitA cmV0dXJuCWxhc3QgZWxlbWVudCAqLworVU5JVl9JTkxJTkUKK3ZvaWQqCitpYl92ZWN0b3JfZ2V0 X2xhc3QoCisvKj09PT09PT09PT09PT09PSovCisJaWJfdmVjdG9yX3QqCXZlYykJLyohPCBpbjog dmVjdG9yICovCit7CisJdXRfYSh2ZWMtPnVzZWQgPiAwKTsKKworCXJldHVybih2ZWMtPmRhdGFb dmVjLT51c2VkIC0gMV0pOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK1NldCB0aGUgbid0aCBlbGVtZW50 LiAqLworVU5JVl9JTkxJTkUKK3ZvaWQKK2liX3ZlY3Rvcl9zZXQoCisvKj09PT09PT09PT0qLwor CWliX3ZlY3Rvcl90Kgl2ZWMsCS8qITwgaW4vb3V0OiB2ZWN0b3IgKi8KKwl1bGludAkJbiwJLyoh PCBpbjogZWxlbWVudCBpbmRleCB0byBzZXQgKi8KKwl2b2lkKgkJZWxlbSkJLyohPCBpbjogZGF0 YSBlbGVtZW50ICovCit7CisJdXRfYShuIDwgdmVjLT51c2VkKTsKKworCXZlYy0+ZGF0YVtuXSA9 IGVsZW07Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLy8qKgogUmVtb3ZlIHRoZSBsYXN0IGVsZW1lbnQgZnJvbSB0 aGUgdmVjdG9yLgogQHJldHVybglsYXN0IHZlY3RvciBlbGVtZW50ICovCiBVTklWX0lOTElORQoK PT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9sb2NrL2xvY2swbG9jay5j JwotLS0gYS9zdG9yYWdlL2lubm9kYl9wbHVnaW4vbG9jay9sb2NrMGxvY2suYwkyMDEwLTA2LTAy IDEwOjM3OjE0ICswMDAwCisrKyBiL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9sb2NrL2xvY2swbG9j ay5jCTIwMTAtMTEtMzAgMDk6MTE6MjYgKzAwMDAKQEAgLTM2MjUsNiArMzYyNSw4MCBAQCBsb2Nr X3RhYmxlX2NyZWF0ZSgKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCitQb3BzIGF1dG9pbmMgbG9jayByZXF1ZXN0 cyBmcm9tIHRoZSB0cmFuc2FjdGlvbidzIGF1dG9pbmNfbG9ja3MuIFdlCitoYW5kbGUgdGhlIGNh c2Ugd2hlcmUgdGhlcmUgYXJlIGdhcHMgaW4gdGhlIGFycmF5IGFuZCB0aGV5IG5lZWQgdG8KK2Jl IHBvcHBlZCBvZmYgdGhlIHN0YWNrLiAqLworVU5JVl9JTkxJTkUKK3ZvaWQKK2xvY2tfdGFibGVf cG9wX2F1dG9pbmNfbG9ja3MoCisvKj09PT09PT09PT09PT09PT09PT09PT09PT0qLworCXRyeF90 Kgl0cngpCS8qITwgaW4vb3V0OiB0cmFuc2FjdGlvbiB0aGF0IG93bnMgdGhlIEFVVE9JTkMgbG9j a3MgKi8KK3sKKwl1dF9hZChtdXRleF9vd24oJmtlcm5lbF9tdXRleCkpOworCXV0X2FkKCFpYl92 ZWN0b3JfaXNfZW1wdHkodHJ4LT5hdXRvaW5jX2xvY2tzKSk7CisKKwkvKiBTa2lwIGFueSBnYXBz LCBnYXBzIGFyZSBOVUxMIGxvY2sgZW50cmllcyBpbiB0aGUKKwl0cngtPmF1dG9pbmNfbG9ja3Mg dmVjdG9yLiAqLworCisJZG8geworCQlpYl92ZWN0b3JfcG9wKHRyeC0+YXV0b2luY19sb2Nrcyk7 CisKKwkJaWYgKGliX3ZlY3Rvcl9pc19lbXB0eSh0cngtPmF1dG9pbmNfbG9ja3MpKSB7CisJCQly ZXR1cm47CisJCX0KKworCX0gd2hpbGUgKGliX3ZlY3Rvcl9nZXRfbGFzdCh0cngtPmF1dG9pbmNf bG9ja3MpID09IE5VTEwpOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK1JlbW92ZXMgYW4gYXV0b2luYyBsb2Nr IHJlcXVlc3QgZnJvbSB0aGUgdHJhbnNhY3Rpb24ncyBhdXRvaW5jX2xvY2tzLiAqLworVU5JVl9J TkxJTkUKK3ZvaWQKK2xvY2tfdGFibGVfcmVtb3ZlX2F1dG9pbmNfbG9jaygKKy8qPT09PT09PT09 PT09PT09PT09PT09PT09PT09Ki8KKwlsb2NrX3QqCWxvY2ssCS8qITwgaW46IHRhYmxlIGxvY2sg Ki8KKwl0cnhfdCoJdHJ4KQkvKiE8IGluL291dDogdHJhbnNhY3Rpb24gdGhhdCBvd25zIHRoZSBs b2NrICovCit7CisJbG9ja190KglhdXRvaW5jX2xvY2s7CisJbGludAlpID0gaWJfdmVjdG9yX3Np emUodHJ4LT5hdXRvaW5jX2xvY2tzKSAtIDE7CisKKwl1dF9hZChtdXRleF9vd24oJmtlcm5lbF9t dXRleCkpOworCXV0X2FkKGxvY2tfZ2V0X21vZGUobG9jaykgPT0gTE9DS19BVVRPX0lOQyk7CisJ dXRfYWQobG9ja19nZXRfdHlwZV9sb3cobG9jaykgJiBMT0NLX1RBQkxFKTsKKwl1dF9hZCghaWJf dmVjdG9yX2lzX2VtcHR5KHRyeC0+YXV0b2luY19sb2NrcykpOworCisJLyogV2l0aCBzdG9yZWQg ZnVuY3Rpb25zIGFuZCBwcm9jZWR1cmVzIHRoZSB1c2VyIG1heSBkcm9wCisJYSB0YWJsZSB3aXRo aW4gdGhlIHNhbWUgInN0YXRlbWVudCIuIFRoaXMgc3BlY2lhbCBjYXNlIGhhcworCXRvIGJlIGhh bmRsZWQgYnkgZGVsZXRpbmcgb25seSB0aG9zZSBBVVRPSU5DIGxvY2tzIHRoYXQgd2VyZQorCWhl bGQgYnkgdGhlIHRhYmxlIGJlaW5nIGRyb3BwZWQuICovCisKKwlhdXRvaW5jX2xvY2sgPSBpYl92 ZWN0b3JfZ2V0KHRyeC0+YXV0b2luY19sb2NrcywgaSk7CisKKwkvKiBUaGlzIGlzIHRoZSBkZWZh dWx0IGZhc3QgY2FzZS4gKi8KKworCWlmIChhdXRvaW5jX2xvY2sgPT0gbG9jaykgeworCQlsb2Nr X3RhYmxlX3BvcF9hdXRvaW5jX2xvY2tzKHRyeCk7CisJfSBlbHNlIHsKKwkJLyogVGhlIGxhc3Qg ZWxlbWVudCBzaG91bGQgbmV2ZXIgYmUgTlVMTCAqLworCQl1dF9hKGF1dG9pbmNfbG9jayAhPSBO VUxMKTsKKworCQkvKiBIYW5kbGUgZnJlZWluZyB0aGUgbG9ja3MgZnJvbSB3aXRoaW4gdGhlIHN0 YWNrLiAqLworCisJCXdoaWxlICgtLWkgPj0gMCkgeworCQkJYXV0b2luY19sb2NrID0gaWJfdmVj dG9yX2dldCh0cngtPmF1dG9pbmNfbG9ja3MsIGkpOworCisJCQlpZiAoVU5JVl9MSUtFTFkoYXV0 b2luY19sb2NrID09IGxvY2spKSB7CisJCQkJaWJfdmVjdG9yX3NldCh0cngtPmF1dG9pbmNfbG9j a3MsIGksIE5VTEwpOworCQkJCXJldHVybjsKKwkJCX0KKwkJfQorCisJCS8qIE11c3QgZmluZCB0 aGUgYXV0b2luYyBsb2NrLiAqLworCQl1dF9lcnJvcjsKKwl9Cit9CisKKy8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogUmVt b3ZlcyBhIHRhYmxlIGxvY2sgcmVxdWVzdCBmcm9tIHRoZSBxdWV1ZSBhbmQgdGhlIHRyeCBsaXN0 IG9mIGxvY2tzOwogdGhpcyBpcyBhIGxvdy1sZXZlbCBmdW5jdGlvbiB3aGljaCBkb2VzIE5PVCBj aGVjayBpZiB3YWl0aW5nIHJlcXVlc3RzCiBjYW4gbm93IGJlIGdyYW50ZWQuICovCkBAIC0zNjYz LDEwICszNzM3LDggQEAgbG9ja190YWJsZV9yZW1vdmVfbG93KAogCiAJCWlmICghbG9ja19nZXRf d2FpdChsb2NrKQogCQkgICAgJiYgIWliX3ZlY3Rvcl9pc19lbXB0eSh0cngtPmF1dG9pbmNfbG9j a3MpKSB7Ci0JCQlsb2NrX3QqCWF1dG9pbmNfbG9jazsKIAotCQkJYXV0b2luY19sb2NrID0gaWJf dmVjdG9yX3BvcCh0cngtPmF1dG9pbmNfbG9ja3MpOwotCQkJdXRfYShhdXRvaW5jX2xvY2sgPT0g bG9jayk7CisJCQlsb2NrX3RhYmxlX3JlbW92ZV9hdXRvaW5jX2xvY2sobG9jaywgdHJ4KTsKIAkJ fQogCiAJCXV0X2EodGFibGUtPm5fd2FpdGluZ19vcl9ncmFudGVkX2F1dG9faW5jX2xvY2tzID4g MCk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL3Jvdy9yb3cwaW5z LmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9yb3cvcm93MGlucy5jCTIwMTAtMTEtMDQg MTM6MTI6MTUgKzAwMDAKKysrIGIvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL3Jvdy9yb3cwaW5zLmMJ MjAxMS0wMi0wMiAxMzo1MTowOCArMDAwMApAQCAtMjEzMCw3ICsyMTMwLDcgQEAgZnVuY3Rpb25f ZXhpdDoKIAogCQllcnIgPSBidHJfc3RvcmVfYmlnX3JlY19leHRlcm5fZmllbGRzKAogCQkJaW5k ZXgsIGJ0cl9jdXJfZ2V0X2Jsb2NrKCZjdXJzb3IpLAotCQkJcmVjLCBvZmZzZXRzLCBiaWdfcmVj LCAmbXRyKTsKKwkJCXJlYywgb2Zmc2V0cywgJm10ciwgRkFMU0UsIGJpZ19yZWMpOwogCiAJCWlm IChtb2RpZnkpIHsKIAkJCWR0dXBsZV9iaWdfcmVjX2ZyZWUoYmlnX3JlYyk7Cgo9PT0gbW9kaWZp ZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL3Jvdy9yb3cwbWVyZ2UuYycKLS0tIGEvc3Rv cmFnZS9pbm5vZGJfcGx1Z2luL3Jvdy9yb3cwbWVyZ2UuYwkyMDEwLTExLTExIDA1OjMyOjEyICsw MDAwCisrKyBiL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9yb3cvcm93MG1lcmdlLmMJMjAxMS0wMS0w NyAwNzo0NTo1OSArMDAwMApAQCAtMjM0MSw3ICsyMzQxLDcgQEAgcm93X21lcmdlX3JlbmFtZV90 YWJsZXMoCiB7CiAJdWxpbnQJCWVycgk9IERCX0VSUk9SOwogCXBhcnNfaW5mb190KglpbmZvOwot CWNoYXIJCW9sZF9uYW1lW01BWF9UQUJMRV9OQU1FX0xFTiArIDFdOworCWNoYXIJCW9sZF9uYW1l W01BWF9GVUxMX05BTUVfTEVOICsgMV07CiAKIAl1dF9hZCh0cngtPm15c3FsX3RocmVhZF9pZCA9 PSBvc190aHJlYWRfZ2V0X2N1cnJfaWQoKSk7CiAJdXRfYWQob2xkX3RhYmxlICE9IG5ld190YWJs ZSk7CkBAIC0yMzU2LDcgKzIzNTYsNyBAQCByb3dfbWVyZ2VfcmVuYW1lX3RhYmxlcygKIAkJdXRf cHJpbnRfdGltZXN0YW1wKHN0ZGVycik7CiAJCWZwcmludGYoc3RkZXJyLCAiSW5ub0RCOiB0b28g bG9uZyB0YWJsZSBuYW1lOiAnJXMnLCAiCiAJCQkibWF4IGxlbmd0aCBpcyAlZFxuIiwgb2xkX3Rh YmxlLT5uYW1lLAotCQkJTUFYX1RBQkxFX05BTUVfTEVOKTsKKwkJCU1BWF9GVUxMX05BTUVfTEVO KTsKIAkJdXRfZXJyb3I7CiAJfQogCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJf cGx1Z2luL3Jvdy9yb3cwcHVyZ2UuYycKLS0tIGEvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL3Jvdy9y b3cwcHVyZ2UuYwkyMDEwLTEyLTIxIDA5OjM5OjE5ICswMDAwCisrKyBiL3N0b3JhZ2UvaW5ub2Ri X3BsdWdpbi9yb3cvcm93MHB1cmdlLmMJMjAxMS0wMi0wMiAxMjoxMjo0OSArMDAwMApAQCAtMzg3 LDggKzM4NywxMSBAQCBQdXJnZXMgYW4gdXBkYXRlIG9mIGFuIGV4aXN0aW5nIHJlY29yZC4KIG1h cmtlZCByZWNvcmQgaWYgdGhhdCByZWNvcmQgY29udGFpbmVkIGFuIGV4dGVybmFsbHkgc3RvcmVk IGZpZWxkLiAqLwogc3RhdGljCiB2b2lkCi1yb3dfcHVyZ2VfdXBkX2V4aXN0X29yX2V4dGVybigK LS8qPT09PT09PT09PT09PT09PT09PT09PT09PT0qLworcm93X3B1cmdlX3VwZF9leGlzdF9vcl9l eHRlcm5fZnVuYygKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisjaWZkZWYg VU5JVl9ERUJVRworCWNvbnN0IHF1ZV90aHJfdCp0aHIsCS8qITwgaW46IHF1ZXJ5IHRocmVhZCAq LworI2VuZGlmIC8qIFVOSVZfREVCVUcgKi8KIAlwdXJnZV9ub2RlX3QqCW5vZGUpCS8qITwgaW46 IHJvdyBwdXJnZSBub2RlICovCiB7CiAJbWVtX2hlYXBfdCoJaGVhcDsKQEAgLTQxMyw4ICs0MTYs OCBAQCByb3dfcHVyZ2VfdXBkX2V4aXN0X29yX2V4dGVybigKIAl3aGlsZSAobm9kZS0+aW5kZXgg IT0gTlVMTCkgewogCQlpbmRleCA9IG5vZGUtPmluZGV4OwogCi0JCWlmIChyb3dfdXBkX2NoYW5n ZXNfb3JkX2ZpZWxkX2JpbmFyeShOVUxMLCBOVUxMLCBub2RlLT5pbmRleCwKLQkJCQkJCSAgICAg bm9kZS0+dXBkYXRlKSkgeworCQlpZiAocm93X3VwZF9jaGFuZ2VzX29yZF9maWVsZF9iaW5hcnko bm9kZS0+aW5kZXgsIG5vZGUtPnVwZGF0ZSwKKwkJCQkJCSAgICAgdGhyLCBOVUxMLCBOVUxMKSkg ewogCQkJLyogQnVpbGQgdGhlIG9sZGVyIHZlcnNpb24gb2YgdGhlIGluZGV4IGVudHJ5ICovCiAJ CQllbnRyeSA9IHJvd19idWlsZF9pbmRleF9lbnRyeShub2RlLT5yb3csIE5VTEwsCiAJCQkJCQkg ICAgICBpbmRleCwgaGVhcCk7CkBAIC00OTYsNiArNDk5LDE0IEBAIHNraXBfc2Vjb25kYXJpZXM6 CiAJfQogfQogCisjaWZkZWYgVU5JVl9ERUJVRworIyBkZWZpbmUgcm93X3B1cmdlX3VwZF9leGlz dF9vcl9leHRlcm4odGhyLG5vZGUpCVwKKwlyb3dfcHVyZ2VfdXBkX2V4aXN0X29yX2V4dGVybl9m dW5jKHRocixub2RlKQorI2Vsc2UgLyogVU5JVl9ERUJVRyAqLworIyBkZWZpbmUgcm93X3B1cmdl X3VwZF9leGlzdF9vcl9leHRlcm4odGhyLG5vZGUpCVwKKwlyb3dfcHVyZ2VfdXBkX2V4aXN0X29y X2V4dGVybl9mdW5jKG5vZGUpCisjZW5kaWYgLyogVU5JVl9ERUJVRyAqLworCiAvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBQ YXJzZXMgdGhlIHJvdyByZWZlcmVuY2UgYW5kIG90aGVyIGluZm8gaW4gYSBtb2RpZnkgdW5kbyBs b2cgcmVjb3JkLgogQHJldHVybiBUUlVFIGlmIHB1cmdlIG9wZXJhdGlvbiByZXF1aXJlZDogTk9U RSB0aGF0IHRoZW4gdGhlIENBTExFUgpAQCAtNjAyLDQ3ICs2MTMsMzIgQEAgZXJyX2V4aXQ6CiAv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovLyoqCiBGZXRjaGVzIGFuIHVuZG8gbG9nIHJlY29yZCBhbmQgZG9lcyB0aGUgcHVyZ2UgZm9y IHRoZSByZWNvcmRlZCBvcGVyYXRpb24uCiBJZiBub25lIGxlZnQsIG9yIHRoZSBjdXJyZW50IHB1 cmdlIGNvbXBsZXRlZCwgcmV0dXJucyB0aGUgY29udHJvbCB0byB0aGUKLXBhcmVudCBub2RlLCB3 aGljaCBpcyBhbHdheXMgYSBxdWVyeSB0aHJlYWQgbm9kZS4KLUByZXR1cm4JREJfU1VDQ0VTUyBp ZiBvcGVyYXRpb24gc3VjY2Vzc2Z1bGx5IGNvbXBsZXRlZCwgZWxzZSBlcnJvciBjb2RlICovCi1z dGF0aWMKLXVsaW50CitwYXJlbnQgbm9kZSwgd2hpY2ggaXMgYWx3YXlzIGEgcXVlcnkgdGhyZWFk IG5vZGUuICovCitzdGF0aWMgX19hdHRyaWJ1dGVfXygobm9ubnVsbCkpCit2b2lkCiByb3dfcHVy Z2UoCiAvKj09PT09PSovCiAJcHVyZ2Vfbm9kZV90Kglub2RlLAkvKiE8IGluOiByb3cgcHVyZ2Ug bm9kZSAqLwogCXF1ZV90aHJfdCoJdGhyKQkvKiE8IGluOiBxdWVyeSB0aHJlYWQgKi8KIHsKLQly b2xsX3B0cl90CXJvbGxfcHRyOwotCWlib29sCQlwdXJnZV9uZWVkZWQ7CiAJaWJvb2wJCXVwZGF0 ZWRfZXh0ZXJuOwotCXRyeF90KgkJdHJ4OwogCi0JdXRfYWQobm9kZSAmJiB0aHIpOwotCi0JdHJ4 ID0gdGhyX2dldF90cngodGhyKTsKKwl1dF9hZChub2RlKTsKKwl1dF9hZCh0aHIpOwogCi0Jbm9k ZS0+dW5kb19yZWMgPSB0cnhfcHVyZ2VfZmV0Y2hfbmV4dF9yZWMoJnJvbGxfcHRyLAotCQkJCQkJ ICAmKG5vZGUtPnJlc2VydmF0aW9uKSwKKwlub2RlLT51bmRvX3JlYyA9IHRyeF9wdXJnZV9mZXRj aF9uZXh0X3JlYygmbm9kZS0+cm9sbF9wdHIsCisJCQkJCQkgICZub2RlLT5yZXNlcnZhdGlvbiwK IAkJCQkJCSAgbm9kZS0+aGVhcCk7CiAJaWYgKCFub2RlLT51bmRvX3JlYykgewogCQkvKiBQdXJn ZSBjb21wbGV0ZWQgZm9yIHRoaXMgcXVlcnkgdGhyZWFkICovCiAKIAkJdGhyLT5ydW5fbm9kZSA9 IHF1ZV9ub2RlX2dldF9wYXJlbnQobm9kZSk7CiAKLQkJcmV0dXJuKERCX1NVQ0NFU1MpOwotCX0K LQotCW5vZGUtPnJvbGxfcHRyID0gcm9sbF9wdHI7Ci0KLQlpZiAobm9kZS0+dW5kb19yZWMgPT0g JnRyeF9wdXJnZV9kdW1teV9yZWMpIHsKLQkJcHVyZ2VfbmVlZGVkID0gRkFMU0U7Ci0JfSBlbHNl IHsKLQkJcHVyZ2VfbmVlZGVkID0gcm93X3B1cmdlX3BhcnNlX3VuZG9fcmVjKG5vZGUsICZ1cGRh dGVkX2V4dGVybiwKLQkJCQkJCQl0aHIpOwotCQkvKiBJZiBwdXJnZV9uZWVkZWQgPT0gVFJVRSwg d2UgbXVzdCBhbHNvIHJlbWVtYmVyIHRvIHVuZnJlZXplCi0JCWRhdGEgZGljdGlvbmFyeSEgKi8K KwkJcmV0dXJuOwogCX0KIAotCWlmIChwdXJnZV9uZWVkZWQpIHsKKwlpZiAobm9kZS0+dW5kb19y ZWMgIT0gJnRyeF9wdXJnZV9kdW1teV9yZWMKKwkgICAgJiYgcm93X3B1cmdlX3BhcnNlX3VuZG9f cmVjKG5vZGUsICZ1cGRhdGVkX2V4dGVybiwgdGhyKSkgewogCQlub2RlLT5mb3VuZF9jbHVzdCA9 IEZBTFNFOwogCiAJCW5vZGUtPmluZGV4ID0gZGljdF90YWJsZV9nZXRfbmV4dF9pbmRleCgKQEAg LTY1NCwxNCArNjUwLDE0IEBAIHJvd19wdXJnZSgKIAkJfSBlbHNlIGlmICh1cGRhdGVkX2V4dGVy bgogCQkJICAgfHwgbm9kZS0+cmVjX3R5cGUgPT0gVFJYX1VORE9fVVBEX0VYSVNUX1JFQykgewog Ci0JCQlyb3dfcHVyZ2VfdXBkX2V4aXN0X29yX2V4dGVybihub2RlKTsKKwkJCXJvd19wdXJnZV91 cGRfZXhpc3Rfb3JfZXh0ZXJuKHRociwgbm9kZSk7CiAJCX0KIAogCQlpZiAobm9kZS0+Zm91bmRf Y2x1c3QpIHsKIAkJCWJ0cl9wY3VyX2Nsb3NlKCYobm9kZS0+cGN1cikpOwogCQl9CiAKLQkJcm93 X215c3FsX3VuZnJlZXplX2RhdGFfZGljdGlvbmFyeSh0cngpOworCQlyb3dfbXlzcWxfdW5mcmVl emVfZGF0YV9kaWN0aW9uYXJ5KHRocl9nZXRfdHJ4KHRocikpOwogCX0KIAogCS8qIERvIHNvbWUg Y2xlYW51cCAqLwpAQCAtNjY5LDggKzY2NSw2IEBAIHJvd19wdXJnZSgKIAltZW1faGVhcF9lbXB0 eShub2RlLT5oZWFwKTsKIAogCXRoci0+cnVuX25vZGUgPSBub2RlOwotCi0JcmV0dXJuKERCX1NV Q0NFU1MpOwogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovLyoqCkBAIC02ODQsOSArNjc4LDYgQEAgcm93X3B1cmdlX3N0ZXAo CiAJcXVlX3Rocl90Kgl0aHIpCS8qITwgaW46IHF1ZXJ5IHRocmVhZCAqLwogewogCXB1cmdlX25v ZGVfdCoJbm9kZTsKLSNpZmRlZiBVTklWX0RFQlVHCi0JdWxpbnQJCWVycjsKLSNlbmRpZiAvKiBV TklWX0RFQlVHICovCiAKIAl1dF9hZCh0aHIpOwogCkBAIC02OTQsMTIgKzY4NSw3IEBAIHJvd19w dXJnZV9zdGVwKAogCiAJdXRfYWQocXVlX25vZGVfZ2V0X3R5cGUobm9kZSkgPT0gUVVFX05PREVf UFVSR0UpOwogCi0jaWZkZWYgVU5JVl9ERUJVRwotCWVyciA9Ci0jZW5kaWYgLyogVU5JVl9ERUJV RyAqLwogCXJvd19wdXJnZShub2RlLCB0aHIpOwogCi0JdXRfYWQoZXJyID09IERCX1NVQ0NFU1Mp OwotCiAJcmV0dXJuKHRocik7CiB9Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJf cGx1Z2luL3Jvdy9yb3cwdW1vZC5jJwotLS0gYS9zdG9yYWdlL2lubm9kYl9wbHVnaW4vcm93L3Jv dzB1bW9kLmMJMjAxMC0xMi0yMSAxMToyNzoyMiArMDAwMAorKysgYi9zdG9yYWdlL2lubm9kYl9w bHVnaW4vcm93L3JvdzB1bW9kLmMJMjAxMS0wMi0wMiAxMjoxMjo0OSArMDAwMApAQCAtMTczLDQw ICsxNzMsMjYgQEAgcm93X3VuZG9fbW9kX3JlbW92ZV9jbHVzdF9sb3coCiAJbXRyX3QqCQltdHIs CS8qITwgaW46IG10ciAqLwogCXVsaW50CQltb2RlKQkvKiE8IGluOiBCVFJfTU9ESUZZX0xFQUYg b3IgQlRSX01PRElGWV9UUkVFICovCiB7Ci0JYnRyX3BjdXJfdCoJcGN1cjsKIAlidHJfY3VyX3Qq CWJ0cl9jdXI7CiAJdWxpbnQJCWVycjsKLQlpYm9vbAkJc3VjY2VzczsKIAogCXV0X2FkKG5vZGUt PnJlY190eXBlID09IFRSWF9VTkRPX1VQRF9ERUxfUkVDKTsKLQlwY3VyID0gJihub2RlLT5wY3Vy KTsKLQlidHJfY3VyID0gYnRyX3BjdXJfZ2V0X2J0cl9jdXIocGN1cik7CiAKLQlzdWNjZXNzID0g YnRyX3BjdXJfcmVzdG9yZV9wb3NpdGlvbihtb2RlLCBwY3VyLCBtdHIpOworCS8qIEZpbmQgb3V0 IGlmIHRoZSByZWNvcmQgaGFzIGJlZW4gcHVyZ2VkIGFscmVhZHkKKwlvciBpZiB3ZSBjYW4gcmVt b3ZlIGl0LiAqLwogCi0JaWYgKCFzdWNjZXNzKSB7CisJaWYgKCFidHJfcGN1cl9yZXN0b3JlX3Bv c2l0aW9uKG1vZGUsICZub2RlLT5wY3VyLCBtdHIpCisJICAgIHx8IHJvd192ZXJzX211c3RfcHJl c2VydmVfZGVsX21hcmtlZChub2RlLT5uZXdfdHJ4X2lkLCBtdHIpKSB7CiAKIAkJcmV0dXJuKERC X1NVQ0NFU1MpOwogCX0KIAotCS8qIEZpbmQgb3V0IGlmIHdlIGNhbiByZW1vdmUgdGhlIHdob2xl IGNsdXN0ZXJlZCBpbmRleCByZWNvcmQgKi8KLQotCWlmIChub2RlLT5yZWNfdHlwZSA9PSBUUlhf VU5ET19VUERfREVMX1JFQwotCSAgICAmJiAhcm93X3ZlcnNfbXVzdF9wcmVzZXJ2ZV9kZWxfbWFy a2VkKG5vZGUtPm5ld190cnhfaWQsIG10cikpIHsKLQotCQkvKiBPaywgd2UgY2FuIHJlbW92ZSAq LwotCX0gZWxzZSB7Ci0JCXJldHVybihEQl9TVUNDRVNTKTsKLQl9CisJYnRyX2N1ciA9IGJ0cl9w Y3VyX2dldF9idHJfY3VyKCZub2RlLT5wY3VyKTsKIAogCWlmIChtb2RlID09IEJUUl9NT0RJRllf TEVBRikgewotCQlzdWNjZXNzID0gYnRyX2N1cl9vcHRpbWlzdGljX2RlbGV0ZShidHJfY3VyLCBt dHIpOwotCi0JCWlmIChzdWNjZXNzKSB7Ci0JCQllcnIgPSBEQl9TVUNDRVNTOwotCQl9IGVsc2Ug ewotCQkJZXJyID0gREJfRkFJTDsKLQkJfQorCQllcnIgPSBidHJfY3VyX29wdGltaXN0aWNfZGVs ZXRlKGJ0cl9jdXIsIG10cikKKwkJCT8gREJfU1VDQ0VTUworCQkJOiBEQl9GQUlMOwogCX0gZWxz ZSB7CiAJCXV0X2FkKG1vZGUgPT0gQlRSX01PRElGWV9UUkVFKTsKIApAQCAtNjY4LDggKzY1NCw5 IEBAIHJvd191bmRvX21vZF91cGRfZXhpc3Rfc2VjKAogCXdoaWxlIChub2RlLT5pbmRleCAhPSBO VUxMKSB7CiAJCWluZGV4ID0gbm9kZS0+aW5kZXg7CiAKLQkJaWYgKHJvd191cGRfY2hhbmdlc19v cmRfZmllbGRfYmluYXJ5KAotCQkJICAgIG5vZGUtPnJvdywgbm9kZS0+ZXh0LCBub2RlLT5pbmRl eCwgbm9kZS0+dXBkYXRlKSkgeworCQlpZiAocm93X3VwZF9jaGFuZ2VzX29yZF9maWVsZF9iaW5h cnkobm9kZS0+aW5kZXgsIG5vZGUtPnVwZGF0ZSwKKwkJCQkJCSAgICAgdGhyLAorCQkJCQkJICAg ICBub2RlLT5yb3csIG5vZGUtPmV4dCkpIHsKIAogCQkJLyogQnVpbGQgdGhlIG5ld2VzdCB2ZXJz aW9uIG9mIHRoZSBpbmRleCBlbnRyeSAqLwogCQkJZW50cnkgPSByb3dfYnVpbGRfaW5kZXhfZW50 cnkobm9kZS0+cm93LCBub2RlLT5leHQsCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5v ZGJfcGx1Z2luL3Jvdy9yb3cwdXBkLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9yb3cv cm93MHVwZC5jCTIwMTEtMDEtMjUgMTM6NDM6MDggKzAwMDAKKysrIGIvc3RvcmFnZS9pbm5vZGJf cGx1Z2luL3Jvdy9yb3cwdXBkLmMJMjAxMS0wMi0wMiAxMzo1MTowOCArMDAwMApAQCAtMTE5Miwy NSArMTE5MiwzMSBAQCBOT1RFOiB3ZSBjb21wYXJlIHRoZSBmaWVsZHMgYXMgYmluYXJ5IHN0CiBA cmV0dXJuIFRSVUUgaWYgdXBkYXRlIHZlY3RvciBjaGFuZ2VzIGFuIG9yZGVyaW5nIGZpZWxkIGlu IHRoZSBpbmRleCByZWNvcmQgKi8KIFVOSVZfSU5URVJOCiBpYm9vbAotcm93X3VwZF9jaGFuZ2Vz X29yZF9maWVsZF9iaW5hcnkoCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KK3Jv d191cGRfY2hhbmdlc19vcmRfZmllbGRfYmluYXJ5X2Z1bmMoCisvKj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0qLworCWRpY3RfaW5kZXhfdCoJaW5kZXgsCS8qITwgaW46IGluZGV4 IG9mIHRoZSByZWNvcmQgKi8KKwljb25zdCB1cGRfdCoJdXBkYXRlLAkvKiE8IGluOiB1cGRhdGUg dmVjdG9yIGZvciB0aGUgcm93OyBOT1RFOiB0aGUKKwkJCQlmaWVsZCBudW1iZXJzIGluIHRoaXMg TVVTVCBiZSBjbHVzdGVyZWQgaW5kZXgKKwkJCQlwb3NpdGlvbnMhICovCisjaWZkZWYgVU5JVl9E RUJVRworCWNvbnN0IHF1ZV90aHJfdCp0aHIsCS8qITwgaW46IHF1ZXJ5IHRocmVhZCAqLworI2Vu ZGlmIC8qIFVOSVZfREVCVUcgKi8KIAljb25zdCBkdHVwbGVfdCoJcm93LAkvKiE8IGluOiBvbGQg dmFsdWUgb2Ygcm93LCBvciBOVUxMIGlmIHRoZQogCQkJCXJvdyBhbmQgdGhlIGRhdGEgdmFsdWVz IGluIHVwZGF0ZSBhcmUgbm90CiAJCQkJa25vd24gd2hlbiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxl ZCwgZS5nLiwgYXQKIAkJCQljb21waWxlIHRpbWUgKi8KLQljb25zdCByb3dfZXh0X3QqZXh0LAkv KiE8IE5VTEwsIG9yIHByZWZpeGVzIG9mIHRoZSBleHRlcm5hbGx5CisJY29uc3Qgcm93X2V4dF90 KmV4dCkJLyohPCBOVUxMLCBvciBwcmVmaXhlcyBvZiB0aGUgZXh0ZXJuYWxseQogCQkJCXN0b3Jl ZCBjb2x1bW5zIGluIHRoZSBvbGQgcm93ICovCi0JZGljdF9pbmRleF90KglpbmRleCwJLyohPCBp bjogaW5kZXggb2YgdGhlIHJlY29yZCAqLwotCWNvbnN0IHVwZF90Kgl1cGRhdGUpCS8qITwgaW46 IHVwZGF0ZSB2ZWN0b3IgZm9yIHRoZSByb3c7IE5PVEU6IHRoZQotCQkJCWZpZWxkIG51bWJlcnMg aW4gdGhpcyBNVVNUIGJlIGNsdXN0ZXJlZCBpbmRleAotCQkJCXBvc2l0aW9ucyEgKi8KIHsKIAl1 bGludAkJCW5fdW5pcXVlOwogCXVsaW50CQkJaTsKIAljb25zdCBkaWN0X2luZGV4X3QqCWNsdXN0 X2luZGV4OwogCi0JdXRfYWQodXBkYXRlKTsKIAl1dF9hZChpbmRleCk7CisJdXRfYWQodXBkYXRl KTsKKwl1dF9hZCh0aHIpOworCXV0X2FkKHRoci0+Z3JhcGgpOworCXV0X2FkKHRoci0+Z3JhcGgt PnRyeCk7CiAKIAluX3VuaXF1ZSA9IGRpY3RfaW5kZXhfZ2V0X25fdW5pcXVlKGluZGV4KTsKIApA QCAtMTI2Myw5ICsxMjY5LDE0IEBAIHJvd191cGRfY2hhbmdlc19vcmRfZmllbGRfYmluYXJ5KAog CiAJCQlpZiAoVU5JVl9MSUtFTFlfTlVMTChidWYpKSB7CiAJCQkJaWYgKFVOSVZfVU5MSUtFTFko YnVmID09IGZpZWxkX3JlZl96ZXJvKSkgewotCQkJCQkvKiBUaGlzIHNob3VsZCBuZXZlciBoYXBw ZW4sIGJ1dAotCQkJCQl3ZSB0cnkgdG8gZmFpbCBzYWZlIGhlcmUuICovCi0JCQkJCXV0X2FkKDAp OworCQkJCQkvKiBUaGUgZXh0ZXJuYWxseSBzdG9yZWQgZmllbGQKKwkJCQkJd2FzIG5vdCB3cml0 dGVuIHlldC4gVGhpcworCQkJCQlyZWNvcmQgc2hvdWxkIG9ubHkgYmUgc2VlbiBieQorCQkJCQly ZWN2X3JlY292ZXJ5X3JvbGxiYWNrX2FjdGl2ZSgpLAorCQkJCQl3aGVuIHRoZSBzZXJ2ZXIgaGFk IGNyYXNoZWQgYmVmb3JlCisJCQkJCXN0b3JpbmcgdGhlIGZpZWxkLiAqLworCQkJCQl1dF9hZCh0 aHItPmdyYXBoLT50cngtPmlzX3JlY292ZXJlZCk7CisJCQkJCXV0X2FkKHRyeF9pc19yZWN2KHRo ci0+Z3JhcGgtPnRyeCkpOwogCQkJCQlyZXR1cm4oVFJVRSk7CiAJCQkJfQogCkBAIC0xNjEyLDgg KzE2MjMsOCBAQCByb3dfdXBkX3NlY19zdGVwKAogCXV0X2FkKCFkaWN0X2luZGV4X2lzX2NsdXN0 KG5vZGUtPmluZGV4KSk7CiAKIAlpZiAobm9kZS0+c3RhdGUgPT0gVVBEX05PREVfVVBEQVRFX0FM TF9TRUMKLQkgICAgfHwgcm93X3VwZF9jaGFuZ2VzX29yZF9maWVsZF9iaW5hcnkobm9kZS0+cm93 LCBub2RlLT5leHQsCi0JCQkJCQlub2RlLT5pbmRleCwgbm9kZS0+dXBkYXRlKSkgeworCSAgICB8 fCByb3dfdXBkX2NoYW5nZXNfb3JkX2ZpZWxkX2JpbmFyeShub2RlLT5pbmRleCwgbm9kZS0+dXBk YXRlLAorCQkJCQkJdGhyLCBub2RlLT5yb3csIG5vZGUtPmV4dCkpIHsKIAkJcmV0dXJuKHJvd191 cGRfc2VjX2luZGV4X2VudHJ5KG5vZGUsIHRocikpOwogCX0KIApAQCAtMTk0MSw3ICsxOTUyLDcg QEAgcm93X3VwZF9jbHVzdF9yZWMoCiAJCQlpbmRleCwgYnRyX2N1cl9nZXRfYmxvY2soYnRyX2N1 ciksIHJlYywKIAkJCXJlY19nZXRfb2Zmc2V0cyhyZWMsIGluZGV4LCBvZmZzZXRzXywKIAkJCQkJ VUxJTlRfVU5ERUZJTkVELCAmaGVhcCksCi0JCQliaWdfcmVjLCBtdHIpOworCQkJbXRyLCBUUlVF LCBiaWdfcmVjKTsKIAkJbXRyX2NvbW1pdChtdHIpOwogCX0KIApAQCAtMjE0MCw4ICsyMTUxLDgg QEAgZXhpdF9mdW5jOgogCiAJcm93X3VwZF9zdG9yZV9yb3cobm9kZSk7CiAKLQlpZiAocm93X3Vw ZF9jaGFuZ2VzX29yZF9maWVsZF9iaW5hcnkobm9kZS0+cm93LCBub2RlLT5leHQsIGluZGV4LAot CQkJCQkgICAgIG5vZGUtPnVwZGF0ZSkpIHsKKwlpZiAocm93X3VwZF9jaGFuZ2VzX29yZF9maWVs ZF9iaW5hcnkoaW5kZXgsIG5vZGUtPnVwZGF0ZSwgdGhyLAorCQkJCQkgICAgIG5vZGUtPnJvdywg bm9kZS0+ZXh0KSkgewogCiAJCS8qIFVwZGF0ZSBjYXVzZXMgYW4gb3JkZXJpbmcgZmllbGQgKG9y ZGVyaW5nIGZpZWxkcyB3aXRoaW4KIAkJdGhlIEItdHJlZSkgb2YgdGhlIGNsdXN0ZXJlZCBpbmRl eCByZWNvcmQgdG8gY2hhbmdlOiBwZXJmb3JtCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9p bm5vZGJfcGx1Z2luL3RyeC90cngwcm9sbC5jJwotLS0gYS9zdG9yYWdlL2lubm9kYl9wbHVnaW4v dHJ4L3RyeDByb2xsLmMJMjAxMC0wOS0xNSAxNjowNjozMSArMDAwMAorKysgYi9zdG9yYWdlL2lu bm9kYl9wbHVnaW4vdHJ4L3RyeDByb2xsLmMJMjAxMS0wMS0zMSAwNzo1Njo1MSArMDAwMApAQCAt NDgsOCArNDgsOCBAQCBDcmVhdGVkIDMvMjYvMTk5NiBIZWlra2kgVHV1cmkKIHJvbGxiYWNrICov CiAjZGVmaW5lIFRSWF9ST0xMX1RSVU5DX1RIUkVTSE9MRAkxCiAKLS8qKiBJbiBjcmFzaCByZWNv dmVyeSwgdGhlIGN1cnJlbnQgdHJ4IHRvIGJlIHJvbGxlZCBiYWNrICovCi1zdGF0aWMgdHJ4X3Qq CQl0cnhfcm9sbF9jcmFzaF9yZWN2X3RyeAk9IE5VTEw7CisvKiogSW4gY3Jhc2ggcmVjb3Zlcnks IHRoZSBjdXJyZW50IHRyeCB0byBiZSByb2xsZWQgYmFjazsgTlVMTCBvdGhlcndpc2UgKi8KK3N0 YXRpYyBjb25zdCB0cnhfdCoJdHJ4X3JvbGxfY3Jhc2hfcmVjdl90cngJPSBOVUxMOwogCiAvKiog SW4gY3Jhc2ggcmVjb3Zlcnkgd2Ugc2V0IHRoaXMgdG8gdGhlIHVuZG8gbjpvIG9mIHRoZSBjdXJy ZW50IHRyeCB0byBiZQogcm9sbGVkIGJhY2suIFRoZW4gd2UgY2FuIHByaW50IGhvdyBtYW55ICUg dGhlIHJvbGxiYWNrIGhhcyBwcm9ncmVzc2VkLiAqLwoKTm8gYnVuZGxlIChyZWFzb246IHVzZWxl c3MgZm9yIHB1c2ggZW1haWxzKS4=