From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id B9FB6740035 for ; Fri, 10 Nov 2023 23:59:37 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=PAxpW8+X2XsIrH9Am+2zXLuOizM851dRtSNAWa4OWo8=; c=relaxed/simple; d=groups.io; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding:Content-Type; s=20140610; t=1699660776; v=1; b=pkGkFMd/lFTlbfk5BdHm6rdpmquQ6QvgaHstyRvPKZ0hLGgCGy6YsaLDdFTM3gkaM2TpR3Or 5f7oUCpLriTgMsQHEIEyA2pQX6BadFkj755abbA8xoYMRySjx9twdIS2Ndj0k/LovY0k684Vz3h Cpfd73IMkCad+zVViqlTY1qE= X-Received: by 127.0.0.2 with SMTP id Y0GsYY7687511xitRJLkmmju; Fri, 10 Nov 2023 15:59:36 -0800 X-Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.groups.io with SMTP id smtpd.web11.42844.1699660775174557462 for ; Fri, 10 Nov 2023 15:59:35 -0800 X-Received: from mimecast-mx02.redhat.com (mx-ext.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-351-Ix6cNC7IPQ-cpA2AdstOPw-1; Fri, 10 Nov 2023 18:59:33 -0500 X-MC-Unique: Ix6cNC7IPQ-cpA2AdstOPw-1 X-Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id AFD771C0518D; Fri, 10 Nov 2023 23:59:32 +0000 (UTC) X-Received: from lacos-laptop-9.usersys.redhat.com (unknown [10.39.192.173]) by smtp.corp.redhat.com (Postfix) with ESMTP id D442BC1596F; Fri, 10 Nov 2023 23:59:31 +0000 (UTC) From: "Laszlo Ersek" To: devel@edk2.groups.io Cc: Ard Biesheuvel , Gerd Hoffmann , Jiewen Yao Subject: [edk2-devel] [PATCH 24/37] OvmfPkg: remove gEfiLegacyBiosPlatformProtocolGuid Date: Sat, 11 Nov 2023 00:58:07 +0100 Message-Id: <20231110235820.644381-25-lersek@redhat.com> In-Reply-To: <20231110235820.644381-1-lersek@redhat.com> References: <20231110235820.644381-1-lersek@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.8 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,lersek@redhat.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: Led7VqikgmIP1GjsWyTKiwhGx7686176AA= Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="US-ASCII"; x-default=true X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b="pkGkFMd/"; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=redhat.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io QXQgdGhpcyBwb2ludCwgZ0VmaUxlZ2FjeUJpb3NQbGF0Zm9ybVByb3RvY29sR3VpZCBpcyB1bnVz ZWQ7IHJlbW92ZSBpdC4KClRoaXMgc2hyaW5rcyB0aGUgbGlzdCBvZiByZXNvdXJjZXMgc2NoZWR1 bGVkIGZvciByZW1vdmFsIHRvOgoKLSBHVUlEcyAocHJvdG9jb2xzIG9yIG90aGVyd2lzZSk6CiAg LSBTWVNURU1fUk9NX0ZJTEVfR1VJRCAoMTU0N0I0RjMtM0U4QS00RkVGLTgxQzgtMzI4RUQ2NDdB QjFBKQogIC0gZ0VmaUxlZ2FjeTgyNTlQcm90b2NvbEd1aWQKICAtIGdFZmlMZWdhY3lCaW9zUHJv dG9jb2xHdWlkCiAgLSBnRWZpTGVnYWN5SW50ZXJydXB0UHJvdG9jb2xHdWlkCgotIGhlYWRlcnM6 CiAgLSBGcmFtZXdvcmtEeGUuaAogIC0gUHJvdG9jb2wvTGVnYWN5ODI1OS5oCiAgLSBQcm90b2Nv bC9MZWdhY3lCaW9zLmgKICAtIFByb3RvY29sL0xlZ2FjeUludGVycnVwdC5oCgpDYzogQXJkIEJp ZXNoZXV2ZWwgPGFyZGIrdGlhbm9jb3JlQGtlcm5lbC5vcmc+CkNjOiBHZXJkIEhvZmZtYW5uIDxr cmF4ZWxAcmVkaGF0LmNvbT4KQ2M6IEppZXdlbiBZYW8gPGppZXdlbi55YW9AaW50ZWwuY29tPgpS ZWY6IGh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU4OApT aWduZWQtb2ZmLWJ5OiBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPgotLS0KIE92bWZQ a2cvT3ZtZlBrZy5kZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgLQogT3Zt ZlBrZy9Dc20vSW5jbHVkZS9Qcm90b2NvbC9MZWdhY3lCaW9zUGxhdGZvcm0uaCB8IDc1MyAtLS0t LS0tLS0tLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA3NTQgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvT3ZtZlBrZy9Pdm1mUGtnLmRlYyBiL092bWZQa2cvT3ZtZlBrZy5kZWMKaW5kZXgg OTRhZDIyZDk1MDFiLi5kMjU3MDA3YzIzNmEgMTAwNjQ0Ci0tLSBhL092bWZQa2cvT3ZtZlBrZy5k ZWMKKysrIGIvT3ZtZlBrZy9Pdm1mUGtnLmRlYwpAQCAtMTg0LDcgKzE4NCw2IEBAIFtQcm90b2Nv bHNdCiAgIGdJb01tdUFic2VudFByb3RvY29sR3VpZCAgICAgICAgICAgICAgPSB7MHhmODc3NWQ1 MCwgMHg4YWJkLCAweDRhZGYsIHsweDkyLCAweGFjLCAweDg1LCAweDNlLCAweDUxLCAweGY2LCAw eGM4LCAweGRjfX0NCiAgIGdFZmlMZWdhY3k4MjU5UHJvdG9jb2xHdWlkICAgICAgICAgICAgPSB7 MHgzODMyMWRiYSwgMHg0ZmUwLCAweDRlMTcsIHsweDhhLCAweGVjLCAweDQxLCAweDMwLCAweDU1 LCAweGVhLCAweGVkLCAweGMxfX0NCiAgIGdFZmlMZWdhY3lCaW9zUHJvdG9jb2xHdWlkICAgICAg ICAgICAgPSB7MHhkYjlhMWUzZCwgMHg0NWNiLCAweDRhYmIsIHsweDg1LCAweDNiLCAweGU1LCAw eDM4LCAweDdmLCAweGRiLCAweDJlLCAweDJkfX0NCi0gIGdFZmlMZWdhY3lCaW9zUGxhdGZvcm1Q cm90b2NvbEd1aWQgICAgPSB7MHg3ODM2NThhMywgMHg0MTcyLCAweDQ0MjEsIHsweGEyLCAweDk5 LCAweGUwLCAweDA5LCAweDA3LCAweDljLCAweDBjLCAweGI0fX0NCiAgIGdFZmlMZWdhY3lJbnRl cnJ1cHRQcm90b2NvbEd1aWQgICAgICAgPSB7MHgzMWNlNTkzZCwgMHgxMDhhLCAweDQ4NWQsIHsw eGFkLCAweGIyLCAweDc4LCAweGYyLCAweDFmLCAweDI5LCAweDY2LCAweGJlfX0NCiAgIGdPdm1m TG9hZGVkWDg2TGludXhLZXJuZWxQcm90b2NvbEd1aWQgPSB7MHhhM2VkYzA1ZCwgMHhiNjE4LCAw eDRmZjYsIHsweDk1LCAweDUyLCAweDc2LCAweGQ3LCAweDg4LCAweDYzLCAweDQzLCAweGM4fX0N CiAgIGdPdm1mU2V2TWVtb3J5QWNjZXB0YW5jZVByb3RvY29sR3VpZCAgPSB7MHhjNWEwMTBmZSwg MHgzOGE3LCAweDQ1MzEsIHsweDhhLCAweDRhLCAweDA1LCAweDAwLCAweGQyLCAweGZkLCAweDE2 LCAweDQ5fX0NCmRpZmYgLS1naXQgYS9Pdm1mUGtnL0NzbS9JbmNsdWRlL1Byb3RvY29sL0xlZ2Fj eUJpb3NQbGF0Zm9ybS5oIGIvT3ZtZlBrZy9Dc20vSW5jbHVkZS9Qcm90b2NvbC9MZWdhY3lCaW9z UGxhdGZvcm0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTQxYjFjODMzMTU5Li4w MDAwMDAwMDAwMDAKLS0tIGEvT3ZtZlBrZy9Dc20vSW5jbHVkZS9Qcm90b2NvbC9MZWdhY3lCaW9z UGxhdGZvcm0uaAorKysgL2Rldi9udWxsCkBAIC0xLDc1MyArMCwwIEBACi0vKiogQGZpbGUNCi0g IFRoZSBFRkkgTGVnYWN5IEJJT1MgUGxhdGZvcm0gUHJvdG9jb2wgaXMgdXNlZCB0byBtYXRlIGEg TGVnYWN5MTYNCi0gIGltcGxlbWVudGF0aW9uIHdpdGggdGhpcyBFRkkgY29kZS4gVGhlIEVGSSBk cml2ZXIgdGhhdCBwcm9kdWNlcw0KLSAgdGhlIExlZ2FjeSBCSU9TIHByb3RvY29sIGlzIGdlbmVy aWMgYW5kIGNvbnN1bWVzIHRoaXMgcHJvdG9jb2wuDQotICBBIGRyaXZlciB0aGF0IG1hdGNoZXMg dGhlIExlZ2FjeTE2IHByb2R1Y2VzIHRoaXMgcHJvdG9jb2wNCi0NCi1Db3B5cmlnaHQgKGMpIDIw MDcgLSAyMDE4LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQot U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCi0NCi0gIEBwYXIg UmV2aXNpb24gUmVmZXJlbmNlOg0KLSAgVGhpcyBwcm90b2NvbCBpcyBkZWZpbmVkIGluIEZyYW1l d29yayBmb3IgRUZJIENvbXBhdGliaWxpdHkgU3VwcG9ydCBNb2R1bGUgc3BlYw0KLSAgVmVyc2lv biAwLjk3Lg0KLQ0KLSoqLw0KLQ0KLSNpZm5kZWYgX0VGSV9MRUdBQ1lfQklPU19QTEFURk9STV9I Xw0KLSNkZWZpbmUgX0VGSV9MRUdBQ1lfQklPU19QTEFURk9STV9IXw0KLQ0KLS8vLw0KLS8vLyBM ZWdhY3kgQklPUyBQbGF0Zm9ybSBkZXBlbmRzIG9uIEhERF9JTkZPIGFuZCBFRklfQ09NUEFUSUJJ TElUWTE2X1RBQkxFIHRoYXQNCi0vLy8gYXJlIGRlZmluZWQgd2l0aCB0aGUgTGVnYWN5IEJJT1Mg UHJvdG9jb2wNCi0vLy8NCi0jaW5jbHVkZSA8UHJvdG9jb2wvTGVnYWN5Qmlvcy5oPg0KLQ0KLSNk ZWZpbmUgRUZJX0xFR0FDWV9CSU9TX1BMQVRGT1JNX1BST1RPQ09MX0dVSUQgXA0KLSAgeyBcDQot ICAgIDB4NzgzNjU4YTMsIDB4NDE3MiwgMHg0NDIxLCB7MHhhMiwgMHg5OSwgMHhlMCwgMHg5LCAw eDcsIDB4OWMsIDB4YywgMHhiNCB9IFwNCi0gIH0NCi0NCi10eXBlZGVmIHN0cnVjdCBfRUZJX0xF R0FDWV9CSU9TX1BMQVRGT1JNX1BST1RPQ09MIEVGSV9MRUdBQ1lfQklPU19QTEFURk9STV9QUk9U T0NPTDsNCi0NCi0vKioNCi0gIFRoaXMgZW51bSBzcGVjaWZpZXMgdGhlIE1vZGUgcGFyYW0gdmFs dWVzIGZvciBHZXRQbGF0Zm9ybUluZm8oKQ0KLSoqLw0KLXR5cGVkZWYgZW51bSB7DQotICAvLy8N Ci0gIC8vLyBUaGlzIG1vZGUgaXMgaW52b2tlZCB0d2ljZS4gVGhlIGZpcnN0IGludm9jYXRpb24g aGFzIExlZ2FjeVNlZ21lbnQgYW5kDQotICAvLy8gTGVnYWN5T2Zmc2V0IHNldCB0byAwLiBUaGUg bW9kZSByZXR1cm5zIHRoZSBNUCB0YWJsZSBhZGRyZXNzIGluIEVGSSBtZW1vcnksIGFsb25nIHdp dGggaXRzIHNpemUuDQotICAvLy8gVGhlIHNlY29uZCBpbnZvY2F0aW9uIGhhcyBMZWdhY3lTZWdt ZW50IGFuZCBMZWdhY3lPZmZzZXQgc2V0IHRvIHRoZSBsb2NhdGlvbg0KLSAgLy8vIGluIHRoZSAw eEYwMDAwIG9yIDB4RTAwMDAgYmxvY2sgdG8gd2hpY2ggdGhlIE1QIHRhYmxlIGlzIHRvIGJlIGNv cGllZC4gVGhlIHNlY29uZA0KLSAgLy8vIGludm9jYXRpb24gYWxsb3dzIGFueSBNUCB0YWJsZSBh ZGRyZXNzIGZpeGVzIHRvIG9jY3VyIGluIHRoZSBFRkkgbWVtb3J5IGNvcHkgb2YgdGhlDQotICAv Ly8gTVAgdGFibGUuIFRoZSBjYWxsZXIsIG5vdCBFZmlHZXRQbGF0Zm9ybUJpbmFyeU1wVGFibGUs IGNvcGllcyB0aGUgbW9kaWZpZWQgTVANCi0gIC8vLyB0YWJsZSB0byB0aGUgYWxsb2NhdGVkIHJl Z2lvbiBpbiAweEYwMDAwIG9yIDB4RTAwMDAgYmxvY2sgYWZ0ZXIgdGhlIHNlY29uZCBpbnZvY2F0 aW9uLg0KLSAgLy8vDQotICAvLy8gVGhlIGZ1bmN0aW9uIHBhcmFtZXRlcnMgYXNzb2NpYXRlZCB3 aXRoIHRoaXMgbW9kZSBhcmU6DQotICAvLy8NCi0gIC8vLyAgIFRhYmxlIFBvaW50ZXIgdG8gdGhl IE1QIHRhYmxlLg0KLSAgLy8vDQotICAvLy8gICBUYWJsZVNpemUgU2l6ZSBpbiBieXRlcyBvZiB0 aGUgTVAgdGFibGUuDQotICAvLy8NCi0gIC8vLyAgIExvY2F0aW9uIExvY2F0aW9uIHRvIHBsYWNl IHRhYmxlLiAweDAwLiBFaXRoZXIgMHhFMDAwMCBvciAweEYwMDAwIDY0IEtCIGJsb2Nrcy4NCi0g IC8vLyAgICAgQml0IDAgPSAxIDB4RjAwMDAgNjQgS0IgYmxvY2suDQotICAvLy8gICAgIEJpdCAx ID0gMSAweEUwMDAwIDY0IEtCIGJsb2NrLg0KLSAgLy8vICAgICBNdWx0aXBsZSBiaXRzIGNhbiBi ZSBzZXQuDQotICAvLy8NCi0gIC8vLyAgIEFsaWdubWVudCBCaXQtbWFwcGVkIGFkZHJlc3MgYWxp Z25tZW50IGdyYW51bGFyaXR5Lg0KLSAgLy8vICAgICBUaGUgZmlyc3Qgbm9uemVybyBiaXQgZnJv bSB0aGUgcmlnaHQgaXMgdGhlIGFkZHJlc3MgZ3JhbnVsYXJpdHkuDQotICAvLy8NCi0gIC8vICAg IExlZ2FjeVNlZ21lbnQgU2VnbWVudCBpbiB3aGljaCBFZmlDb21wYXRpYmlsaXR5IGNvZGUgd2ls bCBwbGFjZSB0aGUgTVAgdGFibGUuDQotICAvLy8NCi0gIC8vLyAgIExlZ2FjeU9mZnNldCBPZmZz ZXQgaW4gd2hpY2ggRWZpQ29tcGF0aWJpbGl0eSBjb2RlIHdpbGwgcGxhY2UgdGhlIE1QIHRhYmxl Lg0KLSAgLy8vDQotICAvLy8gVGhlIHJldHVybiB2YWx1ZXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMg bW9kZSBhcmU6DQotICAvLy8NCi0gIC8vLyAgIEVGSV9TVUNDRVNTIFRoZSBNUCB0YWJsZSB3YXMg cmV0dXJuZWQuDQotICAvLy8NCi0gIC8vLyAgIEVGSV9VTlNVUFBPUlRFRCBUaGUgTVAgdGFibGUg aXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtLg0KLSAgLy8vDQotICBFZmlHZXRQbGF0 Zm9ybUJpbmFyeU1wVGFibGUgPSAwLA0KLSAgLy8vDQotICAvLy8gVGhpcyBtb2RlIHJldHVybnMg YSBibG9jayBvZiBkYXRhLiBUaGUgY29udGVudCBhbmQgdXNhZ2UgaXMgSUJWIG9yIE9FTSBkZWZp bmVkLg0KLSAgLy8vIE9FTXMgb3IgSUJWcyBub3JtYWxseSB1c2UgdGhpcyBmdW5jdGlvbiBmb3Ig bm9uc3RhbmRhcmQgQ29tcGF0aWJpbGl0eTE2IHJ1bnRpbWUgc29mdA0KLSAgLy8vIElOVHMuIEl0 IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGlzIHJvdXRpbmUgdG8gY29hbGVzY2UgbXVsdGlw bGUgT0VNIDE2IGJpdCBmdW5jdGlvbnMsIGlmDQotICAvLy8gdGhleSBleGlzdCwgaW50byBvbmUg Y29oZXJlbnQgcGFja2FnZSB0aGF0IGlzIHVuZGVyc3RhbmRhYmxlIGJ5IHRoZSBDb21wYXRpYmls aXR5MTYgY29kZS4NCi0gIC8vLyBUaGlzIGZ1bmN0aW9uIGlzIGludm9rZWQgdHdpY2UuIFRoZSBm aXJzdCBpbnZvY2F0aW9uIGhhcyBMZWdhY3lTZWdtZW50IGFuZA0KLSAgLy8vIExlZ2FjeU9mZnNl dCBzZXQgdG8gMC4gVGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIHRhYmxlIGFkZHJlc3MgaW4gRUZJ IG1lbW9yeSwgYXMgd2VsbCBhcyBpdHMgc2l6ZS4NCi0gIC8vLyBUaGUgc2Vjb25kIGludm9jYXRp b24gaGFzIExlZ2FjeVNlZ21lbnQgYW5kIExlZ2FjeU9mZnNldCBzZXQgdG8gdGhlIGxvY2F0aW9u DQotICAvLy8gaW4gdGhlIDB4RjAwMDAgb3IgMHhFMDAwMCBibG9jayB0byB3aGljaCB0aGUgZGF0 YSAodGFibGUpIGlzIHRvIGJlIGNvcGllZC4gVGhlIHNlY29uZA0KLSAgLy8vIGludm9jYXRpb24g YWxsb3dzIGFueSBkYXRhICh0YWJsZSkgYWRkcmVzcyBmaXhlcyB0byBvY2N1ciBpbiB0aGUgRUZJ IG1lbW9yeSBjb3B5IG9mDQotICAvLy8gdGhlIHRhYmxlLiBUaGUgY2FsbGVyLCBub3QgR2V0T2Vt SW50RGF0YSgpLCBjb3BpZXMgdGhlIG1vZGlmaWVkIGRhdGEgKHRhYmxlKSB0byB0aGUNCi0gIC8v LyBhbGxvY2F0ZWQgcmVnaW9uIGluIDB4RjAwMDAgb3IgMHhFMDAwMCBibG9jayBhZnRlciB0aGUg c2Vjb25kIGludm9jYXRpb24uDQotICAvLy8NCi0gIC8vLyBUaGUgZnVuY3Rpb24gcGFyYW1ldGVy cyBhc3NvY2lhdGVkIHdpdGggdGhpcyBtb2RlIGFyZToNCi0gIC8vLw0KLSAgLy8vICAgVGFibGUg UG9pbnRlciB0byBPRU0gbGVnYWN5IDE2IGJpdCBjb2RlIG9yIGRhdGEuDQotICAvLy8NCi0gIC8v LyAgIFRhYmxlU2l6ZSBTaXplIG9mIGRhdGEuDQotICAvLy8NCi0gIC8vLyAgIExvY2F0aW9uIExv Y2F0aW9uIHRvIHBsYWNlIHRhYmxlLiAweDAwLiBFaXRoZXIgMHhFMDAwMCBvciAweEYwMDAwIDY0 IEtCIGJsb2Nrcy4NCi0gIC8vLyAgICAgICBCaXQgMCA9IDEgMHhGMDAwMCA2NCBLQiBibG9jay4N Ci0gIC8vLyAgICAgICBCaXQgMSA9IDEgMHhFMDAwMCA2NCBLQiBibG9jay4NCi0gIC8vLyAgICAg ICBNdWx0aXBsZSBiaXRzIGNhbiBiZSBzZXQuDQotICAvLy8NCi0gIC8vLyAgIEFsaWdubWVudCBC aXQgbWFwcGVkIGFkZHJlc3MgYWxpZ25tZW50IGdyYW51bGFyaXR5Lg0KLSAgLy8vICAgICBUaGUg Zmlyc3Qgbm9uemVybyBiaXQgZnJvbSB0aGUgcmlnaHQgaXMgdGhlIGFkZHJlc3MgZ3JhbnVsYXJp dHkuDQotICAvLy8NCi0gIC8vLyAgIExlZ2FjeVNlZ21lbnQgU2VnbWVudCBpbiB3aGljaCBFZmlD b21wYXRpYmlsaXR5IGNvZGUgd2lsbCBwbGFjZSB0aGUgdGFibGUgb3IgZGF0YS4NCi0gIC8vLw0K LSAgLy8vICAgTGVnYWN5T2Zmc2V0IE9mZnNldCBpbiB3aGljaCBFZmlDb21wYXRpYmlsaXR5IGNv ZGUgd2lsbCBwbGFjZSB0aGUgdGFibGUgb3IgZGF0YS4NCi0gIC8vLw0KLSAgLy8vIFRoZSByZXR1 cm4gdmFsdWVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG1vZGUgYXJlOg0KLSAgLy8vDQotICAvLy8g ICBFRklfU1VDQ0VTUyBUaGUgZGF0YSB3YXMgcmV0dXJuZWQgc3VjY2Vzc2Z1bGx5Lg0KLSAgLy8v DQotICAvLy8gICBFRklfVU5TVVBQT1JURUQgT2VtIElOVCBpcyBub3Qgc3VwcG9ydGVkIG9uIHRo aXMgcGxhdGZvcm0uDQotICAvLy8NCi0gIEVmaUdldFBsYXRmb3JtQmluYXJ5T2VtSW50RGF0YSA9 IDEsDQotICAvLy8NCi0gIC8vLyBUaGlzIG1vZGUgcmV0dXJucyBhIGJsb2NrIG9mIGRhdGEuIFRo ZSBjb250ZW50IGFuZCB1c2FnZSBpcyBJQlYgZGVmaW5lZC4gT0VNcyBvcg0KLSAgLy8vIElCVnMg bm9ybWFsbHkgdXNlIHRoaXMgbW9kZSBmb3Igbm9uc3RhbmRhcmQgQ29tcGF0aWJpbGl0eTE2IHJ1 bnRpbWUgMTYgYml0IHJvdXRpbmVzLiBJdA0KLSAgLy8vIGlzIHRoZSByZXNwb25zaWJpbGl0eSBv ZiB0aGlzIHJvdXRpbmUgdG8gY29hbGVzY2UgbXVsdGlwbGUgT0VNIDE2IGJpdCBmdW5jdGlvbnMs IGlmIHRoZXkNCi0gIC8vLyBleGlzdCwgaW50byBvbmUgY29oZXJlbnQgcGFja2FnZSB0aGF0IGlz IHVuZGVyc3RhbmRhYmxlIGJ5IHRoZSBDb21wYXRpYmlsaXR5MTYgY29kZS4NCi0gIC8vLw0KLSAg Ly8vIEV4YW1wbGUgdXNhZ2U6IEEgbGVnYWN5IG1vYmlsZSBCSU9TIHRoYXQgaGFzIGEgcHJlLWV4 aXN0aW5nIHJ1bnRpbWUNCi0gIC8vLyBpbnRlcmZhY2UgdG8gcmV0dXJuIHRoZSBiYXR0ZXJ5IHN0 YXR1cyB0byBjYWxsaW5nIGFwcGxpY2F0aW9ucy4NCi0gIC8vLw0KLSAgLy8vIFRoaXMgbW9kZSBp cyBpbnZva2VkIHR3aWNlLiBUaGUgZmlyc3QgaW52b2NhdGlvbiBoYXMgTGVnYWN5U2VnbWVudCBh bmQNCi0gIC8vLyBMZWdhY3lPZmZzZXQgc2V0IHRvIDAuIFRoZSBtb2RlIHJldHVybnMgdGhlIHRh YmxlIGFkZHJlc3MgaW4gRUZJIG1lbW9yeSBhbmQgaXRzIHNpemUuDQotICAvLy8gVGhlIHNlY29u ZCBpbnZvY2F0aW9uIGhhcyBMZWdhY3lTZWdtZW50IGFuZCBMZWdhY3lPZmZzZXQgc2V0IHRvIHRo ZSBsb2NhdGlvbg0KLSAgLy8vIGluIHRoZSAweEYwMDAwIG9yIDB4RTAwMDAgYmxvY2sgdG8gd2hp Y2ggdGhlIHRhYmxlIGlzIHRvIGJlIGNvcGllZC4gVGhlIHNlY29uZA0KLSAgLy8vIGludm9jYXRp b24gYWxsb3dzIGFueSB0YWJsZSBhZGRyZXNzIGZpeGVzIHRvIG9jY3VyIGluIHRoZSBFRkkgbWVt b3J5IGNvcHkgb2YgdGhlIHRhYmxlLg0KLSAgLy8vIFRoZSBjYWxsZXIsIG5vdCBFZmlHZXRQbGF0 Zm9ybUJpbmFyeU9lbTE2RGF0YSwgY29waWVzIHRoZSBtb2RpZmllZCB0YWJsZSB0bw0KLSAgLy8v IHRoZSBhbGxvY2F0ZWQgcmVnaW9uIGluIDB4RjAwMDAgb3IgMHhFMDAwMCBibG9jayBhZnRlciB0 aGUgc2Vjb25kIGludm9jYXRpb24uDQotICAvLy8NCi0gIC8vLyBUaGUgZnVuY3Rpb24gcGFyYW1l dGVycyBhc3NvY2lhdGVkIHdpdGggdGhpcyBtb2RlIGFyZToNCi0gIC8vLw0KLSAgLy8vICAgVGFi bGUgUG9pbnRlciB0byBPRU0gbGVnYWN5IDE2IGJpdCBjb2RlIG9yIGRhdGEuDQotICAvLy8NCi0g IC8vLyAgIFRhYmxlU2l6ZSBTaXplIG9mIGRhdGEuDQotICAvLy8NCi0gIC8vLyAgIExvY2F0aW9u IExvY2F0aW9uIHRvIHBsYWNlIHRoZSB0YWJsZS4gMHgwMC4gRWl0aGVyIDB4RTAwMDAgb3IgMHhG MDAwMCA2NCBLQiBibG9ja3MuDQotICAvLy8gICAgICBCaXQgMCA9IDEgMHhGMDAwMCA2NCBLQiBi bG9jay4NCi0gIC8vLyAgICAgIEJpdCAxID0gMSAweEUwMDAwIDY0IEtCIGJsb2NrLg0KLSAgLy8v ICAgICAgTXVsdGlwbGUgYml0cyBjYW4gYmUgc2V0Lg0KLSAgLy8vDQotICAvLy8gICBBbGlnbm1l bnQgQml0IG1hcHBlZCBhZGRyZXNzIGFsaWdubWVudCBncmFudWxhcml0eS4NCi0gIC8vLyAgICAg VGhlIGZpcnN0IG5vbnplcm8gYml0IGZyb20gdGhlIHJpZ2h0IGlzIHRoZSBhZGRyZXNzIGdyYW51 bGFyaXR5Lg0KLSAgLy8vDQotICAvLy8gICBMZWdhY3lTZWdtZW50IFNlZ21lbnQgaW4gd2hpY2gg RWZpQ29tcGF0aWJpbGl0eSBjb2RlIHdpbGwgcGxhY2UgdGhlIHRhYmxlIG9yIGRhdGEuDQotICAv Ly8NCi0gIC8vLyAgIExlZ2FjeU9mZnNldCBPZmZzZXQgaW4gd2hpY2ggRWZpQ29tcGF0aWJpbGl0 eSBjb2RlIHdpbGwgcGxhY2UgdGhlIHRhYmxlIG9yIGRhdGEuDQotICAvLy8NCi0gIC8vLyBUaGUg cmV0dXJuIHZhbHVlcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBtb2RlIGFyZToNCi0gIC8vLw0KLSAg Ly8vICAgRUZJX1NVQ0NFU1MgVGhlIGRhdGEgd2FzIHJldHVybmVkIHN1Y2Nlc3NmdWxseS4NCi0g IC8vLw0KLSAgLy8vICAgRUZJX1VOU1VQUE9SVEVEIE9lbTE2IGlzIG5vdCBzdXBwb3J0ZWQgb24g dGhpcyBwbGF0Zm9ybS4NCi0gIC8vLw0KLSAgRWZpR2V0UGxhdGZvcm1CaW5hcnlPZW0xNkRhdGEg PSAyLA0KLSAgLy8vDQotICAvLy8gVGhpcyBtb2RlIHJldHVybnMgYSBibG9jayBvZiBkYXRhLiBU aGUgY29udGVudCBhbmQgdXNhZ2UgYXJlIElCViBkZWZpbmVkLiBPRU1zIG9yDQotICAvLy8gSUJW cyBub3JtYWxseSB1c2UgdGhpcyBtb2RlIGZvciBub25zdGFuZGFyZCBDb21wYXRpYmlsaXR5MTYg cnVudGltZSAzMiBiaXQgcm91dGluZXMuIEl0DQotICAvLy8gaXMgdGhlIHJlc3BvbnNpYmlsaXR5 IG9mIHRoaXMgcm91dGluZSB0byBjb2FsZXNjZSBtdWx0aXBsZSBPRU0gMzIgYml0IGZ1bmN0aW9u cywgaWYgdGhleQ0KLSAgLy8vIGV4aXN0LCBpbnRvIG9uZSBjb2hlcmVudCBwYWNrYWdlIHRoYXQg aXMgdW5kZXJzdGFuZGFibGUgYnkgdGhlIENvbXBhdGliaWxpdHkxNiBjb2RlLg0KLSAgLy8vDQot ICAvLy8gRXhhbXBsZSB1c2FnZTogQSBsZWdhY3kgbW9iaWxlIEJJT1MgdGhhdCBoYXMgYSBwcmUg ZXhpc3RpbmcgcnVudGltZQ0KLSAgLy8vIGludGVyZmFjZSB0byByZXR1cm4gdGhlIGJhdHRlcnkg c3RhdHVzIHRvIGNhbGxpbmcgYXBwbGljYXRpb25zLg0KLSAgLy8vDQotICAvLy8gVGhpcyBtb2Rl IGlzIGludm9rZWQgdHdpY2UuIFRoZSBmaXJzdCBpbnZvY2F0aW9uIGhhcyBMZWdhY3lTZWdtZW50 IGFuZA0KLSAgLy8vIExlZ2FjeU9mZnNldCBzZXQgdG8gMC4gVGhlIG1vZGUgcmV0dXJucyB0aGUg dGFibGUgYWRkcmVzcyBpbiBFRkkgbWVtb3J5IGFuZCBpdHMgc2l6ZS4NCi0gIC8vLw0KLSAgLy8v IFRoZSBzZWNvbmQgaW52b2NhdGlvbiBoYXMgTGVnYWN5U2VnbWVudCBhbmQgTGVnYWN5T2Zmc2V0 IHNldCB0byB0aGUgbG9jYXRpb24NCi0gIC8vLyBpbiB0aGUgMHhGMDAwMCBvciAweEUwMDAwIGJs b2NrIHRvIHdoaWNoIHRoZSB0YWJsZSBpcyB0byBiZSBjb3BpZWQuIFRoZSBzZWNvbmQNCi0gIC8v LyBpbnZvY2F0aW9uIGFsbG93cyBhbnkgdGFibGUgYWRkcmVzcyBmaXggdXBzIHRvIG9jY3VyIGlu IHRoZSBFRkkgbWVtb3J5IGNvcHkgb2YgdGhlIHRhYmxlLg0KLSAgLy8vIFRoZSBjYWxsZXIsIG5v dCBFZmlHZXRQbGF0Zm9ybUJpbmFyeU9lbTMyRGF0YSwgY29waWVzIHRoZSBtb2RpZmllZCB0YWJs ZSB0bw0KLSAgLy8vIHRoZSBhbGxvY2F0ZWQgcmVnaW9uIGluIDB4RjAwMDAgb3IgMHhFMDAwMCBi bG9jayBhZnRlciB0aGUgc2Vjb25kIGludm9jYXRpb24uLg0KLSAgLy8vDQotICAvLy8gTm90ZTog VGhlcmUgYXJlIHR3byBnZW5lcmljIG1lY2hhbmlzbXMgYnkgd2hpY2ggdGhpcyBtb2RlIGNhbiBi ZSB1c2VkLg0KLSAgLy8vIE1lY2hhbmlzbSAxOiBUaGlzIG1vZGUgcmV0dXJucyB0aGUgZGF0YSBh bmQgdGhlIExlZ2FjeSBCSU9TIFByb3RvY29sIGNvcGllcw0KLSAgLy8vIHRoZSBkYXRhIGludG8g dGhlIEYwMDAwIG9yIEUwMDAwIGJsb2NrIGluIHRoZSBDb21wYXRpYmlsaXR5MTYgY29kZS4gVGhl DQotICAvLy8gRUZJX0NPTVBBVElCSUxJVFkxNl9UQUJMRSBlbnRyaWVzIE9lbTMyU2VnbWVudCBh bmQgT2VtMzJPZmZzZXQgY2FuDQotICAvLy8gYmUgdmlld2VkIGFzIHR3byBVSU5UMTYgZW50cmll cy4NCi0gIC8vLyBNZWNoYW5pc20gMjogVGhpcyBtb2RlIGRpcmVjdGx5IGZpbGxzIGluIHRoZSBF RklfQ09NUEFUSUJJTElUWTE2X1RBQkxFIHdpdGgNCi0gIC8vLyBhIHBvaW50ZXIgdG8gdGhlIElO VDE1IEU4MjAgcmVnaW9uIGNvbnRhaW5pbmcgdGhlIDMyIGJpdCBjb2RlLiBJdCByZXR1cm5zDQot ICAvLy8gRUZJX1VOU1VQUE9SVEVELiBUaGUgRUZJX0NPTVBBVElCSUxJVFkxNl9UQUJMRSBlbnRy aWVzLA0KLSAgLy8vIE9lbTMyU2VnbWVudCBhbmQgT2VtMzJPZmZzZXQsIGNhbiBiZSB2aWV3ZWQg YXMgdHdvIFVJTlQxNiBlbnRyaWVzIG9yDQotICAvLy8gYXMgYSBzaW5nbGUgVUlOVDMyIGVudHJ5 IGFzIGRldGVybWluZWQgYnkgdGhlIElCVi4NCi0gIC8vLw0KLSAgLy8vIFRoZSBmdW5jdGlvbiBw YXJhbWV0ZXJzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG1vZGUgYXJlOg0KLSAgLy8vDQotICAvLy8g ICBUYWJsZVNpemUgU2l6ZSBvZiBkYXRhLg0KLSAgLy8vDQotICAvLy8gICBMb2NhdGlvbiBMb2Nh dGlvbiB0byBwbGFjZSB0aGUgdGFibGUuIDB4MDAgb3IgMHhFMDAwMCBvciAweEYwMDAwIDY0IEtC IGJsb2Nrcy4NCi0gIC8vLyAgICAgICBCaXQgMCA9IDEgMHhGMDAwMCA2NCBLQiBibG9jay4NCi0g IC8vLyAgICAgICBCaXQgMSA9IDEgMHhFMDAwMCA2NCBLQiBibG9jay4NCi0gIC8vLyAgICAgICBN dWx0aXBsZSBiaXRzIGNhbiBiZSBzZXQuDQotICAvLy8NCi0gIC8vLyAgIEFsaWdubWVudCBCaXQg bWFwcGVkIGFkZHJlc3MgYWxpZ25tZW50IGdyYW51bGFyaXR5Lg0KLSAgLy8vICAgICAgIFRoZSBm aXJzdCBub256ZXJvIGJpdCBmcm9tIHRoZSByaWdodCBpcyB0aGUgYWRkcmVzcyBncmFudWxhcml0 eS4NCi0gIC8vLw0KLSAgLy8vICAgTGVnYWN5U2VnbWVudCBTZWdtZW50IGluIHdoaWNoIEVmaUNv bXBhdGliaWxpdHkgY29kZSB3aWxsIHBsYWNlIHRoZSB0YWJsZSBvciBkYXRhLg0KLSAgLy8vDQot ICAvLy8gICBMZWdhY3lPZmZzZXQgT2Zmc2V0IGluIHdoaWNoIEVmaUNvbXBhdGliaWxpdHkgY29k ZSB3aWxsIHBsYWNlIHRoZSB0YWJsZSBvciBkYXRhLg0KLSAgLy8vDQotICAvLy8gVGhlIHJldHVy biB2YWx1ZXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbW9kZSBhcmU6DQotICAvLy8gICBFRklfU1VD Q0VTUyBUaGUgZGF0YSB3YXMgcmV0dXJuZWQgc3VjY2Vzc2Z1bGx5Lg0KLSAgLy8vICAgRUZJX1VO U1VQUE9SVEVEIE9lbTMyIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybS4NCi0gIC8v Lw0KLSAgRWZpR2V0UGxhdGZvcm1CaW5hcnlPZW0zMkRhdGEgPSAzLA0KLSAgLy8vDQotICAvLy8g VGhpcyBtb2RlIHJldHVybnMgYSBUUE0gYmluYXJ5IGltYWdlIGZvciB0aGUgb25ib2FyZCBUUE0g ZGV2aWNlLg0KLSAgLy8vDQotICAvLy8gVGhlIGZ1bmN0aW9uIHBhcmFtZXRlcnMgYXNzb2NpYXRl ZCB3aXRoIHRoaXMgbW9kZSBhcmU6DQotICAvLy8NCi0gIC8vLyAgIFRhYmxlIFRQTSBiaW5hcnkg aW1hZ2UgZm9yIHRoZSBvbmJvYXJkIFRQTSBkZXZpY2UuDQotICAvLy8NCi0gIC8vLyAgIFRhYmxl U2l6ZSBTaXplIG9mIEJpbmFyeUltYWdlIGluIGJ5dGVzLg0KLSAgLy8vDQotICAvLy8gICBMb2Nh dGlvbiBMb2NhdGlvbiB0byBwbGFjZSB0aGUgdGFibGUuIDB4MDAuIEVpdGhlciAweEUwMDAwIG9y IDB4RjAwMDAgNjQgS0IgYmxvY2tzLg0KLSAgLy8vICAgICAgQml0IDAgPSAxIDB4RjAwMDAgNjQg S0IgYmxvY2suDQotICAvLy8gICAgICBCaXQgMSA9IDEgMHhFMDAwMCA2NCBLQiBibG9jay4NCi0g IC8vLyAgICAgIE11bHRpcGxlIGJpdHMgY2FuIGJlIHNldC4NCi0gIC8vLw0KLSAgLy8vICAgQWxp Z25tZW50IEJpdCBtYXBwZWQgYWRkcmVzcyBhbGlnbm1lbnQgZ3JhbnVsYXJpdHkuDQotICAvLy8g ICAgIFRoZSBmaXJzdCBub256ZXJvIGJpdCBmcm9tIHRoZSByaWdodCBpcyB0aGUgYWRkcmVzcyBn cmFudWxhcml0eS4NCi0gIC8vLw0KLSAgLy8vICAgTGVnYWN5U2VnbWVudCBTZWdtZW50IGluIHdo aWNoIEVmaUNvbXBhdGliaWxpdHkgY29kZSB3aWxsIHBsYWNlIHRoZSB0YWJsZSBvciBkYXRhLg0K LSAgLy8vDQotICAvLy8gICBMZWdhY3lPZmZzZXQgT2Zmc2V0IGluIHdoaWNoIEVmaUNvbXBhdGli aWxpdHkgY29kZSB3aWxsIHBsYWNlIHRoZSB0YWJsZSBvciBkYXRhLg0KLSAgLy8vDQotICAvLy8g VGhlIHJldHVybiB2YWx1ZXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbW9kZSBhcmU6DQotICAvLy8N Ci0gIC8vLyAgIEVGSV9TVUNDRVNTIEJpbmFyeUltYWdlIGlzIHZhbGlkLg0KLSAgLy8vDQotICAv Ly8gICBFRklfVU5TVVBQT1JURUQgTW9kZSBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZv cm0uDQotICAvLy8NCi0gIC8vLyAgIEVGSV9OT1RfRk9VTkQgTm8gQmluYXJ5SW1hZ2Ugd2FzIGZv dW5kLg0KLSAgLy8vDQotICBFZmlHZXRQbGF0Zm9ybUJpbmFyeVRwbUJpbmFyeSA9IDQsDQotICAv Ly8NCi0gIC8vLyBUaGUgbW9kZSBmaW5kcyB0aGUgQ29tcGF0aWJpbGl0eTE2IFJvbSBJbWFnZS4N Ci0gIC8vLw0KLSAgLy8vIFRoZSBmdW5jdGlvbiBwYXJhbWV0ZXJzIGFzc29jaWF0ZWQgd2l0aCB0 aGlzIG1vZGUgYXJlOg0KLSAgLy8vDQotICAvLy8gICAgU3lzdGVtIFJPTSBpbWFnZSBmb3IgdGhl IHBsYXRmb3JtLg0KLSAgLy8vDQotICAvLy8gICAgVGFibGVTaXplIFNpemUgb2YgVGFibGUgaW4g Ynl0ZXMuDQotICAvLy8NCi0gIC8vLyAgICBMb2NhdGlvbiBJZ25vcmVkLg0KLSAgLy8vDQotICAv Ly8gICAgQWxpZ25tZW50IElnbm9yZWQuDQotICAvLy8NCi0gIC8vLyAgICBMZWdhY3lTZWdtZW50 IElnbm9yZWQuDQotICAvLy8NCi0gIC8vLyAgICBMZWdhY3lPZmZzZXQgSWdub3JlZC4NCi0gIC8v Lw0KLSAgLy8vIFRoZSByZXR1cm4gdmFsdWVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG1vZGUgYXJl Og0KLSAgLy8vDQotICAvLy8gICAgRUZJX1NVQ0NFU1MgUk9NIGltYWdlIGZvdW5kLg0KLSAgLy8v DQotICAvLy8gICAgRUZJX05PVF9GT1VORCBST00gbm90IGZvdW5kLg0KLSAgLy8vDQotICBFZmlH ZXRQbGF0Zm9ybUJpbmFyeVN5c3RlbVJvbSA9IDUsDQotICAvLy8NCi0gIC8vLyBUaGlzIG1vZGUg cmV0dXJucyB0aGUgQmFzZSBhZGRyZXNzIG9mIFBjaUV4cHJlc3MgbWVtb3J5IG1hcHBlZCBjb25m aWd1cmF0aW9uDQotICAvLy8gYWRkcmVzcyBzcGFjZS4NCi0gIC8vLw0KLSAgLy8vIFRoZSBmdW5j dGlvbiBwYXJhbWV0ZXJzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG1vZGUgYXJlOg0KLSAgLy8vDQot ICAvLy8gICAgVGFibGUgU3lzdGVtIFJPTSBpbWFnZSBmb3IgdGhlIHBsYXRmb3JtLg0KLSAgLy8v DQotICAvLy8gICAgVGFibGVTaXplIFNpemUgb2YgVGFibGUgaW4gYnl0ZXMuDQotICAvLy8NCi0g IC8vLyAgICBMb2NhdGlvbiBJZ25vcmVkLg0KLSAgLy8vDQotICAvLy8gICAgQWxpZ25tZW50IEln bm9yZWQuDQotICAvLy8NCi0gIC8vLyAgICBMZWdhY3lTZWdtZW50IElnbm9yZWQuDQotICAvLy8N Ci0gIC8vLyAgICBMZWdhY3lPZmZzZXQgSWdub3JlZC4NCi0gIC8vLw0KLSAgLy8vIFRoZSByZXR1 cm4gdmFsdWVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG1vZGUgYXJlOg0KLSAgLy8vDQotICAvLy8g ICBFRklfU1VDQ0VTUyBBZGRyZXNzIGlzIHZhbGlkLg0KLSAgLy8vDQotICAvLy8gICBFRklfVU5T VVBQT1JURUQgU3lzdGVtIGRvZXMgbm90IFBjaUV4cHJlc3MuDQotICAvLy8NCi0gIEVmaUdldFBs YXRmb3JtUGNpRXhwcmVzc0Jhc2UgPSA2LA0KLSAgLy8vDQotICBFZmlHZXRQbGF0Zm9ybVBtbVNp emUgPSA3LA0KLSAgLy8vDQotICBFZmlHZXRQbGF0Zm9ybUVuZE9wcm9tU2hhZG93QWRkciA9IDgs DQotICAvLy8NCi19IEVGSV9HRVRfUExBVEZPUk1fSU5GT19NT0RFOw0KLQ0KLS8qKg0KLSAgVGhp cyBlbnVtIHNwZWNpZmllcyB0aGUgTW9kZSBwYXJhbSB2YWx1ZXMgZm9yIEdldFBsYXRmb3JtSGFu ZGxlKCkuDQotKiovDQotdHlwZWRlZiBlbnVtIHsNCi0gIC8vLw0KLSAgLy8vIFRoaXMgbW9kZSBy ZXR1cm5zIHRoZSBDb21wYXRpYmlsaXR5MTYgcG9saWN5IGZvciB0aGUgZGV2aWNlIHRoYXQgc2hv dWxkIGJlIHRoZSBWR0ENCi0gIC8vLyBjb250cm9sbGVyIHVzZWQgZHVyaW5nIGEgQ29tcGF0aWJp bGl0eTE2IGJvb3QuDQotICAvLy8NCi0gIC8vLyBUaGUgZnVuY3Rpb24gcGFyYW1ldGVycyBhc3Nv Y2lhdGVkIHdpdGggdGhpcyBtb2RlIGFyZToNCi0gIC8vLw0KLSAgLy8vICAgVHlwZSAweDAwLg0K LSAgLy8vDQotICAvLy8gICBIYW5kbGVCdWZmZXIgQnVmZmVyIG9mIGFsbCBWR0EgaGFuZGxlcyBm b3VuZC4NCi0gIC8vLw0KLSAgLy8vICAgSGFuZGxlQ291bnQgTnVtYmVyIG9mIFZHQSBoYW5kbGVz IGZvdW5kLg0KLSAgLy8vDQotICAvLy8gICBBZGRpdGlvbmFsRGF0YSBOVUxMLg0KLSAgLy8vDQot ICBFZmlHZXRQbGF0Zm9ybVZnYUhhbmRsZSA9IDAsDQotICAvLy8NCi0gIC8vLyBUaGlzIG1vZGUg cmV0dXJucyB0aGUgQ29tcGF0aWJpbGl0eTE2IHBvbGljeSBmb3IgdGhlIGRldmljZSB0aGF0IHNo b3VsZCBiZSB0aGUgSURFDQotICAvLy8gY29udHJvbGxlciB1c2VkIGR1cmluZyBhIENvbXBhdGli aWxpdHkxNiBib290Lg0KLSAgLy8vDQotICAvLy8gVGhlIGZ1bmN0aW9uIHBhcmFtZXRlcnMgYXNz b2NpYXRlZCB3aXRoIHRoaXMgbW9kZSBhcmU6DQotICAvLy8NCi0gIC8vLyAgIFR5cGUgMHgwMC4N Ci0gIC8vLw0KLSAgLy8vICAgSGFuZGxlQnVmZmVyIEJ1ZmZlciBvZiBhbGwgSURFIGhhbmRsZXMg Zm91bmQuDQotICAvLy8NCi0gIC8vLyAgIEhhbmRsZUNvdW50IE51bWJlciBvZiBJREUgaGFuZGxl cyBmb3VuZC4NCi0gIC8vLw0KLSAgLy8vICAgQWRkaXRpb25hbERhdGEgUG9pbnRlciB0byBIZGRJ bmZvLg0KLSAgLy8vICAgICBJbmZvcm1hdGlvbiBhYm91dCBhbGwgb25ib2FyZCBJREUgY29udHJv bGxlcnMuDQotICAvLy8NCi0gIEVmaUdldFBsYXRmb3JtSWRlSGFuZGxlID0gMSwNCi0gIC8vLw0K LSAgLy8vIFRoaXMgbW9kZSByZXR1cm5zIHRoZSBDb21wYXRpYmlsaXR5MTYgcG9saWN5IGZvciB0 aGUgZGV2aWNlIHRoYXQgc2hvdWxkIGJlIHRoZSBJU0EgYnVzDQotICAvLy8gY29udHJvbGxlciB1 c2VkIGR1cmluZyBhIENvbXBhdGliaWxpdHkxNiBib290Lg0KLSAgLy8vDQotICAvLy8gVGhlIGZ1 bmN0aW9uIHBhcmFtZXRlcnMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbW9kZSBhcmU6DQotICAvLy8N Ci0gIC8vLyAgIFR5cGUgMHgwMC4NCi0gIC8vLw0KLSAgLy8vICAgSGFuZGxlQnVmZmVyIEJ1ZmZl ciBvZiBhbGwgSVNBIGJ1cyBoYW5kbGVzIGZvdW5kLg0KLSAgLy8vDQotICAvLy8gICBIYW5kbGVD b3VudCBOdW1iZXIgb2YgSVNBIGJ1cyBoYW5kbGVzIGZvdW5kLg0KLSAgLy8vDQotICAvLy8gICBB ZGRpdGlvbmFsRGF0YSBOVUxMLg0KLSAgLy8vDQotICBFZmlHZXRQbGF0Zm9ybUlzYUJ1c0hhbmRs ZSA9IDIsDQotICAvLy8NCi0gIC8vLyBUaGlzIG1vZGUgcmV0dXJucyB0aGUgQ29tcGF0aWJpbGl0 eTE2IHBvbGljeSBmb3IgdGhlIGRldmljZSB0aGF0IHNob3VsZCBiZSB0aGUgVVNCDQotICAvLy8g ZGV2aWNlIHVzZWQgZHVyaW5nIGEgQ29tcGF0aWJpbGl0eTE2IGJvb3QuDQotICAvLy8NCi0gIC8v LyBUaGUgZnVuY3Rpb24gcGFyYW1ldGVycyBhc3NvY2lhdGVkIHdpdGggdGhpcyBtb2RlIGFyZToN Ci0gIC8vLw0KLSAgLy8vICAgVHlwZSAweDAwLg0KLSAgLy8vDQotICAvLy8gICBIYW5kbGVCdWZm ZXIgQnVmZmVyIG9mIGFsbCBVU0IgaGFuZGxlcyBmb3VuZC4NCi0gIC8vLw0KLSAgLy8vICAgSGFu ZGxlQ291bnQgTnVtYmVyIG9mIFVTQiBidXMgaGFuZGxlcyBmb3VuZC4NCi0gIC8vLw0KLSAgLy8v ICAgQWRkaXRpb25hbERhdGEgTlVMTC4NCi0gIC8vLw0KLSAgRWZpR2V0UGxhdGZvcm1Vc2JIYW5k bGUgPSAzDQotfSBFRklfR0VUX1BMQVRGT1JNX0hBTkRMRV9NT0RFOw0KLQ0KLS8qKg0KLSAgVGhp cyBlbnVtIHNwZWNpZmllcyB0aGUgTW9kZSBwYXJhbSB2YWx1ZXMgZm9yIFBsYXRmb3JtSG9va3Mo KS4NCi0gIE5vdGU6IEFueSBPRU0gZGVmaW5lZCBob29rcyBzdGFydCB3aXRoIDB4ODAwMC4NCi0q Ki8NCi10eXBlZGVmIGVudW0gew0KLSAgLy8vDQotICAvLy8gVGhpcyBtb2RlIGFsbG93cyBhbnkg cHJlcHJvY2Vzc2luZyBiZWZvcmUgc2Nhbm5pbmcgT3BST01zLg0KLSAgLy8vDQotICAvLy8gVGhl IGZ1bmN0aW9uIHBhcmFtZXRlcnMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbW9kZSBhcmU6DQotICAv Ly8NCi0gIC8vLyAgICAgVHlwZSAwLg0KLSAgLy8vDQotICAvLy8gICAgIERldmljZUhhbmRsZSBI YW5kbGUgb2YgZGV2aWNlIE9wUk9NIGlzIGFzc29jaWF0ZWQgd2l0aC4NCi0gIC8vLw0KLSAgLy8v ICAgICBTaGFkb3dBZGRyZXNzIEFkZHJlc3Mgd2hlcmUgT3BST00gaXMgc2hhZG93ZWQuDQotICAv Ly8NCi0gIC8vLyAgICAgQ29tcGF0aWJpbGl0eTE2VGFibGUgTlVMTC4NCi0gIC8vLw0KLSAgLy8v ICAgICBBZGRpdGlvbmFsRGF0YSBOVUxMLg0KLSAgLy8vDQotICBFZmlQbGF0Zm9ybUhvb2tQcmVw YXJlVG9TY2FuUm9tID0gMCwNCi0gIC8vLw0KLSAgLy8vIFRoaXMgbW9kZSBzaGFkb3dzIGxlZ2Fj eSBPcFJPTVMgdGhhdCBtYXkgbm90IGhhdmUgYSBwaHlzaWNhbCBkZXZpY2UgYXNzb2NpYXRlZCB3 aXRoDQotICAvLy8gdGhlbS4gSXQgcmV0dXJucyBFRklfU1VDQ0VTUyBpZiB0aGUgUk9NIHdhcyBz aGFkb3dlZC4NCi0gIC8vLw0KLSAgLy8vIFRoZSBmdW5jdGlvbiBwYXJhbWV0ZXJzIGFzc29jaWF0 ZWQgd2l0aCB0aGlzIG1vZGUgYXJlOg0KLSAgLy8vDQotICAvLy8gICAgIFR5cGUgMC4NCi0gIC8v Lw0KLSAgLy8vICAgICBEZXZpY2VIYW5kbGUgMC4NCi0gIC8vLw0KLSAgLy8vICAgICBTaGFkb3dB ZGRyZXNzIEZpcnN0IGZyZWUgT3BST00gYXJlYSwgYWZ0ZXIgb3RoZXIgT3BST01zIGhhdmUgYmVl biBkaXNwYXRjaGVkLi4NCi0gIC8vLw0KLSAgLy8vICAgICBDb21wYXRpYmlsaXR5MTZUYWJsZSBQ b2ludGVyIHRvIHRoZSBDb21wYXRpYmlsaXR5MTYgVGFibGUuDQotICAvLy8NCi0gIC8vLyAgICAg ICBBZGRpdGlvbmFsRGF0YSBOVUxMLg0KLSAgLy8vDQotICBFZmlQbGF0Zm9ybUhvb2tTaGFkb3dT ZXJ2aWNlUm9tcyA9IDEsDQotICAvLy8NCi0gIC8vLyBUaGlzIG1vZGUgYWxsb3dzIHBsYXRmb3Jt IHRvIHBlcmZvcm0gYW55IHJlcXVpcmVkIG9wZXJhdGlvbiBhZnRlciBhbiBPcFJPTSBoYXMNCi0g IC8vLyBjb21wbGV0ZWQgaXRzIGluaXRpYWxpemF0aW9uLg0KLSAgLy8vDQotICAvLy8gVGhlIGZ1 bmN0aW9uIHBhcmFtZXRlcnMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbW9kZSBhcmU6DQotICAvLy8N Ci0gIC8vLyAgICAgICBUeXBlIDAuDQotICAvLy8NCi0gIC8vLyAgICAgICBEZXZpY2VIYW5kbGUg SGFuZGxlIG9mIGRldmljZSBPcFJPTSBpcyBhc3NvY2lhdGVkIHdpdGguDQotICAvLy8NCi0gIC8v LyAgICAgICBTaGFkb3dBZGRyZXNzIEFkZHJlc3Mgd2hlcmUgT3BST00gaXMgc2hhZG93ZWQuDQot ICAvLy8NCi0gIC8vLyAgICAgICBDb21wYXRpYmlsaXR5MTZUYWJsZSBOVUxMLg0KLSAgLy8vDQot ICAvLy8gICAgICAgQWRkaXRpb25hbERhdGEgTlVMTC4NCi0gIC8vLw0KLSAgRWZpUGxhdGZvcm1I b29rQWZ0ZXJSb21Jbml0ID0gMg0KLX0gRUZJX0dFVF9QTEFURk9STV9IT09LX01PREU7DQotDQot Ly8vDQotLy8vIFRoaXMgSVJRIGhhcyBub3QgYmVlbiBhc3NpZ25lZCB0byBQQ0kuDQotLy8vDQot I2RlZmluZSBQQ0lfVU5VU0VEICAweDAwDQotLy8vDQotLy8vIFRoaXMgSVJRIGhhcyBiZWVuIGFz c2lnbmVkIHRvIFBDSS4NCi0vLy8NCi0jZGVmaW5lIFBDSV9VU0VEICAweEZGDQotLy8vDQotLy8v IFRoaXMgSVJRIGhhcyBiZWVuIHVzZWQgYnkgYW4gU0lPIGxlZ2FjeSBkZXZpY2UgYW5kIGNhbm5v dCBiZSB1c2VkIGJ5IFBDSS4NCi0vLy8NCi0jZGVmaW5lIExFR0FDWV9VU0VEICAweEZFDQotDQot I3ByYWdtYSBwYWNrKDEpDQotDQotdHlwZWRlZiBzdHJ1Y3Qgew0KLSAgLy8vDQotICAvLy8gSVJR IGZvciB0aGlzIGVudHJ5Lg0KLSAgLy8vDQotICBVSU5UOCAgICBJcnE7DQotICAvLy8NCi0gIC8v LyBTdGF0dXMgb2YgdGhpcyBJUlEuDQotICAvLy8NCi0gIC8vLyBQQ0lfVU5VU0VEIDB4MDAuIFRo aXMgSVJRIGhhcyBub3QgYmVlbiBhc3NpZ25lZCB0byBQQ0kuDQotICAvLy8NCi0gIC8vLyBQQ0lf VVNFRCAweEZGLiBUaGlzIElSUSBoYXMgYmVlbiBhc3NpZ25lZCB0byBQQ0kuDQotICAvLy8NCi0g IC8vLyBMRUdBQ1lfVVNFRCAweEZFLiBUaGlzIElSUSBoYXMgYmVlbiB1c2VkIGJ5IGFuIFNJTyBs ZWdhY3kNCi0gIC8vLyBkZXZpY2UgYW5kIGNhbm5vdCBiZSB1c2VkIGJ5IFBDSS4NCi0gIC8vLw0K LSAgVUlOVDggICAgVXNlZDsNCi19IEVGSV9MRUdBQ1lfSVJRX1BSSU9SSVRZX1RBQkxFX0VOVFJZ Ow0KLQ0KLS8vDQotLy8gRGVmaW5lIFBJUiB0YWJsZSBzdHJ1Y3R1cmVzDQotLy8NCi0jZGVmaW5l IEVGSV9MRUdBQ1lfUElSUV9UQUJMRV9TSUdOQVRVUkUgIFNJR05BVFVSRV8zMiAoJyQnLCAnUCcs ICdJJywgJ1InKQ0KLQ0KLXR5cGVkZWYgc3RydWN0IHsNCi0gIC8vLw0KLSAgLy8vICRQSVIuDQot ICAvLy8NCi0gIFVJTlQzMiAgICBTaWduYXR1cmU7DQotICAvLy8NCi0gIC8vLyAweDAwLg0KLSAg Ly8vDQotICBVSU5UOCAgICAgTWlub3JWZXJzaW9uOw0KLSAgLy8vDQotICAvLy8gMHgwMSBmb3Ig dGFibGUgdmVyc2lvbiAxLjAuDQotICAvLy8NCi0gIFVJTlQ4ICAgICBNYWpvclZlcnNpb247DQot ICAvLy8NCi0gIC8vLyAweDIwICsgUm91dGluZ1RhYmxlRW50cmllcyAqIDB4MTAuDQotICAvLy8N Ci0gIFVJTlQxNiAgICBUYWJsZVNpemU7DQotICAvLy8NCi0gIC8vLyBQQ0kgaW50ZXJydXB0IHJv dXRlciBidXMuDQotICAvLy8NCi0gIFVJTlQ4ICAgICBCdXM7DQotICAvLy8NCi0gIC8vLyBQQ0kg aW50ZXJydXB0IHJvdXRlciBkZXZpY2UvZnVuY3Rpb24uDQotICAvLy8NCi0gIFVJTlQ4ICAgICBE ZXZGdW47DQotICAvLy8NCi0gIC8vLyBJZiBub256ZXJvLCBiaXQgbWFwIG9mIElSUXMgcmVzZXJ2 ZWQgZm9yIFBDSS4NCi0gIC8vLw0KLSAgVUlOVDE2ICAgIFBjaU9ubHlJcnE7DQotICAvLy8NCi0g IC8vLyBWZW5kb3IgSUQgb2YgYSBjb21wYXRpYmxlIFBDSSBpbnRlcnJ1cHQgcm91dGVyLg0KLSAg Ly8vDQotICBVSU5UMTYgICAgQ29tcGF0aWJsZVZpZDsNCi0gIC8vLw0KLSAgLy8vIERldmljZSBJ RCBvZiBhIGNvbXBhdGlibGUgUENJIGludGVycnVwdCByb3V0ZXIuDQotICAvLy8NCi0gIFVJTlQx NiAgICBDb21wYXRpYmxlRGlkOw0KLSAgLy8vDQotICAvLy8gSWYgbm9uemVybywgYSB2YWx1ZSBw YXNzZWQgZGlyZWN0bHkgdG8gdGhlIElSUSBtaW5pcG9ydCdzIEluaXRpYWxpemUgZnVuY3Rpb24u DQotICAvLy8NCi0gIFVJTlQzMiAgICBNaW5pcG9ydDsNCi0gIC8vLw0KLSAgLy8vIFJlc2VydmVk IGZvciBmdXR1cmUgdXNhZ2UuDQotICAvLy8NCi0gIFVJTlQ4ICAgICBSZXNlcnZlZFsxMV07DQot ICAvLy8NCi0gIC8vLyBUaGlzIGJ5dGUgcGx1cyB0aGUgc3VtIG9mIGFsbCBvdGhlciBieXRlcyBp biB0aGUgTG9jYWxQaXJxVGFibGUgZXF1YWwgMHgwMC4NCi0gIC8vLw0KLSAgVUlOVDggICAgIENo ZWNrc3VtOw0KLX0gRUZJX0xFR0FDWV9QSVJRX1RBQkxFX0hFQURFUjsNCi0NCi10eXBlZGVmIHN0 cnVjdCB7DQotICAvLy8NCi0gIC8vLyBJZiBub256ZXJvLCBhIHZhbHVlIGFzc2lnbmVkIGJ5IHRo ZSBJQlYuDQotICAvLy8NCi0gIFVJTlQ4ICAgICBQaXJxOw0KLSAgLy8vDQotICAvLy8gSWYgbm9u emVybywgdGhlIElSUXMgdGhhdCBjYW4gYmUgYXNzaWduZWQgdG8gdGhpcyBkZXZpY2UuDQotICAv Ly8NCi0gIFVJTlQxNiAgICBJcnFNYXNrOw0KLX0gRUZJX0xFR0FDWV9QSVJRX0VOVFJZOw0KLQ0K LXR5cGVkZWYgc3RydWN0IHsNCi0gIC8vLw0KLSAgLy8vIFBDSSBidXMgb2YgdGhlIGVudHJ5Lg0K LSAgLy8vDQotICBVSU5UOCAgICAgICAgICAgICAgICAgICAgQnVzOw0KLSAgLy8vDQotICAvLy8g UENJIGRldmljZSBvZiB0aGlzIGVudHJ5Lg0KLSAgLy8vDQotICBVSU5UOCAgICAgICAgICAgICAg ICAgICAgRGV2aWNlOw0KLSAgLy8vDQotICAvLy8gQW4gSUJWIHZhbHVlIGFuZCBJUlEgbWFzayBm b3IgUElSUSBwaW5zIEEgdGhyb3VnaCBELg0KLSAgLy8vDQotICBFRklfTEVHQUNZX1BJUlFfRU5U UlkgICAgUGlycUVudHJ5WzRdOw0KLSAgLy8vDQotICAvLy8gSWYgbm9uemVybywgdGhlIHNsb3Qg bnVtYmVyIGFzc2lnbmVkIGJ5IHRoZSBib2FyZCBtYW51ZmFjdHVyZXIuDQotICAvLy8NCi0gIFVJ TlQ4ICAgICAgICAgICAgICAgICAgICBTbG90Ow0KLSAgLy8vDQotICAvLy8gUmVzZXJ2ZWQgZm9y IGZ1dHVyZSB1c2UuDQotICAvLy8NCi0gIFVJTlQ4ICAgICAgICAgICAgICAgICAgICBSZXNlcnZl ZDsNCi19IEVGSV9MRUdBQ1lfSVJRX1JPVVRJTkdfRU5UUlk7DQotDQotI3ByYWdtYSBwYWNrKCkN Ci0NCi0vKioNCi0gIEZpbmRzIHRoZSBiaW5hcnkgZGF0YSBvciBvdGhlciBwbGF0Zm9ybSBpbmZv cm1hdGlvbi4NCi0NCi0gIEBwYXJhbSAgVGhpcyAgICAgICAgICAgICAgICAgIFRoZSBwcm90b2Nv bCBpbnN0YW5jZSBwb2ludGVyLg0KLSAgQHBhcmFtICBNb2RlICAgICAgICAgICAgICAgICAgU3Bl Y2lmaWVzIHdoYXQgZGF0YSB0byByZXR1cm4uIFNlZSBTZWUgRUZJX0dFVF9QTEFURk9STV9JTkZP X01PREUgZW51bS4NCi0gIEBwYXJhbSAgVGFibGUgICAgICAgICAgICAgICAgIE1vZGUgc3BlY2lm aWMuICBTZWUgRUZJX0dFVF9QTEFURk9STV9JTkZPX01PREUgZW51bS4NCi0gIEBwYXJhbSAgVGFi bGVTaXplICAgICAgICAgICAgICBNb2RlIHNwZWNpZmljLiAgU2VlIEVGSV9HRVRfUExBVEZPUk1f SU5GT19NT0RFIGVudW0uDQotICBAcGFyYW0gIExvY2F0aW9uICAgICAgICAgICAgICAgTW9kZSBz cGVjaWZpYy4gIFNlZSBFRklfR0VUX1BMQVRGT1JNX0lORk9fTU9ERSBlbnVtLg0KLSAgQHBhcmFt ICBBbGlnbm1lbnQgICAgICAgICAgICAgTW9kZSBzcGVjaWZpYy4gIFNlZSBFRklfR0VUX1BMQVRG T1JNX0lORk9fTU9ERSBlbnVtLg0KLSAgQHBhcmFtICBMZWdhY3lTZWdtZW50ICAgICAgICAgTW9k ZSBzcGVjaWZpYy4gIFNlZSBFRklfR0VUX1BMQVRGT1JNX0lORk9fTU9ERSBlbnVtLg0KLSAgQHBh cmFtICBMZWdhY3lPZmZzZXQgICAgICAgICAgTW9kZSBzcGVjaWZpYy4gIFNlZSBFRklfR0VUX1BM QVRGT1JNX0lORk9fTU9ERSBlbnVtLg0KLQ0KLSAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAg ICAgRGF0YSByZXR1cm5lZCBzdWNjZXNzZnVsbHkuDQotICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRF RCAgICAgICBNb2RlIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhlIHBsYXRmb3JtLg0KLSAgQHJldHZh bCBFRklfTk9UX0ZPVU5EICAgICAgICAgQmluYXJ5IGltYWdlIG9yIHRhYmxlIG5vdCBmb3VuZC4N Ci0NCi0qKi8NCi10eXBlZGVmDQotRUZJX1NUQVRVUw0KLShFRklBUEkgKkVGSV9MRUdBQ1lfQklP U19QTEFURk9STV9HRVRfUExBVEZPUk1fSU5GTykoDQotICBJTiBFRklfTEVHQUNZX0JJT1NfUExB VEZPUk1fUFJPVE9DT0wgICAqVGhpcywNCi0gIElOIEVGSV9HRVRfUExBVEZPUk1fSU5GT19NT0RF ICAgICAgICAgIE1vZGUsDQotICBPVVQgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAqKlRhYmxlLA0KLSAgT1VUIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlRh YmxlU2l6ZSwNCi0gIE9VVCBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpMb2Nh dGlvbiwNCi0gIE9VVCBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpBbGlnbm1l bnQsDQotICBJTiAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZWdhY3lTZWdt ZW50LA0KLSAgSU4gIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVnYWN5T2Zm c2V0DQotICApOw0KLQ0KLS8qKg0KLSAgUmV0dXJucyBhIGJ1ZmZlciBvZiBoYW5kbGVzIGZvciB0 aGUgcmVxdWVzdGVkIHN1YmZ1bmN0aW9uLg0KLQ0KLSAgQHBhcmFtICBUaGlzICAgICAgICAgICAg ICAgICAgVGhlIHByb3RvY29sIGluc3RhbmNlIHBvaW50ZXIuDQotICBAcGFyYW0gIE1vZGUgICAg ICAgICAgICAgICAgICBTcGVjaWZpZXMgd2hhdCBoYW5kbGUgdG8gcmV0dXJuLiBTZWUgRUZJX0dF VF9QTEFURk9STV9IQU5ETEVfTU9ERSBlbnVtLg0KLSAgQHBhcmFtICBUeXBlICAgICAgICAgICAg ICAgICAgTW9kZSBzcGVjaWZpYy4gU2VlIEVGSV9HRVRfUExBVEZPUk1fSEFORExFX01PREUgZW51 bS4NCi0gIEBwYXJhbSAgSGFuZGxlQnVmZmVyICAgICAgICAgIE1vZGUgc3BlY2lmaWMuIFNlZSBF RklfR0VUX1BMQVRGT1JNX0hBTkRMRV9NT0RFIGVudW0uDQotICBAcGFyYW0gIEhhbmRsZUNvdW50 ICAgICAgICAgICBNb2RlIHNwZWNpZmljLiBTZWUgRUZJX0dFVF9QTEFURk9STV9IQU5ETEVfTU9E RSBlbnVtLg0KLSAgQHBhcmFtICBBZGRpdGlvbmFsRGF0YSAgICAgICAgTW9kZSBzcGVjaWZpYy4g U2VlIEVGSV9HRVRfUExBVEZPUk1fSEFORExFX01PREUgZW51bS4NCi0NCi0gIEByZXR2YWwgRUZJ X1NVQ0NFU1MgICAgICAgICAgIEhhbmRsZSBpcyB2YWxpZC4NCi0gIEByZXR2YWwgRUZJX1VOU1VQ UE9SVEVEICAgICAgIE1vZGUgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGUgcGxhdGZvcm0uDQotICBA cmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBIYW5kbGUgaXMgbm90IGtub3duLg0KLQ0KLSoq Lw0KLXR5cGVkZWYNCi1FRklfU1RBVFVTDQotKEVGSUFQSSAqRUZJX0xFR0FDWV9CSU9TX1BMQVRG T1JNX0dFVF9QTEFURk9STV9IQU5ETEUpKA0KLSAgSU4gRUZJX0xFR0FDWV9CSU9TX1BMQVRGT1JN X1BST1RPQ09MICAgKlRoaXMsDQotICBJTiBFRklfR0VUX1BMQVRGT1JNX0hBTkRMRV9NT0RFICAg ICAgICBNb2RlLA0KLSAgSU4gVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlw ZSwNCi0gIE9VVCBFRklfSEFORExFICAgICAgICAgICAgICAgICAgICAgICAgICoqSGFuZGxlQnVm ZmVyLA0KLSAgT1VUIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkhhbmRsZUNv dW50LA0KLSAgSU4gIFZPSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKipBZGRpdGlv bmFsRGF0YSBPUFRJT05BTA0KLSAgKTsNCi0NCi0vKioNCi0gIExvYWQgYW5kIGluaXRpYWxpemUg dGhlIExlZ2FjeSBCSU9TIFNNTSBoYW5kbGVyLg0KLQ0KLSAgQHBhcmFtICBUaGlzICAgICAgICAg ICAgICAgICAgIFRoZSBwcm90b2NvbCBpbnN0YW5jZSBwb2ludGVyLg0KLSAgQHBhcmFtICBFZmlU b0xlZ2FjeTE2Qm9vdFRhYmxlIEEgcG9pbnRlciB0byBMZWdhY3kxNiBib290IHRhYmxlLg0KLQ0K LSAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgU01NIGNvZGUgbG9hZGVkLg0KLSAgQHJl dHZhbCBFRklfREVWSUNFX0VSUk9SICAgICAgU01NIGNvZGUgZmFpbGVkIHRvIGxvYWQNCi0NCi0q Ki8NCi10eXBlZGVmDQotRUZJX1NUQVRVUw0KLShFRklBUEkgKkVGSV9MRUdBQ1lfQklPU19QTEFU Rk9STV9TTU1fSU5JVCkoDQotICBJTiBFRklfTEVHQUNZX0JJT1NfUExBVEZPUk1fUFJPVE9DT0wg ICAqVGhpcywNCi0gIElOICBWT0lEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpFZmlU b0xlZ2FjeTE2Qm9vdFRhYmxlDQotICApOw0KLQ0KLS8qKg0KLSAgQWxsb3dzIHBsYXRmb3JtIHRv IHBlcmZvcm0gYW55IHJlcXVpcmVkIGFjdGlvbiBhZnRlciBhIExlZ2FjeUJpb3Mgb3BlcmF0aW9u Lg0KLSAgSW52b2tlcyB0aGUgc3BlY2lmaWMgc3ViIGZ1bmN0aW9uIHNwZWNpZmllZCBieSBNb2Rl Lg0KLQ0KLSAgQHBhcmFtICBUaGlzICAgICAgICAgICAgICAgICAgVGhlIHByb3RvY29sIGluc3Rh bmNlIHBvaW50ZXIuDQotICBAcGFyYW0gIE1vZGUgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMg d2hhdCBoYW5kbGUgdG8gcmV0dXJuLiBTZWUgRUZJX0dFVF9QTEFURk9STV9IT09LX01PREUgZW51 bS4NCi0gIEBwYXJhbSAgVHlwZSAgICAgICAgICAgICAgICAgIE1vZGUgc3BlY2lmaWMuICBTZWUg RUZJX0dFVF9QTEFURk9STV9IT09LX01PREUgZW51bS4NCi0gIEBwYXJhbSAgRGV2aWNlSGFuZGxl ICAgICAgICAgIE1vZGUgc3BlY2lmaWMuICBTZWUgRUZJX0dFVF9QTEFURk9STV9IT09LX01PREUg ZW51bS4NCi0gIEBwYXJhbSAgU2hhZG93QWRkcmVzcyAgICAgICAgIE1vZGUgc3BlY2lmaWMuICBT ZWUgRUZJX0dFVF9QTEFURk9STV9IT09LX01PREUgZW51bS4NCi0gIEBwYXJhbSAgQ29tcGF0aWJp bGl0eTE2VGFibGUgIE1vZGUgc3BlY2lmaWMuICBTZWUgRUZJX0dFVF9QTEFURk9STV9IT09LX01P REUgZW51bS4NCi0gIEBwYXJhbSAgQWRkaXRpb25hbERhdGEgICAgICAgIE1vZGUgc3BlY2lmaWMu ICBTZWUgRUZJX0dFVF9QTEFURk9STV9IT09LX01PREUgZW51bS4NCi0NCi0gIEByZXR2YWwgRUZJ X1NVQ0NFU1MgICAgICAgICAgIFRoZSBvcGVyYXRpb24gcGVyZm9ybWVkIHN1Y2Nlc3NmdWxseS4g TW9kZSBzcGVjaWZpYy4NCi0gIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAgIE1vZGUgaXMg bm90IHN1cHBvcnRlZCBvbiB0aGUgcGxhdGZvcm0uDQotDQotKiovDQotdHlwZWRlZg0KLUVGSV9T VEFUVVMNCi0oRUZJQVBJICpFRklfTEVHQUNZX0JJT1NfUExBVEZPUk1fSE9PS1MpKA0KLSAgSU4g RUZJX0xFR0FDWV9CSU9TX1BMQVRGT1JNX1BST1RPQ09MICAgKlRoaXMsDQotICBJTiBFRklfR0VU X1BMQVRGT1JNX0hPT0tfTU9ERSAgICAgICAgICBNb2RlLA0KLSAgSU4gVUlOVDE2ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgVHlwZSwNCi0gIElOICBFRklfSEFORExFICAgICAgICAgICAg ICAgICAgICAgICAgIERldmljZUhhbmRsZSAgT1BUSU9OQUwsDQotICBJTiAgT1VUIFVJTlROICAg ICAgICAgICAgICAgICAgICAgICAgICAqU2hhZG93QWRkcmVzcyAgT1BUSU9OQUwsDQotICBJTiAg RUZJX0NPTVBBVElCSUxJVFkxNl9UQUJMRSAgICAgICAgICAqQ29tcGF0aWJpbGl0eTE2VGFibGUg IE9QVElPTkFMLA0KLSAgT1VUICBWT0lEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoq QWRkaXRpb25hbERhdGEgT1BUSU9OQUwNCi0gICk7DQotDQotLyoqDQotICBSZXR1cm5zIGluZm9y bWF0aW9uIGFzc29jaWF0ZWQgd2l0aCBQQ0kgSVJRIHJvdXRpbmcuDQotICBUaGlzIGZ1bmN0aW9u IHJldHVybnMgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggUENJIElS USByb3V0aW5nOg0KLSAgICAqIEFuIElSUSByb3V0aW5nIHRhYmxlIGFuZCBudW1iZXIgb2YgZW50 cmllcyBpbiB0aGUgdGFibGUuDQotICAgICogVGhlICRQSVIgdGFibGUgYW5kIGl0cyBzaXplLg0K LSAgICAqIEEgbGlzdCBvZiBQQ0kgSVJRcyBhbmQgdGhlIHByaW9yaXR5IG9yZGVyIHRvIGFzc2ln biB0aGVtLg0KLQ0KLSAgQHBhcmFtICBUaGlzICAgICAgICAgICAgICAgICAgICBUaGUgcHJvdG9j b2wgaW5zdGFuY2UgcG9pbnRlci4NCi0gIEBwYXJhbSAgUm91dGluZ1RhYmxlICAgICAgICAgICAg VGhlIHBvaW50ZXIgdG8gUENJIElSUSBSb3V0aW5nIHRhYmxlLg0KLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBUaGlzIGxvY2F0aW9uIGlzIHRoZSAkUElSIHRhYmxlIG1pbnVzIHRo ZSBoZWFkZXIuDQotICBAcGFyYW0gIFJvdXRpbmdUYWJsZUVudHJpZXMgICAgIFRoZSBudW1iZXIg b2YgZW50cmllcyBpbiB0YWJsZS4NCi0gIEBwYXJhbSAgTG9jYWxQaXJxVGFibGUgICAgICAgICAg JFBJUiB0YWJsZS4NCi0gIEBwYXJhbSAgUGlycVRhYmxlU2l6ZSAgICAgICAgICAgJFBJUiB0YWJs ZSBzaXplLg0KLSAgQHBhcmFtICBMb2NhbElycVByaW9yaXR5VGFibGUgICBBIGxpc3Qgb2YgaW50 ZXJydXB0cyBpbiBwcmlvcml0eSBvcmRlciB0byBhc3NpZ24uDQotICBAcGFyYW0gIElycVByaW9y aXR5VGFibGVFbnRyaWVzIFRoZSBudW1iZXIgb2YgZW50cmllcyBpbiB0aGUgcHJpb3JpdHkgdGFi bGUuDQotDQotICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBEYXRhIHdhcyBzdWNjZXNz ZnVsbHkgcmV0dXJuZWQuDQotDQotKiovDQotdHlwZWRlZg0KLUVGSV9TVEFUVVMNCi0oRUZJQVBJ ICpFRklfTEVHQUNZX0JJT1NfUExBVEZPUk1fR0VUX1JPVVRJTkdfVEFCTEUpKA0KLSAgSU4gRUZJ X0xFR0FDWV9CSU9TX1BMQVRGT1JNX1BST1RPQ09MICAgKlRoaXMsDQotICBPVVQgVk9JRCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAqKlJvdXRpbmdUYWJsZSwNCi0gIE9VVCBVSU5UTiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpSb3V0aW5nVGFibGVFbnRyaWVzLA0KLSAgT1VU IFZPSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKipMb2NhbFBpcnFUYWJsZSAgT1BU SU9OQUwsDQotICBPVVQgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqUGlycVRh YmxlU2l6ZSAgT1BUSU9OQUwsDQotICBPVVQgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAqKkxvY2FsSXJxUHJpb3JpdHlUYWJsZSAgT1BUSU9OQUwsDQotICBPVVQgVUlOVE4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAqSXJxUHJpb3JpdHlUYWJsZUVudHJpZXMgT1BUSU9O QUwNCi0gICk7DQotDQotLyoqDQotICBUcmFuc2xhdGVzIHRoZSBnaXZlbiBQSVJRIGFjY291bnRp bmcgZm9yIGJyaWRnZS4NCi0gIFRoaXMgZnVuY3Rpb24gdHJhbnNsYXRlcyB0aGUgZ2l2ZW4gUElS USBiYWNrIHRocm91Z2ggYWxsIGJ1c2VzLCBpZiByZXF1aXJlZCwNCi0gIGFuZCByZXR1cm5zIHRo ZSB0cnVlIFBJUlEgYW5kIGFzc29jaWF0ZWQgSVJRLg0KLQ0KLSAgQHBhcmFtICBUaGlzICAgICAg ICAgICAgICAgICAgVGhlIHByb3RvY29sIGluc3RhbmNlIHBvaW50ZXIuDQotICBAcGFyYW0gIFBj aUJ1cyAgICAgICAgICAgICAgICBUaGUgUENJIGJ1cyBudW1iZXIgZm9yIHRoaXMgZGV2aWNlLg0K LSAgQHBhcmFtICBQY2lEZXZpY2UgICAgICAgICAgICAgVGhlIFBDSSBkZXZpY2UgbnVtYmVyIGZv ciB0aGlzIGRldmljZS4NCi0gIEBwYXJhbSAgUGNpRnVuY3Rpb24gICAgICAgICAgIFRoZSBQQ0kg ZnVuY3Rpb24gbnVtYmVyIGZvciB0aGlzIGRldmljZS4NCi0gIEBwYXJhbSAgUGlycSAgICAgICAg ICAgICAgICAgIElucHV0IGlzIFBJUlEgcmVwb3J0ZWQgYnkgZGV2aWNlLCBhbmQgb3V0cHV0IGlz IHRydWUgUElSUS4NCi0gIEBwYXJhbSAgUGNpSXJxICAgICAgICAgICAgICAgIFRoZSBJUlEgYWxy ZWFkeSBhc3NpZ25lZCB0byB0aGUgUElSUSwgb3IgdGhlIElSUSB0byBiZQ0KLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYXNzaWduZWQgdG8gdGhlIFBJUlEuDQotDQotICBAcmV0dmFs IEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgUElSUSB3YXMgdHJhbnNsYXRlZC4NCi0NCi0qKi8N Ci10eXBlZGVmDQotRUZJX1NUQVRVUw0KLShFRklBUEkgKkVGSV9MRUdBQ1lfQklPU19QTEFURk9S TV9UUkFOU0xBVEVfUElSUSkoDQotICBJTiBFRklfTEVHQUNZX0JJT1NfUExBVEZPUk1fUFJPVE9D T0wgICAqVGhpcywNCi0gIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBj aUJ1cywNCi0gIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBjaURldmlj ZSwNCi0gIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBjaUZ1bmN0aW9u LA0KLSAgSU4gIE9VVCBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgKlBpcnEsDQotICBP VVQgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqUGNpSXJxDQotICApOw0KLQ0K LS8qKg0KLSAgQXR0ZW1wdCB0byBsZWdhY3kgYm9vdCB0aGUgQm9vdE9wdGlvbi4gSWYgdGhlIEVG SSBjb250ZXh0ZWQgaGFzIGJlZW4NCi0gIGNvbXByb21pc2VkIHRoaXMgZnVuY3Rpb24gd2lsbCBu b3QgcmV0dXJuLg0KLQ0KLSAgQHBhcmFtICBUaGlzICAgICAgICAgICAgICAgICAgIFRoZSBwcm90 b2NvbCBpbnN0YW5jZSBwb2ludGVyLg0KLSAgQHBhcmFtICBCYnNEZXZpY2VQYXRoICAgICAgICAg IFRoZSBFRkkgRGV2aWNlIFBhdGggZnJvbSBCb290WFhYWCB2YXJpYWJsZS4NCi0gIEBwYXJhbSAg QmJzVGFibGUgICAgICAgICAgICAgICBUaGUgSW50ZXJuYWwgQkJTIHRhYmxlLg0KLSAgQHBhcmFt ICBMb2FkT3B0aW9uU2l6ZSAgICAgICAgIFRoZSBzaXplIG9mIExvYWRPcHRpb24gaW4gc2l6ZS4N Ci0gIEBwYXJhbSAgTG9hZE9wdGlvbiAgICAgICAgICAgICBUaGUgTG9hZE9wdGlvbiBmcm9tIEJv b3RYWFhYIHZhcmlhYmxlDQotICBAcGFyYW0gIEVmaVRvTGVnYWN5MTZCb290VGFibGUgQSBwb2lu dGVyIHRvIEJvb3RUYWJsZSBzdHJ1Y3R1cmUNCi0NCi0gIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAg ICAgICAgIFJlYWR5IHRvIGJvb3QuDQotDQotKiovDQotdHlwZWRlZg0KLUVGSV9TVEFUVVMNCi0o RUZJQVBJICpFRklfTEVHQUNZX0JJT1NfUExBVEZPUk1fUFJFUEFSRV9UT19CT09UKSgNCi0gIElO IEVGSV9MRUdBQ1lfQklPU19QTEFURk9STV9QUk9UT0NPTCAgICpUaGlzLA0KLSAgSU4gIEJCU19C QlNfREVWSUNFX1BBVEggICAgICAgICAgICAgICAgKkJic0RldmljZVBhdGgsDQotICBJTiAgVk9J RCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqQmJzVGFibGUsDQotICBJTiAgVUlOVDMy ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2FkT3B0aW9uc1NpemUsDQotICBJTiAgVk9J RCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqTG9hZE9wdGlvbnMsDQotICBJTiAgVk9J RCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqRWZpVG9MZWdhY3kxNkJvb3RUYWJsZQ0K LSAgKTsNCi0NCi0vKioNCi0gIFRoaXMgcHJvdG9jb2wgYWJzdHJhY3RzIHRoZSBwbGF0Zm9ybSBw b3J0aW9uIG9mIHRoZSB0cmFkaXRpb25hbCBCSU9TLg0KLSoqLw0KLXN0cnVjdCBfRUZJX0xFR0FD WV9CSU9TX1BMQVRGT1JNX1BST1RPQ09MIHsNCi0gIC8vLw0KLSAgLy8vICBHZXRzIGJpbmFyeSBk YXRhIG9yIG90aGVyIHBsYXRmb3JtIGluZm9ybWF0aW9uLg0KLSAgLy8vDQotICBFRklfTEVHQUNZ X0JJT1NfUExBVEZPUk1fR0VUX1BMQVRGT1JNX0lORk8gICAgICBHZXRQbGF0Zm9ybUluZm87DQot ICAvLy8NCi0gIC8vLyAgUmV0dXJucyBhIGJ1ZmZlciBvZiBhbGwgaGFuZGxlcyBtYXRjaGluZyB0 aGUgcmVxdWVzdGVkIHN1YmZ1bmN0aW9uLg0KLSAgLy8vDQotICBFRklfTEVHQUNZX0JJT1NfUExB VEZPUk1fR0VUX1BMQVRGT1JNX0hBTkRMRSAgICBHZXRQbGF0Zm9ybUhhbmRsZTsNCi0gIC8vLw0K LSAgLy8vICBMb2FkcyBhbmQgaW5pdGlhbGl6ZXMgdGhlIHRyYWRpdGlvbmFsIEJJT1MgU01NIGhh bmRsZXIuDQotICBFRklfTEVHQUNZX0JJT1NfUExBVEZPUk1fU01NX0lOSVQgICAgICAgICAgICAg ICBTbW1Jbml0Ow0KLSAgLy8vDQotICAvLy8gIEFsbG93cyBwbGF0Zm9ybSB0byBwZXJmb3JtIGFu eSByZXF1aXJlZCBhY3Rpb25zIGFmdGVyIGEgTGVnYWN5QmlvcyBvcGVyYXRpb24uDQotICAvLy8N Ci0gIEVGSV9MRUdBQ1lfQklPU19QTEFURk9STV9IT09LUyAgICAgICAgICAgICAgICAgIFBsYXRm b3JtSG9va3M7DQotICAvLy8NCi0gIC8vLyAgR2V0cyAkUElSIHRhYmxlLg0KLSAgRUZJX0xFR0FD WV9CSU9TX1BMQVRGT1JNX0dFVF9ST1VUSU5HX1RBQkxFICAgICAgR2V0Um91dGluZ1RhYmxlOw0K LSAgLy8vDQotICAvLy8gIFRyYW5zbGF0ZXMgdGhlIGdpdmVuIFBJUlEgdG8gdGhlIGZpbmFsIHZh bHVlIGFmdGVyIHRyYXZlcnNpbmcgYW55IFBDSSBicmlkZ2VzLg0KLSAgLy8vDQotICBFRklfTEVH QUNZX0JJT1NfUExBVEZPUk1fVFJBTlNMQVRFX1BJUlEgICAgICAgICBUcmFuc2xhdGVQaXJxOw0K LSAgLy8vDQotICAvLy8gIEZpbmFsIHBsYXRmb3JtIGZ1bmN0aW9uIGJlZm9yZSB0aGUgc3lzdGVt IGF0dGVtcHRzIHRvIGJvb3QgdG8gYSB0cmFkaXRpb25hbCBPUy4NCi0gIC8vLw0KLSAgRUZJX0xF R0FDWV9CSU9TX1BMQVRGT1JNX1BSRVBBUkVfVE9fQk9PVCAgICAgICAgUHJlcGFyZVRvQm9vdDsN Ci19Ow0KLQ0KLWV4dGVybiBFRklfR1VJRCAgZ0VmaUxlZ2FjeUJpb3NQbGF0Zm9ybVByb3RvY29s R3VpZDsNCi0NCi0jZW5kaWYNCgoNCgotPS09LT0tPS09LT0tPS09LT0tPS09LQpHcm91cHMuaW8g TGlua3M6IFlvdSByZWNlaXZlIGFsbCBtZXNzYWdlcyBzZW50IHRvIHRoaXMgZ3JvdXAuClZpZXcv UmVwbHkgT25saW5lICgjMTExMDk0KTogaHR0cHM6Ly9lZGsyLmdyb3Vwcy5pby9nL2RldmVsL21l c3NhZ2UvMTExMDk0Ck11dGUgVGhpcyBUb3BpYzogaHR0cHM6Ly9ncm91cHMuaW8vbXQvMTAyNTE4 NjYzLzc2ODYxNzYKR3JvdXAgT3duZXI6IGRldmVsK293bmVyQGVkazIuZ3JvdXBzLmlvClVuc3Vi c2NyaWJlOiBodHRwczovL2VkazIuZ3JvdXBzLmlvL2cvZGV2ZWwvbGVhdmUvMTIzNjcxMTEvNzY4 NjE3Ni8xOTEzNDU2MjEyL3h5enp5IFtyZWJlY2NhQG9wZW5mdy5pb10KLT0tPS09LT0tPS09LT0t PS09LT0tPS0KCg0K