[COMMIT] Clean up and finish regexp matching with relocating Lisp buffers
Aidan Kehoe <[email protected]> Thu, 31 Mar 2016 20:34:37 +0100
| Newsgroups | gmane.emacs.xemacs.patches |
|---|---|
| Message-ID | <[email protected]> |
CkkgaGF2ZSBhIG5ldyBtYWNoaW5lLCBhbmQgSSBjYW4gbm93IGNvbnNpc3RlbnRseSB0cmlnZ2Vy IGNyYXNoZXMgaW4gdGhlCnJlZ3VsYXIgZXhwcmVzc2lvbiBjb2RlIHdoZW4gSSBidWlsZCB3aXRo IHRoZSByZWxvY2F0aW5nIExpc3AgYnVmZmVyCmFsbG9jYXRvciB0dXJuZWQgb24uIFRoZSBiZWxv dyBmaXhlcyB0aGlzLgoKVGhlcmXigJlzIG5vIGVhc3kgd2F5IHRvIHdyaXRlIGEgdGVzdCBmcm9t IHRoZSBMaXNwIHNpZGUgdG8gc3RvcCB0aGlzCmhhcHBlbmluZy0taXTigJlzIGEgbWFzc2l2ZSwg dW53aWVsZHkgcmVndWxhciBleHByZXNzaW9uIGNvbnN0cnVjdGVkIGJ5CiMnY29tcGlsYXRpb24t cGFyc2UtZXJyb3IgdGhhdCBwcm92b2tlZCB0aGUgY3Jhc2hlcy4gT24gdGhlIEMgc2lkZSwgSQpz dXBwb3NlIGZvciBkZWJ1ZyBidWlsZHMgd2UgY291bGQgZXhlY3V0ZSB0aGUgaWYgKHJtZHBfb2Zm c2V0KSB7fSBibG9jayBzb21lCmZyYWN0aW9uIG9mIHRoZSB0aW1lLCBzYW5pdHkgY2hlY2tpbmcg bG9jYWwgdmFsdWVzLgoKQVBQUk9WRSBDT01NSVQKCk5PVEU6IFRoaXMgcGF0Y2ggaGFzIGJlZW4g Y29tbWl0dGVkLgoKIyBIRyBjaGFuZ2VzZXQgcGF0Y2gKIyBVc2VyIEFpZGFuIEtlaG9lIDxrZWhv ZWFAcGFyaGFzYXJkLm5ldD4KIyBEYXRlIDE0NTk0NTIxOTAgLTM2MDAKIyAgICAgIFRodSBNYXIg MzEgMjA6MjM6MTAgMjAxNiArMDEwMAojIE5vZGUgSUQgMDNlZGYwZjcxZDcwN2Y0YTk4ZmEzNjVh OTU1NGFjYmY5NTFmNzVmYQojIFBhcmVudCAgNzFmZjg4M2VmNzk1NjAwNmVlYWY0YTU2MWI4MjM1 OTRjMmY4YWVmOQpDbGVhbiB1cCBhbmQgZmluaXNoIHJlZ2V4cCBtYXRjaGluZyB3aXRoIHJlbG9j YXRpbmcgTGlzcCBidWZmZXJzCgpzcmMvQ2hhbmdlTG9nIGFkZGl0aW9uOgoKMjAxNi0wMy0zMSAg QWlkYW4gS2Vob2UgIDxrZWhvZWFAcGFyaGFzYXJkLm5ldD4KCglDbGVhbiB1cCBhbmQgZmluaXNo IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiByZWd1bGFyIGV4cHJlc3Npb24KCXNlYXJjaGluZyB3aXRo aW4gcmVsb2NhdGluZyBMaXNwIGJ1ZmZlcnMuIEFzIHdlbGwgYXMgcmVsb2NhdGluZwoJbG9jYWwg cG9pbnRlcnMgd2l0aGluIHJlX21hdGNoXzJfaW50ZXJuYWwoKSBhbmQgcmVfc2VhcmNoXzIoKSwK CXJlbG9jYXRlIHBvaW50ZXJzIHRvIHJlZ3VsYXIgZXhwcmVzc2lvbiByZWdpc3RlciBiZWdpbiBh bmQgZW5kCgl2YWx1ZXMsIGFuZCBwb2ludGVycyB0aGF0IGFyZSBzYXZlZCBpbiB0aGUgZmFpbHVy ZSBzdGFjay4KCgkqIHJlZ2V4LmM6CgkqIHJlZ2V4LmMgKG9mZnNldF9wb3N0X3JlbG9jYXRpb24p OiBNYWtlIHRoaXMgaW5saW5lLgoJKiByZWdleC5jIChERUJVR19SVU5USU1FX0ZMQUdTKTogTmV3 ICNkZWZpbmUsIHplcm8gb24gYSBub24tZGVidWcKCWJ1aWxkLCByZWZsZWN0cyBkZWJ1Z19yZWdl eHBzIG9uIGEgZGVidWcgYnVpbGQsIG1ha2VzIHZhcmlvdXMKCXRoaW5ncyBjaGVhcGVyIG9uIGEg ZGVidWcgYnVpbGQuCgkqIHJlZ2V4LmMgKG1hbGxvY19jaGVja2luZ19hc3NlcnQpOiBNYWtlIHRo aXMgYXZhaWxhYmxlIGFuZCBlbXB0eQoJaWYgdGhpcyBpcyBub3QgWEVtYWNzLgoJKiByZWdleC5j IChQVVNIX0ZBSUxVUkVfUE9JTlRFUl8xKTogTmV3LiBUaGlzIHdhcyBwcmV2aW91c2x5CglQVVNI X0ZBSUxVUkVfUE9JTlRFUigpLgoJKiByZWdleC5jIChQVVNIX0ZBSUxVUkVfUE9JTlRFUik6IFNh bml0eS1jaGVjayB0aGUgYXJndW1lbnQgaGVyZQoJd2hlbiB0aGUgcmVsZXZhbnQgYXNzZXJ0aW9u cyBhcmUgdHVybmVkIG9uLgoJKiByZWdleC5jIChQVVNIX0ZBSUxVUkVfUkVMT0NBVEFCTEUpOiBO ZXcuIFB1c2ggYSByZWxvY2F0YWJsZQoJcG9pbnRlciBvbnRvIHRoZSBmYWlsdXJlIHN0YWNrOyBz YW5pdHktY2hlY2sgaXRzIHZhbHVlIHdoZW4gdGhlCglyZWxldmFudCBhc3NlcnRpb25zIGFyZSB0 dXJuZWQgb24uCgkqIHJlZ2V4LmMgKHBvcF9mYWlsdXJlX3JlbG9jYXRhYmxlXzEpOiBOZXcuIFNh bml0eS1jaGVjayBhCglyZWxvY2F0YWJsZSBwb2ludGVyLCB0aGVuIHBvcCBhbmQgcmV0dXJuIGl0 IGZyb20gdGhlIGZhaWx1cmUKCXN0YWNrLgoJKiByZWdleC5jIChQT1BfRkFJTFVSRV9SRUxPQ0FU QUJMRSk6IE5ldy4gUG9wIGEgcmVsb2NhdGFibGUKCXBvaW50ZXIgZnJvbSB0aGUgZmFpbHVyZSBz dGFjaywgY2FsbGluZwoJcG9wX2ZhaWx1cmVfcmVsb2NhdGFibGVfMSgpIGlmIGFwcHJvcHJpYXRl LgoJKiByZWdleC5jIChQVVNIX0ZBSUxVUkVfUE9JTlQpOgoJUmVvcmdhbmlzZSB0aGlzIHRvIGtl ZXAgZGVidWdnaW5nIGNvZGUgbW9yZSB0byBpdHNlbGYsIG1ha2luZyBpdAoJZWFzaWVyIHRvIHNl ZSB3aGF0IGFjdHVhbCBub24tZGVidWcgY29kZSBpcyBiZWluZyBleGN1ZGUuCgkqIHJlZ2V4LmMg KFBPUF9GQUlMVVJFX1BPSU5UKTogRGl0dG8uCgkqIHJlZ2V4LmMgKE1BWUJFX1NUQVJUX09WRVJf V0lUSF9FWFRFTkRFRCk6IENoYW5nZSB0aGUgc3ludGF4IG9mCgl0aGlzIG1hY3JvIHRvIHNvbWV0 aGluZyBjbGFuZyBwcmVmZXJzLCBpbiBwYXNzaW5nLgoJKiByZWdleC5jIChyZV9tYXRjaF8yX2lu dGVybmFsKToKCUluaXRpYWxpc2UgYmVzdF9yZWdzdGFydCwgYmVzdF9yZWdlbmQgaGVyZSB0b28s IHdpdGggdGhlIHJlc3Qgb2YKCXRoZSByZWdpc3RlciBpbmZvcm1hdGlvbi4KCmRpZmYgLXIgNzFm Zjg4M2VmNzk1IC1yIDAzZWRmMGY3MWQ3MCBzcmMvQ2hhbmdlTG9nCi0tLSBhL3NyYy9DaGFuZ2VM b2cJU3VuIEZlYiAyOCAxMjo1OTowNyAyMDE2ICswMDAwCisrKyBiL3NyYy9DaGFuZ2VMb2cJVGh1 IE1hciAzMSAyMDoyMzoxMCAyMDE2ICswMTAwCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTYtMDMtMzEg IEFpZGFuIEtlaG9lICA8a2Vob2VhQHBhcmhhc2FyZC5uZXQ+CisKKwlDbGVhbiB1cCBhbmQgZmlu aXNoIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiByZWd1bGFyIGV4cHJlc3Npb24KKwlzZWFyY2hpbmcg d2l0aGluIHJlbG9jYXRpbmcgTGlzcCBidWZmZXJzLiBBcyB3ZWxsIGFzIHJlbG9jYXRpbmcKKwls b2NhbCBwb2ludGVycyB3aXRoaW4gcmVfbWF0Y2hfMl9pbnRlcm5hbCgpIGFuZCByZV9zZWFyY2hf MigpLAorCXJlbG9jYXRlIHBvaW50ZXJzIHRvIHJlZ3VsYXIgZXhwcmVzc2lvbiByZWdpc3RlciBi ZWdpbiBhbmQgZW5kCisJdmFsdWVzLCBhbmQgcG9pbnRlcnMgdGhhdCBhcmUgc2F2ZWQgaW4gdGhl IGZhaWx1cmUgc3RhY2suCisKKwkqIHJlZ2V4LmM6CisJKiByZWdleC5jIChvZmZzZXRfcG9zdF9y ZWxvY2F0aW9uKTogTWFrZSB0aGlzIGlubGluZS4KKwkqIHJlZ2V4LmMgKERFQlVHX1JVTlRJTUVf RkxBR1MpOiBOZXcgI2RlZmluZSwgemVybyBvbiBhIG5vbi1kZWJ1ZworCWJ1aWxkLCByZWZsZWN0 cyBkZWJ1Z19yZWdleHBzIG9uIGEgZGVidWcgYnVpbGQsIG1ha2VzIHZhcmlvdXMKKwl0aGluZ3Mg Y2hlYXBlciBvbiBhIGRlYnVnIGJ1aWxkLgorCSogcmVnZXguYyAobWFsbG9jX2NoZWNraW5nX2Fz c2VydCk6IE1ha2UgdGhpcyBhdmFpbGFibGUgYW5kIGVtcHR5CisJaWYgdGhpcyBpcyBub3QgWEVt YWNzLgorCSogcmVnZXguYyAoUFVTSF9GQUlMVVJFX1BPSU5URVJfMSk6IE5ldy4gVGhpcyB3YXMg cHJldmlvdXNseQorCVBVU0hfRkFJTFVSRV9QT0lOVEVSKCkuIAorCSogcmVnZXguYyAoUFVTSF9G QUlMVVJFX1BPSU5URVIpOiBTYW5pdHktY2hlY2sgdGhlIGFyZ3VtZW50IGhlcmUKKwl3aGVuIHRo ZSByZWxldmFudCBhc3NlcnRpb25zIGFyZSB0dXJuZWQgb24uCisJKiByZWdleC5jIChQVVNIX0ZB SUxVUkVfUkVMT0NBVEFCTEUpOiBOZXcuIFB1c2ggYSByZWxvY2F0YWJsZQorCXBvaW50ZXIgb250 byB0aGUgZmFpbHVyZSBzdGFjazsgc2FuaXR5LWNoZWNrIGl0cyB2YWx1ZSB3aGVuIHRoZQorCXJl bGV2YW50IGFzc2VydGlvbnMgYXJlIHR1cm5lZCBvbi4KKwkqIHJlZ2V4LmMgKHBvcF9mYWlsdXJl X3JlbG9jYXRhYmxlXzEpOiBOZXcuIFNhbml0eS1jaGVjayBhCisJcmVsb2NhdGFibGUgcG9pbnRl ciwgdGhlbiBwb3AgYW5kIHJldHVybiBpdCBmcm9tIHRoZSBmYWlsdXJlCisJc3RhY2suCisJKiBy ZWdleC5jIChQT1BfRkFJTFVSRV9SRUxPQ0FUQUJMRSk6IE5ldy4gUG9wIGEgcmVsb2NhdGFibGUK Kwlwb2ludGVyIGZyb20gdGhlIGZhaWx1cmUgc3RhY2ssIGNhbGxpbmcKKwlwb3BfZmFpbHVyZV9y ZWxvY2F0YWJsZV8xKCkgaWYgYXBwcm9wcmlhdGUuCisJKiByZWdleC5jIChQVVNIX0ZBSUxVUkVf UE9JTlQpOgorCVJlb3JnYW5pc2UgdGhpcyB0byBrZWVwIGRlYnVnZ2luZyBjb2RlIG1vcmUgdG8g aXRzZWxmLCBtYWtpbmcgaXQKKwllYXNpZXIgdG8gc2VlIHdoYXQgYWN0dWFsIG5vbi1kZWJ1ZyBj b2RlIGlzIGJlaW5nIGV4Y3VkZS4KKwkqIHJlZ2V4LmMgKFBPUF9GQUlMVVJFX1BPSU5UKTogRGl0 dG8uCisJKiByZWdleC5jIChNQVlCRV9TVEFSVF9PVkVSX1dJVEhfRVhURU5ERUQpOiBDaGFuZ2Ug dGhlIHN5bnRheCBvZgorCXRoaXMgbWFjcm8gdG8gc29tZXRoaW5nIGNsYW5nIHByZWZlcnMsIGlu IHBhc3NpbmcuCisJKiByZWdleC5jIChyZV9tYXRjaF8yX2ludGVybmFsKToKKwlJbml0aWFsaXNl IGJlc3RfcmVnc3RhcnQsIGJlc3RfcmVnZW5kIGhlcmUgdG9vLCB3aXRoIHRoZSByZXN0IG9mCisJ dGhlIHJlZ2lzdGVyIGluZm9ybWF0aW9uLgorCiAyMDE2LTAyLTI4ICBBaWRhbiBLZWhvZSAgPGtl aG9lYUBwYXJoYXNhcmQubmV0PgogCiAJKiBwcmludC5jIChwcmludF9zeW1ib2wpOgpkaWZmIC1y IDcxZmY4ODNlZjc5NSAtciAwM2VkZjBmNzFkNzAgc3JjL3JlZ2V4LmMKLS0tIGEvc3JjL3JlZ2V4 LmMJU3VuIEZlYiAyOCAxMjo1OTowNyAyMDE2ICswMDAwCisrKyBiL3NyYy9yZWdleC5jCVRodSBN YXIgMzEgMjA6MjM6MTAgMjAxNiArMDEwMApAQCAtNDQ3LDcgKzQ0Nyw3IEBACiAgICBzdHJpbmcg ZGF0YSBzbyB0aGF0IHRoZXkgd2lsbCBiZSBhY2N1cmF0ZSBhZ2FpbiwgYWZ0ZXIgYW4gYWxsb2Nh dGlvbiBvcgogICAgcmVhbGxvY2F0aW9uIHRoYXQgcG90ZW50aWFsbHkgcmVsb2NhdGVkIHRoZSBi dWZmZXIgZGF0YS4KICovCi1zdGF0aWMgQnl0ZWNvdW50CitzdGF0aWMgaW5saW5lIEJ5dGVjb3Vu dAogb2Zmc2V0X3Bvc3RfcmVsb2NhdGlvbiAoTGlzcF9PYmplY3QgbGlzcG9iaiwgSWJ5dGUgKm9y aWdfYnVmdGV4dCkKIHsKICAgaWYgKCFCVUZGRVJQIChsaXNwb2JqKSkKQEAgLTczMCw2ICs3MzAs NyBAQAogZXh0ZXJuIGludCBkZWJ1Z19yZWdleHBzOwogCiAjZGVmaW5lIERFQlVHX1NUQVRFTUVO VChlKSBlCisjZGVmaW5lIERFQlVHX1JVTlRJTUVfRkxBR1MgZGVidWdfcmVnZXhwcwogCiAjZGVm aW5lIERFQlVHX1BSSU5UMSh4KSBpZiAoZGVidWdfcmVnZXhwcykgcHJpbnRmICh4KQogI2RlZmlu ZSBERUJVR19QUklOVDIoeDEsIHgyKSBpZiAoZGVidWdfcmVnZXhwcykgcHJpbnRmICh4MSwgeDIp CkBAIC0xMTU1LDkgKzExNTYsMTEgQEAKICNpZm5kZWYgZW1hY3MKICN1bmRlZiBhc3NlcnQKICNk ZWZpbmUgYXNzZXJ0KGUpICgodm9pZCkgKDEpKQorI2RlZmluZSBtYWxsb2NfY2hlY2tpbmdfYXNz ZXJ0IGFzc2VydAogI2VuZGlmCiAKICNkZWZpbmUgREVCVUdfU1RBVEVNRU5UKGUpCisjZGVmaW5l IERFQlVHX1JVTlRJTUVfRkxBR1MgMAogCiAjZGVmaW5lIERFQlVHX1BSSU5UMSh4KQogI2RlZmlu ZSBERUJVR19QUklOVDIoeDEsIHgyKQpAQCAtMTMzOCw2ICsxMzQxLDEzIEBACiAjZW5kaWYKIAog DAorLyogUmVnaXN0ZXJzIGFyZSBzZXQgdG8gYSBzZW50aW5lbCB3aGVuIHRoZXkgaGF2ZW4ndCB5 ZXQgbWF0Y2hlZC4gVGhpcworICAgZGVjbGFyYXRpb24gaXMgYWhlYWQgb2YgbW9zdCBvZiB0aGUg cmVnaXN0ZXItc3BlY2lmaWMgc3R1ZmYgaW4gdGhpcyBmaWxlCisgICBiZWNhdXNlIGl0cyB2YWx1 ZSBpcyBleGFtaW5lZCBpbiB0aGUgZmFpbHVyZSBzdGFjayBjb2RlLiAqLworc3RhdGljIHVuc2ln bmVkIGNoYXIgcmVnX3Vuc2V0X2R1bW15OworI2RlZmluZSBSRUdfVU5TRVRfVkFMVUUgKCZyZWdf dW5zZXRfZHVtbXkpCisjZGVmaW5lIFJFR19VTlNFVChlKSAoKGUpID09IFJFR19VTlNFVF9WQUxV RSkKKwogLyogRmFpbHVyZSBzdGFjayBkZWNsYXJhdGlvbnMgYW5kIG1hY3JvczsgYm90aCByZV9j b21waWxlX2Zhc3RtYXAgYW5kCiAgICByZV9tYXRjaF8yIHVzZSBhIGZhaWx1cmUgc3RhY2suICBU aGVzZSBoYXZlIHRvIGJlIG1hY3JvcyBiZWNhdXNlIG9mCiAgICBSRUdFWF9BTExPQ0FURV9TVEFD Sy4gICovCkBAIC0xNDM2LDY4ICsxNDQ2LDE1OSBAQAogI2lmICFkZWZpbmVkIChlbWFjcykgfHwg IWRlZmluZWQgKFJFTF9BTExPQykKICNkZWZpbmUgUkVfTUFUQ0hfUkVMT0NBVEVfTU9WRUFCTEVf REFUQV9QT0lOVEVSUygpCiAjZWxzZQotLyogRG9uJ3QgY2hhbmdlIE5VTEwgcG9pbnRlcnMgKi8K LSNkZWZpbmUgQUREX0lGX05aKHZhbCkgaWYgKHZhbCkgdmFsICs9IHJtZHBfb2Zmc2V0Ci0jZGVm aW5lIFJFX01BVENIX1JFTE9DQVRFX01PVkVBQkxFX0RBVEFfUE9JTlRFUlMoKQkJCSAgXAotZG8J CQkJCQkJCQkgIFwKLXsJCQkJCQkJCQkgIFwKLSAgQnl0ZWNvdW50IHJtZHBfb2Zmc2V0ID0gb2Zm c2V0X3Bvc3RfcmVsb2NhdGlvbiAobGlzcG9iaiwgb3JpZ19idWZ0ZXh0KTsgXAotCQkJCQkJCQkJ ICBcCi0gIGlmIChybWRwX29mZnNldCkJCQkJCQkJICBcCi0gICAgewkJCQkJCQkJCSAgXAotICAg ICAgaW50IGk7CQkJCQkJCQkgIFwKLQkJCQkJCQkJCSAgXAotICAgICAgQUREX0lGX05aIChzdHJp bmcxKTsJCQkJCQkgIFwKLSAgICAgIEFERF9JRl9OWiAoc3RyaW5nMik7CQkJCQkJICBcCi0gICAg ICBBRERfSUZfTlogKGQpOwkJCQkJCQkgIFwKLSAgICAgIEFERF9JRl9OWiAoZGVuZCk7CQkJCQkJ CSAgXAotICAgICAgQUREX0lGX05aIChlbmQxKTsJCQkJCQkJICBcCi0gICAgICBBRERfSUZfTlog KGVuZDIpOwkJCQkJCQkgIFwKLSAgICAgIEFERF9JRl9OWiAoZW5kX21hdGNoXzEpOwkJCQkJCSAg XAotICAgICAgQUREX0lGX05aIChlbmRfbWF0Y2hfMik7CQkJCQkJICBcCi0JCQkJCQkJCQkgIFwK LSAgICAgIGlmIChidWZwLT5yZV9uZ3JvdXBzKQkJCQkJCSAgXAotCXsJCQkJCQkJCSAgXAotCSAg Zm9yIChpID0gMDsgaSA8IG51bV9yZWdzOyBpKyspCQkJCSAgXAotCSAgICB7CQkJCQkJCQkgIFwK LQkgICAgICBBRERfSUZfTlogKHJlZ3N0YXJ0W2ldKTsJCQkJCSAgXAotCSAgICAgIEFERF9JRl9O WiAocmVnZW5kW2ldKTsJCQkJCSAgXAotCSAgICAgIEFERF9JRl9OWiAob2xkX3JlZ3N0YXJ0W2ld KTsJCQkJICBcCi0JICAgICAgQUREX0lGX05aIChvbGRfcmVnZW5kW2ldKTsJCQkJICBcCi0JICAg ICAgQUREX0lGX05aIChiZXN0X3JlZ3N0YXJ0W2ldKTsJCQkJICBcCi0JICAgICAgQUREX0lGX05a IChiZXN0X3JlZ2VuZFtpXSk7CQkJCSAgXAotCSAgICAgIEFERF9JRl9OWiAocmVnX2R1bW15W2ld KTsJCQkJCSAgXAotCSAgICB9CQkJCQkJCQkgIFwKLQl9CQkJCQkJCQkgIFwKLQkJCQkJCQkJCSAg XAotICAgICAgQUREX0lGX05aIChtYXRjaF9lbmQpOwkJCQkJCSAgXAotICAgIH0JCQkJCQkJCQkg IFwKLX0gd2hpbGUgKDApCisKKy8qIFVwZGF0ZSBhIHJlbG9jYXRhYmxlIHBvaW50ZXIgdG8gcmVm bGVjdCB0aGF0IGl0cyBhc3NvY2lhdGVkIGJ1ZmZlciBoYXMKKyAgIGJlZW4gcmVsb2NhdGVkLiBE b24ndCBjaGFuZ2UgTlVMTCBwb2ludGVycyBvciByZWdpc3RlcnMgdGhhdCBoYXZlIG5vdAorICAg YmVlbiBzZXQuIElmIGFzc2VydGlvbnMgYXJlIHR1cm5lZCBvbiwgc2FuaXR5LWNoZWNrIHRoZSB2 YWx1ZSBwYXNzZWQgaW4sCisgICBtYWtpbmcgc3VyZSBpdCByZWZsZWN0cyBidWZmZXIgZGF0YS4g QXBwcm9wcmlhdGUgZm9yIHVzZSBib3RoIGluCisgICByZV9tYXRjaF8yX2ludGVybmFsKCkgYW5k IHJlX3NlYXJjaF8yKCkuICovCisjZGVmaW5lIFJFTE9DQVRFX0lGX09LKHZhbCkgUkVMT0NBVEVf SUZfT0tfMSAodmFsLCAxKQorCisvKiBTYW1lIGFzIGFib3ZlLCBidXQgbWFrZSBubyBhc3NlcnRp b25zIGFib3V0IGhvdyBwbGF1c2libGUgdGhlIHZhbHVlIG9mCisgICBWQUwgaXMuICovCisjZGVm aW5lIFJFTE9DQVRFX0lGX09LX05PX0FTU0VSVCh2YWwpIFJFTE9DQVRFX0lGX09LXzEgKHZhbCwg MCkKKworLyogVGhlIGltcGxlbWVudGF0aW9uIG9mIFJFTE9DQVRFX0lGX09LKCkgYW5kIFJFTE9D QVRFX0lGX09LX05PX0FTU0VSVCgpLiAqLworI2RlZmluZSBSRUxPQ0FURV9JRl9PS18xKHZhbCwg YXNzZXJ0X29rKQkJCQlcCisgIGRvCQkJCQkJCQkJXAorICAgIHsJCQkJCQkJCQlcCisgICAgICBp ZiAoYXNzZXJ0X29rKQkJCQkJCQlcCisJewkJCQkJCQkJXAorCSAgbWFsbG9jX2NoZWNraW5nX2Fz c2VydAkJCQkJXAorCSAgICAoKChyZV9jaGFyICopICh2YWwpID49IChyZV9jaGFyICopIHN0cmlu ZzEJCQlcCisJICAgICAgJiYgKHJlX2NoYXIgKikgKHZhbCkgPD0gKHJlX2NoYXIgKikgc3RyaW5n MSArIHNpemUxKQlcCisJICAgICB8fCAoKHJlX2NoYXIgKikodmFsKSA+PSAocmVfY2hhciAqKSBz dHJpbmcyCQlcCisJCSAmJiAocmVfY2hhciAqKSh2YWwpCQkJCQlcCisJCSA8PSAocmVfY2hhciAq KSBzdHJpbmcyICsgc2l6ZTIpIHx8CQkJXAorCSAgICAgKHZhbCkgPT0gTlVMTCB8fCBSRUdfVU5T RVQgKCh1bnNpZ25lZCBjaGFyICopKHZhbCkpKTsJXAorCX0JCQkJCQkJCVwKKyAgICAgIGlmICgo dmFsKSAhPSBOVUxMICYmICFSRUdfVU5TRVQgKCh1bnNpZ25lZCBjaGFyICopKHZhbCkpKQkJXAor CXsJCQkJCQkJCVwKKwkgICh2YWwpICs9IHJtZHBfb2Zmc2V0OwkJCQkJCVwKKwl9CQkJCQkJCQlc CisgICAgfSB3aGlsZSAoMCkKKworLyogV2l0aGluIHJlX21hdGNoXzJfaW50ZXJuYWwoKSwgY2hl Y2sgd2hldGhlciB0aGUgY3VycmVudCBzZWFyY2ggc3RyaW5nCisgICByZWZsZWN0cyBhIExpc3Ag YnVmZmVyIHRoYXQgaGFzIGp1c3QgaGFkIGl0cyB0ZXh0IHJlYWxsb2NhdGVkLiBJZiBzbywKKyAg IHVwZGF0ZSB0aGUgbG9jYWwgc2F2ZWQgcG9pbnRlciB2YWx1ZXMgdG8gcmVmbGVjdCB0aGUgbmV3 IHRleHQKKyAgIGFkZHJlc3Nlcy4gVGhlIGxvY2FsIHZhbHVlcyBpbiBxdWVzdGlvbiBhcmUgdGhl IGxvY2FsIHZhbHVlcyB3aXRoaW4KKyAgIHJlX21hdGNoXzJfaW50ZXJuYWwoKSwgdG9nZXRoZXIg d2l0aCByZWd1bGFyIGV4cHJlc3Npb24gcmVnaXN0ZXIgdmFsdWVzCisgICBhbmQgdGhvc2UgdmFs dWVzIG9uIHRoZSBmYWlsIHN0YWNrLiAqLworI2RlZmluZSBSRV9NQVRDSF9SRUxPQ0FURV9NT1ZF QUJMRV9EQVRBX1BPSU5URVJTKCkgICAgICAgICAgICAgICAgICAgICAgXAorICBkbyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgQnl0ZWNvdW50IHJtZHBfb2Zmc2V0ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICA9IG9mZnNl dF9wb3N0X3JlbG9jYXRpb24gKGxpc3BvYmosIG9yaWdfYnVmdGV4dCk7ICAgICAgICAgICAgICAg XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorICAgICAgaWYgKHJtZHBfb2Zmc2V0KSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB7ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor ICAgICAgICAgIC8qIFRoaXMgYmxvY2sgd2lsbCBiZSBleGVjdXRlZCByYXJlbHkgZW5vdWdoIHRo YXQgaXQgd291bGQgYmUgXAorICAgICAgICAgICAgIHJlYXNvbmFibGUgdG8gbWFrZSBpdCBhIG5v bi1pbmxpbmUgZnVuY3Rpb24uIEhvd2V2ZXIsIGFzIGEgXAorICAgICAgICAgICAgIGZ1bmN0aW9u IGl0IHdvdWxkIG5lZWQgdG8gdGFrZSAxNyBhcmd1bWVudHMgdG8gbW9kaWZ5LCAgICAgXAorICAg ICAgICAgICAgIHdoaWNoIGlzIHZlcnkgdW53aWVsZHkuICovICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorICAgICAgICAgIEVsZW1jb3VudCBpaSwgamosIGhpZ2hfcmVnLCBsb3df cmVnOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg ICAgIFJFTE9DQVRFX0lGX09LIChkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorICAgICAgICAgIFJFTE9DQVRFX0lGX09LIChkZW5kKTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIFJFTE9DQVRFX0lGX09LIChl bmRfbWF0Y2hfMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAg IFJFTE9DQVRFX0lGX09LIChlbmRfbWF0Y2hfMik7ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorICAgICAgICAgIFJFTE9DQVRFX0lGX09LIChtYXRjaF9lbmQpOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGlm IChidWZwLT5yZV9uZ3JvdXBzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAorICAgICAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAvKiBSZWdpc3RlciB6ZXJvIGlz IG1hbmFnZWQgc3BlY2lhbGx5LCBzZWUgdGhlIGNvZGUgaW4gICAgXAorICAgICAgICAgICAgICAg ICBzdWNjZWVkX2xhYmVsLiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAorICAgICAgICAgICAgICBmb3IgKGlpID0gMTsgaWkgPCBudW1fcmVnczsgaWkrKykgICAgICAg ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIHsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAg UkVMT0NBVEVfSUZfT0sgKHJlZ3N0YXJ0W2lpXSk7ICAgICAgICAgICAgICAgICAgICAgICAgXAor ICAgICAgICAgICAgICAgICAgUkVMT0NBVEVfSUZfT0sgKHJlZ2VuZFtpaV0pOyAgICAgICAgICAg ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgUkVMT0NBVEVfSUZfT0sgKG9sZF9y ZWdzdGFydFtpaV0pOyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgUkVM T0NBVEVfSUZfT0sgKG9sZF9yZWdlbmRbaWldKTsgICAgICAgICAgICAgICAgICAgICAgXAorICAg ICAgICAgICAgICAgICAgUkVMT0NBVEVfSUZfT0sgKGJlc3RfcmVnc3RhcnRbaWldKTsgICAgICAg ICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgUkVMT0NBVEVfSUZfT0sgKGJlc3RfcmVn ZW5kW2lpXSk7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIH0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg ICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgLyogQ2hlY2sgdGhlIHJl bGV2YW50IGVsZW1lbnRzIG9uIHRoZSBmYWlsIHN0YWNrLiAqLyAgICAgICAgXAorICAgICAgICAg IGlpID0gZmFpbF9zdGFjay5hdmFpbCAtIDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorICAgICAgICAgIHdoaWxlIChpaSA+PSAwKSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgeyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAg ICBERUJVR19TVEFURU1FTlQgKGlpLS0pOyAvKiBTa2lwIHRoZSBmYWlsdXJlIGlkLiAqLyAgICAg ICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAvKiBzdHJpbmdfcGxhY2U6ICov ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICBS RUxPQ0FURV9JRl9PSyAoZmFpbF9zdGFjay5zdGFja1tpaV0ucG9pbnRlcik7IGlpLS07ICAgICAg XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICBpaS0tOyAvKiBwYXR0ZXJuX3BsYWNl LCBub3QgcmVsb2NhdGFibGUuICovICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor ICAgICAgICAgICAgICAvKiBOZWl0aGVyIGhpZ2hfcmVnIG5vciBsb3dfcmVnIGFyZSByZWxvY2F0 YWJsZSwgYnV0IHdlICAgXAorICAgICAgICAgICAgICAgICBuZWVkIHRoZWlyIHZhbHVlcyB0byBs b29wIHRocm91Z2ggdGhlIHNhdmVkICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICByZWdp c3RlcnMuKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg ICAgICAgICAgICBoaWdoX3JlZyA9IGZhaWxfc3RhY2suc3RhY2tbaWldLmludGVnZXI7IGlpLS07 ICAgICAgICAgICAgXAorICAgICAgICAgICAgICBsb3dfcmVnID0gZmFpbF9zdGFjay5zdGFja1tp aV0uaW50ZWdlcjsgaWktLTsgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg ICAgICAgICBtYWxsb2NfY2hlY2tpbmdfYXNzZXJ0IChpaSA+PSAoaGlnaF9yZWcgLSBsb3dfcmVn KSk7ICAgICAgXAorICAgICAgICAgICAgICBmb3IgKGpqID0gaGlnaF9yZWc7IGpqID49IGxvd19y ZWc7IGpqLS0pICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIHsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAg ICAgICAgICAgaWktLTsgLyogcmVnX2luZm9bdGhpc19yZWddLndvcmQgKi8gICAgICAgICAgICAg ICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgLyogcmVnZW5kW3Ro aXNfcmVnXTogKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAg ICAgICAgUkVMT0NBVEVfSUZfT0sgKGZhaWxfc3RhY2suc3RhY2tbaWldLnBvaW50ZXIpOyBpaS0t OyAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgLyogcmVnc3RhcnRbdGhp c19yZWddOiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAg ICAgUkVMT0NBVEVfSUZfT0sgKGZhaWxfc3RhY2suc3RhY2tbaWldLnBvaW50ZXIpOyBpaS0tOyAg XAorICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor ICAgICAgICAgIC8qIFdlIHVzZSB0aGUgZm9sbG93aW5nIHdoZW4gZXhhbWluaW5nIGFsbCB0aGUg b3RoZXIgdmFsdWVzICAgXAorICAgICAgICAgICAgIGZvciBwbGF1c2liaWxpdHksIHdoaWNoIG1h a2VzIGl0IGltcHJhY3RpY2FsIHRvIGV4YW1pbmUgICAgXAorICAgICAgICAgICAgIHRoZW0gZm9y IHBsYXVzaWJpbGl0eSB0aGVtc2VsdmVzLiAqLyAgICAgICAgICAgICAgICAgICAgICAgXAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorICAgICAgICAgIFJFTE9DQVRFX0lGX09LX05PX0FTU0VSVCAoc3RyaW5n MSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIFJFTE9DQVRFX0lGX09L X05PX0FTU0VSVCAoc3RyaW5nMik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg ICAgIFJFTE9DQVRFX0lGX09LX05PX0FTU0VSVCAoZW5kMSk7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorICAgICAgICAgIFJFTE9DQVRFX0lGX09LX05PX0FTU0VSVCAoZW5kMik7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAg IC8qIENhcmVmdWwsIG9yaWdfYnVmdGV4dCBpcyBhIHJlbG9jYXRhYmxlIHBvaW50ZXIgdG9vLiAq LyAgICAgXAorICAgICAgICAgIFJFTE9DQVRFX0lGX09LX05PX0FTU0VSVCAob3JpZ19idWZ0ZXh0 KTsgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUg KDApCiAjZW5kaWYgLyogIWRlZmluZWQgKGVtYWNzKSB8fCAhZGVmaW5lZCAoUkVMX0FMTE9DKSAq LwogCiAjaWYgIWRlZmluZWQgKGVtYWNzKSB8fCAhZGVmaW5lZCAoUkVMX0FMTE9DKQogI2RlZmlu ZSBSRV9TRUFSQ0hfUkVMT0NBVEVfTU9WRUFCTEVfREFUQV9QT0lOVEVSUygpCiAjZWxzZQotI2Rl ZmluZSBSRV9TRUFSQ0hfUkVMT0NBVEVfTU9WRUFCTEVfREFUQV9QT0lOVEVSUygpCQkJICBcCi1k bwkJCQkJCQkJCSAgXAotewkJCQkJCQkJCSAgXAorLyogV2l0aGluIHJlX3NlYXJjaF8yKCksIGNo ZWNrIHdoZXRoZXIgdGhlIGN1cnJlbnQgc2VhcmNoIHN0cmluZyByZWZsZWN0cyBhCisgICBMaXNw IGJ1ZmZlciB0aGF0IGhhcyBqdXN0IGhhZCBpdHMgdGV4dCByZWFsbG9jYXRlZC4gSWYgc28sIHVw ZGF0ZSB0aGUKKyAgIGZ1bmN0aW9uLWxvY2FsIHNhdmVkIHBvaW50ZXIgdmFsdWVzIHRvIHJlZmxl Y3QgdGhlIG5ldyB0ZXh0CisgICBhZGRyZXNzZXMuIFRoZXJlIGFyZSBubyByZWd1bGFyIGV4cHJl c3Npb24gcmVnaXN0ZXIgdmFsdWVzIHRvIHVwZGF0ZSwgbm9yCisgICBpcyB0aGVyZSBhIGZhaWwg c3RhY2suICovCisjZGVmaW5lIFJFX1NFQVJDSF9SRUxPQ0FURV9NT1ZFQUJMRV9EQVRBX1BPSU5U RVJTKCkgICAgICAgICAgICAgICAgICAgICAgIFwKK2RvICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoreyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCiAgIEJ5dGVjb3VudCBybWRwX29mZnNldCA9IG9mZnNldF9wb3N0X3JlbG9j YXRpb24gKGxpc3BvYmosIG9yaWdfYnVmdGV4dCk7IFwKLQkJCQkJCQkJCSAgXAotICBpZiAocm1k cF9vZmZzZXQpCQkJCQkJCSAgXAotICAgIHsJCQkJCQkJCQkgIFwKLSAgICAgIEFERF9JRl9OWiAo c3RyMSk7CQkJCQkJCSAgXAotICAgICAgQUREX0lGX05aIChzdHIyKTsJCQkJCQkJICBcCi0gICAg ICBBRERfSUZfTlogKHN0cmluZzEpOwkJCQkJCSAgXAotICAgICAgQUREX0lGX05aIChzdHJpbmcy KTsJCQkJCQkgIFwKLSAgICAgIEFERF9JRl9OWiAoZCk7CQkJCQkJCSAgXAotICAgIH0JCQkJCQkJ CQkgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorICBpZiAocm1kcF9vZmZzZXQpICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKKyAgICAgIFJFTE9DQVRFX0lGX09LIChzdHIxKTsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgUkVMT0NBVEVfSUZfT0sgKHN0cjIp OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBS RUxPQ0FURV9JRl9PSyAoc3RyaW5nMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKKyAgICAgIFJFTE9DQVRFX0lGX09LIChzdHJpbmcyKTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgUkVMT0NBVEVfSUZfT0sgKGQp OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKKyAgICAgIC8qIENhcmVmdWwsIG9yaWdfYnVmdGV4dCBpcyBhIHJlbG9j YXRhYmxlIHBvaW50ZXIgdG9vLiAqLyAgICAgICAgICAgXAorICAgICAgUkVMT0NBVEVfSUZfT0tf Tk9fQVNTRVJUIChvcmlnX2J1ZnRleHQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg ICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKIH0gd2hpbGUgKDApCiAKICNlbmRpZiAvKiBlbWFjcyAqLwogCi0v KiBQdXNoIHBvaW50ZXIgUE9JTlRFUiBvbiBGQUlMX1NUQUNLLgotICAgUmV0dXJuIDEgaWYgd2Fz IGFibGUgdG8gZG8gc28gYW5kIDAgaWYgcmFuIG91dCBvZiBtZW1vcnkgYWxsb2NhdGluZwotICAg c3BhY2UgdG8gZG8gc28uICAqLworLyogV2l0aGluIHJlX2NvbXBwaWxlX2Zhc3RtYXAoKSwgcHVz aCBwb2ludGVyIFBPSU5URVIgb250byBGQUlMX1NUQUNLLgorICAgUmV0dXJuIDEgaWYgYWJsZSB0 byBkbyBzbyBhbmQgMCBpZiByYW4gb3V0IG9mIG1lbW9yeSBhbGxvY2F0aW5nCisgICBzcGFjZSB0 byBkbyBzby4KKworICAgcmVfY29tcGlsZV9mYXN0bWFwKCkgaGFzIG5vIGFjY2VzcyB0byBidWZm ZXIgZGF0YSwgc3RhcnRzIHdpdGggYW4gZW1wdHkKKyAgIGZhaWxfc3RhY2ssIGFuZCBjbGVhbnMg dXAgdGhlIHZhbHVlcyBpdCBhZGRzIG9uIGV4aXQuIFRoaXMgbWVhbnMKKyAgIGNvbnNpZGVyYXRp b25zIG9mIHdoZXRoZXIgcG9pbnRlcnMgYXJlIHJlbG9jYXRhYmxlIGRvbid0IGFwcGx5LiAqLwog I2RlZmluZSBQVVNIX1BBVFRFUk5fT1AoUE9JTlRFUiwgRkFJTF9TVEFDSykJCQkJXAogICAoKEZB SUxfU1RBQ0tfRlVMTCAoKQkJCQkJCQlcCiAgICAgJiYgIURPVUJMRV9GQUlMX1NUQUNLIChGQUlM X1NUQUNLKSkJCQkJCVwKQEAgLTE1MDUsMTEgKzE2MDYsMzUgQEAKICAgIDogKChGQUlMX1NUQUNL KS5zdGFja1soRkFJTF9TVEFDSykuYXZhaWwrK10ucG9pbnRlciA9IFBPSU5URVIsCVwKICAgICAg IDEpKQogCi0vKiBQdXNoIGEgcG9pbnRlciB2YWx1ZSBvbnRvIHRoZSBmYWlsdXJlIHN0YWNrLgot ICAgQXNzdW1lcyB0aGUgdmFyaWFibGUgYGZhaWxfc3RhY2snLiAgUHJvYmFibHkgc2hvdWxkIG9u bHkKLSAgIGJlIGNhbGxlZCBmcm9tIHdpdGhpbiBgUFVTSF9GQUlMVVJFX1BPSU5UJy4gICovCi0j ZGVmaW5lIFBVU0hfRkFJTFVSRV9QT0lOVEVSKGl0ZW0pCQkJCQlcCi0gIGZhaWxfc3RhY2suc3Rh Y2tbZmFpbF9zdGFjay5hdmFpbCsrXS5wb2ludGVyID0gKHVuc2lnbmVkIGNoYXIgKikgKGl0ZW0p CisjZGVmaW5lIFBVU0hfRkFJTFVSRV9QT0lOVEVSXzEoaXRlbSkJCQkJCVwKKyAgZmFpbF9zdGFj ay5zdGFja1tmYWlsX3N0YWNrLmF2YWlsKytdLnBvaW50ZXIgPSAocmVfY2hhciAqKSAoaXRlbSkK KworLyogUHVzaCBhIG5vbi1yZWxvY2F0YWJsZSAobm9uLWJ1ZmZlci10ZXh0KSBwb2ludGVyIHZh bHVlIG9udG8gdGhlIGZhaWx1cmUKKyAgIHN0YWNrLiAgQXNzdW1lcyB0aGUgdmFyaWFibGUgYGZh aWxfc3RhY2snLiBTaG91bGQgb25seSBiZSBjYWxsZWQgZnJvbQorICAgd2l0aGluIGBQVVNIX0ZB SUxVUkVfUE9JTlQnLCBpdHNlbGYgb25seSBmcm9tIHdpdGhpbgorICAgcmVfbWF0Y2hfMl9pbnRl cm5hbCgpLgorICAgSWYgYXNzZXJ0aW9ucyBhcmUgdHVybmVkIG9uLCBhc3NlcnQgdGhhdCBpdGVt IGlzIG5vdCBvbmUgb2YgdGhlCisgICByZWxvY2F0YWJsZSB2YWx1ZXMgd2Uga25vdyBhYm91dC4g Ki8KKyNkZWZpbmUgUFVTSF9GQUlMVVJFX1BPSU5URVIoaXRlbSkgZG8gewkJCQkJXAorICAgIG1h bGxvY19jaGVja2luZ19hc3NlcnQgKE5VTEwgPT0gaXRlbSB8fAkJCQlcCisJCQkgICAgISgoaXRl bSA+PSBzdHJpbmcxICYmIGl0ZW0gPD0gZW5kMSkgfHwJXAorCQkJICAgICAgKGl0ZW0gPj0gc3Ry aW5nMiAmJiBpdGVtIDw9IGVuZDIpIHx8CVwKKwkJCSAgICAgIFJFR19VTlNFVCAoKGNvbnN0IHJl X2NoYXIgKilpdGVtKSkpOwlcCisgICAgUFVTSF9GQUlMVVJFX1BPSU5URVJfMSAoaXRlbSk7CQkJ CQlcCisgIH0gd2hpbGUgKDApCisKKy8qIFB1c2ggYSBwb2ludGVyIHRvIGJ1ZmZlciB0ZXh0IG9u dG8gdGhlIGZhaWx1cmUgc3RhY2suIElmIGFzc2VydGlvbnMgYXJlCisgICB0dXJuZWQgb24sIHNh bml0eS1jaGVjayB0aGUgcG9pbnRlci4gTm90ZSB0aGF0IG5vIHR5cGUgaW5mbyBpcyBzYXZlZCwg YW5kCisgICB0aGUgcmVsZXZhbnQgY29kZSBpbiBSRV9NQVRDSF9SRUxPQ0FURV9NT1ZFQUJMRV9E QVRBX1BPSU5URVJTKCkgaXMKKyAgIGZyYWdpbGUgYW5kIGRlcGVuZGVudCBvbiB0aGUgb3JkZXIg b2Ygb3BlcmF0aW9ucyBpbiBQVVNIX0ZBSUxVUkVfUE9JTlQoKSwKKyAgIGp1c3QgYXMgdGhlIGNv ZGUgaW4gUE9QX0ZBSUxVUkVfUE9JTlQgaXMuICovCisjZGVmaW5lIFBVU0hfRkFJTFVSRV9SRUxP Q0FUQUJMRShpdGVtKSBkbyB7CQkJCVwKKyAgICBtYWxsb2NfY2hlY2tpbmdfYXNzZXJ0ICgoaXRl bSA+PSBzdHJpbmcxICYmIGl0ZW0gPD0gZW5kMSkgfHwJXAorCQkJICAgIChpdGVtID49IHN0cmlu ZzIgJiYgaXRlbSA8PSBlbmQyKSB8fAlcCisJCQkgICAgaXRlbSA9PSBOVUxMIHx8CQkJCVwKKwkJ CSAgICBSRUdfVU5TRVQgKCh1bnNpZ25lZCBjaGFyICopaXRlbSkpOwkJXAorICAgIFBVU0hfRkFJ TFVSRV9QT0lOVEVSXzEgKGl0ZW0pOwkJCQkJXAorICB9IHdoaWxlICgwKQogCiAvKiBUaGlzIHB1 c2hlcyBhbiBpbnRlZ2VyLXZhbHVlZCBpdGVtIG9udG8gdGhlIGZhaWx1cmUgc3RhY2suCiAgICBB c3N1bWVzIHRoZSB2YXJpYWJsZSBgZmFpbF9zdGFjaycuICBQcm9iYWJseSBzaG91bGQgb25seQpA QCAtMTUyNiwyNyArMTY1MSwzNyBAQAogLyogVGhlc2UgdGhyZWUgUE9QLi4uIG9wZXJhdGlvbnMg Y29tcGxlbWVudCB0aGUgdGhyZWUgUFVTSC4uLiBvcGVyYXRpb25zLgogICAgQWxsIGFzc3VtZSB0 aGF0IGBmYWlsX3N0YWNrJyBpcyBub25lbXB0eS4gICovCiAjZGVmaW5lIFBPUF9GQUlMVVJFX1BP SU5URVIoKSBmYWlsX3N0YWNrLnN0YWNrWy0tZmFpbF9zdGFjay5hdmFpbF0ucG9pbnRlcgorCisj aWZkZWYgZW1hY3MKK3N0YXRpYyBpbmxpbmUgcmVfY2hhciAqCitwb3BfZmFpbHVyZV9yZWxvY2F0 YWJsZV8xIChmYWlsX3N0YWNrX3R5cGUgKmZhaWxfc3RhY2tfcHRyLCByZV9jaGFyICpzdHJpbmcx LAorCQkJICAgcmVfY2hhciAqZW5kMSwgcmVfY2hhciAqc3RyaW5nMiwgcmVfY2hhciAqZW5kMikK K3sKKyAgcmVfY2hhciAqaXRlbSA9IGZhaWxfc3RhY2tfcHRyLT5zdGFja1tmYWlsX3N0YWNrX3B0 ci0+YXZhaWwgLSAxXS5wb2ludGVyOworICBtYWxsb2NfY2hlY2tpbmdfYXNzZXJ0ICgoaXRlbSA+ PSBzdHJpbmcxICYmIGl0ZW0gPD0gZW5kMSkgfHwKKwkJCSAgKGl0ZW0gPj0gc3RyaW5nMiAmJiBp dGVtIDw9IGVuZDIpIHx8CisJCQkgIGl0ZW0gPT0gTlVMTCB8fCBSRUdfVU5TRVQgKCh1bnNpZ25l ZCBjaGFyICopaXRlbSkpOworICBmYWlsX3N0YWNrX3B0ci0+YXZhaWwgLT0gMTsKKyAgcmV0dXJu IGl0ZW07Cit9CisjZGVmaW5lIFBPUF9GQUlMVVJFX1JFTE9DQVRBQkxFKCkJCVwKKyAgcG9wX2Zh aWx1cmVfcmVsb2NhdGFibGVfMSAoJmZhaWxfc3RhY2ssIHN0cmluZzEsIGVuZDEsIHN0cmluZzIs IGVuZDIpCisjZWxzZQorI2RlZmluZSBQT1BfRkFJTFVSRV9SRUxPQ0FUQUJMRSBQT1BfRkFJTFVS RV9QT0lOVEVSIAorI2VuZGlmICAgIAorCiAjZGVmaW5lIFBPUF9GQUlMVVJFX0lOVCgpIGZhaWxf c3RhY2suc3RhY2tbLS1mYWlsX3N0YWNrLmF2YWlsXS5pbnRlZ2VyCiAjZGVmaW5lIFBPUF9GQUlM VVJFX0VMVCgpIGZhaWxfc3RhY2suc3RhY2tbLS1mYWlsX3N0YWNrLmF2YWlsXQogCi0vKiBVc2Vk IHRvIG9taXQgcHVzaGluZyBmYWlsdXJlIHBvaW50IGlkJ3Mgd2hlbiB3ZSdyZSBub3QgZGVidWdn aW5nLiAgKi8KLSNpZmRlZiBERUJVRwotI2RlZmluZSBERUJVR19QVVNIIFBVU0hfRkFJTFVSRV9J TlQKLSNkZWZpbmUgREVCVUdfUE9QKGl0ZW1fYWRkcikgKihpdGVtX2FkZHIpID0gUE9QX0ZBSUxV UkVfSU5UICgpCi0jZWxzZQotI2RlZmluZSBERUJVR19QVVNIKGl0ZW0pCi0jZGVmaW5lIERFQlVH X1BPUChpdGVtX2FkZHIpCi0jZW5kaWYKLQotCi0vKiBQdXNoIHRoZSBpbmZvcm1hdGlvbiBhYm91 dCB0aGUgc3RhdGUgd2Ugd2lsbCBuZWVkCi0gICBpZiB3ZSBldmVyIGZhaWwgYmFjayB0byBpdC4K LQotICAgUmVxdWlyZXMgdmFyaWFibGVzIGZhaWxfc3RhY2ssIHJlZ3N0YXJ0LCByZWdlbmQsIHJl Z19pbmZvLCBhbmQKLSAgIG51bV9yZWdzIGJlIGRlY2xhcmVkLiAgRE9VQkxFX0ZBSUxfU1RBQ0sg cmVxdWlyZXMgYGRlc3RpbmF0aW9uJyBiZQotICAgZGVjbGFyZWQuCi0KLSAgIERvZXMgYHJldHVy biBGQUlMVVJFX0NPREUnIGlmIHJ1bnMgb3V0IG9mIG1lbW9yeS4gICovCisvKiBQdXNoIHRoZSBp bmZvcm1hdGlvbiBhYm91dCB0aGUgc3RhdGUgd2Ugd2lsbCBuZWVkIGlmIHdlIGV2ZXIgZmFpbCBi YWNrIHRvCisgICBpdC4KKworICAgUmVxdWlyZXMgdmFyaWFibGVzIGZhaWxfc3RhY2ssIHJlZ3N0 YXJ0LCByZWdlbmQsIHJlZ19pbmZvLCBhbmQgbnVtX3JlZ3MKKyAgIGJlIGRlY2xhcmVkLiAgRE9V QkxFX0ZBSUxfU1RBQ0sgcmVxdWlyZXMgYGRlc3RpbmF0aW9uJyBiZSBkZWNsYXJlZC4KKworICAg RG9lcyBgcmV0dXJuIEZBSUxVUkVfQ09ERScgaWYgcnVucyBvdXQgb2YgbWVtb3J5LiAKKworICAg SW4gcHJhY3RpY2FsIHRlcm1zLCBvbmx5IHRvIGJlIGNhbGxlZCBmcm9tIHdpdGhpbiByZV9tYXRj aF8yX2ludGVybmFsLiAqLwogCiAjaWYgIWRlZmluZWQgKFJFR0VYX01BTExPQykgJiYgIWRlZmlu ZWQgKFJFR0VYX1JFTF9BTExPQykKICNkZWZpbmUgREVDTEFSRV9ERVNUSU5BVElPTiBjaGFyICpk ZXN0aW5hdGlvbgpAQCAtMTU2MSwxNyArMTY5NiwyMCBAQAogICAgICBvZiAwICsgLTEgaXNuJ3Qg ZG9uZSBhcyB1bnNpZ25lZC4gICovCQkJCVwKICAgaW50IHRoaXNfcmVnOwkJCQkJCQkJXAogCQkJ CQkJCQkJXAotICBERUJVR19TVEFURU1FTlQgKGZhaWx1cmVfaWQrKyk7CQkJCQlcCi0gIERFQlVH X1NUQVRFTUVOVCAobmZhaWx1cmVfcG9pbnRzX3B1c2hlZCsrKTsJCQkJXAotICBERUJVR19GQUlM X1BSSU5UMiAoIlxuUFVTSF9GQUlMVVJFX1BPSU5UICMlZDpcbiIsIGZhaWx1cmVfaWQpOwlcCi0g IERFQlVHX0ZBSUxfUFJJTlQyICgiICBCZWZvcmUgcHVzaCwgbmV4dCBhdmFpbDogJWxkXG4iLAkJ XAotCQkobG9uZykgKGZhaWxfc3RhY2spLmF2YWlsKTsJCQkJXAotICBERUJVR19GQUlMX1BSSU5U MiAoIiAgICAgICAgICAgICAgICAgICAgIHNpemU6ICVsZFxuIiwJCVwKLQkJKGxvbmcpIChmYWls X3N0YWNrKS5zaXplKTsJCQkJXAorICBERUJVR19TVEFURU1FTlQgKChmYWlsdXJlX2lkKyssIG5m YWlsdXJlX3BvaW50c19wdXNoZWQrKykpOwkJXAogCQkJCQkJCQkJXAotICBERUJVR19GQUlMX1BS SU5UMiAoIiAgc2xvdHMgbmVlZGVkOiAlZFxuIiwgTlVNX0ZBSUxVUkVfSVRFTVMpOwlcCi0gIERF QlVHX0ZBSUxfUFJJTlQyICgiICAgICBhdmFpbGFibGU6ICVsZFxuIiwJCQkJXAotCQkobG9uZykg UkVNQUlOSU5HX0FWQUlMX1NMT1RTKTsJCQkJXAorICBpZiAoREVCVUdfUlVOVElNRV9GTEFHUyAm IFJFX0RFQlVHX0ZBSUxVUkVfUE9JTlQpCQkJXAorICAgIHsJCQkJCQkJCQlcCisgICAgICBERUJV R19GQUlMX1BSSU5UMiAoIlxuUFVTSF9GQUlMVVJFX1BPSU5UICMlZDpcbiIsIGZhaWx1cmVfaWQp OwlcCisgICAgICBERUJVR19GQUlMX1BSSU5UMiAoIiAgQmVmb3JlIHB1c2gsIG5leHQgYXZhaWw6 ICVsZFxuIiwJCVwKKwkJCSAobG9uZykgKGZhaWxfc3RhY2spLmF2YWlsKTsJCQlcCisgICAgICBE RUJVR19GQUlMX1BSSU5UMiAoIiAgICAgICAgICAgICAgICAgICAgIHNpemU6ICVsZFxuIiwJCVwK KwkJCSAobG9uZykgKGZhaWxfc3RhY2spLnNpemUpOwkJCVwKKyAgICAgIAkJCQkJCQkJCVwKKyAg ICAgIERFQlVHX0ZBSUxfUFJJTlQyICgiICBzbG90cyBuZWVkZWQ6ICVkXG4iLCBOVU1fRkFJTFVS RV9JVEVNUyk7CVwKKyAgICAgIERFQlVHX0ZBSUxfUFJJTlQyICgiICAgICBhdmFpbGFibGU6ICVs ZFxuIiwJCQlcCisJCQkgKGxvbmcpIFJFTUFJTklOR19BVkFJTF9TTE9UUyk7CQkJXAorICAgIH0J CQkJCQkJCQlcCiAJCQkJCQkJCQlcCiAgIC8qIEVuc3VyZSB3ZSBoYXZlIGVub3VnaCBzcGFjZSBh bGxvY2F0ZWQgZm9yIHdoYXQgd2Ugd2lsbCBwdXNoLiAgKi8JXAogICB3aGlsZSAoUkVNQUlOSU5H X0FWQUlMX1NMT1RTIDwgTlVNX0ZBSUxVUkVfSVRFTVMpCQkJXApAQCAtMTU4NCw2MCArMTcyMiw3 OCBAQAogCSAgcmV0dXJuIGZhaWx1cmVfY29kZTsJCQkJCQlcCiAJfQkJCQkJCQkJXAogICAgICAg RU5EX1JFR0VYX01BTExPQ19PSyAoKTsJCQkJCQlcCi0gICAgICBERUJVR19GQUlMX1BSSU5UMiAo IlxuICBEb3VibGVkIHN0YWNrOyBzaXplIG5vdzogJWxkXG4iLAkJXAotCQkgICAgKGxvbmcpIChm YWlsX3N0YWNrKS5zaXplKTsJCQkJXAotICAgICAgREVCVUdfRkFJTF9QUklOVDIgKCIgIHNsb3Rz IGF2YWlsYWJsZTogJWxkXG4iLAkJCVwKLQkJICAgIChsb25nKSBSRU1BSU5JTkdfQVZBSUxfU0xP VFMpOwkJCVwKKyAgICAgIFJFX01BVENIX1JFTE9DQVRFX01PVkVBQkxFX0RBVEFfUE9JTlRFUlMg KCk7CQkJXAogCQkJCQkJCQkJXAotICAgICAgUkVfTUFUQ0hfUkVMT0NBVEVfTU9WRUFCTEVfREFU QV9QT0lOVEVSUyAoKTsJCQlcCisgICAgICBpZiAoREVCVUdfUlVOVElNRV9GTEFHUyAmIFJFX0RF QlVHX0ZBSUxVUkVfUE9JTlQpCQkJXAorCXsJCQkJCQkJCVwKKwkgIERFQlVHX0ZBSUxfUFJJTlQy ICgiXG4gIERvdWJsZWQgc3RhY2s7IHNpemUgbm93OiAlbGRcbiIsCVwKKwkJCSAgICAgKGxvbmcp IChmYWlsX3N0YWNrKS5zaXplKTsJCQlcCisJICBERUJVR19GQUlMX1BSSU5UMiAoIiAgc2xvdHMg YXZhaWxhYmxlOiAlbGRcbiIsCQlcCisJCQkgICAgIChsb25nKSBSRU1BSU5JTkdfQVZBSUxfU0xP VFMpOwkJXAorCX0JCQkJCQkJCVwKICAgICB9CQkJCQkJCQkJXAogCQkJCQkJCQkJXAogICAvKiBQ dXNoIHRoZSBpbmZvLCBzdGFydGluZyB3aXRoIHRoZSByZWdpc3RlcnMuICAqLwkJCVwKLSAgREVC VUdfRkFJTF9QUklOVDEgKCJcbiIpOwkJCQkJCVwKLQkJCQkJCQkJCVwKICAgZm9yICh0aGlzX3Jl ZyA9IGxvd2VzdF9hY3RpdmVfcmVnOyB0aGlzX3JlZyA8PSBoaWdoZXN0X2FjdGl2ZV9yZWc7CVwK ICAgICAgICB0aGlzX3JlZysrKQkJCQkJCQlcCiAgICAgewkJCQkJCQkJCVwKLSAgICAgIERFQlVH X0ZBSUxfUFJJTlQyICgiICBQdXNoaW5nIHJlZzogJWRcbiIsIHRoaXNfcmVnKTsJCVwKKyAgICAg IFBVU0hfRkFJTFVSRV9SRUxPQ0FUQUJMRSAocmVnc3RhcnRbdGhpc19yZWddKTsJCQlcCisgICAg ICBQVVNIX0ZBSUxVUkVfUkVMT0NBVEFCTEUgKHJlZ2VuZFt0aGlzX3JlZ10pOwkJCVwKKyAgICAg IFBVU0hfRkFJTFVSRV9FTFQgKHJlZ19pbmZvW3RoaXNfcmVnXS53b3JkKTsJCQlcCisJCQkJCQkJ CQlcCiAgICAgICBERUJVR19TVEFURU1FTlQgKG51bV9yZWdzX3B1c2hlZCsrKTsJCQkJXAogCQkJ CQkJCQkJXAotICAgICAgREVCVUdfRkFJTF9QUklOVDIgKCIgICAgc3RhcnQ6IDB4JWx4XG4iLCAo bG9uZykgcmVnc3RhcnRbdGhpc19yZWddKTsgXAotICAgICAgUFVTSF9GQUlMVVJFX1BPSU5URVIg KHJlZ3N0YXJ0W3RoaXNfcmVnXSk7CQkJXAorICAgICAgaWYgKERFQlVHX1JVTlRJTUVfRkxBR1Mg JiBSRV9ERUJVR19GQUlMVVJFX1BPSU5UKQkJCVwKKwl7CQkJCQkJCQlcCisJICBERUJVR19GQUlM X1BSSU5UMiAoIiAgUHVzaGluZyByZWc6ICVkXG4iLCB0aGlzX3JlZyk7CQlcCiAJCQkJCQkJCQlc Ci0gICAgICBERUJVR19GQUlMX1BSSU5UMiAoIiAgICBlbmQ6IDB4JWx4XG4iLCAobG9uZykgcmVn ZW5kW3RoaXNfcmVnXSk7CVwKLSAgICAgIFBVU0hfRkFJTFVSRV9QT0lOVEVSIChyZWdlbmRbdGhp c19yZWddKTsJCQkJXAotCQkJCQkJCQkJXAotICAgICAgREVCVUdfRkFJTF9QUklOVDIgKCIgICAg aW5mbzogMHglbHhcbiAgICAgICIsCQkJXAotCQkgICAgKiAobG9uZyAqKSAoJnJlZ19pbmZvW3Ro aXNfcmVnXSkpOwkJCVwKLSAgICAgIERFQlVHX0ZBSUxfUFJJTlQyICgiIG1hdGNoX251bGw9JWQi LAkJCQlcCi0JCSAgICBSRUdfTUFUQ0hfTlVMTF9TVFJJTkdfUCAocmVnX2luZm9bdGhpc19yZWdd KSk7CVwKLSAgICAgIERFQlVHX0ZBSUxfUFJJTlQyICgiIGFjdGl2ZT0lZCIsIElTX0FDVElWRSAo cmVnX2luZm9bdGhpc19yZWddKSk7CVwKLSAgICAgIERFQlVHX0ZBSUxfUFJJTlQyICgiIG1hdGNo ZWRfc29tZXRoaW5nPSVkIiwJCQlcCi0JCSAgICBNQVRDSEVEX1NPTUVUSElORyAocmVnX2luZm9b dGhpc19yZWddKSk7CQlcCi0gICAgICBERUJVR19GQUlMX1BSSU5UMiAoIiBldmVyX21hdGNoZWRf c29tZXRoaW5nPSVkIiwJCQlcCi0JCSAgICBFVkVSX01BVENIRURfU09NRVRISU5HIChyZWdfaW5m b1t0aGlzX3JlZ10pKTsJXAotICAgICAgREVCVUdfRkFJTF9QUklOVDEgKCJcbiIpOwkJCQkJCVwK LSAgICAgIFBVU0hfRkFJTFVSRV9FTFQgKHJlZ19pbmZvW3RoaXNfcmVnXS53b3JkKTsJCQlcCisJ ICBERUJVR19GQUlMX1BSSU5UMiAoIiAgICBzdGFydDogMHglbHhcbiIsCQkJXAorCQkJICAgICAo bG9uZykgcmVnc3RhcnRbdGhpc19yZWddKTsJCVwKKwkgIERFQlVHX0ZBSUxfUFJJTlQyICgiICAg IGVuZDogMHglbHhcbiIsCQkJXAorCQkJICAgICAobG9uZykgcmVnZW5kW3RoaXNfcmVnXSk7CQkJ XAorCSAgREVCVUdfRkFJTF9QUklOVDIgKCIgICAgaW5mbzogMHglbHhcbiAgICAgICIsCQkJXAor CQkJICAgICAqIChsb25nICopICgmcmVnX2luZm9bdGhpc19yZWddKSk7CQlcCisJICBERUJVR19G QUlMX1BSSU5UMiAoIiBtYXRjaF9udWxsPSVkIiwJCQkJXAorCQkJICAgICBSRUdfTUFUQ0hfTlVM TF9TVFJJTkdfUCAocmVnX2luZm8JCVwKKwkJCQkJCSAgICAgIFt0aGlzX3JlZ10pKTsJXAorCSAg REVCVUdfRkFJTF9QUklOVDIgKCIgYWN0aXZlPSVkIiwJCQkJXAorCQkJICAgICBJU19BQ1RJVkUg KHJlZ19pbmZvW3RoaXNfcmVnXSkpOwkJXAorCSAgREVCVUdfRkFJTF9QUklOVDIgKCIgbWF0Y2hl ZF9zb21ldGhpbmc9JWQiLAkJCVwKKwkJCSAgICAgTUFUQ0hFRF9TT01FVEhJTkcgKHJlZ19pbmZv W3RoaXNfcmVnXSkpOwlcCisJICBERUJVR19GQUlMX1BSSU5UMiAoIiBldmVyX21hdGNoZWRfc29t ZXRoaW5nPSVkIiwJCVwKKwkJCSAgICAgRVZFUl9NQVRDSEVEX1NPTUVUSElORyAocmVnX2luZm8J CVwKKwkJCQkJCSAgICAgW3RoaXNfcmVnXSkpOwlcCisJICBERUJVR19GQUlMX1BSSU5UMSAoIlxu Iik7CQkJCQlcCisJfQkJCQkJCQkJXAogICAgIH0JCQkJCQkJCQlcCiAJCQkJCQkJCQlcCi0gIERF QlVHX0ZBSUxfUFJJTlQyICgiICBQdXNoaW5nICBsb3cgYWN0aXZlIHJlZzogJWRcbiIsIGxvd2Vz dF9hY3RpdmVfcmVnKTsgXAogICBQVVNIX0ZBSUxVUkVfSU5UIChsb3dlc3RfYWN0aXZlX3JlZyk7 CQkJCQlcCi0JCQkJCQkJCQlcCi0gIERFQlVHX0ZBSUxfUFJJTlQyICgiICBQdXNoaW5nIGhpZ2gg YWN0aXZlIHJlZzogJWRcbiIsIGhpZ2hlc3RfYWN0aXZlX3JlZyk7IFwKICAgUFVTSF9GQUlMVVJF X0lOVCAoaGlnaGVzdF9hY3RpdmVfcmVnKTsJCQkJXAogCQkJCQkJCQkJXAotICBERUJVR19GQUlM X1BSSU5UMiAoIiAgUHVzaGluZyBwYXR0ZXJuIDB4JWx4OiBcbiIsIChsb25nKSBwYXR0ZXJuX3Bs YWNlKTsgXAotICBERUJVR19GQUlMX1BSSU5UX0NPTVBJTEVEX1BBVFRFUk4gKGJ1ZnAsIHBhdHRl cm5fcGxhY2UsIHBlbmQpOwlcCiAgIFBVU0hfRkFJTFVSRV9QT0lOVEVSIChwYXR0ZXJuX3BsYWNl KTsJCQkJCVwKIAkJCQkJCQkJCVwKLSAgREVCVUdfRkFJTF9QUklOVDIgKCIgIFB1c2hpbmcgc3Ry aW5nIDB4JWx4OiBgIiwgKGxvbmcpIHN0cmluZ19wbGFjZSk7CVwKLSAgREVCVUdfRkFJTF9QUklO VF9ET1VCTEVfU1RSSU5HIChzdHJpbmdfcGxhY2UsIHN0cmluZzEsIHNpemUxLCBzdHJpbmcyLCBc Ci0JCQkgICAgIHNpemUyKTsJCQkJCVwKLSAgREVCVUdfRkFJTF9QUklOVDEgKCInXG4iKTsJCQkJ CQlcCi0gIFBVU0hfRkFJTFVSRV9QT0lOVEVSIChzdHJpbmdfcGxhY2UpOwkJCQkJXAorICBQVVNI X0ZBSUxVUkVfUkVMT0NBVEFCTEUgKHN0cmluZ19wbGFjZSk7CQkJCVwKIAkJCQkJCQkJCVwKLSAg REVCVUdfRkFJTF9QUklOVDIgKCIgIFB1c2hpbmcgZmFpbHVyZSBpZDogJXVcbiIsIGZhaWx1cmVf aWQpOwkJXAotICBERUJVR19QVVNIIChmYWlsdXJlX2lkKTsJCQkJCQlcCisgIC8qIENhbid0IHB1 dCB0aGlzIHdpdGhpbiB0aGUgREVCVUdfUlVOVElNRV9GTEFHUywgdGhlIGRlY2lzaW9uIGlzIG1h ZGUJXAorICAgICBhdCBjb21waWxlIHRpbWUgKi8JCQkJCQkJXAorICBERUJVR19TVEFURU1FTlQg KFBVU0hfRkFJTFVSRV9JTlQgKGZhaWx1cmVfaWQpKTsJCQlcCisJCQkJCQkJCQlcCisgIGlmIChE RUJVR19SVU5USU1FX0ZMQUdTICYgUkVfREVCVUdfRkFJTFVSRV9QT0lOVCkJCQlcCisgICAgewkJ CQkJCQkJCVwKKyAgICAgIERFQlVHX0ZBSUxfUFJJTlQyICgiICBQdXNoaW5nICBsb3cgYWN0aXZl IHJlZzogJWRcbiIsCQlcCisJCQkgbG93ZXN0X2FjdGl2ZV9yZWcpOwkJCQlcCisgICAgICBERUJV R19GQUlMX1BSSU5UMiAoIiAgUHVzaGluZyBoaWdoIGFjdGl2ZSByZWc6ICVkXG4iLAkJXAorCQkJ IGhpZ2hlc3RfYWN0aXZlX3JlZyk7CQkJCVwKKyAgICAgIERFQlVHX0ZBSUxfUFJJTlQyICgiICBQ dXNoaW5nIHBhdHRlcm4gMHglbHg6IFxuIiwJCQlcCisJCQkgKGxvbmcpIHBhdHRlcm5fcGxhY2Up OwkJCQlcCisgICAgICBERUJVR19GQUlMX1BSSU5UX0NPTVBJTEVEX1BBVFRFUk4gKGJ1ZnAsIHBh dHRlcm5fcGxhY2UsIHBlbmQpOwlcCisgICAgICBERUJVR19GQUlMX1BSSU5UMiAoIiAgUHVzaGlu ZyBzdHJpbmcgMHglbHg6IGAiLAkJCVwKKwkJCSAobG9uZykgc3RyaW5nX3BsYWNlKTsJCQkJXAor ICAgICAgREVCVUdfRkFJTF9QUklOVF9ET1VCTEVfU1RSSU5HIChzdHJpbmdfcGxhY2UsIHN0cmlu ZzEsIHNpemUxLAlcCisJCQkJICAgICAgc3RyaW5nMiwgc2l6ZTIpOwkJCVwKKyAgICAgIERFQlVH X0ZBSUxfUFJJTlQxICgiJ1xuIik7CQkJCQlcCisgICAgICBERUJVR19GQUlMX1BSSU5UMiAoIiAg UHVzaGluZyBmYWlsdXJlIGlkOiAldVxuIiwgZmFpbHVyZV9pZCk7CVwKKyAgICB9CQkJCQkJCQkJ XAogfSB3aGlsZSAoMCkKIAogLyogVGhpcyBpcyB0aGUgbnVtYmVyIG9mIGl0ZW1zIHRoYXQgYXJl IHB1c2hlZCBhbmQgcG9wcGVkIG9uIHRoZSBzdGFjawpAQCAtMTY2OCw3ICsxODI0LDcgQEAKIAog LyogUG9wcyB3aGF0IFBVU0hfRkFJTF9TVEFDSyBwdXNoZXMuCiAKLSAgIFdlIHJlc3RvcmUgaW50 byB0aGUgcGFyYW1ldGVycywgYWxsIG9mIHdoaWNoIHNob3VsZCBiZSBsdmFsdWVzOgorICAgV2Ug cmVzdG9yZSBpbnRvIHRoZSBmb2xsb3dpbmcgcGFyYW1ldGVycywgYWxsIG9mIHdoaWNoIHNob3Vs ZCBiZSBsdmFsdWVzOgogICAgICBTVFIgLS0gdGhlIHNhdmVkIGRhdGEgcG9zaXRpb24uCiAgICAg IFBBVCAtLSB0aGUgc2F2ZWQgcGF0dGVybiBwb3NpdGlvbi4KICAgICAgTE9XX1JFRywgSElHSF9S RUcgLS0gdGhlIGhpZ2hlc3QgYW5kIGxvd2VzdCBhY3RpdmUgcmVnaXN0ZXJzLgpAQCAtMTY4MSw2 NyArMTgzNyw3MiBAQAogI2RlZmluZSBQT1BfRkFJTFVSRV9QT0lOVChzdHIsIHBhdCwgbG93X3Jl ZywgaGlnaF9yZWcsCQkJXAogICAgICAgICAgICAgICAgICAgICAgICAgICByZWdzdGFydCwgcmVn ZW5kLCByZWdfaW5mbykJCQlcCiBkbyB7CQkJCQkJCQkJXAotICBERUJVR19TVEFURU1FTlQgKGZh aWxfc3RhY2tfZWx0X3QgZmZhaWx1cmVfaWQ7KQkJCVwKKyAgREVCVUdfU1RBVEVNRU5UIChpbnQg ZmZhaWx1cmVfaWQ7KQkJCQkJXAogICBpbnQgdGhpc19yZWc7CQkJCQkJCQlcCiAgIGNvbnN0IHVu c2lnbmVkIGNoYXIgKnN0cmluZ190ZW1wOwkJCQkJXAogCQkJCQkJCQkJXAotICBhc3NlcnQgKCFG QUlMX1NUQUNLX0VNUFRZICgpKTsJCQkJCVwKLQkJCQkJCQkJCVwKICAgLyogUmVtb3ZlIGZhaWx1 cmUgcG9pbnRzIGFuZCBwb2ludCB0byBob3cgbWFueSByZWdzIHB1c2hlZC4gICovCVwKLSAgREVC VUdfRkFJTF9QUklOVDEgKCJQT1BfRkFJTFVSRV9QT0lOVDpcbiIpOwkJCQlcCi0gIERFQlVHX0ZB SUxfUFJJTlQyICgiICBCZWZvcmUgcG9wLCBuZXh0IGF2YWlsOiAlbGRcbiIsCQkJXAotCQkobG9u ZykgZmFpbF9zdGFjay5hdmFpbCk7CQkJCVwKLSAgREVCVUdfRkFJTF9QUklOVDIgKCIgICAgICAg ICAgICAgICAgICAgIHNpemU6ICVsZFxuIiwJCQlcCi0JCShsb25nKSBmYWlsX3N0YWNrLnNpemUp OwkJCQlcCi0JCQkJCQkJCQlcCiAgIGFzc2VydCAoZmFpbF9zdGFjay5hdmFpbCA+PSBOVU1fTk9O UkVHX0lURU1TKTsJCQlcCiAJCQkJCQkJCQlcCi0gIERFQlVHX1BPUCAoJmZmYWlsdXJlX2lkLmlu dGVnZXIpOwkJCQkJXAotICBERUJVR19GQUlMX1BSSU5UMiAoIiAgUG9wcGluZyBmYWlsdXJlIGlk OiAlZFxuIiwJCQlcCi0JCSogKGludCAqKSAmZmZhaWx1cmVfaWQpOwkJCQlcCisgIGlmIChERUJV R19SVU5USU1FX0ZMQUdTICYgUkVfREVCVUdfRkFJTFVSRV9QT0lOVCkJCQlcCisgICAgewkJCQkJ CQkJCVwKKyAgICAgIERFQlVHX0ZBSUxfUFJJTlQxICgiUE9QX0ZBSUxVUkVfUE9JTlQ6XG4iKTsJ CQlcCisgICAgICBERUJVR19GQUlMX1BSSU5UMiAoIiAgQmVmb3JlIHBvcCwgbmV4dCBhdmFpbDog JWxkXG4iLAkJXAorCQkJIChsb25nKSBmYWlsX3N0YWNrLmF2YWlsKTsJCQlcCisgICAgICBERUJV R19GQUlMX1BSSU5UMiAoIiAgICAgICAgICAgICAgICAgICAgc2l6ZTogJWxkXG4iLAkJXAorCQkJ IChsb25nKSBmYWlsX3N0YWNrLnNpemUpOwkJCVwKKyAgICB9CQkJCQkJCQkJXAorCQkJCQkJCQkJ XAorICBERUJVR19TVEFURU1FTlQgKGZmYWlsdXJlX2lkID0gUE9QX0ZBSUxVUkVfSU5UKCkpOwkJ CVwKIAkJCQkJCQkJCVwKICAgLyogSWYgdGhlIHNhdmVkIHN0cmluZyBsb2NhdGlvbiBpcyBOVUxM LCBpdCBjYW1lIGZyb20gYW4JCVwKICAgICAgb25fZmFpbHVyZV9rZWVwX3N0cmluZ19qdW1wIG9w Y29kZSwgYW5kIHdlIHdhbnQgdG8gdGhyb3cgYXdheSB0aGUJXAogICAgICBzYXZlZCBOVUxMLCB0 aHVzIHJldGFpbmluZyBvdXIgY3VycmVudCBwb3NpdGlvbiBpbiB0aGUgc3RyaW5nLiAgKi8JXAot ICBzdHJpbmdfdGVtcCA9IFBPUF9GQUlMVVJFX1BPSU5URVIgKCk7CQkJCQlcCisgIHN0cmluZ190 ZW1wID0gUE9QX0ZBSUxVUkVfUkVMT0NBVEFCTEUgKCk7CQkJCVwKICAgaWYgKHN0cmluZ190ZW1w ICE9IE5VTEwpCQkJCQkJXAogICAgIHN0ciA9IHN0cmluZ190ZW1wOwkJCQkJCQlcCiAJCQkJCQkJ CQlcCi0gIERFQlVHX0ZBSUxfUFJJTlQyICgiICBQb3BwaW5nIHN0cmluZyAweCVseDogYCIsICAo bG9uZykgc3RyKTsJCVwKLSAgREVCVUdfRkFJTF9QUklOVF9ET1VCTEVfU1RSSU5HIChzdHIsIHN0 cmluZzEsIHNpemUxLCBzdHJpbmcyLCBzaXplMik7CVwKLSAgREVCVUdfRkFJTF9QUklOVDEgKCIn XG4iKTsJCQkJCQlcCi0JCQkJCQkJCQlcCiAgIHBhdCA9ICh1bnNpZ25lZCBjaGFyICopIFBPUF9G QUlMVVJFX1BPSU5URVIgKCk7CQkJXAotICBERUJVR19GQUlMX1BSSU5UMiAoIiAgUG9wcGluZyBw YXR0ZXJuIDB4JWx4OiAiLCAobG9uZykgcGF0KTsJCVwKLSAgREVCVUdfRkFJTF9QUklOVF9DT01Q SUxFRF9QQVRURVJOIChidWZwLCBwYXQsIHBlbmQpOwkJCVwKIAkJCQkJCQkJCVwKICAgLyogUmVz dG9yZSByZWdpc3RlciBpbmZvLiAgKi8JCQkJCQlcCiAgIGhpZ2hfcmVnID0gUE9QX0ZBSUxVUkVf SU5UICgpOwkJCQkJXAotICBERUJVR19GQUlMX1BSSU5UMiAoIiAgUG9wcGluZyBoaWdoIGFjdGl2 ZSByZWc6ICVkXG4iLCBoaWdoX3JlZyk7CVwKKyAgbG93X3JlZyA9IFBPUF9GQUlMVVJFX0lOVCAo KTsJCQkJCQlcCiAJCQkJCQkJCQlcCi0gIGxvd19yZWcgPSBQT1BfRkFJTFVSRV9JTlQgKCk7CQkJ CQkJXAotICBERUJVR19GQUlMX1BSSU5UMiAoIiAgUG9wcGluZyAgbG93IGFjdGl2ZSByZWc6ICVk XG4iLCBsb3dfcmVnKTsJXAorICBpZiAoREVCVUdfUlVOVElNRV9GTEFHUyAmIFJFX0RFQlVHX0ZB SUxVUkVfUE9JTlQpCQkJXAorICAgIHsJCQkJCQkJCQlcCisgICAgICBERUJVR19GQUlMX1BSSU5U MiAoIiAgUG9wcGluZyBmYWlsdXJlIGlkOiAlZFxuIiwgZmZhaWx1cmVfaWQpOwlcCisgICAgICBE RUJVR19GQUlMX1BSSU5UMiAoIiAgUG9wcGluZyBzdHJpbmcgMHglbHg6IGAiLCAgKGxvbmcpIHN0 cik7CVwKKyAgICAgIERFQlVHX0ZBSUxfUFJJTlRfRE9VQkxFX1NUUklORyAoc3RyLCBzdHJpbmcx LCBzaXplMSwJCVwKKwkJCQkgICAgICBzdHJpbmcyLCBzaXplMik7CQkJXAorICAgICAgREVCVUdf RkFJTF9QUklOVDEgKCInXG4iKTsJCQkJCVwKKyAgICAgIERFQlVHX0ZBSUxfUFJJTlQyICgiICBQ b3BwaW5nIHBhdHRlcm4gMHglbHg6ICIsIChsb25nKSBwYXQpOwlcCisgICAgICBERUJVR19GQUlM X1BSSU5UX0NPTVBJTEVEX1BBVFRFUk4gKGJ1ZnAsIHBhdCwgcGVuZCk7CQlcCisgICAgICBERUJV R19GQUlMX1BSSU5UMiAoIiAgUG9wcGluZyBoaWdoIGFjdGl2ZSByZWc6ICVkXG4iLCBoaWdoX3Jl Zyk7CVwKKyAgICAgIERFQlVHX0ZBSUxfUFJJTlQyICgiICBQb3BwaW5nICBsb3cgYWN0aXZlIHJl ZzogJWRcbiIsIGxvd19yZWcpOwlcCisgICAgfQkJCQkJCQkJCVwKIAkJCQkJCQkJCVwKICAgZm9y ICh0aGlzX3JlZyA9IGhpZ2hfcmVnOyB0aGlzX3JlZyA+PSBsb3dfcmVnOyB0aGlzX3JlZy0tKQkJ XAogICAgIHsJCQkJCQkJCQlcCi0gICAgICBERUJVR19GQUlMX1BSSU5UMiAoIiAgICBQb3BwaW5n IHJlZzogJWRcbiIsIHRoaXNfcmVnKTsJCVwKKyAgICAgIHJlZ19pbmZvW3RoaXNfcmVnXS53b3Jk ID0gUE9QX0ZBSUxVUkVfRUxUICgpOwkJCVwKKyAgICAgIHJlZ2VuZFt0aGlzX3JlZ10gPSBQT1Bf RkFJTFVSRV9SRUxPQ0FUQUJMRSAoKTsJCQlcCisgICAgICByZWdzdGFydFt0aGlzX3JlZ10gPSBQ T1BfRkFJTFVSRV9SRUxPQ0FUQUJMRSAoKTsJCQlcCiAJCQkJCQkJCQlcCi0gICAgICByZWdfaW5m b1t0aGlzX3JlZ10ud29yZCA9IFBPUF9GQUlMVVJFX0VMVCAoKTsJCQlcCi0gICAgICBERUJVR19G QUlMX1BSSU5UMiAoIiAgICAgIGluZm86IDB4JWx4XG4iLAkJCQlcCi0JCSAgICAqIChsb25nICop ICZyZWdfaW5mb1t0aGlzX3JlZ10pOwkJCVwKLQkJCQkJCQkJCVwKLSAgICAgIHJlZ2VuZFt0aGlz X3JlZ10gPSBQT1BfRkFJTFVSRV9QT0lOVEVSICgpOwkJCVwKLSAgICAgIERFQlVHX0ZBSUxfUFJJ TlQyICgiICAgICAgZW5kOiAweCVseFxuIiwgKGxvbmcpIHJlZ2VuZFt0aGlzX3JlZ10pOyBcCi0J CQkJCQkJCQlcCi0gICAgICByZWdzdGFydFt0aGlzX3JlZ10gPSBQT1BfRkFJTFVSRV9QT0lOVEVS ICgpOwkJCVwKLSAgICAgIERFQlVHX0ZBSUxfUFJJTlQyICgiICAgICAgc3RhcnQ6IDB4JWx4XG4i LCAobG9uZykgcmVnc3RhcnRbdGhpc19yZWddKTsgXAorICAgICAgaWYgKERFQlVHX1JVTlRJTUVf RkxBR1MgJiBSRV9ERUJVR19GQUlMVVJFX1BPSU5UKQkJCVwKKwl7CQkJCQkJCQlcCisJICBERUJV R19GQUlMX1BSSU5UMiAoIiAgICBQb3BwaW5nIHJlZzogJWRcbiIsIHRoaXNfcmVnKTsJXAorCSAg REVCVUdfRkFJTF9QUklOVDIgKCIgICAgICBpbmZvOiAweCVseFxuIiwJCQlcCisJCQkgICAgICog KGxvbmcgKikgJnJlZ19pbmZvW3RoaXNfcmVnXSk7CQlcCisJICBERUJVR19GQUlMX1BSSU5UMiAo IiAgICAgIGVuZDogMHglbHhcbiIsCQkJXAorCQkJICAgICAobG9uZykgcmVnZW5kW3RoaXNfcmVn XSk7CQkJXAorCSAgREVCVUdfRkFJTF9QUklOVDIgKCIgICAgICBzdGFydDogMHglbHhcbiIsCQkJ XAorCQkJICAgICAobG9uZykgcmVnc3RhcnRbdGhpc19yZWddKTsJCVwKKwl9CQkJCQkJCQlcCiAg ICAgfQkJCQkJCQkJCVwKIAkJCQkJCQkJCVwKICAgc2V0X3JlZ3NfbWF0Y2hlZF9kb25lID0gMDsJ CQkJCQlcCiAgIERFQlVHX1NUQVRFTUVOVCAobmZhaWx1cmVfcG9pbnRzX3BvcHBlZCsrKTsJCQkJ XAogfSB3aGlsZSAoMCkgLyogUE9QX0ZBSUxVUkVfUE9JTlQgKi8KIAotCiAMCiAvKiBTdHJ1Y3R1 cmUgZm9yIHBlci1yZWdpc3RlciAoYS5rLmEuIHBlci1ncm91cCkgaW5mb3JtYXRpb24uCiAgICBP dGhlciByZWdpc3RlciBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUKQEAgLTE3OTQsMTEgKzE5NTUs NiBAQAogCX0JCQkJCQkJCVwKICAgICB9CQkJCQkJCQkJXAogICB3aGlsZSAoMCkKLQotLyogUmVn aXN0ZXJzIGFyZSBzZXQgdG8gYSBzZW50aW5lbCB3aGVuIHRoZXkgaGF2ZW4ndCB5ZXQgbWF0Y2hl ZC4gICovCi1zdGF0aWMgdW5zaWduZWQgY2hhciByZWdfdW5zZXRfZHVtbXk7Ci0jZGVmaW5lIFJF R19VTlNFVF9WQUxVRSAoJnJlZ191bnNldF9kdW1teSkKLSNkZWZpbmUgUkVHX1VOU0VUKGUpICgo ZSkgPT0gUkVHX1VOU0VUX1ZBTFVFKQogDAogLyogU3Vicm91dGluZSBkZWNsYXJhdGlvbnMgYW5k IG1hY3JvcyBmb3IgcmVnZXhfY29tcGlsZS4gICovCiAKQEAgLTI1OTksMTIgKzI3NTUsMTIgQEAK IAogI2lmZGVmIE1VTEUKICNkZWZpbmUgTUFZQkVfU1RBUlRfT1ZFUl9XSVRIX0VYVEVOREVEKGNo KQlcCi0JICBpZiAoY2ggPj0gMHg4MCkgICAgICAgICAgICAgICAgICAgICAgIFwKKwkgIGlmIChj aCA+PSAweDgwKSBkbwkJCVwKIAkgICAgewkJCQkJXAogCSAgICAgIGdvdG8gc3RhcnRfb3Zlcl93 aXRoX2V4dGVuZGVkOwlcCiAJICAgIH0gd2hpbGUgKDApCiAjZWxzZQotI2RlZmluZSBNQVlCRV9T VEFSVF9PVkVSX1dJVEhfRVhURU5ERUQoY2gpCisjZGVmaW5lIE1BWUJFX1NUQVJUX09WRVJfV0lU SF9FWFRFTkRFRChjaCkgKHZvaWQpKGNoKQogI2VuZGlmCiAKICAgICAgICAgY2FzZSAnWyc6CkBA IC01MjkxLDkgKzU0NDcsOCBAQAogICAgICByZWdpc3RlciBpbmZvcm1hdGlvbiBzdHJ1Y3QuICAq LwogICBmb3IgKG1jbnQgPSAxOyBtY250IDwgbnVtX3JlZ3M7IG1jbnQrKykKICAgICB7Ci0gICAg ICByZWdzdGFydFttY250XSA9IHJlZ2VuZFttY250XQotICAgICAgICA9IG9sZF9yZWdzdGFydFtt Y250XSA9IG9sZF9yZWdlbmRbbWNudF0gPSBSRUdfVU5TRVRfVkFMVUU7Ci0KKyAgICAgIHJlZ3N0 YXJ0W21jbnRdID0gcmVnZW5kW21jbnRdID0gb2xkX3JlZ3N0YXJ0W21jbnRdID0gb2xkX3JlZ2Vu ZFttY250XQorCT0gYmVzdF9yZWdzdGFydFttY250XSA9IGJlc3RfcmVnZW5kW21jbnRdID0gUkVH X1VOU0VUX1ZBTFVFOwogICAgICAgUkVHX01BVENIX05VTExfU1RSSU5HX1AgKHJlZ19pbmZvW21j bnRdKSA9IE1BVENIX05VTExfVU5TRVRfVkFMVUU7CiAgICAgICBJU19BQ1RJVkUgKHJlZ19pbmZv W21jbnRdKSA9IDA7CiAgICAgICBNQVRDSEVEX1NPTUVUSElORyAocmVnX2luZm9bbWNudF0pID0g MDsKQEAgLTYzMzksNyArNjQ5NCw3IEBACiAgICAgICAgICAgREVCVUdfTUFUQ0hfUFJJTlQxICgi RVhFQ1VUSU5HIHB1c2hfZHVtbXlfZmFpbHVyZS5cbiIpOwogICAgICAgICAgIC8qIFNlZSBjb21t ZW50cyBqdXN0IGFib3ZlIGF0IGBkdW1teV9mYWlsdXJlX2p1bXAnIGFib3V0IHRoZQogICAgICAg ICAgICAgIHR3byB6ZXJvZXMuICAqLwotICAgICAgICAgIFBVU0hfRkFJTFVSRV9QT0lOVCAoKHVu c2lnbmVkIGNoYXIgKikgMCwgKHVuc2lnbmVkIGNoYXIgKikgMCwgLTIpOworICAgICAgICAgIFBV U0hfRkFJTFVSRV9QT0lOVCAoKHJlX2NoYXIgKikgMCwgKHJlX2NoYXIgKikgMCwgLTIpOwogICAg ICAgICAgIGJyZWFrOwogCiAgICAgICAgIC8qIEhhdmUgdG8gc3VjY2VlZCBtYXRjaGluZyB3aGF0 IGZvbGxvd3MgYXQgbGVhc3QgbiB0aW1lcy4KCgotLSAK4oCYVHJhbWFkb2wgaXMgZnVydGhlciBm ZWQgdG8gY2F0dGxlIFvigKZdIHdoZW4gd29ya2luZyB0aGVtIFvigKZdIChhcyBkcmFmdAphbmlt YWxzKSBzbyB0aGF0IHRoZSBhbmltYWxzIGRvIG5vdCBnZXQgdGlyZWQgcXVpY2tseS4g4oCm4oCZ CgnigJQgQW5nZXdhbmR0ZSBDaGVtaWUsIFNlcHQgMjAxNCwgZGVzY3JpYmluZyB0aGUgc29jaWFs IGNvbnRleHQgb2YKCShzeW50aGV0aWMpIHRyYW1hZG9sIGhhdmluZyBiZWVuIGZvdW5kIGluIENh bWVyb29uIHRyZWUgcm9vdHMuCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpYRW1hY3MtUGF0Y2hlcyBtYWlsaW5nIGxpc3QKWEVtYWNzLVBhdGNoZXNAeGVt YWNzLm9yZwpodHRwOi8vbGlzdHMueGVtYWNzLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbWFjcy1w YXRjaGVzCg==