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=-12.0 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,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 193C7C433DB for ; Mon, 11 Jan 2021 09:25:53 +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 898E9224F9 for ; Mon, 11 Jan 2021 09:25:52 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 898E9224F9 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=amd-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id E33FC6E077; Mon, 11 Jan 2021 09:25:51 +0000 (UTC) Received: from mail-ej1-x630.google.com (mail-ej1-x630.google.com [IPv6:2a00:1450:4864:20::630]) by gabe.freedesktop.org (Postfix) with ESMTPS id EA0D06E077 for ; Mon, 11 Jan 2021 09:25:50 +0000 (UTC) Received: by mail-ej1-x630.google.com with SMTP id lt17so23752981ejb.3 for ; Mon, 11 Jan 2021 01:25:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=reply-to:subject:to:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding:content-language; bh=6ZXcEh1Hdf803ZC2BowmIRs9D6yPc/t3IuFAgNNncDw=; b=vUC1Y1Nt5ilJm8VG+o4WtUJJcC/LRlBaRkHZTPCV6aVKZ12KB490172ugd5uj04/Wf eNkK7UG9unqe+kjHLozIGrdz3+1IZIX2YJbDWBuzGw+B/8W/OKwP8ZsU9z8VFyajWOxR 0scZVY23UsPatj3pS4H0IG7kOB88MWjdz3sX+nrNDhMZG+Gu61cyBBvk9dYMjnvi926Y PFKRGU5cfIgGKv8q6B0+N/9DdvrlM01TrcywrrJCIksDgTHAXAna5jEKU1LR97e1Vs3d 22vQOKpZMhUimyxdTVL5RuVvDsDsOjOejc/QVkipj2xY9ruiLkqt5HHVmcBGwfGPuy8K ghDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:reply-to:subject:to:references:from:message-id :date:user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=6ZXcEh1Hdf803ZC2BowmIRs9D6yPc/t3IuFAgNNncDw=; b=fh1HJ38prDk+W2LNHpuf2/heuAZ1b7C/qZakoZwuFWK1waslRNT4Mv4xB27Y24aOeJ NenxtyVtD5qevw7gL6FcToE4gVi0aJU23DG/AjqQoiHy6tJHY6ErYgQ7cqflPS9nosYq RDqiiEbPW/EcqQlk5pRRp1uM4emB2qdxvi6wJlw8CQRlbIox2xaqs83cFA4S8yBKghoG Nee9odmNQynaguF4PeFnp+APkes5Nk+Wecjb/dMCImlkz+gYiEEvz9JS5G/2yhHl3uRR uVKWbcwxiox7wowFAGHutk/3gmCvBOpsCdvnUCeUpvi9nXpnXKIthvxvQsVyDstoo8Vn ZkRA== X-Gm-Message-State: AOAM531VqgfO6AJ27ItJVKTB79zedoQ6LHZBraKuCWuY8RT67/yLjWxm Ni14MhREjXo9uf0LTWYV5RE7mToUMOo= X-Google-Smtp-Source: ABdhPJxosXqElLckNGwiFBaR/VfEMTtYIqwD786YpQxT2EYX2spcZYe4FMWIXgHpNieSPFYsGVOWoA== X-Received: by 2002:a17:906:2898:: with SMTP id o24mr9979928ejd.215.1610357149276; Mon, 11 Jan 2021 01:25:49 -0800 (PST) Received: from ?IPv6:2a02:908:1252:fb60:be8a:bd56:1f94:86e7? ([2a02:908:1252:fb60:be8a:bd56:1f94:86e7]) by smtp.gmail.com with ESMTPSA id ga11sm6822915ejb.34.2021.01.11.01.25.47 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 11 Jan 2021 01:25:48 -0800 (PST) Subject: Re: [PATCH v2 1/1] drm/amdgpu: cleanup vce,vcn,uvd ring selftests To: Nirmoy , =?UTF-8?Q?Christian_K=c3=b6nig?= , Nirmoy Das , amd-gfx@lists.freedesktop.org References: <6ef74186-56a2-6f38-b73b-b618fd1b5db0@amd.com> <20201218144024.4994-1-nirmoy.das@amd.com> <7c54d56f-5fe3-e874-6749-d08efa1a9f29@amd.com> From: =?UTF-8?Q?Christian_K=c3=b6nig?= Message-ID: Date: Mon, 11 Jan 2021 10:25:46 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US X-BeenThere: amd-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: christian.koenig@amd.com Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: amd-gfx-bounces@lists.freedesktop.org Sender: "amd-gfx" QW0gMDguMDEuMjEgdW0gMTY6NDIgc2NocmllYiBOaXJtb3k6Cj4KPiBPbiAxLzgvMjEgNDoyNSBQ TSwgQ2hyaXN0aWFuIEvDtm5pZyB3cm90ZToKPj4gQW0gMTguMTIuMjAgdW0gMTU6NDAgc2Nocmll YiBOaXJtb3kgRGFzOgo+Pj4gVXNlIGFtZGdwdV9zYV9ibyBpbnN0ZWFkIG9mIGFtZGdwdV9iby4K Pj4+Cj4+PiB2MjoKPj4+ICogZG8gbm90IGluaXRpYWxpemUgYm8gdG8gZ2V0IGhpbnQgZnJvbSBj b21waWxlciBmb3IgLVd1bmluaXRpYWxpemVkCj4+PiAqIHBhc3MgTlVMTCBmZW5jZSB0byBhbWRn cHVfc2FfYm9fZnJlZSBpZiBmZW5jZSBpcyB1bmRlZmluZWQuCj4+Cj4+IEZvdW5kIGEgbWFqb3Ig YnVnIGluIHRoaXMgd2hpY2ggaXMgcHJvYmFibHkgdGhlIHJlYXNvbiB3aHkgdGhhdCBuZXZlciAK Pj4gd29ya2VkIGJlZm9yZS4KPj4KPj4gU2VlIGJlbG93Lgo+Pgo+Pj4KPj4+IFNpZ25lZC1vZmYt Ynk6IE5pcm1veSBEYXMgPG5pcm1veS5kYXNAYW1kLmNvbT4KPj4+IC0tLQo+Pj4gwqAgZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3V2ZC5jIHwgNTYgCj4+PiArKysrKysrLS0tLS0t LS0tLS0tLS0tLS0tCj4+PiDCoCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmNl LmMgfCAxNyArKysrLS0tLQo+Pj4gwqAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X3Zjbi5jIHwgNDcgKysrKysrKysrKy0tLS0tLS0tLS0tCj4+PiDCoCAzIGZpbGVzIGNoYW5nZWQs IDQ1IGluc2VydGlvbnMoKyksIDc1IGRlbGV0aW9ucygtKQo+Pj4KPj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXZkLmMgCj4+PiBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91dmQuYwo+Pj4gaW5kZXggOGI5ODk2NzBlZDY2Li4xMzQ1 MGEzZGYwNDQgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfdXZkLmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91dmQu Ywo+Pj4gQEAgLTEwNTcsNyArMTA1Nyw3IEBAIGludCBhbWRncHVfdXZkX3JpbmdfcGFyc2VfY3Mo c3RydWN0IAo+Pj4gYW1kZ3B1X2NzX3BhcnNlciAqcGFyc2VyLCB1aW50MzJfdCBpYl9pZHgpCj4+ PiDCoMKgwqDCoMKgIHJldHVybiAwOwo+Pj4gwqAgfQo+Pj4KPj4+IC1zdGF0aWMgaW50IGFtZGdw dV91dmRfc2VuZF9tc2coc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLCBzdHJ1Y3QgCj4+PiBhbWRn cHVfYm8gKmJvLAo+Pj4gK3N0YXRpYyBpbnQgYW1kZ3B1X3V2ZF9zZW5kX21zZyhzdHJ1Y3QgYW1k Z3B1X3JpbmcgKnJpbmcsIHN0cnVjdCAKPj4+IGFtZGdwdV9zYV9ibyAqYm8sCj4+PiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJvb2wgZGlyZWN0LCBzdHJ1Y3QgZG1h X2ZlbmNlICoqZmVuY2UpCj4+PiDCoCB7Cj4+PiDCoMKgwqDCoMKgIHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2ID0gcmluZy0+YWRldjsKPj4+IEBAIC0xMDcxLDE5ICsxMDcxLDYgQEAgc3RhdGlj IGludCBhbWRncHVfdXZkX3NlbmRfbXNnKHN0cnVjdCAKPj4+IGFtZGdwdV9yaW5nICpyaW5nLCBz dHJ1Y3QgYW1kZ3B1X2JvICpibywKPj4+IMKgwqDCoMKgwqAgdW5zaWduZWQgb2Zmc2V0X2lkeCA9 IDA7Cj4+PiDCoMKgwqDCoMKgIHVuc2lnbmVkIG9mZnNldFszXSA9IHsgVVZEX0JBU0VfU0ksIDAs IDAgfTsKPj4+Cj4+PiAtwqDCoMKgIGFtZGdwdV9ib19rdW5tYXAoYm8pOwo+Pj4gLcKgwqDCoCBh bWRncHVfYm9fdW5waW4oYm8pOwo+Pj4gLQo+Pj4gLcKgwqDCoCBpZiAoIXJpbmctPmFkZXYtPnV2 ZC5hZGRyZXNzXzY0X2JpdCkgewo+Pj4gLcKgwqDCoMKgwqDCoMKgIHN0cnVjdCB0dG1fb3BlcmF0 aW9uX2N0eCBjdHggPSB7IHRydWUsIGZhbHNlIH07Cj4+PiAtCj4+PiAtwqDCoMKgwqDCoMKgwqAg YW1kZ3B1X2JvX3BsYWNlbWVudF9mcm9tX2RvbWFpbihibywgQU1ER1BVX0dFTV9ET01BSU5fVlJB TSk7Cj4+PiAtwqDCoMKgwqDCoMKgwqAgYW1kZ3B1X3V2ZF9mb3JjZV9pbnRvX3V2ZF9zZWdtZW50 KGJvKTsKPj4+IC3CoMKgwqDCoMKgwqDCoCByID0gdHRtX2JvX3ZhbGlkYXRlKCZiby0+dGJvLCAm Ym8tPnBsYWNlbWVudCwgJmN0eCk7Cj4+PiAtwqDCoMKgwqDCoMKgwqAgaWYgKHIpCj4+PiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGVycjsKPj4+IC3CoMKgwqAgfQo+Pj4gLQo+Pj4gwqDC oMKgwqDCoCByID0gYW1kZ3B1X2pvYl9hbGxvY193aXRoX2liKGFkZXYsIDY0LCBkaXJlY3QgPyAK Pj4+IEFNREdQVV9JQl9QT09MX0RJUkVDVCA6Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBBTURHUFVfSUJfUE9PTF9ERUxBWUVELCAmam9iKTsKPj4+IMKg wqDCoMKgwqAgaWYgKHIpCj4+PiBAQCAtMTEwMSw3ICsxMDg4LDcgQEAgc3RhdGljIGludCBhbWRn cHVfdXZkX3NlbmRfbXNnKHN0cnVjdCAKPj4+IGFtZGdwdV9yaW5nICpyaW5nLCBzdHJ1Y3QgYW1k Z3B1X2JvICpibywKPj4+IMKgwqDCoMKgwqAgZGF0YVszXSA9IFBBQ0tFVDAob2Zmc2V0W29mZnNl dF9pZHhdICsgVVZEX05PX09QLCAwKTsKPj4+Cj4+PiDCoMKgwqDCoMKgIGliID0gJmpvYi0+aWJz WzBdOwo+Pj4gLcKgwqDCoCBhZGRyID0gYW1kZ3B1X2JvX2dwdV9vZmZzZXQoYm8pOwo+Pj4gK8Kg wqDCoCBhZGRyID0gYW1kZ3B1X3NhX2JvX2dwdV9hZGRyKGJvKTsKPj4+IMKgwqDCoMKgwqAgaWIt PnB0clswXSA9IGRhdGFbMF07Cj4+PiDCoMKgwqDCoMKgIGliLT5wdHJbMV0gPSBhZGRyOwo+Pj4g wqDCoMKgwqDCoCBpYi0+cHRyWzJdID0gZGF0YVsxXTsKPj4+IEBAIC0xMTE1LDMzICsxMTAyLDE3 IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X3V2ZF9zZW5kX21zZyhzdHJ1Y3QgCj4+PiBhbWRncHVfcmlu ZyAqcmluZywgc3RydWN0IGFtZGdwdV9ibyAqYm8sCj4+PiDCoMKgwqDCoMKgIGliLT5sZW5ndGhf ZHcgPSAxNjsKPj4+Cj4+PiDCoMKgwqDCoMKgIGlmIChkaXJlY3QpIHsKPj4+IC3CoMKgwqDCoMKg wqDCoCByID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3JjdShiby0+dGJvLmJhc2UucmVzdiwKPj4+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg dHJ1ZSwgZmFsc2UsCj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIG1zZWNzX3RvX2ppZmZpZXMoMTApKTsKPj4+IC3CoMKgwqDCoMKgwqDC oCBpZiAociA9PSAwKQo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgciA9IC1FVElNRURPVVQ7 Cj4+PiAtwqDCoMKgwqDCoMKgwqAgaWYgKHIgPCAwKQo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgZ290byBlcnJfZnJlZTsKPj4+IC0KPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByID0gYW1kZ3B1 X2pvYl9zdWJtaXRfZGlyZWN0KGpvYiwgcmluZywgJmYpOwo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKg IGlmIChyKQo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBlcnJfZnJlZTsKPj4+ IMKgwqDCoMKgwqAgfSBlbHNlIHsKPj4+IC3CoMKgwqDCoMKgwqDCoCByID0gYW1kZ3B1X3N5bmNf cmVzdihhZGV2LCAmam9iLT5zeW5jLCBiby0+dGJvLmJhc2UucmVzdiwKPj4+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEFNREdQVV9TWU5DX0FMV0FZUywKPj4+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEFNREdQVV9GRU5DRV9PV05F Ul9VTkRFRklORUQpOwo+Pj4gLcKgwqDCoMKgwqDCoMKgIGlmIChyKQo+Pj4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgZ290byBlcnJfZnJlZTsKPj4+IC0KPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBy ID0gYW1kZ3B1X2pvYl9zdWJtaXQoam9iLCAmYWRldi0+dXZkLmVudGl0eSwKPj4+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQU1ER1BVX0ZFTkNFX09XTkVS X1VOREVGSU5FRCwgJmYpOwo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChyKQo+Pj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBlcnJfZnJlZTsKPj4+IMKgwqDCoMKgwqAgfQo+Pj4K Pj4+IC3CoMKgwqAgYW1kZ3B1X2JvX2ZlbmNlKGJvLCBmLCBmYWxzZSk7Cj4+PiAtwqDCoMKgIGFt ZGdwdV9ib191bnJlc2VydmUoYm8pOwo+Pj4gLcKgwqDCoCBhbWRncHVfYm9fdW5yZWYoJmJvKTsK Pj4+ICvCoMKgwqAgYW1kZ3B1X3NhX2JvX2ZyZWUoYWRldiwgJmJvLCBmKTsKPj4+Cj4+PiDCoMKg wqDCoMKgIGlmIChmZW5jZSkKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAqZmVuY2UgPSBkbWFfZmVu Y2VfZ2V0KGYpOwo+Pj4gQEAgLTExNTMsOCArMTEyNCw3IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X3V2 ZF9zZW5kX21zZyhzdHJ1Y3QgCj4+PiBhbWRncHVfcmluZyAqcmluZywgc3RydWN0IGFtZGdwdV9i byAqYm8sCj4+PiDCoMKgwqDCoMKgIGFtZGdwdV9qb2JfZnJlZShqb2IpOwo+Pj4KPj4+IMKgIGVy cjoKPj4+IC3CoMKgwqAgYW1kZ3B1X2JvX3VucmVzZXJ2ZShibyk7Cj4+PiAtwqDCoMKgIGFtZGdw dV9ib191bnJlZigmYm8pOwo+Pj4gK8KgwqDCoCBhbWRncHVfc2FfYm9fZnJlZShhZGV2LCAmYm8s IE5VTEwpOwo+Pj4gwqDCoMKgwqDCoCByZXR1cm4gcjsKPj4+IMKgIH0KPj4+Cj4+PiBAQCAtMTE2 NSwxNiArMTEzNSwxNyBAQCBpbnQgYW1kZ3B1X3V2ZF9nZXRfY3JlYXRlX21zZyhzdHJ1Y3QgCj4+ PiBhbWRncHVfcmluZyAqcmluZywgdWludDMyX3QgaGFuZGxlLAo+Pj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRtYV9mZW5jZSAqKmZlbmNlKQo+Pj4gwqAg ewo+Pj4gwqDCoMKgwqDCoCBzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IHJpbmctPmFkZXY7 Cj4+PiAtwqDCoMKgIHN0cnVjdCBhbWRncHVfYm8gKmJvID0gTlVMTDsKPj4+ICvCoMKgwqAgc3Ry dWN0IGFtZGdwdV9zYV9ibyAqYm87Cj4+PiDCoMKgwqDCoMKgIHVpbnQzMl90ICptc2c7Cj4+PiDC oMKgwqDCoMKgIGludCByLCBpOwo+Pj4KPj4+IC3CoMKgwqAgciA9IGFtZGdwdV9ib19jcmVhdGVf cmVzZXJ2ZWQoYWRldiwgMTAyNCwgUEFHRV9TSVpFLAo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBTURHUFVfR0VNX0RPTUFJTl9WUkFNLAo+Pj4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmYm8sIE5VTEwsICh2b2lkICoq KSZtc2cpOwo+Pj4gK8KgwqDCoCByID0gYW1kZ3B1X3NhX2JvX25ldygmYWRldi0+aWJfcG9vbHNb QU1ER1BVX0lCX1BPT0xfRElSRUNUXSwKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAmYm8sIDEwMjQsIFBBR0VfU0laRSk7Cj4+Cj4+IFRoaXMgMTAyNCBoZXJlIGlzIHdyb25n LiBUaGUgc2l6ZSBpcyBpbiBieXRlcyBhbmQgbm90IGRvdWJsZSB3b3Jkcy4gCj4+IFNvIHRoaXMg bmVlZHMgdG8gYmUgNDA5Ni4KPj4KPj4gVGhpcyBvbmx5IHdvcmtlZCBiZWNhdXNlIGFtZGdwdV9i b19jcmVhdGVfcmVzZXJ2ZWQgYWx3YXlzIGFsbG9jYXRlZCBhIAo+PiBmdWxsIHBhZ2UgaW5zdGVh ZCBvZiAxMDI0IGJ5dGVzLgo+Pgo+PiBTYW1lIHByb2JsZW0gb24gYWxsIG90aGVyIG9jY2FzaW9u cy4KPgo+Cj4gSSB3b25kZXIgd2h5IGl0IHdvcmtlZCBvbiBuZXdlciBjYXJkcy4KCk1heWJlIGp1 c3QgY29pbmNpZGVudCwgYnV0IHRoZXJlIG11c3QgYmUgbW9yZSBwcm9ibGVtcy4gRXZlbiB3aXRo IHRoZSAKc2l6ZSBmaXhlZCBJIGdldCBhIGhhbmcgb2YgdGhlIElCIHRlc3RzIGR1cmluZyBib290 LgoKQ2hyaXN0aWFuLgoKPgo+Cj4+Cj4+IEFkZGl0aW9uYWwgdG8gdGhhdCB0aGUgZGlyZWN0IHBv b2wgc2hvdWxkIG9ubHkgYmUgdXNlZCBpZiB3ZSBzdWJtaXQgCj4+IGRpcmVjdGx5LCBlLmcuIGR1 cmluZyBhIEdQVSByZXNldC4KPj4KPj4gT3RoZXJ3aXNlIHdlIG5lZWQgdG8gdXNlIHRoZSBub3Jt YWwgcG9vbC4KPgo+Cj4gSSB3aWxsIHJlc2VuZCB3aXRoIGFib3ZlIGNoYW5nZXMuCj4KPgo+IFRo YW5rcywKPgo+IE5pcm1veQo+Cj4KPj4KPj4gUmVnYXJkcywKPj4gQ2hyaXN0aWFuLgo+Pgo+Pgo+ Pj4gKwo+Pj4gwqDCoMKgwqDCoCBpZiAocikKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4g cjsKPj4+Cj4+PiArwqDCoMKgIG1zZyA9IGFtZGdwdV9zYV9ib19jcHVfYWRkcihibyk7Cj4+PiDC oMKgwqDCoMKgIC8qIHN0aXRjaCB0b2dldGhlciBhbiBVVkQgY3JlYXRlIG1zZyAqLwo+Pj4gwqDC oMKgwqDCoCBtc2dbMF0gPSBjcHVfdG9fbGUzMigweDAwMDAwZGU0KTsKPj4+IMKgwqDCoMKgwqAg bXNnWzFdID0gY3B1X3RvX2xlMzIoMHgwMDAwMDAwMCk7Cj4+PiBAQCAtMTE5NywxNiArMTE2OCwx NyBAQCBpbnQgYW1kZ3B1X3V2ZF9nZXRfZGVzdHJveV9tc2coc3RydWN0IAo+Pj4gYW1kZ3B1X3Jp bmcgKnJpbmcsIHVpbnQzMl90IGhhbmRsZSwKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgYm9vbCBkaXJlY3QsIHN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZSkKPj4+ IMKgIHsKPj4+IMKgwqDCoMKgwqAgc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSByaW5nLT5h ZGV2Owo+Pj4gLcKgwqDCoCBzdHJ1Y3QgYW1kZ3B1X2JvICpibyA9IE5VTEw7Cj4+PiArwqDCoMKg IHN0cnVjdCBhbWRncHVfc2FfYm8gKmJvOwo+Pj4gwqDCoMKgwqDCoCB1aW50MzJfdCAqbXNnOwo+ Pj4gwqDCoMKgwqDCoCBpbnQgciwgaTsKPj4+Cj4+PiAtwqDCoMKgIHIgPSBhbWRncHVfYm9fY3Jl YXRlX3Jlc2VydmVkKGFkZXYsIDEwMjQsIFBBR0VfU0laRSwKPj4+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQU1ER1BVX0dFTV9ET01BSU5fVlJBTSwKPj4+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJmJvLCBOVUxMLCAodm9p ZCAqKikmbXNnKTsKPj4+ICvCoMKgwqAgciA9IGFtZGdwdV9zYV9ib19uZXcoJmFkZXYtPmliX3Bv b2xzW0FNREdQVV9JQl9QT09MX0RJUkVDVF0sCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgJmJvLCAxMDI0LCBQQUdFX1NJWkUpOwo+Pj4gKwo+Pj4gwqDCoMKgwqDCoCBpZiAo cikKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcjsKPj4+Cj4+PiArwqDCoMKgIG1zZyA9 IGFtZGdwdV9zYV9ib19jcHVfYWRkcihibyk7Cj4+PiDCoMKgwqDCoMKgIC8qIHN0aXRjaCB0b2dl dGhlciBhbiBVVkQgZGVzdHJveSBtc2cgKi8KPj4+IMKgwqDCoMKgwqAgbXNnWzBdID0gY3B1X3Rv X2xlMzIoMHgwMDAwMGRlNCk7Cj4+PiDCoMKgwqDCoMKgIG1zZ1sxXSA9IGNwdV90b19sZTMyKDB4 MDAwMDAwMDIpOwo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV92Y2UuYyAKPj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZjZS5j Cj4+PiBpbmRleCAwZDUyODRiOTM2ZTQuLmJjZTI5ZDY5NzVkMyAxMDA2NDQKPj4+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92Y2UuYwo+Pj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZjZS5jCj4+PiBAQCAtODEsNyArODEsNyBAQCBNT0RV TEVfRklSTVdBUkUoRklSTVdBUkVfVkVHQTIwKTsKPj4+Cj4+PiDCoCBzdGF0aWMgdm9pZCBhbWRn cHVfdmNlX2lkbGVfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7Cj4+PiDC oCBzdGF0aWMgaW50IGFtZGdwdV92Y2VfZ2V0X2NyZWF0ZV9tc2coc3RydWN0IGFtZGdwdV9yaW5n ICpyaW5nLCAKPj4+IHVpbnQzMl90IGhhbmRsZSwKPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBhbWRncHVfYm8gKmJvLAo+Pj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGFtZGdwdV9zYV9ibyAqYm8sCj4+ PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZG1h X2ZlbmNlICoqZmVuY2UpOwo+Pj4gwqAgc3RhdGljIGludCBhbWRncHVfdmNlX2dldF9kZXN0cm95 X21zZyhzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIAo+Pj4gdWludDMyX3QgaGFuZGxlLAo+Pj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBib29sIGRpcmVj dCwgc3RydWN0IGRtYV9mZW5jZSAqKmZlbmNlKTsKPj4+IEBAIC00MzcsNyArNDM3LDcgQEAgdm9p ZCBhbWRncHVfdmNlX2ZyZWVfaGFuZGxlcyhzdHJ1Y3QgCj4+PiBhbWRncHVfZGV2aWNlICphZGV2 LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbHApCj4+PiDCoMKgICogT3BlbiB1cCBhIHN0cmVhbSBmb3Ig SFcgdGVzdAo+Pj4gwqDCoCAqLwo+Pj4gwqAgc3RhdGljIGludCBhbWRncHVfdmNlX2dldF9jcmVh dGVfbXNnKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgCj4+PiB1aW50MzJfdCBoYW5kbGUsCj4+ PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgYW1kZ3B1 X2JvICpibywKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0 cnVjdCBhbWRncHVfc2FfYm8gKmJvLAo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgc3RydWN0IGRtYV9mZW5jZSAqKmZlbmNlKQo+Pj4gwqAgewo+Pj4gwqDC oMKgwqDCoCBjb25zdCB1bnNpZ25lZCBpYl9zaXplX2R3ID0gMTAyNDsKPj4+IEBAIC00NTQsNyAr NDU0LDcgQEAgc3RhdGljIGludCBhbWRncHVfdmNlX2dldF9jcmVhdGVfbXNnKHN0cnVjdCAKPj4+ IGFtZGdwdV9yaW5nICpyaW5nLCB1aW50MzJfdCBoYW5kbGUsCj4+Pgo+Pj4gwqDCoMKgwqDCoCBp YiA9ICZqb2ItPmlic1swXTsKPj4+Cj4+PiAtwqDCoMKgIGFkZHIgPSBhbWRncHVfYm9fZ3B1X29m ZnNldChibyk7Cj4+PiArwqDCoMKgIGFkZHIgPSBhbWRncHVfc2FfYm9fZ3B1X2FkZHIoYm8pOwo+ Pj4KPj4+IMKgwqDCoMKgwqAgLyogc3RpdGNoIHRvZ2V0aGVyIGFuIFZDRSBjcmVhdGUgbXNnICov Cj4+PiDCoMKgwqDCoMKgIGliLT5sZW5ndGhfZHcgPSAwOwo+Pj4gQEAgLTExMzAsMTYgKzExMzAs MTYgQEAgaW50IGFtZGdwdV92Y2VfcmluZ190ZXN0X3Jpbmcoc3RydWN0IAo+Pj4gYW1kZ3B1X3Jp bmcgKnJpbmcpCj4+PiDCoCBpbnQgYW1kZ3B1X3ZjZV9yaW5nX3Rlc3RfaWIoc3RydWN0IGFtZGdw dV9yaW5nICpyaW5nLCBsb25nIHRpbWVvdXQpCj4+PiDCoCB7Cj4+PiDCoMKgwqDCoMKgIHN0cnVj dCBkbWFfZmVuY2UgKmZlbmNlID0gTlVMTDsKPj4+IC3CoMKgwqAgc3RydWN0IGFtZGdwdV9ibyAq Ym8gPSBOVUxMOwo+Pj4gK8KgwqDCoCBzdHJ1Y3QgYW1kZ3B1X3NhX2JvICpibyA9IE5VTEw7Cj4+ PiArwqDCoMKgIHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gcmluZy0+YWRldjsKPj4+IMKg wqDCoMKgwqAgbG9uZyByOwo+Pj4KPj4+IMKgwqDCoMKgwqAgLyogc2tpcCB2Y2UgcmluZzEvMiBp YiB0ZXN0IGZvciBub3csIHNpbmNlIGl0J3Mgbm90IHJlbGlhYmxlICovCj4+PiDCoMKgwqDCoMKg IGlmIChyaW5nICE9ICZyaW5nLT5hZGV2LT52Y2UucmluZ1swXSkKPj4+IMKgwqDCoMKgwqDCoMKg wqDCoCByZXR1cm4gMDsKPj4+Cj4+PiAtwqDCoMKgIHIgPSBhbWRncHVfYm9fY3JlYXRlX3Jlc2Vy dmVkKHJpbmctPmFkZXYsIDUxMiwgUEFHRV9TSVpFLAo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBTURHUFVfR0VNX0RPTUFJTl9WUkFNLAo+Pj4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmYm8sIE5VTEwsIE5VTEwpOwo+ Pj4gK8KgwqDCoCByID0gYW1kZ3B1X3NhX2JvX25ldygmYWRldi0+aWJfcG9vbHNbQU1ER1BVX0lC X1BPT0xfRElSRUNUXSwKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmYm8s IDUxMiwgUEFHRV9TSVpFKTsKPj4+IMKgwqDCoMKgwqAgaWYgKHIpCj4+PiDCoMKgwqDCoMKgwqDC oMKgwqAgcmV0dXJuIHI7Cj4+Pgo+Pj4gQEAgLTExNTgsOCArMTE1OCw3IEBAIGludCBhbWRncHVf dmNlX3JpbmdfdGVzdF9pYihzdHJ1Y3QgYW1kZ3B1X3JpbmcgCj4+PiAqcmluZywgbG9uZyB0aW1l b3V0KQo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIHIgPSAwOwo+Pj4KPj4+IMKgIGVycm9yOgo+Pj4g K8KgwqDCoCBhbWRncHVfc2FfYm9fZnJlZShhZGV2LCAmYm8sIGZlbmNlKTsKPj4+IMKgwqDCoMKg wqAgZG1hX2ZlbmNlX3B1dChmZW5jZSk7Cj4+PiAtwqDCoMKgIGFtZGdwdV9ib191bnJlc2VydmUo Ym8pOwo+Pj4gLcKgwqDCoCBhbWRncHVfYm9fdW5yZWYoJmJvKTsKPj4+IMKgwqDCoMKgwqAgcmV0 dXJuIHI7Cj4+PiDCoCB9Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X3Zjbi5jIAo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf dmNuLmMKPj4+IGluZGV4IDRhNzdjNzQyNGRmYy4uMWU0NmIyZjg5NWJhIDEwMDY0NAo+Pj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Zjbi5jCj4+PiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmNuLmMKPj4+IEBAIC00ODgsNyArNDg4LDcg QEAgaW50IGFtZGdwdV92Y25fZGVjX3N3X3JpbmdfdGVzdF9yaW5nKHN0cnVjdCAKPj4+IGFtZGdw dV9yaW5nICpyaW5nKQo+Pj4gwqAgfQo+Pj4KPj4+IMKgIHN0YXRpYyBpbnQgYW1kZ3B1X3Zjbl9k ZWNfc2VuZF9tc2coc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLAo+Pj4gLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgYW1kZ3B1X2JvICpibywKPj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGFtZGdwdV9zYV9ibyAqYm8sCj4+ PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkbWFfZmVu Y2UgKipmZW5jZSkKPj4+IMKgIHsKPj4+IMKgwqDCoMKgwqAgc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYgPSByaW5nLT5hZGV2Owo+Pj4gQEAgLTUwNCw3ICs1MDQsOCBAQCBzdGF0aWMgaW50IGFt ZGdwdV92Y25fZGVjX3NlbmRfbXNnKHN0cnVjdCAKPj4+IGFtZGdwdV9yaW5nICpyaW5nLAo+Pj4g wqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gZXJyOwo+Pj4KPj4+IMKgwqDCoMKgwqAgaWIgPSAmam9i LT5pYnNbMF07Cj4+PiAtwqDCoMKgIGFkZHIgPSBhbWRncHVfYm9fZ3B1X29mZnNldChibyk7Cj4+ PiArwqDCoMKgIGFkZHIgPSBhbWRncHVfc2FfYm9fZ3B1X2FkZHIoYm8pOwo+Pj4gKwo+Pj4gwqDC oMKgwqDCoCBpYi0+cHRyWzBdID0gUEFDS0VUMChhZGV2LT52Y24uaW50ZXJuYWwuZGF0YTAsIDAp Owo+Pj4gwqDCoMKgwqDCoCBpYi0+cHRyWzFdID0gYWRkcjsKPj4+IMKgwqDCoMKgwqAgaWItPnB0 clsyXSA9IFBBQ0tFVDAoYWRldi0+dmNuLmludGVybmFsLmRhdGExLCAwKTsKPj4+IEBAIC01MjEs OSArNTIyLDcgQEAgc3RhdGljIGludCBhbWRncHVfdmNuX2RlY19zZW5kX21zZyhzdHJ1Y3QgCj4+ PiBhbWRncHVfcmluZyAqcmluZywKPj4+IMKgwqDCoMKgwqAgaWYgKHIpCj4+PiDCoMKgwqDCoMKg wqDCoMKgwqAgZ290byBlcnJfZnJlZTsKPj4+Cj4+PiAtwqDCoMKgIGFtZGdwdV9ib19mZW5jZShi bywgZiwgZmFsc2UpOwo+Pj4gLcKgwqDCoCBhbWRncHVfYm9fdW5yZXNlcnZlKGJvKTsKPj4+IC3C oMKgwqAgYW1kZ3B1X2JvX3VucmVmKCZibyk7Cj4+PiArwqDCoMKgIGFtZGdwdV9zYV9ib19mcmVl KGFkZXYsICZibywgZik7Cj4+Pgo+Pj4gwqDCoMKgwqDCoCBpZiAoZmVuY2UpCj4+PiDCoMKgwqDC oMKgwqDCoMKgwqAgKmZlbmNlID0gZG1hX2ZlbmNlX2dldChmKTsKPj4+IEBAIC01MzUsMjUgKzUz NCwyNyBAQCBzdGF0aWMgaW50IGFtZGdwdV92Y25fZGVjX3NlbmRfbXNnKHN0cnVjdCAKPj4+IGFt ZGdwdV9yaW5nICpyaW5nLAo+Pj4gwqDCoMKgwqDCoCBhbWRncHVfam9iX2ZyZWUoam9iKTsKPj4+ Cj4+PiDCoCBlcnI6Cj4+PiAtwqDCoMKgIGFtZGdwdV9ib191bnJlc2VydmUoYm8pOwo+Pj4gLcKg wqDCoCBhbWRncHVfYm9fdW5yZWYoJmJvKTsKPj4+ICvCoMKgwqAgYW1kZ3B1X3NhX2JvX2ZyZWUo YWRldiwgJmJvLCBOVUxMKTsKPj4+IMKgwqDCoMKgwqAgcmV0dXJuIHI7Cj4+PiDCoCB9Cj4+Pgo+ Pj4gwqAgc3RhdGljIGludCBhbWRncHVfdmNuX2RlY19nZXRfY3JlYXRlX21zZyhzdHJ1Y3QgYW1k Z3B1X3JpbmcgKnJpbmcsIAo+Pj4gdWludDMyX3QgaGFuZGxlLAo+Pj4gLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGFtZGdwdV9ibyAqKmJvKQo+Pj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGFtZGdwdV9zYV9i byAqKmJvKQo+Pj4gwqAgewo+Pj4gwqDCoMKgwqDCoCBzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diA9IHJpbmctPmFkZXY7Cj4+PiDCoMKgwqDCoMKgIHVpbnQzMl90ICptc2c7Cj4+PiDCoMKgwqDC oMKgIGludCByLCBpOwo+Pj4KPj4+IMKgwqDCoMKgwqAgKmJvID0gTlVMTDsKPj4+IC3CoMKgwqAg ciA9IGFtZGdwdV9ib19jcmVhdGVfcmVzZXJ2ZWQoYWRldiwgMTAyNCwgUEFHRV9TSVpFLAo+Pj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBTURHUFVfR0VNX0RP TUFJTl9WUkFNLAo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBibywgTlVMTCwgKHZvaWQgKiopJm1zZyk7Cj4+PiArCj4+PiArwqDCoMKgIHIgPSBhbWRncHVf c2FfYm9fbmV3KCZhZGV2LT5pYl9wb29sc1tBTURHUFVfSUJfUE9PTF9ESVJFQ1RdLAo+Pj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJvLCAxMDI0LCBQQUdFX1NJWkUpOwo+Pj4g Kwo+Pj4gwqDCoMKgwqDCoCBpZiAocikKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcjsK Pj4+Cj4+PiArwqDCoMKgIG1zZyA9IGFtZGdwdV9zYV9ib19jcHVfYWRkcigqYm8pOwo+Pj4gKwo+ Pj4gwqDCoMKgwqDCoCBtc2dbMF0gPSBjcHVfdG9fbGUzMigweDAwMDAwMDI4KTsKPj4+IMKgwqDC oMKgwqAgbXNnWzFdID0gY3B1X3RvX2xlMzIoMHgwMDAwMDAzOCk7Cj4+PiDCoMKgwqDCoMKgIG1z Z1syXSA9IGNwdV90b19sZTMyKDB4MDAwMDAwMDEpOwo+Pj4gQEAgLTU3NSwxOCArNTc2LDE5IEBA IHN0YXRpYyBpbnQgCj4+PiBhbWRncHVfdmNuX2RlY19nZXRfY3JlYXRlX21zZyhzdHJ1Y3QgYW1k Z3B1X3JpbmcgKnJpbmcsIHVpbnQzMl90IGhhbmQKPj4+IMKgIH0KPj4+Cj4+PiDCoCBzdGF0aWMg aW50IGFtZGdwdV92Y25fZGVjX2dldF9kZXN0cm95X21zZyhzdHJ1Y3QgYW1kZ3B1X3JpbmcgCj4+ PiAqcmluZywgdWludDMyX3QgaGFuZGxlLAo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgYW1kZ3B1X2JvICoqYm8pCj4+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBhbWRncHVfc2FfYm8gKipibykK Pj4+IMKgIHsKPj4+IMKgwqDCoMKgwqAgc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSByaW5n LT5hZGV2Owo+Pj4gwqDCoMKgwqDCoCB1aW50MzJfdCAqbXNnOwo+Pj4gwqDCoMKgwqDCoCBpbnQg ciwgaTsKPj4+Cj4+PiDCoMKgwqDCoMKgICpibyA9IE5VTEw7Cj4+PiAtwqDCoMKgIHIgPSBhbWRn cHVfYm9fY3JlYXRlX3Jlc2VydmVkKGFkZXYsIDEwMjQsIFBBR0VfU0laRSwKPj4+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQU1ER1BVX0dFTV9ET01BSU5fVlJB TSwKPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYm8sIE5V TEwsICh2b2lkICoqKSZtc2cpOwo+Pj4gK8KgwqDCoCByID0gYW1kZ3B1X3NhX2JvX25ldygmYWRl di0+aWJfcG9vbHNbQU1ER1BVX0lCX1BPT0xfRElSRUNUXSwKPj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBibywgMTAyNCwgUEFHRV9TSVpFKTsKPj4+ICsKPj4+IMKgwqDCoMKg wqAgaWYgKHIpCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHI7Cj4+PiArwqDCoMKgIG1z ZyA9IGFtZGdwdV9zYV9ib19jcHVfYWRkcigqYm8pOwo+Pj4KPj4+IMKgwqDCoMKgwqAgbXNnWzBd ID0gY3B1X3RvX2xlMzIoMHgwMDAwMDAyOCk7Cj4+PiDCoMKgwqDCoMKgIG1zZ1sxXSA9IGNwdV90 b19sZTMyKDB4MDAwMDAwMTgpOwo+Pj4gQEAgLTYwMyw3ICs2MDUsNyBAQCBzdGF0aWMgaW50IGFt ZGdwdV92Y25fZGVjX2dldF9kZXN0cm95X21zZyhzdHJ1Y3QgCj4+PiBhbWRncHVfcmluZyAqcmlu ZywgdWludDMyX3QgaGFuCj4+PiDCoCBpbnQgYW1kZ3B1X3Zjbl9kZWNfcmluZ190ZXN0X2liKHN0 cnVjdCBhbWRncHVfcmluZyAqcmluZywgbG9uZyAKPj4+IHRpbWVvdXQpCj4+PiDCoCB7Cj4+PiDC oMKgwqDCoMKgIHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlID0gTlVMTDsKPj4+IC3CoMKgwqAgc3Ry dWN0IGFtZGdwdV9ibyAqYm87Cj4+PiArwqDCoMKgIHN0cnVjdCBhbWRncHVfc2FfYm8gKmJvOwo+ Pj4gwqDCoMKgwqDCoCBsb25nIHI7Cj4+Pgo+Pj4gwqDCoMKgwqDCoCByID0gYW1kZ3B1X3Zjbl9k ZWNfZ2V0X2NyZWF0ZV9tc2cocmluZywgMSwgJmJvKTsKPj4+IEBAIC02MzMsNyArNjM1LDcgQEAg aW50IGFtZGdwdV92Y25fZGVjX3JpbmdfdGVzdF9pYihzdHJ1Y3QgCj4+PiBhbWRncHVfcmluZyAq cmluZywgbG9uZyB0aW1lb3V0KQo+Pj4gwqAgfQo+Pj4KPj4+IMKgIHN0YXRpYyBpbnQgYW1kZ3B1 X3Zjbl9kZWNfc3dfc2VuZF9tc2coc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLAo+Pj4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgYW1kZ3B1X2JvICpibywKPj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGFtZGdwdV9zYV9i byAqYm8sCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVj dCBkbWFfZmVuY2UgKipmZW5jZSkKPj4+IMKgIHsKPj4+IMKgwqDCoMKgwqAgc3RydWN0IGFtZGdw dV92Y25fZGVjb2RlX2J1ZmZlciAqZGVjb2RlX2J1ZmZlciA9IE5VTEw7Cj4+PiBAQCAtNjUxLDcg KzY1Myw3IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X3Zjbl9kZWNfc3dfc2VuZF9tc2coc3RydWN0IAo+ Pj4gYW1kZ3B1X3JpbmcgKnJpbmcsCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBlcnI7Cj4+ Pgo+Pj4gwqDCoMKgwqDCoCBpYiA9ICZqb2ItPmlic1swXTsKPj4+IC3CoMKgwqAgYWRkciA9IGFt ZGdwdV9ib19ncHVfb2Zmc2V0KGJvKTsKPj4+ICvCoMKgwqAgYWRkciA9IGFtZGdwdV9zYV9ib19n cHVfYWRkcihibyk7Cj4+PiDCoMKgwqDCoMKgIGliLT5sZW5ndGhfZHcgPSAwOwo+Pj4KPj4+IMKg wqDCoMKgwqAgaWItPnB0cltpYi0+bGVuZ3RoX2R3KytdID0gc2l6ZW9mKHN0cnVjdCAKPj4+IGFt ZGdwdV92Y25fZGVjb2RlX2J1ZmZlcikgKyA4Owo+Pj4gQEAgLTY3MSw5ICs2NzMsNyBAQCBzdGF0 aWMgaW50IGFtZGdwdV92Y25fZGVjX3N3X3NlbmRfbXNnKHN0cnVjdCAKPj4+IGFtZGdwdV9yaW5n ICpyaW5nLAo+Pj4gwqDCoMKgwqDCoCBpZiAocikKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBnb3Rv IGVycl9mcmVlOwo+Pj4KPj4+IC3CoMKgwqAgYW1kZ3B1X2JvX2ZlbmNlKGJvLCBmLCBmYWxzZSk7 Cj4+PiAtwqDCoMKgIGFtZGdwdV9ib191bnJlc2VydmUoYm8pOwo+Pj4gLcKgwqDCoCBhbWRncHVf Ym9fdW5yZWYoJmJvKTsKPj4+ICvCoMKgwqAgYW1kZ3B1X3NhX2JvX2ZyZWUoYWRldiwgJmJvLCBm KTsKPj4+Cj4+PiDCoMKgwqDCoMKgIGlmIChmZW5jZSkKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAq ZmVuY2UgPSBkbWFfZmVuY2VfZ2V0KGYpOwo+Pj4gQEAgLTY4NSwxNSArNjg1LDE0IEBAIHN0YXRp YyBpbnQgYW1kZ3B1X3Zjbl9kZWNfc3dfc2VuZF9tc2coc3RydWN0IAo+Pj4gYW1kZ3B1X3Jpbmcg KnJpbmcsCj4+PiDCoMKgwqDCoMKgIGFtZGdwdV9qb2JfZnJlZShqb2IpOwo+Pj4KPj4+IMKgIGVy cjoKPj4+IC3CoMKgwqAgYW1kZ3B1X2JvX3VucmVzZXJ2ZShibyk7Cj4+PiAtwqDCoMKgIGFtZGdw dV9ib191bnJlZigmYm8pOwo+Pj4gK8KgwqDCoCBhbWRncHVfc2FfYm9fZnJlZShhZGV2LCAmYm8s IE5VTEwpOwo+Pj4gwqDCoMKgwqDCoCByZXR1cm4gcjsKPj4+IMKgIH0KPj4+Cj4+PiDCoCBpbnQg YW1kZ3B1X3Zjbl9kZWNfc3dfcmluZ190ZXN0X2liKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywg bG9uZyAKPj4+IHRpbWVvdXQpCj4+PiDCoCB7Cj4+PiDCoMKgwqDCoMKgIHN0cnVjdCBkbWFfZmVu Y2UgKmZlbmNlID0gTlVMTDsKPj4+IC3CoMKgwqAgc3RydWN0IGFtZGdwdV9ibyAqYm87Cj4+PiAr wqDCoMKgIHN0cnVjdCBhbWRncHVfc2FfYm8gKmJvOwo+Pj4gwqDCoMKgwqDCoCBsb25nIHI7Cj4+ Pgo+Pj4gwqDCoMKgwqDCoCByID0gYW1kZ3B1X3Zjbl9kZWNfZ2V0X2NyZWF0ZV9tc2cocmluZywg MSwgJmJvKTsKPj4+IC0tIAo+Pj4gMi4yOS4yCj4+Pgo+Pgo+IF9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gYW1kLWdmeCBtYWlsaW5nIGxpc3QKPiBhbWQt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9hbWQtZ2Z4Cg==