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.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_ADSP_CUSTOM_MED,DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,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 DDDB6C4741F for ; Mon, 9 Nov 2020 23:13:22 +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 58CE0206ED for ; Mon, 9 Nov 2020 23:13:22 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="un3Vnhbn"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=google.com header.i=@google.com header.b="t1l2R3Sn" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 58CE0206ED Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=google.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=g61iX58jHCDNONe16F6IHZo0iaI0R+lX+khXnDHFBs8=; b=un3VnhbneWfkkHG+Tk8DY5LmV P3qWqSKOleSHA+TloTTDk8AJNh4oxUOilkIUAL7LDbi8TjOMOnIJOWz3VE+i6y4JoLk55rJNechLb 9tCDRCazpyKsAA7ixr2LaUkaXwXvaU4mhWpYDuCtM1yemDBQFH4E6FDcQ5KbqGdFCEHpqx5zkNpyx qtViu7N5SrsTU6BLci0MHqfLnkfQsY7EMem7yV/DNpJVGHq0dcCKZXByEP97O2bfbjRXhNgP9RY/s SuyCZQnJVpil2Qn5JBbmwfFNBVQ/5FjMmVHu5pyaPf/H4J+99/52Et7ca4mdV9ZFNCf96q79P08bw GO3OumQow==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kcGKM-0004YH-TZ; Mon, 09 Nov 2020 23:11:58 +0000 Received: from mail-ua1-x944.google.com ([2607:f8b0:4864:20::944]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kcGKK-0004Ww-Lh for linux-arm-kernel@lists.infradead.org; Mon, 09 Nov 2020 23:11:57 +0000 Received: by mail-ua1-x944.google.com with SMTP id g3so1696195uae.7 for ; Mon, 09 Nov 2020 15:11:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=JZQgZVi3YCvHDQb4j6S1eW+CN0G55HltfL6yQaxCZtw=; b=t1l2R3SnFFVdfdQvYDlijrD+UPXk5ZGukiIRHbJTgQvkl7MTRTVczlXt06QVcmacOU Vq3BUJUgAZO6+588P8OO1JRTe7UiwB49K2bkoIQ6w9PNfnSXY776+H/z2QNOD9pBtnZr i05N8trMnBkez5wbwi+w6kBRSBw8LXuAVWvbCdU88nCrBKLfdQmj3N16FJBIDo9iCBjp yFXmba2Ft4il4SYs0wKwBCCmZDmGe7YDt5JC6ZYcyK8Qw6xos9xkUlZyf3ZuAhZkYY+N cX7DJc+SmToTO8Tnv/dbcYY1E0OJEJbMR39R6oZeEenW8DovERzm0Y6tVyJoIffqRt1v xZzA== 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=JZQgZVi3YCvHDQb4j6S1eW+CN0G55HltfL6yQaxCZtw=; b=TYBOmXb5f5Ly3uCtpF5hj2BNuLjI+gZDn1B77EgrG7i8eRv5pnFAMSvm+BbB/vAOlL vuD++kyHELF4kDsr8y2XUdx75IZ7OpV3BcjfDc8ZgYMJUgR/p3sR6fFgTgy+sbx1aOgo QQ1Eys1Lpzn2iAhgR+TZixPiUdO7aWfgMDBZvIceBIK9Y0Ciqt4iYr5jzATN/sdBq0ak KXkZnSiIjaio+pmC18vNpEwVDDu+tWruTCAbVx5IPg8QOfj+NLLbI5y6m6FkEW8Z3Znn PAUeYNJbhxqFeK6J4msUEiRAWqWuvORXppgKZDUHhiXw+K0ZieqNYPv3yd2M2pWc6ING RU5Q== X-Gm-Message-State: AOAM531lsS+T+r2HXcjT/lL8EBlZcQD/Io0kWgEdm4bqG2VVSzdjom5s fSFs+VIx8Qb/kylFgGnzltpv/ZKekkypKVw2PZyHsA== X-Google-Smtp-Source: ABdhPJzSnCy7R7CRJtXrWRQ8NOKgeJ6TkQkftDL443Gd1HeH/sey0RLyxXEmQPm/+B7rr2/os6cjJRBBWXYe+xD8OYU= X-Received: by 2002:ab0:186a:: with SMTP id j42mr8260179uag.52.1604963513337; Mon, 09 Nov 2020 15:11:53 -0800 (PST) MIME-Version: 1.0 References: <20201013003203.4168817-1-samitolvanen@google.com> <20201013003203.4168817-23-samitolvanen@google.com> <20201015102216.GB2611@hirez.programming.kicks-ass.net> <20201015203942.f3kwcohcwwa6lagd@treble> <20201020185217.ilg6w5l7ujau2246@treble> <20201021085606.GZ2628@hirez.programming.kicks-ass.net> <20201023173617.GA3021099@google.com> In-Reply-To: <20201023173617.GA3021099@google.com> From: Sami Tolvanen Date: Mon, 9 Nov 2020 15:11:41 -0800 Message-ID: Subject: Re: [PATCH v6 22/25] x86/asm: annotate indirect jumps To: Peter Zijlstra X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201109_181156_732490_4A5A8341 X-CRM114-Status: GOOD ( 24.18 ) 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: linux-arch , Kees Cook , "Paul E. McKenney" , Jann Horn , linux-pci@vger.kernel.org, Greg Kroah-Hartman , Masahiro Yamada , the arch/x86 maintainers , Nick Desaulniers , kernel list , Steven Rostedt , linux-kbuild , clang-built-linux , Josh Poimboeuf , Kernel Hardening , Will Deacon , Linux ARM 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 T24gRnJpLCBPY3QgMjMsIDIwMjAgYXQgMTA6MzYgQU0gU2FtaSBUb2x2YW5lbiA8c2FtaXRvbHZh bmVuQGdvb2dsZS5jb20+IHdyb3RlOgo+Cj4gT24gV2VkLCBPY3QgMjEsIDIwMjAgYXQgMDU6MjI6 NTlQTSAtMDcwMCwgU2FtaSBUb2x2YW5lbiB3cm90ZToKPiA+IFRoZXJlIGFyZSBhIGNvdXBsZSBv ZiBkaWZmZXJlbmNlcywgbGlrZSB0aGUgZmlyc3QgInVuZGVmaW5lZCBzdGFjawo+ID4gc3RhdGUi IHdhcm5pbmcgcG9pbnRpbmcgdG8gc2V0X2JyaW5ndXBfaWR0X2hhbmRsZXIuY29uc3Rwcm9wLjAo KQo+ID4gaW5zdGVhZCBvZiBfX3N3aXRjaF90b19hc20oKS4gSSB0cmllZCBydW5uaW5nIHRoaXMg d2l0aCAtLWJhY2t0cmFjZSwKPiA+IGJ1dCBvYmp0b29sIHNlZ2ZhdWx0cyBhdCB0aGUgZmlyc3Qg LmVudHJ5LnRleHQgd2FybmluZzoKPgo+IExvb2tzIGxpa2UgaXQgc2VnZmF1bHRzIHdoZW4gY2Fs bGluZyBCVF9GVU5DKCkgZm9yIGFuIGluc3RydWN0aW9uIHRoYXQKPiBkb2Vzbid0IGhhdmUgYSBz ZWN0aW9uICg/KS4gQXBwbHlpbmcgdGhpcyBwYXRjaCBhbGxvd3Mgb2JqdG9vbCB0byBmaW5pc2gK PiB3aXRoIC0tYmFja3RyYWNlOgo+Cj4gZGlmZiAtLWdpdCBhL3Rvb2xzL29ianRvb2wvY2hlY2su YyBiL3Rvb2xzL29ianRvb2wvY2hlY2suYwo+IGluZGV4IGMyMTZkZDRkNjYyYy4uNjE4YjBjNGYy ODkwIDEwMDY0NAo+IC0tLSBhL3Rvb2xzL29ianRvb2wvY2hlY2suYwo+ICsrKyBiL3Rvb2xzL29i anRvb2wvY2hlY2suYwo+IEBAIC0yNjA0LDcgKzI2MDQsNyBAQCBzdGF0aWMgaW50IHZhbGlkYXRl X2JyYW5jaChzdHJ1Y3Qgb2JqdG9vbF9maWxlICpmaWxlLCBzdHJ1Y3Qgc3ltYm9sICpmdW5jLAo+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gdmFsaWRhdGVfYnJhbmNoKGZp bGUsIGZ1bmMsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW5zbi0+anVtcF9kZXN0LCBzdGF0ZSk7Cj4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpZiAocmV0KSB7Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlmIChiYWNrdHJhY2UpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlmIChiYWNrdHJhY2UgJiYgaW5zbi0+c2VjKQo+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJUX0ZVTkMoIihicmFuY2gpIiwgaW5zbik7Cj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cj4KPgo+IFJ1bm5pbmcgb2JqdG9vbCAtYmFy ZmxkIG9uIGFuIGFsbHllc2NvbmZpZytMVE8gdm1saW51eC5vIHByaW50cyBvdXQgdGhlCj4gZm9s bG93aW5nLCBpZ25vcmluZyB0aGUgY3J5cHRvIHdhcm5pbmdzIGZvciBub3c6CgpPSywgSSBzcGVu dCBzb21lIHRpbWUgbG9va2luZyBhdCB0aGVzZSB3YXJuaW5ncyBhbmQgdGhlIGNvbmZpZ3MgbmVl ZGVkCnRvIHJlcHJvZHVjZSB0aGVtIHdpdGhvdXQgYnVpbGRpbmcgYWxseWVzY29uZmlnOgoKQ09O RklHX1hFTgoKX19zd2l0Y2hfdG9fYXNtKCkrMHgwOiB1bmRlZmluZWQgc3RhY2sgc3RhdGUKICB4 ZW5faHlwZXJjYWxsX3NldF90cmFwX3RhYmxlKCkrMHgwOiA8PT09IChzeW0pCgpDT05GSUdfWEVO X1BWCgouZW50cnkudGV4dCsweGZmZDogc2libGluZyBjYWxsIGZyb20gY2FsbGFibGUgaW5zdHJ1 Y3Rpb24gd2l0aAptb2RpZmllZCBzdGFjayBmcmFtZQogIC5lbnRyeS50ZXh0KzB4ZmNiOiAoYnJh bmNoKQogIC5lbnRyeS50ZXh0KzB4ZmI1OiAoYWx0KQogIC5lbnRyeS50ZXh0KzB4ZmIwOiAoYWx0 KQogIC5lbnRyeS50ZXh0KzB4Zjc4OiAoYnJhbmNoKQogIC5lbnRyeS50ZXh0KzB4OWM6IChicmFu Y2gpCiAgeGVuX3N5c2NhbGxfdGFyZ2V0KCkrMHgxNTogKGJyYW5jaCkKICB4ZW5fc3lzY2FsbF90 YXJnZXQoKSsweDA6IDw9PT0gKHN5bSkKLmVudHJ5LnRleHQrMHgxNzU0OiB1bnN1cHBvcnRlZCBp bnN0cnVjdGlvbiBpbiBjYWxsYWJsZSBmdW5jdGlvbgogIC5lbnRyeS50ZXh0KzB4MTcxZDogKGJy YW5jaCkKICAuZW50cnkudGV4dCsweDE3MDc6IChhbHQpCiAgLmVudHJ5LnRleHQrMHgxNzAxOiAo YWx0KQogIHhlbl9zeXNjYWxsMzJfdGFyZ2V0KCkrMHgxNTogKGJyYW5jaCkKICB4ZW5fc3lzY2Fs bDMyX3RhcmdldCgpKzB4MDogPD09PSAoc3ltKQouZW50cnkudGV4dCsweDE2MzQ6IHJlZHVuZGFu dCBDTEQKCkJhY2t0cmFjZSBkb2VzbuKAmXQgcHJpbnQgb3V0IGFueXRoaW5nIHVzZWZ1bCBmb3Ig dGhlIOKAnHJlZHVuZGFudCBDTETigJ0KZXJyb3IsIGJ1dCBpdCBvY2N1cnMgd2hlbiB2YWxpZGF0 ZV9icmFuY2ggaXMgbG9va2luZyBhdAp4ZW5fc3lzZW50ZXJfdGFyZ2V0LgoKZG9fc3VzcGVuZF9s b3dsZXZlbCgpKzB4MTE2OiBzaWJsaW5nIGNhbGwgZnJvbSBjYWxsYWJsZSBpbnN0cnVjdGlvbgp3 aXRoIG1vZGlmaWVkIHN0YWNrIGZyYW1lCiAgZG9fc3VzcGVuZF9sb3dsZXZlbCgpKzB4OWE6IChi cmFuY2gpCiAgZG9fc3VzcGVuZF9sb3dsZXZlbCgpKzB4MDogPD09PSAoc3ltKQoKLmVudHJ5LnRl eHQrMHg0ODogc3RhY2sgc3RhdGUgbWlzbWF0Y2g6IGNmYTE9Ny04IGNmYTI9LTErMAogIC5hbHRp bnN0cl9yZXBsYWNlbWVudCsweGZmZmZmZmZmZmZmZmZmZmY6IChicmFuY2gpCiAgLmVudHJ5LnRl eHQrMHgyMTogKGFsdCkKICAuZW50cnkudGV4dCsweDFjOiAoYWx0KQogIC5lbnRyeS50ZXh0KzB4 MTA6IDw9PT0gKGhpbnQpCi5lbnRyeS50ZXh0KzB4MTVmZDogc3RhY2sgc3RhdGUgbWlzbWF0Y2g6 IGNmYTE9Ny04IGNmYTI9LTErMAogIC5hbHRpbnN0cl9yZXBsYWNlbWVudCsweGZmZmZmZmZmZmZm ZmZmZmY6IChicmFuY2gpCiAgLmVudHJ5LnRleHQrMHgxNWRjOiAoYWx0KQogIC5lbnRyeS50ZXh0 KzB4MTVkNzogKGFsdCkKICAuZW50cnkudGV4dCsweDE1ZDA6IDw9PT0gKGhpbnQpCi5lbnRyeS50 ZXh0KzB4MTY4Yzogc3RhY2sgc3RhdGUgbWlzbWF0Y2g6IGNmYTE9Ny04IGNmYTI9LTErMAogIC5h bHRpbnN0cl9yZXBsYWNlbWVudCsweGZmZmZmZmZmZmZmZmZmZmY6IChicmFuY2gpCiAgLmVudHJ5 LnRleHQrMHgxNjZiOiAoYWx0KQogIC5lbnRyeS50ZXh0KzB4MTY2NjogKGFsdCkKICAuZW50cnku dGV4dCsweDE2NjA6IDw9PT0gKGhpbnQpCgpJdCBsb29rcyBsaWtlIHRoZSBzdGFjayBzdGF0ZSBt aXNtYXRjaCB3YXJuaW5ncyBjYW4gYmUgZml4ZWQgYnkgYWRkaW5nCnVud2luZCBoaW50cyBhbHNv IHRvIGVudHJ5X1NZU0NBTExfNjRfYWZ0ZXJfaHdmcmFtZSwKZW50cnlfU1lTRU5URVJfY29tcGF0 X2FmdGVyX2h3ZnJhbWUsIGFuZAplbnRyeV9TWVNDQUxMX2NvbXBhdF9hZnRlcl9od2ZyYW1lLiBE b2VzIHRoYXQgc291bmQgY29ycmVjdD8KCkNPTkZJR19BTURfTUVNX0VOQ1JZUFQKCi5oZWFkLnRl eHQrMHhmYjogdW5zdXBwb3J0ZWQgaW5zdHJ1Y3Rpb24gaW4gY2FsbGFibGUgZnVuY3Rpb24KICAu aGVhZC50ZXh0KzB4MjA3OiAoYnJhbmNoKQogIHNldl9lc19wbGF5X2RlYWQoKSsweGZmOiAoYnJh bmNoKQogIHNldl9lc19wbGF5X2RlYWQoKSsweGQyOiAoYnJhbmNoKQogIHNldl9lc19wbGF5X2Rl YWQoKSsweGE4OiAoYWx0KQogIHNldl9lc19wbGF5X2RlYWQoKSsweDE0NDogKGJyYW5jaCkKICBz ZXZfZXNfcGxheV9kZWFkKCkrMHgxMGI6IChicmFuY2gpCiAgc2V2X2VzX3BsYXlfZGVhZCgpKzB4 MWY6IChicmFuY2gpCiAgc2V2X2VzX3BsYXlfZGVhZCgpKzB4MDogPD09PSAoc3ltKQoKVGhpcyBo YXBwZW5zIGJlY2F1c2Ugc2V2X2VzX3BsYXlfZGVhZCBjYWxscyBzdGFydF9jcHUwLiBJdCBhbHdh eXMgaGFzLApidXQgb2JqdG9vbCBoYXNu4oCZdCBiZWVuIGFibGUgdG8gZm9sbG93IHRoZSBjYWxs IHdoZW4gcHJvY2Vzc2luZyBvbmx5CnNldi1lcy5vLiBBbnkgdGhvdWdodHMgb24gdGhlIHByZWZl cnJlZCB3YXkgdG8gZml4IHRoaXMgb25lPwoKQ09ORklHX0NSWVBUT19DUkMzMkNfSU5URUwKCl9f eDg2X3JldHBvbGluZV9yZGkoKSsweDEwOiByZXR1cm4gd2l0aCBtb2RpZmllZCBzdGFjayBmcmFt ZQogIF9feDg2X3JldHBvbGluZV9yZGkoKSsweDA6IChicmFuY2gpCiAgLmFsdGluc3RyX3JlcGxh Y2VtZW50KzB4MTQ3OiAoYnJhbmNoKQogIC50ZXh0KzB4YWY0Yzc6IChhbHQpCiAgLnRleHQrMHhi MDNiMDogKGJyYW5jaCkKICAudGV4dCsweGFmNDgyOiAoYnJhbmNoKQogIGNyY19wY2woKSsweDEw OiAoYnJhbmNoKQogIGNyY19wY2woKSsweDA6IDw9PT0gKHN5bSkKCl9feDg2X3JldHBvbGluZV9y ZGkoKSsweDA6IHN0YWNrIHN0YXRlIG1pc21hdGNoOiBjZmExPTcrMzIgY2ZhMj03KzgKICAuYWx0 aW5zdHJfcmVwbGFjZW1lbnQrMHgyNjU6IChicmFuY2gpCiAgX194ODZfaW5kaXJlY3RfdGh1bmtf cmRpKCkrMHgwOiAoYWx0KQogIF9feDg2X2luZGlyZWN0X3RodW5rX3JkaSgpKzB4MDogPD09PSAo c3ltKQoKVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgd2FybmluZ3MgaW4gdGhlIHJlc3Qgb2Yg dGhlIGFyY2gveDg2L2NyeXB0bwpjb2RlLiBEbyB3ZSBuZWVkIHNvbWUga2luZCBvZiBhIGhpbnQg YmVmb3JlIHRoZSBKTVBfTk9TUEVDIGluIGNyY19wY2w/CgpDT05GSUdfRlVOQ1RJT05fVFJBQ0VS CgpfX3g4Nl9yZXRwb2xpbmVfcmRpKCkrMHgwOiBzdGFjayBzdGF0ZSBtaXNtYXRjaDogY2ZhMT03 KzMyIGNmYTI9LTErMAogIC5hbHRpbnN0cl9yZXBsYWNlbWVudCsweDExMTogKGJyYW5jaCkKICAu dGV4dCsweDI4YTU6IChhbHQpCiAgLnRleHQrMHgyODgwOiA8PT09IChoaW50KQoKVGhpcyB1bndp bmQgaGludCBpcyBpbiByZXR1cm5fdG9faGFuZGxlci4gUmVtb3ZpbmcgaXQgb2J2aW91c2x5IHN0 b3BzCnRoZSB3YXJuaW5nIGFuZCBkb2VzbuKAmXQgc2VlbSB0byByZXN1bHQgaW4gYW55IG90aGVy IGNvbXBsYWludHMgZnJvbQpvYmp0b29sLiBJcyB0aGlzIGhpbnQgY29ycmVjdD8KClRoZSByZW1h aW5pbmcgd2FybmluZ3MgYXJlIGFsbCDigJx1bnN1cHBvcnRlZCBzdGFjayBwb2ludGVyIHJlYWxp Z25tZW504oCdCmlzc3VlcyBpbiB0aGUgY3J5cHRvIGNvZGUgYW5kIGNhbiBiZSByZXByb2R1Y2Vk IHdpdGggdGhlIGZvbGxvd2luZwpjb25maWdzOgoKQ09ORklHX0NSWVBUT19BRVNfTklfSU5URUwK Q09ORklHX0NSWVBUT19DQU1FTExJQV9BRVNOSV9BVlgyX1g4Nl82NApDT05GSUdfQ1JZUFRPX1NI QTFfU1NTRTMKQ09ORklHX0NSWVBUT19TSEEyNTZfU1NTRTMKQ09ORklHX0NSWVBUT19TSEE1MTJf U1NTRTMKCkpvc2gsIGhhdmUgeW91IGhhZCBhIGNoYW5jZSB0byBsb29rIGF0IHRoZSBjcnlwdG8g cGF0Y2hlcyB5b3UgbWVudGlvbmVkIGVhcmxpZXI/CgpTYW1pCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlz dApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJh ZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==