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 CE671AC1CA3 for ; Fri, 10 Nov 2023 23:59:39 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=IgvPkiib1jgIpDHFL8/CfvolD7uKR0q/DtnHQXZOCkA=; 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=1699660778; v=1; b=NTn7/tulVnghRGGYona28eO7k2PuJOfmbdMzZ9g9jqCAqH+MeqLQpuKmHsvLflouhwbv2msx P4op1E8z4z3YnotFNVEL3+PMit7e+ADdpBsZDrwy03PI5gkwuPTg6vI050VS4YQLBnru4vh6yk4 JX4aP2lYyHN2bVYc0ZbQMhJc= X-Received: by 127.0.0.2 with SMTP id pfq4YY7687511xtzlTEZ8ofZ; Fri, 10 Nov 2023 15:59:38 -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.42848.1699660776415442641 for ; Fri, 10 Nov 2023 15:59:36 -0800 X-Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-381-8OHXAzaqOui5EVGVVTjofQ-1; Fri, 10 Nov 2023 18:59:34 -0500 X-MC-Unique: 8OHXAzaqOui5EVGVVTjofQ-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 CAB9F8007B3; Fri, 10 Nov 2023 23:59:33 +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 EEBCDC1596F; Fri, 10 Nov 2023 23:59:32 +0000 (UTC) From: "Laszlo Ersek" To: devel@edk2.groups.io Cc: Ard Biesheuvel , Gerd Hoffmann , Jiewen Yao Subject: [edk2-devel] [PATCH 25/37] OvmfPkg: remove gEfiLegacyBiosProtocolGuid Date: Sat, 11 Nov 2023 00:58:08 +0100 Message-Id: <20231110235820.644381-26-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: zQa6cipntzKqfT974EC4Yds0x7686176AA= 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="NTn7/tul"; 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 QXQgdGhpcyBwb2ludCwgZ0VmaUxlZ2FjeUJpb3NQcm90b2NvbEd1aWQgaXMgdW51c2VkOyByZW1v dmUgaXQuCgpUaGlzIHNocmlua3MgdGhlIGxpc3Qgb2YgcmVzb3VyY2VzIHNjaGVkdWxlZCBmb3Ig cmVtb3ZhbCB0bzoKCi0gR1VJRHMgKHByb3RvY29scyBvciBvdGhlcndpc2UpOgogIC0gU1lTVEVN X1JPTV9GSUxFX0dVSUQgKDE1NDdCNEYzLTNFOEEtNEZFRi04MUM4LTMyOEVENjQ3QUIxQSkKICAt IGdFZmlMZWdhY3k4MjU5UHJvdG9jb2xHdWlkCiAgLSBnRWZpTGVnYWN5SW50ZXJydXB0UHJvdG9j b2xHdWlkCgotIGhlYWRlcnM6CiAgLSBGcmFtZXdvcmtEeGUuaAogIC0gUHJvdG9jb2wvTGVnYWN5 ODI1OS5oCiAgLSBQcm90b2NvbC9MZWdhY3lJbnRlcnJ1cHQuaAoKQ2M6IEFyZCBCaWVzaGV1dmVs IDxhcmRiK3RpYW5vY29yZUBrZXJuZWwub3JnPgpDYzogR2VyZCBIb2ZmbWFubiA8a3JheGVsQHJl ZGhhdC5jb20+CkNjOiBKaWV3ZW4gWWFvIDxqaWV3ZW4ueWFvQGludGVsLmNvbT4KUmVmOiBodHRw czovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dpP2lkPTQ1ODgKU2lnbmVkLW9m Zi1ieTogTGFzemxvIEVyc2VrIDxsZXJzZWtAcmVkaGF0LmNvbT4KLS0tCiBPdm1mUGtnL092bWZQ a2cuZGVjICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgLQogT3ZtZlBrZy9Dc20vSW5jbHVk ZS9Qcm90b2NvbC9MZWdhY3lCaW9zLmggfCAxNTUxIC0tLS0tLS0tLS0tLS0tLS0tLS0tCiAyIGZp bGVzIGNoYW5nZWQsIDE1NTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvT3ZtZlBrZy9Pdm1m UGtnLmRlYyBiL092bWZQa2cvT3ZtZlBrZy5kZWMKaW5kZXggZDI1NzAwN2MyMzZhLi45YzJlODRj YTYwNjAgMTAwNjQ0Ci0tLSBhL092bWZQa2cvT3ZtZlBrZy5kZWMKKysrIGIvT3ZtZlBrZy9Pdm1m UGtnLmRlYwpAQCAtMTgzLDcgKzE4Myw2IEBAIFtQcm90b2NvbHNdCiAgIGdYZW5Jb1Byb3RvY29s R3VpZCAgICAgICAgICAgICAgICAgICAgPSB7MHg2ZWZhYzg0ZiwgMHgwYWIwLCAweDQ3NDcsIHsw eDgxLCAweGJlLCAweDg1LCAweDU1LCAweDYyLCAweDU5LCAweDA0LCAweDQ5fX0NCiAgIGdJb01t dUFic2VudFByb3RvY29sR3VpZCAgICAgICAgICAgICAgPSB7MHhmODc3NWQ1MCwgMHg4YWJkLCAw eDRhZGYsIHsweDkyLCAweGFjLCAweDg1LCAweDNlLCAweDUxLCAweGY2LCAweGM4LCAweGRjfX0N CiAgIGdFZmlMZWdhY3k4MjU5UHJvdG9jb2xHdWlkICAgICAgICAgICAgPSB7MHgzODMyMWRiYSwg MHg0ZmUwLCAweDRlMTcsIHsweDhhLCAweGVjLCAweDQxLCAweDMwLCAweDU1LCAweGVhLCAweGVk LCAweGMxfX0NCi0gIGdFZmlMZWdhY3lCaW9zUHJvdG9jb2xHdWlkICAgICAgICAgICAgPSB7MHhk YjlhMWUzZCwgMHg0NWNiLCAweDRhYmIsIHsweDg1LCAweDNiLCAweGU1LCAweDM4LCAweDdmLCAw eGRiLCAweDJlLCAweDJkfX0NCiAgIGdFZmlMZWdhY3lJbnRlcnJ1cHRQcm90b2NvbEd1aWQgICAg ICAgPSB7MHgzMWNlNTkzZCwgMHgxMDhhLCAweDQ4NWQsIHsweGFkLCAweGIyLCAweDc4LCAweGYy LCAweDFmLCAweDI5LCAweDY2LCAweGJlfX0NCiAgIGdPdm1mTG9hZGVkWDg2TGludXhLZXJuZWxQ cm90b2NvbEd1aWQgPSB7MHhhM2VkYzA1ZCwgMHhiNjE4LCAweDRmZjYsIHsweDk1LCAweDUyLCAw eDc2LCAweGQ3LCAweDg4LCAweDYzLCAweDQzLCAweGM4fX0NCiAgIGdPdm1mU2V2TWVtb3J5QWNj ZXB0YW5jZVByb3RvY29sR3VpZCAgPSB7MHhjNWEwMTBmZSwgMHgzOGE3LCAweDQ1MzEsIHsweDhh LCAweDRhLCAweDA1LCAweDAwLCAweGQyLCAweGZkLCAweDE2LCAweDQ5fX0NCmRpZmYgLS1naXQg YS9Pdm1mUGtnL0NzbS9JbmNsdWRlL1Byb3RvY29sL0xlZ2FjeUJpb3MuaCBiL092bWZQa2cvQ3Nt L0luY2x1ZGUvUHJvdG9jb2wvTGVnYWN5Qmlvcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCBiOWEyMjVhODc0OGUuLjAwMDAwMDAwMDAwMAotLS0gYS9Pdm1mUGtnL0NzbS9JbmNsdWRl L1Byb3RvY29sL0xlZ2FjeUJpb3MuaAorKysgL2Rldi9udWxsCkBAIC0xLDE1NTEgKzAsMCBAQAot LyoqIEBmaWxlDQotICBUaGUgRUZJIExlZ2FjeSBCSU9TIFByb3RvY29sIGlzIHVzZWQgdG8gYWJz dHJhY3QgbGVnYWN5IE9wdGlvbiBST00gdXNhZ2UNCi0gIHVuZGVyIEVGSSBhbmQgTGVnYWN5IE9T IGJvb3QuICBUaGlzIGZpbGUgYWxzbyBpbmNsdWRlcyBhbGwgdGhlIHJlbGF0ZWQNCi0gIENPTVBB VElCSUxJVFkxNiBzdHJ1Y3R1cmVzIGFuZCBkZWZpbml0aW9ucy4NCi0NCi0gIE5vdGU6IFRoZSBu YW1lcyBmb3IgRUZJX0lBMzJfUkVHSVNURVJfU0VUIGVsZW1lbnRzIHdlcmUgcGlja2VkIHRvIGZv bGxvdw0KLSAgd2VsbCBrbm93biBuYW1pbmcgY29udmVudGlvbnMuDQotDQotICBUaHVuayBpcyB0 aGUgY29kZSB0aGF0IHN3aXRjaGVzIGZyb20gMzItYml0IHByb3RlY3RlZCBlbnZpcm9ubWVudCBp bnRvIHRoZSAxNi1iaXQgcmVhbC1tb2RlDQotICBlbnZpcm9ubWVudC4gUmV2ZXJzZSB0aHVuayBp cyB0aGUgY29kZSB0aGF0IGRvZXMgdGhlIG9wcG9zaXRlLg0KLQ0KLUNvcHlyaWdodCAoYykgMjAw NyAtIDIwMTgsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCi1T UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KLQ0KLSAgQHBhciBS ZXZpc2lvbiBSZWZlcmVuY2U6DQotICBUaGlzIHByb3RvY29sIGlzIGRlZmluZWQgaW4gRnJhbWV3 b3JrIGZvciBFRkkgQ29tcGF0aWJpbGl0eSBTdXBwb3J0IE1vZHVsZSBzcGVjDQotICBWZXJzaW9u IDAuOTguDQotDQotKiovDQotDQotI2lmbmRlZiBfRUZJX0xFR0FDWV9CSU9TX0hfDQotI2RlZmlu ZSBfRUZJX0xFR0FDWV9CSU9TX0hfDQotDQotLy8vDQotLy8vDQotLy8vDQotI3ByYWdtYSBwYWNr KDEpDQotDQotdHlwZWRlZiBVSU5UOCAgU0VSSUFMX01PREU7DQotdHlwZWRlZiBVSU5UOCAgUEFS QUxMRUxfTU9ERTsNCi0NCi0jZGVmaW5lIEVGSV9DT01QQVRJQklMSVRZMTZfVEFCTEVfU0lHTkFU VVJFICBTSUdOQVRVUkVfMzIgKCdJJywgJ0YnLCAnRScsICckJykNCi0NCi0vLy8NCi0vLy8gVGhl cmUgaXMgYSB0YWJsZSBsb2NhdGVkIHdpdGhpbiB0aGUgdHJhZGl0aW9uYWwgQklPUyBpbiBlaXRo ZXIgdGhlIDB4RjAwMDp4eHh4IG9yIDB4RTAwMDp4eHh4DQotLy8vIHBoeXNpY2FsIGFkZHJlc3Mg cmFuZ2UuIEl0IGlzIGxvY2F0ZWQgb24gYSAxNi1ieXRlIGJvdW5kYXJ5IGFuZCBwcm92aWRlcyB0 aGUgcGh5c2ljYWwgYWRkcmVzcyBvZiB0aGUNCi0vLy8gZW50cnkgcG9pbnQgZm9yIHRoZSBDb21w YXRpYmlsaXR5MTYgZnVuY3Rpb25zLiBUaGVzZSBmdW5jdGlvbnMgcHJvdmlkZSB0aGUgcGxhdGZv cm0tc3BlY2lmaWMNCi0vLy8gaW5mb3JtYXRpb24gdGhhdCBpcyByZXF1aXJlZCBieSB0aGUgZ2Vu ZXJpYyBFZmlDb21wYXRpYmlsaXR5IGNvZGUuIFRoZSBmdW5jdGlvbnMgYXJlIGludm9rZWQgdmlh DQotLy8vIHRodW5raW5nIGJ5IHVzaW5nIEVGSV9MRUdBQ1lfQklPU19QUk9UT0NPTC5GYXJDYWxs ODYoKSB3aXRoIHRoZSAzMi1iaXQgcGh5c2ljYWwNCi0vLy8gZW50cnkgcG9pbnQuDQotLy8vDQot dHlwZWRlZiBzdHJ1Y3Qgew0KLSAgLy8vDQotICAvLy8gVGhlIHN0cmluZyAiJEVGSSIgZGVub3Rl cyB0aGUgc3RhcnQgb2YgdGhlIEVmaUNvbXBhdGliaWxpdHkgdGFibGUuIEJ5dGUgMCBpcyAiSSwi IGJ5dGUNCi0gIC8vLyAxIGlzICJGLCIgYnl0ZSAyIGlzICJFLCIgYW5kIGJ5dGUgMyBpcyAiJCIg YW5kIGlzIG5vcm1hbGx5IGFjY2Vzc2VkIGFzIGEgRFdPUkQgb3IgVUlOVDMyLg0KLSAgLy8vDQot ICBVSU5UMzIgICAgU2lnbmF0dXJlOw0KLQ0KLSAgLy8vDQotICAvLy8gVGhlIHZhbHVlIHJlcXVp cmVkIHN1Y2ggdGhhdCBieXRlIGNoZWNrc3VtIG9mIFRhYmxlTGVuZ3RoIGVxdWFscyB6ZXJvLg0K LSAgLy8vDQotICBVSU5UOCAgICAgVGFibGVDaGVja3N1bTsNCi0NCi0gIC8vLw0KLSAgLy8vIFRo ZSBsZW5ndGggb2YgdGhpcyB0YWJsZS4NCi0gIC8vLw0KLSAgVUlOVDggICAgIFRhYmxlTGVuZ3Ro Ow0KLQ0KLSAgLy8vDQotICAvLy8gVGhlIG1ham9yIEVGSSByZXZpc2lvbiBmb3Igd2hpY2ggdGhp cyB0YWJsZSB3YXMgZ2VuZXJhdGVkLg0KLSAgLy8vDQotICBVSU5UOCAgICAgRWZpTWFqb3JSZXZp c2lvbjsNCi0NCi0gIC8vLw0KLSAgLy8vIFRoZSBtaW5vciBFRkkgcmV2aXNpb24gZm9yIHdoaWNo IHRoaXMgdGFibGUgd2FzIGdlbmVyYXRlZC4NCi0gIC8vLw0KLSAgVUlOVDggICAgIEVmaU1pbm9y UmV2aXNpb247DQotDQotICAvLy8NCi0gIC8vLyBUaGUgbWFqb3IgcmV2aXNpb24gb2YgdGhpcyB0 YWJsZS4NCi0gIC8vLw0KLSAgVUlOVDggICAgIFRhYmxlTWFqb3JSZXZpc2lvbjsNCi0NCi0gIC8v Lw0KLSAgLy8vIFRoZSBtaW5vciByZXZpc2lvbiBvZiB0aGlzIHRhYmxlLg0KLSAgLy8vDQotICBV SU5UOCAgICAgVGFibGVNaW5vclJldmlzaW9uOw0KLQ0KLSAgLy8vDQotICAvLy8gUmVzZXJ2ZWQg Zm9yIGZ1dHVyZSB1c2FnZS4NCi0gIC8vLw0KLSAgVUlOVDE2ICAgIFJlc2VydmVkOw0KLQ0KLSAg Ly8vDQotICAvLy8gVGhlIHNlZ21lbnQgb2YgdGhlIGVudHJ5IHBvaW50IHdpdGhpbiB0aGUgdHJh ZGl0aW9uYWwgQklPUyBmb3IgQ29tcGF0aWJpbGl0eTE2IGZ1bmN0aW9ucy4NCi0gIC8vLw0KLSAg VUlOVDE2ICAgIENvbXBhdGliaWxpdHkxNkNhbGxTZWdtZW50Ow0KLQ0KLSAgLy8vDQotICAvLy8g VGhlIG9mZnNldCBvZiB0aGUgZW50cnkgcG9pbnQgd2l0aGluIHRoZSB0cmFkaXRpb25hbCBCSU9T IGZvciBDb21wYXRpYmlsaXR5MTYgZnVuY3Rpb25zLg0KLSAgLy8vDQotICBVSU5UMTYgICAgQ29t cGF0aWJpbGl0eTE2Q2FsbE9mZnNldDsNCi0NCi0gIC8vLw0KLSAgLy8vIFRoZSBzZWdtZW50IG9m IHRoZSBlbnRyeSBwb2ludCB3aXRoaW4gdGhlIHRyYWRpdGlvbmFsIEJJT1MgZm9yIEVmaUNvbXBh dGliaWxpdHkNCi0gIC8vLyB0byBpbnZva2UgdGhlIFBuUCBpbnN0YWxsYXRpb24gY2hlY2suDQot ICAvLy8NCi0gIFVJTlQxNiAgICBQblBJbnN0YWxsYXRpb25DaGVja1NlZ21lbnQ7DQotDQotICAv Ly8NCi0gIC8vLyBUaGUgT2Zmc2V0IG9mIHRoZSBlbnRyeSBwb2ludCB3aXRoaW4gdGhlIHRyYWRp dGlvbmFsIEJJT1MgZm9yIEVmaUNvbXBhdGliaWxpdHkNCi0gIC8vLyB0byBpbnZva2UgdGhlIFBu UCBpbnN0YWxsYXRpb24gY2hlY2suDQotICAvLy8NCi0gIFVJTlQxNiAgICBQblBJbnN0YWxsYXRp b25DaGVja09mZnNldDsNCi0NCi0gIC8vLw0KLSAgLy8vIEVGSSBzeXN0ZW0gcmVzb3VyY2VzIHRh YmxlLiBUeXBlIEVGSV9TWVNURU1fVEFCTEUgaXMgZGVmaW5lZCBpbiB0aGUgSW50ZWxQbGF0Zm9y bQ0KLSAgLy8vIElubm92YXRpb24gRnJhbWV3b3JrIGZvciBFRkkgRHJpdmVyIEV4ZWN1dGlvbiBF bnZpcm9ubWVudCBDb3JlIEludGVyZmFjZSBTcGVjaWZpY2F0aW9uIChEWEUgQ0lTKS4NCi0gIC8v Lw0KLSAgVUlOVDMyICAgIEVmaVN5c3RlbVRhYmxlOw0KLQ0KLSAgLy8vDQotICAvLy8gVGhlIGFk ZHJlc3Mgb2YgYW4gT0VNLXByb3ZpZGVkIGlkZW50aWZpZXIgc3RyaW5nLiBUaGUgc3RyaW5nIGlz IG51bGwgdGVybWluYXRlZC4NCi0gIC8vLw0KLSAgVUlOVDMyICAgIE9lbUlkU3RyaW5nUG9pbnRl cjsNCi0NCi0gIC8vLw0KLSAgLy8vIFRoZSAzMi1iaXQgcGh5c2ljYWwgYWRkcmVzcyB3aGVyZSBB Q1BJIFJTRCBQVFIgaXMgc3RvcmVkIHdpdGhpbiB0aGUgdHJhZGl0aW9uYWwNCi0gIC8vLyBCSU9T LiBUaGUgcmVtYWluZWQgb2YgdGhlIEFDUEkgdGFibGVzIGFyZSBsb2NhdGVkIGF0IHRoZWlyIEVG SSBhZGRyZXNzZXMuIFRoZSBzaXplDQotICAvLy8gcmVzZXJ2ZWQgaXMgdGhlIG1heGltdW0gZm9y IEFDUEkgMi4wLiBUaGUgRWZpQ29tcGF0aWJpbGl0eSB3aWxsIGZpbGwgaW4gdGhlIEFDUEkNCi0g IC8vLyBSU0QgUFRSIHdpdGggZWl0aGVyIHRoZSBBQ1BJIDEuMGIgb3IgMi4wIHZhbHVlcy4NCi0g IC8vLw0KLSAgVUlOVDMyICAgIEFjcGlSc2RQdHJQb2ludGVyOw0KLQ0KLSAgLy8vDQotICAvLy8g VGhlIE9FTSByZXZpc2lvbiBudW1iZXIuIFVzYWdlIGlzIHVuZGVmaW5lZCBidXQgcHJvdmlkZWQg Zm9yIE9FTSBtb2R1bGUgdXNhZ2UuDQotICAvLy8NCi0gIFVJTlQxNiAgICBPZW1SZXZpc2lvbjsN Ci0NCi0gIC8vLw0KLSAgLy8vIFRoZSAzMi1iaXQgcGh5c2ljYWwgYWRkcmVzcyB3aGVyZSBJTlQx NSBFODIwIGRhdGEgaXMgc3RvcmVkIHdpdGhpbiB0aGUgdHJhZGl0aW9uYWwNCi0gIC8vLyBCSU9T LiBUaGUgRWZpQ29tcGF0aWJpbGl0eSBjb2RlIHdpbGwgZmlsbCBpbiB0aGUgRTgyMFBvaW50ZXIg dmFsdWUgYW5kIGNvcHkgdGhlDQotICAvLy8gZGF0YSB0byB0aGUgaW5kaWNhdGVkIGFyZWEuDQot ICAvLy8NCi0gIFVJTlQzMiAgICBFODIwUG9pbnRlcjsNCi0NCi0gIC8vLw0KLSAgLy8vIFRoZSBs ZW5ndGggb2YgdGhlIEU4MjAgZGF0YSBhbmQgaXMgZmlsbGVkIGluIGJ5IHRoZSBFZmlDb21wYXRp YmlsaXR5IGNvZGUuDQotICAvLy8NCi0gIFVJTlQzMiAgICBFODIwTGVuZ3RoOw0KLQ0KLSAgLy8v DQotICAvLy8gVGhlIDMyLWJpdCBwaHlzaWNhbCBhZGRyZXNzIHdoZXJlIHRoZSAkUElSIHRhYmxl IGlzIHN0b3JlZCBpbiB0aGUgdHJhZGl0aW9uYWwgQklPUy4NCi0gIC8vLyBUaGUgRWZpQ29tcGF0 aWJpbGl0eSBjb2RlIHdpbGwgZmlsbCBpbiB0aGUgSXJxUm91dGluZ1RhYmxlUG9pbnRlciB2YWx1 ZSBhbmQNCi0gIC8vLyBjb3B5IHRoZSBkYXRhIHRvIHRoZSBpbmRpY2F0ZWQgYXJlYS4NCi0gIC8v Lw0KLSAgVUlOVDMyICAgIElycVJvdXRpbmdUYWJsZVBvaW50ZXI7DQotDQotICAvLy8NCi0gIC8v LyBUaGUgbGVuZ3RoIG9mIHRoZSAkUElSIHRhYmxlIGFuZCBpcyBmaWxsZWQgaW4gYnkgdGhlIEVm aUNvbXBhdGliaWxpdHkgY29kZS4NCi0gIC8vLw0KLSAgVUlOVDMyICAgIElycVJvdXRpbmdUYWJs ZUxlbmd0aDsNCi0NCi0gIC8vLw0KLSAgLy8vIFRoZSAzMi1iaXQgcGh5c2ljYWwgYWRkcmVzcyB3 aGVyZSB0aGUgTVAgdGFibGUgaXMgc3RvcmVkIGluIHRoZSB0cmFkaXRpb25hbCBCSU9TLg0KLSAg Ly8vIFRoZSBFZmlDb21wYXRpYmlsaXR5IGNvZGUgd2lsbCBmaWxsIGluIHRoZSBNcFRhYmxlUHRy IHZhbHVlIGFuZCBjb3B5IHRoZSBkYXRhDQotICAvLy8gdG8gdGhlIGluZGljYXRlZCBhcmVhLg0K LSAgLy8vDQotICBVSU5UMzIgICAgTXBUYWJsZVB0cjsNCi0NCi0gIC8vLw0KLSAgLy8vIFRoZSBs ZW5ndGggb2YgdGhlIE1QIHRhYmxlIGFuZCBpcyBmaWxsZWQgaW4gYnkgdGhlIEVmaUNvbXBhdGli aWxpdHkgY29kZS4NCi0gIC8vLw0KLSAgVUlOVDMyICAgIE1wVGFibGVMZW5ndGg7DQotDQotICAv Ly8NCi0gIC8vLyBUaGUgc2VnbWVudCBvZiB0aGUgT0VNLXNwZWNpZmljIElOVCB0YWJsZS9jb2Rl Lg0KLSAgLy8vDQotICBVSU5UMTYgICAgT2VtSW50U2VnbWVudDsNCi0NCi0gIC8vLw0KLSAgLy8v IFRoZSBvZmZzZXQgb2YgdGhlIE9FTS1zcGVjaWZpYyBJTlQgdGFibGUvY29kZS4NCi0gIC8vLw0K LSAgVUlOVDE2ICAgIE9lbUludE9mZnNldDsNCi0NCi0gIC8vLw0KLSAgLy8vIFRoZSBzZWdtZW50 IG9mIHRoZSBPRU0tc3BlY2lmaWMgMzItYml0IHRhYmxlL2NvZGUuDQotICAvLy8NCi0gIFVJTlQx NiAgICBPZW0zMlNlZ21lbnQ7DQotDQotICAvLy8NCi0gIC8vLyBUaGUgb2Zmc2V0IG9mIHRoZSBP RU0tc3BlY2lmaWMgMzItYml0IHRhYmxlL2NvZGUuDQotICAvLy8NCi0gIFVJTlQxNiAgICBPZW0z Mk9mZnNldDsNCi0NCi0gIC8vLw0KLSAgLy8vIFRoZSBzZWdtZW50IG9mIHRoZSBPRU0tc3BlY2lm aWMgMTYtYml0IHRhYmxlL2NvZGUuDQotICAvLy8NCi0gIFVJTlQxNiAgICBPZW0xNlNlZ21lbnQ7 DQotDQotICAvLy8NCi0gIC8vLyBUaGUgb2Zmc2V0IG9mIHRoZSBPRU0tc3BlY2lmaWMgMTYtYml0 IHRhYmxlL2NvZGUuDQotICAvLy8NCi0gIFVJTlQxNiAgICBPZW0xNk9mZnNldDsNCi0NCi0gIC8v Lw0KLSAgLy8vIFRoZSBzZWdtZW50IG9mIHRoZSBUUE0gYmluYXJ5IHBhc3NlZCB0byAxNi1iaXQg Q1NNLg0KLSAgLy8vDQotICBVSU5UMTYgICAgVHBtU2VnbWVudDsNCi0NCi0gIC8vLw0KLSAgLy8v IFRoZSBvZmZzZXQgb2YgdGhlIFRQTSBiaW5hcnkgcGFzc2VkIHRvIDE2LWJpdCBDU00uDQotICAv Ly8NCi0gIFVJTlQxNiAgICBUcG1PZmZzZXQ7DQotDQotICAvLy8NCi0gIC8vLyBBIHBvaW50ZXIg dG8gYSBzdHJpbmcgaWRlbnRpZnlpbmcgdGhlIGluZGVwZW5kZW50IEJJT1MgdmVuZG9yLg0KLSAg Ly8vDQotICBVSU5UMzIgICAgSWJ2UG9pbnRlcjsNCi0NCi0gIC8vLw0KLSAgLy8vIFRoaXMgZmll bGQgaXMgTlVMTCBmb3IgYWxsIHN5c3RlbXMgbm90IHN1cHBvcnRpbmcgUENJIEV4cHJlc3MuIFRo aXMgZmllbGQgaXMgdGhlIGJhc2UNCi0gIC8vLyB2YWx1ZSBvZiB0aGUgc3RhcnQgb2YgdGhlIFBD SSBFeHByZXNzIG1lbW9yeS1tYXBwZWQgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgYW5kDQotICAv Ly8gbXVzdCBiZSBmaWxsZWQgaW4gcHJpb3IgdG8gRWZpQ29tcGF0aWJpbGl0eSBjb2RlIGlzc3Vp bmcgdGhlIENvbXBhdGliaWxpdHkxNiBmdW5jdGlvbg0KLSAgLy8vIENvbXBhdGliaWxpdHkxNklu aXRpYWxpemVZb3Vyc2VsZigpLg0KLSAgLy8vIENvbXBhdGliaWxpdHkxNkluaXRpYWxpemVZb3Vy c2VsZigpIGlzIGRlZmluZWQgaW4gQ29tcGF0aWJpbGl0eTE2DQotICAvLy8gRnVuY3Rpb25zLg0K LSAgLy8vDQotICBVSU5UMzIgICAgUGNpRXhwcmVzc0Jhc2U7DQotDQotICAvLy8NCi0gIC8vLyBN YXhpbXVtIFBDSSBidXMgbnVtYmVyIGFzc2lnbmVkLg0KLSAgLy8vDQotICBVSU5UOCAgICAgTGFz dFBjaUJ1czsNCi0NCi0gIC8vLw0KLSAgLy8vIFN0YXJ0IEFkZHJlc3Mgb2YgVXBwZXIgTWVtb3J5 IEFyZWEgKFVNQSkgdG8gYmUgc2V0IGFzIFJlYWQvV3JpdGUuIElmDQotICAvLy8gVW1hQWRkcmVz cyBpcyBhIHZhbGlkIGFkZHJlc3MgaW4gdGhlIHNoYWRvdyBSQU0sIGl0IGFsc28gaW5kaWNhdGVz IHRoYXQgdGhlIHJlZ2lvbg0KLSAgLy8vIGZyb20gMHhDMDAwMCB0byAoVW1hQWRkcmVzcyAtIDEp IGNhbiBiZSB1c2VkIGZvciBPcHRpb24gUk9NLg0KLSAgLy8vDQotICBVSU5UMzIgICAgVW1hQWRk cmVzczsNCi0NCi0gIC8vLw0KLSAgLy8vIFVwcGVyIE1lbW9yeSBBcmVhIHNpemUgaW4gYnl0ZXMg dG8gYmUgc2V0IGFzIFJlYWQvV3JpdGUuIElmIHplcm8sIG5vIFVNQSByZWdpb24NCi0gIC8vLyB3 aWxsIGJlIHNldCBhcyBSZWFkL1dyaXRlIChpLmUuIGFsbCBTaGFkb3cgUkFNIGlzIHNldCBhcyBS ZWFkLU9ubHkpLg0KLSAgLy8vDQotICBVSU5UMzIgICAgVW1hU2l6ZTsNCi0NCi0gIC8vLw0KLSAg Ly8vIFN0YXJ0IEFkZHJlc3Mgb2YgaGlnaCBtZW1vcnkgdGhhdCBjYW4gYmUgdXNlZCBmb3IgcGVy bWFuZW50IGFsbG9jYXRpb24uIElmIHplcm8sDQotICAvLy8gaGlnaCBtZW1vcnkgaXMgbm90IGF2 YWlsYWJsZSBmb3IgcGVybWFuZW50IGFsbG9jYXRpb24uDQotICAvLy8NCi0gIFVJTlQzMiAgICBI aVBlcm1hbmVudE1lbW9yeUFkZHJlc3M7DQotDQotICAvLy8NCi0gIC8vLyBTaXplIG9mIGhpZ2gg bWVtb3J5IHRoYXQgY2FuIGJlIHVzZWQgZm9yIHBlcm1hbmVudCBhbGxvY2F0aW9uIGluIGJ5dGVz LiBJZiB6ZXJvLA0KLSAgLy8vIGhpZ2ggbWVtb3J5IGlzIG5vdCBhdmFpbGFibGUgZm9yIHBlcm1h bmVudCBhbGxvY2F0aW9uLg0KLSAgLy8vDQotICBVSU5UMzIgICAgSGlQZXJtYW5lbnRNZW1vcnlT aXplOw0KLX0gRUZJX0NPTVBBVElCSUxJVFkxNl9UQUJMRTsNCi0NCi0vLy8NCi0vLy8gRnVuY3Rp b25zIHByb3ZpZGVkIGJ5IHRoZSBDU00gYmluYXJ5IHdoaWNoIGNvbW11bmljYXRlIGJldHdlZW4g dGhlIEVmaUNvbXBhdGliaWxpdHkNCi0vLy8gYW5kIENvbXBhdGliaWxpdHkxNiBjb2RlLg0KLS8v Lw0KLS8vLyBJbmNvbnNpc3RlbnQgd2l0aCB0aGUgc3BlY2lmaWNhdGlvbiBoZXJlOg0KLS8vLyBU aGUgbWVtYmVyJ3MgbmFtZSBzdGFydGVkIHdpdGggIkNvbXBhdGliaWxpdHkxNiIgW2RlZmluZWQg aW4gSW50ZWwgRnJhbWV3b3JrDQotLy8vIENvbXBhdGliaWxpdHkgU3VwcG9ydCBNb2R1bGUgU3Bl Y2lmaWNhdGlvbiAvIDAuOTcgdmVyc2lvbl0NCi0vLy8gaGFzIGJlZW4gY2hhbmdlZCB0byAiTGVn YWN5MTYiIHNpbmNlIGtlZXBpbmcgYmFja3dhcmQgY29tcGF0aWJsZS4NCi0vLy8NCi10eXBlZGVm IGVudW0gew0KLSAgLy8vDQotICAvLy8gQ2F1c2VzIHRoZSBDb21wYXRpYmlsaXR5MTYgY29kZSB0 byBkbyBhbnkgaW50ZXJuYWwgaW5pdGlhbGl6YXRpb24gcmVxdWlyZWQuDQotICAvLy8gSW5wdXQ6 DQotICAvLy8gICBBWCA9IENvbXBhdGliaWxpdHkxNkluaXRpYWxpemVZb3Vyc2VsZg0KLSAgLy8v ICAgRVM6QlggPSBQb2ludGVyIHRvIEVGSV9UT19DT01QQVRJQklMSVRZMTZfSU5JVF9UQUJMRQ0K LSAgLy8vIFJldHVybjoNCi0gIC8vLyAgIEFYID0gUmV0dXJuIFN0YXR1cyBjb2Rlcw0KLSAgLy8v DQotICBMZWdhY3kxNkluaXRpYWxpemVZb3Vyc2VsZiA9IDB4MDAwMCwNCi0NCi0gIC8vLw0KLSAg Ly8vIENhdXNlcyB0aGUgQ29tcGF0aWJpbGl0eTE2IEJJT1MgdG8gcGVyZm9ybSBhbnkgZHJpdmUg bnVtYmVyIHRyYW5zbGF0aW9ucyB0byBtYXRjaCB0aGUgYm9vdCBzZXF1ZW5jZS4NCi0gIC8vLyBJ bnB1dDoNCi0gIC8vLyAgIEFYID0gQ29tcGF0aWJpbGl0eTE2VXBkYXRlQmJzDQotICAvLy8gICBF UzpCWCA9IFBvaW50ZXIgdG8gRUZJX1RPX0NPTVBBVElCSUxJVFkxNl9CT09UX1RBQkxFDQotICAv Ly8gUmV0dXJuOg0KLSAgLy8vICAgQVggPSBSZXR1cm5lZCBzdGF0dXMgY29kZXMNCi0gIC8vLw0K LSAgTGVnYWN5MTZVcGRhdGVCYnMgPSAweDAwMDEsDQotDQotICAvLy8NCi0gIC8vLyBBbGxvd3Mg dGhlIENvbXBhdGliaWxpdHkxNiBjb2RlIHRvIHBlcmZvcm0gYW55IGZpbmFsIGFjdGlvbnMgYmVm b3JlIGJvb3RpbmcuIFRoZSBDb21wYXRpYmlsaXR5MTYNCi0gIC8vLyBjb2RlIGlzIHJlYWQvd3Jp dGUuDQotICAvLy8gSW5wdXQ6DQotICAvLy8gICBBWCA9IENvbXBhdGliaWxpdHkxNlByZXBhcmVU b0Jvb3QNCi0gIC8vLyAgIEVTOkJYID0gUG9pbnRlciB0byBFRklfVE9fQ09NUEFUSUJJTElUWTE2 X0JPT1RfVEFCTEUgc3RydWN0dXJlDQotICAvLy8gUmV0dXJuOg0KLSAgLy8vICAgQVggPSBSZXR1 cm5lZCBzdGF0dXMgY29kZXMNCi0gIC8vLw0KLSAgTGVnYWN5MTZQcmVwYXJlVG9Cb290ID0gMHgw MDAyLA0KLQ0KLSAgLy8vDQotICAvLy8gQ2F1c2VzIHRoZSBDb21wYXRpYmlsaXR5MTYgQklPUyB0 byBib290LiBUaGUgQ29tcGF0aWJpbGl0eTE2IGNvZGUgaXMgUmVhZC9Pbmx5Lg0KLSAgLy8vIElu cHV0Og0KLSAgLy8vICAgQVggPSBDb21wYXRpYmlsaXR5MTZCb290DQotICAvLy8gT3V0cHV0Og0K LSAgLy8vICAgQVggPSBSZXR1cm5lZCBzdGF0dXMgY29kZXMNCi0gIC8vLw0KLSAgTGVnYWN5MTZC b290ID0gMHgwMDAzLA0KLQ0KLSAgLy8vDQotICAvLy8gQWxsb3dzIHRoZSBDb21wYXRpYmlsaXR5 MTYgY29kZSB0byBnZXQgdGhlIGxhc3QgZGV2aWNlIGZyb20gd2hpY2ggYSBib290IHdhcyBhdHRl bXB0ZWQuIFRoaXMgaXMNCi0gIC8vLyBzdG9yZWQgaW4gQ01PUyBhbmQgaXMgdGhlIHByaW9yaXR5 IG51bWJlciBvZiB0aGUgbGFzdCBhdHRlbXB0ZWQgYm9vdCBkZXZpY2UuDQotICAvLy8gSW5wdXQ6 DQotICAvLy8gICBBWCA9IENvbXBhdGliaWxpdHkxNlJldHJpZXZlTGFzdEJvb3REZXZpY2UNCi0g IC8vLyBPdXRwdXQ6DQotICAvLy8gICBBWCA9IFJldHVybmVkIHN0YXR1cyBjb2Rlcw0KLSAgLy8v ICAgQlggPSBQcmlvcml0eSBudW1iZXIgb2YgdGhlIGJvb3QgZGV2aWNlLg0KLSAgLy8vDQotICBM ZWdhY3kxNlJldHJpZXZlTGFzdEJvb3REZXZpY2UgPSAweDAwMDQsDQotDQotICAvLy8NCi0gIC8v LyBBbGxvd3MgdGhlIENvbXBhdGliaWxpdHkxNiBjb2RlIHJlaG9vayBJTlQxMywgSU5UMTgsIGFu ZC9vciBJTlQxOSBhZnRlciBkaXNwYXRjaGluZyBhIGxlZ2FjeSBPcFJPTS4NCi0gIC8vLyBJbnB1 dDoNCi0gIC8vLyAgIEFYID0gQ29tcGF0aWJpbGl0eTE2RGlzcGF0Y2hPcHJvbQ0KLSAgLy8vICAg RVM6QlggPSBQb2ludGVyIHRvIEVGSV9ESVNQQVRDSF9PUFJPTV9UQUJMRQ0KLSAgLy8vIE91dHB1 dDoNCi0gIC8vLyAgIEFYID0gUmV0dXJuZWQgc3RhdHVzIGNvZGVzDQotICAvLy8gICBCWCA9IE51 bWJlciBvZiBub24tQkJTLWNvbXBsaWFudCBkZXZpY2VzIGZvdW5kLiBFcXVhbHMgMCBpZiBCQlMg Y29tcGxpYW50Lg0KLSAgLy8vDQotICBMZWdhY3kxNkRpc3BhdGNoT3Byb20gPSAweDAwMDUsDQot DQotICAvLy8NCi0gIC8vLyBGaW5kcyBhIGZyZWUgYXJlYSBpbiB0aGUgMHhGeHh4eCBvciAweEV4 eHh4IHJlZ2lvbiBvZiB0aGUgc3BlY2lmaWVkIGxlbmd0aCBhbmQgcmV0dXJucyB0aGUgYWRkcmVz cw0KLSAgLy8vIG9mIHRoYXQgcmVnaW9uLg0KLSAgLy8vIElucHV0Og0KLSAgLy8vICAgQVggPSBD b21wYXRpYmlsaXR5MTZHZXRUYWJsZUFkZHJlc3MNCi0gIC8vLyAgIEJYID0gQWxsb2NhdGlvbiBy ZWdpb24NCi0gIC8vLyAgICAgICAwMCA9IEFsbG9jYXRlIGZyb20gZWl0aGVyIDB4RTAwMDAgb3Ig MHhGMDAwMCA2NCBLQiBibG9ja3MuDQotICAvLy8gICAgICAgQml0IDAgPSAxIEFsbG9jYXRlIGZy b20gMHhGMDAwMCA2NCBLQiBibG9jaw0KLSAgLy8vICAgICAgIEJpdCAxID0gMSBBbGxvY2F0ZSBm cm9tIDB4RTAwMDAgNjQgS0IgYmxvY2sNCi0gIC8vLyAgIENYID0gUmVxdWVzdGVkIGxlbmd0aCBp biBieXRlcy4NCi0gIC8vLyAgIERYID0gUmVxdWlyZWQgYWRkcmVzcyBhbGlnbm1lbnQuIEJpdCBt YXBwZWQuIEZpcnN0IG5vbi16ZXJvIGJpdCBmcm9tIHRoZSByaWdodCBpcyB0aGUgYWxpZ25tZW50 Lg0KLSAgLy8vIE91dHB1dDoNCi0gIC8vLyAgIEFYID0gUmV0dXJuZWQgc3RhdHVzIGNvZGVzDQot ICAvLy8gICBEUzpCWCA9IEFkZHJlc3Mgb2YgdGhlIHJlZ2lvbg0KLSAgLy8vDQotICBMZWdhY3kx NkdldFRhYmxlQWRkcmVzcyA9IDB4MDAwNiwNCi0NCi0gIC8vLw0KLSAgLy8vIEVuYWJsZXMgdGhl IEVmaUNvbXBhdGliaWxpdHkgbW9kdWxlIHRvIGRvIGFueSBub25zdGFuZGFyZCBwcm9jZXNzaW5n IG9mIGtleWJvYXJkIExFRHMgb3Igc3RhdGUuDQotICAvLy8gSW5wdXQ6DQotICAvLy8gICBBWCA9 IENvbXBhdGliaWxpdHkxNlNldEtleWJvYXJkTGVkcw0KLSAgLy8vICAgQ0wgPSBMRUQgc3RhdHVz Lg0KLSAgLy8vICAgICBCaXQgMCAgU2Nyb2xsIExvY2sgMCA9IE9mZg0KLSAgLy8vICAgICBCaXQg MSAgTnVtTG9jaw0KLSAgLy8vICAgICBCaXQgMiAgQ2FwcyBMb2NrDQotICAvLy8gT3V0cHV0Og0K LSAgLy8vICAgICBBWCA9IFJldHVybmVkIHN0YXR1cyBjb2Rlcw0KLSAgLy8vDQotICBMZWdhY3kx NlNldEtleWJvYXJkTGVkcyA9IDB4MDAwNywNCi0NCi0gIC8vLw0KLSAgLy8vIEVuYWJsZXMgdGhl IEVmaUNvbXBhdGliaWxpdHkgbW9kdWxlIHRvIGluc3RhbGwgYW4gaW50ZXJydXB0IGhhbmRsZXIg Zm9yIFBDSSBtYXNzIG1lZGlhIGRldmljZXMgdGhhdA0KLSAgLy8vIGRvIG5vdCBoYXZlIGFuIE9w Uk9NIGFzc29jaWF0ZWQgd2l0aCB0aGVtLiBBbiBleGFtcGxlIGlzIFNBVEEuDQotICAvLy8gSW5w dXQ6DQotICAvLy8gICBBWCA9IENvbXBhdGliaWxpdHkxNkluc3RhbGxQY2lIYW5kbGVyDQotICAv Ly8gICBFUzpCWCA9IFBvaW50ZXIgdG8gRUZJX0xFR0FDWV9JTlNUQUxMX1BDSV9IQU5ETEVSIHN0 cnVjdHVyZQ0KLSAgLy8vIE91dHB1dDoNCi0gIC8vLyAgIEFYID0gUmV0dXJuZWQgc3RhdHVzIGNv ZGVzDQotICAvLy8NCi0gIExlZ2FjeTE2SW5zdGFsbFBjaUhhbmRsZXIgPSAweDAwMDgNCi19IEVG SV9DT01QQVRJQklMSVRZX0ZVTkNUSU9OUzsNCi0NCi0vLy8NCi0vLy8gRUZJX0RJU1BBVENIX09Q Uk9NX1RBQkxFDQotLy8vDQotdHlwZWRlZiBzdHJ1Y3Qgew0KLSAgVUlOVDE2ICAgIFBuUEluc3Rh bGxhdGlvbkNoZWNrU2VnbWVudDsgLy8vPCBBIHBvaW50ZXIgdG8gdGhlIFBucEluc3RhbGxhdGlv bkNoZWNrIGRhdGEgc3RydWN0dXJlLg0KLSAgVUlOVDE2ICAgIFBuUEluc3RhbGxhdGlvbkNoZWNr T2Zmc2V0OyAgLy8vPCBBIHBvaW50ZXIgdG8gdGhlIFBucEluc3RhbGxhdGlvbkNoZWNrIGRhdGEg c3RydWN0dXJlLg0KLSAgVUlOVDE2ICAgIE9wcm9tU2VnbWVudDsgICAgICAgICAgICAgICAgLy8v PCBUaGUgc2VnbWVudCB3aGVyZSB0aGUgT3BST00gd2FzIHBsYWNlZC4gT2Zmc2V0IGlzIGFzc3Vt ZWQgdG8gYmUgMy4NCi0gIFVJTlQ4ICAgICBQY2lCdXM7ICAgICAgICAgICAgICAgICAgICAgIC8v LzwgVGhlIFBDSSBidXMuDQotICBVSU5UOCAgICAgUGNpRGV2aWNlRnVuY3Rpb247ICAgICAgICAg ICAvLy88IFRoZSBQQ0kgZGV2aWNlICogMHgwOCB8IFBDSSBmdW5jdGlvbi4NCi0gIFVJTlQ4ICAg ICBOdW1iZXJCYnNFbnRyaWVzOyAgICAgICAgICAgIC8vLzwgVGhlIG51bWJlciBvZiB2YWxpZCBC QlMgdGFibGUgZW50cmllcyB1cG9uIGVudHJ5IGFuZCBleGl0LiBUaGUgSUJWIGNvZGUgbWF5DQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy88IGluY3JlYXNlIHRo aXMgbnVtYmVyLCBpZiBCQlMtY29tcGxpYW50IGRldmljZXMgYWxzbyBob29rIElOVHMgaW4gb3Jk ZXIgdG8gZm9yY2UgdGhlDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAvLy88IE9wUk9NIEJJT1MgU2V0dXAgdG8gYmUgZXhlY3V0ZWQuDQotICBVSU5UMzIgICAgQmJz VGFibGVQb2ludGVyOyAgICAgICAgICAgICAvLy88IEEgcG9pbnRlciB0byB0aGUgQkJTIHRhYmxl Lg0KLSAgVUlOVDE2ICAgIFJ1bnRpbWVTZWdtZW50OyAgICAgICAgICAgICAgLy8vPCBUaGUgc2Vn bWVudCB3aGVyZSB0aGUgT3BST00gY2FuIGJlIHJlbG9jYXRlZCB0by4gSWYgdGhpcyB2YWx1ZSBp cyAweDAwMDAsIHRoaXMNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC8vLzwgbWVhbnMgdGhhdCB0aGUgcmVsb2NhdGlvbiBvZiB0aGlzIHJ1biB0aW1lIGNvZGUgaXMg bm90IHN1cHBvcnRlZC4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC8vLzwgSW5jb25zaXN0ZW50IHdpdGggc3BlY2lmaWNhdGlvbiBoZXJlOg0KLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vPCBUaGUgbWVtYmVyJ3MgbmFtZSAiT3By b21EZXN0aW5hdGlvblNlZ21lbnQiIFtkZWZpbmVkIGluIEludGVsIEZyYW1ld29yayBDb21wYXRp YmlsaXR5IFN1cHBvcnQgTW9kdWxlIFNwZWNpZmljYXRpb24gLyAwLjk3IHZlcnNpb25dDQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy88IGhhcyBiZWVuIGNoYW5n ZWQgdG8gIlJ1bnRpbWVTZWdtZW50IiBzaW5jZSBrZWVwaW5nIGJhY2t3YXJkIGNvbXBhdGlibGUu DQotfSBFRklfRElTUEFUQ0hfT1BST01fVEFCTEU7DQotDQotLy8vDQotLy8vIEVGSV9UT19DT01Q QVRJQklMSVRZMTZfSU5JVF9UQUJMRQ0KLS8vLw0KLXR5cGVkZWYgc3RydWN0IHsNCi0gIC8vLw0K LSAgLy8vIFN0YXJ0aW5nIGFkZHJlc3Mgb2YgbWVtb3J5IHVuZGVyIDEgTUIuIFRoZSBlbmRpbmcg YWRkcmVzcyBpcyBhc3N1bWVkIHRvIGJlIDY0MCBLQiBvciAweDlGRkZGLg0KLSAgLy8vDQotICBV SU5UMzIgICAgQmlvc0xlc3NUaGFuMU1COw0KLQ0KLSAgLy8vDQotICAvLy8gVGhlIHN0YXJ0aW5n IGFkZHJlc3Mgb2YgdGhlIGhpZ2ggbWVtb3J5IGJsb2NrLg0KLSAgLy8vDQotICBVSU5UMzIgICAg SGlQbW1NZW1vcnk7DQotDQotICAvLy8NCi0gIC8vLyBUaGUgbGVuZ3RoIG9mIGhpZ2ggbWVtb3J5 IGJsb2NrLg0KLSAgLy8vDQotICBVSU5UMzIgICAgSGlQbW1NZW1vcnlTaXplSW5CeXRlczsNCi0N Ci0gIC8vLw0KLSAgLy8vIFRoZSBzZWdtZW50IG9mIHRoZSByZXZlcnNlIHRodW5rIGNhbGwgY29k ZS4NCi0gIC8vLw0KLSAgVUlOVDE2ICAgIFJldmVyc2VUaHVua0NhbGxTZWdtZW50Ow0KLQ0KLSAg Ly8vDQotICAvLy8gVGhlIG9mZnNldCBvZiB0aGUgcmV2ZXJzZSB0aHVuayBjYWxsIGNvZGUuDQot ICAvLy8NCi0gIFVJTlQxNiAgICBSZXZlcnNlVGh1bmtDYWxsT2Zmc2V0Ow0KLQ0KLSAgLy8vDQot ICAvLy8gVGhlIG51bWJlciBvZiBFODIwIGVudHJpZXMgY29waWVkIHRvIHRoZSBDb21wYXRpYmls aXR5MTYgQklPUy4NCi0gIC8vLw0KLSAgVUlOVDMyICAgIE51bWJlckU4MjBFbnRyaWVzOw0KLQ0K LSAgLy8vDQotICAvLy8gVGhlIGFtb3VudCBvZiB1c2FibGUgbWVtb3J5IGFib3ZlIDEgTUIsIGUu Zy4sIEU4MjAgdHlwZSAxIG1lbW9yeS4NCi0gIC8vLw0KLSAgVUlOVDMyICAgIE9zTWVtb3J5QWJv dmUxTWI7DQotDQotICAvLy8NCi0gIC8vLyBUaGUgc3RhcnQgb2YgdGh1bmsgY29kZSBpbiBtYWlu IG1lbW9yeS4gTWVtb3J5IGNhbm5vdCBiZSB1c2VkIGJ5IEJJT1Mgb3IgUE1NLg0KLSAgLy8vDQot ICBVSU5UMzIgICAgVGh1bmtTdGFydDsNCi0NCi0gIC8vLw0KLSAgLy8vIFRoZSBzaXplIG9mIHRo ZSB0aHVuayBjb2RlLg0KLSAgLy8vDQotICBVSU5UMzIgICAgVGh1bmtTaXplSW5CeXRlczsNCi0N Ci0gIC8vLw0KLSAgLy8vIFN0YXJ0aW5nIGFkZHJlc3Mgb2YgbWVtb3J5IHVuZGVyIDEgTUIuDQot ICAvLy8NCi0gIFVJTlQzMiAgICBMb3dQbW1NZW1vcnk7DQotDQotICAvLy8NCi0gIC8vLyBUaGUg bGVuZ3RoIG9mIGxvdyBNZW1vcnkgYmxvY2suDQotICAvLy8NCi0gIFVJTlQzMiAgICBMb3dQbW1N ZW1vcnlTaXplSW5CeXRlczsNCi19IEVGSV9UT19DT01QQVRJQklMSVRZMTZfSU5JVF9UQUJMRTsN Ci0NCi0vLy8NCi0vLy8gREVWSUNFX1BST0RVQ0VSX1NFUklBTC4NCi0vLy8NCi10eXBlZGVmIHN0 cnVjdCB7DQotICBVSU5UMTYgICAgICAgICBBZGRyZXNzOyAgICAgICAgICAgICAgICAgICAgICAg Ly8vPCBJL08gYWRkcmVzcyBhc3NpZ25lZCB0byB0aGUgc2VyaWFsIHBvcnQuDQotICBVSU5UOCAg ICAgICAgICBJcnE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vPCBJUlEgYXNzaWduZWQg dG8gdGhlIHNlcmlhbCBwb3J0Lg0KLSAgU0VSSUFMX01PREUgICAgTW9kZTsgICAgICAgICAgICAg ICAgICAgICAgICAgIC8vLzwgTW9kZSBvZiBzZXJpYWwgcG9ydC4gVmFsdWVzIGFyZSBkZWZpbmVk IGJlbG93Lg0KLX0gREVWSUNFX1BST0RVQ0VSX1NFUklBTDsNCi0NCi0vLy8NCi0vLy8gREVWSUNF X1BST0RVQ0VSX1NFUklBTCdzIG1vZGVzLg0KLS8vL0B7DQotI2RlZmluZSBERVZJQ0VfU0VSSUFM X01PREVfTk9STUFMICAgICAgIDB4MDANCi0jZGVmaW5lIERFVklDRV9TRVJJQUxfTU9ERV9JUkRB ICAgICAgICAgMHgwMQ0KLSNkZWZpbmUgREVWSUNFX1NFUklBTF9NT0RFX0FTS19JUiAgICAgICAw eDAyDQotI2RlZmluZSBERVZJQ0VfU0VSSUFMX01PREVfRFVQTEVYX0hBTEYgIDB4MDANCi0jZGVm aW5lIERFVklDRV9TRVJJQUxfTU9ERV9EVVBMRVhfRlVMTCAgMHgxMA0KLS8vLyBAKQ0KLQ0KLS8v Lw0KLS8vLyBERVZJQ0VfUFJPRFVDRVJfUEFSQUxMRUwuDQotLy8vDQotdHlwZWRlZiBzdHJ1Y3Qg ew0KLSAgVUlOVDE2ICAgICAgICAgICBBZGRyZXNzOyAgICAgICAgICAgICAgICAgICAvLy88IEkv TyBhZGRyZXNzIGFzc2lnbmVkIHRvIHRoZSBwYXJhbGxlbCBwb3J0Lg0KLSAgVUlOVDggICAgICAg ICAgICBJcnE7ICAgICAgICAgICAgICAgICAgICAgICAvLy88IElSUSBhc3NpZ25lZCB0byB0aGUg cGFyYWxsZWwgcG9ydC4NCi0gIFVJTlQ4ICAgICAgICAgICAgRG1hOyAgICAgICAgICAgICAgICAg ICAgICAgLy8vPCBETUEgYXNzaWduZWQgdG8gdGhlIHBhcmFsbGVsIHBvcnQuDQotICBQQVJBTExF TF9NT0RFICAgIE1vZGU7ICAgICAgICAgICAgICAgICAgICAgIC8vLzwgTW9kZSBvZiB0aGUgcGFy YWxsZWwgcG9ydC4gVmFsdWVzIGFyZSBkZWZpbmVkIGJlbG93Lg0KLX0gREVWSUNFX1BST0RVQ0VS X1BBUkFMTEVMOw0KLQ0KLS8vLw0KLS8vLyBERVZJQ0VfUFJPRFVDRVJfUEFSQUxMRUwncyBtb2Rl cy4NCi0vLy9Aew0KLSNkZWZpbmUgREVWSUNFX1BBUkFMTEVMX01PREVfTU9ERV9PVVRQVVRfT05M WSAgICAweDAwDQotI2RlZmluZSBERVZJQ0VfUEFSQUxMRUxfTU9ERV9NT0RFX0JJRElSRUNUSU9O QUwgIDB4MDENCi0jZGVmaW5lIERFVklDRV9QQVJBTExFTF9NT0RFX01PREVfRVBQICAgICAgICAg ICAgMHgwMg0KLSNkZWZpbmUgREVWSUNFX1BBUkFMTEVMX01PREVfTU9ERV9FQ1AgICAgICAgICAg ICAweDAzDQotLy8vQH0NCi0NCi0vLy8NCi0vLy8gREVWSUNFX1BST0RVQ0VSX0ZMT1BQWQ0KLS8v Lw0KLXR5cGVkZWYgc3RydWN0IHsNCi0gIFVJTlQxNiAgICBBZGRyZXNzOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAvLy88IEkvTyBhZGRyZXNzIGFzc2lnbmVkIHRvIHRoZSBmbG9w cHkuDQotICBVSU5UOCAgICAgSXJxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLy8vPCBJUlEgYXNzaWduZWQgdG8gdGhlIGZsb3BweS4NCi0gIFVJTlQ4ICAgICBEbWE7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy88IERNQSBhc3NpZ25lZCB0byB0 aGUgZmxvcHB5Lg0KLSAgVUlOVDggICAgIE51bWJlck9mRmxvcHB5OyAgICAgICAgICAgICAgICAg ICAgICAgICAgIC8vLzwgTnVtYmVyIG9mIGZsb3BwaWVzIGluIHRoZSBzeXN0ZW0uDQotfSBERVZJ Q0VfUFJPRFVDRVJfRkxPUFBZOw0KLQ0KLS8vLw0KLS8vLyBMRUdBQ1lfREVWSUNFX0ZMQUdTDQot Ly8vDQotdHlwZWRlZiBzdHJ1Y3Qgew0KLSAgVUlOVDMyICAgIEEyMEt5YmQgICA6IDE7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC8vLzwgQTIwIGNvbnRyb2xsZXIgYnkga2V5Ym9hcmQgY29u dHJvbGxlci4NCi0gIFVJTlQzMiAgICBBMjBQb3J0OTAgOiAxOyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAvLy88IEEyMCBjb250cm9sbGVkIGJ5IHBvcnQgMHg5Mi4NCi0gIFVJTlQzMiAgICBS ZXNlcnZlZCAgOiAzMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy88IFJlc2VydmVkIGZv ciBmdXR1cmUgdXNhZ2UuDQotfSBMRUdBQ1lfREVWSUNFX0ZMQUdTOw0KLQ0KLS8vLw0KLS8vLyBE RVZJQ0VfUFJPRFVDRVJfREFUQV9IRUFERVINCi0vLy8NCi10eXBlZGVmIHN0cnVjdCB7DQotICBE RVZJQ0VfUFJPRFVDRVJfU0VSSUFMICAgICAgU2VyaWFsWzRdOyAgICAgICAgICAgIC8vLzwgRGF0 YSBmb3Igc2VyaWFsIHBvcnQgeC4gVHlwZSBERVZJQ0VfUFJPRFVDRVJfU0VSSUFMIGlzIGRlZmlu ZWQgYmVsb3cuDQotICBERVZJQ0VfUFJPRFVDRVJfUEFSQUxMRUwgICAgUGFyYWxsZWxbM107ICAg ICAgICAgIC8vLzwgRGF0YSBmb3IgcGFyYWxsZWwgcG9ydCB4LiBUeXBlIERFVklDRV9QUk9EVUNF Ul9QQVJBTExFTCBpcyBkZWZpbmVkIGJlbG93Lg0KLSAgREVWSUNFX1BST0RVQ0VSX0ZMT1BQWSAg ICAgIEZsb3BweTsgICAgICAgICAgICAgICAvLy88IERhdGEgZm9yIGZsb3BweS4gVHlwZSBERVZJ Q0VfUFJPRFVDRVJfRkxPUFBZIGlzIGRlZmluZWQgYmVsb3cuDQotICBVSU5UOCAgICAgICAgICAg ICAgICAgICAgICAgTW91c2VQcmVzZW50OyAgICAgICAgIC8vLzwgRmxhZyB0byBpbmRpY2F0ZSBp ZiBtb3VzZSBpcyBwcmVzZW50Lg0KLSAgTEVHQUNZX0RFVklDRV9GTEFHUyAgICAgICAgIEZsYWdz OyAgICAgICAgICAgICAgICAvLy88IE1pc2NlbGxhbmVvdXMgQm9vbGVhbiBzdGF0ZSBpbmZvcm1h dGlvbiBwYXNzZWQgdG8gQ1NNLg0KLX0gREVWSUNFX1BST0RVQ0VSX0RBVEFfSEVBREVSOw0KLQ0K LS8vLw0KLS8vLyBBVEFQSV9JREVOVElGWQ0KLS8vLw0KLXR5cGVkZWYgc3RydWN0IHsNCi0gIFVJ TlQxNiAgICBSYXdbMjU2XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLzwgUmF3IGRh dGEgZnJvbSB0aGUgSURFIElkZW50aWZ5RHJpdmUgY29tbWFuZC4NCi19IEFUQVBJX0lERU5USUZZ Ow0KLQ0KLS8vLw0KLS8vLyBIRERfSU5GTw0KLS8vLw0KLXR5cGVkZWYgc3RydWN0IHsNCi0gIC8v Lw0KLSAgLy8vIFN0YXR1cyBvZiBJREUgZGV2aWNlLiBWYWx1ZXMgYXJlIGRlZmluZWQgYmVsb3cu IFRoZXJlIGlzIG9uZSBIRERfSU5GTyBzdHJ1Y3R1cmUNCi0gIC8vLyBwZXIgSURFIGNvbnRyb2xs ZXIuIFRoZSBJZGVudGlmeURyaXZlIGlzIHBlciBkcml2ZS4gSW5kZXggMCBpcyBtYXN0ZXIgYW5k IGluZGV4DQotICAvLy8gMSBpcyBzbGF2ZS4NCi0gIC8vLw0KLSAgVUlOVDE2ICAgICAgICAgICAg U3RhdHVzOw0KLQ0KLSAgLy8vDQotICAvLy8gUENJIGJ1cyBvZiBJREUgY29udHJvbGxlci4NCi0g IC8vLw0KLSAgVUlOVDMyICAgICAgICAgICAgQnVzOw0KLQ0KLSAgLy8vDQotICAvLy8gUENJIGRl dmljZSBvZiBJREUgY29udHJvbGxlci4NCi0gIC8vLw0KLSAgVUlOVDMyICAgICAgICAgICAgRGV2 aWNlOw0KLQ0KLSAgLy8vDQotICAvLy8gUENJIGZ1bmN0aW9uIG9mIElERSBjb250cm9sbGVyLg0K LSAgLy8vDQotICBVSU5UMzIgICAgICAgICAgICBGdW5jdGlvbjsNCi0NCi0gIC8vLw0KLSAgLy8v IENvbW1hbmQgcG9ydHMgYmFzZSBhZGRyZXNzLg0KLSAgLy8vDQotICBVSU5UMTYgICAgICAgICAg ICBDb21tYW5kQmFzZUFkZHJlc3M7DQotDQotICAvLy8NCi0gIC8vLyBDb250cm9sIHBvcnRzIGJh c2UgYWRkcmVzcy4NCi0gIC8vLw0KLSAgVUlOVDE2ICAgICAgICAgICAgQ29udHJvbEJhc2VBZGRy ZXNzOw0KLQ0KLSAgLy8vDQotICAvLy8gQnVzIG1hc3RlciBhZGRyZXNzLg0KLSAgLy8vDQotICBV SU5UMTYgICAgICAgICAgICBCdXNNYXN0ZXJBZGRyZXNzOw0KLQ0KLSAgVUlOVDggICAgICAgICAg ICAgSGRkSXJxOw0KLQ0KLSAgLy8vDQotICAvLy8gRGF0YSB0aGF0IGlkZW50aWZpZXMgdGhlIGRy aXZlIGRhdGE7IG9uZSBwZXIgcG9zc2libGUgYXR0YWNoZWQgZHJpdmUuDQotICAvLy8NCi0gIEFU QVBJX0lERU5USUZZICAgIElkZW50aWZ5RHJpdmVbMl07DQotfSBIRERfSU5GTzsNCi0NCi0vLy8N Ci0vLy8gSEREX0lORk8gc3RhdHVzIGJpdHMNCi0vLy8NCi0jZGVmaW5lIEhERF9QUklNQVJZICAg ICAgICAgICAgICAgMHgwMQ0KLSNkZWZpbmUgSEREX1NFQ09OREFSWSAgICAgICAgICAgICAweDAy DQotI2RlZmluZSBIRERfTUFTVEVSX0FUQVBJX0NEUk9NICAgIDB4MDQNCi0jZGVmaW5lIEhERF9T TEFWRV9BVEFQSV9DRFJPTSAgICAgMHgwOA0KLSNkZWZpbmUgSEREX01BU1RFUl9JREUgICAgICAg ICAgICAweDIwDQotI2RlZmluZSBIRERfU0xBVkVfSURFICAgICAgICAgICAgIDB4NDANCi0jZGVm aW5lIEhERF9NQVNURVJfQVRBUElfWklQRElTSyAgMHgxMA0KLSNkZWZpbmUgSEREX1NMQVZFX0FU QVBJX1pJUERJU0sgICAweDgwDQotDQotLy8vDQotLy8vIEJCU19TVEFUVVNfRkxBR1M7XC4NCi0v Ly8NCi10eXBlZGVmIHN0cnVjdCB7DQotICBVSU5UMTYgICAgT2xkUG9zaXRpb24gOiA0OyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAvLy88IFByaW9yIHByaW9yaXR5Lg0KLSAgVUlOVDE2ICAg IFJlc2VydmVkMSAgIDogNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vPCBSZXNlcnZl ZCBmb3IgZnV0dXJlIHVzZS4NCi0gIFVJTlQxNiAgICBFbmFibGVkICAgICA6IDE7ICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC8vLzwgSWYgMCwgaWdub3JlIHRoaXMgZW50cnkuDQotICBVSU5U MTYgICAgRmFpbGVkICAgICAgOiAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy88IDAg PSBOb3Qga25vd24gaWYgYm9vdCBmYWlsdXJlIG9jY3VycmVkLg0KLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vPCAxID0gQm9vdCBhdHRl bXB0ZWQgZmFpbGVkLg0KLQ0KLSAgLy8vDQotICAvLy8gU3RhdGUgb2YgbWVkaWEgcHJlc2VudC4N Ci0gIC8vLyAgIDAwID0gTm8gYm9vdGFibGUgbWVkaWEgaXMgcHJlc2VudCBpbiB0aGUgZGV2aWNl Lg0KLSAgLy8vICAgMDEgPSBVbmtub3duIGlmIGEgYm9vdGFibGUgbWVkaWEgcHJlc2VudC4NCi0g IC8vLyAgIDEwID0gTWVkaWEgaXMgcHJlc2VudCBhbmQgYXBwZWFycyBib290YWJsZS4NCi0gIC8v LyAgIDExID0gUmVzZXJ2ZWQuDQotICAvLy8NCi0gIFVJTlQxNiAgICBNZWRpYVByZXNlbnQgOiAy Ow0KLSAgVUlOVDE2ICAgIFJlc2VydmVkMiAgICA6IDQ7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgLy8vPCBSZXNlcnZlZCBmb3IgZnV0dXJlIHVzZS4NCi19IEJCU19TVEFUVVNfRkxBR1M7DQot DQotLy8vDQotLy8vIEJCU19UQUJMRSwgZGV2aWNlIHR5cGUgdmFsdWVzICYgYm9vdCBwcmlvcml0 eSB2YWx1ZXMuDQotLy8vDQotdHlwZWRlZiBzdHJ1Y3Qgew0KLSAgLy8vDQotICAvLy8gVGhlIGJv b3QgcHJpb3JpdHkgZm9yIHRoaXMgYm9vdCBkZXZpY2UuIFZhbHVlcyBhcmUgZGVmaW5lZCBiZWxv dy4NCi0gIC8vLw0KLSAgVUlOVDE2ICAgICAgICAgICAgICBCb290UHJpb3JpdHk7DQotDQotICAv Ly8NCi0gIC8vLyBUaGUgUENJIGJ1cyBmb3IgdGhpcyBib290IGRldmljZS4NCi0gIC8vLw0KLSAg VUlOVDMyICAgICAgICAgICAgICBCdXM7DQotDQotICAvLy8NCi0gIC8vLyBUaGUgUENJIGRldmlj ZSBmb3IgdGhpcyBib290IGRldmljZS4NCi0gIC8vLw0KLSAgVUlOVDMyICAgICAgICAgICAgICBE ZXZpY2U7DQotDQotICAvLy8NCi0gIC8vLyBUaGUgUENJIGZ1bmN0aW9uIGZvciB0aGUgYm9vdCBk ZXZpY2UuDQotICAvLy8NCi0gIFVJTlQzMiAgICAgICAgICAgICAgRnVuY3Rpb247DQotDQotICAv Ly8NCi0gIC8vLyBUaGUgUENJIGNsYXNzIGZvciB0aGlzIGJvb3QgZGV2aWNlLg0KLSAgLy8vDQot ICBVSU5UOCAgICAgICAgICAgICAgIENsYXNzOw0KLQ0KLSAgLy8vDQotICAvLy8gVGhlIFBDSSBT dWJjbGFzcyBmb3IgdGhpcyBib290IGRldmljZS4NCi0gIC8vLw0KLSAgVUlOVDggICAgICAgICAg ICAgICBTdWJDbGFzczsNCi0NCi0gIC8vLw0KLSAgLy8vIFNlZ21lbnQ6b2Zmc2V0IGFkZHJlc3Mg b2YgYW4gQVNDSUlaIGRlc2NyaXB0aW9uIHN0cmluZyBkZXNjcmliaW5nIHRoZSBtYW51ZmFjdHVy ZXIuDQotICAvLy8NCi0gIFVJTlQxNiAgICAgICAgICAgICAgTWZnU3RyaW5nT2Zmc2V0Ow0KLQ0K LSAgLy8vDQotICAvLy8gU2VnbWVudDpvZmZzZXQgYWRkcmVzcyBvZiBhbiBBU0NJSVogZGVzY3Jp cHRpb24gc3RyaW5nIGRlc2NyaWJpbmcgdGhlIG1hbnVmYWN0dXJlci4NCi0gIC8vLw0KLSAgVUlO VDE2ICAgICAgICAgICAgICBNZmdTdHJpbmdTZWdtZW50Ow0KLQ0KLSAgLy8vDQotICAvLy8gQkJT IGRldmljZSB0eXBlLiBCQlMgZGV2aWNlIHR5cGVzIGFyZSBkZWZpbmVkIGJlbG93Lg0KLSAgLy8v DQotICBVSU5UMTYgICAgICAgICAgICAgIERldmljZVR5cGU7DQotDQotICAvLy8NCi0gIC8vLyBT dGF0dXMgb2YgdGhpcyBib290IGRldmljZS4gVHlwZSBCQlNfU1RBVFVTX0ZMQUdTIGlzIGRlZmlu ZWQgYmVsb3cuDQotICAvLy8NCi0gIEJCU19TVEFUVVNfRkxBR1MgICAgU3RhdHVzRmxhZ3M7DQot DQotICAvLy8NCi0gIC8vLyBTZWdtZW50Ok9mZnNldCBhZGRyZXNzIG9mIGJvb3QgbG9hZGVyIGZv ciBJUEwgZGV2aWNlcyBvciBpbnN0YWxsIElOVDEzIGhhbmRsZXIgZm9yDQotICAvLy8gQkNWIGRl dmljZXMuDQotICAvLy8NCi0gIFVJTlQxNiAgICAgICAgICAgICAgQm9vdEhhbmRsZXJPZmZzZXQ7 DQotDQotICAvLy8NCi0gIC8vLyBTZWdtZW50Ok9mZnNldCBhZGRyZXNzIG9mIGJvb3QgbG9hZGVy IGZvciBJUEwgZGV2aWNlcyBvciBpbnN0YWxsIElOVDEzIGhhbmRsZXIgZm9yDQotICAvLy8gQkNW IGRldmljZXMuDQotICAvLy8NCi0gIFVJTlQxNiAgICAgICAgICAgICAgQm9vdEhhbmRsZXJTZWdt ZW50Ow0KLQ0KLSAgLy8vDQotICAvLy8gU2VnbWVudDpvZmZzZXQgYWRkcmVzcyBvZiBhbiBBU0NJ SVogZGVzY3JpcHRpb24gc3RyaW5nIGRlc2NyaWJpbmcgdGhpcyBkZXZpY2UuDQotICAvLy8NCi0g IFVJTlQxNiAgICAgICAgICAgICAgRGVzY1N0cmluZ09mZnNldDsNCi0NCi0gIC8vLw0KLSAgLy8v IFNlZ21lbnQ6b2Zmc2V0IGFkZHJlc3Mgb2YgYW4gQVNDSUlaIGRlc2NyaXB0aW9uIHN0cmluZyBk ZXNjcmliaW5nIHRoaXMgZGV2aWNlLg0KLSAgLy8vDQotICBVSU5UMTYgICAgICAgICAgICAgIERl c2NTdHJpbmdTZWdtZW50Ow0KLQ0KLSAgLy8vDQotICAvLy8gUmVzZXJ2ZWQuDQotICAvLy8NCi0g IFVJTlQzMiAgICAgICAgICAgICAgSW5pdFBlclJlc2VydmVkOw0KLQ0KLSAgLy8vDQotICAvLy8g VGhlIHVzZSBvZiB0aGVzZSBmaWVsZHMgaXMgSUJWIGRlcGVuZGVudC4gVGhleSBjYW4gYmUgdXNl ZCB0byBmbGFnIHRoYXQgYW4gT3BST00NCi0gIC8vLyBoYXMgaG9va2VkIHRoZSBzcGVjaWZpZWQg SVJRLiBUaGUgT3BST00gbWF5IGJlIEJCUyBjb21wbGlhbnQgYXMgc29tZSBTQ1NJDQotICAvLy8g QkJTLWNvbXBsaWFudCBPcFJPTXMgYWxzbyBob29rIElSUSB2ZWN0b3JzIGluIG9yZGVyIHRvIHJ1 biB0aGVpciBCSU9TIFNldHVwDQotICAvLy8NCi0gIFVJTlQzMiAgICAgICAgICAgICAgQWRkaXRp b25hbElycTEzSGFuZGxlcjsNCi0NCi0gIC8vLw0KLSAgLy8vIFRoZSB1c2Ugb2YgdGhlc2UgZmll bGRzIGlzIElCViBkZXBlbmRlbnQuIFRoZXkgY2FuIGJlIHVzZWQgdG8gZmxhZyB0aGF0IGFuIE9w Uk9NDQotICAvLy8gaGFzIGhvb2tlZCB0aGUgc3BlY2lmaWVkIElSUS4gVGhlIE9wUk9NIG1heSBi ZSBCQlMgY29tcGxpYW50IGFzIHNvbWUgU0NTSQ0KLSAgLy8vIEJCUy1jb21wbGlhbnQgT3BST01z IGFsc28gaG9vayBJUlEgdmVjdG9ycyBpbiBvcmRlciB0byBydW4gdGhlaXIgQklPUyBTZXR1cA0K LSAgLy8vDQotICBVSU5UMzIgICAgICAgICAgICAgIEFkZGl0aW9uYWxJcnExOEhhbmRsZXI7DQot DQotICAvLy8NCi0gIC8vLyBUaGUgdXNlIG9mIHRoZXNlIGZpZWxkcyBpcyBJQlYgZGVwZW5kZW50 LiBUaGV5IGNhbiBiZSB1c2VkIHRvIGZsYWcgdGhhdCBhbiBPcFJPTQ0KLSAgLy8vIGhhcyBob29r ZWQgdGhlIHNwZWNpZmllZCBJUlEuIFRoZSBPcFJPTSBtYXkgYmUgQkJTIGNvbXBsaWFudCBhcyBz b21lIFNDU0kNCi0gIC8vLyBCQlMtY29tcGxpYW50IE9wUk9NcyBhbHNvIGhvb2sgSVJRIHZlY3Rv cnMgaW4gb3JkZXIgdG8gcnVuIHRoZWlyIEJJT1MgU2V0dXANCi0gIC8vLw0KLSAgVUlOVDMyICAg ICAgICAgICAgICBBZGRpdGlvbmFsSXJxMTlIYW5kbGVyOw0KLQ0KLSAgLy8vDQotICAvLy8gVGhl IHVzZSBvZiB0aGVzZSBmaWVsZHMgaXMgSUJWIGRlcGVuZGVudC4gVGhleSBjYW4gYmUgdXNlZCB0 byBmbGFnIHRoYXQgYW4gT3BST00NCi0gIC8vLyBoYXMgaG9va2VkIHRoZSBzcGVjaWZpZWQgSVJR LiBUaGUgT3BST00gbWF5IGJlIEJCUyBjb21wbGlhbnQgYXMgc29tZSBTQ1NJDQotICAvLy8gQkJT LWNvbXBsaWFudCBPcFJPTXMgYWxzbyBob29rIElSUSB2ZWN0b3JzIGluIG9yZGVyIHRvIHJ1biB0 aGVpciBCSU9TIFNldHVwDQotICAvLy8NCi0gIFVJTlQzMiAgICAgICAgICAgICAgQWRkaXRpb25h bElycTQwSGFuZGxlcjsNCi0gIFVJTlQ4ICAgICAgICAgICAgICAgQXNzaWduZWREcml2ZU51bWJl cjsNCi0gIFVJTlQzMiAgICAgICAgICAgICAgQWRkaXRpb25hbElycTQxSGFuZGxlcjsNCi0gIFVJ TlQzMiAgICAgICAgICAgICAgQWRkaXRpb25hbElycTQ2SGFuZGxlcjsNCi0gIFVJTlQzMiAgICAg ICAgICAgICAgSUJWMTsNCi0gIFVJTlQzMiAgICAgICAgICAgICAgSUJWMjsNCi19IEJCU19UQUJM RTsNCi0NCi0vLy8NCi0vLy8gQkJTIGRldmljZSB0eXBlIHZhbHVlcw0KLS8vL0B7DQotI2RlZmlu ZSBCQlNfRkxPUFBZICAgICAgICAgMHgwMQ0KLSNkZWZpbmUgQkJTX0hBUkRESVNLICAgICAgIDB4 MDINCi0jZGVmaW5lIEJCU19DRFJPTSAgICAgICAgICAweDAzDQotI2RlZmluZSBCQlNfUENNQ0lB ICAgICAgICAgMHgwNA0KLSNkZWZpbmUgQkJTX1VTQiAgICAgICAgICAgIDB4MDUNCi0jZGVmaW5l IEJCU19FTUJFRF9ORVRXT1JLICAweDA2DQotI2RlZmluZSBCQlNfQkVWX0RFVklDRSAgICAgMHg4 MA0KLSNkZWZpbmUgQkJTX1VOS05PV04gICAgICAgIDB4ZmYNCi0vLy9AfQ0KLQ0KLS8vLw0KLS8v LyBCQlMgYm9vdCBwcmlvcml0eSB2YWx1ZXMNCi0vLy9Aew0KLSNkZWZpbmUgQkJTX0RPX05PVF9C T09UX0ZST00gICAgIDB4RkZGQw0KLSNkZWZpbmUgQkJTX0xPV0VTVF9QUklPUklUWSAgICAgIDB4 RkZGRA0KLSNkZWZpbmUgQkJTX1VOUFJJT1JJVElaRURfRU5UUlkgIDB4RkZGRQ0KLSNkZWZpbmUg QkJTX0lHTk9SRV9FTlRSWSAgICAgICAgIDB4RkZGRg0KLS8vL0B9DQotDQotLy8vDQotLy8vIFNN TV9BVFRSSUJVVEVTDQotLy8vDQotdHlwZWRlZiBzdHJ1Y3Qgew0KLSAgLy8vDQotICAvLy8gQWNj ZXNzIG1lY2hhbmlzbSB1c2VkIHRvIGdlbmVyYXRlIHRoZSBzb2Z0IFNNSS4gRGVmaW5lZCB0eXBl cyBhcmUgYmVsb3cuIFRoZSBvdGhlcg0KLSAgLy8vIHZhbHVlcyBhcmUgcmVzZXJ2ZWQgZm9yIGZ1 dHVyZSB1c2FnZS4NCi0gIC8vLw0KLSAgVUlOVDE2ICAgIFR5cGUgICAgICAgICAgICA6IDM7DQot DQotICAvLy8NCi0gIC8vLyBUaGUgc2l6ZSBvZiAicG9ydCIgaW4gYml0cy4gRGVmaW5lZCB2YWx1 ZXMgYXJlIGJlbG93Lg0KLSAgLy8vDQotICBVSU5UMTYgICAgUG9ydEdyYW51bGFyaXR5IDogMzsN Ci0NCi0gIC8vLw0KLSAgLy8vIFRoZSBzaXplIG9mIGRhdGEgaW4gYml0cy4gRGVmaW5lZCB2YWx1 ZXMgYXJlIGJlbG93Lg0KLSAgLy8vDQotICBVSU5UMTYgICAgRGF0YUdyYW51bGFyaXR5IDogMzsN Ci0NCi0gIC8vLw0KLSAgLy8vIFJlc2VydmVkIGZvciBmdXR1cmUgdXNlLg0KLSAgLy8vDQotICBV SU5UMTYgICAgUmVzZXJ2ZWQgICAgICAgIDogNzsNCi19IFNNTV9BVFRSSUJVVEVTOw0KLQ0KLS8v Lw0KLS8vLyBTTU1fQVRUUklCVVRFUyB0eXBlIHZhbHVlcy4NCi0vLy9Aew0KLSNkZWZpbmUgU1RB TkRBUkRfSU8gICAgICAweDAwDQotI2RlZmluZSBTVEFOREFSRF9NRU1PUlkgIDB4MDENCi0vLy9A fQ0KLQ0KLS8vLw0KLS8vLyBTTU1fQVRUUklCVVRFUyBwb3J0IHNpemUgY29uc3RhbnRzLg0KLS8v L0B7DQotI2RlZmluZSBQT1JUX1NJWkVfOCAgIDB4MDANCi0jZGVmaW5lIFBPUlRfU0laRV8xNiAg MHgwMQ0KLSNkZWZpbmUgUE9SVF9TSVpFXzMyICAweDAyDQotI2RlZmluZSBQT1JUX1NJWkVfNjQg IDB4MDMNCi0vLy9AfQ0KLQ0KLS8vLw0KLS8vLyBTTU1fQVRUUklCVVRFUyBkYXRhIHNpemUgY29u c3RhbnRzLg0KLS8vL0B7DQotI2RlZmluZSBEQVRBX1NJWkVfOCAgIDB4MDANCi0jZGVmaW5lIERB VEFfU0laRV8xNiAgMHgwMQ0KLSNkZWZpbmUgREFUQV9TSVpFXzMyICAweDAyDQotI2RlZmluZSBE QVRBX1NJWkVfNjQgIDB4MDMNCi0vLy9AfQ0KLQ0KLS8vLw0KLS8vLyBTTU1fRlVOQ1RJT04gJiBy ZWxhdGluZyBjb25zdGFudHMuDQotLy8vDQotdHlwZWRlZiBzdHJ1Y3Qgew0KLSAgVUlOVDE2ICAg IEZ1bmN0aW9uIDogMTU7DQotICBVSU5UMTYgICAgT3duZXIgICAgOiAxOw0KLX0gU01NX0ZVTkNU SU9OOw0KLQ0KLS8vLw0KLS8vLyBTTU1fRlVOQ1RJT04gRnVuY3Rpb24gY29uc3RhbnRzLg0KLS8v L0B7DQotI2RlZmluZSBJTlQxNV9EMDQyICAgICAgICAgMHgwMDAwDQotI2RlZmluZSBHRVRfVVNC X0JPT1RfSU5GTyAgMHgwMDAxDQotI2RlZmluZSBETUlfUE5QXzUwXzU3ICAgICAgMHgwMDAyDQot Ly8vQH0NCi0NCi0vLy8NCi0vLy8gU01NX0ZVTkNUSU9OIE93bmVyIGNvbnN0YW50cy4NCi0vLy9A ew0KLSNkZWZpbmUgU1RBTkRBUkRfT1dORVIgIDB4MA0KLSNkZWZpbmUgT0VNX09XTkVSICAgICAg IDB4MQ0KLS8vL0B9DQotDQotLy8vDQotLy8vIFRoaXMgc3RydWN0dXJlIGFzc3VtZXMgYm90aCBw b3J0IGFuZCBkYXRhIHNpemVzIGFyZSAxLiBTbW1BdHRyaWJ1dGUgbXVzdCBiZQ0KLS8vLyBwcm9w ZXJseSB0byByZWZsZWN0IHRoYXQgYXNzdW1wdGlvbi4NCi0vLy8NCi10eXBlZGVmIHN0cnVjdCB7 DQotICAvLy8NCi0gIC8vLyBEZXNjcmliZXMgdGhlIGFjY2VzcyBtZWNoYW5pc20sIFNtbVBvcnQs IGFuZCBTbW1EYXRhIHNpemVzLiBUeXBlDQotICAvLy8gU01NX0FUVFJJQlVURVMgaXMgZGVmaW5l ZCBiZWxvdy4NCi0gIC8vLw0KLSAgU01NX0FUVFJJQlVURVMgICAgU21tQXR0cmlidXRlczsNCi0N Ci0gIC8vLw0KLSAgLy8vIEZ1bmN0aW9uIFNvZnQgU01JIGlzIHRvIHBlcmZvcm0uIFR5cGUgU01N X0ZVTkNUSU9OIGlzIGRlZmluZWQgYmVsb3cuDQotICAvLy8NCi0gIFNNTV9GVU5DVElPTiAgICAg IFNtbUZ1bmN0aW9uOw0KLQ0KLSAgLy8vDQotICAvLy8gU21tUG9ydCBzaXplIGRlcGVuZHMgdXBv biBTbW1BdHRyaWJ1dGVzIGFuZCByYW5nZXMgZnJvbTIgYnl0ZXMgdG8gMTYgYnl0ZXMuDQotICAv Ly8NCi0gIFVJTlQ4ICAgICAgICAgICAgIFNtbVBvcnQ7DQotDQotICAvLy8NCi0gIC8vLyBTbW1E YXRhIHNpemUgZGVwZW5kcyB1cG9uIFNtbUF0dHJpYnV0ZXMgYW5kIHJhbmdlcyBmcm9tMiBieXRl cyB0byAxNiBieXRlcy4NCi0gIC8vLw0KLSAgVUlOVDggICAgICAgICAgICAgU21tRGF0YTsNCi19 IFNNTV9FTlRSWTsNCi0NCi0vLy8NCi0vLy8gU01NX1RBQkxFDQotLy8vDQotdHlwZWRlZiBzdHJ1 Y3Qgew0KLSAgVUlOVDE2ICAgICAgIE51bVNtbUVudHJpZXM7ICAgICAgICAgICAgICAgICAgICAg ICAgIC8vLzwgTnVtYmVyIG9mIGVudHJpZXMgcmVwcmVzZW50ZWQgYnkgU21tRW50cnkuDQotICBT TU1fRU5UUlkgICAgU21tRW50cnk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vPCBP bmUgZW50cnkgcGVyIGZ1bmN0aW9uLiBUeXBlIFNNTV9FTlRSWSBpcyBkZWZpbmVkIGJlbG93Lg0K LX0gU01NX1RBQkxFOw0KLQ0KLS8vLw0KLS8vLyBVRENfQVRUUklCVVRFUw0KLS8vLw0KLXR5cGVk ZWYgc3RydWN0IHsNCi0gIC8vLw0KLSAgLy8vIFRoaXMgYml0IHNldCBpbmRpY2F0ZXMgdGhhdCB0 aGUgU2VydmljZUFyZWFEYXRhIGlzIHZhbGlkLg0KLSAgLy8vDQotICBVSU5UOCAgICBEaXJlY3Rv cnlTZXJ2aWNlVmFsaWRpdHkgIDogMTsNCi0NCi0gIC8vLw0KLSAgLy8vIFRoaXMgYml0IHNldCBp bmRpY2F0ZXMgdG8gdXNlIHRoZSBSZXNlcnZlIEFyZWEgQm9vdCBDb2RlIEFkZHJlc3MgKFJBQ0JB KSBvbmx5IGlmDQotICAvLy8gRGlyZWN0b3J5U2VydmljZVZhbGlkaXR5IGlzIDAuDQotICAvLy8N Ci0gIFVJTlQ4ICAgIFJhYmNhVXNlZEZsYWcgICAgICAgICAgICAgOiAxOw0KLQ0KLSAgLy8vDQot ICAvLy8gVGhpcyBiaXQgc2V0IGluZGljYXRlcyB0byBleGVjdXRlIGhhcmQgZGlzayBkaWFnbm9z dGljcy4NCi0gIC8vLw0KLSAgVUlOVDggICAgRXhlY3V0ZUhkZERpYWdub3N0aWNzRmxhZyA6IDE7 DQotDQotICAvLy8NCi0gIC8vLyBSZXNlcnZlZCBmb3IgZnV0dXJlIHVzZS4gU2V0IHRvIDAuDQot ICAvLy8NCi0gIFVJTlQ4ICAgIFJlc2VydmVkICAgICAgICAgICAgICAgICAgOiA1Ow0KLX0gVURD X0FUVFJJQlVURVM7DQotDQotLy8vDQotLy8vIFVEX1RBQkxFDQotLy8vDQotdHlwZWRlZiBzdHJ1 Y3Qgew0KLSAgLy8vDQotICAvLy8gVGhpcyBmaWVsZCBjb250YWlucyB0aGUgYml0LW1hcHBlZCBh dHRyaWJ1dGVzIG9mIHRoZSBQQVJUSUVTIGluZm9ybWF0aW9uLiBUeXBlDQotICAvLy8gVURDX0FU VFJJQlVURVMgaXMgZGVmaW5lZCBiZWxvdy4NCi0gIC8vLw0KLSAgVURDX0FUVFJJQlVURVMgICAg QXR0cmlidXRlczsNCi0NCi0gIC8vLw0KLSAgLy8vIFRoaXMgZmllbGQgY29udGFpbnMgdGhlIHpl cm8tYmFzZWQgZGV2aWNlIG9uIHdoaWNoIHRoZSBzZWxlY3RlZA0KLSAgLy8vIFNlcnZpY2VEYXRh QXJlYSBpcyBwcmVzZW50LiBJdCBpcyAwIGZvciBtYXN0ZXIgYW5kIDEgZm9yIHRoZSBzbGF2ZSBk ZXZpY2UuDQotICAvLy8NCi0gIFVJTlQ4ICAgICAgICAgICAgIERldmljZU51bWJlcjsNCi0NCi0g IC8vLw0KLSAgLy8vIFRoaXMgZmllbGQgY29udGFpbnMgdGhlIHplcm8tYmFzZWQgaW5kZXggaW50 byB0aGUgQmJzVGFibGUgZm9yIHRoZSBwYXJlbnQgZGV2aWNlLg0KLSAgLy8vIFRoaXMgaW5kZXgg YWxsb3dzIHRoZSB1c2VyIHRvIHJlZmVyZW5jZSB0aGUgcGFyZW50IGRldmljZSBpbmZvcm1hdGlv biBzdWNoIGFzIFBDSQ0KLSAgLy8vIGJ1cywgZGV2aWNlIGZ1bmN0aW9uLg0KLSAgLy8vDQotICBV SU5UOCAgICAgICAgICAgICBCYnNUYWJsZUVudHJ5TnVtYmVyRm9yUGFyZW50RGV2aWNlOw0KLQ0K LSAgLy8vDQotICAvLy8gVGhpcyBmaWVsZCBjb250YWlucyB0aGUgemVyby1iYXNlZCBpbmRleCBp bnRvIHRoZSBCYnNUYWJsZSBmb3IgdGhlIGJvb3QgZW50cnkuDQotICAvLy8NCi0gIFVJTlQ4ICAg ICAgICAgICAgIEJic1RhYmxlRW50cnlOdW1iZXJGb3JCb290Ow0KLQ0KLSAgLy8vDQotICAvLy8g VGhpcyBmaWVsZCBjb250YWlucyB0aGUgemVyby1iYXNlZCBpbmRleCBpbnRvIHRoZSBCYnNUYWJs ZSBmb3IgdGhlIEhERCBkaWFnbm9zdGljcyBlbnRyeS4NCi0gIC8vLw0KLSAgVUlOVDggICAgICAg ICAgICAgQmJzVGFibGVFbnRyeU51bWJlckZvckhkZERpYWc7DQotDQotICAvLy8NCi0gIC8vLyBU aGUgcmF3IEJlZXIgZGF0YS4NCi0gIC8vLw0KLSAgVUlOVDggICAgICAgICAgICAgQmVlckRhdGFb MTI4XTsNCi0NCi0gIC8vLw0KLSAgLy8vIFRoZSByYXcgZGF0YSBvZiBzZWxlY3RlZCBzZXJ2aWNl IGFyZWEuDQotICAvLy8NCi0gIFVJTlQ4ICAgICAgICAgICAgIFNlcnZpY2VBcmVhRGF0YVs2NF07 DQotfSBVRF9UQUJMRTsNCi0NCi0jZGVmaW5lIEVGSV9UT19MRUdBQ1lfTUFKT1JfVkVSU0lPTiAg MHgwMg0KLSNkZWZpbmUgRUZJX1RPX0xFR0FDWV9NSU5PUl9WRVJTSU9OICAweDAwDQotI2RlZmlu ZSBNQVhfSURFX0NPTlRST0xMRVIgICAgICAgICAgIDgNCi0NCi0vLy8NCi0vLy8gRUZJX1RPX0NP TVBBVElCSUxJVFkxNl9CT09UX1RBQkxFDQotLy8vDQotdHlwZWRlZiBzdHJ1Y3Qgew0KLSAgVUlO VDE2ICAgICAgICAgICAgICAgICAgICAgICAgIE1ham9yVmVyc2lvbjsgICAgICAgICAgICAgICAg ICAgIC8vLzwgVGhlIEVmaUNvbXBhdGliaWxpdHkgbWFqb3IgdmVyc2lvbiBudW1iZXIuDQotICBV SU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgTWlub3JWZXJzaW9uOyAgICAgICAgICAgICAg ICAgICAgLy8vPCBUaGUgRWZpQ29tcGF0aWJpbGl0eSBtaW5vciB2ZXJzaW9uIG51bWJlci4NCi0g IFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICBBY3BpVGFibGU7ICAgICAgICAgICAgICAg ICAgICAgICAvLy88IFRoZSBsb2NhdGlvbiBvZiB0aGUgUlNEVCBBQ1BJIHRhYmxlLiA8IDRHIHJh bmdlLg0KLSAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgIFNtYmlvc1RhYmxlOyAgICAg ICAgICAgICAgICAgICAgIC8vLzwgVGhlIGxvY2F0aW9uIG9mIHRoZSBTTUJJT1MgdGFibGUgaW4g RUZJIG1lbW9yeS4gPCA0RyByYW5nZS4NCi0gIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAg ICBTbWJpb3NUYWJsZUxlbmd0aDsNCi0gIC8vDQotICAvLyBMZWdhY3kgU0lPIHN0YXRlDQotICAv Lw0KLSAgREVWSUNFX1BST0RVQ0VSX0RBVEFfSEVBREVSICAgIFNpb0RhdGE7ICAgICAgICAgICAg ICAgICAgICAgICAgIC8vLzwgU3RhbmRhcmQgdHJhZGl0aW9uYWwgZGV2aWNlIGluZm9ybWF0aW9u Lg0KLSAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgIERldmljZVBhdGhUeXBlOyAgICAg ICAgICAgICAgICAgIC8vLzwgVGhlIGRlZmF1bHQgYm9vdCB0eXBlLg0KLSAgVUlOVDE2ICAgICAg ICAgICAgICAgICAgICAgICAgIFBjaUlycU1hc2s7ICAgICAgICAgICAgICAgICAgICAgIC8vLzwg TWFzayBvZiB3aGljaCBJUlFzIGhhdmUgYmVlbiBhc3NpZ25lZCB0byBQQ0kuDQotICBVSU5UMzIg ICAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVyRTgyMEVudHJpZXM7ICAgICAgICAgICAgICAg Ly8vPCBOdW1iZXIgb2YgRTgyMCBlbnRyaWVzLiBUaGUgbnVtYmVyIGNhbiBjaGFuZ2UgZnJvbSB0 aGUNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAvLy88IENvbXBhdGliaWxpdHkxNkluaXRpYWxpemVZb3Vyc2VsZigpIGZ1 bmN0aW9uLg0KLSAgLy8NCi0gIC8vIENvbnRyb2xsZXIgJiBEcml2ZSBJZGVudGlmeVsyXSBwZXIg Y29udHJvbGxlciBpbmZvcm1hdGlvbg0KLSAgLy8NCi0gIEhERF9JTkZPICAgICAgICAgICAgICAg ICAgICAgICBIZGRJbmZvW01BWF9JREVfQ09OVFJPTExFUl07ICAgICAvLy88IEhhcmQgZGlzayBk cml2ZSBpbmZvcm1hdGlvbiwgaW5jbHVkaW5nIHJhdyBJZGVudGlmeSBEcml2ZSBkYXRhLg0KLSAg VUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgIE51bWJlckJic0VudHJpZXM7ICAgICAgICAg ICAgICAgIC8vLzwgTnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIEJCUyB0YWJsZQ0KLSAgVUlOVDMy ICAgICAgICAgICAgICAgICAgICAgICAgIEJic1RhYmxlOyAgICAgICAgICAgICAgICAgICAgICAg IC8vLzwgQSBwb2ludGVyIHRvIHRoZSBCQlMgdGFibGUuIFR5cGUgQkJTX1RBQkxFIGlzIGRlZmlu ZWQgYmVsb3cuDQotICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgU21tVGFibGU7ICAg ICAgICAgICAgICAgICAgICAgICAgLy8vPCBBIHBvaW50ZXIgdG8gdGhlIFNNTSB0YWJsZS4gVHlw ZSBTTU1fVEFCTEUgaXMgZGVmaW5lZCBiZWxvdy4NCi0gIFVJTlQzMiAgICAgICAgICAgICAgICAg ICAgICAgICBPc01lbW9yeUFib3ZlMU1iOyAgICAgICAgICAgICAgICAvLy88IFRoZSBhbW91bnQg b2YgdXNhYmxlIG1lbW9yeSBhYm92ZSAxIE1CLCBpLmUuIEU4MjAgdHlwZSAxIG1lbW9yeS4gVGhp cyB2YWx1ZSBjYW4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAvLy88IGRpZmZlciBmcm9tIHRoZSB2YWx1ZSBpbiBFRklf VE9fQ09NUEFUSUJJTElUWTE2X0lOSVRfVEFCTEUgYXMgbW9yZQ0KLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLzwgbWVt b3J5IG1heSBoYXZlIGJlZW4gZGlzY292ZXJlZC4NCi0gIFVJTlQzMiAgICAgICAgICAgICAgICAg ICAgICAgICBVbmNvbnZlbnRpb25hbERldmljZVRhYmxlOyAgICAgICAvLy88IEluZm9ybWF0aW9u IHRvIGJvb3Qgb2ZmIGFuIHVuY29udmVudGlvbmFsIGRldmljZSBsaWtlIGEgUEFSVElFUyBwYXJ0 aXRpb24uIFR5cGUNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAvLy88IFVEX1RBQkxFIGlzIGRlZmluZWQgYmVsb3cuDQot fSBFRklfVE9fQ09NUEFUSUJJTElUWTE2X0JPT1RfVEFCTEU7DQotDQotLy8vDQotLy8vIEVGSV9M RUdBQ1lfSU5TVEFMTF9QQ0lfSEFORExFUg0KLS8vLw0KLXR5cGVkZWYgc3RydWN0IHsNCi0gIFVJ TlQ4ICAgICBQY2lCdXM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLzwg VGhlIFBDSSBidXMgb2YgdGhlIGRldmljZS4NCi0gIFVJTlQ4ICAgICBQY2lEZXZpY2VGdW47ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLzwgVGhlIFBDSSBkZXZpY2UgaW4gYml0cyA3 OjMgYW5kIGZ1bmN0aW9uIGluIGJpdHMgMjowLg0KLSAgVUlOVDggICAgIFBjaVNlZ21lbnQ7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vPCBUaGUgUENJIHNlZ21lbnQgb2YgdGhl IGRldmljZS4NCi0gIFVJTlQ4ICAgICBQY2lDbGFzczsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC8vLzwgVGhlIFBDSSBjbGFzcyBjb2RlIG9mIHRoZSBkZXZpY2UuDQotICBVSU5U OCAgICAgUGNpU3ViY2xhc3M7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy88IFRo ZSBQQ0kgc3ViY2xhc3MgY29kZSBvZiB0aGUgZGV2aWNlLg0KLSAgVUlOVDggICAgIFBjaUludGVy ZmFjZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vPCBUaGUgUENJIGludGVyZmFj ZSBjb2RlIG9mIHRoZSBkZXZpY2UuDQotICAvLw0KLSAgLy8gUHJpbWFyeSBzZWN0aW9uDQotICAv Lw0KLSAgVUlOVDggICAgIFByaW1hcnlJcnE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLy8vPCBUaGUgcHJpbWFyeSBkZXZpY2UgSVJRLg0KLSAgVUlOVDggICAgIFByaW1hcnlSZXNl cnZlZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vPCBSZXNlcnZlZC4NCi0gIFVJTlQx NiAgICBQcmltYXJ5Q29udHJvbDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLzwgVGhl IHByaW1hcnkgZGV2aWNlIGNvbnRyb2wgSS9PIGJhc2UuDQotICBVSU5UMTYgICAgUHJpbWFyeUJh c2U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy88IFRoZSBwcmltYXJ5IGRldmlj ZSBJL08gYmFzZS4NCi0gIFVJTlQxNiAgICBQcmltYXJ5QnVzTWFzdGVyOyAgICAgICAgICAgICAg ICAgICAgICAgICAgIC8vLzwgVGhlIHByaW1hcnkgZGV2aWNlIGJ1cyBtYXN0ZXIgSS9PIGJhc2Uu DQotICAvLw0KLSAgLy8gU2Vjb25kYXJ5IFNlY3Rpb24NCi0gIC8vDQotICBVSU5UOCAgICAgU2Vj b25kYXJ5SXJxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy88IFRoZSBzZWNvbmRh cnkgZGV2aWNlIElSUS4NCi0gIFVJTlQ4ICAgICBTZWNvbmRhcnlSZXNlcnZlZDsgICAgICAgICAg ICAgICAgICAgICAgICAgIC8vLzwgUmVzZXJ2ZWQuDQotICBVSU5UMTYgICAgU2Vjb25kYXJ5Q29u dHJvbDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy88IFRoZSBzZWNvbmRhcnkgZGV2aWNl IGNvbnRyb2wgSS9PIGJhc2UuDQotICBVSU5UMTYgICAgU2Vjb25kYXJ5QmFzZTsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAvLy88IFRoZSBzZWNvbmRhcnkgZGV2aWNlIEkvTyBiYXNlLg0K LSAgVUlOVDE2ICAgIFNlY29uZGFyeUJ1c01hc3RlcjsgICAgICAgICAgICAgICAgICAgICAgICAg Ly8vPCBUaGUgc2Vjb25kYXJ5IGRldmljZSBidXMgbWFzdGVyIEkvTyBiYXNlLg0KLX0gRUZJX0xF R0FDWV9JTlNUQUxMX1BDSV9IQU5ETEVSOw0KLQ0KLS8vDQotLy8gUmVzdG9yZSBkZWZhdWx0IHBh Y2sgdmFsdWUNCi0vLw0KLSNwcmFnbWEgcGFjaygpDQotDQotI2RlZmluZSBFRklfTEVHQUNZX0JJ T1NfUFJPVE9DT0xfR1VJRCBcDQotICB7IFwNCi0gICAgMHhkYjlhMWUzZCwgMHg0NWNiLCAweDRh YmIsIHsweDg1LCAweDNiLCAweGU1LCAweDM4LCAweDdmLCAweGRiLCAweDJlLCAweDJkIH0gXA0K LSAgfQ0KLQ0KLXR5cGVkZWYgc3RydWN0IF9FRklfTEVHQUNZX0JJT1NfUFJPVE9DT0wgRUZJX0xF R0FDWV9CSU9TX1BST1RPQ09MOw0KLQ0KLS8vLw0KLS8vLyBGbGFncyByZXR1cm5lZCBieSBDaGVj a1BjaVJvbSgpLg0KLS8vLw0KLSNkZWZpbmUgTk9fUk9NICAgICAgICAgICAgMHgwMA0KLSNkZWZp bmUgUk9NX0ZPVU5EICAgICAgICAgMHgwMQ0KLSNkZWZpbmUgVkFMSURfTEVHQUNZX1JPTSAgMHgw Mg0KLSNkZWZpbmUgUk9NX1dJVEhfQ09ORklHICAgMHgwNCAgICAgLy8vPCBOb3QgZGVmaW5lZCBp biB0aGUgRnJhbWV3b3JrIENTTSBTcGVjaWZpY2F0aW9uLg0KLQ0KLS8vLw0KLS8vLyBUaGUgZm9s bG93aW5nIG1hY3JvcyBkbyBub3QgYXBwZWFyIGluIHRoZSBGcmFtZXdvcmsgQ1NNIFNwZWNpZmlj YXRpb24gYW5kDQotLy8vIGFyZSBrZXB0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IG9ubHku ICBUaGV5IGNvbnZlcnQgMzItYml0IGFkZHJlc3MgKF9BZHIpDQotLy8vIHRvIFNlZ21lbnQ6T2Zm c2V0IDE2LWJpdCBmb3JtLg0KLS8vLw0KLS8vL0B7DQotI2RlZmluZSBFRklfU0VHTUVOVChfQWRy KSAgKFVJTlQxNikgKChVSU5UMTYpICgoKFVJTlROKSAoX0FkcikpID4+IDQpICYgMHhmMDAwKQ0K LSNkZWZpbmUgRUZJX09GRlNFVChfQWRyKSAgIChVSU5UMTYpICgoKFVJTlQxNikgKChVSU5UTikg KF9BZHIpKSkgJiAweGZmZmYpDQotLy8vQH0NCi0NCi0jZGVmaW5lIENBUlJZX0ZMQUcgIDB4MDEN Ci0NCi0vLy8NCi0vLy8gRUZJX0VGTEFHU19SRUcNCi0vLy8NCi10eXBlZGVmIHN0cnVjdCB7DQot ICBVSU5UMzIgICAgQ0YgICAgICAgIDogMTsNCi0gIFVJTlQzMiAgICBSZXNlcnZlZDEgOiAxOw0K LSAgVUlOVDMyICAgIFBGICAgICAgICA6IDE7DQotICBVSU5UMzIgICAgUmVzZXJ2ZWQyIDogMTsN Ci0gIFVJTlQzMiAgICBBRiAgICAgICAgOiAxOw0KLSAgVUlOVDMyICAgIFJlc2VydmVkMyA6IDE7 DQotICBVSU5UMzIgICAgWkYgICAgICAgIDogMTsNCi0gIFVJTlQzMiAgICBTRiAgICAgICAgOiAx Ow0KLSAgVUlOVDMyICAgIFRGICAgICAgICA6IDE7DQotICBVSU5UMzIgICAgSUYgICAgICAgIDog MTsNCi0gIFVJTlQzMiAgICBERiAgICAgICAgOiAxOw0KLSAgVUlOVDMyICAgIE9GICAgICAgICA6 IDE7DQotICBVSU5UMzIgICAgSU9QTCAgICAgIDogMjsNCi0gIFVJTlQzMiAgICBOVCAgICAgICAg OiAxOw0KLSAgVUlOVDMyICAgIFJlc2VydmVkNCA6IDI7DQotICBVSU5UMzIgICAgVk0gICAgICAg IDogMTsNCi0gIFVJTlQzMiAgICBSZXNlcnZlZDUgOiAxNDsNCi19IEVGSV9FRkxBR1NfUkVHOw0K LQ0KLS8vLw0KLS8vLyBFRklfRFdPUkRfUkVHUw0KLS8vLw0KLXR5cGVkZWYgc3RydWN0IHsNCi0g IFVJTlQzMiAgICAgICAgICAgIEVBWDsNCi0gIFVJTlQzMiAgICAgICAgICAgIEVCWDsNCi0gIFVJ TlQzMiAgICAgICAgICAgIEVDWDsNCi0gIFVJTlQzMiAgICAgICAgICAgIEVEWDsNCi0gIFVJTlQz MiAgICAgICAgICAgIEVTSTsNCi0gIFVJTlQzMiAgICAgICAgICAgIEVESTsNCi0gIEVGSV9FRkxB R1NfUkVHICAgIEVGbGFnczsNCi0gIFVJTlQxNiAgICAgICAgICAgIEVTOw0KLSAgVUlOVDE2ICAg ICAgICAgICAgQ1M7DQotICBVSU5UMTYgICAgICAgICAgICBTUzsNCi0gIFVJTlQxNiAgICAgICAg ICAgIERTOw0KLSAgVUlOVDE2ICAgICAgICAgICAgRlM7DQotICBVSU5UMTYgICAgICAgICAgICBH UzsNCi0gIFVJTlQzMiAgICAgICAgICAgIEVCUDsNCi0gIFVJTlQzMiAgICAgICAgICAgIEVTUDsN Ci19IEVGSV9EV09SRF9SRUdTOw0KLQ0KLS8vLw0KLS8vLyBFRklfRkxBR1NfUkVHDQotLy8vDQot dHlwZWRlZiBzdHJ1Y3Qgew0KLSAgVUlOVDE2ICAgIENGICAgICAgICA6IDE7DQotICBVSU5UMTYg ICAgUmVzZXJ2ZWQxIDogMTsNCi0gIFVJTlQxNiAgICBQRiAgICAgICAgOiAxOw0KLSAgVUlOVDE2 ICAgIFJlc2VydmVkMiA6IDE7DQotICBVSU5UMTYgICAgQUYgICAgICAgIDogMTsNCi0gIFVJTlQx NiAgICBSZXNlcnZlZDMgOiAxOw0KLSAgVUlOVDE2ICAgIFpGICAgICAgICA6IDE7DQotICBVSU5U MTYgICAgU0YgICAgICAgIDogMTsNCi0gIFVJTlQxNiAgICBURiAgICAgICAgOiAxOw0KLSAgVUlO VDE2ICAgIElGICAgICAgICA6IDE7DQotICBVSU5UMTYgICAgREYgICAgICAgIDogMTsNCi0gIFVJ TlQxNiAgICBPRiAgICAgICAgOiAxOw0KLSAgVUlOVDE2ICAgIElPUEwgICAgICA6IDI7DQotICBV SU5UMTYgICAgTlQgICAgICAgIDogMTsNCi0gIFVJTlQxNiAgICBSZXNlcnZlZDQgOiAxOw0KLX0g RUZJX0ZMQUdTX1JFRzsNCi0NCi0vLy8NCi0vLy8gRUZJX1dPUkRfUkVHUw0KLS8vLw0KLXR5cGVk ZWYgc3RydWN0IHsNCi0gIFVJTlQxNiAgICAgICAgICAgQVg7DQotICBVSU5UMTYgICAgICAgICAg IFJlc2VydmVkQVg7DQotICBVSU5UMTYgICAgICAgICAgIEJYOw0KLSAgVUlOVDE2ICAgICAgICAg ICBSZXNlcnZlZEJYOw0KLSAgVUlOVDE2ICAgICAgICAgICBDWDsNCi0gIFVJTlQxNiAgICAgICAg ICAgUmVzZXJ2ZWRDWDsNCi0gIFVJTlQxNiAgICAgICAgICAgRFg7DQotICBVSU5UMTYgICAgICAg ICAgIFJlc2VydmVkRFg7DQotICBVSU5UMTYgICAgICAgICAgIFNJOw0KLSAgVUlOVDE2ICAgICAg ICAgICBSZXNlcnZlZFNJOw0KLSAgVUlOVDE2ICAgICAgICAgICBESTsNCi0gIFVJTlQxNiAgICAg ICAgICAgUmVzZXJ2ZWRESTsNCi0gIEVGSV9GTEFHU19SRUcgICAgRmxhZ3M7DQotICBVSU5UMTYg ICAgICAgICAgIFJlc2VydmVkRmxhZ3M7DQotICBVSU5UMTYgICAgICAgICAgIEVTOw0KLSAgVUlO VDE2ICAgICAgICAgICBDUzsNCi0gIFVJTlQxNiAgICAgICAgICAgU1M7DQotICBVSU5UMTYgICAg ICAgICAgIERTOw0KLSAgVUlOVDE2ICAgICAgICAgICBGUzsNCi0gIFVJTlQxNiAgICAgICAgICAg R1M7DQotICBVSU5UMTYgICAgICAgICAgIEJQOw0KLSAgVUlOVDE2ICAgICAgICAgICBSZXNlcnZl ZEJQOw0KLSAgVUlOVDE2ICAgICAgICAgICBTUDsNCi0gIFVJTlQxNiAgICAgICAgICAgUmVzZXJ2 ZWRTUDsNCi19IEVGSV9XT1JEX1JFR1M7DQotDQotLy8vDQotLy8vIEVGSV9CWVRFX1JFR1MNCi0v Ly8NCi10eXBlZGVmIHN0cnVjdCB7DQotICBVSU5UOCAgICAgQUwsIEFIOw0KLSAgVUlOVDE2ICAg IFJlc2VydmVkQVg7DQotICBVSU5UOCAgICAgQkwsIEJIOw0KLSAgVUlOVDE2ICAgIFJlc2VydmVk Qlg7DQotICBVSU5UOCAgICAgQ0wsIENIOw0KLSAgVUlOVDE2ICAgIFJlc2VydmVkQ1g7DQotICBV SU5UOCAgICAgREwsIERIOw0KLSAgVUlOVDE2ICAgIFJlc2VydmVkRFg7DQotfSBFRklfQllURV9S RUdTOw0KLQ0KLS8vLw0KLS8vLyBFRklfSUEzMl9SRUdJU1RFUl9TRVQNCi0vLy8NCi10eXBlZGVm IHVuaW9uIHsNCi0gIEVGSV9EV09SRF9SRUdTICAgIEU7DQotICBFRklfV09SRF9SRUdTICAgICBY Ow0KLSAgRUZJX0JZVEVfUkVHUyAgICAgSDsNCi19IEVGSV9JQTMyX1JFR0lTVEVSX1NFVDsNCi0N Ci0vKioNCi0gIFRodW5rIHRvIDE2LWJpdCByZWFsIG1vZGUgYW5kIGV4ZWN1dGUgYSBzb2Z0d2Fy ZSBpbnRlcnJ1cHQgd2l0aCBhIHZlY3Rvcg0KLSAgb2YgQmlvc0ludC4gUmVncyB3aWxsIGNvbnRh aW4gdGhlIDE2LWJpdCByZWdpc3RlciBjb250ZXh0IG9uIGVudHJ5IGFuZA0KLSAgZXhpdC4NCi0N Ci0gIEBwYXJhbVtpbl0gICAgIFRoaXMgICAgICBUaGUgcHJvdG9jb2wgaW5zdGFuY2UgcG9pbnRl ci4NCi0gIEBwYXJhbVtpbl0gICAgIEJpb3NJbnQgICBUaGUgcHJvY2Vzc29yIGludGVycnVwdCB2 ZWN0b3IgdG8gaW52b2tlLg0KLSAgQHBhcmFtW2luLG91dF0gUmVnICAgICAgIFJlZ2lzdGVyIGNv bnRleHRlZCBwYXNzZWQgaW50byAoYW5kIHJldHVybmVkKSBmcm9tIHRodW5rIHRvDQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgMTYtYml0IG1vZGUuDQotDQotICBAcmV0dmFsIFRSVUUgICAg ICAgICAgICAgICAgVGh1bmsgY29tcGxldGVkIHdpdGggbm8gQklPUyBlcnJvcnMgaW4gdGhlIHRh cmdldCBjb2RlLiBTZWUgUmVncyBmb3Igc3RhdHVzLg0KLSAgQHJldHZhbCBGQUxTRSAgICAgICAg ICAgICAgICAgIFRoZXJlIHdhcyBhIEJJT1MgZXJyb3IgaW4gdGhlIHRhcmdldCBjb2RlLg0KLSoq Lw0KLXR5cGVkZWYNCi1CT09MRUFODQotKEVGSUFQSSAqRUZJX0xFR0FDWV9CSU9TX0lOVDg2KSgN Ci0gIElOICAgICBFRklfTEVHQUNZX0JJT1NfUFJPVE9DT0wgICpUaGlzLA0KLSAgSU4gICAgIFVJ TlQ4ICAgICAgICAgICAgICAgICAgICAgQmlvc0ludCwNCi0gIElOIE9VVCBFRklfSUEzMl9SRUdJ U1RFUl9TRVQgICAgICpSZWdzDQotICApOw0KLQ0KLS8qKg0KLSAgVGh1bmsgdG8gMTYtYml0IHJl YWwgbW9kZSBhbmQgY2FsbCBTZWdtZW50Ok9mZnNldC4gUmVncyB3aWxsIGNvbnRhaW4gdGhlDQot ICAxNi1iaXQgcmVnaXN0ZXIgY29udGV4dCBvbiBlbnRyeSBhbmQgZXhpdC4gQXJndW1lbnRzIGNh biBiZSBwYXNzZWQgb24NCi0gIHRoZSBTdGFjayBhcmd1bWVudA0KLQ0KLSAgQHBhcmFtW2luXSBU aGlzICAgICAgICBUaGUgcHJvdG9jb2wgaW5zdGFuY2UgcG9pbnRlci4NCi0gIEBwYXJhbVtpbl0g U2VnbWVudCAgICAgVGhlIHNlZ2VtbnQgb2YgMTYtYml0IG1vZGUgY2FsbC4NCi0gIEBwYXJhbVtp bl0gT2Zmc2V0ICAgICAgVGhlIG9mZnNldCBvZiAxNi1iaXQgbWRvZSBjYWxsLg0KLSAgQHBhcmFt W2luXSBSZWcgICAgICAgICBSZWdpc3RlciBjb250ZXh0ZWQgcGFzc2VkIGludG8gKGFuZCByZXR1 cm5lZCkgZnJvbSB0aHVuayB0bw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAxNi1iaXQgbW9k ZS4NCi0gIEBwYXJhbVtpbl0gU3RhY2sgICAgICAgVGhlIGNhbGxlciBhbGxvY2F0ZWQgc3RhY2sg dXNlZCB0byBwYXNzIGFyZ3VtZW50cy4NCi0gIEBwYXJhbVtpbl0gU3RhY2tTaXplICAgVGhlIHNp emUgb2YgU3RhY2sgaW4gYnl0ZXMuDQotDQotICBAcmV0dmFsIEZBTFNFICAgICAgICAgICAgICAg ICBUaHVuayBjb21wbGV0ZWQgd2l0aCBubyBCSU9TIGVycm9ycyBpbiB0aGUgdGFyZ2V0IGNvZGUu ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWUgUmVncyBmb3Igc3RhdHVzLiAgQHJl dHZhbCBUUlVFICAgICAgICAgICAgICAgICAgVGhlcmUgd2FzIGEgQklPUyBlcnJvciBpbiB0aGUg dGFyZ2V0IGNvZGUuDQotKiovDQotdHlwZWRlZg0KLUJPT0xFQU4NCi0oRUZJQVBJICpFRklfTEVH QUNZX0JJT1NfRkFSQ0FMTDg2KSgNCi0gIElOIEVGSV9MRUdBQ1lfQklPU19QUk9UT0NPTCAgKlRo aXMsDQotICBJTiBVSU5UMTYgICAgICAgICAgICAgICAgICAgIFNlZ21lbnQsDQotICBJTiBVSU5U MTYgICAgICAgICAgICAgICAgICAgIE9mZnNldCwNCi0gIElOIEVGSV9JQTMyX1JFR0lTVEVSX1NF VCAgICAgKlJlZ3MsDQotICBJTiBWT0lEICAgICAgICAgICAgICAgICAgICAgICpTdGFjaywNCi0g IElOIFVJTlROICAgICAgICAgICAgICAgICAgICAgU3RhY2tTaXplDQotICApOw0KLQ0KLS8qKg0K LSAgVGVzdCB0byBzZWUgaWYgYSBsZWdhY3kgUENJIFJPTSBleGlzdHMgZm9yIHRoaXMgZGV2aWNl LiBPcHRpb25hbGx5IHJldHVybg0KLSAgdGhlIExlZ2FjeSBST00gaW5zdGFuY2UgZm9yIHRoaXMg UENJIGRldmljZS4NCi0NCi0gIEBwYXJhbVtpbl0gIFRoaXMgICAgICAgIFRoZSBwcm90b2NvbCBp bnN0YW5jZSBwb2ludGVyLg0KLSAgQHBhcmFtW2luXSAgUGNpSGFuZGxlICAgVGhlIFBDSSBQQy1B VCBPUFJPTSBmcm9tIHRoaXMgZGV2aWNlcyBST00gQkFSIHdpbGwgYmUgbG9hZGVkDQotICBAcGFy YW1bb3V0XSBSb21JbWFnZSAgICBSZXR1cm4gdGhlIGxlZ2FjeSBQQ0kgUk9NIGZvciB0aGlzIGRl dmljZS4NCi0gIEBwYXJhbVtvdXRdIFJvbVNpemUgICAgIFRoZSBzaXplIG9mIFJPTSBJbWFnZS4N Ci0gIEBwYXJhbVtvdXRdIEZsYWdzICAgICAgIEluZGljYXRlcyBpZiBST00gZm91bmQgYW5kIGlm IFBDLUFULiBNdWx0aXBsZSBiaXRzIGNhbiBiZSBzZXQgYXMgZm9sbG93czoNCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgLSAwMCA9IE5vIFJPTS4NCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgLSAwMSA9IFJPTSBGb3VuZC4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLSAw MiA9IFJPTSBpcyBhIHZhbGlkIGxlZ2FjeSBST00uDQotDQotICBAcmV0dmFsIEVGSV9TVUNDRVNT ICAgICAgIFRoZSBMZWdhY3kgT3B0aW9uIFJPTSBhdmFpbGFibGUgZm9yIHRoaXMgZGV2aWNlDQot ICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgIFRoZSBMZWdhY3kgT3B0aW9uIFJPTSBpcyBub3Qg c3VwcG9ydGVkLg0KLQ0KLSoqLw0KLXR5cGVkZWYNCi1FRklfU1RBVFVTDQotKEVGSUFQSSAqRUZJ X0xFR0FDWV9CSU9TX0NIRUNLX1JPTSkoDQotICBJTiAgRUZJX0xFR0FDWV9CSU9TX1BST1RPQ09M ICAqVGhpcywNCi0gIElOICBFRklfSEFORExFICAgICAgICAgICAgICAgIFBjaUhhbmRsZSwNCi0g IE9VVCBWT0lEICAgICAgICAgICAgICAgICAgICAgICoqUm9tSW1hZ2UgIE9QVElPTkFMLA0KLSAg T1VUIFVJTlROICAgICAgICAgICAgICAgICAgICAgKlJvbVNpemUgIE9QVElPTkFMLA0KLSAgT1VU IFVJTlROICAgICAgICAgICAgICAgICAgICAgKkZsYWdzDQotICApOw0KLQ0KLS8qKg0KLSAgTG9h ZCBhIGxlZ2FjeSBQQy1BVCBPUFJPTSBvbiB0aGUgUGNpSGFuZGxlIGRldmljZS4gUmV0dXJuIGlu Zm9ybWF0aW9uDQotICBhYm91dCBob3cgbWFueSBkaXNrcyB3ZXJlIGFkZGVkIGJ5IHRoZSBPUFJP TSBhbmQgdGhlIHNoYWRvdyBhZGRyZXNzIGFuZA0KLSAgc2l6ZS4gRGlza1N0YXJ0ICYgRGlza0Vu ZCBhcmUgSU5UIDEzaCBkcml2ZSBsZXR0ZXJzLiBUaHVzIDB4ODAgaXMgQzoNCi0NCi0gIEBwYXJh bVtpbl0gIFRoaXMgICAgICAgICAgICAgICBUaGUgcHJvdG9jb2wgaW5zdGFuY2UgcG9pbnRlci4N Ci0gIEBwYXJhbVtpbl0gIFBjaUhhbmRsZSAgICAgICAgICBUaGUgUENJIFBDLUFUIE9QUk9NIGZy b20gdGhpcyBkZXZpY2VzIFJPTSBCQVIgd2lsbCBiZSBsb2FkZWQuDQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgVGhpcyB2YWx1ZSBpcyBOVUxMIGlmIFJvbUltYWdlIGlzIG5vbi1O VUxMLiBUaGlzIGlzIHRoZSBub3JtYWwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjYXNlLg0KLSAgQHBhcmFtW2luXSAgUm9tSW1hZ2UgICAgICAgICAgIEEgUENJIFBDLUFUIFJP TSBpbWFnZS4gVGhpcyBhcmd1bWVudCBpcyBub24tTlVMTCBpZiB0aGVyZSBpcw0KLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG5vIGhhcmR3YXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUg Uk9NIGFuZCB0aHVzIG5vIFBjaUhhbmRsZSwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBvdGhlcndpc2UgaXMgbXVzdCBiZSBOVUxMLg0KLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEV4YW1wbGUgaXMgUFhFIGJhc2UgY29kZS4NCi0gIEBwYXJhbVtvdXRdIEZsYWdz ICAgICAgICAgICAgICBUaGUgdHlwZSBvZiBST00gZGlzY292ZXJlZC4gTXVsdGlwbGUgYml0cyBj YW4gYmUgc2V0LCBhcyBmb2xsb3dzOg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLSAwMCA9IE5vIFJPTS4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0g MDEgPSBST00gZm91bmQuDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIDAy ID0gUk9NIGlzIGEgdmFsaWQgbGVnYWN5IFJPTS4NCi0gIEBwYXJhbVtvdXRdIERpc2tTdGFydCAg ICAgICAgICBUaGUgZGlzayBudW1iZXIgb2YgZmlyc3QgZGV2aWNlIGhvb2tlZCBieSB0aGUgUk9N LiBJZiBEaXNrU3RhcnQNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB0aGUg c2FtZSBhcyBEaXNrRW5kIG5vIGRpc2tlZCB3ZXJlIGhvb2tlZC4NCi0gIEBwYXJhbVtvdXRdIERp c2tFbmQgICAgICAgICAgICBkaXNrIG51bWJlciBvZiB0aGUgbGFzdCBkZXZpY2UgaG9va2VkIGJ5 IHRoZSBST00uDQotICBAcGFyYW1bb3V0XSBSb21TaGFkb3dBZGRyZXNzICAgU2hhZG93IGFkZHJl c3Mgb2YgUEMtQVQgUk9NLg0KLSAgQHBhcmFtW291dF0gUm9tU2hhZG93U2l6ZSAgICAgIFNpemUg b2YgUm9tU2hhZG93QWRkcmVzcyBpbiBieXRlcy4NCi0NCi0gIEByZXR2YWwgRUZJX1NVQ0NFU1Mg ICAgICAgICAgICAgVGh1bmsgY29tcGxldGVkLCBzZWUgUmVncyBmb3Igc3RhdHVzLg0KLSAgQHJl dHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgICBQY2lIYW5kbGUgbm90IGZvdW5kDQotDQotKiov DQotdHlwZWRlZg0KLUVGSV9TVEFUVVMNCi0oRUZJQVBJICpFRklfTEVHQUNZX0JJT1NfSU5TVEFM TF9ST00pKA0KLSAgSU4gIEVGSV9MRUdBQ1lfQklPU19QUk9UT0NPTCAgKlRoaXMsDQotICBJTiAg RUZJX0hBTkRMRSAgICAgICAgICAgICAgICBQY2lIYW5kbGUsDQotICBJTiAgVk9JRCAgICAgICAg ICAgICAgICAgICAgICAqKlJvbUltYWdlLA0KLSAgT1VUIFVJTlROICAgICAgICAgICAgICAgICAg ICAgKkZsYWdzLA0KLSAgT1VUIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgKkRpc2tTdGFydCAg T1BUSU9OQUwsDQotICBPVVQgVUlOVDggICAgICAgICAgICAgICAgICAgICAqRGlza0VuZCAgT1BU SU9OQUwsDQotICBPVVQgVk9JRCAgICAgICAgICAgICAgICAgICAgICAqKlJvbVNoYWRvd0FkZHJl c3MgIE9QVElPTkFMLA0KLSAgT1VUIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgKlNoYWRvd2Vk Um9tU2l6ZSBPUFRJT05BTA0KLSAgKTsNCi0NCi0vKioNCi0gIFRoaXMgZnVuY3Rpb24gYXR0ZW1w dHMgdG8gdHJhZGl0aW9uYWxseSBib290IHRoZSBzcGVjaWZpZWQgQm9vdE9wdGlvbi4gSWYgdGhl IEVGSSBjb250ZXh0IGhhcw0KLSAgYmVlbiBjb21wcm9taXNlZCwgdGhpcyBmdW5jdGlvbiB3aWxs IG5vdCByZXR1cm4uIFRoaXMgcHJvY2VkdXJlIGlzIG5vdCB1c2VkIGZvciBsb2FkaW5nIGFuIEVG SS1hd2FyZQ0KLSAgT1Mgb2ZmIGEgdHJhZGl0aW9uYWwgZGV2aWNlLiBUaGUgZm9sbG93aW5nIGFj dGlvbnMgb2NjdXI6DQotICAtIEdldCBFRkkgU01CSU9TIGRhdGEgc3RydWN0dXJlcywgY29udmVy dCB0aGVtIHRvIGEgdHJhZGl0aW9uYWwgZm9ybWF0LCBhbmQgY29weSB0bw0KLSAgICBDb21wYXRp YmlsaXR5MTYuDQotICAtIEdldCBhIHBvaW50ZXIgdG8gQUNQSSBkYXRhIHN0cnVjdHVyZXMgYW5k IGNvcHkgdGhlIENvbXBhdGliaWxpdHkxNiBSU0QgUFRSIHRvIEYwMDAwIGJsb2NrLg0KLSAgLSBG aW5kIHRoZSB0cmFkaXRpb25hbCBTTUkgaGFuZGxlciBmcm9tIGEgZmlybXdhcmUgdm9sdW1lIGFu ZCByZWdpc3RlciB0aGUgdHJhZGl0aW9uYWwgU01JDQotICAgIGhhbmRsZXIgd2l0aCB0aGUgRUZJ IFNNSSBoYW5kbGVyLg0KLSAgLSBCdWlsZCBvbmJvYXJkIElERSBpbmZvcm1hdGlvbiBhbmQgcGFz cyB0aGlzIGluZm9ybWF0aW9uIHRvIHRoZSBDb21wYXRpYmlsaXR5MTYgY29kZS4NCi0gIC0gTWFr ZSBzdXJlIGFsbCBQQ0kgSW50ZXJydXB0IExpbmUgcmVnaXN0ZXJzIGFyZSBwcm9ncmFtbWVkIHRv IG1hdGNoIDgyNTkuDQotICAtIFJlY29uZmlndXJlIFNJTyBkZXZpY2VzIGZyb20gRUZJIG1vZGUg KHBvbGxlZCkgaW50byB0cmFkaXRpb25hbCBtb2RlIChpbnRlcnJ1cHQgZHJpdmVuKS4NCi0gIC0g U2hhZG93IGFsbCBQQ0kgUk9Ncy4NCi0gIC0gU2V0IHVwIEJEQSBhbmQgRUJEQSBzdGFuZGFyZCBh cmVhcyBiZWZvcmUgdGhlIGxlZ2FjeSBib290Lg0KLSAgLSBDb25zdHJ1Y3QgdGhlIENvbXBhdGli aWxpdHkxNiBib290IG1lbW9yeSBtYXAgYW5kIHBhc3MgaXQgdG8gdGhlIENvbXBhdGliaWxpdHkx NiBjb2RlLg0KLSAgLSBJbnZva2UgdGhlIENvbXBhdGliaWxpdHkxNiB0YWJsZSBmdW5jdGlvbiBD b21wYXRpYmlsaXR5MTZQcmVwYXJlVG9Cb290KCkuIFRoaXMNCi0gICAgaW52b2NhdGlvbiBjYXVz ZXMgYSB0aHVuayBpbnRvIHRoZSBDb21wYXRpYmlsaXR5MTYgY29kZSwgd2hpY2ggc2V0cyBhbGwg YXBwcm9wcmlhdGUgaW50ZXJuYWwNCi0gICAgZGF0YSBzdHJ1Y3R1cmVzLiBUaGUgYm9vdCBkZXZp Y2UgbGlzdCBpcyBhIHBhcmFtZXRlci4NCi0gIC0gSW52b2tlIHRoZSBDb21wYXRpYmlsaXR5MTYg VGFibGUgZnVuY3Rpb24gQ29tcGF0aWJpbGl0eTE2Qm9vdCgpLiBUaGlzIGludm9jYXRpb24NCi0g ICAgY2F1c2VzIGEgdGh1bmsgaW50byB0aGUgQ29tcGF0aWJpbGl0eTE2IGNvZGUsIHdoaWNoIGRv ZXMgYW4gSU5UMTkuDQotICAtIElmIHRoZSBDb21wYXRpYmlsaXR5MTZCb290KCkgZnVuY3Rpb24g cmV0dXJucywgdGhlbiB0aGUgYm9vdCBmYWlsZWQgaW4gYSBncmFjZWZ1bA0KLSAgICBtYW5uZXIt LW1lYW5pbmcgdGhhdCB0aGUgRUZJIGNvZGUgaXMgc3RpbGwgdmFsaWQuIEFuIHVuZ3JhY2VmdWwg Ym9vdCBmYWlsdXJlIGNhdXNlcyBhIHJlc2V0IGJlY2F1c2UgdGhlIHN0YXRlDQotICAgIG9mIEVG SSBjb2RlIGlzIHVua25vd24uDQotDQotICBAcGFyYW1baW5dIFRoaXMgICAgICAgICAgICAgVGhl IHByb3RvY29sIGluc3RhbmNlIHBvaW50ZXIuDQotICBAcGFyYW1baW5dIEJvb3RPcHRpb24gICAg ICAgVGhlIEVGSSBEZXZpY2UgUGF0aCBmcm9tIEJvb3RYWFhYIHZhcmlhYmxlLg0KLSAgQHBhcmFt W2luXSBMb2FkT3B0aW9uU2l6ZSAgIFRoZSBzaXplIG9mIExvYWRPcHRpb24gaW4gc2l6ZS4NCi0g IEBwYXJhbVtpbl0gTG9hZE9wdGlvbiAgICAgICBMVGhlIG9hZE9wdGlvbiBmcm9tIEJvb3RYWFhY IHZhcmlhYmxlLg0KLQ0KLSAgQHJldHZhbCBFRklfREVWSUNFX0VSUk9SICAgICAgRmFpbGVkIHRv IGJvb3QgZnJvbSBhbnkgYm9vdCBkZXZpY2UgYW5kIG1lbW9yeSBpcyB1bmNvcnJ1cHRlZC4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGU6IFRoaXMgZnVuY3Rpb24gbm9ybWFsbHkg ZG9lcyBub3QgcmV0dXJucy4gSXQgd2lsbCBlaXRoZXIgYm9vdCB0aGUgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE9TIG9yIHJlc2V0IHRoZSBzeXN0ZW0gaWYgbWVtb3J5IGhhcyBiZWVu ICJjb3JydXB0ZWQiIGJ5IGxvYWRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEg Ym9vdCBzZWN0b3IgYW5kIHBhc3NpbmcgY29udHJvbCB0byBpdC4NCi0qKi8NCi10eXBlZGVmDQot RUZJX1NUQVRVUw0KLShFRklBUEkgKkVGSV9MRUdBQ1lfQklPU19CT09UKSgNCi0gIElOIEVGSV9M RUdBQ1lfQklPU19QUk9UT0NPTCAgKlRoaXMsDQotICBJTiBCQlNfQkJTX0RFVklDRV9QQVRIICAg ICAgICpCb290T3B0aW9uLA0KLSAgSU4gVUlOVDMyICAgICAgICAgICAgICAgICAgICBMb2FkT3B0 aW9uc1NpemUsDQotICBJTiBWT0lEICAgICAgICAgICAgICAgICAgICAgICpMb2FkT3B0aW9ucw0K LSAgKTsNCi0NCi0vKioNCi0gIFRoaXMgZnVuY3Rpb24gdGFrZXMgdGhlIExlZHMgaW5wdXQgcGFy YW1ldGVyIGFuZCBzZXRzL3Jlc2V0cyB0aGUgQkRBIGFjY29yZGluZ2x5Lg0KLSAgTGVkcyBpcyBh bHNvIHBhc3NlZCB0byBDb21wYXRpYmlsaXR5MTYgY29kZSwgaW4gY2FzZSBhbnkgc3BlY2lhbCBw cm9jZXNzaW5nIGlzIHJlcXVpcmVkLg0KLSAgVGhpcyBmdW5jdGlvbiBpcyBub3JtYWxseSBjYWxs ZWQgZnJvbSBFRkkgU2V0dXAgZHJpdmVycyB0aGF0IGhhbmRsZSB1c2VyLXNlbGVjdGFibGUNCi0g IGtleWJvYXJkIG9wdGlvbnMgc3VjaCBhcyBib290IHdpdGggTlVNIExPQ0sgb24vb2ZmLiBUaGlz IGZ1bmN0aW9uIGRvZXMgbm90DQotICB0b3VjaCB0aGUga2V5Ym9hcmQgb3Iga2V5Ym9hcmQgTEVE cyBidXQgb25seSB0aGUgQkRBLg0KLQ0KLSAgQHBhcmFtW2luXSBUaGlzICAgVGhlIHByb3RvY29s IGluc3RhbmNlIHBvaW50ZXIuDQotICBAcGFyYW1baW5dIExlZHMgICBUaGUgc3RhdHVzIG9mIGN1 cnJlbnQgU2Nyb2xsLCBOdW0gJiBDYXAgbG9jayBMRURTOg0KLSAgICAgICAgICAgICAgICAgICAg ICAtIEJpdCAwIGlzIFNjcm9sbCBMb2NrIDAgPSBOb3QgbG9ja2VkLg0KLSAgICAgICAgICAgICAg ICAgICAgICAtIEJpdCAxIGlzIE51bSBMb2NrLg0KLSAgICAgICAgICAgICAgICAgICAgICAtIEJp dCAyIGlzIENhcHMgTG9jay4NCi0NCi0gIEByZXR2YWwgRUZJX1NVQ0NFU1MgICBUaGUgQkRBIHdh cyB1cGRhdGVkIHN1Y2Nlc3NmdWxseS4NCi0NCi0qKi8NCi10eXBlZGVmDQotRUZJX1NUQVRVUw0K LShFRklBUEkgKkVGSV9MRUdBQ1lfQklPU19VUERBVEVfS0VZQk9BUkRfTEVEX1NUQVRVUykoDQot ICBJTiBFRklfTEVHQUNZX0JJT1NfUFJPVE9DT0wgICpUaGlzLA0KLSAgSU4gVUlOVDggICAgICAg ICAgICAgICAgICAgICBMZWRzDQotICApOw0KLQ0KLS8qKg0KLSAgUmV0cmlldmUgbGVnYWN5IEJC UyBpbmZvIGFuZCBhc3NpZ24gYm9vdCBwcmlvcml0eS4NCi0NCi0gIEBwYXJhbVtpbl0gICAgIFRo aXMgICAgICAgVGhlIHByb3RvY29sIGluc3RhbmNlIHBvaW50ZXIuDQotICBAcGFyYW1bb3V0XSAg ICBIZGRDb3VudCAgIFRoZSBudW1iZXIgb2YgSEREX0lORk8gc3RydWN0dXJlcy4NCi0gIEBwYXJh bVtvdXRdICAgIEhkZEluZm8gICAgT25ib2FyZCBJREUgY29udHJvbGxlciBpbmZvcm1hdGlvbi4N Ci0gIEBwYXJhbVtvdXRdICAgIEJic0NvdW50ICAgVGhlIG51bWJlciBvZiBCQlNfVEFCTEUgc3Ry dWN0dXJlcy4NCi0gIEBwYXJhbVtpbixvdXRdIEJic1RhYmxlICAgUG9pbnRzIHRvIExpc3Qgb2Yg QkJTX1RBQkxFLg0KLQ0KLSAgQHJldHZhbCBFRklfU1VDQ0VTUyAgIFRhYmxlcyB3ZXJlIHJldHVy bmVkLg0KLQ0KLSoqLw0KLXR5cGVkZWYNCi1FRklfU1RBVFVTDQotKEVGSUFQSSAqRUZJX0xFR0FD WV9CSU9TX0dFVF9CQlNfSU5GTykoDQotICBJTiAgICAgRUZJX0xFR0FDWV9CSU9TX1BST1RPQ09M ICAqVGhpcywNCi0gIE9VVCAgICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICpIZGRDb3VudCwN Ci0gIE9VVCAgICBIRERfSU5GTyAgICAgICAgICAgICAgICAgICoqSGRkSW5mbywNCi0gIE9VVCAg ICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICpCYnNDb3VudCwNCi0gIElOIE9VVCBCQlNfVEFC TEUgICAgICAgICAgICAgICAgICoqQmJzVGFibGUNCi0gICk7DQotDQotLyoqDQotICBBc3NpZ24g ZHJpdmUgbnVtYmVyIHRvIGxlZ2FjeSBIREQgZHJpdmVzIHByaW9yIHRvIGJvb3RpbmcgYW4gRUZJ DQotICBhd2FyZSBPUyBzbyB0aGUgT1MgY2FuIGFjY2VzcyBkcml2ZXMgd2l0aG91dCBhbiBFRkkg ZHJpdmVyLg0KLQ0KLSAgQHBhcmFtW2luXSAgVGhpcyAgICAgICBUaGUgcHJvdG9jb2wgaW5zdGFu Y2UgcG9pbnRlci4NCi0gIEBwYXJhbVtvdXRdIEJic0NvdW50ICAgVGhlIG51bWJlciBvZiBCQlNf VEFCTEUgc3RydWN0dXJlcw0KLSAgQHBhcmFtW291dF0gQmJzVGFibGUgICBMaXN0IG9mIEJCUyBl bnRyaWVzDQotDQotICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgRHJpdmUgbnVtYmVycyBhc3NpZ25l ZC4NCi0NCi0qKi8NCi10eXBlZGVmDQotRUZJX1NUQVRVUw0KLShFRklBUEkgKkVGSV9MRUdBQ1lf QklPU19QUkVQQVJFX1RPX0JPT1RfRUZJKSgNCi0gIElOICBFRklfTEVHQUNZX0JJT1NfUFJPVE9D T0wgICpUaGlzLA0KLSAgT1VUIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgKkJic0NvdW50LA0K LSAgT1VUIEJCU19UQUJMRSAgICAgICAgICAgICAgICAgKipCYnNUYWJsZQ0KLSAgKTsNCi0NCi0v KioNCi0gIFRvIGJvb3QgZnJvbSBhbiB1bmNvbnZlbnRpb25hbCBkZXZpY2UgbGlrZSBwYXJ0aWVz IGFuZC9vciBleGVjdXRlDQotICBIREQgZGlhZ25vc3RpY3MuDQotDQotICBAcGFyYW1baW5dICBU aGlzICAgICAgICAgICAgICBUaGUgcHJvdG9jb2wgaW5zdGFuY2UgcG9pbnRlci4NCi0gIEBwYXJh bVtpbl0gIEF0dHJpYnV0ZXMgICAgICAgIEhvdyB0byBpbnRlcnByZXQgdGhlIG90aGVyIGlucHV0 IHBhcmFtZXRlcnMuDQotICBAcGFyYW1baW5dICBCYnNFbnRyeSAgICAgICAgICBUaGUgMC1iYXNl ZCBpbmRleCBpbnRvIHRoZSBCYnNUYWJsZSBmb3IgdGhlIHBhcmVudA0KLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGV2aWNlLg0KLSAgQHBhcmFtW2luXSAgQmVlckRhdGEgICAgICAg ICAgQSBwb2ludGVyIHRvIHRoZSAxMjggYnl0ZXMgb2YgcmFtIEJFRVIgZGF0YS4NCi0gIEBwYXJh bVtpbl0gIFNlcnZpY2VBcmVhRGF0YSAgIEEgcG9pbnRlciB0byB0aGUgNjQgYnl0ZXMgb2YgcmF3 IFNlcnZpY2UgQXJlYSBkYXRhLiBUaGUNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNhbGxlciBtdXN0IHByb3ZpZGUgYSBwb2ludGVyIHRvIHRoZSBzcGVjaWZpYyBTZXJ2aWNlDQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcmVhIGFuZCBub3QgdGhlIHN0YXJ0IGFs bCBTZXJ2aWNlIEFyZWFzLg0KLQ0KLSAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgICBJ ZiBlcnJvci4gRG9lcyBOT1QgcmV0dXJuIGlmIG5vIGVycm9yLg0KLQ0KLSoqLw0KLXR5cGVkZWYN Ci1FRklfU1RBVFVTDQotKEVGSUFQSSAqRUZJX0xFR0FDWV9CSU9TX0JPT1RfVU5DT05WRU5USU9O QUxfREVWSUNFKSgNCi0gIElOIEVGSV9MRUdBQ1lfQklPU19QUk9UT0NPTCAgKlRoaXMsDQotICBJ TiBVRENfQVRUUklCVVRFUyAgICAgICAgICAgIEF0dHJpYnV0ZXMsDQotICBJTiBVSU5UTiAgICAg ICAgICAgICAgICAgICAgIEJic0VudHJ5LA0KLSAgSU4gVk9JRCAgICAgICAgICAgICAgICAgICAg ICAqQmVlckRhdGEsDQotICBJTiBWT0lEICAgICAgICAgICAgICAgICAgICAgICpTZXJ2aWNlQXJl YURhdGENCi0gICk7DQotDQotLyoqDQotICBTaGFkb3cgYWxsIGxlZ2FjeTE2IE9QUk9NcyB0aGF0 IGhhdmVuJ3QgYmVlbiBzaGFkb3dlZC4NCi0gIFdhcm5pbmc6IFVzZSB0aGlzIHdpdGggY2F1dGlv bi4gVGhpcyByb3V0aW5lIGRpc2Nvbm5lY3RzIGFsbCBFRkkNCi0gIGRyaXZlcnMuIElmIHVzZWQg ZXh0ZXJuYWxseSwgdGhlbiAgdGhlIGNhbGxlciBtdXN0IHJlLWNvbm5lY3QgRUZJDQotICBkcml2 ZXJzLg0KLQ0KLSAgQHBhcmFtW2luXSAgVGhpcyAgIFRoZSBwcm90b2NvbCBpbnN0YW5jZSBwb2lu dGVyLg0KLQ0KLSAgQHJldHZhbCBFRklfU1VDQ0VTUyAgIE9QUk9NcyB3ZXJlIHNoYWRvd2VkLg0K LQ0KLSoqLw0KLXR5cGVkZWYNCi1FRklfU1RBVFVTDQotKEVGSUFQSSAqRUZJX0xFR0FDWV9CSU9T X1NIQURPV19BTExfTEVHQUNZX09QUk9NUykoDQotICBJTiBFRklfTEVHQUNZX0JJT1NfUFJPVE9D T0wgICpUaGlzDQotICApOw0KLQ0KLS8qKg0KLSAgR2V0IGEgcmVnaW9uIGZyb20gdGhlIExlZ2Fj eUJpb3MgZm9yIFMzIHVzYWdlLg0KLQ0KLSAgQHBhcmFtW2luXSAgVGhpcyAgICAgICAgICAgICAg ICAgIFRoZSBwcm90b2NvbCBpbnN0YW5jZSBwb2ludGVyLg0KLSAgQHBhcmFtW2luXSAgTGVnYWN5 TWVtb3J5U2l6ZSAgICAgIFRoZSBzaXplIG9mIHJlcXVpcmVkIHJlZ2lvbi4NCi0gIEBwYXJhbVtp bl0gIFJlZ2lvbiAgICAgICAgICAgICAgICBUaGUgcmVnaW9uIHRvIHVzZS4NCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAwMCA9IEVpdGhlciAweEUwMDAwIG9yIDB4RjAwMDAg YmxvY2suDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIEJpdDAgPSAx IDB4RjAwMDAgYmxvY2suDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt IEJpdDEgPSAxIDB4RTAwMDAgYmxvY2suDQotICBAcGFyYW1baW5dICBBbGlnbm1lbnQgICAgICAg ICAgICAgQWRkcmVzcyBhbGlnbm1lbnQuIEJpdCBtYXBwZWQuIFRoZSBmaXJzdCBub24temVybw0K LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpdCBmcm9tIHJpZ2h0IGlzIGFs aWdubWVudC4NCi0gIEBwYXJhbVtvdXRdIExlZ2FjeU1lbW9yeUFkZHJlc3MgICBUaGUgUmVnaW9u IEFzc2lnbmVkDQotDQotICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgUmVnaW9u IHdhcyBhc3NpZ25lZC4NCi0gIEByZXR2YWwgRUZJX0FDQ0VTU19ERU5JRUQgICAgIFRoZSBmdW5j dGlvbiB3YXMgcHJldmlvdXNseSBpbnZva2VkLg0KLSAgQHJldHZhbCBPdGhlciAgICAgICAgICAg ICAgICAgVGhlIFJlZ2lvbiB3YXMgbm90IGFzc2lnbmVkLg0KLQ0KLSoqLw0KLXR5cGVkZWYNCi1F RklfU1RBVFVTDQotKEVGSUFQSSAqRUZJX0xFR0FDWV9CSU9TX0dFVF9MRUdBQ1lfUkVHSU9OKSgN Ci0gIElOICBFRklfTEVHQUNZX0JJT1NfUFJPVE9DT0wgICpUaGlzLA0KLSAgSU4gIFVJTlROICAg ICAgICAgICAgICAgICAgICAgTGVnYWN5TWVtb3J5U2l6ZSwNCi0gIElOICBVSU5UTiAgICAgICAg ICAgICAgICAgICAgIFJlZ2lvbiwNCi0gIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIEFs aWdubWVudCwNCi0gIE9VVCBWT0lEICAgICAgICAgICAgICAgICAgICAgICoqTGVnYWN5TWVtb3J5 QWRkcmVzcw0KLSAgKTsNCi0NCi0vKioNCi0gIEdldCBhIHJlZ2lvbiBmcm9tIHRoZSBMZWdhY3lC aW9zIGZvciBUaWFubyB1c2FnZS4gQ2FuIG9ubHkgYmUgaW52b2tlZCBvbmNlLg0KLQ0KLSAgQHBh cmFtW2luXSAgVGhpcyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBwcm90b2NvbCBpbnN0YW5j ZSBwb2ludGVyLg0KLSAgQHBhcmFtW2luXSAgTGVnYWN5TWVtb3J5U2l6ZSAgICAgICAgICAgIFRo ZSBzaXplIG9mIGRhdGEgdG8gY29weS4NCi0gIEBwYXJhbVtpbl0gIExlZ2FjeU1lbW9yeUFkZHJl c3MgICAgICAgICBUaGUgTGVnYWN5IFJlZ2lvbiBkZXN0aW5hdGlvbiBhZGRyZXNzLg0KLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGU6IG11c3QgYmUgaW4gcmVn aW9uIGFzc2lnbmVkIGJ5DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTGVnYWN5Qmlvc0dldExlZ2FjeVJlZ2lvbi4NCi0gIEBwYXJhbVtpbl0gIExlZ2FjeU1lbW9y eVNvdXJjZUFkZHJlc3MgICBUaGUgc291cmNlIG9mIHRoZSBkYXRhIHRvIGNvcHkuDQotDQotICBA cmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgUmVnaW9uIGFzc2lnbmVkLg0KLSAgQHJl dHZhbCBFRklfQUNDRVNTX0RFTklFRCAgICAgRGVzdGluYXRpb24gd2FzIG91dHNpZGUgYW4gYXNz aWduZWQgcmVnaW9uLg0KLQ0KLSoqLw0KLXR5cGVkZWYNCi1FRklfU1RBVFVTDQotKEVGSUFQSSAq RUZJX0xFR0FDWV9CSU9TX0NPUFlfTEVHQUNZX1JFR0lPTikoDQotICBJTiBFRklfTEVHQUNZX0JJ T1NfUFJPVE9DT0wgICpUaGlzLA0KLSAgSU4gVUlOVE4gICAgICAgICAgICAgICAgICAgICBMZWdh Y3lNZW1vcnlTaXplLA0KLSAgSU4gVk9JRCAgICAgICAgICAgICAgICAgICAgICAqTGVnYWN5TWVt b3J5QWRkcmVzcywNCi0gIElOIFZPSUQgICAgICAgICAgICAgICAgICAgICAgKkxlZ2FjeU1lbW9y eVNvdXJjZUFkZHJlc3MNCi0gICk7DQotDQotLy8vDQotLy8vIEFic3RyYWN0cyB0aGUgdHJhZGl0 aW9uYWwgQklPUyBmcm9tIHRoZSByZXN0IG9mIEVGSS4gVGhlIExlZ2FjeUJvb3QoKQ0KLS8vLyBt ZW1iZXIgZnVuY3Rpb24gYWxsb3dzIHRoZSBCRFMgdG8gc3VwcG9ydCBib290aW5nIGEgdHJhZGl0 aW9uYWwgT1MuDQotLy8vIEVGSSB0aHVua3MgZHJpdmVycyB0aGF0IG1ha2UgRUZJIGJpbmRpbmdz IGZvciBCSU9TIElOVCBzZXJ2aWNlcyB1c2UNCi0vLy8gYWxsIHRoZSBvdGhlciBtZW1iZXIgZnVu Y3Rpb25zLg0KLS8vLw0KLXN0cnVjdCBfRUZJX0xFR0FDWV9CSU9TX1BST1RPQ09MIHsNCi0gIC8v Lw0KLSAgLy8vIFBlcmZvcm1zIHRyYWRpdGlvbmFsIHNvZnR3YXJlIElOVC4gU2VlIHRoZSBJbnQ4 NigpIGZ1bmN0aW9uIGRlc2NyaXB0aW9uLg0KLSAgLy8vDQotICBFRklfTEVHQUNZX0JJT1NfSU5U ODYgICAgICAgICAgICAgICAgICAgICAgICAgSW50ODY7DQotDQotICAvLy8NCi0gIC8vLyBQZXJm b3JtcyBhIGZhciBjYWxsIGludG8gQ29tcGF0aWJpbGl0eTE2IG9yIHRyYWRpdGlvbmFsIE9wUk9N IGNvZGUuDQotICAvLy8NCi0gIEVGSV9MRUdBQ1lfQklPU19GQVJDQUxMODYgICAgICAgICAgICAg ICAgICAgICBGYXJDYWxsODY7DQotDQotICAvLy8NCi0gIC8vLyBDaGVja3MgaWYgYSB0cmFkaXRp b25hbCBPcFJPTSBleGlzdHMgZm9yIHRoaXMgZGV2aWNlLg0KLSAgLy8vDQotICBFRklfTEVHQUNZ X0JJT1NfQ0hFQ0tfUk9NICAgICAgICAgICAgICAgICAgICAgQ2hlY2tQY2lSb207DQotDQotICAv Ly8NCi0gIC8vLyBMb2FkcyBhIHRyYWRpdGlvbmFsIE9wUk9NIGluIHRyYWRpdGlvbmFsIE9wUk9N IGFkZHJlc3Mgc3BhY2UuDQotICAvLy8NCi0gIEVGSV9MRUdBQ1lfQklPU19JTlNUQUxMX1JPTSAg ICAgICAgICAgICAgICAgICBJbnN0YWxsUGNpUm9tOw0KLQ0KLSAgLy8vDQotICAvLy8gQm9vdHMg YSB0cmFkaXRpb25hbCBPUy4NCi0gIC8vLw0KLSAgRUZJX0xFR0FDWV9CSU9TX0JPT1QgICAgICAg ICAgICAgICAgICAgICAgICAgIExlZ2FjeUJvb3Q7DQotDQotICAvLy8NCi0gIC8vLyBVcGRhdGVz IEJEQSB0byByZWZsZWN0IHRoZSBjdXJyZW50IEVGSSBrZXlib2FyZCBMRUQgc3RhdHVzLg0KLSAg Ly8vDQotICBFRklfTEVHQUNZX0JJT1NfVVBEQVRFX0tFWUJPQVJEX0xFRF9TVEFUVVMgICAgVXBk YXRlS2V5Ym9hcmRMZWRTdGF0dXM7DQotDQotICAvLy8NCi0gIC8vLyBBbGxvd3MgYW4gZXh0ZXJu YWwgYWdlbnQsIHN1Y2ggYXMgQklPUyBTZXR1cCwgdG8gZ2V0IHRoZSBCQlMgZGF0YS4NCi0gIC8v Lw0KLSAgRUZJX0xFR0FDWV9CSU9TX0dFVF9CQlNfSU5GTyAgICAgICAgICAgICAgICAgIEdldEJi c0luZm87DQotDQotICAvLy8NCi0gIC8vLyBDYXVzZXMgYWxsIGxlZ2FjeSBPcFJPTXMgdG8gYmUg c2hhZG93ZWQuDQotICAvLy8NCi0gIEVGSV9MRUdBQ1lfQklPU19TSEFET1dfQUxMX0xFR0FDWV9P UFJPTVMgICAgICBTaGFkb3dBbGxMZWdhY3lPcHJvbXM7DQotDQotICAvLy8NCi0gIC8vLyBQZXJm b3JtcyBhbGwgYWN0aW9ucyBwcmlvciB0byBib290LiBVc2VkIHdoZW4gYm9vdGluZyBhbiBFRkkt YXdhcmUgT1MNCi0gIC8vLyByYXRoZXIgdGhhbiBhIGxlZ2FjeSBPUy4NCi0gIC8vLw0KLSAgRUZJ X0xFR0FDWV9CSU9TX1BSRVBBUkVfVE9fQk9PVF9FRkkgICAgICAgICAgIFByZXBhcmVUb0Jvb3RF Zmk7DQotDQotICAvLy8NCi0gIC8vLyBBbGxvd3MgRUZJIHRvIHJlc2VydmUgYW4gYXJlYSBpbiB0 aGUgMHhFMDAwMCBvciAweEYwMDAwIGJsb2NrLg0KLSAgLy8vDQotICBFRklfTEVHQUNZX0JJT1Nf R0VUX0xFR0FDWV9SRUdJT04gICAgICAgICAgICAgR2V0TGVnYWN5UmVnaW9uOw0KLQ0KLSAgLy8v DQotICAvLy8gQWxsb3dzIEVGSSB0byBjb3B5IGRhdGEgdG8gdGhlIGFyZWEgc3BlY2lmaWVkIGJ5 IEdldExlZ2FjeVJlZ2lvbi4NCi0gIC8vLw0KLSAgRUZJX0xFR0FDWV9CSU9TX0NPUFlfTEVHQUNZ X1JFR0lPTiAgICAgICAgICAgIENvcHlMZWdhY3lSZWdpb247DQotDQotICAvLy8NCi0gIC8vLyBB bGxvd3MgdGhlIHVzZXIgdG8gYm9vdCBvZmYgYW4gdW5jb252ZW50aW9uYWwgZGV2aWNlIHN1Y2gg YXMgYSBQQVJUSUVTIHBhcnRpdGlvbi4NCi0gIC8vLw0KLSAgRUZJX0xFR0FDWV9CSU9TX0JPT1Rf VU5DT05WRU5USU9OQUxfREVWSUNFICAgIEJvb3RVbmNvbnZlbnRpb25hbERldmljZTsNCi19Ow0K LQ0KLS8vDQotLy8gTGVnYWN5IEJJT1MgbmVlZHMgdG8gYWNjZXNzIG1lbW9yeSBpbiBwYWdlIDAg KDAtNDA5NSksIHdoaWNoIGlzIGRpc2FibGVkIGlmDQotLy8gTlVMTCBwb2ludGVyIGRldGVjdGlv biBmZWF0dXJlIGlzIGVuYWJsZWQuIEZvbGxvd2luZyBtYWNybyBjYW4gYmUgdXNlZCB0bw0KLS8v IGVuYWJsZS9kaXNhYmxlIHBhZ2UgMCBiZWZvcmUvYWZ0ZXIgYWNjZXNzaW5nIGl0Lg0KLS8vDQot I2RlZmluZSBBQ0NFU1NfUEFHRTBfQ09ERShzdGF0ZW1lbnRzKSAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwNCi0gIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXA0KLSAgICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFN0YXR1c187ICAgICAgICAgICAgICBcDQotICAgIEVGSV9HQ0RfTUVNT1JZX1NQQUNF X0RFU0NSSVBUT1IgICAgICAgRGVzY187ICAgICAgICAgICAgICAgIFwNCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KLSAg ICBEZXNjXy5BdHRyaWJ1dGVzID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcDQotICAgIFN0YXR1c18gPSBnRFMtPkdldE1lbW9yeVNwYWNlRGVzY3JpcHRvciAoMCwg JkRlc2NfKTsgICAgICAgIFwNCi0gICAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzXyk7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KLSAgICBpZiAoKERlc2NfLkF0dHJpYnV0ZXMg JiBFRklfTUVNT1JZX1JQKSAhPSAwKSB7ICAgICAgICAgICAgICBcDQotICAgICAgU3RhdHVzXyA9 IGdEUy0+U2V0TWVtb3J5U3BhY2VBdHRyaWJ1dGVzICggICAgICAgICAgICAgICAgIFwNCi0gICAg ICAgICAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXA0KLSAgICAgICAgICAgICAgICAgICAgICBFRklfUEFHRVNfVE9fU0laRSgxKSwgICAgICAg ICAgICAgICAgICAgICBcDQotICAgICAgICAgICAgICAgICAgICAgIERlc2NfLkF0dHJpYnV0ZXMg JiB+KFVJTlQ2NClFRklfTUVNT1JZX1JQIFwNCi0gICAgICAgICAgICAgICAgICAgICAgKTsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KLSAgICAgIEFTU0VSVF9FRklf RVJST1IgKFN0YXR1c18pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQotICAgIH0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXA0KLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcDQotICAgICAgc3RhdGVtZW50czsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCi0gICAgfSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc DQotICAgIGlmICgoRGVzY18uQXR0cmlidXRlcyAmIEVGSV9NRU1PUllfUlApICE9IDApIHsgICAg ICAgICAgICAgIFwNCi0gICAgICBTdGF0dXNfID0gZ0RTLT5TZXRNZW1vcnlTcGFjZUF0dHJpYnV0 ZXMgKCAgICAgICAgICAgICAgICAgXA0KLSAgICAgICAgICAgICAgICAgICAgICAwLCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQotICAgICAgICAgICAgICAgICAgICAg IEVGSV9QQUdFU19UT19TSVpFKDEpLCAgICAgICAgICAgICAgICAgICAgIFwNCi0gICAgICAgICAg ICAgICAgICAgICAgRGVzY18uQXR0cmlidXRlcyAgICAgICAgICAgICAgICAgICAgICAgICAgXA0K LSAgICAgICAgICAgICAgICAgICAgICApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcDQotICAgICAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzXyk7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwNCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KLSAgfSB3aGlsZSAoRkFMU0UpDQotDQot ZXh0ZXJuIEVGSV9HVUlEICBnRWZpTGVnYWN5Qmlvc1Byb3RvY29sR3VpZDsNCi0NCi0jZW5kaWYN CgoNCgotPS09LT0tPS09LT0tPS09LT0tPS09LQpHcm91cHMuaW8gTGlua3M6IFlvdSByZWNlaXZl IGFsbCBtZXNzYWdlcyBzZW50IHRvIHRoaXMgZ3JvdXAuClZpZXcvUmVwbHkgT25saW5lICgjMTEx MDk2KTogaHR0cHM6Ly9lZGsyLmdyb3Vwcy5pby9nL2RldmVsL21lc3NhZ2UvMTExMDk2Ck11dGUg VGhpcyBUb3BpYzogaHR0cHM6Ly9ncm91cHMuaW8vbXQvMTAyNTE4NjY1Lzc2ODYxNzYKR3JvdXAg T3duZXI6IGRldmVsK293bmVyQGVkazIuZ3JvdXBzLmlvClVuc3Vic2NyaWJlOiBodHRwczovL2Vk azIuZ3JvdXBzLmlvL2cvZGV2ZWwvbGVhdmUvMTIzNjcxMTEvNzY4NjE3Ni8xOTEzNDU2MjEyL3h5 enp5IFtyZWJlY2NhQG9wZW5mdy5pb10KLT0tPS09LT0tPS09LT0tPS09LT0tPS0KCg0K