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=-10.8 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, NICE_REPLY_A,SIGNED_OFF_BY,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 6BB6FC4363C for ; Wed, 7 Oct 2020 09:00:05 +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 0BD7320797 for ; Wed, 7 Oct 2020 09:00:04 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="LKu97/9q" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0BD7320797 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 1ED236E8A7; Wed, 7 Oct 2020 09:00:04 +0000 (UTC) Received: from mail-qt1-x843.google.com (mail-qt1-x843.google.com [IPv6:2607:f8b0:4864:20::843]) by gabe.freedesktop.org (Postfix) with ESMTPS id C0C9B6E89E for ; Wed, 7 Oct 2020 09:00:02 +0000 (UTC) Received: by mail-qt1-x843.google.com with SMTP id 10so1070517qtx.12 for ; Wed, 07 Oct 2020 02:00:02 -0700 (PDT) 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=MjJzTxAHB7TgVVvnawThD3Owm99I46T20MxWeFMXmBs=; b=LKu97/9qaXpXLBBv0mY/OZjneeRyYb8saNmNLe08g0ItlZS0PlPMQ6GLdYTaOXlzeg OqGc+chVFCDpB1wqI311mLnyeXflTgD1NANO+Qo1Xb+DDn5lUTJYOxLBPKC985gmRyST I6eucaNRwZ4SZNeOounzw+imPHI5Qn960mg37ZTBngldvjHw5us4v+1M8KEqfwFiwgra Ljwy6SCedHo+0TlsQjpI16VcgxA9BdcS1LQ1feplCUhgIZQxv3qUbmB38AIglw4qSiMX rHIQeAtzcCxl7E/wyYlwXYpF1oq7YUDi+Jt846GZ3zN5CPfPLTgY4REz6PrOauZPtXhP ILmQ== 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=MjJzTxAHB7TgVVvnawThD3Owm99I46T20MxWeFMXmBs=; b=p46Jj99AemAsysfkdozllsNN2gTtsO+R7h16hLk5iV0LWiTb4ystoq1ztMmYCP74/G nFp1bwlwpjkTN2WCNudYN/EgLUQVmuemgzZjKHVS7I8hjQyezioAIGYskXwvcIbW3Sv7 bbbxhkIfRDzTOjkRUK1mneKdbyv4X4CZnRm7AP2op5hFE6wPSpI9ZhlVizEQwh5ZCnT3 iG0ElbplDxHMq5Uf+kxuAbCz0ygBeXaN4h2gBbm1eo3268hYTf8E+5W29s3/6KsKNxhd ZzCk6Y+BM+EevrZn5ULLXqHFwFDWiXpahIs9JFP/w7W+VY8Qdf3I+IwNchny/EVbrWEC zYiA== X-Gm-Message-State: AOAM530TZ1LB1ugYbZKGZutPLQ8JewpJdeFNYcNP/E+1TK90Mgd3/y/E ucOOe4X7lsBkxlNLFg8xg7A= X-Google-Smtp-Source: ABdhPJygEajnV6ux4X9AitE91Qz22BnAriHRpocIvel7kU7DqSPvAzcjlmyDy+i51lrMTs6fr97rNg== X-Received: by 2002:ac8:7188:: with SMTP id w8mr2165232qto.134.1602061201946; Wed, 07 Oct 2020 02:00:01 -0700 (PDT) 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 r13sm1008006qtp.94.2020.10.07.02.00.00 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 07 Oct 2020 02:00:01 -0700 (PDT) Subject: Re: [PATCH 7/8] drm/ttm: use caching instead of placement for ttm_io_prot To: "Ruhl, Michael J" , "dri-devel@lists.freedesktop.org" , "ray.huang@amd.com" , "airlied@gmail.com" , "daniel@ffwll.ch" References: <20201001112817.20967-1-christian.koenig@amd.com> <20201001112817.20967-7-christian.koenig@amd.com> <157c23949c85458aaf104f67189c1b77@intel.com> From: =?UTF-8?Q?Christian_K=c3=b6nig?= Message-ID: <53f0f015-11f1-1337-48cf-6fa92232b210@gmail.com> Date: Wed, 7 Oct 2020 10:59:59 +0200 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: <157c23949c85458aaf104f67189c1b77@intel.com> Content-Language: en-US X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development 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: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" QW0gMDUuMTAuMjAgdW0gMTc6NTEgc2NocmllYiBSdWhsLCBNaWNoYWVsIEo6Cj4+IC0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tCj4+IEZyb206IGRyaS1kZXZlbCA8ZHJpLWRldmVsLWJvdW5jZXNA bGlzdHMuZnJlZWRlc2t0b3Aub3JnPiBPbiBCZWhhbGYgT2YKPj4gQ2hyaXN0aWFuIEvDtm5pZwo+ PiBTZW50OiBUaHVyc2RheSwgT2N0b2JlciAxLCAyMDIwIDc6MjggQU0KPj4gVG86IGRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmc7IHJheS5odWFuZ0BhbWQuY29tOwo+PiBhaXJsaWVkQGdt YWlsLmNvbTsgZGFuaWVsQGZmd2xsLmNoCj4+IFN1YmplY3Q6IFtQQVRDSCA3LzhdIGRybS90dG06 IHVzZSBjYWNoaW5nIGluc3RlYWQgb2YgcGxhY2VtZW50IGZvcgo+PiB0dG1faW9fcHJvdAo+Pgo+ PiBJbnN0ZWFkIG9mIHRoZSBwbGFjZW1lbnQgZmxhZ3MgdXNlIHRoZSBjYWNoaW5nIG9mIHRoZSBi dXMKPj4gbWFwcGluZyBvciB0dCBvYmplY3QgZm9yIHRoZSBwYWdlIHByb3RlY3Rpb24gZmxhZ3Mu Cj4+Cj4+IFNpZ25lZC1vZmYtYnk6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdA YW1kLmNvbT4KPj4gLS0tCj4+IGRyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvX3V0aWwuYyAgICB8 IDIzICsrKysrKysrKysrKysrLS0tLS0tLS0tCj4+IGRyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2Jv X3ZtLmMgICAgICB8ICAyICstCj4+IGRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2JsaXQu YyB8ICA0ICsrLS0KPj4gaW5jbHVkZS9kcm0vdHRtL3R0bV9ib19kcml2ZXIuaCAgICAgIHwgIDYg KysrKy0tCj4+IDQgZmlsZXMgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25z KC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib191dGlsLmMK Pj4gYi9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib191dGlsLmMKPj4gaW5kZXggYmRlZTRkZjFm M2YyLi4wNTQyMDk3ZGM0MTkgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRt X2JvX3V0aWwuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib191dGlsLmMKPj4g QEAgLTI3OSwxMyArMjc5LDExIEBAIGludCB0dG1fYm9fbW92ZV9tZW1jcHkoc3RydWN0Cj4+IHR0 bV9idWZmZXJfb2JqZWN0ICpibywKPj4gCWZvciAoaSA9IDA7IGkgPCBuZXdfbWVtLT5udW1fcGFn ZXM7ICsraSkgewo+PiAJCXBhZ2UgPSBpICogZGlyICsgYWRkOwo+PiAJCWlmIChvbGRfaW9tYXAg PT0gTlVMTCkgewo+PiAtCQkJcGdwcm90X3QgcHJvdCA9IHR0bV9pb19wcm90KG9sZF9tZW0tPnBs YWNlbWVudCwKPj4gLQkJCQkJCSAgICBQQUdFX0tFUk5FTCk7Cj4gU28gd2lsbCBwbGFjZW1lbnQg Z2V0IHJlbW92ZWQgZnJvbSB0dG1fcmVzb3VyY2U/CgpUaGF0J3MgdGhlIGxvbmcgdGVybSBwbGFu LCB5ZXMuIEJ1dCBjdXJyZW50bHkgd2Ugc3RpbGwgaGF2ZSB0aGUgCmNvbnRpZ3VvdXMgZmxhZyBp biB0aGVyZS4KCkNocmlzdGlhbi4KCj4KPiBSZXZpZXdlZC1ieTogTWljaGFlbCBKLiBSdWhsIDxt aWNoYWVsLmoucnVobEBpbnRlbC5jb20+Cj4KPiBNCj4KPj4gKwkJCXBncHJvdF90IHByb3QgPSB0 dG1faW9fcHJvdChibywgb2xkX21lbSwKPj4gUEFHRV9LRVJORUwpOwo+PiAJCQlyZXQgPSB0dG1f Y29weV90dG1faW9fcGFnZSh0dG0sIG5ld19pb21hcCwgcGFnZSwKPj4gCQkJCQkJICAgcHJvdCk7 Cj4+IAkJfSBlbHNlIGlmIChuZXdfaW9tYXAgPT0gTlVMTCkgewo+PiAtCQkJcGdwcm90X3QgcHJv dCA9IHR0bV9pb19wcm90KG5ld19tZW0tPnBsYWNlbWVudCwKPj4gLQkJCQkJCSAgICBQQUdFX0tF Uk5FTCk7Cj4+ICsJCQlwZ3Byb3RfdCBwcm90ID0gdHRtX2lvX3Byb3QoYm8sIG5ld19tZW0sCj4+ IFBBR0VfS0VSTkVMKTsKPj4gCQkJcmV0ID0gdHRtX2NvcHlfaW9fdHRtX3BhZ2UodHRtLCBvbGRf aW9tYXAsIHBhZ2UsCj4+IAkJCQkJCSAgIHByb3QpOwo+PiAJCX0gZWxzZSB7Cj4+IEBAIC0zODQs MjEgKzM4MiwyOCBAQCBzdGF0aWMgaW50IHR0bV9idWZmZXJfb2JqZWN0X3RyYW5zZmVyKHN0cnVj dAo+PiB0dG1fYnVmZmVyX29iamVjdCAqYm8sCj4+IAlyZXR1cm4gMDsKPj4gfQo+Pgo+PiAtcGdw cm90X3QgdHRtX2lvX3Byb3QodWludDMyX3QgY2FjaGluZ19mbGFncywgcGdwcm90X3QgdG1wKQo+ PiArcGdwcm90X3QgdHRtX2lvX3Byb3Qoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywgc3Ry dWN0IHR0bV9yZXNvdXJjZQo+PiAqcmVzLAo+PiArCQkgICAgIHBncHJvdF90IHRtcCkKPj4gewo+ PiArCXN0cnVjdCB0dG1fcmVzb3VyY2VfbWFuYWdlciAqbWFuOwo+PiArCWVudW0gdHRtX2NhY2hp bmcgY2FjaGluZzsKPj4gKwo+PiArCW1hbiA9IHR0bV9tYW5hZ2VyX3R5cGUoYm8tPmJkZXYsIHJl cy0+bWVtX3R5cGUpOwo+PiArCWNhY2hpbmcgPSBtYW4tPnVzZV90dCA/IGJvLT50dG0tPmNhY2hp bmcgOiByZXMtPmJ1cy5jYWNoaW5nOwo+PiArCj4+IAkvKiBDYWNoZWQgbWFwcGluZ3MgbmVlZCBu byBhZGp1c3RtZW50ICovCj4+IC0JaWYgKGNhY2hpbmdfZmxhZ3MgJiBUVE1fUExfRkxBR19DQUNI RUQpCj4+ICsJaWYgKGNhY2hpbmcgPT0gdHRtX2NhY2hlZCkKPj4gCQlyZXR1cm4gdG1wOwo+Pgo+ PiAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKQo+PiAtCWlmIChj YWNoaW5nX2ZsYWdzICYgVFRNX1BMX0ZMQUdfV0MpCj4+ICsJaWYgKGNhY2hpbmcgPT0gdHRtX3dy aXRlX2NvbWJpbmVkKQo+PiAJCXRtcCA9IHBncHJvdF93cml0ZWNvbWJpbmUodG1wKTsKPj4gCWVs c2UgaWYgKGJvb3RfY3B1X2RhdGEueDg2ID4gMykKPj4gCQl0bXAgPSBwZ3Byb3Rfbm9uY2FjaGVk KHRtcCk7Cj4+ICNlbmRpZgo+PiAjaWYgZGVmaW5lZChfX2lhNjRfXykgfHwgZGVmaW5lZChfX2Fy bV9fKSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBcCj4+ICAgICAgZGVmaW5lZChfX3Bvd2Vy cGNfXykgfHwgZGVmaW5lZChfX21pcHNfXykKPj4gLQlpZiAoY2FjaGluZ19mbGFncyAmIFRUTV9Q TF9GTEFHX1dDKQo+PiArCWlmIChjYWNoaW5nID09IHR0bV93cml0ZV9jb21iaW5lZCkKPj4gCQl0 bXAgPSBwZ3Byb3Rfd3JpdGVjb21iaW5lKHRtcCk7Cj4+IAllbHNlCj4+IAkJdG1wID0gcGdwcm90 X25vbmNhY2hlZCh0bXApOwo+PiBAQCAtNDY2LDcgKzQ3MSw3IEBAIHN0YXRpYyBpbnQgdHRtX2Jv X2ttYXBfdHRtKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdAo+PiAqYm8sCj4+IAkJICogV2UgbmVl ZCB0byB1c2Ugdm1hcCB0byBnZXQgdGhlIGRlc2lyZWQgcGFnZSBwcm90ZWN0aW9uCj4+IAkJICog b3IgdG8gbWFrZSB0aGUgYnVmZmVyIG9iamVjdCBsb29rIGNvbnRpZ3VvdXMuCj4+IAkJICovCj4+ IC0JCXByb3QgPSB0dG1faW9fcHJvdChtZW0tPnBsYWNlbWVudCwgUEFHRV9LRVJORUwpOwo+PiAr CQlwcm90ID0gdHRtX2lvX3Byb3QoYm8sIG1lbSwgUEFHRV9LRVJORUwpOwo+PiAJCW1hcC0+Ym9f a21hcF90eXBlID0gdHRtX2JvX21hcF92bWFwOwo+PiAJCW1hcC0+dmlydHVhbCA9IHZtYXAodHRt LT5wYWdlcyArIHN0YXJ0X3BhZ2UsIG51bV9wYWdlcywKPj4gCQkJCSAgICAwLCBwcm90KTsKPj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvX3ZtLmMKPj4gYi9kcml2ZXJz L2dwdS9kcm0vdHRtL3R0bV9ib192bS5jCj4+IGluZGV4IDg3ZWU4ZjBjYTA4ZS4uZWVhY2E1ZDFl ZmUzIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jCj4+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvX3ZtLmMKPj4gQEAgLTMxMCw3ICszMTAsNyBA QCB2bV9mYXVsdF90IHR0bV9ib192bV9mYXVsdF9yZXNlcnZlZChzdHJ1Y3QKPj4gdm1fZmF1bHQg KnZtZiwKPj4gCWlmICh1bmxpa2VseShwYWdlX29mZnNldCA+PSBiby0+bnVtX3BhZ2VzKSkKPj4g CQlyZXR1cm4gVk1fRkFVTFRfU0lHQlVTOwo+Pgo+PiAtCXByb3QgPSB0dG1faW9fcHJvdChiby0+ bWVtLnBsYWNlbWVudCwgcHJvdCk7Cj4+ICsJcHJvdCA9IHR0bV9pb19wcm90KGJvLCAmYm8tPm1l bSwgcHJvdCk7Cj4+IAlpZiAoIWJvLT5tZW0uYnVzLmlzX2lvbWVtKSB7Cj4+IAkJc3RydWN0IHR0 bV9vcGVyYXRpb25fY3R4IGN0eCA9IHsKPj4gCQkJLmludGVycnVwdGlibGUgPSBmYWxzZSwKPj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2JsaXQuYwo+PiBiL2Ry aXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2JsaXQuYwo+PiBpbmRleCBlYTJmMmY5MzdlYjMu LmYyMTg4MWUwODdkYiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdn ZnhfYmxpdC5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2JsaXQuYwo+ PiBAQCAtNDg0LDggKzQ4NCw4IEBAIGludCB2bXdfYm9fY3B1X2JsaXQoc3RydWN0IHR0bV9idWZm ZXJfb2JqZWN0ICpkc3QsCj4+IAlkLnNyY19wYWdlcyA9IHNyYy0+dHRtLT5wYWdlczsKPj4gCWQu ZHN0X251bV9wYWdlcyA9IGRzdC0+bnVtX3BhZ2VzOwo+PiAJZC5zcmNfbnVtX3BhZ2VzID0gc3Jj LT5udW1fcGFnZXM7Cj4+IC0JZC5kc3RfcHJvdCA9IHR0bV9pb19wcm90KGRzdC0+bWVtLnBsYWNl bWVudCwgUEFHRV9LRVJORUwpOwo+PiAtCWQuc3JjX3Byb3QgPSB0dG1faW9fcHJvdChzcmMtPm1l bS5wbGFjZW1lbnQsIFBBR0VfS0VSTkVMKTsKPj4gKwlkLmRzdF9wcm90ID0gdHRtX2lvX3Byb3Qo ZHN0LCAmZHN0LT5tZW0sIFBBR0VfS0VSTkVMKTsKPj4gKwlkLnNyY19wcm90ID0gdHRtX2lvX3By b3Qoc3JjLCAmc3JjLT5tZW0sIFBBR0VfS0VSTkVMKTsKPj4gCWQuZGlmZiA9IGRpZmY7Cj4+Cj4+ IAlmb3IgKGogPSAwOyBqIDwgaDsgKytqKSB7Cj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS90 dG0vdHRtX2JvX2RyaXZlci5oCj4+IGIvaW5jbHVkZS9kcm0vdHRtL3R0bV9ib19kcml2ZXIuaAo+ PiBpbmRleCA5ODk3YTE2YzBhOWQuLmEwMjhiNDE4YzZiNCAxMDA2NDQKPj4gLS0tIGEvaW5jbHVk ZS9kcm0vdHRtL3R0bV9ib19kcml2ZXIuaAo+PiArKysgYi9pbmNsdWRlL2RybS90dG0vdHRtX2Jv X2RyaXZlci5oCj4+IEBAIC02NjYsMTMgKzY2NiwxNSBAQCBpbnQgdHRtX2JvX3BpcGVsaW5lX2d1 dHRpbmcoc3RydWN0Cj4+IHR0bV9idWZmZXJfb2JqZWN0ICpibyk7Cj4+IC8qKgo+PiAgICogdHRt X2lvX3Byb3QKPj4gICAqCj4+IC0gKiBAY19zdGF0ZTogQ2FjaGluZyBzdGF0ZS4KPj4gKyAqIGJv OiB0dG0gYnVmZmVyIG9iamVjdAo+PiArICogcmVzOiB0dG0gcmVzb3VyY2Ugb2JqZWN0Cj4+ICAg KiBAdG1wOiBQYWdlIHByb3RlY3Rpb24gZmxhZyBmb3IgYSBub3JtYWwsIGNhY2hlZCBtYXBwaW5n Lgo+PiAgICoKPj4gICAqIFV0aWxpdHkgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBwZ3Byb3Rf dCB0aGF0IHNob3VsZCBiZSB1c2VkIGZvcgo+PiAgICogc2V0dGluZyB1cCBhIFBURSB3aXRoIHRo ZSBjYWNoaW5nIG1vZGVsIGluZGljYXRlZCBieSBAY19zdGF0ZS4KPj4gICAqLwo+PiAtcGdwcm90 X3QgdHRtX2lvX3Byb3QodWludDMyX3QgY2FjaGluZ19mbGFncywgcGdwcm90X3QgdG1wKTsKPj4g K3BncHJvdF90IHR0bV9pb19wcm90KHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8sIHN0cnVj dCB0dG1fcmVzb3VyY2UKPj4gKnJlcywKPj4gKwkJICAgICBwZ3Byb3RfdCB0bXApOwo+Pgo+PiAv KioKPj4gICAqIHR0bV9ib190dF9iaW5kCj4+IC0tCj4+IDIuMTcuMQo+Pgo+PiBfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+PiBkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0Cj4+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4gaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxp c3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=