Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qzhC6-000JET-Ma for pgsql-hackers@arkaria.postgresql.org; Sun, 05 Nov 2023 17:45:55 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1qzhC4-00AGm9-TN for pgsql-hackers@arkaria.postgresql.org; Sun, 05 Nov 2023 17:45:52 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qzhC4-00AGlz-6A for pgsql-hackers@lists.postgresql.org; Sun, 05 Nov 2023 17:45:52 +0000 Received: from mail.thelabyrinth.net ([45.56.70.56]) by makus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qzhBv-0046pi-5f for pgsql-hackers@postgresql.org; Sun, 05 Nov 2023 17:45:50 +0000 Received: from [10.5.0.2] (unknown [107.175.40.213]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: dsteele) by mail.thelabyrinth.net (Postfix) with ESMTPSA id E643F5467E for ; Sun, 5 Nov 2023 17:45:41 +0000 (UTC) Content-Type: multipart/mixed; boundary="------------o8G1z9XEnaisb0uuygZ0FBJh" Message-ID: <330b8277-e755-428e-b30c-eb9ed9cafd58@pgmasters.net> Date: Sun, 5 Nov 2023 13:45:39 -0400 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Add recovery to pg_control and remove backup_label From: David Steele To: Pg Hackers References: <2daf8adc-8db7-4204-a7f2-a7e94e2bfa4b@pgmasters.net> Content-Language: en-US In-Reply-To: <2daf8adc-8db7-4204-a7f2-a7e94e2bfa4b@pgmasters.net> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------o8G1z9XEnaisb0uuygZ0FBJh Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Rebased on 151ffcf6. --------------o8G1z9XEnaisb0uuygZ0FBJh Content-Type: text/plain; charset=UTF-8; name="v02-recovery-in-pgcontrol-remove-backuplabel.patch" Content-Disposition: attachment; filename="v02-recovery-in-pgcontrol-remove-backuplabel.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9iYWNrdXAuc2dtbCBiL2RvYy9zcmMvc2dtbC9i YWNrdXAuc2dtbAppbmRleCA4Y2IyNGQ2YWU1NC4uNmJlOGZiOTAyYzUgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9iYWNrdXAuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvYmFja3VwLnNn bWwKQEAgLTkzNSwxOSArOTM1LDIwIEBAIFNFTEVDVCAqIEZST00gcGdfYmFja3VwX3N0b3Ao d2FpdF9mb3JfYXJjaGl2ZSA9PiB0cnVlKTsKICAgICAgcmVhZHkgdG8gYXJjaGl2ZS4KICAg ICA8L3BhcmE+CiAgICAgPHBhcmE+Ci0gICAgIDxmdW5jdGlvbj5wZ19iYWNrdXBfc3RvcDwv ZnVuY3Rpb24+IHdpbGwgcmV0dXJuIG9uZSByb3cgd2l0aCB0aHJlZQotICAgICB2YWx1ZXMu IFRoZSBzZWNvbmQgb2YgdGhlc2UgZmllbGRzIHNob3VsZCBiZSB3cml0dGVuIHRvIGEgZmls ZSBuYW1lZAotICAgICA8ZmlsZW5hbWU+YmFja3VwX2xhYmVsPC9maWxlbmFtZT4gaW4gdGhl IHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBiYWNrdXAuIFRoZQotICAgICB0aGlyZCBmaWVsZCBz aG91bGQgYmUgd3JpdHRlbiB0byBhIGZpbGUgbmFtZWQKLSAgICAgPGZpbGVuYW1lPnRhYmxl c3BhY2VfbWFwPC9maWxlbmFtZT4gdW5sZXNzIHRoZSBmaWVsZCBpcyBlbXB0eS4gVGhlc2Ug ZmlsZXMgYXJlCisgICAgIDxmdW5jdGlvbj5wZ19iYWNrdXBfc3RvcDwvZnVuY3Rpb24+IHJl dHVybnMgdGhlCisgICAgIDxmaWxlbmFtZT5wZ19jb250cm9sPC9maWxlbmFtZT4gZmlsZSwg d2hpY2ggbXVzdCBiZSBzdG9yZWQgaW4gdGhlCisgICAgIDxmaWxlbmFtZT5nbG9iYWw8L2Zp bGVuYW1lPiBkaXJlY3Rvcnkgb2YgdGhlIGJhY2t1cC4gSXQgYWxzbyByZXR1cm5zIHRoZQor ICAgICA8ZmlsZW5hbWU+dGFibGVzcGFjZV9tYXA8L2ZpbGVuYW1lPiBmaWxlLCB3aGljaCBz aG91bGQgYmUgd3JpdHRlbiBpbiB0aGUKKyAgICAgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIGJh Y2t1cCB1bmxlc3MgdGhlIGZpZWxkIGlzIGVtcHR5LiBUaGVzZSBmaWxlcyBhcmUKICAgICAg dml0YWwgdG8gdGhlIGJhY2t1cCB3b3JraW5nIGFuZCBtdXN0IGJlIHdyaXR0ZW4gYnl0ZSBm b3IgYnl0ZSB3aXRob3V0Ci0gICAgIG1vZGlmaWNhdGlvbiwgd2hpY2ggbWF5IHJlcXVpcmUg b3BlbmluZyB0aGUgZmlsZSBpbiBiaW5hcnkgbW9kZS4KKyAgICAgbW9kaWZpY2F0aW9uLCB3 aGljaCB3aWxsIHJlcXVpcmUgb3BlbmluZyB0aGUgZmlsZSBpbiBiaW5hcnkgbW9kZS4KICAg ICA8L3BhcmE+CiAgICA8L2xpc3RpdGVtPgogICAgPGxpc3RpdGVtPgogICAgIDxwYXJhPgog ICAgICBPbmNlIHRoZSBXQUwgc2VnbWVudCBmaWxlcyBhY3RpdmUgZHVyaW5nIHRoZSBiYWNr dXAgYXJlIGFyY2hpdmVkLCB5b3UgYXJlCi0gICAgIGRvbmUuICBUaGUgZmlsZSBpZGVudGlm aWVkIGJ5IDxmdW5jdGlvbj5wZ19iYWNrdXBfc3RvcDwvZnVuY3Rpb24+J3MgZmlyc3QgcmV0 dXJuCisgICAgIGRvbmUuICBUaGUgZmlsZSBpZGVudGlmaWVkIGJ5IDxmdW5jdGlvbj5wZ19i YWNrdXBfc3RvcDwvZnVuY3Rpb24+J3MKKyAgICAgPHBhcmFtZXRlcj5sc248L3BhcmFtZXRl cj4gcmV0dXJuCiAgICAgIHZhbHVlIGlzIHRoZSBsYXN0IHNlZ21lbnQgdGhhdCBpcyByZXF1 aXJlZCB0byBmb3JtIGEgY29tcGxldGUgc2V0IG9mCiAgICAgIGJhY2t1cCBmaWxlcy4gIE9u IGEgcHJpbWFyeSwgaWYgPHZhcm5hbWU+YXJjaGl2ZV9tb2RlPC92YXJuYW1lPiBpcyBlbmFi bGVkIGFuZCB0aGUKICAgICAgPGxpdGVyYWw+d2FpdF9mb3JfYXJjaGl2ZTwvbGl0ZXJhbD4g cGFyYW1ldGVyIGlzIDxsaXRlcmFsPnRydWU8L2xpdGVyYWw+LApAQCAtMTAxMyw3ICsxMDE0 LDE1IEBAIFNFTEVDVCAqIEZST00gcGdfYmFja3VwX3N0b3Aod2FpdF9mb3JfYXJjaGl2ZSA9 PiB0cnVlKTsKICAgIDwvcGFyYT4KIAogICAgPHBhcmE+Ci0gICAgWW91IHNob3VsZCwgaG93 ZXZlciwgb21pdCBmcm9tIHRoZSBiYWNrdXAgdGhlIGZpbGVzIHdpdGhpbiB0aGUKKyAgICBZ b3UgbXVzdCBleGNsdWRlIDxmaWxlbmFtZT5nbG9iYWwvcGdfY29udHJvbDwvZmlsZW5hbWU+ IGZyb20geW91ciBiYWNrdXAKKyAgICBhbmQgcHV0IHRoZSBjb250ZW50cyBvZiB0aGUgPHBh cmFtZXRlcj5wZ19jb250cm9sX2ZpbGU8L3BhcmFtZXRlcj4gY29sdW1uCisgICAgcmV0dXJu ZWQgZnJvbSA8ZnVuY3Rpb24+cGdfYmFja3VwX3N0b3A8L2Z1bmN0aW9uPiBpbiB5b3VyIGJh Y2t1cCBhdAorICAgIDxmaWxlbmFtZT5nbG9iYWwvcGdfY29udHJvbDwvZmlsZW5hbWU+LiBU aGlzIGZpbGUgY29udGFpbnMgdGhlIGluZm9ybWF0aW9uCisgICAgcmVxdWlyZWQgdG8gc2Fm ZWx5IHJlY292ZXIuCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIFlvdSBzaG91bGQg YWxzbyBvbWl0IGZyb20gdGhlIGJhY2t1cCB0aGUgZmlsZXMgd2l0aGluIHRoZQogICAgIGNs dXN0ZXIncyA8ZmlsZW5hbWU+cGdfd2FsLzwvZmlsZW5hbWU+IHN1YmRpcmVjdG9yeS4gIFRo aXMKICAgICBzbGlnaHQgYWRqdXN0bWVudCBpcyB3b3J0aHdoaWxlIGJlY2F1c2UgaXQgcmVk dWNlcyB0aGUgcmlzawogICAgIG9mIG1pc3Rha2VzIHdoZW4gcmVzdG9yaW5nLiAgVGhpcyBp cyBlYXN5IHRvIGFycmFuZ2UgaWYKQEAgLTEwNjIsMTIgKzEwNzEsNyBAQCBTRUxFQ1QgKiBG Uk9NIHBnX2JhY2t1cF9zdG9wKHdhaXRfZm9yX2FyY2hpdmUgPT4gdHJ1ZSk7CiAgICA8L3Bh cmE+CiAKICAgIDxwYXJhPgotICAgIFRoZSBiYWNrdXAgbGFiZWwKLSAgICBmaWxlIGluY2x1 ZGVzIHRoZSBsYWJlbCBzdHJpbmcgeW91IGdhdmUgdG8gPGZ1bmN0aW9uPnBnX2JhY2t1cF9z dGFydDwvZnVuY3Rpb24+LAotICAgIGFzIHdlbGwgYXMgdGhlIHRpbWUgYXQgd2hpY2ggPGZ1 bmN0aW9uPnBnX2JhY2t1cF9zdGFydDwvZnVuY3Rpb24+IHdhcyBydW4sIGFuZAotICAgIHRo ZSBuYW1lIG9mIHRoZSBzdGFydGluZyBXQUwgZmlsZS4gIEluIGNhc2Ugb2YgY29uZnVzaW9u IGl0IGlzIHRoZXJlZm9yZQotICAgIHBvc3NpYmxlIHRvIGxvb2sgaW5zaWRlIGEgYmFja3Vw IGZpbGUgYW5kIGRldGVybWluZSBleGFjdGx5IHdoaWNoCi0gICAgYmFja3VwIHNlc3Npb24g dGhlIGR1bXAgZmlsZSBjYW1lIGZyb20uICBUaGUgdGFibGVzcGFjZSBtYXAgZmlsZSBpbmNs dWRlcworICAgIFRoZSB0YWJsZXNwYWNlIG1hcCBmaWxlIGluY2x1ZGVzCiAgICAgdGhlIHN5 bWJvbGljIGxpbmsgbmFtZXMgYXMgdGhleSBleGlzdCBpbiB0aGUgZGlyZWN0b3J5CiAgICAg PGZpbGVuYW1lPnBnX3RibHNwYy88L2ZpbGVuYW1lPiBhbmQgdGhlIGZ1bGwgcGF0aCBvZiBl YWNoIHN5bWJvbGljIGxpbmsuCiAgICAgVGhlc2UgZmlsZXMgYXJlIG5vdCBtZXJlbHkgZm9y IHlvdXIgaW5mb3JtYXRpb247IHRoZWlyIHByZXNlbmNlIGFuZApkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL2Z1bmMuc2dtbCBiL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKaW5kZXggYTZm Y2FjMDgyNGEuLjZmZDJlYjhjYzUwIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZnVuYy5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKQEAgLTI2ODE1LDcgKzI2ODE1LDEw IEBAIExPRzogIEdyYW5kIHRvdGFsOiAxNjUxOTIwIGJ5dGVzIGluIDIwMSBibG9ja3M7IDYy MjM2MCBmcmVlICg4OCBjaHVua3MpOyAxMDI5NTYwCiAgICAgICAgICAgPHBhcmFtZXRlcj5s YWJlbDwvcGFyYW1ldGVyPiA8dHlwZT50ZXh0PC90eXBlPgogICAgICAgICAgIDxvcHRpb25h bD4sIDxwYXJhbWV0ZXI+ZmFzdDwvcGFyYW1ldGVyPiA8dHlwZT5ib29sZWFuPC90eXBlPgog ICAgICAgICAgIDwvb3B0aW9uYWw+ICkKLSAgICAgICAgPHJldHVybnZhbHVlPnBnX2xzbjwv cmV0dXJudmFsdWU+CisgICAgICAgIDxyZXR1cm52YWx1ZT5yZWNvcmQ8L3JldHVybnZhbHVl PgorICAgICAgICAoIDxwYXJhbWV0ZXI+bHNuPC9wYXJhbWV0ZXI+IDx0eXBlPnBnX2xzbjwv dHlwZT4sCisgICAgICAgIDxwYXJhbWV0ZXI+dGltZWxpbmVfaWQ8L3BhcmFtZXRlcj4gPHR5 cGU+aW50ODwvdHlwZT4sCisgICAgICAgIDxwYXJhbWV0ZXI+c3RhcnQ8L3BhcmFtZXRlcj4g PHR5cGU+dGltZXN0YW1wdHo8L3R5cGU+ICkKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBh cmE+CiAgICAgICAgIFByZXBhcmVzIHRoZSBzZXJ2ZXIgdG8gYmVnaW4gYW4gb24tbGluZSBi YWNrdXAuICBUaGUgb25seSByZXF1aXJlZApAQCAtMjY4MjcsNiArMjY4MzAsMTMgQEAgTE9H OiAgR3JhbmQgdG90YWw6IDE2NTE5MjAgYnl0ZXMgaW4gMjAxIGJsb2NrczsgNjIyMzYwIGZy ZWUgKDg4IGNodW5rcyk7IDEwMjk1NjAKICAgICAgICAgYXMgcG9zc2libGUuICBUaGlzIGZv cmNlcyBhbiBpbW1lZGlhdGUgY2hlY2twb2ludCB3aGljaCB3aWxsIGNhdXNlIGEKICAgICAg ICAgc3Bpa2UgaW4gSS9PIG9wZXJhdGlvbnMsIHNsb3dpbmcgYW55IGNvbmN1cnJlbnRseSBl eGVjdXRpbmcgcXVlcmllcy4KICAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAg ICAgIFRoZSByZXN1bHQgY29sdW1ucyBjb250YWluIGluZm9ybWF0aW9uIGFib3V0IHRoZSBz dGFydCBvZiB0aGUgYmFja3VwCisgICAgICAgIGFuZCBjYW4gYmUgaWdub3JlZDogdGhlIDxw YXJhbWV0ZXI+bHNuPC9wYXJhbWV0ZXI+IGNvbHVtbiBob2xkcyB0aGUKKyAgICAgICAgc3Rh cnRpbmcgd3JpdGUtYWhlYWQgbG9nIGxvY2F0aW9uLCB0aGUKKyAgICAgICAgPHBhcmFtZXRl cj50aW1lbGluZV9pZDwvcGFyYW1ldGVyPiBjb2x1bW4gaG9sZHMgdGhlIHN0YXJ0aW5nIHRp bWVsaW5lLAorICAgICAgICBhbmQgdGhlIDxwYXJhbWV0ZXI+c3RvcDwvcGFyYW1ldGVyPiBj b2x1bW4gaG9sZHMgdGhlIHN0YXJ0aW5nIHRpbWVzdGFtcC4KKyAgICAgICA8L3BhcmE+CiAg ICAgICAgPHBhcmE+CiAgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgcmVzdHJpY3RlZCB0byBz dXBlcnVzZXJzIGJ5IGRlZmF1bHQsIGJ1dCBvdGhlciB1c2VycwogICAgICAgICBjYW4gYmUg Z3JhbnRlZCBFWEVDVVRFIHRvIHJ1biB0aGUgZnVuY3Rpb24uCkBAIC0yNjg0MiwxMyArMjY4 NTIsMTUgQEAgTE9HOiAgR3JhbmQgdG90YWw6IDE2NTE5MjAgYnl0ZXMgaW4gMjAxIGJsb2Nr czsgNjIyMzYwIGZyZWUgKDg4IGNodW5rcyk7IDEwMjk1NjAKICAgICAgICAgICA8b3B0aW9u YWw+PHBhcmFtZXRlcj53YWl0X2Zvcl9hcmNoaXZlPC9wYXJhbWV0ZXI+IDx0eXBlPmJvb2xl YW48L3R5cGU+CiAgICAgICAgICAgPC9vcHRpb25hbD4gKQogICAgICAgICA8cmV0dXJudmFs dWU+cmVjb3JkPC9yZXR1cm52YWx1ZT4KLSAgICAgICAgKCA8cGFyYW1ldGVyPmxzbjwvcGFy YW1ldGVyPiA8dHlwZT5wZ19sc248L3R5cGU+LAotICAgICAgICA8cGFyYW1ldGVyPmxhYmVs ZmlsZTwvcGFyYW1ldGVyPiA8dHlwZT50ZXh0PC90eXBlPiwKLSAgICAgICAgPHBhcmFtZXRl cj5zcGNtYXBmaWxlPC9wYXJhbWV0ZXI+IDx0eXBlPnRleHQ8L3R5cGU+ICkKKyAgICAgICAg KCA8cGFyYW1ldGVyPnBnX2NvbnRyb2xfZmlsZTwvcGFyYW1ldGVyPiA8dHlwZT50ZXh0PC90 eXBlPiwKKyAgICAgICAgPHBhcmFtZXRlcj50YWJsZXNwYWNlX21hcF9maWxlPC9wYXJhbWV0 ZXI+IDx0eXBlPnRleHQ8L3R5cGU+LAorICAgICAgICA8cGFyYW1ldGVyPmxzbjwvcGFyYW1l dGVyPiA8dHlwZT5wZ19sc248L3R5cGU+LAorICAgICAgICA8cGFyYW1ldGVyPnRpbWVsaW5l X2lkPC9wYXJhbWV0ZXI+IDx0eXBlPmludDg8L3R5cGU+LAorICAgICAgICA8cGFyYW1ldGVy PnN0b3A8L3BhcmFtZXRlcj4gPHR5cGU+dGltZXN0YW1wdHo8L3R5cGU+ICkKICAgICAgICA8 L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgIEZpbmlzaGVzIHBlcmZvcm1pbmcgYW4g b24tbGluZSBiYWNrdXAuICBUaGUgZGVzaXJlZCBjb250ZW50cyBvZiB0aGUKLSAgICAgICAg YmFja3VwIGxhYmVsIGZpbGUgYW5kIHRoZSB0YWJsZXNwYWNlIG1hcCBmaWxlIGFyZSByZXR1 cm5lZCBhcyBwYXJ0IG9mCisgICAgICAgIHBnX2NvbnRyb2wgZmlsZSBhbmQgdGhlIHRhYmxl c3BhY2UgbWFwIGZpbGUgYXJlIHJldHVybmVkIGFzIHBhcnQgb2YKICAgICAgICAgdGhlIHJl c3VsdCBvZiB0aGUgZnVuY3Rpb24gYW5kIG11c3QgYmUgd3JpdHRlbiB0byBmaWxlcyBpbiB0 aGUKICAgICAgICAgYmFja3VwIGFyZWEuICBUaGVzZSBmaWxlcyBtdXN0IG5vdCBiZSB3cml0 dGVuIHRvIHRoZSBsaXZlIGRhdGEgZGlyZWN0b3J5CiAgICAgICAgIChkb2luZyBzbyB3aWxs IGNhdXNlIFBvc3RncmVTUUwgdG8gZmFpbCB0byByZXN0YXJ0IGluIHRoZSBldmVudCBvZiBh CkBAIC0yNjg4MCwxMyArMjY4OTIsMTYgQEAgTE9HOiAgR3JhbmQgdG90YWw6IDE2NTE5MjAg Ynl0ZXMgaW4gMjAxIGJsb2NrczsgNjIyMzYwIGZyZWUgKDg4IGNodW5rcyk7IDEwMjk1NjAK ICAgICAgICAgYmFja3VwLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KLSAgICAg ICAgVGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24gaXMgYSBzaW5nbGUgcmVjb3JkLgotICAg ICAgICBUaGUgPHBhcmFtZXRlcj5sc248L3BhcmFtZXRlcj4gY29sdW1uIGhvbGRzIHRoZSBi YWNrdXAncyBlbmRpbmcKLSAgICAgICAgd3JpdGUtYWhlYWQgbG9nIGxvY2F0aW9uICh3aGlj aCBhZ2FpbiBjYW4gYmUgaWdub3JlZCkuICBUaGUgc2Vjb25kCi0gICAgICAgIGNvbHVtbiBy ZXR1cm5zIHRoZSBjb250ZW50cyBvZiB0aGUgYmFja3VwIGxhYmVsIGZpbGUsIGFuZCB0aGUg dGhpcmQKLSAgICAgICAgY29sdW1uIHJldHVybnMgdGhlIGNvbnRlbnRzIG9mIHRoZSB0YWJs ZXNwYWNlIG1hcCBmaWxlLiAgVGhlc2UgbXVzdCBiZQotICAgICAgICBzdG9yZWQgYXMgcGFy dCBvZiB0aGUgYmFja3VwIGFuZCBhcmUgcmVxdWlyZWQgYXMgcGFydCBvZiB0aGUgcmVzdG9y ZQotICAgICAgICBwcm9jZXNzLgorICAgICAgICBUaGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlv biBpcyBhIHNpbmdsZSByZWNvcmQuIFRoZSBmaXJzdCBjb2x1bW4gcmV0dXJucworICAgICAg ICB0aGUgY29udGVudHMgb2YgdGhlIDxmaWxlbmFtZT5wZ19jb250cm9sPC9maWxlbmFtZT4g ZmlsZSBhbmQgdGhlCisgICAgICAgIHNlY29uZCBjb2x1bW4gcmV0dXJucyB0aGUgY29udGVu dHMgb2YgdGhlCisgICAgICAgIDxmaWxlbmFtZT50YWJsZXNwYWNlX21hcDwvZmlsZW5hbWU+ IGZpbGUuICBUaGVzZSBtdXN0IGJlIHN0b3JlZCBhcyBwYXJ0CisgICAgICAgIG9mIHRoZSBi YWNrdXAgYW5kIGFyZSByZXF1aXJlZCBhcyBwYXJ0IG9mIHRoZSByZXN0b3JlIHByb2Nlc3Mu IFRoZQorICAgICAgICByZW1haW5kZXIgb2YgdGhlIGNvbHVtbnMgY29udGFpbiBpbmZvcm1h dGlvbiBhYm91dCB0aGUgZW5kIG9mIHRoZSBiYWNrdXAKKyAgICAgICAgYW5kIGNhbiBiZSBp Z25vcmVkOiB0aGUgPHBhcmFtZXRlcj5sc248L3BhcmFtZXRlcj4gY29sdW1uIGhvbGRzIHRo ZQorICAgICAgICBlbmRpbmcgd3JpdGUtYWhlYWQgbG9nIGxvY2F0aW9uLCB0aGUgPHBhcmFt ZXRlcj50aW1lbGluZV9pZDwvcGFyYW1ldGVyPgorICAgICAgICBjb2x1bW4gaG9sZHMgdGhl IGVuZGluZyB0aW1lbGluZSwgYW5kIHRoZSA8cGFyYW1ldGVyPnN0b3A8L3BhcmFtZXRlcj4K KyAgICAgICAgY29sdW1uIGhvbGRzIHRoZSBlbmRpbmcgdGltZXN0YW1wLgogICAgICAgIDwv cGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgVGhpcyBmdW5jdGlvbiBpcyByZXN0cmlj dGVkIHRvIHN1cGVydXNlcnMgYnkgZGVmYXVsdCwgYnV0IG90aGVyIHVzZXJzCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS94bG9nLmMKaW5kZXggYjU0MWJlOGVlYzIuLmZhNzgxNmNmOGVhIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCkBAIC03NCw2ICs3NCw3IEBACiAjaW5j bHVkZSAicGdfdHJhY2UuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3J0 L2F0b21pY3MuaCIKKyNpbmNsdWRlICJwb3J0L3BnX2NyYzMyYy5oIgogI2luY2x1ZGUgInBv cnQvcGdfaW92ZWMuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2Jnd3JpdGVyLmgiCiAjaW5j bHVkZSAicG9zdG1hc3Rlci9zdGFydHVwLmgiCkBAIC01MTE2LDcgKzUxMTcsNiBAQCBTdGFy dHVwWExPRyh2b2lkKQogCWJvb2wJCXdhc1NodXRkb3duOwogCWJvb2wJCWRpZENyYXNoOwog CWJvb2wJCWhhdmVUYmxzcGNNYXA7Ci0JYm9vbAkJaGF2ZUJhY2t1cExhYmVsOwogCVhMb2dS ZWNQdHIJRW5kT2ZMb2c7CiAJVGltZUxpbmVJRAlFbmRPZkxvZ1RMSTsKIAlUaW1lTGluZUlE CW5ld1RMSTsKQEAgLTUyNDAsMTMgKzUyNDAsMTQgQEAgU3RhcnR1cFhMT0codm9pZCkKIAkv KgogCSAqIFByZXBhcmUgZm9yIFdBTCByZWNvdmVyeSBpZiBuZWVkZWQuCiAJICoKLQkgKiBJ bml0V2FsUmVjb3ZlcnkgYW5hbHl6ZXMgdGhlIGNvbnRyb2wgZmlsZSBhbmQgdGhlIGJhY2t1 cCBsYWJlbCBmaWxlLCBpZgotCSAqIGFueS4gIEl0IHVwZGF0ZXMgdGhlIGluLW1lbW9yeSBD b250cm9sRmlsZSBidWZmZXIgYWNjb3JkaW5nIHRvIHRoZQotCSAqIHN0YXJ0aW5nIGNoZWNr cG9pbnQsIGFuZCBzZXRzIEluUmVjb3ZlcnkgYW5kIEFyY2hpdmVSZWNvdmVyeVJlcXVlc3Rl ZC4KKwkgKiBJbml0V2FsUmVjb3ZlcnkgYW5hbHl6ZXMgdGhlIGNvbnRyb2wgZmlsZSBhbmQg Y2hlY2tzIGlmIGJhY2t1cCByZWNvdmVyeQorCSAqIGhhcyBiZWVuIHJlcXVlc3RlZC4gIEl0 IHVwZGF0ZXMgdGhlIGluLW1lbW9yeSBDb250cm9sRmlsZSBidWZmZXIKKwkgKiBhY2NvcmRp bmcgdG8gdGhlIHN0YXJ0aW5nIGNoZWNrcG9pbnQsIGFuZCBzZXRzIEluUmVjb3ZlcnkgYW5k CisJICogQXJjaGl2ZVJlY292ZXJ5UmVxdWVzdGVkLgorCSAqCiAJICogSXQgYWxzbyBhcHBs aWVzIHRoZSB0YWJsZXNwYWNlIG1hcCBmaWxlLCBpZiBhbnkuCiAJICovCi0JSW5pdFdhbFJl Y292ZXJ5KENvbnRyb2xGaWxlLCAmd2FzU2h1dGRvd24sCi0JCQkJCSZoYXZlQmFja3VwTGFi ZWwsICZoYXZlVGJsc3BjTWFwKTsKKwlJbml0V2FsUmVjb3ZlcnkoQ29udHJvbEZpbGUsICZ3 YXNTaHV0ZG93biwgJmhhdmVUYmxzcGNNYXApOwogCWNoZWNrUG9pbnQgPSBDb250cm9sRmls ZS0+Y2hlY2tQb2ludENvcHk7CiAKIAkvKiBpbml0aWFsaXplIHNoYXJlZCBtZW1vcnkgdmFy aWFibGVzIGZyb20gdGhlIGNoZWNrcG9pbnQgcmVjb3JkICovCkBAIC01Mzg5LDIwICs1Mzkw LDYgQEAgU3RhcnR1cFhMT0codm9pZCkKIAkJICovCiAJCVVwZGF0ZUNvbnRyb2xGaWxlKCk7 CiAKLQkJLyoKLQkJICogSWYgdGhlcmUgd2FzIGEgYmFja3VwIGxhYmVsIGZpbGUsIGl0J3Mg ZG9uZSBpdHMgam9iIGFuZCB0aGUgaW5mbwotCQkgKiBoYXMgbm93IGJlZW4gcHJvcGFnYXRl ZCBpbnRvIHBnX2NvbnRyb2wuICBXZSBtdXN0IGdldCByaWQgb2YgdGhlCi0JCSAqIGxhYmVs IGZpbGUgc28gdGhhdCBpZiB3ZSBjcmFzaCBkdXJpbmcgcmVjb3ZlcnksIHdlJ2xsIHBpY2sg dXAgYXQKLQkJICogdGhlIGxhdGVzdCByZWNvdmVyeSByZXN0YXJ0cG9pbnQgaW5zdGVhZCBv ZiBnb2luZyBhbGwgdGhlIHdheSBiYWNrCi0JCSAqIHRvIHRoZSBiYWNrdXAgc3RhcnQgcG9p bnQuICBJdCBzZWVtcyBwcnVkZW50IHRob3VnaCB0byBqdXN0IHJlbmFtZQotCQkgKiB0aGUg ZmlsZSBvdXQgb2YgdGhlIHdheSByYXRoZXIgdGhhbiBkZWxldGUgaXQgY29tcGxldGVseS4K LQkJICovCi0JCWlmIChoYXZlQmFja3VwTGFiZWwpCi0JCXsKLQkJCXVubGluayhCQUNLVVBf TEFCRUxfT0xEKTsKLQkJCWR1cmFibGVfcmVuYW1lKEJBQ0tVUF9MQUJFTF9GSUxFLCBCQUNL VVBfTEFCRUxfT0xELCBGQVRBTCk7Ci0JCX0KLQogCQkvKgogCQkgKiBJZiB0aGVyZSB3YXMg YSB0YWJsZXNwYWNlX21hcCBmaWxlLCBpdCdzIGRvbmUgaXRzIGpvYiBhbmQgdGhlCiAJCSAq IHN5bWxpbmtzIGhhdmUgYmVlbiBjcmVhdGVkLiAgV2UgbXVzdCBnZXQgcmlkIG9mIHRoZSBt YXAgZmlsZSBzbwpAQCAtNTU1MiwxMCArNTUzOSw4IEBAIFN0YXJ0dXBYTE9HKHZvaWQpCiAJ ICogKGF0IHdoaWNoIHBvaW50IHdlIHJlc2V0IGJhY2t1cFN0YXJ0UG9pbnQgdG8gYmUgSW52 YWxpZCksIGZvcgogCSAqIGJhY2t1cC1mcm9tLXJlcGxpY2EgKHdoaWNoIGNhbid0IGluamVj dCByZWNvcmRzIGludG8gdGhlIFdBTCBzdHJlYW0pLAogCSAqIHRoYXQgcG9pbnQgaXMgd2hl biB3ZSByZWFjaCB0aGUgbWluUmVjb3ZlcnlQb2ludCBpbiBwZ19jb250cm9sICh3aGljaAot CSAqIHdlIHB1cnBvc2VmdWxseSBjb3B5IGxhc3Qgd2hlbiBiYWNraW5nIHVwIGZyb20gYSBy ZXBsaWNhKS4gIEZvcgotCSAqIHBnX3Jld2luZCAod2hpY2ggY3JlYXRlcyBhIGJhY2t1cF9s YWJlbCB3aXRoIGEgbWV0aG9kIG9mICJwZ19yZXdpbmQiKQotCSAqIG9yIHNuYXBzaG90LXN0 eWxlIGJhY2t1cHMgKHdoaWNoIGRvbid0KSwgYmFja3VwRW5kUmVxdWlyZWQgd2lsbCBiZSBz ZXQKLQkgKiB0byBmYWxzZS4KKwkgKiB3ZSBwdXJwb3NlZnVsbHkgY29weSBsYXN0IHdoZW4g YmFja2luZyB1cCkuICBGb3IgcGdfcmV3aW5kIG9yCisJICogc25hcHNob3Qtc3R5bGUgYmFj a3VwcywgYmFja3VwRW5kUmVxdWlyZWQgd2lsbCBiZSBzZXQgdG8gZmFsc2UuCiAJICoKIAkg KiBOb3RlOiBpdCBpcyBpbmRlZWQgb2theSB0byBsb29rIGF0IHRoZSBsb2NhbCB2YXJpYWJs ZQogCSAqIExvY2FsTWluUmVjb3ZlcnlQb2ludCBoZXJlLCBldmVuIHRob3VnaCBDb250cm9s RmlsZS0+bWluUmVjb3ZlcnlQb2ludApAQCAtODcyNSwxMSArODcxMCwzMyBAQCBkb19wZ19i YWNrdXBfc3RvcChCYWNrdXBTdGF0ZSAqc3RhdGUsIGJvb2wgd2FpdGZvcmFyY2hpdmUpCiAJ aW50CQkJc2Vjb25kc19iZWZvcmVfd2FybmluZzsKIAlpbnQJCQl3YWl0cyA9IDA7CiAJYm9v bAkJcmVwb3J0ZWRfd2FpdGluZyA9IGZhbHNlOworCUNvbnRyb2xGaWxlRGF0YSAqY29udHJv bEZpbGVDb3B5ID0gKENvbnRyb2xGaWxlRGF0YSAqKXN0YXRlLT5jb250cm9sRmlsZTsKIAog CUFzc2VydChzdGF0ZSAhPSBOVUxMKTsKIAogCWJhY2t1cF9zdG9wcGVkX2luX3JlY292ZXJ5 ID0gUmVjb3ZlcnlJblByb2dyZXNzKCk7CiAKKwkvKgorCSAqIENyZWF0ZSBhIGNvcHkgb2Yg Y29udHJvbCBkYXRhIGFuZCB1cGRhdGUgaXQgd2l0aCBmaWVsZHMgcmVxdWlyZWQgZm9yCisJ ICogcmVjb3ZlcnkuIEFsc28gcmVjYWxjdWxhdGUgdGhlIENSQy4KKwkgKi8KKwltZW1zZXQo Y29udHJvbEZpbGVDb3B5LCAwLCBQR19DT05UUk9MX01BWF9TQUZFX1NJWkUpOworCisJTFdM b2NrQWNxdWlyZShDb250cm9sRmlsZUxvY2ssIExXX1NIQVJFRCk7CisJbWVtY3B5KGNvbnRy b2xGaWxlQ29weSwgQ29udHJvbEZpbGUsIHNpemVvZihDb250cm9sRmlsZURhdGEpKTsKKwlM V0xvY2tSZWxlYXNlKENvbnRyb2xGaWxlTG9jayk7CisKKwljb250cm9sRmlsZUNvcHktPmJh Y2t1cFJlY292ZXJ5UmVxdWlyZWQgPSB0cnVlOworCWNvbnRyb2xGaWxlQ29weS0+YmFja3Vw RnJvbVN0YW5kYnkgPSBiYWNrdXBfc3RvcHBlZF9pbl9yZWNvdmVyeTsKKwljb250cm9sRmls ZUNvcHktPmJhY2t1cEVuZFJlcXVpcmVkID0gdHJ1ZTsKKwljb250cm9sRmlsZUNvcHktPmJh Y2t1cENoZWNrUG9pbnQgPSBzdGF0ZS0+Y2hlY2twb2ludGxvYzsKKwljb250cm9sRmlsZUNv cHktPmJhY2t1cFN0YXJ0UG9pbnQgPSBzdGF0ZS0+c3RhcnRwb2ludDsKKwljb250cm9sRmls ZUNvcHktPmJhY2t1cFN0YXJ0UG9pbnRUTEkgPSBzdGF0ZS0+c3RhcnR0bGk7CisKKwlJTklU X0NSQzMyQyhjb250cm9sRmlsZUNvcHktPmNyYyk7CisJQ09NUF9DUkMzMkMoY29udHJvbEZp bGVDb3B5LT5jcmMsIGNvbnRyb2xGaWxlQ29weSwgb2Zmc2V0b2YoQ29udHJvbEZpbGVEYXRh LCBjcmMpKTsKKwlGSU5fQ1JDMzJDKGNvbnRyb2xGaWxlQ29weS0+Y3JjKTsKKwogCS8qCiAJ ICogRHVyaW5nIHJlY292ZXJ5LCB3ZSBkb24ndCBuZWVkIHRvIGNoZWNrIFdBTCBsZXZlbC4g QmVjYXVzZSwgaWYgV0FMCiAJICogbGV2ZWwgaXMgbm90IHN1ZmZpY2llbnQsIGl0J3MgaW1w b3NzaWJsZSB0byBnZXQgaGVyZSBkdXJpbmcgcmVjb3ZlcnkuCkBAIC04ODMxLDExICs4ODM4 LDggQEAgZG9fcGdfYmFja3VwX3N0b3AoQmFja3VwU3RhdGUgKnN0YXRlLCBib29sIHdhaXRm b3JhcmNoaXZlKQogCQkJCQkJCSAiRW5hYmxlIGZ1bGxfcGFnZV93cml0ZXMgYW5kIHJ1biBD SEVDS1BPSU5UIG9uIHRoZSBwcmltYXJ5LCAiCiAJCQkJCQkJICJhbmQgdGhlbiB0cnkgYW4g b25saW5lIGJhY2t1cCBhZ2Fpbi4iKSkpOwogCi0KLQkJTFdMb2NrQWNxdWlyZShDb250cm9s RmlsZUxvY2ssIExXX1NIQVJFRCk7Ci0JCXN0YXRlLT5zdG9wcG9pbnQgPSBDb250cm9sRmls ZS0+bWluUmVjb3ZlcnlQb2ludDsKLQkJc3RhdGUtPnN0b3B0bGkgPSBDb250cm9sRmlsZS0+ bWluUmVjb3ZlcnlQb2ludFRMSTsKLQkJTFdMb2NrUmVsZWFzZShDb250cm9sRmlsZUxvY2sp OworCQlzdGF0ZS0+c3RvcHBvaW50ID0gY29udHJvbEZpbGVDb3B5LT5taW5SZWNvdmVyeVBv aW50OworCQlzdGF0ZS0+c3RvcHRsaSA9IGNvbnRyb2xGaWxlQ29weS0+bWluUmVjb3ZlcnlQ b2ludFRMSTsKIAl9CiAJZWxzZQogCXsKQEAgLTg4NzcsNyArODg4MSw3IEBAIGRvX3BnX2Jh Y2t1cF9zdG9wKEJhY2t1cFN0YXRlICpzdGF0ZSwgYm9vbCB3YWl0Zm9yYXJjaGl2ZSkKIAkJ CQkJCQloaXN0ZmlsZXBhdGgpKSk7CiAKIAkJLyogQnVpbGQgYW5kIHNhdmUgdGhlIGNvbnRl bnRzIG9mIHRoZSBiYWNrdXAgaGlzdG9yeSBmaWxlICovCi0JCWhpc3RvcnlfZmlsZSA9IGJ1 aWxkX2JhY2t1cF9jb250ZW50KHN0YXRlLCB0cnVlKTsKKwkJaGlzdG9yeV9maWxlID0gYnVp bGRfYmFja3VwX2NvbnRlbnQoc3RhdGUpOwogCQlmcHJpbnRmKGZwLCAiJXMiLCBoaXN0b3J5 X2ZpbGUpOwogCQlwZnJlZShoaXN0b3J5X2ZpbGUpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nYmFja3VwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS94bG9nYmFja3VwLmMKaW5kZXggMjFkNjgxMzNhZTEuLmI2MWVkMDJiYmJlIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nYmFja3VwLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2JhY2t1cC5jCkBAIC0xOCwxOSAr MTgsMTkgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2JhY2t1cC5oIgogCiAvKgotICogQnVp bGQgY29udGVudHMgZm9yIGJhY2t1cF9sYWJlbCBvciBiYWNrdXAgaGlzdG9yeSBmaWxlLgot ICoKLSAqIFdoZW4gaXNoaXN0b3J5ZmlsZSBpcyB0cnVlLCBpdCBjcmVhdGVzIHRoZSBjb250 ZW50cyBmb3IgYSBiYWNrdXAgaGlzdG9yeQotICogZmlsZSwgb3RoZXJ3aXNlIGl0IGNyZWF0 ZXMgY29udGVudHMgZm9yIGEgYmFja3VwX2xhYmVsIGZpbGUuCisgKiBCdWlsZCBjb250ZW50 cyBmb3IgYmFja3VwIGhpc3RvcnkgZmlsZS4KICAqCiAgKiBSZXR1cm5zIHRoZSByZXN1bHQg Z2VuZXJhdGVkIGFzIGEgcGFsbG9jJ2Qgc3RyaW5nLgogICovCiBjaGFyICoKLWJ1aWxkX2Jh Y2t1cF9jb250ZW50KEJhY2t1cFN0YXRlICpzdGF0ZSwgYm9vbCBpc2hpc3RvcnlmaWxlKQor YnVpbGRfYmFja3VwX2NvbnRlbnQoQmFja3VwU3RhdGUgKnN0YXRlKQogewogCWNoYXIJCXN0 YXJ0c3RyYnVmWzEyOF07CisJY2hhcgkJc3RvcHN0cmZidWZbMTI4XTsKIAljaGFyCQlzdGFy dHhsb2dmaWxlW01BWEZOQU1FTEVOXTsgLyogYmFja3VwIHN0YXJ0IFdBTCBmaWxlICovCisJ Y2hhcgkJc3RvcHhsb2dmaWxlW01BWEZOQU1FTEVOXTsJLyogYmFja3VwIHN0b3AgV0FMIGZp bGUgKi8KIAlYTG9nU2VnTm8Jc3RhcnRzZWdubzsKKwlYTG9nU2VnTm8Jc3RvcHNlZ25vOwog CVN0cmluZ0luZm8JcmVzdWx0ID0gbWFrZVN0cmluZ0luZm8oKTsKIAljaGFyCSAgICpkYXRh OwogCkBAIC00NSwxNiArNDUsMTAgQEAgYnVpbGRfYmFja3VwX2NvbnRlbnQoQmFja3VwU3Rh dGUgKnN0YXRlLCBib29sIGlzaGlzdG9yeWZpbGUpCiAJYXBwZW5kU3RyaW5nSW5mbyhyZXN1 bHQsICJTVEFSVCBXQUwgTE9DQVRJT046ICVYLyVYIChmaWxlICVzKVxuIiwKIAkJCQkJIExT Tl9GT1JNQVRfQVJHUyhzdGF0ZS0+c3RhcnRwb2ludCksIHN0YXJ0eGxvZ2ZpbGUpOwogCi0J aWYgKGlzaGlzdG9yeWZpbGUpCi0JewotCQljaGFyCQlzdG9weGxvZ2ZpbGVbTUFYRk5BTUVM RU5dOwkvKiBiYWNrdXAgc3RvcCBXQUwgZmlsZSAqLwotCQlYTG9nU2VnTm8Jc3RvcHNlZ25v OwotCi0JCVhMQnl0ZVRvU2VnKHN0YXRlLT5zdG9wcG9pbnQsIHN0b3BzZWdubywgd2FsX3Nl Z21lbnRfc2l6ZSk7Ci0JCVhMb2dGaWxlTmFtZShzdG9weGxvZ2ZpbGUsIHN0YXRlLT5zdG9w dGxpLCBzdG9wc2Vnbm8sIHdhbF9zZWdtZW50X3NpemUpOwotCQlhcHBlbmRTdHJpbmdJbmZv KHJlc3VsdCwgIlNUT1AgV0FMIExPQ0FUSU9OOiAlWC8lWCAoZmlsZSAlcylcbiIsCi0JCQkJ CQkgTFNOX0ZPUk1BVF9BUkdTKHN0YXRlLT5zdG9wcG9pbnQpLCBzdG9weGxvZ2ZpbGUpOwot CX0KKwlYTEJ5dGVUb1NlZyhzdGF0ZS0+c3RvcHBvaW50LCBzdG9wc2Vnbm8sIHdhbF9zZWdt ZW50X3NpemUpOworCVhMb2dGaWxlTmFtZShzdG9weGxvZ2ZpbGUsIHN0YXRlLT5zdG9wdGxp LCBzdG9wc2Vnbm8sIHdhbF9zZWdtZW50X3NpemUpOworCWFwcGVuZFN0cmluZ0luZm8ocmVz dWx0LCAiU1RPUCBXQUwgTE9DQVRJT046ICVYLyVYIChmaWxlICVzKVxuIiwKKwkJCQkJCUxT Tl9GT1JNQVRfQVJHUyhzdGF0ZS0+c3RvcHBvaW50KSwgc3RvcHhsb2dmaWxlKTsKIAogCWFw cGVuZFN0cmluZ0luZm8ocmVzdWx0LCAiQ0hFQ0tQT0lOVCBMT0NBVElPTjogJVgvJVhcbiIs CiAJCQkJCSBMU05fRk9STUFUX0FSR1Moc3RhdGUtPmNoZWNrcG9pbnRsb2MpKTsKQEAgLTY1 LDE3ICs1OSwxMiBAQCBidWlsZF9iYWNrdXBfY29udGVudChCYWNrdXBTdGF0ZSAqc3RhdGUs IGJvb2wgaXNoaXN0b3J5ZmlsZSkKIAlhcHBlbmRTdHJpbmdJbmZvKHJlc3VsdCwgIkxBQkVM OiAlc1xuIiwgc3RhdGUtPm5hbWUpOwogCWFwcGVuZFN0cmluZ0luZm8ocmVzdWx0LCAiU1RB UlQgVElNRUxJTkU6ICV1XG4iLCBzdGF0ZS0+c3RhcnR0bGkpOwogCi0JaWYgKGlzaGlzdG9y eWZpbGUpCi0JewotCQljaGFyCQlzdG9wc3RyZmJ1ZlsxMjhdOwotCi0JCS8qIFVzZSB0aGUg bG9nIHRpbWV6b25lIGhlcmUsIG5vdCB0aGUgc2Vzc2lvbiB0aW1lem9uZSAqLwotCQlwZ19z dHJmdGltZShzdG9wc3RyZmJ1Ziwgc2l6ZW9mKHN0b3BzdHJmYnVmKSwgIiVZLSVtLSVkICVI OiVNOiVTICVaIiwKLQkJCQkJcGdfbG9jYWx0aW1lKCZzdGF0ZS0+c3RvcHRpbWUsIGxvZ190 aW1lem9uZSkpOworCS8qIFVzZSB0aGUgbG9nIHRpbWV6b25lIGhlcmUsIG5vdCB0aGUgc2Vz c2lvbiB0aW1lem9uZSAqLworCXBnX3N0cmZ0aW1lKHN0b3BzdHJmYnVmLCBzaXplb2Yoc3Rv cHN0cmZidWYpLCAiJVktJW0tJWQgJUg6JU06JVMgJVoiLAorCQkJCXBnX2xvY2FsdGltZSgm c3RhdGUtPnN0b3B0aW1lLCBsb2dfdGltZXpvbmUpKTsKIAotCQlhcHBlbmRTdHJpbmdJbmZv KHJlc3VsdCwgIlNUT1AgVElNRTogJXNcbiIsIHN0b3BzdHJmYnVmKTsKLQkJYXBwZW5kU3Ry aW5nSW5mbyhyZXN1bHQsICJTVE9QIFRJTUVMSU5FOiAldVxuIiwgc3RhdGUtPnN0b3B0bGkp OwotCX0KKwlhcHBlbmRTdHJpbmdJbmZvKHJlc3VsdCwgIlNUT1AgVElNRTogJXNcbiIsIHN0 b3BzdHJmYnVmKTsKKwlhcHBlbmRTdHJpbmdJbmZvKHJlc3VsdCwgIlNUT1AgVElNRUxJTkU6 ICV1XG4iLCBzdGF0ZS0+c3RvcHRsaSk7CiAKIAlkYXRhID0gcmVzdWx0LT5kYXRhOwogCXBm cmVlKHJlc3VsdCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 bG9nZnVuY3MuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dmdW5jcy5jCmlu ZGV4IDQ1YTcwNjY4YjFjLi4yMzg4YTYwYTVlNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0veGxvZ2Z1bmNzLmMKQEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIE1lbW9yeUNvbnRl eHQgYmFja3VwY29udGV4dCA9IE5VTEw7CiAgKiBwZ19iYWNrdXBfc3RhcnQ6IHNldCB1cCBm b3IgdGFraW5nIGFuIG9uLWxpbmUgYmFja3VwIGR1bXAKICAqCiAgKiBFc3NlbnRpYWxseSB3 aGF0IHRoaXMgZG9lcyBpcyB0byBjcmVhdGUgdGhlIGNvbnRlbnRzIHJlcXVpcmVkIGZvciB0 aGUKLSAqIGJhY2t1cF9sYWJlbCBmaWxlIGFuZCB0aGUgdGFibGVzcGFjZSBtYXAuCisgKiB0 aGUgdGFibGVzcGFjZSBtYXAuCiAgKgogICogUGVybWlzc2lvbiBjaGVja2luZyBmb3IgdGhp cyBmdW5jdGlvbiBpcyBtYW5hZ2VkIHRocm91Z2ggdGhlIG5vcm1hbAogICogR1JBTlQgc3lz dGVtLgpAQCAtNjEsNiArNjEsMTAgQEAgc3RhdGljIE1lbW9yeUNvbnRleHQgYmFja3VwY29u dGV4dCA9IE5VTEw7CiBEYXR1bQogcGdfYmFja3VwX3N0YXJ0KFBHX0ZVTkNUSU9OX0FSR1Mp CiB7CisjZGVmaW5lIFBHX0JBQ0tVUF9TVEFSVF9WMl9DT0xTIDMKKwlUdXBsZURlc2MJdHVw ZGVzYzsKKwlEYXR1bQkJdmFsdWVzW1BHX0JBQ0tVUF9TVEFSVF9WMl9DT0xTXSA9IHswfTsK Kwlib29sCQludWxsc1tQR19CQUNLVVBfU1RBUlRfVjJfQ09MU10gPSB7MH07CiAJdGV4dAkg ICAqYmFja3VwaWQgPSBQR19HRVRBUkdfVEVYVF9QUCgwKTsKIAlib29sCQlmYXN0ID0gUEdf R0VUQVJHX0JPT0woMSk7CiAJY2hhcgkgICAqYmFja3VwaWRzdHI7CkBAIC02OSw2ICs3Mywx MCBAQCBwZ19iYWNrdXBfc3RhcnQoUEdfRlVOQ1RJT05fQVJHUykKIAogCWJhY2t1cGlkc3Ry ID0gdGV4dF90b19jc3RyaW5nKGJhY2t1cGlkKTsKIAorCS8qIEluaXRpYWxpemUgYXR0cmli dXRlcyBpbmZvcm1hdGlvbiBpbiB0aGUgdHVwbGUgZGVzY3JpcHRvciAqLworCWlmIChnZXRf Y2FsbF9yZXN1bHRfdHlwZShmY2luZm8sIE5VTEwsICZ0dXBkZXNjKSAhPSBUWVBFRlVOQ19D T01QT1NJVEUpCisJCWVsb2coRVJST1IsICJyZXR1cm4gdHlwZSBtdXN0IGJlIGEgcm93IHR5 cGUiKTsKKwogCWlmIChzdGF0dXMgPT0gU0VTU0lPTl9CQUNLVVBfUlVOTklORykKIAkJZXJl cG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVR VUlTSVRFX1NUQVRFKSwKQEAgLTEwMiw3ICsxMTAsMTIgQEAgcGdfYmFja3VwX3N0YXJ0KFBH X0ZVTkNUSU9OX0FSR1MpCiAJcmVnaXN0ZXJfcGVyc2lzdGVudF9hYm9ydF9iYWNrdXBfaGFu ZGxlcigpOwogCWRvX3BnX2JhY2t1cF9zdGFydChiYWNrdXBpZHN0ciwgZmFzdCwgTlVMTCwg YmFja3VwX3N0YXRlLCB0YWJsZXNwYWNlX21hcCk7CiAKLQlQR19SRVRVUk5fTFNOKGJhY2t1 cF9zdGF0ZS0+c3RhcnRwb2ludCk7CisJdmFsdWVzWzBdID0gTFNOR2V0RGF0dW0oYmFja3Vw X3N0YXRlLT5zdGFydHBvaW50KTsKKwl2YWx1ZXNbMV0gPSBJbnQ2NEdldERhdHVtKGJhY2t1 cF9zdGF0ZS0+c3RhcnR0bGkpOworCXZhbHVlc1syXSA9IFRpbWVzdGFtcFR6R2V0RGF0dW0o dGltZV90X3RvX3RpbWVzdGFtcHR6KGJhY2t1cF9zdGF0ZS0+c3RhcnR0aW1lKSk7CisKKwkv KiBSZXR1cm5zIHRoZSByZWNvcmQgYXMgRGF0dW0gKi8KKwlQR19SRVRVUk5fREFUVU0oSGVh cFR1cGxlR2V0RGF0dW0oaGVhcF9mb3JtX3R1cGxlKHR1cGRlc2MsIHZhbHVlcywgbnVsbHMp KSk7CiB9CiAKIApAQCAtMTEzLDE0ICsxMjYsMTIgQEAgcGdfYmFja3VwX3N0YXJ0KFBHX0ZV TkNUSU9OX0FSR1MpCiAgKiBhbGxvd3MgdGhlIHVzZXIgdG8gY2hvb3NlIGlmIHRoZXkgd2Fu dCB0byB3YWl0IGZvciB0aGUgV0FMIHRvIGJlIGFyY2hpdmVkCiAgKiBvciBpZiB3ZSBzaG91 bGQganVzdCByZXR1cm4gYXMgc29vbiBhcyB0aGUgV0FMIHJlY29yZCBpcyB3cml0dGVuLgog ICoKLSAqIFRoaXMgZnVuY3Rpb24gc3RvcHMgYW4gaW4tcHJvZ3Jlc3MgYmFja3VwLCBjcmVh dGVzIGJhY2t1cF9sYWJlbCBjb250ZW50cyBhbmQKLSAqIGl0IHJldHVybnMgdGhlIGJhY2t1 cCBzdG9wIExTTiwgYmFja3VwX2xhYmVsIGFuZCB0YWJsZXNwYWNlX21hcCBjb250ZW50cy4K KyAqIFRoaXMgZnVuY3Rpb24gc3RvcHMgYW4gaW4tcHJvZ3Jlc3MgYmFja3VwIGFuZCByZXR1 cm5zIHRoZSBiYWNrdXAgc3RvcCBMU04sCisgKiBwZ19jb250cm9sIGFuZCB0YWJsZXNwYWNl X21hcCBjb250ZW50cy4KICAqCi0gKiBUaGUgYmFja3VwX2xhYmVsIGNvbnRhaW5zIHRoZSB1 c2VyLXN1cHBsaWVkIGxhYmVsIHN0cmluZyAodHlwaWNhbGx5IHRoaXMKLSAqIHdvdWxkIGJl IHVzZWQgdG8gdGVsbCB3aGVyZSB0aGUgYmFja3VwIGR1bXAgd2lsbCBiZSBzdG9yZWQpLCB0 aGUgc3RhcnRpbmcKLSAqIHRpbWUsIHN0YXJ0aW5nIFdBTCBsb2NhdGlvbiBmb3IgdGhlIGR1 bXAgYW5kIHNvIG9uLiAgSXQgaXMgdGhlIGNhbGxlcidzCi0gKiByZXNwb25zaWJpbGl0eSB0 byB3cml0ZSB0aGUgYmFja3VwX2xhYmVsIGFuZCB0YWJsZXNwYWNlX21hcCBmaWxlcyBpbiB0 aGUKLSAqIGRhdGEgZm9sZGVyIHRoYXQgd2lsbCBiZSByZXN0b3JlZCBmcm9tIHRoaXMgYmFj a3VwLgorICogVGhlIHBnX2NvbnRyb2wgZmlsZSBjb250YWlucyB0aGUgcmVjb3ZlcnkgaW5m b3JtYXRpb24gZm9yIHRoZSBiYWNrdXAuICBJdCBpcworICogdGhlIGNhbGxlcidzIHJlc3Bv bnNpYmlsaXR5IHRvIHdyaXRlIHRoZSBwZ19jb250cm9sIGFuZCB0YWJsZXNwYWNlX21hcCBm aWxlcworICogaW4gdGhlIGRhdGEgZm9sZGVyIHRoYXQgd2lsbCBiZSByZXN0b3JlZCBmcm9t IHRoaXMgYmFja3VwLgogICoKICAqIFBlcm1pc3Npb24gY2hlY2tpbmcgZm9yIHRoaXMgZnVu Y3Rpb24gaXMgbWFuYWdlZCB0aHJvdWdoIHRoZSBub3JtYWwKICAqIEdSQU5UIHN5c3RlbS4K QEAgLTEyOCwxMiArMTM5LDEyIEBAIHBnX2JhY2t1cF9zdGFydChQR19GVU5DVElPTl9BUkdT KQogRGF0dW0KIHBnX2JhY2t1cF9zdG9wKFBHX0ZVTkNUSU9OX0FSR1MpCiB7Ci0jZGVmaW5l IFBHX0JBQ0tVUF9TVE9QX1YyX0NPTFMgMworI2RlZmluZSBQR19CQUNLVVBfU1RPUF9WMl9D T0xTIDUKIAlUdXBsZURlc2MJdHVwZGVzYzsKIAlEYXR1bQkJdmFsdWVzW1BHX0JBQ0tVUF9T VE9QX1YyX0NPTFNdID0gezB9OwogCWJvb2wJCW51bGxzW1BHX0JBQ0tVUF9TVE9QX1YyX0NP TFNdID0gezB9OwogCWJvb2wJCXdhaXRmb3JhcmNoaXZlID0gUEdfR0VUQVJHX0JPT0woMCk7 Ci0JY2hhcgkgICAqYmFja3VwX2xhYmVsOworCWJ5dGVhCSAgICpwZ19jb250cm9sX2J5dGVh OwogCVNlc3Npb25CYWNrdXBTdGF0ZSBzdGF0dXMgPSBnZXRfYmFja3VwX3N0YXR1cygpOwog CiAJLyogSW5pdGlhbGl6ZSBhdHRyaWJ1dGVzIGluZm9ybWF0aW9uIGluIHRoZSB0dXBsZSBk ZXNjcmlwdG9yICovCkBAIC0xNTIsMTUgKzE2MywxNiBAQCBwZ19iYWNrdXBfc3RvcChQR19G VU5DVElPTl9BUkdTKQogCS8qIFN0b3AgdGhlIGJhY2t1cCAqLwogCWRvX3BnX2JhY2t1cF9z dG9wKGJhY2t1cF9zdGF0ZSwgd2FpdGZvcmFyY2hpdmUpOwogCi0JLyogQnVpbGQgdGhlIGNv bnRlbnRzIG9mIGJhY2t1cF9sYWJlbCAqLwotCWJhY2t1cF9sYWJlbCA9IGJ1aWxkX2JhY2t1 cF9jb250ZW50KGJhY2t1cF9zdGF0ZSwgZmFsc2UpOwotCi0JdmFsdWVzWzBdID0gTFNOR2V0 RGF0dW0oYmFja3VwX3N0YXRlLT5zdG9wcG9pbnQpOwotCXZhbHVlc1sxXSA9IENTdHJpbmdH ZXRUZXh0RGF0dW0oYmFja3VwX2xhYmVsKTsKLQl2YWx1ZXNbMl0gPSBDU3RyaW5nR2V0VGV4 dERhdHVtKHRhYmxlc3BhY2VfbWFwLT5kYXRhKTsKKwkvKiBCdWlsZCB0aGUgY29udGVudHMg b2YgcGdfY29udHJvbCAqLworCXBnX2NvbnRyb2xfYnl0ZWEgPSAoYnl0ZWEgKikgcGFsbG9j KFBHX0NPTlRST0xfTUFYX1NBRkVfU0laRSArIFZBUkhEUlNaKTsKKwlTRVRfVkFSU0laRShw Z19jb250cm9sX2J5dGVhLCBQR19DT05UUk9MX01BWF9TQUZFX1NJWkUgKyBWQVJIRFJTWik7 CisJbWVtY3B5KFZBUkRBVEEocGdfY29udHJvbF9ieXRlYSksIGJhY2t1cF9zdGF0ZS0+Y29u dHJvbEZpbGUsIFBHX0NPTlRST0xfTUFYX1NBRkVfU0laRSk7CiAKLQkvKiBEZWFsbG9jYXRl IGJhY2t1cC1yZWxhdGVkIHZhcmlhYmxlcyAqLwotCXBmcmVlKGJhY2t1cF9sYWJlbCk7CisJ dmFsdWVzWzBdID0gUG9pbnRlckdldERhdHVtKHBnX2NvbnRyb2xfYnl0ZWEpOworCXZhbHVl c1sxXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0odGFibGVzcGFjZV9tYXAtPmRhdGEpOworCXZh bHVlc1syXSA9IExTTkdldERhdHVtKGJhY2t1cF9zdGF0ZS0+c3RvcHBvaW50KTsKKwl2YWx1 ZXNbM10gPSBJbnQ2NEdldERhdHVtKGJhY2t1cF9zdGF0ZS0+c3RvcHRsaSk7CisJdmFsdWVz WzRdID0gVGltZXN0YW1wVHpHZXREYXR1bSh0aW1lX3RfdG9fdGltZXN0YW1wdHooYmFja3Vw X3N0YXRlLT5zdG9wdGltZSkpOwogCiAJLyogQ2xlYW4gdXAgdGhlIHNlc3Npb24tbGV2ZWwg c3RhdGUgYW5kIGl0cyBtZW1vcnkgY29udGV4dCAqLwogCWJhY2t1cF9zdGF0ZSA9IE5VTEw7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3Zlcnku YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jCmluZGV4IGM2 MTU2NjY2NmFhLi5iMTJkMzUxZWQyMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0veGxvZ3JlY292ZXJ5LmMKQEAgLTYsNyArNiw3IEBACiAgKiBUaGlzIHNvdXJjZSBmaWxl IGNvbnRhaW5zIGZ1bmN0aW9ucyBjb250cm9sbGluZyBXQUwgcmVjb3ZlcnkuCiAgKiBJbml0 V2FsUmVjb3ZlcnkoKSBpbml0aWFsaXplcyB0aGUgc3lzdGVtIGZvciBjcmFzaCBvciBhcmNo aXZlIHJlY292ZXJ5LAogICogb3Igc3RhbmRieSBtb2RlLCBkZXBlbmRpbmcgb24gY29uZmln dXJhdGlvbiBvcHRpb25zIGFuZCB0aGUgc3RhdGUgb2YKLSAqIHRoZSBjb250cm9sIGZpbGUg YW5kIHBvc3NpYmxlIGJhY2t1cCBsYWJlbCBmaWxlLiAgUGVyZm9ybVdhbFJlY292ZXJ5KCkK KyAqIHRoZSBjb250cm9sIGZpbGUgYW5kIHBvc3NpYmxlIGJhY2t1cCByZWNvdmVyeS4gIFBl cmZvcm1XYWxSZWNvdmVyeSgpCiAgKiBwZXJmb3JtcyB0aGUgYWN0dWFsIFdBTCByZXBsYXks IGNhbGxpbmcgdGhlIHJtZ3Itc3BlY2lmaWMgcmVkbyByb3V0aW5lcy4KICAqIEZpbmlzaFdh bFJlY292ZXJ5KCkgcGVyZm9ybXMgZW5kLW9mLXJlY292ZXJ5IGNoZWNrcyBhbmQgY2xlYW51 cCBhY3Rpb25zLAogICogYW5kIHByZXBhcmVzIGluZm9ybWF0aW9uIG5lZWRlZCB0byBpbml0 aWFsaXplIHRoZSBXQUwgZm9yIHdyaXRlcy4gIEluCkBAIC0xNTIsMTEgKzE1MiwxMiBAQCBz dGF0aWMgYm9vbCByZWNvdmVyeV9zaWduYWxfZmlsZV9mb3VuZCA9IGZhbHNlOwogCiAvKgog ICogQ2hlY2tQb2ludExvYyBpcyB0aGUgcG9zaXRpb24gb2YgdGhlIGNoZWNrcG9pbnQgcmVj b3JkIHRoYXQgZGV0ZXJtaW5lcwotICogd2hlcmUgdG8gc3RhcnQgdGhlIHJlcGxheS4gIEl0 IGNvbWVzIGZyb20gdGhlIGJhY2t1cCBsYWJlbCBmaWxlIG9yIHRoZQotICogY29udHJvbCBm aWxlLgorICogd2hlcmUgdG8gc3RhcnQgdGhlIHJlcGxheS4gIEl0IGNvbWVzIGZyb20gdGhl IGNvbnRyb2wgZmlsZSwgZWl0aGVyIGZyb20gdGhlCisgKiBkZWZhdWx0IGxvY2F0aW9uIG9y IGZyb20gYSBiYWNrdXAgcmVjb3ZlcnkgZmllbGQuCiAgKgotICogUmVkb1N0YXJ0TFNOIGlz IHRoZSBjaGVja3BvaW50J3MgUkVETyBsb2NhdGlvbiwgYWxzbyBmcm9tIHRoZSBiYWNrdXAg bGFiZWwKLSAqIGZpbGUgb3IgdGhlIGNvbnRyb2wgZmlsZS4gIEluIHN0YW5kYnkgbW9kZSwg WExPRyBzdHJlYW1pbmcgdXN1YWxseSBzdGFydHMKKyAqIFJlZG9TdGFydExTTiBpcyB0aGUg Y2hlY2twb2ludCdzIFJFRE8gbG9jYXRpb24sIGFsc28gZnJvbSB0aGUgZGVmYXVsdAorICog Y29udHJvbCBmaWxlIGxvY2F0aW9uIG9yIGZyb20gYSBiYWNrdXAgcmVjb3ZlcnkgZmllbGQu ICBJbiBzdGFuZGJ5IG1vZGUsCisgKiBYTE9HIHN0cmVhbWluZyB1c3VhbGx5IHN0YXJ0cwog ICogZnJvbSB0aGUgcG9zaXRpb24gd2hlcmUgYW4gaW52YWxpZCByZWNvcmQgd2FzIGZvdW5k LiAgQnV0IGlmIHdlIGZhaWwgdG8KICAqIHJlYWQgZXZlbiB0aGUgaW5pdGlhbCBjaGVja3Bv aW50IHJlY29yZCwgd2UgdXNlIHRoZSBSRURPIGxvY2F0aW9uIGluc3RlYWQKICAqIG9mIHRo ZSBjaGVja3BvaW50IGxvY2F0aW9uIGFzIHRoZSBzdGFydCBwb3NpdGlvbiBvZiBYTE9HIHN0 cmVhbWluZy4KQEAgLTM4OCw5ICszODksNiBAQCBzdGF0aWMgdm9pZCBBcHBseVdhbFJlY29y ZChYTG9nUmVhZGVyU3RhdGUgKnhsb2dyZWFkZXIsIFhMb2dSZWNvcmQgKnJlY29yZCwgVGlt ZQogc3RhdGljIHZvaWQgRW5hYmxlU3RhbmRieU1vZGUodm9pZCk7CiBzdGF0aWMgdm9pZCBy ZWFkUmVjb3ZlcnlTaWduYWxGaWxlKHZvaWQpOwogc3RhdGljIHZvaWQgdmFsaWRhdGVSZWNv dmVyeVBhcmFtZXRlcnModm9pZCk7Ci1zdGF0aWMgYm9vbCByZWFkX2JhY2t1cF9sYWJlbChY TG9nUmVjUHRyICpjaGVja1BvaW50TG9jLAotCQkJCQkJCSAgVGltZUxpbmVJRCAqYmFja3Vw TGFiZWxUTEksCi0JCQkJCQkJICBib29sICpiYWNrdXBFbmRSZXF1aXJlZCwgYm9vbCAqYmFj a3VwRnJvbVN0YW5kYnkpOwogc3RhdGljIGJvb2wgcmVhZF90YWJsZXNwYWNlX21hcChMaXN0 ICoqdGFibGVzcGFjZXMpOwogCiBzdGF0aWMgdm9pZCB4bG9ncmVjb3ZlcnlfcmVkbyhYTG9n UmVhZGVyU3RhdGUgKnJlY29yZCwgVGltZUxpbmVJRCByZXBsYXlUTEkpOwpAQCAtNDkyLDgg KzQ5MCw4IEBAIEVuYWJsZVN0YW5kYnlNb2RlKHZvaWQpCiAgKiBQcmVwYXJlIHRoZSBzeXN0 ZW0gZm9yIFdBTCByZWNvdmVyeSwgaWYgbmVlZGVkLgogICoKICAqIFRoaXMgaXMgY2FsbGVk IGJ5IFN0YXJ0dXBYTE9HKCkgd2hpY2ggY29vcmRpbmF0ZXMgdGhlIHNlcnZlciBzdGFydHVw Ci0gKiBzZXF1ZW5jZS4gIFRoaXMgZnVuY3Rpb24gYW5hbHl6ZXMgdGhlIGNvbnRyb2wgZmls ZSBhbmQgdGhlIGJhY2t1cCBsYWJlbAotICogZmlsZSwgaWYgYW55LCBhbmQgZmlndXJlcyBv dXQgd2hldGhlciB3ZSBuZWVkIHRvIHBlcmZvcm0gY3Jhc2ggcmVjb3Zlcnkgb3IKKyAqIHNl cXVlbmNlLiAgVGhpcyBmdW5jdGlvbiBhbmFseXplcyB0aGUgY29udHJvbCBmaWxlIGFuZCBi YWNrdXAgcmVjb3ZlcnkKKyAqIGluZm8sIGlmIGFueSwgYW5kIGZpZ3VyZXMgb3V0IHdoZXRo ZXIgd2UgbmVlZCB0byBwZXJmb3JtIGNyYXNoIHJlY292ZXJ5IG9yCiAgKiBhcmNoaXZlIHJl Y292ZXJ5LCBhbmQgaG93IGZhciB3ZSBuZWVkIHRvIHJlcGxheSB0aGUgV0FMIHRvIHJlYWNo IGEKICAqIGNvbnNpc3RlbnQgc3RhdGUuCiAgKgpAQCAtNTEwLDcgKzUwOCw3IEBAIEVuYWJs ZVN0YW5kYnlNb2RlKHZvaWQpCiAgKi8KIHZvaWQKIEluaXRXYWxSZWNvdmVyeShDb250cm9s RmlsZURhdGEgKkNvbnRyb2xGaWxlLCBib29sICp3YXNTaHV0ZG93bl9wdHIsCi0JCQkJYm9v bCAqaGF2ZUJhY2t1cExhYmVsX3B0ciwgYm9vbCAqaGF2ZVRibHNwY01hcF9wdHIpCisJCQkJ Ym9vbCAqaGF2ZVRibHNwY01hcF9wdHIpCiB7CiAJWExvZ1BhZ2VSZWFkUHJpdmF0ZSAqcHJp dmF0ZTsKIAlzdHJ1Y3Qgc3RhdCBzdDsKQEAgLTUxOCw3ICs1MTYsNyBAQCBJbml0V2FsUmVj b3ZlcnkoQ29udHJvbEZpbGVEYXRhICpDb250cm9sRmlsZSwgYm9vbCAqd2FzU2h1dGRvd25f cHRyLAogCVhMb2dSZWNvcmQgKnJlY29yZDsKIAlEQlN0YXRlCQlkYnN0YXRlX2F0X3N0YXJ0 dXA7CiAJYm9vbAkJaGF2ZVRibHNwY01hcCA9IGZhbHNlOwotCWJvb2wJCWhhdmVCYWNrdXBM YWJlbCA9IGZhbHNlOworCWJvb2wJCWJhY2t1cFJlY292ZXJ5UmVxdWlyZWQgPSBmYWxzZTsK IAlDaGVja1BvaW50CWNoZWNrUG9pbnQ7CiAJYm9vbAkJYmFja3VwRnJvbVN0YW5kYnkgPSBm YWxzZTsKIApAQCAtNTg1LDE4ICs1ODMsMzQgQEAgSW5pdFdhbFJlY292ZXJ5KENvbnRyb2xG aWxlRGF0YSAqQ29udHJvbEZpbGUsIGJvb2wgKndhc1NodXRkb3duX3B0ciwKIAlwcmltYXJ5 X2ltYWdlX21hc2tlZCA9IChjaGFyICopIHBhbGxvYyhCTENLU1opOwogCiAJLyoKLQkgKiBS ZWFkIHRoZSBiYWNrdXBfbGFiZWwgZmlsZS4gIFdlIHdhbnQgdG8gcnVuIHRoaXMgcGFydCBv ZiB0aGUgcmVjb3ZlcnkKLQkgKiBwcm9jZXNzIGFmdGVyIGNoZWNraW5nIGZvciBzaWduYWwg ZmlsZXMgYW5kIGFmdGVyIHBlcmZvcm1pbmcgdmFsaWRhdGlvbgotCSAqIG9mIHRoZSByZWNv dmVyeSBwYXJhbWV0ZXJzLgorCSAqIExvYWQgcmVjb3Zlcnkgc2V0dGluZ3MgZnJvbSBwZ19j b250cm9sLiAgV2Ugd2FudCB0byBydW4gdGhpcyBwYXJ0IG9mIHRoZQorCSAqIHJlY292ZXJ5 IHByb2Nlc3MgYWZ0ZXIgY2hlY2tpbmcgZm9yIHNpZ25hbCBmaWxlcyBhbmQgYWZ0ZXIgcGVy Zm9ybWluZworCSAqIHZhbGlkYXRpb24gb2YgdGhlIHJlY292ZXJ5IHBhcmFtZXRlcnMuCiAJ ICovCi0JaWYgKHJlYWRfYmFja3VwX2xhYmVsKCZDaGVja1BvaW50TG9jLCAmQ2hlY2tQb2lu dFRMSSwgJmJhY2t1cEVuZFJlcXVpcmVkLAotCQkJCQkJICAmYmFja3VwRnJvbVN0YW5kYnkp KQorCWlmIChDb250cm9sRmlsZS0+YmFja3VwUmVjb3ZlcnlSZXF1aXJlZCkKIAl7CiAJCUxp c3QJICAgKnRhYmxlc3BhY2VzID0gTklMOwogCisJCS8qIEluaXRpYWxpemUgcmVjb3Zlcnkg ZnJvbSBmaWVsZHMgc3RvcmVkIGluIHBnX2NvbnRyb2wgKi8KKwkJQ2hlY2tQb2ludExvYyA9 IENvbnRyb2xGaWxlLT5iYWNrdXBDaGVja1BvaW50OworCQlDaGVja1BvaW50VExJID0gQ29u dHJvbEZpbGUtPmJhY2t1cFN0YXJ0UG9pbnRUTEk7CisJCVJlZG9TdGFydExTTiA9IENvbnRy b2xGaWxlLT5iYWNrdXBTdGFydFBvaW50OworCQlSZWRvU3RhcnRUTEkgPSBDb250cm9sRmls ZS0+YmFja3VwU3RhcnRQb2ludFRMSTsKKwkJYmFja3VwRW5kUmVxdWlyZWQgPSBDb250cm9s RmlsZS0+YmFja3VwRW5kUmVxdWlyZWQ7CisJCWJhY2t1cEZyb21TdGFuZGJ5ID0gQ29udHJv bEZpbGUtPmJhY2t1cEZyb21TdGFuZGJ5OworCisJCS8qIENsZWFyIGZpZWxkcyB1c2VkIHRv IGluaXRpYWxpemUgcmVjb3ZlcnkgKi8KKwkJQ29udHJvbEZpbGUtPmJhY2t1cENoZWNrUG9p bnQgPSBJbnZhbGlkWExvZ1JlY1B0cjsKKwkJQ29udHJvbEZpbGUtPmJhY2t1cFN0YXJ0UG9p bnRUTEkgPSAwOworCQlDb250cm9sRmlsZS0+YmFja3VwUmVjb3ZlcnlSZXF1aXJlZCA9IGZh bHNlOworCQlDb250cm9sRmlsZS0+YmFja3VwRnJvbVN0YW5kYnkgPSBmYWxzZTsKKworCQkv KiBJbmRpY2F0ZSB0aGF0IHJlY292ZXJ5IHdhcyByZXF1ZXN0ZWQgKi8KKwkJYmFja3VwUmVj b3ZlcnlSZXF1aXJlZCA9IHRydWU7CisKIAkJLyoKLQkJICogQXJjaGl2ZSByZWNvdmVyeSB3 YXMgcmVxdWVzdGVkLCBhbmQgdGhhbmtzIHRvIHRoZSBiYWNrdXAgbGFiZWwKLQkJICogZmls ZSwgd2Uga25vdyBob3cgZmFyIHdlIG5lZWQgdG8gcmVwbGF5IHRvIHJlYWNoIGNvbnNpc3Rl bmN5LiBFbnRlcgorCQkgKiBBcmNoaXZlIHJlY292ZXJ5IHdhcyByZXF1ZXN0ZWQsIGFuZCB0 aGFua3MgdG8gdGhlIHJlY292ZXJ5CisJCSAqIGluZm8sIHdlIGtub3cgaG93IGZhciB3ZSBu ZWVkIHRvIHJlcGxheSB0byByZWFjaCBjb25zaXN0ZW5jeS4gRW50ZXIKIAkJICogYXJjaGl2 ZSByZWNvdmVyeSBkaXJlY3RseS4KIAkJICovCiAJCUluQXJjaGl2ZVJlY292ZXJ5ID0gdHJ1 ZTsKQEAgLTYwNCw4ICs2MTgsOSBAQCBJbml0V2FsUmVjb3ZlcnkoQ29udHJvbEZpbGVEYXRh ICpDb250cm9sRmlsZSwgYm9vbCAqd2FzU2h1dGRvd25fcHRyLAogCQkJRW5hYmxlU3RhbmRi eU1vZGUoKTsKIAogCQkvKgotCQkgKiBXaGVuIGEgYmFja3VwX2xhYmVsIGZpbGUgaXMgcHJl c2VudCwgd2Ugd2FudCB0byByb2xsIGZvcndhcmQgZnJvbQotCQkgKiB0aGUgY2hlY2twb2lu dCBpdCBpZGVudGlmaWVzLCByYXRoZXIgdGhhbiB1c2luZyBwZ19jb250cm9sLgorCQkgKiBX aGVuIGJhY2t1cCByZWNvdmVyeSBpcyByZXF1ZXN0ZWQsIHdlIHdhbnQgdG8gcm9sbCBmb3J3 YXJkIGZyb20KKwkJICogdGhlIGNoZWNrcG9pbnQgaXQgaWRlbnRpZmllcywgcmF0aGVyIHRo YW4gdXNpbmcgdGhlIGRlZmF1bHQKKwkJICogY2hlY2twb2ludC4KIAkJICovCiAJCXJlY29y ZCA9IFJlYWRDaGVja3BvaW50UmVjb3JkKHhsb2dwcmVmZXRjaGVyLCBDaGVja1BvaW50TG9j LAogCQkJCQkJCQkJICBDaGVja1BvaW50VExJKTsKQEAgLTYyMCw5ICs2MzUsOCBAQCBJbml0 V2FsUmVjb3ZlcnkoQ29udHJvbEZpbGVEYXRhICpDb250cm9sRmlsZSwgYm9vbCAqd2FzU2h1 dGRvd25fcHRyLAogCiAJCQkvKgogCQkJICogTWFrZSBzdXJlIHRoYXQgUkVETyBsb2NhdGlv biBleGlzdHMuIFRoaXMgbWF5IG5vdCBiZSB0aGUgY2FzZQotCQkJICogaWYgdGhlcmUgd2Fz IGEgY3Jhc2ggZHVyaW5nIGFuIG9ubGluZSBiYWNrdXAsIHdoaWNoIGxlZnQgYQotCQkJICog YmFja3VwX2xhYmVsIGFyb3VuZCB0aGF0IHJlZmVyZW5jZXMgYSBXQUwgc2VnbWVudCB0aGF0 J3MKLQkJCSAqIGFscmVhZHkgYmVlbiBhcmNoaXZlZC4KKwkJCSAqIGlmIHJlY292ZXJ5LnNp Z25hbCBpcyBtaXNzaW5nIGFuZCB0aGUgV0FMIGhhcyBhbHJlYWR5IGJlZW4KKwkJCSAqIGFy Y2hpdmVkLgogCQkJICovCiAJCQlpZiAoY2hlY2tQb2ludC5yZWRvIDwgQ2hlY2tQb2ludExv YykKIAkJCXsKQEAgLTYzMSwyMCArNjQ1LDE2IEBAIEluaXRXYWxSZWNvdmVyeShDb250cm9s RmlsZURhdGEgKkNvbnRyb2xGaWxlLCBib29sICp3YXNTaHV0ZG93bl9wdHIsCiAJCQkJCQkJ CWNoZWNrUG9pbnQuVGhpc1RpbWVMaW5lSUQpKQogCQkJCQllcmVwb3J0KEZBVEFMLAogCQkJ CQkJCShlcnJtc2coImNvdWxkIG5vdCBmaW5kIHJlZG8gbG9jYXRpb24gcmVmZXJlbmNlZCBi eSBjaGVja3BvaW50IHJlY29yZCIpLAotCQkJCQkJCSBlcnJoaW50KCJJZiB5b3UgYXJlIHJl c3RvcmluZyBmcm9tIGEgYmFja3VwLCB0b3VjaCBcIiVzL3JlY292ZXJ5LnNpZ25hbFwiIG9y IFwiJXMvc3RhbmRieS5zaWduYWxcIiBhbmQgYWRkIHJlcXVpcmVkIHJlY292ZXJ5IG9wdGlv bnMuXG4iCi0JCQkJCQkJCQkgIklmIHlvdSBhcmUgbm90IHJlc3RvcmluZyBmcm9tIGEgYmFj a3VwLCB0cnkgcmVtb3ZpbmcgdGhlIGZpbGUgXCIlcy9iYWNrdXBfbGFiZWxcIi5cbiIKLQkJ CQkJCQkJCSAiQmUgY2FyZWZ1bDogcmVtb3ZpbmcgXCIlcy9iYWNrdXBfbGFiZWxcIiB3aWxs IHJlc3VsdCBpbiBhIGNvcnJ1cHQgY2x1c3RlciBpZiByZXN0b3JpbmcgZnJvbSBhIGJhY2t1 cC4iLAotCQkJCQkJCQkJIERhdGFEaXIsIERhdGFEaXIsIERhdGFEaXIsIERhdGFEaXIpKSk7 CisJCQkJCQkJIGVycmhpbnQoIklmIHlvdSBhcmUgcmVzdG9yaW5nIGZyb20gYSBiYWNrdXAs IHRvdWNoIFwiJXMvcmVjb3Zlcnkuc2lnbmFsXCIgb3IgXCIlcy9zdGFuZGJ5LnNpZ25hbFwi IGFuZCBhZGQgcmVxdWlyZWQgcmVjb3Zlcnkgb3B0aW9ucy5cbiIsCisJCQkJCQkJCQkgRGF0 YURpciwgRGF0YURpcikpKTsKIAkJCX0KIAkJfQogCQllbHNlCiAJCXsKIAkJCWVyZXBvcnQo RkFUQUwsCiAJCQkJCShlcnJtc2coImNvdWxkIG5vdCBsb2NhdGUgcmVxdWlyZWQgY2hlY2tw b2ludCByZWNvcmQiKSwKLQkJCQkJIGVycmhpbnQoIklmIHlvdSBhcmUgcmVzdG9yaW5nIGZy b20gYSBiYWNrdXAsIHRvdWNoIFwiJXMvcmVjb3Zlcnkuc2lnbmFsXCIgb3IgXCIlcy9zdGFu ZGJ5LnNpZ25hbFwiIGFuZCBhZGQgcmVxdWlyZWQgcmVjb3Zlcnkgb3B0aW9ucy5cbiIKLQkJ CQkJCQkgIklmIHlvdSBhcmUgbm90IHJlc3RvcmluZyBmcm9tIGEgYmFja3VwLCB0cnkgcmVt b3ZpbmcgdGhlIGZpbGUgXCIlcy9iYWNrdXBfbGFiZWxcIi5cbiIKLQkJCQkJCQkgIkJlIGNh cmVmdWw6IHJlbW92aW5nIFwiJXMvYmFja3VwX2xhYmVsXCIgd2lsbCByZXN1bHQgaW4gYSBj b3JydXB0IGNsdXN0ZXIgaWYgcmVzdG9yaW5nIGZyb20gYSBiYWNrdXAuIiwKLQkJCQkJCQkg RGF0YURpciwgRGF0YURpciwgRGF0YURpciwgRGF0YURpcikpKTsKKwkJCQkJIGVycmhpbnQo IklmIHlvdSBhcmUgcmVzdG9yaW5nIGZyb20gYSBiYWNrdXAsIHRvdWNoIFwiJXMvcmVjb3Zl cnkuc2lnbmFsXCIgb3IgXCIlcy9zdGFuZGJ5LnNpZ25hbFwiIGFuZCBhZGQgcmVxdWlyZWQg cmVjb3Zlcnkgb3B0aW9ucy5cbiIsCisJCQkJCQkJIERhdGFEaXIsIERhdGFEaXIpKSk7CiAJ CQl3YXNTaHV0ZG93biA9IGZhbHNlOwkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCiAJCX0K IApAQCAtNjc5LDM3ICs2ODksMzIgQEAgSW5pdFdhbFJlY292ZXJ5KENvbnRyb2xGaWxlRGF0 YSAqQ29udHJvbEZpbGUsIGJvb2wgKndhc1NodXRkb3duX3B0ciwKIAkJCS8qIHRlbGwgdGhl IGNhbGxlciB0byBkZWxldGUgaXQgbGF0ZXIgKi8KIAkJCWhhdmVUYmxzcGNNYXAgPSB0cnVl OwogCQl9Ci0KLQkJLyogdGVsbCB0aGUgY2FsbGVyIHRvIGRlbGV0ZSBpdCBsYXRlciAqLwot CQloYXZlQmFja3VwTGFiZWwgPSB0cnVlOwogCX0KIAllbHNlCiAJewotCQkvKiBObyBiYWNr dXBfbGFiZWwgZmlsZSBoYXMgYmVlbiBmb3VuZCBpZiB3ZSBhcmUgaGVyZS4gKi8KLQogCQkv KgotCQkgKiBJZiB0YWJsZXNwYWNlX21hcCBmaWxlIGlzIHByZXNlbnQgd2l0aG91dCBiYWNr dXBfbGFiZWwgZmlsZSwgdGhlcmUKLQkJICogaXMgbm8gdXNlIG9mIHN1Y2ggZmlsZS4gIFRo ZXJlIGlzIG5vIGhhcm0gaW4gcmV0YWluaW5nIGl0LCBidXQgaXQKLQkJICogaXMgYmV0dGVy IHRvIGdldCByaWQgb2YgdGhlIG1hcCBmaWxlIHNvIHRoYXQgd2UgZG9uJ3QgaGF2ZSBhbnkK KwkJICogSWYgdGFibGVzcGFjZV9tYXAgZmlsZSBpcyBwcmVzZW50IHdpdGhvdXQgYmFja3Vw IHJlY292ZXJ5IHJlcXVlc3RlZCwKKwkJICogdGhlcmUgaXMgbm8gdXNlIG9mIHN1Y2ggZmls ZS4gIFRoZXJlIGlzIG5vIGhhcm0gaW4gcmV0YWluaW5nIGl0LCBidXQKKwkJICogaXQgaXMg YmV0dGVyIHRvIGdldCByaWQgb2YgdGhlIG1hcCBmaWxlIHNvIHRoYXQgd2UgZG9uJ3QgaGF2 ZSBhbnkKIAkJICogcmVkdW5kYW50IGZpbGUgaW4gZGF0YSBkaXJlY3RvcnkgYW5kIGl0IHdp bGwgYXZvaWQgYW55IHNvcnQgb2YKIAkJICogY29uZnVzaW9uLiAgSXQgc2VlbXMgcHJ1ZGVu dCB0aG91Z2ggdG8ganVzdCByZW5hbWUgdGhlIGZpbGUgb3V0IG9mCiAJCSAqIHRoZSB3YXkg cmF0aGVyIHRoYW4gZGVsZXRlIGl0IGNvbXBsZXRlbHksIGFsc28gd2UgaWdub3JlIGFueSBl cnJvcgogCQkgKiB0aGF0IG9jY3VycyBpbiByZW5hbWUgb3BlcmF0aW9uIGFzIGV2ZW4gaWYg bWFwIGZpbGUgaXMgcHJlc2VudAotCQkgKiB3aXRob3V0IGJhY2t1cF9sYWJlbCBmaWxlLCBp dCBpcyBoYXJtbGVzcy4KKwkJICogd2l0aG91dCBiYWNrdXAgcmVjb3ZlcnkgcmVxdWVzdGVk LCBpdCBpcyBoYXJtbGVzcy4KIAkJICovCiAJCWlmIChzdGF0KFRBQkxFU1BBQ0VfTUFQLCAm c3QpID09IDApCiAJCXsKIAkJCXVubGluayhUQUJMRVNQQUNFX01BUF9PTEQpOwogCQkJaWYg KGR1cmFibGVfcmVuYW1lKFRBQkxFU1BBQ0VfTUFQLCBUQUJMRVNQQUNFX01BUF9PTEQsIERF QlVHMSkgPT0gMCkKIAkJCQllcmVwb3J0KExPRywKLQkJCQkJCShlcnJtc2coImlnbm9yaW5n IGZpbGUgXCIlc1wiIGJlY2F1c2Ugbm8gZmlsZSBcIiVzXCIgZXhpc3RzIiwKLQkJCQkJCQkJ VEFCTEVTUEFDRV9NQVAsIEJBQ0tVUF9MQUJFTF9GSUxFKSwKKwkJCQkJCShlcnJtc2coImln bm9yaW5nIGZpbGUgXCIlc1wiIGJlY2F1c2UgYmFja3VwIHJlY292ZXJ5IHdhcyBub3QgcmVx dWVzdGVkIiwKKwkJCQkJCQkJVEFCTEVTUEFDRV9NQVApLAogCQkJCQkJIGVycmRldGFpbCgi RmlsZSBcIiVzXCIgd2FzIHJlbmFtZWQgdG8gXCIlc1wiLiIsCiAJCQkJCQkJCSAgIFRBQkxF U1BBQ0VfTUFQLCBUQUJMRVNQQUNFX01BUF9PTEQpKSk7CiAJCQllbHNlCiAJCQkJZXJlcG9y dChMT0csCi0JCQkJCQkoZXJybXNnKCJpZ25vcmluZyBmaWxlIFwiJXNcIiBiZWNhdXNlIG5v IGZpbGUgXCIlc1wiIGV4aXN0cyIsCi0JCQkJCQkJCVRBQkxFU1BBQ0VfTUFQLCBCQUNLVVBf TEFCRUxfRklMRSksCisJCQkJCQkoZXJybXNnKCJpZ25vcmluZyBmaWxlIFwiJXNcIiBiZWNh dXNlIGJhY2t1cCByZWNvdmVyeSB3YXMgbm90IHJlcXVlc3RlZCIsCisJCQkJCQkJCVRBQkxF U1BBQ0VfTUFQKSwKIAkJCQkJCSBlcnJkZXRhaWwoIkNvdWxkIG5vdCByZW5hbWUgZmlsZSBc IiVzXCIgdG8gXCIlc1wiOiAlbS4iLAogCQkJCQkJCQkgICBUQUJMRVNQQUNFX01BUCwgVEFC TEVTUEFDRV9NQVBfT0xEKSkpOwogCQl9CkBAIC05NDMsNyArOTQ4LDcgQEAgSW5pdFdhbFJl Y292ZXJ5KENvbnRyb2xGaWxlRGF0YSAqQ29udHJvbEZpbGUsIGJvb2wgKndhc1NodXRkb3du X3B0ciwKIAkJICogQW55IG90aGVyIHN0YXRlIGluZGljYXRlcyB0aGF0IHRoZSBiYWNrdXAg c29tZWhvdyBiZWNhbWUgY29ycnVwdGVkCiAJCSAqIGFuZCB3ZSBjYW4ndCBzZW5zaWJseSBj b250aW51ZSB3aXRoIHJlY292ZXJ5LgogCQkgKi8KLQkJaWYgKGhhdmVCYWNrdXBMYWJlbCkK KwkJaWYgKGJhY2t1cFJlY292ZXJ5UmVxdWlyZWQpCiAJCXsKIAkJCUNvbnRyb2xGaWxlLT5i YWNrdXBTdGFydFBvaW50ID0gY2hlY2tQb2ludC5yZWRvOwogCQkJQ29udHJvbEZpbGUtPmJh Y2t1cEVuZFJlcXVpcmVkID0gYmFja3VwRW5kUmVxdWlyZWQ7CkBAIC05NTMsNyArOTU4LDcg QEAgSW5pdFdhbFJlY292ZXJ5KENvbnRyb2xGaWxlRGF0YSAqQ29udHJvbEZpbGUsIGJvb2wg Kndhc1NodXRkb3duX3B0ciwKIAkJCQlpZiAoZGJzdGF0ZV9hdF9zdGFydHVwICE9IERCX0lO X0FSQ0hJVkVfUkVDT1ZFUlkgJiYKIAkJCQkJZGJzdGF0ZV9hdF9zdGFydHVwICE9IERCX1NI VVRET1dORURfSU5fUkVDT1ZFUlkpCiAJCQkJCWVyZXBvcnQoRkFUQUwsCi0JCQkJCQkJKGVy cm1zZygiYmFja3VwX2xhYmVsIGNvbnRhaW5zIGRhdGEgaW5jb25zaXN0ZW50IHdpdGggY29u dHJvbCBmaWxlIiksCisJCQkJCQkJKGVycm1zZygicGdfY29udHJvbCBjb250YWlucyBpbmNv bnNpc3RlbnQgZGF0YSBmb3Igc3RhbmRieSBiYWNrdXAiKSwKIAkJCQkJCQkgZXJyaGludCgi VGhpcyBtZWFucyB0aGF0IHRoZSBiYWNrdXAgaXMgY29ycnVwdGVkIGFuZCB5b3Ugd2lsbCAi CiAJCQkJCQkJCQkgImhhdmUgdG8gdXNlIGFub3RoZXIgYmFja3VwIGZvciByZWNvdmVyeS4i KSkpOwogCQkJCUNvbnRyb2xGaWxlLT5iYWNrdXBFbmRQb2ludCA9IENvbnRyb2xGaWxlLT5t aW5SZWNvdmVyeVBvaW50OwpAQCAtOTgzLDcgKzk4OCw2IEBAIEluaXRXYWxSZWNvdmVyeShD b250cm9sRmlsZURhdGEgKkNvbnRyb2xGaWxlLCBib29sICp3YXNTaHV0ZG93bl9wdHIsCiAJ bWlzc2luZ0NvbnRyZWNQdHIgPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAogCSp3YXNTaHV0ZG93 bl9wdHIgPSB3YXNTaHV0ZG93bjsKLQkqaGF2ZUJhY2t1cExhYmVsX3B0ciA9IGhhdmVCYWNr dXBMYWJlbDsKIAkqaGF2ZVRibHNwY01hcF9wdHIgPSBoYXZlVGJsc3BjTWFwOwogfQogCkBA IC0xMTU2LDE1NCArMTE2MCw2IEBAIHZhbGlkYXRlUmVjb3ZlcnlQYXJhbWV0ZXJzKHZvaWQp CiAJfQogfQogCi0vKgotICogcmVhZF9iYWNrdXBfbGFiZWw6IGNoZWNrIHRvIHNlZSBpZiBh IGJhY2t1cF9sYWJlbCBmaWxlIGlzIHByZXNlbnQKLSAqCi0gKiBJZiB3ZSBzZWUgYSBiYWNr dXBfbGFiZWwgZHVyaW5nIHJlY292ZXJ5LCB3ZSBhc3N1bWUgdGhhdCB3ZSBhcmUgcmVjb3Zl cmluZwotICogZnJvbSBhIGJhY2t1cCBkdW1wIGZpbGUsIGFuZCB3ZSB0aGVyZWZvcmUgcm9s bCBmb3J3YXJkIGZyb20gdGhlIGNoZWNrcG9pbnQKLSAqIGlkZW50aWZpZWQgYnkgdGhlIGxh YmVsIGZpbGUsIE5PVCB3aGF0IHBnX2NvbnRyb2wgc2F5cy4gIFRoaXMgYXZvaWRzIHRoZQot ICogcHJvYmxlbSB0aGF0IHBnX2NvbnRyb2wgbWlnaHQgaGF2ZSBiZWVuIGFyY2hpdmVkIG9u ZSBvciBtb3JlIGNoZWNrcG9pbnRzCi0gKiBsYXRlciB0aGFuIHRoZSBzdGFydCBvZiB0aGUg ZHVtcCwgYW5kIHNvIGlmIHdlIHJlbHkgb24gaXQgYXMgdGhlIHN0YXJ0Ci0gKiBwb2ludCwg d2Ugd2lsbCBmYWlsIHRvIHJlc3RvcmUgYSBjb25zaXN0ZW50IGRhdGFiYXNlIHN0YXRlLgot ICoKLSAqIFJldHVybnMgdHJ1ZSBpZiBhIGJhY2t1cF9sYWJlbCB3YXMgZm91bmQgKGFuZCBm aWxscyB0aGUgY2hlY2twb2ludAotICogbG9jYXRpb24gYW5kIFRMSSBpbnRvICpjaGVja1Bv aW50TG9jIGFuZCAqYmFja3VwTGFiZWxUTEksIHJlc3BlY3RpdmVseSk7Ci0gKiByZXR1cm5z IGZhbHNlIGlmIG5vdC4gSWYgdGhpcyBiYWNrdXBfbGFiZWwgY2FtZSBmcm9tIGEgc3RyZWFt ZWQgYmFja3VwLAotICogKmJhY2t1cEVuZFJlcXVpcmVkIGlzIHNldCB0byB0cnVlLiBJZiB0 aGlzIGJhY2t1cF9sYWJlbCB3YXMgY3JlYXRlZCBkdXJpbmcKLSAqIHJlY292ZXJ5LCAqYmFj a3VwRnJvbVN0YW5kYnkgaXMgc2V0IHRvIHRydWUuCi0gKgotICogQWxzbyBzZXRzIHRoZSBn bG9iYWwgdmFyaWFibGVzIFJlZG9TdGFydExTTiBhbmQgUmVkb1N0YXJ0VExJIHdpdGggdGhl IExTTgotICogYW5kIFRMSSByZWFkIGZyb20gdGhlIGJhY2t1cCBmaWxlLgotICovCi1zdGF0 aWMgYm9vbAotcmVhZF9iYWNrdXBfbGFiZWwoWExvZ1JlY1B0ciAqY2hlY2tQb2ludExvYywg VGltZUxpbmVJRCAqYmFja3VwTGFiZWxUTEksCi0JCQkJICBib29sICpiYWNrdXBFbmRSZXF1 aXJlZCwgYm9vbCAqYmFja3VwRnJvbVN0YW5kYnkpCi17Ci0JY2hhcgkJc3RhcnR4bG9nZmls ZW5hbWVbTUFYRk5BTUVMRU5dOwotCVRpbWVMaW5lSUQJdGxpX2Zyb21fd2Fsc2VnLAotCQkJ CXRsaV9mcm9tX2ZpbGU7Ci0JRklMRQkgICAqbGZwOwotCWNoYXIJCWNoOwotCWNoYXIJCWJh Y2t1cHR5cGVbMjBdOwotCWNoYXIJCWJhY2t1cGZyb21bMjBdOwotCWNoYXIJCWJhY2t1cGxh YmVsW01BWFBHUEFUSF07Ci0JY2hhcgkJYmFja3VwdGltZVsxMjhdOwotCXVpbnQzMgkJaGks Ci0JCQkJbG87Ci0KLQkvKiBzdXBwcmVzcyBwb3NzaWJsZSB1bmluaXRpYWxpemVkLXZhcmlh YmxlIHdhcm5pbmdzICovCi0JKmNoZWNrUG9pbnRMb2MgPSBJbnZhbGlkWExvZ1JlY1B0cjsK LQkqYmFja3VwTGFiZWxUTEkgPSAwOwotCSpiYWNrdXBFbmRSZXF1aXJlZCA9IGZhbHNlOwot CSpiYWNrdXBGcm9tU3RhbmRieSA9IGZhbHNlOwotCi0JLyoKLQkgKiBTZWUgaWYgbGFiZWwg ZmlsZSBpcyBwcmVzZW50Ci0JICovCi0JbGZwID0gQWxsb2NhdGVGaWxlKEJBQ0tVUF9MQUJF TF9GSUxFLCAiciIpOwotCWlmICghbGZwKQotCXsKLQkJaWYgKGVycm5vICE9IEVOT0VOVCkK LQkJCWVyZXBvcnQoRkFUQUwsCi0JCQkJCShlcnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLAot CQkJCQkgZXJybXNnKCJjb3VsZCBub3QgcmVhZCBmaWxlIFwiJXNcIjogJW0iLAotCQkJCQkJ CUJBQ0tVUF9MQUJFTF9GSUxFKSkpOwotCQlyZXR1cm4gZmFsc2U7CQkJLyogaXQncyBub3Qg dGhlcmUsIGFsbCBpcyBmaW5lICovCi0JfQotCi0JLyoKLQkgKiBSZWFkIGFuZCBwYXJzZSB0 aGUgU1RBUlQgV0FMIExPQ0FUSU9OIGFuZCBDSEVDS1BPSU5UIGxpbmVzICh0aGlzIGNvZGUK LQkgKiBpcyBwcmV0dHkgY3J1ZGUsIGJ1dCB3ZSBhcmUgbm90IGV4cGVjdGluZyBhbnkgdmFy aWFiaWxpdHkgaW4gdGhlIGZpbGUKLQkgKiBmb3JtYXQpLgotCSAqLwotCWlmIChmc2NhbmYo bGZwLCAiU1RBUlQgV0FMIExPQ0FUSU9OOiAlWC8lWCAoZmlsZSAlMDhYJTE2cyklYyIsCi0J CQkgICAmaGksICZsbywgJnRsaV9mcm9tX3dhbHNlZywgc3RhcnR4bG9nZmlsZW5hbWUsICZj aCkgIT0gNSB8fCBjaCAhPSAnXG4nKQotCQllcmVwb3J0KEZBVEFMLAotCQkJCShlcnJjb2Rl KEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAotCQkJCSBlcnJt c2coImludmFsaWQgZGF0YSBpbiBmaWxlIFwiJXNcIiIsIEJBQ0tVUF9MQUJFTF9GSUxFKSkp OwotCVJlZG9TdGFydExTTiA9ICgodWludDY0KSBoaSkgPDwgMzIgfCBsbzsKLQlSZWRvU3Rh cnRUTEkgPSB0bGlfZnJvbV93YWxzZWc7Ci0JaWYgKGZzY2FuZihsZnAsICJDSEVDS1BPSU5U IExPQ0FUSU9OOiAlWC8lWCVjIiwKLQkJCSAgICZoaSwgJmxvLCAmY2gpICE9IDMgfHwgY2gg IT0gJ1xuJykKLQkJZXJlcG9ydChGQVRBTCwKLQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVD VF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKLQkJCQkgZXJybXNnKCJpbnZhbGlkIGRh dGEgaW4gZmlsZSBcIiVzXCIiLCBCQUNLVVBfTEFCRUxfRklMRSkpKTsKLQkqY2hlY2tQb2lu dExvYyA9ICgodWludDY0KSBoaSkgPDwgMzIgfCBsbzsKLQkqYmFja3VwTGFiZWxUTEkgPSB0 bGlfZnJvbV93YWxzZWc7Ci0KLQkvKgotCSAqIEJBQ0tVUCBNRVRIT0QgbGV0cyB1cyBrbm93 IGlmIHRoaXMgd2FzIGEgdHlwaWNhbCBiYWNrdXAgKCJzdHJlYW1lZCIsCi0JICogd2hpY2gg Y291bGQgbWVhbiBlaXRoZXIgcGdfYmFzZWJhY2t1cCBvciB0aGUgcGdfYmFja3VwX3N0YXJ0 L3N0b3AKLQkgKiBtZXRob2Qgd2FzIHVzZWQpIG9yIGlmIHRoaXMgbGFiZWwgY2FtZSBmcm9t IHNvbWV3aGVyZSBlbHNlICh0aGUgb25seQotCSAqIG90aGVyIG9wdGlvbiB0b2RheSBiZWlu ZyBmcm9tIHBnX3Jld2luZCkuICBJZiB0aGlzIHdhcyBhIHN0cmVhbWVkCi0JICogYmFja3Vw IHRoZW4gd2Uga25vdyB0aGF0IHdlIG5lZWQgdG8gcGxheSB0aHJvdWdoIHVudGlsIHdlIGdl dCB0byB0aGUKLQkgKiBlbmQgb2YgdGhlIFdBTCB3aGljaCB3YXMgZ2VuZXJhdGVkIGR1cmlu ZyB0aGUgYmFja3VwIChhdCB3aGljaCBwb2ludCB3ZQotCSAqIHdpbGwgaGF2ZSByZWFjaGVk IGNvbnNpc3RlbmN5IGFuZCBiYWNrdXBFbmRSZXF1aXJlZCB3aWxsIGJlIHJlc2V0IHRvIGJl Ci0JICogZmFsc2UpLgotCSAqLwotCWlmIChmc2NhbmYobGZwLCAiQkFDS1VQIE1FVEhPRDog JTE5c1xuIiwgYmFja3VwdHlwZSkgPT0gMSkKLQl7Ci0JCWlmIChzdHJjbXAoYmFja3VwdHlw ZSwgInN0cmVhbWVkIikgPT0gMCkKLQkJCSpiYWNrdXBFbmRSZXF1aXJlZCA9IHRydWU7Ci0J fQotCi0JLyoKLQkgKiBCQUNLVVAgRlJPTSBsZXRzIHVzIGtub3cgaWYgdGhpcyB3YXMgZnJv bSBhIHByaW1hcnkgb3IgYSBzdGFuZGJ5LiAgSWYKLQkgKiBpdCB3YXMgZnJvbSBhIHN0YW5k YnksIHdlJ2xsIGRvdWJsZS1jaGVjayB0aGF0IHRoZSBjb250cm9sIGZpbGUgc3RhdGUKLQkg KiBtYXRjaGVzIHRoYXQgb2YgYSBzdGFuZGJ5LgotCSAqLwotCWlmIChmc2NhbmYobGZwLCAi QkFDS1VQIEZST006ICUxOXNcbiIsIGJhY2t1cGZyb20pID09IDEpCi0JewotCQlpZiAoc3Ry Y21wKGJhY2t1cGZyb20sICJzdGFuZGJ5IikgPT0gMCkKLQkJCSpiYWNrdXBGcm9tU3RhbmRi eSA9IHRydWU7Ci0JfQotCi0JLyoKLQkgKiBQYXJzZSBTVEFSVCBUSU1FIGFuZCBMQUJFTC4g VGhvc2UgYXJlIG5vdCBtYW5kYXRvcnkgZmllbGRzIGZvciByZWNvdmVyeQotCSAqIGJ1dCBj aGVja2luZyBmb3IgdGhlaXIgcHJlc2VuY2UgaXMgdXNlZnVsIGZvciBkZWJ1Z2dpbmcgYW5k IHRoZSBuZXh0Ci0JICogc2FuaXR5IGNoZWNrcy4gQ29wZSBhbHNvIHdpdGggdGhlIGZhY3Qg dGhhdCB0aGUgcmVzdWx0IGJ1ZmZlcnMgaGF2ZSBhCi0JICogcHJlLWFsbG9jYXRlZCBzaXpl LCBoZW5jZSBpZiB0aGUgYmFja3VwX2xhYmVsIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkCi0J ICogd2l0aCBzdHJpbmdzIGxvbmdlciB0aGFuIHRoZSBtYXhpbXVtIGFzc3VtZWQgaGVyZSBh biBpbmNvcnJlY3QgcGFyc2luZwotCSAqIGhhcHBlbnMuIFRoYXQncyBmaW5lIGFzIG9ubHkg bWlub3IgY29uc2lzdGVuY3kgY2hlY2tzIGFyZSBkb25lCi0JICogYWZ0ZXJ3YXJkcy4KLQkg Ki8KLQlpZiAoZnNjYW5mKGxmcCwgIlNUQVJUIFRJTUU6ICUxMjdbXlxuXVxuIiwgYmFja3Vw dGltZSkgPT0gMSkKLQkJZXJlcG9ydChERUJVRzEsCi0JCQkJKGVycm1zZ19pbnRlcm5hbCgi YmFja3VwIHRpbWUgJXMgaW4gZmlsZSBcIiVzXCIiLAotCQkJCQkJCQkgYmFja3VwdGltZSwg QkFDS1VQX0xBQkVMX0ZJTEUpKSk7Ci0KLQlpZiAoZnNjYW5mKGxmcCwgIkxBQkVMOiAlMTAy M1teXG5dXG4iLCBiYWNrdXBsYWJlbCkgPT0gMSkKLQkJZXJlcG9ydChERUJVRzEsCi0JCQkJ KGVycm1zZ19pbnRlcm5hbCgiYmFja3VwIGxhYmVsICVzIGluIGZpbGUgXCIlc1wiIiwKLQkJ CQkJCQkJIGJhY2t1cGxhYmVsLCBCQUNLVVBfTEFCRUxfRklMRSkpKTsKLQotCS8qCi0JICog U1RBUlQgVElNRUxJTkUgaXMgbmV3IGFzIG9mIDExLiBJdHMgcGFyc2luZyBpcyBub3QgbWFu ZGF0b3J5LCBzdGlsbCB1c2UKLQkgKiBpdCBhcyBhIHNhbml0eSBjaGVjayBpZiBwcmVzZW50 LgotCSAqLwotCWlmIChmc2NhbmYobGZwLCAiU1RBUlQgVElNRUxJTkU6ICV1XG4iLCAmdGxp X2Zyb21fZmlsZSkgPT0gMSkKLQl7Ci0JCWlmICh0bGlfZnJvbV93YWxzZWcgIT0gdGxpX2Zy b21fZmlsZSkKLQkJCWVyZXBvcnQoRkFUQUwsCi0JCQkJCShlcnJjb2RlKEVSUkNPREVfT0JK RUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAotCQkJCQkgZXJybXNnKCJpbnZhbGlk IGRhdGEgaW4gZmlsZSBcIiVzXCIiLCBCQUNLVVBfTEFCRUxfRklMRSksCi0JCQkJCSBlcnJk ZXRhaWwoIlRpbWVsaW5lIElEIHBhcnNlZCBpcyAldSwgYnV0IGV4cGVjdGVkICV1LiIsCi0J CQkJCQkJICAgdGxpX2Zyb21fZmlsZSwgdGxpX2Zyb21fd2Fsc2VnKSkpOwotCi0JCWVyZXBv cnQoREVCVUcxLAotCQkJCShlcnJtc2dfaW50ZXJuYWwoImJhY2t1cCB0aW1lbGluZSAldSBp biBmaWxlIFwiJXNcIiIsCi0JCQkJCQkJCSB0bGlfZnJvbV9maWxlLCBCQUNLVVBfTEFCRUxf RklMRSkpKTsKLQl9Ci0KLQlpZiAoZmVycm9yKGxmcCkgfHwgRnJlZUZpbGUobGZwKSkKLQkJ ZXJlcG9ydChGQVRBTCwKLQkJCQkoZXJyY29kZV9mb3JfZmlsZV9hY2Nlc3MoKSwKLQkJCQkg ZXJybXNnKCJjb3VsZCBub3QgcmVhZCBmaWxlIFwiJXNcIjogJW0iLAotCQkJCQkJQkFDS1VQ X0xBQkVMX0ZJTEUpKSk7Ci0KLQlyZXR1cm4gdHJ1ZTsKLX0KLQogLyoKICAqIHJlYWRfdGFi bGVzcGFjZV9tYXA6IGNoZWNrIHRvIHNlZSBpZiBhIHRhYmxlc3BhY2VfbWFwIGZpbGUgaXMg cHJlc2VudAogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFja3Vw LmMgYi9zcmMvYmFja2VuZC9iYWNrdXAvYmFzZWJhY2t1cC5jCmluZGV4IGI1MzdmNDYyMTk3 Li4wMWQwOWRiZGQyMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNr dXAuYworKysgYi9zcmMvYmFja2VuZC9iYWNrdXAvYmFzZWJhY2t1cC5jCkBAIC0yMiw2ICsy Miw3IEBACiAjaW5jbHVkZSAiYmFja3VwL2Jhc2ViYWNrdXAuaCIKICNpbmNsdWRlICJiYWNr dXAvYmFzZWJhY2t1cF9zaW5rLmgiCiAjaW5jbHVkZSAiYmFja3VwL2Jhc2ViYWNrdXBfdGFy Z2V0LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb250cm9sLmgiCiAjaW5jbHVkZSAiY29t bWFuZHMvZGVmcmVtLmgiCiAjaW5jbHVkZSAiY29tbW9uL2NvbXByZXNzaW9uLmgiCiAjaW5j bHVkZSAiY29tbW9uL2ZpbGVfcGVybS5oIgpAQCAtOTQsNyArOTUsNyBAQCBzdGF0aWMgYm9v bCB2ZXJpZnlfcGFnZV9jaGVja3N1bShQYWdlIHBhZ2UsIFhMb2dSZWNQdHIgc3RhcnRfbHNu LAogCQkJCQkJCQkgQmxvY2tOdW1iZXIgYmxrbm8sCiAJCQkJCQkJCSB1aW50MTYgKmV4cGVj dGVkX2NoZWNrc3VtKTsKIHN0YXRpYyB2b2lkIHNlbmRGaWxlV2l0aENvbnRlbnQoYmJzaW5r ICpzaW5rLCBjb25zdCBjaGFyICpmaWxlbmFtZSwKLQkJCQkJCQkJY29uc3QgY2hhciAqY29u dGVudCwKKwkJCQkJCQkJY29uc3QgY2hhciAqY29udGVudCwgaW50IGxlbiwKIAkJCQkJCQkJ YmFja3VwX21hbmlmZXN0X2luZm8gKm1hbmlmZXN0KTsKIHN0YXRpYyBpbnQ2NCBfdGFyV3Jp dGVIZWFkZXIoYmJzaW5rICpzaW5rLCBjb25zdCBjaGFyICpmaWxlbmFtZSwKIAkJCQkJCQkg Y29uc3QgY2hhciAqbGlua3RhcmdldCwgc3RydWN0IHN0YXQgKnN0YXRidWYsCkBAIC0xOTIs MTAgKzE5Myw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXhjbHVkZV9saXN0X2l0ZW0gZXhj bHVkZUZpbGVzW10gPQogCXtSRUxDQUNIRV9JTklUX0ZJTEVOQU1FLCB0cnVlfSwKIAogCS8q Ci0JICogYmFja3VwX2xhYmVsIGFuZCB0YWJsZXNwYWNlX21hcCBzaG91bGQgbm90IGV4aXN0 IGluIGEgcnVubmluZyBjbHVzdGVyCi0JICogY2FwYWJsZSBvZiBkb2luZyBhbiBvbmxpbmUg YmFja3VwLCBidXQgZXhjbHVkZSB0aGVtIGp1c3QgaW4gY2FzZS4KKwkgKiB0YWJsZXNwYWNl X21hcCBzaG91bGQgbm90IGV4aXN0IGluIGEgcnVubmluZyBjbHVzdGVyIGNhcGFibGUgb2Yg ZG9pbmcKKwkgKiBhbiBvbmxpbmUgYmFja3VwLCBidXQgZXhjbHVkZSBpdCBqdXN0IGluIGNh c2UuCiAJICovCi0Je0JBQ0tVUF9MQUJFTF9GSUxFLCBmYWxzZX0sCiAJe1RBQkxFU1BBQ0Vf TUFQLCBmYWxzZX0sCiAKIAkvKgpAQCAtMzI1LDIzICszMjUsMTUgQEAgcGVyZm9ybV9iYXNl X2JhY2t1cChiYXNlYmFja3VwX29wdGlvbnMgKm9wdCwgYmJzaW5rICpzaW5rKQogCiAJCQlp ZiAodGktPnBhdGggPT0gTlVMTCkKIAkJCXsKLQkJCQlzdHJ1Y3Qgc3RhdCBzdGF0YnVmOwog CQkJCWJvb2wJCXNlbmR0YmxzcGNsaW5rcyA9IHRydWU7Ci0JCQkJY2hhcgkgICAqYmFja3Vw X2xhYmVsOwogCiAJCQkJYmJzaW5rX2JlZ2luX2FyY2hpdmUoc2luaywgImJhc2UudGFyIik7 CiAKLQkJCQkvKiBJbiB0aGUgbWFpbiB0YXIsIGluY2x1ZGUgdGhlIGJhY2t1cF9sYWJlbCBm aXJzdC4uLiAqLwotCQkJCWJhY2t1cF9sYWJlbCA9IGJ1aWxkX2JhY2t1cF9jb250ZW50KGJh Y2t1cF9zdGF0ZSwgZmFsc2UpOwotCQkJCXNlbmRGaWxlV2l0aENvbnRlbnQoc2luaywgQkFD S1VQX0xBQkVMX0ZJTEUsCi0JCQkJCQkJCQliYWNrdXBfbGFiZWwsICZtYW5pZmVzdCk7Ci0J CQkJcGZyZWUoYmFja3VwX2xhYmVsKTsKLQotCQkJCS8qIFRoZW4gdGhlIHRhYmxlc3BhY2Vf bWFwIGZpbGUsIGlmIHJlcXVpcmVkLi4uICovCisJCQkJLyogU2VuZCB0aGUgdGFibGVzcGFj ZV9tYXAgZmlsZSwgaWYgcmVxdWlyZWQuLi4gKi8KIAkJCQlpZiAob3B0LT5zZW5kdGJsc3Bj bWFwZmlsZSkKIAkJCQl7CiAJCQkJCXNlbmRGaWxlV2l0aENvbnRlbnQoc2luaywgVEFCTEVT UEFDRV9NQVAsCi0JCQkJCQkJCQkJdGFibGVzcGFjZV9tYXAtPmRhdGEsICZtYW5pZmVzdCk7 CisJCQkJCQkJCQkJdGFibGVzcGFjZV9tYXAtPmRhdGEsIC0xLCAmbWFuaWZlc3QpOwogCQkJ CQlzZW5kdGJsc3BjbGlua3MgPSBmYWxzZTsKIAkJCQl9CiAKQEAgLTM0OSwxNCArMzQxLDE0 IEBAIHBlcmZvcm1fYmFzZV9iYWNrdXAoYmFzZWJhY2t1cF9vcHRpb25zICpvcHQsIGJic2lu ayAqc2luaykKIAkJCQlzZW5kRGlyKHNpbmssICIuIiwgMSwgZmFsc2UsIHN0YXRlLnRhYmxl c3BhY2VzLAogCQkJCQkJc2VuZHRibHNwY2xpbmtzLCAmbWFuaWZlc3QsIEludmFsaWRPaWQp OwogCi0JCQkJLyogLi4uIGFuZCBwZ19jb250cm9sIGFmdGVyIGV2ZXJ5dGhpbmcgZWxzZS4g Ki8KLQkJCQlpZiAobHN0YXQoWExPR19DT05UUk9MX0ZJTEUsICZzdGF0YnVmKSAhPSAwKQot CQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJCShlcnJjb2RlX2Zvcl9maWxlX2FjY2Vzcygp LAotCQkJCQkJCSBlcnJtc2coImNvdWxkIG5vdCBzdGF0IGZpbGUgXCIlc1wiOiAlbSIsCi0J CQkJCQkJCQlYTE9HX0NPTlRST0xfRklMRSkpKTsKLQkJCQlzZW5kRmlsZShzaW5rLCBYTE9H X0NPTlRST0xfRklMRSwgWExPR19DT05UUk9MX0ZJTEUsICZzdGF0YnVmLAotCQkJCQkJIGZh bHNlLCBJbnZhbGlkT2lkLCBJbnZhbGlkT2lkLCAmbWFuaWZlc3QpOworCQkJCS8qIEVuZCB0 aGUgYmFja3VwIGJlZm9yZSBzZW5kaW5nIHBnX2NvbnRyb2wgKi8KKwkJCQliYXNlYmFja3Vw X3Byb2dyZXNzX3dhaXRfd2FsX2FyY2hpdmUoJnN0YXRlKTsKKwkJCQlkb19wZ19iYWNrdXBf c3RvcChiYWNrdXBfc3RhdGUsICFvcHQtPm5vd2FpdCk7CisKKwkJCQkvKiBTZW5kIGNvcHkg b2YgcGdfY29udHJvbCBjb250YWluaW5nIHJlY292ZXJ5IGluZm8gKi8KKwkJCQlzZW5kRmls ZVdpdGhDb250ZW50KHNpbmssIFhMT0dfQ09OVFJPTF9GSUxFLAorCQkJCQkJCQkgICAgKGNo YXIgKiliYWNrdXBfc3RhdGUtPmNvbnRyb2xGaWxlLAorCQkJCQkJCQkJUEdfQ09OVFJPTF9N QVhfU0FGRV9TSVpFLCAmbWFuaWZlc3QpOwogCQkJfQogCQkJZWxzZQogCQkJewpAQCAtMzkw LDkgKzM4Miw2IEBAIHBlcmZvcm1fYmFzZV9iYWNrdXAoYmFzZWJhY2t1cF9vcHRpb25zICpv cHQsIGJic2luayAqc2luaykKIAkJCX0KIAkJfQogCi0JCWJhc2ViYWNrdXBfcHJvZ3Jlc3Nf d2FpdF93YWxfYXJjaGl2ZSgmc3RhdGUpOwotCQlkb19wZ19iYWNrdXBfc3RvcChiYWNrdXBf c3RhdGUsICFvcHQtPm5vd2FpdCk7Ci0KIAkJZW5kcHRyID0gYmFja3VwX3N0YXRlLT5zdG9w cG9pbnQ7CiAJCWVuZHRsaSA9IGJhY2t1cF9zdGF0ZS0+c3RvcHRsaTsKIApAQCAtNjAxLDcg KzU5MCw3IEBAIHBlcmZvcm1fYmFzZV9iYWNrdXAoYmFzZWJhY2t1cF9vcHRpb25zICpvcHQs IGJic2luayAqc2luaykKIAkJCSAqIGNvbXBsZXRlIHNlZ21lbnQuCiAJCQkgKi8KIAkJCVN0 YXR1c0ZpbGVQYXRoKHBhdGhidWYsIHdhbEZpbGVOYW1lLCAiLmRvbmUiKTsKLQkJCXNlbmRG aWxlV2l0aENvbnRlbnQoc2luaywgcGF0aGJ1ZiwgIiIsICZtYW5pZmVzdCk7CisJCQlzZW5k RmlsZVdpdGhDb250ZW50KHNpbmssIHBhdGhidWYsICIiLCAtMSwgJm1hbmlmZXN0KTsKIAkJ fQogCiAJCS8qCkBAIC02MjksNyArNjE4LDcgQEAgcGVyZm9ybV9iYXNlX2JhY2t1cChiYXNl YmFja3VwX29wdGlvbnMgKm9wdCwgYmJzaW5rICpzaW5rKQogCiAJCQkvKiB1bmNvbmRpdGlv bmFsbHkgbWFyayBmaWxlIGFzIGFyY2hpdmVkICovCiAJCQlTdGF0dXNGaWxlUGF0aChwYXRo YnVmLCBmbmFtZSwgIi5kb25lIik7Ci0JCQlzZW5kRmlsZVdpdGhDb250ZW50KHNpbmssIHBh dGhidWYsICIiLCAmbWFuaWZlc3QpOworCQkJc2VuZEZpbGVXaXRoQ29udGVudChzaW5rLCBw YXRoYnVmLCAiIiwgLTEsICZtYW5pZmVzdCk7CiAJCX0KIAogCQkvKiBQcm9wZXJseSB0ZXJt aW5hdGUgdGhlIHRhciBmaWxlLiAqLwpAQCAtMTA0MCwyMiArMTAyOSwyMSBAQCBTZW5kQmFz ZUJhY2t1cChCYXNlQmFja3VwQ21kICpjbWQpCiAgKi8KIHN0YXRpYyB2b2lkCiBzZW5kRmls ZVdpdGhDb250ZW50KGJic2luayAqc2luaywgY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0 IGNoYXIgKmNvbnRlbnQsCi0JCQkJCWJhY2t1cF9tYW5pZmVzdF9pbmZvICptYW5pZmVzdCkK KwkJCQkJaW50IGxlbiwgYmFja3VwX21hbmlmZXN0X2luZm8gKm1hbmlmZXN0KQogewogCXN0 cnVjdCBzdGF0IHN0YXRidWY7Ci0JaW50CQkJYnl0ZXNfZG9uZSA9IDAsCi0JCQkJbGVuOwor CWludAkJCWJ5dGVzX2RvbmUgPSAwOwogCXBnX2NoZWNrc3VtX2NvbnRleHQgY2hlY2tzdW1f Y3R4OwogCiAJaWYgKHBnX2NoZWNrc3VtX2luaXQoJmNoZWNrc3VtX2N0eCwgbWFuaWZlc3Qt PmNoZWNrc3VtX3R5cGUpIDwgMCkKIAkJZWxvZyhFUlJPUiwgImNvdWxkIG5vdCBpbml0aWFs aXplIGNoZWNrc3VtIG9mIGZpbGUgXCIlc1wiIiwKIAkJCSBmaWxlbmFtZSk7CiAKLQlsZW4g PSBzdHJsZW4oY29udGVudCk7CisJaWYgKGxlbiA8IDApCisJCWxlbiA9IHN0cmxlbihjb250 ZW50KTsKIAogCS8qCi0JICogQ29uc3RydWN0IGEgc3RhdCBzdHJ1Y3QgZm9yIHRoZSBiYWNr dXBfbGFiZWwgZmlsZSB3ZSdyZSBpbmplY3RpbmcgaW4KLQkgKiB0aGUgdGFyLgorCSAqIENv bnN0cnVjdCBhIHN0YXQgc3RydWN0IGZvciB0aGUgZmlsZSB3ZSdyZSBpbmplY3RpbmcgaW4g dGhlIHRhci4KIAkgKi8KIAkvKiBXaW5kb3dzIGRvZXNuJ3QgaGF2ZSB0aGUgY29uY2VwdCBv ZiB1aWQgYW5kIGdpZCAqLwogI2lmZGVmIFdJTjMyCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL3N5c3RlbV9mdW5jdGlvbnMuc3FsIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9z eXN0ZW1fZnVuY3Rpb25zLnNxbAppbmRleCAzNWQ3MzhkNTc2My4uMjRiZjM0YjQ1ZWIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX2Z1bmN0aW9ucy5zcWwKKysr IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fZnVuY3Rpb25zLnNxbApAQCAtMzg0LDEz ICszODQsMTUgQEAgQkVHSU4gQVRPTUlDCiBFTkQ7CiAKIENSRUFURSBPUiBSRVBMQUNFIEZV TkNUSU9OCi0gIHBnX2JhY2t1cF9zdGFydChsYWJlbCB0ZXh0LCBmYXN0IGJvb2xlYW4gREVG QVVMVCBmYWxzZSkKLSAgUkVUVVJOUyBwZ19sc24gU1RSSUNUIFZPTEFUSUxFIExBTkdVQUdF IGludGVybmFsIEFTICdwZ19iYWNrdXBfc3RhcnQnCisgIHBnX2JhY2t1cF9zdGFydChsYWJl bCB0ZXh0LCBmYXN0IGJvb2xlYW4gREVGQVVMVCBmYWxzZSwgT1VUIGxzbiBwZ19sc24sCisg ICAgICAgIE9VVCB0aW1lbGluZV9pZCBpbnQ4LCBPVVQgc3RhcnQgdGltZXN0YW1wdHopCisg IFJFVFVSTlMgcmVjb3JkIFNUUklDVCBWT0xBVElMRSBMQU5HVUFHRSBpbnRlcm5hbCBBUyAn cGdfYmFja3VwX3N0YXJ0JwogICBQQVJBTExFTCBSRVNUUklDVEVEOwogCiBDUkVBVEUgT1Ig UkVQTEFDRSBGVU5DVElPTiBwZ19iYWNrdXBfc3RvcCAoCi0gICAgICAgIHdhaXRfZm9yX2Fy Y2hpdmUgYm9vbGVhbiBERUZBVUxUIHRydWUsIE9VVCBsc24gcGdfbHNuLAotICAgICAgICBP VVQgbGFiZWxmaWxlIHRleHQsIE9VVCBzcGNtYXBmaWxlIHRleHQpCisgICAgICAgIHdhaXRf Zm9yX2FyY2hpdmUgYm9vbGVhbiBERUZBVUxUIHRydWUsIE9VVCBwZ19jb250cm9sX2ZpbGUg Ynl0ZWEsCisgICAgICAgIE9VVCB0YWJsZXNwYWNlX21hcF9maWxlIHRleHQsIE9VVCBsc24g cGdfbHNuLCBPVVQgdGltZWxpbmVfaWQgaW50OCwKKyAgICAgICAgT1VUIHN0b3AgdGltZXN0 YW1wdHopCiAgIFJFVFVSTlMgcmVjb3JkIFNUUklDVCBWT0xBVElMRSBMQU5HVUFHRSBpbnRl cm5hbCBhcyAncGdfYmFja3VwX3N0b3AnCiAgIFBBUkFMTEVMIFJFU1RSSUNURUQ7CiAKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC90LzAxMF9wZ19iYXNlYmFja3VwLnBs IGIvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3QvMDEwX3BnX2Jhc2ViYWNrdXAucGwKaW5kZXgg YjlmNWUxMjY2YjQuLmM2NTVjYjAzMzUyIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2Jhc2Vi YWNrdXAvdC8wMTBfcGdfYmFzZWJhY2t1cC5wbAorKysgYi9zcmMvYmluL3BnX2Jhc2ViYWNr dXAvdC8wMTBfcGdfYmFzZWJhY2t1cC5wbApAQCAtMTcxLDggKzE3MSw4IEBAIFNLSVA6CiAK ICMgV3JpdGUgc29tZSBmaWxlcyB0byB0ZXN0IHRoYXQgdGhleSBhcmUgbm90IGNvcGllZC4K IGZvcmVhY2ggbXkgJGZpbGVuYW1lICgKLQlxdyhiYWNrdXBfbGFiZWwgdGFibGVzcGFjZV9t YXAgcG9zdGdyZXNxbC5hdXRvLmNvbmYudG1wCi0JY3VycmVudF9sb2dmaWxlcy50bXAgZ2xv YmFsL3BnX2ludGVybmFsLmluaXQuMTIzKSkKKwlxdyh0YWJsZXNwYWNlX21hcCBwb3N0Z3Jl c3FsLmF1dG8uY29uZi50bXAgY3VycmVudF9sb2dmaWxlcy50bXAKKwkgICBnbG9iYWwvcGdf aW50ZXJuYWwuaW5pdC4xMjMpKQogewogCW9wZW4gbXkgJGZpbGUsICc+PicsICIkcGdkYXRh LyRmaWxlbmFtZSI7CiAJcHJpbnQgJGZpbGUgIkRPTk9UQ09QWSI7CkBAIC0yNjEsMTQgKzI2 MSwxMyBAQCBmb3JlYWNoIG15ICRmaWxlbmFtZSAoQHRlbXBSZWxhdGlvbkZpbGVzKQogCQki YmFzZS8kcG9zdGdyZXNPaWQvJGZpbGVuYW1lIG5vdCBjb3BpZWQiKTsKIH0KIAotIyBNYWtl IHN1cmUgZXhpc3RpbmcgYmFja3VwX2xhYmVsIHdhcyBpZ25vcmVkLgotaXNudChzbHVycF9m aWxlKCIkdGVtcGRpci9iYWNrdXAvYmFja3VwX2xhYmVsIiksCi0JJ0RPTk9UQ09QWScsICdl eGlzdGluZyBiYWNrdXBfbGFiZWwgbm90IGNvcGllZCcpOworIyBNYWtlIHN1cmUgZXhpc3Rp bmcgdGFibGVzcGFjZV9tYXAgd2FzIGlnbm9yZWQuCitvayghLWYgIiR0ZW1wZGlyL2JhY2t1 cC90YWJsZXNwYWNlX21hcCIsICd0YWJsZXNwYWNlX21hcCBub3QgaW4gYmFja3VwJyk7CiBy bXRyZWUoIiR0ZW1wZGlyL2JhY2t1cCIpOwogCi0jIE5vdyBkZWxldGUgdGhlIGJvZ3VzIGJh Y2t1cF9sYWJlbCBmaWxlIHNpbmNlIGl0IHdpbGwgaW50ZXJmZXJlIHdpdGggc3RhcnR1cAot dW5saW5rKCIkcGdkYXRhL2JhY2t1cF9sYWJlbCIpCi0gIG9yIEJBSUxfT1VUKCJ1bmFibGUg dG8gdW5saW5rICRwZ2RhdGEvYmFja3VwX2xhYmVsIik7CisjIE5vdyBkZWxldGUgdGhlIGJv Z3VzIHRhYmxlc3BhY2VfbWFwIGZpbGUgc2luY2UgaXQgd2lsbCBpbnRlcmZlcmUgd2l0aCBz dGFydHVwCit1bmxpbmsoIiRwZ2RhdGEvdGFibGVzcGFjZV9tYXAiKQorICBvciBCQUlMX09V VCgidW5hYmxlIHRvIHVubGluayAkcGdkYXRhL3RhYmxlc3BhY2VfbWFwIik7CiAKICRub2Rl LT5jb21tYW5kX29rKAogCVsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfcmV3aW5kL2ZpbGVt YXAuYyBiL3NyYy9iaW4vcGdfcmV3aW5kL2ZpbGVtYXAuYwppbmRleCBlY2FkZDY5ZGM1My4u MjEzZjRlNzFiODggMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfcmV3aW5kL2ZpbGVtYXAuYwor KysgYi9zcmMvYmluL3BnX3Jld2luZC9maWxlbWFwLmMKQEAgLTEzOSwxMSArMTM5LDEwIEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXhjbHVkZV9saXN0X2l0ZW0gZXhjbHVkZUZpbGVzW10g PQogCXsicGdfaW50ZXJuYWwuaW5pdCIsIHRydWV9LCAvKiBkZWZpbmVkIGFzIFJFTENBQ0hF X0lOSVRfRklMRU5BTUUgKi8KIAogCS8qCi0JICogSWYgdGhlcmUgaXMgYSBiYWNrdXBfbGFi ZWwgb3IgdGFibGVzcGFjZV9tYXAgZmlsZSwgaXQgaW5kaWNhdGVzIHRoYXQgYQotCSAqIHJl Y292ZXJ5IGZhaWxlZCBhbmQgdGhpcyBjbHVzdGVyIHByb2JhYmx5IGNhbid0IGJlIHJld291 bmQsIGJ1dCBleGNsdWRlCi0JICogdGhlbSBhbnl3YXkgaWYgdGhleSBhcmUgZm91bmQuCisJ ICogSWYgdGhlcmUgaXMgYSB0YWJsZXNwYWNlX21hcCBmaWxlLCBpdCBpbmRpY2F0ZXMgdGhh dCBhIHJlY292ZXJ5IGZhaWxlZAorCSAqIGFuZCB0aGlzIGNsdXN0ZXIgcHJvYmFibHkgY2Fu J3QgYmUgcmV3b3VuZCwgYnV0IGV4Y2x1ZGUgaXQgYW55d2F5IGlmIGl0CisJICogaXMgZm91 bmQuCiAJICovCi0JeyJiYWNrdXBfbGFiZWwiLCBmYWxzZX0sCS8qIGRlZmluZWQgYXMgQkFD S1VQX0xBQkVMX0ZJTEUgKi8KIAl7InRhYmxlc3BhY2VfbWFwIiwgZmFsc2V9LAkvKiBkZWZp bmVkIGFzIFRBQkxFU1BBQ0VfTUFQICovCiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w Z19yZXdpbmQvcGdfcmV3aW5kLmMgYi9zcmMvYmluL3BnX3Jld2luZC9wZ19yZXdpbmQuYwpp bmRleCBiZmQ0NGEyODRlMi4uZjQyNzgyZTJlYWIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdf cmV3aW5kL3BnX3Jld2luZC5jCisrKyBiL3NyYy9iaW4vcGdfcmV3aW5kL3BnX3Jld2luZC5j CkBAIC0zOSw5ICszOSw2IEBAIHN0YXRpYyB2b2lkIHBlcmZvcm1fcmV3aW5kKGZpbGVtYXBf dCAqZmlsZW1hcCwgcmV3aW5kX3NvdXJjZSAqc291cmNlLAogCQkJCQkJICAgVGltZUxpbmVJ RCBjaGtwdHRsaSwKIAkJCQkJCSAgIFhMb2dSZWNQdHIgY2hrcHRyZWRvKTsKIAotc3RhdGlj IHZvaWQgY3JlYXRlQmFja3VwTGFiZWwoWExvZ1JlY1B0ciBzdGFydHBvaW50LCBUaW1lTGlu ZUlEIHN0YXJ0dGxpLAotCQkJCQkJCSAgWExvZ1JlY1B0ciBjaGVja3BvaW50bG9jKTsKLQog c3RhdGljIHZvaWQgZGlnZXN0Q29udHJvbEZpbGUoQ29udHJvbEZpbGVEYXRhICpDb250cm9s RmlsZSwKIAkJCQkJCQkgIGNvbnN0IGNoYXIgKmNvbnRlbnQsIHNpemVfdCBzaXplKTsKIHN0 YXRpYyB2b2lkIGdldFJlc3RvcmVDb21tYW5kKGNvbnN0IGNoYXIgKmFyZ3YwKTsKQEAgLTY1 NCw3ICs2NTEsNyBAQCBwZXJmb3JtX3Jld2luZChmaWxlbWFwX3QgKmZpbGVtYXAsIHJld2lu ZF9zb3VyY2UgKnNvdXJjZSwKIAkJcGdfbG9nX2luZm8oImNyZWF0aW5nIGJhY2t1cCBsYWJl bCBhbmQgdXBkYXRpbmcgY29udHJvbCBmaWxlIik7CiAKIAkvKgotCSAqIENyZWF0ZSBhIGJh Y2t1cCBsYWJlbCBmaWxlLCB0byB0ZWxsIHRoZSB0YXJnZXQgd2hlcmUgdG8gYmVnaW4gdGhl IFdBTAorCSAqIEdldCByZWNvdmVyeSBmaWVsZHMgdG8gdGVsbCB0aGUgdGFyZ2V0IHdoZXJl IHRvIGJlZ2luIHRoZSBXQUwKIAkgKiByZXBsYXkuIE5vcm1hbGx5LCBmcm9tIHRoZSBsYXN0 IGNvbW1vbiBjaGVja3BvaW50IGJldHdlZW4gdGhlIHNvdXJjZQogCSAqIGFuZCB0aGUgdGFy Z2V0LiBCdXQgaWYgdGhlIHNvdXJjZSBpcyBhIHN0YW5kYnkgc2VydmVyLCBpdCdzIHBvc3Np YmxlCiAJICogdGhhdCB0aGUgbGFzdCBjb21tb24gY2hlY2twb2ludCBpcyAqYWZ0ZXIqIHRo ZSBzdGFuZGJ5J3MgcmVzdGFydHBvaW50LgpAQCAtNjcyLDcgKzY2OSw2IEBAIHBlcmZvcm1f cmV3aW5kKGZpbGVtYXBfdCAqZmlsZW1hcCwgcmV3aW5kX3NvdXJjZSAqc291cmNlLAogCQlj aGtwdHRsaSA9IENvbnRyb2xGaWxlX3NvdXJjZS5jaGVja1BvaW50Q29weS5UaGlzVGltZUxp bmVJRDsKIAkJY2hrcHRyZWMgPSBDb250cm9sRmlsZV9zb3VyY2UuY2hlY2tQb2ludDsKIAl9 Ci0JY3JlYXRlQmFja3VwTGFiZWwoY2hrcHRyZWRvLCBjaGtwdHRsaSwgY2hrcHRyZWMpOwog CiAJLyoKIAkgKiBVcGRhdGUgY29udHJvbCBmaWxlIG9mIHRhcmdldCwgdG8gdGVsbCB0aGUg dGFyZ2V0IGhvdyBmYXIgaXQgbXVzdApAQCAtNzIyLDYgKzcxOCwxMiBAQCBwZXJmb3JtX3Jl d2luZChmaWxlbWFwX3QgKmZpbGVtYXAsIHJld2luZF9zb3VyY2UgKnNvdXJjZSwKIAlDb250 cm9sRmlsZV9uZXcubWluUmVjb3ZlcnlQb2ludCA9IGVuZHJlYzsKIAlDb250cm9sRmlsZV9u ZXcubWluUmVjb3ZlcnlQb2ludFRMSSA9IGVuZHRsaTsKIAlDb250cm9sRmlsZV9uZXcuc3Rh dGUgPSBEQl9JTl9BUkNISVZFX1JFQ09WRVJZOworCUNvbnRyb2xGaWxlX25ldy5iYWNrdXBS ZWNvdmVyeVJlcXVpcmVkID0gdHJ1ZTsKKwlDb250cm9sRmlsZV9uZXcuYmFja3VwRnJvbVN0 YW5kYnkgPSB0cnVlOworCUNvbnRyb2xGaWxlX25ldy5iYWNrdXBFbmRSZXF1aXJlZCA9IGZh bHNlOworCUNvbnRyb2xGaWxlX25ldy5iYWNrdXBDaGVja1BvaW50ID0gY2hrcHRyZWM7CisJ Q29udHJvbEZpbGVfbmV3LmJhY2t1cFN0YXJ0UG9pbnQgPSBjaGtwdHJlZG87CisJQ29udHJv bEZpbGVfbmV3LmJhY2t1cFN0YXJ0UG9pbnRUTEkgPSBjaGtwdHRsaTsKIAlpZiAoIWRyeV9y dW4pCiAJCXVwZGF0ZV9jb250cm9sZmlsZShkYXRhZGlyX3RhcmdldCwgJkNvbnRyb2xGaWxl X25ldywgZG9fc3luYyk7CiB9CkBAIC03MjksNyArNzMxLDEwIEBAIHBlcmZvcm1fcmV3aW5k KGZpbGVtYXBfdCAqZmlsZW1hcCwgcmV3aW5kX3NvdXJjZSAqc291cmNlLAogc3RhdGljIHZv aWQKIHNhbml0eUNoZWNrcyh2b2lkKQogewotCS8qIFRPRE8gQ2hlY2sgdGhhdCB0aGVyZSdz IG5vIGJhY2t1cF9sYWJlbCBpbiBlaXRoZXIgY2x1c3RlciAqLworCS8qCisJICogVE9ETyBD aGVjayB0aGF0IG5laXRoZXIgY2x1c3RlciBoYXMgYmFja3VwUmVjb3ZlcnlSZXF1ZXN0ZWQg c2V0IGluCisJICogcGdfY29udHJvbC4KKwkgKi8KIAogCS8qIENoZWNrIHN5c3RlbV9pZGVu dGlmaWVyIG1hdGNoICovCiAJaWYgKENvbnRyb2xGaWxlX3RhcmdldC5zeXN0ZW1faWRlbnRp ZmllciAhPSBDb250cm9sRmlsZV9zb3VyY2Uuc3lzdGVtX2lkZW50aWZpZXIpCkBAIC05NTEs NTEgKzk1Niw2IEBAIGZpbmRDb21tb25BbmNlc3RvclRpbWVsaW5lKFRpbWVMaW5lSGlzdG9y eUVudHJ5ICphX2hpc3RvcnksIGludCBhX25lbnRyaWVzLAogCX0KIH0KIAotCi0vKgotICog Q3JlYXRlIGEgYmFja3VwX2xhYmVsIGZpbGUgdGhhdCBmb3JjZXMgcmVjb3ZlcnkgdG8gYmVn aW4gYXQgdGhlIGxhc3QgY29tbW9uCi0gKiBjaGVja3BvaW50LgotICovCi1zdGF0aWMgdm9p ZAotY3JlYXRlQmFja3VwTGFiZWwoWExvZ1JlY1B0ciBzdGFydHBvaW50LCBUaW1lTGluZUlE IHN0YXJ0dGxpLCBYTG9nUmVjUHRyIGNoZWNrcG9pbnRsb2MpCi17Ci0JWExvZ1NlZ05vCXN0 YXJ0c2Vnbm87Ci0JdGltZV90CQlzdGFtcF90aW1lOwotCWNoYXIJCXN0cmZidWZbMTI4XTsK LQljaGFyCQl4bG9nZmlsZW5hbWVbTUFYRk5BTUVMRU5dOwotCXN0cnVjdCB0bSAgKnRtcDsK LQljaGFyCQlidWZbMTAwMF07Ci0JaW50CQkJbGVuOwotCi0JWExCeXRlVG9TZWcoc3RhcnRw b2ludCwgc3RhcnRzZWdubywgV2FsU2VnU3opOwotCVhMb2dGaWxlTmFtZSh4bG9nZmlsZW5h bWUsIHN0YXJ0dGxpLCBzdGFydHNlZ25vLCBXYWxTZWdTeik7Ci0KLQkvKgotCSAqIENvbnN0 cnVjdCBiYWNrdXAgbGFiZWwgZmlsZQotCSAqLwotCXN0YW1wX3RpbWUgPSB0aW1lKE5VTEwp OwotCXRtcCA9IGxvY2FsdGltZSgmc3RhbXBfdGltZSk7Ci0Jc3RyZnRpbWUoc3RyZmJ1Ziwg c2l6ZW9mKHN0cmZidWYpLCAiJVktJW0tJWQgJUg6JU06JVMgJVoiLCB0bXApOwotCi0JbGVu ID0gc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwKLQkJCQkgICAiU1RBUlQgV0FMIExPQ0FU SU9OOiAlWC8lWCAoZmlsZSAlcylcbiIKLQkJCQkgICAiQ0hFQ0tQT0lOVCBMT0NBVElPTjog JVgvJVhcbiIKLQkJCQkgICAiQkFDS1VQIE1FVEhPRDogcGdfcmV3aW5kXG4iCi0JCQkJICAg IkJBQ0tVUCBGUk9NOiBzdGFuZGJ5XG4iCi0JCQkJICAgIlNUQVJUIFRJTUU6ICVzXG4iLAot CS8qIG9taXQgTEFCRUw6IGxpbmUgKi8KLQkJCQkgICBMU05fRk9STUFUX0FSR1Moc3RhcnRw b2ludCksIHhsb2dmaWxlbmFtZSwKLQkJCQkgICBMU05fRk9STUFUX0FSR1MoY2hlY2twb2lu dGxvYyksCi0JCQkJICAgc3RyZmJ1Zik7Ci0JaWYgKGxlbiA+PSBzaXplb2YoYnVmKSkKLQkJ cGdfZmF0YWwoImJhY2t1cCBsYWJlbCBidWZmZXIgdG9vIHNtYWxsIik7CS8qIHNob3VsZG4n dCBoYXBwZW4gKi8KLQotCS8qIFRPRE86IG1vdmUgb2xkIGZpbGUgb3V0IG9mIHRoZSB3YXks IGlmIGFueS4gKi8KLQlvcGVuX3RhcmdldF9maWxlKCJiYWNrdXBfbGFiZWwiLCB0cnVlKTsg LyogQkFDS1VQX0xBQkVMX0ZJTEUgKi8KLQl3cml0ZV90YXJnZXRfcmFuZ2UoYnVmLCAwLCBs ZW4pOwotCWNsb3NlX3RhcmdldF9maWxlKCk7Ci19Ci0KIC8qCiAgKiBDaGVjayBDUkMgb2Yg Y29udHJvbCBmaWxlCiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9n LmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oCmluZGV4IGExNDEyNmQxNjRmLi4zYWFj NjgzOWE3MCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cuaAorKysgYi9z cmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oCkBAIC0yOTMsOCArMjkzLDYgQEAgZXh0ZXJuIFNl c3Npb25CYWNrdXBTdGF0ZSBnZXRfYmFja3VwX3N0YXR1cyh2b2lkKTsKIC8qIEZpbGUgcGF0 aCBuYW1lcyAoYWxsIHJlbGF0aXZlIHRvICRQR0RBVEEpICovCiAjZGVmaW5lIFJFQ09WRVJZ X1NJR05BTF9GSUxFCSJyZWNvdmVyeS5zaWduYWwiCiAjZGVmaW5lIFNUQU5EQllfU0lHTkFM X0ZJTEUJCSJzdGFuZGJ5LnNpZ25hbCIKLSNkZWZpbmUgQkFDS1VQX0xBQkVMX0ZJTEUJCSJi YWNrdXBfbGFiZWwiCi0jZGVmaW5lIEJBQ0tVUF9MQUJFTF9PTEQJCSJiYWNrdXBfbGFiZWwu b2xkIgogCiAjZGVmaW5lIFRBQkxFU1BBQ0VfTUFQCQkJInRhYmxlc3BhY2VfbWFwIgogI2Rl ZmluZSBUQUJMRVNQQUNFX01BUF9PTEQJCSJ0YWJsZXNwYWNlX21hcC5vbGQiCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ2JhY2t1cC5oIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL3hsb2diYWNrdXAuaAppbmRleCAxNjExMzU4MTM3Yi4uYjc1NDExYjdjM2QgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nYmFja3VwLmgKKysrIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3hsb2diYWNrdXAuaApAQCAtMTUsNiArMTUsNyBAQAogI2RlZmluZSBYTE9H X0JBQ0tVUF9ICiAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2RlZnMuaCIKKyNpbmNsdWRlICJj YXRhbG9nL3BnX2NvbnRyb2wuaCIKICNpbmNsdWRlICJwZ3RpbWUuaCIKIAogLyogU3RydWN0 dXJlIHRvIGhvbGQgYmFja3VwIHN0YXRlLiAqLwpAQCAtMzMsOSArMzQsMTggQEAgdHlwZWRl ZiBzdHJ1Y3QgQmFja3VwU3RhdGUKIAlYTG9nUmVjUHRyCXN0b3Bwb2ludDsJCS8qIGJhY2t1 cCBzdG9wIFdBTCBsb2NhdGlvbiAqLwogCVRpbWVMaW5lSUQJc3RvcHRsaTsJCS8qIGJhY2t1 cCBzdG9wIFRMSSAqLwogCXBnX3RpbWVfdAlzdG9wdGltZTsJCS8qIGJhY2t1cCBzdG9wIHRp bWUgKi8KKworCS8qCisJICogQWZ0ZXIgcGdfYmFja3VwX3N0b3AoKSByZXR1cm5zIHRoaXMg ZmllbGQgd2lsbCBjb250YWluIGEgY29weSBvZgorCSAqIHBnX2NvbnRyb2wgdGhhdCBzaG91 bGQgYmUgc3RvcmVkIHdpdGggdGhlIGJhY2t1cC4gRmllbGRzIGhhdmUgYmVlbgorCSAqIHVw ZGF0ZWQgZm9yIHJlY292ZXJ5IGFuZCB0aGUgQ1JDIGhhcyBiZWVuIHJlY2FsY3VsYXRlZC4g VGhlIGJ1ZmZlcgorCSAqIGlzIHBhZGRlZCB0byBQR19DT05UUk9MX01BWF9TQUZFX1NJWkUg c28gdGhhdCBwZ19jb250cm9sIGlzIGFsd2F5cworCSAqIGEgY29uc2lzdGVudCBzaXplIGJ1 dCBzbWFsbGVyIChhbmQgaG9wZWZ1bGx5IGVhc2llciB0byBoYW5kbGUpIHRoYW4KKwkgKiBQ R19DT05UUk9MX0ZJTEVfU0laRS4gQnl0ZXMgYWZ0ZXIgc2l6ZW9mKENvbnRyb2xGaWxlRGF0 YSkgYXJlIHplcm9lZC4KKwkgKi8KKwl1aW50OF90IGNvbnRyb2xGaWxlW1BHX0NPTlRST0xf TUFYX1NBRkVfU0laRV07CiB9IEJhY2t1cFN0YXRlOwogCi1leHRlcm4gY2hhciAqYnVpbGRf YmFja3VwX2NvbnRlbnQoQmFja3VwU3RhdGUgKnN0YXRlLAotCQkJCQkJCQkgIGJvb2wgaXNo aXN0b3J5ZmlsZSk7CitleHRlcm4gY2hhciAqYnVpbGRfYmFja3VwX2NvbnRlbnQoQmFja3Vw U3RhdGUgKnN0YXRlKTsKIAogI2VuZGlmCQkJCQkJCS8qIFhMT0dfQkFDS1VQX0ggKi8KZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9ncmVjb3ZlcnkuaCBiL3NyYy9pbmNs dWRlL2FjY2Vzcy94bG9ncmVjb3ZlcnkuaAppbmRleCBlZTBiYzc0Mjc4Mi4uOTgxMjY2Zjcz NDAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9ncmVjb3ZlcnkuaAorKysg Yi9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3JlY292ZXJ5LmgKQEAgLTgwLDggKzgwLDcgQEAg ZXh0ZXJuIFNpemUgWExvZ1JlY292ZXJ5U2htZW1TaXplKHZvaWQpOwogZXh0ZXJuIHZvaWQg WExvZ1JlY292ZXJ5U2htZW1Jbml0KHZvaWQpOwogCiBleHRlcm4gdm9pZCBJbml0V2FsUmVj b3ZlcnkoQ29udHJvbEZpbGVEYXRhICpDb250cm9sRmlsZSwKLQkJCQkJCQlib29sICp3YXNT aHV0ZG93bl9wdHIsIGJvb2wgKmhhdmVCYWNrdXBMYWJlbF9wdHIsCi0JCQkJCQkJYm9vbCAq aGF2ZVRibHNwY01hcF9wdHIpOworCQkJCQkJCWJvb2wgKndhc1NodXRkb3duX3B0ciwgYm9v bCAqaGF2ZVRibHNwY01hcF9wdHIpOwogZXh0ZXJuIHZvaWQgUGVyZm9ybVdhbFJlY292ZXJ5 KHZvaWQpOwogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb250 cm9sLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnRyb2wuaAppbmRleCAyYWU3MmUz YjI2Ni4uNjRiYWIwN2UwNTYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf Y29udHJvbC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29udHJvbC5oCkBAIC0x NDYsNiArMTQ2LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29udHJvbEZpbGVEYXRhCiAJICogdG8g ZGlzaywgd2UgbXVzdG4ndCBzdGFydCB1cCB1bnRpbCB3ZSByZWFjaCBYIGFnYWluLiBaZXJv IHdoZW4gbm90CiAJICogZG9pbmcgYXJjaGl2ZSByZWNvdmVyeS4KIAkgKgorCSAqIGJhY2t1 cENoZWNrUG9pbnQgaXMgdGhlIGJhY2t1cCBzdGFydCBjaGVja3BvaW50IGFuZCBpcyBzZXQg dG8gemVybyBhZnRlcgorCSAqIHJlY292ZXJ5IGlzIGluaXRpYWxpemVkLgorCSAqCiAJICog YmFja3VwU3RhcnRQb2ludCBpcyB0aGUgcmVkbyBwb2ludGVyIG9mIHRoZSBiYWNrdXAgc3Rh cnQgY2hlY2twb2ludCwgaWYKIAkgKiB3ZSBhcmUgcmVjb3ZlcmluZyBmcm9tIGFuIG9ubGlu ZSBiYWNrdXAgYW5kIGhhdmVuJ3QgcmVhY2hlZCB0aGUgZW5kIG9mCiAJICogYmFja3VwIHll dC4gSXQgaXMgcmVzZXQgdG8gemVybyB3aGVuIHRoZSBlbmQgb2YgYmFja3VwIGlzIHJlYWNo ZWQsIGFuZApAQCAtMTYwLDE0ICsxNjMsMjUgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29udHJvbEZp bGVEYXRhCiAJICogcGdfY29udHJvbCB3aGljaCB3YXMgYmFja2VkIHVwIGxhc3QuIEl0IGlz IHJlc2V0IHRvIHplcm8gd2hlbiB0aGUgZW5kCiAJICogb2YgYmFja3VwIGlzIHJlYWNoZWQs IGFuZCB3ZSBtdXN0bid0IHN0YXJ0IHVwIGJlZm9yZSB0aGF0LgogCSAqCisJICogYmFja3Vw UmVjb3ZlcnlSZXF1aXJlZCBpbmRpY2F0ZXMgdGhhdCB0aGUgcGdfY29udHJvbCBmaWxlIHdh cyBwcm92aWRlZAorCSAqIGJ5IGEgYmFja3VwIG9yIHBnX3Jld2luZCBhbmQgcmVjb3Zlcnkg c2V0dGluZ3MgbmVlZCB0byBiZSBjb3BpZWQuIEl0IHdpbGwKKwkgKiBiZSBzZXQgdG8gZmFs c2Ugd2hlbiB0aGUgc2V0dGluZ3MgaGF2ZSBiZWVuIGNvcGllZC4KKwkgKgorCSAqIGJhY2t1 cEZyb21TdGFuZGJ5IGluZGljYXRlcyB0aGF0IHRoZSBiYWNrdXAgd2FzIHRha2VuIG9uIGEg c3RhbmRieS4gSXQgaXMKKwkgKiByZXF1aXJlIHRvIGluaXRpYWxpemUgcmVjb3ZlcnkgYW5k IHNldCB0byBmYWxzZSBhZnRlcndhcmRzLgorCSAqCiAJICogSWYgYmFja3VwRW5kUmVxdWly ZWQgaXMgdHJ1ZSwgd2Uga25vdyBmb3Igc3VyZSB0aGF0IHdlJ3JlIHJlc3RvcmluZwogCSAq IGZyb20gYSBiYWNrdXAsIGFuZCBtdXN0IHNlZSBhIGJhY2t1cC1lbmQgcmVjb3JkIGJlZm9y ZSB3ZSBjYW4gc2FmZWx5CiAJICogc3RhcnQgdXAuCiAJICovCiAJWExvZ1JlY1B0cgltaW5S ZWNvdmVyeVBvaW50OwogCVRpbWVMaW5lSUQJbWluUmVjb3ZlcnlQb2ludFRMSTsKKwlYTG9n UmVjUHRyCWJhY2t1cENoZWNrUG9pbnQ7CiAJWExvZ1JlY1B0cgliYWNrdXBTdGFydFBvaW50 OworCVRpbWVMaW5lSUQJYmFja3VwU3RhcnRQb2ludFRMSTsKIAlYTG9nUmVjUHRyCWJhY2t1 cEVuZFBvaW50OworCWJvb2wgCQliYWNrdXBSZWNvdmVyeVJlcXVpcmVkOworCWJvb2wgCQli YWNrdXBGcm9tU3RhbmRieTsKIAlib29sCQliYWNrdXBFbmRSZXF1aXJlZDsKIAogCS8qCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCAwOTFmN2UzNDNjMy4uZmYwOTVlOTM1MDUg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtNjQxMywxMyArNjQxMywxNyBAQAog ICBwcm9zcmMgPT4gJ3BnX3Rlcm1pbmF0ZV9iYWNrZW5kJyB9LAogeyBvaWQgPT4gJzIxNzIn LCBkZXNjciA9PiAncHJlcGFyZSBmb3IgdGFraW5nIGFuIG9ubGluZSBiYWNrdXAnLAogICBw cm9uYW1lID0+ICdwZ19iYWNrdXBfc3RhcnQnLCBwcm92b2xhdGlsZSA9PiAndicsIHByb3Bh cmFsbGVsID0+ICdyJywKLSAgcHJvcmV0dHlwZSA9PiAncGdfbHNuJywgcHJvYXJndHlwZXMg PT4gJ3RleHQgYm9vbCcsCisgIHByb3JldHR5cGUgPT4gJ3JlY29yZCcsIHByb2FyZ3R5cGVz ID0+ICd0ZXh0IGJvb2wnLAorICBwcm9hbGxhcmd0eXBlcyA9PiAne3RleHQsYm9vbCxwZ19s c24saW50OCx0aW1lc3RhbXB0en0nLAorICBwcm9hcmdtb2RlcyA9PiAne2ksaSxvLG8sb30n LAorICBwcm9hcmduYW1lcyA9PiAne2xhYmVsLGZhc3QsbHNuLHRpbWVsaW5lX2lkLHN0YXJ0 fScsCiAgIHByb3NyYyA9PiAncGdfYmFja3VwX3N0YXJ0JyB9LAogeyBvaWQgPT4gJzI3Mzkn LCBkZXNjciA9PiAnZmluaXNoIHRha2luZyBhbiBvbmxpbmUgYmFja3VwJywKICAgcHJvbmFt ZSA9PiAncGdfYmFja3VwX3N0b3AnLCBwcm92b2xhdGlsZSA9PiAndicsIHByb3BhcmFsbGVs ID0+ICdyJywKICAgcHJvcmV0dHlwZSA9PiAncmVjb3JkJywgcHJvYXJndHlwZXMgPT4gJ2Jv b2wnLAotICBwcm9hbGxhcmd0eXBlcyA9PiAne2Jvb2wscGdfbHNuLHRleHQsdGV4dH0nLCBw cm9hcmdtb2RlcyA9PiAne2ksbyxvLG99JywKLSAgcHJvYXJnbmFtZXMgPT4gJ3t3YWl0X2Zv cl9hcmNoaXZlLGxzbixsYWJlbGZpbGUsc3BjbWFwZmlsZX0nLAorICBwcm9hbGxhcmd0eXBl cyA9PiAne2Jvb2wsYnl0ZWEsdGV4dCxwZ19sc24saW50OCx0aW1lc3RhbXB0en0nLAorICBw cm9hcmdtb2RlcyA9PiAne2ksbyxvLG8sbyxvfScsCisgIHByb2FyZ25hbWVzID0+ICd7d2Fp dF9mb3JfYXJjaGl2ZSxwZ19jb250cm9sX2ZpbGUsdGFibGVzcGFjZV9tYXBfZmlsZSxsc24s dGltZWxpbmVfaWQsc3RvcH0nLAogICBwcm9zcmMgPT4gJ3BnX2JhY2t1cF9zdG9wJyB9LAog eyBvaWQgPT4gJzM0MzYnLCBkZXNjciA9PiAncHJvbW90ZSBzdGFuZGJ5IHNlcnZlcicsCiAg IHByb25hbWUgPT4gJ3BnX3Byb21vdGUnLCBwcm92b2xhdGlsZSA9PiAndicsIHByb3JldHR5 cGUgPT4gJ2Jvb2wnLAo= --------------o8G1z9XEnaisb0uuygZ0FBJh--