From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6B716C48BCD for ; Wed, 9 Jun 2021 19:36:13 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 33DAD613D2 for ; Wed, 9 Jun 2021 19:36:13 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 33DAD613D2 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 702F06E2D8; Wed, 9 Jun 2021 19:36:12 +0000 (UTC) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3FF2F6E2D8; Wed, 9 Jun 2021 19:36:11 +0000 (UTC) IronPort-SDR: A0DMN4LbBBZg1wa1Bx8RHclsUU6whPiy78UllMp2TlaVUKt51uY1lPyrAO6D+ZsD9j/NvUQ6/m gacmXz5zif5A== X-IronPort-AV: E=McAfee;i="6200,9189,10010"; a="266304663" X-IronPort-AV: E=Sophos;i="5.83,261,1616482800"; d="scan'208";a="266304663" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Jun 2021 12:36:02 -0700 IronPort-SDR: fKtMBe+ExD1kNQ80wZFDi2tiEUA6wZbh6SB7pk9PDc2vug7iZqTTZva5DK763o61vvS9mfvb6B t2v/lY+owFeA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.83,261,1616482800"; d="scan'208";a="413844971" Received: from irvmail001.ir.intel.com ([10.43.11.63]) by fmsmga007.fm.intel.com with ESMTP; 09 Jun 2021 12:35:59 -0700 Received: from [10.249.139.139] (mwajdecz-MOBL.ger.corp.intel.com [10.249.139.139]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id 159JZv8F026410; Wed, 9 Jun 2021 20:35:57 +0100 To: Daniele Ceraolo Spurio , Matthew Brost , intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org References: <20210607180356.165785-1-matthew.brost@intel.com> <20210607180356.165785-8-matthew.brost@intel.com> <946237c6-1671-b419-5337-d5b8cc02a041@intel.com> From: Michal Wajdeczko Message-ID: <9aac21ad-dd70-9f66-31ed-de56f60bfea0@intel.com> Date: Wed, 9 Jun 2021 21:35:57 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.10.2 MIME-Version: 1.0 In-Reply-To: <946237c6-1671-b419-5337-d5b8cc02a041@intel.com> Content-Language: en-US Subject: Re: [Intel-gfx] [PATCH 07/13] drm/i915/guc: New definition of the CTB registration action X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" CgpPbiAwOC4wNi4yMDIxIDAzOjIzLCBEYW5pZWxlIENlcmFvbG8gU3B1cmlvIHdyb3RlOgo+IAo+ IAo+IE9uIDYvNy8yMDIxIDExOjAzIEFNLCBNYXR0aGV3IEJyb3N0IHdyb3RlOgo+PiBGcm9tOiBN aWNoYWwgV2FqZGVjemtvIDxtaWNoYWwud2FqZGVjemtvQGludGVsLmNvbT4KPj4KPj4gRGVmaW5p dGlvbiBvZiB0aGUgQ1RCIHJlZ2lzdHJhdGlvbiBhY3Rpb24gaGFzIGNoYW5nZWQuCj4+IEFkZCBz b21lIEFCSSBkb2N1bWVudGF0aW9uIGFuZCBpbXBsZW1lbnQgcmVxdWlyZWQgY2hhbmdlcy4KPj4K Pj4gU2lnbmVkLW9mZi1ieTogTWljaGFsIFdhamRlY3prbyA8bWljaGFsLndhamRlY3prb0BpbnRl bC5jb20+Cj4+IFNpZ25lZC1vZmYtYnk6IE1hdHRoZXcgQnJvc3QgPG1hdHRoZXcuYnJvc3RAaW50 ZWwuY29tPgo+PiBDYzogUGlvdHIgUGnDs3Jrb3dza2kgPHBpb3RyLnBpb3Jrb3dza2lAaW50ZWwu Y29tPiAjNAo+PiAtLS0KPj4gwqAgLi4uL2dwdS9kcm0vaTkxNS9ndC91Yy9hYmkvZ3VjX2FjdGlv bnNfYWJpLmjCoCB8IDEwNyArKysrKysrKysrKysrKysrKysKPj4gwqAgLi4uL2d0L3VjL2FiaS9n dWNfY29tbXVuaWNhdGlvbl9jdGJfYWJpLmjCoMKgwqDCoCB8wqDCoCA0IC0KPj4gwqAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2N0LmPCoMKgwqDCoCB8wqAgNzYgKysrKysr KystLS0tLQo+PiDCoCAzIGZpbGVzIGNoYW5nZWQsIDE1MiBpbnNlcnRpb25zKCspLCAzNSBkZWxl dGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2Fi aS9ndWNfYWN0aW9uc19hYmkuaAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2FiaS9n dWNfYWN0aW9uc19hYmkuaAo+PiBpbmRleCA5MGVmZWY4YTczZTQuLjY0MjZmYzE4MzY5MiAxMDA2 NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvYWJpL2d1Y19hY3Rpb25zX2Fi aS5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2FiaS9ndWNfYWN0aW9uc19h YmkuaAo+PiBAQCAtNiw2ICs2LDExMyBAQAo+PiDCoCAjaWZuZGVmIF9BQklfR1VDX0FDVElPTlNf QUJJX0gKPj4gwqAgI2RlZmluZSBfQUJJX0dVQ19BQ1RJT05TX0FCSV9ICj4+IMKgICsvKioKPj4g KyAqIERPQzogSE9TVDJHVUNfUkVHSVNURVJfQ1RCCj4+ICsgKgo+PiArICogVGhpcyBtZXNzYWdl IGlzIHVzZWQgYXMgcGFydCBvZiB0aGUgYENUQiBiYXNlZCBjb21tdW5pY2F0aW9uYF8gc2V0dXAu Cj4+ICsgKgo+PiArICogVGhpcyBtZXNzYWdlIG11c3QgYmUgc2VudCBhcyBgTU1JTyBIWEcgTWVz c2FnZWBfLgo+PiArICoKPj4gKyAqwqAKPj4gKy0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+Pgo+PiArICrC oCB8wqDCoCB8IEJpdHPCoCB8Cj4+IERlc2NyaXB0aW9uwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfAo+PiArICrCoAo+PiArPT09Kz09PT09PT0rPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCj4+Cj4+ ICsgKsKgIHwgMCB8wqDCoMKgIDMxIHwgT1JJR0lOID0KPj4gR1VDX0hYR19PUklHSU5fSE9TVF/C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB8Cj4+ICsgKsKgIHzCoMKgCj4+ICstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+PiArICrCoCB8wqDCoCB8 IDMwOjI4IHwgVFlQRSA9Cj4+IEdVQ19IWEdfVFlQRV9SRVFVRVNUX8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+PiArICrC oCB8wqDCoAo+PiArLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqwqAgfMKgwqAgfCAyNzoxNiB8IERBVEEw ID0KPj4gTUJawqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+PiAr ICrCoCB8wqDCoAo+PiArLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqwqAgfMKgwqAgfMKgIDE1OjAgfCBB Q1RJT04gPSBfYEdVQ19BQ1RJT05fSE9TVDJHVUNfUkVHSVNURVJfQ1RCYCA9Cj4+IDB4NTIwMMKg wqDCoMKgwqDCoMKgIHwKPiAKPiBTcGVjcyBzYXlzIDQ1MDUKCmJ1dCBkcmFmdCB3YXMgc2F5aW5n IDUyMDAgOykKCj4gCj4+ICsgKsKgCj4+ICstLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4KPj4gKyAqwqAg fCAxIHwgMzE6MTIgfCBSRVNFUlZFRCA9Cj4+IE1CWsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHwKPj4gKyAqwqAgfMKgwqAKPj4gKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+ICsgKsKgIHzC oMKgIHzCoCAxMTo4IHwgKipUWVBFKiogLSB0eXBlIGZvciB0aGUgYENUCj4+IEJ1ZmZlcmBfwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwKPj4gKyAqwqAg fMKgwqAgfMKgwqDCoMKgwqDCoAo+PiB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+PiArICrCoCB8wqDCoCB8wqDCoMKg wqDCoMKgIHzCoMKgIC0gX2BHVUNfQ1RCX1RZUEVfSE9TVDJHVUNgID0KPj4gMMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwKPj4gKyAqwqAg fMKgwqAgfMKgwqDCoMKgwqDCoCB8wqDCoCAtIF9gR1VDX0NUQl9UWVBFX0dVQzJIT1NUYCA9Cj4+ IDHCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB8Cj4+ICsgKsKgIHzCoMKgCj4+ICstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+PiArICrCoCB8wqDCoCB8wqDC oCA3OjAgfCAqKlNJWkUqKiAtIHNpemUgb2YgdGhlIGBDVCBCdWZmZXJgXyBpbiA0SyB1bml0cwo+ PiBtaW51cyAxwqDCoMKgwqDCoCB8Cj4+ICsgKsKgCj4+ICstLS0rLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4K Pj4gKyAqwqAgfCAyIHzCoCAzMTowIHwgKipERVNDX0FERFIqKiAtIEdHVFQgYWRkcmVzcyBvZiB0 aGUgYENUQgo+PiBEZXNjcmlwdG9yYF/CoMKgwqDCoMKgwqDCoCB8Cj4+ICsgKsKgCj4+ICstLS0r LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSsKPj4KPj4gKyAqwqAgfCAzIHzCoCAzMTowIHwgKipCVUZGX0FEREYqKiAt IEdHVFQgYWRkcmVzcyBvZiB0aGUgYENUCj4+IEJ1ZmZlcmBfwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHwKPj4gKyAqwqAKPj4gKy0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+Pgo+PiArKgo+PiArICrCoAo+ PiArLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+Cj4+ICsgKsKgIHzCoMKgIHwgQml0c8KgIHwKPj4gRGVz Y3JpcHRpb27CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4+ICsg KsKgCj4+ICs9PT0rPT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PSsKPj4KPj4gKyAqwqAgfCAwIHzCoMKgwqAgMzEgfCBP UklHSU4gPQo+PiBHVUNfSFhHX09SSUdJTl9HVUNfwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4+ICsgKsKgIHzCoMKgCj4+ ICstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKwo+PiArICrCoCB8wqDCoCB8IDMwOjI4IHwgVFlQRSA9Cj4+IEdVQ19I WEdfVFlQRV9SRVNQT05TRV9TVUNDRVNTX8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfAo+PiArICrCoCB8wqDCoAo+PiArLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAq wqAgfMKgwqAgfMKgIDI3OjAgfCBEQVRBMCA9Cj4+IE1CWsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHwKPj4gKyAqwqAKPj4gKy0tLSstLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+Pgo+ PiArICovCj4+ICsjZGVmaW5lIEdVQ19BQ1RJT05fSE9TVDJHVUNfUkVHSVNURVJfQ1RCwqDCoMKg wqDCoMKgwqAgMHg0NTA1IC8vIEZJWE1FIDB4NTIwMAo+IAo+IFdoeSBGSVhNRT8gQUZBSUNTIHRo ZSBzcGVjcyBzdGlsbCBzYXlzIDQ1MDUsIGV2ZW4gaWYgd2UgcGxhbiB0byB1cGRhdGUKPiBhdCBz b21lIHBvaW50IEkgZG9uO3QgdGhpbmsgdGhpcyBkZXNlcnZlcyBhIEZJWE1FIHNpbmNlIG5vdGhp bmcgaXMKPiBpbmNvcnJlY3QuCgpwYXRjaCB3YXMgcHJlcGFyZWQgYmFzZWQgb24gZHJhZnQgc3Bl YyBhbmQgdGhpcyBGSVhNRSB3YXMgYWRkZWQganVzdCBhcwpoZWFkLXVwIHNpbmNlIHdlIHdlcmUg ZXhwZWN0aW5nIEd1QyB0byBtYWtlIHRoaXMgY2hhbmdlIHNvb24sIGJ1dCBzaW5jZQp3ZSBhcmUg Z29pbmcgd2l0aCBHdUMgNjIgdGhhdCB1c2VzIDQ1MDUsIGFncmVlLCB3ZSBuZWVkIGRyb3AgdGhp cyBGSVhNRQoKPiAKPj4gKwo+PiArI2RlZmluZSBIT1NUMkdVQ19SRUdJU1RFUl9DVEJfUkVRVUVT VF9NU0dfTEVOwqDCoMKgwqDCoMKgwqAKPj4gKEdVQ19IWEdfUkVRVUVTVF9NU0dfTUlOX0xFTiAr IDN1KQo+PiArI2RlZmluZSBIT1NUMkdVQ19SRUdJU1RFUl9DVEJfUkVRVUVTVF9NU0dfMF9NQlrC oMKgwqDCoMKgwqDCoAo+PiBHVUNfSFhHX1JFUVVFU1RfTVNHXzBfREFUQTAKPj4gKyNkZWZpbmUg SE9TVDJHVUNfUkVHSVNURVJfQ1RCX1JFUVVFU1RfTVNHXzFfTUJawqDCoMKgwqDCoMKgwqAgKDB4 ZmZmZmYgPDwgMTIpCj4+ICsjZGVmaW5lIEhPU1QyR1VDX1JFR0lTVEVSX0NUQl9SRVFVRVNUX01T R18xX1RZUEXCoMKgwqAgKDB4ZiA8PCA4KQo+PiArI2RlZmluZcKgwqAgR1VDX0NUQl9UWVBFX0hP U1QyR1VDwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB1Cj4+ICsjZGVmaW5lwqDCoCBH VUNfQ1RCX1RZUEVfR1VDMkhPU1TCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMXUKPj4g KyNkZWZpbmUgSE9TVDJHVUNfUkVHSVNURVJfQ1RCX1JFUVVFU1RfTVNHXzFfU0laRcKgwqDCoCAo MHhmZiA8PCAwKQo+PiArI2RlZmluZSBIT1NUMkdVQ19SRUdJU1RFUl9DVEJfUkVRVUVTVF9NU0df Ml9ERVNDX0FERFLCoMKgwqAKPj4gR1VDX0hYR19SRVFVRVNUX01TR19uX0RBVEFuCj4+ICsjZGVm aW5lIEhPU1QyR1VDX1JFR0lTVEVSX0NUQl9SRVFVRVNUX01TR18zX0JVRkZfQUREUsKgwqDCoAo+ PiBHVUNfSFhHX1JFUVVFU1RfTVNHX25fREFUQW4KPiAKPiBUaGUgZnVsbCBtYXNrIHN0aWxsIHNl ZW1zIGxpa2Ugb3ZlcmtpbGwgdG8gbWUgYW5kIEkgc3RpbGwgdGhpbmsgd2UKPiBzaG91bGQgdXNl IEJJVCgpL0dFTk1BU0soKSBhbmQgYSBfTUFTSyBwcmVmaXgsIGJ1dCBub3QgZ29pbmcgdG8gYmxv Y2sgb24KPiBpdC4KPiAKPj4gKwo+PiArI2RlZmluZSBIT1NUMkdVQ19SRUdJU1RFUl9DVEJfUkVT UE9OU0VfTVNHX0xFTsKgwqDCoMKgwqDCoMKgCj4+IEdVQ19IWEdfUkVTUE9OU0VfTVNHX01JTl9M RU4KPj4gKyNkZWZpbmUgSE9TVDJHVUNfUkVHSVNURVJfQ1RCX1JFU1BPTlNFX01TR18wX01CWsKg wqDCoAo+PiBHVUNfSFhHX1JFU1BPTlNFX01TR18wX0RBVEEwCj4+ICsKPj4gKy8qKgo+PiArICog RE9DOiBIT1NUMkdVQ19ERVJFR0lTVEVSX0NUQgo+PiArICoKPj4gKyAqIFRoaXMgbWVzc2FnZSBp cyB1c2VkIGFzIHBhcnQgb2YgdGhlIGBDVEIgYmFzZWQgY29tbXVuaWNhdGlvbmBfCj4+IHRlYXJk b3duLgo+PiArICoKPj4gKyAqIFRoaXMgbWVzc2FnZSBtdXN0IGJlIHNlbnQgYXMgYE1NSU8gSFhH IE1lc3NhZ2VgXy4KPj4gKyAqCj4+ICsgKsKgCj4+ICstLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4KPj4g KyAqwqAgfMKgwqAgfCBCaXRzwqAgfAo+PiBEZXNjcmlwdGlvbsKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwKPj4gKyAqwqAKPj4gKz09PSs9PT09PT09Kz09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kwo+ Pgo+PiArICrCoCB8IDAgfMKgwqDCoCAzMSB8IE9SSUdJTiA9Cj4+IEdVQ19IWEdfT1JJR0lOX0hP U1RfwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgfAo+PiArICrCoCB8wqDCoAo+PiArLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqwqAgfMKg wqAgfCAzMDoyOCB8IFRZUEUgPQo+PiBHVUNfSFhHX1RZUEVfUkVRVUVTVF/CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwKPj4g KyAqwqAgfMKgwqAKPj4gKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+ICsgKsKgIHzCoMKgIHwgMjc6MTYgfCBE QVRBMCA9Cj4+IE1CWsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwK Pj4gKyAqwqAgfMKgwqAKPj4gKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+ICsgKsKgIHzCoMKgIHzCoCAxNTow IHwgQUNUSU9OID0gX2BHVUNfQUNUSU9OX0hPU1QyR1VDX0RFUkVHSVNURVJfQ1RCYCA9Cj4+IDB4 NTIwMcKgwqDCoMKgwqAgfAo+IAo+IFNwZWNzIHNheXMgNDUwNgo+IAo+PiArICrCoAo+PiArLS0t Ky0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rCj4+Cj4+ICsgKsKgIHwgMSB8IDMxOjEyIHwgUkVTRVJWRUQgPQo+PiBN QlrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4+ICsgKsKgIHzCoMKgCj4+ ICstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKwo+PiArICrCoCB8wqDCoCB8wqAgMTE6OCB8ICoqVFlQRSoqIC0gdHlw ZSBvZiB0aGUgYENUCj4+IEJ1ZmZlcmBfwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfAo+PiArICrCoCB8wqDCoCB8wqDCoMKgwqDCoMKgCj4+IHzCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB8Cj4+ICsgKsKgIHzCoMKgIHzCoMKgwqDCoMKgwqAgfCBzZWUKPj4gYEdVQ19BQ1RJT05f SE9TVDJHVUNfUkVHSVNURVJfQ1RCYF/CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgfAo+PiArICrCoCB8wqDCoAo+PiArLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqwqAgfMKg wqAgfMKgwqAgNzowIHwgUkVTRVJWRUQgPQo+PiBNQlrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB8Cj4+ICsgKsKgCj4+ICstLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4KPj4gKyoKPj4g KyAqwqAKPj4gKy0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+Pgo+PiArICrCoCB8wqDCoCB8IEJpdHPCoCB8 Cj4+IERlc2NyaXB0aW9uwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fAo+PiArICrCoAo+PiArPT09Kz09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCj4+Cj4+ICsgKsKgIHwgMCB8wqDCoMKg IDMxIHwgT1JJR0lOID0KPj4gR1VDX0hYR19PUklHSU5fR1VDX8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+PiArICrCoCB8 wqDCoAo+PiArLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqwqAgfMKgwqAgfCAzMDoyOCB8IFRZUEUgPQo+ PiBHVUNfSFhHX1RZUEVfUkVTUE9OU0VfU1VDQ0VTU1/CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwKPj4gKyAqwqAgfMKgwqAKPj4gKy0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r Cj4+ICsgKsKgIHzCoMKgIHzCoCAyNzowIHwgREFUQTAgPQo+PiBNQlrCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4+ICsgKsKgCj4+ICstLS0rLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSsKPj4KPj4gKyAqLwo+PiArI2RlZmluZSBHVUNfQUNUSU9OX0hPU1QyR1VDX0RFUkVHSVNURVJf Q1RCwqDCoMKgwqDCoMKgwqAgMHg0NTA2IC8vIEZJWE1FIDB4NTIwMQo+IAo+IFNhbWUgY29tbWVu dCBmb3IgdGhlIEZJWE1FIGFzIGFib3ZlCj4gCj4+ICsKPj4gKyNkZWZpbmUgSE9TVDJHVUNfREVS RUdJU1RFUl9DVEJfUkVRVUVTVF9NU0dfTEVOwqDCoMKgwqDCoMKgwqAKPj4gKEdVQ19IWEdfUkVR VUVTVF9NU0dfTUlOX0xFTiArIDF1KQo+PiArI2RlZmluZSBIT1NUMkdVQ19ERVJFR0lTVEVSX0NU Ql9SRVFVRVNUX01TR18wX01CWsKgwqDCoAo+PiBHVUNfSFhHX1JFUVVFU1RfTVNHXzBfREFUQTAK Pj4gKyNkZWZpbmUgSE9TVDJHVUNfREVSRUdJU1RFUl9DVEJfUkVRVUVTVF9NU0dfMV9NQlrCoMKg wqAgKDB4ZmZmZmYgPDwgMTIpCj4+ICsjZGVmaW5lIEhPU1QyR1VDX0RFUkVHSVNURVJfQ1RCX1JF UVVFU1RfTVNHXzFfVFlQRcKgwqDCoCAoMHhmIDw8IDgpCj4+ICsjZGVmaW5lIEhPU1QyR1VDX0RF UkVHSVNURVJfQ1RCX1JFUVVFU1RfTVNHXzFfTUJaMsKgwqDCoCAoMHhmZiA8PCAwKQo+PiArCj4+ ICsjZGVmaW5lIEhPU1QyR1VDX0RFUkVHSVNURVJfQ1RCX1JFU1BPTlNFX01TR19MRU7CoMKgwqAK Pj4gR1VDX0hYR19SRVNQT05TRV9NU0dfTUlOX0xFTgo+PiArI2RlZmluZSBIT1NUMkdVQ19ERVJF R0lTVEVSX0NUQl9SRVNQT05TRV9NU0dfMF9NQlrCoMKgwqAKPj4gR1VDX0hYR19SRVNQT05TRV9N U0dfMF9EQVRBMAo+PiArCj4+ICsvKiBsZWdhY3kgZGVmaW5pdGlvbnMgKi8KPj4gKwo+PiDCoCBl bnVtIGludGVsX2d1Y19hY3Rpb24gewo+PiDCoMKgwqDCoMKgIElOVEVMX0dVQ19BQ1RJT05fREVG QVVMVCA9IDB4MCwKPj4gwqDCoMKgwqDCoCBJTlRFTF9HVUNfQUNUSU9OX1JFUVVFU1RfUFJFRU1Q VElPTiA9IDB4MiwKPj4gZGlmZiAtLWdpdAo+PiBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3Vj L2FiaS9ndWNfY29tbXVuaWNhdGlvbl9jdGJfYWJpLmgKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC91Yy9hYmkvZ3VjX2NvbW11bmljYXRpb25fY3RiX2FiaS5oCj4+IGluZGV4IGMyYTA2OWE3 OGUwMS4uMTI3YjI1NmE2NjJjIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC91Yy9hYmkvZ3VjX2NvbW11bmljYXRpb25fY3RiX2FiaS5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L3VjL2FiaS9ndWNfY29tbXVuaWNhdGlvbl9jdGJfYWJpLmgKPj4gQEAgLTEx MiwxMCArMTEyLDYgQEAgc3RhdGljX2Fzc2VydChzaXplb2Yoc3RydWN0IGd1Y19jdF9idWZmZXJf ZGVzYykKPj4gPT0gNjQpOwo+PiDCoMKgICogLSAqKmZsYWdzKiosIGhvbGRzIHZhcmlvdXMgYml0 cyB0byBjb250cm9sIG1lc3NhZ2UgaGFuZGxpbmcKPj4gwqDCoCAqLwo+PiDCoCAtLyogVHlwZSBv ZiBjb21tYW5kIHRyYW5zcG9ydCBidWZmZXIgKi8KPj4gLSNkZWZpbmUgSU5URUxfR1VDX0NUX0JV RkZFUl9UWVBFX1NFTkTCoMKgwqAgMHgwdQo+PiAtI2RlZmluZSBJTlRFTF9HVUNfQ1RfQlVGRkVS X1RZUEVfUkVDVsKgwqDCoCAweDF1Cj4+IC0KPj4gwqAgLyoKPj4gwqDCoCAqIERlZmluaXRpb24g b2YgdGhlIGNvbW1hbmQgdHJhbnNwb3J0IG1lc3NhZ2UgaGVhZGVyIChEVzApCj4+IMKgwqAgKgo+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2N0LmMK Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfY3QuYwo+PiBpbmRleCAz MjQxYTQ3NzE5NmYuLjZhMjliZTc3OWNjOSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2N0LmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvdWMvaW50ZWxfZ3VjX2N0LmMKPj4gQEAgLTEwMyw5ICsxMDMsOSBAQCB2b2lkIGludGVsX2d1 Y19jdF9pbml0X2Vhcmx5KHN0cnVjdCBpbnRlbF9ndWNfY3QgKmN0KQo+PiDCoCBzdGF0aWMgaW5s aW5lIGNvbnN0IGNoYXIgKmd1Y19jdF9idWZmZXJfdHlwZV90b19zdHIodTMyIHR5cGUpCj4+IMKg IHsKPj4gwqDCoMKgwqDCoCBzd2l0Y2ggKHR5cGUpIHsKPj4gLcKgwqDCoCBjYXNlIElOVEVMX0dV Q19DVF9CVUZGRVJfVFlQRV9TRU5EOgo+PiArwqDCoMKgIGNhc2UgR1VDX0NUQl9UWVBFX0hPU1Qy R1VDOgo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuICJTRU5EIjsKPj4gLcKgwqDCoCBjYXNl IElOVEVMX0dVQ19DVF9CVUZGRVJfVFlQRV9SRUNWOgo+PiArwqDCoMKgIGNhc2UgR1VDX0NUQl9U WVBFX0dVQzJIT1NUOgo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuICJSRUNWIjsKPj4gwqDC oMKgwqDCoCBkZWZhdWx0Ogo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuICI8aW52YWxpZD4i Owo+PiBAQCAtMTM2LDI1ICsxMzYsMzMgQEAgc3RhdGljIHZvaWQgZ3VjX2N0X2J1ZmZlcl9pbml0 KHN0cnVjdAo+PiBpbnRlbF9ndWNfY3RfYnVmZmVyICpjdGIsCj4+IMKgwqDCoMKgwqAgZ3VjX2N0 X2J1ZmZlcl9yZXNldChjdGIpOwo+PiDCoCB9Cj4+IMKgIC1zdGF0aWMgaW50IGd1Y19hY3Rpb25f cmVnaXN0ZXJfY3RfYnVmZmVyKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywKPj4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGRlc2NfYWRkciwKPj4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIHR5cGUpCj4+ICtzdGF0aWMgaW50 IGd1Y19hY3Rpb25fcmVnaXN0ZXJfY3RfYnVmZmVyKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgdTMy Cj4+IHR5cGUsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUz MiBkZXNjX2FkZHIsIHUzMiBidWZmX2FkZHIsIHUzMiBzaXplKQo+PiDCoCB7Cj4+IC3CoMKgwqAg dTMyIGFjdGlvbltdID0gewo+PiAtwqDCoMKgwqDCoMKgwqAgSU5URUxfR1VDX0FDVElPTl9SRUdJ U1RFUl9DT01NQU5EX1RSQU5TUE9SVF9CVUZGRVIsCj4+IC3CoMKgwqDCoMKgwqDCoCBkZXNjX2Fk ZHIsCj4+IC3CoMKgwqDCoMKgwqDCoCBzaXplb2Yoc3RydWN0IGd1Y19jdF9idWZmZXJfZGVzYyks Cj4+IC3CoMKgwqDCoMKgwqDCoCB0eXBlCj4+ICvCoMKgwqAgdTMyIHJlcXVlc3RbSE9TVDJHVUNf UkVHSVNURVJfQ1RCX1JFUVVFU1RfTVNHX0xFTl0gPSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBGSUVM RF9QUkVQKEdVQ19IWEdfTVNHXzBfT1JJR0lOLCBHVUNfSFhHX09SSUdJTl9IT1NUKSB8Cj4+ICvC oMKgwqDCoMKgwqDCoCBGSUVMRF9QUkVQKEdVQ19IWEdfTVNHXzBfVFlQRSwgR1VDX0hYR19UWVBF X1JFUVVFU1QpIHwKPj4gK8KgwqDCoMKgwqDCoMKgIEZJRUxEX1BSRVAoR1VDX0hYR19SRVFVRVNU X01TR18wX0FDVElPTiwKPj4gR1VDX0FDVElPTl9IT1NUMkdVQ19SRUdJU1RFUl9DVEIpLAo+IAo+ IElNTyB3ZSBjb3VsZCB1c2UgYSBtYWNybyBvciAyIGZvciB0aGUgSFhHIGhlYWRlciwgdG8gYXZv aWQgYWxsIHRoZXNlCj4gbGluZXMsIHdoaWNoIGFyZSBoYXJkIHRvIHJlYWQuIHNvbWV0aGluZyBs aWtlOgo+IAo+IEdVQ19IWEdfSEVBREVSKG9yaWdpbiwgdHlwZSwgZGF0YSwgYWN0aW9uKSBcCj4g wqDCoMKgIChGSUVMRF9QUkVQKEdVQ19IWEdfTVNHXzBfT1JJR0lOLCBvcmlnaW4pIHwgXAo+IMKg wqDCoMKgIEZJRUxEX1BSRVAoR1VDX0hYR19NU0dfMF9UWVBFLCB0eXBlKSB8IFwKPiBGSUVMRF9Q UkVQKEdVQ19IWEdfTVNHXzBfREFUQTAsIGRhdGEpIHwgXAo+IMKgwqDCoMKgIEZJRUxEX1BSRVAo R1VDX0hYR19SRVFVRVNUX01TR18wX0FDVElPTiwgYWN0aW9uKSkKPiAKPiBIMkdfSEVBREVSKHR5 cGUsIGRhdGEsIGFjdGlvbikgXAo+IMKgwqDCoCBHVUNfSFhHX0hFQURFUihHVUNfSFhHX09SSUdJ Tl9IT1NULCB0eXBlLCBkYXRhLCBhY3Rpb24pCj4gCj4gYW5kIHRoZW4gY2FsbAo+IAo+IEgyR19I RUFERVIoR1VDX0hYR19UWVBFX1JFUVVFU1QsIDAsIEdVQ19BQ1RJT05fSE9TVDJHVUNfUkVHSVNU RVJfQ1RCKQoKbm90ZSB0aGF0IGVhY2ggbWVzc2FnZSB0eXBlIGRlZmluZXMgaXRzIG93biBiaXRz LCBzbyBoZWxwZXJzIG1hY3JvcyB3aWxsCmxpa2VseSBiZSBwZXIgdHlwZSwgYnV0IHN0aWxsIGRv YWJsZSAoYXMgdGhlIGZ1dHVyZSBpbXByb3ZlbWVudCkKCiNkZWZpbmUgSDJHX1JFUVVFU1QoYWN0 aW9uLCBkYXRhKSAuLi4gXAoJR1VDX0FDVElPTl8jI2FjdGlvbgoKCUgyR19SRVFVRVNUKEhPU1Qy R1VDX1JFR0lTVEVSX0NUQiwgMCkKCj4gCj4gCj4gTm90IGEgYmxvY2tlci4KPiAKPiBEYW5pZWxl Cj4gCj4+ICvCoMKgwqDCoMKgwqDCoCBGSUVMRF9QUkVQKEhPU1QyR1VDX1JFR0lTVEVSX0NUQl9S RVFVRVNUX01TR18xX1NJWkUsIHNpemUgLwo+PiBTWl80SyAtIDEpIHwKPj4gK8KgwqDCoMKgwqDC oMKgIEZJRUxEX1BSRVAoSE9TVDJHVUNfUkVHSVNURVJfQ1RCX1JFUVVFU1RfTVNHXzFfVFlQRSwg dHlwZSksCj4+ICvCoMKgwqDCoMKgwqDCoCBGSUVMRF9QUkVQKEhPU1QyR1VDX1JFR0lTVEVSX0NU Ql9SRVFVRVNUX01TR18yX0RFU0NfQUREUiwKPj4gZGVzY19hZGRyKSwKPj4gK8KgwqDCoMKgwqDC oMKgIEZJRUxEX1BSRVAoSE9TVDJHVUNfUkVHSVNURVJfQ1RCX1JFUVVFU1RfTVNHXzNfQlVGRl9B RERSLAo+PiBidWZmX2FkZHIpLAo+PiDCoMKgwqDCoMKgIH07Cj4+IMKgIC3CoMKgwqAgLyogQ2Fu J3QgdXNlIGdlbmVyaWMgc2VuZCgpLCBDVCByZWdpc3RyYXRpb24gbXVzdCBnbyBvdmVyIE1NSU8g Ki8KPj4gLcKgwqDCoCByZXR1cm4gaW50ZWxfZ3VjX3NlbmRfbW1pbyhndWMsIGFjdGlvbiwgQVJS QVlfU0laRShhY3Rpb24pLCBOVUxMLAo+PiAwKTsKPj4gK8KgwqDCoCBHRU1fQlVHX09OKHR5cGUg IT0gR1VDX0NUQl9UWVBFX0hPU1QyR1VDICYmIHR5cGUgIT0KPj4gR1VDX0NUQl9UWVBFX0dVQzJI T1NUKTsKPj4gK8KgwqDCoCBHRU1fQlVHX09OKHNpemUgJSBTWl80Syk7Cj4+ICsKPj4gK8KgwqDC oCAvKiBDVCByZWdpc3RyYXRpb24gbXVzdCBnbyBvdmVyIE1NSU8gKi8KPj4gK8KgwqDCoCByZXR1 cm4gaW50ZWxfZ3VjX3NlbmRfbW1pbyhndWMsIHJlcXVlc3QsIEFSUkFZX1NJWkUocmVxdWVzdCks Cj4+IE5VTEwsIDApOwo+PiDCoCB9Cj4+IMKgIC1zdGF0aWMgaW50IGN0X3JlZ2lzdGVyX2J1ZmZl cihzdHJ1Y3QgaW50ZWxfZ3VjX2N0ICpjdCwgdTMyCj4+IGRlc2NfYWRkciwgdTMyIHR5cGUpCj4+ ICtzdGF0aWMgaW50IGN0X3JlZ2lzdGVyX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZ3VjX2N0ICpjdCwg dTMyIHR5cGUsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBkZXNj X2FkZHIsIHUzMiBidWZmX2FkZHIsIHUzMiBzaXplKQo+PiDCoCB7Cj4+IC3CoMKgwqAgaW50IGVy ciA9IGd1Y19hY3Rpb25fcmVnaXN0ZXJfY3RfYnVmZmVyKGN0X3RvX2d1YyhjdCksIGRlc2NfYWRk ciwKPj4gdHlwZSk7Cj4+ICvCoMKgwqAgaW50IGVycjsKPj4gwqAgK8KgwqDCoCBlcnIgPSBndWNf YWN0aW9uX3JlZ2lzdGVyX2N0X2J1ZmZlcihjdF90b19ndWMoY3QpLCB0eXBlLAo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZXNjX2FkZHIsIGJ1ZmZf YWRkciwgc2l6ZSk7Cj4+IMKgwqDCoMKgwqAgaWYgKHVubGlrZWx5KGVycikpCj4+IMKgwqDCoMKg wqDCoMKgwqDCoCBDVF9FUlJPUihjdCwgIkZhaWxlZCB0byByZWdpc3RlciAlcyBidWZmZXIgKGVy cj0lZClcbiIsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ3VjX2N0X2J1ZmZlcl90 eXBlX3RvX3N0cih0eXBlKSwgZXJyKTsKPj4gQEAgLTE2MywxNCArMTcxLDE3IEBAIHN0YXRpYyBp bnQgY3RfcmVnaXN0ZXJfYnVmZmVyKHN0cnVjdAo+PiBpbnRlbF9ndWNfY3QgKmN0LCB1MzIgZGVz Y19hZGRyLCB1MzIgdHlwZSkKPj4gwqAgwqAgc3RhdGljIGludCBndWNfYWN0aW9uX2RlcmVnaXN0 ZXJfY3RfYnVmZmVyKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywKPj4gdTMyIHR5cGUpCj4+IMKgIHsK Pj4gLcKgwqDCoCB1MzIgYWN0aW9uW10gPSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCBJTlRFTF9HVUNf QUNUSU9OX0RFUkVHSVNURVJfQ09NTUFORF9UUkFOU1BPUlRfQlVGRkVSLAo+PiAtwqDCoMKgwqDC oMKgwqAgQ1RCX09XTkVSX0hPU1QsCj4+IC3CoMKgwqDCoMKgwqDCoCB0eXBlCj4+ICvCoMKgwqAg dTMyIHJlcXVlc3RbSE9TVDJHVUNfREVSRUdJU1RFUl9DVEJfUkVRVUVTVF9NU0dfTEVOXSA9IHsK Pj4gK8KgwqDCoMKgwqDCoMKgIEZJRUxEX1BSRVAoR1VDX0hYR19NU0dfMF9PUklHSU4sIEdVQ19I WEdfT1JJR0lOX0hPU1QpIHwKPj4gK8KgwqDCoMKgwqDCoMKgIEZJRUxEX1BSRVAoR1VDX0hYR19N U0dfMF9UWVBFLCBHVUNfSFhHX1RZUEVfUkVRVUVTVCkgfAo+PiArwqDCoMKgwqDCoMKgwqAgRklF TERfUFJFUChHVUNfSFhHX1JFUVVFU1RfTVNHXzBfQUNUSU9OLAo+PiBHVUNfQUNUSU9OX0hPU1Qy R1VDX0RFUkVHSVNURVJfQ1RCKSwKPj4gK8KgwqDCoMKgwqDCoMKgIEZJRUxEX1BSRVAoSE9TVDJH VUNfREVSRUdJU1RFUl9DVEJfUkVRVUVTVF9NU0dfMV9UWVBFLCB0eXBlKSwKPj4gwqDCoMKgwqDC oCB9Owo+PiDCoCAtwqDCoMKgIC8qIENhbid0IHVzZSBnZW5lcmljIHNlbmQoKSwgQ1QgZGVyZWdp c3RyYXRpb24gbXVzdCBnbyBvdmVyCj4+IE1NSU8gKi8KPj4gLcKgwqDCoCByZXR1cm4gaW50ZWxf Z3VjX3NlbmRfbW1pbyhndWMsIGFjdGlvbiwgQVJSQVlfU0laRShhY3Rpb24pLCBOVUxMLAo+PiAw KTsKPj4gK8KgwqDCoCBHRU1fQlVHX09OKHR5cGUgIT0gR1VDX0NUQl9UWVBFX0hPU1QyR1VDICYm IHR5cGUgIT0KPj4gR1VDX0NUQl9UWVBFX0dVQzJIT1NUKTsKPj4gKwo+PiArwqDCoMKgIC8qIENU IGRlcmVnaXN0cmF0aW9uIG11c3QgZ28gb3ZlciBNTUlPICovCj4+ICvCoMKgwqAgcmV0dXJuIGlu dGVsX2d1Y19zZW5kX21taW8oZ3VjLCByZXF1ZXN0LCBBUlJBWV9TSVpFKHJlcXVlc3QpLAo+PiBO VUxMLCAwKTsKPj4gwqAgfQo+PiDCoCDCoCBzdGF0aWMgaW50IGN0X2RlcmVnaXN0ZXJfYnVmZmVy KHN0cnVjdCBpbnRlbF9ndWNfY3QgKmN0LCB1MzIgdHlwZSkKPj4gQEAgLTI1OCw3ICsyNjksNyBA QCB2b2lkIGludGVsX2d1Y19jdF9maW5pKHN0cnVjdCBpbnRlbF9ndWNfY3QgKmN0KQo+PiDCoCBp bnQgaW50ZWxfZ3VjX2N0X2VuYWJsZShzdHJ1Y3QgaW50ZWxfZ3VjX2N0ICpjdCkKPj4gwqAgewo+ PiDCoMKgwqDCoMKgIHN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9IGN0X3RvX2d1YyhjdCk7Cj4+IC3C oMKgwqAgdTMyIGJhc2UsIGNtZHM7Cj4+ICvCoMKgwqAgdTMyIGJhc2UsIGRlc2MsIGNtZHM7Cj4+ IMKgwqDCoMKgwqAgdm9pZCAqYmxvYjsKPj4gwqDCoMKgwqDCoCBpbnQgZXJyOwo+PiDCoCBAQCAt Mjc0LDIzICsyODUsMjYgQEAgaW50IGludGVsX2d1Y19jdF9lbmFibGUoc3RydWN0IGludGVsX2d1 Y19jdCAqY3QpCj4+IMKgwqDCoMKgwqAgR0VNX0JVR19PTihibG9iICE9IGN0LT5jdGJzLnNlbmQu ZGVzYyk7Cj4+IMKgIMKgwqDCoMKgwqAgLyogKHJlKWluaXRpYWxpemUgZGVzY3JpcHRvcnMgKi8K Pj4gLcKgwqDCoCBjbWRzID0gYmFzZSArIHB0cmRpZmYoY3QtPmN0YnMuc2VuZC5jbWRzLCBibG9i KTsKPj4gwqDCoMKgwqDCoCBndWNfY3RfYnVmZmVyX3Jlc2V0KCZjdC0+Y3Ricy5zZW5kKTsKPj4g LQo+PiAtwqDCoMKgIGNtZHMgPSBiYXNlICsgcHRyZGlmZihjdC0+Y3Ricy5yZWN2LmNtZHMsIGJs b2IpOwo+PiDCoMKgwqDCoMKgIGd1Y19jdF9idWZmZXJfcmVzZXQoJmN0LT5jdGJzLnJlY3YpOwo+ PiDCoCDCoMKgwqDCoMKgIC8qCj4+IMKgwqDCoMKgwqDCoCAqIFJlZ2lzdGVyIGJvdGggQ1QgYnVm ZmVycyBzdGFydGluZyB3aXRoIFJFQ1YgYnVmZmVyLgo+PiDCoMKgwqDCoMKgwqAgKiBEZXNjcmlw dG9ycyBhcmUgaW4gZmlyc3QgaGFsZiBvZiB0aGUgYmxvYi4KPj4gwqDCoMKgwqDCoMKgICovCj4+ IC3CoMKgwqAgZXJyID0gY3RfcmVnaXN0ZXJfYnVmZmVyKGN0LCBiYXNlICsgcHRyZGlmZihjdC0+ Y3Ricy5yZWN2LmRlc2MsCj4+IGJsb2IpLAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgSU5URUxfR1VDX0NUX0JVRkZFUl9UWVBFX1JFQ1YpOwo+PiArwqDCoMKgIGRlc2MgPSBi YXNlICsgcHRyZGlmZihjdC0+Y3Ricy5yZWN2LmRlc2MsIGJsb2IpOwo+PiArwqDCoMKgIGNtZHMg PSBiYXNlICsgcHRyZGlmZihjdC0+Y3Ricy5yZWN2LmNtZHMsIGJsb2IpOwo+PiArwqDCoMKgIGVy ciA9IGN0X3JlZ2lzdGVyX2J1ZmZlcihjdCwgR1VDX0NUQl9UWVBFX0dVQzJIT1NULAo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGVzYywgY21kcywgY3QtPmN0YnMucmVjdi5z aXplICogNCk7Cj4+ICsKPj4gwqDCoMKgwqDCoCBpZiAodW5saWtlbHkoZXJyKSkKPj4gwqDCoMKg wqDCoMKgwqDCoMKgIGdvdG8gZXJyX291dDsKPj4gwqAgLcKgwqDCoCBlcnIgPSBjdF9yZWdpc3Rl cl9idWZmZXIoY3QsIGJhc2UgKyBwdHJkaWZmKGN0LT5jdGJzLnNlbmQuZGVzYywKPj4gYmxvYiks Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBJTlRFTF9HVUNfQ1RfQlVGRkVS X1RZUEVfU0VORCk7Cj4+ICvCoMKgwqAgZGVzYyA9IGJhc2UgKyBwdHJkaWZmKGN0LT5jdGJzLnNl bmQuZGVzYywgYmxvYik7Cj4+ICvCoMKgwqAgY21kcyA9IGJhc2UgKyBwdHJkaWZmKGN0LT5jdGJz LnNlbmQuY21kcywgYmxvYik7Cj4+ICvCoMKgwqAgZXJyID0gY3RfcmVnaXN0ZXJfYnVmZmVyKGN0 LCBHVUNfQ1RCX1RZUEVfSE9TVDJHVUMsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBkZXNjLCBjbWRzLCBjdC0+Y3Ricy5zZW5kLnNpemUgKiA0KTsKPj4gKwo+PiDCoMKgwqDC oMKgIGlmICh1bmxpa2VseShlcnIpKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBlcnJfZGVy ZWdpc3RlcjsKPj4gwqAgQEAgLTI5OSw3ICszMTMsNyBAQCBpbnQgaW50ZWxfZ3VjX2N0X2VuYWJs ZShzdHJ1Y3QgaW50ZWxfZ3VjX2N0ICpjdCkKPj4gwqDCoMKgwqDCoCByZXR1cm4gMDsKPj4gwqAg wqAgZXJyX2RlcmVnaXN0ZXI6Cj4+IC3CoMKgwqAgY3RfZGVyZWdpc3Rlcl9idWZmZXIoY3QsIElO VEVMX0dVQ19DVF9CVUZGRVJfVFlQRV9SRUNWKTsKPj4gK8KgwqDCoCBjdF9kZXJlZ2lzdGVyX2J1 ZmZlcihjdCwgR1VDX0NUQl9UWVBFX0dVQzJIT1NUKTsKPj4gwqAgZXJyX291dDoKPj4gwqDCoMKg wqDCoCBDVF9QUk9CRV9FUlJPUihjdCwgIkZhaWxlZCB0byBlbmFibGUgQ1RCICglcGUpXG4iLCBF UlJfUFRSKGVycikpOwo+PiDCoMKgwqDCoMKgIHJldHVybiBlcnI7Cj4+IEBAIC0zMTgsOCArMzMy LDggQEAgdm9pZCBpbnRlbF9ndWNfY3RfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZ3VjX2N0ICpjdCkK Pj4gwqDCoMKgwqDCoCBjdC0+ZW5hYmxlZCA9IGZhbHNlOwo+PiDCoCDCoMKgwqDCoMKgIGlmIChp bnRlbF9ndWNfaXNfZndfcnVubmluZyhndWMpKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCBjdF9kZXJl Z2lzdGVyX2J1ZmZlcihjdCwgSU5URUxfR1VDX0NUX0JVRkZFUl9UWVBFX1NFTkQpOwo+PiAtwqDC oMKgwqDCoMKgwqAgY3RfZGVyZWdpc3Rlcl9idWZmZXIoY3QsIElOVEVMX0dVQ19DVF9CVUZGRVJf VFlQRV9SRUNWKTsKPj4gK8KgwqDCoMKgwqDCoMKgIGN0X2RlcmVnaXN0ZXJfYnVmZmVyKGN0LCBH VUNfQ1RCX1RZUEVfSE9TVDJHVUMpOwo+PiArwqDCoMKgwqDCoMKgwqAgY3RfZGVyZWdpc3Rlcl9i dWZmZXIoY3QsIEdVQ19DVEJfVFlQRV9HVUMySE9TVCk7Cj4+IMKgwqDCoMKgwqAgfQo+PiDCoCB9 Cj4+IMKgIAo+IApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK