Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mC6PV-0005Wi-Ok for pgsql-hackers@arkaria.postgresql.org; Fri, 06 Aug 2021 20:25:42 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mC6PU-0000bC-JS for pgsql-hackers@arkaria.postgresql.org; Fri, 06 Aug 2021 20:25:40 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mC6PU-0000b4-5P for pgsql-hackers@lists.postgresql.org; Fri, 06 Aug 2021 20:25:40 +0000 Received: from smtp-fw-33001.amazon.com ([207.171.190.10]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mC6PR-0006RW-I6 for pgsql-hackers@postgresql.org; Fri, 06 Aug 2021 20:25:39 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1628281537; x=1659817537; h=from:to:cc:date:message-id:references:in-reply-to: mime-version:subject; bh=g6zmTAhk8+QpyVwxF3FpopLs/IV4js1kRnW8qkXKa/8=; b=mBstA0FFf1n1pkbMaq/cIbxCjG0UiddV/Vxp79oZVtHEBMCtZbHhn73U C2hXIFzWtokIzrKcO0rBDBW+q8rYJzw4zjMR6pk8RtNS7H1I+zv4s0fnM irxFVrBkdeXcQ4XYjV1S+Mc9tOfguhE3eh7dFOnGvF9Zp9PIihn9I2ff8 w=; X-Amazon-filename: v3-0001-wal-segment-pre-allocation.patch X-IronPort-AV: E=Sophos;i="5.84,301,1620691200"; d="scan'208,223";a="140428684" Subject: Re: Pre-allocating WAL files Thread-Topic: Pre-allocating WAL files Received: from iad12-co-svc-p1-lb1-vlan2.amazon.com (HELO email-inbound-relay-1e-c7c08562.us-east-1.amazon.com) ([10.43.8.2]) by smtp-border-fw-33001.sea14.amazon.com with ESMTP; 06 Aug 2021 20:25:34 +0000 Received: from EX13MTAUWB001.ant.amazon.com (iad55-ws-svc-p15-lb9-vlan3.iad.amazon.com [10.40.159.166]) by email-inbound-relay-1e-c7c08562.us-east-1.amazon.com (Postfix) with ESMTPS id 466F92408FA; Fri, 6 Aug 2021 20:25:32 +0000 (UTC) Received: from EX13D03UWC003.ant.amazon.com (10.43.162.79) by EX13MTAUWB001.ant.amazon.com (10.43.161.207) with Microsoft SMTP Server (TLS) id 15.0.1497.23; Fri, 6 Aug 2021 20:25:27 +0000 Received: from EX13D03UWC004.ant.amazon.com (10.43.162.49) by EX13D03UWC003.ant.amazon.com (10.43.162.79) with Microsoft SMTP Server (TLS) id 15.0.1497.23; Fri, 6 Aug 2021 20:25:27 +0000 Received: from EX13D03UWC004.ant.amazon.com ([10.43.162.49]) by EX13D03UWC004.ant.amazon.com ([10.43.162.49]) with mapi id 15.00.1497.023; Fri, 6 Aug 2021 20:25:27 +0000 From: "Bossart, Nathan" To: vignesh C CC: Andres Freund , "pgsql-hackers@postgresql.org" Thread-Index: AQHXWav8+6ha4BKnPEG53jEY0XwfWasIN++AgCyQ/oCAMhDDAA== Date: Fri, 6 Aug 2021 20:25:26 +0000 Message-ID: <4B04FCF4-54C9-4D02-8EA6-E1C30A1277FB@amazon.com> References: <20201225200953.jjkrytlrzojbndh5@alap3.anarazel.de> <265B06BA-7B16-4C1A-BE1A-1451D22A1F83@amazon.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ms-exchange-messagesentrepresentingtype: 1 x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.43.161.175] Content-Type: multipart/mixed; boundary="_002_4B04FCF454C94D028EA6E1C30A1277FBamazoncom_" MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_002_4B04FCF454C94D028EA6E1C30A1277FBamazoncom_ Content-Type: text/plain; charset="utf-8" Content-ID: <0AE9D8AA0A967F4BB110212E2921BCBA@amazon.com> Content-Transfer-Encoding: base64 T24gNy85LzIxLCAyOjEwIFBNLCAiQm9zc2FydCwgTmF0aGFuIiA8Ym9zc2FydG5AYW1hem9uLmNv bT4gd3JvdGU6DQo+IEkndmUgYXR0YWNoZWQgYSByZWJhc2VkIHZlcnNpb24gb2YgdGhlIHBhdGNo Lg0KDQpIZXJlJ3MgYSBuZXdlciByZWJhc2VkIHZlcnNpb24gb2YgdGhlIHBhdGNoLg0KDQpOYXRo YW4NCg0K --_002_4B04FCF454C94D028EA6E1C30A1277FBamazoncom_ Content-Type: application/octet-stream; name="v3-0001-wal-segment-pre-allocation.patch" Content-Description: v3-0001-wal-segment-pre-allocation.patch Content-Disposition: attachment; filename="v3-0001-wal-segment-pre-allocation.patch"; size=44771; creation-date="Fri, 06 Aug 2021 20:25:26 GMT"; modification-date="Fri, 06 Aug 2021 20:25:26 GMT" Content-ID: <003AF1D6DC0468458C05A53D4CDF30F8@amazon.com> Content-Transfer-Encoding: base64 RnJvbSBjN2E3YWExMGNkYzJiN2U4NTMxYTc4ODgxOWI1OWZkMWJiMTgwNWY5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOYXRoYW4gQm9zc2FydCA8Ym9zc2FydG5AYW1hem9uLmNvbT4K RGF0ZTogRnJpLCA2IEF1ZyAyMDIxIDIwOjIwOjQyICswMDAwClN1YmplY3Q6IFtQQVRDSCB2MyAx LzFdIHdhbCBzZWdtZW50IHByZS1hbGxvY2F0aW9uCgotLS0KIGRvYy9zcmMvc2dtbC9jb25maWcu c2dtbCAgICAgICAgICAgICAgICAgICAgICB8ICAyMyArKwogc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0veGxvZy5jICAgICAgICAgICAgIHwgMjI2ICsrKysrKysrKy0tLS0tLS0tLQogc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci9NYWtlZmlsZSAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvYXV4cHJvY2Vzcy5jICAgICAgICAgICB8ICAgOCArCiBzcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYyAgICAgICAgICAgfCAgNDUgKysrKwogc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci93YWxfYWxsb2NhdG9yLmMgICAgICAgIHwgMzE1ICsrKysrKysrKysrKysr KysrKysrKysrKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9iYXNlYmFja3VwLmMgICAgICAg ICAgfCAgIDYgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9mZC5jICAgICAgICAgICAgICAg ICB8IDExNSArKysrKysrKysrCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrbmFtZXMu dHh0ICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYyAgICAgICAg ICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYyAg ICAgICB8ICAgMyArCiBzcmMvYmFja2VuZC91dGlscy9pbml0L21pc2Npbml0LmMgICAgICAgICAg ICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYyAgICAgICAgICAgICAgICAg IHwgIDEyICsKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSB8 ICAgMSArCiBzcmMvYmluL2luaXRkYi9pbml0ZGIuYyAgICAgICAgICAgICAgICAgICAgICAgfCAg IDEgKwogc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX2Jhc2ViYWNrdXAuYyAgICAgICAgIHwgIDE5 ICstCiBzcmMvYmluL3BnX2Jhc2ViYWNrdXAvdC8wMTBfcGdfYmFzZWJhY2t1cC5wbCAgfCAgIDQg Ky0KIHNyYy9iaW4vcGdfcmVzZXR3YWwvcGdfcmVzZXR3YWwuYyAgICAgICAgICAgICB8ICA0OCAr KysrCiBzcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oICAgICAgICAgICAgICAgICAgICAgfCAgIDUg Kwogc3JjL2luY2x1ZGUvbWlzY2FkbWluLmggICAgICAgICAgICAgICAgICAgICAgIHwgICAzICsK IHNyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvd2FsX2FsbG9jYXRvci5oICAgICAgICB8ICAyMSArKwog c3JjL2luY2x1ZGUvc3RvcmFnZS9mZC5oICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNy Yy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oICAgICAgICAgICAgICAgICAgICB8ICAxMSArLQogc3Jj L2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oICAgICAgICAgICAgICAgIHwgICAzICstCiAyNCBm aWxlcyBjaGFuZ2VkLCA3NjUgaW5zZXJ0aW9ucygrKSwgMTExIGRlbGV0aW9ucygtKQogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2FsX2FsbG9jYXRvci5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci93YWxfYWxsb2NhdG9yLmgKCmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29uZmln LnNnbWwKaW5kZXggNjEwMzcyYjc4YS4uYjhhMGEzN2FhYiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL2NvbmZpZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAtMzE5Nyw2 ICszMTk3LDI5IEBAIGluY2x1ZGVfZGlyICdjb25mLmQnCiAgICAgICA8L2xpc3RpdGVtPgogICAg ICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtd2FsLWFsbG9j YXRvci1tYXgtc2l6ZSIgeHJlZmxhYmVsPSJ3YWxfYWxsb2NhdG9yX21heF9zaXplIj4KKyAgICAg IDx0ZXJtPjx2YXJuYW1lPndhbF9hbGxvY2F0b3JfbWF4X3NpemU8L3Zhcm5hbWU+ICg8dHlwZT5p bnRlZ2VyPC90eXBlPikKKyAgICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+PHZhcm5h bWU+d2FsX2FsbG9jYXRvcl9tYXhfc2l6ZTwvdmFybmFtZT4gY29uZmlndXJhdGlvbiBwYXJhbWV0 ZXI8L3ByaW1hcnk+CisgICAgICA8L2luZGV4dGVybT4KKyAgICAgIDwvdGVybT4KKyAgICAgIDxs aXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIG1heGltdW0gYW1vdW50IG9mIFdB TCB0byBwcmUtYWxsb2NhdGUgZm9yIHVzZSB3aGVuIGEgbmV3IFdBTCBzZWdtZW50CisgICAgICAg IG11c3QgYmUgaW5pdGlhbGl6ZWQuICBTZXR0aW5nIHRoaXMgcGFyYW1ldGVyIHRvIGEgc2l6ZSBs ZXNzIHRoYW4gdGhlIFdBTAorICAgICAgICBzZWdtZW50IHNpemUgZGlzYWJsZXMgdGhpcyBiZWhh dmlvci4gIFRoZSBkZWZhdWx0IHZhbHVlcyBpcyA2NCBtZWdhYnl0ZXMKKyAgICAgICAgKDxsaXRl cmFsPjY0TUI8L2xpdGVyYWw+KS4gIFRoaXMgcGFyYW1ldGVyIGNhbiBvbmx5IGJlIHNldCBpbiB0 aGUKKyAgICAgICAgPGZpbGVuYW1lPnBvc3RncmVzcWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgb3Ig b24gdGhlIHNlcnZlciBjb21tYW5kIGxpbmUuCisgICAgICAgPC9wYXJhPgorCisgICAgICAgPHBh cmE+CisgICAgICAgIFdBTCBwcmUtYWxsb2NhdGlvbiBtYXkgaW1wcm92ZSBwZXJmb3JtYW5jZSBp biBzY2VuYXJpb3Mgd2hlcmUgbmV3IFdBTAorICAgICAgICBzZWdtZW50cyBtdXN0IGJlIGNyZWF0 ZWQgKGUuZy4sIGR1cmluZyBjaGVja3BvaW50cyB3aGVuIFdBTCBzZWdtZW50cworICAgICAgICBj YW5ub3QgYmUgcmVjeWNsZWQpLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+Cisg ICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy13YWwtYnVm ZmVycyIgeHJlZmxhYmVsPSJ3YWxfYnVmZmVycyI+CiAgICAgICA8dGVybT48dmFybmFtZT53YWxf YnVmZmVyczwvdmFybmFtZT4gKDx0eXBlPmludGVnZXI8L3R5cGU+KQogICAgICAgPGluZGV4dGVy bT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwppbmRleCBkMGVjNmE4MzRiLi5mOWNhZGRjOGVi IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVk ZSAicG9ydC9wZ19pb3ZlYy5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYmd3cml0ZXIuaCIKICNp bmNsdWRlICJwb3N0bWFzdGVyL3N0YXJ0dXAuaCIKKyNpbmNsdWRlICJwb3N0bWFzdGVyL3dhbF9h bGxvY2F0b3IuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL3dhbHdyaXRlci5oIgogI2luY2x1ZGUg InJlcGxpY2F0aW9uL2Jhc2ViYWNrdXAuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2Fs LmgiCkBAIC03MjMsNiArNzI0LDEzIEBAIHR5cGVkZWYgc3RydWN0IFhMb2dDdGxEYXRhCiAJICov CiAJWExvZ1JlY1B0cglsYXN0RnB3RGlzYWJsZVJlY1B0cjsKIAorCS8qCisJICogbnVtYmVyIG9m IHByZS1hbGxvY2F0ZWQgV0FMIHNlZ21lbnRzIGluIHBnX3dhbC9wcmVhbGxvY2F0ZWRfc2VnbWVu dHMKKwkgKgorCSAqIFByb3RlY3RlZCBieSBXQUxQcmVhbGxvY2F0aW9uTG9jay4KKwkgKi8KKwlp bnQgbnVtX3ByZWFsbG9jX3NlZ3M7CisKIAlzbG9ja190CQlpbmZvX2xjazsJCS8qIGxvY2tzIHNo YXJlZCB2YXJpYWJsZXMgc2hvd24gYWJvdmUgKi8KIH0gWExvZ0N0bERhdGE7CiAKQEAgLTMyNjAs MTEgKzMyNjgsMTAgQEAgc3RhdGljIGludAogWExvZ0ZpbGVJbml0SW50ZXJuYWwoWExvZ1NlZ05v IGxvZ3NlZ25vLCBib29sICphZGRlZCwgY2hhciAqcGF0aCkKIHsKIAljaGFyCQl0bXBwYXRoW01B WFBHUEFUSF07Ci0JUEdBbGlnbmVkWExvZ0Jsb2NrIHpidWZmZXI7CiAJWExvZ1NlZ05vCWluc3Rh bGxlZF9zZWdubzsKIAlYTG9nU2VnTm8JbWF4X3NlZ25vOwogCWludAkJCWZkOwotCWludAkJCXNh dmVfZXJybm87CisJYm9vbAkJZm91bmQgPSBmYWxzZTsKIAogCVhMb2dGaWxlUGF0aChwYXRoLCBU aGlzVGltZUxpbmVJRCwgbG9nc2Vnbm8sIHdhbF9zZWdtZW50X3NpemUpOwogCkBAIC0zMjg0LDEx NSArMzI5MSw0NSBAQCBYTG9nRmlsZUluaXRJbnRlcm5hbChYTG9nU2VnTm8gbG9nc2Vnbm8sIGJv b2wgKmFkZGVkLCBjaGFyICpwYXRoKQogCQlyZXR1cm4gZmQ7CiAKIAkvKgotCSAqIEluaXRpYWxp emUgYW4gZW1wdHkgKGFsbCB6ZXJvZXMpIHNlZ21lbnQuICBOT1RFOiBpdCBpcyBwb3NzaWJsZSB0 aGF0Ci0JICogYW5vdGhlciBwcm9jZXNzIGlzIGRvaW5nIHRoZSBzYW1lIHRoaW5nLiAgSWYgc28s IHdlIHdpbGwgZW5kIHVwCi0JICogcHJlLWNyZWF0aW5nIGFuIGV4dHJhIGxvZyBzZWdtZW50LiAg VGhhdCBzZWVtcyBPSywgYW5kIGJldHRlciB0aGFuCi0JICogaG9sZGluZyB0aGUgbG9jayB0aHJv dWdob3V0IHRoaXMgbGVuZ3RoeSBwcm9jZXNzLgorCSAqIFRyeSB0byB1c2UgYSBwcmUtYWxsb2Nh dGVkIHNlZ21lbnQsIGlmIG9uZSBleGlzdHMuICBJZiBub25lIGFyZQorCSAqIGF2YWlsYWJsZSwg d2UgZmFsbCBiYWNrIHRvIGNyZWF0aW5nIGEgbmV3IHNlZ21lbnQgb24gb3VyIG93bi4KKwkgKgor CSAqIE5vdGUgdGhhdCB3ZSBzdGlsbCBsb29rIGZvciBhIHByZS1hbGxvY2F0ZWQgc2VnbWVudCBl dmVuIGlmIHRoZSBwcmUtCisJICogYWxsb2NhdGlvbiBmdW5jdGlvbmFsaXR5IGlzIGRpc2FibGVk IHZpYSB0aGUgR1VDcy4gIFRoaXMgZW5zdXJlcyB0aGF0IGFueQorCSAqIHByZS1hbGxvY2F0ZWQg c2VnbWVudHMgbGVmdCBvdmVyIGFmdGVyIHR1cm5pbmcgb2ZmIHRoZSBwcmUtYWxsb2NhdGlvbgor CSAqIGZ1bmN0aW9uYWxpdHkgYXJlIGV2ZW50dWFsbHkgdXNlZCB1cC4KIAkgKi8KLQllbG9nKERF QlVHMiwgImNyZWF0aW5nIGFuZCBmaWxsaW5nIG5ldyBXQUwgZmlsZSIpOwotCi0Jc25wcmludGYo dG1wcGF0aCwgTUFYUEdQQVRILCBYTE9HRElSICIveGxvZ3RlbXAuJWQiLCAoaW50KSBnZXRwaWQo KSk7Ci0KLQl1bmxpbmsodG1wcGF0aCk7Ci0KLQkvKiBkbyBub3QgdXNlIGdldF9zeW5jX2JpdCgp IGhlcmUgLS0tIHdhbnQgdG8gZnN5bmMgb25seSBhdCBlbmQgb2YgZmlsbCAqLwotCWZkID0gQmFz aWNPcGVuRmlsZSh0bXBwYXRoLCBPX1JEV1IgfCBPX0NSRUFUIHwgT19FWENMIHwgUEdfQklOQVJZ KTsKLQlpZiAoZmQgPCAwKQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlX2Zvcl9maWxl X2FjY2VzcygpLAotCQkJCSBlcnJtc2coImNvdWxkIG5vdCBjcmVhdGUgZmlsZSBcIiVzXCI6ICVt IiwgdG1wcGF0aCkpKTsKLQotCW1lbXNldCh6YnVmZmVyLmRhdGEsIDAsIFhMT0dfQkxDS1NaKTsK LQotCXBnc3RhdF9yZXBvcnRfd2FpdF9zdGFydChXQUlUX0VWRU5UX1dBTF9JTklUX1dSSVRFKTsK LQlzYXZlX2Vycm5vID0gMDsKLQlpZiAod2FsX2luaXRfemVybykKKwlMV0xvY2tBY3F1aXJlKFdB TFByZWFsbG9jYXRpb25Mb2NrLCBMV19FWENMVVNJVkUpOworCWlmIChYTG9nQ3RsLT5udW1fcHJl YWxsb2Nfc2VncyA+IDApCiAJewotCQlzdHJ1Y3QgaW92ZWMgaW92W1BHX0lPVl9NQVhdOwotCQlp bnQJCQlibG9ja3M7Ci0KLQkJLyoKLQkJICogWmVyby1maWxsIHRoZSBmaWxlLiAgV2l0aCB0aGlz IHNldHRpbmcsIHdlIGRvIHRoaXMgdGhlIGhhcmQgd2F5IHRvCi0JCSAqIGVuc3VyZSB0aGF0IGFs bCB0aGUgZmlsZSBzcGFjZSBoYXMgcmVhbGx5IGJlZW4gYWxsb2NhdGVkLiAgT24KLQkJICogcGxh dGZvcm1zIHRoYXQgYWxsb3cgImhvbGVzIiBpbiBmaWxlcywganVzdCBzZWVraW5nIHRvIHRoZSBl bmQKLQkJICogZG9lc24ndCBhbGxvY2F0ZSBpbnRlcm1lZGlhdGUgc3BhY2UuICBUaGlzIHdheSwg d2Uga25vdyB0aGF0IHdlCi0JCSAqIGhhdmUgYWxsIHRoZSBzcGFjZSBhbmQgKGFmdGVyIHRoZSBm c3luYyBiZWxvdykgdGhhdCBhbGwgdGhlCi0JCSAqIGluZGlyZWN0IGJsb2NrcyBhcmUgZG93biBv biBkaXNrLiAgVGhlcmVmb3JlLCBmZGF0YXN5bmMoMikgb3IKLQkJICogT19EU1lOQyB3aWxsIGJl IHN1ZmZpY2llbnQgdG8gc3luYyBmdXR1cmUgd3JpdGVzIHRvIHRoZSBsb2cgZmlsZS4KLQkJICov Ci0KLQkJLyogUHJlcGFyZSB0byB3cml0ZSBvdXQgYSBsb3Qgb2YgY29waWVzIG9mIG91ciB6ZXJv IGJ1ZmZlciBhdCBvbmNlLiAqLwotCQlmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aG9mKGlvdik7 ICsraSkKLQkJewotCQkJaW92W2ldLmlvdl9iYXNlID0gemJ1ZmZlci5kYXRhOwotCQkJaW92W2ld Lmlvdl9sZW4gPSBYTE9HX0JMQ0tTWjsKLQkJfQotCi0JCS8qIExvb3AsIHdyaXRpbmcgYXMgbWFu eSBibG9ja3MgYXMgd2UgY2FuIGZvciBlYWNoIHN5c3RlbSBjYWxsLiAqLwotCQlibG9ja3MgPSB3 YWxfc2VnbWVudF9zaXplIC8gWExPR19CTENLU1o7Ci0JCWZvciAoaW50IGkgPSAwOyBpIDwgYmxv Y2tzOykKLQkJewotCQkJaW50CQkJaW92Y250ID0gTWluKGJsb2NrcyAtIGksIGxlbmd0aG9mKGlv dikpOwotCQkJb2ZmX3QJCW9mZnNldCA9IGkgKiBYTE9HX0JMQ0tTWjsKLQotCQkJaWYgKHBnX3B3 cml0ZXZfd2l0aF9yZXRyeShmZCwgaW92LCBpb3ZjbnQsIG9mZnNldCkgPCAwKQotCQkJewotCQkJ CXNhdmVfZXJybm8gPSBlcnJubzsKLQkJCQlicmVhazsKLQkJCX0KKwkJZWxvZyhERUJVRzIsICJ1 c2luZyBwcmUtYWxsb2NhdGVkIFdBTCBmaWxlIik7CiAKLQkJCWkgKz0gaW92Y250OwotCQl9CisJ CWZvdW5kID0gdHJ1ZTsKKwkJWExvZ0N0bC0+bnVtX3ByZWFsbG9jX3NlZ3MtLTsKKwkJc25wcmlu dGYodG1wcGF0aCwgTUFYUEdQQVRILCAiJXMvcHJlYWxsb2NhdGVkX3NlZ21lbnRzL3hsb2d0ZW1w LiVkIiwKKwkJCQkgWExPR0RJUiwgWExvZ0N0bC0+bnVtX3ByZWFsbG9jX3NlZ3MpOwogCX0KLQll bHNlCisKKwlpZiAoIWZvdW5kKQogCXsKIAkJLyoKLQkJICogT3RoZXJ3aXNlLCBzZWVraW5nIHRv IHRoZSBlbmQgYW5kIHdyaXRpbmcgYSBzb2xpdGFyeSBieXRlIGlzCi0JCSAqIGVub3VnaC4KKwkJ ICogV2UncmUgbm90IHVzaW5nIGEgcHJlLWFsbG9jYXRlZCBzZWdtZW50LCBzbyB0aGVyZSdzIG5v IG5lZWQgdG8ga2VlcAorCQkgKiBob2xkaW5nIHRoZSBXQUxQcmVhbGxvY2F0aW9uTG9jay4KIAkJ ICovCi0JCWVycm5vID0gMDsKLQkJaWYgKHBnX3B3cml0ZShmZCwgemJ1ZmZlci5kYXRhLCAxLCB3 YWxfc2VnbWVudF9zaXplIC0gMSkgIT0gMSkKLQkJewotCQkJLyogaWYgd3JpdGUgZGlkbid0IHNl dCBlcnJubywgYXNzdW1lIG5vIGRpc2sgc3BhY2UgKi8KLQkJCXNhdmVfZXJybm8gPSBlcnJubyA/ IGVycm5vIDogRU5PU1BDOwotCQl9Ci0JfQotCXBnc3RhdF9yZXBvcnRfd2FpdF9lbmQoKTsKKwkJ TFdMb2NrUmVsZWFzZShXQUxQcmVhbGxvY2F0aW9uTG9jayk7CiAKLQlpZiAoc2F2ZV9lcnJubykK LQl7CiAJCS8qCi0JCSAqIElmIHdlIGZhaWwgdG8gbWFrZSB0aGUgZmlsZSwgZGVsZXRlIGl0IHRv IHJlbGVhc2UgZGlzayBzcGFjZQorCQkgKiBJbml0aWFsaXplIGFuIGVtcHR5IChhbGwgemVyb2Vz KSBzZWdtZW50LiAgTk9URTogaXQgaXMgcG9zc2libGUgdGhhdAorCQkgKiBhbm90aGVyIHByb2Nl c3MgaXMgZG9pbmcgdGhlIHNhbWUgdGhpbmcuICBJZiBzbywgd2Ugd2lsbCBlbmQgdXAKKwkJICog cHJlLWNyZWF0aW5nIGFuIGV4dHJhIGxvZyBzZWdtZW50LiAgVGhhdCBzZWVtcyBPSywgYW5kIGJl dHRlciB0aGFuCisJCSAqIGhvbGRpbmcgdGhlIGxvY2sgdGhyb3VnaG91dCB0aGlzIGxlbmd0aHkg cHJvY2Vzcy4KIAkJICovCi0JCXVubGluayh0bXBwYXRoKTsKLQotCQljbG9zZShmZCk7CisJCWVs b2coREVCVUcyLCAiY3JlYXRpbmcgYW5kIGZpbGxpbmcgbmV3IFdBTCBmaWxlIik7CiAKLQkJZXJy bm8gPSBzYXZlX2Vycm5vOwotCi0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGVfZm9yX2Zp bGVfYWNjZXNzKCksCi0JCQkJIGVycm1zZygiY291bGQgbm90IHdyaXRlIHRvIGZpbGUgXCIlc1wi OiAlbSIsIHRtcHBhdGgpKSk7CisJCXNucHJpbnRmKHRtcHBhdGgsIE1BWFBHUEFUSCwgWExPR0RJ UiAiL3hsb2d0ZW1wLiVkIiwgKGludCkgZ2V0cGlkKCkpOworCQlDcmVhdGVFbXB0eVdhbFNlZ21l bnQodG1wcGF0aCk7CiAJfQogCi0JcGdzdGF0X3JlcG9ydF93YWl0X3N0YXJ0KFdBSVRfRVZFTlRf V0FMX0lOSVRfU1lOQyk7Ci0JaWYgKHBnX2ZzeW5jKGZkKSAhPSAwKQotCXsKLQkJaW50CQkJc2F2 ZV9lcnJubyA9IGVycm5vOwotCi0JCWNsb3NlKGZkKTsKLQkJZXJybm8gPSBzYXZlX2Vycm5vOwot CQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLAotCQkJCSBl cnJtc2coImNvdWxkIG5vdCBmc3luYyBmaWxlIFwiJXNcIjogJW0iLCB0bXBwYXRoKSkpOwotCX0K LQlwZ3N0YXRfcmVwb3J0X3dhaXRfZW5kKCk7Ci0KLQlpZiAoY2xvc2UoZmQpICE9IDApCi0JCWVy ZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGVfZm9yX2ZpbGVfYWNjZXNzKCksCi0JCQkJIGVycm1z ZygiY291bGQgbm90IGNsb3NlIGZpbGUgXCIlc1wiOiAlbSIsIHRtcHBhdGgpKSk7Ci0KIAkvKgog CSAqIE5vdyBtb3ZlIHRoZSBzZWdtZW50IGludG8gcGxhY2Ugd2l0aCBpdHMgZmluYWwgbmFtZS4g IENvcGUgd2l0aAogCSAqIHBvc3NpYmlsaXR5IHRoYXQgc29tZW9uZSBlbHNlIGhhcyBjcmVhdGVk IHRoZSBmaWxlIHdoaWxlIHdlIHdlcmUKQEAgLTM0MTMsNyArMzM1MCw3IEBAIFhMb2dGaWxlSW5p dEludGVybmFsKFhMb2dTZWdObyBsb2dzZWdubywgYm9vbCAqYWRkZWQsIGNoYXIgKnBhdGgpCiAJ aWYgKEluc3RhbGxYTG9nRmlsZVNlZ21lbnQoJmluc3RhbGxlZF9zZWdubywgdG1wcGF0aCwgdHJ1 ZSwgbWF4X3NlZ25vKSkKIAl7CiAJCSphZGRlZCA9IHRydWU7Ci0JCWVsb2coREVCVUcyLCAiZG9u ZSBjcmVhdGluZyBhbmQgZmlsbGluZyBuZXcgV0FMIGZpbGUiKTsKKwkJZWxvZyhERUJVRzIsICJk b25lIGluc3RhbGxpbmcgbmV3IFdBTCBmaWxlIik7CiAJfQogCWVsc2UKIAl7CkBAIC0zNDI2LDYg KzMzNjMsMTggQEAgWExvZ0ZpbGVJbml0SW50ZXJuYWwoWExvZ1NlZ05vIGxvZ3NlZ25vLCBib29s ICphZGRlZCwgY2hhciAqcGF0aCkKIAkJZWxvZyhERUJVRzIsICJhYmFuZG9uZWQgbmV3IFdBTCBm aWxlIik7CiAJfQogCisJLyoKKwkgKiBJZiB3ZSBhcmUgdXNpbmcgYSBwcmUtYWxsb2NhdGVkIHNl Z21lbnQsIHdlJ3ZlIGJlZW4gaG9sZGluZyBvbnRvIHRoZQorCSAqIFdBTFByZWFsbG9jYXRpb25M b2NrIGFsbCB0aGlzIHRpbWUgc28gdGhhdCB0aGUgV0FMIEFsbG9jYXRvciBwcm9jZXNzCisJICog Y2FuJ3Qgb3ZlcndyaXRlIHRoZSBmaWxlIGJlZm9yZSB3ZSd2ZSBpbnN0YWxsZWQgaXQuCisJICoK KwkgKiBXaGlsZSB3ZSdyZSBhdCBpdCwgYWxzbyB0cnkgdG8gd2FrZSB1cCB0aGUgV0FMIGFsbG9j YXRvciBlYXJseSBzbyB0aGF0IGl0CisJICogY2FuIGdldCBhIGp1bXAgc3RhcnQgb24gYWxsb2Nh dGluZyBuZXcgc2VnbWVudHMgaWYgcG9zc2libGUuCisJICovCisJaWYgKGZvdW5kKQorCQlMV0xv Y2tSZWxlYXNlKFdBTFByZWFsbG9jYXRpb25Mb2NrKTsKKwlSZXF1ZXN0V2FsUHJlYWxsb2NhdGlv bigpOworCiAJcmV0dXJuIC0xOwogfQogCkBAIC00MjgyLDggKzQyMzEsOCBAQCBSZW1vdmVYbG9n RmlsZShjb25zdCBjaGFyICpzZWduYW1lLCBYTG9nU2VnTm8gcmVjeWNsZVNlZ05vLAogfQogCiAv KgotICogVmVyaWZ5IHdoZXRoZXIgcGdfd2FsIGFuZCBwZ193YWwvYXJjaGl2ZV9zdGF0dXMgZXhp c3QuCi0gKiBJZiB0aGUgbGF0dGVyIGRvZXMgbm90IGV4aXN0LCByZWNyZWF0ZSBpdC4KKyAqIFZl cmlmeSB3aGV0aGVyIHBnX3dhbCwgcGdfd2FsL2FyY2hpdmVfc3RhdHVzIGFuZCBwZ193YWwvcHJl YWxsb2NhdGVkX3NlZ21lbnRzCisgKiBleGlzdC4gIElmIGVpdGhlciBvZiB0aGUgbGF0dGVyIHR3 byBkbyBub3QgZXhpc3QsIHJlY3JlYXRlIGl0LgogICoKICAqIEl0IGlzIG5vdCB0aGUgZ29hbCBv ZiB0aGlzIGZ1bmN0aW9uIHRvIHZlcmlmeSB0aGUgY29udGVudHMgb2YgdGhlc2UKICAqIGRpcmVj dG9yaWVzLCBidXQgdG8gaGVscCBpbiBjYXNlcyB3aGVyZSBzb21lb25lIGhhcyBwZXJmb3JtZWQg YSBjbHVzdGVyCkBAIC00MzI2LDYgKzQyNzUsMjYgQEAgVmFsaWRhdGVYTE9HRGlyZWN0b3J5U3Ry dWN0dXJlKHZvaWQpCiAJCQkJCShlcnJtc2coImNvdWxkIG5vdCBjcmVhdGUgbWlzc2luZyBkaXJl Y3RvcnkgXCIlc1wiOiAlbSIsCiAJCQkJCQkJcGF0aCkpKTsKIAl9CisKKwkvKiBDaGVjayBmb3Ig cHJlYWxsb2NhdGVkX3NlZ21lbnRzICovCisJc25wcmludGYocGF0aCwgTUFYUEdQQVRILCBYTE9H RElSICIvcHJlYWxsb2NhdGVkX3NlZ21lbnRzIik7CisJaWYgKHN0YXQocGF0aCwgJnN0YXRfYnVm KSA9PSAwKQorCXsKKwkJLyogQ2hlY2sgZm9yIHdlaXJkIGNhc2VzIHdoZXJlIGl0IGV4aXN0cyBi dXQgaXNuJ3QgYSBkaXJlY3RvcnkgKi8KKwkJaWYgKCFTX0lTRElSKHN0YXRfYnVmLnN0X21vZGUp KQorCQkJZXJlcG9ydChGQVRBTCwKKwkJCQkJKGVycm1zZygicmVxdWlyZWQgV0FMIGRpcmVjdG9y eSBcIiVzXCIgZG9lcyBub3QgZXhpc3QiLAorCQkJCQkJCXBhdGgpKSk7CisJfQorCWVsc2UKKwl7 CisJCWVyZXBvcnQoTE9HLAorCQkJCShlcnJtc2coImNyZWF0aW5nIG1pc3NpbmcgV0FMIGRpcmVj dG9yeSBcIiVzXCIiLCBwYXRoKSkpOworCQlpZiAoTWFrZVBHRGlyZWN0b3J5KHBhdGgpIDwgMCkK KwkJCWVyZXBvcnQoRkFUQUwsCisJCQkJCShlcnJtc2coImNvdWxkIG5vdCBjcmVhdGUgbWlzc2lu ZyBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsCisJCQkJCQkJcGF0aCkpKTsKKwl9CiB9CiAKIC8qCkBA IC01MjMzLDYgKzUyMDIsOSBAQCBYTE9HU2htZW1Jbml0KHZvaWQpCiAJU3BpbkxvY2tJbml0KCZY TG9nQ3RsLT51bHNuX2xjayk7CiAJSW5pdFNoYXJlZExhdGNoKCZYTG9nQ3RsLT5yZWNvdmVyeVdh a2V1cExhdGNoKTsKIAlDb25kaXRpb25WYXJpYWJsZUluaXQoJlhMb2dDdGwtPnJlY292ZXJ5Tm90 UGF1c2VkQ1YpOworCisJLyogcHJvdGVjdGVkIGJ5IFdBTFByZWFsbG9jYXRpb25Mb2NrICovCisJ WExvZ0N0bC0+bnVtX3ByZWFsbG9jX3NlZ3MgPSAwOwogfQogCiAvKgpAQCAtMTI5ODQsMyArMTI5 NTYsNTUgQEAgWExvZ1JlcXVlc3RXYWxSZWNlaXZlclJlcGx5KHZvaWQpCiB7CiAJZG9SZXF1ZXN0 V2FsUmVjZWl2ZXJSZXBseSA9IHRydWU7CiB9CisKK2ludAorR2V0TnVtUHJlYWxsb2NhdGVkV2Fs U2Vncyh2b2lkKQoreworCWludCByZXQ7CisKKwlMV0xvY2tBY3F1aXJlKFdBTFByZWFsbG9jYXRp b25Mb2NrLCBMV19TSEFSRUQpOworCXJldCA9IFhMb2dDdGwtPm51bV9wcmVhbGxvY19zZWdzOwor CUxXTG9ja1JlbGVhc2UoV0FMUHJlYWxsb2NhdGlvbkxvY2spOworCisJcmV0dXJuIHJldDsKK30K Kwordm9pZAorU2V0TnVtUHJlYWxsb2NhdGVkV2FsU2VncyhpbnQgaSkKK3sKKwlMV0xvY2tBY3F1 aXJlKFdBTFByZWFsbG9jYXRpb25Mb2NrLCBMV19FWENMVVNJVkUpOworCVhMb2dDdGwtPm51bV9w cmVhbGxvY19zZWdzID0gaTsKKwlMV0xvY2tSZWxlYXNlKFdBTFByZWFsbG9jYXRpb25Mb2NrKTsK K30KKworLyoKKyAqIEluc3RhbGxQcmVhbGxvY2F0ZWRXYWxTZWcKKyAqCisgKiBSZW5hbWVzIHRo ZSBmaWxlIGF0ICJwYXRoIiB0byB0aGUgbmV4dCBvcGVuIHByZS1hbGxvY2F0ZWQgc2VnbWVudCBz bG90IGFuZAorICogYnVtcHMgdXAgWExvZ0N0bC0+bnVtX3ByZWFsbG9jX3NlZ3MuCisgKi8KK3Zv aWQKK0luc3RhbGxQcmVhbGxvY2F0ZWRXYWxTZWcoY29uc3QgY2hhciAqcGF0aCkKK3sKKwljaGFy CW5ld3BhdGhbTUFYUEdQQVRIXTsKKworCUxXTG9ja0FjcXVpcmUoV0FMUHJlYWxsb2NhdGlvbkxv Y2ssIExXX0VYQ0xVU0lWRSk7CisKKwlzbnByaW50ZihuZXdwYXRoLCBNQVhQR1BBVEgsICIlcy9w cmVhbGxvY2F0ZWRfc2VnbWVudHMveGxvZ3RlbXAuJWQiLAorCQkJIFhMT0dESVIsIFhMb2dDdGwt Pm51bV9wcmVhbGxvY19zZWdzKTsKKwkodm9pZCkgZHVyYWJsZV9yZW5hbWUocGF0aCwgbmV3cGF0 aCwgRVJST1IpOworCVhMb2dDdGwtPm51bV9wcmVhbGxvY19zZWdzKys7CisKKwlMV0xvY2tSZWxl YXNlKFdBTFByZWFsbG9jYXRpb25Mb2NrKTsKK30KKworLyoKKyAqIFJlcXVlc3QgdGhhdCB0aGUg V0FMIGFsbG9jYXRvciB3YWtlIHVwIGVhcmx5LgorICovCit2b2lkCitSZXF1ZXN0V2FsUHJlYWxs b2NhdGlvbih2b2lkKQoreworCWlmIChQcm9jR2xvYmFsLT53YWxBbGxvY2F0b3JMYXRjaCAmJgor CQlXYWxQcmVhbGxvY2F0aW9uRW5hYmxlZCgpKQorCQlTZXRMYXRjaChQcm9jR2xvYmFsLT53YWxB bGxvY2F0b3JMYXRjaCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL01h a2VmaWxlIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9NYWtlZmlsZQppbmRleCA3ODdjNmEyYzNi Li5kNjlhZGEwYzRlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL01ha2VmaWxl CisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvTWFrZWZpbGUKQEAgLTI1LDYgKzI1LDcgQEAg T0JKUyA9IFwKIAlwb3N0bWFzdGVyLm8gXAogCXN0YXJ0dXAubyBcCiAJc3lzbG9nZ2VyLm8gXAor CXdhbF9hbGxvY2F0b3IubyBcCiAJd2Fsd3JpdGVyLm8KIAogaW5jbHVkZSAkKHRvcF9zcmNkaXIp L3NyYy9iYWNrZW5kL2NvbW1vbi5tawpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9hdXhwcm9jZXNzLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1eHByb2Nlc3MuYwppbmRl eCAxNmQ4N2U5MTQwLi5kN2Y5MjBhZmJhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL2F1eHByb2Nlc3MuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1eHByb2Nlc3Mu YwpAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYXV4cHJvY2Vzcy5oIgog I2luY2x1ZGUgInBvc3RtYXN0ZXIvYmd3cml0ZXIuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL3N0 YXJ0dXAuaCIKKyNpbmNsdWRlICJwb3N0bWFzdGVyL3dhbF9hbGxvY2F0b3IuaCIKICNpbmNsdWRl ICJwb3N0bWFzdGVyL3dhbHdyaXRlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHJlY2Vp dmVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKQEAgLTgwLDYgKzgxLDkgQEAgQXV4 aWxpYXJ5UHJvY2Vzc01haW4oQXV4UHJvY1R5cGUgYXV4dHlwZSkKIAkJY2FzZSBXYWxSZWNlaXZl clByb2Nlc3M6CiAJCQlNeUJhY2tlbmRUeXBlID0gQl9XQUxfUkVDRUlWRVI7CiAJCQlicmVhazsK KwkJY2FzZSBXYWxBbGxvY2F0b3JQcm9jZXNzOgorCQkJTXlCYWNrZW5kVHlwZSA9IEJfV0FMX0FM TE9DQVRPUjsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInNvbWV0aGlu ZyBoYXMgZ29uZSB3cm9uZyIpOwogCQkJTXlCYWNrZW5kVHlwZSA9IEJfSU5WQUxJRDsKQEAgLTE2 NCw2ICsxNjgsMTAgQEAgQXV4aWxpYXJ5UHJvY2Vzc01haW4oQXV4UHJvY1R5cGUgYXV4dHlwZSkK IAkJCVdhbFJlY2VpdmVyTWFpbigpOwogCQkJcHJvY19leGl0KDEpOwogCisJCWNhc2UgV2FsQWxs b2NhdG9yUHJvY2VzczoKKwkJCVdhbEFsbG9jYXRvck1haW4oKTsKKwkJCXByb2NfZXhpdCgxKTsK KwogCQlkZWZhdWx0OgogCQkJZWxvZyhQQU5JQywgInVucmVjb2duaXplZCBwcm9jZXNzIHR5cGU6 ICVkIiwgKGludCkgTXlBdXhQcm9jVHlwZSk7CiAJCQlwcm9jX2V4aXQoMSk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvcG9zdG1hc3Rlci5jCmluZGV4IGZjMGJjOGQ5OWUuLjNmMDExNDc5NWYgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jCisrKyBiL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jCkBAIC0yNTEsNiArMjUxLDcgQEAgc3RhdGljIHBpZF90 IFN0YXJ0dXBQSUQgPSAwLAogCQkJQ2hlY2twb2ludGVyUElEID0gMCwKIAkJCVdhbFdyaXRlclBJ RCA9IDAsCiAJCQlXYWxSZWNlaXZlclBJRCA9IDAsCisJCQlXYWxBbGxvY2F0b3JQSUQgPSAwLAog CQkJQXV0b1ZhY1BJRCA9IDAsCiAJCQlQZ0FyY2hQSUQgPSAwLAogCQkJUGdTdGF0UElEID0gMCwK QEAgLTU1Nyw2ICs1NTgsNyBAQCBzdGF0aWMgdm9pZCBTaG1lbUJhY2tlbmRBcnJheVJlbW92ZShC YWNrZW5kICpibik7CiAjZGVmaW5lIFN0YXJ0Q2hlY2twb2ludGVyKCkJCVN0YXJ0Q2hpbGRQcm9j ZXNzKENoZWNrcG9pbnRlclByb2Nlc3MpCiAjZGVmaW5lIFN0YXJ0V2FsV3JpdGVyKCkJCVN0YXJ0 Q2hpbGRQcm9jZXNzKFdhbFdyaXRlclByb2Nlc3MpCiAjZGVmaW5lIFN0YXJ0V2FsUmVjZWl2ZXIo KQkJU3RhcnRDaGlsZFByb2Nlc3MoV2FsUmVjZWl2ZXJQcm9jZXNzKQorI2RlZmluZSBTdGFydFdh bEFsbG9jYXRvcigpCQlTdGFydENoaWxkUHJvY2VzcyhXYWxBbGxvY2F0b3JQcm9jZXNzKQogCiAv KiBNYWNyb3MgdG8gY2hlY2sgZXhpdCBzdGF0dXMgb2YgYSBjaGlsZCBwcm9jZXNzICovCiAjZGVm aW5lIEVYSVRfU1RBVFVTXzAoc3QpICAoKHN0KSA9PSAwKQpAQCAtMTc5NCw2ICsxNzk2LDEzIEBA IFNlcnZlckxvb3Aodm9pZCkKIAkJaWYgKFdhbFdyaXRlclBJRCA9PSAwICYmIHBtU3RhdGUgPT0g UE1fUlVOKQogCQkJV2FsV3JpdGVyUElEID0gU3RhcnRXYWxXcml0ZXIoKTsKIAorCQkvKgorCQkg KiBJZiB3ZSBoYXZlIGxvc3QgdGhlIFdBTCBhbGxvY2F0b3IgcHJvY2VzcywgdHJ5IHRvIHN0YXJ0 IGEgbmV3IG9uZS4KKwkJICovCisJCWlmIChXYWxBbGxvY2F0b3JQSUQgPT0gMCAmJgorCQkJKHBt U3RhdGUgPT0gUE1fUlVOIHx8IHBtU3RhdGUgPT0gUE1fSE9UX1NUQU5EQlkpKQorCQkJV2FsQWxs b2NhdG9yUElEID0gU3RhcnRXYWxBbGxvY2F0b3IoKTsKKwogCQkvKgogCQkgKiBJZiB3ZSBoYXZl IGxvc3QgdGhlIGF1dG92YWN1dW0gbGF1bmNoZXIsIHRyeSB0byBzdGFydCBhIG5ldyBvbmUuIFdl CiAJCSAqIGRvbid0IHdhbnQgYXV0b3ZhY3V1bSB0byBydW4gaW4gYmluYXJ5IHVwZ3JhZGUgbW9k ZSBiZWNhdXNlCkBAIC0yNzA5LDYgKzI3MTgsOCBAQCBTSUdIVVBfaGFuZGxlcihTSUdOQUxfQVJH UykKIAkJCXNpZ25hbF9jaGlsZChXYWxXcml0ZXJQSUQsIFNJR0hVUCk7CiAJCWlmIChXYWxSZWNl aXZlclBJRCAhPSAwKQogCQkJc2lnbmFsX2NoaWxkKFdhbFJlY2VpdmVyUElELCBTSUdIVVApOwor CQlpZiAoV2FsQWxsb2NhdG9yUElEICE9IDApCisJCQlzaWduYWxfY2hpbGQoV2FsQWxsb2NhdG9y UElELCBTSUdIVVApOwogCQlpZiAoQXV0b1ZhY1BJRCAhPSAwKQogCQkJc2lnbmFsX2NoaWxkKEF1 dG9WYWNQSUQsIFNJR0hVUCk7CiAJCWlmIChQZ0FyY2hQSUQgIT0gMCkKQEAgLTMwMzYsNiArMzA0 Nyw4IEBAIHJlYXBlcihTSUdOQUxfQVJHUykKIAkJCQlCZ1dyaXRlclBJRCA9IFN0YXJ0QmFja2dy b3VuZFdyaXRlcigpOwogCQkJaWYgKFdhbFdyaXRlclBJRCA9PSAwKQogCQkJCVdhbFdyaXRlclBJ RCA9IFN0YXJ0V2FsV3JpdGVyKCk7CisJCQlpZiAoV2FsQWxsb2NhdG9yUElEID09IDApCisJCQkJ V2FsQWxsb2NhdG9yUElEID0gU3RhcnRXYWxBbGxvY2F0b3IoKTsKIAogCQkJLyoKIAkJCSAqIExp a2V3aXNlLCBzdGFydCBvdGhlciBzcGVjaWFsIGNoaWxkcmVuIGFzIG5lZWRlZC4gIEluIGEgcmVz dGFydApAQCAtMzE2Myw2ICszMTc2LDIwIEBAIHJlYXBlcihTSUdOQUxfQVJHUykKIAkJCWNvbnRp bnVlOwogCQl9CiAKKwkJLyoKKwkJICogV2FzIGl0IHRoZSBXQUwgYWxsb2NhdG9yPyAgTm9ybWFs IGV4aXQgY2FuIGJlIGlnbm9yZWQ7IHdlJ2xsIHN0YXJ0IGEKKwkJICogbmV3IG9uZSBhdCB0aGUg bmV4dCBpdGVyYXRpb24gb2YgdGhlIHBvc3RtYXN0ZXIncyBtYWluIGxvb3AsIGlmCisJCSAqIG5l Y2Vzc2FyeS4gIEFueSBvdGhlciBleGl0IGNvbmRpdGlvbiBpcyB0cmVhdGVkIGFzIGEgY3Jhc2gu CisJCSAqLworCQlpZiAocGlkID09IFdhbEFsbG9jYXRvclBJRCkKKwkJeworCQkJV2FsQWxsb2Nh dG9yUElEID0gMDsKKwkJCWlmICghRVhJVF9TVEFUVVNfMChleGl0c3RhdHVzKSkKKwkJCQlIYW5k bGVDaGlsZENyYXNoKHBpZCwgZXhpdHN0YXR1cywKKwkJCQkJCQkJIF8oIldBTCBBbGxvY2F0b3Ig cHJvY2VzcyIpKTsKKwkJCWNvbnRpbnVlOworCQl9CisKIAkJLyoKIAkJICogV2FzIGl0IHRoZSBh dXRvdmFjdXVtIGxhdW5jaGVyPwlOb3JtYWwgZXhpdCBjYW4gYmUgaWdub3JlZDsgd2UnbGwKIAkJ ICogc3RhcnQgYSBuZXcgb25lIGF0IHRoZSBuZXh0IGl0ZXJhdGlvbiBvZiB0aGUgcG9zdG1hc3Rl cidzIG1haW4KQEAgLTM2MzYsNiArMzY2MywxOCBAQCBIYW5kbGVDaGlsZENyYXNoKGludCBwaWQs IGludCBleGl0c3RhdHVzLCBjb25zdCBjaGFyICpwcm9jbmFtZSkKIAkJc2lnbmFsX2NoaWxkKFdh bFJlY2VpdmVyUElELCAoU2VuZFN0b3AgPyBTSUdTVE9QIDogU0lHUVVJVCkpOwogCX0KIAorCS8q IFRha2UgY2FyZSBvZiB0aGUgV0FMIGFsbG9jYXRvciB0b28gKi8KKwlpZiAocGlkID09IFdhbEFs bG9jYXRvclBJRCkKKwkJV2FsQWxsb2NhdG9yUElEID0gMDsKKwllbHNlIGlmIChXYWxBbGxvY2F0 b3JQSUQgIT0gMCAmJiB0YWtlX2FjdGlvbikKKwl7CisJCWVyZXBvcnQoREVCVUcyLAorCQkJCShl cnJtc2dfaW50ZXJuYWwoInNlbmRpbmcgJXMgdG8gcHJvY2VzcyAlZCIsCisJCQkJCQkJCSAoU2Vu ZFN0b3AgPyAiU0lHU1RPUCIgOiAiU0lHUVVJVCIpLAorCQkJCQkJCQkgKGludCkgV2FsQWxsb2Nh dG9yUElEKSkpOworCQlzaWduYWxfY2hpbGQoV2FsQWxsb2NhdG9yUElELCAoU2VuZFN0b3AgPyBT SUdTVE9QIDogU0lHUVVJVCkpOworCX0KKwogCS8qIFRha2UgY2FyZSBvZiB0aGUgYXV0b3ZhY3V1 bSBsYXVuY2hlciB0b28gKi8KIAlpZiAocGlkID09IEF1dG9WYWNQSUQpCiAJCUF1dG9WYWNQSUQg PSAwOwpAQCAtMzgyMyw2ICszODYyLDggQEAgUG9zdG1hc3RlclN0YXRlTWFjaGluZSh2b2lkKQog CQkJc2lnbmFsX2NoaWxkKFN0YXJ0dXBQSUQsIFNJR1RFUk0pOwogCQlpZiAoV2FsUmVjZWl2ZXJQ SUQgIT0gMCkKIAkJCXNpZ25hbF9jaGlsZChXYWxSZWNlaXZlclBJRCwgU0lHVEVSTSk7CisJCWlm IChXYWxBbGxvY2F0b3JQSUQgIT0gMCkKKwkJCXNpZ25hbF9jaGlsZChXYWxBbGxvY2F0b3JQSUQs IFNJR1RFUk0pOwogCQkvKiBjaGVja3BvaW50ZXIsIGFyY2hpdmVyLCBzdGF0cywgYW5kIHN5c2xv Z2dlciBtYXkgY29udGludWUgZm9yIG5vdyAqLwogCiAJCS8qIE5vdyB0cmFuc2l0aW9uIHRvIFBN X1dBSVRfQkFDS0VORFMgc3RhdGUgdG8gd2FpdCBmb3IgdGhlbSB0byBkaWUgKi8KQEAgLTM4NTMs NiArMzg5NCw3IEBAIFBvc3RtYXN0ZXJTdGF0ZU1hY2hpbmUodm9pZCkKIAkJCShDaGVja3BvaW50 ZXJQSUQgPT0gMCB8fAogCQkJICghRmF0YWxFcnJvciAmJiBTaHV0ZG93biA8IEltbWVkaWF0ZVNo dXRkb3duKSkgJiYKIAkJCVdhbFdyaXRlclBJRCA9PSAwICYmCisJCQlXYWxBbGxvY2F0b3JQSUQg PT0gMCAmJgogCQkJQXV0b1ZhY1BJRCA9PSAwKQogCQl7CiAJCQlpZiAoU2h1dGRvd24gPj0gSW1t ZWRpYXRlU2h1dGRvd24gfHwgRmF0YWxFcnJvcikKQEAgLTM5NDYsNiArMzk4OCw3IEBAIFBvc3Rt YXN0ZXJTdGF0ZU1hY2hpbmUodm9pZCkKIAkJCUFzc2VydChCZ1dyaXRlclBJRCA9PSAwKTsKIAkJ CUFzc2VydChDaGVja3BvaW50ZXJQSUQgPT0gMCk7CiAJCQlBc3NlcnQoV2FsV3JpdGVyUElEID09 IDApOworCQkJQXNzZXJ0KFdhbEFsbG9jYXRvclBJRCA9PSAwKTsKIAkJCUFzc2VydChBdXRvVmFj UElEID09IDApOwogCQkJLyogc3lzbG9nZ2VyIGlzIG5vdCBjb25zaWRlcmVkIGhlcmUgKi8KIAkJ CXBtU3RhdGUgPSBQTV9OT19DSElMRFJFTjsKQEAgLTQxNTQsNiArNDE5Nyw4IEBAIFRlcm1pbmF0 ZUNoaWxkcmVuKGludCBzaWduYWwpCiAJCXNpZ25hbF9jaGlsZChXYWxXcml0ZXJQSUQsIHNpZ25h bCk7CiAJaWYgKFdhbFJlY2VpdmVyUElEICE9IDApCiAJCXNpZ25hbF9jaGlsZChXYWxSZWNlaXZl clBJRCwgc2lnbmFsKTsKKwlpZiAoV2FsQWxsb2NhdG9yUElEICE9IDApCisJCXNpZ25hbF9jaGls ZChXYWxBbGxvY2F0b3JQSUQsIHNpZ25hbCk7CiAJaWYgKEF1dG9WYWNQSUQgIT0gMCkKIAkJc2ln bmFsX2NoaWxkKEF1dG9WYWNQSUQsIHNpZ25hbCk7CiAJaWYgKFBnQXJjaFBJRCAhPSAwKQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWxfYWxsb2NhdG9yLmMgYi9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL3dhbF9hbGxvY2F0b3IuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwLi4zOGNlYmY3OTUzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci93YWxfYWxsb2NhdG9yLmMKQEAgLTAsMCArMSwzMTUgQEAKKy8qLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICoKKyAqIHdhbF9hbGxvY2F0b3IuYworICoKKyAqIFRoZSBXQUwgYWxsb2NhdG9y IGlzIG5ldyBhcyBvZiBQb3N0Z3JlcyAxNS4gIEl0IGF0dGVtcHRzIHRvIGtlZXAgcmVndWxhcgor ICogYmFja2VuZHMgZnJvbSBoYXZpbmcgdG8gYWxsb2NhdGUgbmV3IFdBTCBzZWdtZW50cy4gIEV2 ZW4gd2hlbgorICogd2FsX3JlY3ljbGUgaXMgZW5hYmxlZCwgcHJlLWFsbG9jYXRpbmcgV0FMIHNl Z21lbnRzIGNhbiB5aWVsZAorICogc2lnbmlmaWNhbnQgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRz IGluIGNlcnRhaW4gc2NlbmFyaW9zLiAgTm90ZSB0aGF0CisgKiByZWd1bGFyIGJhY2tlbmRzIGFy ZSBzdGlsbCBlbXBvd2VyZWQgdG8gY3JlYXRlIG5ldyBXQUwgc2VnbWVudHMgaWYgdGhlCisgKiBX QUwgYWxsb2NhdG9yIGZhaWxzIHRvIGdlbmVyYXRlIGVub3VnaCBuZXcgc2VnbWVudHMuCisgKgor ICogVGhlIFdBTCBhbGxvY2F0b3IgaXMgY29udHJvbGxlZCBieSBvbmUgcGFyYW1ldGVyOiB3YWxf YWxsb2NhdG9yX21heF9zaXplLgorICogd2FsX2FsbG9jYXRvcl9tYXhfc2l6ZSBzcGVjaWZpZXMg dGhlIG1heGltdW0gYW1vdW50IG9mIFdBTCB0byBwcmUtCisgKiBhbGxvY2F0ZS4gIElmIHRoaXMg dmFsdWUgaXMgbm90IGRpdmlzaWJsZSBieSB0aGUgV0FMIHNlZ21lbnQgc2l6ZSwgZmV3ZXIKKyAq IFdBTCBzZWdtZW50cyB3aWxsIGJlIHByZS1hbGxvY2F0ZWQuCisgKgorICogVGhlIFdBTCBhbGxv Y2F0b3IgaXMgc3RhcnRlZCBieSB0aGUgcG9zdG1hc3RlciBhcyBzb29uIGFzIHRoZSBzdGFydHVw CisgKiBzdWJwcm9jZXNzIGZpbmlzaGVzLCBvciBhcyBzb29uIGFzIHJlY292ZXJ5IGJlZ2lucyBp ZiB3ZSBhcmUgZG9pbmcKKyAqIGFyY2hpdmUgcmVjb3ZlcnkuICBJdCByZW1haW5zIGFsaXZlIHVu dGlsIHRoZSBwb3N0bWFzdGVyIGNvbW1hbmRzIGl0IHRvCisgKiB0ZXJtaW5hdGUuICBOb3JtYWwg dGVybWluYXRpb24gaXMgYnkgU0lHVEVSTSwgd2hpY2ggaW5zdHJ1Y3RzIHRoZQorICogV0FMIGFs bG9jYXRvciB0byBleGl0KDApLiAgRW1lcmdlbmN5IHRlcm1pbmF0aW9uIGlzIGJ5IFNJR1FVSVQ7 IGxpa2UgYW55CisgKiBiYWNrZW5kLCB0aGUgV0FMIGFsbG9jYXRvciB3aWxsIHNpbXBseSBhYm9y dCBhbmQgZXhpdCBvbiBTSUdRVUlULgorICoKKyAqIElmIHRoZSBXQUwgYWxsb2NhdG9yIGV4aXRz IHVuZXhwZWN0ZWRseSwgdGhlIHBvc3RtYXN0ZXIgdHJlYXRzIHRoYXQgdGhlCisgKiBzYW1lIGFz IGEgYmFja2VuZCBjcmFzaDogc2hhcmVkIG1lbW9yeSBtYXkgYmUgY29ycnVwdGVkLCBzbyByZW1h aW5pbmcKKyAqIGJhY2tlbmRzIHNob3VsZCBiZSBraWxsZWQgYnkgU0lHUVVJVCBhbmQgdGhlbiBh IHJlY292ZXJ5IGN5Y2xlIHN0YXJ0ZWQuCisgKgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAo YykgMTk5Ni0yMDIxLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAq CisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbF9hbGxv Y2F0b3IuYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaW5jbHVkZSAicG9zdGdyZXMu aCIKKworI2luY2x1ZGUgPHN5cy90aW1lLmg+CisKKyNpbmNsdWRlICJhY2Nlc3MveGxvZy5oIgor I2luY2x1ZGUgImFjY2Vzcy94bG9nX2ludGVybmFsLmgiCisjaW5jbHVkZSAibGlicHEvcHFzaWdu YWwuaCIKKyNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVw dC5oIgorI2luY2x1ZGUgInBvc3RtYXN0ZXIvd2FsX2FsbG9jYXRvci5oIgorI2luY2x1ZGUgInN0 b3JhZ2UvYnVmbWdyLmgiCisjaW5jbHVkZSAic3RvcmFnZS9jb25kaXRpb25fdmFyaWFibGUuaCIK KyNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKKyNpbmNs dWRlICJzdG9yYWdlL2x3bG9jay5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgorI2luY2x1 ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKKyNp bmNsdWRlICJzdG9yYWdlL3NtZ3IuaCIKKyNpbmNsdWRlICJ1dGlscy9ndWMuaCIKKyNpbmNsdWRl ICJ1dGlscy9tZW11dGlscy5oIgorCisjZGVmaW5lIFdBTF9BTExPQ19USU1FT1VUX1MgKDYwKQor CisvKgorICogR1VDIHBhcmFtZXRlcnMKKyAqLworaW50CQkJd2FsX2FsbG9jX21heF9zaXplX21i ID0gNjQ7CisKK3N0YXRpYyB2b2lkIERvV2FsUHJlQWxsb2NhdGlvbih2b2lkKTsKK3N0YXRpYyB2 b2lkIFNjYW5Gb3JFeGlzdGluZ1ByZWFsbG9jYXRlZFNlZ21lbnRzKHZvaWQpOworCisvKgorICog TWFpbiBlbnRyeSBwb2ludCBmb3IgV0FMIGFsbG9jYXRvciBwcm9jZXNzCisgKgorICogVGhpcyBp cyBpbnZva2VkIGZyb20gQXV4aWxpYXJ5UHJvY2Vzc01haW4sIHdoaWNoIGhhcyBhbHJlYWR5IGNy ZWF0ZWQgdGhlCisgKiBiYXNpYyBleGVjdXRpb24gZW52aXJvbm1lbnQsIGJ1dCBub3QgZW5hYmxl ZCBzaWduYWxzIHlldC4KKyAqLwordm9pZAorV2FsQWxsb2NhdG9yTWFpbih2b2lkKQoreworCXNp Z2ptcF9idWYJbG9jYWxfc2lnam1wX2J1ZjsKKwlNZW1vcnlDb250ZXh0IHdhbF9hbGxvY19jb250 ZXh0OworCisJLyoKKwkgKiBQcm9wZXJseSBhY2NlcHQgb3IgaWdub3JlIHNpZ25hbHMgdGhhdCBt aWdodCBiZSBzZW50IHRvIHVzLgorCSAqLworCXBxc2lnbmFsKFNJR0hVUCwgU2lnbmFsSGFuZGxl ckZvckNvbmZpZ1JlbG9hZCk7CisJcHFzaWduYWwoU0lHSU5ULCBTSUdfSUdOKTsKKwlwcXNpZ25h bChTSUdURVJNLCBTaWduYWxIYW5kbGVyRm9yU2h1dGRvd25SZXF1ZXN0KTsKKwkvKiBTSUdRVUlU IGhhbmRsZXIgd2FzIGFscmVhZHkgc2V0IHVwIGJ5IEluaXRQb3N0bWFzdGVyQ2hpbGQgKi8KKwlw cXNpZ25hbChTSUdBTFJNLCBTSUdfSUdOKTsKKwlwcXNpZ25hbChTSUdQSVBFLCBTSUdfSUdOKTsK KwlwcXNpZ25hbChTSUdVU1IxLCBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlcik7CisJcHFzaWdu YWwoU0lHVVNSMiwgU0lHX0lHTik7CisKKwkvKgorCSAqIFJlc2V0IHNvbWUgc2lnbmFscyB0aGF0 IGFyZSBhY2NlcHRlZCBieSBwb3N0bWFzdGVyIGJ1dCBub3QgaGVyZQorCSAqLworCXBxc2lnbmFs KFNJR0NITEQsIFNJR19ERkwpOworCisJLyoKKwkgKiBDcmVhdGUgYSBtZW1vcnkgY29udGV4dCB0 aGF0IHdlIHdpbGwgZG8gYWxsIG91ciB3b3JrIGluLiAgV2UgZG8gdGhpcyBzbworCSAqIHRoYXQg d2UgY2FuIHJlc2V0IHRoZSBjb250ZXh0IGR1cmluZyBlcnJvciByZWNvdmVyeSBhbmQgdGhlcmVi eSBhdm9pZAorCSAqIHBvc3NpYmxlIG1lbW9yeSBsZWFrcy4KKwkgKi8KKwl3YWxfYWxsb2NfY29u dGV4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShUb3BNZW1vcnlDb250ZXh0LAorCQkJCQkJCQkJ CQkgICJXQUwgQWxsb2NhdG9yIiwKKwkJCQkJCQkJCQkJICBBTExPQ1NFVF9ERUZBVUxUX1NJWkVT KTsKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8od2FsX2FsbG9jX2NvbnRleHQpOworCisJLyoKKwkg KiBJZiBhbiBleGNlcHRpb24gaXMgZW5jb3VudGVyZWQsIHByb2Nlc3NpbmcgcmVzdW1lcyBoZXJl LgorCSAqCisJICogWW91IG1pZ2h0IHdvbmRlciB3aHkgdGhpcyBpc24ndCBjb2RlZCBhcyBhbiBp bmZpbml0ZSBsb29wIGFyb3VuZCBhCisJICogUEdfVFJZIGNvbnN0cnVjdC4gIFRoZSByZWFzb24g aXMgdGhhdCB0aGlzIGlzIHRoZSBib3R0b20gb2YgdGhlCisJICogZXhjZXB0aW9uIHN0YWNrLCBh bmQgc28gd2l0aCBQR19UUlkgdGhlcmUgd291bGQgYmUgbm8gZXhjZXB0aW9uIGhhbmRsZXIKKwkg KiBpbiBmb3JjZSBhdCBhbGwgZHVyaW5nIHRoZSBDQVRDSCBwYXJ0LiAgQnkgbGVhdmluZyB0aGUg b3V0ZXJtb3N0IHNldGptcAorCSAqIGFsd2F5cyBhY3RpdmUsIHdlIGhhdmUgYXQgbGVhc3Qgc29t ZSBjaGFuY2Ugb2YgcmVjb3ZlcmluZyBmcm9tIGFuIGVycm9yCisJICogZHVyaW5nIGVycm9yIHJl Y292ZXJ5LiAgKElmIHdlIGdldCBpbnRvIGFuIGluZmluaXRlIGxvb3AgdGhlcmVieSwgaXQKKwkg KiB3aWxsIHNvb24gYmUgc3RvcHBlZCBieSBvdmVyZmxvdyBvZiBlbG9nLmMncyBpbnRlcm5hbCBz dGF0ZSBzdGFjay4pCisJICoKKwkgKiBOb3RlIHRoYXQgd2UgdXNlIHNpZ3NldGptcCguLi4sIDEp LCBzbyB0aGF0IHRoZSBwcmV2YWlsaW5nIHNpZ25hbCBtYXNrCisJICogKHRvIHdpdCwgQmxvY2tT aWcpIHdpbGwgYmUgcmVzdG9yZWQgd2hlbiBsb25nam1wJ2luZyB0byBoZXJlLiAgVGh1cywKKwkg KiBzaWduYWxzIG90aGVyIHRoYW4gU0lHUVVJVCB3aWxsIGJlIGJsb2NrZWQgdW50aWwgd2UgY29t cGxldGUgZXJyb3IKKwkgKiByZWNvdmVyeS4gIEl0IG1pZ2h0IHNlZW0gdGhhdCB0aGlzIHBvbGlj eSBtYWtlcyB0aGUgSE9MRF9JTlRFUlJVUFRTKCkKKwkgKiBjYWxsIHJlZHVuZGFudCwgYnV0IGl0 IGlzIG5vdCBzaW5jZSBJbnRlcnJ1cHRQZW5kaW5nIG1pZ2h0IGJlIHNldAorCSAqIGFscmVhZHku CisJICovCisJaWYgKHNpZ3NldGptcChsb2NhbF9zaWdqbXBfYnVmLCAxKSAhPSAwKQorCXsKKwkJ LyogU2luY2Ugbm90IHVzaW5nIFBHX1RSWSwgbXVzdCByZXNldCBlcnJvciBzdGFjayBieSBoYW5k ICovCisJCWVycm9yX2NvbnRleHRfc3RhY2sgPSBOVUxMOworCisJCS8qIFByZXZlbnQgaW50ZXJy dXB0cyB3aGlsZSBjbGVhbmluZyB1cCAqLworCQlIT0xEX0lOVEVSUlVQVFMoKTsKKworCQkvKiBS ZXBvcnQgdGhlIGVycm9yIHRvIHRoZSBzZXJ2ZXIgbG9nICovCisJCUVtaXRFcnJvclJlcG9ydCgp OworCisJCS8qCisJCSAqIFRoZXNlIG9wZXJhdGlvbnMgYXJlIHJlYWxseSBqdXN0IGEgbWluaW1h bCBzdWJzZXQgb2YKKwkJICogQWJvcnRUcmFuc2FjdGlvbigpLiAgV2UgZG9uJ3QgaGF2ZSB2ZXJ5 IG1hbnkgcmVzb3VyY2VzIHRvIHdvcnJ5CisJCSAqIGFib3V0LgorCQkgKi8KKwkJTFdMb2NrUmVs ZWFzZUFsbCgpOworCQlDb25kaXRpb25WYXJpYWJsZUNhbmNlbFNsZWVwKCk7CisJCXBnc3RhdF9y ZXBvcnRfd2FpdF9lbmQoKTsKKwkJQWJvcnRCdWZmZXJJTygpOworCQlVbmxvY2tCdWZmZXJzKCk7 CisJCVJlbGVhc2VBdXhQcm9jZXNzUmVzb3VyY2VzKGZhbHNlKTsKKwkJQXRFT1hhY3RfQnVmZmVy cyhmYWxzZSk7CisJCUF0RU9YYWN0X1NNZ3IoKTsKKwkJQXRFT1hhY3RfRmlsZXMoZmFsc2UpOwor CQlBdEVPWGFjdF9IYXNoVGFibGVzKGZhbHNlKTsKKworCQkvKgorCQkgKiBOb3cgcmV0dXJuIHRv IG5vcm1hbCB0b3AtbGV2ZWwgY29udGV4dCBhbmQgY2xlYXIgRXJyb3JDb250ZXh0IGZvcgorCQkg KiBuZXh0IHRpbWUuCisJCSAqLworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8od2FsX2FsbG9jX2Nv bnRleHQpOworCQlGbHVzaEVycm9yU3RhdGUoKTsKKworCQkvKiBGbHVzaCBhbnkgbGVha2VkIGRh dGEgaW4gdGhlIHRvcC1sZXZlbCBjb250ZXh0ICovCisJCU1lbW9yeUNvbnRleHRSZXNldEFuZERl bGV0ZUNoaWxkcmVuKHdhbF9hbGxvY19jb250ZXh0KTsKKworCQkvKiBOb3cgd2UgY2FuIGFsbG93 IGludGVycnVwdHMgYWdhaW4gKi8KKwkJUkVTVU1FX0lOVEVSUlVQVFMoKTsKKworCQkvKgorCQkg KiBTbGVlcCBhdCBsZWFzdCAxIHNlY29uZCBhZnRlciBhbnkgZXJyb3IuICBBIHdyaXRlIGVycm9y IGlzIGxpa2VseQorCQkgKiB0byBiZSByZXBlYXRlZCwgYW5kIHdlIGRvbid0IHdhbnQgdG8gYmUg ZmlsbGluZyB0aGUgZXJyb3IgbG9ncyBhcworCQkgKiBmYXN0IGFzIHdlIGNhbi4KKwkJICovCisJ CXBnX3VzbGVlcCgxMDAwMDAwTCk7CisKKwkJLyoKKwkJICogQ2xvc2UgYWxsIG9wZW4gZmlsZXMg YWZ0ZXIgYW55IGVycm9yLiAgVGhpcyBpcyBoZWxwZnVsIG9uIFdpbmRvd3MsCisJCSAqIHdoZXJl IGhvbGRpbmcgZGVsZXRlZCBmaWxlcyBvcGVuIGNhdXNlcyB2YXJpb3VzIHN0cmFuZ2UgZXJyb3Jz LgorCQkgKiBJdCdzIG5vdCBjbGVhciB3ZSBuZWVkIGl0IGVsc2V3aGVyZSwgYnV0IHNob3VsZG4n dCBodXJ0LgorCQkgKi8KKwkJc21ncmNsb3NlYWxsKCk7CisKKwkJLyogUmVwb3J0IHdhaXQgZW5k IGhlcmUsIHdoZW4gdGhlcmUgaXMgbm8gZnVydGhlciBwb3NzaWJpbGl0eSBvZiB3YWl0ICovCisJ CXBnc3RhdF9yZXBvcnRfd2FpdF9lbmQoKTsKKwl9CisKKwkvKiBXZSBjYW4gbm93IGhhbmRsZSBl cmVwb3J0KEVSUk9SKSAqLworCVBHX2V4Y2VwdGlvbl9zdGFjayA9ICZsb2NhbF9zaWdqbXBfYnVm OworCisJLyoKKwkgKiBVbmJsb2NrIHNpZ25hbHMgKHRoZXkgd2VyZSBibG9ja2VkIHdoZW4gdGhl IHBvc3RtYXN0ZXIgZm9ya2VkIHVzKQorCSAqLworCVBHX1NFVE1BU0soJlVuQmxvY2tTaWcpOwor CisJLyoKKwkgKiBBZHZlcnRpc2Ugb3VyIGxhdGNoIHRoYXQgYmFja2VuZHMgY2FuIHVzZSB0byB3 YWtlIHVzIHVwIHdoaWxlIHdlJ3JlCisJICogc2xlZXBpbmcuCisJICovCisJUHJvY0dsb2JhbC0+ d2FsQWxsb2NhdG9yTGF0Y2ggPSAmTXlQcm9jLT5wcm9jTGF0Y2g7CisKKwkvKgorCSAqIEJlZm9y ZSB3ZSBnbyBpbnRvIHRoZSBtYWluIGxvb3AsIHNjYW4gdGhlIHByZS1hbGxvY2F0ZWQgc2VnbWVu dHMKKwkgKiBkaXJlY3RvcnkgYW5kIGxvb2sgZm9yIGFueXRoaW5nIHRoYXQgd2FzIGxlZnQgb3Zl ciBmcm9tIHRoZSBsYXN0IHRpbWUuCisJICovCisJU2NhbkZvckV4aXN0aW5nUHJlYWxsb2NhdGVk U2VnbWVudHMoKTsKKworCS8qCisJICogTG9vcCBmb3JldmVyCisJICovCisJZm9yICg7OykKKwl7 CisJCS8qIENsZWFyIGFueSBhbHJlYWR5LXBlbmRpbmcgd2FrZXVwcyAqLworCQlSZXNldExhdGNo KE15TGF0Y2gpOworCisJCUhhbmRsZU1haW5Mb29wSW50ZXJydXB0cygpOworCisJCURvV2FsUHJl QWxsb2NhdGlvbigpOworCisJCS8qIFhYWDogU2VuZCBhY3Rpdml0eSBzdGF0aXN0aWNzIHRvIHRo ZSBzdGF0cyBjb2xsZWN0b3IgKi8KKworCQkvKiBTbGVlcCB1bnRpbCB3ZSBhcmUgc2lnbmFsZWQg b3IgV0FMX0FMTE9DX1RJTUVPVVRfUyBoYXMgZWxhcHNlZC4gKi8KKwkJKHZvaWQpIFdhaXRMYXRj aChNeUxhdGNoLAorCQkJCQkJIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09O X1BNX0RFQVRILAorCQkJCQkJIFdBTF9BTExPQ19USU1FT1VUX1MgKiAxMDAwTCAvKiBjb252ZXJ0 IHRvIG1zICovLAorCQkJCQkJIFdBSVRfRVZFTlRfV0FMX0FMTE9DQVRPUl9NQUlOKTsKKwl9CisK KwlwZ191bnJlYWNoYWJsZSgpOworfQorCisvKgorICogRG9XYWxQcmVBbGxvY2F0aW9uCisgKgor ICogVHJpZXMgdG8gYWxsb2NhdGUgdXAgdG8gd2FsX2FsbG9jYXRvcl9tYXhfc2l6ZSB3b3J0aCBv ZiBXQUwuCisgKi8KK3N0YXRpYyB2b2lkCitEb1dhbFByZUFsbG9jYXRpb24odm9pZCkKK3sKKwlp bnQJCW1heF9wcmVhbGxvY19zZWdzOworCisJbWF4X3ByZWFsbG9jX3NlZ3MgPSB3YWxfYWxsb2Nf bWF4X3NpemVfbWIgLyAod2FsX3NlZ21lbnRfc2l6ZSAvICgxMDI0ICogMTAyNCkpOworCisJd2hp bGUgKCFTaHV0ZG93blJlcXVlc3RQZW5kaW5nICYmCisJCSAgIEdldE51bVByZWFsbG9jYXRlZFdh bFNlZ3MoKSA8IG1heF9wcmVhbGxvY19zZWdzKQorCXsKKwkJY2hhciB0bXBwYXRoW01BWFBHUEFU SF07CisKKwkJc25wcmludGYodG1wcGF0aCwgTUFYUEdQQVRILCAiJXMvcHJlYWxsb2NhdGVkX3Nl Z21lbnRzL3hsb2d0ZW1wIiwgWExPR0RJUik7CisJCUNyZWF0ZUVtcHR5V2FsU2VnbWVudCh0bXBw YXRoKTsKKwkJSW5zdGFsbFByZWFsbG9jYXRlZFdhbFNlZyh0bXBwYXRoKTsKKwkJZWxvZyhERUJV RzIsICJwcmUtYWxsb2NhdGVkIFdBTCBzZWdtZW50Iik7CisKKwkJaWYgKENvbmZpZ1JlbG9hZFBl bmRpbmcpCisJCXsKKwkJCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxzZTsKKwkJCVByb2Nlc3ND b25maWdGaWxlKFBHQ19TSUdIVVApOworCisJCQltYXhfcHJlYWxsb2Nfc2VncyA9IHdhbF9hbGxv Y19tYXhfc2l6ZV9tYiAvICh3YWxfc2VnbWVudF9zaXplIC8gKDEwMjQgKiAxMDI0KSk7CisJCX0K Kwl9Cit9CisKKy8qCisgKiBTY2FuRm9yRXhpc3RpbmdQcmVhbGxvY2F0ZWRTZWdtZW50cworICoK KyAqIFRoaXMgZnVuY3Rpb24gc2VhcmNoZXMgdGhyb3VnaCBwZ193YWwvcHJlYWxsb2NhdGVkX3Nl Z21lbnRzIGZvciBhbnkgc2VnbWVudHMKKyAqIHRoYXQgd2VyZSBsZWZ0IG92ZXIgZnJvbSBhIHBy ZXZpb3VzIFdBTCBhbGxvY2F0b3IgcHJvY2VzcyBhbmQgc2V0cyB0aGUKKyAqIHRyYWNraW5nIHZh cmlhYmxlIGluIHNoYXJlZCBtZW1vcnkgYWNjb3JkaW5nbHkuCisgKi8KK3N0YXRpYyB2b2lkCitT Y2FuRm9yRXhpc3RpbmdQcmVhbGxvY2F0ZWRTZWdtZW50cyh2b2lkKQoreworCWludCBpID0gMDsK KworCS8qCisJICogZnN5bmMgdGhlIHByZWFsbG9jYXRlZF9zZWdtZW50cyBkaXJlY3RvcnkgaW4g Y2FzZSBhbnkgcmVuYW1lcyBoYXZlIHlldCB0bworCSAqIGJlIGZsdXNoZWQgdG8gZGlzay4gIFRo aXMgaXMgcHJvYmFibHkgbm90IHJlYWxseSBuZWNlc3NhcnksIGJ1dCBpdCBzZWVtcworCSAqIG5p Y2UgdG8ga25vdyB0aGF0IGFsbCB0aGUgc2VnbWVudHMgd2UgZmluZCBhcmUgcmVhbGx5IHdoZXJl IHdlIHRoaW5rIHRoZXkKKwkgKiBhcmUuCisJICovCisJZnN5bmNfZm5hbWVfZXh0KFhMT0dESVIg Ii9wcmVhbGxvY2F0ZWRfc2VnbWVudHMiLCB0cnVlLCBmYWxzZSwgRkFUQUwpOworCisJLyoKKwkg KiBHYXRoZXIgYWxsIHRoZSBwcmVhbGxvY2F0ZWQgc2VnbWVudHMgd2UgY2FuIGZpbmQuCisJICov CisJd2hpbGUgKHRydWUpCisJeworCQlGSUxFICpmZDsKKwkJY2hhciBwYXRoW01BWFBHUEFUSF07 CisKKwkJc25wcmludGYocGF0aCwgTUFYUEdQQVRILCAiJXMvcHJlYWxsb2NhdGVkX3NlZ21lbnRz L3hsb2d0ZW1wLiVkIiwKKwkJCQkgWExPR0RJUiwgaSk7CisKKwkJZmQgPSBBbGxvY2F0ZUZpbGUo cGF0aCwgInIiKTsKKwkJaWYgKGZkICE9IE5VTEwpCisJCXsKKwkJCUZyZWVGaWxlKGZkKTsKKwkJ CWkrKzsKKwkJfQorCQllbHNlCisJCXsKKwkJCWlmIChlcnJubyAhPSBFTk9FTlQpCisJCQkJZXJl cG9ydChGQVRBTCwKKwkJCQkJCShlcnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLAorCQkJCQkJIGVy cm1zZygiY291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCI6ICVtIiwgcGF0aCkpKTsKKwkJCWJyZWFr OworCQl9CisJfQorCisJU2V0TnVtUHJlYWxsb2NhdGVkV2FsU2VncyhpKTsKKwllbG9nKERFQlVH MiwgImZvdW5kICVkIHByZWFsbG9jYXRlZCBzZWdtZW50cyBkdXJpbmcgc3RhcnR1cCIsIGkpOwor fQorCitib29sCitXYWxQcmVhbGxvY2F0aW9uRW5hYmxlZCh2b2lkKQoreworCXJldHVybiB3YWxf YWxsb2NfbWF4X3NpemVfbWIgPj0gd2FsX3NlZ21lbnRfc2l6ZSAvICgxMDI0ICogMTAyNCk7Cit9 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9iYXNlYmFja3VwLmMgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9iYXNlYmFja3VwLmMKaW5kZXggZTA5MTA4ZDBlYy4uYzlhOTFk YzkzOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vYmFzZWJhY2t1cC5jCisr KyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2Jhc2ViYWNrdXAuYwpAQCAtMTM5OSwxMSArMTM5 OSwxMyBAQCBzZW5kRGlyKGNvbnN0IGNoYXIgKnBhdGgsIGludCBiYXNlcGF0aGxlbiwgYm9vbCBz aXplb25seSwgTGlzdCAqdGFibGVzcGFjZXMsCiAJCQlzaXplICs9IF90YXJXcml0ZURpcihwYXRo YnVmLCBiYXNlcGF0aGxlbiwgJnN0YXRidWYsIHNpemVvbmx5KTsKIAogCQkJLyoKLQkJCSAqIEFs c28gc2VuZCBhcmNoaXZlX3N0YXR1cyBkaXJlY3RvcnkgKGJ5IGhhY2tpc2hseSByZXVzaW5nCi0J CQkgKiBzdGF0YnVmIGZyb20gYWJvdmUgLi4uKS4KKwkJCSAqIEFsc28gc2VuZCBhcmNoaXZlX3N0 YXR1cyBhbmQgcHJlYWxsb2NhdGVkX3NlZ21lbnRzIChieSBoYWNraXNobHkKKwkJCSAqIHJldXNp bmcgc3RhdGJ1ZiBmcm9tIGFib3ZlIC4uLikuCiAJCQkgKi8KIAkJCXNpemUgKz0gX3RhcldyaXRl SGVhZGVyKCIuL3BnX3dhbC9hcmNoaXZlX3N0YXR1cyIsIE5VTEwsICZzdGF0YnVmLAogCQkJCQkJ CQkJc2l6ZW9ubHkpOworCQkJc2l6ZSArPSBfdGFyV3JpdGVIZWFkZXIoIi4vcGdfd2FsL3ByZWFs bG9jYXRlZF9zZWdtZW50cyIsIE5VTEwsCisJCQkJCQkJCQkmc3RhdGJ1Ziwgc2l6ZW9ubHkpOwog CiAJCQljb250aW51ZTsJCQkvKiBkb24ndCByZWN1cnNlIGludG8gcGdfd2FsICovCiAJCX0KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9mZC5jIGIvc3JjL2JhY2tlbmQvc3Rv cmFnZS9maWxlL2ZkLmMKaW5kZXggNWQ1ZThhZTk0ZS4uZWY5NDg1Y2YxMiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvc3RvcmFnZS9maWxlL2ZkLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9m aWxlL2ZkLmMKQEAgLTc2LDYgKzc2LDcgQEAKICNpbmNsdWRlIDxzeXMvZmlsZS5oPgogI2luY2x1 ZGUgPHN5cy9wYXJhbS5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8c3lzL3Rp bWUuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpZm5kZWYgV0lOMzIKICNpbmNsdWRlIDxz eXMvbW1hbi5oPgpAQCAtMzgyMywzICszODI0LDExNyBAQCBwZ19wd3JpdGV2X3dpdGhfcmV0cnko aW50IGZkLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgaW50IGlvdmNudCwgb2ZmX3Qgb2Zmc2V0 KQogCiAJcmV0dXJuIHN1bTsKIH0KKworLyoKKyAqIENyZWF0ZUVtcHR5V2FsU2VnbWVudAorICoK KyAqIENyZWF0ZSBhIG5ldyBmaWxlIHRoYXQgY2FuIGJlIHVzZWQgYXMgYSBuZXcgV0FMIHNlZ21l bnQuICBUaGUgY2FsbGVyIGlzCisgKiByZXNwb25zaWJsZSBmb3IgaW5zdGFsbGluZyB0aGUgbmV3 IGZpbGUgaW4gcGdfd2FsLgorICovCit2b2lkCitDcmVhdGVFbXB0eVdhbFNlZ21lbnQoY29uc3Qg Y2hhciAqcGF0aCkKK3sKKwlQR0FsaWduZWRYTG9nQmxvY2sgemJ1ZmZlcjsKKwlpbnQJCQlmZDsK KwlpbnQJCQlzYXZlX2Vycm5vOworCisJdW5saW5rKHBhdGgpOworCisJLyogZG8gbm90IHVzZSBn ZXRfc3luY19iaXQoKSBoZXJlIC0tLSB3YW50IHRvIGZzeW5jIG9ubHkgYXQgZW5kIG9mIGZpbGwg Ki8KKwlmZCA9IEJhc2ljT3BlbkZpbGUocGF0aCwgT19SRFdSIHwgT19DUkVBVCB8IE9fRVhDTCB8 IFBHX0JJTkFSWSk7CisJaWYgKGZkIDwgMCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29k ZV9mb3JfZmlsZV9hY2Nlc3MoKSwKKwkJCQkgZXJybXNnKCJjb3VsZCBub3QgY3JlYXRlIGZpbGUg XCIlc1wiOiAlbSIsIHBhdGgpKSk7CisKKwltZW1zZXQoemJ1ZmZlci5kYXRhLCAwLCBYTE9HX0JM Q0tTWik7CisKKwlwZ3N0YXRfcmVwb3J0X3dhaXRfc3RhcnQoV0FJVF9FVkVOVF9XQUxfSU5JVF9X UklURSk7CisJc2F2ZV9lcnJubyA9IDA7CisJaWYgKHdhbF9pbml0X3plcm8pCisJeworCQlzdHJ1 Y3QgaW92ZWMgaW92W1BHX0lPVl9NQVhdOworCQlpbnQJCQlibG9ja3M7CisKKwkJLyoKKwkJICog WmVyby1maWxsIHRoZSBmaWxlLiAgV2l0aCB0aGlzIHNldHRpbmcsIHdlIGRvIHRoaXMgdGhlIGhh cmQgd2F5IHRvCisJCSAqIGVuc3VyZSB0aGF0IGFsbCB0aGUgZmlsZSBzcGFjZSBoYXMgcmVhbGx5 IGJlZW4gYWxsb2NhdGVkLiAgT24KKwkJICogcGxhdGZvcm1zIHRoYXQgYWxsb3cgImhvbGVzIiBp biBmaWxlcywganVzdCBzZWVraW5nIHRvIHRoZSBlbmQKKwkJICogZG9lc24ndCBhbGxvY2F0ZSBp bnRlcm1lZGlhdGUgc3BhY2UuICBUaGlzIHdheSwgd2Uga25vdyB0aGF0IHdlCisJCSAqIGhhdmUg YWxsIHRoZSBzcGFjZSBhbmQgKGFmdGVyIHRoZSBmc3luYyBiZWxvdykgdGhhdCBhbGwgdGhlCisJ CSAqIGluZGlyZWN0IGJsb2NrcyBhcmUgZG93biBvbiBkaXNrLiAgVGhlcmVmb3JlLCBmZGF0YXN5 bmMoMikgb3IKKwkJICogT19EU1lOQyB3aWxsIGJlIHN1ZmZpY2llbnQgdG8gc3luYyBmdXR1cmUg d3JpdGVzIHRvIHRoZSBsb2cgZmlsZS4KKwkJICovCisKKwkJLyogUHJlcGFyZSB0byB3cml0ZSBv dXQgYSBsb3Qgb2YgY29waWVzIG9mIG91ciB6ZXJvIGJ1ZmZlciBhdCBvbmNlLiAqLworCQlmb3Ig KGludCBpID0gMDsgaSA8IGxlbmd0aG9mKGlvdik7ICsraSkKKwkJeworCQkJaW92W2ldLmlvdl9i YXNlID0gemJ1ZmZlci5kYXRhOworCQkJaW92W2ldLmlvdl9sZW4gPSBYTE9HX0JMQ0tTWjsKKwkJ fQorCisJCS8qIExvb3AsIHdyaXRpbmcgYXMgbWFueSBibG9ja3MgYXMgd2UgY2FuIGZvciBlYWNo IHN5c3RlbSBjYWxsLiAqLworCQlibG9ja3MgPSB3YWxfc2VnbWVudF9zaXplIC8gWExPR19CTENL U1o7CisJCWZvciAoaW50IGkgPSAwOyBpIDwgYmxvY2tzOykKKwkJeworCQkJaW50CQkJaW92Y250 ID0gTWluKGJsb2NrcyAtIGksIGxlbmd0aG9mKGlvdikpOworCQkJb2ZmX3QJCW9mZnNldCA9IGkg KiBYTE9HX0JMQ0tTWjsKKworCQkJaWYgKHBnX3B3cml0ZXZfd2l0aF9yZXRyeShmZCwgaW92LCBp b3ZjbnQsIG9mZnNldCkgPCAwKQorCQkJeworCQkJCXNhdmVfZXJybm8gPSBlcnJubzsKKwkJCQli cmVhazsKKwkJCX0KKworCQkJaSArPSBpb3ZjbnQ7CisJCX0KKwl9CisJZWxzZQorCXsKKwkJLyoK KwkJICogT3RoZXJ3aXNlLCBzZWVraW5nIHRvIHRoZSBlbmQgYW5kIHdyaXRpbmcgYSBzb2xpdGFy eSBieXRlIGlzCisJCSAqIGVub3VnaC4KKwkJICovCisJCWVycm5vID0gMDsKKwkJaWYgKHBnX3B3 cml0ZShmZCwgemJ1ZmZlci5kYXRhLCAxLCB3YWxfc2VnbWVudF9zaXplIC0gMSkgIT0gMSkKKwkJ eworCQkJLyogaWYgd3JpdGUgZGlkbid0IHNldCBlcnJubywgYXNzdW1lIG5vIGRpc2sgc3BhY2Ug Ki8KKwkJCXNhdmVfZXJybm8gPSBlcnJubyA/IGVycm5vIDogRU5PU1BDOworCQl9CisJfQorCXBn c3RhdF9yZXBvcnRfd2FpdF9lbmQoKTsKKworCWlmIChzYXZlX2Vycm5vKQorCXsKKwkJLyoKKwkJ ICogSWYgd2UgZmFpbCB0byBtYWtlIHRoZSBmaWxlLCBkZWxldGUgaXQgdG8gcmVsZWFzZSBkaXNr IHNwYWNlCisJCSAqLworCQl1bmxpbmsocGF0aCk7CisKKwkJY2xvc2UoZmQpOworCisJCWVycm5v ID0gc2F2ZV9lcnJubzsKKworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlX2Zvcl9maWxl X2FjY2VzcygpLAorCQkJCSBlcnJtc2coImNvdWxkIG5vdCB3cml0ZSB0byBmaWxlIFwiJXNcIjog JW0iLCBwYXRoKSkpOworCX0KKworCXBnc3RhdF9yZXBvcnRfd2FpdF9zdGFydChXQUlUX0VWRU5U X1dBTF9JTklUX1NZTkMpOworCWlmIChwZ19mc3luYyhmZCkgIT0gMCkKKwl7CisJCWludAkJCXNh dmVfZXJybm8gPSBlcnJubzsKKworCQljbG9zZShmZCk7CisJCWVycm5vID0gc2F2ZV9lcnJubzsK KwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZV9mb3JfZmlsZV9hY2Nlc3MoKSwKKwkJCQkg ZXJybXNnKCJjb3VsZCBub3QgZnN5bmMgZmlsZSBcIiVzXCI6ICVtIiwgcGF0aCkpKTsKKwl9CisJ cGdzdGF0X3JlcG9ydF93YWl0X2VuZCgpOworCisJaWYgKGNsb3NlKGZkKSAhPSAwKQorCQllcmVw b3J0KEVSUk9SLAorCQkJCShlcnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLAorCQkJCSBlcnJtc2co ImNvdWxkIG5vdCBjbG9zZSBmaWxlIFwiJXNcIjogJW0iLCBwYXRoKSkpOworfQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2x3bG9ja25hbWVzLnR4dCBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvbG1nci9sd2xvY2tuYW1lcy50eHQKaW5kZXggNmM3Y2Y2YzI5NS4uMjEyYmRhOGU3 ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2x3bG9ja25hbWVzLnR4dAor KysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrbmFtZXMudHh0CkBAIC01MywzICs1 Myw0IEBAIFhhY3RUcnVuY2F0aW9uTG9jawkJCQkJNDQKICMgNDUgd2FzIFhhY3RUcnVuY2F0aW9u TG9jayB1bnRpbCByZW1vdmFsIG9mIEJhY2tlbmRSYW5kb21Mb2NrCiBXcmFwTGltaXRzVmFjdXVt TG9jawkJCQk0NgogTm90aWZ5UXVldWVUYWlsTG9jawkJCQkJNDcKK1dBTFByZWFsbG9jYXRpb25M b2NrCQkJCTQ4CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jIGIv c3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYwppbmRleCBiN2Q5ZGEwYWE5Li41NzkwZDU4 NmVmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCisrKyBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKQEAgLTE4MSw2ICsxODEsNyBAQCBJbml0UHJv Y0dsb2JhbCh2b2lkKQogCVByb2NHbG9iYWwtPnN0YXJ0dXBQcm9jUGlkID0gMDsKIAlQcm9jR2xv YmFsLT5zdGFydHVwQnVmZmVyUGluV2FpdEJ1ZklkID0gLTE7CiAJUHJvY0dsb2JhbC0+d2Fsd3Jp dGVyTGF0Y2ggPSBOVUxMOworCVByb2NHbG9iYWwtPndhbEFsbG9jYXRvckxhdGNoID0gTlVMTDsK IAlQcm9jR2xvYmFsLT5jaGVja3BvaW50ZXJMYXRjaCA9IE5VTEw7CiAJcGdfYXRvbWljX2luaXRf dTMyKCZQcm9jR2xvYmFsLT5wcm9jQXJyYXlHcm91cEZpcnN0LCBJTlZBTElEX1BHUFJPQ05PKTsK IAlwZ19hdG9taWNfaW5pdF91MzIoJlByb2NHbG9iYWwtPmNsb2dHcm91cEZpcnN0LCBJTlZBTElE X1BHUFJPQ05PKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRf ZXZlbnQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYwppbmRleCBl ZjdlNmJmYjc3Li5hM2M0MzI0YzkyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rp dml0eS93YWl0X2V2ZW50LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9l dmVudC5jCkBAIC0yNDgsNiArMjQ4LDkgQEAgcGdzdGF0X2dldF93YWl0X2FjdGl2aXR5KFdhaXRF dmVudEFjdGl2aXR5IHcpCiAJCWNhc2UgV0FJVF9FVkVOVF9XQUxfV1JJVEVSX01BSU46CiAJCQll dmVudF9uYW1lID0gIldhbFdyaXRlck1haW4iOwogCQkJYnJlYWs7CisJCWNhc2UgV0FJVF9FVkVO VF9XQUxfQUxMT0NBVE9SX01BSU46CisJCQlldmVudF9uYW1lID0gIldhbEFsbG9jYXRvck1haW4i OworCQkJYnJlYWs7CiAJCQkvKiBubyBkZWZhdWx0IGNhc2UsIHNvIHRoYXQgY29tcGlsZXIgd2ls bCB3YXJuICovCiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9pbml0L21pc2Np bml0LmMgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L21pc2Npbml0LmMKaW5kZXggODg4MDEzNzRi NS4uOWYxMmUxOGI2NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9taXNjaW5p dC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2luaXQuYwpAQCAtMjg1LDYgKzI4 NSw5IEBAIEdldEJhY2tlbmRUeXBlRGVzYyhCYWNrZW5kVHlwZSBiYWNrZW5kVHlwZSkKIAkJY2Fz ZSBCX1dBTF9XUklURVI6CiAJCQliYWNrZW5kRGVzYyA9ICJ3YWx3cml0ZXIiOwogCQkJYnJlYWs7 CisJCWNhc2UgQl9XQUxfQUxMT0NBVE9SOgorCQkJYmFja2VuZERlc2MgPSAid2FsIGFsbG9jYXRv ciI7CisJCQlicmVhazsKIAkJY2FzZSBCX0FSQ0hJVkVSOgogCQkJYmFja2VuZERlc2MgPSAiYXJj aGl2ZXIiOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1 Yy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwppbmRleCBhMmUwZjhkZTdlLi5iMjIw MzExNjg3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKQEAgLTcyLDYgKzcyLDcgQEAKICNpbmNsdWRlICJw b3N0bWFzdGVyL2Jnd3JpdGVyLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9wb3N0bWFzdGVyLmgi CiAjaW5jbHVkZSAicG9zdG1hc3Rlci9zeXNsb2dnZXIuaCIKKyNpbmNsdWRlICJwb3N0bWFzdGVy L3dhbF9hbGxvY2F0b3IuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL3dhbHdyaXRlci5oIgogI2lu Y2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0 aW9uL3Jlb3JkZXJidWZmZXIuaCIKQEAgLTI4MTYsNiArMjgxNywxNyBAQCBzdGF0aWMgc3RydWN0 IGNvbmZpZ19pbnQgQ29uZmlndXJlTmFtZXNJbnRbXSA9CiAJCU5VTEwsIE5VTEwsIE5VTEwKIAl9 LAogCisJeworCQl7IndhbF9hbGxvY2F0b3JfbWF4X3NpemUiLCBQR0NfU0lHSFVQLCBXQUxfU0VU VElOR1MsCisJCQlnZXR0ZXh0X25vb3AoIlNldHMgdGhlIG1heGltdW0gYW1vdW50IG9mIFdBTCB0 byBwcmUtYWxsb2NhdGUuIiksCisJCQlOVUxMLAorCQkJR1VDX1VOSVRfTUIKKwkJfSwKKwkJJndh bF9hbGxvY19tYXhfc2l6ZV9tYiwKKwkJNjQsIDAsIDEwMjQwMCwKKwkJTlVMTCwgTlVMTCwgTlVM TAorCX0sCisKIAl7CiAJCXsid2FsX2J1ZmZlcnMiLCBQR0NfUE9TVE1BU1RFUiwgV0FMX1NFVFRJ TkdTLAogCQkJZ2V0dGV4dF9ub29wKCJTZXRzIHRoZSBudW1iZXIgb2YgZGlzay1wYWdlIGJ1ZmZl cnMgaW4gc2hhcmVkIG1lbW9yeSBmb3IgV0FMLiIpLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlz Yy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCmluZGV4IGIyNDJhN2ZjOGIuLmMyNDc2YTRiY2EgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQor KysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKQEAgLTIy Myw2ICsyMjMsNyBAQAogCQkJCQkjIG9mZiwgcGdseiwgbHo0LCBvciBvbgogI3dhbF9pbml0X3pl cm8gPSBvbgkJCSMgemVyby1maWxsIG5ldyBXQUwgZmlsZXMKICN3YWxfcmVjeWNsZSA9IG9uCQkJ IyByZWN5Y2xlIFdBTCBmaWxlcworI3dhbF9hbGxvY2F0b3JfbWF4X3NpemUgPSA2NE1CCQkjIGFt b3VudCBvZiBXQUwgdG8gcHJlLWFsbG9jYXRlCiAjd2FsX2J1ZmZlcnMgPSAtMQkJCSMgbWluIDMy a0IsIC0xIHNldHMgYmFzZWQgb24gc2hhcmVkX2J1ZmZlcnMKIAkJCQkJIyAoY2hhbmdlIHJlcXVp cmVzIHJlc3RhcnQpCiAjd2FsX3dyaXRlcl9kZWxheSA9IDIwMG1zCQkjIDEtMTAwMDAgbWlsbGlz ZWNvbmRzCmRpZmYgLS1naXQgYS9zcmMvYmluL2luaXRkYi9pbml0ZGIuYyBiL3NyYy9iaW4vaW5p dGRiL2luaXRkYi5jCmluZGV4IDVlODRjN2JiMjAuLjc0YjlhMzlhZDYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vaW5pdGRiL2luaXRkYi5jCisrKyBiL3NyYy9iaW4vaW5pdGRiL2luaXRkYi5jCkBAIC0y MDgsNiArMjA4LDcgQEAgc3RhdGljIGNoYXIgKmV4dHJhX29wdGlvbnMgPSAiIjsKIHN0YXRpYyBj b25zdCBjaGFyICpjb25zdCBzdWJkaXJzW10gPSB7CiAJImdsb2JhbCIsCiAJInBnX3dhbC9hcmNo aXZlX3N0YXR1cyIsCisJInBnX3dhbC9wcmVhbGxvY2F0ZWRfc2VnbWVudHMiLAogCSJwZ19jb21t aXRfdHMiLAogCSJwZ19keW5zaG1lbSIsCiAJInBnX25vdGlmeSIsCmRpZmYgLS1naXQgYS9zcmMv YmluL3BnX2Jhc2ViYWNrdXAvcGdfYmFzZWJhY2t1cC5jIGIvc3JjL2Jpbi9wZ19iYXNlYmFja3Vw L3BnX2Jhc2ViYWNrdXAuYwppbmRleCA3Mjk2ZWI5N2QwLi4xNzc4YzljOTFiIDEwMDY0NAotLS0g YS9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdfYmFzZWJhY2t1cC5jCisrKyBiL3NyYy9iaW4vcGdf YmFzZWJhY2t1cC9wZ19iYXNlYmFja3VwLmMKQEAgLTY4MCw2ICs2ODAsMjIgQEAgU3RhcnRMb2dT dHJlYW1lcihjaGFyICpzdGFydHBvcywgdWludDMyIHRpbWVsaW5lLCBjaGFyICpzeXNpZGVudGlm aWVyKQogCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY3JlYXRlIGRpcmVjdG9yeSBcIiVzXCI6 ICVtIiwgc3RhdHVzZGlyKTsKIAkJCWV4aXQoMSk7CiAJCX0KKworCQkvKgorCQkgKiBBbHNvIGNy ZWF0ZSBwZ193YWwvcHJlYWxsb2NhdGVkX3NlZ21lbnRzIGlmIG5lY2Vzc2FyeS4KKwkJICovCisJ CWlmIChQUXNlcnZlclZlcnNpb24oY29ubikgPj0gMTUwMDAwKQorCQl7CisJCQljaGFyIHByZWFs bG9jX2RpcltNQVhQR1BBVEhdOworCisJCQlzbnByaW50ZihwcmVhbGxvY19kaXIsIHNpemVvZihw cmVhbGxvY19kaXIpLCAiJXMvcGdfd2FsL3ByZWFsbG9jYXRlZF9zZWdtZW50cyIsCisJCQkJCSBi YXNlZGlyKTsKKwkJCWlmIChwZ19ta2Rpcl9wKHByZWFsbG9jX2RpciwgcGdfZGlyX2NyZWF0ZV9t b2RlKSAhPSAwICYmIGVycm5vICE9IEVFWElTVCkKKwkJCXsKKwkJCQlwZ19sb2dfZXJyb3IoImNv dWxkIG5vdCBjcmVhdGUgZGlyZWN0b3J5IFwiJXNcIjogJW0iLCBwcmVhbGxvY19kaXIpOworCQkJ CWV4aXQoMSk7CisJCQl9CisJCX0KIAl9CiAKIAkvKgpAQCAtMTYxNiw3ICsxNjMyLDggQEAgUmVj ZWl2ZVRhckFuZFVucGFja0NvcHlDaHVuayhzaXplX3QgciwgY2hhciAqY29weWJ1Ziwgdm9pZCAq Y2FsbGJhY2tfZGF0YSkKIAkJCQkJICovCiAJCQkJCWlmICghKChwZ19zdHJfZW5kc3dpdGgoc3Rh dGUtPmZpbGVuYW1lLCAiL3BnX3dhbCIpIHx8CiAJCQkJCQkgICBwZ19zdHJfZW5kc3dpdGgoc3Rh dGUtPmZpbGVuYW1lLCAiL3BnX3hsb2ciKSB8fAotCQkJCQkJICAgcGdfc3RyX2VuZHN3aXRoKHN0 YXRlLT5maWxlbmFtZSwgIi9hcmNoaXZlX3N0YXR1cyIpKSAmJgorCQkJCQkJICAgcGdfc3RyX2Vu ZHN3aXRoKHN0YXRlLT5maWxlbmFtZSwgIi9hcmNoaXZlX3N0YXR1cyIpIHx8CisJCQkJCQkgICBw Z19zdHJfZW5kc3dpdGgoc3RhdGUtPmZpbGVuYW1lLCAiL3ByZWFsbG9jYXRlZF9zZWdtZW50cyIp KSAmJgogCQkJCQkJICBlcnJubyA9PSBFRVhJU1QpKQogCQkJCQl7CiAJCQkJCQlwZ19sb2dfZXJy b3IoImNvdWxkIG5vdCBjcmVhdGUgZGlyZWN0b3J5IFwiJXNcIjogJW0iLApkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wZ19iYXNlYmFja3VwL3QvMDEwX3BnX2Jhc2ViYWNrdXAucGwgYi9zcmMvYmluL3Bn X2Jhc2ViYWNrdXAvdC8wMTBfcGdfYmFzZWJhY2t1cC5wbAppbmRleCBhMmNiMmE3Njc5Li40M2Ux ZTNlODlkIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvdC8wMTBfcGdfYmFzZWJh Y2t1cC5wbAorKysgYi9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvdC8wMTBfcGdfYmFzZWJhY2t1cC5w bApAQCAtMTIwLDEwICsxMjAsMTAgQEAgU0tJUDoKIAkJImNoZWNrIGJhY2t1cCBkaXIgcGVybWlz c2lvbnMiKTsKIH0KIAotIyBPbmx5IGFyY2hpdmVfc3RhdHVzIGRpcmVjdG9yeSBzaG91bGQgYmUg Y29waWVkIGluIHBnX3dhbC8uCisjIE9ubHkgYXJjaGl2ZV9zdGF0dXMgYW5kIHByZWFsbG9jYXRl ZF9zZWdtZW50cyBkaXJlY3RvcmllcyBzaG91bGQgYmUgY29waWVkIGluIHBnX3dhbC8uCiBpc19k ZWVwbHkoCiAJWyBzb3J0KHNsdXJwX2RpcigiJHRlbXBkaXIvYmFja3VwL3BnX3dhbC8iKSkgXSwK LQlbIHNvcnQgcXcoLiAuLiBhcmNoaXZlX3N0YXR1cykgXSwKKwlbIHNvcnQgcXcoLiAuLiBhcmNo aXZlX3N0YXR1cyBwcmVhbGxvY2F0ZWRfc2VnbWVudHMpIF0sCiAJJ25vIFdBTCBmaWxlcyBjb3Bp ZWQnKTsKIAogIyBDb250ZW50cyBvZiB0aGVzZSBkaXJlY3RvcmllcyBzaG91bGQgbm90IGJlIGNv cGllZC4KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfcmVzZXR3YWwvcGdfcmVzZXR3YWwuYyBiL3Ny Yy9iaW4vcGdfcmVzZXR3YWwvcGdfcmVzZXR3YWwuYwppbmRleCBiNzlmNzBhNjBkLi44MGVlMjhj NDA0IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3Jlc2V0d2FsL3BnX3Jlc2V0d2FsLmMKKysrIGIv c3JjL2Jpbi9wZ19yZXNldHdhbC9wZ19yZXNldHdhbC5jCkBAIC04NSw2ICs4NSw3IEBAIHN0YXRp YyB2b2lkIFJld3JpdGVDb250cm9sRmlsZSh2b2lkKTsKIHN0YXRpYyB2b2lkIEZpbmRFbmRPZlhM T0codm9pZCk7CiBzdGF0aWMgdm9pZCBLaWxsRXhpc3RpbmdYTE9HKHZvaWQpOwogc3RhdGljIHZv aWQgS2lsbEV4aXN0aW5nQXJjaGl2ZVN0YXR1cyh2b2lkKTsKK3N0YXRpYyB2b2lkIEtpbGxFeGlz dGluZ1ByZWFsbG9jYXRlZFNlZ21lbnRzKHZvaWQpOwogc3RhdGljIHZvaWQgV3JpdGVFbXB0eVhM T0codm9pZCk7CiBzdGF0aWMgdm9pZCB1c2FnZSh2b2lkKTsKIApAQCAtNTIyLDYgKzUyMyw3IEBA IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAlSZXdyaXRlQ29udHJvbEZpbGUoKTsKIAlL aWxsRXhpc3RpbmdYTE9HKCk7CiAJS2lsbEV4aXN0aW5nQXJjaGl2ZVN0YXR1cygpOworCUtpbGxF eGlzdGluZ1ByZWFsbG9jYXRlZFNlZ21lbnRzKCk7CiAJV3JpdGVFbXB0eVhMT0coKTsKIAogCXBy aW50ZihfKCJXcml0ZS1haGVhZCBsb2cgcmVzZXRcbiIpKTsKQEAgLTEwNjIsNiArMTA2NCw1MiBA QCBLaWxsRXhpc3RpbmdYTE9HKHZvaWQpCiB9CiAKIAorLyoKKyAqIFJlbW92ZSBleGlzdGluZyBw cmVhbGxvY2F0ZWQgc2VnbWVudHMKKyAqLworc3RhdGljIHZvaWQKK0tpbGxFeGlzdGluZ1ByZWFs bG9jYXRlZFNlZ21lbnRzKHZvaWQpCit7CisjZGVmaW5lIFBSRUFMTE9DU0VHRElSIFhMT0dESVIg Ii9wcmVhbGxvY2F0ZWRfc2VnbWVudHMiCisKKwlESVIJCSAgICp4bGRpcjsKKwlzdHJ1Y3QgZGly ZW50ICp4bGRlOworCWNoYXIJCXBhdGhbTUFYUEdQQVRIICsgc2l6ZW9mKFBSRUFMTE9DU0VHRElS KV07CisKKwl4bGRpciA9IG9wZW5kaXIoUFJFQUxMT0NTRUdESVIpOworCWlmICh4bGRpciA9PSBO VUxMKQorCXsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgb3BlbiBkaXJlY3RvcnkgXCIlc1wi OiAlbSIsIFBSRUFMTE9DU0VHRElSKTsKKwkJZXhpdCgxKTsKKwl9CisKKwl3aGlsZSAoZXJybm8g PSAwLCAoeGxkZSA9IHJlYWRkaXIoeGxkaXIpKSAhPSBOVUxMKQorCXsKKwkJaWYgKHN0cm5jbXAo eGxkZS0+ZF9uYW1lLCAieGxvZ3RlbXAiLCBzdHJsZW4oInhsb2d0ZW1wIikpID09ICAwKQorCQl7 CisJCQlzbnByaW50ZihwYXRoLCBzaXplb2YocGF0aCksICIlcy8lcyIsIFBSRUFMTE9DU0VHRElS LCB4bGRlLT5kX25hbWUpOworCQkJaWYgKHVubGluayhwYXRoKSA8IDApCisJCQl7CisJCQkJcGdf bG9nX2Vycm9yKCJjb3VsZCBub3QgZGVsZXRlIGZpbGUgXCIlc1wiOiAlbSIsIHBhdGgpOworCQkJ CWV4aXQoMSk7CisJCQl9CisJCX0KKwl9CisKKwlpZiAoZXJybm8pCisJeworCQlwZ19sb2dfZXJy b3IoImNvdWxkIG5vdCByZWFkIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwgUFJFQUxMT0NTRUdESVIp OworCQlleGl0KDEpOworCX0KKworCWlmIChjbG9zZWRpcih4bGRpcikpCisJeworCQlwZ19sb2df ZXJyb3IoImNvdWxkIG5vdCBjbG9zZSBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIFBSRUFMTE9DU0VH RElSKTsKKwkJZXhpdCgxKTsKKwl9Cit9CisKKwogLyoKICAqIFJlbW92ZSBleGlzdGluZyBhcmNo aXZlIHN0YXR1cyBmaWxlcwogICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxv Zy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cuaAppbmRleCAwYThlZGU3MDBkLi43ZDk5ZDkw MjQ0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oCisrKyBiL3NyYy9pbmNs dWRlL2FjY2Vzcy94bG9nLmgKQEAgLTMyNyw2ICszMjcsMTEgQEAgZXh0ZXJuIHZvaWQgWExvZ1Jl cXVlc3RXYWxSZWNlaXZlclJlcGx5KHZvaWQpOwogZXh0ZXJuIHZvaWQgYXNzaWduX21heF93YWxf c2l6ZShpbnQgbmV3dmFsLCB2b2lkICpleHRyYSk7CiBleHRlcm4gdm9pZCBhc3NpZ25fY2hlY2tw b2ludF9jb21wbGV0aW9uX3RhcmdldChkb3VibGUgbmV3dmFsLCB2b2lkICpleHRyYSk7CiAKK2V4 dGVybiBpbnQgR2V0TnVtUHJlYWxsb2NhdGVkV2FsU2Vncyh2b2lkKTsKK2V4dGVybiB2b2lkIElu c3RhbGxQcmVhbGxvY2F0ZWRXYWxTZWcoY29uc3QgY2hhciAqcGF0aCk7CitleHRlcm4gdm9pZCBT ZXROdW1QcmVhbGxvY2F0ZWRXYWxTZWdzKGludCBpKTsKK2V4dGVybiB2b2lkIFJlcXVlc3RXYWxQ cmVhbGxvY2F0aW9uKHZvaWQpOworCiAvKgogICogUm91dGluZXMgdG8gc3RhcnQsIHN0b3AsIGFu ZCBnZXQgc3RhdHVzIG9mIGEgYmFzZSBiYWNrdXAuCiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL21pc2NhZG1pbi5oIGIvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKaW5kZXggMmUyZTlhMzY0 YS4uZTEwZDM3YmMwMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKKysrIGIv c3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKQEAgLTMzMyw2ICszMzMsNyBAQCB0eXBlZGVmIGVudW0g QmFja2VuZFR5cGUKIAlCX1dBTF9SRUNFSVZFUiwKIAlCX1dBTF9TRU5ERVIsCiAJQl9XQUxfV1JJ VEVSLAorCUJfV0FMX0FMTE9DQVRPUiwKIAlCX0FSQ0hJVkVSLAogCUJfU1RBVFNfQ09MTEVDVE9S LAogCUJfTE9HR0VSLApAQCAtNDMzLDYgKzQzNCw3IEBAIHR5cGVkZWYgZW51bQogCUNoZWNrcG9p bnRlclByb2Nlc3MsCiAJV2FsV3JpdGVyUHJvY2VzcywKIAlXYWxSZWNlaXZlclByb2Nlc3MsCisJ V2FsQWxsb2NhdG9yUHJvY2VzcywKIAogCU5VTV9BVVhQUk9DVFlQRVMJCQkvKiBNdXN0IGJlIGxh c3QhICovCiB9IEF1eFByb2NUeXBlOwpAQCAtNDQ1LDYgKzQ0Nyw3IEBAIGV4dGVybiBBdXhQcm9j VHlwZSBNeUF1eFByb2NUeXBlOwogI2RlZmluZSBBbUNoZWNrcG9pbnRlclByb2Nlc3MoKQkJKE15 QXV4UHJvY1R5cGUgPT0gQ2hlY2twb2ludGVyUHJvY2VzcykKICNkZWZpbmUgQW1XYWxXcml0ZXJQ cm9jZXNzKCkJCShNeUF1eFByb2NUeXBlID09IFdhbFdyaXRlclByb2Nlc3MpCiAjZGVmaW5lIEFt V2FsUmVjZWl2ZXJQcm9jZXNzKCkJCShNeUF1eFByb2NUeXBlID09IFdhbFJlY2VpdmVyUHJvY2Vz cykKKyNkZWZpbmUgQW1XYWxBbGxvY2F0b3JQcm9jZXNzKCkJCShNeUF1eFByb2NUeXBlID09IFdh bEFsbG9jYXRvclByb2Nlc3MpCiAKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL3dhbF9hbGxvY2F0b3IuaCBiL3NyYy9pbmNsdWRlL3Bv c3RtYXN0ZXIvd2FsX2FsbG9jYXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAuLmM3ZTEzOTIyNmIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9wb3N0bWFz dGVyL3dhbF9hbGxvY2F0b3IuaApAQCAtMCwwICsxLDIxIEBACisvKi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAqCisgKiB3YWxfYWxsb2NhdG9yLmgKKyAqCSAgRXhwb3J0cyBmcm9tIHBvc3RtYXN0ZXIvd2Fs X2FsbG9jYXRvci5jLgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDIxLCBQ b3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAqIHNyYy9pbmNsdWRlL3Bv c3RtYXN0ZXIvd2FsX2FsbG9jYXRvci5oCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNp Zm5kZWYgX1dBTF9BTExPQ0FUT1JfSAorI2RlZmluZSBfV0FMX0FMTE9DQVRPUl9ICisKKy8qIEdV QyBvcHRpb25zICovCitleHRlcm4gaW50ICB3YWxfYWxsb2NfbWF4X3NpemVfbWI7CisKK2V4dGVy biB2b2lkIFdhbEFsbG9jYXRvck1haW4odm9pZCkgcGdfYXR0cmlidXRlX25vcmV0dXJuKCk7Citl eHRlcm4gYm9vbCBXYWxQcmVhbGxvY2F0aW9uRW5hYmxlZCh2b2lkKTsKKworI2VuZGlmCQkJCQkJ CS8qIF9XQUxfQUxMT0NBVE9SX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uv ZmQuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvZmQuaAppbmRleCAyZDg0M2ViOTkyLi5hMjFkNjky YTM2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2ZkLmgKKysrIGIvc3JjL2luY2x1 ZGUvc3RvcmFnZS9mZC5oCkBAIC0xODksNiArMTg5LDcgQEAgZXh0ZXJuIGludAlkdXJhYmxlX3Vu bGluayhjb25zdCBjaGFyICpmbmFtZSwgaW50IGxvZ2xldmVsKTsKIGV4dGVybiBpbnQJZHVyYWJs ZV9yZW5hbWVfZXhjbChjb25zdCBjaGFyICpvbGRmaWxlLCBjb25zdCBjaGFyICpuZXdmaWxlLCBp bnQgbG9nbGV2ZWwpOwogZXh0ZXJuIHZvaWQgU3luY0RhdGFEaXJlY3Rvcnkodm9pZCk7CiBleHRl cm4gaW50CWRhdGFfc3luY19lbGV2ZWwoaW50IGVsZXZlbCk7CitleHRlcm4gdm9pZCBDcmVhdGVF bXB0eVdhbFNlZ21lbnQoY29uc3QgY2hhciAqcGF0aCk7CiAKIC8qIEZpbGVuYW1lIGNvbXBvbmVu dHMgKi8KICNkZWZpbmUgUEdfVEVNUF9GSUxFU19ESVIgInBnc3FsX3RtcCIKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmgK aW5kZXggYmU2N2Q4YTg2MS4uOGQwY2FlMzdiMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3Rv cmFnZS9wcm9jLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmgKQEAgLTM0OCw2ICsz NDgsOCBAQCB0eXBlZGVmIHN0cnVjdCBQUk9DX0hEUgogCXBnX2F0b21pY191aW50MzIgY2xvZ0dy b3VwRmlyc3Q7CiAJLyogV0FMV3JpdGVyIHByb2Nlc3MncyBsYXRjaCAqLwogCUxhdGNoCSAgICp3 YWx3cml0ZXJMYXRjaDsKKwkvKiBXQUwgQWxsb2NhdG9yIHByb2Nlc3MncyBsYXRjaCAqLworCUxh dGNoCSAgICp3YWxBbGxvY2F0b3JMYXRjaDsKIAkvKiBDaGVja3BvaW50ZXIgcHJvY2VzcydzIGxh dGNoICovCiAJTGF0Y2gJICAgKmNoZWNrcG9pbnRlckxhdGNoOwogCS8qIEN1cnJlbnQgc2hhcmVk IGVzdGltYXRlIG9mIGFwcHJvcHJpYXRlIHNwaW5zX3Blcl9kZWxheSB2YWx1ZSAqLwpAQCAtMzcw LDExICszNzIsMTIgQEAgZXh0ZXJuIFBHUFJPQyAqUHJlcGFyZWRYYWN0UHJvY3M7CiAgKiBXZSBz ZXQgYXNpZGUgc29tZSBleHRyYSBQR1BST0Mgc3RydWN0dXJlcyBmb3IgYXV4aWxpYXJ5IHByb2Nl c3NlcywKICAqIGllIHRoaW5ncyB0aGF0IGFyZW4ndCBmdWxsLWZsZWRnZWQgYmFja2VuZHMgYnV0 IG5lZWQgc2htZW0gYWNjZXNzLgogICoKLSAqIEJhY2tncm91bmQgd3JpdGVyLCBjaGVja3BvaW50 ZXIsIFdBTCB3cml0ZXIgYW5kIGFyY2hpdmVyIHJ1biBkdXJpbmcgbm9ybWFsCi0gKiBvcGVyYXRp b24uICBTdGFydHVwIHByb2Nlc3MgYW5kIFdBTCByZWNlaXZlciBhbHNvIGNvbnN1bWUgMiBzbG90 cywgYnV0IFdBTAotICogd3JpdGVyIGlzIGxhdW5jaGVkIG9ubHkgYWZ0ZXIgc3RhcnR1cCBoYXMg ZXhpdGVkLCBzbyB3ZSBvbmx5IG5lZWQgNSBzbG90cy4KKyAqIEJhY2tncm91bmQgd3JpdGVyLCBj aGVja3BvaW50ZXIsIFdBTCB3cml0ZXIsIGFyY2hpdmVyLCBhbmQgV0FMIGFsbG9jYXRvciBydW4K KyAqIGR1cmluZyBub3JtYWwgb3BlcmF0aW9uLiAgU3RhcnR1cCBwcm9jZXNzIGFuZCBXQUwgcmVj ZWl2ZXIgYWxzbyBjb25zdW1lIDIKKyAqIHNsb3RzLCBidXQgV0FMIHdyaXRlciBpcyBsYXVuY2hl ZCBvbmx5IGFmdGVyIHN0YXJ0dXAgaGFzIGV4aXRlZCwgc28gd2Ugb25seQorICogbmVlZCA2IHNs b3RzLgogICovCi0jZGVmaW5lIE5VTV9BVVhJTElBUllfUFJPQ1MJCTUKKyNkZWZpbmUgTlVNX0FV WElMSUFSWV9QUk9DUwkJNgogCiAvKiBjb25maWd1cmFibGUgb3B0aW9ucyAqLwogZXh0ZXJuIFBH RExMSU1QT1JUIGludCBEZWFkbG9ja1RpbWVvdXQ7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91 dGlscy93YWl0X2V2ZW50LmggYi9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgKaW5kZXgg NjAwNzgyN2I0NC4uMThhMDVmOGQ1OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvd2Fp dF9ldmVudC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaApAQCAtNDcsNyAr NDcsOCBAQCB0eXBlZGVmIGVudW0KIAlXQUlUX0VWRU5UX1NZU0xPR0dFUl9NQUlOLAogCVdBSVRf RVZFTlRfV0FMX1JFQ0VJVkVSX01BSU4sCiAJV0FJVF9FVkVOVF9XQUxfU0VOREVSX01BSU4sCi0J V0FJVF9FVkVOVF9XQUxfV1JJVEVSX01BSU4KKwlXQUlUX0VWRU5UX1dBTF9XUklURVJfTUFJTiwK KwlXQUlUX0VWRU5UX1dBTF9BTExPQ0FUT1JfTUFJTgogfSBXYWl0RXZlbnRBY3Rpdml0eTsKIAog LyogLS0tLS0tLS0tLQotLSAKMi4xNi42Cgo= --_002_4B04FCF454C94D028EA6E1C30A1277FBamazoncom_--