From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Dmitry Antipov Newsgroups: gmane.emacs.devel Subject: Re: The rest of xVARs Date: Fri, 10 Aug 2012 09:19:53 +0400 Message-ID: <502499F9.9030204@yandex.ru> References: <50214432.5040906@yandex.ru> <50235543.3000501@yandex.ru> <5023F621.1020107@yandex.ru> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------060908050606070207030602" X-Trace: dough.gmane.org 1344575869 21084 80.91.229.3 (10 Aug 2012 05:17:49 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Fri, 10 Aug 2012 05:17:49 +0000 (UTC) Cc: Emacs development discussions To: Stefan Monnier Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Fri Aug 10 07:17:48 2012 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1SzhbX-0004Nd-1K for ged-emacs-devel@m.gmane.org; Fri, 10 Aug 2012 07:17:47 +0200 Original-Received: from localhost ([::1]:49734 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SzhbW-0007h0-4Y for ged-emacs-devel@m.gmane.org; Fri, 10 Aug 2012 01:17:46 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:60591) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SzhbN-0007gt-E2 for emacs-devel@gnu.org; Fri, 10 Aug 2012 01:17:43 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SzhbI-0005me-6i for emacs-devel@gnu.org; Fri, 10 Aug 2012 01:17:37 -0400 Original-Received: from forward4h.mail.yandex.net ([84.201.186.22]:51726) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SzhbH-0005mY-0o for emacs-devel@gnu.org; Fri, 10 Aug 2012 01:17:32 -0400 Original-Received: from smtp2h.mail.yandex.net (smtp2h.mail.yandex.net [84.201.187.145]) by forward4h.mail.yandex.net (Yandex) with ESMTP id DBE7D1B20B78; Fri, 10 Aug 2012 09:17:28 +0400 (MSK) Original-Received: from smtp2h.mail.yandex.net (localhost [127.0.0.1]) by smtp2h.mail.yandex.net (Yandex) with ESMTP id A273D17000E8; Fri, 10 Aug 2012 09:17:28 +0400 (MSK) Original-Received: from 232.gprs.mts.ru (232.gprs.mts.ru [213.87.129.232]) by smtp2h.mail.yandex.net (nwsmtp/Yandex) with ESMTP id HPXiMw6I-HPX8cgp6; Fri, 10 Aug 2012 09:17:26 +0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1344575848; bh=gvB+Igxz34498szzvS+N9kzEDsj63VEn8IGRP7rB9nA=; h=Message-ID:Date:From:User-Agent:MIME-Version:To:CC:Subject: References:In-Reply-To:Content-Type; b=WHCzjQZaSckIjcp7CFUfOUz7fKnfMZeFHsCwFivzDToQ/EdP0G7BtCud+RzVltDnN JNUnvPjHU+0Dw+jbVsGsFjqARW0pfCwUFYDnxsDQ/1TWt1Wg85+GVvvsBp1gQgEf2I b3vtrqVft8teYqEBPaPE2TC5I06IwqQDHvw3ORE8= User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:14.0) Gecko/20120713 Thunderbird/14.0 In-Reply-To: X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 84.201.186.22 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:152395 Archived-At: This is a multi-part message in MIME format. --------------060908050606070207030602 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 08/09/2012 11:32 PM, Stefan Monnier wrote: >>>> I can't continue without solving (B|K)VARs issue, and X = B->field/ >>>> BSET(B, field, X) is enough for my purposes; >>> You can split the BVAR into a BGET and BSET for now. >> OK, the patch is > 200K uncompressed. > > Here's a simpler solution: split BVAR into BVAR and BSET. I'm sure the > patch will substantially smaller and hence cause much fewer conflicts. OK > Stefan "tired of resolving cosmetic conflicts with your patches" Coccinelle tends to eat spaces and tabs (especially between function name and '(' opens an argument list),so I do quite a lot of manual adjustments to fit our coding style; but sometimes I can miss the poorly formatted entry :-(. Dmitry --------------060908050606070207030602 Content-Type: text/plain; charset=UTF-8; name="bset.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="bset.patch" PT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9idWZmZXIuYycKLS0tIHNyYy9idWZmZXIuYwkyMDEy LTA4LTA4IDE0OjQ3OjExICswMDAwCisrKyBzcmMvYnVmZmVyLmMJMjAxMi0wOC0xMCAwNDo1 MjozOSArMDAwMApAQCAtMzcwLDcgKzM3MCw3IEBACiAKICAgYi0+bmV3bGluZV9jYWNoZSA9 IDA7CiAgIGItPndpZHRoX3J1bl9jYWNoZSA9IDA7Ci0gIEJWQVIgKGIsIHdpZHRoX3RhYmxl KSA9IFFuaWw7CisgIEJTRVQgKGIsIHdpZHRoX3RhYmxlLCBRbmlsKTsKICAgYi0+cHJldmVu dF9yZWRpc3BsYXlfb3B0aW1pemF0aW9uc19wID0gMTsKIAogICAvKiBQdXQgdGhpcyBvbiB0 aGUgY2hhaW4gb2YgYWxsIGJ1ZmZlcnMgaW5jbHVkaW5nIGtpbGxlZCBvbmVzLiAgKi8KQEAg LTM3OSwyMCArMzc5LDIwIEBACiAKICAgLyogQW4gb3JkaW5hcnkgYnVmZmVyIG5vcm1hbGx5 IGRvZXNuJ3QgbmVlZCBtYXJrZXJzCiAgICAgIHRvIGhhbmRsZSBCRUdWIGFuZCBaVi4gICov Ci0gIEJWQVIgKGIsIHB0X21hcmtlcikgPSBRbmlsOwotICBCVkFSIChiLCBiZWd2X21hcmtl cikgPSBRbmlsOwotICBCVkFSIChiLCB6dl9tYXJrZXIpID0gUW5pbDsKKyAgQlNFVCAoYiwg cHRfbWFya2VyLCBRbmlsKTsKKyAgQlNFVCAoYiwgYmVndl9tYXJrZXIsIFFuaWwpOworICBC U0VUIChiLCB6dl9tYXJrZXIsIFFuaWwpOwogCiAgIG5hbWUgPSBGY29weV9zZXF1ZW5jZSAo YnVmZmVyX29yX25hbWUpOwogICBzdHJpbmdfc2V0X2ludGVydmFscyAobmFtZSwgTlVMTCk7 Ci0gIEJWQVIgKGIsIG5hbWUpID0gbmFtZTsKKyAgQlNFVCAoYiwgbmFtZSwgbmFtZSk7CiAK LSAgQlZBUiAoYiwgdW5kb19saXN0KSA9IChTUkVGIChuYW1lLCAwKSAhPSAnICcpID8gUW5p bCA6IFF0OworICBCU0VUIChiLCB1bmRvX2xpc3QsIChTUkVGIChuYW1lLCAwKSAhPSAnICcp ID8gUW5pbCA6IFF0KTsKIAogICByZXNldF9idWZmZXIgKGIpOwogICByZXNldF9idWZmZXJf bG9jYWxfdmFyaWFibGVzIChiLCAxKTsKIAotICBCVkFSIChiLCBtYXJrKSA9IEZtYWtlX21h cmtlciAoKTsKKyAgQlNFVCAoYiwgbWFyaywgRm1ha2VfbWFya2VyICgpKTsKICAgQlVGX01B UktFUlMgKGIpID0gTlVMTDsKIAogICAvKiBQdXQgdGhpcyBpbiB0aGUgYWxpc3Qgb2YgYWxs IGxpdmUgYnVmZmVycy4gICovCkBAIC00ODEsNyArNDgxLDcgQEAKIAogICAvKiBHZXQgKGEg Y29weSBvZikgdGhlIGFsaXN0IG9mIExpc3AtbGV2ZWwgbG9jYWwgdmFyaWFibGVzIG9mIEZS T00KICAgICAgYW5kIGluc3RhbGwgdGhhdCBpbiBUTy4gICovCi0gIEJWQVIgKHRvLCBsb2Nh bF92YXJfYWxpc3QpID0gYnVmZmVyX2xpc3BfbG9jYWxfdmFyaWFibGVzIChmcm9tLCAxKTsK KyAgQlNFVCAodG8sIGxvY2FsX3Zhcl9hbGlzdCwgYnVmZmVyX2xpc3BfbG9jYWxfdmFyaWFi bGVzIChmcm9tLCAxKSk7CiB9CiAKIApAQCAtNTg0LDcgKzU4NCw3IEBACiAKICAgYi0+bmV3 bGluZV9jYWNoZSA9IDA7CiAgIGItPndpZHRoX3J1bl9jYWNoZSA9IDA7Ci0gIEJWQVIgKGIs IHdpZHRoX3RhYmxlKSA9IFFuaWw7CisgIEJTRVQgKGIsIHdpZHRoX3RhYmxlLCBRbmlsKTsK IAogICAvKiBQdXQgdGhpcyBvbiB0aGUgY2hhaW4gb2YgYWxsIGJ1ZmZlcnMgaW5jbHVkaW5n IGtpbGxlZCBvbmVzLiAgKi8KICAgYi0+aGVhZGVyLm5leHQuYnVmZmVyID0gYWxsX2J1ZmZl cnM7CkBAIC01OTIsNyArNTkyLDcgQEAKIAogICBuYW1lID0gRmNvcHlfc2VxdWVuY2UgKG5h bWUpOwogICBzdHJpbmdfc2V0X2ludGVydmFscyAobmFtZSwgTlVMTCk7Ci0gIEJWQVIgKGIs IG5hbWUpID0gbmFtZTsKKyAgQlNFVCAoYiwgbmFtZSwgbmFtZSk7CiAKICAgcmVzZXRfYnVm ZmVyIChiKTsKICAgcmVzZXRfYnVmZmVyX2xvY2FsX3ZhcmlhYmxlcyAoYiwgMSk7CkBAIC02 MDEsMTAgKzYwMSwxMCBAQAogICBYU0VUQlVGRkVSIChidWYsIGIpOwogICBWYnVmZmVyX2Fs aXN0ID0gbmNvbmMyIChWYnVmZmVyX2FsaXN0LCBGY29ucyAoRmNvbnMgKG5hbWUsIGJ1Ziks IFFuaWwpKTsKIAotICBCVkFSIChiLCBtYXJrKSA9IEZtYWtlX21hcmtlciAoKTsKKyAgQlNF VCAoYiwgbWFyaywgRm1ha2VfbWFya2VyICgpKTsKIAogICAvKiBUaGUgbXVsdGlieXRlIHN0 YXR1cyBiZWxvbmdzIHRvIHRoZSBiYXNlIGJ1ZmZlci4gICovCi0gIEJWQVIgKGIsIGVuYWJs ZV9tdWx0aWJ5dGVfY2hhcmFjdGVycykgPSBCVkFSIChiLT5iYXNlX2J1ZmZlciwgZW5hYmxl X211bHRpYnl0ZV9jaGFyYWN0ZXJzKTsKKyAgQlNFVCAoYiwgZW5hYmxlX211bHRpYnl0ZV9j aGFyYWN0ZXJzLCBCVkFSIChiLT5iYXNlX2J1ZmZlciwgZW5hYmxlX211bHRpYnl0ZV9jaGFy YWN0ZXJzKSk7CiAKICAgLyogTWFrZSBzdXJlIHRoZSBiYXNlIGJ1ZmZlciBoYXMgbWFya2Vy cyBmb3IgaXRzIG5hcnJvd2luZy4gICovCiAgIGlmIChOSUxQIChCVkFSIChiLT5iYXNlX2J1 ZmZlciwgcHRfbWFya2VyKSkpCkBAIC02MTIsMTQgKzYxMiwxNCBAQAogICAgICAgZWFzc2Vy dCAoTklMUCAoQlZBUiAoYi0+YmFzZV9idWZmZXIsIGJlZ3ZfbWFya2VyKSkpOwogICAgICAg ZWFzc2VydCAoTklMUCAoQlZBUiAoYi0+YmFzZV9idWZmZXIsIHp2X21hcmtlcikpKTsKIAot ICAgICAgQlZBUiAoYi0+YmFzZV9idWZmZXIsIHB0X21hcmtlcikKLQk9IGJ1aWxkX21hcmtl ciAoYi0+YmFzZV9idWZmZXIsIGItPmJhc2VfYnVmZmVyLT5wdCwgYi0+YmFzZV9idWZmZXIt PnB0X2J5dGUpOwotCi0gICAgICBCVkFSIChiLT5iYXNlX2J1ZmZlciwgYmVndl9tYXJrZXIp Ci0JPSBidWlsZF9tYXJrZXIgKGItPmJhc2VfYnVmZmVyLCBiLT5iYXNlX2J1ZmZlci0+YmVn diwgYi0+YmFzZV9idWZmZXItPmJlZ3ZfYnl0ZSk7Ci0KLSAgICAgIEJWQVIgKGItPmJhc2Vf YnVmZmVyLCB6dl9tYXJrZXIpCi0JPSBidWlsZF9tYXJrZXIgKGItPmJhc2VfYnVmZmVyLCBi LT5iYXNlX2J1ZmZlci0+enYsIGItPmJhc2VfYnVmZmVyLT56dl9ieXRlKTsKKyAgICAgIEJT RVQgKGItPmJhc2VfYnVmZmVyLCBwdF9tYXJrZXIsCisJICAgIGJ1aWxkX21hcmtlciAoYi0+ YmFzZV9idWZmZXIsIGItPmJhc2VfYnVmZmVyLT5wdCwgYi0+YmFzZV9idWZmZXItPnB0X2J5 dGUpKTsKKworICAgICAgQlNFVCAoYi0+YmFzZV9idWZmZXIsIGJlZ3ZfbWFya2VyLAorCSAg ICBidWlsZF9tYXJrZXIgKGItPmJhc2VfYnVmZmVyLCBiLT5iYXNlX2J1ZmZlci0+YmVndiwg Yi0+YmFzZV9idWZmZXItPmJlZ3ZfYnl0ZSkpOworCisgICAgICBCU0VUIChiLT5iYXNlX2J1 ZmZlciwgenZfbWFya2VyLAorCSAgICBidWlsZF9tYXJrZXIgKGItPmJhc2VfYnVmZmVyLCBi LT5iYXNlX2J1ZmZlci0+enYsIGItPmJhc2VfYnVmZmVyLT56dl9ieXRlKSk7CiAKICAgICAg IFhNQVJLRVIgKEJWQVIgKGItPmJhc2VfYnVmZmVyLCB6dl9tYXJrZXIpKS0+aW5zZXJ0aW9u X3R5cGUgPSAxOwogICAgIH0KQEAgLTYyNyw5ICs2MjcsOSBAQAogICBpZiAoTklMUCAoY2xv bmUpKQogICAgIHsKICAgICAgIC8qIEdpdmUgdGhlIGluZGlyZWN0IGJ1ZmZlciBtYXJrZXJz IGZvciBpdHMgbmFycm93aW5nLiAgKi8KLSAgICAgIEJWQVIgKGIsIHB0X21hcmtlcikgPSBi dWlsZF9tYXJrZXIgKGIsIGItPnB0LCBiLT5wdF9ieXRlKTsKLSAgICAgIEJWQVIgKGIsIGJl Z3ZfbWFya2VyKSA9IGJ1aWxkX21hcmtlciAoYiwgYi0+YmVndiwgYi0+YmVndl9ieXRlKTsK LSAgICAgIEJWQVIgKGIsIHp2X21hcmtlcikgPSBidWlsZF9tYXJrZXIgKGIsIGItPnp2LCBi LT56dl9ieXRlKTsKKyAgICAgIEJTRVQgKGIsIHB0X21hcmtlciwgYnVpbGRfbWFya2VyIChi LCBiLT5wdCwgYi0+cHRfYnl0ZSkpOworICAgICAgQlNFVCAoYiwgYmVndl9tYXJrZXIsIGJ1 aWxkX21hcmtlciAoYiwgYi0+YmVndiwgYi0+YmVndl9ieXRlKSk7CisgICAgICBCU0VUIChi LCB6dl9tYXJrZXIsIGJ1aWxkX21hcmtlciAoYiwgYi0+enYsIGItPnp2X2J5dGUpKTsKICAg ICAgIFhNQVJLRVIgKEJWQVIgKGIsIHp2X21hcmtlcikpLT5pbnNlcnRpb25fdHlwZSA9IDE7 CiAgICAgfQogICBlbHNlCkBAIC02MzcsMTEgKzYzNywxMSBAQAogICAgICAgc3RydWN0IGJ1 ZmZlciAqb2xkX2IgPSBjdXJyZW50X2J1ZmZlcjsKIAogICAgICAgY2xvbmVfcGVyX2J1ZmZl cl92YWx1ZXMgKGItPmJhc2VfYnVmZmVyLCBiKTsKLSAgICAgIEJWQVIgKGIsIGZpbGVuYW1l KSA9IFFuaWw7Ci0gICAgICBCVkFSIChiLCBmaWxlX3RydWVuYW1lKSA9IFFuaWw7Ci0gICAg ICBCVkFSIChiLCBkaXNwbGF5X2NvdW50KSA9IG1ha2VfbnVtYmVyICgwKTsKLSAgICAgIEJW QVIgKGIsIGJhY2tlZF91cCkgPSBRbmlsOwotICAgICAgQlZBUiAoYiwgYXV0b19zYXZlX2Zp bGVfbmFtZSkgPSBRbmlsOworICAgICAgQlNFVCAoYiwgZmlsZW5hbWUsIFFuaWwpOworICAg ICAgQlNFVCAoYiwgZmlsZV90cnVlbmFtZSwgUW5pbCk7CisgICAgICBCU0VUIChiLCBkaXNw bGF5X2NvdW50LCBtYWtlX251bWJlciAoMCkpOworICAgICAgQlNFVCAoYiwgYmFja2VkX3Vw LCBRbmlsKTsKKyAgICAgIEJTRVQgKGIsIGF1dG9fc2F2ZV9maWxlX25hbWUsIFFuaWwpOwog ICAgICAgc2V0X2J1ZmZlcl9pbnRlcm5hbF8xIChiKTsKICAgICAgIEZzZXQgKGludGVybiAo ImJ1ZmZlci1zYXZlLXdpdGhvdXQtcXVlcnkiKSwgUW5pbCk7CiAgICAgICBGc2V0IChpbnRl cm4gKCJidWZmZXItZmlsZS1udW1iZXIiKSwgUW5pbCk7CkBAIC03MDQsOSArNzA0LDEwIEBA CiB2b2lkCiByZXNldF9idWZmZXIgKHJlZ2lzdGVyIHN0cnVjdCBidWZmZXIgKmIpCiB7Ci0g IEJWQVIgKGIsIGZpbGVuYW1lKSA9IFFuaWw7Ci0gIEJWQVIgKGIsIGZpbGVfdHJ1ZW5hbWUp ID0gUW5pbDsKLSAgQlZBUiAoYiwgZGlyZWN0b3J5KSA9IChjdXJyZW50X2J1ZmZlcikgPyBC VkFSIChjdXJyZW50X2J1ZmZlciwgZGlyZWN0b3J5KSA6IFFuaWw7CisgIEJTRVQgKGIsIGZp bGVuYW1lLCBRbmlsKTsKKyAgQlNFVCAoYiwgZmlsZV90cnVlbmFtZSwgUW5pbCk7CisgIEJT RVQgKGIsIGRpcmVjdG9yeSwKKwkoY3VycmVudF9idWZmZXIpID8gQlZBUiAoY3VycmVudF9i dWZmZXIsIGRpcmVjdG9yeSkgOiBRbmlsKTsKICAgYi0+bW9kdGltZSA9IG1ha2VfZW1hY3Nf dGltZSAoMCwgVU5LTk9XTl9NT0RUSU1FX05TRUNTKTsKICAgYi0+bW9kdGltZV9zaXplID0g LTE7CiAgIFhTRVRGQVNUSU5UIChCVkFSIChiLCBzYXZlX2xlbmd0aCksIDApOwpAQCAtNzE0 LDI0ICs3MTUsMjUgQEAKICAgLyogSXQgaXMgbW9yZSBjb25zZXJ2YXRpdmUgdG8gc3RhcnQg b3V0ICJjaGFuZ2VkIiB0aGFuICJ1bmNoYW5nZWQiLiAgKi8KICAgYi0+Y2xpcF9jaGFuZ2Vk ID0gMDsKICAgYi0+cHJldmVudF9yZWRpc3BsYXlfb3B0aW1pemF0aW9uc19wID0gMTsKLSAg QlZBUiAoYiwgYmFja2VkX3VwKSA9IFFuaWw7CisgIEJTRVQgKGIsIGJhY2tlZF91cCwgUW5p bCk7CiAgIEJVRl9BVVRPU0FWRV9NT0RJRkYgKGIpID0gMDsKICAgYi0+YXV0b19zYXZlX2Zh aWx1cmVfdGltZSA9IDA7Ci0gIEJWQVIgKGIsIGF1dG9fc2F2ZV9maWxlX25hbWUpID0gUW5p bDsKLSAgQlZBUiAoYiwgcmVhZF9vbmx5KSA9IFFuaWw7CisgIEJTRVQgKGIsIGF1dG9fc2F2 ZV9maWxlX25hbWUsIFFuaWwpOworICBCU0VUIChiLCByZWFkX29ubHksIFFuaWwpOwogICBi dWZmZXJfc2V0X292ZXJsYXlzIChiLCBOVUxMLCBPVl9CRUZPUkUpOwogICBidWZmZXJfc2V0 X292ZXJsYXlzIChiLCBOVUxMLCBPVl9BRlRFUik7CiAgIGItPm92ZXJsYXlfY2VudGVyID0g QkVHOwotICBCVkFSIChiLCBtYXJrX2FjdGl2ZSkgPSBRbmlsOwotICBCVkFSIChiLCBwb2lu dF9iZWZvcmVfc2Nyb2xsKSA9IFFuaWw7Ci0gIEJWQVIgKGIsIGZpbGVfZm9ybWF0KSA9IFFu aWw7Ci0gIEJWQVIgKGIsIGF1dG9fc2F2ZV9maWxlX2Zvcm1hdCkgPSBRdDsKLSAgQlZBUiAo YiwgbGFzdF9zZWxlY3RlZF93aW5kb3cpID0gUW5pbDsKLSAgWFNFVElOVCAoQlZBUiAoYiwg ZGlzcGxheV9jb3VudCksIDApOwotICBCVkFSIChiLCBkaXNwbGF5X3RpbWUpID0gUW5pbDsK LSAgQlZBUiAoYiwgZW5hYmxlX211bHRpYnl0ZV9jaGFyYWN0ZXJzKSA9IEJWQVIgKCZidWZm ZXJfZGVmYXVsdHMsIGVuYWJsZV9tdWx0aWJ5dGVfY2hhcmFjdGVycyk7Ci0gIEJWQVIgKGIs IGN1cnNvcl90eXBlKSA9IEJWQVIgKCZidWZmZXJfZGVmYXVsdHMsIGN1cnNvcl90eXBlKTsK LSAgQlZBUiAoYiwgZXh0cmFfbGluZV9zcGFjaW5nKSA9IEJWQVIgKCZidWZmZXJfZGVmYXVs dHMsIGV4dHJhX2xpbmVfc3BhY2luZyk7CisgIEJTRVQgKGIsIG1hcmtfYWN0aXZlLCBRbmls KTsKKyAgQlNFVCAoYiwgcG9pbnRfYmVmb3JlX3Njcm9sbCwgUW5pbCk7CisgIEJTRVQgKGIs IGZpbGVfZm9ybWF0LCBRbmlsKTsKKyAgQlNFVCAoYiwgYXV0b19zYXZlX2ZpbGVfZm9ybWF0 LCBRdCk7CisgIEJTRVQgKGIsIGxhc3Rfc2VsZWN0ZWRfd2luZG93LCBRbmlsKTsKKyAgQlNF VCAoYiwgZGlzcGxheV9jb3VudCwgbWFrZV9udW1iZXIgKDApKTsKKyAgQlNFVCAoYiwgZGlz cGxheV90aW1lLCBRbmlsKTsKKyAgQlNFVCAoYiwgZW5hYmxlX211bHRpYnl0ZV9jaGFyYWN0 ZXJzLAorICAgICAgIEJWQVIgKCZidWZmZXJfZGVmYXVsdHMsIGVuYWJsZV9tdWx0aWJ5dGVf Y2hhcmFjdGVycykpOworICBCU0VUIChiLCBjdXJzb3JfdHlwZSwgQlZBUiAoJmJ1ZmZlcl9k ZWZhdWx0cywgY3Vyc29yX3R5cGUpKTsKKyAgQlNFVCAoYiwgZXh0cmFfbGluZV9zcGFjaW5n LCBCVkFSICgmYnVmZmVyX2RlZmF1bHRzLCBleHRyYV9saW5lX3NwYWNpbmcpKTsKIAogICBi LT5kaXNwbGF5X2Vycm9yX21vZGlmZiA9IDA7CiB9CkBAIC03NTUsMTAgKzc1NywxMCBAQAog ICAgICB0aGluZ3MgdGhhdCBkZXBlbmQgb24gdGhlIG1ham9yIG1vZGUuCiAgICAgIGRlZmF1 bHQtbWFqb3ItbW9kZSBpcyBoYW5kbGVkIGF0IGEgaGlnaGVyIGxldmVsLgogICAgICBXZSBp Z25vcmUgaXQgaGVyZS4gICovCi0gIEJWQVIgKGIsIG1ham9yX21vZGUpID0gUWZ1bmRhbWVu dGFsX21vZGU7Ci0gIEJWQVIgKGIsIGtleW1hcCkgPSBRbmlsOwotICBCVkFSIChiLCBtb2Rl X25hbWUpID0gUVNGdW5kYW1lbnRhbDsKLSAgQlZBUiAoYiwgbWlub3JfbW9kZXMpID0gUW5p bDsKKyAgQlNFVCAoYiwgbWFqb3JfbW9kZSwgUWZ1bmRhbWVudGFsX21vZGUpOworICBCU0VU IChiLCBrZXltYXAsIFFuaWwpOworICBCU0VUIChiLCBtb2RlX25hbWUsIFFTRnVuZGFtZW50 YWwpOworICBCU0VUIChiLCBtaW5vcl9tb2RlcywgUW5pbCk7CiAKICAgLyogSWYgdGhlIHN0 YW5kYXJkIGNhc2UgdGFibGUgaGFzIGJlZW4gYWx0ZXJlZCBhbmQgaW52YWxpZGF0ZWQsCiAg ICAgIGZpeCB1cCBpdHMgaW5zaWRlcyBmaXJzdC4gICovCkBAIC03NjcsMTUgKzc2OSwxNSBA QAogCSAmJiBDSEFSX1RBQkxFX1AgKFhDSEFSX1RBQkxFIChWYXNjaWlfZG93bmNhc2VfdGFi bGUpLT5leHRyYXNbMl0pKSkKICAgICBGc2V0X3N0YW5kYXJkX2Nhc2VfdGFibGUgKFZhc2Np aV9kb3duY2FzZV90YWJsZSk7CiAKLSAgQlZBUiAoYiwgZG93bmNhc2VfdGFibGUpID0gVmFz Y2lpX2Rvd25jYXNlX3RhYmxlOwotICBCVkFSIChiLCB1cGNhc2VfdGFibGUpID0gWENIQVJf VEFCTEUgKFZhc2NpaV9kb3duY2FzZV90YWJsZSktPmV4dHJhc1swXTsKLSAgQlZBUiAoYiwg Y2FzZV9jYW5vbl90YWJsZSkgPSBYQ0hBUl9UQUJMRSAoVmFzY2lpX2Rvd25jYXNlX3RhYmxl KS0+ZXh0cmFzWzFdOwotICBCVkFSIChiLCBjYXNlX2Vxdl90YWJsZSkgPSBYQ0hBUl9UQUJM RSAoVmFzY2lpX2Rvd25jYXNlX3RhYmxlKS0+ZXh0cmFzWzJdOwotICBCVkFSIChiLCBpbnZp c2liaWxpdHlfc3BlYykgPSBRdDsKKyAgQlNFVCAoYiwgZG93bmNhc2VfdGFibGUsIFZhc2Np aV9kb3duY2FzZV90YWJsZSk7CisgIEJTRVQgKGIsIHVwY2FzZV90YWJsZSwgWENIQVJfVEFC TEUgKFZhc2NpaV9kb3duY2FzZV90YWJsZSktPmV4dHJhc1swXSk7CisgIEJTRVQgKGIsIGNh c2VfY2Fub25fdGFibGUsIFhDSEFSX1RBQkxFIChWYXNjaWlfZG93bmNhc2VfdGFibGUpLT5l eHRyYXNbMV0pOworICBCU0VUIChiLCBjYXNlX2Vxdl90YWJsZSwgWENIQVJfVEFCTEUgKFZh c2NpaV9kb3duY2FzZV90YWJsZSktPmV4dHJhc1syXSk7CisgIEJTRVQgKGIsIGludmlzaWJp bGl0eV9zcGVjLCBRdCk7CiAKICAgLyogUmVzZXQgYWxsIChvciBtb3N0KSBwZXItYnVmZmVy IHZhcmlhYmxlcyB0byB0aGVpciBkZWZhdWx0cy4gICovCiAgIGlmIChwZXJtYW5lbnRfdG9v KQotICAgIEJWQVIgKGIsIGxvY2FsX3Zhcl9hbGlzdCkgPSBRbmlsOworICAgIEJTRVQgKGIs IGxvY2FsX3Zhcl9hbGlzdCwgUW5pbCk7CiAgIGVsc2UKICAgICB7CiAgICAgICBMaXNwX09i amVjdCB0bXAsIHByb3AsIGxhc3QgPSBRbmlsOwpAQCAtODA5LDcgKzgxMSw3IEBACiAJICB9 CiAJLyogRGVsZXRlIHRoaXMgbG9jYWwgdmFyaWFibGUuICAqLwogCWVsc2UgaWYgKE5JTFAg KGxhc3QpKQotCSAgQlZBUiAoYiwgbG9jYWxfdmFyX2FsaXN0KSA9IFhDRFIgKHRtcCk7CisJ ICBCU0VUIChiLCBsb2NhbF92YXJfYWxpc3QsIFhDRFIgKHRtcCkpOwogCWVsc2UKIAkgIFhT RVRDRFIgKGxhc3QsIFhDRFIgKHRtcCkpOwogICAgIH0KQEAgLTEyODYsNyArMTI4OCw3IEBA CiAJZXJyb3IgKCJCdWZmZXIgbmFtZSBgJXMnIGlzIGluIHVzZSIsIFNEQVRBIChuZXduYW1l KSk7CiAgICAgfQogCi0gIEJWQVIgKGN1cnJlbnRfYnVmZmVyLCBuYW1lKSA9IG5ld25hbWU7 CisgIEJTRVQgKGN1cnJlbnRfYnVmZmVyLCBuYW1lLCBuZXduYW1lKTsKIAogICAvKiBDYXRj aCByZWRpc3BsYXkncyBhdHRlbnRpb24uICBVbmxlc3Mgd2UgZG8gdGhpcywgdGhlIG1vZGUg bGluZXMgZm9yCiAgICAgIGFueSB3aW5kb3dzIGRpc3BsYXlpbmcgY3VycmVudF9idWZmZXIg d2lsbCBzdGF5IHVuY2hhbmdlZC4gICovCkBAIC0xNDMxLDcgKzE0MzMsNyBAQAogICAgIH0K IAogICBpZiAoRVEgKEJWQVIgKFhCVUZGRVIgKHJlYWxfYnVmZmVyKSwgdW5kb19saXN0KSwg UXQpKQotICAgIEJWQVIgKFhCVUZGRVIgKHJlYWxfYnVmZmVyKSwgdW5kb19saXN0KSA9IFFu aWw7CisgICAgQlNFVCAoWEJVRkZFUiAocmVhbF9idWZmZXIpLCB1bmRvX2xpc3QsIFFuaWwp OwogCiAgIHJldHVybiBRbmlsOwogfQpAQCAtMTcwMyw3ICsxNzA1LDcgQEAKICAgc3dhcF9v dXRfYnVmZmVyX2xvY2FsX3ZhcmlhYmxlcyAoYik7CiAgIHJlc2V0X2J1ZmZlcl9sb2NhbF92 YXJpYWJsZXMgKGIsIDEpOwogCi0gIEJWQVIgKGIsIG5hbWUpID0gUW5pbDsKKyAgQlNFVCAo YiwgbmFtZSwgUW5pbCk7CiAKICAgQkxPQ0tfSU5QVVQ7CiAgIGlmIChiLT5iYXNlX2J1ZmZl cikKQEAgLTE3MjcsOSArMTcyOSw5IEBACiAgICAgICBmcmVlX3JlZ2lvbl9jYWNoZSAoYi0+ d2lkdGhfcnVuX2NhY2hlKTsKICAgICAgIGItPndpZHRoX3J1bl9jYWNoZSA9IDA7CiAgICAg fQotICBCVkFSIChiLCB3aWR0aF90YWJsZSkgPSBRbmlsOworICBCU0VUIChiLCB3aWR0aF90 YWJsZSwgUW5pbCk7CiAgIFVOQkxPQ0tfSU5QVVQ7Ci0gIEJWQVIgKGIsIHVuZG9fbGlzdCkg PSBRbmlsOworICBCU0VUIChiLCB1bmRvX2xpc3QsIFFuaWwpOwogCiAgIC8qIFJ1biBidWZm ZXItbGlzdC11cGRhdGUtaG9vay4gICovCiAgIGlmICghTklMUCAoVnJ1bl9ob29rcykpCkBA IC0xOTEwLDcgKzE5MTIsNyBAQAogICAgICAgLyogUHV0IHRoZSB1bmRvIGxpc3QgYmFjayBp biB0aGUgYmFzZSBidWZmZXIsIHNvIHRoYXQgaXQgYXBwZWFycwogCSB0aGF0IGFuIGluZGly ZWN0IGJ1ZmZlciBzaGFyZXMgdGhlIHVuZG8gbGlzdCBvZiBpdHMgYmFzZS4gICovCiAgICAg ICBpZiAob2xkX2J1Zi0+YmFzZV9idWZmZXIpCi0JQlZBUiAob2xkX2J1Zi0+YmFzZV9idWZm ZXIsIHVuZG9fbGlzdCkgPSBCVkFSIChvbGRfYnVmLCB1bmRvX2xpc3QpOworCUJTRVQgKG9s ZF9idWYtPmJhc2VfYnVmZmVyLCB1bmRvX2xpc3QsIEJWQVIgKG9sZF9idWYsIHVuZG9fbGlz dCkpOwogCiAgICAgICAvKiBJZiB0aGUgb2xkIGN1cnJlbnQgYnVmZmVyIGhhcyBtYXJrZXJz IHRvIHJlY29yZCBQVCwgQkVHViBhbmQgWlYKIAkgd2hlbiBpdCBpcyBub3QgY3VycmVudCwg dXBkYXRlIHRoZW0gbm93LiAgKi8KQEAgLTE5MjAsNyArMTkyMiw3IEBACiAgIC8qIEdldCB0 aGUgdW5kbyBsaXN0IGZyb20gdGhlIGJhc2UgYnVmZmVyLCBzbyB0aGF0IGl0IGFwcGVhcnMK ICAgICAgdGhhdCBhbiBpbmRpcmVjdCBidWZmZXIgc2hhcmVzIHRoZSB1bmRvIGxpc3Qgb2Yg aXRzIGJhc2UuICAqLwogICBpZiAoYi0+YmFzZV9idWZmZXIpCi0gICAgQlZBUiAoYiwgdW5k b19saXN0KSA9IEJWQVIgKGItPmJhc2VfYnVmZmVyLCB1bmRvX2xpc3QpOworICAgIEJTRVQg KGIsIHVuZG9fbGlzdCwgQlZBUiAoYi0+YmFzZV9idWZmZXIsIHVuZG9fbGlzdCkpOwogCiAg IC8qIElmIHRoZSBuZXcgY3VycmVudCBidWZmZXIgaGFzIG1hcmtlcnMgdG8gcmVjb3JkIFBU LCBCRUdWIGFuZCBaVgogICAgICB3aGVuIGl0IGlzIG5vdCBjdXJyZW50LCBmZXRjaCB0aGVt IG5vdy4gICovCkBAIC0yMTE4LDggKzIxMjAsOCBAQAogI2RlZmluZSBzd2FwZmllbGRfKGZp ZWxkLCB0eXBlKSBcCiAgIGRvIHsJCQkJCQkJXAogICAgIHR5cGUgdG1wIyNmaWVsZCA9IEJW QVIgKG90aGVyX2J1ZmZlciwgZmllbGQpOwkJXAotICAgIEJWQVIgKG90aGVyX2J1ZmZlciwg ZmllbGQpID0gQlZBUiAoY3VycmVudF9idWZmZXIsIGZpZWxkKTsJXAotICAgIEJWQVIgKGN1 cnJlbnRfYnVmZmVyLCBmaWVsZCkgPSB0bXAjI2ZpZWxkOwkJCVwKKyAgICBCU0VUIChvdGhl cl9idWZmZXIsIGZpZWxkLCBCVkFSIChjdXJyZW50X2J1ZmZlciwgZmllbGQpKTsJXAorICAg IEJTRVQgKGN1cnJlbnRfYnVmZmVyLCBmaWVsZCwgdG1wIyNmaWVsZCk7CQkJXAogICB9IHdo aWxlICgwKQogCiAgIHN3YXBmaWVsZCAob3duX3RleHQsIHN0cnVjdCBidWZmZXJfdGV4dCk7 CkBAIC0yMTU5LDggKzIxNjEsOCBAQAogICBzd2FwZmllbGRfIChwdF9tYXJrZXIsIExpc3Bf T2JqZWN0KTsKICAgc3dhcGZpZWxkXyAoYmVndl9tYXJrZXIsIExpc3BfT2JqZWN0KTsKICAg c3dhcGZpZWxkXyAoenZfbWFya2VyLCBMaXNwX09iamVjdCk7Ci0gIEJWQVIgKGN1cnJlbnRf YnVmZmVyLCBwb2ludF9iZWZvcmVfc2Nyb2xsKSA9IFFuaWw7Ci0gIEJWQVIgKG90aGVyX2J1 ZmZlciwgcG9pbnRfYmVmb3JlX3Njcm9sbCkgPSBRbmlsOworICBCU0VUIChjdXJyZW50X2J1 ZmZlciwgcG9pbnRfYmVmb3JlX3Njcm9sbCwgUW5pbCk7CisgIEJTRVQgKG90aGVyX2J1ZmZl ciwgcG9pbnRfYmVmb3JlX3Njcm9sbCwgUW5pbCk7CiAKICAgY3VycmVudF9idWZmZXItPnRl eHQtPm1vZGlmZisrOwkgIG90aGVyX2J1ZmZlci0+dGV4dC0+bW9kaWZmKys7CiAgIGN1cnJl bnRfYnVmZmVyLT50ZXh0LT5jaGFyc19tb2RpZmYrKzsJICBvdGhlcl9idWZmZXItPnRleHQt PmNoYXJzX21vZGlmZisrOwpAQCAtMjI0OSw3ICsyMjUxLDcgQEAKIAogICAvKiBEb24ndCBy ZWNvcmQgdGhlc2UgYnVmZmVyIGNoYW5nZXMuICBXZSB3aWxsIHB1dCBhIHNwZWNpYWwgdW5k byBlbnRyeQogICAgICBpbnN0ZWFkLiAgKi8KLSAgQlZBUiAoY3VycmVudF9idWZmZXIsIHVu ZG9fbGlzdCkgPSBRdDsKKyAgQlNFVCAoY3VycmVudF9idWZmZXIsIHVuZG9fbGlzdCwgUXQp OwogCiAgIC8qIElmIHRoZSBjYWNoZWQgcG9zaXRpb24gaXMgZm9yIHRoaXMgYnVmZmVyLCBj bGVhciBpdCBvdXQuICAqLwogICBjbGVhcl9jaGFycG9zX2NhY2hlIChjdXJyZW50X2J1ZmZl cik7CkBAIC0yMjcxLDcgKzIyNzMsNyBAQAogCSB0byBjYWxjdWxhdGUgdGhlIG9sZCBjb3Jy ZXNwb25kZW5jZXMuICAqLwogICAgICAgc2V0X2ludGVydmFsc19tdWx0aWJ5dGUgKDApOwog Ci0gICAgICBCVkFSIChjdXJyZW50X2J1ZmZlciwgZW5hYmxlX211bHRpYnl0ZV9jaGFyYWN0 ZXJzKSA9IFFuaWw7CisgICAgICBCU0VUIChjdXJyZW50X2J1ZmZlciwgZW5hYmxlX211bHRp Ynl0ZV9jaGFyYWN0ZXJzLCBRbmlsKTsKIAogICAgICAgWiA9IFpfQllURTsKICAgICAgIEJF R1YgPSBCRUdWX0JZVEU7CkBAIC0yNDA5LDcgKzI0MTEsNyBAQAogCiAgICAgICAvKiBEbyB0 aGlzIGZpcnN0LCBzbyB0aGF0IGNoYXJzX2luX3RleHQgYXNrcyB0aGUgcmlnaHQgcXVlc3Rp b24uCiAJIHNldF9pbnRlcnZhbHNfbXVsdGlieXRlIG5lZWRzIGl0IHRvby4gICovCi0gICAg ICBCVkFSIChjdXJyZW50X2J1ZmZlciwgZW5hYmxlX211bHRpYnl0ZV9jaGFyYWN0ZXJzKSA9 IFF0OworICAgICAgQlNFVCAoY3VycmVudF9idWZmZXIsIGVuYWJsZV9tdWx0aWJ5dGVfY2hh cmFjdGVycywgUXQpOwogCiAgICAgICBHUFRfQllURSA9IGFkdmFuY2VfdG9fY2hhcl9ib3Vu ZGFyeSAoR1BUX0JZVEUpOwogICAgICAgR1BUID0gY2hhcnNfaW5fdGV4dCAoQkVHX0FERFIs IEdQVF9CWVRFIC0gQkVHX0JZVEUpICsgQkVHOwpAQCAtMjQ2NywxMCArMjQ2OSwxMSBAQAog ICBpZiAoIUVRIChvbGRfdW5kbywgUXQpKQogICAgIHsKICAgICAgIC8qIFJlcHJlc2VudCBh bGwgdGhlIGFib3ZlIGNoYW5nZXMgYnkgYSBzcGVjaWFsIHVuZG8gZW50cnkuICAqLwotICAg ICAgQlZBUiAoY3VycmVudF9idWZmZXIsIHVuZG9fbGlzdCkgPSBGY29ucyAobGlzdDMgKFFh cHBseSwKLQkJCQkJCWludGVybiAoInNldC1idWZmZXItbXVsdGlieXRlIiksCi0JCQkJCQlO SUxQIChmbGFnKSA/IFF0IDogUW5pbCksCi0JCQkJCSBvbGRfdW5kbyk7CisgICAgICBCU0VU IChjdXJyZW50X2J1ZmZlciwgdW5kb19saXN0LAorCSAgICBGY29ucyAobGlzdDMgKFFhcHBs eSwKKwkJCSAgaW50ZXJuICgic2V0LWJ1ZmZlci1tdWx0aWJ5dGUiKSwKKwkJCSAgTklMUCAo ZmxhZykgPyBRdCA6IFFuaWwpLAorCQkgICBvbGRfdW5kbykpOwogICAgIH0KIAogICBVTkdD UFJPOwpAQCAtNDkyOSw1NSArNDkzMiw1NSBAQAogICAvKiBNdXN0IGRvIHRoZXNlIGJlZm9y ZSBtYWtpbmcgdGhlIGZpcnN0IGJ1ZmZlciEgKi8KIAogICAvKiByZWFsIHNldHVwIGlzIGRv bmUgaW4gYmluZGluZ3MuZWwgKi8KLSAgQlZBUiAoJmJ1ZmZlcl9kZWZhdWx0cywgbW9kZV9s aW5lX2Zvcm1hdCkgPSBidWlsZF9wdXJlX2Nfc3RyaW5nICgiJS0iKTsKLSAgQlZBUiAoJmJ1 ZmZlcl9kZWZhdWx0cywgaGVhZGVyX2xpbmVfZm9ybWF0KSA9IFFuaWw7Ci0gIEJWQVIgKCZi dWZmZXJfZGVmYXVsdHMsIGFiYnJldl9tb2RlKSA9IFFuaWw7Ci0gIEJWQVIgKCZidWZmZXJf ZGVmYXVsdHMsIG92ZXJ3cml0ZV9tb2RlKSA9IFFuaWw7Ci0gIEJWQVIgKCZidWZmZXJfZGVm YXVsdHMsIGNhc2VfZm9sZF9zZWFyY2gpID0gUXQ7Ci0gIEJWQVIgKCZidWZmZXJfZGVmYXVs dHMsIGF1dG9fZmlsbF9mdW5jdGlvbikgPSBRbmlsOwotICBCVkFSICgmYnVmZmVyX2RlZmF1 bHRzLCBzZWxlY3RpdmVfZGlzcGxheSkgPSBRbmlsOwotICBCVkFSICgmYnVmZmVyX2RlZmF1 bHRzLCBzZWxlY3RpdmVfZGlzcGxheV9lbGxpcHNlcykgPSBRdDsKLSAgQlZBUiAoJmJ1ZmZl cl9kZWZhdWx0cywgYWJicmV2X3RhYmxlKSA9IFFuaWw7Ci0gIEJWQVIgKCZidWZmZXJfZGVm YXVsdHMsIGRpc3BsYXlfdGFibGUpID0gUW5pbDsKLSAgQlZBUiAoJmJ1ZmZlcl9kZWZhdWx0 cywgdW5kb19saXN0KSA9IFFuaWw7Ci0gIEJWQVIgKCZidWZmZXJfZGVmYXVsdHMsIG1hcmtf YWN0aXZlKSA9IFFuaWw7Ci0gIEJWQVIgKCZidWZmZXJfZGVmYXVsdHMsIGZpbGVfZm9ybWF0 KSA9IFFuaWw7Ci0gIEJWQVIgKCZidWZmZXJfZGVmYXVsdHMsIGF1dG9fc2F2ZV9maWxlX2Zv cm1hdCkgPSBRdDsKKyAgQlNFVCAoJmJ1ZmZlcl9kZWZhdWx0cywgbW9kZV9saW5lX2Zvcm1h dCwgYnVpbGRfcHVyZV9jX3N0cmluZyAoIiUtIikpOworICBCU0VUICgmYnVmZmVyX2RlZmF1 bHRzLCBoZWFkZXJfbGluZV9mb3JtYXQsIFFuaWwpOworICBCU0VUICgmYnVmZmVyX2RlZmF1 bHRzLCBhYmJyZXZfbW9kZSwgUW5pbCk7CisgIEJTRVQgKCZidWZmZXJfZGVmYXVsdHMsIG92 ZXJ3cml0ZV9tb2RlLCBRbmlsKTsKKyAgQlNFVCAoJmJ1ZmZlcl9kZWZhdWx0cywgY2FzZV9m b2xkX3NlYXJjaCwgUXQpOworICBCU0VUICgmYnVmZmVyX2RlZmF1bHRzLCBhdXRvX2ZpbGxf ZnVuY3Rpb24sIFFuaWwpOworICBCU0VUICgmYnVmZmVyX2RlZmF1bHRzLCBzZWxlY3RpdmVf ZGlzcGxheSwgUW5pbCk7CisgIEJTRVQgKCZidWZmZXJfZGVmYXVsdHMsIHNlbGVjdGl2ZV9k aXNwbGF5X2VsbGlwc2VzLCBRdCk7CisgIEJTRVQgKCZidWZmZXJfZGVmYXVsdHMsIGFiYnJl dl90YWJsZSwgUW5pbCk7CisgIEJTRVQgKCZidWZmZXJfZGVmYXVsdHMsIGRpc3BsYXlfdGFi bGUsIFFuaWwpOworICBCU0VUICgmYnVmZmVyX2RlZmF1bHRzLCB1bmRvX2xpc3QsIFFuaWwp OworICBCU0VUICgmYnVmZmVyX2RlZmF1bHRzLCBtYXJrX2FjdGl2ZSwgUW5pbCk7CisgIEJT RVQgKCZidWZmZXJfZGVmYXVsdHMsIGZpbGVfZm9ybWF0LCBRbmlsKTsKKyAgQlNFVCAoJmJ1 ZmZlcl9kZWZhdWx0cywgYXV0b19zYXZlX2ZpbGVfZm9ybWF0LCBRdCk7CiAgIGJ1ZmZlcl9k ZWZhdWx0cy5vdmVybGF5c19iZWZvcmUgPSBOVUxMOwogICBidWZmZXJfZGVmYXVsdHMub3Zl cmxheXNfYWZ0ZXIgPSBOVUxMOwogICBidWZmZXJfZGVmYXVsdHMub3ZlcmxheV9jZW50ZXIg PSBCRUc7CiAKICAgWFNFVEZBU1RJTlQgKEJWQVIgKCZidWZmZXJfZGVmYXVsdHMsIHRhYl93 aWR0aCksIDgpOwotICBCVkFSICgmYnVmZmVyX2RlZmF1bHRzLCB0cnVuY2F0ZV9saW5lcykg PSBRbmlsOwotICBCVkFSICgmYnVmZmVyX2RlZmF1bHRzLCB3b3JkX3dyYXApID0gUW5pbDsK LSAgQlZBUiAoJmJ1ZmZlcl9kZWZhdWx0cywgY3RsX2Fycm93KSA9IFF0OwotICBCVkFSICgm YnVmZmVyX2RlZmF1bHRzLCBiaWRpX2Rpc3BsYXlfcmVvcmRlcmluZykgPSBRdDsKLSAgQlZB UiAoJmJ1ZmZlcl9kZWZhdWx0cywgYmlkaV9wYXJhZ3JhcGhfZGlyZWN0aW9uKSA9IFFuaWw7 Ci0gIEJWQVIgKCZidWZmZXJfZGVmYXVsdHMsIGN1cnNvcl90eXBlKSA9IFF0OwotICBCVkFS ICgmYnVmZmVyX2RlZmF1bHRzLCBleHRyYV9saW5lX3NwYWNpbmcpID0gUW5pbDsKLSAgQlZB UiAoJmJ1ZmZlcl9kZWZhdWx0cywgY3Vyc29yX2luX25vbl9zZWxlY3RlZF93aW5kb3dzKSA9 IFF0OworICBCU0VUICgmYnVmZmVyX2RlZmF1bHRzLCB0cnVuY2F0ZV9saW5lcywgUW5pbCk7 CisgIEJTRVQgKCZidWZmZXJfZGVmYXVsdHMsIHdvcmRfd3JhcCwgUW5pbCk7CisgIEJTRVQg KCZidWZmZXJfZGVmYXVsdHMsIGN0bF9hcnJvdywgUXQpOworICBCU0VUICgmYnVmZmVyX2Rl ZmF1bHRzLCBiaWRpX2Rpc3BsYXlfcmVvcmRlcmluZywgUXQpOworICBCU0VUICgmYnVmZmVy X2RlZmF1bHRzLCBiaWRpX3BhcmFncmFwaF9kaXJlY3Rpb24sIFFuaWwpOworICBCU0VUICgm YnVmZmVyX2RlZmF1bHRzLCBjdXJzb3JfdHlwZSwgUXQpOworICBCU0VUICgmYnVmZmVyX2Rl ZmF1bHRzLCBleHRyYV9saW5lX3NwYWNpbmcsIFFuaWwpOworICBCU0VUICgmYnVmZmVyX2Rl ZmF1bHRzLCBjdXJzb3JfaW5fbm9uX3NlbGVjdGVkX3dpbmRvd3MsIFF0KTsKIAotICBCVkFS ICgmYnVmZmVyX2RlZmF1bHRzLCBlbmFibGVfbXVsdGlieXRlX2NoYXJhY3RlcnMpID0gUXQ7 Ci0gIEJWQVIgKCZidWZmZXJfZGVmYXVsdHMsIGJ1ZmZlcl9maWxlX2NvZGluZ19zeXN0ZW0p ID0gUW5pbDsKKyAgQlNFVCAoJmJ1ZmZlcl9kZWZhdWx0cywgZW5hYmxlX211bHRpYnl0ZV9j aGFyYWN0ZXJzLCBRdCk7CisgIEJTRVQgKCZidWZmZXJfZGVmYXVsdHMsIGJ1ZmZlcl9maWxl X2NvZGluZ19zeXN0ZW0sIFFuaWwpOwogICBYU0VURkFTVElOVCAoQlZBUiAoJmJ1ZmZlcl9k ZWZhdWx0cywgZmlsbF9jb2x1bW4pLCA3MCk7CiAgIFhTRVRGQVNUSU5UIChCVkFSICgmYnVm ZmVyX2RlZmF1bHRzLCBsZWZ0X21hcmdpbiksIDApOwotICBCVkFSICgmYnVmZmVyX2RlZmF1 bHRzLCBjYWNoZV9sb25nX2xpbmVfc2NhbnMpID0gUW5pbDsKLSAgQlZBUiAoJmJ1ZmZlcl9k ZWZhdWx0cywgZmlsZV90cnVlbmFtZSkgPSBRbmlsOworICBCU0VUICgmYnVmZmVyX2RlZmF1 bHRzLCBjYWNoZV9sb25nX2xpbmVfc2NhbnMsIFFuaWwpOworICBCU0VUICgmYnVmZmVyX2Rl ZmF1bHRzLCBmaWxlX3RydWVuYW1lLCBRbmlsKTsKICAgWFNFVEZBU1RJTlQgKEJWQVIgKCZi dWZmZXJfZGVmYXVsdHMsIGRpc3BsYXlfY291bnQpLCAwKTsKICAgWFNFVEZBU1RJTlQgKEJW QVIgKCZidWZmZXJfZGVmYXVsdHMsIGxlZnRfbWFyZ2luX2NvbHMpLCAwKTsKICAgWFNFVEZB U1RJTlQgKEJWQVIgKCZidWZmZXJfZGVmYXVsdHMsIHJpZ2h0X21hcmdpbl9jb2xzKSwgMCk7 Ci0gIEJWQVIgKCZidWZmZXJfZGVmYXVsdHMsIGxlZnRfZnJpbmdlX3dpZHRoKSA9IFFuaWw7 Ci0gIEJWQVIgKCZidWZmZXJfZGVmYXVsdHMsIHJpZ2h0X2ZyaW5nZV93aWR0aCkgPSBRbmls OwotICBCVkFSICgmYnVmZmVyX2RlZmF1bHRzLCBmcmluZ2VzX291dHNpZGVfbWFyZ2lucykg PSBRbmlsOwotICBCVkFSICgmYnVmZmVyX2RlZmF1bHRzLCBzY3JvbGxfYmFyX3dpZHRoKSA9 IFFuaWw7Ci0gIEJWQVIgKCZidWZmZXJfZGVmYXVsdHMsIHZlcnRpY2FsX3Njcm9sbF9iYXJf dHlwZSkgPSBRdDsKLSAgQlZBUiAoJmJ1ZmZlcl9kZWZhdWx0cywgaW5kaWNhdGVfZW1wdHlf bGluZXMpID0gUW5pbDsKLSAgQlZBUiAoJmJ1ZmZlcl9kZWZhdWx0cywgaW5kaWNhdGVfYnVm ZmVyX2JvdW5kYXJpZXMpID0gUW5pbDsKLSAgQlZBUiAoJmJ1ZmZlcl9kZWZhdWx0cywgZnJp bmdlX2luZGljYXRvcl9hbGlzdCkgPSBRbmlsOwotICBCVkFSICgmYnVmZmVyX2RlZmF1bHRz LCBmcmluZ2VfY3Vyc29yX2FsaXN0KSA9IFFuaWw7Ci0gIEJWQVIgKCZidWZmZXJfZGVmYXVs dHMsIHNjcm9sbF91cF9hZ2dyZXNzaXZlbHkpID0gUW5pbDsKLSAgQlZBUiAoJmJ1ZmZlcl9k ZWZhdWx0cywgc2Nyb2xsX2Rvd25fYWdncmVzc2l2ZWx5KSA9IFFuaWw7Ci0gIEJWQVIgKCZi dWZmZXJfZGVmYXVsdHMsIGRpc3BsYXlfdGltZSkgPSBRbmlsOworICBCU0VUICgmYnVmZmVy X2RlZmF1bHRzLCBsZWZ0X2ZyaW5nZV93aWR0aCwgUW5pbCk7CisgIEJTRVQgKCZidWZmZXJf ZGVmYXVsdHMsIHJpZ2h0X2ZyaW5nZV93aWR0aCwgUW5pbCk7CisgIEJTRVQgKCZidWZmZXJf ZGVmYXVsdHMsIGZyaW5nZXNfb3V0c2lkZV9tYXJnaW5zLCBRbmlsKTsKKyAgQlNFVCAoJmJ1 ZmZlcl9kZWZhdWx0cywgc2Nyb2xsX2Jhcl93aWR0aCwgUW5pbCk7CisgIEJTRVQgKCZidWZm ZXJfZGVmYXVsdHMsIHZlcnRpY2FsX3Njcm9sbF9iYXJfdHlwZSwgUXQpOworICBCU0VUICgm YnVmZmVyX2RlZmF1bHRzLCBpbmRpY2F0ZV9lbXB0eV9saW5lcywgUW5pbCk7CisgIEJTRVQg KCZidWZmZXJfZGVmYXVsdHMsIGluZGljYXRlX2J1ZmZlcl9ib3VuZGFyaWVzLCBRbmlsKTsK KyAgQlNFVCAoJmJ1ZmZlcl9kZWZhdWx0cywgZnJpbmdlX2luZGljYXRvcl9hbGlzdCwgUW5p bCk7CisgIEJTRVQgKCZidWZmZXJfZGVmYXVsdHMsIGZyaW5nZV9jdXJzb3JfYWxpc3QsIFFu aWwpOworICBCU0VUICgmYnVmZmVyX2RlZmF1bHRzLCBzY3JvbGxfdXBfYWdncmVzc2l2ZWx5 LCBRbmlsKTsKKyAgQlNFVCAoJmJ1ZmZlcl9kZWZhdWx0cywgc2Nyb2xsX2Rvd25fYWdncmVz c2l2ZWx5LCBRbmlsKTsKKyAgQlNFVCAoJmJ1ZmZlcl9kZWZhdWx0cywgZGlzcGxheV90aW1l LCBRbmlsKTsKIAogICAvKiBBc3NpZ24gdGhlIGxvY2FsLWZsYWdzIHRvIHRoZSBzbG90cyB0 aGF0IGhhdmUgZGVmYXVsdCB2YWx1ZXMuCiAgICAgIFRoZSBsb2NhbCBmbGFnIGlzIGEgYml0 IHRoYXQgaXMgdXNlZCBpbiB0aGUgYnVmZmVyCkBAIC00OTg5LDI0ICs0OTkyLDI0IEBACiAK ICAgLyogMCBtZWFucyBub3QgYSBsaXNwIHZhciwgLTEgbWVhbnMgYWx3YXlzIGxvY2FsLCBl bHNlIG1hc2sgKi8KICAgbWVtc2V0ICgmYnVmZmVyX2xvY2FsX2ZsYWdzLCAwLCBzaXplb2Yg YnVmZmVyX2xvY2FsX2ZsYWdzKTsKLSAgWFNFVElOVCAoQlZBUiAoJmJ1ZmZlcl9sb2NhbF9m bGFncywgZmlsZW5hbWUpLCAtMSk7Ci0gIFhTRVRJTlQgKEJWQVIgKCZidWZmZXJfbG9jYWxf ZmxhZ3MsIGRpcmVjdG9yeSksIC0xKTsKLSAgWFNFVElOVCAoQlZBUiAoJmJ1ZmZlcl9sb2Nh bF9mbGFncywgYmFja2VkX3VwKSwgLTEpOwotICBYU0VUSU5UIChCVkFSICgmYnVmZmVyX2xv Y2FsX2ZsYWdzLCBzYXZlX2xlbmd0aCksIC0xKTsKLSAgWFNFVElOVCAoQlZBUiAoJmJ1ZmZl cl9sb2NhbF9mbGFncywgYXV0b19zYXZlX2ZpbGVfbmFtZSksIC0xKTsKLSAgWFNFVElOVCAo QlZBUiAoJmJ1ZmZlcl9sb2NhbF9mbGFncywgcmVhZF9vbmx5KSwgLTEpOwotICBYU0VUSU5U IChCVkFSICgmYnVmZmVyX2xvY2FsX2ZsYWdzLCBtYWpvcl9tb2RlKSwgLTEpOwotICBYU0VU SU5UIChCVkFSICgmYnVmZmVyX2xvY2FsX2ZsYWdzLCBtb2RlX25hbWUpLCAtMSk7Ci0gIFhT RVRJTlQgKEJWQVIgKCZidWZmZXJfbG9jYWxfZmxhZ3MsIHVuZG9fbGlzdCksIC0xKTsKLSAg WFNFVElOVCAoQlZBUiAoJmJ1ZmZlcl9sb2NhbF9mbGFncywgbWFya19hY3RpdmUpLCAtMSk7 Ci0gIFhTRVRJTlQgKEJWQVIgKCZidWZmZXJfbG9jYWxfZmxhZ3MsIHBvaW50X2JlZm9yZV9z Y3JvbGwpLCAtMSk7Ci0gIFhTRVRJTlQgKEJWQVIgKCZidWZmZXJfbG9jYWxfZmxhZ3MsIGZp bGVfdHJ1ZW5hbWUpLCAtMSk7Ci0gIFhTRVRJTlQgKEJWQVIgKCZidWZmZXJfbG9jYWxfZmxh Z3MsIGludmlzaWJpbGl0eV9zcGVjKSwgLTEpOwotICBYU0VUSU5UIChCVkFSICgmYnVmZmVy X2xvY2FsX2ZsYWdzLCBmaWxlX2Zvcm1hdCksIC0xKTsKLSAgWFNFVElOVCAoQlZBUiAoJmJ1 ZmZlcl9sb2NhbF9mbGFncywgYXV0b19zYXZlX2ZpbGVfZm9ybWF0KSwgLTEpOwotICBYU0VU SU5UIChCVkFSICgmYnVmZmVyX2xvY2FsX2ZsYWdzLCBkaXNwbGF5X2NvdW50KSwgLTEpOwot ICBYU0VUSU5UIChCVkFSICgmYnVmZmVyX2xvY2FsX2ZsYWdzLCBkaXNwbGF5X3RpbWUpLCAt MSk7Ci0gIFhTRVRJTlQgKEJWQVIgKCZidWZmZXJfbG9jYWxfZmxhZ3MsIGVuYWJsZV9tdWx0 aWJ5dGVfY2hhcmFjdGVycyksIC0xKTsKKyAgQlNFVCAoJmJ1ZmZlcl9sb2NhbF9mbGFncywg ZmlsZW5hbWUsIG1ha2VfbnVtYmVyICgtMSkpOworICBCU0VUICgmYnVmZmVyX2xvY2FsX2Zs YWdzLCBkaXJlY3RvcnksIG1ha2VfbnVtYmVyICgtMSkpOworICBCU0VUICgmYnVmZmVyX2xv Y2FsX2ZsYWdzLCBiYWNrZWRfdXAsIG1ha2VfbnVtYmVyICgtMSkpOworICBCU0VUICgmYnVm ZmVyX2xvY2FsX2ZsYWdzLCBzYXZlX2xlbmd0aCwgbWFrZV9udW1iZXIgKC0xKSk7CisgIEJT RVQgKCZidWZmZXJfbG9jYWxfZmxhZ3MsIGF1dG9fc2F2ZV9maWxlX25hbWUsIG1ha2VfbnVt YmVyICgtMSkpOworICBCU0VUICgmYnVmZmVyX2xvY2FsX2ZsYWdzLCByZWFkX29ubHksIG1h a2VfbnVtYmVyICgtMSkpOworICBCU0VUICgmYnVmZmVyX2xvY2FsX2ZsYWdzLCBtYWpvcl9t b2RlLCBtYWtlX251bWJlciAoLTEpKTsKKyAgQlNFVCAoJmJ1ZmZlcl9sb2NhbF9mbGFncywg bW9kZV9uYW1lLCBtYWtlX251bWJlciAoLTEpKTsKKyAgQlNFVCAoJmJ1ZmZlcl9sb2NhbF9m bGFncywgdW5kb19saXN0LCBtYWtlX251bWJlciAoLTEpKTsKKyAgQlNFVCAoJmJ1ZmZlcl9s b2NhbF9mbGFncywgbWFya19hY3RpdmUsIG1ha2VfbnVtYmVyICgtMSkpOworICBCU0VUICgm YnVmZmVyX2xvY2FsX2ZsYWdzLCBwb2ludF9iZWZvcmVfc2Nyb2xsLCBtYWtlX251bWJlciAo LTEpKTsKKyAgQlNFVCAoJmJ1ZmZlcl9sb2NhbF9mbGFncywgZmlsZV90cnVlbmFtZSwgbWFr ZV9udW1iZXIgKC0xKSk7CisgIEJTRVQgKCZidWZmZXJfbG9jYWxfZmxhZ3MsIGludmlzaWJp bGl0eV9zcGVjLCBtYWtlX251bWJlciAoLTEpKTsKKyAgQlNFVCAoJmJ1ZmZlcl9sb2NhbF9m bGFncywgZmlsZV9mb3JtYXQsIG1ha2VfbnVtYmVyICgtMSkpOworICBCU0VUICgmYnVmZmVy X2xvY2FsX2ZsYWdzLCBhdXRvX3NhdmVfZmlsZV9mb3JtYXQsIG1ha2VfbnVtYmVyICgtMSkp OworICBCU0VUICgmYnVmZmVyX2xvY2FsX2ZsYWdzLCBkaXNwbGF5X2NvdW50LCBtYWtlX251 bWJlciAoLTEpKTsKKyAgQlNFVCAoJmJ1ZmZlcl9sb2NhbF9mbGFncywgZGlzcGxheV90aW1l LCBtYWtlX251bWJlciAoLTEpKTsKKyAgQlNFVCAoJmJ1ZmZlcl9sb2NhbF9mbGFncywgZW5h YmxlX211bHRpYnl0ZV9jaGFyYWN0ZXJzLCBtYWtlX251bWJlciAoLTEpKTsKIAogICBpZHgg PSAxOwogICBYU0VURkFTVElOVCAoQlZBUiAoJmJ1ZmZlcl9sb2NhbF9mbGFncywgbW9kZV9s aW5lX2Zvcm1hdCksIGlkeCk7ICsraWR4OwpAQCAtNTA2Miw3ICs1MDY1LDcgQEAKICAgUVNG dW5kYW1lbnRhbCA9IGJ1aWxkX3B1cmVfY19zdHJpbmcgKCJGdW5kYW1lbnRhbCIpOwogCiAg IFFmdW5kYW1lbnRhbF9tb2RlID0gaW50ZXJuX2Nfc3RyaW5nICgiZnVuZGFtZW50YWwtbW9k ZSIpOwotICBCVkFSICgmYnVmZmVyX2RlZmF1bHRzLCBtYWpvcl9tb2RlKSA9IFFmdW5kYW1l bnRhbF9tb2RlOworICBCU0VUICgmYnVmZmVyX2RlZmF1bHRzLCBtYWpvcl9tb2RlLCBRZnVu ZGFtZW50YWxfbW9kZSk7CiAKICAgUW1vZGVfY2xhc3MgPSBpbnRlcm5fY19zdHJpbmcgKCJt b2RlLWNsYXNzIik7CiAKQEAgLTUxMjUsMTMgKzUxMjgsMTMgQEAKICAgICAgIGxlbisrOwog ICAgIH0KIAotICBCVkFSIChjdXJyZW50X2J1ZmZlciwgZGlyZWN0b3J5KSA9IG1ha2VfdW5p Ynl0ZV9zdHJpbmcgKHB3ZCwgbGVuKTsKKyAgQlNFVCAoY3VycmVudF9idWZmZXIsIGRpcmVj dG9yeSwgbWFrZV91bmlieXRlX3N0cmluZyAocHdkLCBsZW4pKTsKICAgaWYgKCEgTklMUCAo QlZBUiAoJmJ1ZmZlcl9kZWZhdWx0cywgZW5hYmxlX211bHRpYnl0ZV9jaGFyYWN0ZXJzKSkp CiAgICAgLyogQXQgdGhpcyBtb21lbnQsIHdlIHN0aWxsIGRvbid0IGtub3cgaG93IHRvIGRl Y29kZSB0aGUKICAgICAgICBkaXJlY3RvcnkgbmFtZS4gIFNvLCB3ZSBrZWVwIHRoZSBieXRl cyBpbiBtdWx0aWJ5dGUgZm9ybSBzbwogICAgICAgIHRoYXQgRU5DT0RFX0ZJTEUgY29ycmVj dGx5IGdldHMgdGhlIG9yaWdpbmFsIGJ5dGVzLiAgKi8KLSAgICBCVkFSIChjdXJyZW50X2J1 ZmZlciwgZGlyZWN0b3J5KQotICAgICAgPSBzdHJpbmdfdG9fbXVsdGlieXRlIChCVkFSIChj dXJyZW50X2J1ZmZlciwgZGlyZWN0b3J5KSk7CisgICAgQlNFVCAoY3VycmVudF9idWZmZXIs IGRpcmVjdG9yeSwKKyAgICAgICAgIHN0cmluZ190b19tdWx0aWJ5dGUgKEJWQVIgKGN1cnJl bnRfYnVmZmVyLCBkaXJlY3RvcnkpKSk7CiAKICAgLyogQWRkIC86IHRvIHRoZSBmcm9udCBv ZiB0aGUgbmFtZQogICAgICBpZiBpdCB3b3VsZCBvdGhlcndpc2UgYmUgdHJlYXRlZCBhcyBt YWdpYy4gICovCkBAIC01MTQyLDExICs1MTQ1LDExIEBACiAJIEhvd2V2ZXIsIGl0IGlzIG5v dCBuZWNlc3NhcnkgdG8gdHVybiAvIGludG8gLzovLgogCSBTbyBhdm9pZCBkb2luZyB0aGF0 LiAgKi8KICAgICAgICYmIHN0cmNtcCAoIi8iLCBTU0RBVEEgKEJWQVIgKGN1cnJlbnRfYnVm ZmVyLCBkaXJlY3RvcnkpKSkpCi0gICAgQlZBUiAoY3VycmVudF9idWZmZXIsIGRpcmVjdG9y eSkKLSAgICAgID0gY29uY2F0MiAoYnVpbGRfc3RyaW5nICgiLzoiKSwgQlZBUiAoY3VycmVu dF9idWZmZXIsIGRpcmVjdG9yeSkpOworICAgIEJTRVQgKGN1cnJlbnRfYnVmZmVyLCBkaXJl Y3RvcnksCisgICAgICAgICBjb25jYXQyIChidWlsZF9zdHJpbmcgKCIvOiIpLCBCVkFSIChj dXJyZW50X2J1ZmZlciwgZGlyZWN0b3J5KSkpOwogCiAgIHRlbXAgPSBnZXRfbWluaWJ1ZmZl ciAoMCk7Ci0gIEJWQVIgKFhCVUZGRVIgKHRlbXApLCBkaXJlY3RvcnkpID0gQlZBUiAoY3Vy cmVudF9idWZmZXIsIGRpcmVjdG9yeSk7CisgIEJTRVQgKFhCVUZGRVIgKHRlbXApLCBkaXJl Y3RvcnksIEJWQVIgKGN1cnJlbnRfYnVmZmVyLCBkaXJlY3RvcnkpKTsKIAogICBmcmVlIChw d2QpOwogfQoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9idWZmZXIuaCcKLS0tIHNyYy9idWZm ZXIuaAkyMDEyLTA4LTA4IDE0OjQ3OjExICswMDAwCisrKyBzcmMvYnVmZmVyLmgJMjAxMi0w OC0xMCAwNDo1MjozOSArMDAwMApAQCAtNDc3LDYgKzQ3Nyw3IEBACiAvKiBNb3N0IGNvZGUg c2hvdWxkIHVzZSB0aGlzIG1hY3JvIHRvIGFjY2VzcyBMaXNwIGZpZWxkcyBpbiBzdHJ1Y3Qg YnVmZmVyLiAgKi8KIAogI2RlZmluZSBCVkFSKGJ1ZiwgZmllbGQpICgoYnVmKS0+SU5URVJO QUxfRklFTEQgKGZpZWxkKSkKKyNkZWZpbmUgQlNFVChidWYsIGZpZWxkLCB2YWx1ZSkgKChi dWYpLT5JTlRFUk5BTF9GSUVMRCAoZmllbGQpID0gKHZhbHVlKSkKIAogLyogVGhpcyBpcyB0 aGUgc3RydWN0dXJlIHRoYXQgdGhlIGJ1ZmZlciBMaXNwIG9iamVjdCBwb2ludHMgdG8uICAq LwogCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2Nhc2V0YWIuYycKLS0tIHNyYy9jYXNldGFi LmMJMjAxMi0wNi0xNiAxMjoyNDoxNSArMDAwMAorKysgc3JjL2Nhc2V0YWIuYwkyMDEyLTA4 LTEwIDA0OjUyOjM5ICswMDAwCkBAIC0xNTgsMTAgKzE1OCwxMCBAQAogICAgIH0KICAgZWxz ZQogICAgIHsKLSAgICAgIEJWQVIgKGN1cnJlbnRfYnVmZmVyLCBkb3duY2FzZV90YWJsZSkg PSB0YWJsZTsKLSAgICAgIEJWQVIgKGN1cnJlbnRfYnVmZmVyLCB1cGNhc2VfdGFibGUpID0g dXA7Ci0gICAgICBCVkFSIChjdXJyZW50X2J1ZmZlciwgY2FzZV9jYW5vbl90YWJsZSkgPSBj YW5vbjsKLSAgICAgIEJWQVIgKGN1cnJlbnRfYnVmZmVyLCBjYXNlX2Vxdl90YWJsZSkgPSBl cXY7CisgICAgICBCU0VUIChjdXJyZW50X2J1ZmZlciwgZG93bmNhc2VfdGFibGUsIHRhYmxl KTsKKyAgICAgIEJTRVQgKGN1cnJlbnRfYnVmZmVyLCB1cGNhc2VfdGFibGUsIHVwKTsKKyAg ICAgIEJTRVQgKGN1cnJlbnRfYnVmZmVyLCBjYXNlX2Nhbm9uX3RhYmxlLCBjYW5vbik7Cisg ICAgICBCU0VUIChjdXJyZW50X2J1ZmZlciwgY2FzZV9lcXZfdGFibGUsIGVxdik7CiAgICAg fQogCiAgIHJldHVybiB0YWJsZTsKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvY21kcy5jJwot LS0gc3JjL2NtZHMuYwkyMDEyLTA4LTA3IDEzOjM3OjIxICswMDAwCisrKyBzcmMvY21kcy5j CTIwMTItMDgtMTAgMDQ6NTI6MzkgKzAwMDAKQEAgLTMwMSw3ICszMDEsNyBAQAogCSBhZGRl ZCBiZSBleHBsaWNpdCBjYWxscyB0byB1bmRvLWJvdW5kYXJ5LiAgKi8KICAgICAgICYmIEVR IChCVkFSIChjdXJyZW50X2J1ZmZlciwgdW5kb19saXN0KSwgbGFzdF91bmRvX2JvdW5kYXJ5 KSkKICAgICAvKiBSZW1vdmUgdGhlIHVuZG9fYm91bmRhcnkgdGhhdCB3YXMganVzdCBwdXNo ZWQuICAqLwotICAgIEJWQVIgKGN1cnJlbnRfYnVmZmVyLCB1bmRvX2xpc3QpID0gWENEUiAo QlZBUiAoY3VycmVudF9idWZmZXIsIHVuZG9fbGlzdCkpOworICAgIEJTRVQgKGN1cnJlbnRf YnVmZmVyLCB1bmRvX2xpc3QsIFhDRFIgKEJWQVIgKGN1cnJlbnRfYnVmZmVyLCB1bmRvX2xp c3QpKSk7CiAKICAgLyogQmFyZiBpZiB0aGUga2V5IHRoYXQgaW52b2tlZCB0aGlzIHdhcyBu b3QgYSBjaGFyYWN0ZXIuICAqLwogICBpZiAoIUNIQVJBQ1RFUlAgKGxhc3RfY29tbWFuZF9l dmVudCkpCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2NvZGluZy5jJwotLS0gc3JjL2NvZGlu Zy5jCTIwMTItMDgtMDkgMDU6MTQ6MjMgKzAwMDAKKysrIHNyYy9jb2RpbmcuYwkyMDEyLTA4 LTEwIDA0OjUyOjM5ICswMDAwCkBAIC03MTAzLDcgKzcxMDMsNyBAQAogICAgICAgaWYgKEdQ VCAhPSBQVCkKIAltb3ZlX2dhcF9ib3RoIChQVCwgUFRfQllURSk7CiAgICAgICB1bmRvX2xp c3QgPSBCVkFSIChjdXJyZW50X2J1ZmZlciwgdW5kb19saXN0KTsKLSAgICAgIEJWQVIgKGN1 cnJlbnRfYnVmZmVyLCB1bmRvX2xpc3QpID0gUXQ7CisgICAgICBCU0VUIChjdXJyZW50X2J1 ZmZlciwgdW5kb19saXN0LCBRdCk7CiAgICAgfQogCiAgIGNvZGluZy0+Y29uc3VtZWQgPSBj b2RpbmctPmNvbnN1bWVkX2NoYXIgPSAwOwpAQCAtNzIwMCw3ICs3MjAwLDcgQEAKICAgICBk ZWNvZGVfZW9sIChjb2RpbmcpOwogICBpZiAoQlVGRkVSUCAoY29kaW5nLT5kc3Rfb2JqZWN0 KSkKICAgICB7Ci0gICAgICBCVkFSIChjdXJyZW50X2J1ZmZlciwgdW5kb19saXN0KSA9IHVu ZG9fbGlzdDsKKyAgICAgIEJTRVQgKGN1cnJlbnRfYnVmZmVyLCB1bmRvX2xpc3QsIHVuZG9f bGlzdCk7CiAgICAgICByZWNvcmRfaW5zZXJ0IChjb2RpbmctPmRzdF9wb3MsIGNvZGluZy0+ cHJvZHVjZWRfY2hhcik7CiAgICAgfQogICByZXR1cm4gY29kaW5nLT5yZXN1bHQ7CkBAIC03 NTY4LDggKzc1NjgsOCBAQAogICAgICBkb2Vzbid0IGNvbXBpbGUgbmV3IHJlZ2V4cHMuICAq LwogICBGc2V0IChGbWFrZV9sb2NhbF92YXJpYWJsZSAoUWluaGliaXRfbW9kaWZpY2F0aW9u X2hvb2tzKSwgUXQpOwogICBGZXJhc2VfYnVmZmVyICgpOwotICBCVkFSIChjdXJyZW50X2J1 ZmZlciwgdW5kb19saXN0KSA9IFF0OwotICBCVkFSIChjdXJyZW50X2J1ZmZlciwgZW5hYmxl X211bHRpYnl0ZV9jaGFyYWN0ZXJzKSA9IG11bHRpYnl0ZSA/IFF0IDogUW5pbDsKKyAgQlNF VCAoY3VycmVudF9idWZmZXIsIHVuZG9fbGlzdCwgUXQpOworICBCU0VUIChjdXJyZW50X2J1 ZmZlciwgZW5hYmxlX211bHRpYnl0ZV9jaGFyYWN0ZXJzLCBtdWx0aWJ5dGUgPyBRdCA6IFFu aWwpOwogICBzZXRfYnVmZmVyX2ludGVybmFsIChjdXJyZW50KTsKICAgcmV0dXJuIHdvcmti dWY7CiB9Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2RhdGEuYycKLS0tIHNyYy9kYXRhLmMJ MjAxMi0wOC0wNyAxMzozNzoyMSArMDAwMAorKysgc3JjL2RhdGEuYwkyMDEyLTA4LTEwIDA0 OjUyOjM5ICswMDAwCkBAIC0xMjExLDggKzEyMTEsOCBAQAogCQkgICAgICAgYmluZGluZ3Ms IG5vdCBmb3IgZnJhbWUtbG9jYWwgYmluZGluZ3MuICAqLwogCQkgICAgZWFzc2VydCAoIWJs di0+ZnJhbWVfbG9jYWwpOwogCQkgICAgdGVtMSA9IEZjb25zIChzeW1ib2wsIFhDRFIgKGJs di0+ZGVmY2VsbCkpOwotCQkgICAgQlZBUiAoWEJVRkZFUiAod2hlcmUpLCBsb2NhbF92YXJf YWxpc3QpCi0JCSAgICAgID0gRmNvbnMgKHRlbTEsIEJWQVIgKFhCVUZGRVIgKHdoZXJlKSwg bG9jYWxfdmFyX2FsaXN0KSk7CisJCSAgICBCU0VUIChYQlVGRkVSICh3aGVyZSksIGxvY2Fs X3Zhcl9hbGlzdCwKKwkJCSAgRmNvbnMgKHRlbTEsIEJWQVIgKFhCVUZGRVIgKHdoZXJlKSwg bG9jYWxfdmFyX2FsaXN0KSkpOwogCQkgIH0KIAkgICAgICB9CiAKQEAgLTE2NTEsOSArMTY1 MSw5IEBACiAJIGRlZmF1bHQgdmFsdWUuICAqLwogICAgICAgZmluZF9zeW1ib2xfdmFsdWUg KHZhcmlhYmxlKTsKIAotICAgICAgQlZBUiAoY3VycmVudF9idWZmZXIsIGxvY2FsX3Zhcl9h bGlzdCkKLSAgICAgICAgPSBGY29ucyAoRmNvbnMgKHZhcmlhYmxlLCBYQ0RSIChibHYtPmRl ZmNlbGwpKSwKLQkJIEJWQVIgKGN1cnJlbnRfYnVmZmVyLCBsb2NhbF92YXJfYWxpc3QpKTsK KyAgICAgIEJTRVQgKGN1cnJlbnRfYnVmZmVyLCBsb2NhbF92YXJfYWxpc3QsCisJICAgIEZj b25zIChGY29ucyAodmFyaWFibGUsIFhDRFIgKGJsdi0+ZGVmY2VsbCkpLAorCQkgICBCVkFS IChjdXJyZW50X2J1ZmZlciwgbG9jYWxfdmFyX2FsaXN0KSkpOwogCiAgICAgICAvKiBNYWtl IHN1cmUgc3ltYm9sIGRvZXMgbm90IHRoaW5rIGl0IGlzIHNldCB1cCBmb3IgdGhpcyBidWZm ZXI7CiAJIGZvcmNlIGl0IHRvIGxvb2sgb25jZSBhZ2FpbiBmb3IgdGhpcyBidWZmZXIncyB2 YWx1ZS4gICovCkBAIC0xNzIxLDggKzE3MjEsOCBAQAogICBYU0VUU1lNQk9MICh2YXJpYWJs ZSwgc3ltKTsJLyogUHJvcGFnYXRlIHZhcmlhYmxlIGluZGlyZWN0aW9uLiAgKi8KICAgdGVt ID0gRmFzc3EgKHZhcmlhYmxlLCBCVkFSIChjdXJyZW50X2J1ZmZlciwgbG9jYWxfdmFyX2Fs aXN0KSk7CiAgIGlmICghTklMUCAodGVtKSkKLSAgICBCVkFSIChjdXJyZW50X2J1ZmZlciwg bG9jYWxfdmFyX2FsaXN0KQotICAgICAgPSBGZGVscSAodGVtLCBCVkFSIChjdXJyZW50X2J1 ZmZlciwgbG9jYWxfdmFyX2FsaXN0KSk7CisgICAgQlNFVCAoY3VycmVudF9idWZmZXIsIGxv Y2FsX3Zhcl9hbGlzdCwKKwkgIEZkZWxxICh0ZW0sIEJWQVIgKGN1cnJlbnRfYnVmZmVyLCBs b2NhbF92YXJfYWxpc3QpKSk7CiAKICAgLyogSWYgdGhlIHN5bWJvbCBpcyBzZXQgdXAgd2l0 aCB0aGUgY3VycmVudCBidWZmZXIncyBiaW5kaW5nCiAgICAgIGxvYWRlZCwgcmVjb21wdXRl IGl0cyB2YWx1ZS4gIFdlIGhhdmUgdG8gZG8gaXQgbm93LCBvciBlbHNlCgo9PT0gbW9kaWZp ZWQgZmlsZSAnc3JjL2VkaXRmbnMuYycKLS0tIHNyYy9lZGl0Zm5zLmMJMjAxMi0wOC0wOCAx NDo0NzoxMSArMDAwMAorKysgc3JjL2VkaXRmbnMuYwkyMDEyLTA4LTEwIDA0OjUyOjM5ICsw MDAwCkBAIC04ODIsNyArODgyLDcgQEAKICAgaW5mbyA9IFhDRFIgKGluZm8pOwogICB0ZW0g PSBYQ0FSIChpbmZvKTsKICAgdGVtMSA9IEJWQVIgKGN1cnJlbnRfYnVmZmVyLCBtYXJrX2Fj dGl2ZSk7Ci0gIEJWQVIgKGN1cnJlbnRfYnVmZmVyLCBtYXJrX2FjdGl2ZSkgPSB0ZW07Cisg IEJTRVQgKGN1cnJlbnRfYnVmZmVyLCBtYXJrX2FjdGl2ZSwgdGVtKTsKIAogICAvKiBJZiBt YXJrIGlzIGFjdGl2ZSBub3csIGFuZCBlaXRoZXIgd2FzIG5vdCBhY3RpdmUKICAgICAgb3Ig d2FzIGF0IGEgZGlmZmVyZW50IHBsYWNlLCBydW4gdGhlIGFjdGl2YXRlIGhvb2suICAqLwpA QCAtMjgxNiwxMyArMjgxNiwxMyBAQAogc3RhdGljIExpc3BfT2JqZWN0CiBzdWJzdF9jaGFy X2luX3JlZ2lvbl91bndpbmQgKExpc3BfT2JqZWN0IGFyZykKIHsKLSAgcmV0dXJuIEJWQVIg KGN1cnJlbnRfYnVmZmVyLCB1bmRvX2xpc3QpID0gYXJnOworICByZXR1cm4gQlNFVCAoY3Vy cmVudF9idWZmZXIsIHVuZG9fbGlzdCwgYXJnKTsKIH0KIAogc3RhdGljIExpc3BfT2JqZWN0 CiBzdWJzdF9jaGFyX2luX3JlZ2lvbl91bndpbmRfMSAoTGlzcF9PYmplY3QgYXJnKQogewot ICByZXR1cm4gQlZBUiAoY3VycmVudF9idWZmZXIsIGZpbGVuYW1lKSA9IGFyZzsKKyAgcmV0 dXJuIEJTRVQgKGN1cnJlbnRfYnVmZmVyLCBmaWxlbmFtZSwgYXJnKTsKIH0KIAogREVGVU4g KCJzdWJzdC1jaGFyLWluLXJlZ2lvbiIsIEZzdWJzdF9jaGFyX2luX3JlZ2lvbiwKQEAgLTI4 OTYsMTEgKzI4OTYsMTEgQEAKICAgICB7CiAgICAgICByZWNvcmRfdW53aW5kX3Byb3RlY3Qg KHN1YnN0X2NoYXJfaW5fcmVnaW9uX3Vud2luZCwKIAkJCSAgICAgQlZBUiAoY3VycmVudF9i dWZmZXIsIHVuZG9fbGlzdCkpOwotICAgICAgQlZBUiAoY3VycmVudF9idWZmZXIsIHVuZG9f bGlzdCkgPSBRdDsKKyAgICAgIEJTRVQgKGN1cnJlbnRfYnVmZmVyLCB1bmRvX2xpc3QsIFF0 KTsKICAgICAgIC8qIERvbid0IGRvIGZpbGUtbG9ja2luZy4gICovCiAgICAgICByZWNvcmRf dW53aW5kX3Byb3RlY3QgKHN1YnN0X2NoYXJfaW5fcmVnaW9uX3Vud2luZF8xLAogCQkJICAg ICBCVkFSIChjdXJyZW50X2J1ZmZlciwgZmlsZW5hbWUpKTsKLSAgICAgIEJWQVIgKGN1cnJl bnRfYnVmZmVyLCBmaWxlbmFtZSkgPSBRbmlsOworICAgICAgQlNFVCAoY3VycmVudF9idWZm ZXIsIGZpbGVuYW1lLCBRbmlsKTsKICAgICB9CiAKICAgaWYgKHBvc19ieXRlIDwgR1BUX0JZ VEUpCkBAIC0yOTgyLDcgKzI5ODIsNyBAQAogCQlJTkNfUE9TIChwb3NfYnl0ZV9uZXh0KTsK IAogCSAgICAgIGlmICghIE5JTFAgKG5vdW5kbykpCi0JCUJWQVIgKGN1cnJlbnRfYnVmZmVy LCB1bmRvX2xpc3QpID0gdGVtOworCQlCU0VUIChjdXJyZW50X2J1ZmZlciwgdW5kb19saXN0 LCB0ZW0pOwogCiAJICAgICAgVU5HQ1BSTzsKIAkgICAgfQoKPT09IG1vZGlmaWVkIGZpbGUg J3NyYy9maWxlaW8uYycKLS0tIHNyYy9maWxlaW8uYwkyMDEyLTA4LTA4IDE0OjQ3OjExICsw MDAwCisrKyBzcmMvZmlsZWlvLmMJMjAxMi0wOC0xMCAwNDo1MjozOSArMDAwMApAQCAtMzE0 OSw4ICszMTQ5LDggQEAKICAgVEVNUF9TRVRfUFRfQk9USCAoQkVHLCBCRUdfQllURSk7CiAK ICAgLyogTm93IHdlIGFyZSBzYWZlIHRvIGNoYW5nZSB0aGUgYnVmZmVyJ3MgbXVsdGlieXRl bmVzcyBkaXJlY3RseS4gICovCi0gIEJWQVIgKGN1cnJlbnRfYnVmZmVyLCBlbmFibGVfbXVs dGlieXRlX2NoYXJhY3RlcnMpID0gbXVsdGlieXRlOwotICBCVkFSIChjdXJyZW50X2J1ZmZl ciwgdW5kb19saXN0KSA9IHVuZG9fbGlzdDsKKyAgQlNFVCAoY3VycmVudF9idWZmZXIsIGVu YWJsZV9tdWx0aWJ5dGVfY2hhcmFjdGVycywgbXVsdGlieXRlKTsKKyAgQlNFVCAoY3VycmVu dF9idWZmZXIsIHVuZG9fbGlzdCwgdW5kb19saXN0KTsKIAogICByZXR1cm4gUW5pbDsKIH0K QEAgLTM0ODYsMTYgKzM0ODYsMTYgQEAKIAkJICBidWYgPSBYQlVGRkVSICh3b3JrYnVmKTsK IAogCQkgIGRlbGV0ZV9hbGxfb3ZlcmxheXMgKGJ1Zik7Ci0JCSAgQlZBUiAoYnVmLCBkaXJl Y3RvcnkpID0gQlZBUiAoY3VycmVudF9idWZmZXIsIGRpcmVjdG9yeSk7Ci0JCSAgQlZBUiAo YnVmLCByZWFkX29ubHkpID0gUW5pbDsKLQkJICBCVkFSIChidWYsIGZpbGVuYW1lKSA9IFFu aWw7Ci0JCSAgQlZBUiAoYnVmLCB1bmRvX2xpc3QpID0gUXQ7CisJCSAgQlNFVCAoYnVmLCBk aXJlY3RvcnksIEJWQVIgKGN1cnJlbnRfYnVmZmVyLCBkaXJlY3RvcnkpKTsKKwkJICBCU0VU IChidWYsIHJlYWRfb25seSwgUW5pbCk7CisJCSAgQlNFVCAoYnVmLCBmaWxlbmFtZSwgUW5p bCk7CisJCSAgQlNFVCAoYnVmLCB1bmRvX2xpc3QsIFF0KTsKIAkJICBlYXNzZXJ0IChidWZm ZXJfZ2V0X292ZXJsYXlzIChidWYsIE9WX0JFRk9SRSkgPT0gTlVMTCk7CiAJCSAgZWFzc2Vy dCAoYnVmZmVyX2dldF9vdmVybGF5cyAoYnVmLCBPVl9BRlRFUikgPT0gTlVMTCk7CiAKIAkJ ICBzZXRfYnVmZmVyX2ludGVybmFsIChidWYpOwogCQkgIEZlcmFzZV9idWZmZXIgKCk7Ci0J CSAgQlZBUiAoYnVmLCBlbmFibGVfbXVsdGlieXRlX2NoYXJhY3RlcnMpID0gUW5pbDsKKwkJ ICBCU0VUIChidWYsIGVuYWJsZV9tdWx0aWJ5dGVfY2hhcmFjdGVycywgUW5pbCk7CiAKIAkJ ICBpbnNlcnRfMV9ib3RoICgoY2hhciAqKSByZWFkX2J1ZiwgbnJlYWQsIG5yZWFkLCAwLCAw LCAwKTsKIAkJICBURU1QX1NFVF9QVF9CT1RIIChCRUcsIEJFR19CWVRFKTsKQEAgLTQxMDQs OCArNDEwNCw4IEBACiAJICB1bndpbmRfZGF0YSA9IEZjb25zIChCVkFSIChjdXJyZW50X2J1 ZmZlciwgZW5hYmxlX211bHRpYnl0ZV9jaGFyYWN0ZXJzKSwKIAkJCSAgICAgICBGY29ucyAo QlZBUiAoY3VycmVudF9idWZmZXIsIHVuZG9fbGlzdCksCiAJCQkJICAgICAgRmN1cnJlbnRf YnVmZmVyICgpKSk7Ci0JICBCVkFSIChjdXJyZW50X2J1ZmZlciwgZW5hYmxlX211bHRpYnl0 ZV9jaGFyYWN0ZXJzKSA9IFFuaWw7Ci0JICBCVkFSIChjdXJyZW50X2J1ZmZlciwgdW5kb19s aXN0KSA9IFF0OworCSAgQlNFVCAoY3VycmVudF9idWZmZXIsIGVuYWJsZV9tdWx0aWJ5dGVf Y2hhcmFjdGVycywgUW5pbCk7CisJICBCU0VUIChjdXJyZW50X2J1ZmZlciwgdW5kb19saXN0 LCBRdCk7CiAJICByZWNvcmRfdW53aW5kX3Byb3RlY3QgKGRlY2lkZV9jb2RpbmdfdW53aW5k LCB1bndpbmRfZGF0YSk7CiAKIAkgIGlmIChpbnNlcnRlZCA+IDAgJiYgISBOSUxQIChWc2V0 X2F1dG9fY29kaW5nX2Z1bmN0aW9uKSkKQEAgLTQxNTMsNyArNDE1Myw3IEBACiAJICAmJiBO SUxQIChyZXBsYWNlKSkKIAkvKiBWaXNpdGluZyBhIGZpbGUgd2l0aCB0aGVzZSBjb2Rpbmcg c3lzdGVtIG1ha2VzIHRoZSBidWZmZXIKIAkgICB1bmlieXRlLiAqLwotCUJWQVIgKGN1cnJl bnRfYnVmZmVyLCBlbmFibGVfbXVsdGlieXRlX2NoYXJhY3RlcnMpID0gUW5pbDsKKwlCU0VU IChjdXJyZW50X2J1ZmZlciwgZW5hYmxlX211bHRpYnl0ZV9jaGFyYWN0ZXJzLCBRbmlsKTsK ICAgICB9CiAKICAgY29kaW5nLmRzdF9tdWx0aWJ5dGUgPSAhIE5JTFAgKEJWQVIgKGN1cnJl bnRfYnVmZmVyLCBlbmFibGVfbXVsdGlieXRlX2NoYXJhY3RlcnMpKTsKQEAgLTQxOTYsMTMg KzQxOTYsMTMgQEAKICAgaWYgKCFOSUxQICh2aXNpdCkpCiAgICAgewogICAgICAgaWYgKCFF USAoQlZBUiAoY3VycmVudF9idWZmZXIsIHVuZG9fbGlzdCksIFF0KSAmJiAhbm9jaGFuZ2Up Ci0JQlZBUiAoY3VycmVudF9idWZmZXIsIHVuZG9fbGlzdCkgPSBRbmlsOworCUJTRVQgKGN1 cnJlbnRfYnVmZmVyLCB1bmRvX2xpc3QsIFFuaWwpOwogCiAgICAgICBpZiAoTklMUCAoaGFu ZGxlcikpCiAJewogCSAgY3VycmVudF9idWZmZXItPm1vZHRpbWUgPSBtdGltZTsKIAkgIGN1 cnJlbnRfYnVmZmVyLT5tb2R0aW1lX3NpemUgPSBzdC5zdF9zaXplOwotCSAgQlZBUiAoY3Vy cmVudF9idWZmZXIsIGZpbGVuYW1lKSA9IG9yaWdfZmlsZW5hbWU7CisJICBCU0VUIChjdXJy ZW50X2J1ZmZlciwgZmlsZW5hbWUsIG9yaWdfZmlsZW5hbWUpOwogCX0KIAogICAgICAgU0FW RV9NT0RJRkYgPSBNT0RJRkY7CkBAIC00MjQ3LDcgKzQyNDcsNyBAQAogCiAgICAgICAvKiBT YXZlIG9sZCB1bmRvIGxpc3QgYW5kIGRvbid0IHJlY29yZCB1bmRvIGZvciBkZWNvZGluZy4g ICovCiAgICAgICBvbGRfdW5kbyA9IEJWQVIgKGN1cnJlbnRfYnVmZmVyLCB1bmRvX2xpc3Qp OwotICAgICAgQlZBUiAoY3VycmVudF9idWZmZXIsIHVuZG9fbGlzdCkgPSBRdDsKKyAgICAg IEJTRVQgKGN1cnJlbnRfYnVmZmVyLCB1bmRvX2xpc3QsIFF0KTsKIAogICAgICAgaWYgKE5J TFAgKHJlcGxhY2UpKQogCXsKQEAgLTQzMzksNyArNDMzOSw3IEBACiAKICAgICAgIGlmIChO SUxQICh2aXNpdCkpCiAJewotCSAgQlZBUiAoY3VycmVudF9idWZmZXIsIHVuZG9fbGlzdCkg PSBvbGRfdW5kbzsKKwkgIEJTRVQgKGN1cnJlbnRfYnVmZmVyLCB1bmRvX2xpc3QsIG9sZF91 bmRvKTsKIAkgIGlmIChDT05TUCAob2xkX3VuZG8pICYmIGluc2VydGVkICE9IG9sZF9pbnNl cnRlZCkKIAkgICAgewogCSAgICAgIC8qIEFkanVzdCB0aGUgbGFzdCB1bmRvIHJlY29yZCBm b3IgdGhlIHNpemUgY2hhbmdlIGR1cmluZwpAQCAtNDM1NCw3ICs0MzU0LDcgQEAKICAgICAg IGVsc2UKIAkvKiBJZiB1bmRvX2xpc3Qgd2FzIFF0IGJlZm9yZSwga2VlcCBpdCB0aGF0IHdh eS4KIAkgICBPdGhlcndpc2Ugc3RhcnQgd2l0aCBhbiBlbXB0eSB1bmRvX2xpc3QuICAqLwot CUJWQVIgKGN1cnJlbnRfYnVmZmVyLCB1bmRvX2xpc3QpID0gRVEgKG9sZF91bmRvLCBRdCkg PyBRdCA6IFFuaWw7CisJQlNFVCAoY3VycmVudF9idWZmZXIsIHVuZG9fbGlzdCwgRVEgKG9s ZF91bmRvLCBRdCkgPyBRdCA6IFFuaWwpOwogCiAgICAgICB1bmJpbmRfdG8gKGNvdW50MSwg UW5pbCk7CiAgICAgfQpAQCAtNDU5NCw3ICs0NTk0LDcgQEAKIAl7CiAJICBTQVZFX01PRElG RiA9IE1PRElGRjsKIAkgIFhTRVRGQVNUSU5UIChCVkFSIChjdXJyZW50X2J1ZmZlciwgc2F2 ZV9sZW5ndGgpLCBaIC0gQkVHKTsKLQkgIEJWQVIgKGN1cnJlbnRfYnVmZmVyLCBmaWxlbmFt ZSkgPSB2aXNpdF9maWxlOworCSAgQlNFVCAoY3VycmVudF9idWZmZXIsIGZpbGVuYW1lLCB2 aXNpdF9maWxlKTsKIAl9CiAgICAgICBVTkdDUFJPOwogICAgICAgcmV0dXJuIHZhbDsKQEAg LTQ4MTAsNyArNDgxMCw3IEBACiAgICAgewogICAgICAgU0FWRV9NT0RJRkYgPSBNT0RJRkY7 CiAgICAgICBYU0VURkFTVElOVCAoQlZBUiAoY3VycmVudF9idWZmZXIsIHNhdmVfbGVuZ3Ro KSwgWiAtIEJFRyk7Ci0gICAgICBCVkFSIChjdXJyZW50X2J1ZmZlciwgZmlsZW5hbWUpID0g dmlzaXRfZmlsZTsKKyAgICAgIEJTRVQgKGN1cnJlbnRfYnVmZmVyLCBmaWxlbmFtZSwgdmlz aXRfZmlsZSk7CiAgICAgICB1cGRhdGVfbW9kZV9saW5lcysrOwogICAgIH0KICAgZWxzZSBp ZiAocXVpZXRseSkKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvZnJhbWUuYycKLS0tIHNyYy9m cmFtZS5jCTIwMTItMDgtMDcgMDc6MzM6MTggKzAwMDAKKysrIHNyYy9mcmFtZS5jCTIwMTIt MDgtMTAgMDQ6NTI6MzkgKzAwMDAKQEAgLTE2NzcsNyArMTY3Nyw3IEBACiAgICAgICB3ID0g WFdJTkRPVyAod2luZG93KTsKIAogICAgICAgaWYgKCFOSUxQICh3LT5idWZmZXIpKQotCUJW QVIgKFhCVUZGRVIgKHctPmJ1ZmZlciksIGRpc3BsYXlfdGltZSkgPSBGY3VycmVudF90aW1l ICgpOworCUJTRVQgKFhCVUZGRVIgKHctPmJ1ZmZlciksIGRpc3BsYXlfdGltZSwgRmN1cnJl bnRfdGltZSAoKSk7CiAKICAgICAgIGlmICghTklMUCAody0+dmNoaWxkKSkKIAltYWtlX2Zy YW1lX3Zpc2libGVfMSAody0+dmNoaWxkKTsKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvaW5k ZW50LmMnCi0tLSBzcmMvaW5kZW50LmMJMjAxMi0wOC0wOCAxNDo0NzoxMSArMDAwMAorKysg c3JjL2luZGVudC5jCTIwMTItMDgtMTAgMDQ6NTI6MzkgKzAwMDAKQEAgLTE0MSw3ICsxNDEs NyBAQAogICBzdHJ1Y3QgTGlzcF9WZWN0b3IgKndpZHRodGFiOwogCiAgIGlmICghVkVDVE9S UCAoQlZBUiAoYnVmLCB3aWR0aF90YWJsZSkpKQotICAgIEJWQVIgKGJ1Ziwgd2lkdGhfdGFi bGUpID0gRm1ha2VfdmVjdG9yIChtYWtlX251bWJlciAoMjU2KSwgbWFrZV9udW1iZXIgKDAp KTsKKyAgICBCU0VUIChidWYsIHdpZHRoX3RhYmxlLCBGbWFrZV92ZWN0b3IgKG1ha2VfbnVt YmVyICgyNTYpLCBtYWtlX251bWJlciAoMCkpKTsKICAgd2lkdGh0YWIgPSBYVkVDVE9SIChC VkFSIChidWYsIHdpZHRoX3RhYmxlKSk7CiAgIGlmICh3aWR0aHRhYi0+aGVhZGVyLnNpemUg IT0gMjU2KQogICAgIGFib3J0ICgpOwpAQCAtMTY2LDcgKzE2Niw3IEBACiAgICAgICAgIHsK ICAgICAgICAgICBmcmVlX3JlZ2lvbl9jYWNoZSAoY3VycmVudF9idWZmZXItPndpZHRoX3J1 bl9jYWNoZSk7CiAgICAgICAgICAgY3VycmVudF9idWZmZXItPndpZHRoX3J1bl9jYWNoZSA9 IDA7Ci0gICAgICAgICAgQlZBUiAoY3VycmVudF9idWZmZXIsIHdpZHRoX3RhYmxlKSA9IFFu aWw7CisgICAgICAgICAgQlNFVCAoY3VycmVudF9idWZmZXIsIHdpZHRoX3RhYmxlLCBRbmls KTsKICAgICAgICAgfQogICAgIH0KICAgZWxzZQoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9p bnNkZWwuYycKLS0tIHNyYy9pbnNkZWwuYwkyMDEyLTA4LTA4IDE0OjQ3OjExICswMDAwCisr KyBzcmMvaW5zZGVsLmMJMjAxMi0wOC0xMCAwNDo1MjozOSArMDAwMApAQCAtMTc5Miw3ICsx NzkyLDcgQEAKICAgaWYgKCEgcHJlc2VydmVfY2hhcnNfbW9kaWZmKQogICAgIENIQVJTX01P RElGRiA9IE1PRElGRjsKIAotICBCVkFSIChidWZmZXIsIHBvaW50X2JlZm9yZV9zY3JvbGwp ID0gUW5pbDsKKyAgQlNFVCAoYnVmZmVyLCBwb2ludF9iZWZvcmVfc2Nyb2xsLCBRbmlsKTsK IAogICBpZiAoYnVmZmVyICE9IG9sZF9idWZmZXIpCiAgICAgc2V0X2J1ZmZlcl9pbnRlcm5h bCAob2xkX2J1ZmZlcik7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2ludGVydmFscy5jJwot LS0gc3JjL2ludGVydmFscy5jCTIwMTItMDgtMDggMTQ6NDc6MTEgKzAwMDAKKysrIHNyYy9p bnRlcnZhbHMuYwkyMDEyLTA4LTEwIDA0OjUyOjM5ICswMDAwCkBAIC0xODU3LDcgKzE4NTcs NyBAQAogICBpbnQgaGF2ZV9vdmVybGF5czsKICAgcHRyZGlmZl90IG9yaWdpbmFsX3Bvc2l0 aW9uOwogCi0gIEJWQVIgKGN1cnJlbnRfYnVmZmVyLCBwb2ludF9iZWZvcmVfc2Nyb2xsKSA9 IFFuaWw7CisgIEJTRVQgKGN1cnJlbnRfYnVmZmVyLCBwb2ludF9iZWZvcmVfc2Nyb2xsLCBR bmlsKTsKIAogICBpZiAoY2hhcnBvcyA9PSBQVCkKICAgICByZXR1cm47Cgo9PT0gbW9kaWZp ZWQgZmlsZSAnc3JjL2tleW1hcC5jJwotLS0gc3JjL2tleW1hcC5jCTIwMTItMDgtMDcgMDc6 MzM6MTggKzAwMDAKKysrIHNyYy9rZXltYXAuYwkyMDEyLTA4LTEwIDA0OjUyOjM5ICswMDAw CkBAIC0xODU0LDcgKzE4NTQsNyBAQAogICBpZiAoIU5JTFAgKGtleW1hcCkpCiAgICAga2V5 bWFwID0gZ2V0X2tleW1hcCAoa2V5bWFwLCAxLCAxKTsKIAotICBCVkFSIChjdXJyZW50X2J1 ZmZlciwga2V5bWFwKSA9IGtleW1hcDsKKyAgQlNFVCAoY3VycmVudF9idWZmZXIsIGtleW1h cCwga2V5bWFwKTsKIAogICByZXR1cm4gUW5pbDsKIH0KCj09PSBtb2RpZmllZCBmaWxlICdz cmMvbWluaWJ1Zi5jJwotLS0gc3JjL21pbmlidWYuYwkyMDEyLTA4LTA3IDA3OjMzOjE4ICsw MDAwCisrKyBzcmMvbWluaWJ1Zi5jCTIwMTItMDgtMTAgMDQ6NTI6MzkgKzAwMDAKQEAgLTU2 MiwxMSArNTYyLDExIEBACiAKICAgLyogRGVmZWF0IChzZXRxLWRlZmF1bHQgdHJ1bmNhdGUt bGluZXMgdCksIHNpbmNlIHRydW5jYXRlZCBsaW5lcyBkbwogICAgICBub3Qgd29yayBjb3Jy ZWN0bHkgaW4gbWluaWJ1ZmZlcnMuICAoQnVnIzU3MTUsIGV0YykgICovCi0gIEJWQVIgKGN1 cnJlbnRfYnVmZmVyLCB0cnVuY2F0ZV9saW5lcykgPSBRbmlsOworICBCU0VUIChjdXJyZW50 X2J1ZmZlciwgdHJ1bmNhdGVfbGluZXMsIFFuaWwpOwogCiAgIC8qIElmIGFwcHJvcHJpYXRl LCBjb3B5IGVuYWJsZS1tdWx0aWJ5dGUtY2hhcmFjdGVycyBpbnRvIHRoZSBtaW5pYnVmZmVy LiAgKi8KICAgaWYgKGluaGVyaXRfaW5wdXRfbWV0aG9kKQotICAgIEJWQVIgKGN1cnJlbnRf YnVmZmVyLCBlbmFibGVfbXVsdGlieXRlX2NoYXJhY3RlcnMpID0gZW5hYmxlX211bHRpYnl0 ZTsKKyAgICBCU0VUIChjdXJyZW50X2J1ZmZlciwgZW5hYmxlX211bHRpYnl0ZV9jaGFyYWN0 ZXJzLCBlbmFibGVfbXVsdGlieXRlKTsKIAogICAvKiBUaGUgY3VycmVudCBidWZmZXIncyBk ZWZhdWx0IGRpcmVjdG9yeSBpcyB1c3VhbGx5IHRoZSByaWdodCB0aGluZwogICAgICBmb3Ig b3VyIG1pbmlidWZmZXIgaGVyZS4gIEhvd2V2ZXIsIGlmIHlvdSdyZSB0eXBpbmcgYSBjb21t YW5kIGF0CkBAIC01NzcsNyArNTc3LDcgQEAKICAgICAgeW91IHRoaW5rIG9mIHNvbWV0aGlu ZyBiZXR0ZXIgdG8gZG8/ICBGaW5kIGFub3RoZXIgYnVmZmVyIHdpdGggYQogICAgICBiZXR0 ZXIgZGlyZWN0b3J5LCBhbmQgdXNlIHRoYXQgb25lIGluc3RlYWQuICAqLwogICBpZiAoU1RS SU5HUCAoYW1iaWVudF9kaXIpKQotICAgIEJWQVIgKGN1cnJlbnRfYnVmZmVyLCBkaXJlY3Rv cnkpID0gYW1iaWVudF9kaXI7CisgICAgQlNFVCAoY3VycmVudF9idWZmZXIsIGRpcmVjdG9y eSwgYW1iaWVudF9kaXIpOwogICBlbHNlCiAgICAgewogICAgICAgTGlzcF9PYmplY3QgYnVm X2xpc3Q7CkBAIC01OTEsNyArNTkxLDggQEAKIAkgIG90aGVyX2J1ZiA9IFhDRFIgKFhDQVIg KGJ1Zl9saXN0KSk7CiAJICBpZiAoU1RSSU5HUCAoQlZBUiAoWEJVRkZFUiAob3RoZXJfYnVm KSwgZGlyZWN0b3J5KSkpCiAJICAgIHsKLQkgICAgICBCVkFSIChjdXJyZW50X2J1ZmZlciwg ZGlyZWN0b3J5KSA9IEJWQVIgKFhCVUZGRVIgKG90aGVyX2J1ZiksIGRpcmVjdG9yeSk7CisJ ICAgICAgQlNFVCAoY3VycmVudF9idWZmZXIsIGRpcmVjdG9yeSwKKyAgICAgICAgICAgICAg ICAgICBCVkFSIChYQlVGRkVSIChvdGhlcl9idWYpLCBkaXJlY3RvcnkpKTsKIAkgICAgICBi cmVhazsKIAkgICAgfQogCX0KQEAgLTY2NCw3ICs2NjUsNyBAQAogICAgIH0KIAogICBjbGVh cl9tZXNzYWdlICgxLCAxKTsKLSAgQlZBUiAoY3VycmVudF9idWZmZXIsIGtleW1hcCkgPSBt YXA7CisgIEJTRVQgKGN1cnJlbnRfYnVmZmVyLCBrZXltYXAsIG1hcCk7CiAKICAgLyogVHVy biBvbiBhbiBpbnB1dCBtZXRob2Qgc3RvcmVkIGluIElOUFVUX01FVEhPRCBpZiBhbnkuICAq LwogICBpZiAoU1RSSU5HUCAoaW5wdXRfbWV0aG9kKSAmJiAhTklMUCAoRmZib3VuZHAgKFFh Y3RpdmF0ZV9pbnB1dF9tZXRob2QpKSkKQEAgLTY3Myw3ICs2NzQsNyBAQAogICBGcnVuX2hv b2tzICgxLCAmUW1pbmlidWZmZXJfc2V0dXBfaG9vayk7CiAKICAgLyogRG9uJ3QgYWxsb3cg dGhlIHVzZXIgdG8gdW5kbyBwYXN0IHRoaXMgcG9pbnQuICAqLwotICBCVkFSIChjdXJyZW50 X2J1ZmZlciwgdW5kb19saXN0KSA9IFFuaWw7CisgIEJTRVQgKGN1cnJlbnRfYnVmZmVyLCB1 bmRvX2xpc3QsIFFuaWwpOwogCiAgIHJlY3Vyc2l2ZV9lZGl0XzEgKCk7CiAKCj09PSBtb2Rp ZmllZCBmaWxlICdzcmMvcHJpbnQuYycKLS0tIHNyYy9wcmludC5jCTIwMTItMDgtMDggMTQ6 NDc6MTEgKzAwMDAKKysrIHNyYy9wcmludC5jCTIwMTItMDgtMTAgMDQ6NTI6MzkgKzAwMDAK QEAgLTQ5NCwxNCArNDk0LDE0IEBACiAKICAgRmtpbGxfYWxsX2xvY2FsX3ZhcmlhYmxlcyAo KTsKICAgZGVsZXRlX2FsbF9vdmVybGF5cyAoY3VycmVudF9idWZmZXIpOwotICBCVkFSIChj dXJyZW50X2J1ZmZlciwgZGlyZWN0b3J5KSA9IEJWQVIgKG9sZCwgZGlyZWN0b3J5KTsKLSAg QlZBUiAoY3VycmVudF9idWZmZXIsIHJlYWRfb25seSkgPSBRbmlsOwotICBCVkFSIChjdXJy ZW50X2J1ZmZlciwgZmlsZW5hbWUpID0gUW5pbDsKLSAgQlZBUiAoY3VycmVudF9idWZmZXIs IHVuZG9fbGlzdCkgPSBRdDsKKyAgQlNFVCAoY3VycmVudF9idWZmZXIsIGRpcmVjdG9yeSwg QlZBUiAob2xkLCBkaXJlY3RvcnkpKTsKKyAgQlNFVCAoY3VycmVudF9idWZmZXIsIHJlYWRf b25seSwgUW5pbCk7CisgIEJTRVQgKGN1cnJlbnRfYnVmZmVyLCBmaWxlbmFtZSwgUW5pbCk7 CisgIEJTRVQgKGN1cnJlbnRfYnVmZmVyLCB1bmRvX2xpc3QsIFF0KTsKICAgZWFzc2VydCAo YnVmZmVyX2dldF9vdmVybGF5cyAoTlVMTCwgT1ZfQkVGT1JFKSA9PSBOVUxMKTsKICAgZWFz c2VydCAoYnVmZmVyX2dldF9vdmVybGF5cyAoTlVMTCwgT1ZfQUZURVIpID09IE5VTEwpOwot ICBCVkFSIChjdXJyZW50X2J1ZmZlciwgZW5hYmxlX211bHRpYnl0ZV9jaGFyYWN0ZXJzKQot ICAgID0gQlZBUiAoJmJ1ZmZlcl9kZWZhdWx0cywgZW5hYmxlX211bHRpYnl0ZV9jaGFyYWN0 ZXJzKTsKKyAgQlNFVCAoY3VycmVudF9idWZmZXIsIGVuYWJsZV9tdWx0aWJ5dGVfY2hhcmFj dGVycywKKyAgICAgICBCVkFSICgmYnVmZmVyX2RlZmF1bHRzLCBlbmFibGVfbXVsdGlieXRl X2NoYXJhY3RlcnMpKTsKICAgc3BlY2JpbmQgKFFpbmhpYml0X3JlYWRfb25seSwgUXQpOwog ICBzcGVjYmluZCAoUWluaGliaXRfbW9kaWZpY2F0aW9uX2hvb2tzLCBRdCk7CiAgIEZlcmFz ZV9idWZmZXIgKCk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL3Byb2Nlc3MuYycKLS0tIHNy Yy9wcm9jZXNzLmMJMjAxMi0wOC0wNyAwNzo0MjozNCArMDAwMAorKysgc3JjL3Byb2Nlc3Mu YwkyMDEyLTA4LTEwIDA0OjUyOjM5ICswMDAwCkBAIC01MjQ2LDcgKzUyNDYsNyBAQAogICAg ICAgb2xkX2JlZ3ZfYnl0ZSA9IEJFR1ZfQllURTsKICAgICAgIG9sZF96dl9ieXRlID0gWlZf QllURTsKIAotICAgICAgQlZBUiAoY3VycmVudF9idWZmZXIsIHJlYWRfb25seSkgPSBRbmls OworICAgICAgQlNFVCAoY3VycmVudF9idWZmZXIsIHJlYWRfb25seSwgUW5pbCk7CiAKICAg ICAgIC8qIEluc2VydCBuZXcgb3V0cHV0IGludG8gYnVmZmVyCiAJIGF0IHRoZSBjdXJyZW50 IGVuZC1vZi1vdXRwdXQgbWFya2VyLApAQCAtNTMzNyw3ICs1MzM3LDcgQEAKIAlGbmFycm93 X3RvX3JlZ2lvbiAobWFrZV9udW1iZXIgKG9sZF9iZWd2KSwgbWFrZV9udW1iZXIgKG9sZF96 dikpOwogCiAKLSAgICAgIEJWQVIgKGN1cnJlbnRfYnVmZmVyLCByZWFkX29ubHkpID0gb2xk X3JlYWRfb25seTsKKyAgICAgIEJTRVQgKGN1cnJlbnRfYnVmZmVyLCByZWFkX29ubHksIG9s ZF9yZWFkX29ubHkpOwogICAgICAgU0VUX1BUX0JPVEggKG9wb2ludCwgb3BvaW50X2J5dGUp OwogICAgIH0KICAgLyogSGFuZGxpbmcgdGhlIHByb2Nlc3Mgb3V0cHV0IHNob3VsZCBub3Qg ZGVhY3RpdmF0ZSB0aGUgbWFyay4gICovCkBAIC02NjcxLDEzICs2NjcxLDEzIEBACiAJICAg ICAgYmVmb3JlX2J5dGUgPSBQVF9CWVRFOwogCiAJICAgICAgdGVtID0gQlZBUiAoY3VycmVu dF9idWZmZXIsIHJlYWRfb25seSk7Ci0JICAgICAgQlZBUiAoY3VycmVudF9idWZmZXIsIHJl YWRfb25seSkgPSBRbmlsOworCSAgICAgIEJTRVQgKGN1cnJlbnRfYnVmZmVyLCByZWFkX29u bHksIFFuaWwpOwogCSAgICAgIGluc2VydF9zdHJpbmcgKCJcblByb2Nlc3MgIik7CiAJICAg ICAgeyAvKiBGSVhNRTogdGVtcG9yYXJ5IGtsdWRnZSAqLwogCQlMaXNwX09iamVjdCB0ZW0y ID0gcC0+bmFtZTsgRmluc2VydCAoMSwgJnRlbTIpOyB9CiAJICAgICAgaW5zZXJ0X3N0cmlu ZyAoIiAiKTsKIAkgICAgICBGaW5zZXJ0ICgxLCAmbXNnKTsKLQkgICAgICBCVkFSIChjdXJy ZW50X2J1ZmZlciwgcmVhZF9vbmx5KSA9IHRlbTsKKwkgICAgICBCU0VUIChjdXJyZW50X2J1 ZmZlciwgcmVhZF9vbmx5LCB0ZW0pOwogCSAgICAgIHNldF9tYXJrZXJfYm90aCAocC0+bWFy aywgcC0+YnVmZmVyLCBQVCwgUFRfQllURSk7CiAKIAkgICAgICBpZiAob3BvaW50ID49IGJl Zm9yZSkKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvc3ludGF4LmMnCi0tLSBzcmMvc3ludGF4 LmMJMjAxMi0wOC0wOCAwNjoxMToyOSArMDAwMAorKysgc3JjL3N5bnRheC5jCTIwMTItMDgt MTAgMDQ6NTI6MzkgKzAwMDAKQEAgLTgzNiw3ICs4MzYsNyBAQAogewogICBpbnQgaWR4Owog ICBjaGVja19zeW50YXhfdGFibGUgKHRhYmxlKTsKLSAgQlZBUiAoY3VycmVudF9idWZmZXIs IHN5bnRheF90YWJsZSkgPSB0YWJsZTsKKyAgQlNFVCAoY3VycmVudF9idWZmZXIsIHN5bnRh eF90YWJsZSwgdGFibGUpOwogICAvKiBJbmRpY2F0ZSB0aGF0IHRoaXMgYnVmZmVyIG5vdyBo YXMgYSBzcGVjaWZpZWQgc3ludGF4IHRhYmxlLiAgKi8KICAgaWR4ID0gUEVSX0JVRkZFUl9W QVJfSURYIChzeW50YXhfdGFibGUpOwogICBTRVRfUEVSX0JVRkZFUl9WQUxVRV9QIChjdXJy ZW50X2J1ZmZlciwgaWR4LCAxKTsKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvdW5kby5jJwot LS0gc3JjL3VuZG8uYwkyMDEyLTA3LTEwIDIzOjI0OjM2ICswMDAwCisrKyBzcmMvdW5kby5j CTIwMTItMDgtMTAgMDQ6NTI6MzkgKzAwMDAKQEAgLTEwNCw4ICsxMDQsOSBAQAogICBpZiAo YXRfYm91bmRhcnkKICAgICAgICYmIGN1cnJlbnRfYnVmZmVyID09IGxhc3RfYm91bmRhcnlf YnVmZmVyCiAgICAgICAmJiBsYXN0X2JvdW5kYXJ5X3Bvc2l0aW9uICE9IHB0KQotICAgIEJW QVIgKGN1cnJlbnRfYnVmZmVyLCB1bmRvX2xpc3QpCi0gICAgICA9IEZjb25zIChtYWtlX251 bWJlciAobGFzdF9ib3VuZGFyeV9wb3NpdGlvbiksIEJWQVIgKGN1cnJlbnRfYnVmZmVyLCB1 bmRvX2xpc3QpKTsKKyAgICBCU0VUIChjdXJyZW50X2J1ZmZlciwgdW5kb19saXN0LAorCSAg RmNvbnMgKG1ha2VfbnVtYmVyIChsYXN0X2JvdW5kYXJ5X3Bvc2l0aW9uKSwKKwkJIEJWQVIg KGN1cnJlbnRfYnVmZmVyLCB1bmRvX2xpc3QpKSk7CiB9CiAKIC8qIFJlY29yZCBhbiBpbnNl cnRpb24gdGhhdCBqdXN0IGhhcHBlbmVkIG9yIGlzIGFib3V0IHRvIGhhcHBlbiwKQEAgLTE0 MSw4ICsxNDIsOCBAQAogCiAgIFhTRVRGQVNUSU5UIChsYmVnLCBiZWcpOwogICBYU0VUSU5U IChsZW5kLCBiZWcgKyBsZW5ndGgpOwotICBCVkFSIChjdXJyZW50X2J1ZmZlciwgdW5kb19s aXN0KSA9IEZjb25zIChGY29ucyAobGJlZywgbGVuZCksCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgQlZBUiAoY3VycmVudF9idWZmZXIsIHVuZG9fbGlzdCkpOwor ICBCU0VUIChjdXJyZW50X2J1ZmZlciwgdW5kb19saXN0LAorCUZjb25zIChGY29ucyAobGJl ZywgbGVuZCksIEJWQVIgKGN1cnJlbnRfYnVmZmVyLCB1bmRvX2xpc3QpKSk7CiB9CiAKIC8q IFJlY29yZCB0aGF0IGEgZGVsZXRpb24gaXMgYWJvdXQgdG8gdGFrZSBwbGFjZSwKQEAgLTE2 Nyw4ICsxNjgsOCBAQAogICAgICAgcmVjb3JkX3BvaW50IChiZWcpOwogICAgIH0KIAotICBC VkFSIChjdXJyZW50X2J1ZmZlciwgdW5kb19saXN0KQotICAgID0gRmNvbnMgKEZjb25zIChz dHJpbmcsIHNiZWcpLCBCVkFSIChjdXJyZW50X2J1ZmZlciwgdW5kb19saXN0KSk7CisgIEJT RVQgKGN1cnJlbnRfYnVmZmVyLCB1bmRvX2xpc3QsCisgICAgICAgRmNvbnMgKEZjb25zIChz dHJpbmcsIHNiZWcpLCBCVkFSIChjdXJyZW50X2J1ZmZlciwgdW5kb19saXN0KSkpOwogfQog CiAvKiBSZWNvcmQgdGhlIGZhY3QgdGhhdCBNQVJLRVIgaXMgYWJvdXQgdG8gYmUgYWRqdXN0 ZWQgYnkgQURKVVNUTUVOVC4KQEAgLTE5MCw5ICsxOTEsOSBAQAogICAgIEZ1bmRvX2JvdW5k YXJ5ICgpOwogICBsYXN0X3VuZG9fYnVmZmVyID0gY3VycmVudF9idWZmZXI7CiAKLSAgQlZB UiAoY3VycmVudF9idWZmZXIsIHVuZG9fbGlzdCkKLSAgICA9IEZjb25zIChGY29ucyAobWFy a2VyLCBtYWtlX251bWJlciAoYWRqdXN0bWVudCkpLAotCSAgICAgQlZBUiAoY3VycmVudF9i dWZmZXIsIHVuZG9fbGlzdCkpOworICBCU0VUIChjdXJyZW50X2J1ZmZlciwgdW5kb19saXN0 LAorCUZjb25zIChGY29ucyAobWFya2VyLCBtYWtlX251bWJlciAoYWRqdXN0bWVudCkpLAor CSAgICAgICBCVkFSIChjdXJyZW50X2J1ZmZlciwgdW5kb19saXN0KSkpOwogfQogCiAvKiBS ZWNvcmQgdGhhdCBhIHJlcGxhY2VtZW50IGlzIGFib3V0IHRvIHRha2UgcGxhY2UsCkBAIC0y MjUsOSArMjI2LDkgQEAKICAgaWYgKGJhc2VfYnVmZmVyLT5iYXNlX2J1ZmZlcikKICAgICBi YXNlX2J1ZmZlciA9IGJhc2VfYnVmZmVyLT5iYXNlX2J1ZmZlcjsKIAotICBCVkFSIChjdXJy ZW50X2J1ZmZlciwgdW5kb19saXN0KSA9Ci0gICAgRmNvbnMgKEZjb25zIChRdCwgbWFrZV9s aXNwX3RpbWUgKGJhc2VfYnVmZmVyLT5tb2R0aW1lKSksCi0JICAgQlZBUiAoY3VycmVudF9i dWZmZXIsIHVuZG9fbGlzdCkpOworICBCU0VUIChjdXJyZW50X2J1ZmZlciwgdW5kb19saXN0 LAorCUZjb25zIChGY29ucyAoUXQsIG1ha2VfbGlzcF90aW1lIChiYXNlX2J1ZmZlci0+bW9k dGltZSkpLAorCSAgICAgICBCVkFSIChjdXJyZW50X2J1ZmZlciwgdW5kb19saXN0KSkpOwog fQogCiAvKiBSZWNvcmQgYSBjaGFuZ2UgaW4gcHJvcGVydHkgUFJPUCAod2hvc2Ugb2xkIHZh bHVlIHdhcyBWQUwpCkBAIC0yNjUsNyArMjY2LDggQEAKICAgWFNFVElOVCAobGJlZywgYmVn KTsKICAgWFNFVElOVCAobGVuZCwgYmVnICsgbGVuZ3RoKTsKICAgZW50cnkgPSBGY29ucyAo UW5pbCwgRmNvbnMgKHByb3AsIEZjb25zICh2YWx1ZSwgRmNvbnMgKGxiZWcsIGxlbmQpKSkp OwotICBCVkFSIChjdXJyZW50X2J1ZmZlciwgdW5kb19saXN0KSA9IEZjb25zIChlbnRyeSwg QlZBUiAoY3VycmVudF9idWZmZXIsIHVuZG9fbGlzdCkpOworICBCU0VUIChjdXJyZW50X2J1 ZmZlciwgdW5kb19saXN0LAorCUZjb25zIChlbnRyeSwgQlZBUiAoY3VycmVudF9idWZmZXIs IHVuZG9fbGlzdCkpKTsKIAogICBjdXJyZW50X2J1ZmZlciA9IG9idWY7CiB9CkBAIC0yODgs MTEgKzI5MCwxMSBAQAogCSAgLyogSWYgd2UgaGF2ZSBwcmVhbGxvY2F0ZWQgdGhlIGNvbnMg Y2VsbCB0byB1c2UgaGVyZSwKIAkgICAgIHVzZSB0aGF0IG9uZS4gICovCiAJICBYU0VUQ0RS IChwZW5kaW5nX2JvdW5kYXJ5LCBCVkFSIChjdXJyZW50X2J1ZmZlciwgdW5kb19saXN0KSk7 Ci0JICBCVkFSIChjdXJyZW50X2J1ZmZlciwgdW5kb19saXN0KSA9IHBlbmRpbmdfYm91bmRh cnk7CisJICBCU0VUIChjdXJyZW50X2J1ZmZlciwgdW5kb19saXN0LCBwZW5kaW5nX2JvdW5k YXJ5KTsKIAkgIHBlbmRpbmdfYm91bmRhcnkgPSBRbmlsOwogCX0KICAgICAgIGVsc2UKLQlC VkFSIChjdXJyZW50X2J1ZmZlciwgdW5kb19saXN0KSA9IEZjb25zIChRbmlsLCBCVkFSIChj dXJyZW50X2J1ZmZlciwgdW5kb19saXN0KSk7CisJQlNFVCAoY3VycmVudF9idWZmZXIsIHVu ZG9fbGlzdCwgRmNvbnMgKFFuaWwsIEJWQVIgKGN1cnJlbnRfYnVmZmVyLCB1bmRvX2xpc3Qp KSk7CiAgICAgfQogICBsYXN0X2JvdW5kYXJ5X3Bvc2l0aW9uID0gUFQ7CiAgIGxhc3RfYm91 bmRhcnlfYnVmZmVyID0gY3VycmVudF9idWZmZXI7CkBAIC00MzMsNyArNDM1LDcgQEAKICAg ICBYU0VUQ0RSIChsYXN0X2JvdW5kYXJ5LCBRbmlsKTsKICAgLyogVGhlcmUncyBub3RoaW5n IHdlIGRlY2lkZWQgdG8ga2VlcCwgc28gY2xlYXIgaXQgb3V0LiAgKi8KICAgZWxzZQotICAg IEJWQVIgKGIsIHVuZG9fbGlzdCkgPSBRbmlsOworICAgIEJTRVQgKGIsIHVuZG9fbGlzdCwg UW5pbCk7CiAKICAgdW5iaW5kX3RvIChjb3VudCwgUW5pbCk7CiB9CkBAIC02NDgsOCArNjUw LDggQEAKICAgICAgd2lsbCB3b3JrIHJpZ2h0LiAgKi8KICAgaWYgKGRpZF9hcHBseQogICAg ICAgJiYgRVEgKG9sZGxpc3QsIEJWQVIgKGN1cnJlbnRfYnVmZmVyLCB1bmRvX2xpc3QpKSkK LSAgICBCVkFSIChjdXJyZW50X2J1ZmZlciwgdW5kb19saXN0KQotICAgICAgPSBGY29ucyAo bGlzdDMgKFFhcHBseSwgUWNkciwgUW5pbCksIEJWQVIgKGN1cnJlbnRfYnVmZmVyLCB1bmRv X2xpc3QpKTsKKyAgICBCU0VUIChjdXJyZW50X2J1ZmZlciwgdW5kb19saXN0LAorCSAgRmNv bnMgKGxpc3QzIChRYXBwbHksIFFjZHIsIFFuaWwpLCBCVkFSIChjdXJyZW50X2J1ZmZlciwg dW5kb19saXN0KSkpOwogCiAgIFVOR0NQUk87CiAgIHJldHVybiB1bmJpbmRfdG8gKGNvdW50 LCBsaXN0KTsKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvdzMyZm5zLmMnCi0tLSBzcmMvdzMy Zm5zLmMJMjAxMi0wOC0wNyAwNzozMzoxOCArMDAwMAorKysgc3JjL3czMmZucy5jCTIwMTIt MDgtMTAgMDQ6NTI6MzkgKzAwMDAKQEAgLTUyMTIsNyArNTIxMiw3IEBACiAgIEZzZXRfd2lu ZG93X2J1ZmZlciAoRlJBTUVfUk9PVF9XSU5ET1cgKGYpLCBidWZmZXIsIFFuaWwpOwogICBv bGRfYnVmZmVyID0gY3VycmVudF9idWZmZXI7CiAgIHNldF9idWZmZXJfaW50ZXJuYWxfMSAo WEJVRkZFUiAoYnVmZmVyKSk7Ci0gIEJWQVIgKGN1cnJlbnRfYnVmZmVyLCB0cnVuY2F0ZV9s aW5lcykgPSBRbmlsOworICBCU0VUIChjdXJyZW50X2J1ZmZlciwgdHJ1bmNhdGVfbGluZXMs IFFuaWwpOwogICBzcGVjYmluZCAoUWluaGliaXRfcmVhZF9vbmx5LCBRdCk7CiAgIHNwZWNi aW5kIChRaW5oaWJpdF9tb2RpZmljYXRpb25faG9va3MsIFF0KTsKICAgRmVyYXNlX2J1ZmZl ciAoKTsKQEAgLTU2NDIsNyArNTY0Miw3IEBACiAgIC8qIERpc3BsYXkgdGhlIHRvb2x0aXAg dGV4dCBpbiBhIHRlbXBvcmFyeSBidWZmZXIuICAqLwogICBvbGRfYnVmZmVyID0gY3VycmVu dF9idWZmZXI7CiAgIHNldF9idWZmZXJfaW50ZXJuYWxfMSAoWEJVRkZFUiAoWFdJTkRPVyAo RlJBTUVfUk9PVF9XSU5ET1cgKGYpKS0+YnVmZmVyKSk7Ci0gIEJWQVIgKGN1cnJlbnRfYnVm ZmVyLCB0cnVuY2F0ZV9saW5lcykgPSBRbmlsOworICBCU0VUIChjdXJyZW50X2J1ZmZlciwg dHJ1bmNhdGVfbGluZXMsIFFuaWwpOwogICBjbGVhcl9nbHlwaF9tYXRyaXggKHctPmRlc2ly ZWRfbWF0cml4KTsKICAgY2xlYXJfZ2x5cGhfbWF0cml4ICh3LT5jdXJyZW50X21hdHJpeCk7 CiAgIFNFVF9URVhUX1BPUyAocG9zLCBCRUdWLCBCRUdWX0JZVEUpOwoKPT09IG1vZGlmaWVk IGZpbGUgJ3NyYy93aW5kb3cuYycKLS0tIHNyYy93aW5kb3cuYwkyMDEyLTA4LTA3IDA3OjMz OjE4ICswMDAwCisrKyBzcmMvd2luZG93LmMJMjAxMi0wOC0xMCAwNDo1MjozOSArMDAwMApA QCAtMzczLDcgKzM3Myw3IEBACiAKICAgRnNldF9idWZmZXIgKHctPmJ1ZmZlcik7CiAKLSAg QlZBUiAoWEJVRkZFUiAody0+YnVmZmVyKSwgbGFzdF9zZWxlY3RlZF93aW5kb3cpID0gd2lu ZG93OworICBCU0VUIChYQlVGRkVSICh3LT5idWZmZXIpLCBsYXN0X3NlbGVjdGVkX3dpbmRv dywgd2luZG93KTsKIAogICAvKiBHbyB0byB0aGUgcG9pbnQgcmVjb3JkZWQgaW4gdGhlIHdp bmRvdy4KICAgICAgVGhpcyBpcyBpbXBvcnRhbnQgd2hlbiB0aGUgYnVmZmVyIGlzIGluIG1v cmUKQEAgLTE4MTIsNyArMTgxMiw3IEBACiAKICAgaWYgKFdJTkRPV1AgKEJWQVIgKGIsIGxh c3Rfc2VsZWN0ZWRfd2luZG93KSkKICAgICAgICYmIHcgPT0gWFdJTkRPVyAoQlZBUiAoYiwg bGFzdF9zZWxlY3RlZF93aW5kb3cpKSkKLSAgICBCVkFSIChiLCBsYXN0X3NlbGVjdGVkX3dp bmRvdykgPSBRbmlsOworICAgIEJTRVQgKGIsIGxhc3Rfc2VsZWN0ZWRfd2luZG93LCBRbmls KTsKIH0KIAogLyogUHV0IE5FVyBpbnRvIHRoZSB3aW5kb3cgc3RydWN0dXJlIGluIHBsYWNl IG9mIE9MRC4gIFNFVEZMQUcgemVybwpAQCAtMjk5MCwxNSArMjk5MCwxNSBAQAogICBXU0VU ICh3LCBidWZmZXIsIGJ1ZmZlcik7CiAKICAgaWYgKEVRICh3aW5kb3csIHNlbGVjdGVkX3dp bmRvdykpCi0gICAgQlZBUiAoYiwgbGFzdF9zZWxlY3RlZF93aW5kb3cpID0gd2luZG93Owor ICAgIEJTRVQgKGIsIGxhc3Rfc2VsZWN0ZWRfd2luZG93LCB3aW5kb3cpOwogCiAgIC8qIExl dCByZWRpc3BsYXkgZXJyb3JzIHRocm91Z2guICAqLwogICBiLT5kaXNwbGF5X2Vycm9yX21v ZGlmZiA9IDA7CiAKICAgLyogVXBkYXRlIHRpbWUgc3RhbXBzIG9mIGJ1ZmZlciBkaXNwbGF5 LiAgKi8KICAgaWYgKElOVEVHRVJQIChCVkFSIChiLCBkaXNwbGF5X2NvdW50KSkpCi0gICAg WFNFVElOVCAoQlZBUiAoYiwgZGlzcGxheV9jb3VudCksIFhJTlQgKEJWQVIgKGIsIGRpc3Bs YXlfY291bnQpKSArIDEpOwotICBCVkFSIChiLCBkaXNwbGF5X3RpbWUpID0gRmN1cnJlbnRf dGltZSAoKTsKKyAgICBCU0VUIChiLCBkaXNwbGF5X2NvdW50LCBtYWtlX251bWJlciAoWElO VCAoQlZBUiAoYiwgZGlzcGxheV9jb3VudCkpICsgMSkpOworICBCU0VUIChiLCBkaXNwbGF5 X3RpbWUsIEZjdXJyZW50X3RpbWUgKCkpOwogCiAgIFdTRVQgKHcsIHdpbmRvd19lbmRfcG9z LCBtYWtlX251bWJlciAoMCkpOwogICBXU0VUICh3LCB3aW5kb3dfZW5kX3Zwb3MsIG1ha2Vf bnVtYmVyICgwKSk7CkBAIC0zMTg5LDcgKzMxODksNyBAQAogICByZWdpc3RlciBMaXNwX09i amVjdCB3aW5kb3c7CiAgIHJlZ2lzdGVyIHN0cnVjdCB3aW5kb3cgKnc7CiAKLSAgQlZBUiAo WEJVRkZFUiAoYnVmKSwgZGlyZWN0b3J5KSA9IEJWQVIgKGN1cnJlbnRfYnVmZmVyLCBkaXJl Y3RvcnkpOworICBCU0VUIChYQlVGRkVSIChidWYpLCBkaXJlY3RvcnksIEJWQVIgKGN1cnJl bnRfYnVmZmVyLCBkaXJlY3RvcnkpKTsKIAogICBGc2V0X2J1ZmZlciAoYnVmKTsKICAgQlVG X1NBVkVfTU9ESUZGIChYQlVGRkVSIChidWYpKSA9IE1PRElGRjsKCj09PSBtb2RpZmllZCBm aWxlICdzcmMveGRpc3AuYycKLS0tIHNyYy94ZGlzcC5jCTIwMTItMDgtMDggMTk6NTM6NDQg KzAwMDAKKysrIHNyYy94ZGlzcC5jCTIwMTItMDgtMTAgMDQ6NTI6MzkgKzAwMDAKQEAgLTkz MTgsNyArOTMxOCw3IEBACiAgICAgICBvbGRfZGVhY3RpdmF0ZV9tYXJrID0gVmRlYWN0aXZh dGVfbWFyazsKICAgICAgIG9sZGJ1ZiA9IGN1cnJlbnRfYnVmZmVyOwogICAgICAgRnNldF9i dWZmZXIgKEZnZXRfYnVmZmVyX2NyZWF0ZSAoVm1lc3NhZ2VzX2J1ZmZlcl9uYW1lKSk7Ci0g ICAgICBCVkFSIChjdXJyZW50X2J1ZmZlciwgdW5kb19saXN0KSA9IFF0OworICAgICAgQlNF VCAoY3VycmVudF9idWZmZXIsIHVuZG9fbGlzdCwgUXQpOwogCiAgICAgICBvbGRwb2ludCA9 IG1lc3NhZ2VfZG9sb2dfbWFya2VyMTsKICAgICAgIHNldF9tYXJrZXJfcmVzdHJpY3RlZCAo b2xkcG9pbnQsIG1ha2VfbnVtYmVyIChQVCksIFFuaWwpOwpAQCAtOTg4MCw3ICs5ODgwLDcg QEAKIAlvbGRfYnVmZmVyID0gZWNob19idWZmZXJbaV07CiAJZWNob19idWZmZXJbaV0gPSBG Z2V0X2J1ZmZlcl9jcmVhdGUKIAkgIChtYWtlX2Zvcm1hdHRlZF9zdHJpbmcgKG5hbWUsICIg KkVjaG8gQXJlYSAlZCoiLCBpKSk7Ci0JQlZBUiAoWEJVRkZFUiAoZWNob19idWZmZXJbaV0p LCB0cnVuY2F0ZV9saW5lcykgPSBRbmlsOworCUJTRVQgKFhCVUZGRVIgKGVjaG9fYnVmZmVy W2ldKSwgdHJ1bmNhdGVfbGluZXMsIFFuaWwpOwogCS8qIHRvIGZvcmNlIHdvcmQgd3JhcCBp biBlY2hvIGFyZWEgLQogCSAgIGl0IHdhcyBkZWNpZGVkIHRvIHBvc3Rwb25lIHRoaXMqLwog CS8qIFhCVUZGRVIgKGVjaG9fYnVmZmVyW2ldKS0+d29yZF93cmFwID0gUXQ7ICovCkBAIC05 OTczLDggKzk5NzMsOCBAQAogICAgICAgc2V0X21hcmtlcl9ib3RoICh3LT5wb2ludG0sIGJ1 ZmZlciwgQkVHLCBCRUdfQllURSk7CiAgICAgfQogCi0gIEJWQVIgKGN1cnJlbnRfYnVmZmVy LCB1bmRvX2xpc3QpID0gUXQ7Ci0gIEJWQVIgKGN1cnJlbnRfYnVmZmVyLCByZWFkX29ubHkp ID0gUW5pbDsKKyAgQlNFVCAoY3VycmVudF9idWZmZXIsIHVuZG9fbGlzdCwgUXQpOworICBC U0VUIChjdXJyZW50X2J1ZmZlciwgcmVhZF9vbmx5LCBRbmlsKTsKICAgc3BlY2JpbmQgKFFp bmhpYml0X3JlYWRfb25seSwgUXQpOwogICBzcGVjYmluZCAoUWluaGliaXRfbW9kaWZpY2F0 aW9uX2hvb2tzLCBRdCk7CiAKQEAgLTEwMDg3LDcgKzEwMDg3LDcgQEAKIAogICAgICAgLyog U3dpdGNoIHRvIHRoYXQgYnVmZmVyIGFuZCBjbGVhciBpdC4gICovCiAgICAgICBzZXRfYnVm ZmVyX2ludGVybmFsIChYQlVGRkVSIChlY2hvX2FyZWFfYnVmZmVyWzBdKSk7Ci0gICAgICBC VkFSIChjdXJyZW50X2J1ZmZlciwgdHJ1bmNhdGVfbGluZXMpID0gUW5pbDsKKyAgICAgIEJT RVQgKGN1cnJlbnRfYnVmZmVyLCB0cnVuY2F0ZV9saW5lcywgUW5pbCk7CiAKICAgICAgIGlm IChaID4gQkVHKQogCXsKQEAgLTEwMTMwLDcgKzEwMTMwLDcgQEAKIAl7CiAJICAvKiBTb21l b25lIHN3aXRjaGVkIGJ1ZmZlcnMgYmV0d2VlbiBwcmludCByZXF1ZXN0cy4gICovCiAJICBz ZXRfYnVmZmVyX2ludGVybmFsIChYQlVGRkVSIChlY2hvX2FyZWFfYnVmZmVyWzBdKSk7Ci0J ICBCVkFSIChjdXJyZW50X2J1ZmZlciwgdHJ1bmNhdGVfbGluZXMpID0gUW5pbDsKKwkgIEJT RVQgKGN1cnJlbnRfYnVmZmVyLCB0cnVuY2F0ZV9saW5lcywgUW5pbCk7CiAJfQogICAgIH0K IH0KQEAgLTEwNTgyLDkgKzEwNTgyLDkgQEAKICAgICAgICE9ICFOSUxQIChCVkFSIChjdXJy ZW50X2J1ZmZlciwgZW5hYmxlX211bHRpYnl0ZV9jaGFyYWN0ZXJzKSkpCiAgICAgRnNldF9i dWZmZXJfbXVsdGlieXRlIChtZXNzYWdlX2VuYWJsZV9tdWx0aWJ5dGUgPyBRdCA6IFFuaWwp OwogCi0gIEJWQVIgKGN1cnJlbnRfYnVmZmVyLCB0cnVuY2F0ZV9saW5lcykgPSBtZXNzYWdl X3RydW5jYXRlX2xpbmVzID8gUXQgOiBRbmlsOworICBCU0VUIChjdXJyZW50X2J1ZmZlciwg dHJ1bmNhdGVfbGluZXMsIG1lc3NhZ2VfdHJ1bmNhdGVfbGluZXMgPyBRdCA6IFFuaWwpOwog ICBpZiAoIU5JTFAgKEJWQVIgKGN1cnJlbnRfYnVmZmVyLCBiaWRpX2Rpc3BsYXlfcmVvcmRl cmluZykpKQotICAgIEJWQVIgKGN1cnJlbnRfYnVmZmVyLCBiaWRpX3BhcmFncmFwaF9kaXJl Y3Rpb24pID0gUWxlZnRfdG9fcmlnaHQ7CisgICAgQlNFVCAoY3VycmVudF9idWZmZXIsIGJp ZGlfcGFyYWdyYXBoX2RpcmVjdGlvbiwgUWxlZnRfdG9fcmlnaHQpOwogCiAgIC8qIEluc2Vy dCBuZXcgbWVzc2FnZSBhdCBCRUcuICAqLwogICBURU1QX1NFVF9QVF9CT1RIIChCRUcsIEJF R19CWVRFKTsKCj09PSBtb2RpZmllZCBmaWxlICdzcmMveGZucy5jJwotLS0gc3JjL3hmbnMu YwkyMDEyLTA4LTA3IDA3OjMzOjE4ICswMDAwCisrKyBzcmMveGZucy5jCTIwMTItMDgtMTAg MDQ6NTI6MzkgKzAwMDAKQEAgLTQ1OTUsNyArNDU5NSw3IEBACiAgIEZzZXRfd2luZG93X2J1 ZmZlciAoRlJBTUVfUk9PVF9XSU5ET1cgKGYpLCBidWZmZXIsIFFuaWwpOwogICBvbGRfYnVm ZmVyID0gY3VycmVudF9idWZmZXI7CiAgIHNldF9idWZmZXJfaW50ZXJuYWxfMSAoWEJVRkZF UiAoYnVmZmVyKSk7Ci0gIEJWQVIgKGN1cnJlbnRfYnVmZmVyLCB0cnVuY2F0ZV9saW5lcykg PSBRbmlsOworICBCU0VUIChjdXJyZW50X2J1ZmZlciwgdHJ1bmNhdGVfbGluZXMsIFFuaWwp OwogICBzcGVjYmluZCAoUWluaGliaXRfcmVhZF9vbmx5LCBRdCk7CiAgIHNwZWNiaW5kIChR aW5oaWJpdF9tb2RpZmljYXRpb25faG9va3MsIFF0KTsKICAgRmVyYXNlX2J1ZmZlciAoKTsK QEAgLTUwOTIsNyArNTA5Miw3IEBACiAgIC8qIERpc3BsYXkgdGhlIHRvb2x0aXAgdGV4dCBp biBhIHRlbXBvcmFyeSBidWZmZXIuICAqLwogICBvbGRfYnVmZmVyID0gY3VycmVudF9idWZm ZXI7CiAgIHNldF9idWZmZXJfaW50ZXJuYWxfMSAoWEJVRkZFUiAoWFdJTkRPVyAoRlJBTUVf Uk9PVF9XSU5ET1cgKGYpKS0+YnVmZmVyKSk7Ci0gIEJWQVIgKGN1cnJlbnRfYnVmZmVyLCB0 cnVuY2F0ZV9saW5lcykgPSBRbmlsOworICBCU0VUIChjdXJyZW50X2J1ZmZlciwgdHJ1bmNh dGVfbGluZXMsIFFuaWwpOwogICBjbGVhcl9nbHlwaF9tYXRyaXggKHctPmRlc2lyZWRfbWF0 cml4KTsKICAgY2xlYXJfZ2x5cGhfbWF0cml4ICh3LT5jdXJyZW50X21hdHJpeCk7CiAgIFNF VF9URVhUX1BPUyAocG9zLCBCRUdWLCBCRUdWX0JZVEUpOwoK --------------060908050606070207030602 Content-Type: text/plain; charset=UTF-8; name="kset.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="kset.patch" PT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9jYWxsaW50LmMnCi0tLSBzcmMvY2FsbGludC5jCTIw MTItMDgtMDUgMTU6NDc6MjggKzAwMDAKKysrIHNyYy9jYWxsaW50LmMJMjAxMi0wOC0xMCAw NTowNDowMSArMDAwMApAQCAtMzcyLDcgKzM3Miw3IEBACiAgICAgICBWdGhpc19jb21tYW5k ID0gc2F2ZV90aGlzX2NvbW1hbmQ7CiAgICAgICBWdGhpc19vcmlnaW5hbF9jb21tYW5kID0g c2F2ZV90aGlzX29yaWdpbmFsX2NvbW1hbmQ7CiAgICAgICBWcmVhbF90aGlzX2NvbW1hbmQg PSBzYXZlX3JlYWxfdGhpc19jb21tYW5kOwotICAgICAgS1ZBUiAoY3VycmVudF9rYm9hcmQs IFZsYXN0X2NvbW1hbmQpID0gc2F2ZV9sYXN0X2NvbW1hbmQ7CisgICAgICBLU0VUIChjdXJy ZW50X2tib2FyZCwgVmxhc3RfY29tbWFuZCwgc2F2ZV9sYXN0X2NvbW1hbmQpOwogCiAgICAg ICB0ZW1wb3JhcmlseV9zd2l0Y2hfdG9fc2luZ2xlX2tib2FyZCAoTlVMTCk7CiAgICAgICBy ZXR1cm4gdW5iaW5kX3RvIChzcGVjY291bnQsIGFwcGx5MSAoZnVuY3Rpb24sIHNwZWNzKSk7 CkBAIC04NDMsNyArODQzLDcgQEAKICAgVnRoaXNfY29tbWFuZCA9IHNhdmVfdGhpc19jb21t YW5kOwogICBWdGhpc19vcmlnaW5hbF9jb21tYW5kID0gc2F2ZV90aGlzX29yaWdpbmFsX2Nv bW1hbmQ7CiAgIFZyZWFsX3RoaXNfY29tbWFuZCA9IHNhdmVfcmVhbF90aGlzX2NvbW1hbmQ7 Ci0gIEtWQVIgKGN1cnJlbnRfa2JvYXJkLCBWbGFzdF9jb21tYW5kKSA9IHNhdmVfbGFzdF9j b21tYW5kOworICBLU0VUIChjdXJyZW50X2tib2FyZCwgVmxhc3RfY29tbWFuZCwgc2F2ZV9s YXN0X2NvbW1hbmQpOwogCiAgIHsKICAgICBMaXNwX09iamVjdCB2YWw7Cgo9PT0gbW9kaWZp ZWQgZmlsZSAnc3JjL2NhdGVnb3J5LmMnCi0tLSBzcmMvY2F0ZWdvcnkuYwkyMDEyLTA4LTAy IDA3OjMxOjM0ICswMDAwCisrKyBzcmMvY2F0ZWdvcnkuYwkyMDEyLTA4LTEwIDA1OjA0OjAx ICswMDAwCkBAIC0yODUsNyArMjg1LDcgQEAKIHsKICAgaW50IGlkeDsKICAgdGFibGUgPSBj aGVja19jYXRlZ29yeV90YWJsZSAodGFibGUpOwotICBCVkFSIChjdXJyZW50X2J1ZmZlciwg Y2F0ZWdvcnlfdGFibGUpID0gdGFibGU7CisgIEJTRVQgKGN1cnJlbnRfYnVmZmVyLCBjYXRl Z29yeV90YWJsZSwgdGFibGUpOwogICAvKiBJbmRpY2F0ZSB0aGF0IHRoaXMgYnVmZmVyIG5v dyBoYXMgYSBzcGVjaWZpZWQgY2F0ZWdvcnkgdGFibGUuICAqLwogICBpZHggPSBQRVJfQlVG RkVSX1ZBUl9JRFggKGNhdGVnb3J5X3RhYmxlKTsKICAgU0VUX1BFUl9CVUZGRVJfVkFMVUVf UCAoY3VycmVudF9idWZmZXIsIGlkeCwgMSk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2Zy YW1lLmMnCi0tLSBzcmMvZnJhbWUuYwkyMDEyLTA4LTEwIDA0OjUyOjM5ICswMDAwCisrKyBz cmMvZnJhbWUuYwkyMDEyLTA4LTEwIDA1OjA0OjAxICswMDAwCkBAIC0zOTMsOCArMzkzLDgg QEAKICAgICAgICAgICBYU0VURlJBTUUgKGZyYW1lX2R1bW15LCBmKTsKICAgICAgICAgICBH Q1BSTzEgKGZyYW1lX2R1bW15KTsKIAkgIC8qIElmIHRoZXJlJ3Mgbm8gbWluaWJ1ZmZlciBm cmFtZSB0byB1c2UsIGNyZWF0ZSBvbmUuICAqLwotCSAgS1ZBUiAoa2IsIFZkZWZhdWx0X21p bmlidWZmZXJfZnJhbWUpID0KLQkgICAgY2FsbDEgKGludGVybiAoIm1ha2UtaW5pdGlhbC1t aW5pYnVmZmVyLWZyYW1lIiksIGRpc3BsYXkpOworCSAgS1NFVCAoa2IsIFZkZWZhdWx0X21p bmlidWZmZXJfZnJhbWUsCisJCWNhbGwxIChpbnRlcm4gKCJtYWtlLWluaXRpYWwtbWluaWJ1 ZmZlci1mcmFtZSIpLCBkaXNwbGF5KSk7CiAgICAgICAgICAgVU5HQ1BSTzsKIAl9CiAKQEAg LTg0Myw3ICs4NDMsNyBAQAogICAoTGlzcF9PYmplY3QgZXZlbnQpCiB7CiAgIC8qIFByZXNl cnZlIHByZWZpeCBhcmcgdGhhdCB0aGUgY29tbWFuZCBsb29wIGp1c3QgY2xlYXJlZC4gICov Ci0gIEtWQVIgKGN1cnJlbnRfa2JvYXJkLCBWcHJlZml4X2FyZykgPSBWY3VycmVudF9wcmVm aXhfYXJnOworICBLU0VUIChjdXJyZW50X2tib2FyZCwgVnByZWZpeF9hcmcsIFZjdXJyZW50 X3ByZWZpeF9hcmcpOwogICBGcnVuX2hvb2tzICgxLCAmUW1vdXNlX2xlYXZlX2J1ZmZlcl9o b29rKTsKICAgcmV0dXJuIGRvX3N3aXRjaF9mcmFtZSAoZXZlbnQsIDAsIDAsIFFuaWwpOwog fQpAQCAtMTQzNSwxMSArMTQzNSwxMSBAQAogCSAgaWYgKE5JTFAgKGZyYW1lX3dpdGhfbWlu aWJ1ZikpCiAJICAgIGFib3J0ICgpOwogCi0JICBLVkFSIChrYiwgVmRlZmF1bHRfbWluaWJ1 ZmZlcl9mcmFtZSkgPSBmcmFtZV93aXRoX21pbmlidWY7CisJICBLU0VUIChrYiwgVmRlZmF1 bHRfbWluaWJ1ZmZlcl9mcmFtZSwgZnJhbWVfd2l0aF9taW5pYnVmKTsKIAl9CiAgICAgICBl bHNlCiAJLyogTm8gZnJhbWVzIGxlZnQgb24gdGhpcyBrYm9hcmQtLXNheSBubyBtaW5pYnVm ZmVyIGVpdGhlci4gICovCi0JS1ZBUiAoa2IsIFZkZWZhdWx0X21pbmlidWZmZXJfZnJhbWUp ID0gUW5pbDsKKwlLU0VUIChrYiwgVmRlZmF1bHRfbWluaWJ1ZmZlcl9mcmFtZSwgUW5pbCk7 CiAgICAgfQogCiAgIC8qIENhdXNlIGZyYW1lIHRpdGxlcyB0byB1cGRhdGUtLW5lY2Vzc2Fy eSBpZiB3ZSBub3cgaGF2ZSBqdXN0IG9uZSBmcmFtZS4gICovCgo9PT0gbW9kaWZpZWQgZmls ZSAnc3JjL2tleWJvYXJkLmMnCi0tLSBzcmMva2V5Ym9hcmQuYwkyMDEyLTA4LTA4IDE1OjUz OjUyICswMDAwCisrKyBzcmMva2V5Ym9hcmQuYwkyMDEyLTA4LTEwIDA1OjA0OjAxICswMDAw CkBAIC01NTEsOCArNTUxLDggQEAKICAgICAgIGVsc2UgaWYgKFNUUklOR1AgKGVjaG9fc3Ry aW5nKSkKIAllY2hvX3N0cmluZyA9IGNvbmNhdDIgKGVjaG9fc3RyaW5nLCBidWlsZF9zdHJp bmcgKCIgIikpOwogCi0gICAgICBLVkFSIChjdXJyZW50X2tib2FyZCwgZWNob19zdHJpbmcp Ci0JPSBjb25jYXQyIChlY2hvX3N0cmluZywgbWFrZV9zdHJpbmcgKGJ1ZmZlciwgcHRyIC0g YnVmZmVyKSk7CisgICAgICBLU0VUIChjdXJyZW50X2tib2FyZCwgZWNob19zdHJpbmcsCisJ ICAgIGNvbmNhdDIgKGVjaG9fc3RyaW5nLCBtYWtlX3N0cmluZyAoYnVmZmVyLCBwdHIgLSBi dWZmZXIpKSk7CiAKICAgICAgIGVjaG9fbm93ICgpOwogICAgIH0KQEAgLTU5Nyw4ICs1OTcs OCBAQAogCiAgIC8qIFB1dCBhIGRhc2ggYXQgdGhlIGVuZCBvZiB0aGUgYnVmZmVyIHRlbXBv cmFyaWx5LAogICAgICBidXQgbWFrZSBpdCBnbyBhd2F5IHdoZW4gdGhlIG5leHQgY2hhcmFj dGVyIGlzIGFkZGVkLiAgKi8KLSAgS1ZBUiAoY3VycmVudF9rYm9hcmQsIGVjaG9fc3RyaW5n KSA9IGNvbmNhdDIgKEtWQVIgKGN1cnJlbnRfa2JvYXJkLCBlY2hvX3N0cmluZyksCi0JCQkJ CSBidWlsZF9zdHJpbmcgKCItIikpOworICBLU0VUIChjdXJyZW50X2tib2FyZCwgZWNob19z dHJpbmcsCisJY29uY2F0MiAoS1ZBUiAoY3VycmVudF9rYm9hcmQsIGVjaG9fc3RyaW5nKSwg YnVpbGRfc3RyaW5nICgiLSIpKSk7CiAgIGVjaG9fbm93ICgpOwogfQogCkBAIC02NjAsNyAr NjYwLDcgQEAKIHsKICAgY3VycmVudF9rYm9hcmQtPmltbWVkaWF0ZV9lY2hvID0gMDsKICAg Y3VycmVudF9rYm9hcmQtPmVjaG9fYWZ0ZXJfcHJvbXB0ID0gLTE7Ci0gIEtWQVIgKGN1cnJl bnRfa2JvYXJkLCBlY2hvX3N0cmluZykgPSBRbmlsOworICBLU0VUIChjdXJyZW50X2tib2Fy ZCwgZWNob19zdHJpbmcsIFFuaWwpOwogICBva190b19lY2hvX2F0X25leHRfcGF1c2UgPSBO VUxMOwogICBlY2hvX2tib2FyZCA9IE5VTEw7CiAgIGVjaG9fbWVzc2FnZV9idWZmZXIgPSBR bmlsOwpAQCAtNjg0LDkgKzY4NCw5IEBACiBlY2hvX3RydW5jYXRlIChwdHJkaWZmX3QgbmNo YXJzKQogewogICBpZiAoU1RSSU5HUCAoS1ZBUiAoY3VycmVudF9rYm9hcmQsIGVjaG9fc3Ry aW5nKSkpCi0gICAgS1ZBUiAoY3VycmVudF9rYm9hcmQsIGVjaG9fc3RyaW5nKQotICAgICAg PSBGc3Vic3RyaW5nIChLVkFSIChjdXJyZW50X2tib2FyZCwgZWNob19zdHJpbmcpLAotCQkg ICAgbWFrZV9udW1iZXIgKDApLCBtYWtlX251bWJlciAobmNoYXJzKSk7CisgICAgS1NFVCAo Y3VycmVudF9rYm9hcmQsIGVjaG9fc3RyaW5nLAorCSAgRnN1YnN0cmluZyAoS1ZBUiAoY3Vy cmVudF9rYm9hcmQsIGVjaG9fc3RyaW5nKSwKKwkJICAgICAgbWFrZV9udW1iZXIgKDApLCBt YWtlX251bWJlciAobmNoYXJzKSkpOwogICB0cnVuY2F0ZV9lY2hvX2FyZWEgKG5jaGFycyk7 CiB9CiAKQEAgLTEwMTYsOCArMTAxNiw4IEBACiAgIFZzdGFuZGFyZF9pbnB1dCA9IFF0Owog ICBWZXhlY3V0aW5nX2tiZF9tYWNybyA9IFFuaWw7CiAgIGV4ZWN1dGluZ19rYmRfbWFjcm8g PSBRbmlsOwotICBLVkFSIChjdXJyZW50X2tib2FyZCwgVnByZWZpeF9hcmcpID0gUW5pbDsK LSAgS1ZBUiAoY3VycmVudF9rYm9hcmQsIFZsYXN0X3ByZWZpeF9hcmcpID0gUW5pbDsKKyAg S1NFVCAoY3VycmVudF9rYm9hcmQsIFZwcmVmaXhfYXJnLCBRbmlsKTsKKyAgS1NFVCAoY3Vy cmVudF9rYm9hcmQsIFZsYXN0X3ByZWZpeF9hcmcsIFFuaWwpOwogICBjYW5jZWxfZWNob2lu ZyAoKTsKIAogICAvKiBBdm9pZCB1bnF1aXR0YWJsZSBsb29wIGlmIGRhdGEgY29udGFpbnMg YSBjaXJjdWxhciBsaXN0LiAgKi8KQEAgLTEzMzgsOCArMTMzOCw4IEBACiAjZW5kaWYKICAg aW50IGFscmVhZHlfYWRqdXN0ZWQgPSAwOwogCi0gIEtWQVIgKGN1cnJlbnRfa2JvYXJkLCBW cHJlZml4X2FyZykgPSBRbmlsOwotICBLVkFSIChjdXJyZW50X2tib2FyZCwgVmxhc3RfcHJl Zml4X2FyZykgPSBRbmlsOworICBLU0VUIChjdXJyZW50X2tib2FyZCwgVnByZWZpeF9hcmcs IFFuaWwpOworICBLU0VUIChjdXJyZW50X2tib2FyZCwgVmxhc3RfcHJlZml4X2FyZywgUW5p bCk7CiAgIFZkZWFjdGl2YXRlX21hcmsgPSBRbmlsOwogICB3YWl0aW5nX2Zvcl9pbnB1dCA9 IDA7CiAgIGNhbmNlbF9lY2hvaW5nICgpOwpAQCAtMTM3MSwxMCArMTM3MSwxMCBAQAogICAg IH0KIAogICAvKiBEbyB0aGlzIGFmdGVyIHJ1bm5pbmcgVnBvc3RfY29tbWFuZF9ob29rLCBm b3IgY29uc2lzdGVuY3kuICAqLwotICBLVkFSIChjdXJyZW50X2tib2FyZCwgVmxhc3RfY29t bWFuZCkgPSBWdGhpc19jb21tYW5kOwotICBLVkFSIChjdXJyZW50X2tib2FyZCwgVnJlYWxf bGFzdF9jb21tYW5kKSA9IFZyZWFsX3RoaXNfY29tbWFuZDsKKyAgS1NFVCAoY3VycmVudF9r Ym9hcmQsIFZsYXN0X2NvbW1hbmQsIFZ0aGlzX2NvbW1hbmQpOworICBLU0VUIChjdXJyZW50 X2tib2FyZCwgVnJlYWxfbGFzdF9jb21tYW5kLCBWcmVhbF90aGlzX2NvbW1hbmQpOwogICBp ZiAoIUNPTlNQIChsYXN0X2NvbW1hbmRfZXZlbnQpKQotICAgIEtWQVIgKGN1cnJlbnRfa2Jv YXJkLCBWbGFzdF9yZXBlYXRhYmxlX2NvbW1hbmQpID0gVnJlYWxfdGhpc19jb21tYW5kOwor ICAgIEtTRVQgKGN1cnJlbnRfa2JvYXJkLCBWbGFzdF9yZXBlYXRhYmxlX2NvbW1hbmQsIFZy ZWFsX3RoaXNfY29tbWFuZCk7CiAKICAgd2hpbGUgKDEpCiAgICAgewpAQCAtMTUzNyw3ICsx NTM3LDcgQEAKIAkgIGtleXMgPSBGa2V5X2Rlc2NyaXB0aW9uIChrZXlzLCBRbmlsKTsKIAkg IGJpdGNoX2F0X3VzZXIgKCk7CiAJICBtZXNzYWdlX3dpdGhfc3RyaW5nICgiJXMgaXMgdW5k ZWZpbmVkIiwga2V5cywgMCk7Ci0JICBLVkFSIChjdXJyZW50X2tib2FyZCwgZGVmaW5pbmdf a2JkX21hY3JvKSA9IFFuaWw7CisJICBLU0VUIChjdXJyZW50X2tib2FyZCwgZGVmaW5pbmdf a2JkX21hY3JvLCBRbmlsKTsKIAkgIHVwZGF0ZV9tb2RlX2xpbmVzID0gMTsKIAkgIC8qIElm IHRoaXMgaXMgYSBkb3duLW1vdXNlIGV2ZW50LCBkb24ndCByZXNldCBwcmVmaXgtYXJnOwog CSAgICAgcGFzcyBpdCB0byB0aGUgY29tbWFuZCBydW4gYnkgdGhlIHVwIGV2ZW50LiAgKi8K QEAgLTE1NDcsMTAgKzE1NDcsMTAgQEAKIAkJPSBwYXJzZV9tb2RpZmllcnMgKEVWRU5UX0hF QUQgKGxhc3RfY29tbWFuZF9ldmVudCkpOwogCSAgICAgIGludCBtb2RpZmllcnMgPSBYSU5U IChYQ0FSIChYQ0RSIChicmVha2Rvd24pKSk7CiAJICAgICAgaWYgKCEobW9kaWZpZXJzICYg ZG93bl9tb2RpZmllcikpCi0JCUtWQVIgKGN1cnJlbnRfa2JvYXJkLCBWcHJlZml4X2FyZykg PSBRbmlsOworCQlLU0VUIChjdXJyZW50X2tib2FyZCwgVnByZWZpeF9hcmcsIFFuaWwpOwog CSAgICB9CiAJICBlbHNlCi0JICAgIEtWQVIgKGN1cnJlbnRfa2JvYXJkLCBWcHJlZml4X2Fy ZykgPSBRbmlsOworCSAgICBLU0VUIChjdXJyZW50X2tib2FyZCwgVnByZWZpeF9hcmcsIFFu aWwpOwogCX0KICAgICAgIGVsc2UKIAl7CkBAIC0xNTg3LDcgKzE1ODcsNyBAQAogICAgICAg ICAgICAgdW5iaW5kX3RvIChzY291bnQsIFFuaWwpOwogI2VuZGlmCiAgICAgICAgICAgfQot ICAgICAgS1ZBUiAoY3VycmVudF9rYm9hcmQsIFZsYXN0X3ByZWZpeF9hcmcpID0gVmN1cnJl bnRfcHJlZml4X2FyZzsKKyAgICAgIEtTRVQgKGN1cnJlbnRfa2JvYXJkLCBWbGFzdF9wcmVm aXhfYXJnLCBWY3VycmVudF9wcmVmaXhfYXJnKTsKIAogICAgICAgc2FmZV9ydW5faG9va3Mg KFFwb3N0X2NvbW1hbmRfaG9vayk7CiAKQEAgLTE2MTgsMTEgKzE2MTgsMTAgQEAKICAgICAg IGlmIChOSUxQIChLVkFSIChjdXJyZW50X2tib2FyZCwgVnByZWZpeF9hcmcpKQogCSAgfHwg Q09OU1AgKGxhc3RfY29tbWFuZF9ldmVudCkpCiAJewotCSAgS1ZBUiAoY3VycmVudF9rYm9h cmQsIFZsYXN0X2NvbW1hbmQpID0gVnRoaXNfY29tbWFuZDsKLQkgIEtWQVIgKGN1cnJlbnRf a2JvYXJkLCBWcmVhbF9sYXN0X2NvbW1hbmQpID0gVnJlYWxfdGhpc19jb21tYW5kOworCSAg S1NFVCAoY3VycmVudF9rYm9hcmQsIFZsYXN0X2NvbW1hbmQsIFZ0aGlzX2NvbW1hbmQpOwor CSAgS1NFVCAoY3VycmVudF9rYm9hcmQsIFZyZWFsX2xhc3RfY29tbWFuZCwgVnJlYWxfdGhp c19jb21tYW5kKTsKIAkgIGlmICghQ09OU1AgKGxhc3RfY29tbWFuZF9ldmVudCkpCi0JICAg IEtWQVIgKGN1cnJlbnRfa2JvYXJkLCBWbGFzdF9yZXBlYXRhYmxlX2NvbW1hbmQpCi0JICAg ICAgPSBWcmVhbF90aGlzX2NvbW1hbmQ7CisJICAgIEtTRVQgKGN1cnJlbnRfa2JvYXJkLCBW bGFzdF9yZXBlYXRhYmxlX2NvbW1hbmQsIFZyZWFsX3RoaXNfY29tbWFuZCk7CiAJICBjYW5j ZWxfZWNob2luZyAoKTsKIAkgIHRoaXNfY29tbWFuZF9rZXlfY291bnQgPSAwOwogCSAgdGhp c19jb21tYW5kX2tleV9jb3VudF9yZXNldCA9IDA7CkBAIC0yNTY1LDcgKzI1NjQsNyBAQAog CQkgIGFib3J0ICgpOwogCSAgICAgIH0KIAkgICAgaWYgKCFDT05TUCAobGFzdCkpCi0JICAg ICAgS1ZBUiAoa2IsIGtiZF9xdWV1ZSkgPSBGY29ucyAoYywgUW5pbCk7CisJICAgICAgS1NF VCAoa2IsIGtiZF9xdWV1ZSwgRmNvbnMgKGMsIFFuaWwpKTsKIAkgICAgZWxzZQogCSAgICAg IFhTRVRDRFIgKGxhc3QsIEZjb25zIChjLCBRbmlsKSk7CiAJICAgIGtiLT5rYmRfcXVldWVf aGFzX2RhdGEgPSAxOwpAQCAtMjczNyw4ICsyNzM2LDggQEAKIAkgIGlmICghQ09OU1AgKEtW QVIgKGN1cnJlbnRfa2JvYXJkLCBrYmRfcXVldWUpKSkKIAkgICAgYWJvcnQgKCk7CiAJICBj ID0gWENBUiAoS1ZBUiAoY3VycmVudF9rYm9hcmQsIGtiZF9xdWV1ZSkpOwotCSAgS1ZBUiAo Y3VycmVudF9rYm9hcmQsIGtiZF9xdWV1ZSkKLQkgICAgPSBYQ0RSIChLVkFSIChjdXJyZW50 X2tib2FyZCwga2JkX3F1ZXVlKSk7CisJICBLU0VUIChjdXJyZW50X2tib2FyZCwga2JkX3F1 ZXVlLAorCQlYQ0RSIChLVkFSIChjdXJyZW50X2tib2FyZCwga2JkX3F1ZXVlKSkpOwogCSAg aWYgKE5JTFAgKEtWQVIgKGN1cnJlbnRfa2JvYXJkLCBrYmRfcXVldWUpKSkKIAkgICAgY3Vy cmVudF9rYm9hcmQtPmtiZF9xdWV1ZV9oYXNfZGF0YSA9IDA7CiAJICBpbnB1dF9wZW5kaW5n ID0gcmVhZGFibGVfZXZlbnRzICgwKTsKQEAgLTI4MDUsNyArMjgwNCw3IEBACiAJCWFib3J0 ICgpOwogCSAgICB9CiAJICBpZiAoIUNPTlNQIChsYXN0KSkKLQkgICAgS1ZBUiAoa2IsIGti ZF9xdWV1ZSkgPSBGY29ucyAoYywgUW5pbCk7CisJICAgIEtTRVQgKGtiLCBrYmRfcXVldWUs IEZjb25zIChjLCBRbmlsKSk7CiAJICBlbHNlCiAJICAgIFhTRVRDRFIgKGxhc3QsIEZjb25z IChjLCBRbmlsKSk7CiAJICBrYi0+a2JkX3F1ZXVlX2hhc19kYXRhID0gMTsKQEAgLTMwNjMs NyArMzA2Miw3IEBACiAKICAgICAgIGNhbmNlbF9lY2hvaW5nICgpOwogICAgICAgb2tfdG9f ZWNob19hdF9uZXh0X3BhdXNlID0gc2F2ZWRfb2tfdG9fZWNobzsKLSAgICAgIEtWQVIgKGN1 cnJlbnRfa2JvYXJkLCBlY2hvX3N0cmluZykgPSBzYXZlZF9lY2hvX3N0cmluZzsKKyAgICAg IEtTRVQgKGN1cnJlbnRfa2JvYXJkLCBlY2hvX3N0cmluZywgc2F2ZWRfZWNob19zdHJpbmcp OwogICAgICAgY3VycmVudF9rYm9hcmQtPmVjaG9fYWZ0ZXJfcHJvbXB0ID0gc2F2ZWRfZWNo b19hZnRlcl9wcm9tcHQ7CiAgICAgICBpZiAoc2F2ZWRfaW1tZWRpYXRlX2VjaG8pCiAJZWNo b19ub3cgKCk7CkBAIC0zNTM0LDkgKzM1MzMsOSBAQAogCiAJICBpZiAoc2luZ2xlX2tib2Fy ZCAmJiBrYiAhPSBjdXJyZW50X2tib2FyZCkKIAkgICAgewotCSAgICAgIEtWQVIgKGtiLCBr YmRfcXVldWUpCi0JCT0gRmNvbnMgKG1ha2VfbGlzcHlfc3dpdGNoX2ZyYW1lIChldmVudC0+ ZnJhbWVfb3Jfd2luZG93KSwKLQkJCSBGY29ucyAobWFrZV9udW1iZXIgKGMpLCBRbmlsKSk7 CisJICAgICAgS1NFVCAoa2IsIGtiZF9xdWV1ZSwKKwkJICAgIEZjb25zIChtYWtlX2xpc3B5 X3N3aXRjaF9mcmFtZSAoZXZlbnQtPmZyYW1lX29yX3dpbmRvdyksCisJCQkgICBGY29ucyAo bWFrZV9udW1iZXIgKGMpLCBRbmlsKSkpOwogCSAgICAgIGtiLT5rYmRfcXVldWVfaGFzX2Rh dGEgPSAxOwogCSAgICAgIGZvciAoc3AgPSBrYmRfZmV0Y2hfcHRyOyBzcCAhPSBrYmRfc3Rv cmVfcHRyOyBzcCsrKQogCQl7CkBAIC01NDA4LDcgKzU0MDcsNyBAQAogCSAgLyogV2UgbmVl ZCB0byB1c2UgYW4gYWxpc3QgcmF0aGVyIHRoYW4gYSB2ZWN0b3IgYXMgdGhlIGNhY2hlCiAJ ICAgICBzaW5jZSB3ZSBjYW4ndCBtYWtlIGEgdmVjdG9yIGxvbmcgZW5vdWdoLiAgKi8KIAkg IGlmIChOSUxQIChLVkFSIChjdXJyZW50X2tib2FyZCwgc3lzdGVtX2tleV9zeW1zKSkpCi0J ICAgIEtWQVIgKGN1cnJlbnRfa2JvYXJkLCBzeXN0ZW1fa2V5X3N5bXMpID0gRmNvbnMgKFFu aWwsIFFuaWwpOworCSAgICBLU0VUIChjdXJyZW50X2tib2FyZCwgc3lzdGVtX2tleV9zeW1z LCBGY29ucyAoUW5pbCwgUW5pbCkpOwogCSAgcmV0dXJuIG1vZGlmeV9ldmVudF9zeW1ib2wg KGV2ZW50LT5jb2RlLAogCQkJCSAgICAgIGV2ZW50LT5tb2RpZmllcnMsCiAJCQkJICAgICAg UWZ1bmN0aW9uX2tleSwKQEAgLTg3MjksMTEgKzg3MjgsMTEgQEAKIAkgaXMgbm90IHVzZWQg b24gcmVwbGF5LgogCSAqLwogICAgICAgb3JpZ19kZWZuX21hY3JvID0gS1ZBUiAoY3VycmVu dF9rYm9hcmQsIGRlZmluaW5nX2tiZF9tYWNybyk7Ci0gICAgICBLVkFSIChjdXJyZW50X2ti b2FyZCwgZGVmaW5pbmdfa2JkX21hY3JvKSA9IFFuaWw7CisgICAgICBLU0VUIChjdXJyZW50 X2tib2FyZCwgZGVmaW5pbmdfa2JkX21hY3JvLCBRbmlsKTsKICAgICAgIGRvCiAJb2JqID0g cmVhZF9jaGFyIChjb21tYW5kZmxhZywgMCwgMCwgUXQsIDAsIE5VTEwpOwogICAgICAgd2hp bGUgKEJVRkZFUlAgKG9iaikpOwotICAgICAgS1ZBUiAoY3VycmVudF9rYm9hcmQsIGRlZmlu aW5nX2tiZF9tYWNybykgPSBvcmlnX2RlZm5fbWFjcm87CisgICAgICBLU0VUIChjdXJyZW50 X2tib2FyZCwgZGVmaW5pbmdfa2JkX21hY3JvLCBvcmlnX2RlZm5fbWFjcm8pOwogCiAgICAg ICBpZiAoIUlOVEVHRVJQIChvYmopKQogCXJldHVybiBvYmo7CkBAIC05MDg5LDcgKzkwODgs NyBAQAogCSAgLyogSW5zdGFsbCB0aGUgc3RyaW5nIFNUUiBhcyB0aGUgYmVnaW5uaW5nIG9m IHRoZSBzdHJpbmcgb2YKIAkgICAgIGVjaG9pbmcsIHNvIHRoYXQgaXQgc2VydmVzIGFzIGEg cHJvbXB0IGZvciB0aGUgbmV4dAogCSAgICAgY2hhcmFjdGVyLiAgKi8KLQkgIEtWQVIgKGN1 cnJlbnRfa2JvYXJkLCBlY2hvX3N0cmluZykgPSBwcm9tcHQ7CisJICBLU0VUIChjdXJyZW50 X2tib2FyZCwgZWNob19zdHJpbmcsIHByb21wdCk7CiAJICBjdXJyZW50X2tib2FyZC0+ZWNo b19hZnRlcl9wcm9tcHQgPSBTQ0hBUlMgKHByb21wdCk7CiAJICBlY2hvX25vdyAoKTsKIAl9 CkBAIC05MzM1LDE1ICs5MzM0LDE1IEBACiAKIAkJaWYgKCFOSUxQIChkZWxheWVkX3N3aXRj aF9mcmFtZSkpCiAJCSAgewotCQkgICAgS1ZBUiAoaW50ZXJydXB0ZWRfa2JvYXJkLCBrYmRf cXVldWUpCi0JCSAgICAgID0gRmNvbnMgKGRlbGF5ZWRfc3dpdGNoX2ZyYW1lLAotCQkJICAg ICAgIEtWQVIgKGludGVycnVwdGVkX2tib2FyZCwga2JkX3F1ZXVlKSk7CisJCSAgICBLU0VU IChpbnRlcnJ1cHRlZF9rYm9hcmQsIGtiZF9xdWV1ZSwKKwkJCSAgRmNvbnMgKGRlbGF5ZWRf c3dpdGNoX2ZyYW1lLAorCQkJCSBLVkFSIChpbnRlcnJ1cHRlZF9rYm9hcmQsIGtiZF9xdWV1 ZSkpKTsKIAkJICAgIGRlbGF5ZWRfc3dpdGNoX2ZyYW1lID0gUW5pbDsKIAkJICB9CiAKIAkJ d2hpbGUgKHQgPiAwKQotCQkgIEtWQVIgKGludGVycnVwdGVkX2tib2FyZCwga2JkX3F1ZXVl KQotCQkgICAgPSBGY29ucyAoa2V5YnVmWy0tdF0sIEtWQVIgKGludGVycnVwdGVkX2tib2Fy ZCwga2JkX3F1ZXVlKSk7CisJCSAgS1NFVCAoaW50ZXJydXB0ZWRfa2JvYXJkLCBrYmRfcXVl dWUsCisJCQlGY29ucyAoa2V5YnVmWy0tdF0sIEtWQVIgKGludGVycnVwdGVkX2tib2FyZCwg a2JkX3F1ZXVlKSkpOwogCiAJCS8qIElmIHRoZSBzaWRlIHF1ZXVlIGlzIG5vbi1lbXB0eSwg ZW5zdXJlIGl0IGJlZ2lucyB3aXRoIGEKIAkJICAgc3dpdGNoLWZyYW1lLCBzbyB3ZSdsbCBy ZXBsYXkgaXQgaW4gdGhlIHJpZ2h0IGNvbnRleHQuICAqLwpAQCAtOTM1NSw5ICs5MzU0LDkg QEAKIAkJICB7CiAJCSAgICBMaXNwX09iamVjdCBmcmFtZTsKIAkJICAgIFhTRVRGUkFNRSAo ZnJhbWUsIGludGVycnVwdGVkX2ZyYW1lKTsKLQkJICAgIEtWQVIgKGludGVycnVwdGVkX2ti b2FyZCwga2JkX3F1ZXVlKQotCQkgICAgICA9IEZjb25zIChtYWtlX2xpc3B5X3N3aXRjaF9m cmFtZSAoZnJhbWUpLAotCQkJICAgICAgIEtWQVIgKGludGVycnVwdGVkX2tib2FyZCwga2Jk X3F1ZXVlKSk7CisJCSAgICBLU0VUIChpbnRlcnJ1cHRlZF9rYm9hcmQsIGtiZF9xdWV1ZSwK KwkJCSAgRmNvbnMgKG1ha2VfbGlzcHlfc3dpdGNoX2ZyYW1lIChmcmFtZSksCisJCQkJIEtW QVIgKGludGVycnVwdGVkX2tib2FyZCwga2JkX3F1ZXVlKSkpOwogCQkgIH0KIAkJbW9ja19p bnB1dCA9IDA7CiAJCW9yaWdfbG9jYWxfbWFwID0gZ2V0X2xvY2FsX21hcCAoUFQsIGN1cnJl bnRfYnVmZmVyLCBRbG9jYWxfbWFwKTsKQEAgLTEwMjUxLDcgKzEwMjUwLDcgQEAKICAgICB7 CiAgICAgICBwcmVmaXhhcmcgPSBLVkFSIChjdXJyZW50X2tib2FyZCwgVnByZWZpeF9hcmcp OwogICAgICAgVmN1cnJlbnRfcHJlZml4X2FyZyA9IHByZWZpeGFyZzsKLSAgICAgIEtWQVIg KGN1cnJlbnRfa2JvYXJkLCBWcHJlZml4X2FyZykgPSBRbmlsOworICAgICAgS1NFVCAoY3Vy cmVudF9rYm9hcmQsIFZwcmVmaXhfYXJnLCBRbmlsKTsKICAgICB9CiAgIGVsc2UKICAgICBw cmVmaXhhcmcgPSBRbmlsOwpAQCAtMTEyNDksMzAgKzExMjQ4LDMwIEBACiB2b2lkCiBpbml0 X2tib2FyZCAoS0JPQVJEICprYikKIHsKLSAgS1ZBUiAoa2IsIFZvdmVycmlkaW5nX3Rlcm1p bmFsX2xvY2FsX21hcCkgPSBRbmlsOwotICBLVkFSIChrYiwgVmxhc3RfY29tbWFuZCkgPSBR bmlsOwotICBLVkFSIChrYiwgVnJlYWxfbGFzdF9jb21tYW5kKSA9IFFuaWw7Ci0gIEtWQVIg KGtiLCBWa2V5Ym9hcmRfdHJhbnNsYXRlX3RhYmxlKSA9IFFuaWw7Ci0gIEtWQVIgKGtiLCBW bGFzdF9yZXBlYXRhYmxlX2NvbW1hbmQpID0gUW5pbDsKLSAgS1ZBUiAoa2IsIFZwcmVmaXhf YXJnKSA9IFFuaWw7Ci0gIEtWQVIgKGtiLCBWbGFzdF9wcmVmaXhfYXJnKSA9IFFuaWw7Ci0g IEtWQVIgKGtiLCBrYmRfcXVldWUpID0gUW5pbDsKKyAgS1NFVCAoa2IsIFZvdmVycmlkaW5n X3Rlcm1pbmFsX2xvY2FsX21hcCwgUW5pbCk7CisgIEtTRVQgKGtiLCBWbGFzdF9jb21tYW5k LCBRbmlsKTsKKyAgS1NFVCAoa2IsIFZyZWFsX2xhc3RfY29tbWFuZCwgUW5pbCk7CisgIEtT RVQgKGtiLCBWa2V5Ym9hcmRfdHJhbnNsYXRlX3RhYmxlLCBRbmlsKTsKKyAgS1NFVCAoa2Is IFZsYXN0X3JlcGVhdGFibGVfY29tbWFuZCwgUW5pbCk7CisgIEtTRVQgKGtiLCBWcHJlZml4 X2FyZywgUW5pbCk7CisgIEtTRVQgKGtiLCBWbGFzdF9wcmVmaXhfYXJnLCBRbmlsKTsKKyAg S1NFVCAoa2IsIGtiZF9xdWV1ZSwgUW5pbCk7CiAgIGtiLT5rYmRfcXVldWVfaGFzX2RhdGEg PSAwOwogICBrYi0+aW1tZWRpYXRlX2VjaG8gPSAwOwotICBLVkFSIChrYiwgZWNob19zdHJp bmcpID0gUW5pbDsKKyAgS1NFVCAoa2IsIGVjaG9fc3RyaW5nLCBRbmlsKTsKICAga2ItPmVj aG9fYWZ0ZXJfcHJvbXB0ID0gLTE7CiAgIGtiLT5rYmRfbWFjcm9fYnVmZmVyID0gMDsKICAg a2ItPmtiZF9tYWNyb19idWZzaXplID0gMDsKLSAgS1ZBUiAoa2IsIGRlZmluaW5nX2tiZF9t YWNybykgPSBRbmlsOwotICBLVkFSIChrYiwgVmxhc3Rfa2JkX21hY3JvKSA9IFFuaWw7Cisg IEtTRVQgKGtiLCBkZWZpbmluZ19rYmRfbWFjcm8sIFFuaWwpOworICBLU0VUIChrYiwgVmxh c3Rfa2JkX21hY3JvLCBRbmlsKTsKICAga2ItPnJlZmVyZW5jZV9jb3VudCA9IDA7Ci0gIEtW QVIgKGtiLCBWc3lzdGVtX2tleV9hbGlzdCkgPSBRbmlsOwotICBLVkFSIChrYiwgc3lzdGVt X2tleV9zeW1zKSA9IFFuaWw7Ci0gIEtWQVIgKGtiLCBWd2luZG93X3N5c3RlbSkgPSBRdDsJ LyogVW5zZXQuICAqLwotICBLVkFSIChrYiwgVmlucHV0X2RlY29kZV9tYXApID0gRm1ha2Vf c3BhcnNlX2tleW1hcCAoUW5pbCk7Ci0gIEtWQVIgKGtiLCBWbG9jYWxfZnVuY3Rpb25fa2V5 X21hcCkgPSBGbWFrZV9zcGFyc2Vfa2V5bWFwIChRbmlsKTsKKyAgS1NFVCAoa2IsIFZzeXN0 ZW1fa2V5X2FsaXN0LCBRbmlsKTsKKyAgS1NFVCAoa2IsIHN5c3RlbV9rZXlfc3ltcywgUW5p bCk7CisgIEtTRVQgKGtiLCBWd2luZG93X3N5c3RlbSwgUXQpOwkvKiBVbnNldC4gICovCisg IEtTRVQgKGtiLCBWaW5wdXRfZGVjb2RlX21hcCwgRm1ha2Vfc3BhcnNlX2tleW1hcCAoUW5p bCkpOworICBLU0VUIChrYiwgVmxvY2FsX2Z1bmN0aW9uX2tleV9tYXAsIEZtYWtlX3NwYXJz ZV9rZXltYXAgKFFuaWwpKTsKICAgRnNldF9rZXltYXBfcGFyZW50IChLVkFSIChrYiwgVmxv Y2FsX2Z1bmN0aW9uX2tleV9tYXApLCBWZnVuY3Rpb25fa2V5X21hcCk7Ci0gIEtWQVIgKGti LCBWZGVmYXVsdF9taW5pYnVmZmVyX2ZyYW1lKSA9IFFuaWw7CisgIEtTRVQgKGtiLCBWZGVm YXVsdF9taW5pYnVmZmVyX2ZyYW1lLCBRbmlsKTsKIH0KIAogLyoKQEAgLTExMzQ4LDcgKzEx MzQ3LDcgQEAKICAgaW5pdF9rYm9hcmQgKGN1cnJlbnRfa2JvYXJkKTsKICAgLyogQSB2YWx1 ZSBvZiBuaWwgZm9yIFZ3aW5kb3dfc3lzdGVtIG5vcm1hbGx5IG1lYW5zIGEgdHR5LCBidXQg d2UgYWxzbyB1c2UKICAgICAgaXQgZm9yIHRoZSBpbml0aWFsIHRlcm1pbmFsIHNpbmNlIHRo ZXJlIGlzIG5vIHdpbmRvdyBzeXN0ZW0gdGhlcmUuICAqLwotICBLVkFSIChjdXJyZW50X2ti b2FyZCwgVndpbmRvd19zeXN0ZW0pID0gUW5pbDsKKyAgS1NFVCAoY3VycmVudF9rYm9hcmQs IFZ3aW5kb3dfc3lzdGVtLCBRbmlsKTsKIAogICBpZiAoIW5vbmludGVyYWN0aXZlKQogICAg IHsKCj09PSBtb2RpZmllZCBmaWxlICdzcmMva2V5Ym9hcmQuaCcKLS0tIHNyYy9rZXlib2Fy ZC5oCTIwMTItMDctMzEgMTI6MzY6MTkgKzAwMDAKKysrIHNyYy9rZXlib2FyZC5oCTIwMTIt MDgtMTAgMDU6MDQ6MDEgKzAwMDAKQEAgLTIyLDYgKzIyLDcgQEAKIC8qIE1vc3QgY29kZSBz aG91bGQgdXNlIHRoaXMgbWFjcm8gdG8gYWNjZXNzIExpc3AgZmllbGRzIGluIHN0cnVjdCBr Ym9hcmQuICAqLwogCiAjZGVmaW5lIEtWQVIoa2JvYXJkLCBmaWVsZCkgKChrYm9hcmQpLT5J TlRFUk5BTF9GSUVMRCAoZmllbGQpKQorI2RlZmluZSBLU0VUKGtib2FyZCwgZmllbGQsIHZh bHVlKSAoKGtib2FyZCktPklOVEVSTkFMX0ZJRUxEIChmaWVsZCkgPSAodmFsdWUpKQogCiAv KiBFYWNoIEtCT0FSRCByZXByZXNlbnRzIG9uZSBsb2dpY2FsIGlucHV0IHN0cmVhbSBmcm9t IHdoaWNoIEVtYWNzCiAgICBnZXRzIGlucHV0LiAgSWYgd2UgYXJlIHVzaW5nIG9yZGluYXJ5 IHRlcm1pbmFscywgaXQgaGFzIG9uZSBLQk9BUkQKCj09PSBtb2RpZmllZCBmaWxlICdzcmMv bWFjcm9zLmMnCi0tLSBzcmMvbWFjcm9zLmMJMjAxMi0wOC0wNSAxNTo0NzoyOCArMDAwMAor Kysgc3JjL21hY3Jvcy5jCTIwMTItMDgtMTAgMDU6MDQ6MDEgKzAwMDAKQEAgLTEyNyw3ICsx MjcsNyBAQAogCiAgICAgICBtZXNzYWdlICgiQXBwZW5kaW5nIHRvIGtiZCBtYWNyby4uLiIp OwogICAgIH0KLSAgS1ZBUiAoY3VycmVudF9rYm9hcmQsIGRlZmluaW5nX2tiZF9tYWNybykg PSBRdDsKKyAgS1NFVCAoY3VycmVudF9rYm9hcmQsIGRlZmluaW5nX2tiZF9tYWNybywgUXQp OwogCiAgIHJldHVybiBRbmlsOwogfQpAQCAtMTM3LDEyICsxMzcsMTIgQEAKIHZvaWQKIGVu ZF9rYmRfbWFjcm8gKHZvaWQpCiB7Ci0gIEtWQVIgKGN1cnJlbnRfa2JvYXJkLCBkZWZpbmlu Z19rYmRfbWFjcm8pID0gUW5pbDsKKyAgS1NFVCAoY3VycmVudF9rYm9hcmQsIGRlZmluaW5n X2tiZF9tYWNybywgUW5pbCk7CiAgIHVwZGF0ZV9tb2RlX2xpbmVzKys7Ci0gIEtWQVIgKGN1 cnJlbnRfa2JvYXJkLCBWbGFzdF9rYmRfbWFjcm8pCi0gICAgPSBtYWtlX2V2ZW50X2FycmF5 ICgoY3VycmVudF9rYm9hcmQtPmtiZF9tYWNyb19lbmQKLQkJCSAtIGN1cnJlbnRfa2JvYXJk LT5rYmRfbWFjcm9fYnVmZmVyKSwKLQkJCWN1cnJlbnRfa2JvYXJkLT5rYmRfbWFjcm9fYnVm ZmVyKTsKKyAgS1NFVCAoY3VycmVudF9rYm9hcmQsIFZsYXN0X2tiZF9tYWNybywKKwltYWtl X2V2ZW50X2FycmF5ICgoY3VycmVudF9rYm9hcmQtPmtiZF9tYWNyb19lbmQgCisJCQkgICAt IGN1cnJlbnRfa2JvYXJkLT5rYmRfbWFjcm9fYnVmZmVyKSwKKwkJCSAgY3VycmVudF9rYm9h cmQtPmtiZF9tYWNyb19idWZmZXIpKTsKIH0KIAogREVGVU4gKCJlbmQta2JkLW1hY3JvIiwg RmVuZF9rYmRfbWFjcm8sIFNlbmRfa2JkX21hY3JvLCAwLCAyLCAicCIsCkBAIC0zMzAsNyAr MzMwLDcgQEAKICAgICAgIGV4ZWN1dGluZ19rYmRfbWFjcm8gPSBmaW5hbDsKICAgICAgIGV4 ZWN1dGluZ19rYmRfbWFjcm9faW5kZXggPSAwOwogCi0gICAgICBLVkFSIChjdXJyZW50X2ti b2FyZCwgVnByZWZpeF9hcmcpID0gUW5pbDsKKyAgICAgIEtTRVQgKGN1cnJlbnRfa2JvYXJk LCBWcHJlZml4X2FyZywgUW5pbCk7CiAKICAgICAgIGlmICghTklMUCAobG9vcGZ1bmMpKQog CXsKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvbXNkb3MuYycKLS0tIHNyYy9tc2Rvcy5jCTIw MTItMDgtMDcgMDc6MzM6MTggKzAwMDAKKysrIHNyYy9tc2Rvcy5jCTIwMTItMDgtMTAgMDU6 MDQ6MDEgKzAwMDAKQEAgLTE4MDEsNyArMTgwMSw3IEBACiAgICAgfQogCiAgIHR0eSA9IEZS QU1FX1RUWSAoc2YpOwotICBLVkFSIChjdXJyZW50X2tib2FyZCwgVndpbmRvd19zeXN0ZW0p ID0gUXBjOworICBLU0VUIChjdXJyZW50X2tib2FyZCwgVndpbmRvd19zeXN0ZW0sIFFwYyk7 CiAgIHNmLT5vdXRwdXRfbWV0aG9kID0gb3V0cHV0X21zZG9zX3JhdzsKICAgaWYgKGluaXRf bmVlZGVkKQogICAgIHsKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvbnNmbnMubScKLS0tIHNy Yy9uc2Zucy5tCTIwMTItMDgtMDcgMDc6MzM6MTggKzAwMDAKKysrIHNyYy9uc2Zucy5tCTIw MTItMDgtMTAgMDU6MDQ6MDEgKzAwMDAKQEAgLTEzOTIsNyArMTM5Miw3IEBACiAgIGlmIChG UkFNRV9IQVNfTUlOSUJVRl9QIChmKQogICAgICAgJiYgKCFGUkFNRVAgKEtWQVIgKGtiLCBW ZGVmYXVsdF9taW5pYnVmZmVyX2ZyYW1lKSkKICAgICAgICAgICB8fCAhRlJBTUVfTElWRV9Q IChYRlJBTUUgKEtWQVIgKGtiLCBWZGVmYXVsdF9taW5pYnVmZmVyX2ZyYW1lKSkpKSkKLSAg ICBLVkFSIChrYiwgVmRlZmF1bHRfbWluaWJ1ZmZlcl9mcmFtZSkgPSBmcmFtZTsKKyAgICBL U0VUIChrYiwgVmRlZmF1bHRfbWluaWJ1ZmZlcl9mcmFtZSwgZnJhbWUpOwogCiAgIC8qIEFs bCByZW1haW5pbmcgc3BlY2lmaWVkIHBhcmFtZXRlcnMsIHdoaWNoIGhhdmUgbm90IGJlZW4g InVzZWQiCiAgICAgIGJ5IHhfZ2V0X2FyZyBhbmQgZnJpZW5kcywgbm93IGdvIGluIHRoZSBt aXNjLiBhbGlzdCBvZiB0aGUgZnJhbWUuICAqLwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9u c3Rlcm0ubScKLS0tIHNyYy9uc3Rlcm0ubQkyMDEyLTA4LTA3IDA3OjMzOjE4ICswMDAwCisr KyBzcmMvbnN0ZXJtLm0JMjAxMi0wOC0xMCAwNTowNDowMSArMDAwMApAQCAtNDA1MSw3ICs0 MDUxLDcgQEAKIAogICB0ZXJtaW5hbC0+a2JvYXJkID0geG1hbGxvYyAoc2l6ZW9mICp0ZXJt aW5hbC0+a2JvYXJkKTsKICAgaW5pdF9rYm9hcmQgKHRlcm1pbmFsLT5rYm9hcmQpOwotICBL VkFSICh0ZXJtaW5hbC0+a2JvYXJkLCBWd2luZG93X3N5c3RlbSkgPSBRbnM7CisgIEtTRVQg KHRlcm1pbmFsLT5rYm9hcmQsIFZ3aW5kb3dfc3lzdGVtLCBRbnMpOwogICB0ZXJtaW5hbC0+ a2JvYXJkLT5uZXh0X2tib2FyZCA9IGFsbF9rYm9hcmRzOwogICBhbGxfa2JvYXJkcyA9IHRl cm1pbmFsLT5rYm9hcmQ7CiAgIC8qIERvbid0IGxldCB0aGUgaW5pdGlhbCBrYm9hcmQgcmVt YWluIGN1cnJlbnQgbG9uZ2VyIHRoYW4gbmVjZXNzYXJ5LgoKPT09IG1vZGlmaWVkIGZpbGUg J3NyYy90ZXJtLmMnCi0tLSBzcmMvdGVybS5jCTIwMTItMDgtMDcgMDU6Mjk6MjUgKzAwMDAK KysrIHNyYy90ZXJtLmMJMjAxMi0wOC0xMCAwNTowNDowMSArMDAwMApAQCAtMTMzMyw3ICsx MzMzLDcgQEAKIAogICAvKiBUaGlzIGNhbiBoYXBwZW4gaWYgQ0FOTk9UX0RVTVAgb3Igd2l0 aCBzdHJhbmdlIG9wdGlvbnMuICAqLwogICBpZiAoIUtFWU1BUFAgKEtWQVIgKGtib2FyZCwg VmlucHV0X2RlY29kZV9tYXApKSkKLSAgICBLVkFSIChrYm9hcmQsIFZpbnB1dF9kZWNvZGVf bWFwKSA9IEZtYWtlX3NwYXJzZV9rZXltYXAgKFFuaWwpOworICAgIEtTRVQgKGtib2FyZCwg VmlucHV0X2RlY29kZV9tYXAsIEZtYWtlX3NwYXJzZV9rZXltYXAgKFFuaWwpKTsKIAogICBm b3IgKGkgPSAwOyBpIDwgKHNpemVvZiAoa2V5cykvc2l6ZW9mIChrZXlzWzBdKSk7IGkrKykK ICAgICB7CkBAIC0zMjgxLDcgKzMyODEsNyBAQAogCiAgIHRlcm1pbmFsLT5rYm9hcmQgPSB4 bWFsbG9jIChzaXplb2YgKnRlcm1pbmFsLT5rYm9hcmQpOwogICBpbml0X2tib2FyZCAodGVy bWluYWwtPmtib2FyZCk7Ci0gIEtWQVIgKHRlcm1pbmFsLT5rYm9hcmQsIFZ3aW5kb3dfc3lz dGVtKSA9IFFuaWw7CisgIEtTRVQgKHRlcm1pbmFsLT5rYm9hcmQsIFZ3aW5kb3dfc3lzdGVt LCBRbmlsKTsKICAgdGVybWluYWwtPmtib2FyZC0+bmV4dF9rYm9hcmQgPSBhbGxfa2JvYXJk czsKICAgYWxsX2tib2FyZHMgPSB0ZXJtaW5hbC0+a2JvYXJkOwogICB0ZXJtaW5hbC0+a2Jv YXJkLT5yZWZlcmVuY2VfY291bnQrKzsKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvdzMyZm5z LmMnCi0tLSBzcmMvdzMyZm5zLmMJMjAxMi0wOC0xMCAwNDo1MjozOSArMDAwMAorKysgc3Jj L3czMmZucy5jCTIwMTItMDgtMTAgMDU6MDQ6MDEgKzAwMDAKQEAgLTQzNTMsNyArNDM1Myw3 IEBACiAgIGlmIChGUkFNRV9IQVNfTUlOSUJVRl9QIChmKQogICAgICAgJiYgKCFGUkFNRVAg KEtWQVIgKGtiLCBWZGVmYXVsdF9taW5pYnVmZmVyX2ZyYW1lKSkKICAgICAgICAgICB8fCAh RlJBTUVfTElWRV9QIChYRlJBTUUgKEtWQVIgKGtiLCBWZGVmYXVsdF9taW5pYnVmZmVyX2Zy YW1lKSkpKSkKLSAgICBLVkFSIChrYiwgVmRlZmF1bHRfbWluaWJ1ZmZlcl9mcmFtZSkgPSBm cmFtZTsKKyAgICBLU0VUIChrYiwgVmRlZmF1bHRfbWluaWJ1ZmZlcl9mcmFtZSwgZnJhbWUp OwogCiAgIC8qIEFsbCByZW1haW5pbmcgc3BlY2lmaWVkIHBhcmFtZXRlcnMsIHdoaWNoIGhh dmUgbm90IGJlZW4gInVzZWQiCiAgICAgIGJ5IHhfZ2V0X2FyZyBhbmQgZnJpZW5kcywgbm93 IGdvIGluIHRoZSBtaXNjLiBhbGlzdCBvZiB0aGUgZnJhbWUuICAqLwoKPT09IG1vZGlmaWVk IGZpbGUgJ3NyYy93MzJ0ZXJtLmMnCi0tLSBzcmMvdzMydGVybS5jCTIwMTItMDgtMDggMTk6 NTM6NDQgKzAwMDAKKysrIHNyYy93MzJ0ZXJtLmMJMjAxMi0wOC0xMCAwNTowNDowMSArMDAw MApAQCAtNjIzMiw3ICs2MjMyLDcgQEAKICAgICAgdGVybWluYWwgbGlrZSBYIGRvZXMuICAq LwogICB0ZXJtaW5hbC0+a2JvYXJkID0geG1hbGxvYyAoc2l6ZW9mIChLQk9BUkQpKTsKICAg aW5pdF9rYm9hcmQgKHRlcm1pbmFsLT5rYm9hcmQpOwotICBLVkFSICh0ZXJtaW5hbC0+a2Jv YXJkLCBWd2luZG93X3N5c3RlbSkgPSBpbnRlcm4gKCJ3MzIiKTsKKyAgS1NFVCAodGVybWlu YWwtPmtib2FyZCwgVndpbmRvd19zeXN0ZW0sIGludGVybiAoInczMiIpKTsKICAgdGVybWlu YWwtPmtib2FyZC0+bmV4dF9rYm9hcmQgPSBhbGxfa2JvYXJkczsKICAgYWxsX2tib2FyZHMg PSB0ZXJtaW5hbC0+a2JvYXJkOwogICAvKiBEb24ndCBsZXQgdGhlIGluaXRpYWwga2JvYXJk IHJlbWFpbiBjdXJyZW50IGxvbmdlciB0aGFuIG5lY2Vzc2FyeS4KCj09PSBtb2RpZmllZCBm aWxlICdzcmMveGZucy5jJwotLS0gc3JjL3hmbnMuYwkyMDEyLTA4LTEwIDA0OjUyOjM5ICsw MDAwCisrKyBzcmMveGZucy5jCTIwMTItMDgtMTAgMDU6MDQ6MDEgKzAwMDAKQEAgLTM0NjIs NyArMzQ2Miw3IEBACiAgIGlmIChGUkFNRV9IQVNfTUlOSUJVRl9QIChmKQogICAgICAgJiYg KCFGUkFNRVAgKEtWQVIgKGtiLCBWZGVmYXVsdF9taW5pYnVmZmVyX2ZyYW1lKSkKICAgICAg ICAgICB8fCAhRlJBTUVfTElWRV9QIChYRlJBTUUgKEtWQVIgKGtiLCBWZGVmYXVsdF9taW5p YnVmZmVyX2ZyYW1lKSkpKSkKLSAgICBLVkFSIChrYiwgVmRlZmF1bHRfbWluaWJ1ZmZlcl9m cmFtZSkgPSBmcmFtZTsKKyAgICBLU0VUIChrYiwgVmRlZmF1bHRfbWluaWJ1ZmZlcl9mcmFt ZSwgZnJhbWUpOwogCiAgIC8qIEFsbCByZW1haW5pbmcgc3BlY2lmaWVkIHBhcmFtZXRlcnMs IHdoaWNoIGhhdmUgbm90IGJlZW4gInVzZWQiCiAgICAgIGJ5IHhfZ2V0X2FyZyBhbmQgZnJp ZW5kcywgbm93IGdvIGluIHRoZSBtaXNjLiBhbGlzdCBvZiB0aGUgZnJhbWUuICAqLwoKPT09 IG1vZGlmaWVkIGZpbGUgJ3NyYy94dGVybS5jJwotLS0gc3JjL3h0ZXJtLmMJMjAxMi0wOC0w NyAxMzozNzoyMSArMDAwMAorKysgc3JjL3h0ZXJtLmMJMjAxMi0wOC0xMCAwNTowNDowMSAr MDAwMApAQCAtNzgzNSw3ICs3ODM1LDcgQEAKICAgICAgIHsKIAkvKiBTZXQgdGhpcyB0byB0 IHNvIHRoYXQgZGVsZXRlX2ZyYW1lIHdvbid0IGdldCBjb25mdXNlZAogCSAgIHRyeWluZyB0 byBmaW5kIGEgcmVwbGFjZW1lbnQuICAqLwotCUtWQVIgKEZSQU1FX0tCT0FSRCAoWEZSQU1F IChmcmFtZSkpLCBWZGVmYXVsdF9taW5pYnVmZmVyX2ZyYW1lKSA9IFF0OworCUtTRVQgKEZS QU1FX0tCT0FSRCAoWEZSQU1FIChmcmFtZSkpLCBWZGVmYXVsdF9taW5pYnVmZmVyX2ZyYW1l LCBRdCk7CiAJZGVsZXRlX2ZyYW1lIChmcmFtZSwgUW5vZWxpc3ApOwogICAgICAgfQogCkBA IC0xMDExNSw3ICsxMDExNSw3IEBACiAgICAgICB7CiAJdGVybWluYWwtPmtib2FyZCA9IHht YWxsb2MgKHNpemVvZiAqdGVybWluYWwtPmtib2FyZCk7CiAJaW5pdF9rYm9hcmQgKHRlcm1p bmFsLT5rYm9hcmQpOwotCUtWQVIgKHRlcm1pbmFsLT5rYm9hcmQsIFZ3aW5kb3dfc3lzdGVt KSA9IFF4OworCUtTRVQgKHRlcm1pbmFsLT5rYm9hcmQsIFZ3aW5kb3dfc3lzdGVtLCBReCk7 CiAKIAkvKiBBZGQgdGhlIGtleWJvYXJkIHRvIHRoZSBsaXN0IGJlZm9yZSBydW5uaW5nIExp c3AgY29kZSAodmlhCiAgICAgICAgICAgIFF2ZW5kb3Jfc3BlY2lmaWNfa2V5c3ltcyBiZWxv dyksIHNpbmNlIHRoZXNlIGFyZSBub3QgdHJhY2VkCkBAIC0xMDEzNyw5ICsxMDEzNyw5IEBA CiAJICAgIC8qIFRlbXBvcmFyaWx5IGhpZGUgdGhlIHBhcnRpYWxseSBpbml0aWFsaXplZCB0 ZXJtaW5hbC4gICovCiAJICAgIHRlcm1pbmFsX2xpc3QgPSB0ZXJtaW5hbC0+bmV4dF90ZXJt aW5hbDsKIAkgICAgVU5CTE9DS19JTlBVVDsKLQkgICAgS1ZBUiAodGVybWluYWwtPmtib2Fy ZCwgVnN5c3RlbV9rZXlfYWxpc3QpCi0JICAgICAgPSBjYWxsMSAoUXZlbmRvcl9zcGVjaWZp Y19rZXlzeW1zLAotCQkgICAgICAgdmVuZG9yID8gYnVpbGRfc3RyaW5nICh2ZW5kb3IpIDog ZW1wdHlfdW5pYnl0ZV9zdHJpbmcpOworCSAgICBLU0VUICh0ZXJtaW5hbC0+a2JvYXJkLCBW c3lzdGVtX2tleV9hbGlzdCwKKwkJICBjYWxsMSAoUXZlbmRvcl9zcGVjaWZpY19rZXlzeW1z LAorCQkJIHZlbmRvciA/IGJ1aWxkX3N0cmluZyAodmVuZG9yKSA6IGVtcHR5X3VuaWJ5dGVf c3RyaW5nKSk7CiAJICAgIEJMT0NLX0lOUFVUOwogCSAgICB0ZXJtaW5hbC0+bmV4dF90ZXJt aW5hbCA9IHRlcm1pbmFsX2xpc3Q7CiAgCSAgICB0ZXJtaW5hbF9saXN0ID0gdGVybWluYWw7 Cgo= --------------060908050606070207030602--