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=-6.7 required=3.0 tests=BAYES_00,DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED autolearn=no 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 1935FC4363D for ; Sat, 3 Oct 2020 08:36:08 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 9E87D206DB for ; Sat, 3 Oct 2020 08:36:07 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="B7jEtnZD"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="s2B2+iZ2" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9E87D206DB Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:To:Subject:Message-ID:Date:From:In-Reply-To: References:MIME-Version:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=rvaMUgA+GUSJpfdXfvMhtwziKSjTiECvlWrUqt7d7tc=; b=B7jEtnZDEnqwD9c7DiD9PV3h3 ZBNYo8mgz/Tty8c+8VtWywrmbHoxLekbcm6CFtqXRGsaw4mNyZ/RlljXGF7Na9mLPlFgEQPAk53Qi ODS/9tDuWOiJpygZmcfwjRZPZoFYfRV5iATptPx0M5KPaE5/JGqZo2l2O+UWVN5VTSy7j4N8oRsIC suszyUXv3KqURvA5nfqmVdmTKQgkVWAtoFF8n6IGeHwGk8IC+rJUVgsum7g9uGRpqKnCaRU0D6m5i yn3AZ1XpanR6BWj2xZL2bTxZPvvqa8QbVKcIb8uYjhKuBrZ7Knozy1xdK/UD8REGAp+2R5kBIVr5T bC+nJcVLg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kOczy-0005Cf-8r; Sat, 03 Oct 2020 08:34:34 +0000 Received: from mail-oi1-x243.google.com ([2607:f8b0:4864:20::243]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kOczv-0005Bv-G0 for linux-arm-kernel@lists.infradead.org; Sat, 03 Oct 2020 08:34:32 +0000 Received: by mail-oi1-x243.google.com with SMTP id v20so3664047oiv.3 for ; Sat, 03 Oct 2020 01:34:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=MwiC6YyUZFKsR0OxsiL5dqCxbE9WNpSWpYmDHi3uZb4=; b=s2B2+iZ2DS5bAdFajuwTOZbSgIS0kvKB9eFuoSekzKVBfHj6VYFZcLuQc7DFDKFRCh 0CzYQdJqdyNjQ4+AaYAD+BcfFg6UYJwfzDTabb5ckgFbh9G5tbV/b3a8Tb8IaHYrXK9e YgjqWIYUIHDI9NisNeGL+94NPhn5X4ZU0t2nCZ97bNiFv5fdQPbyjjcVbsXDTTkWWBS0 dPHhV578Mo38EZCUj2h3XEEx/Q7Onc584hjVNjFimVQJrJaXv4PvgfPdCovKR3YG2ZqV bCyL8nTePjit6Q7hnm+hTCotVghPI21Ao+zOAy3SfUT52mcspFE34Tjxj+XjcX2EPsmH xyfw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=MwiC6YyUZFKsR0OxsiL5dqCxbE9WNpSWpYmDHi3uZb4=; b=O+WMsedLfX1gB+oq+JpKFCg3qOR803L+DwK3eWVSmMj5466eivPwN9YUzm97An458n m+pHXpRsOR1+FoJkg/xDfF0itBfUiqar9zI+Z8CAqOQRDncWnMUEUn4PirsrAoRugH4m 51+yRLvJmx2WRRvDJ4t4ay0b4ujV1ZZOxxVwQOlt2D4f/6WVtM+UYRWhJhq3U5FiGtJx uCVMUv8xbsBWIdOFNxcAk0x8CGApKFc38sOkLNlBiBqidKTnpOXUxUPqDWgusM2neAsW rq8LZsCdV6Cpz3XQca+l8NAscSNQfR+WNX8c2QGpNU5WmqLH1OfEZGTBuanI+KRba05p wfUA== X-Gm-Message-State: AOAM5303cCNtez3mm+2p4dKYBK6IlIS0wTlk2tKIhhxOd3ZWv1Zde00/ 0In3s0jHUZvPI97Qw8Xo0/qY0EpqhkYiftK4tlw= X-Google-Smtp-Source: ABdhPJwz6YDv9Y3Szh9uKYhc8PvVg5MEbm5BaRdTqy54FwkGbFwyabTSxzLcQSKtnQ+lvxanp34yvku05esUVnF4kVA= X-Received: by 2002:a05:6808:3bb:: with SMTP id n27mr3285560oie.130.1601714069143; Sat, 03 Oct 2020 01:34:29 -0700 (PDT) MIME-Version: 1.0 References: <20201002175303.390363-1-daniel.vetter@ffwll.ch> <20201002175303.390363-2-daniel.vetter@ffwll.ch> <20201002180603.GL9916@ziepe.ca> <20201002233118.GM9916@ziepe.ca> In-Reply-To: <20201002233118.GM9916@ziepe.ca> From: Oded Gabbay Date: Sat, 3 Oct 2020 11:34:01 +0300 Message-ID: Subject: Re: [PATCH 2/2] mm/frame-vec: use FOLL_LONGTERM To: Jason Gunthorpe X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201003_043431_583482_AE998156 X-CRM114-Status: GOOD ( 41.27 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Inki Dae , linux-samsung-soc , Jan Kara , Joonyoung Shim , Pawel Osciak , Daniel Vetter , Seung-Woo Kim , LKML , DRI Development , Tomasz Figa , Kyungmin Park , Linux MM , =?UTF-8?B?SsOpcsO0bWUgR2xpc3Nl?= , John Hubbard , Daniel Vetter , Andrew Morton , "open list:DMA BUFFER SHARING FRAMEWORK" , Dan Williams , Linux ARM , Marek Szyprowski Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gU2F0LCBPY3QgMywgMjAyMCBhdCAyOjMxIEFNIEphc29uIEd1bnRob3JwZSA8amdnQHppZXBl LmNhPiB3cm90ZToKPgo+IE9uIEZyaSwgT2N0IDAyLCAyMDIwIGF0IDA4OjE2OjQ4UE0gKzAyMDAs IERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gPiBPbiBGcmksIE9jdCAyLCAyMDIwIGF0IDg6MDYgUE0g SmFzb24gR3VudGhvcnBlIDxqZ2dAemllcGUuY2E+IHdyb3RlOgo+ID4gPiBPbiBGcmksIE9jdCAw MiwgMjAyMCBhdCAwNzo1MzowM1BNICswMjAwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4gPiA+ IEZvciAkcmVhc29ucyBJJ3ZlIHN0dW1ibGVkIG92ZXIgdGhpcyBjb2RlIGFuZCBJJ20gbm90IHN1 cmUgdGhlIGNoYW5nZQo+ID4gPiA+IHRvIHRoZSBuZXcgZ3VwIGZ1bmN0aW9ucyBpbiA1NWE2NTBj MzVmZWEgKCJtbS9ndXA6IGZyYW1lX3ZlY3RvcjoKPiA+ID4gPiBjb252ZXJ0IGdldF91c2VyX3Bh Z2VzKCkgLS0+IHBpbl91c2VyX3BhZ2VzKCkiKSB3YXMgZW50aXJlbHkgY29ycmVjdC4KPiA+ID4g Pgo+ID4gPiA+IFRoaXMgaGVyZSBpcyB1c2VkIGZvciBsb25nIHRlcm0gYnVmZmVycyAobm90IGp1 c3QgcXVpY2sgSS9PKSBsaWtlCj4gPiA+ID4gUkRNQSwgYW5kIEpvaG4gbm90ZXMgdGhpcyBpbiBo aXMgcGF0Y2guIEJ1dCBJIHRob3VnaHQgdGhlIHJ1bGUgZm9yCj4gPiA+ID4gdGhlc2UgaXMgdGhh dCB0aGV5IG5lZWQgdG8gYWRkIEZPTExfTE9OR1RFUk0sIHdoaWNoIEpvaG4ncyBwYXRjaAo+ID4g PiA+IGRpZG4ndCBkby4KPiA+ID4gPgo+ID4gPiA+IFRoZXJlIGlzIGFscmVhZHkgYSBkYXggc3Bl Y2lmaWMgY2hlY2sgKGFkZGVkIGluIGI3ZjA1NTRhNTZmMiAoIm1tOgo+ID4gPiA+IGZhaWwgZ2V0 X3ZhZGRyX2ZyYW1lcygpIGZvciBmaWxlc3lzdGVtLWRheCBtYXBwaW5ncyIpKSwgc28gdGhpcyBz ZWVtcwo+ID4gPiA+IGxpa2UgdGhlIHBydWRlbnQgdGhpbmcgdG8gZG8uCj4gPiA+ID4KPiA+ID4g PiBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGludGVsLmNvbT4K PiA+ID4gPiBDYzogQW5kcmV3IE1vcnRvbiA8YWtwbUBsaW51eC1mb3VuZGF0aW9uLm9yZz4KPiA+ ID4gPiBDYzogSm9obiBIdWJiYXJkIDxqaHViYmFyZEBudmlkaWEuY29tPgo+ID4gPiA+IENjOiBK w6lyw7RtZSBHbGlzc2UgPGpnbGlzc2VAcmVkaGF0LmNvbT4KPiA+ID4gPiBDYzogSmFuIEthcmEg PGphY2tAc3VzZS5jej4KPiA+ID4gPiBDYzogRGFuIFdpbGxpYW1zIDxkYW4uai53aWxsaWFtc0Bp bnRlbC5jb20+Cj4gPiA+ID4gQ2M6IGxpbnV4LW1tQGt2YWNrLm9yZwo+ID4gPiA+IENjOiBsaW51 eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKPiA+ID4gPiBDYzogbGludXgtc2Ftc3Vu Zy1zb2NAdmdlci5rZXJuZWwub3JnCj4gPiA+ID4gQ2M6IGxpbnV4LW1lZGlhQHZnZXIua2VybmVs Lm9yZwo+ID4gPiA+IEhpIGFsbCwKPiA+ID4gPgo+ID4gPiA+IEkgc3R1bWJsZWQgb3ZlciB0aGlz IGFuZCBmaWd1cmVkIHR5cGluZyB0aGlzIHBhdGNoIGNhbid0IGh1cnQuIFJlYWxseQo+ID4gPiA+ IGp1c3QgdG8gbWF5YmUgbGVhcm4gYSBmZXcgdGhpbmdzIGFib3V0IGhvdyBndXAvcHVwIGlzIHN1 cHBvc2VkIHRvIGJlCj4gPiA+ID4gdXNlZCAod2UgaGF2ZSBhIGJpdCBvZiB0aGF0IGluIGRyaXZl cnMvZ3B1KSwgdGhpcyBoZXJlIGlzbid0IHJlYWxseQo+ID4gPiA+IHJhbGF0ZWQgdG8gYW55dGhp bmcgSSdtIGRvaW5nLgo+ID4gPgo+ID4gPiBGT0xMX0ZPUkNFIGlzIGEgcHJldHR5IGJpZyBjbHVl IGl0IHNob3VsZCBiZSBGT0xMX0xPTkdURVJNLCBJTUhPCj4gPgo+ID4gU2luY2UgeW91J3JlIGhl cmUgLi4uIEkndmUgbm90aWNlZCB0aGF0IGliIHNldHMgRk9MTF9GT1JDRSB3aGVuIHRoZSBpYgo+ ID4gdmVyYiBhY2Nlc3MgbW9kZSBpbmRpY2F0ZXMgcG9zc2libGUgd3JpdGVzLiBJJ20gbm90IHJl YWxseSBjbGVhciBvbgo+ID4gd2h5IEZPTExfV1JJVEUgaXNuJ3QgZW5vdWdoIGFueSB3aHkgeW91 IG5lZWQgdG8gYmUgYWJsZSB0byB3cml0ZQo+ID4gdGhyb3VnaCBhIHZtYSB0aGF0J3Mgd3JpdGUg cHJvdGVjdGVkIGN1cnJlbnRseS4KPgo+IEFoLCBGT0xMX0ZPUkNFIHwgRk9MTF9XUklURSBtZWFu cyAqcmVhZCogY29uZnVzaW5nbHkgZW5vdWdoLCBhbmQgdGhlCj4gb25seSByZWFzb24geW91J2Qg d2FudCB0aGlzIHZlcnNpb24gZm9yIHJlYWQgaXMgaWYgeW91IGFyZSBkb2luZwo+IGxvbmd0ZXJt IHN0dWZmLiBJIHdyb3RlIGFib3V0IHRoaXMgcmVjZW50bHk6Cj4KPiBodHRwczovL2xvcmUua2Vy bmVsLm9yZy9saW51eC1tbS8yMDIwMDkyODIzNTczOS5HVTk5MTZAemllcGUuY2EvCj4KPiA+ID4g U2luY2UgZXZlcnkgZHJpdmVyIGRvZXMgdGhpcyB3cm9uZyBhbnl0aGluZyB0aGF0IHVzZXMgdGhp cyBpcyBjcmVhdGluZwo+ID4gPiB0ZXJyaWZ5aW5nIHNlY3VyaXR5IGlzc3Vlcy4KPiA+ID4KPiA+ ID4gSU1ITyB0aGlzIHdob2xlIEFQSSBzaG91bGQgYmUgZGVsZXRlZCA6KAo+ID4KPiA+IFllYWgg dGhhdCBwYXJ0IEkganVzdCB0cmllZCB0byBjb252ZW5pZW50bHkgaWdub3JlLiBJIGd1ZXNzIHRo aXMgZGF0ZXMKPiA+IGJhY2sgdG8gYSB0aW1lIHdoZW4gaW9yZW1hcHMgd2hlcmUgYXQgYmVzdCBm aXhlZCwgYW5kIHRoZXJlIHdhc24ndAo+ID4gYW55dGhpbmcgbGlrZSBhIGdwdSBkcml2ZXIgZHlu YW1pY2FsbHkgbWFuYWdpbmcgdnJhbSBhcm91bmQsIHJlc3VsdGluZwo+ID4gaW4gcmFuZG9tIGVu dGlyZWx5IHVucmVsYXRlZCB0aGluZ3MgcG9zc2libHkgYmVpbmcgbWFwcGVkIHRvIHRoYXQgc2V0 Cj4gPiBvZiBwZm5zLgo+Cj4gTm8sIGl0IHdhcyBhbHdheXMgd3JvbmcuIFByaW9yIHRvIEdQVSBs aWtlIGNhc2VzIHRoZSBsaWZldGltZSBvZiB0aGUKPiBQVEUgd2FzIHRpZWQgdG8gdGhlIHZtYSBh bmQgd2hlbiB0aGUgdm1hIGJlY29tZXMgZnJlZSB0aGUgZHJpdmVyIGNhbgo+IG1vdmUgdGhlIHRo aW5ncyBpbiB0aGUgUFRFcyB0byAnZnJlZScuIEVhc3kgdG8gdHJpZ2dlciB1c2UtYWZ0ZXItZnJl ZQo+IGlzc3VlcyBhbmQgZGV2aWNlcyBsaWtlIFJETUEgaGF2ZSBzZWN1cml0eSBjb250ZXh0cyBh dHRhY2hlZCB0byB0aGVzZQo+IFBURXMgc28gaXQgYmVjb21lcyBhIHNlcmlvdXMgc2VjdXJpdHkg YnVnIHRvIGRvIHNvbWV0aGluZyBsaWtlIHRoaXMuCj4KPiA+IFRoZSB1bmRlcmx5aW5nIGZvbGxv d19wZm4gaXMgYWxzbyB1c2VkIGluIG90aGVyIHBsYWNlcyB3aXRoaW4KPiA+IGRyaXZlcnMvbWVk aWEsIHNvIHRoaXMgZG9lc24ndCBzZWVtIHRvIGJlIGFuIGFjY2lkZW50LCBidXQgYWN0dWFsbHkK PiA+IGludGVudGlvbmFsLgo+Cj4gTG9va2luZyBjbG9zZWx5LCB0aGVyZSBhcmUgdmVyeSBmZXcg dXNlcnMsIG1vc3QgKnNlZW0qIHBvaW50bGVzcywgYnV0Cj4gbWF5YmUgdGhlcmUgaXMgYSBjcmF6 eSByZWFzb24/Cj4KPiBUaGUgc2VxdWVuY2UKPiAgIGdldF92YWRkcl9mcmFtZXMoKTsKPiAgIGZy YW1lX3ZlY3Rvcl90b19wYWdlcygpOwo+ICAgc2dfYWxsb2NfdGFibGVfZnJvbV9wYWdlcygpOwo+ Cj4gU2hvdWxkIGJlIHdyaXR0ZW4KPiAgIHBpbl91c2VyX3BhZ2VzX2Zhc3QoRk9MTF9MT05HVEVS TSk7Cj4gICBzZ19hbGxvY190YWJsZV9mcm9tX3BhZ2VzKCkKPgo+IFRoZXJlIGlzIHNvbWUgJ3Nw ZWNpYWwnIGNvZGUgaW4gZnJhbWVfdmVjdG9yX3RvX3BhZ2VzKCkgdGhhdCB0cmllcyB0bwo+IGdl dCBhIHN0cnVjdCBwYWdlIGZvciB0aGluZ3MgZnJvbSBhIFZNX0lPIG9yIFZNX1BGTk1BUC4uLgo+ Cj4gT2ggc25hcCwgdGhhdCBpcyAqY29tcGxldGVseSogYnJva2VuISBJZiB0aGUgZmlyc3QgVk1B IGlzIElPfFBGTk1BUAo+IHRoZW4gZ2V0X3ZhZGRyX2ZyYW1lcygpIGl0ZXJhdGVzIG92ZXIgYWxs IFZNQXMgaW4gdGhlIHJhbmdlLCBvZiBhbnkKPiBraW5kIGFuZCBleHRyYWN0cyB0aGUgUFRFcyB0 aGVuIGJsaW5kbHkgcmVmZXJlbmNlcyB0aGVtISBUaGlzIG1lYW5zIGl0Cj4gY2FuIGJlIHVzZWQg dG8gdXNlIGFmdGVyIGZyZWUgbm9ybWFsIFJBTSBzdHJ1Y3QgcGFnZXMhISBHYWghCj4KPiBXb3cu IE9rYXkuIFRoYXQgaGFzIHRvIGdvLgo+Cj4gU28sIEkgKnRoaW5rKiB3ZSBjYW4gYXNzdW1lIHRo ZXJlIGlzIG5vIHNhbmUgY2FzZXMgd2hlcmUKPiBmcmFtZV92ZWN0b3JfdG9fcGFnZXMoKSBzdWNj ZWVkcyBidXQgcGluX3VzZXJfcGFnZXMoKSB3YXNuJ3QgY2FsbGVkLgo+Cj4gVGhhdCBtZWFucyB0 aGUgdXNlcnMgaGVyZToKPiAgLSBoYWJhbmFsYWJzOiAgSGV5IE9kZWQgY2FuIHlvdSBmaXggdGhp cyB1cD8KWWVzLCBubyBwcm9ibGVtLCBJJ2xsIGRvIGl0IHZlcnkgc29vbi4KVGhhbmtzLApPZGVk Cgo+Cj4gIC0gZ3B1L2V4eW5vczogRGFuaWVsIGNhbiB5b3UgZ2V0IHNvbWVvbmUgdGhlcmUgdG8g c3RvcCB1c2luZyBpdD8KPgo+ICAtIG1lZGlhL3ZpZGVvYnVmIHZpYSB2YjJfZG1hX3NnX2dldF91 c2VycHRyKCkKPgo+IFNob3VsZCBhbGwgYmUgc3dpdGNoZWQgdG8gdGhlIHN0YW5kYXJkIHBpbl91 c2VyX3BhZ2VzIHNlcXVlbmNlCj4gYWJvdmUuCj4KPiBUaGF0IGxlYXZlcyB0aGUgb25seSBpbnRl cmVzdGluZyBwbGFjZXMgYXMgdmIyX2RjX2dldF91c2VycHRyKCkgYW5kCj4gdmIyX3ZtYWxsb2Nf Z2V0X3VzZXJwdHIoKSB3aGljaCBib3RoIGNvbXBsZXRlbHkgZmFpbCB0byBmb2xsb3cgdGhlCj4g UkVRVUlSRUQgYmVoYXZpb3IgaW4gdGhlIGZ1bmN0aW9uJ3MgY29tbWVudCBhYm91dCBjaGVja2lu ZyBQVEVzLiBJdAo+IGp1c3QgRE1BIG1hcHMgdGhlbS4gQmFkbHkgYnJva2VuLgo+Cj4gR3Vlc3Np bmcgdGhpcyBoYWNrZXJ5IGlzIGZvciBzb21lIGVtYmVkZGVkIFAyUCBETUEgdHJhbnNmZXI/Cj4K PiBBZnRlciBoZSB0aHJlZSBwbGFjZXMgYWJvdmUgc2hvdWxkIHVzZSBwaW5fdXNlcl9wYWdlc19m YXN0KCksIHRoZW4KPiB0aGlzIHdob2xlIGJyb2tlbiBBUEkgc2hvdWxkIGJlIG1vdmVkIGludG8g dmlkZW9idWYyLW1lbW9wcy5jIGFuZCBhCj4gYmlnIGZhdCAiVEhJUyBET0VTTidUIFdPUksiIHN0 dWNrIG9uIGl0Lgo+Cj4gdmlkZW9idWYyIHNob3VsZCBwcm9iYWJseSB1c2UgUDJQIERNQSBidWYg Zm9yIHRoaXMgaW5zdGVhZC4KPgo+IEphc29uCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1h cm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcv bWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==