From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id CD4B9C5B572 for ; Tue, 18 Aug 2026 01:15:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References:Message-Id :MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=gTzrgVmmB1U9pujyX9M4lr7B99dvEeCONyhxrQ+j8Uw=; b=ocOsmbpH/VO6SO SSXCC2KudygpGgQXvozHW9qaWo2poBeRI+jfe8mGekJzRiGIq34cGLgV4UgA+0GSiVHmhKKkR5Hs/ 2xWX73/sDC27BTmNdMmbhSlL6fpFKcMSH12mkk64TlBXTCgCqjnNVukKNagz0rbHJF2AY3D+j0Ycu p/44w1sRgqoJiWP7keYEginlYAc9ivPa00rGZ/jjzg3tkU1kFaci2x2iJHuFyldnozxahylAutAZw kjMQPvXHtnwhfzu+Jl2KvqPxVR0+/OAEv69rn8lE2H8g1L7th8KWHG0iuCDLhIbUSSkqev70XgJso LhPgHeZfS0LWpavMVUmA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1ww8Q1-000000072oj-2vKW; Tue, 18 Aug 2026 01:15:09 +0000 Received: from smtpbgbr1.qq.com ([54.207.19.206]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1ww8Py-000000072h3-13NM for opensbi@lists.infradead.org; Tue, 18 Aug 2026 01:15:08 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.spacemit.com; s=mxsw2412; t=1787015679; bh=N6dPhgK+iATgc7SQGtI8VxNbOPY/S7unr0k7Sdykdcc=; h=From:Date:Subject:MIME-Version:Message-Id:To; b=Zxpeyz34SwdO/TvtMfQ3UhvFkvnI9BhfhDiOlZ3nPFCJ4WEEPFh5jw1+jVqJ1oE35 ZvQhRPq2Y6QjUnemFfXCCoadf5RQalzKZdNbLQlp2jdJOcrU5nKF8HfA9DQCanbVkh YScgZHRulWLpUZ/BeXJSuq174N3nKshh+hccoXfg= X-QQ-mid: zesmtpsz2t1787015678t62932930 X-QQ-Originating-IP: IvFOK1ANvueoatTP6WgEuKVTmmEU4w64K+Ono1i4rfI= Received: from = ( [120.237.158.181]) by bizesmtp.qq.com (ESMTP) with id ; Tue, 18 Aug 2026 09:14:36 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 14113005554469872124 EX-QQ-RecipientCnt: 5 From: Troy Mitchell Date: Tue, 18 Aug 2026 09:14:08 +0800 Subject: [PATCH v2 5/5] platform: generic: spacemit: k3: add platform support MIME-Version: 1.0 Message-Id: <20260818-spacemit-k3-v2-5-84cb7773a481@linux.spacemit.com> References: <20260818-spacemit-k3-v2-0-84cb7773a481@linux.spacemit.com> In-Reply-To: <20260818-spacemit-k3-v2-0-84cb7773a481@linux.spacemit.com> To: opensbi@lists.infradead.org Cc: Xianbin Zhu , Anup Patel , Bo Gan , Troy Mitchell X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=21612; i=troy.mitchell@linux.spacemit.com; h=from:subject:message-id; bh=UMDX7lrDGLQ1patLi4de9AwIAYJSarGvsyOmVWG21Bs=; b=owGbwMvMwCU2g/N9w09jE33G02pJDFnNG5/lTrjhb6Ob58Rpuf3FV5d4caY9Hpdb912+1mVoe a+R1flkRykLgxgXg6yYIkv3A55tBT5RtgUChb4wc1iZQIYwcHEKwERWTWL4Zx/OxqUYYTfb13ul 85ONvk+72ML8+K82bnTJ57yU+HDPeoa/UlEbOJ/OU5KQEvr/gX1myuvEjKOnN3EdL7Vl9O1rcrL gBwA= X-Developer-Key: i=troy.mitchell@linux.spacemit.com; a=openpgp; fpr=3FE5535CF1B0E658E57DB59BAE1C2FBEA7DB42E1 X-QQ-SENDSIZE: 520 Feedback-ID: zesmtpsz:linux.spacemit.com:qybglogicsvrgz:qybglogicsvrgz3a-0 X-QQ-XMAILINFO: MzU9HObVSfIkySdFj8KFWn7HQHVmCu4W2XGrr0F+ecYiCJAjq+S59EhW Cr3HSeleQj6Wl3H7iwyzuUPsxXd27DT4ZgiPVO5zecf2qJiMIDUlML3L4rsuUJ6znNlM/sJ sU+D7dWr0inApex1Eum4ILORzn5gQg87733saaHLWtZc+ASfO/rsjI7+NL0u41O7TcJgYeJ iS5rmQX1KdS2L00h8mrys5CmF7VaW3hmdXygtZ7WKDzTatX98yDjTbKEgQIzU3xsH6fxB/J XWLO9JZfuSPnRuxzvCvIg9i0cCGRZtRPmc6CqkGmeHPv9Bo890j8friquGDF1cROHWcUuXU IsoKnXeYWOQCjKy18MAHBYWnweb4qQl5nmiE3Feyim+cFkoh1twVnBRAia+WmUWvIFJbRms k3ryGTsL9EMOnS9xDA3xK89i6tp5j9KT1fJkLTrkqQCZXTQxUVEh2T8O7UA+o+YwnlTuAsR odBdXTMiHhEaWIZ8NaAdkZ7qcvzdZmmTP/0qgPcSzKBRvQBCJdXZJCoK0vqvsrp77maz05a Rk2xlF4GcGZAqRKc8LRrs0HWxN6hthfZ7avauLY4zAH6n0ja74rYdOw9oJ4c6k4og/bzWo6 NcKjamNB7Mt4sESrozxUQVsfkrLNaXcicS3HmyN77bGsa2ygzi4F6bGMWQjPGZVXUkGvhNx vbpaZ0Ewi49eDT7gC5CxKwXsw5xpwl8E5C5vewtdv6NYcd2mYFCzydDwdURFH3AvlSuJ7RR RvvwyjVlvPp3ZBsABSdT3qdPeVkftpssnUTXAsvzveQJquvvgM822B7khFPbpS0nVJeL4Kv meDhOUZfkWHojSg1KCej5OCCKpfpIYLLuR8jHqLFiD6+DruvMCl7A4Kbov5N6v373cmD3e0 2mHZJVPico1uRbC9uqQOxgzmyCq6hV1gUmGIx2z9fVBApeAWP56fFIqRVtWiRQ+/D+FR+4r 2YEOPTdROC62iMt2uAbcdPEDj0A8uMDd6wx9lwR29RNIWYfPAwycn24/qesaeQGOyvopOPm KGtqwJebXCW9zU6XKbg99iWDxmfoB/7NxAxSRj8c2GIJpUT7Gi+8gybFz8wGS+rVLbwadiE 5xRkRYb/UAfEE1sQtQzLFxFnjbUKKLJrz+3VPBVDDEcvGHYIRg3TrvH6YxxEuMjY013jj+b xQnS X-QQ-XMRINFO: MPJ6Tf5t3I/ylTmHUqvI8+Wpn+Gzalws3A== X-QQ-RECHKSPAM: 0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260817_181507_181289_C38C94D6 X-CRM114-Status: GOOD ( 20.85 ) X-BeenThere: opensbi@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "opensbi" Errors-To: opensbi-bounces+opensbi=archiver.kernel.org@lists.infradead.org RnJvbTogWGlhbmJpbiBaaHUgPHhpYW5iaW4uemh1QGxpbnV4LnNwYWNlbWl0LmNvbT4KCkFkZCBp bml0aWFsIE9wZW5TQkkgcGxhdGZvcm0gc3VwcG9ydCBmb3IgdGhlIFNwYWNlbWlUIEszIFNvQywg d2hpY2ggaGFzCjE2IGhhcnRzOiBlaWdodCBYMTAwIGhhcnRzIGluIGNsdXN0ZXJzIEMwL0MxIGFu ZCBlaWdodCBBMTAwIGhhcnRzIGluCkMyL0MzLgoKRHVyaW5nIGNvbGQgYm9vdCwgdGhlIGJvb3Qg aGFydCBzZXRzIHdhcm0tYm9vdCBlbnRyeSB2ZWN0b3JzIGZvciBhbGwKZm91ciBjbHVzdGVycywg ZW5hYmxlcyBDQ0kgc25vb3BpbmcsIGNsZWFycyBQTVUgcG93ZXItZG93biB2b3RlIGJpdHMgZm9y CmFsbCBoYXJ0cyBzbyBXRkkgZG9lcyBub3QgdHJpZ2dlciBwb3dlci1kb3duLCBhbmQgd2FrZXMg YWxsIG5vbi1ib290CmhhcnRzICgxLTE1KS4gV2FpdCB1cCB0byAxMDAgbXMgZm9yIGVhY2ggc2Vj b25kYXJ5IGhhcnQgdG8gZW50ZXIgV0ZJLAp0aGVuIHdhcm4gYW5kIGNvbnRpbnVlIHNvIG9uZSBm YWlsZWQgaGFydCBjYW5ub3Qgc3RhbGwgYm9vdCBpbmRlZmluaXRlbHkuCgpSdW4gcGVyLWhhcnQg aW5pdGlhbGl6YXRpb24gZnJvbSB0aGUgbmFzY2VudCBob29rIG9uIGJvdGggY29sZC0gYW5kCndh cm0tYm9vdCBwYXRocy4gUHJvZ3JhbSBQTUEgYXR0cmlidXRlcywgZW5hYmxlIHRoZSBELWNhY2hl IGFuZCBJLWNhY2hlCnRocm91Z2ggTVNFVFVQLCBzZXQgc21wZW5beF0gaW4gTUwyU0VUVVAgdG8g ZW5hYmxlIEwxIEQtY2FjaGUgc25vb3BpbmcKYW5kIHByZWZldGNoLCBhbmQgZW5hYmxlIHRoZSBI IGV4dGVuc2lvbiBpbiBNSVNBIGZvciBYMTAwIGhhcnRzLiBNSVNBLkgKaXMgd3JpdGFibGUgb24g SzMgWDEwMCBjb3JlcywgYW5kIE0tbW9kZSBtdXN0IHNldCBpdCBleHBsaWNpdGx5IHRvCmFjdGl2 YXRlIGh5cGVydmlzb3Igc3VwcG9ydC4KClN0YXJ0IHNlY29uZGFyeSBoYXJ0cyB0aHJvdWdoIGFu IGFzc2VtYmx5IHN0dWIgdGhhdCBlbmFibGVzIGNhY2hlcyBhbmQKc2V0cyBzbXBlblt4XSBiZWZv cmUgZW50ZXJpbmcgY29tbW9uIHdhcm0tYm9vdCBjb2RlLiBUaGlzIGxldHMgdGhlbQpvYnNlcnZl IHNoYXJlZC1kYXRhIHdyaXRlcyBtYWRlIGJ5IHRoZSBib290IGhhcnQgZHVyaW5nIGNvbGQtYm9v dAppbml0aWFsaXphdGlvbi4gRW5hYmxlIGdsb2JhbCBDQ0ktNTUwIHNub29wIGFuZCBEVk0gcmVx dWVzdHMgb24gdGhlIGJvb3QKaGFydCBiZWZvcmUgd2FraW5nIHRoZSBzZWNvbmRhcnkgaGFydHMu CgpTaWduZWQtb2ZmLWJ5OiBYaWFuYmluIFpodSA8eGlhbmJpbi56aHVAbGludXguc3BhY2VtaXQu Y29tPgpDby1kZXZlbG9wZWQtYnk6IFRyb3kgTWl0Y2hlbGwgPHRyb3kubWl0Y2hlbGxAbGludXgu c3BhY2VtaXQuY29tPgpTaWduZWQtb2ZmLWJ5OiBUcm95IE1pdGNoZWxsIDx0cm95Lm1pdGNoZWxs QGxpbnV4LnNwYWNlbWl0LmNvbT4KLS0tCiBwbGF0Zm9ybS9nZW5lcmljL0tjb25maWcgICAgICAg ICAgICAgICAgICAgfCAgIDUgKwogcGxhdGZvcm0vZ2VuZXJpYy9jb25maWdzL2RlZmNvbmZpZyAg ICAgICAgIHwgICAxICsKIHBsYXRmb3JtL2dlbmVyaWMvaW5jbHVkZS9zcGFjZW1pdC9jb21tb24u aCB8ICAgNCArLQogcGxhdGZvcm0vZ2VuZXJpYy9pbmNsdWRlL3NwYWNlbWl0L2szLmggICAgIHwg MTQ0ICsrKysrKysrKysrKysrKysKIHBsYXRmb3JtL2dlbmVyaWMvaW5jbHVkZS9zcGFjZW1pdC9r M19hc20uaCB8ICAxNiArKwogcGxhdGZvcm0vZ2VuZXJpYy9zcGFjZW1pdC9rMy5jICAgICAgICAg ICAgIHwgMjY2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBwbGF0Zm9ybS9nZW5lcmlj L3NwYWNlbWl0L2szX2FzbS5TICAgICAgICAgfCAgMzMgKysrKwogcGxhdGZvcm0vZ2VuZXJpYy9z cGFjZW1pdC9vYmplY3RzLm1rICAgICAgIHwgICAyICsKIDggZmlsZXMgY2hhbmdlZCwgNDcwIGlu c2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9wbGF0Zm9ybS9nZW5lcmlj L0tjb25maWcgYi9wbGF0Zm9ybS9nZW5lcmljL0tjb25maWcKaW5kZXggOTU4NjEwZDMuLjAzMDJl ZGE2IDEwMDY0NAotLS0gYS9wbGF0Zm9ybS9nZW5lcmljL0tjb25maWcKKysrIGIvcGxhdGZvcm0v Z2VuZXJpYy9LY29uZmlnCkBAIC0xMDksNiArMTA5LDExIEBAIGNvbmZpZyBQTEFURk9STV9TUEFD RU1JVF9LMQogCXNlbGVjdCBQTEFURk9STV9TUEFDRU1JVAogCWRlZmF1bHQgbgogCitjb25maWcg UExBVEZPUk1fU1BBQ0VNSVRfSzMKKwlib29sICJTcGFjZW1pdCBLMyBzdXBwb3J0IgorCXNlbGVj dCBQTEFURk9STV9TUEFDRU1JVAorCWRlZmF1bHQgbgorCiBjb25maWcgQ1BVX01JUFNfUDg3MDAK IAlib29sCiAJZGVmYXVsdCBuCmRpZmYgLS1naXQgYS9wbGF0Zm9ybS9nZW5lcmljL2NvbmZpZ3Mv ZGVmY29uZmlnIGIvcGxhdGZvcm0vZ2VuZXJpYy9jb25maWdzL2RlZmNvbmZpZwppbmRleCAzNDFm NmIyNS4uNThkNDA4OTggMTAwNjQ0Ci0tLSBhL3BsYXRmb3JtL2dlbmVyaWMvY29uZmlncy9kZWZj b25maWcKKysrIGIvcGxhdGZvcm0vZ2VuZXJpYy9jb25maWdzL2RlZmNvbmZpZwpAQCAtMTUsNiAr MTUsNyBAQCBDT05GSUdfUExBVEZPUk1fVEhFQUQ9eQogQ09ORklHX1BMQVRGT1JNX01JUFNfUDg3 MDBfRVlFUTdIPXkKIENPTkZJR19QTEFURk9STV9NSVBTX1A4NzAwX0JPU1RPTj15CiBDT05GSUdf UExBVEZPUk1fU1BBQ0VNSVRfSzE9eQorQ09ORklHX1BMQVRGT1JNX1NQQUNFTUlUX0szPXkKIENP TkZJR19GRFRfQ0FDSEU9eQogQ09ORklHX0ZEVF9DQUNIRV9BTkRFU19MTENBQ0hFPXkKIENPTkZJ R19GRFRfQ0FDSEVfU0lGSVZFX0NDQUNIRT15CmRpZmYgLS1naXQgYS9wbGF0Zm9ybS9nZW5lcmlj L2luY2x1ZGUvc3BhY2VtaXQvY29tbW9uLmggYi9wbGF0Zm9ybS9nZW5lcmljL2luY2x1ZGUvc3Bh Y2VtaXQvY29tbW9uLmgKaW5kZXggMzE3YmIzZTkuLjdiNTBjYzRmIDEwMDY0NAotLS0gYS9wbGF0 Zm9ybS9nZW5lcmljL2luY2x1ZGUvc3BhY2VtaXQvY29tbW9uLmgKKysrIGIvcGxhdGZvcm0vZ2Vu ZXJpYy9pbmNsdWRlL3NwYWNlbWl0L2NvbW1vbi5oCkBAIC05LDcgKzksOSBAQAogI2lmbmRlZiBf X1JJU0NWX1NQQUNFTUlUX0NPTU1PTl9IX18KICNkZWZpbmUgX19SSVNDVl9TUEFDRU1JVF9DT01N T05fSF9fCiAKKyNpZm5kZWYgX19BU1NFTUJMWV9fCiAjaW5jbHVkZSA8c2JpL3NiaV9iaXRvcHMu aD4KKyNlbmRpZgogCiAjZGVmaW5lIENTUl9NU0VUVVAJCQkJMHg3YzAKICNkZWZpbmUgQ1NSX01M MlNFVFVQCQkJCTB4N2YwCkBAIC03NCw3ICs3Niw3IEBACiAjZGVmaW5lIFBNVV9BUF9JRExFX0NP UkVfSURMRQkJCUJJVCgwKQogLyogYml0IDE6IENPUkVfUFdSRFdOIC0gcG93ZXIgb2ZmIGNvcmUg b24gV0ZJIChyZXF1aXJlcyBDT1JFX0lETEUgc2V0KSAqLwogI2RlZmluZSBQTVVfQVBfSURMRV9D T1JFX1BXUkRXTgkJCUJJVCgxKQotLyogYml0IDI6IENvcmUgTDEgU1JBTSBQb3dlciBEb3duIC0g cmVzZXJ2ZWQvbm90IHVzZWQgaW4gSzEgYW5kIEszICovCisvKiBiaXQgMjogQ29yZSBMMSBTUkFN IFBvd2VyIERvd24gLSByZXNlcnZlZCBpbiBLMSwgdXNlZCBpbiBLMyAqLwogI2RlZmluZSBQTVVf QVBfSURMRV9DT1JFX0wxX1NSQU1fUFdSRFdOCQlCSVQoMikKIC8qIGJpdCAzOiBNQVNLX0dJQ19O SVJRX1RPX0NPUkUgLSBtYXNrIG5JUlEgZnJvbSBHSUMsIGF1dG8tY2xlYXJlZCBieSBIVyBvbiBw b3dlci1kb3duIGVudHJ5ICovCiAjZGVmaW5lIFBNVV9BUF9JRExFX01BU0tfR0lDX05JUlEJCUJJ VCgzKQpkaWZmIC0tZ2l0IGEvcGxhdGZvcm0vZ2VuZXJpYy9pbmNsdWRlL3NwYWNlbWl0L2szLmgg Yi9wbGF0Zm9ybS9nZW5lcmljL2luY2x1ZGUvc3BhY2VtaXQvazMuaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMC4uZTQ4NGQ2N2IKLS0tIC9kZXYvbnVsbAorKysgYi9wbGF0Zm9y bS9nZW5lcmljL2luY2x1ZGUvc3BhY2VtaXQvazMuaApAQCAtMCwwICsxLDE0NCBAQAorLyogU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZSAqLworLyoKKyAqIENvcHlyaWdodCAo YykgMjAyNiBTcGFjZW1pVAorICogQXV0aG9yczoKKyAqICAgWGlhbmJpbiBaaHUgPHhpYW5iaW4u emh1QGxpbnV4LnNwYWNlbWl0LmNvbT4KKyAqICAgVHJveSBNaXRjaGVsbCA8dHJveS5taXRjaGVs bEBsaW51eC5zcGFjZW1pdC5jb20+CisgKi8KKworI2lmbmRlZiBfX1JJU0NWX1NQQUNFTUlUX0sz X0hfXworI2RlZmluZSBfX1JJU0NWX1NQQUNFTUlUX0szX0hfXworCisjaW5jbHVkZSA8c3BhY2Vt aXQvY29tbW9uLmg+CisKKy8qIFBNQSBjb25maWd1cmF0aW9uIENTUiAqLworI2RlZmluZSBDU1Jf UE1BQ0ZHMAkJCQkweDdkZQorCisvKgorICogUE1BQ0ZHMCBhdWRpbyBidWZmZXIgcmVnaW9uIGZp ZWxkOiBiaXRzIFs1NTo0OF0uCisgKiBNYXNrIGFuZCBhdHRyaWJ1dGUgYXJlIGFwcGxpZWQgYWZ0 ZXIgYSA0OC1iaXQgc2hpZnQgYmVjYXVzZQorICogY3NyYy9jc3JzIG9ubHkgYWNjZXB0IGEgMTIt Yml0IGltbWVkaWF0ZSBvciBhIHJlZ2lzdGVyLgorICovCisjZGVmaW5lIFBNQUNGRzBfQVVESU9f QlVGX0ZJRUxEX01BU0sJCTB4ZmYKKyNkZWZpbmUgUE1BQ0ZHMF9BVURJT19CVUZfRklFTERfU0hJ RlQJCTQ4CisjZGVmaW5lIFBNQUNGRzBfQVVESU9fQlVGX0FUVFJfQ0FDSEVBQkxFCTB4MjAKKwor LyoKKyAqIFBNQUNGRzAgWElQIHJlZ2lvbiBmaWVsZDogYml0cyBbMjM6MTZdLgorICogTG93ZXIg MTIgYml0cyBhcmUgemVybyBzbyBHQVMgZW1pdHMgYSBzaW5nbGUgbHVpIGluc3RydWN0aW9uLgor ICovCisjZGVmaW5lIFBNQUNGRzBfWElQX0ZJRUxEX0NMRUFSCQkJMHgwMGZmMDAwMFVMCisjZGVm aW5lIFBNQUNGRzBfWElQX0FUVFJfSU8JCQkweDAwMjIwMDAwVUwKKworI2RlZmluZSBDU1JfTUwy SElOVAkJCQkweDdmNworCisvKiBFbmFibGUgaW5zdHJ1Y3Rpb24gcHJlZmV0Y2ggaW4gTDIgY2Fj aGUgb24gbWlzcyAqLworI2RlZmluZSBNTDJTRVRVUF9JUFJGCQkJCUJJVCgxNikKKy8qIEVuYWJs ZSBUTEIgcHJlZmV0Y2ggaW4gTDIgY2FjaGUgKi8KKyNkZWZpbmUgTUwyU0VUVVBfVFBSRgkJCQlC SVQoMTgpCisvKiBFbmFibGUgdG9wLW9mLWNsayBvZiB0cmFjZSAqLworI2RlZmluZSBNTDJISU5U X1RSQUNFX1RPUF9JQ0dFTgkJCUJJVCgyNikKKworLyoKKyAqIENvbWJpbmVkIE1TRVRVUCBmbGFn cyBlbmFibGVkIGF0IGJvb3QgdGltZTogREV8SUV8QlBFfFBGRXxNTUV8RUNDRS4KKyAqIEV4cHJl c3NlZCBhcyBhIHBsYWluIGhleCBjb25zdGFudCBzbyBpdCBjYW4gYmUgdXNlZCBpbiBhc3NlbWJs eSAoQklUKCkKKyAqIGV4cGFuZHMgdG8gMVVMPDxuIHdoaWNoIEdBUyBjYW5ub3QgZXZhbHVhdGUp LgorICovCisjZGVmaW5lIE1TRVRVUF9CT09UX0ZMQUdTCQkJMHgxMDA3MworCisvKiBBMTAwIGNv cmVzOiBoYXJ0IDgtMTEgYmVsb25nIHRvIEMyIGNsdXN0ZXIsIGhhcnQgMTItMTUgdG8gQzMgY2x1 c3RlciAqLworI2RlZmluZSBQTVVfQ0FQX0NPUkU4X1dBS0VVUAkJCShQTVVfQVBfQkFTRSArIDB4 MzYwKQorI2RlZmluZSBQTVVfQ0FQX0NPUkU5X1dBS0VVUAkJCShQTVVfQVBfQkFTRSArIDB4MzY0 KQorI2RlZmluZSBQTVVfQ0FQX0NPUkUxMF9XQUtFVVAJCQkoUE1VX0FQX0JBU0UgKyAweDM2OCkK KyNkZWZpbmUgUE1VX0NBUF9DT1JFMTFfV0FLRVVQCQkJKFBNVV9BUF9CQVNFICsgMHgzNmMpCisj ZGVmaW5lIFBNVV9DQVBfQ09SRTEyX1dBS0VVUAkJCShQTVVfQVBfQkFTRSArIDB4MjJjKQorI2Rl ZmluZSBQTVVfQ0FQX0NPUkUxM19XQUtFVVAJCQkoUE1VX0FQX0JBU0UgKyAweDIzMCkKKyNkZWZp bmUgUE1VX0NBUF9DT1JFMTRfV0FLRVVQCQkJKFBNVV9BUF9CQVNFICsgMHgyMzQpCisjZGVmaW5l IFBNVV9DQVBfQ09SRTE1X1dBS0VVUAkJCShQTVVfQVBfQkFTRSArIDB4MjM4KQorCisvKiBBMTAw IHBlci1jb3JlIGlkbGUgY29uZmlnIHJlZ2lzdGVycyAoaGFydHMgOC0xNSkgKi8KKyNkZWZpbmUg UE1VX0NBUF9DT1JFOF9JRExFX0NGRwkJCShQTVVfQVBfQkFTRSArIDB4MzQwKQorI2RlZmluZSBQ TVVfQ0FQX0NPUkU5X0lETEVfQ0ZHCQkJKFBNVV9BUF9CQVNFICsgMHgzNDQpCisjZGVmaW5lIFBN VV9DQVBfQ09SRTEwX0lETEVfQ0ZHCQkJKFBNVV9BUF9CQVNFICsgMHgzNDgpCisjZGVmaW5lIFBN VV9DQVBfQ09SRTExX0lETEVfQ0ZHCQkJKFBNVV9BUF9CQVNFICsgMHgzNGMpCisjZGVmaW5lIFBN VV9DQVBfQ09SRTEyX0lETEVfQ0ZHCQkJKFBNVV9BUF9CQVNFICsgMHgyMGMpCisjZGVmaW5lIFBN VV9DQVBfQ09SRTEzX0lETEVfQ0ZHCQkJKFBNVV9BUF9CQVNFICsgMHgyMTApCisjZGVmaW5lIFBN VV9DQVBfQ09SRTE0X0lETEVfQ0ZHCQkJKFBNVV9BUF9CQVNFICsgMHgyMTQpCisjZGVmaW5lIFBN VV9DQVBfQ09SRTE1X0lETEVfQ0ZHCQkJKFBNVV9BUF9CQVNFICsgMHgyMTgpCisKKy8qIENYIENB UE1QIGNsdXN0ZXIgaWRsZSBjb25maWcgcmVnaXN0ZXJzICovCisjZGVmaW5lIFBNVV9DWF9DQVBN UF9JRExFX0NGRzAJCShQTVVfQVBfQkFTRSArIDB4MTIwKQorI2RlZmluZSBQTVVfQ1hfQ0FQTVBf SURMRV9DRkcxCQkoUE1VX0FQX0JBU0UgKyAweDBlNCkKKyNkZWZpbmUgUE1VX0NYX0NBUE1QX0lE TEVfQ0ZHMgkJKFBNVV9BUF9CQVNFICsgMHgxNTApCisjZGVmaW5lIFBNVV9DWF9DQVBNUF9JRExF X0NGRzMJCShQTVVfQVBfQkFTRSArIDB4MTU0KQorI2RlZmluZSBQTVVfQ1hfQ0FQTVBfSURMRV9D Rkc0CQkoUE1VX0FQX0JBU0UgKyAweDMxNCkKKyNkZWZpbmUgUE1VX0NYX0NBUE1QX0lETEVfQ0ZH NQkJKFBNVV9BUF9CQVNFICsgMHgzMTgpCisjZGVmaW5lIFBNVV9DWF9DQVBNUF9JRExFX0NGRzYJ CShQTVVfQVBfQkFTRSArIDB4MzFjKQorI2RlZmluZSBQTVVfQ1hfQ0FQTVBfSURMRV9DRkc3CQko UE1VX0FQX0JBU0UgKyAweDMyMCkKKyNkZWZpbmUgUE1VX0NYX0NBUE1QX0lETEVfQ0ZHOAkJKFBN VV9BUF9CQVNFICsgMHgzNTApCisjZGVmaW5lIFBNVV9DWF9DQVBNUF9JRExFX0NGRzkJCShQTVVf QVBfQkFTRSArIDB4MzU0KQorI2RlZmluZSBQTVVfQ1hfQ0FQTVBfSURMRV9DRkcxMAkJKFBNVV9B UF9CQVNFICsgMHgzNTgpCisjZGVmaW5lIFBNVV9DWF9DQVBNUF9JRExFX0NGRzExCQkoUE1VX0FQ X0JBU0UgKyAweDM1YykKKyNkZWZpbmUgUE1VX0NYX0NBUE1QX0lETEVfQ0ZHMTIJCShQTVVfQVBf QkFTRSArIDB4MjFjKQorI2RlZmluZSBQTVVfQ1hfQ0FQTVBfSURMRV9DRkcxMwkJKFBNVV9BUF9C QVNFICsgMHgyMjApCisjZGVmaW5lIFBNVV9DWF9DQVBNUF9JRExFX0NGRzE0CQkoUE1VX0FQX0JB U0UgKyAweDIyNCkKKyNkZWZpbmUgUE1VX0NYX0NBUE1QX0lETEVfQ0ZHMTUJCShQTVVfQVBfQkFT RSArIDB4MjI4KQorCisjZGVmaW5lIFBNVV9BUF9JRExFX1BXUkRPV05fSzNfTUFTSwkJKFBNVV9B UF9JRExFX0NPUkVfSURMRSB8CQlcCisJCQkJCQkgUE1VX0FQX0lETEVfQ09SRV9QV1JEV04gfAkJ XAorCQkJCQkJIFBNVV9BUF9JRExFX0NPUkVfTDFfU1JBTV9QV1JEV04gfAlcCisJCQkJCQkgUE1V X0FQX0lETEVfTUFTS19HSUNfTklSUSB8CQlcCisJCQkJCQkgUE1VX0FQX0lETEVfTUFTS19HSUNf TkZJUSkKKworLyoKKyAqIFBNVSBDWCBwZXItY2x1c3RlciBpZGxlIGNvbnRyb2wgYml0cyAoUE1V X0NYX0NBUE1Qbl9JRExFX0NGRykuCisgKi8KKy8qIGJpdCAwOiBNUCBJZGxlIC0gZ2F0ZSBjbHVz dGVyIGNsb2NrcyBleHRlcm5hbGx5IG9uIFdGSSAqLworI2RlZmluZSBQTVVfQ1hfSURMRV9NUF9J RExFCQkJQklUKDApCisvKiBiaXQgMTogTVAgUG93ZXIgRG93biAtIHBvd2VyIG9mZiBjbHVzdGVy IGxvZ2ljIHdoZW4gaWRsZSAqLworI2RlZmluZSBQTVVfQ1hfSURMRV9NUF9QV1JEV04JCQlCSVQo MSkKKy8qIGJpdCAyOiBMMiBDYWNoZSBTUkFNIFBvd2VyIERvd24gKi8KKyNkZWZpbmUgUE1VX0NY X0lETEVfTDJfU1JBTV9QV1JEV04JCUJJVCgyKQorLyogYml0IDM6IFNDVSBTUkFNIFBvd2VyIERv d24gLSBub3QgdXNlZCwgU0NVIFNSQU0gZG9lcyBub3Qgc3VwcG9ydCByZXRlbnRpb24gKi8KKyNk ZWZpbmUgUE1VX0NYX0lETEVfTVBfU0NVX1NSQU1fUFdSRFdOCQlCSVQoMykKKy8qIGJpdCA3OiBB Q05BQ1RNIEhhcmR3YXJlIENvbnRyb2wgLSBIVyBjb250cm9scyBBQ05BQ1RNIHBvcnQgb24gTVAg bG93IHBvd2VyIGVudHJ5ICovCisjZGVmaW5lIFBNVV9DWF9JRExFX0FDTkFDVE1fSFdfQ1RSTAkJ QklUKDcpCisKKyNkZWZpbmUgQ0xVU1RFUl9QV1JfRE9XTl9WQUxVRQkJCShQTVVfQ1hfSURMRV9N UF9JRExFIHwJCVwKKwkJCQkJCSBQTVVfQ1hfSURMRV9NUF9QV1JEV04gfAlcCisJCQkJCQkgUE1V X0NYX0lETEVfTDJfU1JBTV9QV1JEV04gfAlcCisJCQkJCQkgUE1VX0NYX0lETEVfTVBfU0NVX1NS QU1fUFdSRFdOIHwgXAorCQkJCQkJIFBNVV9DWF9JRExFX0FDTkFDVE1fSFdfQ1RSTCkKKworLyog Ym9vdCBlbnRyeSBmb3IgQTEwMCBjbHVzdGVycyAqLworI2RlZmluZSBDMl9SVkJBRERSX0xPX0FE RFIJCQkoMHhkNDI4MmMwMCArIDB4M2U4KQorI2RlZmluZSBDMl9SVkJBRERSX0hJX0FERFIJCQko MHhkNDI4MmMwMCArIDB4M2VjKQorI2RlZmluZSBDM19SVkJBRERSX0xPX0FERFIJCQkoMHhkNDI4 MmMwMCArIDB4MjYwKQorI2RlZmluZSBDM19SVkJBRERSX0hJX0FERFIJCQkoMHhkNDI4MmMwMCAr IDB4MjY0KQorCisvKgorICogUE1VIEFQIGNvcmUgV0ZJIHN0YXR1cyByZWdpc3RlcnMuICBFYWNo IGJpdCBpbmRpY2F0ZXMgdGhlIGNvcnJlc3BvbmRpbmcKKyAqIGNvcmUgaGFzIGVudGVyZWQgV0ZJ IGlkbGUgc3RhdGUuCisgKgorICogWDEwMCBoYXJ0cyAoMC03KTogUE1VX0FQX1gxMDBfSURMRV9T VEFUVVMKKyAqICAgY2x1c3RlciAwIChoYXJ0cyAwLTMpOiBiaXRzIDQsIDcsIDEwLCAxMworICog ICBjbHVzdGVyIDEgKGhhcnRzIDQtNyk6IGJpdHMgMjAsIDIzLCAyNiwgMjkKKyAqIEExMDAgaGFy dHMgKDgtMTUpOiBQTVVfQVBfQTEwMF9JRExFX1NUQVRVUworICogICBjbHVzdGVyIDIgKGhhcnRz IDgtMTEpOiAgYml0cyA0LCA3LCAxMCwgMTMKKyAqICAgY2x1c3RlciAzIChoYXJ0cyAxMi0xNSk6 IGJpdHMgMjAsIDIzLCAyNiwgMjkKKyAqLworI2RlZmluZSBQTVVfQVBfWDEwMF9JRExFX1NUQVRV UwkJCTB4ZDQyODI4OTAKKyNkZWZpbmUgUE1VX0FQX0ExMDBfSURMRV9TVEFUVVMJCQkweGQ0Mjgy ODgwCisKKyNkZWZpbmUgUExBVEZPUk1fQTEwMF9GSVJTVF9JRAkJCTgKKyNkZWZpbmUgUExBVEZP Uk1fQTEwMF9MQVNUX0lECQkJMTUKKworI2RlZmluZSBQTEFUX0NDSV9LM19BSURNQV9JRkFDRV9J WAkJMAorI2RlZmluZSBQTEFUX0NDSV9LM19DTFVTVEVSMF9JRkFDRV9JWAkJMQorI2RlZmluZSBQ TEFUX0NDSV9LM19DTFVTVEVSMV9JRkFDRV9JWAkJMgorI2RlZmluZSBQTEFUX0NDSV9LM19DTFVT VEVSMl8wX0lGQUNFX0lYCTMKKyNkZWZpbmUgUExBVF9DQ0lfSzNfQ0xVU1RFUjJfMV9JRkFDRV9J WAk0CisjZGVmaW5lIFBMQVRfQ0NJX0szX0NMVVNURVIzXzBfSUZBQ0VfSVgJNQorI2RlZmluZSBQ TEFUX0NDSV9LM19DTFVTVEVSM18xX0lGQUNFX0lYCTYKKworI2VuZGlmIC8qIF9fUklTQ1ZfU1BB Q0VNSVRfSzNfSF9fICovCmRpZmYgLS1naXQgYS9wbGF0Zm9ybS9nZW5lcmljL2luY2x1ZGUvc3Bh Y2VtaXQvazNfYXNtLmggYi9wbGF0Zm9ybS9nZW5lcmljL2luY2x1ZGUvc3BhY2VtaXQvazNfYXNt LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjcwYzAwNDc4Ci0tLSAvZGV2 L251bGwKKysrIGIvcGxhdGZvcm0vZ2VuZXJpYy9pbmNsdWRlL3NwYWNlbWl0L2szX2FzbS5oCkBA IC0wLDAgKzEsMTYgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2Ug Ki8KKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjYgU3BhY2VtaVQKKyAqIEF1dGhvcnM6CisgKiAg IFhpYW5iaW4gWmh1IDx4aWFuYmluLnpodUBsaW51eC5zcGFjZW1pdC5jb20+CisgKiAgIFRyb3kg TWl0Y2hlbGwgPHRyb3kubWl0Y2hlbGxAbGludXguc3BhY2VtaXQuY29tPgorICovCisKKyNpZm5k ZWYgX19SSVNDVl9TUEFDRU1JVF9LM19BU01fSF9fCisjZGVmaW5lIF9fUklTQ1ZfU1BBQ0VNSVRf SzNfQVNNX0hfXworCisjaWZuZGVmIF9fQVNTRU1CTFlfXwordm9pZCBfc3BhY2VtaXRfazNfd2Fy bV9zdGFydCh2b2lkKTsKKyNlbmRpZgorCisjZW5kaWYgLyogX19SSVNDVl9TUEFDRU1JVF9LM19B U01fSF9fICovCmRpZmYgLS1naXQgYS9wbGF0Zm9ybS9nZW5lcmljL3NwYWNlbWl0L2szLmMgYi9w bGF0Zm9ybS9nZW5lcmljL3NwYWNlbWl0L2szLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAuLjFlOGQ4Yzk3Ci0tLSAvZGV2L251bGwKKysrIGIvcGxhdGZvcm0vZ2VuZXJpYy9z cGFjZW1pdC9rMy5jCkBAIC0wLDAgKzEsMjY2IEBACisvKgorICogU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEJTRC0yLUNsYXVzZQorICoKKyAqIENvcHlyaWdodCAoYykgMjAyNiBTcGFjZW1pVAor ICogQXV0aG9yczoKKyAqICAgWGlhbmJpbiBaaHUgPHhpYW5iaW4uemh1QGxpbnV4LnNwYWNlbWl0 LmNvbT4KKyAqICAgVHJveSBNaXRjaGVsbCA8dHJveS5taXRjaGVsbEBsaW51eC5zcGFjZW1pdC5j b20+CisgKi8KKworI2luY2x1ZGUgPHBsYXRmb3JtX292ZXJyaWRlLmg+CisjaW5jbHVkZSA8c2Jp L3Jpc2N2X2FzbS5oPgorI2luY2x1ZGUgPHNiaS9yaXNjdl9pby5oPgorI2luY2x1ZGUgPHNiaS9z YmlfY29uc29sZS5oPgorI2luY2x1ZGUgPHNiaS9zYmlfdGltZXIuaD4KKyNpbmNsdWRlIDxzcGFj ZW1pdC9rMy5oPgorI2luY2x1ZGUgPHNwYWNlbWl0L2szX2FzbS5oPgorI2luY2x1ZGUgPHNwYWNl bWl0L3NwYWNlbWl0Lmg+CisKKyNkZWZpbmUgUExBVEZPUk1fTUFYX0NQVVMJCQkxNgorCisvKgor ICogTWF4aW11bSB0aW1lIHRvIHdhaXQgZm9yIGVhY2ggc2Vjb25kYXJ5IGhhcnQgdG8gZW50ZXIg V0ZJIGFmdGVyIGl0IGlzCisgKiB3b2tlbiBkdXJpbmcgY29sZCBib290LiBVc2UgdGhlIHBsYXRm b3JtIHRpbWVyIHNvIHRoZSB0aW1lb3V0IGRvZXMgbm90CisgKiBkZXBlbmQgb24gQ1BVIGZyZXF1 ZW5jeSBvciBNTUlPIGxhdGVuY3kuCisgKi8KKyNkZWZpbmUgSEFSVF9XRklfVElNRU9VVF9NUwkJ CTEwMAorCitzdGF0aWMgY29uc3QgaW50IGNjaV9tYXBbXSA9IHsKKwlQTEFUX0NDSV9LM19BSURN QV9JRkFDRV9JWCwKKwlQTEFUX0NDSV9LM19DTFVTVEVSMF9JRkFDRV9JWCwKKwlQTEFUX0NDSV9L M19DTFVTVEVSMV9JRkFDRV9JWCwKKwlQTEFUX0NDSV9LM19DTFVTVEVSMl8wX0lGQUNFX0lYLAor CVBMQVRfQ0NJX0szX0NMVVNURVIyXzFfSUZBQ0VfSVgsCisJUExBVF9DQ0lfSzNfQ0xVU1RFUjNf MF9JRkFDRV9JWCwKKwlQTEFUX0NDSV9LM19DTFVTVEVSM18xX0lGQUNFX0lYLAorfTsKKworc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGxvbmcgY3hfY2FwbXBfaWRsZV9jZmdbXSA9IHsKKwlQTVVfQ1hf Q0FQTVBfSURMRV9DRkcwLCAgUE1VX0NYX0NBUE1QX0lETEVfQ0ZHMSwKKwlQTVVfQ1hfQ0FQTVBf SURMRV9DRkcyLCAgUE1VX0NYX0NBUE1QX0lETEVfQ0ZHMywKKwlQTVVfQ1hfQ0FQTVBfSURMRV9D Rkc0LCAgUE1VX0NYX0NBUE1QX0lETEVfQ0ZHNSwKKwlQTVVfQ1hfQ0FQTVBfSURMRV9DRkc2LCAg UE1VX0NYX0NBUE1QX0lETEVfQ0ZHNywKKwlQTVVfQ1hfQ0FQTVBfSURMRV9DRkc4LCAgUE1VX0NY X0NBUE1QX0lETEVfQ0ZHOSwKKwlQTVVfQ1hfQ0FQTVBfSURMRV9DRkcxMCwgUE1VX0NYX0NBUE1Q X0lETEVfQ0ZHMTEsCisJUE1VX0NYX0NBUE1QX0lETEVfQ0ZHMTIsIFBNVV9DWF9DQVBNUF9JRExF X0NGRzEzLAorCVBNVV9DWF9DQVBNUF9JRExFX0NGRzE0LCBQTVVfQ1hfQ0FQTVBfSURMRV9DRkcx NSwKK307CisKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBsb25nIGNvcmVfcHdyZG93bl9yZWdbXSA9 IHsKKwlQTVVfQVBfQ09SRTBfSURMRV9DRkcsICAgUE1VX0FQX0NPUkUxX0lETEVfQ0ZHLAorCVBN VV9BUF9DT1JFMl9JRExFX0NGRywgICBQTVVfQVBfQ09SRTNfSURMRV9DRkcsCisJUE1VX0FQX0NP UkU0X0lETEVfQ0ZHLCAgIFBNVV9BUF9DT1JFNV9JRExFX0NGRywKKwlQTVVfQVBfQ09SRTZfSURM RV9DRkcsICAgUE1VX0FQX0NPUkU3X0lETEVfQ0ZHLAorCVBNVV9DQVBfQ09SRThfSURMRV9DRkcs ICBQTVVfQ0FQX0NPUkU5X0lETEVfQ0ZHLAorCVBNVV9DQVBfQ09SRTEwX0lETEVfQ0ZHLCBQTVVf Q0FQX0NPUkUxMV9JRExFX0NGRywKKwlQTVVfQ0FQX0NPUkUxMl9JRExFX0NGRywgUE1VX0NBUF9D T1JFMTNfSURMRV9DRkcsCisJUE1VX0NBUF9DT1JFMTRfSURMRV9DRkcsIFBNVV9DQVBfQ09SRTE1 X0lETEVfQ0ZHLAorfTsKKworLyogV2FrZXVwIHJlZ2lzdGVycyBpbmRleGVkIGJ5IGhhcnQgSUQg KDAtMTUpLiAqLworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvbmcgY29yZV93YWtldXBfcmVnW10g PSB7CisJUE1VX0FQX0NPUkUwX1dBS0VVUCwgICAgIFBNVV9BUF9DT1JFMV9XQUtFVVAsCisJUE1V X0FQX0NPUkUyX1dBS0VVUCwgICAgIFBNVV9BUF9DT1JFM19XQUtFVVAsCisJUE1VX0FQX0NPUkU0 X1dBS0VVUCwgICAgIFBNVV9BUF9DT1JFNV9XQUtFVVAsCisJUE1VX0FQX0NPUkU2X1dBS0VVUCwg ICAgIFBNVV9BUF9DT1JFN19XQUtFVVAsCisJUE1VX0NBUF9DT1JFOF9XQUtFVVAsICAgIFBNVV9D QVBfQ09SRTlfV0FLRVVQLAorCVBNVV9DQVBfQ09SRTEwX1dBS0VVUCwgICBQTVVfQ0FQX0NPUkUx MV9XQUtFVVAsCisJUE1VX0NBUF9DT1JFMTJfV0FLRVVQLCAgIFBNVV9DQVBfQ09SRTEzX1dBS0VV UCwKKwlQTVVfQ0FQX0NPUkUxNF9XQUtFVVAsICAgUE1VX0NBUF9DT1JFMTVfV0FLRVVQLAorfTsK KworLyoKKyAqIFdGSSBpZGxlIHN0YXR1cyByZWdpc3RlcnMgYW5kIHBlci1oYXJ0IG1hc2sgYml0 cy4gIEVhY2ggaGFydCBoYXMgYQorICogZGVkaWNhdGVkIGJpdCBpbiBvbmUgb2YgdHdvIHN0YXR1 cyByZWdpc3RlcnMgKFgxMDAgaGFydHMgMC03IGluCisgKiBQTVVfQVBfWDEwMF9JRExFX1NUQVRV UywgQTEwMCBoYXJ0cyA4LTE1IGluIFBNVV9BUF9BMTAwX0lETEVfU1RBVFVTKS4KKyAqIEluZGV4 IDAgaXMgdW51c2VkIOKAlCB0aGUgYm9vdCBoYXJ0IG5ldmVyIHdhaXRzIG9uIGl0c2VsZi4KKyAq Lworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvbmcgd2ZpX3N0YXR1c19yZWdbXSA9IHsKKwkwLAor CVBNVV9BUF9YMTAwX0lETEVfU1RBVFVTLCBQTVVfQVBfWDEwMF9JRExFX1NUQVRVUywKKwlQTVVf QVBfWDEwMF9JRExFX1NUQVRVUywgUE1VX0FQX1gxMDBfSURMRV9TVEFUVVMsCisJUE1VX0FQX1gx MDBfSURMRV9TVEFUVVMsIFBNVV9BUF9YMTAwX0lETEVfU1RBVFVTLAorCVBNVV9BUF9YMTAwX0lE TEVfU1RBVFVTLAorCVBNVV9BUF9BMTAwX0lETEVfU1RBVFVTLCBQTVVfQVBfQTEwMF9JRExFX1NU QVRVUywKKwlQTVVfQVBfQTEwMF9JRExFX1NUQVRVUywgUE1VX0FQX0ExMDBfSURMRV9TVEFUVVMs CisJUE1VX0FQX0ExMDBfSURMRV9TVEFUVVMsIFBNVV9BUF9BMTAwX0lETEVfU1RBVFVTLAorCVBN VV9BUF9BMTAwX0lETEVfU1RBVFVTLCBQTVVfQVBfQTEwMF9JRExFX1NUQVRVUywKK307CisKK3N0 YXRpYyBjb25zdCB1bnNpZ25lZCBsb25nIHdmaV9zdGF0dXNfbWFza1tdID0geworCTAsCisJQklU KDcpLCAgQklUKDEwKSwgQklUKDEzKSwgQklUKDIwKSwKKwlCSVQoMjMpLCBCSVQoMjYpLCBCSVQo MjkpLAorCUJJVCg0KSwgIEJJVCg3KSwgIEJJVCgxMCksIEJJVCgxMyksCisJQklUKDIwKSwgQklU KDIzKSwgQklUKDI2KSwgQklUKDI5KSwKK307CisKKy8qCisgKiBDbGVhciB0aGUgcG93ZXItZG93 biBiaXRzIGZvciBib3RoIHRoZSBjb3JlIGFuZCBpdHMgY2x1c3RlciBzbyB0aGF0CisgKiB0aGUg aGFydCBkb2VzIG5vdCB0cmlnZ2VyIGEgcG93ZXItZG93biBzZXF1ZW5jZSBvbiBXRkkuICBDYWxs ZWQgZHVyaW5nCisgKiBjb2xkIGJvb3QgdG8gZW5zdXJlIGNvcmVzIGFuZCBjbHVzdGVycyBzdGF5 IHBvd2VyZWQgd2hpbGUgU0JJIGluaXRpYWxpemVzLgorICovCitzdGF0aWMgdm9pZCBzcGFjZW1p dF9kaXNhYmxlX3B3cmRvd25fY29yZSh1MzIgaGFydGlkKQoreworCXVuc2lnbmVkIGludCB2YWx1 ZTsKKworCWlmIChoYXJ0aWQgPj0gYXJyYXlfc2l6ZShjeF9jYXBtcF9pZGxlX2NmZykpCisJCXJl dHVybjsKKworCXZhbHVlID0gcmVhZGwoKHZvaWQgKikodW5zaWduZWQgbG9uZyljeF9jYXBtcF9p ZGxlX2NmZ1toYXJ0aWRdKTsKKwl2YWx1ZSAmPSB+Q0xVU1RFUl9QV1JfRE9XTl9WQUxVRTsKKwl3 cml0ZWwodmFsdWUsICh2b2lkICopKHVuc2lnbmVkIGxvbmcpY3hfY2FwbXBfaWRsZV9jZmdbaGFy dGlkXSk7CisKKwl2YWx1ZSA9IHJlYWRsKCh2b2lkICopKHVuc2lnbmVkIGxvbmcpY29yZV9wd3Jk b3duX3JlZ1toYXJ0aWRdKTsKKwl2YWx1ZSAmPSB+UE1VX0FQX0lETEVfUFdSRE9XTl9LM19NQVNL OworCXdyaXRlbCh2YWx1ZSwgKHZvaWQgKikodW5zaWduZWQgbG9uZyljb3JlX3B3cmRvd25fcmVn W2hhcnRpZF0pOworfQorCisvKgorICogUGVyLWhhcnQgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24s IG1pcnJvcmluZyB3aGF0IHdhcm0tYm9vdCBoYXJ0cyBwcmV2aW91c2x5CisgKiBkaWQgaW4gYXNz ZW1ibHkgYmVmb3JlIGVudGVyaW5nIEMgY29kZS4gIENhbGxlZCBvbiBldmVyeSBoYXJ0IG9uIGJv dGggY29sZAorICogYW5kIHdhcm0gYm9vdCBwYXRocy4KKyAqCisgKiAxLiBQTUE6IHNldCBhdWRp byBidWZmZXIgKGJpdHMgWzU1OjQ4XSkgY2FjaGVhYmxlIGFuZCBYSVAKKyAqICAgIHJlZ2lvbiAo Yml0cyBbMjM6MTZdKSBhcyBJTyBiZWZvcmUgZW5hYmxpbmcgZGNhY2hlLgorICogMi4gRW5hYmxl IGRjYWNoZS9pY2FjaGUgYW5kIG90aGVyIENQVSBmZWF0dXJlcyAoTVNFVFVQKS4KKyAqIDMuIFNl dCBzbXBlblt4XSBpbiBNTDJTRVRVUCB0byBlbmFibGUgTDEgRC1jYWNoZSBzbm9vcGluZyBhbmQg cHJlZmV0Y2guCisgKiA0LiBFbmFibGUgSCBleHRlbnNpb24gaW4gTUlTQSAoWDEwMCBvbmx5OyBu b3QgaW1wbGVtZW50ZWQgb24gQTEwMCkuCisgKi8KK3N0YXRpYyB2b2lkIHNwYWNlbWl0X2szX2hh cnRfaW5pdCh1MzIgaGFydGlkKQoreworCWNzcl9jbGVhcihDU1JfUE1BQ0ZHMCwKKwkJICAodW5z aWduZWQgbG9uZylQTUFDRkcwX0FVRElPX0JVRl9GSUVMRF9NQVNLCisJCSAgPDwgUE1BQ0ZHMF9B VURJT19CVUZfRklFTERfU0hJRlQpOworCWNzcl9zZXQoQ1NSX1BNQUNGRzAsCisJCSh1bnNpZ25l ZCBsb25nKVBNQUNGRzBfQVVESU9fQlVGX0FUVFJfQ0FDSEVBQkxFCisJCTw8IFBNQUNGRzBfQVVE SU9fQlVGX0ZJRUxEX1NISUZUKTsKKwljc3JfY2xlYXIoQ1NSX1BNQUNGRzAsIFBNQUNGRzBfWElQ X0ZJRUxEX0NMRUFSKTsKKwljc3Jfc2V0KENTUl9QTUFDRkcwLCBQTUFDRkcwX1hJUF9BVFRSX0lP KTsKKwlhc20gdm9sYXRpbGUoInNmZW5jZS52bWEiIDogOiA6ICJtZW1vcnkiKTsKKworCWNzcl9z ZXQoQ1NSX01TRVRVUCwgTVNFVFVQX0RFIHwgTVNFVFVQX0lFIHwgTVNFVFVQX0JQRSB8CisJCU1T RVRVUF9QRkUgfCBNU0VUVVBfTU1FIHwgTVNFVFVQX0VDQ0UpOworCWNzcl9zZXQoQ1NSX01MMlNF VFVQLCAxIDw8IChoYXJ0aWQgJSBQTEFURk9STV9NQVhfQ1BVU19QRVJfQ0xVU1RFUikpOworCWNz cl9zZXQoQ1NSX01MMlNFVFVQLCBNTDJTRVRVUF9JUFJGIHwgTUwyU0VUVVBfVFBSRik7CisJY3Ny X3NldChDU1JfTUwySElOVCwgTUwySElOVF9UUkFDRV9UT1BfSUNHRU4pOworCisJaWYgKGhhcnRp ZCA8IFBMQVRGT1JNX0ExMDBfRklSU1RfSUQpIHsKKwkJdW5zaWduZWQgbG9uZyBtaXNhID0gY3Ny X3JlYWQoQ1NSX01JU0EpOworCisJCS8qCisJCSAqIE1JU0EuSCBpcyB3cml0YWJsZSBvbiBLMyBY MTAwIGNvcmVzOiB0aGUgSCBleHRlbnNpb24gaXMKKwkJICogaW1wbGVtZW50ZWQgYnV0IGRpc2Fi bGVkIG91dCBvZiByZXNldCwgYW5kIE0tbW9kZSBtdXN0CisJCSAqIGV4cGxpY2l0bHkgc2V0IHRo aXMgYml0IHRvIGVuYWJsZSBoeXBlcnZpc29yIHN1cHBvcnQuCisJCSAqIEExMDAgY29yZXMgZG8g bm90IGltcGxlbWVudCBILCBzbyB0aGlzIHdyaXRlIGlzIFgxMDAtb25seS4KKwkJICovCisJCW1p c2EgfD0gMVVMIDw8ICgnSCcgLSAnQScpOworCQljc3Jfd3JpdGUoQ1NSX01JU0EsIG1pc2EpOwor CX0KK30KKworc3RhdGljIGludCBzcGFjZW1pdF9rM19uYXNjZW50X2luaXQodm9pZCkKK3sKKwlz cGFjZW1pdF9rM19oYXJ0X2luaXQoY3VycmVudF9oYXJ0aWQoKSk7CisKKwlyZXR1cm4gZ2VuZXJp Y19uYXNjZW50X2luaXQoKTsKK30KKworLyoKKyAqIE9uZS10aW1lIHBsYXRmb3JtIHNldHVwIHJ1 biBieSB0aGUgYm9vdCBoYXJ0IGR1cmluZyBjb2xkIGJvb3Q6CisgKiBzZXQgd2FybS1ib290IGVu dHJ5IGZvciBhbGwgZm91ciBjbHVzdGVycywgZW5hYmxlIENDSSBzbm9vcGluZywKKyAqIGFuZCB3 YWtlIGFsbCBub24tYm9vdCBoYXJ0cyAoMS0xNSkgc28gdGhleSBlbnRlciBXRkkgYW5kIHdhaXQK KyAqIGZvciB0aGUga2VybmVsIHRvIGJyaW5nIHRoZW0gb25saW5lLgorICovCitzdGF0aWMgdm9p ZCBzcGFjZW1pdF9rM19wcmVfaW5pdCh2b2lkKQoreworCXVuc2lnbmVkIGxvbmcgZW50cnkgPSAo dW5zaWduZWQgbG9uZykmX3NwYWNlbWl0X2szX3dhcm1fc3RhcnQ7CisJaW50IGk7CisKKwl3cml0 ZWwoKHUzMillbnRyeSwgKHZvaWQgKikodW5zaWduZWQgbG9uZylDMF9SVkJBRERSX0xPX0FERFIp OworCXdyaXRlbCgodTMyKShlbnRyeSA+PiAzMiksICh2b2lkICopKHVuc2lnbmVkIGxvbmcpQzBf UlZCQUREUl9ISV9BRERSKTsKKworCXdyaXRlbCgodTMyKWVudHJ5LCAodm9pZCAqKSh1bnNpZ25l ZCBsb25nKUMxX1JWQkFERFJfTE9fQUREUik7CisJd3JpdGVsKCh1MzIpKGVudHJ5ID4+IDMyKSwg KHZvaWQgKikodW5zaWduZWQgbG9uZylDMV9SVkJBRERSX0hJX0FERFIpOworCisJd3JpdGVsKCh1 MzIpZW50cnksICh2b2lkICopKHVuc2lnbmVkIGxvbmcpQzJfUlZCQUREUl9MT19BRERSKTsKKwl3 cml0ZWwoKHUzMikoZW50cnkgPj4gMzIpLCAodm9pZCAqKSh1bnNpZ25lZCBsb25nKUMyX1JWQkFE RFJfSElfQUREUik7CisKKwl3cml0ZWwoKHUzMillbnRyeSwgKHZvaWQgKikodW5zaWduZWQgbG9u ZylDM19SVkJBRERSX0xPX0FERFIpOworCXdyaXRlbCgodTMyKShlbnRyeSA+PiAzMiksICh2b2lk ICopKHVuc2lnbmVkIGxvbmcpQzNfUlZCQUREUl9ISV9BRERSKTsKKworCWZvciAoaSA9IDA7IGkg PCBhcnJheV9zaXplKGNjaV9tYXApOyBpKyspCisJCWNjaV9lbmFibGVfc25vb3BfZHZtX3JlcXMo Y2NpX21hcCwgaSk7CisKKwkvKiBDbGVhciBjb3JlIGFuZCBjbHVzdGVyIHBvd2VyLWRvd24gdm90 ZXMgc28gV0ZJIGRvZXMgbm90IHRyaWdnZXIgcG93ZXItZG93bi4gKi8KKwlmb3IgKGkgPSAwOyBp IDwgUExBVEZPUk1fTUFYX0NQVVM7IGkrKykKKwkJc3BhY2VtaXRfZGlzYWJsZV9wd3Jkb3duX2Nv cmUoaSk7CisKKwkvKgorCSAqIFdha2UgdXAgYWxsIG5vbi1ib290IGhhcnRzICgxLTE1KS4gIEVh Y2ggaGFydCBOIGhhcyBhIGRlZGljYXRlZCBQTVUKKwkgKiB3YWtldXAgcmVnaXN0ZXIgKFBNVV9B UC9DQVBfQ09SRW5fV0FLRVVQKS4gIFdyaXRpbmcgQklUKE4pIHRvIGhhcnQgTidzCisJICogcmVn aXN0ZXIgdHJpZ2dlcnMgdGhlIHdha2V1cCBwdWxzZSBmb3IgdGhhdCBoYXJ0LiAgVGhpcyBpcyBj b25maXJtZWQgYnkKKwkgKiBoYXJkd2FyZTogdGhlIHJlZ2lzdGVyIGFkZHJlc3Mgc2VsZWN0cyB0 aGUgdGFyZ2V0IGhhcnQsIGFuZCB0aGUgdmFsdWUKKwkgKiB3cml0dGVuIG11c3QgaGF2ZSBiaXQg TiBzZXQgKG5vdCBhIGZpeGVkIHRyaWdnZXIgYml0KS4KKwkgKiBTZWUgSzMgVXNlciBNYW51YWws ICIxNiBQZXJpcGhlcmFscyAvIFBvd2VyIE1hbmFnZW1lbnQgLyBXYWtldXAgQ29yZSIuCisJICov CisJZm9yIChpID0gMTsgaSA8IGFycmF5X3NpemUoY29yZV93YWtldXBfcmVnKTsgaSsrKQorCQl3 cml0ZWwoMSA8PCBpLCAodm9pZCAqKSh1bnNpZ25lZCBsb25nKWNvcmVfd2FrZXVwX3JlZ1tpXSk7 CisKKwkvKgorCSAqIFdhaXQgZm9yIGVhY2ggbm9uLWJvb3QgaGFydCB0byBlbnRlciBXRkkuICBT dGF0dXMgYml0IHBvc2l0aW9ucyBhcmUKKwkgKiBub24tdW5pZm9ybSAoc2VlIGszLmgpLCBzbyB1 c2UgdGhlIGZpbGUtc2NvcGUgbG9va3VwIHRhYmxlcy4KKwkgKi8KKwlmb3IgKGkgPSAxOyBpIDwg UExBVEZPUk1fTUFYX0NQVVM7IGkrKykgeworCQl1NjQgZGVhZGxpbmUgPSBzYmlfdGltZXJfdmFs dWVfYWZ0ZXJfbXNlY3MoSEFSVF9XRklfVElNRU9VVF9NUyk7CisKKwkJd2hpbGUgKCEocmVhZGwo KHZvaWQgKikodW5zaWduZWQgbG9uZyl3Zmlfc3RhdHVzX3JlZ1tpXSkgJiB3Zmlfc3RhdHVzX21h c2tbaV0pKSB7CisJCQlpZiAoc2JpX3RpbWVyX3ZhbHVlKCkgPj0gZGVhZGxpbmUpIHsKKwkJCQlz YmlfcHJpbnRmKCJ3YXJuOiBoYXJ0ICVkIGRpZCBub3QgZW50ZXIgV0ZJXG4iLCBpKTsKKwkJCQli cmVhazsKKwkJCX0KKwkJfQorCX0KK30KKworLyoKKyAqIFBsYXRmb3JtIGVhcmx5IGluaXRpYWxp emF0aW9uLgorICovCitzdGF0aWMgaW50IHNwYWNlbWl0X2szX2Vhcmx5X2luaXQoYm9vbCBjb2xk X2Jvb3QpCit7CisJaW50IHJjOworCisJaWYgKGNvbGRfYm9vdCkKKwkJc3BhY2VtaXRfazNfcHJl X2luaXQoKTsKKworCXJjID0gZ2VuZXJpY19lYXJseV9pbml0KGNvbGRfYm9vdCk7CisJaWYgKHJj KQorCQlyZXR1cm4gcmM7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGJvb2wgc3BhY2VtaXRf Y29sZF9ib290X2FsbG93ZWQodTMyIGhhcnRpZCkKK3sKKwlyZXR1cm4gIWhhcnRpZDsKK30KKwor c3RhdGljIGludCBzcGFjZW1pdF9rM19wbGF0Zm9ybV9pbml0KGNvbnN0IHZvaWQgKmZkdCwgaW50 IG5vZGVvZmYsCisJCQkJICAgICBjb25zdCBzdHJ1Y3QgZmR0X21hdGNoICptYXRjaCkKK3sKKwln ZW5lcmljX3BsYXRmb3JtX29wcy5uYXNjZW50X2luaXQgPSBzcGFjZW1pdF9rM19uYXNjZW50X2lu aXQ7CisJZ2VuZXJpY19wbGF0Zm9ybV9vcHMuZWFybHlfaW5pdCA9IHNwYWNlbWl0X2szX2Vhcmx5 X2luaXQ7CisJZ2VuZXJpY19wbGF0Zm9ybV9vcHMuY29sZF9ib290X2FsbG93ZWQgPSBzcGFjZW1p dF9jb2xkX2Jvb3RfYWxsb3dlZDsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgY29uc3Qgc3Ry dWN0IGZkdF9tYXRjaCBzcGFjZW1pdF9rM19tYXRjaFtdID0geworCXsgLmNvbXBhdGlibGUgPSAi c3BhY2VtaXQsazMiIH0sCisJeyAvKiBzZW50aW5lbCAqLyB9Cit9OworCitjb25zdCBzdHJ1Y3Qg ZmR0X2RyaXZlciBzcGFjZW1pdF9rMyA9IHsKKwkubWF0Y2hfdGFibGUgPSBzcGFjZW1pdF9rM19t YXRjaCwKKwkuaW5pdCA9IHNwYWNlbWl0X2szX3BsYXRmb3JtX2luaXQsCit9OwpkaWZmIC0tZ2l0 IGEvcGxhdGZvcm0vZ2VuZXJpYy9zcGFjZW1pdC9rM19hc20uUyBiL3BsYXRmb3JtL2dlbmVyaWMv c3BhY2VtaXQvazNfYXNtLlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmZl NDVjY2E2Ci0tLSAvZGV2L251bGwKKysrIGIvcGxhdGZvcm0vZ2VuZXJpYy9zcGFjZW1pdC9rM19h c20uUwpAQCAtMCwwICsxLDMzIEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTIt Q2xhdXNlICovCisvKgorICogQ29weXJpZ2h0IChjKSAyMDI2IFNwYWNlbWlUCisgKiBBdXRob3Jz OgorICogICBYaWFuYmluIFpodSA8eGlhbmJpbi56aHVAbGludXguc3BhY2VtaXQuY29tPgorICog ICBUcm95IE1pdGNoZWxsIDx0cm95Lm1pdGNoZWxsQGxpbnV4LnNwYWNlbWl0LmNvbT4KKyAqLwor CisjZGVmaW5lIF9fQVNTRU1CTFlfXworI2luY2x1ZGUgPHNwYWNlbWl0L2NvbW1vbi5oPgorI2lu Y2x1ZGUgPHNwYWNlbWl0L2szLmg+CisKKwkuc2VjdGlvbiAuZW50cnksICJheCIsICVwcm9nYml0 cworCS5hbGlnbiAzCisJLmdsb2JsIF9zcGFjZW1pdF9rM193YXJtX3N0YXJ0Citfc3BhY2VtaXRf azNfd2FybV9zdGFydDoKKwkvKiBFbmFibGUgZGNhY2hlLCBpY2FjaGUsIGFuZCBDUFUgZmVhdHVy ZXMgKi8KKwlsaQl0MCwgTVNFVFVQX0JPT1RfRkxBR1MKKwljc3JzCUNTUl9NU0VUVVAsIHQwCisK KwkvKgorCSAqIFNldCBzbXBlblt4XSBpbiBNTDJTRVRVUCB0byBlbmFibGUgTDEgRC1jYWNoZSBz bm9vcGluZyBmb3IgdGhpcworCSAqIGNvcmUsIHNvIHRoZSBoYXJkd2FyZSBtYWludGFpbnMgY29o ZXJlbmN5IGJldHdlZW4gdGhpcyBjb3JlJ3MgTDEKKwkgKiBELWNhY2hlIGFuZCBhbGwgb3RoZXIg Y2FjaGVzIGluIHRoZSBzeXN0ZW0uCisJICogVGhlIGJpdCBwb3NpdGlvbiBpcyAxIDw8IChoYXJ0 aWQgJSBQTEFURk9STV9NQVhfQ1BVU19QRVJfQ0xVU1RFUikuCisJICovCisJY3Nycgl0MCwgbWhh cnRpZAorCWFuZGkJdDAsIHQwLCAoUExBVEZPUk1fTUFYX0NQVVNfUEVSX0NMVVNURVIgLSAxKQor CWxpCXQxLCAxCisJc2xsCXQxLCB0MSwgdDAKKwljc3JzCUNTUl9NTDJTRVRVUCwgdDEKKworCWoJ X3N0YXJ0X3dhcm0KZGlmZiAtLWdpdCBhL3BsYXRmb3JtL2dlbmVyaWMvc3BhY2VtaXQvb2JqZWN0 cy5tayBiL3BsYXRmb3JtL2dlbmVyaWMvc3BhY2VtaXQvb2JqZWN0cy5tawppbmRleCA4MzA5YWQx Zi4uMjgyNTQzYjUgMTAwNjQ0Ci0tLSBhL3BsYXRmb3JtL2dlbmVyaWMvc3BhY2VtaXQvb2JqZWN0 cy5taworKysgYi9wbGF0Zm9ybS9nZW5lcmljL3NwYWNlbWl0L29iamVjdHMubWsKQEAgLTUsMyAr NSw1IEBACiBwbGF0Zm9ybS1vYmpzLSQoQ09ORklHX1BMQVRGT1JNX1NQQUNFTUlUKSArPSBzcGFj ZW1pdC9zcGFjZW1pdC5vCiBjYXJyYXktcGxhdGZvcm1fb3ZlcnJpZGVfbW9kdWxlcy0kKENPTkZJ R19QTEFURk9STV9TUEFDRU1JVF9LMSkgKz0gc3BhY2VtaXRfazEKIHBsYXRmb3JtLW9ianMtJChD T05GSUdfUExBVEZPUk1fU1BBQ0VNSVRfSzEpICs9IHNwYWNlbWl0L2sxLm8KK2NhcnJheS1wbGF0 Zm9ybV9vdmVycmlkZV9tb2R1bGVzLSQoQ09ORklHX1BMQVRGT1JNX1NQQUNFTUlUX0szKSArPSBz cGFjZW1pdF9rMworcGxhdGZvcm0tb2Jqcy0kKENPTkZJR19QTEFURk9STV9TUEFDRU1JVF9LMykg Kz0gc3BhY2VtaXQvazMubyBzcGFjZW1pdC9rM19hc20ubwoKLS0gCjIuNTUuMAoKCi0tIApvcGVu c2JpIG1haWxpbmcgbGlzdApvcGVuc2JpQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3Rz LmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9vcGVuc2JpCg==