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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id B6567C433FE for ; Mon, 21 Nov 2022 20:31:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:Reply-To:List-Subscribe:List-Help: List-Post:List-Archive:List-Unsubscribe:List-Id:In-Reply-To:References:Cc:To: Subject:MIME-Version:Date:Message-ID:From:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=MM3zl2NhG8VVB8E6/i8SrhaDPXqg2yMPfidonJjSxRc=; b=hEs8sohA2enLU3 YQu9PyqHQvk/aUUXjvRLsRDDEIGhrEraiz6V6ab+zZ9qFQOKIMcEMF2fMGkokSwCkM/xf9Fsp8USX cOlXmWkHgQvS5eB2vPKHZfI9nF8GxisTpoJHrHxs+A3d+IWCcwgoQWidpAneb2CZd3Wcv+ubMUt7+ BRtV79VrcbpKI/fCwtZqNosm2MRvfo0jVupbEuxYdV+PLKx6ZOXdBXG1VLs61kgvJgVHat6v1OnzO 34Ra502nuNPVz9GtYjxpRuS/XbyrgGSemRQBCacLWVMoavvYVzHPsxG4q4JY4sulFMtYM3DiRhC3+ SWVQPdGSsPftkk8PxTNQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oxDRO-0001O1-VB; Mon, 21 Nov 2022 20:30:55 +0000 Received: from mail-lj1-x22c.google.com ([2a00:1450:4864:20::22c]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oxDRL-0001Mg-2W for linux-arm-kernel@lists.infradead.org; Mon, 21 Nov 2022 20:30:53 +0000 Received: by mail-lj1-x22c.google.com with SMTP id h12so15735821ljg.9 for ; Mon, 21 Nov 2022 12:30:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:in-reply-to:references:cc:to :content-language:subject:reply-to:user-agent:mime-version:date :message-id:from:from:to:cc:subject:date:message-id:reply-to; bh=yfpG9eV9KNVg6+qRSV5QIiQhtEjfHqp5OQWIwTqY8sA=; b=Ze5g2f/gPvQ3Tp9Cc8ktS01XE453EfrnyYaf+/a3VDrFFSP4CJO3aUfyiY+dOwYhRf 19y5fnAixQ0LpEiHwAfYBKxS6oixdLF89sVOfNWSGjkqQCIteMAo7nhKr7HwBJX++HYw Y7Ax6q0yOQyRIVBnUrcSnGFj7Wx/KzucaNwjMkgcgFxZByJ5QEPbtQzQSFUVzUl4wkcG Sm8W77Bo1bisA2AXtJ0Bu1wlMNp5TyyOW0nkHK0QCCm92Kclg9rh1IN5SgNX1tApr/F0 2g8ILU8TvDQOyJiywHaHtOIQi2yh6zfiAikOQeQ1u6d9uJBG4peZ7KOrGfpJCU/kBHZJ 7m/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:in-reply-to:references:cc:to :content-language:subject:reply-to:user-agent:mime-version:date :message-id:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=yfpG9eV9KNVg6+qRSV5QIiQhtEjfHqp5OQWIwTqY8sA=; b=vjQrAMPIuxYBQAmkHSBPQYOOmRsYXvajuuECho3l7FTue7jSNJQOVZRS4/6ZhGSovS +svnNG1G7y1t4hzpRJe8tsdfjZNXjgF/U/+mWyuZ1Iz8T4cRBsfGQqY10PFDDXBCLpsH Vi3gAkWXkP6DD28dvQ+BT+xbV+Xbu9LFyZ9L9kd0umMMtSuZVclN1apS5ddZmeY8oLOG cvyVX2LAVGzUPVvLCulZZAcIEuKcLlVEl7ZguGliLzk0yjVbe/ajAIcGMnf6/lcptbWo OI1dX/Jijkj+EBa5btE4VS57Qw41cCcG+Z8sb729uL7kBJRazWsMLi+PF3ua5zn7VBb8 17UQ== X-Gm-Message-State: ANoB5pkwbQFJXhSTMLpjR1/zld6rATGnpNHqgMoC2V17FD4iLYMez8rt lEoXeOKEEmb3jBMiV3vzi2E= X-Google-Smtp-Source: AA0mqf4jNu8dHA6JfWXDhB4DyXYt8qsKIcM6lNMaXNk/PE24lBhpjgzvIjCR5uxjAMvvwmnDlhywFQ== X-Received: by 2002:a2e:2d01:0:b0:278:ebb5:ddd2 with SMTP id t1-20020a2e2d01000000b00278ebb5ddd2mr6025246ljt.494.1669062647681; Mon, 21 Nov 2022 12:30:47 -0800 (PST) Received: from ?IPV6:2a02:a31a:a240:1700:cd97:47f7:90db:67bf? ([2a02:a31a:a240:1700:cd97:47f7:90db:67bf]) by smtp.googlemail.com with ESMTPSA id r17-20020a2e9951000000b00261ccf566e3sm1555644ljj.65.2022.11.21.12.30.45 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 21 Nov 2022 12:30:46 -0800 (PST) From: Mateusz Kwiatkowski X-Google-Original-From: Mateusz Kwiatkowski Message-ID: <069ff6bb-c49e-e7c9-ce45-35999ff725c5@gmail.com> Date: Mon, 21 Nov 2022 21:30:40 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.5.0 Subject: Re: [PATCH v10 18/19] drm/vc4: vec: Add support for more analog TV standards Content-Language: pl To: Mauro Carvalho Chehab , Maxime Ripard Cc: Samuel Holland , Jernej Skrabec , Maarten Lankhorst , Rodrigo Vivi , Joonas Lahtinen , Maxime Ripard , Ben Skeggs , Chen-Yu Tsai , David Airlie , Jani Nikula , Tvrtko Ursulin , Emma Anholt , Karol Herbst , Lyude Paul , Thomas Zimmermann , Daniel Vetter , Dom Cobley , Dave Stevenson , Phil Elwell , nouveau@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Hans de Goede , =?UTF-8?Q?Noralf_Tr=c3=b8nnes?= , Geert Uytterhoeven , linux-sunxi@lists.linux.dev, linux-arm-kernel@lists.infradead.org References: <20220728-rpi-analog-tv-properties-v10-0-256dad125326@cerno.tech> <20220728-rpi-analog-tv-properties-v10-18-256dad125326@cerno.tech> <20221117164928.200b3a1a@maurocar-mobl2> In-Reply-To: <20221117164928.200b3a1a@maurocar-mobl2> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221121_123051_166250_3BA937A3 X-CRM114-Status: GOOD ( 40.96 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: kfyatek+publicgit@gmail.com 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 SGkgTWF1cm8sCgpBcyB0aGUgYXV0aG9yIG9mIHRoZSBvcmlnaW5hbCB2ZXJzaW9uIG9mIHRoaXMg Y29tbWl0LCBhbmQgYWxzbyBhIHBlcnNvbiB3aG8KYXJndWVkIHF1aXRlIGEgYml0IG9uIHRoZXNl IGRlc2NyaXB0aW9ucyBhbmQgZGVjaXNpb25zLCBsZXQgbWUgY2hpcCBpbiBhIGJpdC4KClcgZG5p dSAxNy4xMS4yMDIyIG8gMTY6NDksIE1hdXJvIENhcnZhbGhvIENoZWhhYiBwaXN6ZToKPiBPbiBU aHUsIDE3IE5vdiAyMDIyIDEwOjI5OjAxICswMTAwCj4gTWF4aW1lIFJpcGFyZCA8bWF4aW1lQGNl cm5vLnRlY2g+IHdyb3RlOgo+Cj4+IEZyb206IE1hdGV1c3ogS3dpYXRrb3dza2kgPGtmeWF0ZWsr cHVibGljZ2l0QGdtYWlsLmNvbT4KPj4KPj4gQWRkIHN1cHBvcnQgZm9yIHRoZSBmb2xsb3dpbmcg Y29tcG9zaXRlIG91dHB1dCBtb2RlcyAoYWxsIG9mIHRoZW0gYXJlCj4+IHNvbWV3aGF0IG1vcmUg b2JzY3VyZSB0aGFuIHRoZSBwcmV2aW91c2x5IGRlZmluZWQgb25lcyk6Cj4+Cj4+IC0gTlRTQ180 NDMgLSBOVFNDLXN0eWxlIHNpZ25hbCB3aXRoIHRoZSBjaHJvbWEgc3ViY2FycmllciBzaGlmdGVk IHRvCj4+ICAgNC40MzM2MTg3NSBNSHogKHRoZSBQQUwgc3ViY2FycmllciBmcmVxdWVuY3kpLiBO ZXZlciB1c2VkIGZvcgo+PiAgIGJyb2FkY2FzdGluZywgYnV0IHNvbWV0aW1lcyB1c2VkIGFzIGEg aGFjayB0byBwbGF5IE5UU0MgY29udGVudCBpbiBQQUwKPj4gICByZWdpb25zIChlLmcuIG9uIFZD UnMpLgo+Cj4+IC0gUEFMX04gLSBQQUwgd2l0aCBhbHRlcm5hdGl2ZSBjaHJvbWEgc3ViY2Fycmll ciBmcmVxdWVuY3ksCj4+ICAgMy41ODIwNTYyNSBNSHouIFVzZWQgYXMgYSBicm9hZGNhc3Qgc3Rh bmRhcmQgaW4gQXJnZW50aW5hLCBQYXJhZ3VheQo+PiAgIGFuZCBVcnVndWF5IHRvIGZpdCA1NzZp NTAgd2l0aCBjb2xvdXIgaW4gNiBNSHogY2hhbm5lbCByYXN0ZXIuCj4KPiBUaGF0J3Mgbm90IHJp Z2h0LiBBcmdlbnRpbmEgdXNlcyBhIGRpZmZlcmVudCBzdGFuZGFyZCB0aGFuIFBhcmFndWF5IGFu ZAo+IFVydWd1YWkuCj4KPiBTZWUsIHRoZXJlIGFyZSB0d28gdmFyaWFudHMgb2YgUEFML04uIFRo ZSBvcmlnaW5hbCBvbmUgYW5kIFBBTC9OJyAtIGFsc28KPiBjYWxsZWQgUEFML05DIG9yIFBBTC9D TiAoQ29tYmluYXRpb24gTikuIFNvbWUgb2YgdGhlIHRpbWluZ3MgYXJlIAo+IGRpZmZlcmVudCBv biAvTkMgdmFyaWFudC4KPgo+IEFzIGZhciBhcyBJJ20gYXdhcmUsIFBBTC9OYyBpcyB1c2VkIGlu IEFyZ2VudGluYSwgd2hpbGUKPiBQQUwvTiBpcyB1c2VkIGluIFBhcmFndWFpIGFuZCBVcnVndWFp LCBidXQgSSBtYXkgYmUgd3Jvbmcgb24gdGhhdCwKPiBhcyBpdCBoYXMgYmVlbiBhIGxvbmcgdGlt ZSBzaW5jZSBoYWQgdG8gdG91Y2ggb24gdGhpcy4KCklmIHlvdSBzYXkgc28gLSBtYXliZSB0aGF0 J3MgdHJ1ZS4gQnV0IEkgdHJpZWQgdG8gZmluZCBhbnkgZGlmZmVyZW5jZXMgYmV0d2VlbgpQQUwt TiBhbmQgUEFMLU5jIG1hbnkgdGltZXMgYW5kIGhhdmVuJ3QgZm91bmQgYW55dGhpbmcgY29uY3Jl dGUuIFRoZSBvbmx5CmF1dGhvcml0YXRpdmUgc291cmNlIHdoZXJlIFN5c3RlbSBOIGFuZCAiQ29t YmluYXRpb24gTi9QQUwiIHNlZW0gdG8gYmUgbWVudGlvbmVkCmFzIHNlcGFyYXRlIGVudGl0aWVz IGlzIEJULjE3MDEKPGh0dHBzOi8vd3d3Lml0dS5pbnQvcmVjL1ItUkVDLUJULjE3MDEtMS0yMDA1 MDgtSS9lbj4uIEhvd2V2ZXI6CgphKSB0aGUgZGlmZmVyZW5jZXMgYXJlIHZlcnkgc3VidGxlICh3 aXRoICJjb21iaW5hdGlvbiBOL1BBTCIgYmVpbmcganVzdCBhIHRhZAogICBzdHJpY3RlciB0aGFu IHdoYXQncyBtZW50aW9uZWQgZm9yIFN5c3RlbSBOKQpiKSAiQ29tYmluYXRpb24gTi9QQUwiIGNh biBiZSB1bmRlcnN0b29kIGFzIGp1c3QgIlN5c3RlbSBOIGNvbWJpbmVkIHdpdGggUEFMCiAgIGNv bG9yIiwgYXMgb3Bwb3NlZCB0byAicmF3IiwgYmxhY2smd2hpdGUgU3lzdGVtIE4uIFRoaXMgaW50 ZXByZXRhdGlvbiBpcyBhbHNvCiAgIHdoYXQgdGhlIHVzZXIgY2FsbGluZyB0aGVtc2VsdmVzICJB bGNhaGVtaXN0IiBzdWdnZXN0cyBoZXJlOgogICBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lr aS9UYWxrOlBBTCNQQUwtTl92ZXJzdXNfUEFMLU5jCgpUaGlzIGlzIG9mIGNvdXJzZSBmYXIgZnJv bSBhbiBhdXRob3JpdGF0aXZlIHNvdXJjZS4gSWYgeW91IGhhdmUgYSBkZWZpbml0aXZlCnNvdXJj ZSBmb3IgUEFMLU4gYW5kIFBBTC1OYyBiZWluZyBkaWZmZXJlbnQsIG9yIGNvbmNyZXRlIGluZm9y bWF0aW9uIG9uIHdoYXQgaXMKZGlmZmVyZW50IGJldHdlZW4gdGhlbSBzcGVjaWZpY2FsbHksIHRo ZW4gc28gYmUgaXQuIEJ1dCBJIHRyaWVkIGFuZCBoYXZlbid0CmZvdW5kIGFueXRoaW5nIGNvbmNs dXNpdmUuCgo+PiAtIFBBTDYwIC0gNDgwaTYwIHNpZ25hbCB3aXRoIFBBTC1zdHlsZSBjb2xvciBh dCBub3JtYWwgRXVyb3BlYW4gUEFMCj4+ICAgZnJlcXVlbmN5LiBBbm90aGVyIG5vbi1zdGFuZGFy ZCwgbm9uLWJyb2FkY2FzdCBtb2RlLCB1c2VkIGluIHNpbWlsYXIKPj4gICBjb250ZXh0cyBhcyBO VFNDXzQ0My4gU29tZSBkaXNwbGF5cyBzdXBwb3J0IG9uZSBidXQgbm90IHRoZSBvdGhlci4KPgo+ PiAtIFNFQ0FNIC0gRnJlbmNoIGZyZXF1ZW5jeS1tb2R1bGF0ZWQgYW5hbG9nIGNvbG9yIHN0YW5k YXJkOyBhbHNvIGhhdmUKPj4gICBiZWVuIGJyb2FkY2FzdCBpbiBFYXN0ZXJuIEV1cm9wZSBhbmQg dmFyaW91cyBwYXJ0cyBvZiBBZnJpY2EgYW5kIEFzaWEuCj4+ICAgVXNlcyB0aGUgc2FtZSA1NzZp NTAgdGltaW5ncyBhcyBQQUwuCj4KPiBUaGlzIGlzIGFsc28gd3JvbmcuIGp1c3QgbGlrZSBQQUws IHRoZXJlIGFyZSBzZXZlcmFsIHZhcmlhbnRzIG9mIFNFQ0FNLAo+IG9uZSB1c2VkIGluIEZyYW5j ZSwgYW5kIGEgZGlmZmVyZW50IG9uZSBpbiBGcmFuY2Ugb3ZlcnNlYXMgYW5kIG9uCj4gcHJldmlv dXMgRnJhbmNlIGNvbG9uaWVzIGluIEFmcmljYSBhbmQgQXNpYS4gRWFzdGVybiBFdXJvcGUgYWxz byB1c2VkCj4gZGlmZmVyZW50IHZhcmlhbnRzIG9mIFNFQ0FNLgoKVGhpcyBpcyB0cnVlLiBIb3dl dmVyLCB0aG9zZSBkaWZmZXJlZCBvbmx5IGluIFJGIG1vZHVsYXRpb24uIEZvciBleGFtcGxlLApG cmVuY2ggU0VDQU0tTCB1c2VkIHBvc2l0aXZlIHZpZGVvIG1vZHVsYXRpb24gYW5kIEFNIHNvdW5k LCB3aGlsZSBFYXN0ZXJuCkV1cm9wZWFuIFNFQ0FNLUQvSyB1c2VkIG5lZ2F0aXZlIHZpZGVvIG1v ZHVsYXRpb24gYW5kIEZNIHNvdW5kLiBCdXQgdGhlCmJhc2ViYW5kIGNvbXBvc2l0ZSBzaWduYWxz IHdlcmUgaWRlbnRpY2FsLgoKVGhlcmUgd2VyZSBzZXZlcmFsIG90aGVyIHZhcmlhbnRzIG9mIFNF Q0FNLCBsaWtlIGVhcmx5IFNFQ0FNL1YgdnMuIFNFQ0FNL0gKKCJGaWVsZCBpZGVudGlmaWNhdGlv biIgdnMuICJMaW5lIGlkZW50aWZpY2F0aW9uIikgd2hpY2ggbW92ZWQgdGhlIGNvbG9yCmlkZW50 aWZpY2F0aW9uIHNpZ25hbHMgZnJvbSBWQkkgdG8gSEJJLiBCdXQgdGhhdCdzIGEgY2hhbmdlIHRo YXQgYWxsIFNFQ0FNCnJlZ2lvbnMsIGluY2x1ZGluZyBib3RoIEZyYW5jZSBhbmQgRWFzdGVybiBF dXJvcGUgZGlkIGluIHRoZSAxOTgwcyB0bwphY29tbW9kYXRlIGZvciB0ZWxldGV4dC4gQWdhaW4s IGF1dGhvcml0YXRpdmUgc291cmNlcyBhcmUgc2NhcmNlLCBidXQgc2VlIGUuZy4KaHR0cHM6Ly93 ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTYwMzAzMjMyOTAzL2h0dHA6Ly93d3cucGVtYmVycy5mcmVl c2VydmUuY28udWsvV29ybGQtVFYtU3RhbmRhcmRzL0NvbG91ci1TdGFuZGFyZHMuaHRtbAooc2Vh cmNoIGZvciAiU3luY2hyb25pc2F0aW9uIG9mIFNFQ0FNIGNvbG91ciB0cmFuc21pc3Npb25zIiBv biB0aGUgcGFnZSkuCgpUaGVyZSdzIGFsc28gTUVTRUNBTSwgYnV0IHRoYXQgb25seSBhcHBsaWVz IHRvIGVuY29kaW5nIG9uIFZIUyBhbmQgQmV0YW1heAp0YXBlcywgbm90IHRoZSBzaWduYWxzIHRo ZW1zZWx2ZXMuIFRoZXJlIHdhcyBhbHNvIFNFQ0FNLU0gZm9yIDUyNS1saW5lICg0ODBpKQpzaWdu YWxzLCBidXQgSSBoYXZlbid0IGZvdW5kIGFueSBjb25jbHVzaXZlIGV2aWRlbmNlIHRoYXQgaXQg d2FzIGV2ZXIgdXNlZCBmb3IKYnJvYWRjYXN0IGFueXdoZXJlCgpTbyB5ZWFoLCBTRUNBTSBjYW4g YmUgYSBiaXQgY29uZnVzaW5nLCBidXQgQUZBSUsgdGhlcmUncyBvbmx5IG9uZSBzdGFuZGFyZCBp Zgp3ZSdyZSB0YWxraW5nIGFib3V0IHRoZSBjb21wb3NpdGUgdmlkZW8gbGF5ZXIuCgotLQoKU29t ZSAqcmVhbGx5KiBvbGQgKGxpa2UsIDE5NjBzIG9sZCkgdmVyc2lvbnMgb2YgQ0NJUiBkb2N1bWVu dHMgYWxzbyBsaXN0ZWQgbW9yZQpzdWJzdGFudGlhbCBkaWZmZXJlbmNlcyBiZXR3ZWVuIHZhcmlv dXMgNjI1LWxpbmUgc3lzdGVtcywgaW5jbHVkaW5nIHRoZSBudW1iZXIKb2YgYWN0aXZlIGxpbmVz IHZhcnlpbmcgZnJvbSA1NzEgdG8gNTg5LiBCdXQgYWxsIHJldmlzaW9ucyBmcm9tIDE5NzQgb253 YXJkIGxpc3QKdGhlIG1vZGVybiB2YWx1ZSBvZiA1NzUgYWN0aXZlIGxpbmVzIGZvciBhbGwgdGhl IHZhcmlhbnRzLCBtYWtpbmcgdGhlbSBkaWZmZXIKb25seSBpbiBSRiBtb2R1bGF0aW9uIGRldGFp bHMuIFdoaWNoIGlzIGJleW9uZCB0aGUgc2NvcGUgb2Ygd2hhdCB0aGUgIlRWIG1vZGUiCnByb3Bl cnR5IGlzIHN1cHBvc2VkIHRvIGRvLgoKPj4gQWxzbyBhZGRlZCBzb21lIGNvbW1lbnRzIGV4cGxh aW5pbmcgY29sb3Igc3ViY2FycmllciBmcmVxdWVuY3kKPj4gcmVnaXN0ZXJzLgo+Pgo+PiBBY2tl ZC1ieTogTm9yYWxmIFRyw7hubmVzIDxub3JhbGZAdHJvbm5lcy5vcmc+Cj4+IFNpZ25lZC1vZmYt Ynk6IE1hdGV1c3ogS3dpYXRrb3dza2kgPGtmeWF0ZWsrcHVibGljZ2l0QGdtYWlsLmNvbT4KPj4g VGVzdGVkLWJ5OiBNYXRldXN6IEt3aWF0a293c2tpIDxrZnlhdGVrK3B1YmxpY2dpdEBnbWFpbC5j b20+Cj4+IFNpZ25lZC1vZmYtYnk6IE1heGltZSBSaXBhcmQgPG1heGltZUBjZXJuby50ZWNoPgo+ Pgo+PiAtLS0KPj4gQ2hhbmdlcyBpbiB2NjoKPj4gLSBTdXBwb3J0IFBBTDYwIGFnYWluCj4+IC0t LQo+PiAgZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfdmVjLmMgfCAxMTEgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0tCj4+ICAxIGZpbGUgY2hhbmdlZCwgMTA3IGluc2Vy dGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vdmM0L3ZjNF92ZWMuYyBiL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X3ZlYy5jCj4+IGluZGV4 IGE4MjhmYzZmYjc3Ni4uZDIzZGJhZDNjYmY2IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vdmM0L3ZjNF92ZWMuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF92ZWMuYwo+ PiBAQCAtNDYsNiArNDYsNyBAQAo+PiAgI2RlZmluZSBWRUNfQ09ORklHMF9ZREVMKHgpCQkoKHgp IDw8IDI2KQo+PiAgI2RlZmluZSBWRUNfQ09ORklHMF9DREVMX01BU0sJCUdFTk1BU0soMjUsIDI0 KQo+PiAgI2RlZmluZSBWRUNfQ09ORklHMF9DREVMKHgpCQkoKHgpIDw8IDI0KQo+PiArI2RlZmlu ZSBWRUNfQ09ORklHMF9TRUNBTV9TVEQJCUJJVCgyMSkKPj4gICNkZWZpbmUgVkVDX0NPTkZJRzBf UEJQUl9GSUwJCUJJVCgxOCkKPj4gICNkZWZpbmUgVkVDX0NPTkZJRzBfQ0hST01BX0dBSU5fTUFT SwlHRU5NQVNLKDE3LCAxNikKPj4gICNkZWZpbmUgVkVDX0NPTkZJRzBfQ0hST01BX0dBSU5fVU5J VFkJKDAgPDwgMTYpCj4+IEBAIC03Niw2ICs3NywyNyBAQAo+PiAgI2RlZmluZSBWRUNfU09GVF9S RVNFVAkJCTB4MTBjCj4+ICAjZGVmaW5lIFZFQ19DTE1QMF9TVEFSVAkJCTB4MTQ0Cj4+ICAjZGVm aW5lIFZFQ19DTE1QMF9FTkQJCQkweDE0OAo+PiArCj4+ICsvKgo+PiArICogVGhlc2Ugc2V0IHRo ZSBjb2xvciBzdWJjYXJyaWVyIGZyZXF1ZW5jeQo+PiArICogaWYgVkVDX0NPTkZJRzFfQ1VTVE9N X0ZSRVEgaXMgZW5hYmxlZC4KPj4gKyAqCj4+ICsgKiBWRUNfRlJFUTFfMCBjb250YWlucyB0aGUg bW9zdCBzaWduaWZpY2FudCAxNi1iaXQgaGFsZi13b3JkLAo+PiArICogVkVDX0ZSRVEzXzIgY29u dGFpbnMgdGhlIGxlYXN0IHNpZ25pZmljYW50IDE2LWJpdCBoYWxmLXdvcmQuCj4+ICsgKiAweDgw MDAwMDAwIHNlZW1zIHRvIGJlIGVxdWl2YWxlbnQgdG8gdGhlIHBpeGVsIGNsb2NrCj4+ICsgKiAo d2hpY2ggaXRzZWxmIGlzIHRoZSBWRUMgY2xvY2sgZGl2aWRlZCBieSA4KS4KPj4gKyAqCj4+ICsg KiBSZWZlcmVuY2UgdmFsdWVzICh3aXRoIHRoZSBkZWZhdWx0IHBpeGVsIGNsb2NrIG9mIDEzLjUg TUh6KToKPj4gKyAqCj4+ICsgKiBOVFNDICAoMzU3OTU0NS5bNDVdIEh6KSAgICAgLSAweDIxRjA3 QzFGCj4+ICsgKiBQQUwgICAoNDQzMzYxOC43NSBIeikgICAgICAgLSAweDJBMDk4QUNCCj4+ICsg KiBQQUwtTSAoMzU3NTYxMS5bODg4MTExXSBIeikgLSAweDIxRTZFRkUzCj4+ICsgKiBQQUwtTiAo MzU4MjA1Ni4yNSBIeikgICAgICAgLSAweDIxRjY5NDQ2Cj4+ICsgKgo+PiArICogTk9URTogRm9y IFNFQ0FNLCBpdCBpcyB1c2VkIGFzIHRoZSBEciBjZW50ZXIgZnJlcXVlbmN5LAo+PiArICogcmVn YXJkbGVzcyBvZiB3aGV0aGVyIFZFQ19DT05GSUcxX0NVU1RPTV9GUkVRIGlzIGVuYWJsZWQgb3Ig bm90Owo+PiArICogdGhhdCBpcyBzcGVjaWZpZWQgYXMgNDQwNjI1MCBIeiwgd2hpY2ggY29ycmVz cG9uZHMgdG8gMHgyOUM3MUM3Mi4KPj4gKyAqLwo+PiAgI2RlZmluZSBWRUNfRlJFUTNfMgkJCTB4 MTgwCj4+ICAjZGVmaW5lIFZFQ19GUkVRMV8wCQkJMHgxODQKPj4gIAo+PiBAQCAtMTE4LDYgKzE0 MCwxNCBAQAo+PiAgCj4+ICAjZGVmaW5lIFZFQ19JTlRFUlJVUFRfQ09OVFJPTAkJMHgxOTAKPj4g ICNkZWZpbmUgVkVDX0lOVEVSUlVQVF9TVEFUVVMJCTB4MTk0Cj4+ICsKPj4gKy8qCj4+ICsgKiBE YiBjZW50ZXIgZnJlcXVlbmN5IGZvciBTRUNBTTsgdGhlIGNsb2NrIGZvciB0aGlzIGlzIHRoZSBz YW1lIGFzIGZvcgo+PiArICogVkVDX0ZSRVEzXzIvVkVDX0ZSRVExXzAsIHdoaWNoIGlzIHVzZWQg Zm9yIERyIGNlbnRlciBmcmVxdWVuY3kuCj4+ICsgKgo+PiArICogVGhpcyBpcyBzcGVjaWZpZWQg YXMgNDI1MDAwMCBIeiwgd2hpY2ggY29ycmVzcG9uZHMgdG8gMHgyODRCREExMy4KPj4gKyAqIFRo YXQgaXMgYWxzbyB0aGUgZGVmYXVsdCB2YWx1ZSwgc28gbm8gbmVlZCB0byBzZXQgaXQgZXhwbGlj aXRseS4KPj4gKyAqLwo+PiAgI2RlZmluZSBWRUNfRkNXX1NFQ0FNX0IJCQkweDE5OAo+PiAgI2Rl ZmluZSBWRUNfU0VDQU1fR0FJTl9WQUwJCTB4MTljCj4+ICAKPj4gQEAgLTE5NywxMCArMjI3LDE1 IEBAIGVudW0gdmM0X3ZlY190dl9tb2RlX2lkIHsKPj4gIAlWQzRfVkVDX1RWX01PREVfTlRTQ19K LAo+PiAgCVZDNF9WRUNfVFZfTU9ERV9QQUwsCj4+ICAJVkM0X1ZFQ19UVl9NT0RFX1BBTF9NLAo+ PiArCVZDNF9WRUNfVFZfTU9ERV9OVFNDXzQ0MywKPj4gKwlWQzRfVkVDX1RWX01PREVfUEFMXzYw LAo+PiArCVZDNF9WRUNfVFZfTU9ERV9QQUxfTiwKPj4gKwlWQzRfVkVDX1RWX01PREVfU0VDQU0s Cj4+ICB9Owo+PiAgCj4+ICBzdHJ1Y3QgdmM0X3ZlY190dl9tb2RlIHsKPj4gIAl1bnNpZ25lZCBp bnQgbW9kZTsKPj4gKwl1MTYgZXhwZWN0ZWRfaHRvdGFsOwo+PiAgCXUzMiBjb25maWcwOwo+PiAg CXUzMiBjb25maWcxOwo+PiAgCXUzMiBjdXN0b21fZnJlcTsKPj4gQEAgLTIzNiwzNSArMjcxLDY4 IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZGVidWdmc19yZWczMiB2ZWNfcmVnc1tdID0gewo+PiAg c3RhdGljIGNvbnN0IHN0cnVjdCB2YzRfdmVjX3R2X21vZGUgdmM0X3ZlY190dl9tb2Rlc1tdID0g ewo+PiAgCXsKPj4gIAkJLm1vZGUgPSBEUk1fTU9ERV9UVl9NT0RFX05UU0MsCj4+ICsJCS5leHBl Y3RlZF9odG90YWwgPSA4NTgsCj4+ICAJCS5jb25maWcwID0gVkVDX0NPTkZJRzBfTlRTQ19TVEQg fCBWRUNfQ09ORklHMF9QREVOLAo+PiAgCQkuY29uZmlnMSA9IFZFQ19DT05GSUcxX0NfQ1ZCU19D VkJTLAo+PiAgCX0sCj4+ICsJewo+PiArCQkubW9kZSA9IERSTV9NT0RFX1RWX01PREVfTlRTQ180 NDMsCj4+ICsJCS5leHBlY3RlZF9odG90YWwgPSA4NTgsCj4+ICsJCS5jb25maWcwID0gVkVDX0NP TkZJRzBfTlRTQ19TVEQsCj4+ICsJCS5jb25maWcxID0gVkVDX0NPTkZJRzFfQ19DVkJTX0NWQlMg fCBWRUNfQ09ORklHMV9DVVNUT01fRlJFUSwKPj4gKwkJLmN1c3RvbV9mcmVxID0gMHgyYTA5OGFj YiwKPj4gKwl9LAo+PiAgCXsKPj4gIAkJLm1vZGUgPSBEUk1fTU9ERV9UVl9NT0RFX05UU0NfSiwK Pj4gKwkJLmV4cGVjdGVkX2h0b3RhbCA9IDg1OCwKPj4gIAkJLmNvbmZpZzAgPSBWRUNfQ09ORklH MF9OVFNDX1NURCwKPj4gIAkJLmNvbmZpZzEgPSBWRUNfQ09ORklHMV9DX0NWQlNfQ1ZCUywKPj4g IAl9LAo+PiAgCXsKPj4gIAkJLm1vZGUgPSBEUk1fTU9ERV9UVl9NT0RFX1BBTCwKPj4gKwkJLmV4 cGVjdGVkX2h0b3RhbCA9IDg2NCwKPj4gIAkJLmNvbmZpZzAgPSBWRUNfQ09ORklHMF9QQUxfQkRH SElfU1RELAo+PiAgCQkuY29uZmlnMSA9IFZFQ19DT05GSUcxX0NfQ1ZCU19DVkJTLAo+PiAgCX0s Cj4+ICsJewo+PiArCQkvKiBQQUwtNjAgKi8KPj4gKwkJLm1vZGUgPSBEUk1fTU9ERV9UVl9NT0RF X1BBTCwKPj4gKwkJLmV4cGVjdGVkX2h0b3RhbCA9IDg1OCwKPj4gKwkJLmNvbmZpZzAgPSBWRUNf Q09ORklHMF9QQUxfTV9TVEQsCj4+ICsJCS5jb25maWcxID0gVkVDX0NPTkZJRzFfQ19DVkJTX0NW QlMgfCBWRUNfQ09ORklHMV9DVVNUT01fRlJFUSwKPj4gKwkJLmN1c3RvbV9mcmVxID0gMHgyYTA5 OGFjYiwKPj4gKwl9LAo+PiAgCXsKPj4gIAkJLm1vZGUgPSBEUk1fTU9ERV9UVl9NT0RFX1BBTF9N LAo+PiArCQkuZXhwZWN0ZWRfaHRvdGFsID0gODU4LAo+PiAgCQkuY29uZmlnMCA9IFZFQ19DT05G SUcwX1BBTF9NX1NURCwKPj4gIAkJLmNvbmZpZzEgPSBWRUNfQ09ORklHMV9DX0NWQlNfQ1ZCUywK Pj4gIAl9LAo+PiArCXsKPj4gKwkJLm1vZGUgPSBEUk1fTU9ERV9UVl9NT0RFX1BBTF9OLAo+PiAr CQkuZXhwZWN0ZWRfaHRvdGFsID0gODY0LAo+PiArCQkuY29uZmlnMCA9IFZFQ19DT05GSUcwX1BB TF9OX1NURCwKPj4gKwkJLmNvbmZpZzEgPSBWRUNfQ09ORklHMV9DX0NWQlNfQ1ZCUywKPj4gKwl9 LAo+PiArCXsKPj4gKwkJLm1vZGUgPSBEUk1fTU9ERV9UVl9NT0RFX1NFQ0FNLAo+PiArCQkuZXhw ZWN0ZWRfaHRvdGFsID0gODY0LAo+PiArCQkuY29uZmlnMCA9IFZFQ19DT05GSUcwX1NFQ0FNX1NU RCwKPj4gKwkJLmNvbmZpZzEgPSBWRUNfQ09ORklHMV9DX0NWQlNfQ1ZCUywKPj4gKwkJLmN1c3Rv bV9mcmVxID0gMHgyOWM3MWM3MiwKPj4gKwl9LAo+PiAgfTsKPj4gIAo+PiAgc3RhdGljIGlubGlu ZSBjb25zdCBzdHJ1Y3QgdmM0X3ZlY190dl9tb2RlICoKPj4gLXZjNF92ZWNfdHZfbW9kZV9sb29r dXAodW5zaWduZWQgaW50IG1vZGUpCj4+ICt2YzRfdmVjX3R2X21vZGVfbG9va3VwKHVuc2lnbmVk IGludCBtb2RlLCB1MTYgaHRvdGFsKQo+PiAgewo+PiAgCXVuc2lnbmVkIGludCBpOwo+PiAgCj4+ ICAJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUodmM0X3ZlY190dl9tb2Rlcyk7IGkrKykgewo+ PiAgCQljb25zdCBzdHJ1Y3QgdmM0X3ZlY190dl9tb2RlICp0dl9tb2RlID0gJnZjNF92ZWNfdHZf bW9kZXNbaV07Cj4+ICAKPj4gLQkJaWYgKHR2X21vZGUtPm1vZGUgPT0gbW9kZSkKPj4gKwkJaWYg KHR2X21vZGUtPm1vZGUgPT0gbW9kZSAmJgo+PiArCQkgICAgdHZfbW9kZS0+ZXhwZWN0ZWRfaHRv dGFsID09IGh0b3RhbCkKPj4gIAkJCXJldHVybiB0dl9tb2RlOwo+PiAgCX0KPj4gIAo+PiBAQCAt MjczLDkgKzM0MSwxMyBAQCB2YzRfdmVjX3R2X21vZGVfbG9va3VwKHVuc2lnbmVkIGludCBtb2Rl KQo+PiAgCj4+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wcm9wX2VudW1fbGlzdCBsZWdhY3lf dHZfbW9kZV9uYW1lc1tdID0gewo+PiAgCXsgVkM0X1ZFQ19UVl9NT0RFX05UU0MsICJOVFNDIiwg fSwKPj4gKwl7IFZDNF9WRUNfVFZfTU9ERV9OVFNDXzQ0MywgIk5UU0MtNDQzIiwgfSwKPj4gIAl7 IFZDNF9WRUNfVFZfTU9ERV9OVFNDX0osICJOVFNDLUoiLCB9LAo+PiAgCXsgVkM0X1ZFQ19UVl9N T0RFX1BBTCwgIlBBTCIsIH0sCj4+ICsJeyBWQzRfVkVDX1RWX01PREVfUEFMXzYwLCAiUEFMLTYw IiwgfSwKPj4gIAl7IFZDNF9WRUNfVFZfTU9ERV9QQUxfTSwgIlBBTC1NIiwgfSwKPj4gKwl7IFZD NF9WRUNfVFZfTU9ERV9QQUxfTiwgIlBBTC1OIiwgfSwKPj4gKwl7IFZDNF9WRUNfVFZfTU9ERV9T RUNBTSwgIlNFQ0FNIiwgfSwKPj4gIH07Cj4+ICAKPj4gIHN0YXRpYyBlbnVtIGRybV9jb25uZWN0 b3Jfc3RhdHVzCj4+IEBAIC0zMDYsMTEgKzM3OCwxNiBAQCB2YzRfdmVjX2Nvbm5lY3Rvcl9zZXRf cHJvcGVydHkoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPj4gIAkJc3RhdGUtPnR2 Lm1vZGUgPSBEUk1fTU9ERV9UVl9NT0RFX05UU0M7Cj4+ICAJCWJyZWFrOwo+PiAgCj4+ICsJY2Fz ZSBWQzRfVkVDX1RWX01PREVfTlRTQ180NDM6Cj4+ICsJCXN0YXRlLT50di5tb2RlID0gRFJNX01P REVfVFZfTU9ERV9OVFNDXzQ0MzsKPj4gKwkJYnJlYWs7Cj4+ICsKPj4gIAljYXNlIFZDNF9WRUNf VFZfTU9ERV9OVFNDX0o6Cj4+ICAJCXN0YXRlLT50di5tb2RlID0gRFJNX01PREVfVFZfTU9ERV9O VFNDX0o7Cj4+ICAJCWJyZWFrOwo+PiAgCj4+ICAJY2FzZSBWQzRfVkVDX1RWX01PREVfUEFMOgo+ PiArCWNhc2UgVkM0X1ZFQ19UVl9NT0RFX1BBTF82MDoKPj4gIAkJc3RhdGUtPnR2Lm1vZGUgPSBE Uk1fTU9ERV9UVl9NT0RFX1BBTDsKPj4gIAkJYnJlYWs7Cj4+ICAKPj4gQEAgLTMxOCw2ICszOTUs MTQgQEAgdmM0X3ZlY19jb25uZWN0b3Jfc2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9y ICpjb25uZWN0b3IsCj4+ICAJCXN0YXRlLT50di5tb2RlID0gRFJNX01PREVfVFZfTU9ERV9QQUxf TTsKPj4gIAkJYnJlYWs7Cj4+ICAKPj4gKwljYXNlIFZDNF9WRUNfVFZfTU9ERV9QQUxfTjoKPj4g KwkJc3RhdGUtPnR2Lm1vZGUgPSBEUk1fTU9ERV9UVl9NT0RFX1BBTF9OOwo+PiArCQlicmVhazsK Pj4gKwo+PiArCWNhc2UgVkM0X1ZFQ19UVl9NT0RFX1NFQ0FNOgo+PiArCQlzdGF0ZS0+dHYubW9k ZSA9IERSTV9NT0RFX1RWX01PREVfU0VDQU07Cj4+ICsJCWJyZWFrOwo+PiArCj4+ICAJZGVmYXVs dDoKPj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4+ICAJfQo+PiBAQCAtMzQxLDYgKzQyNiwxMCBAQCB2 YzRfdmVjX2Nvbm5lY3Rvcl9nZXRfcHJvcGVydHkoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvciwKPj4gIAkJKnZhbCA9IFZDNF9WRUNfVFZfTU9ERV9OVFNDOwo+PiAgCQlicmVhazsKPj4g IAo+PiArCWNhc2UgRFJNX01PREVfVFZfTU9ERV9OVFNDXzQ0MzoKPj4gKwkJKnZhbCA9IFZDNF9W RUNfVFZfTU9ERV9OVFNDXzQ0MzsKPj4gKwkJYnJlYWs7Cj4+ICsKPj4gIAljYXNlIERSTV9NT0RF X1RWX01PREVfTlRTQ19KOgo+PiAgCQkqdmFsID0gVkM0X1ZFQ19UVl9NT0RFX05UU0NfSjsKPj4g IAkJYnJlYWs7Cj4+IEBAIC0zNTMsNiArNDQyLDE0IEBAIHZjNF92ZWNfY29ubmVjdG9yX2dldF9w cm9wZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+PiAgCQkqdmFsID0gVkM0 X1ZFQ19UVl9NT0RFX1BBTF9NOwo+PiAgCQlicmVhazsKPj4gIAo+PiArCWNhc2UgRFJNX01PREVf VFZfTU9ERV9QQUxfTjoKPj4gKwkJKnZhbCA9IFZDNF9WRUNfVFZfTU9ERV9QQUxfTjsKPj4gKwkJ YnJlYWs7Cj4+ICsKPj4gKwljYXNlIERSTV9NT0RFX1RWX01PREVfU0VDQU06Cj4+ICsJCSp2YWwg PSBWQzRfVkVDX1RWX01PREVfU0VDQU07Cj4+ICsJCWJyZWFrOwo+PiArCj4+ICAJZGVmYXVsdDoK Pj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4+ICAJfQo+PiBAQCAtNDQ4LDEzICs1NDUsMTYgQEAgc3Rh dGljIHZvaWQgdmM0X3ZlY19lbmNvZGVyX2VuYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29k ZXIsCj4+ICAJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9ICZ2ZWMtPmNvbm5lY3Rv cjsKPj4gIAlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSA9Cj4+ICAJCWRy bV9hdG9taWNfZ2V0X25ld19jb25uZWN0b3Jfc3RhdGUoc3RhdGUsIGNvbm5lY3Rvcik7Cj4+ICsJ c3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQo+PiArCQkmZW5jb2Rlci0+ Y3J0Yy0+c3RhdGUtPmFkanVzdGVkX21vZGU7Cj4+ICAJY29uc3Qgc3RydWN0IHZjNF92ZWNfdHZf bW9kZSAqdHZfbW9kZTsKPj4gIAlpbnQgaWR4LCByZXQ7Cj4+ICAKPj4gIAlpZiAoIWRybV9kZXZf ZW50ZXIoZHJtLCAmaWR4KSkKPj4gIAkJcmV0dXJuOwo+PiAgCj4+IC0JdHZfbW9kZSA9IHZjNF92 ZWNfdHZfbW9kZV9sb29rdXAoY29ubl9zdGF0ZS0+dHYubW9kZSk7Cj4+ICsJdHZfbW9kZSA9IHZj NF92ZWNfdHZfbW9kZV9sb29rdXAoY29ubl9zdGF0ZS0+dHYubW9kZSwKPj4gKwkJCQkJIGFkanVz dGVkX21vZGUtPmh0b3RhbCk7Cj4+ICAJaWYgKCF0dl9tb2RlKQo+PiAgCQlnb3RvIGVycl9kZXZf ZXhpdDsKPj4gIAo+PiBAQCAtNjQ4LDkgKzc0OCwxMiBAQCBzdGF0aWMgaW50IHZjNF92ZWNfYmlu ZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1hc3Rlciwgdm9pZCAqZGF0YSkK Pj4gIAo+PiAgCXJldCA9IGRybV9tb2RlX2NyZWF0ZV90dl9wcm9wZXJ0aWVzKGRybSwKPj4gIAkJ CQkJICAgIEJJVChEUk1fTU9ERV9UVl9NT0RFX05UU0MpIHwKPj4gKwkJCQkJICAgIEJJVChEUk1f TU9ERV9UVl9NT0RFX05UU0NfNDQzKSB8Cj4+ICAJCQkJCSAgICBCSVQoRFJNX01PREVfVFZfTU9E RV9OVFNDX0opIHwKPj4gIAkJCQkJICAgIEJJVChEUk1fTU9ERV9UVl9NT0RFX1BBTCkgfAo+PiAt CQkJCQkgICAgQklUKERSTV9NT0RFX1RWX01PREVfUEFMX00pKTsKPj4gKwkJCQkJICAgIEJJVChE Uk1fTU9ERV9UVl9NT0RFX1BBTF9NKSB8Cj4+ICsJCQkJCSAgICBCSVQoRFJNX01PREVfVFZfTU9E RV9QQUxfTikgfAo+PiArCQkJCQkgICAgQklUKERSTV9NT0RFX1RWX01PREVfU0VDQU0pKTsKPj4g IAlpZiAocmV0KQo+PiAgCQlyZXR1cm4gcmV0Owo+PiAgCj4+CgpCZXN0IHJlZ2FyZHMsCk1hdGV1 c3ogS3dpYXRrb3dza2kKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxp c3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0 aW5mby9saW51eC1hcm0ta2VybmVsCg==