Return-Path: From: Michael Terry To: BlueZ development In-Reply-To: <1214605438.11537.0.camel@violet.holtmann.net> References: <1214593557.6131.26.camel@bongo> <1214605438.11537.0.camel@violet.holtmann.net> Date: Mon, 30 Jun 2008 11:48:11 -0400 Message-Id: <1214840891.6764.27.camel@bongo> Mime-Version: 1.0 Subject: Re: [Bluez-devel] Wizard patch Reply-To: BlueZ development List-Id: BlueZ development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: multipart/mixed; boundary="===============0373049502==" Sender: bluez-devel-bounces@lists.sourceforge.net Errors-To: bluez-devel-bounces@lists.sourceforge.net --===============0373049502== Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-EyYYtVqfi5hXf9HWKX1U" --=-EyYYtVqfi5hXf9HWKX1U Content-Type: multipart/mixed; boundary="=-FJS1LJrPFGv91RJWwiRA" --=-FJS1LJrPFGv91RJWwiRA Content-Type: text/plain Content-Transfer-Encoding: quoted-printable On Sat, 2008-06-28 at 00:23 +0200, Marcel Holtmann wrote: > looks nice. However you have to break this up into pieces for. Sent > small patches and I can quickly review and commit them. And here's the actual wizard UI patch. It's a bit large, but not terribly break-down-able. It adds the passkey code for the UI and modifies the UI a bit, as I mentioned in previous emails. It also adds a call to the client code to get an address's user-visible name from its path. Bastien suggested that the applet label to launch the wizard should continue to be "Setup" and not "Connect" because we may want to do more setup for certain device types in the future. That may be true, but some of that would be automatic (like the SyncML example he cited) and so wouldn't be visible from the user's perspective. Even if we did add a page for some sort of device configuration, I maintain that the overriding user metaphor will be connecting not configuring. -mt --=-FJS1LJrPFGv91RJWwiRA Content-Disposition: attachment; filename=wizard-ui.diff Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name=wizard-ui.diff; charset=utf-8 ZGlmZiAtdXByTiAuLi9ibHVlei1nbm9tZS1zZXJ2aWNlcy9hcHBsZXQvbWFpbi5jIC4vYXBwbGV0 L21haW4uYw0KLS0tIC4uL2JsdWV6LWdub21lLXNlcnZpY2VzL2FwcGxldC9tYWluLmMJMjAwOC0w Ni0zMCAwOToyNzoyMy4wMDAwMDAwMDAgLTA0MDANCisrKyAuL2FwcGxldC9tYWluLmMJMjAwOC0w Ni0zMCAwOTo1Njo0NS4wMDAwMDAwMDAgLTA0MDANCkBAIC02MjUsNyArNjI1LDYgQEAgc3RhdGlj IHZvaWQgc2VuZHRvX2NhbGxiYWNrKEdPYmplY3QgKndpZA0KIAkJZ19wcmludGVycigiQ291bGRu J3QgZXhlY3V0ZSBjb21tYW5kOiAlc1xuIiwgY29tbWFuZCk7DQogfQ0KIA0KLSNpZiAwDQogc3Rh dGljIHZvaWQgd2l6YXJkX2NhbGxiYWNrKEdPYmplY3QgKndpZGdldCwgZ3BvaW50ZXIgdXNlcl9k YXRhKQ0KIHsNCiAJY29uc3QgY2hhciAqY29tbWFuZCA9ICJibHVldG9vdGgtd2l6YXJkIC0tc2lu Z2xldG9uIjsNCkBAIC02MzMsNyArNjMyLDYgQEAgc3RhdGljIHZvaWQgd2l6YXJkX2NhbGxiYWNr KEdPYmplY3QgKndpZA0KIAlpZiAoIWdfc3Bhd25fY29tbWFuZF9saW5lX2FzeW5jKGNvbW1hbmQs IE5VTEwpKQ0KIAkJZ19wcmludGVycigiQ291bGRuJ3QgZXhlY3V0ZSBjb21tYW5kOiAlc1xuIiwg Y29tbWFuZCk7DQogfQ0KLSNlbmRpZg0KIA0KIHN0YXRpYyB2b2lkIGFjdGl2YXRlX2NhbGxiYWNr KEdPYmplY3QgKndpZGdldCwgZ3BvaW50ZXIgdXNlcl9kYXRhKQ0KIHsNCkBAIC02OTcsMTcgKzY5 NSwxNSBAQCBzdGF0aWMgR3RrV2lkZ2V0ICpjcmVhdGVfcG9wdXBtZW51KHZvaWQpDQogDQogCW1l bnVpdGVtX2Jyb3dzZSA9IGl0ZW07DQogDQotI2lmIDANCiAJaXRlbSA9IGd0a19zZXBhcmF0b3Jf bWVudV9pdGVtX25ldygpOw0KIAlndGtfd2lkZ2V0X3Nob3coaXRlbSk7DQogCWd0a19tZW51X3No ZWxsX2FwcGVuZChHVEtfTUVOVV9TSEVMTChtZW51KSwgaXRlbSk7DQogDQotCWl0ZW0gPSBndGtf bWVudV9pdGVtX25ld193aXRoX2xhYmVsKF8oIlNldHVwIE5ldyBEZXZpY2UiKSk7DQorCWl0ZW0g PSBndGtfbWVudV9pdGVtX25ld193aXRoX2xhYmVsKF8oIkNvbm5lY3QgTmV3IERldmljZS4uLiIp KTsNCiAJZ19zaWduYWxfY29ubmVjdChpdGVtLCAiYWN0aXZhdGUiLA0KIAkJCQlHX0NBTExCQUNL KHdpemFyZF9jYWxsYmFjayksIE5VTEwpOw0KIAlndGtfd2lkZ2V0X3Nob3coaXRlbSk7DQogCWd0 a19tZW51X3NoZWxsX2FwcGVuZChHVEtfTUVOVV9TSEVMTChtZW51KSwgaXRlbSk7DQotI2VuZGlm DQogDQogCXJldHVybiBtZW51Ow0KIH0NCmRpZmYgLXVwck4gLi4vYmx1ZXotZ25vbWUtc2Vydmlj ZXMvY29tbW9uL2NsaWVudC5jIC4vY29tbW9uL2NsaWVudC5jDQotLS0gLi4vYmx1ZXotZ25vbWUt c2VydmljZXMvY29tbW9uL2NsaWVudC5jCTIwMDgtMDYtMzAgMDk6MzU6NTIuMDAwMDAwMDAwIC0w NDAwDQorKysgLi9jb21tb24vY2xpZW50LmMJMjAwOC0wNi0zMCAwOTo1ODoyMy4wMDAwMDAwMDAg LTA0MDANCkBAIC0xMTE4LDYgKzExMTgsMzcgQEAgQmx1ZXRvb3RoQ2xpZW50ICpibHVldG9vdGhf Y2xpZW50X25ldyh2bw0KIAl9DQogfQ0KIA0KK2djaGFyICpibHVldG9vdGhfY2xpZW50X2dldF9u YW1lKEJsdWV0b290aENsaWVudCAqc2VsZiwgY29uc3QgZ2NoYXIgKmFkYXB0ZXIpDQorew0KKwlC bHVldG9vdGhDbGllbnRQcml2YXRlICpwcml2ID0gQkxVRVRPT1RIX0NMSUVOVF9HRVRfUFJJVkFU RShzZWxmKTsNCisJR3RrVHJlZUl0ZXIgaXRlcjsNCisJZ2Jvb2xlYW4gY29udDsNCisNCisJaWYg KGFkYXB0ZXIgPT0gTlVMTCkNCisJCWFkYXB0ZXIgPSBwcml2LT5kZWZhdWx0X2FkYXB0ZXI7DQor DQorCWlmIChhZGFwdGVyID09IE5VTEwpDQorCQlyZXR1cm4gTlVMTDsNCisNCisJY29udCA9IGd0 a190cmVlX21vZGVsX2dldF9pdGVyX2ZpcnN0KEdUS19UUkVFX01PREVMKHByaXYtPnN0b3JlKSwg Jml0ZXIpOw0KKw0KKwl3aGlsZSAoY29udCA9PSBUUlVFKSB7DQorCQlnY2hhciAqcGF0aDsNCisJ CWdjaGFyICpuYW1lOw0KKw0KKwkJZ3RrX3RyZWVfbW9kZWxfZ2V0KEdUS19UUkVFX01PREVMKHBy aXYtPnN0b3JlKSwgJml0ZXIsDQorCQkJCQkJQ09MVU1OX1BBVEgsICZwYXRoLA0KKwkJCQkJCUNP TFVNTl9OQU1FLCAmbmFtZSwgLTEpOw0KKw0KKwkJaWYgKGdfYXNjaWlfc3RyY2FzZWNtcChwYXRo LCBhZGFwdGVyKSA9PSAwKQ0KKwkJCXJldHVybiBnX3N0cmR1cChuYW1lKTsNCisNCisJCWNvbnQg PSBndGtfdHJlZV9tb2RlbF9pdGVyX25leHQoR1RLX1RSRUVfTU9ERUwocHJpdi0+c3RvcmUpLCAm aXRlcik7DQorCX0NCisNCisJcmV0dXJuIE5VTEw7DQorfQ0KKw0KIGludCBibHVldG9vdGhfY2xp ZW50X2F2YWlsYWJsZV9zZXJ2aWNlcyhCbHVldG9vdGhDbGllbnQgKmNsaWVudCkNCiB7DQogCUJs dWV0b290aENsaWVudFByaXZhdGUgKnByaXYgPSBCTFVFVE9PVEhfQ0xJRU5UX0dFVF9QUklWQVRF KGNsaWVudCk7DQpkaWZmIC11cHJOIC4uL2JsdWV6LWdub21lLXNlcnZpY2VzL2NvbW1vbi9jbGll bnQuaCAuL2NvbW1vbi9jbGllbnQuaA0KLS0tIC4uL2JsdWV6LWdub21lLXNlcnZpY2VzL2NvbW1v bi9jbGllbnQuaAkyMDA4LTA2LTMwIDA5OjQ0OjA2LjAwMDAwMDAwMCAtMDQwMA0KKysrIC4vY29t bW9uL2NsaWVudC5oCTIwMDgtMDYtMzAgMDk6NTg6MTkuMDAwMDAwMDAwIC0wNDAwDQpAQCAtMTM1 LDYgKzEzNSw4IEBAIGdib29sZWFuIGJsdWV0b290aF9jbGllbnRfZGlzY292ZXJfZGV2aWMNCiAN CiBnYm9vbGVhbiBibHVldG9vdGhfY2xpZW50X2NhbmNlbF9kaXNjb3ZlcnkoQmx1ZXRvb3RoQ2xp ZW50ICpzZWxmLCBnY2hhciAqYWRhcHRlcik7DQogDQorZ2NoYXIgKmJsdWV0b290aF9jbGllbnRf Z2V0X25hbWUoQmx1ZXRvb3RoQ2xpZW50ICpzZWxmLCBjb25zdCBnY2hhciAqYWRhcHRlcik7DQor DQogR3RrVHJlZU1vZGVsICpibHVldG9vdGhfY2xpZW50X2dldF9tb2RlbChCbHVldG9vdGhDbGll bnQgKnNlbGYpOw0KIEd0a1RyZWVNb2RlbCAqYmx1ZXRvb3RoX2NsaWVudF9nZXRfbW9kZWxfc2lt cGxlKEJsdWV0b290aENsaWVudCAqc2VsZik7DQogR3RrVHJlZU1vZGVsICpibHVldG9vdGhfY2xp ZW50X2dldF9tb2RlbF9hZGFwdGVyX2xpc3QoQmx1ZXRvb3RoQ2xpZW50ICpzZWxmKTsNCmRpZmYg LXVwck4gLi4vYmx1ZXotZ25vbWUtc2VydmljZXMvd2l6YXJkL2FnZW50LmMgLi93aXphcmQvYWdl bnQuYw0KLS0tIC4uL2JsdWV6LWdub21lLXNlcnZpY2VzL3dpemFyZC9hZ2VudC5jCTE5NjktMTIt MzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwDQorKysgLi93aXphcmQvYWdlbnQuYwkyMDA4LTA2 LTMwIDEwOjAxOjUyLjAwMDAwMDAwMCAtMDQwMA0KQEAgLTAsMCArMSwzNDAgQEANCisvKg0KKyAq DQorICogIEJsdWVaIC0gQmx1ZXRvb3RoIHByb3RvY29sIHN0YWNrIGZvciBMaW51eA0KKyAqDQor ICogIENvcHlyaWdodCAoQykgMjAwNS0yMDA4ICBNYXJjZWwgSG9sdG1hbm4gPG1hcmNlbEBob2x0 bWFubi5vcmc+DQorICogIENvcHlyaWdodCAoQykgMjAwNi0yMDA3ICBCYXN0aWVuIE5vY2VyYSA8 aGFkZXNzQGhhZGVzcy5uZXQ+DQorICoNCisgKg0KKyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KKyAqICBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQ0KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAyIG9mIHRoZSBMaWNlbnNlLCBvcg0KKyAqICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLg0KKyAqDQorICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KKyAqICBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlDQorICogIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQorICoNCisgKiAgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UNCisgKiAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhl IEZyZWUgU29mdHdhcmUNCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZp ZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0ENCisgKg0KKyAqLw0KKw0KKyNp ZmRlZiBIQVZFX0NPTkZJR19IDQorI2luY2x1ZGUgPGNvbmZpZy5oPg0KKyNlbmRpZg0KKw0KKyNp bmNsdWRlIDxkYnVzL2RidXMtZ2xpYi5oPg0KKw0KKyNpbmNsdWRlIDxnbGliL2dpMThuLmg+DQor DQorI2luY2x1ZGUgPGd0ay9ndGsuaD4NCisNCisjaW5jbHVkZSAiYWdlbnQuaCINCisNCitzdGF0 aWMgR3RrV2lkZ2V0ICptYWluX2RpYWxvZzsNCisNCit0eXBlZGVmIGVudW0gew0KKwlBR0VOVF9F UlJPUl9SRUpFQ1QNCit9IEFnZW50RXJyb3I7DQorDQorI2RlZmluZSBBR0VOVF9FUlJPUiAoYWdl bnRfZXJyb3JfcXVhcmsoKSkNCisNCisjZGVmaW5lIEFHRU5UX0VSUk9SX1RZUEUgKGFnZW50X2Vy cm9yX2dldF90eXBlKCkpIA0KKw0KK3N0YXRpYyBHUXVhcmsgYWdlbnRfZXJyb3JfcXVhcmsodm9p ZCkNCit7DQorCXN0YXRpYyBHUXVhcmsgcXVhcmsgPSAwOw0KKwlpZiAoIXF1YXJrKQ0KKwkJcXVh cmsgPSBnX3F1YXJrX2Zyb21fc3RhdGljX3N0cmluZygiYWdlbnQiKTsNCisNCisJcmV0dXJuIHF1 YXJrOw0KK30NCisNCitzdGF0aWMgR0xpc3QgKmlucHV0X2xpc3QgPSBOVUxMOw0KKw0KK3N0cnVj dCBpbnB1dF9kYXRhIHsNCisJY2hhciAqcGF0aDsNCisJY2hhciAqYWRkcmVzczsNCisJY2hhciAq c2VydmljZTsNCisJY2hhciAqdXVpZDsNCisJREJ1c0dNZXRob2RJbnZvY2F0aW9uICpjb250ZXh0 Ow0KKwlHdGtXaWRnZXQgKmRpYWxvZzsNCisJR3RrV2lkZ2V0ICpidXR0b247DQorCUd0a1dpZGdl dCAqZW50cnk7DQorfTsNCisNCitzdGF0aWMgZ2ludCBpbnB1dF9jb21wYXJlKGdjb25zdHBvaW50 ZXIgYSwgZ2NvbnN0cG9pbnRlciBiKQ0KK3sNCisJc3RydWN0IGlucHV0X2RhdGEgKmFfZGF0YSA9 IChzdHJ1Y3QgaW5wdXRfZGF0YSAqKSBhOw0KKwlzdHJ1Y3QgaW5wdXRfZGF0YSAqYl9kYXRhID0g KHN0cnVjdCBpbnB1dF9kYXRhICopIGI7DQorDQorCXJldHVybiBnX2FzY2lpX3N0cmNhc2VjbXAo YV9kYXRhLT5hZGRyZXNzLCBiX2RhdGEtPmFkZHJlc3MpOw0KK30NCisNCitzdGF0aWMgdm9pZCBp bnB1dF9mcmVlKHN0cnVjdCBpbnB1dF9kYXRhICppbnB1dCkNCit7DQorCWd0a193aWRnZXRfZGVz dHJveShpbnB1dC0+ZGlhbG9nKTsNCisNCisJZ19mcmVlKGlucHV0LT51dWlkKTsNCisJZ19mcmVl KGlucHV0LT5zZXJ2aWNlKTsNCisJZ19mcmVlKGlucHV0LT5hZGRyZXNzKTsNCisJZ19mcmVlKGlu cHV0LT5wYXRoKTsNCisJZ19mcmVlKGlucHV0KTsNCit9DQorDQorc3RhdGljIHZvaWQgcGFzc2tl eV9jYWxsYmFjayhHdGtXaWRnZXQgKmRpYWxvZywNCisJCQkJZ2ludCByZXNwb25zZSwgZ3BvaW50 ZXIgdXNlcl9kYXRhKQ0KK3sNCisJc3RydWN0IGlucHV0X2RhdGEgKmlucHV0ID0gdXNlcl9kYXRh Ow0KKw0KKwlpZiAocmVzcG9uc2UgPT0gR1RLX1JFU1BPTlNFX0FDQ0VQVCkgew0KKwkJY29uc3Qg Y2hhciAqcGFzc2tleTsNCisJCXBhc3NrZXkgPSBndGtfZW50cnlfZ2V0X3RleHQoR1RLX0VOVFJZ KGlucHV0LT5lbnRyeSkpOw0KKwkJZGJ1c19nX21ldGhvZF9yZXR1cm4oaW5wdXQtPmNvbnRleHQs IHBhc3NrZXkpOw0KKwl9IGVsc2Ugew0KKwkJR0Vycm9yICplcnJvcjsNCisJCWVycm9yID0gZ19l cnJvcl9uZXcoQUdFTlRfRVJST1IsIEFHRU5UX0VSUk9SX1JFSkVDVCwNCisJCQkJCQlfKCJQYWly aW5nIHJlcXVlc3QgcmVqZWN0ZWQiKSk7DQorCQlkYnVzX2dfbWV0aG9kX3JldHVybl9lcnJvcihp bnB1dC0+Y29udGV4dCwgZXJyb3IpOw0KKwl9DQorDQorCWlucHV0X2ZyZWUoaW5wdXQpOw0KK30N CisNCitzdGF0aWMgdm9pZCBjaGFuZ2VkX2NhbGxiYWNrKEd0a1dpZGdldCAqZWRpdGFibGUsIGdw b2ludGVyIHVzZXJfZGF0YSkNCit7DQorCXN0cnVjdCBpbnB1dF9kYXRhICppbnB1dCA9IHVzZXJf ZGF0YTsNCisJY29uc3QgZ2NoYXIgKnRleHQ7DQorDQorCXRleHQgPSBndGtfZW50cnlfZ2V0X3Rl eHQoR1RLX0VOVFJZKGlucHV0LT5lbnRyeSkpOw0KKw0KKwlndGtfd2lkZ2V0X3NldF9zZW5zaXRp dmUoaW5wdXQtPmJ1dHRvbiwgKnRleHQgIT0gJ1wwJyA/IFRSVUUgOiBGQUxTRSk7DQorfQ0KKw0K K3N0YXRpYyB2b2lkIHRvZ2dsZWRfY2FsbGJhY2soR3RrV2lkZ2V0ICpidXR0b24sIGdwb2ludGVy IHVzZXJfZGF0YSkNCit7DQorCXN0cnVjdCBpbnB1dF9kYXRhICppbnB1dCA9IHVzZXJfZGF0YTsN CisJZ2Jvb2xlYW4gbW9kZTsNCisNCisJbW9kZSA9IGd0a190b2dnbGVfYnV0dG9uX2dldF9hY3Rp dmUoR1RLX1RPR0dMRV9CVVRUT04oYnV0dG9uKSk7DQorDQorCWd0a19lbnRyeV9zZXRfdmlzaWJp bGl0eShHVEtfRU5UUlkoaW5wdXQtPmVudHJ5KSwgbW9kZSk7DQorfQ0KKw0KK3N0YXRpYyB2b2lk IHBhc3NrZXlfZGlhbG9nKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKmFkZHJlc3MsDQor CQkJY29uc3QgZ2NoYXIgKmRldmljZSwgREJ1c0dNZXRob2RJbnZvY2F0aW9uICpjb250ZXh0KQ0K K3sNCisJR3RrV2lkZ2V0ICpkaWFsb2c7DQorCUd0a1dpZGdldCAqYnV0dG9uOw0KKwlHdGtXaWRn ZXQgKmltYWdlOw0KKwlHdGtXaWRnZXQgKmxhYmVsOw0KKwlHdGtXaWRnZXQgKmVudHJ5Ow0KKwlH dGtXaWRnZXQgKnRhYmxlOw0KKwlHdGtXaWRnZXQgKnZib3g7DQorCXN0cnVjdCBpbnB1dF9kYXRh ICppbnB1dDsNCisJZ2NoYXIgKm1hcmt1cDsNCisNCisJaW5wdXQgPSBnX3RyeV9tYWxsb2MwKHNp emVvZigqaW5wdXQpKTsNCisJaWYgKCFpbnB1dCkNCisJCXJldHVybjsNCisNCisJaW5wdXQtPnBh dGggPSBnX3N0cmR1cChwYXRoKTsNCisJaW5wdXQtPmFkZHJlc3MgPSBnX3N0cmR1cChhZGRyZXNz KTsNCisNCisJaW5wdXQtPmNvbnRleHQgPSBjb250ZXh0Ow0KKw0KKwlkaWFsb2cgPSBndGtfZGlh bG9nX25ldygpOw0KKw0KKwlndGtfd2luZG93X3NldF90aXRsZShHVEtfV0lORE9XKGRpYWxvZyks IF8oIkF1dGhlbnRpY2F0aW9uIHJlcXVlc3QiKSk7DQorDQorCWd0a193aW5kb3dfc2V0X3Jlc2l6 YWJsZShHVEtfV0lORE9XKGRpYWxvZyksIEZBTFNFKTsNCisNCisJZ3RrX3dpbmRvd19zZXRfcG9z aXRpb24oR1RLX1dJTkRPVyhkaWFsb2cpLCBHVEtfV0lOX1BPU19DRU5URVIpOw0KKw0KKwlndGtf d2luZG93X3NldF9rZWVwX2Fib3ZlKEdUS19XSU5ET1coZGlhbG9nKSwgVFJVRSk7DQorDQorCWd0 a193aW5kb3dfc2V0X3VyZ2VuY3lfaGludChHVEtfV0lORE9XKGRpYWxvZyksIFRSVUUpOw0KKw0K KwlndGtfZGlhbG9nX3NldF9oYXNfc2VwYXJhdG9yKEdUS19ESUFMT0coZGlhbG9nKSwgRkFMU0Up Ow0KKw0KKwlndGtfd2luZG93X3NldF90cmFuc2llbnRfZm9yKEdUS19XSU5ET1coZGlhbG9nKSwg R1RLX1dJTkRPVyhtYWluX2RpYWxvZykpOw0KKw0KKwlpbnB1dC0+ZGlhbG9nID0gZGlhbG9nOw0K Kw0KKwlidXR0b24gPSBndGtfZGlhbG9nX2FkZF9idXR0b24oR1RLX0RJQUxPRyhkaWFsb2cpLA0K KwkJCQlHVEtfU1RPQ0tfQ0FOQ0VMLCBHVEtfUkVTUE9OU0VfUkVKRUNUKTsNCisNCisJYnV0dG9u ID0gZ3RrX2RpYWxvZ19hZGRfYnV0dG9uKEdUS19ESUFMT0coZGlhbG9nKSwNCisJCQkJCUdUS19T VE9DS19PSywgR1RLX1JFU1BPTlNFX0FDQ0VQVCk7DQorDQorCWd0a193aWRnZXRfZ3JhYl9kZWZh dWx0KGJ1dHRvbik7DQorDQorCWd0a193aWRnZXRfc2V0X3NlbnNpdGl2ZShidXR0b24sIEZBTFNF KTsNCisNCisJaW5wdXQtPmJ1dHRvbiA9IGJ1dHRvbjsNCisNCisJdGFibGUgPSBndGtfdGFibGVf bmV3KDUsIDIsIEZBTFNFKTsNCisNCisJZ3RrX3RhYmxlX3NldF9yb3dfc3BhY2luZ3MoR1RLX1RB QkxFKHRhYmxlKSwgNCk7DQorCWd0a190YWJsZV9zZXRfY29sX3NwYWNpbmdzKEdUS19UQUJMRSh0 YWJsZSksIDIwKTsNCisNCisJZ3RrX2NvbnRhaW5lcl9zZXRfYm9yZGVyX3dpZHRoKEdUS19DT05U QUlORVIodGFibGUpLCAxMik7DQorDQorCWd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIo R1RLX0RJQUxPRyhkaWFsb2cpLT52Ym94KSwgdGFibGUpOw0KKw0KKwlpbWFnZSA9IGd0a19pbWFn ZV9uZXdfZnJvbV9pY29uX25hbWUoR1RLX1NUT0NLX0RJQUxPR19BVVRIRU5USUNBVElPTiwNCisJ CQkJCQkJR1RLX0lDT05fU0laRV9ESUFMT0cpOw0KKw0KKwlndGtfbWlzY19zZXRfYWxpZ25tZW50 KEdUS19NSVNDKGltYWdlKSwgMC4wLCAwLjApOw0KKw0KKwlndGtfdGFibGVfYXR0YWNoKEdUS19U QUJMRSh0YWJsZSksIGltYWdlLCAwLCAxLCAwLCA1LA0KKwkJCQkJCUdUS19TSFJJTkssIEdUS19G SUxMLCAwLCAwKTsNCisNCisJdmJveCA9IGd0a192Ym94X25ldyhGQUxTRSwgNik7DQorDQorCWxh YmVsID0gZ3RrX2xhYmVsX25ldyhfKCJQYWlyaW5nIHJlcXVlc3QgZm9yIGRldmljZToiKSk7DQor DQorCWd0a19taXNjX3NldF9hbGlnbm1lbnQoR1RLX01JU0MobGFiZWwpLCAwLjAsIDAuMCk7DQor DQorCWd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIodmJveCksIGxhYmVsKTsNCisNCisJ Z3RrX3RhYmxlX2F0dGFjaChHVEtfVEFCTEUodGFibGUpLCB2Ym94LCAxLCAyLCAwLCAxLA0KKwkJ CQlHVEtfRVhQQU5EIHwgR1RLX0ZJTEwsIEdUS19TSFJJTkssIDAsIDApOw0KKw0KKwlsYWJlbCA9 IGd0a19sYWJlbF9uZXcoTlVMTCk7DQorDQorCW1hcmt1cCA9IGdfc3RyZHVwX3ByaW50ZigiPGI+ JXM8L2I+IiwgZGV2aWNlKTsNCisJZ3RrX2xhYmVsX3NldF9tYXJrdXAoR1RLX0xBQkVMKGxhYmVs KSwgbWFya3VwKTsNCisJZ19mcmVlKG1hcmt1cCk7DQorDQorCWd0a19sYWJlbF9zZXRfbGluZV93 cmFwKEdUS19MQUJFTChsYWJlbCksIFRSVUUpOw0KKw0KKwlndGtfbGFiZWxfc2V0X3NlbGVjdGFi bGUoR1RLX0xBQkVMKGxhYmVsKSwgVFJVRSk7DQorDQorCWd0a19taXNjX3NldF9hbGlnbm1lbnQo R1RLX01JU0MobGFiZWwpLCAwLjAsIDAuMCk7DQorDQorCWd0a193aWRnZXRfc2V0X3NpemVfcmVx dWVzdChHVEtfV0lER0VUKGxhYmVsKSwgMjgwLCAtMSk7DQorDQorCWd0a19jb250YWluZXJfYWRk KEdUS19DT05UQUlORVIodmJveCksIGxhYmVsKTsNCisNCisJdmJveCA9IGd0a192Ym94X25ldyhG QUxTRSwgNik7DQorDQorCWxhYmVsID0gZ3RrX2xhYmVsX25ldyhfKCJFbnRlciBwYXNza2V5IGZv ciBhdXRoZW50aWNhdGlvbjoiKSk7DQorDQorCWd0a19taXNjX3NldF9hbGlnbm1lbnQoR1RLX01J U0MobGFiZWwpLCAwLjAsIDAuMCk7DQorDQorCWd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlO RVIodmJveCksIGxhYmVsKTsNCisNCisJZ3RrX3RhYmxlX2F0dGFjaChHVEtfVEFCTEUodGFibGUp LCB2Ym94LCAxLCAyLCAyLCAzLA0KKwkJCQlHVEtfRVhQQU5EIHwgR1RLX0ZJTEwsIEdUS19TSFJJ TkssIDAsIDApOw0KKw0KKwllbnRyeSA9IGd0a19lbnRyeV9uZXcoKTsNCisNCisJZ3RrX2VudHJ5 X3NldF9tYXhfbGVuZ3RoKEdUS19FTlRSWShlbnRyeSksIDE2KTsNCisNCisJZ3RrX2VudHJ5X3Nl dF9hY3RpdmF0ZXNfZGVmYXVsdChHVEtfRU5UUlkoZW50cnkpLCBUUlVFKTsNCisNCisJZ3RrX2Vu dHJ5X3NldF92aXNpYmlsaXR5KEdUS19FTlRSWShlbnRyeSksIEZBTFNFKTsNCisNCisJaW5wdXQt PmVudHJ5ID0gZW50cnk7DQorDQorCWdfc2lnbmFsX2Nvbm5lY3QoR19PQkpFQ1QoZW50cnkpLCAi Y2hhbmdlZCIsDQorCQkJCUdfQ0FMTEJBQ0soY2hhbmdlZF9jYWxsYmFjayksIGlucHV0KTsNCisN CisJZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUih2Ym94KSwgZW50cnkpOw0KKw0KKwli dXR0b24gPSBndGtfY2hlY2tfYnV0dG9uX25ld193aXRoX2xhYmVsKF8oIlNob3cgaW5wdXQiKSk7 DQorDQorCWdfc2lnbmFsX2Nvbm5lY3QoR19PQkpFQ1QoYnV0dG9uKSwgInRvZ2dsZWQiLA0KKwkJ CQlHX0NBTExCQUNLKHRvZ2dsZWRfY2FsbGJhY2spLCBpbnB1dCk7DQorDQorCWd0a19jb250YWlu ZXJfYWRkKEdUS19DT05UQUlORVIodmJveCksIGJ1dHRvbik7DQorDQorCWlucHV0X2xpc3QgPSBn X2xpc3RfYXBwZW5kKGlucHV0X2xpc3QsIGlucHV0KTsNCisJZ3RrX3dpZGdldF9zaG93X2FsbChk aWFsb2cpOw0KKwlndGtfd2luZG93X3ByZXNlbnQoR1RLX1dJTkRPVyhkaWFsb2cpKTsNCisNCisJ Z19zaWduYWxfY29ubmVjdChHX09CSkVDVChkaWFsb2cpLCAicmVzcG9uc2UiLA0KKwkJCQlHX0NB TExCQUNLKHBhc3NrZXlfY2FsbGJhY2spLCBpbnB1dCk7DQorfQ0KKw0KK3N0YXRpYyBnYm9vbGVh biBwYXNza2V5X2FnZW50X3JlcXVlc3QoR09iamVjdCAqYWdlbnQsDQorCQkJCWNvbnN0IGNoYXIg KnBhdGgsIGNvbnN0IGNoYXIgKmFkZHJlc3MsDQorCQkJCQlEQnVzR01ldGhvZEludm9jYXRpb24g KmNvbnRleHQpDQorew0KKwlCbHVldG9vdGhDbGllbnQgKmNsaWVudCA9IEJMVUVUT09USF9DTElF TlQoYWdlbnQpOw0KKwljb25zdCBjaGFyICpuYW1lID0gTlVMTDsNCisJZ2NoYXIgKmRldmljZTsN CisNCisJbmFtZSA9IGJsdWV0b290aF9jbGllbnRfZ2V0X25hbWUoY2xpZW50LCBwYXRoKTsNCisN CisJaWYgKG5hbWUpIHsNCisJCWlmIChnX3N0cnJzdHIobmFtZSwgYWRkcmVzcykpDQorCQkJZGV2 aWNlID0gZ19zdHJkdXAobmFtZSk7DQorCQllbHNlDQorCQkJZGV2aWNlID0gZ19zdHJkdXBfcHJp bnRmKCIlcyAoJXMpIiwgbmFtZSwgYWRkcmVzcyk7DQorCX0gZWxzZQ0KKwkJZGV2aWNlID0gZ19z dHJkdXAoYWRkcmVzcyk7DQorDQorCXBhc3NrZXlfZGlhbG9nKHBhdGgsIGFkZHJlc3MsIGRldmlj ZSwgY29udGV4dCk7DQorDQorCWdfZnJlZShkZXZpY2UpOw0KKwlyZXR1cm4gVFJVRTsNCit9DQor DQorc3RhdGljIGdib29sZWFuIHBhc3NrZXlfYWdlbnRfY2FuY2VsKEdPYmplY3QgKmFnZW50LA0K KwkJCWNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKmFkZHJlc3MsIEdFcnJvciAqKmVycm9y KQ0KK3sNCisJR0xpc3QgKmxpc3Q7DQorCUdFcnJvciAqcmVzdWx0Ow0KKwlzdHJ1Y3QgaW5wdXRf ZGF0YSAqaW5wdXQ7DQorDQorCWlucHV0ID0gZ190cnlfbWFsbG9jMChzaXplb2YoKmlucHV0KSk7 DQorCWlmICghaW5wdXQpDQorCQlyZXR1cm4gRkFMU0U7DQorDQorCWlucHV0LT5wYXRoID0gZ19z dHJkdXAocGF0aCk7DQorCWlucHV0LT5hZGRyZXNzID0gZ19zdHJkdXAoYWRkcmVzcyk7DQorDQor CWxpc3QgPSBnX2xpc3RfZmluZF9jdXN0b20oaW5wdXRfbGlzdCwgaW5wdXQsIGlucHV0X2NvbXBh cmUpOw0KKw0KKwlnX2ZyZWUoaW5wdXQtPmFkZHJlc3MpOw0KKwlnX2ZyZWUoaW5wdXQtPnBhdGgp Ow0KKwlnX2ZyZWUoaW5wdXQpOw0KKw0KKwlpZiAoIWxpc3QgfHwgIWxpc3QtPmRhdGEpDQorCQly ZXR1cm4gRkFMU0U7DQorDQorCWlucHV0ID0gbGlzdC0+ZGF0YTsNCisNCisJcmVzdWx0ID0gZ19l cnJvcl9uZXcoQUdFTlRfRVJST1IsIEFHRU5UX0VSUk9SX1JFSkVDVCwNCisJCQkJCQlfKCJBZ2Vu dCBjYWxsYmFjayBjYW5jZWxlZCIpKTsNCisNCisJZGJ1c19nX21ldGhvZF9yZXR1cm5fZXJyb3Io aW5wdXQtPmNvbnRleHQsIHJlc3VsdCk7DQorDQorCWlucHV0X2ZyZWUoaW5wdXQpOw0KKw0KKwly ZXR1cm4gVFJVRTsNCit9DQorDQorc3RhdGljIGdib29sZWFuIHBhc3NrZXlfYWdlbnRfcmVsZWFz ZShHT2JqZWN0ICphZ2VudCwgR0Vycm9yICoqZXJyb3IpDQorew0KKwlyZXR1cm4gVFJVRTsNCit9 DQorDQorI2luY2x1ZGUgInBhc3NrZXktYWdlbnQtZ2x1ZS5oIg0KKw0KK3ZvaWQgc2V0X2FnZW50 X3BhcmVudF93aW5kb3coR3RrV2lkZ2V0ICp3aW5kb3cpDQorew0KKwltYWluX2RpYWxvZyA9IHdp bmRvdzsNCit9DQorDQorZ2Jvb2xlYW4gcmVnaXN0ZXJfYWdlbnQoQmx1ZXRvb3RoQ2xpZW50ICpj bGllbnQsDQorCQkJCQkJY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqYWRkcmVzcykNCit7 DQorCXJldHVybiBibHVldG9vdGhfY2xpZW50X3JlZ2lzdGVyX3Bhc3NrZXlfYWdlbnQoY2xpZW50 LCBwYXRoLCBhZGRyZXNzLCAmZGJ1c19nbGliX3Bhc3NrZXlfYWdlbnRfb2JqZWN0X2luZm8pOw0K K30NCisNCmRpZmYgLXVwck4gLi4vYmx1ZXotZ25vbWUtc2VydmljZXMvd2l6YXJkL2FnZW50Lmgg Li93aXphcmQvYWdlbnQuaA0KLS0tIC4uL2JsdWV6LWdub21lLXNlcnZpY2VzL3dpemFyZC9hZ2Vu dC5oCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwDQorKysgLi93aXphcmQvYWdl bnQuaAkyMDA4LTA2LTMwIDA5OjU2OjQ1LjAwMDAwMDAwMCAtMDQwMA0KQEAgLTAsMCArMSwzMCBA QA0KKy8qDQorICoNCisgKiAgQmx1ZVogLSBCbHVldG9vdGggcHJvdG9jb2wgc3RhY2sgZm9yIExp bnV4DQorICoNCisgKiAgQ29weXJpZ2h0IChDKSAyMDA1LTIwMDggIE1hcmNlbCBIb2x0bWFubiA8 bWFyY2VsQGhvbHRtYW5uLm9yZz4NCisgKiAgQ29weXJpZ2h0IChDKSAyMDA2LTIwMDcgIEJhc3Rp ZW4gTm9jZXJhIDxoYWRlc3NAaGFkZXNzLm5ldD4NCisgKg0KKyAqDQorICogIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 DQorICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5DQorICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yDQorICogIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uDQorICoNCisgKiAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQorICogIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQorICogIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUNCisgKiAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCisg Kg0KKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQ0KKyAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3 cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu a2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQ0KKyAqDQor ICovDQorDQorI2luY2x1ZGUgPGd0ay9ndGsuaD4NCisjaW5jbHVkZSAiY2xpZW50LmgiDQorDQor dm9pZCBzZXRfYWdlbnRfcGFyZW50X3dpbmRvdyhHdGtXaWRnZXQgKndpbmRvdyk7DQoraW50IHJl Z2lzdGVyX2FnZW50KEJsdWV0b290aENsaWVudCAqY2xpZW50LCBjb25zdCBjaGFyICpwYXRoLCBj b25zdCBjaGFyICphZGRyZXNzKTsNCisNCmRpZmYgLXVwck4gLi4vYmx1ZXotZ25vbWUtc2Vydmlj ZXMvd2l6YXJkL21haW4uYyAuL3dpemFyZC9tYWluLmMNCi0tLSAuLi9ibHVlei1nbm9tZS1zZXJ2 aWNlcy93aXphcmQvbWFpbi5jCTIwMDgtMDYtMzAgMDk6Mjc6MjMuMDAwMDAwMDAwIC0wNDAwDQor KysgLi93aXphcmQvbWFpbi5jCTIwMDgtMDYtMzAgMTA6MDQ6MjkuMDAwMDAwMDAwIC0wNDAwDQpA QCAtMzIsNiArMzIsNyBAQA0KICNpbmNsdWRlIDxndGsvZ3RrLmg+DQogDQogI2luY2x1ZGUgImNs aWVudC5oIg0KKyNpbmNsdWRlICJhZ2VudC5oIg0KIA0KICNpbmNsdWRlICJkYnVzLWdsdWUuaCIN CiANCkBAIC00MSw5MyArNDIsMTQwIEBADQogc3RhdGljIGdib29sZWFuIHNpbmdsZXRvbiA9IEZB TFNFOw0KIA0KIHN0YXRpYyBCbHVldG9vdGhDbGllbnQgKmNsaWVudDsNCitzdGF0aWMgREJ1c0dQ cm94eUNhbGwgKmNhbGwgPSBOVUxMOw0KIA0KIHN0YXRpYyBnY2hhciAqYWRkcmVzcyA9IE5VTEw7 DQotc3RhdGljIGdjaGFyICpwYXNza2V5ID0gIjEyMzQ1NiI7DQogDQorc3RhdGljIEd0a1dpZGdl dCAqcGFnZV9wcmV2ID0gTlVMTDsNCiBzdGF0aWMgR3RrV2lkZ2V0ICpwYWdlX3NlYXJjaCA9IE5V TEw7DQotc3RhdGljIEd0a1dpZGdldCAqcGFnZV9pbmZvID0gTlVMTDsNCiBzdGF0aWMgR3RrV2lk Z2V0ICpwYWdlX3BhaXJpbmcgPSBOVUxMOw0KK3N0YXRpYyBHdGtXaWRnZXQgKnBhZ2VfaW5mbyA9 IE5VTEw7DQogc3RhdGljIEd0a1dpZGdldCAqcGFnZV9zdW1tYXJ5ID0gTlVMTDsNCitzdGF0aWMg aW50IHBhZ2Vfc3VtbWFyeV9udW0gPSAwOw0KIA0KLXN0YXRpYyBHdGtXaWRnZXQgKmxhYmVsX3Bh aXJpbmcgPSBOVUxMOw0KLXN0YXRpYyBHdGtXaWRnZXQgKmxhYmVsX3Bhc3NrZXkgPSBOVUxMOw0K K3N0YXRpYyBHdGtXaWRnZXQgKnBhaXJpbmdfcHJvZ3Jlc3MgPSBOVUxMOw0KK3N0YXRpYyBndWlu dCBwYWlyaW5nX3Byb2dyZXNzX3RpbWVvdXQgPSAwOw0KK3N0YXRpYyBHdGtXaWRnZXQgKnBhaXJp bmdfbWVzc2FnZSA9IE5VTEw7DQogDQorc3RhdGljIEdTTGlzdCAqdHlwZV9ncm91cCA9IE5VTEw7 DQogc3RhdGljIEd0a1dpZGdldCAqc2VsZWN0b3IgPSBOVUxMOw0KIA0KLXN0YXRpYyBnYm9vbGVh biBwYXNza2V5X2FnZW50X3JlcXVlc3QoR09iamVjdCAqYWdlbnQsDQotCQkJCWNvbnN0IGNoYXIg KnBhdGgsIGNvbnN0IGNoYXIgKmFkZHJlc3MsDQotCQkJCQlEQnVzR01ldGhvZEludm9jYXRpb24g KmNvbnRleHQpDQotew0KLQljb25zdCBjaGFyICp2YWx1ZSA9IHBhc3NrZXk7DQotDQotCS8qIEFw cGxlIFdpcmVsZXNzIGFuZCBNaWdodHkgTW91c2UgKi8NCi0JaWYgKGdfc3RyX2hhc19wcmVmaXgo YWRkcmVzcywgIjAwOjBBOjk1OiIpID09IFRSVUUgfHwNCi0JCQkJZ19zdHJfaGFzX3ByZWZpeChh ZGRyZXNzLCAiMDA6MTQ6NTE6IikgPT0gVFJVRSkNCi0JCXZhbHVlID0gIjAwMDAiOw0KLQ0KLQlk YnVzX2dfbWV0aG9kX3JldHVybihjb250ZXh0LCB2YWx1ZSk7DQorc3RhdGljIHZvaWQgY2xvc2Vf Y2FsbGJhY2soR3RrV2lkZ2V0ICphc3Npc3RhbnQsIGdwb2ludGVyIGRhdGEpDQorew0KKwlndGtf d2lkZ2V0X2Rlc3Ryb3koYXNzaXN0YW50KTsNCiANCi0JcmV0dXJuIFRSVUU7DQorCWd0a19tYWlu X3F1aXQoKTsNCiB9DQogDQotc3RhdGljIGdib29sZWFuIHBhc3NrZXlfYWdlbnRfY2FuY2VsKEdP YmplY3QgKmFnZW50LA0KLQkJCWNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKmFkZHJlc3Ms IEdFcnJvciAqKmVycm9yKQ0KK3N0YXRpYyB2b2lkIGNhbmNlbF9jYWxsYmFjayhHdGtXaWRnZXQg KmFzc2lzdGFudCwgZ3BvaW50ZXIgZGF0YSkNCiB7DQotCXJldHVybiBUUlVFOw0KKwlndGtfd2lk Z2V0X2Rlc3Ryb3koYXNzaXN0YW50KTsNCisNCisJZ3RrX21haW5fcXVpdCgpOw0KIH0NCiANCi1z dGF0aWMgZ2Jvb2xlYW4gcGFzc2tleV9hZ2VudF9yZWxlYXNlKEdPYmplY3QgKmFnZW50LCBHRXJy b3IgKiplcnJvcikNCitzdGF0aWMgZ2ludCBzZWxlY3RlZF90eXBlKHZvaWQpDQogew0KLQlyZXR1 cm4gVFJVRTsNCisJR1NMaXN0ICppdGVyOw0KKwlmb3IgKGl0ZXIgPSB0eXBlX2dyb3VwOyBpdGVy OyBpdGVyID0gaXRlci0+bmV4dCkgew0KKwkJR3RrVG9nZ2xlQnV0dG9uICpidXR0b24gPSBHVEtf VE9HR0xFX0JVVFRPTihpdGVyLT5kYXRhKTsNCisJCWlmIChndGtfdG9nZ2xlX2J1dHRvbl9nZXRf YWN0aXZlKGJ1dHRvbikpIHsNCisJCQlncG9pbnRlciBkYXRhID0gZ19vYmplY3RfZ2V0X2RhdGEo R19PQkpFQ1QoYnV0dG9uKSwgImJsdWV6LXR5cGUiKTsNCisJCQlyZXR1cm4gR1BPSU5URVJfVE9f SU5UKGRhdGEpOw0KKwkJfQ0KKwl9DQorCXJldHVybiBCTFVFVE9PVEhfVFlQRV9BTlk7DQogfQ0K KyANCitzdGF0aWMgdm9pZCBzaG93X3BhaXJpbmdfZXJyb3IoR0Vycm9yICplcnJvcikNCit7DQor CWdjaGFyICptc2c7DQorCWNvbnN0IGdjaGFyICplcnJtc2c7DQogDQotI2luY2x1ZGUgInBhc3Nr ZXktYWdlbnQtZ2x1ZS5oIg0KKwlndGtfd2lkZ2V0X2hpZGUocGFpcmluZ19wcm9ncmVzcyk7DQor CWlmIChwYWlyaW5nX3Byb2dyZXNzX3RpbWVvdXQgPiAwKSB7DQorCQlnX3NvdXJjZV9yZW1vdmUo cGFpcmluZ19wcm9ncmVzc190aW1lb3V0KTsNCisJCXBhaXJpbmdfcHJvZ3Jlc3NfdGltZW91dCA9 IDA7DQorCX0NCiANCi0jaWYgMA0KLXN0YXRpYyBnaW50IHBhZ2VfZm9yd2FyZChnaW50IGN1cnJl bnRfcGFnZSwgZ3BvaW50ZXIgZGF0YSkNCi17DQotCXJldHVybiBjdXJyZW50X3BhZ2UgKyAxOw0K KwlpZiAoIWVycm9yKQ0KKwkJZXJybXNnID0gXygiQ291bGQgbm90IGNvbnRhY3QgYmx1ZXRvb3Ro IHNlcnZpY2UiKTsNCisJZWxzZQ0KKwkJZXJybXNnID0gZXJyb3ItPm1lc3NhZ2U7DQorDQorCW1z ZyA9IGdfc3RyZHVwX3ByaW50ZigiPGI+JXM8L2I+XG5cbiVzIiwgXygiQ2Fubm90IGNvbm5lY3Qg dG8gZGV2aWNlOiIpLCBlcnJtc2cpOw0KKwlndGtfbGFiZWxfc2V0X21hcmt1cChHVEtfTEFCRUwo cGFpcmluZ19tZXNzYWdlKSwgbXNnKTsNCisJZ3RrX3dpZGdldF9zaG93KHBhaXJpbmdfbWVzc2Fn ZSk7DQorCWdfZnJlZShtc2cpOw0KIH0NCi0jZW5kaWYNCiANCi1zdGF0aWMgdm9pZCBjbG9zZV9j YWxsYmFjayhHdGtXaWRnZXQgKmFzc2lzdGFudCwgZ3BvaW50ZXIgZGF0YSkNCitzdGF0aWMgdm9p ZCB0cnVzdGVkX2NhbGxiYWNrKEdFcnJvciAqZXJyb3IsIGdwb2ludGVyIGRhdGEpDQogew0KLQln dGtfd2lkZ2V0X2Rlc3Ryb3koYXNzaXN0YW50KTsNCisJR3RrQXNzaXN0YW50ICphc3Npc3RhbnQg PSBHVEtfQVNTSVNUQU5UKGRhdGEpOw0KIA0KLQlndGtfbWFpbl9xdWl0KCk7DQorCWd0a193aWRn ZXRfaGlkZShwYWlyaW5nX3Byb2dyZXNzKTsNCisJaWYgKHBhaXJpbmdfcHJvZ3Jlc3NfdGltZW91 dCA+IDApIHsNCisJCWdfc291cmNlX3JlbW92ZShwYWlyaW5nX3Byb2dyZXNzX3RpbWVvdXQpOw0K KwkJcGFpcmluZ19wcm9ncmVzc190aW1lb3V0ID0gMDsNCisJfQ0KKw0KKwlpZiAoZXJyb3IpIHsN CisJCXNob3dfcGFpcmluZ19lcnJvcihlcnJvcik7DQorCX0NCisJZWxzZSB7DQorCQlndGtfYXNz aXN0YW50X3NldF9wYWdlX2NvbXBsZXRlKGFzc2lzdGFudCwgcGFnZV9wYWlyaW5nLCBUUlVFKTsN CisJCWd0a19hc3Npc3RhbnRfc2V0X2N1cnJlbnRfcGFnZShhc3Npc3RhbnQsIHBhZ2Vfc3VtbWFy eV9udW0pOyAvKiBqdW1wIHRvIHN1bW1hcnkgKi8NCisJfQ0KIH0NCiANCi1zdGF0aWMgdm9pZCBj YW5jZWxfY2FsbGJhY2soR3RrV2lkZ2V0ICphc3Npc3RhbnQsIGdwb2ludGVyIGRhdGEpDQorc3Rh dGljIHZvaWQgY29ubmVjdF9jYWxsYmFjayhHRXJyb3IgKmVycm9yLCBncG9pbnRlciBkYXRhKQ0K IHsNCi0JZ3RrX3dpZGdldF9kZXN0cm95KGFzc2lzdGFudCk7DQorCWlmIChlcnJvciB8fCAhYmx1 ZXRvb3RoX2NsaWVudF9zZXRfdHJ1c3RlZChjbGllbnQsIE5VTEwsIGFkZHJlc3MsIHRydXN0ZWRf Y2FsbGJhY2ssIGRhdGEpKQ0KKwkJc2hvd19wYWlyaW5nX2Vycm9yKGVycm9yKTsNCit9DQogDQot CWd0a19tYWluX3F1aXQoKTsNCitzdGF0aWMgZ2Jvb2xlYW4gcHVsc2VfcHJvZ3Jlc3MoZ3BvaW50 ZXIgZGF0YSkNCit7DQorCWd0a19wcm9ncmVzc19iYXJfcHVsc2UoR1RLX1BST0dSRVNTX0JBUihw YWlyaW5nX3Byb2dyZXNzKSk7DQorCXJldHVybiBUUlVFOw0KIH0NCiANCiBzdGF0aWMgdm9pZCBw cmVwYXJlX2NhbGxiYWNrKEd0a1dpZGdldCAqYXNzaXN0YW50LA0KIAkJCQlHdGtXaWRnZXQgKnBh Z2UsIGdwb2ludGVyIGRhdGEpDQogew0KKwlnYm9vbGVhbiBjb21wbGV0ZSA9IFRSVUU7DQorDQog CWlmIChwYWdlID09IHBhZ2Vfc2VhcmNoKSB7DQorCQlnaW50IHR5cGUgPSBzZWxlY3RlZF90eXBl KCk7DQorCQlnX29iamVjdF9zZXQoR19PQkpFQ1Qoc2VsZWN0b3IpLCAiZGV2aWNlLXR5cGUtZmls dGVyIiwgdHlwZSwgTlVMTCk7DQogCQlibHVldG9vdGhfZGV2aWNlX3NlbGVjdGlvbl9zdGFydF9k aXNjb3ZlcnkoQkxVRVRPT1RIX0RFVklDRV9TRUxFQ1RJT04oc2VsZWN0b3IpKTsNCi0JCXJldHVy bjsNCisJCWlmIChhZGRyZXNzKQ0KKwkJCWJsdWV0b290aF9jbGllbnRfY2FuY2VsX2NhbGwoY2xp ZW50LCBOVUxMLCBhZGRyZXNzKTsNCisJCWNvbXBsZXRlID0gYWRkcmVzcyAhPSBOVUxMOw0KIAl9 DQotDQotCWlmIChwYWdlID09IHBhZ2VfcGFpcmluZykgew0KKwllbHNlIGlmIChwYWdlID09IHBh Z2VfcGFpcmluZykgew0KIAkJYmx1ZXRvb3RoX2NsaWVudF9jYW5jZWxfZGlzY292ZXJ5KGNsaWVu dCwgTlVMTCk7DQogDQotCQlibHVldG9vdGhfY2xpZW50X3JlZ2lzdGVyX3Bhc3NrZXlfYWdlbnQo Y2xpZW50LA0KLQkJCQkJIi9vcmcvYmx1ZXovYXBwbGV0IiwgYWRkcmVzcywNCi0JCQkJCSZkYnVz X2dsaWJfcGFzc2tleV9hZ2VudF9vYmplY3RfaW5mbyk7DQotDQotCQlibHVldG9vdGhfY2xpZW50 X2NyZWF0ZV9ib25kaW5nKGNsaWVudCwgTlVMTCwgYWRkcmVzcyk7DQotDQotCQlndGtfbGFiZWxf c2V0X21hcmt1cChHVEtfTEFCRUwobGFiZWxfcGFpcmluZyksIGFkZHJlc3MpOw0KLQkJZ3RrX2xh YmVsX3NldF9tYXJrdXAoR1RLX0xBQkVMKGxhYmVsX3Bhc3NrZXkpLCBwYXNza2V5KTsNCi0JCXJl dHVybjsNCisJCXJlZ2lzdGVyX2FnZW50KGNsaWVudCwgIi9vcmcvYmx1ZXovYXBwbGV0IiwgYWRk cmVzcyk7DQorDQorCQlpZiAocGFnZV9wcmV2ID09IHBhZ2Vfc2VhcmNoKSB7DQorCQkJcGFpcmlu Z19wcm9ncmVzc190aW1lb3V0ID0gZ190aW1lb3V0X2FkZCgxMDAsIHB1bHNlX3Byb2dyZXNzLCBw YWlyaW5nX3Byb2dyZXNzKTsNCisJCQlndGtfd2lkZ2V0X3Nob3cocGFpcmluZ19wcm9ncmVzcyk7 DQorCQkJZ3RrX3dpZGdldF9oaWRlKHBhaXJpbmdfbWVzc2FnZSk7DQorCQkJY29tcGxldGUgPSBG QUxTRTsNCisJCQlpZiAoIWJsdWV0b290aF9jbGllbnRfY29ubmVjdChjbGllbnQsIHNlbGVjdGVk X3R5cGUoKSwgTlVMTCwgYWRkcmVzcywNCisJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25uZWN0X2NhbGxiYWNrLCBhc3Npc3RhbnQpKQ0KKwkJCQlzaG93X3BhaXJpbmdfZXJyb3Io TlVMTCk7DQorCQl9DQorCX0NCisNCisJaWYgKHBhZ2UgIT0gcGFnZV9wYWlyaW5nICYmIHBhaXJp bmdfcHJvZ3Jlc3NfdGltZW91dCA+IDApIHsNCisJCWdfc291cmNlX3JlbW92ZShwYWlyaW5nX3By b2dyZXNzX3RpbWVvdXQpOw0KKwkJcGFpcmluZ19wcm9ncmVzc190aW1lb3V0ID0gMDsNCiAJfQ0K IA0KLQlndGtfYXNzaXN0YW50X3NldF9wYWdlX2NvbXBsZXRlKEdUS19BU1NJU1RBTlQoYXNzaXN0 YW50KSwgcGFnZSwgVFJVRSk7DQorCWd0a19hc3Npc3RhbnRfc2V0X3BhZ2VfY29tcGxldGUoR1RL X0FTU0lTVEFOVChhc3Npc3RhbnQpLCBwYWdlLCBjb21wbGV0ZSk7DQorCXBhZ2VfcHJldiA9IHBh Z2U7DQogfQ0KIA0KIHN0YXRpYyBHdGtXaWRnZXQgKmNyZWF0ZV92Ym94KEd0a1dpZGdldCAqYXNz aXN0YW50LCBHdGtBc3Npc3RhbnRQYWdlVHlwZSB0eXBlLA0KQEAgLTE4MCw1NiArMjI4LDYgQEAg c3RhdGljIEd0a1dpZGdldCAqY3JlYXRlX3Zib3goR3RrV2lkZ2V0IA0KIAlyZXR1cm4gdmJveDsN CiB9DQogDQotc3RhdGljIHZvaWQgY3JlYXRlX2ludHJvKEd0a1dpZGdldCAqYXNzaXN0YW50KQ0K LXsNCi0JR3RrV2lkZ2V0ICp2Ym94Ow0KLQlHdGtXaWRnZXQgKmxhYmVsOw0KLQlHdGtXaWRnZXQg KmNvbWJvOw0KLQlHdGtUcmVlTW9kZWwgKm1vZGVsOw0KLQlHdGtDZWxsUmVuZGVyZXIgKnJlbmRl cmVyOw0KLQ0KLQl2Ym94ID0gY3JlYXRlX3Zib3goYXNzaXN0YW50LCBHVEtfQVNTSVNUQU5UX1BB R0VfSU5UUk8sDQotCQkJXygiSW50cm9kdWN0aW9uIiksDQotCQkJXygiV2VsY29tZSB0byB0aGUg Qmx1ZXRvb3RoIGRldmljZSBzZXR1cCB3aXphcmQiKSk7DQotDQotCWxhYmVsID0gZ3RrX2xhYmVs X25ldyhOVUxMKTsNCi0NCi0JZ3RrX2xhYmVsX3NldF9tYXJrdXAoR1RLX0xBQkVMKGxhYmVsKSwg XygiVGhlIGRldmljZSB3aXphcmQgd2lsbCAiDQotCQkJCSJ3YWxrIHlvdSB0aHJvdWdoIHRoZSBw cm9jZXNzIG9mIGNvbmZpZ3VyaW5nICINCi0JCQkJIkJsdWV0b290aCBlbmFibGVkIGRldmljZXMg Zm9yIHVzZSB3aXRoIHRoaXMgIg0KLQkJCQkiY29tcHV0ZXIuXG5cbiIpKTsNCi0NCi0JZ3RrX21p c2Nfc2V0X2FsaWdubWVudChHVEtfTUlTQyhsYWJlbCksIDAsIDApOw0KLQ0KLQlndGtfbGFiZWxf c2V0X2xpbmVfd3JhcChHVEtfTEFCRUwobGFiZWwpLCBUUlVFKTsNCi0NCi0JZ3RrX3dpZGdldF9z ZXRfc2l6ZV9yZXF1ZXN0KEdUS19XSURHRVQobGFiZWwpLCAzODAsIC0xKTsNCi0NCi0JZ3RrX2Jv eF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIGxhYmVsLCBGQUxTRSwgVFJVRSwgMCk7DQotDQot CWNvbWJvID0gZ3RrX2NvbWJvX2JveF9uZXcoKTsNCi0NCi0JbW9kZWwgPSBibHVldG9vdGhfY2xp ZW50X2dldF9tb2RlbF9hZGFwdGVyX2xpc3QoY2xpZW50KTsNCi0NCi0JZ3RrX2NvbWJvX2JveF9z ZXRfbW9kZWwoR1RLX0NPTUJPX0JPWChjb21ibyksIG1vZGVsKTsNCi0NCi0JZ19vYmplY3RfdW5y ZWYobW9kZWwpOw0KLQ0KLQlndGtfY29tYm9fYm94X3NldF9hY3RpdmUoR1RLX0NPTUJPX0JPWChj b21ibyksIDApOw0KLQ0KLQlndGtfY2VsbF9sYXlvdXRfY2xlYXIoR1RLX0NFTExfTEFZT1VUKGNv bWJvKSk7DQotDQotCXJlbmRlcmVyID0gZ3RrX2NlbGxfcmVuZGVyZXJfdGV4dF9uZXcoKTsNCi0N Ci0JZ3RrX2NlbGxfbGF5b3V0X3BhY2tfc3RhcnQoR1RLX0NFTExfTEFZT1VUKGNvbWJvKSwgcmVu ZGVyZXIsIFRSVUUpOw0KLQ0KLQlndGtfY2VsbF9sYXlvdXRfc2V0X2F0dHJpYnV0ZXMoR1RLX0NF TExfTEFZT1VUKGNvbWJvKSwgcmVuZGVyZXIsDQotCQkJCQkJInRleHQiLCBDT0xVTU5fTkFNRSwg TlVMTCk7DQotDQotCWlmIChndGtfdHJlZV9tb2RlbF9pdGVyX25fY2hpbGRyZW4obW9kZWwsIE5V TEwpID4gMSkNCi0JCWd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCBjb21ibywgRkFM U0UsIEZBTFNFLCAwKTsNCi19DQotDQogc3RhdGljIHZvaWQgY3JlYXRlX3R5cGUoR3RrV2lkZ2V0 ICphc3Npc3RhbnQpDQogew0KIAlHdGtXaWRnZXQgKnZib3g7DQpAQCAtMjM4LDU1ICsyMzYsMjQg QEAgc3RhdGljIHZvaWQgY3JlYXRlX3R5cGUoR3RrV2lkZ2V0ICphc3Npcw0KIA0KIAl2Ym94ID0g Y3JlYXRlX3Zib3goYXNzaXN0YW50LCBHVEtfQVNTSVNUQU5UX1BBR0VfQ09OVEVOVCwNCiAJCQlf KCJEZXZpY2UgdHlwZSIpLA0KLQkJCV8oIlNlbGVjdCB0aGUgdHlwZSBvZiBkZXZpY2UgeW91IHdh bnQgdG8gc2V0dXAiKSk7DQotDQotCWJ1dHRvbiA9IGd0a19yYWRpb19idXR0b25fbmV3X3dpdGhf bGFiZWwoZ3JvdXAsIF8oIk1vdXNlIikpOw0KLQ0KLQlncm91cCA9IGd0a19yYWRpb19idXR0b25f Z2V0X2dyb3VwKEdUS19SQURJT19CVVRUT04oYnV0dG9uKSk7DQotDQotCS8vZ3RrX3dpZGdldF9z ZXRfc2Vuc2l0aXZlKEdUS19XSURHRVQoYnV0dG9uKSwgRkFMU0UpOw0KKwkJCV8oIlNlbGVjdCB0 aGUgdHlwZSBvZiBkZXZpY2UgeW91IHdhbnQgdG8gY29ubmVjdCIpKTsNCiANCisJYnV0dG9uID0g Z3RrX3JhZGlvX2J1dHRvbl9uZXdfd2l0aF9sYWJlbChOVUxMLCBfKCJNb3VzZSIpKTsNCisJZ19v YmplY3Rfc2V0X2RhdGEoR19PQkpFQ1QoYnV0dG9uKSwNCisJICAgICAgICAgICAgICAgICAgImJs dWV6LXR5cGUiLCBHSU5UX1RPX1BPSU5URVIoQkxVRVRPT1RIX1RZUEVfTU9VU0UpKTsNCiAJZ3Rr X2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIGJ1dHRvbiwgRkFMU0UsIEZBTFNFLCAwKTsN CiANCi0JYnV0dG9uID0gZ3RrX3JhZGlvX2J1dHRvbl9uZXdfd2l0aF9sYWJlbChncm91cCwgXygi S2V5Ym9hcmQiKSk7DQotDQotCWdyb3VwID0gZ3RrX3JhZGlvX2J1dHRvbl9nZXRfZ3JvdXAoR1RL X1JBRElPX0JVVFRPTihidXR0b24pKTsNCi0NCi0JLy9ndGtfd2lkZ2V0X3NldF9zZW5zaXRpdmUo R1RLX1dJREdFVChidXR0b24pLCBGQUxTRSk7DQotDQorCWJ1dHRvbiA9IGd0a19yYWRpb19idXR0 b25fbmV3X3dpdGhfbGFiZWxfZnJvbV93aWRnZXQoR1RLX1JBRElPX0JVVFRPTihidXR0b24pLCBf KCJLZXlib2FyZCIpKTsNCisJZ19vYmplY3Rfc2V0X2RhdGEoR19PQkpFQ1QoYnV0dG9uKSwNCisJ ICAgICAgICAgICAgICAgICAgImJsdWV6LXR5cGUiLCBHSU5UX1RPX1BPSU5URVIoQkxVRVRPT1RI X1RZUEVfS0VZQk9BUkQpKTsNCiAJZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIGJ1 dHRvbiwgRkFMU0UsIEZBTFNFLCAwKTsNCiANCi0JYnV0dG9uID0gZ3RrX3JhZGlvX2J1dHRvbl9u ZXdfd2l0aF9sYWJlbChncm91cCwgXygiTW9iaWxlIHBob25lIikpOw0KLQ0KLQlncm91cCA9IGd0 a19yYWRpb19idXR0b25fZ2V0X2dyb3VwKEdUS19SQURJT19CVVRUT04oYnV0dG9uKSk7DQotDQot CWd0a193aWRnZXRfc2V0X3NlbnNpdGl2ZShHVEtfV0lER0VUKGJ1dHRvbiksIEZBTFNFKTsNCi0N Ci0JZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIGJ1dHRvbiwgRkFMU0UsIEZBTFNF LCAwKTsNCi0NCi0JYnV0dG9uID0gZ3RrX3JhZGlvX2J1dHRvbl9uZXdfd2l0aF9sYWJlbChncm91 cCwgXygiUHJpbnRlciIpKTsNCi0NCi0JZ3JvdXAgPSBndGtfcmFkaW9fYnV0dG9uX2dldF9ncm91 cChHVEtfUkFESU9fQlVUVE9OKGJ1dHRvbikpOw0KLQ0KLQlndGtfd2lkZ2V0X3NldF9zZW5zaXRp dmUoR1RLX1dJREdFVChidXR0b24pLCBGQUxTRSk7DQotDQotCWd0a19ib3hfcGFja19zdGFydChH VEtfQk9YKHZib3gpLCBidXR0b24sIEZBTFNFLCBGQUxTRSwgMCk7DQotDQotCWJ1dHRvbiA9IGd0 a19yYWRpb19idXR0b25fbmV3X3dpdGhfbGFiZWwoZ3JvdXAsIF8oIkhlYWRzZXQiKSk7DQotDQot CWdyb3VwID0gZ3RrX3JhZGlvX2J1dHRvbl9nZXRfZ3JvdXAoR1RLX1JBRElPX0JVVFRPTihidXR0 b24pKTsNCi0NCi0JZ3RrX3dpZGdldF9zZXRfc2Vuc2l0aXZlKEdUS19XSURHRVQoYnV0dG9uKSwg RkFMU0UpOw0KLQ0KKwlidXR0b24gPSBndGtfcmFkaW9fYnV0dG9uX25ld193aXRoX2xhYmVsX2Zy b21fd2lkZ2V0KEdUS19SQURJT19CVVRUT04oYnV0dG9uKSwgXygiSGVhZHNldCIpKTsNCisJZ19v YmplY3Rfc2V0X2RhdGEoR19PQkpFQ1QoYnV0dG9uKSwNCisJICAgICAgICAgICAgICAgICAgImJs dWV6LXR5cGUiLCBHSU5UX1RPX1BPSU5URVIoQkxVRVRPT1RIX1RZUEVfSEVBRFNFVCkpOw0KIAln dGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgYnV0dG9uLCBGQUxTRSwgRkFMU0UsIDAp Ow0KIA0KLQlidXR0b24gPSBndGtfcmFkaW9fYnV0dG9uX25ld193aXRoX2xhYmVsKGdyb3VwLCBf KCJBbnkgZGV2aWNlIikpOw0KLQ0KLQlncm91cCA9IGd0a19yYWRpb19idXR0b25fZ2V0X2dyb3Vw KEdUS19SQURJT19CVVRUT04oYnV0dG9uKSk7DQotDQotCWd0a190b2dnbGVfYnV0dG9uX3NldF9h Y3RpdmUoR1RLX1RPR0dMRV9CVVRUT04oYnV0dG9uKSwgVFJVRSk7DQotDQotCWd0a19ib3hfcGFj a19zdGFydChHVEtfQk9YKHZib3gpLCBidXR0b24sIEZBTFNFLCBGQUxTRSwgMCk7DQorCXR5cGVf Z3JvdXAgPSBndGtfcmFkaW9fYnV0dG9uX2dldF9ncm91cChHVEtfUkFESU9fQlVUVE9OKGJ1dHRv bikpOw0KIH0NCiANCiBzdGF0aWMgdm9pZCBzZWxlY3RfY2FsbGJhY2soQmx1ZXRvb3RoRGV2aWNl U2VsZWN0aW9uICpzZWwsDQpAQCAtMzEwLDcgKzI3Nyw3IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZV9z ZWFyY2goR3RrV2lkZ2V0ICphc3MNCiANCiAJdmJveCA9IGNyZWF0ZV92Ym94KGFzc2lzdGFudCwg R1RLX0FTU0lTVEFOVF9QQUdFX0NPTlRFTlQsDQogCQkJCV8oIkRldmljZSBzZWFyY2giKSwNCi0J CQkJXygiU2VsZWN0IHRoZSBkZXZpY2UgeW91IHdhbnQgdG8gc2V0dXAiKSk7DQorCQkJCV8oIlNl bGVjdCB0aGUgZGV2aWNlIHlvdSB3YW50IHRvIGNvbm5lY3QiKSk7DQogDQogCXNlbGVjdG9yID0g Ymx1ZXRvb3RoX2RldmljZV9zZWxlY3Rpb25fbmV3KE5VTEwpOw0KIA0KQEAgLTMyNyw0OCArMjk0 LDMxIEBAIHN0YXRpYyB2b2lkIGNyZWF0ZV9zZWFyY2goR3RrV2lkZ2V0ICphc3MNCiAJcGFnZV9z ZWFyY2ggPSB2Ym94Ow0KIH0NCiANCi1zdGF0aWMgdm9pZCBjcmVhdGVfaW5mbyhHdGtXaWRnZXQg KmFzc2lzdGFudCkNCi17DQotCUd0a1dpZGdldCAqdmJveDsNCi0JR3RrV2lkZ2V0ICpsYWJlbDsN Ci0NCi0JdmJveCA9IGNyZWF0ZV92Ym94KGFzc2lzdGFudCwgR1RLX0FTU0lTVEFOVF9QQUdFX0NP TlRFTlQsDQotCQkJCV8oIkRldmljZSBpbmZvcm1hdGlvbiIpLA0KLQkJCQlfKCJHYXRoZXJpbmcg aW5mb3JtYXRpb24gYWJvdXQgZGV2aWNlIikpOw0KLQ0KLQlsYWJlbCA9IGd0a19sYWJlbF9uZXco TlVMTCk7DQotDQotCWd0a19taXNjX3NldF9hbGlnbm1lbnQoR1RLX01JU0MobGFiZWwpLCAwLCAw KTsNCi0NCi0JZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIGxhYmVsLCBGQUxTRSwg VFJVRSwgMCk7DQotDQotCXBhZ2VfaW5mbyA9IHZib3g7DQotfQ0KLQ0KIHN0YXRpYyB2b2lkIGNy ZWF0ZV9wYWlyaW5nKEd0a1dpZGdldCAqYXNzaXN0YW50KQ0KIHsNCiAJR3RrV2lkZ2V0ICp2Ym94 Ow0KIAlHdGtXaWRnZXQgKmxhYmVsOw0KKwlHdGtXaWRnZXQgKnByb2dyZXNzOw0KIA0KIAl2Ym94 ID0gY3JlYXRlX3Zib3goYXNzaXN0YW50LCBHVEtfQVNTSVNUQU5UX1BBR0VfQ09OVEVOVCwNCi0J CQkJXygiRGV2aWNlIHBhaXJpbmciKSwNCi0JCQkJXygiUGFpcmluZyB3aXRoIG5ldyBkZXZpY2Ui KSk7DQorCQkJCV8oIkRldmljZSBjb25uZWN0aW9uIiksDQorCQkJCV8oIkNvbm5lY3Rpbmcgd2l0 aCBuZXcgZGV2aWNlIikpOw0KIA0KLQlsYWJlbCA9IGd0a19sYWJlbF9uZXcoTlVMTCk7DQorCXBy b2dyZXNzID0gZ3RrX3Byb2dyZXNzX2Jhcl9uZXcoKTsNCiANCi0JZ3RrX21pc2Nfc2V0X2FsaWdu bWVudChHVEtfTUlTQyhsYWJlbCksIDAsIDApOw0KKwlndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JP WCh2Ym94KSwgcHJvZ3Jlc3MsIEZBTFNFLCBUUlVFLCAwKTsNCiANCi0JZ3RrX2JveF9wYWNrX3N0 YXJ0KEdUS19CT1godmJveCksIGxhYmVsLCBGQUxTRSwgVFJVRSwgMCk7DQotDQotCWxhYmVsX3Bh aXJpbmcgPSBsYWJlbDsNCisJcGFpcmluZ19wcm9ncmVzcyA9IHByb2dyZXNzOw0KIA0KIAlsYWJl bCA9IGd0a19sYWJlbF9uZXcoTlVMTCk7DQorCWd0a19sYWJlbF9zZXRfbGluZV93cmFwKEdUS19M QUJFTChsYWJlbCksIFRSVUUpOw0KKwlndGtfbGFiZWxfc2V0X3NlbGVjdGFibGUoR1RLX0xBQkVM KGxhYmVsKSwgVFJVRSk7DQogDQogCWd0a19taXNjX3NldF9hbGlnbm1lbnQoR1RLX01JU0MobGFi ZWwpLCAwLCAwKTsNCiANCiAJZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIGxhYmVs LCBGQUxTRSwgVFJVRSwgMCk7DQogDQotCWxhYmVsX3Bhc3NrZXkgPSBsYWJlbDsNCisJcGFpcmlu Z19tZXNzYWdlID0gbGFiZWw7DQogDQogCXBhZ2VfcGFpcmluZyA9IHZib3g7DQogfQ0KQEAgLTM4 MSw2ICszMzEsOCBAQCBzdGF0aWMgdm9pZCBjcmVhdGVfc3VtbWFyeShHdGtXaWRnZXQgKmFzDQog CQkJCV8oIlN1bW1hcnkiKSwNCiAJCQkJXygiU3VjY2VzZnVsbHkgY29uZmlndXJlZCBuZXcgZGV2 aWNlIikpOw0KIA0KKwlwYWdlX3N1bW1hcnlfbnVtID0gZ3RrX2Fzc2lzdGFudF9nZXRfbl9wYWdl cyhHVEtfQVNTSVNUQU5UKGFzc2lzdGFudCkpIC0gMTsNCisNCiAJcGFnZV9zdW1tYXJ5ID0gdmJv eDsNCiB9DQogDQpAQCAtNDAxLDE0ICszNTMsMTAgQEAgc3RhdGljIEd0a1dpZGdldCAqY3JlYXRl X3dpemFyZCh2b2lkKQ0KIAkJCQkJCXBhZ2VfZm9yd2FyZCwgTlVMTCwgTlVMTCk7DQogI2VuZGlm DQogDQotCWNyZWF0ZV9pbnRybyhhc3Npc3RhbnQpOw0KLQ0KIAljcmVhdGVfdHlwZShhc3Npc3Rh bnQpOw0KIA0KIAljcmVhdGVfc2VhcmNoKGFzc2lzdGFudCk7DQogDQotCWNyZWF0ZV9pbmZvKGFz c2lzdGFudCk7DQotDQogCWNyZWF0ZV9wYWlyaW5nKGFzc2lzdGFudCk7DQogDQogCWNyZWF0ZV9z dW1tYXJ5KGFzc2lzdGFudCk7DQpAQCAtNDY1LDYgKzQxMyw3IEBAIGludCBtYWluKGludCBhcmdj LCBjaGFyICphcmd2W10pDQogCWNsaWVudCA9IGJsdWV0b290aF9jbGllbnRfbmV3KCk7DQogDQog CXdpbmRvdyA9IGNyZWF0ZV93aXphcmQoKTsNCisJc2V0X2FnZW50X3BhcmVudF93aW5kb3cod2lu ZG93KTsNCiANCiAJYmx1ZXRvb3RoX2luc3RhbmNlX3NldF93aW5kb3coaW5zdGFuY2UsIEdUS19X SU5ET1cod2luZG93KSk7DQogDQpkaWZmIC11cHJOIC4uL2JsdWV6LWdub21lLXNlcnZpY2VzL3dp emFyZC9NYWtlZmlsZS5hbSAuL3dpemFyZC9NYWtlZmlsZS5hbQ0KLS0tIC4uL2JsdWV6LWdub21l LXNlcnZpY2VzL3dpemFyZC9NYWtlZmlsZS5hbQkyMDA4LTA2LTMwIDA5OjI3OjIzLjAwMDAwMDAw MCAtMDQwMA0KKysrIC4vd2l6YXJkL01ha2VmaWxlLmFtCTIwMDgtMDYtMzAgMTA6MDI6MzUuMDAw MDAwMDAwIC0wNDAwDQpAQCAtMSw3ICsxLDcgQEANCiANCi1ub2luc3RfUFJPR1JBTVMgPSBibHVl dG9vdGgtd2l6YXJkDQorYmluX1BST0dSQU1TID0gYmx1ZXRvb3RoLXdpemFyZA0KIA0KLWJsdWV0 b290aF93aXphcmRfU09VUkNFUyA9IG1haW4uYw0KK2JsdWV0b290aF93aXphcmRfU09VUkNFUyA9 IG1haW4uYyBhZ2VudC5jIGFnZW50LmgNCiANCiBibHVldG9vdGhfd2l6YXJkX0xEQUREID0gQEdU S19MSUJTQCBAREJVU19MSUJTQCBcDQogCQkkKHRvcF9idWlsZGRpcikvY29tbW9uL2xpYmNvbW1v bi5hDQpAQCAtMTMsOCArMTMsOCBAQCBBTV9DRkxBR1MgPSBAREJVU19DRkxBR1NAIEBHVEtfQ0ZM QUdTQA0KIA0KIElOQ0xVREVTID0gLUkkKHRvcF9zcmNkaXIpL2NvbW1vbiAtSSQodG9wX2J1aWxk ZGlyKS9jb21tb24NCiANCi1ub2luc3RfTUFOUyA9IGJsdWV0b290aC13aXphcmQuMQ0KK21hbl9N QU5TID0gYmx1ZXRvb3RoLXdpemFyZC4xDQogDQotRVhUUkFfRElTVCA9ICQobm9pbnN0X01BTlMp DQorRVhUUkFfRElTVCA9ICQobWFuX01BTlMpDQogDQogTUFJTlRBSU5FUkNMRUFORklMRVMgPSBN YWtlZmlsZS5pbg0KZGlmZiAtdXByIC4uL2JsdWV6LWdub21lLXNlcnZpY2VzL3BvL1BPVEZJTEVT LmluIC4vcG8vUE9URklMRVMuaW4NCi0tLSAuLi9ibHVlei1nbm9tZS1zZXJ2aWNlcy9wby9QT1RG SUxFUy5pbgkyMDA4LTA2LTMwIDA5OjI3OjIzLjAwMDAwMDAwMCAtMDQwMA0KKysrIC4vcG8vUE9U RklMRVMuaW4JMjAwOC0wNi0zMCAxMTozNDozMy4wMDAwMDAwMDAgLTA0MDANCkBAIC0yMiwzICsy Miw1IEBAIGFuYWx5emVyL2RpYWxvZy5jDQogYW5hbHl6ZXIvdHJhY2VyLmMNCiBhbmFseXplci9i bHVldG9vdGgtYW5hbHl6ZXIuZGVza3RvcC5pbg0KIGFuYWx5emVyL2JsdWV0b290aC1tYW5hZ2Vy LnhtbC5pbg0KK3dpemFyZC9hZ2VudC5jDQord2l6YXJkL21haW4uYw0K --=-FJS1LJrPFGv91RJWwiRA-- --=-EyYYtVqfi5hXf9HWKX1U Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) iD8DBQBIaQA753i2YxNrdi0RAlQiAKCWbSxL03OoWdjUJHH5gNV40mJepACfXBcL p+1m9CjCgdEP+cgpzretsTI= =euMA -----END PGP SIGNATURE----- --=-EyYYtVqfi5hXf9HWKX1U-- --===============0373049502== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://sourceforge.net/services/buy/index.php --===============0373049502== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Bluez-devel mailing list Bluez-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bluez-devel --===============0373049502==--