From: Mudit Sharma <muditsharma.info@gmail.com>
To: jic23@kernel.org,
	lars@metafoo.de,
	krzk+dt@kernel.org,
	conor+dt@kernel.org,
	robh@kernel.org
Cc: Mudit Sharma <muditsharma.info@gmail.com>,
	linux-kernel@vger.kernel.org,
	mazziesaccount@gmail.com,
	linux-iio@vger.kernel.org,
	devicetree@vger.kernel.org,
	Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Subject: [PATCH v7 1/2] dt-bindings: iio: light: ROHM BH1745
Date: Fri,  5 Jul 2024 22:59:07 +0100
Message-ID: <20240705220018.414771-1-muditsharma.info@gmail.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269549
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-iio
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Add ROHM BH1745 - 4 channel I2C colour sensor's dt-bindings.

Signed-off-by: Mudit Sharma <muditsharma.info@gmail.com>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
---
v6->v7:
- no change
v5->v6:
- no change
v4->v5:
- add power supply info
v3->v4:
- no changes
v2->v3:
- move 'additionalproperties' after 'required' block
- remove block style indicator '|' from description
v1->v2:
- fix yaml issue: make `maintainers` a list

 .../bindings/iio/light/rohm,bh1745.yaml       | 53 +++++++++++++++++++
 1 file changed, 53 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/iio/light/rohm,bh1745.yaml

diff --git a/Documentation/devicetree/bindings/iio/light/rohm,bh1745.yaml b/Documentation/devicetree/bindings/iio/light/rohm,bh1745.yaml
new file mode 100644
index 000000000000..44896795c67e
--- /dev/null
+++ b/Documentation/devicetree/bindings/iio/light/rohm,bh1745.yaml
@@ -0,0 +1,53 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/iio/light/rohm,bh1745.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: ROHM BH1745 colour sensor
+
+maintainers:
+  - Mudit Sharma <muditsharma.info@gmail.com>
+
+description:
+  BH1745 is an I2C colour sensor with red, green, blue and clear
+  channels. It has a programmable active low interrupt pin.
+  Interrupt occurs when the signal from the selected interrupt
+  source channel crosses set interrupt threshold high/low level.
+
+properties:
+  compatible:
+    const: rohm,bh1745
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  vdd-supply: true
+
+required:
+  - compatible
+  - reg
+  - vdd-supply
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        colour-sensor@38 {
+            compatible = "rohm,bh1745";
+            reg = <0x38>;
+            interrupt-parent = <&gpio>;
+            interrupts = <19 IRQ_TYPE_LEVEL_LOW>;
+            vdd-supply = <&vdd>;
+        };
+    };
+
+...
-- 
2.43.0

.

Content-Type: multipart/mixed; boundary="------------027ScQNViiROuJS1pkY2WdSU"
Message-ID: <00c2ed58-2a99-4b5b-ac0e-45ee6171e186@gmail.com>
Date: Sat, 6 Jul 2024 00:05:59 +0200
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Language: en-US
From: Mirsad Todorovac <mtodorovac69@gmail.com>
Subject: =?UTF-8?Q?=5BPROBLEM=5D_arch/x86/platform/olpc/olpc=5Fdt=2Ec=3A222?=
 =?UTF-8?B?OjE5OiBlcnJvcjogdmFyaWFibGUg4oCYbGVu4oCZIHNldCBidXQgbm90IHVzZWQg?=
 =?UTF-8?Q?=5B-Werror=3Dunused-but-set-variable=5D?=
To: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Cc: Lubomir Rintel <lkundrak@v3.sk>, Thomas Gleixner <tglx@linutronix.de>,
 Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
 Dave Hansen <dave.hansen@linux.intel.com>, x86@kernel.org,
 "H. Peter Anvin" <hpa@zytor.com>,
 Sebastian Reichel <sebastian.reichel@collabora.com>,
 Pavel Machek <pavel@ucw.cz>
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269551
Newsgroups: org.kernel.vger.linux-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

This is a multi-part message in MIME format.
--------------027ScQNViiROuJS1pkY2WdSU
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Hi, all!

This is the result of testing randconfig with KCONFIG_SEED=0xEE7AB52F in next-20240703 vanilla tree on
Ubuntu 22.04 LTS. GCC used is gcc (Ubuntu 12.3.0-1ubuntu1~22.04) 12.3.0.

The particular error is as follows:

arch/x86/platform/olpc/olpc_dt.c: In function ‘olpc_dt_compatible_match’:
arch/x86/platform/olpc/olpc_dt.c:222:19: error: variable ‘len’ set but not used [-Werror=unused-but-set-variable]
  222 |         int plen, len;
      |                   ^~~

  219 static int __init olpc_dt_compatible_match(phandle node, const char *compat)
  220 {
  221         char buf[64], *p;
→ 222         int plen, len;
  223 
  224         plen = olpc_dt_getproperty(node, "compatible", buf, sizeof(buf));
  225         if (plen <= 0)
  226                 return 0;
  227 
→ 228         len = strlen(compat);
  229         for (p = buf; p < buf + plen; p += strlen(p) + 1) {
  230                 if (strcmp(p, compat) == 0)
  231                         return 1;
  232         }
  233 
  234         return 0;
  235 }

This looks like a minor issue: len assigned strlen(compat), but never used.

The code was introduced with the commit a7a9bacb9a32f.

Hope this helps.

Best regards,
Mirsad Todorovac
--------------027ScQNViiROuJS1pkY2WdSU
Content-Type: text/plain; charset=UTF-8; name=".config"
Content-Disposition: attachment; filename=".config"
Content-Transfer-Encoding: base64

IwojIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZpbGU7IERPIE5PVCBFRElULgojIExpbnV4
L3g4NiA2LjEwLjAtcmM2IEtlcm5lbCBDb25maWd1cmF0aW9uCiMKQ09ORklHX0NDX1ZFUlNJ
T05fVEVYVD0iZ2NjIChVYnVudHUgMTIuMy4wLTF1YnVudHUxfjIyLjA0KSAxMi4zLjAiCkNP
TkZJR19DQ19JU19HQ0M9eQpDT05GSUdfR0NDX1ZFUlNJT049MTIwMzAwCkNPTkZJR19DTEFO
R19WRVJTSU9OPTAKQ09ORklHX0FTX0lTX0dOVT15CkNPTkZJR19BU19WRVJTSU9OPTIzODAw
CkNPTkZJR19MRF9JU19CRkQ9eQpDT05GSUdfTERfVkVSU0lPTj0yMzgwMApDT05GSUdfTExE
X1ZFUlNJT049MApDT05GSUdfQ0NfQ0FOX0xJTks9eQpDT05GSUdfQ0NfQ0FOX0xJTktfU1RB
VElDPXkKQ09ORklHX0NDX0hBU19BU01fR09UT19PVVRQVVQ9eQpDT05GSUdfQ0NfSEFTX0FT
TV9HT1RPX1RJRURfT1VUUFVUPXkKQ09ORklHX0dDQ19BU01fR09UT19PVVRQVVRfV09SS0FS
T1VORD15CkNPTkZJR19UT09MU19TVVBQT1JUX1JFTFI9eQpDT05GSUdfQ0NfSEFTX0FTTV9J
TkxJTkU9eQpDT05GSUdfQ0NfSEFTX05PX1BST0ZJTEVfRk5fQVRUUj15CkNPTkZJR19QQUhP
TEVfVkVSU0lPTj0xMjUKQ09ORklHX0lSUV9XT1JLPXkKQ09ORklHX0JVSUxEVElNRV9UQUJM
RV9TT1JUPXkKQ09ORklHX1RIUkVBRF9JTkZPX0lOX1RBU0s9eQoKIwojIEdlbmVyYWwgc2V0
dXAKIwpDT05GSUdfSU5JVF9FTlZfQVJHX0xJTUlUPTMyCiMgQ09ORklHX0NPTVBJTEVfVEVT
VCBpcyBub3Qgc2V0CkNPTkZJR19XRVJST1I9eQpDT05GSUdfTE9DQUxWRVJTSU9OPSIiCiMg
Q09ORklHX0xPQ0FMVkVSU0lPTl9BVVRPIGlzIG5vdCBzZXQKQ09ORklHX0JVSUxEX1NBTFQ9
IiIKQ09ORklHX0hBVkVfS0VSTkVMX0daSVA9eQpDT05GSUdfSEFWRV9LRVJORUxfQlpJUDI9
eQpDT05GSUdfSEFWRV9LRVJORUxfTFpNQT15CkNPTkZJR19IQVZFX0tFUk5FTF9YWj15CkNP
TkZJR19IQVZFX0tFUk5FTF9MWk89eQpDT05GSUdfSEFWRV9LRVJORUxfTFo0PXkKQ09ORklH
X0hBVkVfS0VSTkVMX1pTVEQ9eQpDT05GSUdfS0VSTkVMX0daSVA9eQojIENPTkZJR19LRVJO
RUxfQlpJUDIgaXMgbm90IHNldAojIENPTkZJR19LRVJORUxfTFpNQSBpcyBub3Qgc2V0CiMg
Q09ORklHX0tFUk5FTF9YWiBpcyBub3Qgc2V0CiMgQ09ORklHX0tFUk5FTF9MWk8gaXMgbm90
IHNldAojIENPTkZJR19LRVJORUxfTFo0IGlzIG5vdCBzZXQKIyBDT05GSUdfS0VSTkVMX1pT
VEQgaXMgbm90IHNldApDT05GSUdfREVGQVVMVF9JTklUPSIiCkNPTkZJR19ERUZBVUxUX0hP
U1ROQU1FPSIobm9uZSkiCiMgQ09ORklHX1NZU1ZJUEMgaXMgbm90IHNldApDT05GSUdfUE9T
SVhfTVFVRVVFPXkKQ09ORklHX1BPU0lYX01RVUVVRV9TWVNDVEw9eQojIENPTkZJR19XQVRD
SF9RVUVVRSBpcyBub3Qgc2V0CiMgQ09ORklHX0NST1NTX01FTU9SWV9BVFRBQ0ggaXMgbm90
IHNldAojIENPTkZJR19VU0VMSUIgaXMgbm90IHNldAojIENPTkZJR19BVURJVCBpcyBub3Qg
c2V0CkNPTkZJR19IQVZFX0FSQ0hfQVVESVRTWVNDQUxMPXkKCiMKIyBJUlEgc3Vic3lzdGVt
CiMKQ09ORklHX0dFTkVSSUNfSVJRX1BST0JFPXkKQ09ORklHX0dFTkVSSUNfSVJRX1NIT1c9
eQpDT05GSUdfR0VORVJJQ19JUlFfRUZGRUNUSVZFX0FGRl9NQVNLPXkKQ09ORklHX0dFTkVS
SUNfUEVORElOR19JUlE9eQpDT05GSUdfR0VORVJJQ19JUlFfTUlHUkFUSU9OPXkKQ09ORklH
X0hBUkRJUlFTX1NXX1JFU0VORD15CkNPTkZJR19HRU5FUklDX0lSUV9DSElQPXkKQ09ORklH
X0lSUV9ET01BSU49eQpDT05GSUdfSVJRX0RPTUFJTl9ISUVSQVJDSFk9eQpDT05GSUdfSVJR
X01TSV9JT01NVT15CkNPTkZJR19HRU5FUklDX0lSUV9NQVRSSVhfQUxMT0NBVE9SPXkKQ09O
RklHX0dFTkVSSUNfSVJRX1JFU0VSVkFUSU9OX01PREU9eQpDT05GSUdfSVJRX0ZPUkNFRF9U
SFJFQURJTkc9eQpDT05GSUdfU1BBUlNFX0lSUT15CiMgZW5kIG9mIElSUSBzdWJzeXN0ZW0K
CkNPTkZJR19DTE9DS1NPVVJDRV9XQVRDSERPRz15CkNPTkZJR19BUkNIX0NMT0NLU09VUkNF
X0lOSVQ9eQpDT05GSUdfQ0xPQ0tTT1VSQ0VfVkFMSURBVEVfTEFTVF9DWUNMRT15CkNPTkZJ
R19HRU5FUklDX1RJTUVfVlNZU0NBTEw9eQpDT05GSUdfR0VORVJJQ19DTE9DS0VWRU5UUz15
CkNPTkZJR19HRU5FUklDX0NMT0NLRVZFTlRTX0JST0FEQ0FTVD15CkNPTkZJR19HRU5FUklD
X0NMT0NLRVZFTlRTX0JST0FEQ0FTVF9JRExFPXkKQ09ORklHX0dFTkVSSUNfQ0xPQ0tFVkVO
VFNfTUlOX0FESlVTVD15CkNPTkZJR19HRU5FUklDX0NNT1NfVVBEQVRFPXkKQ09ORklHX0hB
VkVfUE9TSVhfQ1BVX1RJTUVSU19UQVNLX1dPUks9eQpDT05GSUdfUE9TSVhfQ1BVX1RJTUVS
U19UQVNLX1dPUks9eQpDT05GSUdfVElNRV9LVU5JVF9URVNUPXkKQ09ORklHX0NPTlRFWFRf
VFJBQ0tJTkc9eQpDT05GSUdfQ09OVEVYVF9UUkFDS0lOR19JRExFPXkKCiMKIyBUaW1lcnMg
c3Vic3lzdGVtCiMKQ09ORklHX0haX1BFUklPRElDPXkKIyBDT05GSUdfTk9fSFpfSURMRSBp
cyBub3Qgc2V0CkNPTkZJR19OT19IWj15CiMgQ09ORklHX0hJR0hfUkVTX1RJTUVSUyBpcyBu
b3Qgc2V0CkNPTkZJR19DTE9DS1NPVVJDRV9XQVRDSERPR19NQVhfU0tFV19VUz0xMjUKIyBl
bmQgb2YgVGltZXJzIHN1YnN5c3RlbQoKQ09ORklHX0JQRj15CkNPTkZJR19IQVZFX0VCUEZf
SklUPXkKCiMKIyBCUEYgc3Vic3lzdGVtCiMKQ09ORklHX0JQRl9TWVNDQUxMPXkKQ09ORklH
X0JQRl9KSVQ9eQojIENPTkZJR19CUEZfSklUX0FMV0FZU19PTiBpcyBub3Qgc2V0CkNPTkZJ
R19CUEZfVU5QUklWX0RFRkFVTFRfT0ZGPXkKQ09ORklHX1VTRVJNT0RFX0RSSVZFUj15CkNP
TkZJR19CUEZfUFJFTE9BRD15CiMgQ09ORklHX0JQRl9QUkVMT0FEX1VNRCBpcyBub3Qgc2V0
CiMgZW5kIG9mIEJQRiBzdWJzeXN0ZW0KCkNPTkZJR19QUkVFTVBUX1ZPTFVOVEFSWV9CVUlM
RD15CiMgQ09ORklHX1BSRUVNUFRfTk9ORSBpcyBub3Qgc2V0CkNPTkZJR19QUkVFTVBUX1ZP
TFVOVEFSWT15CiMgQ09ORklHX1BSRUVNUFQgaXMgbm90IHNldAojIENPTkZJR19QUkVFTVBU
X0RZTkFNSUMgaXMgbm90IHNldAojIENPTkZJR19TQ0hFRF9DT1JFIGlzIG5vdCBzZXQKCiMK
IyBDUFUvVGFzayB0aW1lIGFuZCBzdGF0cyBhY2NvdW50aW5nCiMKQ09ORklHX1RJQ0tfQ1BV
X0FDQ09VTlRJTkc9eQpDT05GSUdfSVJRX1RJTUVfQUNDT1VOVElORz15CkNPTkZJR19IQVZF
X1NDSEVEX0FWR19JUlE9eQpDT05GSUdfQlNEX1BST0NFU1NfQUNDVD15CkNPTkZJR19CU0Rf
UFJPQ0VTU19BQ0NUX1YzPXkKQ09ORklHX1RBU0tTVEFUUz15CiMgQ09ORklHX1RBU0tfREVM
QVlfQUNDVCBpcyBub3Qgc2V0CiMgQ09ORklHX1RBU0tfWEFDQ1QgaXMgbm90IHNldApDT05G
SUdfUFNJPXkKIyBDT05GSUdfUFNJX0RFRkFVTFRfRElTQUJMRUQgaXMgbm90IHNldAojIGVu
ZCBvZiBDUFUvVGFzayB0aW1lIGFuZCBzdGF0cyBhY2NvdW50aW5nCgpDT05GSUdfQ1BVX0lT
T0xBVElPTj15CgojCiMgUkNVIFN1YnN5c3RlbQojCkNPTkZJR19UUkVFX1JDVT15CiMgQ09O
RklHX1JDVV9FWFBFUlQgaXMgbm90IHNldApDT05GSUdfVFJFRV9TUkNVPXkKQ09ORklHX1RB
U0tTX1JDVV9HRU5FUklDPXkKQ09ORklHX05FRURfVEFTS1NfUkNVPXkKQ09ORklHX1RBU0tT
X1RSQUNFX1JDVT15CkNPTkZJR19SQ1VfU1RBTExfQ09NTU9OPXkKQ09ORklHX1JDVV9ORUVE
X1NFR0NCTElTVD15CiMgZW5kIG9mIFJDVSBTdWJzeXN0ZW0KCkNPTkZJR19JS0NPTkZJRz15
CkNPTkZJR19JS0NPTkZJR19QUk9DPXkKQ09ORklHX0lLSEVBREVSUz15CkNPTkZJR19MT0df
QlVGX1NISUZUPTE3CkNPTkZJR19MT0dfQ1BVX01BWF9CVUZfU0hJRlQ9MTIKQ09ORklHX0hB
VkVfVU5TVEFCTEVfU0NIRURfQ0xPQ0s9eQoKIwojIFNjaGVkdWxlciBmZWF0dXJlcwojCiMg
ZW5kIG9mIFNjaGVkdWxlciBmZWF0dXJlcwoKQ09ORklHX0FSQ0hfV0FOVF9CQVRDSEVEX1VO
TUFQX1RMQl9GTFVTSD15CkNPTkZJR19DQ19JTVBMSUNJVF9GQUxMVEhST1VHSD0iLVdpbXBs
aWNpdC1mYWxsdGhyb3VnaD01IgpDT05GSUdfR0NDMTBfTk9fQVJSQVlfQk9VTkRTPXkKQ09O
RklHX0NDX05PX0FSUkFZX0JPVU5EUz15CkNPTkZJR19HQ0NfTk9fU1RSSU5HT1BfT1ZFUkZM
T1c9eQpDT05GSUdfQ0NfTk9fU1RSSU5HT1BfT1ZFUkZMT1c9eQpDT05GSUdfU0xBQl9PQkpf
RVhUPXkKQ09ORklHX0NHUk9VUFM9eQpDT05GSUdfUEFHRV9DT1VOVEVSPXkKQ09ORklHX0NH
Uk9VUF9GQVZPUl9EWU5NT0RTPXkKQ09ORklHX01FTUNHPXkKIyBDT05GSUdfTUVNQ0dfVjEg
aXMgbm90IHNldAojIENPTkZJR19CTEtfQ0dST1VQIGlzIG5vdCBzZXQKIyBDT05GSUdfQ0dS
T1VQX1NDSEVEIGlzIG5vdCBzZXQKQ09ORklHX1NDSEVEX01NX0NJRD15CiMgQ09ORklHX0NH
Uk9VUF9QSURTIGlzIG5vdCBzZXQKIyBDT05GSUdfQ0dST1VQX1JETUEgaXMgbm90IHNldApD
T05GSUdfQ0dST1VQX0ZSRUVaRVI9eQojIENPTkZJR19DUFVTRVRTIGlzIG5vdCBzZXQKQ09O
RklHX0NHUk9VUF9ERVZJQ0U9eQojIENPTkZJR19DR1JPVVBfQ1BVQUNDVCBpcyBub3Qgc2V0
CkNPTkZJR19DR1JPVVBfUEVSRj15CiMgQ09ORklHX0NHUk9VUF9CUEYgaXMgbm90IHNldApD
T05GSUdfQ0dST1VQX01JU0M9eQpDT05GSUdfU09DS19DR1JPVVBfREFUQT15CkNPTkZJR19O
QU1FU1BBQ0VTPXkKIyBDT05GSUdfVVRTX05TIGlzIG5vdCBzZXQKIyBDT05GSUdfVElNRV9O
UyBpcyBub3Qgc2V0CkNPTkZJR19JUENfTlM9eQojIENPTkZJR19VU0VSX05TIGlzIG5vdCBz
ZXQKIyBDT05GSUdfUElEX05TIGlzIG5vdCBzZXQKQ09ORklHX05FVF9OUz15CiMgQ09ORklH
X0NIRUNLUE9JTlRfUkVTVE9SRSBpcyBub3Qgc2V0CiMgQ09ORklHX1NDSEVEX0FVVE9HUk9V
UCBpcyBub3Qgc2V0CiMgQ09ORklHX1JFTEFZIGlzIG5vdCBzZXQKIyBDT05GSUdfQkxLX0RF
Vl9JTklUUkQgaXMgbm90IHNldApDT05GSUdfQk9PVF9DT05GSUc9eQpDT05GSUdfQk9PVF9D
T05GSUdfRk9SQ0U9eQpDT05GSUdfQk9PVF9DT05GSUdfRU1CRUQ9eQpDT05GSUdfQk9PVF9D
T05GSUdfRU1CRURfRklMRT0iIgpDT05GSUdfSU5JVFJBTUZTX1BSRVNFUlZFX01USU1FPXkK
Q09ORklHX0NDX09QVElNSVpFX0ZPUl9QRVJGT1JNQU5DRT15CiMgQ09ORklHX0NDX09QVElN
SVpFX0ZPUl9TSVpFIGlzIG5vdCBzZXQKQ09ORklHX0xEX09SUEhBTl9XQVJOPXkKQ09ORklH
X0xEX09SUEhBTl9XQVJOX0xFVkVMPSJlcnJvciIKQ09ORklHX1NZU0NUTD15CkNPTkZJR19I
QVZFX1VJRDE2PXkKQ09ORklHX1NZU0NUTF9FWENFUFRJT05fVFJBQ0U9eQpDT05GSUdfSEFW
RV9QQ1NQS1JfUExBVEZPUk09eQojIENPTkZJR19FWFBFUlQgaXMgbm90IHNldApDT05GSUdf
VUlEMTY9eQpDT05GSUdfTVVMVElVU0VSPXkKQ09ORklHX1NHRVRNQVNLX1NZU0NBTEw9eQpD
T05GSUdfU1lTRlNfU1lTQ0FMTD15CkNPTkZJR19GSEFORExFPXkKQ09ORklHX1BPU0lYX1RJ
TUVSUz15CkNPTkZJR19QUklOVEs9eQpDT05GSUdfQlVHPXkKQ09ORklHX0VMRl9DT1JFPXkK
Q09ORklHX1BDU1BLUl9QTEFURk9STT15CkNPTkZJR19GVVRFWD15CkNPTkZJR19GVVRFWF9Q
ST15CkNPTkZJR19FUE9MTD15CkNPTkZJR19TSUdOQUxGRD15CkNPTkZJR19USU1FUkZEPXkK
Q09ORklHX0VWRU5URkQ9eQpDT05GSUdfU0hNRU09eQpDT05GSUdfQUlPPXkKQ09ORklHX0lP
X1VSSU5HPXkKQ09ORklHX0FEVklTRV9TWVNDQUxMUz15CkNPTkZJR19NRU1CQVJSSUVSPXkK
Q09ORklHX0tDTVA9eQpDT05GSUdfUlNFUT15CkNPTkZJR19DQUNIRVNUQVRfU1lTQ0FMTD15
CkNPTkZJR19LQUxMU1lNUz15CkNPTkZJR19LQUxMU1lNU19TRUxGVEVTVD15CkNPTkZJR19L
QUxMU1lNU19CQVNFX1JFTEFUSVZFPXkKQ09ORklHX0FSQ0hfSEFTX01FTUJBUlJJRVJfU1lO
Q19DT1JFPXkKQ09ORklHX0hBVkVfUEVSRl9FVkVOVFM9eQoKIwojIEtlcm5lbCBQZXJmb3Jt
YW5jZSBFdmVudHMgQW5kIENvdW50ZXJzCiMKQ09ORklHX1BFUkZfRVZFTlRTPXkKIyBlbmQg
b2YgS2VybmVsIFBlcmZvcm1hbmNlIEV2ZW50cyBBbmQgQ291bnRlcnMKCiMgQ09ORklHX1BS
T0ZJTElORyBpcyBub3Qgc2V0CgojCiMgS2V4ZWMgYW5kIGNyYXNoIGZlYXR1cmVzCiMKIyBD
T05GSUdfS0VYRUMgaXMgbm90IHNldAojIGVuZCBvZiBLZXhlYyBhbmQgY3Jhc2ggZmVhdHVy
ZXMKIyBlbmQgb2YgR2VuZXJhbCBzZXR1cAoKIyBDT05GSUdfNjRCSVQgaXMgbm90IHNldApD
T05GSUdfWDg2XzMyPXkKQ09ORklHX1g4Nj15CkNPTkZJR19JTlNUUlVDVElPTl9ERUNPREVS
PXkKQ09ORklHX09VVFBVVF9GT1JNQVQ9ImVsZjMyLWkzODYiCkNPTkZJR19MT0NLREVQX1NV
UFBPUlQ9eQpDT05GSUdfU1RBQ0tUUkFDRV9TVVBQT1JUPXkKQ09ORklHX01NVT15CkNPTkZJ
R19BUkNIX01NQVBfUk5EX0JJVFNfTUlOPTgKQ09ORklHX0FSQ0hfTU1BUF9STkRfQklUU19N
QVg9MTYKQ09ORklHX0FSQ0hfTU1BUF9STkRfQ09NUEFUX0JJVFNfTUlOPTgKQ09ORklHX0FS
Q0hfTU1BUF9STkRfQ09NUEFUX0JJVFNfTUFYPTE2CkNPTkZJR19HRU5FUklDX0lTQV9ETUE9
eQpDT05GSUdfR0VORVJJQ19CVUc9eQpDT05GSUdfQVJDSF9NQVlfSEFWRV9QQ19GREM9eQpD
T05GSUdfR0VORVJJQ19DQUxJQlJBVEVfREVMQVk9eQpDT05GSUdfQVJDSF9IQVNfQ1BVX1JF
TEFYPXkKQ09ORklHX0FSQ0hfSElCRVJOQVRJT05fUE9TU0lCTEU9eQpDT05GSUdfQVJDSF9T
VVNQRU5EX1BPU1NJQkxFPXkKQ09ORklHX0FSQ0hfU1VQUE9SVFNfVVBST0JFUz15CkNPTkZJ
R19GSVhfRUFSTFlDT05fTUVNPXkKQ09ORklHX1BHVEFCTEVfTEVWRUxTPTIKQ09ORklHX0ND
X0hBU19TQU5FX1NUQUNLUFJPVEVDVE9SPXkKCiMKIyBQcm9jZXNzb3IgdHlwZSBhbmQgZmVh
dHVyZXMKIwpDT05GSUdfU01QPXkKIyBDT05GSUdfWDg2X01QUEFSU0UgaXMgbm90IHNldAoj
IENPTkZJR19YODZfQ1BVX1JFU0NUUkwgaXMgbm90IHNldApDT05GSUdfWDg2X0JJR1NNUD15
CiMgQ09ORklHX1g4Nl9FWFRFTkRFRF9QTEFURk9STSBpcyBub3Qgc2V0CiMgQ09ORklHX1g4
Nl9BTURfUExBVEZPUk1fREVWSUNFIGlzIG5vdCBzZXQKQ09ORklHX1g4Nl8zMl9JUklTPXkK
Q09ORklHX1NDSEVEX09NSVRfRlJBTUVfUE9JTlRFUj15CiMgQ09ORklHX0hZUEVSVklTT1Jf
R1VFU1QgaXMgbm90IHNldAojIENPTkZJR19NNDg2U1ggaXMgbm90IHNldAojIENPTkZJR19N
NDg2IGlzIG5vdCBzZXQKQ09ORklHX001ODY9eQojIENPTkZJR19NNTg2VFNDIGlzIG5vdCBz
ZXQKIyBDT05GSUdfTTU4Nk1NWCBpcyBub3Qgc2V0CiMgQ09ORklHX002ODYgaXMgbm90IHNl
dAojIENPTkZJR19NUEVOVElVTUlJIGlzIG5vdCBzZXQKIyBDT05GSUdfTVBFTlRJVU1JSUkg
aXMgbm90IHNldAojIENPTkZJR19NUEVOVElVTU0gaXMgbm90IHNldAojIENPTkZJR19NUEVO
VElVTTQgaXMgbm90IHNldAojIENPTkZJR19NSzYgaXMgbm90IHNldAojIENPTkZJR19NSzcg
aXMgbm90IHNldAojIENPTkZJR19NSzggaXMgbm90IHNldAojIENPTkZJR19NQ1JVU09FIGlz
IG5vdCBzZXQKIyBDT05GSUdfTUVGRklDRU9OIGlzIG5vdCBzZXQKIyBDT05GSUdfTVdJTkNI
SVBDNiBpcyBub3Qgc2V0CiMgQ09ORklHX01XSU5DSElQM0QgaXMgbm90IHNldAojIENPTkZJ
R19NRUxBTiBpcyBub3Qgc2V0CiMgQ09ORklHX01HRU9ERUdYMSBpcyBub3Qgc2V0CiMgQ09O
RklHX01HRU9ERV9MWCBpcyBub3Qgc2V0CiMgQ09ORklHX01DWVJJWElJSSBpcyBub3Qgc2V0
CiMgQ09ORklHX01WSUFDM18yIGlzIG5vdCBzZXQKIyBDT05GSUdfTVZJQUM3IGlzIG5vdCBz
ZXQKIyBDT05GSUdfTUNPUkUyIGlzIG5vdCBzZXQKIyBDT05GSUdfTUFUT00gaXMgbm90IHNl
dApDT05GSUdfWDg2X0dFTkVSSUM9eQpDT05GSUdfWDg2X0lOVEVSTk9ERV9DQUNIRV9TSElG
VD02CkNPTkZJR19YODZfTDFfQ0FDSEVfU0hJRlQ9NgpDT05GSUdfWDg2X0YwMEZfQlVHPXkK
Q09ORklHX1g4Nl9BTElHTk1FTlRfMTY9eQpDT05GSUdfWDg2X0lOVEVMX1VTRVJDT1BZPXkK
Q09ORklHX1g4Nl9NSU5JTVVNX0NQVV9GQU1JTFk9NApDT05GSUdfSUEzMl9GRUFUX0NUTD15
CkNPTkZJR19YODZfVk1YX0ZFQVRVUkVfTkFNRVM9eQpDT05GSUdfQ1BVX1NVUF9JTlRFTD15
CkNPTkZJR19DUFVfU1VQX0NZUklYXzMyPXkKQ09ORklHX0NQVV9TVVBfQU1EPXkKQ09ORklH
X0NQVV9TVVBfSFlHT049eQpDT05GSUdfQ1BVX1NVUF9DRU5UQVVSPXkKQ09ORklHX0NQVV9T
VVBfVFJBTlNNRVRBXzMyPXkKQ09ORklHX0NQVV9TVVBfWkhBT1hJTj15CkNPTkZJR19DUFVf
U1VQX1ZPUlRFWF8zMj15CiMgQ09ORklHX0hQRVRfVElNRVIgaXMgbm90IHNldApDT05GSUdf
RE1JPXkKQ09ORklHX05SX0NQVVNfUkFOR0VfQkVHSU49MgpDT05GSUdfTlJfQ1BVU19SQU5H
RV9FTkQ9NjQKQ09ORklHX05SX0NQVVNfREVGQVVMVD0zMgpDT05GSUdfTlJfQ1BVUz0zMgpD
T05GSUdfU0NIRURfQ0xVU1RFUj15CkNPTkZJR19TQ0hFRF9TTVQ9eQojIENPTkZJR19TQ0hF
RF9NQyBpcyBub3Qgc2V0CkNPTkZJR19YODZfTE9DQUxfQVBJQz15CkNPTkZJR19YODZfSU9f
QVBJQz15CiMgQ09ORklHX1g4Nl9SRVJPVVRFX0ZPUl9CUk9LRU5fQk9PVF9JUlFTIGlzIG5v
dCBzZXQKQ09ORklHX1g4Nl9NQ0U9eQpDT05GSUdfWDg2X01DRUxPR19MRUdBQ1k9eQpDT05G
SUdfWDg2X01DRV9JTlRFTD15CiMgQ09ORklHX1g4Nl9BTkNJRU5UX01DRSBpcyBub3Qgc2V0
CkNPTkZJR19YODZfTUNFX1RIUkVTSE9MRD15CgojCiMgUGVyZm9ybWFuY2UgbW9uaXRvcmlu
ZwojCkNPTkZJR19QRVJGX0VWRU5UU19BTURfUE9XRVI9eQpDT05GSUdfUEVSRl9FVkVOVFNf
QU1EX1VOQ09SRT15CiMgQ09ORklHX1BFUkZfRVZFTlRTX0FNRF9CUlMgaXMgbm90IHNldAoj
IGVuZCBvZiBQZXJmb3JtYW5jZSBtb25pdG9yaW5nCgojIENPTkZJR19YODZfTEVHQUNZX1ZN
ODYgaXMgbm90IHNldApDT05GSUdfWDg2XzE2QklUPXkKQ09ORklHX1g4Nl9FU1BGSVgzMj15
CkNPTkZJR19YODZfSU9QTF9JT1BFUk09eQojIENPTkZJR19UT1NISUJBIGlzIG5vdCBzZXQK
Q09ORklHX1g4Nl9SRUJPT1RGSVhVUFM9eQpDT05GSUdfTUlDUk9DT0RFPXkKQ09ORklHX01J
Q1JPQ09ERV9MQVRFX0xPQURJTkc9eQojIENPTkZJR19NSUNST0NPREVfTEFURV9GT1JDRV9N
SU5SRVYgaXMgbm90IHNldAojIENPTkZJR19YODZfTVNSIGlzIG5vdCBzZXQKIyBDT05GSUdf
WDg2X0NQVUlEIGlzIG5vdCBzZXQKIyBDT05GSUdfTk9ISUdITUVNIGlzIG5vdCBzZXQKQ09O
RklHX0hJR0hNRU00Rz15CkNPTkZJR19QQUdFX09GRlNFVD0weEMwMDAwMDAwCkNPTkZJR19I
SUdITUVNPXkKQ09ORklHX0FSQ0hfRkxBVE1FTV9FTkFCTEU9eQpDT05GSUdfQVJDSF9TUEFS
U0VNRU1fRU5BQkxFPXkKQ09ORklHX0FSQ0hfU0VMRUNUX01FTU9SWV9NT0RFTD15CkNPTkZJ
R19JTExFR0FMX1BPSU5URVJfVkFMVUU9MApDT05GSUdfSElHSFBURT15CiMgQ09ORklHX1g4
Nl9DSEVDS19CSU9TX0NPUlJVUFRJT04gaXMgbm90IHNldApDT05GSUdfTVRSUj15CkNPTkZJ
R19NVFJSX1NBTklUSVpFUj15CkNPTkZJR19NVFJSX1NBTklUSVpFUl9FTkFCTEVfREVGQVVM
VD0wCkNPTkZJR19NVFJSX1NBTklUSVpFUl9TUEFSRV9SRUdfTlJfREVGQVVMVD0xCkNPTkZJ
R19YODZfUEFUPXkKQ09ORklHX0FSQ0hfVVNFU19QR19VTkNBQ0hFRD15CkNPTkZJR19YODZf
VU1JUD15CkNPTkZJR19DQ19IQVNfSUJUPXkKQ09ORklHX1g4Nl9JTlRFTF9UU1hfTU9ERV9P
RkY9eQojIENPTkZJR19YODZfSU5URUxfVFNYX01PREVfT04gaXMgbm90IHNldAojIENPTkZJ
R19YODZfSU5URUxfVFNYX01PREVfQVVUTyBpcyBub3Qgc2V0CkNPTkZJR19FRkk9eQpDT05G
SUdfRUZJX1NUVUI9eQpDT05GSUdfRUZJX0hBTkRPVkVSX1BST1RPQ09MPXkKIyBDT05GSUdf
SFpfMTAwIGlzIG5vdCBzZXQKQ09ORklHX0haXzI1MD15CiMgQ09ORklHX0haXzMwMCBpcyBu
b3Qgc2V0CiMgQ09ORklHX0haXzEwMDAgaXMgbm90IHNldApDT05GSUdfSFo9MjUwCkNPTkZJ
R19BUkNIX1NVUFBPUlRTX0tFWEVDPXkKQ09ORklHX0FSQ0hfU1VQUE9SVFNfS0VYRUNfUFVS
R0FUT1JZPXkKQ09ORklHX0FSQ0hfU1VQUE9SVFNfS0VYRUNfU0lHPXkKQ09ORklHX0FSQ0hf
U1VQUE9SVFNfS0VYRUNfU0lHX0ZPUkNFPXkKQ09ORklHX0FSQ0hfU1VQUE9SVFNfS0VYRUNf
QlpJTUFHRV9WRVJJRllfU0lHPXkKQ09ORklHX0FSQ0hfU1VQUE9SVFNfS0VYRUNfSlVNUD15
CkNPTkZJR19BUkNIX1NVUFBPUlRTX0NSQVNIX0RVTVA9eQpDT05GSUdfQVJDSF9TVVBQT1JU
U19DUkFTSF9IT1RQTFVHPXkKQ09ORklHX1BIWVNJQ0FMX1NUQVJUPTB4MTAwMDAwMApDT05G
SUdfUkVMT0NBVEFCTEU9eQpDT05GSUdfUkFORE9NSVpFX0JBU0U9eQpDT05GSUdfWDg2X05F
RURfUkVMT0NTPXkKQ09ORklHX1BIWVNJQ0FMX0FMSUdOPTB4MjAwMDAwCkNPTkZJR19IT1RQ
TFVHX0NQVT15CkNPTkZJR19DT01QQVRfVkRTTz15CkNPTkZJR19DTURMSU5FX0JPT0w9eQpD
T05GSUdfQ01ETElORT0iIgpDT05GSUdfTU9ESUZZX0xEVF9TWVNDQUxMPXkKQ09ORklHX1NU
UklDVF9TSUdBTFRTVEFDS19TSVpFPXkKIyBlbmQgb2YgUHJvY2Vzc29yIHR5cGUgYW5kIGZl
YXR1cmVzCgpDT05GSUdfQ0NfSEFTX05BTUVEX0FTPXkKQ09ORklHX1VTRV9YODZfU0VHX1NV
UFBPUlQ9eQpDT05GSUdfQ0NfSEFTX1NMUz15CkNPTkZJR19DQ19IQVNfUkVUVVJOX1RIVU5L
PXkKQ09ORklHX0NDX0hBU19FTlRSWV9QQURESU5HPXkKQ09ORklHX0ZVTkNUSU9OX1BBRERJ
TkdfQ0ZJPTExCkNPTkZJR19GVU5DVElPTl9QQURESU5HX0JZVEVTPTE2CkNPTkZJR19DUFVf
TUlUSUdBVElPTlM9eQpDT05GSUdfTUlUSUdBVElPTl9SRVRQT0xJTkU9eQojIENPTkZJR19N
SVRJR0FUSU9OX1JFVEhVTksgaXMgbm90IHNldAojIENPTkZJR19NSVRJR0FUSU9OX0dEU19G
T1JDRSBpcyBub3Qgc2V0CkNPTkZJR19NSVRJR0FUSU9OX1JGRFM9eQojIENPTkZJR19NSVRJ
R0FUSU9OX1NQRUNUUkVfQkhJIGlzIG5vdCBzZXQKCiMKIyBQb3dlciBtYW5hZ2VtZW50IGFu
ZCBBQ1BJIG9wdGlvbnMKIwojIENPTkZJR19TVVNQRU5EIGlzIG5vdCBzZXQKIyBDT05GSUdf
SElCRVJOQVRJT04gaXMgbm90IHNldAojIENPTkZJR19QTSBpcyBub3Qgc2V0CkNPTkZJR19B
UkNIX1NVUFBPUlRTX0FDUEk9eQpDT05GSUdfQUNQST15CkNPTkZJR19BQ1BJX0xFR0FDWV9U
QUJMRVNfTE9PS1VQPXkKQ09ORklHX0FSQ0hfTUlHSFRfSEFWRV9BQ1BJX1BEQz15CkNPTkZJ
R19BQ1BJX1NZU1RFTV9QT1dFUl9TVEFURVNfU1VQUE9SVD15CkNPTkZJR19BQ1BJX1RIRVJN
QUxfTElCPXkKQ09ORklHX0FDUElfREVCVUdHRVI9eQojIENPTkZJR19BQ1BJX1NQQ1JfVEFC
TEUgaXMgbm90IHNldAojIENPTkZJR19BQ1BJX1JFVl9PVkVSUklERV9QT1NTSUJMRSBpcyBu
b3Qgc2V0CiMgQ09ORklHX0FDUElfRUNfREVCVUdGUyBpcyBub3Qgc2V0CiMgQ09ORklHX0FD
UElfQUMgaXMgbm90IHNldApDT05GSUdfQUNQSV9CQVRURVJZPXkKQ09ORklHX0FDUElfQlVU
VE9OPXkKQ09ORklHX0FDUElfVklERU89eQpDT05GSUdfQUNQSV9GQU49eQpDT05GSUdfQUNQ
SV9ET0NLPXkKQ09ORklHX0FDUElfQ1BVX0ZSRVFfUFNTPXkKQ09ORklHX0FDUElfUFJPQ0VT
U09SX0NTVEFURT15CkNPTkZJR19BQ1BJX1BST0NFU1NPUl9JRExFPXkKQ09ORklHX0FDUElf
UFJPQ0VTU09SPXkKQ09ORklHX0FDUElfSVBNST15CkNPTkZJR19BQ1BJX0hPVFBMVUdfQ1BV
PXkKQ09ORklHX0FDUElfUFJPQ0VTU09SX0FHR1JFR0FUT1I9eQpDT05GSUdfQUNQSV9USEVS
TUFMPXkKQ09ORklHX0FDUElfUExBVEZPUk1fUFJPRklMRT15CkNPTkZJR19BUkNIX0hBU19B
Q1BJX1RBQkxFX1VQR1JBREU9eQpDT05GSUdfQUNQSV9ERUJVRz15CkNPTkZJR19BQ1BJX0NP
TlRBSU5FUj15CkNPTkZJR19BQ1BJX1NCUz15CkNPTkZJR19BQ1BJX0hFRD15CkNPTkZJR19B
Q1BJX0JHUlQ9eQpDT05GSUdfSEFWRV9BQ1BJX0FQRUk9eQpDT05GSUdfSEFWRV9BQ1BJX0FQ
RUlfTk1JPXkKQ09ORklHX0FDUElfQVBFST15CiMgQ09ORklHX0FDUElfQVBFSV9HSEVTIGlz
IG5vdCBzZXQKQ09ORklHX0FDUElfQVBFSV9FUlNUX0RFQlVHPXkKIyBDT05GSUdfQUNQSV9E
UFRGIGlzIG5vdCBzZXQKIyBDT05GSUdfQUNQSV9DT05GSUdGUyBpcyBub3Qgc2V0CkNPTkZJ
R19BQ1BJX1BDQz15CiMgQ09ORklHX0FDUElfRkZIIGlzIG5vdCBzZXQKQ09ORklHX1BNSUNf
T1BSRUdJT049eQojIENPTkZJR19CWFRfV0NfUE1JQ19PUFJFR0lPTiBpcyBub3Qgc2V0CkNP
TkZJR19UUFM2ODQ3MF9QTUlDX09QUkVHSU9OPXkKQ09ORklHX0FDUElfVklPVD15CkNPTkZJ
R19YODZfUE1fVElNRVI9eQoKIwojIENQVSBGcmVxdWVuY3kgc2NhbGluZwojCiMgQ09ORklH
X0NQVV9GUkVRIGlzIG5vdCBzZXQKIyBlbmQgb2YgQ1BVIEZyZXF1ZW5jeSBzY2FsaW5nCgoj
CiMgQ1BVIElkbGUKIwpDT05GSUdfQ1BVX0lETEU9eQojIENPTkZJR19DUFVfSURMRV9HT1Zf
TEFEREVSIGlzIG5vdCBzZXQKQ09ORklHX0NQVV9JRExFX0dPVl9NRU5VPXkKIyBDT05GSUdf
Q1BVX0lETEVfR09WX1RFTyBpcyBub3Qgc2V0CiMgZW5kIG9mIENQVSBJZGxlCgpDT05GSUdf
SU5URUxfSURMRT15CiMgZW5kIG9mIFBvd2VyIG1hbmFnZW1lbnQgYW5kIEFDUEkgb3B0aW9u
cwoKIwojIEJ1cyBvcHRpb25zIChQQ0kgZXRjLikKIwpDT05GSUdfSVNBX0RNQV9BUEk9eQpD
T05GSUdfSVNBPXkKQ09ORklHX1NDeDIwMD15CkNPTkZJR19TQ3gyMDBIUl9USU1FUj15CkNP
TkZJR19PTFBDPXkKQ09ORklHX09MUENfWE8xNV9TQ0k9eQojIENPTkZJR19BTElYIGlzIG5v
dCBzZXQKQ09ORklHX05FVDU1MDE9eQpDT05GSUdfR0VPUz15CiMgZW5kIG9mIEJ1cyBvcHRp
b25zIChQQ0kgZXRjLikKCiMKIyBCaW5hcnkgRW11bGF0aW9ucwojCkNPTkZJR19DT01QQVRf
MzI9eQojIGVuZCBvZiBCaW5hcnkgRW11bGF0aW9ucwoKQ09ORklHX0hBVkVfQVRPTUlDX0lP
TUFQPXkKQ09ORklHX1ZJUlRVQUxJWkFUSU9OPXkKQ09ORklHX0FTX0FWWDUxMj15CkNPTkZJ
R19BU19TSEExX05JPXkKQ09ORklHX0FTX1NIQTI1Nl9OST15CkNPTkZJR19BU19UUEFVU0U9
eQpDT05GSUdfQVNfR0ZOST15CkNPTkZJR19BU19WQUVTPXkKQ09ORklHX0FTX1ZQQ0xNVUxR
RFE9eQpDT05GSUdfQVNfV1JVU1M9eQpDT05GSUdfQVJDSF9DT05GSUdVUkVTX0NQVV9NSVRJ
R0FUSU9OUz15CgojCiMgR2VuZXJhbCBhcmNoaXRlY3R1cmUtZGVwZW5kZW50IG9wdGlvbnMK
IwpDT05GSUdfSE9UUExVR19TTVQ9eQpDT05GSUdfSE9UUExVR19DT1JFX1NZTkM9eQpDT05G
SUdfSE9UUExVR19DT1JFX1NZTkNfREVBRD15CkNPTkZJR19IT1RQTFVHX0NPUkVfU1lOQ19G
VUxMPXkKQ09ORklHX0hPVFBMVUdfU1BMSVRfU1RBUlRVUD15CkNPTkZJR19HRU5FUklDX0VO
VFJZPXkKIyBDT05GSUdfS1BST0JFUyBpcyBub3Qgc2V0CiMgQ09ORklHX0pVTVBfTEFCRUwg
aXMgbm90IHNldAojIENPTkZJR19TVEFUSUNfQ0FMTF9TRUxGVEVTVCBpcyBub3Qgc2V0CkNP
TkZJR19IQVZFX0VGRklDSUVOVF9VTkFMSUdORURfQUNDRVNTPXkKQ09ORklHX0FSQ0hfVVNF
X0JVSUxUSU5fQlNXQVA9eQpDT05GSUdfSEFWRV9JT1JFTUFQX1BST1Q9eQpDT05GSUdfSEFW
RV9LUFJPQkVTPXkKQ09ORklHX0hBVkVfS1JFVFBST0JFUz15CkNPTkZJR19IQVZFX09QVFBS
T0JFUz15CkNPTkZJR19IQVZFX0tQUk9CRVNfT05fRlRSQUNFPXkKQ09ORklHX0FSQ0hfQ09S
UkVDVF9TVEFDS1RSQUNFX09OX0tSRVRQUk9CRT15CkNPTkZJR19IQVZFX0ZVTkNUSU9OX0VS
Uk9SX0lOSkVDVElPTj15CkNPTkZJR19IQVZFX05NST15CkNPTkZJR19UUkFDRV9JUlFGTEFH
U19TVVBQT1JUPXkKQ09ORklHX1RSQUNFX0lSUUZMQUdTX05NSV9TVVBQT1JUPXkKQ09ORklH
X0hBVkVfQVJDSF9UUkFDRUhPT0s9eQpDT05GSUdfSEFWRV9ETUFfQ09OVElHVU9VUz15CkNP
TkZJR19HRU5FUklDX1NNUF9JRExFX1RIUkVBRD15CkNPTkZJR19BUkNIX0hBU19GT1JUSUZZ
X1NPVVJDRT15CkNPTkZJR19BUkNIX0hBU19TRVRfTUVNT1JZPXkKQ09ORklHX0FSQ0hfSEFT
X1NFVF9ESVJFQ1RfTUFQPXkKQ09ORklHX0FSQ0hfSEFTX0NQVV9GSU5BTElaRV9JTklUPXkK
Q09ORklHX0hBVkVfQVJDSF9USFJFQURfU1RSVUNUX1dISVRFTElTVD15CkNPTkZJR19BUkNI
X1dBTlRTX0RZTkFNSUNfVEFTS19TVFJVQ1Q9eQpDT05GSUdfQVJDSF9XQU5UU19OT19JTlNU
Uj15CkNPTkZJR19BUkNIXzMyQklUX09GRl9UPXkKQ09ORklHX0hBVkVfQVNNX01PRFZFUlNJ
T05TPXkKQ09ORklHX0hBVkVfUkVHU19BTkRfU1RBQ0tfQUNDRVNTX0FQST15CkNPTkZJR19I
QVZFX1JTRVE9eQpDT05GSUdfSEFWRV9GVU5DVElPTl9BUkdfQUNDRVNTX0FQST15CkNPTkZJ
R19IQVZFX0hXX0JSRUFLUE9JTlQ9eQpDT05GSUdfSEFWRV9NSVhFRF9CUkVBS1BPSU5UU19S
RUdTPXkKQ09ORklHX0hBVkVfVVNFUl9SRVRVUk5fTk9USUZJRVI9eQpDT05GSUdfSEFWRV9Q
RVJGX0VWRU5UU19OTUk9eQpDT05GSUdfSEFWRV9IQVJETE9DS1VQX0RFVEVDVE9SX1BFUkY9
eQpDT05GSUdfSEFWRV9QRVJGX1JFR1M9eQpDT05GSUdfSEFWRV9QRVJGX1VTRVJfU1RBQ0tf
RFVNUD15CkNPTkZJR19IQVZFX0FSQ0hfSlVNUF9MQUJFTD15CkNPTkZJR19IQVZFX0FSQ0hf
SlVNUF9MQUJFTF9SRUxBVElWRT15CkNPTkZJR19NTVVfR0FUSEVSX01FUkdFX1ZNQVM9eQpD
T05GSUdfTU1VX0xBWllfVExCX1JFRkNPVU5UPXkKQ09ORklHX0FSQ0hfSEFWRV9OTUlfU0FG
RV9DTVBYQ0hHPXkKQ09ORklHX0FSQ0hfSEFTX05NSV9TQUZFX1RISVNfQ1BVX09QUz15CkNP
TkZJR19IQVZFX0FMSUdORURfU1RSVUNUX1BBR0U9eQpDT05GSUdfSEFWRV9DTVBYQ0hHX0xP
Q0FMPXkKQ09ORklHX0hBVkVfQ01QWENIR19ET1VCTEU9eQpDT05GSUdfQVJDSF9XQU5UX0lQ
Q19QQVJTRV9WRVJTSU9OPXkKQ09ORklHX0hBVkVfQVJDSF9TRUNDT01QPXkKQ09ORklHX0hB
VkVfQVJDSF9TRUNDT01QX0ZJTFRFUj15CkNPTkZJR19TRUNDT01QPXkKQ09ORklHX1NFQ0NP
TVBfRklMVEVSPXkKIyBDT05GSUdfU0VDQ09NUF9DQUNIRV9ERUJVRyBpcyBub3Qgc2V0CkNP
TkZJR19IQVZFX0FSQ0hfU1RBQ0tMRUFLPXkKQ09ORklHX0hBVkVfU1RBQ0tQUk9URUNUT1I9
eQojIENPTkZJR19TVEFDS1BST1RFQ1RPUiBpcyBub3Qgc2V0CkNPTkZJR19BUkNIX1NVUFBP
UlRTX0xUT19DTEFORz15CkNPTkZJR19BUkNIX1NVUFBPUlRTX0xUT19DTEFOR19USElOPXkK
Q09ORklHX0xUT19OT05FPXkKQ09ORklHX0hBVkVfQVJDSF9XSVRISU5fU1RBQ0tfRlJBTUVT
PXkKQ09ORklHX0hBVkVfSVJRX1RJTUVfQUNDT1VOVElORz15CkNPTkZJR19IQVZFX01PVkVf
UFVEPXkKQ09ORklHX0hBVkVfTU9WRV9QTUQ9eQpDT05GSUdfSEFWRV9BUkNIX1RSQU5TUEFS
RU5UX0hVR0VQQUdFPXkKQ09ORklHX0FSQ0hfV0FOVF9IVUdFX1BNRF9TSEFSRT15CkNPTkZJ
R19BUkNIX1dBTlRfUE1EX01LV1JJVEU9eQpDT05GSUdfSEFWRV9NT0RfQVJDSF9TUEVDSUZJ
Qz15CkNPTkZJR19NT0RVTEVTX1VTRV9FTEZfUkVMPXkKQ09ORklHX0hBVkVfU09GVElSUV9P
Tl9PV05fU1RBQ0s9eQpDT05GSUdfU09GVElSUV9PTl9PV05fU1RBQ0s9eQpDT05GSUdfQVJD
SF9IQVNfRUxGX1JBTkRPTUlaRT15CkNPTkZJR19IQVZFX0FSQ0hfTU1BUF9STkRfQklUUz15
CkNPTkZJR19IQVZFX0VYSVRfVEhSRUFEPXkKQ09ORklHX0FSQ0hfTU1BUF9STkRfQklUUz04
CkNPTkZJR19IQVZFX1BBR0VfU0laRV80S0I9eQpDT05GSUdfUEFHRV9TSVpFXzRLQj15CkNP
TkZJR19QQUdFX1NJWkVfTEVTU19USEFOXzY0S0I9eQpDT05GSUdfUEFHRV9TSVpFX0xFU1Nf
VEhBTl8yNTZLQj15CkNPTkZJR19QQUdFX1NISUZUPTEyCkNPTkZJR19JU0FfQlVTX0FQST15
CkNPTkZJR19DTE9ORV9CQUNLV0FSRFM9eQpDT05GSUdfT0xEX1NJR1NVU1BFTkQzPXkKQ09O
RklHX09MRF9TSUdBQ1RJT049eQpDT05GSUdfQ09NUEFUXzMyQklUX1RJTUU9eQpDT05GSUdf
SEFWRV9BUkNIX1JBTkRPTUlaRV9LU1RBQ0tfT0ZGU0VUPXkKQ09ORklHX1JBTkRPTUlaRV9L
U1RBQ0tfT0ZGU0VUPXkKIyBDT05GSUdfUkFORE9NSVpFX0tTVEFDS19PRkZTRVRfREVGQVVM
VCBpcyBub3Qgc2V0CkNPTkZJR19BUkNIX0hBU19TVFJJQ1RfS0VSTkVMX1JXWD15CkNPTkZJ
R19TVFJJQ1RfS0VSTkVMX1JXWD15CkNPTkZJR19BUkNIX0hBU19TVFJJQ1RfTU9EVUxFX1JX
WD15CkNPTkZJR19IQVZFX0FSQ0hfUFJFTDMyX1JFTE9DQVRJT05TPXkKQ09ORklHX0FSQ0hf
VVNFX01FTVJFTUFQX1BST1Q9eQpDT05GSUdfQVJDSF9IQVNfTUVNX0VOQ1JZUFQ9eQpDT05G
SUdfSEFWRV9TVEFUSUNfQ0FMTD15CkNPTkZJR19IQVZFX1BSRUVNUFRfRFlOQU1JQz15CkNP
TkZJR19IQVZFX1BSRUVNUFRfRFlOQU1JQ19DQUxMPXkKQ09ORklHX0FSQ0hfV0FOVF9MRF9P
UlBIQU5fV0FSTj15CkNPTkZJR19BUkNIX1NVUFBPUlRTX0RFQlVHX1BBR0VBTExPQz15CkNP
TkZJR19BUkNIX1NQTElUX0FSRzY0PXkKQ09ORklHX0FSQ0hfSEFTX1BBUkFOT0lEX0wxRF9G
TFVTSD15CkNPTkZJR19EWU5BTUlDX1NJR0ZSQU1FPXkKQ09ORklHX0FSQ0hfSEFTX0hXX1BU
RV9ZT1VORz15CkNPTkZJR19BUkNIX0hBU19LRVJORUxfRlBVX1NVUFBPUlQ9eQoKIwojIEdD
T1YtYmFzZWQga2VybmVsIHByb2ZpbGluZwojCkNPTkZJR19BUkNIX0hBU19HQ09WX1BST0ZJ
TEVfQUxMPXkKIyBlbmQgb2YgR0NPVi1iYXNlZCBrZXJuZWwgcHJvZmlsaW5nCgpDT05GSUdf
SEFWRV9HQ0NfUExVR0lOUz15CkNPTkZJR19GVU5DVElPTl9BTElHTk1FTlRfNEI9eQpDT05G
SUdfRlVOQ1RJT05fQUxJR05NRU5UXzE2Qj15CkNPTkZJR19GVU5DVElPTl9BTElHTk1FTlQ9
MTYKIyBlbmQgb2YgR2VuZXJhbCBhcmNoaXRlY3R1cmUtZGVwZW5kZW50IG9wdGlvbnMKCkNP
TkZJR19SVF9NVVRFWEVTPXkKIyBDT05GSUdfTU9EVUxFUyBpcyBub3Qgc2V0CkNPTkZJR19C
TE9DSz15CkNPTkZJR19CTE9DS19MRUdBQ1lfQVVUT0xPQUQ9eQpDT05GSUdfQkxLX0RFVl9C
U0dfQ09NTU9OPXkKQ09ORklHX0JMS19ERVZfQlNHTElCPXkKQ09ORklHX0JMS19ERVZfSU5U
RUdSSVRZPXkKIyBDT05GSUdfQkxLX0RFVl9XUklURV9NT1VOVEVEIGlzIG5vdCBzZXQKIyBD
T05GSUdfQkxLX0RFVl9aT05FRCBpcyBub3Qgc2V0CkNPTkZJR19CTEtfV0JUPXkKQ09ORklH
X0JMS19XQlRfTVE9eQojIENPTkZJR19CTEtfU0VEX09QQUwgaXMgbm90IHNldApDT05GSUdf
QkxLX0lOTElORV9FTkNSWVBUSU9OPXkKIyBDT05GSUdfQkxLX0lOTElORV9FTkNSWVBUSU9O
X0ZBTExCQUNLIGlzIG5vdCBzZXQKCiMKIyBQYXJ0aXRpb24gVHlwZXMKIwojIENPTkZJR19Q
QVJUSVRJT05fQURWQU5DRUQgaXMgbm90IHNldApDT05GSUdfTVNET1NfUEFSVElUSU9OPXkK
Q09ORklHX0VGSV9QQVJUSVRJT049eQojIGVuZCBvZiBQYXJ0aXRpb24gVHlwZXMKCkNPTkZJ
R19CTEtfTVFfVklSVElPPXkKQ09ORklHX0JMT0NLX0hPTERFUl9ERVBSRUNBVEVEPXkKCiMK
IyBJTyBTY2hlZHVsZXJzCiMKQ09ORklHX01RX0lPU0NIRURfREVBRExJTkU9eQojIENPTkZJ
R19NUV9JT1NDSEVEX0tZQkVSIGlzIG5vdCBzZXQKIyBDT05GSUdfSU9TQ0hFRF9CRlEgaXMg
bm90IHNldAojIGVuZCBvZiBJTyBTY2hlZHVsZXJzCgpDT05GSUdfQVNOMT15CkNPTkZJR19J
TkxJTkVfU1BJTl9VTkxPQ0tfSVJRPXkKQ09ORklHX0lOTElORV9SRUFEX1VOTE9DSz15CkNP
TkZJR19JTkxJTkVfUkVBRF9VTkxPQ0tfSVJRPXkKQ09ORklHX0lOTElORV9XUklURV9VTkxP
Q0s9eQpDT05GSUdfSU5MSU5FX1dSSVRFX1VOTE9DS19JUlE9eQpDT05GSUdfQVJDSF9TVVBQ
T1JUU19BVE9NSUNfUk1XPXkKQ09ORklHX01VVEVYX1NQSU5fT05fT1dORVI9eQpDT05GSUdf
UldTRU1fU1BJTl9PTl9PV05FUj15CkNPTkZJR19MT0NLX1NQSU5fT05fT1dORVI9eQpDT05G
SUdfQVJDSF9VU0VfUVVFVUVEX1NQSU5MT0NLUz15CkNPTkZJR19RVUVVRURfU1BJTkxPQ0tT
PXkKQ09ORklHX0FSQ0hfVVNFX1FVRVVFRF9SV0xPQ0tTPXkKQ09ORklHX1FVRVVFRF9SV0xP
Q0tTPXkKQ09ORklHX0FSQ0hfSEFTX05PTl9PVkVSTEFQUElOR19BRERSRVNTX1NQQUNFPXkK
Q09ORklHX0FSQ0hfSEFTX1NZTkNfQ09SRV9CRUZPUkVfVVNFUk1PREU9eQpDT05GSUdfQVJD
SF9IQVNfU1lTQ0FMTF9XUkFQUEVSPXkKQ09ORklHX0ZSRUVaRVI9eQoKIwojIEV4ZWN1dGFi
bGUgZmlsZSBmb3JtYXRzCiMKQ09ORklHX0JJTkZNVF9FTEY9eQpDT05GSUdfQklORk1UX0VM
Rl9LVU5JVF9URVNUPXkKQ09ORklHX0VMRkNPUkU9eQpDT05GSUdfQ09SRV9EVU1QX0RFRkFV
TFRfRUxGX0hFQURFUlM9eQpDT05GSUdfQklORk1UX1NDUklQVD15CkNPTkZJR19CSU5GTVRf
TUlTQz15CkNPTkZJR19DT1JFRFVNUD15CkNPTkZJR19FWEVDX0tVTklUX1RFU1Q9eQojIGVu
ZCBvZiBFeGVjdXRhYmxlIGZpbGUgZm9ybWF0cwoKIwojIE1lbW9yeSBNYW5hZ2VtZW50IG9w
dGlvbnMKIwpDT05GSUdfU1dBUD15CiMgQ09ORklHX1pTV0FQIGlzIG5vdCBzZXQKQ09ORklH
X0hBVkVfWlNNQUxMT0M9eQoKIwojIFNsYWIgYWxsb2NhdG9yIG9wdGlvbnMKIwpDT05GSUdf
U0xVQj15CiMgQ09ORklHX1NMQUJfTUVSR0VfREVGQVVMVCBpcyBub3Qgc2V0CiMgQ09ORklH
X1NMQUJfRlJFRUxJU1RfUkFORE9NIGlzIG5vdCBzZXQKIyBDT05GSUdfU0xBQl9GUkVFTElT
VF9IQVJERU5FRCBpcyBub3Qgc2V0CkNPTkZJR19TTEFCX0JVQ0tFVFM9eQojIENPTkZJR19T
TFVCX1NUQVRTIGlzIG5vdCBzZXQKQ09ORklHX1NMVUJfQ1BVX1BBUlRJQUw9eQpDT05GSUdf
UkFORE9NX0tNQUxMT0NfQ0FDSEVTPXkKIyBlbmQgb2YgU2xhYiBhbGxvY2F0b3Igb3B0aW9u
cwoKIyBDT05GSUdfU0hVRkZMRV9QQUdFX0FMTE9DQVRPUiBpcyBub3Qgc2V0CkNPTkZJR19D
T01QQVRfQlJLPXkKQ09ORklHX1NFTEVDVF9NRU1PUllfTU9ERUw9eQojIENPTkZJR19GTEFU
TUVNX01BTlVBTCBpcyBub3Qgc2V0CkNPTkZJR19TUEFSU0VNRU1fTUFOVUFMPXkKQ09ORklH
X1NQQVJTRU1FTT15CkNPTkZJR19TUEFSU0VNRU1fU1RBVElDPXkKQ09ORklHX0hBVkVfR1VQ
X0ZBU1Q9eQpDT05GSUdfTUVNT1JZX0lTT0xBVElPTj15CkNPTkZJR19FWENMVVNJVkVfU1lT
VEVNX1JBTT15CkNPTkZJR19BUkNIX01IUF9NRU1NQVBfT05fTUVNT1JZX0VOQUJMRT15CkNP
TkZJR19TUExJVF9QVExPQ0tfQ1BVUz00CkNPTkZJR19DT01QQUNUSU9OPXkKQ09ORklHX0NP
TVBBQ1RfVU5FVklDVEFCTEVfREVGQVVMVD0xCiMgQ09ORklHX1BBR0VfUkVQT1JUSU5HIGlz
IG5vdCBzZXQKQ09ORklHX01JR1JBVElPTj15CkNPTkZJR19DT05USUdfQUxMT0M9eQpDT05G
SUdfUENQX0JBVENIX1NDQUxFX01BWD01CkNPTkZJR19CT1VOQ0U9eQojIENPTkZJR19LU00g
aXMgbm90IHNldApDT05GSUdfREVGQVVMVF9NTUFQX01JTl9BRERSPTQwOTYKQ09ORklHX0FS
Q0hfV0FOVF9HRU5FUkFMX0hVR0VUTEI9eQpDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0U9
eQpDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VfQUxXQVlTPXkKIyBDT05GSUdfVFJBTlNQ
QVJFTlRfSFVHRVBBR0VfTUFEVklTRSBpcyBub3Qgc2V0CiMgQ09ORklHX1RSQU5TUEFSRU5U
X0hVR0VQQUdFX05FVkVSIGlzIG5vdCBzZXQKQ09ORklHX1JFQURfT05MWV9USFBfRk9SX0ZT
PXkKQ09ORklHX1BHVEFCTEVfSEFTX0hVR0VfTEVBVkVTPXkKQ09ORklHX05FRURfUEVSX0NQ
VV9FTUJFRF9GSVJTVF9DSFVOSz15CkNPTkZJR19ORUVEX1BFUl9DUFVfUEFHRV9GSVJTVF9D
SFVOSz15CkNPTkZJR19IQVZFX1NFVFVQX1BFUl9DUFVfQVJFQT15CkNPTkZJR19DTUE9eQpD
T05GSUdfQ01BX1NZU0ZTPXkKQ09ORklHX0NNQV9BUkVBUz04CkNPTkZJR19HRU5FUklDX0VB
UkxZX0lPUkVNQVA9eQpDT05GSUdfUEFHRV9JRExFX0ZMQUc9eQpDT05GSUdfSURMRV9QQUdF
X1RSQUNLSU5HPXkKQ09ORklHX0FSQ0hfSEFTX0NBQ0hFX0xJTkVfU0laRT15CkNPTkZJR19B
UkNIX0hBU19DVVJSRU5UX1NUQUNLX1BPSU5URVI9eQpDT05GSUdfWk9ORV9ETUE9eQpDT05G
SUdfVk1fRVZFTlRfQ09VTlRFUlM9eQojIENPTkZJR19QRVJDUFVfU1RBVFMgaXMgbm90IHNl
dAoKIwojIEdVUF9URVNUIG5lZWRzIHRvIGhhdmUgREVCVUdfRlMgZW5hYmxlZAojCkNPTkZJ
R19ETUFQT09MX1RFU1Q9eQpDT05GSUdfQVJDSF9IQVNfUFRFX1NQRUNJQUw9eQpDT05GSUdf
S01BUF9MT0NBTD15CkNPTkZJR19NRU1GRF9DUkVBVEU9eQpDT05GSUdfU0VDUkVUTUVNPXkK
IyBDT05GSUdfQU5PTl9WTUFfTkFNRSBpcyBub3Qgc2V0CkNPTkZJR19VU0VSRkFVTFRGRD15
CkNPTkZJR19MT0NLX01NX0FORF9GSU5EX1ZNQT15CkNPTkZJR19FWEVDTUVNPXkKCiMKIyBE
YXRhIEFjY2VzcyBNb25pdG9yaW5nCiMKQ09ORklHX0RBTU9OPXkKQ09ORklHX0RBTU9OX0tV
TklUX1RFU1Q9eQojIENPTkZJR19EQU1PTl9WQUREUiBpcyBub3Qgc2V0CiMgQ09ORklHX0RB
TU9OX1BBRERSIGlzIG5vdCBzZXQKIyBDT05GSUdfREFNT05fU1lTRlMgaXMgbm90IHNldAoj
IGVuZCBvZiBEYXRhIEFjY2VzcyBNb25pdG9yaW5nCiMgZW5kIG9mIE1lbW9yeSBNYW5hZ2Vt
ZW50IG9wdGlvbnMKCkNPTkZJR19ORVQ9eQpDT05GSUdfTkVUX0lOR1JFU1M9eQpDT05GSUdf
TkVUX0VHUkVTUz15CkNPTkZJR19ORVRfWEdSRVNTPXkKQ09ORklHX1NLQl9FWFRFTlNJT05T
PXkKCiMKIyBOZXR3b3JraW5nIG9wdGlvbnMKIwpDT05GSUdfUEFDS0VUPXkKQ09ORklHX1BB
Q0tFVF9ESUFHPXkKIyBDT05GSUdfVU5JWCBpcyBub3Qgc2V0CiMgQ09ORklHX1hEUF9TT0NL
RVRTIGlzIG5vdCBzZXQKQ09ORklHX05FVF9IQU5EU0hBS0VfS1VOSVRfVEVTVD15CiMgQ09O
RklHX0lORVQgaXMgbm90IHNldAojIENPTkZJR19ORVRXT1JLX1NFQ01BUksgaXMgbm90IHNl
dApDT05GSUdfTkVUX1BUUF9DTEFTU0lGWT15CkNPTkZJR19ORVRXT1JLX1BIWV9USU1FU1RB
TVBJTkc9eQojIENPTkZJR19ORVRGSUxURVIgaXMgbm90IHNldApDT05GSUdfQVRNPXkKQ09O
RklHX0FUTV9MQU5FPXkKQ09ORklHX01SUD15CiMgQ09ORklHX0JSSURHRSBpcyBub3Qgc2V0
CkNPTkZJR19WTEFOXzgwMjFRPXkKIyBDT05GSUdfVkxBTl84MDIxUV9HVlJQIGlzIG5vdCBz
ZXQKQ09ORklHX1ZMQU5fODAyMVFfTVZSUD15CkNPTkZJR19MTEM9eQpDT05GSUdfTExDMj15
CkNPTkZJR19BVEFMSz15CiMgQ09ORklHX1gyNSBpcyBub3Qgc2V0CkNPTkZJR19MQVBCPXkK
Q09ORklHX1BIT05FVD15CiMgQ09ORklHX0lFRUU4MDIxNTQgaXMgbm90IHNldApDT05GSUdf
TkVUX1NDSEVEPXkKCiMKIyBRdWV1ZWluZy9TY2hlZHVsaW5nCiMKQ09ORklHX05FVF9TQ0hf
SFRCPXkKQ09ORklHX05FVF9TQ0hfSEZTQz15CiMgQ09ORklHX05FVF9TQ0hfUFJJTyBpcyBu
b3Qgc2V0CiMgQ09ORklHX05FVF9TQ0hfTVVMVElRIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVU
X1NDSF9SRUQgaXMgbm90IHNldAojIENPTkZJR19ORVRfU0NIX1NGQiBpcyBub3Qgc2V0CkNP
TkZJR19ORVRfU0NIX1NGUT15CkNPTkZJR19ORVRfU0NIX1RFUUw9eQpDT05GSUdfTkVUX1ND
SF9UQkY9eQojIENPTkZJR19ORVRfU0NIX0NCUyBpcyBub3Qgc2V0CiMgQ09ORklHX05FVF9T
Q0hfRVRGIGlzIG5vdCBzZXQKQ09ORklHX05FVF9TQ0hfTVFQUklPX0xJQj15CkNPTkZJR19O
RVRfU0NIX1RBUFJJTz15CkNPTkZJR19ORVRfU0NIX0dSRUQ9eQpDT05GSUdfTkVUX1NDSF9O
RVRFTT15CkNPTkZJR19ORVRfU0NIX0RSUj15CkNPTkZJR19ORVRfU0NIX01RUFJJTz15CkNP
TkZJR19ORVRfU0NIX1NLQlBSSU89eQojIENPTkZJR19ORVRfU0NIX0NIT0tFIGlzIG5vdCBz
ZXQKIyBDT05GSUdfTkVUX1NDSF9RRlEgaXMgbm90IHNldApDT05GSUdfTkVUX1NDSF9DT0RF
TD15CiMgQ09ORklHX05FVF9TQ0hfRlFfQ09ERUwgaXMgbm90IHNldApDT05GSUdfTkVUX1ND
SF9DQUtFPXkKQ09ORklHX05FVF9TQ0hfRlE9eQojIENPTkZJR19ORVRfU0NIX0hIRiBpcyBu
b3Qgc2V0CkNPTkZJR19ORVRfU0NIX1BJRT15CkNPTkZJR19ORVRfU0NIX0ZRX1BJRT15CiMg
Q09ORklHX05FVF9TQ0hfSU5HUkVTUyBpcyBub3Qgc2V0CkNPTkZJR19ORVRfU0NIX1BMVUc9
eQpDT05GSUdfTkVUX1NDSF9FVFM9eQpDT05GSUdfTkVUX1NDSF9ERUZBVUxUPXkKIyBDT05G
SUdfREVGQVVMVF9GUSBpcyBub3Qgc2V0CiMgQ09ORklHX0RFRkFVTFRfQ09ERUwgaXMgbm90
IHNldAojIENPTkZJR19ERUZBVUxUX0ZRX1BJRSBpcyBub3Qgc2V0CiMgQ09ORklHX0RFRkFV
TFRfU0ZRIGlzIG5vdCBzZXQKQ09ORklHX0RFRkFVTFRfUEZJRk9fRkFTVD15CkNPTkZJR19E
RUZBVUxUX05FVF9TQ0g9InBmaWZvX2Zhc3QiCgojCiMgQ2xhc3NpZmljYXRpb24KIwpDT05G
SUdfTkVUX0NMUz15CkNPTkZJR19ORVRfQ0xTX0JBU0lDPXkKQ09ORklHX05FVF9DTFNfRlc9
eQpDT05GSUdfTkVUX0NMU19VMzI9eQpDT05GSUdfQ0xTX1UzMl9QRVJGPXkKQ09ORklHX0NM
U19VMzJfTUFSSz15CiMgQ09ORklHX05FVF9DTFNfRkxPVyBpcyBub3Qgc2V0CiMgQ09ORklH
X05FVF9DTFNfQ0dST1VQIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVUX0NMU19CUEYgaXMgbm90
IHNldApDT05GSUdfTkVUX0NMU19GTE9XRVI9eQojIENPTkZJR19ORVRfQ0xTX01BVENIQUxM
IGlzIG5vdCBzZXQKQ09ORklHX05FVF9FTUFUQ0g9eQpDT05GSUdfTkVUX0VNQVRDSF9TVEFD
Sz0zMgojIENPTkZJR19ORVRfRU1BVENIX0NNUCBpcyBub3Qgc2V0CkNPTkZJR19ORVRfRU1B
VENIX05CWVRFPXkKIyBDT05GSUdfTkVUX0VNQVRDSF9VMzIgaXMgbm90IHNldApDT05GSUdf
TkVUX0VNQVRDSF9NRVRBPXkKQ09ORklHX05FVF9FTUFUQ0hfVEVYVD15CkNPTkZJR19ORVRf
RU1BVENIX0NBTklEPXkKQ09ORklHX05FVF9DTFNfQUNUPXkKIyBDT05GSUdfTkVUX0FDVF9Q
T0xJQ0UgaXMgbm90IHNldApDT05GSUdfTkVUX0FDVF9HQUNUPXkKIyBDT05GSUdfR0FDVF9Q
Uk9CIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVUX0FDVF9NSVJSRUQgaXMgbm90IHNldAojIENP
TkZJR19ORVRfQUNUX1NBTVBMRSBpcyBub3Qgc2V0CkNPTkZJR19ORVRfQUNUX05BVD15CiMg
Q09ORklHX05FVF9BQ1RfUEVESVQgaXMgbm90IHNldApDT05GSUdfTkVUX0FDVF9TSU1QPXkK
Q09ORklHX05FVF9BQ1RfU0tCRURJVD15CkNPTkZJR19ORVRfQUNUX01QTFM9eQpDT05GSUdf
TkVUX0FDVF9WTEFOPXkKQ09ORklHX05FVF9BQ1RfQlBGPXkKQ09ORklHX05FVF9BQ1RfU0tC
TU9EPXkKQ09ORklHX05FVF9BQ1RfSUZFPXkKQ09ORklHX05FVF9BQ1RfVFVOTkVMX0tFWT15
CkNPTkZJR19ORVRfQUNUX0dBVEU9eQpDT05GSUdfTkVUX0lGRV9TS0JNQVJLPXkKIyBDT05G
SUdfTkVUX0lGRV9TS0JQUklPIGlzIG5vdCBzZXQKQ09ORklHX05FVF9JRkVfU0tCVENJTkRF
WD15CkNPTkZJR19ORVRfVENfU0tCX0VYVD15CkNPTkZJR19ORVRfU0NIX0ZJRk89eQpDT05G
SUdfRENCPXkKIyBDT05GSUdfRE5TX1JFU09MVkVSIGlzIG5vdCBzZXQKQ09ORklHX0JBVE1B
Tl9BRFY9eQojIENPTkZJR19CQVRNQU5fQURWX0JBVE1BTl9WIGlzIG5vdCBzZXQKQ09ORklH
X0JBVE1BTl9BRFZfTkM9eQpDT05GSUdfQkFUTUFOX0FEVl9ERUJVRz15CiMgQ09ORklHX1ZT
T0NLRVRTIGlzIG5vdCBzZXQKQ09ORklHX05FVExJTktfRElBRz15CiMgQ09ORklHX01QTFMg
aXMgbm90IHNldApDT05GSUdfTkVUX05TSD15CkNPTkZJR19IU1I9eQojIENPTkZJR19RUlRS
IGlzIG5vdCBzZXQKIyBDT05GSUdfUENQVV9ERVZfUkVGQ05UIGlzIG5vdCBzZXQKQ09ORklH
X01BWF9TS0JfRlJBR1M9MTcKQ09ORklHX1JQUz15CkNPTkZJR19SRlNfQUNDRUw9eQpDT05G
SUdfU09DS19SWF9RVUVVRV9NQVBQSU5HPXkKQ09ORklHX1hQUz15CkNPTkZJR19DR1JPVVBf
TkVUX1BSSU89eQojIENPTkZJR19DR1JPVVBfTkVUX0NMQVNTSUQgaXMgbm90IHNldApDT05G
SUdfTkVUX1JYX0JVU1lfUE9MTD15CkNPTkZJR19CUUw9eQpDT05GSUdfTkVUX0ZMT1dfTElN
SVQ9eQoKIwojIE5ldHdvcmsgdGVzdGluZwojCiMgZW5kIG9mIE5ldHdvcmsgdGVzdGluZwoj
IGVuZCBvZiBOZXR3b3JraW5nIG9wdGlvbnMKCiMgQ09ORklHX0hBTVJBRElPIGlzIG5vdCBz
ZXQKQ09ORklHX0NBTj15CiMgQ09ORklHX0NBTl9SQVcgaXMgbm90IHNldApDT05GSUdfQ0FO
X0JDTT15CkNPTkZJR19DQU5fR1c9eQpDT05GSUdfQ0FOX0oxOTM5PXkKQ09ORklHX0NBTl9J
U09UUD15CiMgQ09ORklHX0JUIGlzIG5vdCBzZXQKQ09ORklHX01DVFA9eQpDT05GSUdfTUNU
UF9URVNUPXkKQ09ORklHX01DVFBfRkxPV1M9eQojIENPTkZJR19XSVJFTEVTUyBpcyBub3Qg
c2V0CiMgQ09ORklHX1JGS0lMTCBpcyBub3Qgc2V0CkNPTkZJR19ORVRfOVA9eQojIENPTkZJ
R19ORVRfOVBfRkQgaXMgbm90IHNldApDT05GSUdfTkVUXzlQX1ZJUlRJTz15CkNPTkZJR19O
RVRfOVBfREVCVUc9eQpDT05GSUdfQ0FJRj15CkNPTkZJR19DQUlGX0RFQlVHPXkKQ09ORklH
X0NBSUZfTkVUREVWPXkKQ09ORklHX0NBSUZfVVNCPXkKIyBDT05GSUdfTkZDIGlzIG5vdCBz
ZXQKQ09ORklHX1BTQU1QTEU9eQpDT05GSUdfTkVUX0lGRT15CiMgQ09ORklHX0xXVFVOTkVM
IGlzIG5vdCBzZXQKQ09ORklHX0dST19DRUxMUz15CkNPTkZJR19ORVRfU09DS19NU0c9eQpD
T05GSUdfTkVUX0RFVkxJTks9eQpDT05GSUdfUEFHRV9QT09MPXkKQ09ORklHX1BBR0VfUE9P
TF9TVEFUUz15CkNPTkZJR19GQUlMT1ZFUj15CiMgQ09ORklHX0VUSFRPT0xfTkVUTElOSyBp
cyBub3Qgc2V0CkNPTkZJR19ORVRERVZfQUREUl9MSVNUX1RFU1Q9eQpDT05GSUdfTkVUX1RF
U1Q9eQoKIwojIERldmljZSBEcml2ZXJzCiMKQ09ORklHX0hBVkVfRUlTQT15CkNPTkZJR19F
SVNBPXkKIyBDT05GSUdfRUlTQV9WTEJfUFJJTUlORyBpcyBub3Qgc2V0CkNPTkZJR19FSVNB
X1ZJUlRVQUxfUk9PVD15CiMgQ09ORklHX0VJU0FfTkFNRVMgaXMgbm90IHNldApDT05GSUdf
SEFWRV9QQ0k9eQpDT05GSUdfR0VORVJJQ19QQ0lfSU9NQVA9eQojIENPTkZJR19QQ0kgaXMg
bm90IHNldAojIENPTkZJR19QQ0NBUkQgaXMgbm90IHNldAoKIwojIEdlbmVyaWMgRHJpdmVy
IE9wdGlvbnMKIwpDT05GSUdfQVVYSUxJQVJZX0JVUz15CiMgQ09ORklHX1VFVkVOVF9IRUxQ
RVIgaXMgbm90IHNldAojIENPTkZJR19ERVZUTVBGUyBpcyBub3Qgc2V0CkNPTkZJR19TVEFO
REFMT05FPXkKQ09ORklHX1BSRVZFTlRfRklSTVdBUkVfQlVJTEQ9eQoKIwojIEZpcm13YXJl
IGxvYWRlcgojCkNPTkZJR19GV19MT0FERVI9eQojIENPTkZJR19GV19MT0FERVJfREVCVUcg
aXMgbm90IHNldApDT05GSUdfRldfTE9BREVSX1BBR0VEX0JVRj15CkNPTkZJR19GV19MT0FE
RVJfU1lTRlM9eQpDT05GSUdfRVhUUkFfRklSTVdBUkU9IiIKQ09ORklHX0ZXX0xPQURFUl9V
U0VSX0hFTFBFUj15CkNPTkZJR19GV19MT0FERVJfVVNFUl9IRUxQRVJfRkFMTEJBQ0s9eQpD
T05GSUdfRldfTE9BREVSX0NPTVBSRVNTPXkKIyBDT05GSUdfRldfTE9BREVSX0NPTVBSRVNT
X1haIGlzIG5vdCBzZXQKIyBDT05GSUdfRldfTE9BREVSX0NPTVBSRVNTX1pTVEQgaXMgbm90
IHNldApDT05GSUdfRldfVVBMT0FEPXkKIyBlbmQgb2YgRmlybXdhcmUgbG9hZGVyCgpDT05G
SUdfQUxMT1dfREVWX0NPUkVEVU1QPXkKQ09ORklHX1BNX1FPU19LVU5JVF9URVNUPXkKQ09O
RklHX0RSSVZFUl9QRV9LVU5JVF9URVNUPXkKQ09ORklHX0dFTkVSSUNfQ1BVX0RFVklDRVM9
eQpDT05GSUdfR0VORVJJQ19DUFVfQVVUT1BST0JFPXkKQ09ORklHX0dFTkVSSUNfQ1BVX1ZV
TE5FUkFCSUxJVElFUz15CkNPTkZJR19TT0NfQlVTPXkKQ09ORklHX1JFR01BUD15CkNPTkZJ
R19SRUdNQVBfS1VOSVQ9eQpDT05GSUdfUkVHTUFQX0JVSUxEPXkKQ09ORklHX1JFR01BUF9J
MkM9eQpDT05GSUdfUkVHTUFQX1cxPXkKQ09ORklHX1JFR01BUF9NTUlPPXkKQ09ORklHX1JF
R01BUF9JUlE9eQpDT05GSUdfUkVHTUFQX1JBTT15CkNPTkZJR19SRUdNQVBfU09VTkRXSVJF
PXkKQ09ORklHX1JFR01BUF9JM0M9eQpDT05GSUdfRE1BX1NIQVJFRF9CVUZGRVI9eQojIENP
TkZJR19ETUFfRkVOQ0VfVFJBQ0UgaXMgbm90IHNldApDT05GSUdfRldfREVWTElOS19TWU5D
X1NUQVRFX1RJTUVPVVQ9eQojIGVuZCBvZiBHZW5lcmljIERyaXZlciBPcHRpb25zCgojCiMg
QnVzIGRldmljZXMKIwojIENPTkZJR19NSElfQlVTIGlzIG5vdCBzZXQKQ09ORklHX01ISV9C
VVNfRVA9eQojIGVuZCBvZiBCdXMgZGV2aWNlcwoKIwojIENhY2hlIERyaXZlcnMKIwojIGVu
ZCBvZiBDYWNoZSBEcml2ZXJzCgpDT05GSUdfQ09OTkVDVE9SPXkKIyBDT05GSUdfUFJPQ19F
VkVOVFMgaXMgbm90IHNldAoKIwojIEZpcm13YXJlIERyaXZlcnMKIwoKIwojIEFSTSBTeXN0
ZW0gQ29udHJvbCBhbmQgTWFuYWdlbWVudCBJbnRlcmZhY2UgUHJvdG9jb2wKIwojIGVuZCBv
ZiBBUk0gU3lzdGVtIENvbnRyb2wgYW5kIE1hbmFnZW1lbnQgSW50ZXJmYWNlIFByb3RvY29s
CgojIENPTkZJR19FREQgaXMgbm90IHNldApDT05GSUdfRklSTVdBUkVfTUVNTUFQPXkKQ09O
RklHX0RNSUlEPXkKIyBDT05GSUdfRE1JX1NZU0ZTIGlzIG5vdCBzZXQKQ09ORklHX0RNSV9T
Q0FOX01BQ0hJTkVfTk9OX0VGSV9GQUxMQkFDSz15CkNPTkZJR19GV19DRkdfU1lTRlM9eQpD
T05GSUdfRldfQ0ZHX1NZU0ZTX0NNRExJTkU9eQojIENPTkZJR19TWVNGQl9TSU1QTEVGQiBp
cyBub3Qgc2V0CkNPTkZJR19HT09HTEVfRklSTVdBUkU9eQpDT05GSUdfR09PR0xFX1NNST15
CiMgQ09ORklHX0dPT0dMRV9DT1JFQk9PVF9UQUJMRSBpcyBub3Qgc2V0CkNPTkZJR19HT09H
TEVfTUVNQ09OU09MRT15CkNPTkZJR19HT09HTEVfTUVNQ09OU09MRV9YODZfTEVHQUNZPXkK
CiMKIyBFRkkgKEV4dGVuc2libGUgRmlybXdhcmUgSW50ZXJmYWNlKSBTdXBwb3J0CiMKQ09O
RklHX0VGSV9FU1JUPXkKIyBDT05GSUdfRUZJX1ZBUlNfUFNUT1JFIGlzIG5vdCBzZXQKQ09O
RklHX0VGSV9EWEVfTUVNX0FUVFJJQlVURVM9eQpDT05GSUdfRUZJX1JVTlRJTUVfV1JBUFBF
UlM9eQpDT05GSUdfRUZJX0JPT1RMT0FERVJfQ09OVFJPTD15CkNPTkZJR19FRklfQ0FQU1VM
RV9MT0FERVI9eQpDT05GSUdfRUZJX0NBUFNVTEVfUVVJUktfUVVBUktfQ1NIPXkKQ09ORklH
X0VGSV9URVNUPXkKQ09ORklHX0VGSV9ERVZfUEFUSF9QQVJTRVI9eQpDT05GSUdfQVBQTEVf
UFJPUEVSVElFUz15CkNPTkZJR19SRVNFVF9BVFRBQ0tfTUlUSUdBVElPTj15CiMgQ09ORklH
X0VGSV9SQ0kyX1RBQkxFIGlzIG5vdCBzZXQKQ09ORklHX0VGSV9ESVNBQkxFX1BDSV9ETUE9
eQpDT05GSUdfRUZJX0VBUkxZQ09OPXkKQ09ORklHX0VGSV9DVVNUT01fU1NEVF9PVkVSTEFZ
Uz15CkNPTkZJR19FRklfRElTQUJMRV9SVU5USU1FPXkKIyBDT05GSUdfRUZJX0NPQ09fU0VD
UkVUIGlzIG5vdCBzZXQKIyBlbmQgb2YgRUZJIChFeHRlbnNpYmxlIEZpcm13YXJlIEludGVy
ZmFjZSkgU3VwcG9ydAoKQ09ORklHX1VFRklfQ1BFUj15CkNPTkZJR19VRUZJX0NQRVJfWDg2
PXkKCiMKIyBRdWFsY29tbSBmaXJtd2FyZSBkcml2ZXJzCiMKIyBDT05GSUdfUUNPTV9UWk1F
TV9NT0RFX0dFTkVSSUMgaXMgbm90IHNldApDT05GSUdfUUNPTV9UWk1FTV9NT0RFX1NITUJS
SURHRT15CiMgZW5kIG9mIFF1YWxjb21tIGZpcm13YXJlIGRyaXZlcnMKCiMKIyBUZWdyYSBm
aXJtd2FyZSBkcml2ZXIKIwojIGVuZCBvZiBUZWdyYSBmaXJtd2FyZSBkcml2ZXIKIyBlbmQg
b2YgRmlybXdhcmUgRHJpdmVycwoKQ09ORklHX0dOU1M9eQpDT05GSUdfTVREPXkKCiMKIyBQ
YXJ0aXRpb24gcGFyc2VycwojCkNPTkZJR19NVERfQ01ETElORV9QQVJUUz15CkNPTkZJR19N
VERfT0ZfUEFSVFM9eQojIENPTkZJR19NVERfUkVEQk9PVF9QQVJUUyBpcyBub3Qgc2V0CiMg
ZW5kIG9mIFBhcnRpdGlvbiBwYXJzZXJzCgojCiMgVXNlciBNb2R1bGVzIEFuZCBUcmFuc2xh
dGlvbiBMYXllcnMKIwpDT05GSUdfTVREX0JMS0RFVlM9eQojIENPTkZJR19NVERfQkxPQ0sg
aXMgbm90IHNldAojIENPTkZJR19NVERfQkxPQ0tfUk8gaXMgbm90IHNldAojIENPTkZJR19G
VEwgaXMgbm90IHNldApDT05GSUdfTkZUTD15CkNPTkZJR19ORlRMX1JXPXkKIyBDT05GSUdf
SU5GVEwgaXMgbm90IHNldAojIENPTkZJR19SRkRfRlRMIGlzIG5vdCBzZXQKQ09ORklHX1NT
RkRDPXkKIyBDT05GSUdfU01fRlRMIGlzIG5vdCBzZXQKQ09ORklHX01URF9PT1BTPXkKQ09O
RklHX01URF9TV0FQPXkKQ09ORklHX01URF9QQVJUSVRJT05FRF9NQVNURVI9eQoKIwojIFJB
TS9ST00vRmxhc2ggY2hpcCBkcml2ZXJzCiMKQ09ORklHX01URF9DRkk9eQpDT05GSUdfTVRE
X0pFREVDUFJPQkU9eQpDT05GSUdfTVREX0dFTl9QUk9CRT15CiMgQ09ORklHX01URF9DRklf
QURWX09QVElPTlMgaXMgbm90IHNldApDT05GSUdfTVREX01BUF9CQU5LX1dJRFRIXzE9eQpD
T05GSUdfTVREX01BUF9CQU5LX1dJRFRIXzI9eQpDT05GSUdfTVREX01BUF9CQU5LX1dJRFRI
XzQ9eQpDT05GSUdfTVREX0NGSV9JMT15CkNPTkZJR19NVERfQ0ZJX0kyPXkKIyBDT05GSUdf
TVREX0NGSV9JTlRFTEVYVCBpcyBub3Qgc2V0CkNPTkZJR19NVERfQ0ZJX0FNRFNURD15CkNP
TkZJR19NVERfQ0ZJX1NUQUE9eQpDT05GSUdfTVREX0NGSV9VVElMPXkKQ09ORklHX01URF9S
QU09eQpDT05GSUdfTVREX1JPTT15CiMgQ09ORklHX01URF9BQlNFTlQgaXMgbm90IHNldAoj
IGVuZCBvZiBSQU0vUk9NL0ZsYXNoIGNoaXAgZHJpdmVycwoKIwojIE1hcHBpbmcgZHJpdmVy
cyBmb3IgY2hpcCBhY2Nlc3MKIwpDT05GSUdfTVREX0NPTVBMRVhfTUFQUElOR1M9eQpDT05G
SUdfTVREX1BIWVNNQVA9eQojIENPTkZJR19NVERfUEhZU01BUF9DT01QQVQgaXMgbm90IHNl
dApDT05GSUdfTVREX1BIWVNNQVBfT0Y9eQojIENPTkZJR19NVERfUEhZU01BUF9WRVJTQVRJ
TEUgaXMgbm90IHNldApDT05GSUdfTVREX1BIWVNNQVBfR0VNSU5JPXkKIyBDT05GSUdfTVRE
X1BIWVNNQVBfR1BJT19BRERSIGlzIG5vdCBzZXQKIyBDT05GSUdfTVREX1NDeDIwMF9ET0NG
TEFTSCBpcyBub3Qgc2V0CiMgQ09ORklHX01URF9BTUQ3NlhST00gaXMgbm90IHNldApDT05G
SUdfTVREX0lDSFhST009eQpDT05GSUdfTVREX05FVHRlbD15CkNPTkZJR19NVERfTDQ0MEdY
PXkKIyBDT05GSUdfTVREX1BMQVRSQU0gaXMgbm90IHNldAojIGVuZCBvZiBNYXBwaW5nIGRy
aXZlcnMgZm9yIGNoaXAgYWNjZXNzCgojCiMgU2VsZi1jb250YWluZWQgTVREIGRldmljZSBk
cml2ZXJzCiMKQ09ORklHX01URF9TTFJBTT15CkNPTkZJR19NVERfUEhSQU09eQpDT05GSUdf
TVREX01URFJBTT15CkNPTkZJR19NVERSQU1fVE9UQUxfU0laRT00MDk2CkNPTkZJR19NVERS
QU1fRVJBU0VfU0laRT0xMjgKQ09ORklHX01URF9CTE9DSzJNVEQ9eQoKIwojIERpc2stT24t
Q2hpcCBEZXZpY2UgRHJpdmVycwojCkNPTkZJR19NVERfRE9DRzM9eQpDT05GSUdfQkNIX0NP
TlNUX009MTQKQ09ORklHX0JDSF9DT05TVF9UPTQKIyBlbmQgb2YgU2VsZi1jb250YWluZWQg
TVREIGRldmljZSBkcml2ZXJzCgojCiMgTkFORAojCkNPTkZJR19NVERfTkFORF9DT1JFPXkK
Q09ORklHX01URF9PTkVOQU5EPXkKIyBDT05GSUdfTVREX09ORU5BTkRfVkVSSUZZX1dSSVRF
IGlzIG5vdCBzZXQKQ09ORklHX01URF9PTkVOQU5EX0dFTkVSSUM9eQpDT05GSUdfTVREX09O
RU5BTkRfT1RQPXkKQ09ORklHX01URF9PTkVOQU5EXzJYX1BST0dSQU09eQojIENPTkZJR19N
VERfUkFXX05BTkQgaXMgbm90IHNldAoKIwojIEVDQyBlbmdpbmUgc3VwcG9ydAojCkNPTkZJ
R19NVERfTkFORF9FQ0M9eQpDT05GSUdfTVREX05BTkRfRUNDX1NXX0hBTU1JTkc9eQojIENP
TkZJR19NVERfTkFORF9FQ0NfU1dfSEFNTUlOR19TTUMgaXMgbm90IHNldAojIENPTkZJR19N
VERfTkFORF9FQ0NfU1dfQkNIIGlzIG5vdCBzZXQKQ09ORklHX01URF9OQU5EX0VDQ19NWElD
PXkKIyBlbmQgb2YgRUNDIGVuZ2luZSBzdXBwb3J0CiMgZW5kIG9mIE5BTkQKCiMKIyBMUERE
UiAmIExQRERSMiBQQ00gbWVtb3J5IGRyaXZlcnMKIwojIENPTkZJR19NVERfTFBERFIgaXMg
bm90IHNldAojIGVuZCBvZiBMUEREUiAmIExQRERSMiBQQ00gbWVtb3J5IGRyaXZlcnMKCiMg
Q09ORklHX01URF9VQkkgaXMgbm90IHNldApDT05GSUdfTVREX0hZUEVSQlVTPXkKQ09ORklH
X0RUQz15CkNPTkZJR19PRj15CiMgQ09ORklHX09GX1VOSVRURVNUIGlzIG5vdCBzZXQKQ09O
RklHX09GX0tVTklUX1RFU1Q9eQpDT05GSUdfT0ZfRkxBVFRSRUU9eQpDT05GSUdfT0ZfRUFS
TFlfRkxBVFRSRUU9eQpDT05GSUdfT0ZfUFJPTVRSRUU9eQpDT05GSUdfT0ZfS09CSj15CkNP
TkZJR19PRl9BRERSRVNTPXkKQ09ORklHX09GX0lSUT15CkNPTkZJR19PRl9SRVNFUlZFRF9N
RU09eQojIENPTkZJR19PRl9PVkVSTEFZIGlzIG5vdCBzZXQKQ09ORklHX0FSQ0hfTUlHSFRf
SEFWRV9QQ19QQVJQT1JUPXkKQ09ORklHX1BBUlBPUlQ9eQojIENPTkZJR19QQVJQT1JUX1BD
IGlzIG5vdCBzZXQKQ09ORklHX1BBUlBPUlRfMTI4ND15CkNPTkZJR19QTlA9eQpDT05GSUdf
UE5QX0RFQlVHX01FU1NBR0VTPXkKCiMKIyBQcm90b2NvbHMKIwpDT05GSUdfSVNBUE5QPXkK
Q09ORklHX1BOUEJJT1M9eQpDT05GSUdfUE5QQklPU19QUk9DX0ZTPXkKQ09ORklHX1BOUEFD
UEk9eQojIENPTkZJR19CTEtfREVWIGlzIG5vdCBzZXQKCiMKIyBOVk1FIFN1cHBvcnQKIwpD
T05GSUdfTlZNRV9BVVRIPXkKQ09ORklHX05WTUVfQ09SRT15CkNPTkZJR19OVk1FX01VTFRJ
UEFUSD15CiMgQ09ORklHX05WTUVfVkVSQk9TRV9FUlJPUlMgaXMgbm90IHNldApDT05GSUdf
TlZNRV9IV01PTj15CkNPTkZJR19OVk1FX0ZBQlJJQ1M9eQpDT05GSUdfTlZNRV9GQz15CkNP
TkZJR19OVk1FX0hPU1RfQVVUSD15CkNPTkZJR19OVk1FX1RBUkdFVD15CiMgQ09ORklHX05W
TUVfVEFSR0VUX1BBU1NUSFJVIGlzIG5vdCBzZXQKQ09ORklHX05WTUVfVEFSR0VUX0xPT1A9
eQpDT05GSUdfTlZNRV9UQVJHRVRfRkM9eQpDT05GSUdfTlZNRV9UQVJHRVRfRkNMT09QPXkK
Q09ORklHX05WTUVfVEFSR0VUX0FVVEg9eQojIGVuZCBvZiBOVk1FIFN1cHBvcnQKCiMKIyBN
aXNjIGRldmljZXMKIwpDT05GSUdfU0VOU09SU19MSVMzTFYwMkQ9eQpDT05GSUdfQUQ1MjVY
X0RQT1Q9eQojIENPTkZJR19BRDUyNVhfRFBPVF9JMkMgaXMgbm90IHNldApDT05GSUdfRFVN
TVlfSVJRPXkKIyBDT05GSUdfSUNTOTMyUzQwMSBpcyBub3Qgc2V0CiMgQ09ORklHX0VOQ0xP
U1VSRV9TRVJWSUNFUyBpcyBub3Qgc2V0CkNPTkZJR19BUERTOTgwMkFMUz15CkNPTkZJR19J
U0wyOTAwMz15CkNPTkZJR19JU0wyOTAyMD15CkNPTkZJR19TRU5TT1JTX1RTTDI1NTA9eQoj
IENPTkZJR19TRU5TT1JTX0JIMTc3MCBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX0FQRFM5
OTBYPXkKIyBDT05GSUdfSE1DNjM1MiBpcyBub3Qgc2V0CkNPTkZJR19EUzE2ODI9eQojIENP
TkZJR19TUkFNIGlzIG5vdCBzZXQKQ09ORklHX1hJTElOWF9TREZFQz15CiMgQ09ORklHX09Q
RU5fRElDRSBpcyBub3Qgc2V0CkNPTkZJR19WQ1BVX1NUQUxMX0RFVEVDVE9SPXkKQ09ORklH
X1RQUzY1OTRfRVNNPXkKQ09ORklHX1RQUzY1OTRfUEZTTT15CkNPTkZJR19OU009eQpDT05G
SUdfQzJQT1JUPXkKQ09ORklHX0MyUE9SVF9EVVJBTUFSXzIxNTA9eQoKIwojIEVFUFJPTSBz
dXBwb3J0CiMKIyBDT05GSUdfRUVQUk9NX0FUMjQgaXMgbm90IHNldAojIENPTkZJR19FRVBS
T01fTUFYNjg3NSBpcyBub3Qgc2V0CkNPTkZJR19FRVBST01fOTNDWDY9eQpDT05GSUdfRUVQ
Uk9NX0lEVF84OUhQRVNYPXkKQ09ORklHX0VFUFJPTV9FRTEwMDQ9eQojIGVuZCBvZiBFRVBS
T00gc3VwcG9ydAoKIwojIFRleGFzIEluc3RydW1lbnRzIHNoYXJlZCB0cmFuc3BvcnQgbGlu
ZSBkaXNjaXBsaW5lCiMKQ09ORklHX1RJX1NUPXkKIyBlbmQgb2YgVGV4YXMgSW5zdHJ1bWVu
dHMgc2hhcmVkIHRyYW5zcG9ydCBsaW5lIGRpc2NpcGxpbmUKCkNPTkZJR19TRU5TT1JTX0xJ
UzNfSTJDPXkKIyBDT05GSUdfQUxURVJBX1NUQVBMIGlzIG5vdCBzZXQKQ09ORklHX0VDSE89
eQojIENPTkZJR19VQUNDRSBpcyBub3Qgc2V0CiMgQ09ORklHX1BWUEFOSUMgaXMgbm90IHNl
dAojIGVuZCBvZiBNaXNjIGRldmljZXMKCiMKIyBTQ1NJIGRldmljZSBzdXBwb3J0CiMKQ09O
RklHX1NDU0lfTU9EPXkKIyBDT05GSUdfUkFJRF9BVFRSUyBpcyBub3Qgc2V0CkNPTkZJR19T
Q1NJX0NPTU1PTj15CkNPTkZJR19TQ1NJPXkKQ09ORklHX1NDU0lfRE1BPXkKQ09ORklHX1ND
U0lfTkVUTElOSz15CkNPTkZJR19TQ1NJX1BST0NfRlM9eQpDT05GSUdfU0NTSV9MSUJfS1VO
SVRfVEVTVD15CgojCiMgU0NTSSBzdXBwb3J0IHR5cGUgKGRpc2ssIHRhcGUsIENELVJPTSkK
IwojIENPTkZJR19CTEtfREVWX1NEIGlzIG5vdCBzZXQKQ09ORklHX0NIUl9ERVZfU1Q9eQpD
T05GSUdfQ0hSX0RFVl9TRz15CiMgQ09ORklHX0JMS19ERVZfQlNHIGlzIG5vdCBzZXQKIyBD
T05GSUdfQ0hSX0RFVl9TQ0ggaXMgbm90IHNldAojIENPTkZJR19TQ1NJX0NPTlNUQU5UUyBp
cyBub3Qgc2V0CkNPTkZJR19TQ1NJX0xPR0dJTkc9eQojIENPTkZJR19TQ1NJX1NDQU5fQVNZ
TkMgaXMgbm90IHNldApDT05GSUdfU0NTSV9QUk9UT19URVNUPXkKCiMKIyBTQ1NJIFRyYW5z
cG9ydHMKIwojIENPTkZJR19TQ1NJX1NQSV9BVFRSUyBpcyBub3Qgc2V0CkNPTkZJR19TQ1NJ
X0ZDX0FUVFJTPXkKQ09ORklHX1NDU0lfSVNDU0lfQVRUUlM9eQpDT05GSUdfU0NTSV9TQVNf
QVRUUlM9eQpDT05GSUdfU0NTSV9TQVNfTElCU0FTPXkKQ09ORklHX1NDU0lfU0FTX0FUQT15
CkNPTkZJR19TQ1NJX1NBU19IT1NUX1NNUD15CkNPTkZJR19TQ1NJX1NSUF9BVFRSUz15CiMg
ZW5kIG9mIFNDU0kgVHJhbnNwb3J0cwoKIyBDT05GSUdfU0NTSV9MT1dMRVZFTCBpcyBub3Qg
c2V0CiMgQ09ORklHX1NDU0lfREggaXMgbm90IHNldAojIGVuZCBvZiBTQ1NJIGRldmljZSBz
dXBwb3J0CgpDT05GSUdfQVRBPXkKQ09ORklHX1NBVEFfSE9TVD15CkNPTkZJR19QQVRBX1RJ
TUlOR1M9eQpDT05GSUdfQVRBX1ZFUkJPU0VfRVJST1I9eQpDT05GSUdfQVRBX0ZPUkNFPXkK
Q09ORklHX0FUQV9BQ1BJPXkKQ09ORklHX1NBVEFfUE1QPXkKCiMKIyBDb250cm9sbGVycyB3
aXRoIG5vbi1TRkYgbmF0aXZlIGludGVyZmFjZQojCiMgQ09ORklHX1NBVEFfQUhDSV9QTEFU
Rk9STSBpcyBub3Qgc2V0CkNPTkZJR19BSENJX0RXQz15CkNPTkZJR19BSENJX0NFVkE9eQoj
IENPTkZJR19BVEFfU0ZGIGlzIG5vdCBzZXQKQ09ORklHX01EPXkKQ09ORklHX0JMS19ERVZf
TUQ9eQpDT05GSUdfTURfQVVUT0RFVEVDVD15CkNPTkZJR19NRF9CSVRNQVBfRklMRT15CkNP
TkZJR19NRF9SQUlEMD15CkNPTkZJR19NRF9SQUlEMT15CkNPTkZJR19NRF9SQUlEMTA9eQpD
T05GSUdfTURfUkFJRDQ1Nj15CiMgQ09ORklHX0JDQUNIRSBpcyBub3Qgc2V0CiMgQ09ORklH
X0JMS19ERVZfRE0gaXMgbm90IHNldApDT05GSUdfVEFSR0VUX0NPUkU9eQpDT05GSUdfVENN
X0lCTE9DSz15CkNPTkZJR19UQ01fRklMRUlPPXkKIyBDT05GSUdfVENNX1BTQ1NJIGlzIG5v
dCBzZXQKIyBDT05GSUdfVENNX1VTRVIyIGlzIG5vdCBzZXQKQ09ORklHX0xPT1BCQUNLX1RB
UkdFVD15CiMgQ09ORklHX1JFTU9URV9UQVJHRVQgaXMgbm90IHNldApDT05GSUdfTUFDSU5U
T1NIX0RSSVZFUlM9eQojIENPTkZJR19NQUNfRU1VTU9VU0VCVE4gaXMgbm90IHNldApDT05G
SUdfTkVUREVWSUNFUz15CkNPTkZJR19NSUk9eQojIENPTkZJR19ORVRfQ09SRSBpcyBub3Qg
c2V0CiMgQ09ORklHX0FSQ05FVCBpcyBub3Qgc2V0CiMgQ09ORklHX0FUTV9EUklWRVJTIGlz
IG5vdCBzZXQKIyBDT05GSUdfQ0FJRl9EUklWRVJTIGlzIG5vdCBzZXQKQ09ORklHX0VUSEVS
TkVUPXkKIyBDT05GSUdfTkVUX1ZFTkRPUl8zQ09NIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVU
X1ZFTkRPUl9BTEFDUklURUNIIGlzIG5vdCBzZXQKQ09ORklHX0FMVEVSQV9UU0U9eQojIENP
TkZJR19ORVRfVkVORE9SX0FNQVpPTiBpcyBub3Qgc2V0CiMgQ09ORklHX05FVF9WRU5ET1Jf
QU1EIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVUX1ZFTkRPUl9BUVVBTlRJQSBpcyBub3Qgc2V0
CkNPTkZJR19ORVRfVkVORE9SX0FSQz15CiMgQ09ORklHX05FVF9WRU5ET1JfQVNJWCBpcyBu
b3Qgc2V0CiMgQ09ORklHX05FVF9WRU5ET1JfQlJPQURDT00gaXMgbm90IHNldAojIENPTkZJ
R19ORVRfVkVORE9SX0NBREVOQ0UgaXMgbm90IHNldApDT05GSUdfTkVUX1ZFTkRPUl9DQVZJ
VU09eQojIENPTkZJR19ORVRfVkVORE9SX0NJUlJVUyBpcyBub3Qgc2V0CiMgQ09ORklHX05F
VF9WRU5ET1JfQ09SVElOQSBpcyBub3Qgc2V0CiMgQ09ORklHX05FVF9WRU5ET1JfREFWSUNP
TSBpcyBub3Qgc2V0CkNPTkZJR19ETkVUPXkKIyBDT05GSUdfTkVUX1ZFTkRPUl9ERUMgaXMg
bm90IHNldApDT05GSUdfTkVUX1ZFTkRPUl9FTkdMRURFUj15CkNPTkZJR19UU05FUD15CkNP
TkZJR19UU05FUF9TRUxGVEVTVFM9eQojIENPTkZJR19ORVRfVkVORE9SX0VaQ0hJUCBpcyBu
b3Qgc2V0CiMgQ09ORklHX05FVF9WRU5ET1JfRlVOR0lCTEUgaXMgbm90IHNldAojIENPTkZJ
R19ORVRfVkVORE9SX0dPT0dMRSBpcyBub3Qgc2V0CiMgQ09ORklHX05FVF9WRU5ET1JfSFVB
V0VJIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVUX1ZFTkRPUl9JTlRFTCBpcyBub3Qgc2V0CiMg
Q09ORklHX05FVF9WRU5ET1JfTElURVggaXMgbm90IHNldApDT05GSUdfTkVUX1ZFTkRPUl9N
RUxMQU5PWD15CkNPTkZJR19NTFhTV19DT1JFPXkKQ09ORklHX01MWFNXX0NPUkVfSFdNT049
eQpDT05GSUdfTUxYU1dfQ09SRV9USEVSTUFMPXkKIyBDT05GSUdfTUxYU1dfSTJDIGlzIG5v
dCBzZXQKQ09ORklHX01MWEZXPXkKQ09ORklHX05FVF9WRU5ET1JfTUlDUkVMPXkKQ09ORklH
X0tTODg1MV9NTEw9eQpDT05GSUdfTkVUX1ZFTkRPUl9NSUNST0NISVA9eQojIENPTkZJR19W
Q0FQIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVUX1ZFTkRPUl9NSUNST1NFTUkgaXMgbm90IHNl
dApDT05GSUdfTkVUX1ZFTkRPUl9NSUNST1NPRlQ9eQojIENPTkZJR19ORVRfVkVORE9SX05J
IGlzIG5vdCBzZXQKIyBDT05GSUdfTkVUX1ZFTkRPUl9OQVRTRU1JIGlzIG5vdCBzZXQKIyBD
T05GSUdfTkVUX1ZFTkRPUl9ORVRST05PTUUgaXMgbm90IHNldAojIENPTkZJR19FVEhPQyBp
cyBub3Qgc2V0CkNPTkZJR19ORVRfVkVORE9SX1BFTlNBTkRPPXkKQ09ORklHX05FVF9WRU5E
T1JfUVVBTENPTU09eQojIENPTkZJR19RQ09NX0VNQUMgaXMgbm90IHNldApDT05GSUdfUk1O
RVQ9eQojIENPTkZJR19ORVRfVkVORE9SX1JFQUxURUsgaXMgbm90IHNldApDT05GSUdfTkVU
X1ZFTkRPUl9SRU5FU0FTPXkKQ09ORklHX05FVF9WRU5ET1JfUk9DS0VSPXkKQ09ORklHX05F
VF9WRU5ET1JfU0FNU1VORz15CkNPTkZJR19TWEdCRV9FVEg9eQojIENPTkZJR19ORVRfVkVO
RE9SX1NFRVEgaXMgbm90IHNldAojIENPTkZJR19ORVRfVkVORE9SX1NPTEFSRkxBUkUgaXMg
bm90IHNldAojIENPTkZJR19ORVRfVkVORE9SX1NNU0MgaXMgbm90IHNldAojIENPTkZJR19O
RVRfVkVORE9SX1NPQ0lPTkVYVCBpcyBub3Qgc2V0CiMgQ09ORklHX05FVF9WRU5ET1JfU1RN
SUNSTyBpcyBub3Qgc2V0CkNPTkZJR19ORVRfVkVORE9SX1NZTk9QU1lTPXkKQ09ORklHX0RX
Q19YTEdNQUM9eQpDT05GSUdfTkVUX1ZFTkRPUl9UST15CkNPTkZJR19USV9DUFNXX1BIWV9T
RUw9eQpDT05GSUdfVExBTj15CiMgQ09ORklHX05FVF9WRU5ET1JfVkVSVEVYQ09NIGlzIG5v
dCBzZXQKQ09ORklHX05FVF9WRU5ET1JfVklBPXkKQ09ORklHX1ZJQV9WRUxPQ0lUWT15CiMg
Q09ORklHX05FVF9WRU5ET1JfV0FOR1hVTiBpcyBub3Qgc2V0CiMgQ09ORklHX05FVF9WRU5E
T1JfV0laTkVUIGlzIG5vdCBzZXQKQ09ORklHX05FVF9WRU5ET1JfWElMSU5YPXkKIyBDT05G
SUdfWElMSU5YX0VNQUNMSVRFIGlzIG5vdCBzZXQKIyBDT05GSUdfWElMSU5YX0xMX1RFTUFD
IGlzIG5vdCBzZXQKIyBDT05GSUdfRkRESSBpcyBub3Qgc2V0CiMgQ09ORklHX05FVF9TQjEw
MDAgaXMgbm90IHNldApDT05GSUdfUEhZTElOSz15CkNPTkZJR19QSFlMSUI9eQpDT05GSUdf
U1dQSFk9eQpDT05GSUdfTEVEX1RSSUdHRVJfUEhZPXkKQ09ORklHX1BIWUxJQl9MRURTPXkK
Q09ORklHX0ZJWEVEX1BIWT15CiMgQ09ORklHX1NGUCBpcyBub3Qgc2V0CgojCiMgTUlJIFBI
WSBkZXZpY2UgZHJpdmVycwojCiMgQ09ORklHX0FJUl9FTjg4MTFIX1BIWSBpcyBub3Qgc2V0
CkNPTkZJR19BTURfUEhZPXkKQ09ORklHX0FESU5fUEhZPXkKQ09ORklHX0FESU4xMTAwX1BI
WT15CiMgQ09ORklHX0FRVUFOVElBX1BIWSBpcyBub3Qgc2V0CkNPTkZJR19BWDg4Nzk2Ql9Q
SFk9eQojIENPTkZJR19CUk9BRENPTV9QSFkgaXMgbm90IHNldApDT05GSUdfQkNNNTQxNDBf
UEhZPXkKQ09ORklHX0JDTTdYWFhfUEhZPXkKQ09ORklHX0JDTTg0ODgxX1BIWT15CkNPTkZJ
R19CQ004N1hYX1BIWT15CkNPTkZJR19CQ01fTkVUX1BIWUxJQj15CkNPTkZJR19DSUNBREFf
UEhZPXkKQ09ORklHX0NPUlRJTkFfUEhZPXkKIyBDT05GSUdfREFWSUNPTV9QSFkgaXMgbm90
IHNldApDT05GSUdfSUNQTFVTX1BIWT15CkNPTkZJR19MWFRfUEhZPXkKIyBDT05GSUdfSU5U
RUxfWFdBWV9QSFkgaXMgbm90IHNldAojIENPTkZJR19MU0lfRVQxMDExQ19QSFkgaXMgbm90
IHNldApDT05GSUdfTUFSVkVMTF9QSFk9eQpDT05GSUdfTUFSVkVMTF8xMEdfUEhZPXkKQ09O
RklHX01BUlZFTExfODhRMlhYWF9QSFk9eQojIENPTkZJR19NQVJWRUxMXzg4WDIyMjJfUEhZ
IGlzIG5vdCBzZXQKQ09ORklHX01BWExJTkVBUl9HUEhZPXkKIyBDT05GSUdfTUVESUFURUtf
R0VfUEhZIGlzIG5vdCBzZXQKQ09ORklHX01JQ1JFTF9QSFk9eQojIENPTkZJR19NSUNST0NI
SVBfVDFTX1BIWSBpcyBub3Qgc2V0CiMgQ09ORklHX01JQ1JPQ0hJUF9QSFkgaXMgbm90IHNl
dApDT05GSUdfTUlDUk9DSElQX1QxX1BIWT15CkNPTkZJR19NSUNST1NFTUlfUEhZPXkKQ09O
RklHX01PVE9SQ09NTV9QSFk9eQojIENPTkZJR19OQVRJT05BTF9QSFkgaXMgbm90IHNldApD
T05GSUdfTlhQX0NCVFhfUEhZPXkKQ09ORklHX05YUF9DNDVfVEpBMTFYWF9QSFk9eQpDT05G
SUdfTlhQX1RKQTExWFhfUEhZPXkKIyBDT05GSUdfTkNOMjYwMDBfUEhZIGlzIG5vdCBzZXQK
Q09ORklHX1FDT01fTkVUX1BIWUxJQj15CiMgQ09ORklHX0FUODAzWF9QSFkgaXMgbm90IHNl
dAojIENPTkZJR19RQ0E4M1hYX1BIWSBpcyBub3Qgc2V0CiMgQ09ORklHX1FDQTgwOFhfUEhZ
IGlzIG5vdCBzZXQKQ09ORklHX1FDQTgwN1hfUEhZPXkKIyBDT05GSUdfUVNFTUlfUEhZIGlz
IG5vdCBzZXQKIyBDT05GSUdfUkVBTFRFS19QSFkgaXMgbm90IHNldApDT05GSUdfUkVORVNB
U19QSFk9eQojIENPTkZJR19ST0NLQ0hJUF9QSFkgaXMgbm90IHNldApDT05GSUdfU01TQ19Q
SFk9eQpDT05GSUdfU1RFMTBYUD15CkNPTkZJR19URVJBTkVUSUNTX1BIWT15CiMgQ09ORklH
X0RQODM4MjJfUEhZIGlzIG5vdCBzZXQKQ09ORklHX0RQODNUQzgxMV9QSFk9eQpDT05GSUdf
RFA4Mzg0OF9QSFk9eQpDT05GSUdfRFA4Mzg2N19QSFk9eQpDT05GSUdfRFA4Mzg2OV9QSFk9
eQpDT05GSUdfRFA4M1RENTEwX1BIWT15CkNPTkZJR19EUDgzVEc3MjBfUEhZPXkKQ09ORklH
X1ZJVEVTU0VfUEhZPXkKQ09ORklHX1hJTElOWF9HTUlJMlJHTUlJPXkKQ09ORklHX1BTRV9D
T05UUk9MTEVSPXkKIyBDT05GSUdfUFNFX1JFR1VMQVRPUiBpcyBub3Qgc2V0CkNPTkZJR19Q
U0VfUEQ2OTJYMD15CiMgQ09ORklHX1BTRV9UUFMyMzg4MSBpcyBub3Qgc2V0CiMgQ09ORklH
X0NBTl9ERVYgaXMgbm90IHNldAoKIwojIE1DVFAgRGV2aWNlIERyaXZlcnMKIwpDT05GSUdf
TUNUUF9TRVJJQUw9eQpDT05GSUdfTUNUUF9UUkFOU1BPUlRfSTJDPXkKQ09ORklHX01DVFBf
VFJBTlNQT1JUX0kzQz15CiMgZW5kIG9mIE1DVFAgRGV2aWNlIERyaXZlcnMKCkNPTkZJR19N
RElPX0RFVklDRT15CkNPTkZJR19NRElPX0JVUz15CkNPTkZJR19GV05PREVfTURJTz15CkNP
TkZJR19PRl9NRElPPXkKQ09ORklHX0FDUElfTURJTz15CkNPTkZJR19NRElPX0RFVlJFUz15
CiMgQ09ORklHX01ESU9fQklUQkFORyBpcyBub3Qgc2V0CkNPTkZJR19NRElPX0JDTV9VTklN
QUM9eQpDT05GSUdfTURJT19ISVNJX0ZFTUFDPXkKQ09ORklHX01ESU9fTVNDQ19NSUlNPXkK
Q09ORklHX01ESU9fSVBRNDAxOT15CkNPTkZJR19NRElPX0lQUTgwNjQ9eQpDT05GSUdfTURJ
T19SRUdNQVA9eQoKIwojIE1ESU8gTXVsdGlwbGV4ZXJzCiMKQ09ORklHX01ESU9fQlVTX01V
WD15CiMgQ09ORklHX01ESU9fQlVTX01VWF9HUElPIGlzIG5vdCBzZXQKIyBDT05GSUdfTURJ
T19CVVNfTVVYX01VTFRJUExFWEVSIGlzIG5vdCBzZXQKQ09ORklHX01ESU9fQlVTX01VWF9N
TUlPUkVHPXkKCiMKIyBQQ1MgZGV2aWNlIGRyaXZlcnMKIwpDT05GSUdfUENTX0xZTlg9eQoj
IGVuZCBvZiBQQ1MgZGV2aWNlIGRyaXZlcnMKCkNPTkZJR19QTElQPXkKIyBDT05GSUdfUFBQ
IGlzIG5vdCBzZXQKQ09ORklHX1NMSVA9eQojIENPTkZJR19TTElQX0NPTVBSRVNTRUQgaXMg
bm90IHNldApDT05GSUdfU0xJUF9TTUFSVD15CiMgQ09ORklHX1NMSVBfTU9ERV9TTElQNiBp
cyBub3Qgc2V0CgojCiMgSG9zdC1zaWRlIFVTQiBzdXBwb3J0IGlzIG5lZWRlZCBmb3IgVVNC
IE5ldHdvcmsgQWRhcHRlciBzdXBwb3J0CiMKIyBDT05GSUdfV0xBTiBpcyBub3Qgc2V0CiMg
Q09ORklHX1dBTiBpcyBub3Qgc2V0CgojCiMgV2lyZWxlc3MgV0FOCiMKQ09ORklHX1dXQU49
eQpDT05GSUdfV1dBTl9IV1NJTT15CkNPTkZJR19SUE1TR19XV0FOX0NUUkw9eQojIGVuZCBv
ZiBXaXJlbGVzcyBXQU4KCkNPTkZJR19GVUpJVFNVX0VTPXkKQ09ORklHX05FVF9GQUlMT1ZF
Uj15CiMgQ09ORklHX0lTRE4gaXMgbm90IHNldAoKIwojIElucHV0IGRldmljZSBzdXBwb3J0
CiMKQ09ORklHX0lOUFVUPXkKQ09ORklHX0lOUFVUX0xFRFM9eQpDT05GSUdfSU5QVVRfRkZf
TUVNTEVTUz15CkNPTkZJR19JTlBVVF9TUEFSU0VLTUFQPXkKIyBDT05GSUdfSU5QVVRfTUFU
UklYS01BUCBpcyBub3Qgc2V0CkNPTkZJR19JTlBVVF9WSVZBTERJRk1BUD15CgojCiMgVXNl
cmxhbmQgaW50ZXJmYWNlcwojCkNPTkZJR19JTlBVVF9NT1VTRURFVj15CkNPTkZJR19JTlBV
VF9NT1VTRURFVl9QU0FVWD15CkNPTkZJR19JTlBVVF9NT1VTRURFVl9TQ1JFRU5fWD0xMDI0
CkNPTkZJR19JTlBVVF9NT1VTRURFVl9TQ1JFRU5fWT03NjgKQ09ORklHX0lOUFVUX0pPWURF
Vj15CkNPTkZJR19JTlBVVF9FVkRFVj15CiMgQ09ORklHX0lOUFVUX0VWQlVHIGlzIG5vdCBz
ZXQKQ09ORklHX0lOUFVUX0tVTklUX1RFU1Q9eQoKIwojIElucHV0IERldmljZSBEcml2ZXJz
CiMKIyBDT05GSUdfSU5QVVRfS0VZQk9BUkQgaXMgbm90IHNldApDT05GSUdfSU5QVVRfTU9V
U0U9eQojIENPTkZJR19NT1VTRV9QUzIgaXMgbm90IHNldAojIENPTkZJR19NT1VTRV9TRVJJ
QUwgaXMgbm90IHNldApDT05GSUdfTU9VU0VfQ1lBUEE9eQpDT05GSUdfTU9VU0VfRUxBTl9J
MkM9eQojIENPTkZJR19NT1VTRV9FTEFOX0kyQ19JMkMgaXMgbm90IHNldAojIENPTkZJR19N
T1VTRV9FTEFOX0kyQ19TTUJVUyBpcyBub3Qgc2V0CiMgQ09ORklHX01PVVNFX0lOUE9SVCBp
cyBub3Qgc2V0CiMgQ09ORklHX01PVVNFX0xPR0lCTSBpcyBub3Qgc2V0CkNPTkZJR19NT1VT
RV9QQzExMFBBRD15CkNPTkZJR19NT1VTRV9WU1hYWEFBPXkKQ09ORklHX01PVVNFX0dQSU89
eQpDT05GSUdfTU9VU0VfU1lOQVBUSUNTX0kyQz15CkNPTkZJR19JTlBVVF9KT1lTVElDSz15
CiMgQ09ORklHX0pPWVNUSUNLX0FOQUxPRyBpcyBub3Qgc2V0CkNPTkZJR19KT1lTVElDS19B
M0Q9eQpDT05GSUdfSk9ZU1RJQ0tfQURDPXkKIyBDT05GSUdfSk9ZU1RJQ0tfQURJIGlzIG5v
dCBzZXQKQ09ORklHX0pPWVNUSUNLX0NPQlJBPXkKIyBDT05GSUdfSk9ZU1RJQ0tfR0YySyBp
cyBub3Qgc2V0CiMgQ09ORklHX0pPWVNUSUNLX0dSSVAgaXMgbm90IHNldAojIENPTkZJR19K
T1lTVElDS19HUklQX01QIGlzIG5vdCBzZXQKQ09ORklHX0pPWVNUSUNLX0dVSUxMRU1PVD15
CkNPTkZJR19KT1lTVElDS19JTlRFUkFDVD15CkNPTkZJR19KT1lTVElDS19TSURFV0lOREVS
PXkKQ09ORklHX0pPWVNUSUNLX1RNREM9eQpDT05GSUdfSk9ZU1RJQ0tfSUZPUkNFPXkKIyBD
T05GSUdfSk9ZU1RJQ0tfSUZPUkNFXzIzMiBpcyBub3Qgc2V0CiMgQ09ORklHX0pPWVNUSUNL
X1dBUlJJT1IgaXMgbm90IHNldAojIENPTkZJR19KT1lTVElDS19NQUdFTExBTiBpcyBub3Qg
c2V0CiMgQ09ORklHX0pPWVNUSUNLX1NQQUNFT1JCIGlzIG5vdCBzZXQKQ09ORklHX0pPWVNU
SUNLX1NQQUNFQkFMTD15CkNPTkZJR19KT1lTVElDS19TVElOR0VSPXkKQ09ORklHX0pPWVNU
SUNLX1RXSURKT1k9eQojIENPTkZJR19KT1lTVElDS19aSEVOSFVBIGlzIG5vdCBzZXQKQ09O
RklHX0pPWVNUSUNLX0RCOT15CkNPTkZJR19KT1lTVElDS19HQU1FQ09OPXkKIyBDT05GSUdf
Sk9ZU1RJQ0tfVFVSQk9HUkFGWCBpcyBub3Qgc2V0CkNPTkZJR19KT1lTVElDS19BUzUwMTE9
eQojIENPTkZJR19KT1lTVElDS19KT1lEVU1QIGlzIG5vdCBzZXQKQ09ORklHX0pPWVNUSUNL
X1FXSUlDPXkKQ09ORklHX0pPWVNUSUNLX0ZTSUE2Qj15CkNPTkZJR19KT1lTVElDS19TRU5T
RUhBVD15CiMgQ09ORklHX0pPWVNUSUNLX1NFRVNBVyBpcyBub3Qgc2V0CkNPTkZJR19JTlBV
VF9UQUJMRVQ9eQpDT05GSUdfVEFCTEVUX1NFUklBTF9XQUNPTTQ9eQpDT05GSUdfSU5QVVRf
VE9VQ0hTQ1JFRU49eQpDT05GSUdfVE9VQ0hTQ1JFRU5fQUQ3ODc5PXkKIyBDT05GSUdfVE9V
Q0hTQ1JFRU5fQUQ3ODc5X0kyQyBpcyBub3Qgc2V0CiMgQ09ORklHX1RPVUNIU0NSRUVOX0FE
QyBpcyBub3Qgc2V0CkNPTkZJR19UT1VDSFNDUkVFTl9BUjEwMjFfSTJDPXkKQ09ORklHX1RP
VUNIU0NSRUVOX0FUTUVMX01YVD15CkNPTkZJR19UT1VDSFNDUkVFTl9BVU9fUElYQ0lSPXkK
Q09ORklHX1RPVUNIU0NSRUVOX0JVMjEwMTM9eQojIENPTkZJR19UT1VDSFNDUkVFTl9CVTIx
MDI5IGlzIG5vdCBzZXQKQ09ORklHX1RPVUNIU0NSRUVOX0NISVBPTkVfSUNOODMxOD15CkNP
TkZJR19UT1VDSFNDUkVFTl9DSElQT05FX0lDTjg1MDU9eQpDT05GSUdfVE9VQ0hTQ1JFRU5f
Q1k4Q1RNQTE0MD15CiMgQ09ORklHX1RPVUNIU0NSRUVOX0NZOENUTUcxMTAgaXMgbm90IHNl
dAojIENPTkZJR19UT1VDSFNDUkVFTl9DWVRUU1BfQ09SRSBpcyBub3Qgc2V0CiMgQ09ORklH
X1RPVUNIU0NSRUVOX0NZVFRTUDRfQ09SRSBpcyBub3Qgc2V0CkNPTkZJR19UT1VDSFNDUkVF
Tl9DWVRUU1A1PXkKQ09ORklHX1RPVUNIU0NSRUVOX0RZTkFQUk89eQojIENPTkZJR19UT1VD
SFNDUkVFTl9IQU1QU0hJUkUgaXMgbm90IHNldAojIENPTkZJR19UT1VDSFNDUkVFTl9FRVRJ
IGlzIG5vdCBzZXQKIyBDT05GSUdfVE9VQ0hTQ1JFRU5fRUdBTEFYIGlzIG5vdCBzZXQKIyBD
T05GSUdfVE9VQ0hTQ1JFRU5fRUdBTEFYX1NFUklBTCBpcyBub3Qgc2V0CkNPTkZJR19UT1VD
SFNDUkVFTl9FWEMzMDAwPXkKQ09ORklHX1RPVUNIU0NSRUVOX0ZVSklUU1U9eQpDT05GSUdf
VE9VQ0hTQ1JFRU5fR09PRElYPXkKQ09ORklHX1RPVUNIU0NSRUVOX0dPT0RJWF9CRVJMSU5f
Q09SRT15CkNPTkZJR19UT1VDSFNDUkVFTl9HT09ESVhfQkVSTElOX0kyQz15CiMgQ09ORklH
X1RPVUNIU0NSRUVOX0hJREVFUCBpcyBub3Qgc2V0CkNPTkZJR19UT1VDSFNDUkVFTl9IWUNP
Tl9IWTQ2WFg9eQpDT05GSUdfVE9VQ0hTQ1JFRU5fSFlOSVRST05fQ1NUWFhYPXkKQ09ORklH
X1RPVUNIU0NSRUVOX0lMSTIxMFg9eQpDT05GSUdfVE9VQ0hTQ1JFRU5fSUxJVEVLPXkKQ09O
RklHX1RPVUNIU0NSRUVOX1M2U1k3NjE9eQojIENPTkZJR19UT1VDSFNDUkVFTl9HVU5aRSBp
cyBub3Qgc2V0CkNPTkZJR19UT1VDSFNDUkVFTl9FS1RGMjEyNz15CkNPTkZJR19UT1VDSFND
UkVFTl9FTEFOPXkKQ09ORklHX1RPVUNIU0NSRUVOX0VMTz15CkNPTkZJR19UT1VDSFNDUkVF
Tl9XQUNPTV9XODAwMT15CkNPTkZJR19UT1VDSFNDUkVFTl9XQUNPTV9JMkM9eQpDT05GSUdf
VE9VQ0hTQ1JFRU5fTUFYMTE4MDE9eQpDT05GSUdfVE9VQ0hTQ1JFRU5fTUNTNTAwMD15CkNP
TkZJR19UT1VDSFNDUkVFTl9NTVMxMTQ9eQojIENPTkZJR19UT1VDSFNDUkVFTl9NRUxGQVNf
TUlQNCBpcyBub3Qgc2V0CiMgQ09ORklHX1RPVUNIU0NSRUVOX01TRzI2MzggaXMgbm90IHNl
dApDT05GSUdfVE9VQ0hTQ1JFRU5fTVRPVUNIPXkKQ09ORklHX1RPVUNIU0NSRUVOX05PVkFU
RUtfTlZUX1RTPXkKQ09ORklHX1RPVUNIU0NSRUVOX0lNQUdJUz15CkNPTkZJR19UT1VDSFND
UkVFTl9JTVg2VUxfVFNDPXkKQ09ORklHX1RPVUNIU0NSRUVOX0lORVhJTz15CkNPTkZJR19U
T1VDSFNDUkVFTl9NSzcxMj15CiMgQ09ORklHX1RPVUNIU0NSRUVOX0hUQ1BFTiBpcyBub3Qg
c2V0CkNPTkZJR19UT1VDSFNDUkVFTl9QRU5NT1VOVD15CiMgQ09ORklHX1RPVUNIU0NSRUVO
X0VEVF9GVDVYMDYgaXMgbm90IHNldAojIENPTkZJR19UT1VDSFNDUkVFTl9UT1VDSFJJR0hU
IGlzIG5vdCBzZXQKQ09ORklHX1RPVUNIU0NSRUVOX1RPVUNIV0lOPXkKIyBDT05GSUdfVE9V
Q0hTQ1JFRU5fUElYQ0lSIGlzIG5vdCBzZXQKIyBDT05GSUdfVE9VQ0hTQ1JFRU5fV0RUODdY
WF9JMkMgaXMgbm90IHNldApDT05GSUdfVE9VQ0hTQ1JFRU5fV004MzFYPXkKIyBDT05GSUdf
VE9VQ0hTQ1JFRU5fTUMxMzc4MyBpcyBub3Qgc2V0CkNPTkZJR19UT1VDSFNDUkVFTl9UT1VD
SElUMjEzPXkKQ09ORklHX1RPVUNIU0NSRUVOX1RTQ19TRVJJTz15CiMgQ09ORklHX1RPVUNI
U0NSRUVOX1RTQzIwMDQgaXMgbm90IHNldApDT05GSUdfVE9VQ0hTQ1JFRU5fVFNDMjAwNz15
CiMgQ09ORklHX1RPVUNIU0NSRUVOX1RTQzIwMDdfSUlPIGlzIG5vdCBzZXQKQ09ORklHX1RP
VUNIU0NSRUVOX1JNX1RTPXkKIyBDT05GSUdfVE9VQ0hTQ1JFRU5fU0lMRUFEIGlzIG5vdCBz
ZXQKIyBDT05GSUdfVE9VQ0hTQ1JFRU5fU0lTX0kyQyBpcyBub3Qgc2V0CkNPTkZJR19UT1VD
SFNDUkVFTl9TVDEyMzI9eQojIENPTkZJR19UT1VDSFNDUkVFTl9TVE1GVFMgaXMgbm90IHNl
dAojIENPTkZJR19UT1VDSFNDUkVFTl9TVE1QRSBpcyBub3Qgc2V0CkNPTkZJR19UT1VDSFND
UkVFTl9TWDg2NTQ9eQojIENPTkZJR19UT1VDSFNDUkVFTl9UUFM2NTA3WCBpcyBub3Qgc2V0
CiMgQ09ORklHX1RPVUNIU0NSRUVOX1pFVDYyMjMgaXMgbm90IHNldAojIENPTkZJR19UT1VD
SFNDUkVFTl9aRk9SQ0UgaXMgbm90IHNldAojIENPTkZJR19UT1VDSFNDUkVFTl9DT0xJQlJJ
X1ZGNTAgaXMgbm90IHNldAojIENPTkZJR19UT1VDSFNDUkVFTl9ST0hNX0JVMjEwMjMgaXMg
bm90IHNldApDT05GSUdfVE9VQ0hTQ1JFRU5fSVFTNVhYPXkKQ09ORklHX1RPVUNIU0NSRUVO
X0lRUzcyMTE9eQojIENPTkZJR19UT1VDSFNDUkVFTl9aSU5JVElYIGlzIG5vdCBzZXQKIyBD
T05GSUdfVE9VQ0hTQ1JFRU5fSElNQVhfSFg4MzExMkIgaXMgbm90IHNldApDT05GSUdfSU5Q
VVRfTUlTQz15CiMgQ09ORklHX0lOUFVUXzg4UE04MFhfT05LRVkgaXMgbm90IHNldApDT05G
SUdfSU5QVVRfQUQ3MTRYPXkKQ09ORklHX0lOUFVUX0FENzE0WF9JMkM9eQojIENPTkZJR19J
TlBVVF9BVE1FTF9DQVBUT1VDSCBpcyBub3Qgc2V0CkNPTkZJR19JTlBVVF9CTUExNTA9eQoj
IENPTkZJR19JTlBVVF9FM1gwX0JVVFRPTiBpcyBub3Qgc2V0CiMgQ09ORklHX0lOUFVUX1BD
U1BLUiBpcyBub3Qgc2V0CkNPTkZJR19JTlBVVF9NQVg3NzY1MF9PTktFWT15CkNPTkZJR19J
TlBVVF9NQVg3NzY5M19IQVBUSUM9eQpDT05GSUdfSU5QVVRfTUMxMzc4M19QV1JCVVRUT049
eQojIENPTkZJR19JTlBVVF9NTUE4NDUwIGlzIG5vdCBzZXQKQ09ORklHX0lOUFVUX0FQQU5F
TD15CkNPTkZJR19JTlBVVF9HUElPX0JFRVBFUj15CiMgQ09ORklHX0lOUFVUX0dQSU9fREVD
T0RFUiBpcyBub3Qgc2V0CkNPTkZJR19JTlBVVF9HUElPX1ZJQlJBPXkKIyBDT05GSUdfSU5Q
VVRfV0lTVFJPTl9CVE5TIGlzIG5vdCBzZXQKIyBDT05GSUdfSU5QVVRfQVRMQVNfQlROUyBp
cyBub3Qgc2V0CkNPTkZJR19JTlBVVF9LWFRKOT15CiMgQ09ORklHX0lOUFVUX1JFR1VMQVRP
Ul9IQVBUSUMgaXMgbm90IHNldApDT05GSUdfSU5QVVRfUkVUVV9QV1JCVVRUT049eQojIENP
TkZJR19JTlBVVF9UUFM2NTIxOF9QV1JCVVRUT04gaXMgbm90IHNldApDT05GSUdfSU5QVVRf
VFBTNjUyMTlfUFdSQlVUVE9OPXkKQ09ORklHX0lOUFVUX0FYUDIwWF9QRUs9eQpDT05GSUdf
SU5QVVRfVFdMNDAzMF9QV1JCVVRUT049eQpDT05GSUdfSU5QVVRfVFdMNDAzMF9WSUJSQT15
CkNPTkZJR19JTlBVVF9VSU5QVVQ9eQpDT05GSUdfSU5QVVRfUEFMTUFTX1BXUkJVVFRPTj15
CiMgQ09ORklHX0lOUFVUX1BDRjUwNjMzX1BNVSBpcyBub3Qgc2V0CiMgQ09ORklHX0lOUFVU
X1BDRjg1NzQgaXMgbm90IHNldAojIENPTkZJR19JTlBVVF9QV01fQkVFUEVSIGlzIG5vdCBz
ZXQKQ09ORklHX0lOUFVUX1BXTV9WSUJSQT15CkNPTkZJR19JTlBVVF9HUElPX1JPVEFSWV9F
TkNPREVSPXkKIyBDT05GSUdfSU5QVVRfREE3MjgwX0hBUFRJQ1MgaXMgbm90IHNldApDT05G
SUdfSU5QVVRfREE5MDYzX09OS0VZPXkKIyBDT05GSUdfSU5QVVRfV004MzFYX09OIGlzIG5v
dCBzZXQKQ09ORklHX0lOUFVUX0FEWEwzNFg9eQpDT05GSUdfSU5QVVRfQURYTDM0WF9JMkM9
eQpDT05GSUdfSU5QVVRfSUJNX1BBTkVMPXkKIyBDT05GSUdfSU5QVVRfSVFTMjY5QSBpcyBu
b3Qgc2V0CkNPTkZJR19JTlBVVF9JUVM2MjZBPXkKQ09ORklHX0lOUFVUX0lRUzcyMjI9eQpD
T05GSUdfSU5QVVRfQ01BMzAwMD15CkNPTkZJR19JTlBVVF9DTUEzMDAwX0kyQz15CkNPTkZJ
R19JTlBVVF9JREVBUEFEX1NMSURFQkFSPXkKQ09ORklHX0lOUFVUX0RSVjI2MFhfSEFQVElD
Uz15CkNPTkZJR19JTlBVVF9EUlYyNjY1X0hBUFRJQ1M9eQpDT05GSUdfSU5QVVRfRFJWMjY2
N19IQVBUSUNTPXkKQ09ORklHX0lOUFVUX1JUNTEyMF9QV1JLRVk9eQpDT05GSUdfUk1JNF9D
T1JFPXkKIyBDT05GSUdfUk1JNF9JMkMgaXMgbm90IHNldApDT05GSUdfUk1JNF9TTUI9eQpD
T05GSUdfUk1JNF9GMDM9eQpDT05GSUdfUk1JNF9GMDNfU0VSSU89eQpDT05GSUdfUk1JNF8y
RF9TRU5TT1I9eQpDT05GSUdfUk1JNF9GMTE9eQpDT05GSUdfUk1JNF9GMTI9eQpDT05GSUdf
Uk1JNF9GMzA9eQojIENPTkZJR19STUk0X0YzNCBpcyBub3Qgc2V0CkNPTkZJR19STUk0X0Yz
QT15CkNPTkZJR19STUk0X0Y1NT15CgojCiMgSGFyZHdhcmUgSS9PIHBvcnRzCiMKQ09ORklH
X1NFUklPPXkKQ09ORklHX0FSQ0hfTUlHSFRfSEFWRV9QQ19TRVJJTz15CkNPTkZJR19TRVJJ
T19JODA0Mj15CkNPTkZJR19TRVJJT19TRVJQT1JUPXkKQ09ORklHX1NFUklPX0NUODJDNzEw
PXkKIyBDT05GSUdfU0VSSU9fUEFSS0JEIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VSSU9fTElC
UFMyIGlzIG5vdCBzZXQKQ09ORklHX1NFUklPX1JBVz15CiMgQ09ORklHX1NFUklPX0FMVEVS
QV9QUzIgaXMgbm90IHNldApDT05GSUdfU0VSSU9fUFMyTVVMVD15CiMgQ09ORklHX1NFUklP
X0FSQ19QUzIgaXMgbm90IHNldApDT05GSUdfU0VSSU9fQVBCUFMyPXkKIyBDT05GSUdfU0VS
SU9fR1BJT19QUzIgaXMgbm90IHNldApDT05GSUdfVVNFUklPPXkKQ09ORklHX0dBTUVQT1JU
PXkKQ09ORklHX0dBTUVQT1JUX05TNTU4PXkKQ09ORklHX0dBTUVQT1JUX0w0PXkKIyBlbmQg
b2YgSGFyZHdhcmUgSS9PIHBvcnRzCiMgZW5kIG9mIElucHV0IGRldmljZSBzdXBwb3J0Cgoj
CiMgQ2hhcmFjdGVyIGRldmljZXMKIwpDT05GSUdfVFRZPXkKQ09ORklHX1ZUPXkKQ09ORklH
X0NPTlNPTEVfVFJBTlNMQVRJT05TPXkKQ09ORklHX1ZUX0NPTlNPTEU9eQojIENPTkZJR19W
VF9IV19DT05TT0xFX0JJTkRJTkcgaXMgbm90IHNldApDT05GSUdfVU5JWDk4X1BUWVM9eQpD
T05GSUdfTEVHQUNZX1BUWVM9eQpDT05GSUdfTEVHQUNZX1BUWV9DT1VOVD0yNTYKQ09ORklH
X0xFR0FDWV9USU9DU1RJPXkKQ09ORklHX0xESVNDX0FVVE9MT0FEPXkKCiMKIyBTZXJpYWwg
ZHJpdmVycwojCkNPTkZJR19TRVJJQUxfRUFSTFlDT049eQpDT05GSUdfU0VSSUFMXzgyNTA9
eQojIENPTkZJR19TRVJJQUxfODI1MF9ERVBSRUNBVEVEX09QVElPTlMgaXMgbm90IHNldApD
T05GSUdfU0VSSUFMXzgyNTBfUE5QPXkKQ09ORklHX1NFUklBTF84MjUwXzE2NTUwQV9WQVJJ
QU5UUz15CkNPTkZJR19TRVJJQUxfODI1MF9GSU5URUs9eQojIENPTkZJR19TRVJJQUxfODI1
MF9DT05TT0xFIGlzIG5vdCBzZXQKQ09ORklHX1NFUklBTF84MjUwX01FTl9NQ0I9eQpDT05G
SUdfU0VSSUFMXzgyNTBfTlJfVUFSVFM9NApDT05GSUdfU0VSSUFMXzgyNTBfUlVOVElNRV9V
QVJUUz00CkNPTkZJR19TRVJJQUxfODI1MF9FWFRFTkRFRD15CiMgQ09ORklHX1NFUklBTF84
MjUwX01BTllfUE9SVFMgaXMgbm90IHNldApDT05GSUdfU0VSSUFMXzgyNTBfU0hBUkVfSVJR
PXkKQ09ORklHX1NFUklBTF84MjUwX0RFVEVDVF9JUlE9eQojIENPTkZJR19TRVJJQUxfODI1
MF9SU0EgaXMgbm90IHNldApDT05GSUdfU0VSSUFMXzgyNTBfRFdMSUI9eQpDT05GSUdfU0VS
SUFMXzgyNTBfRFc9eQpDT05GSUdfU0VSSUFMXzgyNTBfUlQyODhYPXkKQ09ORklHX1NFUklB
TF9PRl9QTEFURk9STT15CgojCiMgTm9uLTgyNTAgc2VyaWFsIHBvcnQgc3VwcG9ydAojCkNP
TkZJR19TRVJJQUxfVUFSVExJVEU9eQojIENPTkZJR19TRVJJQUxfVUFSVExJVEVfQ09OU09M
RSBpcyBub3Qgc2V0CkNPTkZJR19TRVJJQUxfVUFSVExJVEVfTlJfVUFSVFM9MQpDT05GSUdf
U0VSSUFMX0NPUkU9eQpDT05GSUdfU0VSSUFMX0NPUkVfQ09OU09MRT15CiMgQ09ORklHX1NF
UklBTF9TSUZJVkUgaXMgbm90IHNldApDT05GSUdfU0VSSUFMX0xBTlRJUT15CiMgQ09ORklH
X1NFUklBTF9MQU5USVFfQ09OU09MRSBpcyBub3Qgc2V0CkNPTkZJR19TRVJJQUxfU0NDTlhQ
PXkKIyBDT05GSUdfU0VSSUFMX1NDQ05YUF9DT05TT0xFIGlzIG5vdCBzZXQKQ09ORklHX1NF
UklBTF9TQzE2SVM3WFg9eQpDT05GSUdfU0VSSUFMX1NDMTZJUzdYWF9JMkM9eQojIENPTkZJ
R19TRVJJQUxfVElNQkVSREFMRSBpcyBub3Qgc2V0CkNPTkZJR19TRVJJQUxfQUxURVJBX0pU
QUdVQVJUPXkKIyBDT05GSUdfU0VSSUFMX0FMVEVSQV9KVEFHVUFSVF9DT05TT0xFIGlzIG5v
dCBzZXQKQ09ORklHX1NFUklBTF9BTFRFUkFfVUFSVD15CkNPTkZJR19TRVJJQUxfQUxURVJB
X1VBUlRfTUFYUE9SVFM9NApDT05GSUdfU0VSSUFMX0FMVEVSQV9VQVJUX0JBVURSQVRFPTEx
NTIwMAojIENPTkZJR19TRVJJQUxfQUxURVJBX1VBUlRfQ09OU09MRSBpcyBub3Qgc2V0CkNP
TkZJR19TRVJJQUxfWElMSU5YX1BTX1VBUlQ9eQpDT05GSUdfU0VSSUFMX1hJTElOWF9QU19V
QVJUX0NPTlNPTEU9eQpDT05GSUdfU0VSSUFMX0FSQz15CkNPTkZJR19TRVJJQUxfQVJDX0NP
TlNPTEU9eQpDT05GSUdfU0VSSUFMX0FSQ19OUl9QT1JUUz0xCkNPTkZJR19TRVJJQUxfRlNM
X0xQVUFSVD15CiMgQ09ORklHX1NFUklBTF9GU0xfTFBVQVJUX0NPTlNPTEUgaXMgbm90IHNl
dApDT05GSUdfU0VSSUFMX0ZTTF9MSU5GTEVYVUFSVD15CiMgQ09ORklHX1NFUklBTF9GU0xf
TElORkxFWFVBUlRfQ09OU09MRSBpcyBub3Qgc2V0CkNPTkZJR19TRVJJQUxfQ09ORVhBTlRf
RElHSUNPTE9SPXkKIyBDT05GSUdfU0VSSUFMX0NPTkVYQU5UX0RJR0lDT0xPUl9DT05TT0xF
IGlzIG5vdCBzZXQKIyBDT05GSUdfU0VSSUFMX01FTl9aMTM1IGlzIG5vdCBzZXQKQ09ORklH
X1NFUklBTF9TUFJEPXkKIyBDT05GSUdfU0VSSUFMX1NQUkRfQ09OU09MRSBpcyBub3Qgc2V0
CiMgQ09ORklHX1NFUklBTF9MSVRFVUFSVCBpcyBub3Qgc2V0CiMgZW5kIG9mIFNlcmlhbCBk
cml2ZXJzCgpDT05GSUdfU0VSSUFMX01DVFJMX0dQSU89eQpDT05GSUdfU0VSSUFMX05PTlNU
QU5EQVJEPXkKQ09ORklHX01PWEFfSU5URUxMSU89eQpDT05GSUdfTl9IRExDPXkKQ09ORklH
X05fR1NNPXkKQ09ORklHX05VTExfVFRZPXkKIyBDT05GSUdfUlBNU0dfVFRZIGlzIG5vdCBz
ZXQKIyBDT05GSUdfU0VSSUFMX0RFVl9CVVMgaXMgbm90IHNldAojIENPTkZJR19QUklOVEVS
IGlzIG5vdCBzZXQKQ09ORklHX1BQREVWPXkKIyBDT05GSUdfVklSVElPX0NPTlNPTEUgaXMg
bm90IHNldApDT05GSUdfSVBNSV9IQU5ETEVSPXkKQ09ORklHX0lQTUlfRE1JX0RFQ09ERT15
CkNPTkZJR19JUE1JX1BMQVRfREFUQT15CiMgQ09ORklHX0lQTUlfUEFOSUNfRVZFTlQgaXMg
bm90IHNldAojIENPTkZJR19JUE1JX0RFVklDRV9JTlRFUkZBQ0UgaXMgbm90IHNldApDT05G
SUdfSVBNSV9TST15CkNPTkZJR19JUE1JX1NTSUY9eQojIENPTkZJR19JUE1JX0lQTUIgaXMg
bm90IHNldApDT05GSUdfSVBNSV9XQVRDSERPRz15CkNPTkZJR19JUE1JX1BPV0VST0ZGPXkK
IyBDT05GSUdfU1NJRl9JUE1JX0JNQyBpcyBub3Qgc2V0CkNPTkZJR19JUE1CX0RFVklDRV9J
TlRFUkZBQ0U9eQpDT05GSUdfSFdfUkFORE9NPXkKQ09ORklHX0hXX1JBTkRPTV9USU1FUklP
TUVNPXkKQ09ORklHX0hXX1JBTkRPTV9CQTQzMT15CkNPTkZJR19IV19SQU5ET01fVklBPXkK
Q09ORklHX0hXX1JBTkRPTV9WSVJUSU89eQojIENPTkZJR19IV19SQU5ET01fQ0NUUk5HIGlz
IG5vdCBzZXQKQ09ORklHX0hXX1JBTkRPTV9YSVBIRVJBPXkKIyBDT05GSUdfRFRMSyBpcyBu
b3Qgc2V0CkNPTkZJR19NV0FWRT15CiMgQ09ORklHX1NDeDIwMF9HUElPIGlzIG5vdCBzZXQK
IyBDT05GSUdfUEM4NzM2eF9HUElPIGlzIG5vdCBzZXQKQ09ORklHX05TQ19HUElPPXkKIyBD
T05GSUdfREVWTUVNIGlzIG5vdCBzZXQKQ09ORklHX05WUkFNPXkKIyBDT05GSUdfREVWUE9S
VCBpcyBub3Qgc2V0CiMgQ09ORklHX0hQRVQgaXMgbm90IHNldAojIENPTkZJR19IQU5HQ0hF
Q0tfVElNRVIgaXMgbm90IHNldApDT05GSUdfVENHX1RQTT15CkNPTkZJR19UQ0dfVFBNMl9I
TUFDPXkKQ09ORklHX0hXX1JBTkRPTV9UUE09eQpDT05GSUdfVENHX1RJU19DT1JFPXkKQ09O
RklHX1RDR19USVM9eQpDT05GSUdfVENHX1RJU19JMkM9eQpDT05GSUdfVENHX1RJU19JMkNf
Q1I1MD15CkNPTkZJR19UQ0dfVElTX0kyQ19BVE1FTD15CiMgQ09ORklHX1RDR19USVNfSTJD
X0lORklORU9OIGlzIG5vdCBzZXQKQ09ORklHX1RDR19USVNfSTJDX05VVk9UT049eQpDT05G
SUdfVENHX05TQz15CiMgQ09ORklHX1RDR19BVE1FTCBpcyBub3Qgc2V0CkNPTkZJR19UQ0df
SU5GSU5FT049eQpDT05GSUdfVENHX0NSQj15CkNPTkZJR19UQ0dfVlRQTV9QUk9YWT15CiMg
Q09ORklHX1RDR19USVNfU1QzM1pQMjRfSTJDIGlzIG5vdCBzZXQKIyBDT05GSUdfVEVMQ0xP
Q0sgaXMgbm90IHNldApDT05GSUdfWElMTFlCVVNfQ0xBU1M9eQpDT05GSUdfWElMTFlCVVM9
eQpDT05GSUdfWElMTFlCVVNfT0Y9eQojIGVuZCBvZiBDaGFyYWN0ZXIgZGV2aWNlcwoKIwoj
IEkyQyBzdXBwb3J0CiMKQ09ORklHX0kyQz15CiMgQ09ORklHX0FDUElfSTJDX09QUkVHSU9O
IGlzIG5vdCBzZXQKQ09ORklHX0kyQ19CT0FSRElORk89eQojIENPTkZJR19JMkNfQ09NUEFU
IGlzIG5vdCBzZXQKQ09ORklHX0kyQ19DSEFSREVWPXkKQ09ORklHX0kyQ19NVVg9eQoKIwoj
IE11bHRpcGxleGVyIEkyQyBDaGlwIHN1cHBvcnQKIwpDT05GSUdfSTJDX0FSQl9HUElPX0NI
QUxMRU5HRT15CkNPTkZJR19JMkNfTVVYX0dQSU89eQpDT05GSUdfSTJDX01VWF9HUE1VWD15
CkNPTkZJR19JMkNfTVVYX0xUQzQzMDY9eQpDT05GSUdfSTJDX01VWF9QQ0E5NTQxPXkKQ09O
RklHX0kyQ19NVVhfUENBOTU0eD15CiMgQ09ORklHX0kyQ19NVVhfUElOQ1RSTCBpcyBub3Qg
c2V0CkNPTkZJR19JMkNfTVVYX1JFRz15CiMgQ09ORklHX0kyQ19ERU1VWF9QSU5DVFJMIGlz
IG5vdCBzZXQKQ09ORklHX0kyQ19NVVhfTUxYQ1BMRD15CiMgZW5kIG9mIE11bHRpcGxleGVy
IEkyQyBDaGlwIHN1cHBvcnQKCiMgQ09ORklHX0kyQ19IRUxQRVJfQVVUTyBpcyBub3Qgc2V0
CkNPTkZJR19JMkNfU01CVVM9eQoKIwojIEkyQyBBbGdvcml0aG1zCiMKQ09ORklHX0kyQ19B
TEdPQklUPXkKQ09ORklHX0kyQ19BTEdPUENGPXkKQ09ORklHX0kyQ19BTEdPUENBPXkKIyBl
bmQgb2YgSTJDIEFsZ29yaXRobXMKCiMKIyBJMkMgSGFyZHdhcmUgQnVzIHN1cHBvcnQKIwoK
IwojIEFDUEkgZHJpdmVycwojCkNPTkZJR19JMkNfU0NNST15CgojCiMgSTJDIHN5c3RlbSBi
dXMgZHJpdmVycyAobW9zdGx5IGVtYmVkZGVkIC8gc3lzdGVtLW9uLWNoaXApCiMKQ09ORklH
X0kyQ19DQlVTX0dQSU89eQojIENPTkZJR19JMkNfREVTSUdOV0FSRV9QTEFURk9STSBpcyBu
b3Qgc2V0CiMgQ09ORklHX0kyQ19FTUVWMiBpcyBub3Qgc2V0CkNPTkZJR19JMkNfR1BJTz15
CiMgQ09ORklHX0kyQ19HUElPX0ZBVUxUX0lOSkVDVE9SIGlzIG5vdCBzZXQKQ09ORklHX0ky
Q19LRU1QTEQ9eQpDT05GSUdfSTJDX09DT1JFUz15CiMgQ09ORklHX0kyQ19QQ0FfUExBVEZP
Uk0gaXMgbm90IHNldAojIENPTkZJR19JMkNfUkszWCBpcyBub3Qgc2V0CiMgQ09ORklHX0ky
Q19TSU1URUMgaXMgbm90IHNldAojIENPTkZJR19JMkNfWElMSU5YIGlzIG5vdCBzZXQKCiMK
IyBFeHRlcm5hbCBJMkMvU01CdXMgYWRhcHRlciBkcml2ZXJzCiMKIyBDT05GSUdfSTJDX1BB
UlBPUlQgaXMgbm90IHNldAojIENPTkZJR19JMkNfVEFPU19FVk0gaXMgbm90IHNldAoKIwoj
IE90aGVyIEkyQy9TTUJ1cyBidXMgZHJpdmVycwojCkNPTkZJR19JMkNfUENBX0lTQT15CkNP
TkZJR19JMkNfQ1JPU19FQ19UVU5ORUw9eQpDT05GSUdfSTJDX1ZJUlRJTz15CiMgZW5kIG9m
IEkyQyBIYXJkd2FyZSBCdXMgc3VwcG9ydAoKQ09ORklHX0kyQ19TTEFWRT15CkNPTkZJR19J
MkNfU0xBVkVfRUVQUk9NPXkKQ09ORklHX0kyQ19TTEFWRV9URVNUVU5JVD15CkNPTkZJR19J
MkNfREVCVUdfQ09SRT15CiMgQ09ORklHX0kyQ19ERUJVR19BTEdPIGlzIG5vdCBzZXQKQ09O
RklHX0kyQ19ERUJVR19CVVM9eQojIGVuZCBvZiBJMkMgc3VwcG9ydAoKQ09ORklHX0kzQz15
CiMgQ09ORklHX0NETlNfSTNDX01BU1RFUiBpcyBub3Qgc2V0CkNPTkZJR19EV19JM0NfTUFT
VEVSPXkKQ09ORklHX1NWQ19JM0NfTUFTVEVSPXkKQ09ORklHX01JUElfSTNDX0hDST15CiMg
Q09ORklHX1NQSSBpcyBub3Qgc2V0CiMgQ09ORklHX1NQTUkgaXMgbm90IHNldApDT05GSUdf
SFNJPXkKQ09ORklHX0hTSV9CT0FSRElORk89eQoKIwojIEhTSSBjb250cm9sbGVycwojCgoj
CiMgSFNJIGNsaWVudHMKIwojIENPTkZJR19IU0lfQ0hBUiBpcyBub3Qgc2V0CkNPTkZJR19Q
UFM9eQpDT05GSUdfUFBTX0RFQlVHPXkKQ09ORklHX05UUF9QUFM9eQoKIwojIFBQUyBjbGll
bnRzIHN1cHBvcnQKIwpDT05GSUdfUFBTX0NMSUVOVF9LVElNRVI9eQpDT05GSUdfUFBTX0NM
SUVOVF9MRElTQz15CiMgQ09ORklHX1BQU19DTElFTlRfUEFSUE9SVCBpcyBub3Qgc2V0CkNP
TkZJR19QUFNfQ0xJRU5UX0dQSU89eQoKIwojIFBQUyBnZW5lcmF0b3JzIHN1cHBvcnQKIwoK
IwojIFBUUCBjbG9jayBzdXBwb3J0CiMKIyBDT05GSUdfUFRQXzE1ODhfQ0xPQ0sgaXMgbm90
IHNldApDT05GSUdfUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUw9eQojIGVuZCBvZiBQVFAgY2xv
Y2sgc3VwcG9ydAoKQ09ORklHX1BJTkNUUkw9eQpDT05GSUdfR0VORVJJQ19QSU5DVFJMX0dS
T1VQUz15CkNPTkZJR19QSU5NVVg9eQpDT05GSUdfR0VORVJJQ19QSU5NVVhfRlVOQ1RJT05T
PXkKQ09ORklHX1BJTkNPTkY9eQpDT05GSUdfR0VORVJJQ19QSU5DT05GPXkKIyBDT05GSUdf
UElOQ1RSTF9BTUQgaXMgbm90IHNldAojIENPTkZJR19QSU5DVFJMX0FYUDIwOSBpcyBub3Qg
c2V0CkNPTkZJR19QSU5DVFJMX0FXOTUyMz15CiMgQ09ORklHX1BJTkNUUkxfQ1k4Qzk1WDAg
aXMgbm90IHNldApDT05GSUdfUElOQ1RSTF9EQTkwNjI9eQpDT05GSUdfUElOQ1RSTF9FUVVJ
TElCUklVTT15CiMgQ09ORklHX1BJTkNUUkxfTUNQMjNTMDggaXMgbm90IHNldApDT05GSUdf
UElOQ1RSTF9NSUNST0NISVBfU0dQSU89eQpDT05GSUdfUElOQ1RSTF9PQ0VMT1Q9eQpDT05G
SUdfUElOQ1RSTF9QQUxNQVM9eQpDT05GSUdfUElOQ1RSTF9TSU5HTEU9eQpDT05GSUdfUElO
Q1RSTF9TVE1GWD15CkNPTkZJR19QSU5DVFJMX1NYMTUwWD15CkNPTkZJR19QSU5DVFJMX1RQ
UzY1OTQ9eQpDT05GSUdfUElOQ1RSTF9DUzQyTDQzPXkKCiMKIyBJbnRlbCBwaW5jdHJsIGRy
aXZlcnMKIwpDT05GSUdfUElOQ1RSTF9CQVlUUkFJTD15CkNPTkZJR19QSU5DVFJMX0NIRVJS
WVZJRVc9eQpDT05GSUdfUElOQ1RSTF9MWU5YUE9JTlQ9eQpDT05GSUdfUElOQ1RSTF9JTlRF
TD15CkNPTkZJR19QSU5DVFJMX0lOVEVMX1BMQVRGT1JNPXkKQ09ORklHX1BJTkNUUkxfQUxE
RVJMQUtFPXkKQ09ORklHX1BJTkNUUkxfQlJPWFRPTj15CiMgQ09ORklHX1BJTkNUUkxfQ0FO
Tk9OTEFLRSBpcyBub3Qgc2V0CkNPTkZJR19QSU5DVFJMX0NFREFSRk9SSz15CkNPTkZJR19Q
SU5DVFJMX0RFTlZFUlRPTj15CiMgQ09ORklHX1BJTkNUUkxfRUxLSEFSVExBS0UgaXMgbm90
IHNldApDT05GSUdfUElOQ1RSTF9FTU1JVFNCVVJHPXkKIyBDT05GSUdfUElOQ1RSTF9HRU1J
TklMQUtFIGlzIG5vdCBzZXQKQ09ORklHX1BJTkNUUkxfSUNFTEFLRT15CkNPTkZJR19QSU5D
VFJMX0pBU1BFUkxBS0U9eQpDT05GSUdfUElOQ1RSTF9MQUtFRklFTEQ9eQojIENPTkZJR19Q
SU5DVFJMX0xFV0lTQlVSRyBpcyBub3Qgc2V0CiMgQ09ORklHX1BJTkNUUkxfTUVURU9STEFL
RSBpcyBub3Qgc2V0CkNPTkZJR19QSU5DVFJMX01FVEVPUlBPSU5UPXkKQ09ORklHX1BJTkNU
UkxfU1VOUklTRVBPSU5UPXkKIyBDT05GSUdfUElOQ1RSTF9USUdFUkxBS0UgaXMgbm90IHNl
dAojIGVuZCBvZiBJbnRlbCBwaW5jdHJsIGRyaXZlcnMKCiMKIyBSZW5lc2FzIHBpbmN0cmwg
ZHJpdmVycwojCiMgZW5kIG9mIFJlbmVzYXMgcGluY3RybCBkcml2ZXJzCgpDT05GSUdfR1BJ
T0xJQj15CkNPTkZJR19HUElPTElCX0ZBU1RQQVRIX0xJTUlUPTUxMgpDT05GSUdfT0ZfR1BJ
Tz15CkNPTkZJR19HUElPX0FDUEk9eQpDT05GSUdfR1BJT0xJQl9JUlFDSElQPXkKQ09ORklH
X09GX0dQSU9fTU1fR1BJT0NISVA9eQpDT05GSUdfR1BJT19DREVWPXkKQ09ORklHX0dQSU9f
Q0RFVl9WMT15CkNPTkZJR19HUElPX0dFTkVSSUM9eQpDT05GSUdfR1BJT19SRUdNQVA9eQoK
IwojIE1lbW9yeSBtYXBwZWQgR1BJTyBkcml2ZXJzCiMKQ09ORklHX0dQSU9fNzRYWF9NTUlP
PXkKQ09ORklHX0dQSU9fQUxURVJBPXkKIyBDT05GSUdfR1BJT19BTURQVCBpcyBub3Qgc2V0
CkNPTkZJR19HUElPX0NBREVOQ0U9eQpDT05GSUdfR1BJT19EV0FQQj15CiMgQ09ORklHX0dQ
SU9fRlRHUElPMDEwIGlzIG5vdCBzZXQKIyBDT05GSUdfR1BJT19HRU5FUklDX1BMQVRGT1JN
IGlzIG5vdCBzZXQKIyBDT05GSUdfR1BJT19HUkFOSVRFUkFQSURTIGlzIG5vdCBzZXQKQ09O
RklHX0dQSU9fR1JHUElPPXkKQ09ORklHX0dQSU9fSExXRD15CkNPTkZJR19HUElPX0xPR0lD
VkM9eQpDT05GSUdfR1BJT19NQjg2UzdYPXkKQ09ORklHX0dQSU9fTUVOWjEyNz15CkNPTkZJ
R19HUElPX1NJRklWRT15CiMgQ09ORklHX0dQSU9fU0lPWCBpcyBub3Qgc2V0CiMgQ09ORklH
X0dQSU9fU1lTQ09OIGlzIG5vdCBzZXQKQ09ORklHX0dQSU9fWElMSU5YPXkKIyBDT05GSUdf
R1BJT19BTURfRkNIIGlzIG5vdCBzZXQKIyBlbmQgb2YgTWVtb3J5IG1hcHBlZCBHUElPIGRy
aXZlcnMKCiMKIyBQb3J0LW1hcHBlZCBJL08gR1BJTyBkcml2ZXJzCiMKQ09ORklHX0dQSU9f
RjcxODhYPXkKQ09ORklHX0dQSU9fSVQ4Nz15CiMgQ09ORklHX0dQSU9fU0NIMzExWCBpcyBu
b3Qgc2V0CkNPTkZJR19HUElPX1dJTkJPTkQ9eQpDT05GSUdfR1BJT19XUzE2QzQ4PXkKIyBl
bmQgb2YgUG9ydC1tYXBwZWQgSS9PIEdQSU8gZHJpdmVycwoKIwojIEkyQyBHUElPIGV4cGFu
ZGVycwojCkNPTkZJR19HUElPX0FETlA9eQojIENPTkZJR19HUElPX0ZYTDY0MDggaXMgbm90
IHNldApDT05GSUdfR1BJT19EUzQ1MjA9eQojIENPTkZJR19HUElPX0dXX1BMRCBpcyBub3Qg
c2V0CiMgQ09ORklHX0dQSU9fTUFYNzMwMCBpcyBub3Qgc2V0CiMgQ09ORklHX0dQSU9fTUFY
NzMyWCBpcyBub3Qgc2V0CiMgQ09ORklHX0dQSU9fUENBOTUzWCBpcyBub3Qgc2V0CkNPTkZJ
R19HUElPX1BDQTk1NzA9eQojIENPTkZJR19HUElPX1BDRjg1N1ggaXMgbm90IHNldApDT05G
SUdfR1BJT19UUElDMjgxMD15CiMgZW5kIG9mIEkyQyBHUElPIGV4cGFuZGVycwoKIwojIE1G
RCBHUElPIGV4cGFuZGVycwojCiMgQ09ORklHX0dQSU9fQURQNTUyMCBpcyBub3Qgc2V0CkNP
TkZJR19HUElPX0FSSVpPTkE9eQpDT05GSUdfR1BJT19CRDcxODE1PXkKIyBDT05GSUdfR1BJ
T19CRDcxODI4IGlzIG5vdCBzZXQKQ09ORklHX0dQSU9fQkQ5NTcxTVdWPXkKQ09ORklHX0dQ
SU9fQ1JPU19FQz15CiMgQ09ORklHX0dQSU9fRUxLSEFSVExBS0UgaXMgbm90IHNldApDT05G
SUdfR1BJT19LRU1QTEQ9eQpDT05GSUdfR1BJT19MUDM5NDM9eQojIENPTkZJR19HUElPX0xQ
ODc1NjUgaXMgbm90IHNldApDT05GSUdfR1BJT19NQVg3NzY1MD15CkNPTkZJR19HUElPX1BB
TE1BUz15CkNPTkZJR19HUElPX1JDNVQ1ODM9eQpDT05GSUdfR1BJT19TVE1QRT15CiMgQ09O
RklHX0dQSU9fVEMzNTg5WCBpcyBub3Qgc2V0CkNPTkZJR19HUElPX1RQUzY1MDg2PXkKIyBD
T05GSUdfR1BJT19UUFM2NTIxOCBpcyBub3Qgc2V0CkNPTkZJR19HUElPX1RQUzY1MjE5PXkK
IyBDT05GSUdfR1BJT19UUFM2NTg2WCBpcyBub3Qgc2V0CiMgQ09ORklHX0dQSU9fVFBTNjU5
MTAgaXMgbm90IHNldApDT05GSUdfR1BJT19UUFM2NTkxMj15CiMgQ09ORklHX0dQSU9fVFBT
Njg0NzAgaXMgbm90IHNldApDT05GSUdfR1BJT19UV0w0MDMwPXkKQ09ORklHX0dQSU9fV0hJ
U0tFWV9DT1ZFPXkKIyBDT05GSUdfR1BJT19XTTgzMVggaXMgbm90IHNldApDT05GSUdfR1BJ
T19XTTgzNTA9eQojIENPTkZJR19HUElPX1dNODk5NCBpcyBub3Qgc2V0CiMgZW5kIG9mIE1G
RCBHUElPIGV4cGFuZGVycwoKIwojIFZpcnR1YWwgR1BJTyBkcml2ZXJzCiMKIyBDT05GSUdf
R1BJT19BR0dSRUdBVE9SIGlzIG5vdCBzZXQKQ09ORklHX0dQSU9fTEFUQ0g9eQojIENPTkZJ
R19HUElPX01PQ0tVUCBpcyBub3Qgc2V0CiMgQ09ORklHX0dQSU9fVklSVElPIGlzIG5vdCBz
ZXQKIyBDT05GSUdfR1BJT19TSU0gaXMgbm90IHNldAojIGVuZCBvZiBWaXJ0dWFsIEdQSU8g
ZHJpdmVycwoKIwojIEdQSU8gRGVidWdnaW5nIHV0aWxpdGllcwojCiMgZW5kIG9mIEdQSU8g
RGVidWdnaW5nIHV0aWxpdGllcwoKQ09ORklHX1cxPXkKQ09ORklHX1cxX0NPTj15CgojCiMg
MS13aXJlIEJ1cyBNYXN0ZXJzCiMKQ09ORklHX1cxX01BU1RFUl9BTURfQVhJPXkKQ09ORklH
X1cxX01BU1RFUl9EUzI0ODI9eQpDT05GSUdfVzFfTUFTVEVSX0dQSU89eQojIENPTkZJR19X
MV9NQVNURVJfU0dJIGlzIG5vdCBzZXQKIyBlbmQgb2YgMS13aXJlIEJ1cyBNYXN0ZXJzCgoj
CiMgMS13aXJlIFNsYXZlcwojCkNPTkZJR19XMV9TTEFWRV9USEVSTT15CkNPTkZJR19XMV9T
TEFWRV9TTUVNPXkKIyBDT05GSUdfVzFfU0xBVkVfRFMyNDA1IGlzIG5vdCBzZXQKQ09ORklH
X1cxX1NMQVZFX0RTMjQwOD15CiMgQ09ORklHX1cxX1NMQVZFX0RTMjQwOF9SRUFEQkFDSyBp
cyBub3Qgc2V0CkNPTkZJR19XMV9TTEFWRV9EUzI0MTM9eQpDT05GSUdfVzFfU0xBVkVfRFMy
NDA2PXkKQ09ORklHX1cxX1NMQVZFX0RTMjQyMz15CkNPTkZJR19XMV9TTEFWRV9EUzI4MDU9
eQpDT05GSUdfVzFfU0xBVkVfRFMyNDMwPXkKIyBDT05GSUdfVzFfU0xBVkVfRFMyNDMxIGlz
IG5vdCBzZXQKQ09ORklHX1cxX1NMQVZFX0RTMjQzMz15CkNPTkZJR19XMV9TTEFWRV9EUzI0
MzNfQ1JDPXkKQ09ORklHX1cxX1NMQVZFX0RTMjQzOD15CiMgQ09ORklHX1cxX1NMQVZFX0RT
MjUwWCBpcyBub3Qgc2V0CkNPTkZJR19XMV9TTEFWRV9EUzI3ODA9eQpDT05GSUdfVzFfU0xB
VkVfRFMyNzgxPXkKQ09ORklHX1cxX1NMQVZFX0RTMjhFMDQ9eQpDT05GSUdfVzFfU0xBVkVf
RFMyOEUxNz15CiMgZW5kIG9mIDEtd2lyZSBTbGF2ZXMKCiMgQ09ORklHX1BPV0VSX1JFU0VU
IGlzIG5vdCBzZXQKQ09ORklHX1BPV0VSX1NFUVVFTkNJTkc9eQpDT05GSUdfUE9XRVJfU0VR
VUVOQ0lOR19RQ09NX1dDTj15CkNPTkZJR19QT1dFUl9TVVBQTFk9eQojIENPTkZJR19QT1dF
Ul9TVVBQTFlfREVCVUcgaXMgbm90IHNldApDT05GSUdfUE9XRVJfU1VQUExZX0hXTU9OPXkK
IyBDT05GSUdfR0VORVJJQ19BRENfQkFUVEVSWSBpcyBub3Qgc2V0CkNPTkZJR19JUDVYWFhf
UE9XRVI9eQpDT05GSUdfV004MzFYX0JBQ0tVUD15CkNPTkZJR19XTTgzMVhfUE9XRVI9eQpD
T05GSUdfV004MzUwX1BPV0VSPXkKQ09ORklHX1RFU1RfUE9XRVI9eQpDT05GSUdfQ0hBUkdF
Ul9BRFA1MDYxPXkKQ09ORklHX0JBVFRFUllfQUNUODk0NUE9eQojIENPTkZJR19CQVRURVJZ
X0NXMjAxNSBpcyBub3Qgc2V0CiMgQ09ORklHX0JBVFRFUllfRFMyNzYwIGlzIG5vdCBzZXQK
Q09ORklHX0JBVFRFUllfRFMyNzgwPXkKQ09ORklHX0JBVFRFUllfRFMyNzgxPXkKQ09ORklH
X0JBVFRFUllfRFMyNzgyPXkKIyBDT05GSUdfQkFUVEVSWV9PTFBDIGlzIG5vdCBzZXQKIyBD
T05GSUdfQkFUVEVSWV9TQU1TVU5HX1NESSBpcyBub3Qgc2V0CkNPTkZJR19CQVRURVJZX1NC
Uz15CkNPTkZJR19DSEFSR0VSX1NCUz15CkNPTkZJR19NQU5BR0VSX1NCUz15CkNPTkZJR19C
QVRURVJZX0JRMjdYWFg9eQojIENPTkZJR19CQVRURVJZX0JRMjdYWFhfSTJDIGlzIG5vdCBz
ZXQKIyBDT05GSUdfQkFUVEVSWV9CUTI3WFhYX0hEUSBpcyBub3Qgc2V0CkNPTkZJR19CQVRU
RVJZX0RBOTE1MD15CiMgQ09ORklHX0FYUDIwWF9QT1dFUiBpcyBub3Qgc2V0CiMgQ09ORklH
X0JBVFRFUllfTUFYMTcwNDAgaXMgbm90IHNldApDT05GSUdfQkFUVEVSWV9NQVgxNzA0Mj15
CkNPTkZJR19CQVRURVJZX01BWDE3MjFYPXkKIyBDT05GSUdfQkFUVEVSWV9UV0w0MDMwX01B
REMgaXMgbm90IHNldApDT05GSUdfQ0hBUkdFUl9QQ0Y1MDYzMz15CkNPTkZJR19CQVRURVJZ
X1JYNTE9eQpDT05GSUdfQ0hBUkdFUl9NQVg4OTAzPXkKQ09ORklHX0NIQVJHRVJfVFdMNDAz
MD15CkNPTkZJR19DSEFSR0VSX0xQODcyNz15CkNPTkZJR19DSEFSR0VSX0xQODc4OD15CiMg
Q09ORklHX0NIQVJHRVJfR1BJTyBpcyBub3Qgc2V0CkNPTkZJR19DSEFSR0VSX01BTkFHRVI9
eQojIENPTkZJR19DSEFSR0VSX0xUMzY1MSBpcyBub3Qgc2V0CkNPTkZJR19DSEFSR0VSX0xU
QzQxNjJMPXkKQ09ORklHX0NIQVJHRVJfTUFYMTQ1Nzc9eQpDT05GSUdfQ0hBUkdFUl9ERVRF
Q1RPUl9NQVgxNDY1Nj15CkNPTkZJR19DSEFSR0VSX01BWDc3NjUwPXkKQ09ORklHX0NIQVJH
RVJfTUFYNzc2OTM9eQojIENPTkZJR19DSEFSR0VSX01BWDc3OTc2IGlzIG5vdCBzZXQKQ09O
RklHX0NIQVJHRVJfTVAyNjI5PXkKQ09ORklHX0NIQVJHRVJfTVQ2MzcwPXkKQ09ORklHX0NI
QVJHRVJfQlEyNDE1WD15CkNPTkZJR19DSEFSR0VSX0JRMjQxOTA9eQpDT05GSUdfQ0hBUkdF
Ul9CUTI0MjU3PXkKQ09ORklHX0NIQVJHRVJfQlEyNDczNT15CkNPTkZJR19DSEFSR0VSX0JR
MjUxNVg9eQpDT05GSUdfQ0hBUkdFUl9CUTI1ODkwPXkKQ09ORklHX0NIQVJHRVJfQlEyNTk4
MD15CkNPTkZJR19DSEFSR0VSX0JRMjU2WFg9eQpDT05GSUdfQ0hBUkdFUl9TTUIzNDc9eQpD
T05GSUdfQ0hBUkdFUl9UUFM2NTA5MD15CiMgQ09ORklHX0NIQVJHRVJfVFBTNjUyMTcgaXMg
bm90IHNldApDT05GSUdfQkFUVEVSWV9HQVVHRV9MVEMyOTQxPXkKQ09ORklHX0JBVFRFUllf
R09MREZJU0g9eQpDT05GSUdfQkFUVEVSWV9SVDUwMzM9eQpDT05GSUdfQ0hBUkdFUl9SVDUw
MzM9eQpDT05GSUdfQ0hBUkdFUl9SVDk0NTU9eQpDT05GSUdfQ0hBUkdFUl9SVDk0Njc9eQpD
T05GSUdfQ0hBUkdFUl9SVDk0NzE9eQpDT05GSUdfQ0hBUkdFUl9DUk9TX1VTQlBEPXkKIyBD
T05GSUdfQ0hBUkdFUl9DUk9TX1BDSEcgaXMgbm90IHNldApDT05GSUdfQ0hBUkdFUl9DUk9T
X0NPTlRST0w9eQpDT05GSUdfQ0hBUkdFUl9VQ1MxMDAyPXkKIyBDT05GSUdfQ0hBUkdFUl9C
RDk5OTU0IGlzIG5vdCBzZXQKQ09ORklHX0NIQVJHRVJfV0lMQ089eQpDT05GSUdfUk41VDYx
OF9QT1dFUj15CkNPTkZJR19CQVRURVJZX1VHMzEwNT15CiMgQ09ORklHX0ZVRUxfR0FVR0Vf
TU04MDEzIGlzIG5vdCBzZXQKQ09ORklHX0hXTU9OPXkKQ09ORklHX0hXTU9OX1ZJRD15CiMg
Q09ORklHX0hXTU9OX0RFQlVHX0NISVAgaXMgbm90IHNldAoKIwojIE5hdGl2ZSBkcml2ZXJz
CiMKQ09ORklHX1NFTlNPUlNfQUJJVFVHVVJVPXkKIyBDT05GSUdfU0VOU09SU19BQklUVUdV
UlUzIGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfQUQ3NDE0PXkKIyBDT05GSUdfU0VOU09S
U19BRDc0MTggaXMgbm90IHNldApDT05GSUdfU0VOU09SU19BRE0xMDIxPXkKQ09ORklHX1NF
TlNPUlNfQURNMTAyNT15CkNPTkZJR19TRU5TT1JTX0FETTEwMjY9eQpDT05GSUdfU0VOU09S
U19BRE0xMDI5PXkKQ09ORklHX1NFTlNPUlNfQURNMTAzMT15CkNPTkZJR19TRU5TT1JTX0FE
TTExNzc9eQpDT05GSUdfU0VOU09SU19BRE05MjQwPXkKQ09ORklHX1NFTlNPUlNfQURUN1gx
MD15CkNPTkZJR19TRU5TT1JTX0FEVDc0MTA9eQojIENPTkZJR19TRU5TT1JTX0FEVDc0MTEg
aXMgbm90IHNldApDT05GSUdfU0VOU09SU19BRFQ3NDYyPXkKQ09ORklHX1NFTlNPUlNfQURU
NzQ3MD15CkNPTkZJR19TRU5TT1JTX0FEVDc0NzU9eQpDT05GSUdfU0VOU09SU19BSFQxMD15
CkNPTkZJR19TRU5TT1JTX0FTMzcwPXkKQ09ORklHX1NFTlNPUlNfQVNDNzYyMT15CkNPTkZJ
R19TRU5TT1JTX0FTVVNfUk9HX1JZVUpJTj15CkNPTkZJR19TRU5TT1JTX0FYSV9GQU5fQ09O
VFJPTD15CkNPTkZJR19TRU5TT1JTX0FQUExFU01DPXkKIyBDT05GSUdfU0VOU09SU19BU0Ix
MDAgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0FUWFAxIGlzIG5vdCBzZXQKQ09ORklH
X1NFTlNPUlNfQ0hJUENBUDI9eQojIENPTkZJR19TRU5TT1JTX0NPUlNBSVJfQ1BSTyBpcyBu
b3Qgc2V0CkNPTkZJR19TRU5TT1JTX0NPUlNBSVJfUFNVPXkKQ09ORklHX1NFTlNPUlNfQ1JP
U19FQz15CiMgQ09ORklHX1NFTlNPUlNfRFJJVkVURU1QIGlzIG5vdCBzZXQKQ09ORklHX1NF
TlNPUlNfRFM2MjA9eQpDT05GSUdfU0VOU09SU19EUzE2MjE9eQpDT05GSUdfU0VOU09SU19E
RUxMX1NNTT15CiMgQ09ORklHX0k4SyBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfRjcx
ODA1RiBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX0Y3MTg4MkZHPXkKIyBDT05GSUdfU0VO
U09SU19GNzUzNzVTIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19HU0MgaXMgbm90IHNl
dApDT05GSUdfU0VOU09SU19NQzEzNzgzX0FEQz15CiMgQ09ORklHX1NFTlNPUlNfRlNDSE1E
IGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfR0w1MThTTT15CkNPTkZJR19TRU5TT1JTX0dM
NTIwU009eQpDT05GSUdfU0VOU09SU19HNzYwQT15CiMgQ09ORklHX1NFTlNPUlNfRzc2MiBp
cyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX0dQSU9fRkFOPXkKQ09ORklHX1NFTlNPUlNfSElI
NjEzMD15CkNPTkZJR19TRU5TT1JTX0hTMzAwMT15CiMgQ09ORklHX1NFTlNPUlNfSUJNQUVN
IGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19JQk1QRVggaXMgbm90IHNldApDT05GSUdf
U0VOU09SU19JSU9fSFdNT049eQpDT05GSUdfU0VOU09SU19DT1JFVEVNUD15CkNPTkZJR19T
RU5TT1JTX0lUODc9eQpDT05GSUdfU0VOU09SU19KQzQyPXkKQ09ORklHX1NFTlNPUlNfUE9X
UjEyMjA9eQpDT05GSUdfU0VOU09SU19MRU5PVk9fRUM9eQojIENPTkZJR19TRU5TT1JTX0xJ
TkVBR0UgaXMgbm90IHNldApDT05GSUdfU0VOU09SU19MVEMyOTQ1PXkKQ09ORklHX1NFTlNP
UlNfTFRDMjk0Nz15CkNPTkZJR19TRU5TT1JTX0xUQzI5NDdfSTJDPXkKIyBDT05GSUdfU0VO
U09SU19MVEMyOTkwIGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfTFRDMjk5MT15CkNPTkZJ
R19TRU5TT1JTX0xUQzI5OTI9eQpDT05GSUdfU0VOU09SU19MVEM0MTUxPXkKIyBDT05GSUdf
U0VOU09SU19MVEM0MjE1IGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfTFRDNDIyMj15CkNP
TkZJR19TRU5TT1JTX0xUQzQyNDU9eQpDT05GSUdfU0VOU09SU19MVEM0MjYwPXkKQ09ORklH
X1NFTlNPUlNfTFRDNDI2MT15CkNPTkZJR19TRU5TT1JTX0xUQzQyODI9eQpDT05GSUdfU0VO
U09SU19NQVgxMjc9eQpDT05GSUdfU0VOU09SU19NQVgxNjA2NT15CkNPTkZJR19TRU5TT1JT
X01BWDE2MTk9eQpDT05GSUdfU0VOU09SU19NQVgxNjY4PXkKQ09ORklHX1NFTlNPUlNfTUFY
MTk3PXkKIyBDT05GSUdfU0VOU09SU19NQVgzMTczMCBpcyBub3Qgc2V0CkNPTkZJR19TRU5T
T1JTX01BWDMxNzYwPXkKIyBDT05GSUdfTUFYMzE4MjcgaXMgbm90IHNldApDT05GSUdfU0VO
U09SU19NQVg2NjIwPXkKQ09ORklHX1NFTlNPUlNfTUFYNjYyMT15CkNPTkZJR19TRU5TT1JT
X01BWDY2Mzk9eQpDT05GSUdfU0VOU09SU19NQVg2NjQyPXkKQ09ORklHX1NFTlNPUlNfTUFY
NjY1MD15CkNPTkZJR19TRU5TT1JTX01BWDY2OTc9eQpDT05GSUdfU0VOU09SU19NQVgzMTc5
MD15CkNPTkZJR19TRU5TT1JTX01DMzRWUjUwMD15CkNPTkZJR19TRU5TT1JTX01DUDMwMjE9
eQojIENPTkZJR19TRU5TT1JTX01MWFJFR19GQU4gaXMgbm90IHNldApDT05GSUdfU0VOU09S
U19UQzY1ND15CkNPTkZJR19TRU5TT1JTX1RQUzIzODYxPXkKIyBDT05GSUdfU0VOU09SU19N
RU5GMjFCTUNfSFdNT04gaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX01SNzUyMDMgaXMg
bm90IHNldAojIENPTkZJR19TRU5TT1JTX0xNNjMgaXMgbm90IHNldAojIENPTkZJR19TRU5T
T1JTX0xNNzMgaXMgbm90IHNldApDT05GSUdfU0VOU09SU19MTTc1PXkKQ09ORklHX1NFTlNP
UlNfTE03Nz15CkNPTkZJR19TRU5TT1JTX0xNNzg9eQojIENPTkZJR19TRU5TT1JTX0xNODAg
aXMgbm90IHNldApDT05GSUdfU0VOU09SU19MTTgzPXkKIyBDT05GSUdfU0VOU09SU19MTTg1
IGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfTE04Nz15CiMgQ09ORklHX1NFTlNPUlNfTE05
MCBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX0xNOTI9eQojIENPTkZJR19TRU5TT1JTX0xN
OTMgaXMgbm90IHNldApDT05GSUdfU0VOU09SU19MTTk1MjM0PXkKQ09ORklHX1NFTlNPUlNf
TE05NTI0MT15CkNPTkZJR19TRU5TT1JTX0xNOTUyNDU9eQpDT05GSUdfU0VOU09SU19QQzg3
MzYwPXkKQ09ORklHX1NFTlNPUlNfUEM4NzQyNz15CkNPTkZJR19TRU5TT1JTX05UQ19USEVS
TUlTVE9SPXkKIyBDT05GSUdfU0VOU09SU19OQ1Q2NjgzIGlzIG5vdCBzZXQKQ09ORklHX1NF
TlNPUlNfTkNUNjc3NV9DT1JFPXkKIyBDT05GSUdfU0VOU09SU19OQ1Q2Nzc1IGlzIG5vdCBz
ZXQKQ09ORklHX1NFTlNPUlNfTkNUNjc3NV9JMkM9eQpDT05GSUdfU0VOU09SU19OQ1Q3ODAy
PXkKQ09ORklHX1NFTlNPUlNfTlBDTTdYWD15CkNPTkZJR19TRU5TT1JTX09DQ19QOF9JMkM9
eQpDT05GSUdfU0VOU09SU19PQ0M9eQpDT05GSUdfU0VOU09SU19PWFA9eQpDT05GSUdfU0VO
U09SU19QQ0Y4NTkxPXkKQ09ORklHX1BNQlVTPXkKIyBDT05GSUdfU0VOU09SU19QTUJVUyBp
cyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX0FDQkVMX0ZTRzAzMj15CiMgQ09ORklHX1NFTlNP
UlNfQURNMTI2NiBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX0FETTEyNzU9eQojIENPTkZJ
R19TRU5TT1JTX0FEUDEwNTAgaXMgbm90IHNldApDT05GSUdfU0VOU09SU19CRUxfUEZFPXkK
Q09ORklHX1NFTlNPUlNfQlBBX1JTNjAwPXkKIyBDT05GSUdfU0VOU09SU19ERUxUQV9BSEU1
MERDX0ZBTiBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX0ZTUF8zWT15CiMgQ09ORklHX1NF
TlNPUlNfSUJNX0NGRlBTIGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfRFBTOTIwQUI9eQpD
T05GSUdfU0VOU09SU19JTlNQVVJfSVBTUFM9eQpDT05GSUdfU0VOU09SU19JUjM1MjIxPXkK
Q09ORklHX1NFTlNPUlNfSVIzNjAyMT15CiMgQ09ORklHX1NFTlNPUlNfSVIzODA2NCBpcyBu
b3Qgc2V0CkNPTkZJR19TRU5TT1JTX0lSUFM1NDAxPXkKQ09ORklHX1NFTlNPUlNfSVNMNjgx
Mzc9eQpDT05GSUdfU0VOU09SU19MTTI1MDY2PXkKIyBDT05GSUdfU0VOU09SU19MTTI1MDY2
X1JFR1VMQVRPUiBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfTFQ3MTgyUyBpcyBub3Qg
c2V0CkNPTkZJR19TRU5TT1JTX0xUQzI5Nzg9eQojIENPTkZJR19TRU5TT1JTX0xUQzI5Nzhf
UkVHVUxBVE9SIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19MVEMzODE1IGlzIG5vdCBz
ZXQKIyBDT05GSUdfU0VOU09SU19MVEM0Mjg2IGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNf
TUFYMTUzMDE9eQojIENPTkZJR19TRU5TT1JTX01BWDE2MDY0IGlzIG5vdCBzZXQKQ09ORklH
X1NFTlNPUlNfTUFYMTY2MDE9eQojIENPTkZJR19TRU5TT1JTX01BWDIwNzMwIGlzIG5vdCBz
ZXQKIyBDT05GSUdfU0VOU09SU19NQVgyMDc1MSBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JT
X01BWDMxNzg1PXkKQ09ORklHX1NFTlNPUlNfTUFYMzQ0NDA9eQojIENPTkZJR19TRU5TT1JT
X01BWDg2ODggaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX01QMjg1NiBpcyBub3Qgc2V0
CiMgQ09ORklHX1NFTlNPUlNfTVAyODg4IGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19N
UDI4OTEgaXMgbm90IHNldApDT05GSUdfU0VOU09SU19NUDI5NzU9eQojIENPTkZJR19TRU5T
T1JTX01QMjk5MyBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX01QMjk3NV9SRUdVTEFUT1I9
eQojIENPTkZJR19TRU5TT1JTX01QNTAyMyBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX01Q
NTkyMD15CkNPTkZJR19TRU5TT1JTX01QNTk5MD15CkNPTkZJR19TRU5TT1JTX01QOTk0MT15
CkNPTkZJR19TRU5TT1JTX01QUTc5MzJfUkVHVUxBVE9SPXkKQ09ORklHX1NFTlNPUlNfTVBR
NzkzMj15CiMgQ09ORklHX1NFTlNPUlNfTVBRODc4NSBpcyBub3Qgc2V0CiMgQ09ORklHX1NF
TlNPUlNfUElNNDMyOCBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX1BMSTEyMDlCQz15CiMg
Q09ORklHX1NFTlNPUlNfUExJMTIwOUJDX1JFR1VMQVRPUiBpcyBub3Qgc2V0CiMgQ09ORklH
X1NFTlNPUlNfUE02NzY0VFIgaXMgbm90IHNldApDT05GSUdfU0VOU09SU19QWEUxNjEwPXkK
Q09ORklHX1NFTlNPUlNfUTU0U0oxMDhBMj15CiMgQ09ORklHX1NFTlNPUlNfU1RQRERDNjAg
aXMgbm90IHNldApDT05GSUdfU0VOU09SU19UREEzODY0MD15CiMgQ09ORklHX1NFTlNPUlNf
VERBMzg2NDBfUkVHVUxBVE9SIGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfVFBTNDA0MjI9
eQpDT05GSUdfU0VOU09SU19UUFM1MzY3OT15CiMgQ09ORklHX1NFTlNPUlNfVFBTNTQ2RDI0
IGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfVUNEOTAwMD15CiMgQ09ORklHX1NFTlNPUlNf
VUNEOTIwMCBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX1hEUDcxMD15CkNPTkZJR19TRU5T
T1JTX1hEUEUxNTI9eQojIENPTkZJR19TRU5TT1JTX1hEUEUxMjIgaXMgbm90IHNldApDT05G
SUdfU0VOU09SU19aTDYxMDA9eQpDT05GSUdfU0VOU09SU19QVDUxNjFMPXkKQ09ORklHX1NF
TlNPUlNfUFdNX0ZBTj15CkNPTkZJR19TRU5TT1JTX1NCVFNJPXkKIyBDT05GSUdfU0VOU09S
U19TQlJNSSBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfU0hUMTUgaXMgbm90IHNldApD
T05GSUdfU0VOU09SU19TSFQyMT15CkNPTkZJR19TRU5TT1JTX1NIVDN4PXkKQ09ORklHX1NF
TlNPUlNfU0hUNHg9eQpDT05GSUdfU0VOU09SU19TSFRDMT15CkNPTkZJR19TRU5TT1JTX1NZ
NzYzNkE9eQpDT05GSUdfU0VOU09SU19ETUUxNzM3PXkKIyBDT05GSUdfU0VOU09SU19FTUMx
NDAzIGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfRU1DMjEwMz15CiMgQ09ORklHX1NFTlNP
UlNfRU1DMjMwNSBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX0VNQzZXMjAxPXkKIyBDT05G
SUdfU0VOU09SU19TTVNDNDdNMSBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX1NNU0M0N00x
OTI9eQojIENPTkZJR19TRU5TT1JTX1NNU0M0N0IzOTcgaXMgbm90IHNldApDT05GSUdfU0VO
U09SU19TVFRTNzUxPXkKIyBDT05GSUdfU0VOU09SU19BREMxMjhEODE4IGlzIG5vdCBzZXQK
Q09ORklHX1NFTlNPUlNfQURTNzgyOD15CiMgQ09ORklHX1NFTlNPUlNfQU1DNjgyMSBpcyBu
b3Qgc2V0CkNPTkZJR19TRU5TT1JTX0lOQTIwOT15CkNPTkZJR19TRU5TT1JTX0lOQTJYWD15
CkNPTkZJR19TRU5TT1JTX0lOQTIzOD15CiMgQ09ORklHX1NFTlNPUlNfSU5BMzIyMSBpcyBu
b3Qgc2V0CkNPTkZJR19TRU5TT1JTX1NQRDUxMTg9eQojIENPTkZJR19TRU5TT1JTX1NQRDUx
MThfREVURUNUIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19UQzc0IGlzIG5vdCBzZXQK
Q09ORklHX1NFTlNPUlNfVEhNQzUwPXkKQ09ORklHX1NFTlNPUlNfVE1QMTAyPXkKQ09ORklH
X1NFTlNPUlNfVE1QMTAzPXkKIyBDT05GSUdfU0VOU09SU19UTVAxMDggaXMgbm90IHNldAoj
IENPTkZJR19TRU5TT1JTX1RNUDQwMSBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX1RNUDQy
MT15CiMgQ09ORklHX1NFTlNPUlNfVE1QNDY0IGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNf
VE1QNTEzPXkKIyBDT05GSUdfU0VOU09SU19WSUFfQ1BVVEVNUCBpcyBub3Qgc2V0CkNPTkZJ
R19TRU5TT1JTX1ZUMTIxMT15CiMgQ09ORklHX1NFTlNPUlNfVzgzNzczRyBpcyBub3Qgc2V0
CiMgQ09ORklHX1NFTlNPUlNfVzgzNzgxRCBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX1c4
Mzc5MUQ9eQpDT05GSUdfU0VOU09SU19XODM3OTJEPXkKIyBDT05GSUdfU0VOU09SU19XODM3
OTMgaXMgbm90IHNldApDT05GSUdfU0VOU09SU19XODM3OTU9eQpDT05GSUdfU0VOU09SU19X
ODM3OTVfRkFOQ1RSTD15CiMgQ09ORklHX1NFTlNPUlNfVzgzTDc4NVRTIGlzIG5vdCBzZXQK
IyBDT05GSUdfU0VOU09SU19XODNMNzg2TkcgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JT
X1c4MzYyN0hGIGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfVzgzNjI3RUhGPXkKIyBDT05G
SUdfU0VOU09SU19XTTgzMVggaXMgbm90IHNldApDT05GSUdfU0VOU09SU19XTTgzNTA9eQpD
T05GSUdfU0VOU09SU19YR0VORT15CgojCiMgQUNQSSBkcml2ZXJzCiMKIyBDT05GSUdfU0VO
U09SU19BQ1BJX1BPV0VSIGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfQVRLMDExMD15CkNP
TkZJR19TRU5TT1JTX0FTVVNfV01JPXkKQ09ORklHX1NFTlNPUlNfQVNVU19FQz15CiMgQ09O
RklHX1NFTlNPUlNfSFBfV01JIGlzIG5vdCBzZXQKQ09ORklHX1RIRVJNQUw9eQpDT05GSUdf
VEhFUk1BTF9ORVRMSU5LPXkKIyBDT05GSUdfVEhFUk1BTF9TVEFUSVNUSUNTIGlzIG5vdCBz
ZXQKQ09ORklHX1RIRVJNQUxfRU1FUkdFTkNZX1BPV0VST0ZGX0RFTEFZX01TPTAKQ09ORklH
X1RIRVJNQUxfSFdNT049eQpDT05GSUdfVEhFUk1BTF9PRj15CkNPTkZJR19USEVSTUFMX0RF
RkFVTFRfR09WX1NURVBfV0lTRT15CiMgQ09ORklHX1RIRVJNQUxfREVGQVVMVF9HT1ZfRkFJ
Ul9TSEFSRSBpcyBub3Qgc2V0CiMgQ09ORklHX1RIRVJNQUxfREVGQVVMVF9HT1ZfVVNFUl9T
UEFDRSBpcyBub3Qgc2V0CiMgQ09ORklHX1RIRVJNQUxfREVGQVVMVF9HT1ZfQkFOR19CQU5H
IGlzIG5vdCBzZXQKIyBDT05GSUdfVEhFUk1BTF9HT1ZfRkFJUl9TSEFSRSBpcyBub3Qgc2V0
CkNPTkZJR19USEVSTUFMX0dPVl9TVEVQX1dJU0U9eQpDT05GSUdfVEhFUk1BTF9HT1ZfQkFO
R19CQU5HPXkKIyBDT05GSUdfVEhFUk1BTF9HT1ZfVVNFUl9TUEFDRSBpcyBub3Qgc2V0CkNP
TkZJR19DUFVfVEhFUk1BTD15CiMgQ09ORklHX0NQVV9JRExFX1RIRVJNQUwgaXMgbm90IHNl
dApDT05GSUdfREVWRlJFUV9USEVSTUFMPXkKQ09ORklHX1RIRVJNQUxfRU1VTEFUSU9OPXkK
Q09ORklHX1RIRVJNQUxfTU1JTz15CkNPTkZJR19EQTkwNjJfVEhFUk1BTD15CgojCiMgSW50
ZWwgdGhlcm1hbCBkcml2ZXJzCiMKIyBDT05GSUdfSU5URUxfUE9XRVJDTEFNUCBpcyBub3Qg
c2V0CkNPTkZJR19YODZfVEhFUk1BTF9WRUNUT1I9eQpDT05GSUdfSU5URUxfVENDPXkKIyBD
T05GSUdfWDg2X1BLR19URU1QX1RIRVJNQUwgaXMgbm90IHNldAoKIwojIEFDUEkgSU5UMzQw
WCB0aGVybWFsIGRyaXZlcnMKIwojIGVuZCBvZiBBQ1BJIElOVDM0MFggdGhlcm1hbCBkcml2
ZXJzCgojIENPTkZJR19JTlRFTF9CWFRfUE1JQ19USEVSTUFMIGlzIG5vdCBzZXQKQ09ORklH
X0lOVEVMX1RDQ19DT09MSU5HPXkKQ09ORklHX0lOVEVMX0hGSV9USEVSTUFMPXkKIyBlbmQg
b2YgSW50ZWwgdGhlcm1hbCBkcml2ZXJzCgpDT05GSUdfR0VORVJJQ19BRENfVEhFUk1BTD15
CiMgQ09ORklHX1dBVENIRE9HIGlzIG5vdCBzZXQKQ09ORklHX1NTQl9QT1NTSUJMRT15CkNP
TkZJR19TU0I9eQpDT05GSUdfU1NCX1NESU9IT1NUX1BPU1NJQkxFPXkKIyBDT05GSUdfU1NC
X1NESU9IT1NUIGlzIG5vdCBzZXQKQ09ORklHX1NTQl9EUklWRVJfR1BJTz15CkNPTkZJR19C
Q01BX1BPU1NJQkxFPXkKQ09ORklHX0JDTUE9eQojIENPTkZJR19CQ01BX0hPU1RfU09DIGlz
IG5vdCBzZXQKIyBDT05GSUdfQkNNQV9EUklWRVJfR01BQ19DTU4gaXMgbm90IHNldAojIENP
TkZJR19CQ01BX0RSSVZFUl9HUElPIGlzIG5vdCBzZXQKIyBDT05GSUdfQkNNQV9ERUJVRyBp
cyBub3Qgc2V0CgojCiMgTXVsdGlmdW5jdGlvbiBkZXZpY2UgZHJpdmVycwojCkNPTkZJR19N
RkRfQ09SRT15CkNPTkZJR19NRkRfQUNUODk0NUE9eQpDT05GSUdfTUZEX0FTMzcxMT15CiMg
Q09ORklHX01GRF9TTVBSTyBpcyBub3Qgc2V0CiMgQ09ORklHX01GRF9BUzM3MjIgaXMgbm90
IHNldApDT05GSUdfUE1JQ19BRFA1NTIwPXkKIyBDT05GSUdfTUZEX0FBVDI4NzBfQ09SRSBp
cyBub3Qgc2V0CkNPTkZJR19NRkRfQVRNRUxfRkxFWENPTT15CkNPTkZJR19NRkRfQVRNRUxf
SExDREM9eQpDT05GSUdfTUZEX0JDTTU5MFhYPXkKQ09ORklHX01GRF9CRDk1NzFNV1Y9eQpD
T05GSUdfTUZEX0FYUDIwWD15CkNPTkZJR19NRkRfQVhQMjBYX0kyQz15CkNPTkZJR19NRkRf
Q1JPU19FQ19ERVY9eQpDT05GSUdfTUZEX0NTNDJMNDM9eQojIENPTkZJR19NRkRfQ1M0Mkw0
M19JMkMgaXMgbm90IHNldApDT05GSUdfTUZEX0NTNDJMNDNfU0RXPXkKIyBDT05GSUdfTUZE
X01BREVSQSBpcyBub3Qgc2V0CiMgQ09ORklHX01GRF9NQVg1OTcwIGlzIG5vdCBzZXQKIyBD
T05GSUdfUE1JQ19EQTkwM1ggaXMgbm90IHNldAojIENPTkZJR19NRkRfREE5MDUyX0kyQyBp
cyBub3Qgc2V0CiMgQ09ORklHX01GRF9EQTkwNTUgaXMgbm90IHNldApDT05GSUdfTUZEX0RB
OTA2Mj15CkNPTkZJR19NRkRfREE5MDYzPXkKQ09ORklHX01GRF9EQTkxNTA9eQpDT05GSUdf
TUZEX0dBVEVXT1JLU19HU0M9eQpDT05GSUdfTUZEX01DMTNYWFg9eQpDT05GSUdfTUZEX01D
MTNYWFhfSTJDPXkKQ09ORklHX01GRF9NUDI2Mjk9eQojIENPTkZJR19NRkRfSEk2NDIxX1BN
SUMgaXMgbm90IHNldApDT05GSUdfSU5URUxfU09DX1BNSUNfQlhUV0M9eQpDT05GSUdfSU5U
RUxfU09DX1BNSUNfTVJGTEQ9eQpDT05GSUdfTUZEX0lOVEVMX0xQU1M9eQpDT05GSUdfTUZE
X0lOVEVMX0xQU1NfQUNQST15CkNPTkZJR19NRkRfSU5URUxfUE1DX0JYVD15CiMgQ09ORklH
X01GRF9JUVM2MlggaXMgbm90IHNldApDT05GSUdfTUZEX0tFTVBMRD15CkNPTkZJR19NRkRf
ODhQTTgwMD15CkNPTkZJR19NRkRfODhQTTgwNT15CiMgQ09ORklHX01GRF84OFBNODYwWCBp
cyBub3Qgc2V0CkNPTkZJR19NRkRfTUFYMTQ1Nzc9eQpDT05GSUdfTUZEX01BWDc3NTQxPXkK
IyBDT05GSUdfTUZEX01BWDc3NjIwIGlzIG5vdCBzZXQKQ09ORklHX01GRF9NQVg3NzY1MD15
CkNPTkZJR19NRkRfTUFYNzc2ODY9eQpDT05GSUdfTUZEX01BWDc3NjkzPXkKQ09ORklHX01G
RF9NQVg3NzcxND15CkNPTkZJR19NRkRfTUFYNzc4NDM9eQpDT05GSUdfTUZEX01BWDg5MDc9
eQojIENPTkZJR19NRkRfTUFYODkyNSBpcyBub3Qgc2V0CiMgQ09ORklHX01GRF9NQVg4OTk3
IGlzIG5vdCBzZXQKIyBDT05GSUdfTUZEX01BWDg5OTggaXMgbm90IHNldAojIENPTkZJR19N
RkRfTVQ2MzYwIGlzIG5vdCBzZXQKQ09ORklHX01GRF9NVDYzNzA9eQpDT05GSUdfTUZEX01U
NjM5Nz15CkNPTkZJR19NRkRfTUVORjIxQk1DPXkKQ09ORklHX01GRF9OVFhFQz15CkNPTkZJ
R19NRkRfUkVUVT15CkNPTkZJR19NRkRfUENGNTA2MzM9eQpDT05GSUdfUENGNTA2MzNfQURD
PXkKQ09ORklHX1BDRjUwNjMzX0dQSU89eQpDT05GSUdfTUZEX1NZNzYzNkE9eQpDT05GSUdf
TUZEX1JUNDgzMT15CkNPTkZJR19NRkRfUlQ1MDMzPXkKQ09ORklHX01GRF9SVDUxMjA9eQpD
T05GSUdfTUZEX1JDNVQ1ODM9eQojIENPTkZJR19NRkRfUks4WFhfSTJDIGlzIG5vdCBzZXQK
Q09ORklHX01GRF9STjVUNjE4PXkKQ09ORklHX01GRF9TRUNfQ09SRT15CkNPTkZJR19NRkRf
U0k0NzZYX0NPUkU9eQpDT05GSUdfTUZEX1NJTVBMRV9NRkRfSTJDPXkKQ09ORklHX01GRF9T
TTUwMT15CiMgQ09ORklHX01GRF9TTTUwMV9HUElPIGlzIG5vdCBzZXQKIyBDT05GSUdfTUZE
X1NLWTgxNDUyIGlzIG5vdCBzZXQKQ09ORklHX01GRF9TVE1QRT15CgojCiMgU1RNaWNyb2Vs
ZWN0cm9uaWNzIFNUTVBFIEludGVyZmFjZSBEcml2ZXJzCiMKIyBDT05GSUdfU1RNUEVfSTJD
IGlzIG5vdCBzZXQKIyBlbmQgb2YgU1RNaWNyb2VsZWN0cm9uaWNzIFNUTVBFIEludGVyZmFj
ZSBEcml2ZXJzCgpDT05GSUdfTUZEX1NZU0NPTj15CkNPTkZJR19NRkRfTFAzOTQzPXkKQ09O
RklHX01GRF9MUDg3ODg9eQpDT05GSUdfTUZEX1RJX0xNVT15CkNPTkZJR19NRkRfUEFMTUFT
PXkKQ09ORklHX1RQUzYxMDVYPXkKQ09ORklHX1RQUzY1MDEwPXkKIyBDT05GSUdfVFBTNjUw
N1ggaXMgbm90IHNldApDT05GSUdfTUZEX1RQUzY1MDg2PXkKQ09ORklHX01GRF9UUFM2NTA5
MD15CkNPTkZJR19NRkRfVFBTNjUyMTc9eQojIENPTkZJR19NRkRfVElfTFA4NzNYIGlzIG5v
dCBzZXQKQ09ORklHX01GRF9USV9MUDg3NTY1PXkKQ09ORklHX01GRF9UUFM2NTIxOD15CkNP
TkZJR19NRkRfVFBTNjUyMTk9eQpDT05GSUdfTUZEX1RQUzY1ODZYPXkKQ09ORklHX01GRF9U
UFM2NTkxMD15CkNPTkZJR19NRkRfVFBTNjU5MTI9eQpDT05GSUdfTUZEX1RQUzY1OTEyX0ky
Qz15CkNPTkZJR19NRkRfVFBTNjU5ND15CkNPTkZJR19NRkRfVFBTNjU5NF9JMkM9eQpDT05G
SUdfVFdMNDAzMF9DT1JFPXkKQ09ORklHX01GRF9UV0w0MDMwX0FVRElPPXkKIyBDT05GSUdf
VFdMNjA0MF9DT1JFIGlzIG5vdCBzZXQKQ09ORklHX01GRF9XTDEyNzNfQ09SRT15CiMgQ09O
RklHX01GRF9MTTM1MzMgaXMgbm90IHNldApDT05GSUdfTUZEX1RDMzU4OVg9eQojIENPTkZJ
R19NRkRfVFFNWDg2IGlzIG5vdCBzZXQKIyBDT05GSUdfTUZEX0xPQ0hOQUdBUiBpcyBub3Qg
c2V0CkNPTkZJR19NRkRfQVJJWk9OQT15CkNPTkZJR19NRkRfQVJJWk9OQV9JMkM9eQpDT05G
SUdfTUZEX0NTNDdMMjQ9eQpDT05GSUdfTUZEX1dNNTEwMj15CkNPTkZJR19NRkRfV001MTEw
PXkKIyBDT05GSUdfTUZEX1dNODk5NyBpcyBub3Qgc2V0CiMgQ09ORklHX01GRF9XTTg5OTgg
aXMgbm90IHNldApDT05GSUdfTUZEX1dNODQwMD15CkNPTkZJR19NRkRfV004MzFYPXkKQ09O
RklHX01GRF9XTTgzMVhfSTJDPXkKQ09ORklHX01GRF9XTTgzNTA9eQpDT05GSUdfTUZEX1dN
ODM1MF9JMkM9eQpDT05GSUdfTUZEX1dNODk5ND15CkNPTkZJR19NRkRfUk9ITV9CRDcxOFhY
PXkKQ09ORklHX01GRF9ST0hNX0JENzE4Mjg9eQpDT05GSUdfTUZEX1JPSE1fQkQ5NTdYTVVG
PXkKIyBDT05GSUdfTUZEX1NUUE1JQzEgaXMgbm90IHNldApDT05GSUdfTUZEX1NUTUZYPXkK
IyBDT05GSUdfTUZEX1dDRDkzNFggaXMgbm90IHNldAojIENPTkZJR19NRkRfQVRDMjYwWF9J
MkMgaXMgbm90IHNldApDT05GSUdfTUZEX1FDT01fUE04MDA4PXkKIyBDT05GSUdfTUZEX1JT
TVVfSTJDIGlzIG5vdCBzZXQKIyBlbmQgb2YgTXVsdGlmdW5jdGlvbiBkZXZpY2UgZHJpdmVy
cwoKQ09ORklHX1JFR1VMQVRPUj15CkNPTkZJR19SRUdVTEFUT1JfREVCVUc9eQpDT05GSUdf
UkVHVUxBVE9SX0ZJWEVEX1ZPTFRBR0U9eQojIENPTkZJR19SRUdVTEFUT1JfVklSVFVBTF9D
T05TVU1FUiBpcyBub3Qgc2V0CkNPTkZJR19SRUdVTEFUT1JfVVNFUlNQQUNFX0NPTlNVTUVS
PXkKIyBDT05GSUdfUkVHVUxBVE9SX05FVExJTktfRVZFTlRTIGlzIG5vdCBzZXQKIyBDT05G
SUdfUkVHVUxBVE9SXzg4UEc4NlggaXMgbm90IHNldApDT05GSUdfUkVHVUxBVE9SXzg4UE04
MDA9eQpDT05GSUdfUkVHVUxBVE9SX0FDVDg4NjU9eQpDT05GSUdfUkVHVUxBVE9SX0FDVDg5
NDVBPXkKIyBDT05GSUdfUkVHVUxBVE9SX0FENTM5OCBpcyBub3Qgc2V0CkNPTkZJR19SRUdV
TEFUT1JfQVMzNzExPXkKIyBDT05GSUdfUkVHVUxBVE9SX0FXMzc1MDMgaXMgbm90IHNldAoj
IENPTkZJR19SRUdVTEFUT1JfQVhQMjBYIGlzIG5vdCBzZXQKQ09ORklHX1JFR1VMQVRPUl9C
Q001OTBYWD15CkNPTkZJR19SRUdVTEFUT1JfQkQ3MTgxNT15CkNPTkZJR19SRUdVTEFUT1Jf
QkQ3MTgyOD15CiMgQ09ORklHX1JFR1VMQVRPUl9CRDcxOFhYIGlzIG5vdCBzZXQKQ09ORklH
X1JFR1VMQVRPUl9CRDk1NzFNV1Y9eQpDT05GSUdfUkVHVUxBVE9SX0JEOTU3WE1VRj15CiMg
Q09ORklHX1JFR1VMQVRPUl9DUk9TX0VDIGlzIG5vdCBzZXQKIyBDT05GSUdfUkVHVUxBVE9S
X0RBOTA2MiBpcyBub3Qgc2V0CiMgQ09ORklHX1JFR1VMQVRPUl9EQTkwNjMgaXMgbm90IHNl
dApDT05GSUdfUkVHVUxBVE9SX0RBOTEyMT15CiMgQ09ORklHX1JFR1VMQVRPUl9EQTkyMTAg
aXMgbm90IHNldApDT05GSUdfUkVHVUxBVE9SX0RBOTIxMT15CkNPTkZJR19SRUdVTEFUT1Jf
RkFONTM1NTU9eQojIENPTkZJR19SRUdVTEFUT1JfRkFONTM4ODAgaXMgbm90IHNldAojIENP
TkZJR19SRUdVTEFUT1JfR1BJTyBpcyBub3Qgc2V0CiMgQ09ORklHX1JFR1VMQVRPUl9JU0w5
MzA1IGlzIG5vdCBzZXQKQ09ORklHX1JFR1VMQVRPUl9JU0w2MjcxQT15CiMgQ09ORklHX1JF
R1VMQVRPUl9MTTM2M1ggaXMgbm90IHNldApDT05GSUdfUkVHVUxBVE9SX0xQMzk3MT15CiMg
Q09ORklHX1JFR1VMQVRPUl9MUDM5NzIgaXMgbm90IHNldAojIENPTkZJR19SRUdVTEFUT1Jf
TFA4NzJYIGlzIG5vdCBzZXQKIyBDT05GSUdfUkVHVUxBVE9SX0xQODc1NSBpcyBub3Qgc2V0
CkNPTkZJR19SRUdVTEFUT1JfTFA4NzU2NT15CkNPTkZJR19SRUdVTEFUT1JfTFA4Nzg4PXkK
Q09ORklHX1JFR1VMQVRPUl9MVEMzNTg5PXkKQ09ORklHX1JFR1VMQVRPUl9MVEMzNjc2PXkK
IyBDT05GSUdfUkVHVUxBVE9SX01BWDE0NTc3IGlzIG5vdCBzZXQKQ09ORklHX1JFR1VMQVRP
Ul9NQVgxNTg2PXkKIyBDT05GSUdfUkVHVUxBVE9SX01BWDc3NTAzIGlzIG5vdCBzZXQKQ09O
RklHX1JFR1VMQVRPUl9NQVg3NzU0MT15CkNPTkZJR19SRUdVTEFUT1JfTUFYNzc2NTA9eQpD
T05GSUdfUkVHVUxBVE9SX01BWDc3ODU3PXkKIyBDT05GSUdfUkVHVUxBVE9SX01BWDg2NDkg
aXMgbm90IHNldApDT05GSUdfUkVHVUxBVE9SX01BWDg2NjA9eQpDT05GSUdfUkVHVUxBVE9S
X01BWDg4OTM9eQpDT05GSUdfUkVHVUxBVE9SX01BWDg5MDc9eQpDT05GSUdfUkVHVUxBVE9S
X01BWDg5NTI9eQpDT05GSUdfUkVHVUxBVE9SX01BWDg5NzM9eQojIENPTkZJR19SRUdVTEFU
T1JfTUFYMjAwODYgaXMgbm90IHNldApDT05GSUdfUkVHVUxBVE9SX01BWDIwNDExPXkKQ09O
RklHX1JFR1VMQVRPUl9NQVg3NzY4Nj15CkNPTkZJR19SRUdVTEFUT1JfTUFYNzc2OTM9eQpD
T05GSUdfUkVHVUxBVE9SX01BWDc3ODAyPXkKQ09ORklHX1JFR1VMQVRPUl9NQVg3NzgyNj15
CkNPTkZJR19SRUdVTEFUT1JfTUMxM1hYWF9DT1JFPXkKQ09ORklHX1JFR1VMQVRPUl9NQzEz
NzgzPXkKIyBDT05GSUdfUkVHVUxBVE9SX01DMTM4OTIgaXMgbm90IHNldApDT05GSUdfUkVH
VUxBVE9SX01DUDE2NTAyPXkKQ09ORklHX1JFR1VMQVRPUl9NUDU0MTY9eQpDT05GSUdfUkVH
VUxBVE9SX01QODg1OT15CkNPTkZJR19SRUdVTEFUT1JfTVA4ODZYPXkKQ09ORklHX1JFR1VM
QVRPUl9NUFE3OTIwPXkKQ09ORklHX1JFR1VMQVRPUl9NVDYzMTE9eQojIENPTkZJR19SRUdV
TEFUT1JfTVQ2MzIzIGlzIG5vdCBzZXQKQ09ORklHX1JFR1VMQVRPUl9NVDYzMzE9eQpDT05G
SUdfUkVHVUxBVE9SX01UNjMzMj15CkNPTkZJR19SRUdVTEFUT1JfTVQ2MzU3PXkKQ09ORklH
X1JFR1VMQVRPUl9NVDYzNTg9eQojIENPTkZJR19SRUdVTEFUT1JfTVQ2MzU5IGlzIG5vdCBz
ZXQKQ09ORklHX1JFR1VMQVRPUl9NVDYzNzA9eQpDT05GSUdfUkVHVUxBVE9SX01UNjM5Nz15
CkNPTkZJR19SRUdVTEFUT1JfUEFMTUFTPXkKQ09ORklHX1JFR1VMQVRPUl9QQ0E5NDUwPXkK
IyBDT05GSUdfUkVHVUxBVE9SX1BDRjUwNjMzIGlzIG5vdCBzZXQKIyBDT05GSUdfUkVHVUxB
VE9SX1BGOFgwMCBpcyBub3Qgc2V0CkNPTkZJR19SRUdVTEFUT1JfUEZVWkUxMDA9eQpDT05G
SUdfUkVHVUxBVE9SX1BWODgwNjA9eQojIENPTkZJR19SRUdVTEFUT1JfUFY4ODA4MCBpcyBu
b3Qgc2V0CiMgQ09ORklHX1JFR1VMQVRPUl9QVjg4MDkwIGlzIG5vdCBzZXQKQ09ORklHX1JF
R1VMQVRPUl9QV009eQpDT05GSUdfUkVHVUxBVE9SX1FDT01fUE04MDA4PXkKQ09ORklHX1JF
R1VMQVRPUl9SQUEyMTUzMDA9eQpDT05GSUdfUkVHVUxBVE9SX1JBU1BCRVJSWVBJX1RPVUNI
U0NSRUVOX0FUVElOWT15CiMgQ09ORklHX1JFR1VMQVRPUl9SQzVUNTgzIGlzIG5vdCBzZXQK
Q09ORklHX1JFR1VMQVRPUl9STjVUNjE4PXkKQ09ORklHX1JFR1VMQVRPUl9ST0hNPXkKQ09O
RklHX1JFR1VMQVRPUl9SVDQ4MDE9eQpDT05GSUdfUkVHVUxBVE9SX1JUNDgwMz15CkNPTkZJ
R19SRUdVTEFUT1JfUlQ0ODMxPXkKQ09ORklHX1JFR1VMQVRPUl9SVDUwMzM9eQpDT05GSUdf
UkVHVUxBVE9SX1JUNTEyMD15CkNPTkZJR19SRUdVTEFUT1JfUlQ1MTkwQT15CkNPTkZJR19S
RUdVTEFUT1JfUlQ1NzM5PXkKIyBDT05GSUdfUkVHVUxBVE9SX1JUNTc1OSBpcyBub3Qgc2V0
CkNPTkZJR19SRUdVTEFUT1JfUlQ2MTYwPXkKIyBDT05GSUdfUkVHVUxBVE9SX1JUNjE5MCBp
cyBub3Qgc2V0CkNPTkZJR19SRUdVTEFUT1JfUlQ2MjQ1PXkKIyBDT05GSUdfUkVHVUxBVE9S
X1JUUTIxMzQgaXMgbm90IHNldAojIENPTkZJR19SRUdVTEFUT1JfUlRNVjIwIGlzIG5vdCBz
ZXQKIyBDT05GSUdfUkVHVUxBVE9SX1JUUTY3NTIgaXMgbm90IHNldApDT05GSUdfUkVHVUxB
VE9SX1JUUTIyMDg9eQpDT05GSUdfUkVHVUxBVE9SX1MyTVBBMDE9eQpDT05GSUdfUkVHVUxB
VE9SX1MyTVBTMTE9eQpDT05GSUdfUkVHVUxBVE9SX1M1TTg3Njc9eQpDT05GSUdfUkVHVUxB
VE9SX1NMRzUxMDAwPXkKIyBDT05GSUdfUkVHVUxBVE9SX1NZNzYzNkEgaXMgbm90IHNldApD
T05GSUdfUkVHVUxBVE9SX1NZODEwNkE9eQojIENPTkZJR19SRUdVTEFUT1JfU1k4ODI0WCBp
cyBub3Qgc2V0CiMgQ09ORklHX1JFR1VMQVRPUl9TWTg4MjdOIGlzIG5vdCBzZXQKIyBDT05G
SUdfUkVHVUxBVE9SX1RQUzUxNjMyIGlzIG5vdCBzZXQKIyBDT05GSUdfUkVHVUxBVE9SX1RQ
UzYxMDVYIGlzIG5vdCBzZXQKQ09ORklHX1JFR1VMQVRPUl9UUFM2MjM2MD15CiMgQ09ORklH
X1JFR1VMQVRPUl9UUFM2Mjg2WCBpcyBub3Qgc2V0CkNPTkZJR19SRUdVTEFUT1JfVFBTNjI4
N1g9eQpDT05GSUdfUkVHVUxBVE9SX1RQUzY1MDIzPXkKIyBDT05GSUdfUkVHVUxBVE9SX1RQ
UzY1MDdYIGlzIG5vdCBzZXQKQ09ORklHX1JFR1VMQVRPUl9UUFM2NTA4Nj15CiMgQ09ORklH
X1JFR1VMQVRPUl9UUFM2NTA5MCBpcyBub3Qgc2V0CkNPTkZJR19SRUdVTEFUT1JfVFBTNjUx
MzI9eQpDT05GSUdfUkVHVUxBVE9SX1RQUzY1MjE3PXkKQ09ORklHX1JFR1VMQVRPUl9UUFM2
NTIxOD15CkNPTkZJR19SRUdVTEFUT1JfVFBTNjUyMTk9eQpDT05GSUdfUkVHVUxBVE9SX1RQ
UzY1OTQ9eQpDT05GSUdfUkVHVUxBVE9SX1RQUzY1ODZYPXkKQ09ORklHX1JFR1VMQVRPUl9U
UFM2NTkxMD15CkNPTkZJR19SRUdVTEFUT1JfVFBTNjU5MTI9eQojIENPTkZJR19SRUdVTEFU
T1JfVFBTNjg0NzAgaXMgbm90IHNldApDT05GSUdfUkVHVUxBVE9SX1RXTDQwMzA9eQojIENP
TkZJR19SRUdVTEFUT1JfVkNUUkwgaXMgbm90IHNldApDT05GSUdfUkVHVUxBVE9SX1dNODMx
WD15CkNPTkZJR19SRUdVTEFUT1JfV004MzUwPXkKIyBDT05GSUdfUkVHVUxBVE9SX1dNODQw
MCBpcyBub3Qgc2V0CkNPTkZJR19SRUdVTEFUT1JfV004OTk0PXkKQ09ORklHX1JDX0NPUkU9
eQojIENPTkZJR19CUEZfTElSQ19NT0RFMiBpcyBub3Qgc2V0CkNPTkZJR19MSVJDPXkKQ09O
RklHX1JDX01BUD15CiMgQ09ORklHX1JDX0RFQ09ERVJTIGlzIG5vdCBzZXQKQ09ORklHX1JD
X0RFVklDRVM9eQojIENPTkZJR19JUl9FTkUgaXMgbm90IHNldApDT05GSUdfSVJfRklOVEVL
PXkKQ09ORklHX0lSX0dQSU9fQ0lSPXkKQ09ORklHX0lSX0dQSU9fVFg9eQpDT05GSUdfSVJf
SElYNUhEMj15CkNPTkZJR19JUl9JVEVfQ0lSPXkKQ09ORklHX0lSX05VVk9UT049eQpDT05G
SUdfSVJfU0VSSUFMPXkKQ09ORklHX0lSX1NFUklBTF9UUkFOU01JVFRFUj15CiMgQ09ORklH
X0lSX1dJTkJPTkRfQ0lSIGlzIG5vdCBzZXQKQ09ORklHX1JDX0xPT1BCQUNLPXkKQ09ORklH
X0NFQ19DT1JFPXkKQ09ORklHX0NFQ19OT1RJRklFUj15CgojCiMgQ0VDIHN1cHBvcnQKIwpD
T05GSUdfTUVESUFfQ0VDX1JDPXkKQ09ORklHX01FRElBX0NFQ19TVVBQT1JUPXkKQ09ORklH
X0NFQ19DSDczMjI9eQojIENPTkZJR19DRUNfQ1JPU19FQyBpcyBub3Qgc2V0CiMgZW5kIG9m
IENFQyBzdXBwb3J0CgpDT05GSUdfTUVESUFfU1VQUE9SVD15CiMgQ09ORklHX01FRElBX1NV
UFBPUlRfRklMVEVSIGlzIG5vdCBzZXQKQ09ORklHX01FRElBX1NVQkRSVl9BVVRPU0VMRUNU
PXkKCiMKIyBNZWRpYSBkZXZpY2UgdHlwZXMKIwpDT05GSUdfTUVESUFfQ0FNRVJBX1NVUFBP
UlQ9eQpDT05GSUdfTUVESUFfQU5BTE9HX1RWX1NVUFBPUlQ9eQpDT05GSUdfTUVESUFfRElH
SVRBTF9UVl9TVVBQT1JUPXkKQ09ORklHX01FRElBX1JBRElPX1NVUFBPUlQ9eQpDT05GSUdf
TUVESUFfU0RSX1NVUFBPUlQ9eQpDT05GSUdfTUVESUFfUExBVEZPUk1fU1VQUE9SVD15CkNP
TkZJR19NRURJQV9URVNUX1NVUFBPUlQ9eQojIGVuZCBvZiBNZWRpYSBkZXZpY2UgdHlwZXMK
CiMKIyBNZWRpYSBjb3JlIHN1cHBvcnQKIwojIENPTkZJR19WSURFT19ERVYgaXMgbm90IHNl
dApDT05GSUdfTUVESUFfQ09OVFJPTExFUj15CkNPTkZJR19EVkJfQ09SRT15CiMgZW5kIG9m
IE1lZGlhIGNvcmUgc3VwcG9ydAoKIwojIE1lZGlhIGNvbnRyb2xsZXIgb3B0aW9ucwojCkNP
TkZJR19NRURJQV9DT05UUk9MTEVSX0RWQj15CiMgZW5kIG9mIE1lZGlhIGNvbnRyb2xsZXIg
b3B0aW9ucwoKIwojIERpZ2l0YWwgVFYgb3B0aW9ucwojCkNPTkZJR19EVkJfTUFYX0FEQVBU
RVJTPTE2CiMgQ09ORklHX0RWQl9EWU5BTUlDX01JTk9SUyBpcyBub3Qgc2V0CiMgQ09ORklH
X0RWQl9ERU1VWF9TRUNUSU9OX0xPU1NfTE9HIGlzIG5vdCBzZXQKQ09ORklHX0RWQl9VTEVf
REVCVUc9eQojIGVuZCBvZiBEaWdpdGFsIFRWIG9wdGlvbnMKCiMKIyBNZWRpYSBkcml2ZXJz
CiMKCiMKIyBNZWRpYSBkcml2ZXJzCiMKIyBDT05GSUdfTUVESUFfUExBVEZPUk1fRFJJVkVS
UyBpcyBub3Qgc2V0CgojCiMgTU1DL1NESU8gRFZCIGFkYXB0ZXJzCiMKQ09ORklHX1NNU19T
RElPX0RSVj15CiMgQ09ORklHX0RWQl9URVNUX0RSSVZFUlMgaXMgbm90IHNldApDT05GSUdf
TUVESUFfQ09NTU9OX09QVElPTlM9eQoKIwojIGNvbW1vbiBkcml2ZXIgb3B0aW9ucwojCkNP
TkZJR19TTVNfU0lBTk9fTURUVj15CkNPTkZJR19TTVNfU0lBTk9fUkM9eQojIGVuZCBvZiBN
ZWRpYSBkcml2ZXJzCgpDT05GSUdfTUVESUFfSElERV9BTkNJTExBUllfU1VCRFJWPXkKCiMK
IyBNZWRpYSBhbmNpbGxhcnkgZHJpdmVycwojCkNPTkZJR19NRURJQV9UVU5FUj15CgojCiMg
VHVuZXIgZHJpdmVycyBhdXRvLXNlbGVjdGVkIGJ5ICdBdXRvc2VsZWN0IGFuY2lsbGFyeSBk
cml2ZXJzJwojCkNPTkZJR19NRURJQV9UVU5FUl9NQzQ0UzgwMz15CkNPTkZJR19NRURJQV9U
VU5FUl9NVDIwWFg9eQpDT05GSUdfTUVESUFfVFVORVJfU0lNUExFPXkKQ09ORklHX01FRElB
X1RVTkVSX1REQTE4MjcxPXkKQ09ORklHX01FRElBX1RVTkVSX1REQTgyN1g9eQpDT05GSUdf
TUVESUFfVFVORVJfVERBODI5MD15CkNPTkZJR19NRURJQV9UVU5FUl9UREE5ODg3PXkKQ09O
RklHX01FRElBX1RVTkVSX1RFQTU3NjE9eQpDT05GSUdfTUVESUFfVFVORVJfVEVBNTc2Nz15
CkNPTkZJR19NRURJQV9UVU5FUl9YQzIwMjg9eQpDT05GSUdfTUVESUFfVFVORVJfWEM0MDAw
PXkKQ09ORklHX01FRElBX1RVTkVSX1hDNTAwMD15CgojCiMgRFZCIEZyb250ZW5kIGRyaXZl
cnMgYXV0by1zZWxlY3RlZCBieSAnQXV0b3NlbGVjdCBhbmNpbGxhcnkgZHJpdmVycycKIwoK
IwojIE11bHRpc3RhbmRhcmQgKHNhdGVsbGl0ZSkgZnJvbnRlbmRzCiMKCiMKIyBNdWx0aXN0
YW5kYXJkIChjYWJsZSArIHRlcnJlc3RyaWFsKSBmcm9udGVuZHMKIwoKIwojIERWQi1TIChz
YXRlbGxpdGUpIGZyb250ZW5kcwojCgojCiMgRFZCLVQgKHRlcnJlc3RyaWFsKSBmcm9udGVu
ZHMKIwoKIwojIERWQi1DIChjYWJsZSkgZnJvbnRlbmRzCiMKCiMKIyBBVFNDIChOb3J0aCBB
bWVyaWNhbi9Lb3JlYW4gVGVycmVzdHJpYWwvQ2FibGUgRFRWKSBmcm9udGVuZHMKIwoKIwoj
IElTREItVCAodGVycmVzdHJpYWwpIGZyb250ZW5kcwojCgojCiMgSVNEQi1TIChzYXRlbGxp
dGUpICYgSVNEQi1UICh0ZXJyZXN0cmlhbCkgZnJvbnRlbmRzCiMKCiMKIyBEaWdpdGFsIHRl
cnJlc3RyaWFsIG9ubHkgdHVuZXJzL1BMTAojCgojCiMgU0VDIGNvbnRyb2wgZGV2aWNlcyBm
b3IgRFZCLVMKIwoKIwojIENvbW1vbiBJbnRlcmZhY2UgKEVONTAyMjEpIGNvbnRyb2xsZXIg
ZHJpdmVycwojCgojCiMgVG9vbHMgdG8gZGV2ZWxvcCBuZXcgZnJvbnRlbmRzCiMKQ09ORklH
X0RWQl9EVU1NWV9GRT15CiMgZW5kIG9mIE1lZGlhIGFuY2lsbGFyeSBkcml2ZXJzCgojCiMg
R3JhcGhpY3Mgc3VwcG9ydAojCkNPTkZJR19BUEVSVFVSRV9IRUxQRVJTPXkKQ09ORklHX1ZJ
REVPPXkKIyBDT05GSUdfQVVYRElTUExBWSBpcyBub3Qgc2V0CiMgQ09ORklHX1BBTkVMIGlz
IG5vdCBzZXQKQ09ORklHX0RSTT15CkNPTkZJR19EUk1fTUlQSV9EU0k9eQojIENPTkZJR19E
Uk1fREVCVUdfTU0gaXMgbm90IHNldApDT05GSUdfRFJNX0tVTklUX1RFU1RfSEVMUEVSUz15
CkNPTkZJR19EUk1fS1VOSVRfVEVTVD15CkNPTkZJR19EUk1fS01TX0hFTFBFUj15CiMgQ09O
RklHX0RSTV9QQU5JQyBpcyBub3Qgc2V0CiMgQ09ORklHX0RSTV9GQkRFVl9FTVVMQVRJT04g
aXMgbm90IHNldAojIENPTkZJR19EUk1fTE9BRF9FRElEX0ZJUk1XQVJFIGlzIG5vdCBzZXQK
Q09ORklHX0RSTV9ESVNQTEFZX0hFTFBFUj15CkNPTkZJR19EUk1fRElTUExBWV9EUF9BVVhf
QlVTPXkKIyBDT05GSUdfRFJNX0RJU1BMQVlfRFBfQVVYX0NFQyBpcyBub3Qgc2V0CiMgQ09O
RklHX0RSTV9ESVNQTEFZX0RQX0FVWF9DSEFSREVWIGlzIG5vdCBzZXQKQ09ORklHX0RSTV9E
SVNQTEFZX0RQX0hFTFBFUj15CkNPTkZJR19EUk1fRElTUExBWV9IRENQX0hFTFBFUj15CkNP
TkZJR19EUk1fRElTUExBWV9IRE1JX0hFTFBFUj15CkNPTkZJR19EUk1fRElTUExBWV9IRE1J
X1NUQVRFX0hFTFBFUj15CkNPTkZJR19EUk1fRVhFQz15CkNPTkZJR19EUk1fQlVERFk9eQpD
T05GSUdfRFJNX0dFTV9ETUFfSEVMUEVSPXkKQ09ORklHX0RSTV9HRU1fU0hNRU1fSEVMUEVS
PXkKCiMKIyBJMkMgZW5jb2RlciBvciBoZWxwZXIgY2hpcHMKIwojIENPTkZJR19EUk1fSTJD
X0NINzAwNiBpcyBub3Qgc2V0CiMgQ09ORklHX0RSTV9JMkNfU0lMMTY0IGlzIG5vdCBzZXQK
Q09ORklHX0RSTV9JMkNfTlhQX1REQTk5OFg9eQpDT05GSUdfRFJNX0kyQ19OWFBfVERBOTk1
MD15CiMgZW5kIG9mIEkyQyBlbmNvZGVyIG9yIGhlbHBlciBjaGlwcwoKIwojIEFSTSBkZXZp
Y2VzCiMKQ09ORklHX0RSTV9LT01FREE9eQojIGVuZCBvZiBBUk0gZGV2aWNlcwoKQ09ORklH
X0RSTV9WR0VNPXkKIyBDT05GSUdfRFJNX1ZLTVMgaXMgbm90IHNldAojIENPTkZJR19EUk1f
VklSVElPX0dQVSBpcyBub3Qgc2V0CkNPTkZJR19EUk1fUEFORUw9eQoKIwojIERpc3BsYXkg
UGFuZWxzCiMKQ09ORklHX0RSTV9QQU5FTF9BUk1fVkVSU0FUSUxFPXkKQ09ORklHX0RSTV9Q
QU5FTF9BU1VTX1owMFRfVE01UDVfTlQzNTU5Nj15CiMgQ09ORklHX0RSTV9QQU5FTF9CT0Vf
QkYwNjBZOE1fQUowIGlzIG5vdCBzZXQKQ09ORklHX0RSTV9QQU5FTF9CT0VfSElNQVg4Mjc5
RD15CiMgQ09ORklHX0RSTV9QQU5FTF9CT0VfVEgxMDFNQjMxVUlHMDAyXzI4QSBpcyBub3Qg
c2V0CkNPTkZJR19EUk1fUEFORUxfQk9FX1RWMTAxV1VNX05MNj15CkNPTkZJR19EUk1fUEFO
RUxfRUJCR19GVDg3MTk9eQpDT05GSUdfRFJNX1BBTkVMX0VMSURBX0tEMzVUMTMzPXkKIyBD
T05GSUdfRFJNX1BBTkVMX0ZFSVhJTl9LMTAxX0lNMkJBMDIgaXMgbm90IHNldApDT05GSUdf
RFJNX1BBTkVMX0ZFSVlBTkdfRlkwNzAyNERJMjZBMzBEPXkKIyBDT05GSUdfRFJNX1BBTkVM
X0RTSV9DTSBpcyBub3Qgc2V0CkNPTkZJR19EUk1fUEFORUxfTFZEUz15CkNPTkZJR19EUk1f
UEFORUxfSElNQVhfSFg4MzEwMj15CkNPTkZJR19EUk1fUEFORUxfSElNQVhfSFg4MzExMkE9
eQojIENPTkZJR19EUk1fUEFORUxfSElNQVhfSFg4Mzk0IGlzIG5vdCBzZXQKQ09ORklHX0RS
TV9QQU5FTF9JTElURUtfSUxJOTgwNT15CkNPTkZJR19EUk1fUEFORUxfSUxJVEVLX0lMSTk4
MDZFPXkKIyBDT05GSUdfRFJNX1BBTkVMX0lMSVRFS19JTEk5ODgxQyBpcyBub3Qgc2V0CkNP
TkZJR19EUk1fUEFORUxfSUxJVEVLX0lMSTk4ODJUPXkKQ09ORklHX0RSTV9QQU5FTF9JTk5P
TFVYX1AwNzlaQ0E9eQpDT05GSUdfRFJNX1BBTkVMX0pBREFSRF9KRDkzNjVEQV9IMz15CkNP
TkZJR19EUk1fUEFORUxfSkRJX0xQTTEwMkExODhBPXkKIyBDT05GSUdfRFJNX1BBTkVMX0pE
SV9MVDA3ME1FMDUwMDAgaXMgbm90IHNldAojIENPTkZJR19EUk1fUEFORUxfSkRJX1I2MzQ1
MiBpcyBub3Qgc2V0CkNPTkZJR19EUk1fUEFORUxfS0hBREFTX1RTMDUwPXkKQ09ORklHX0RS
TV9QQU5FTF9LSU5HRElTUExBWV9LRDA5N0QwND15CiMgQ09ORklHX0RSTV9QQU5FTF9MRUFE
VEVLX0xUSzA1MEgzMTQ2VyBpcyBub3Qgc2V0CkNPTkZJR19EUk1fUEFORUxfTEVBRFRFS19M
VEs1MDBIRDE4Mjk9eQpDT05GSUdfRFJNX1BBTkVMX0xJTkNPTE5URUNIX0xDRDE5Nz15CiMg
Q09ORklHX0RSTV9QQU5FTF9MR19TVzQzNDA4IGlzIG5vdCBzZXQKQ09ORklHX0RSTV9QQU5F
TF9NQU5USVhfTUxBRjA1N1dFNTE9eQpDT05GSUdfRFJNX1BBTkVMX05FV1ZJU0lPTl9OVjMw
NTFEPXkKIyBDT05GSUdfRFJNX1BBTkVMX05PVkFURUtfTlQzNTUxMCBpcyBub3Qgc2V0CkNP
TkZJR19EUk1fUEFORUxfTk9WQVRFS19OVDM1NTYwPXkKIyBDT05GSUdfRFJNX1BBTkVMX05P
VkFURUtfTlQzNTk1MCBpcyBub3Qgc2V0CkNPTkZJR19EUk1fUEFORUxfTk9WQVRFS19OVDM2
NTIzPXkKQ09ORklHX0RSTV9QQU5FTF9OT1ZBVEVLX05UMzY2NzJBPXkKQ09ORklHX0RSTV9Q
QU5FTF9OT1ZBVEVLX05UMzY2NzJFPXkKQ09ORklHX0RSTV9QQU5FTF9PTElNRVhfTENEX09M
SU5VWElOTz15CiMgQ09ORklHX0RSTV9QQU5FTF9PUklTRVRFQ0hfT1RNODAwOUEgaXMgbm90
IHNldAojIENPTkZJR19EUk1fUEFORUxfT1NEX09TRDEwMVQyNTg3XzUzVFMgaXMgbm90IHNl
dAojIENPTkZJR19EUk1fUEFORUxfUEFOQVNPTklDX1ZWWDEwRjAzNE4wMCBpcyBub3Qgc2V0
CkNPTkZJR19EUk1fUEFORUxfUkFTUEJFUlJZUElfVE9VQ0hTQ1JFRU49eQpDT05GSUdfRFJN
X1BBTkVMX1JBWURJVU1fUk02NzE5MT15CkNPTkZJR19EUk1fUEFORUxfUkFZRElVTV9STTY4
MjAwPXkKQ09ORklHX0RSTV9QQU5FTF9SQVlESVVNX1JNNjkyRTU9eQojIENPTkZJR19EUk1f
UEFORUxfUkFZRElVTV9STTY5MzgwIGlzIG5vdCBzZXQKQ09ORklHX0RSTV9QQU5FTF9ST05C
T19SQjA3MEQzMD15CkNPTkZJR19EUk1fUEFORUxfU0FNU1VOR19TNkU4OEEwX0FNUzQ1MkVG
MDE9eQpDT05GSUdfRFJNX1BBTkVMX1NBTVNVTkdfUzZFM0ZBNz15CiMgQ09ORklHX0RSTV9Q
QU5FTF9TQU1TVU5HX1M2RDE2RDAgaXMgbm90IHNldApDT05GSUdfRFJNX1BBTkVMX1NBTVNV
TkdfUzZEN0FBMD15CkNPTkZJR19EUk1fUEFORUxfU0FNU1VOR19TNkUzSEEyPXkKQ09ORklH
X0RSTV9QQU5FTF9TQU1TVU5HX1M2RTYzSjBYMDM9eQpDT05GSUdfRFJNX1BBTkVMX1NBTVNV
TkdfUzZFNjNNMD15CiMgQ09ORklHX0RSTV9QQU5FTF9TQU1TVU5HX1M2RTYzTTBfRFNJIGlz
IG5vdCBzZXQKQ09ORklHX0RSTV9QQU5FTF9TQU1TVU5HX1M2RThBQTA9eQojIENPTkZJR19E
Uk1fUEFORUxfU0FNU1VOR19TT0ZFRjAwIGlzIG5vdCBzZXQKQ09ORklHX0RSTV9QQU5FTF9T
RUlLT180M1dWRjFHPXkKQ09ORklHX0RSTV9QQU5FTF9TSEFSUF9MUTEwMVIxU1gwMT15CkNP
TkZJR19EUk1fUEFORUxfU0hBUlBfTFMwMzdWN0RXMDE9eQojIENPTkZJR19EUk1fUEFORUxf
U0hBUlBfTFMwNDNUMUxFMDEgaXMgbm90IHNldAojIENPTkZJR19EUk1fUEFORUxfU0hBUlBf
TFMwNjBUMVNYMDEgaXMgbm90IHNldAojIENPTkZJR19EUk1fUEFORUxfU0lUUk9OSVhfU1Q3
NzAxIGlzIG5vdCBzZXQKQ09ORklHX0RSTV9QQU5FTF9TSVRST05JWF9TVDc3MDM9eQojIENP
TkZJR19EUk1fUEFORUxfU09OWV9URDQzNTNfSkRJIGlzIG5vdCBzZXQKIyBDT05GSUdfRFJN
X1BBTkVMX1NPTllfVFVMSVBfVFJVTFlfTlQzNTUyMSBpcyBub3Qgc2V0CkNPTkZJR19EUk1f
UEFORUxfU1RBUlRFS19LRDA3MEZIRklEMDE1PXkKQ09ORklHX0RSTV9QQU5FTF9TWU5BUFRJ
Q1NfUjYzMzUzPXkKQ09ORklHX0RSTV9QQU5FTF9URE9fVEwwNzBXU0gzMD15CkNPTkZJR19E
Uk1fUEFORUxfVFJVTFlfTlQzNTU5N19XUVhHQT15CkNPTkZJR19EUk1fUEFORUxfVklTSU9O
T1hfUjY2NDUxPXkKQ09ORklHX0RSTV9QQU5FTF9WSVNJT05PWF9STTY5Mjk5PXkKQ09ORklH
X0RSTV9QQU5FTF9WSVNJT05PWF9WVERSNjEzMD15CkNPTkZJR19EUk1fUEFORUxfWElOUEVO
R19YUFAwNTVDMjcyPXkKIyBlbmQgb2YgRGlzcGxheSBQYW5lbHMKCkNPTkZJR19EUk1fQlJJ
REdFPXkKQ09ORklHX0RSTV9QQU5FTF9CUklER0U9eQoKIwojIERpc3BsYXkgSW50ZXJmYWNl
IEJyaWRnZXMKIwpDT05GSUdfRFJNX0NISVBPTkVfSUNONjIxMT15CiMgQ09ORklHX0RSTV9D
SFJPTlRFTF9DSDcwMzMgaXMgbm90IHNldAojIENPTkZJR19EUk1fQ1JPU19FQ19BTlg3Njg4
IGlzIG5vdCBzZXQKIyBDT05GSUdfRFJNX0RJU1BMQVlfQ09OTkVDVE9SIGlzIG5vdCBzZXQK
Q09ORklHX0RSTV9JVEVfSVQ2NTA1PXkKIyBDT05GSUdfRFJNX0xPTlRJVU1fTFQ4OTEyQiBp
cyBub3Qgc2V0CkNPTkZJR19EUk1fTE9OVElVTV9MVDkyMTE9eQojIENPTkZJR19EUk1fTE9O
VElVTV9MVDk2MTEgaXMgbm90IHNldApDT05GSUdfRFJNX0xPTlRJVU1fTFQ5NjExVVhDPXkK
IyBDT05GSUdfRFJNX0lURV9JVDY2MTIxIGlzIG5vdCBzZXQKIyBDT05GSUdfRFJNX0xWRFNf
Q09ERUMgaXMgbm90IHNldApDT05GSUdfRFJNX01FR0FDSElQU19TVERQWFhYWF9HRV9CODUw
VjNfRlc9eQpDT05GSUdfRFJNX05XTF9NSVBJX0RTST15CiMgQ09ORklHX0RSTV9OWFBfUFRO
MzQ2MCBpcyBub3Qgc2V0CkNPTkZJR19EUk1fUEFSQURFX1BTODYyMj15CiMgQ09ORklHX0RS
TV9QQVJBREVfUFM4NjQwIGlzIG5vdCBzZXQKQ09ORklHX0RSTV9TQU1TVU5HX0RTSU09eQpD
T05GSUdfRFJNX1NJTF9TSUk4NjIwPXkKQ09ORklHX0RSTV9TSUk5MDJYPXkKIyBDT05GSUdf
RFJNX1NJSTkyMzQgaXMgbm90IHNldApDT05GSUdfRFJNX1NJTVBMRV9CUklER0U9eQpDT05G
SUdfRFJNX1RISU5FX1RIQzYzTFZEMTAyND15CkNPTkZJR19EUk1fVE9TSElCQV9UQzM1ODc2
Mj15CkNPTkZJR19EUk1fVE9TSElCQV9UQzM1ODc2ND15CkNPTkZJR19EUk1fVE9TSElCQV9U
QzM1ODc2Nz15CiMgQ09ORklHX0RSTV9UT1NISUJBX1RDMzU4NzY4IGlzIG5vdCBzZXQKQ09O
RklHX0RSTV9UT1NISUJBX1RDMzU4Nzc1PXkKQ09ORklHX0RSTV9USV9ETFBDMzQzMz15CkNP
TkZJR19EUk1fVElfVEZQNDEwPXkKQ09ORklHX0RSTV9USV9TTjY1RFNJODM9eQojIENPTkZJ
R19EUk1fVElfU042NURTSTg2IGlzIG5vdCBzZXQKIyBDT05GSUdfRFJNX1RJX1RQRDEyUzAx
NSBpcyBub3Qgc2V0CiMgQ09ORklHX0RSTV9BTkFMT0dJWF9BTlg2MzQ1IGlzIG5vdCBzZXQK
IyBDT05GSUdfRFJNX0FOQUxPR0lYX0FOWDc4WFggaXMgbm90IHNldAojIENPTkZJR19EUk1f
QU5BTE9HSVhfQU5YNzYyNSBpcyBub3Qgc2V0CkNPTkZJR19EUk1fSTJDX0FEVjc1MTE9eQoj
IENPTkZJR19EUk1fSTJDX0FEVjc1MTFfQ0VDIGlzIG5vdCBzZXQKQ09ORklHX0RSTV9DRE5T
X0RTST15CkNPTkZJR19EUk1fQ0ROU19EU0lfSjcyMUU9eQojIENPTkZJR19EUk1fQ0ROU19N
SERQODU0NiBpcyBub3Qgc2V0CiMgZW5kIG9mIERpc3BsYXkgSW50ZXJmYWNlIEJyaWRnZXMK
CiMgQ09ORklHX0RSTV9FVE5BVklWIGlzIG5vdCBzZXQKQ09ORklHX0RSTV9MT0dJQ1ZDPXkK
Q09ORklHX0RSTV9BUkNQR1U9eQpDT05GSUdfRFJNX1NJTVBMRURSTT15CiMgQ09ORklHX0RS
TV9TU0QxMzBYIGlzIG5vdCBzZXQKQ09ORklHX0RSTV9MSUJfUkFORE9NPXkKQ09ORklHX0RS
TV9QUklWQUNZX1NDUkVFTj15CkNPTkZJR19EUk1fUEFORUxfT1JJRU5UQVRJT05fUVVJUktT
PXkKCiMKIyBGcmFtZSBidWZmZXIgRGV2aWNlcwojCiMgQ09ORklHX0ZCIGlzIG5vdCBzZXQK
IyBlbmQgb2YgRnJhbWUgYnVmZmVyIERldmljZXMKCiMKIyBCYWNrbGlnaHQgJiBMQ0QgZGV2
aWNlIHN1cHBvcnQKIwpDT05GSUdfTENEX0NMQVNTX0RFVklDRT15CkNPTkZJR19MQ0RfUExB
VEZPUk09eQpDT05GSUdfQkFDS0xJR0hUX0NMQVNTX0RFVklDRT15CkNPTkZJR19CQUNLTElH
SFRfS1REMjUzPXkKIyBDT05GSUdfQkFDS0xJR0hUX0tURDI4MDEgaXMgbm90IHNldApDT05G
SUdfQkFDS0xJR0hUX0tUWjg4NjY9eQpDT05GSUdfQkFDS0xJR0hUX1BXTT15CkNPTkZJR19C
QUNLTElHSFRfTVQ2MzcwPXkKIyBDT05GSUdfQkFDS0xJR0hUX0FQUExFIGlzIG5vdCBzZXQK
IyBDT05GSUdfQkFDS0xJR0hUX1FDT01fV0xFRCBpcyBub3Qgc2V0CiMgQ09ORklHX0JBQ0tM
SUdIVF9SVDQ4MzEgaXMgbm90IHNldAojIENPTkZJR19CQUNLTElHSFRfU0FIQVJBIGlzIG5v
dCBzZXQKIyBDT05GSUdfQkFDS0xJR0hUX1dNODMxWCBpcyBub3Qgc2V0CkNPTkZJR19CQUNL
TElHSFRfQURQNTUyMD15CkNPTkZJR19CQUNLTElHSFRfQURQODg2MD15CiMgQ09ORklHX0JB
Q0tMSUdIVF9BRFA4ODcwIGlzIG5vdCBzZXQKIyBDT05GSUdfQkFDS0xJR0hUX1BDRjUwNjMz
IGlzIG5vdCBzZXQKQ09ORklHX0JBQ0tMSUdIVF9MTTM1MDk9eQpDT05GSUdfQkFDS0xJR0hU
X0xNMzYzMEE9eQpDT05GSUdfQkFDS0xJR0hUX0xNMzYzOT15CiMgQ09ORklHX0JBQ0tMSUdI
VF9MUDg1NVggaXMgbm90IHNldApDT05GSUdfQkFDS0xJR0hUX0xQODc4OD15CiMgQ09ORklH
X0JBQ0tMSUdIVF9NUDMzMDlDIGlzIG5vdCBzZXQKQ09ORklHX0JBQ0tMSUdIVF9QQU5ET1JB
PXkKIyBDT05GSUdfQkFDS0xJR0hUX1RQUzY1MjE3IGlzIG5vdCBzZXQKIyBDT05GSUdfQkFD
S0xJR0hUX0FTMzcxMSBpcyBub3Qgc2V0CkNPTkZJR19CQUNLTElHSFRfR1BJTz15CiMgQ09O
RklHX0JBQ0tMSUdIVF9MVjUyMDdMUCBpcyBub3Qgc2V0CkNPTkZJR19CQUNLTElHSFRfQkQ2
MTA3PXkKIyBDT05GSUdfQkFDS0xJR0hUX0FSQ1hDTk4gaXMgbm90IHNldApDT05GSUdfQkFD
S0xJR0hUX0xFRD15CiMgZW5kIG9mIEJhY2tsaWdodCAmIExDRCBkZXZpY2Ugc3VwcG9ydAoK
Q09ORklHX1ZJREVPTU9ERV9IRUxQRVJTPXkKQ09ORklHX0hETUk9eQoKIwojIENvbnNvbGUg
ZGlzcGxheSBkcml2ZXIgc3VwcG9ydAojCkNPTkZJR19WR0FfQ09OU09MRT15CiMgQ09ORklH
X01EQV9DT05TT0xFIGlzIG5vdCBzZXQKQ09ORklHX0RVTU1ZX0NPTlNPTEU9eQpDT05GSUdf
RFVNTVlfQ09OU09MRV9DT0xVTU5TPTgwCkNPTkZJR19EVU1NWV9DT05TT0xFX1JPV1M9MjUK
IyBlbmQgb2YgQ29uc29sZSBkaXNwbGF5IGRyaXZlciBzdXBwb3J0CiMgZW5kIG9mIEdyYXBo
aWNzIHN1cHBvcnQKCkNPTkZJR19EUk1fQUNDRUw9eQojIENPTkZJR19TT1VORCBpcyBub3Qg
c2V0CkNPTkZJR19ISURfU1VQUE9SVD15CkNPTkZJR19ISUQ9eQpDT05GSUdfSElEX0JBVFRF
UllfU1RSRU5HVEg9eQpDT05GSUdfSElEUkFXPXkKQ09ORklHX1VISUQ9eQpDT05GSUdfSElE
X0dFTkVSSUM9eQoKIwojIFNwZWNpYWwgSElEIGRyaXZlcnMKIwpDT05GSUdfSElEX0E0VEVD
SD15CkNPTkZJR19ISURfQUNSVVg9eQpDT05GSUdfSElEX0FDUlVYX0ZGPXkKQ09ORklHX0hJ
RF9BUFBMRT15CkNPTkZJR19ISURfQVVSRUFMPXkKIyBDT05GSUdfSElEX0JFTEtJTiBpcyBu
b3Qgc2V0CiMgQ09ORklHX0hJRF9DSEVSUlkgaXMgbm90IHNldApDT05GSUdfSElEX0NPVUdB
Uj15CkNPTkZJR19ISURfTUFDQUxMWT15CkNPTkZJR19ISURfQ01FRElBPXkKQ09ORklHX0hJ
RF9DWVBSRVNTPXkKQ09ORklHX0hJRF9EUkFHT05SSVNFPXkKQ09ORklHX0RSQUdPTlJJU0Vf
RkY9eQojIENPTkZJR19ISURfRU1TX0ZGIGlzIG5vdCBzZXQKQ09ORklHX0hJRF9FTEVDT009
eQojIENPTkZJR19ISURfRVZJU0lPTiBpcyBub3Qgc2V0CkNPTkZJR19ISURfRVpLRVk9eQpD
T05GSUdfSElEX0dFTUJJUkQ9eQpDT05GSUdfSElEX0dGUk09eQpDT05GSUdfSElEX0dMT1JJ
T1VTPXkKQ09ORklHX0hJRF9WSVZBTERJX0NPTU1PTj15CkNPTkZJR19ISURfR09PR0xFX1NU
QURJQV9GRj15CkNPTkZJR19ISURfVklWQUxEST15CkNPTkZJR19ISURfS0VZVE9VQ0g9eQoj
IENPTkZJR19ISURfS1lFIGlzIG5vdCBzZXQKQ09ORklHX0hJRF9XQUxUT1A9eQojIENPTkZJ
R19ISURfVklFV1NPTklDIGlzIG5vdCBzZXQKIyBDT05GSUdfSElEX1ZSQzIgaXMgbm90IHNl
dApDT05GSUdfSElEX1hJQU9NST15CkNPTkZJR19ISURfR1lSQVRJT049eQpDT05GSUdfSElE
X0lDQURFPXkKQ09ORklHX0hJRF9JVEU9eQpDT05GSUdfSElEX0pBQlJBPXkKQ09ORklHX0hJ
RF9UV0lOSEFOPXkKIyBDT05GSUdfSElEX0tFTlNJTkdUT04gaXMgbm90IHNldAojIENPTkZJ
R19ISURfTENQT1dFUiBpcyBub3Qgc2V0CkNPTkZJR19ISURfTEVEPXkKQ09ORklHX0hJRF9M
RU5PVk89eQpDT05GSUdfSElEX01BR0lDTU9VU0U9eQpDT05GSUdfSElEX01BTFRST049eQpD
T05GSUdfSElEX01BWUZMQVNIPXkKIyBDT05GSUdfSElEX1JFRFJBR09OIGlzIG5vdCBzZXQK
Q09ORklHX0hJRF9NSUNST1NPRlQ9eQpDT05GSUdfSElEX01PTlRFUkVZPXkKQ09ORklHX0hJ
RF9NVUxUSVRPVUNIPXkKIyBDT05GSUdfSElEX05JTlRFTkRPIGlzIG5vdCBzZXQKIyBDT05G
SUdfSElEX05USSBpcyBub3Qgc2V0CkNPTkZJR19ISURfT1JURUs9eQojIENPTkZJR19ISURf
UEFOVEhFUkxPUkQgaXMgbm90IHNldApDT05GSUdfSElEX1BFVEFMWU5YPXkKQ09ORklHX0hJ
RF9QSUNPTENEPXkKQ09ORklHX0hJRF9QSUNPTENEX0JBQ0tMSUdIVD15CkNPTkZJR19ISURf
UElDT0xDRF9MQ0Q9eQpDT05GSUdfSElEX1BJQ09MQ0RfTEVEUz15CkNPTkZJR19ISURfUElD
T0xDRF9DSVI9eQojIENPTkZJR19ISURfUExBTlRST05JQ1MgaXMgbm90IHNldAojIENPTkZJ
R19ISURfUExBWVNUQVRJT04gaXMgbm90IHNldApDT05GSUdfSElEX1BYUkM9eQojIENPTkZJ
R19ISURfUkFaRVIgaXMgbm90IHNldApDT05GSUdfSElEX1BSSU1BWD15CiMgQ09ORklHX0hJ
RF9TQUlURUsgaXMgbm90IHNldApDT05GSUdfSElEX1NFTUlURUs9eQpDT05GSUdfSElEX1NQ
RUVETElOSz15CiMgQ09ORklHX0hJRF9TVEVBTSBpcyBub3Qgc2V0CkNPTkZJR19ISURfU1VO
UExVUz15CkNPTkZJR19ISURfUk1JPXkKIyBDT05GSUdfSElEX0dSRUVOQVNJQSBpcyBub3Qg
c2V0CkNPTkZJR19ISURfU01BUlRKT1lQTFVTPXkKIyBDT05GSUdfU01BUlRKT1lQTFVTX0ZG
IGlzIG5vdCBzZXQKQ09ORklHX0hJRF9USVZPPXkKIyBDT05GSUdfSElEX1RPUFNFRUQgaXMg
bm90IHNldAojIENPTkZJR19ISURfVE9QUkUgaXMgbm90IHNldAojIENPTkZJR19ISURfVEhJ
TkdNIGlzIG5vdCBzZXQKQ09ORklHX0hJRF9VRFJBV19QUzM9eQpDT05GSUdfSElEX1dJSU1P
VEU9eQojIENPTkZJR19ISURfWElOTU8gaXMgbm90IHNldApDT05GSUdfSElEX1pFUk9QTFVT
PXkKIyBDT05GSUdfWkVST1BMVVNfRkYgaXMgbm90IHNldApDT05GSUdfSElEX1pZREFDUk9O
PXkKIyBDT05GSUdfSElEX1NFTlNPUl9IVUIgaXMgbm90IHNldApDT05GSUdfSElEX0FMUFM9
eQojIGVuZCBvZiBTcGVjaWFsIEhJRCBkcml2ZXJzCgojCiMgSElELUJQRiBzdXBwb3J0CiMK
IyBlbmQgb2YgSElELUJQRiBzdXBwb3J0CgpDT05GSUdfSTJDX0hJRD15CkNPTkZJR19JMkNf
SElEX0FDUEk9eQojIENPTkZJR19JMkNfSElEX09GIGlzIG5vdCBzZXQKIyBDT05GSUdfSTJD
X0hJRF9PRl9FTEFOIGlzIG5vdCBzZXQKQ09ORklHX0kyQ19ISURfT0ZfR09PRElYPXkKQ09O
RklHX0kyQ19ISURfQ09SRT15CkNPTkZJR19VU0JfT0hDSV9MSVRUTEVfRU5ESUFOPXkKIyBD
T05GSUdfVVNCX1NVUFBPUlQgaXMgbm90IHNldApDT05GSUdfTU1DPXkKIyBDT05GSUdfUFdS
U0VRX0VNTUMgaXMgbm90IHNldAojIENPTkZJR19QV1JTRVFfU0lNUExFIGlzIG5vdCBzZXQK
Q09ORklHX01NQ19CTE9DSz15CkNPTkZJR19NTUNfQkxPQ0tfTUlOT1JTPTgKQ09ORklHX1NE
SU9fVUFSVD15CkNPTkZJR19NTUNfVEVTVD15CiMgQ09ORklHX01NQ19DUllQVE8gaXMgbm90
IHNldAoKIwojIE1NQy9TRC9TRElPIEhvc3QgQ29udHJvbGxlciBEcml2ZXJzCiMKIyBDT05G
SUdfTU1DX0RFQlVHIGlzIG5vdCBzZXQKIyBDT05GSUdfTU1DX1NESENJIGlzIG5vdCBzZXQK
Q09ORklHX01NQ19XQlNEPXkKQ09ORklHX01NQ19VU0RISTZST0wwPXkKQ09ORklHX01NQ19D
UUhDST15CkNPTkZJR19NTUNfSFNRPXkKQ09ORklHX01NQ19NVEs9eQpDT05GSUdfTU1DX0xJ
VEVYPXkKIyBDT05GSUdfU0NTSV9VRlNIQ0QgaXMgbm90IHNldApDT05GSUdfTUVNU1RJQ0s9
eQojIENPTkZJR19NRU1TVElDS19ERUJVRyBpcyBub3Qgc2V0CgojCiMgTWVtb3J5U3RpY2sg
ZHJpdmVycwojCiMgQ09ORklHX01FTVNUSUNLX1VOU0FGRV9SRVNVTUUgaXMgbm90IHNldAoj
IENPTkZJR19NU1BST19CTE9DSyBpcyBub3Qgc2V0CkNPTkZJR19NU19CTE9DSz15CgojCiMg
TWVtb3J5U3RpY2sgSG9zdCBDb250cm9sbGVyIERyaXZlcnMKIwpDT05GSUdfTkVXX0xFRFM9
eQpDT05GSUdfTEVEU19DTEFTUz15CiMgQ09ORklHX0xFRFNfQ0xBU1NfRkxBU0ggaXMgbm90
IHNldApDT05GSUdfTEVEU19DTEFTU19NVUxUSUNPTE9SPXkKIyBDT05GSUdfTEVEU19CUklH
SFRORVNTX0hXX0NIQU5HRUQgaXMgbm90IHNldAoKIwojIExFRCBkcml2ZXJzCiMKQ09ORklH
X0xFRFNfQU4zMDI1OUE9eQojIENPTkZJR19MRURTX0FQVSBpcyBub3Qgc2V0CkNPTkZJR19M
RURTX0FXMjAwWFg9eQpDT05GSUdfTEVEU19BVzIwMTM9eQpDT05GSUdfTEVEU19CQ002MzI4
PXkKQ09ORklHX0xFRFNfQkNNNjM1OD15CkNPTkZJR19MRURTX0NST1NfRUM9eQpDT05GSUdf
TEVEU19MTTM1MzA9eQpDT05GSUdfTEVEU19MTTM1MzI9eQpDT05GSUdfTEVEU19MTTM2NDI9
eQojIENPTkZJR19MRURTX0xNMzY5MlggaXMgbm90IHNldApDT05GSUdfTEVEU19NVDYzMjM9
eQpDT05GSUdfTEVEU19QQ0E5NTMyPXkKQ09ORklHX0xFRFNfUENBOTUzMl9HUElPPXkKQ09O
RklHX0xFRFNfR1BJTz15CkNPTkZJR19MRURTX0xQMzk0ND15CkNPTkZJR19MRURTX0xQMzk1
Mj15CkNPTkZJR19MRURTX0xQNTBYWD15CkNPTkZJR19MRURTX0xQNTVYWF9DT01NT049eQpD
T05GSUdfTEVEU19MUDU1MjE9eQpDT05GSUdfTEVEU19MUDU1MjM9eQojIENPTkZJR19MRURT
X0xQNTU2MiBpcyBub3Qgc2V0CiMgQ09ORklHX0xFRFNfTFA1NTY5IGlzIG5vdCBzZXQKQ09O
RklHX0xFRFNfTFA4NTAxPXkKIyBDT05GSUdfTEVEU19MUDg3ODggaXMgbm90IHNldApDT05G
SUdfTEVEU19MUDg4NjA9eQpDT05GSUdfTEVEU19QQ0E5NTVYPXkKQ09ORklHX0xFRFNfUENB
OTU1WF9HUElPPXkKIyBDT05GSUdfTEVEU19QQ0E5NjNYIGlzIG5vdCBzZXQKIyBDT05GSUdf
TEVEU19QQ0E5OTVYIGlzIG5vdCBzZXQKIyBDT05GSUdfTEVEU19XTTgzMVhfU1RBVFVTIGlz
IG5vdCBzZXQKQ09ORklHX0xFRFNfV004MzUwPXkKQ09ORklHX0xFRFNfUFdNPXkKQ09ORklH
X0xFRFNfUkVHVUxBVE9SPXkKIyBDT05GSUdfTEVEU19CRDI2MDZNVlYgaXMgbm90IHNldAoj
IENPTkZJR19MRURTX0JEMjgwMiBpcyBub3Qgc2V0CiMgQ09ORklHX0xFRFNfTFQzNTkzIGlz
IG5vdCBzZXQKQ09ORklHX0xFRFNfQURQNTUyMD15CkNPTkZJR19MRURTX01DMTM3ODM9eQpD
T05GSUdfTEVEU19UQ0E2NTA3PXkKIyBDT05GSUdfTEVEU19UTEM1OTFYWCBpcyBub3Qgc2V0
CkNPTkZJR19MRURTX01BWDc3NjUwPXkKQ09ORklHX0xFRFNfTE0zNTV4PXkKIyBDT05GSUdf
TEVEU19PVDIwMCBpcyBub3Qgc2V0CkNPTkZJR19MRURTX01FTkYyMUJNQz15CiMgQ09ORklH
X0xFRFNfSVMzMUZMMzE5WCBpcyBub3Qgc2V0CkNPTkZJR19MRURTX0lTMzFGTDMyWFg9eQoK
IwojIExFRCBkcml2ZXIgZm9yIGJsaW5rKDEpIFVTQiBSR0IgTEVEIGlzIHVuZGVyIFNwZWNp
YWwgSElEIGRyaXZlcnMgKEhJRF9USElOR00pCiMKQ09ORklHX0xFRFNfQkxJTktNPXkKQ09O
RklHX0xFRFNfU1lTQ09OPXkKIyBDT05GSUdfTEVEU19NTFhDUExEIGlzIG5vdCBzZXQKQ09O
RklHX0xFRFNfTUxYUkVHPXkKIyBDT05GSUdfTEVEU19VU0VSIGlzIG5vdCBzZXQKIyBDT05G
SUdfTEVEU19OSUM3OEJYIGlzIG5vdCBzZXQKIyBDT05GSUdfTEVEU19MTTM2OTcgaXMgbm90
IHNldAojIENPTkZJR19MRURTX0xNMzYyNzQgaXMgbm90IHNldApDT05GSUdfTEVEU19UUFM2
MTA1WD15CiMgQ09ORklHX0xFRFNfTEdNIGlzIG5vdCBzZXQKCiMKIyBGbGFzaCBhbmQgVG9y
Y2ggTEVEIGRyaXZlcnMKIwoKIwojIFJHQiBMRUQgZHJpdmVycwojCiMgQ09ORklHX0xFRFNf
R1JPVVBfTVVMVElDT0xPUiBpcyBub3Qgc2V0CkNPTkZJR19MRURTX0tURDIwMlg9eQojIENP
TkZJR19MRURTX05DUDU2MjMgaXMgbm90IHNldApDT05GSUdfTEVEU19QV01fTVVMVElDT0xP
Uj15CiMgQ09ORklHX0xFRFNfTVQ2MzcwX1JHQiBpcyBub3Qgc2V0CgojCiMgTEVEIFRyaWdn
ZXJzCiMKQ09ORklHX0xFRFNfVFJJR0dFUlM9eQpDT05GSUdfTEVEU19UUklHR0VSX1RJTUVS
PXkKQ09ORklHX0xFRFNfVFJJR0dFUl9PTkVTSE9UPXkKIyBDT05GSUdfTEVEU19UUklHR0VS
X0RJU0sgaXMgbm90IHNldAojIENPTkZJR19MRURTX1RSSUdHRVJfTVREIGlzIG5vdCBzZXQK
IyBDT05GSUdfTEVEU19UUklHR0VSX0hFQVJUQkVBVCBpcyBub3Qgc2V0CiMgQ09ORklHX0xF
RFNfVFJJR0dFUl9CQUNLTElHSFQgaXMgbm90IHNldApDT05GSUdfTEVEU19UUklHR0VSX0NQ
VT15CkNPTkZJR19MRURTX1RSSUdHRVJfQUNUSVZJVFk9eQpDT05GSUdfTEVEU19UUklHR0VS
X0dQSU89eQpDT05GSUdfTEVEU19UUklHR0VSX0RFRkFVTFRfT049eQoKIwojIGlwdGFibGVz
IHRyaWdnZXIgaXMgdW5kZXIgTmV0ZmlsdGVyIGNvbmZpZyAoTEVEIHRhcmdldCkKIwpDT05G
SUdfTEVEU19UUklHR0VSX1RSQU5TSUVOVD15CkNPTkZJR19MRURTX1RSSUdHRVJfQ0FNRVJB
PXkKQ09ORklHX0xFRFNfVFJJR0dFUl9QQU5JQz15CkNPTkZJR19MRURTX1RSSUdHRVJfTkVU
REVWPXkKIyBDT05GSUdfTEVEU19UUklHR0VSX1BBVFRFUk4gaXMgbm90IHNldApDT05GSUdf
TEVEU19UUklHR0VSX1RUWT15CkNPTkZJR19MRURTX1RSSUdHRVJfSU5QVVRfRVZFTlRTPXkK
CiMKIyBTaW1wbGUgTEVEIGRyaXZlcnMKIwpDT05GSUdfTEVEU19TSUVNRU5TX1NJTUFUSUNf
SVBDPXkKIyBDT05GSUdfTEVEU19TSUVNRU5TX1NJTUFUSUNfSVBDX0FQT0xMT0xBS0UgaXMg
bm90IHNldApDT05GSUdfTEVEU19TSUVNRU5TX1NJTUFUSUNfSVBDX0Y3MTg4WD15CkNPTkZJ
R19BQ0NFU1NJQklMSVRZPXkKQ09ORklHX0ExMVlfQlJBSUxMRV9DT05TT0xFPXkKCiMKIyBT
cGVha3VwIGNvbnNvbGUgc3BlZWNoCiMKIyBDT05GSUdfU1BFQUtVUCBpcyBub3Qgc2V0CiMg
ZW5kIG9mIFNwZWFrdXAgY29uc29sZSBzcGVlY2gKCkNPTkZJR19FREFDX0FUT01JQ19TQ1JV
Qj15CkNPTkZJR19FREFDX1NVUFBPUlQ9eQpDT05GSUdfUlRDX0xJQj15CkNPTkZJR19SVENf
TUMxNDY4MThfTElCPXkKQ09ORklHX1JUQ19DTEFTUz15CkNPTkZJR19SVENfSENUT1NZUz15
CkNPTkZJR19SVENfSENUT1NZU19ERVZJQ0U9InJ0YzAiCiMgQ09ORklHX1JUQ19TWVNUT0hD
IGlzIG5vdCBzZXQKIyBDT05GSUdfUlRDX0RFQlVHIGlzIG5vdCBzZXQKQ09ORklHX1JUQ19M
SUJfS1VOSVRfVEVTVD15CiMgQ09ORklHX1JUQ19OVk1FTSBpcyBub3Qgc2V0CgojCiMgUlRD
IGludGVyZmFjZXMKIwpDT05GSUdfUlRDX0lOVEZfU1lTRlM9eQpDT05GSUdfUlRDX0lOVEZf
UFJPQz15CiMgQ09ORklHX1JUQ19JTlRGX0RFViBpcyBub3Qgc2V0CkNPTkZJR19SVENfRFJW
X1RFU1Q9eQoKIwojIEkyQyBSVEMgZHJpdmVycwojCiMgQ09ORklHX1JUQ19EUlZfODhQTTgw
WCBpcyBub3Qgc2V0CkNPTkZJR19SVENfRFJWX0FCQjVaRVMzPXkKQ09ORklHX1JUQ19EUlZf
QUJFT1o5PXkKQ09ORklHX1JUQ19EUlZfQUJYODBYPXkKIyBDT05GSUdfUlRDX0RSVl9EUzEz
MDcgaXMgbm90IHNldAojIENPTkZJR19SVENfRFJWX0RTMTM3NCBpcyBub3Qgc2V0CiMgQ09O
RklHX1JUQ19EUlZfRFMxNjcyIGlzIG5vdCBzZXQKIyBDT05GSUdfUlRDX0RSVl9IWU04NTYz
IGlzIG5vdCBzZXQKQ09ORklHX1JUQ19EUlZfTFA4Nzg4PXkKIyBDT05GSUdfUlRDX0RSVl9N
QVg2OTAwIGlzIG5vdCBzZXQKQ09ORklHX1JUQ19EUlZfTUFYODkwNz15CkNPTkZJR19SVENf
RFJWX01BWDMxMzM1PXkKQ09ORklHX1JUQ19EUlZfTUFYNzc2ODY9eQpDT05GSUdfUlRDX0RS
Vl9OQ1QzMDE4WT15CkNPTkZJR19SVENfRFJWX1JTNUMzNzI9eQpDT05GSUdfUlRDX0RSVl9J
U0wxMjA4PXkKQ09ORklHX1JUQ19EUlZfSVNMMTIwMjI9eQpDT05GSUdfUlRDX0RSVl9JU0wx
MjAyNj15CiMgQ09ORklHX1JUQ19EUlZfWDEyMDUgaXMgbm90IHNldApDT05GSUdfUlRDX0RS
Vl9QQ0Y4NTIzPXkKQ09ORklHX1JUQ19EUlZfUENGODUwNjM9eQojIENPTkZJR19SVENfRFJW
X1BDRjg1MzYzIGlzIG5vdCBzZXQKQ09ORklHX1JUQ19EUlZfUENGODU2Mz15CiMgQ09ORklH
X1JUQ19EUlZfUENGODU4MyBpcyBub3Qgc2V0CiMgQ09ORklHX1JUQ19EUlZfTTQxVDgwIGlz
IG5vdCBzZXQKQ09ORklHX1JUQ19EUlZfQkQ3MDUyOD15CkNPTkZJR19SVENfRFJWX0JRMzJL
PXkKQ09ORklHX1JUQ19EUlZfVFdMNDAzMD15CiMgQ09ORklHX1JUQ19EUlZfUEFMTUFTIGlz
IG5vdCBzZXQKIyBDT05GSUdfUlRDX0RSVl9UUFM2NTg2WCBpcyBub3Qgc2V0CkNPTkZJR19S
VENfRFJWX1RQUzY1OTQ9eQpDT05GSUdfUlRDX0RSVl9UUFM2NTkxMD15CkNPTkZJR19SVENf
RFJWX1JDNVQ1ODM9eQpDT05GSUdfUlRDX0RSVl9SQzVUNjE5PXkKIyBDT05GSUdfUlRDX0RS
Vl9TMzUzOTBBIGlzIG5vdCBzZXQKIyBDT05GSUdfUlRDX0RSVl9GTTMxMzAgaXMgbm90IHNl
dApDT05GSUdfUlRDX0RSVl9SWDgwMTA9eQpDT05GSUdfUlRDX0RSVl9SWDgxMTE9eQpDT05G
SUdfUlRDX0RSVl9SWDg1ODE9eQpDT05GSUdfUlRDX0RSVl9SWDgwMjU9eQpDT05GSUdfUlRD
X0RSVl9FTTMwMjc9eQpDT05GSUdfUlRDX0RSVl9SVjMwMjg9eQpDT05GSUdfUlRDX0RSVl9S
VjMwMzI9eQojIENPTkZJR19SVENfRFJWX1JWODgwMyBpcyBub3Qgc2V0CkNPTkZJR19SVENf
RFJWX1M1TT15CkNPTkZJR19SVENfRFJWX1NEMzA3OD15CgojCiMgU1BJIFJUQyBkcml2ZXJz
CiMKQ09ORklHX1JUQ19JMkNfQU5EX1NQST15CgojCiMgU1BJIGFuZCBJMkMgUlRDIGRyaXZl
cnMKIwpDT05GSUdfUlRDX0RSVl9EUzMyMzI9eQojIENPTkZJR19SVENfRFJWX0RTMzIzMl9I
V01PTiBpcyBub3Qgc2V0CiMgQ09ORklHX1JUQ19EUlZfUENGMjEyNyBpcyBub3Qgc2V0CkNP
TkZJR19SVENfRFJWX1JWMzAyOUMyPXkKIyBDT05GSUdfUlRDX0RSVl9SVjMwMjlfSFdNT04g
aXMgbm90IHNldApDT05GSUdfUlRDX0RSVl9SWDYxMTA9eQoKIwojIFBsYXRmb3JtIFJUQyBk
cml2ZXJzCiMKQ09ORklHX1JUQ19EUlZfQ01PUz15CkNPTkZJR19SVENfRFJWX0RTMTI4Nj15
CkNPTkZJR19SVENfRFJWX0RTMTUxMT15CkNPTkZJR19SVENfRFJWX0RTMTU1Mz15CkNPTkZJ
R19SVENfRFJWX0RTMTY4NV9GQU1JTFk9eQpDT05GSUdfUlRDX0RSVl9EUzE2ODU9eQojIENP
TkZJR19SVENfRFJWX0RTMTY4OSBpcyBub3Qgc2V0CiMgQ09ORklHX1JUQ19EUlZfRFMxNzI4
NSBpcyBub3Qgc2V0CiMgQ09ORklHX1JUQ19EUlZfRFMxNzQ4NSBpcyBub3Qgc2V0CiMgQ09O
RklHX1JUQ19EUlZfRFMxNzg4NSBpcyBub3Qgc2V0CkNPTkZJR19SVENfRFJWX0RTMTc0Mj15
CiMgQ09ORklHX1JUQ19EUlZfRFMyNDA0IGlzIG5vdCBzZXQKQ09ORklHX1JUQ19EUlZfREE5
MDYzPXkKQ09ORklHX1JUQ19EUlZfU1RLMTdUQTg9eQpDT05GSUdfUlRDX0RSVl9NNDhUODY9
eQpDT05GSUdfUlRDX0RSVl9NNDhUMzU9eQpDT05GSUdfUlRDX0RSVl9NNDhUNTk9eQojIENP
TkZJR19SVENfRFJWX01TTTYyNDIgaXMgbm90IHNldApDT05GSUdfUlRDX0RSVl9SUDVDMDE9
eQpDT05GSUdfUlRDX0RSVl9XTTgzMVg9eQojIENPTkZJR19SVENfRFJWX1dNODM1MCBpcyBu
b3Qgc2V0CkNPTkZJR19SVENfRFJWX1BDRjUwNjMzPXkKIyBDT05GSUdfUlRDX0RSVl9aWU5R
TVAgaXMgbm90IHNldAojIENPTkZJR19SVENfRFJWX0NST1NfRUMgaXMgbm90IHNldAojIENP
TkZJR19SVENfRFJWX05UWEVDIGlzIG5vdCBzZXQKCiMKIyBvbi1DUFUgUlRDIGRyaXZlcnMK
IwpDT05GSUdfUlRDX0RSVl9DQURFTkNFPXkKIyBDT05GSUdfUlRDX0RSVl9GVFJUQzAxMCBp
cyBub3Qgc2V0CkNPTkZJR19SVENfRFJWX01DMTNYWFg9eQpDT05GSUdfUlRDX0RSVl9NVDYz
OTc9eQojIENPTkZJR19SVENfRFJWX1I3MzAxIGlzIG5vdCBzZXQKCiMKIyBISUQgU2Vuc29y
IFJUQyBkcml2ZXJzCiMKIyBDT05GSUdfUlRDX0RSVl9HT0xERklTSCBpcyBub3Qgc2V0CiMg
Q09ORklHX1JUQ19EUlZfV0lMQ09fRUMgaXMgbm90IHNldAojIENPTkZJR19ETUFERVZJQ0VT
IGlzIG5vdCBzZXQKCiMKIyBETUFCVUYgb3B0aW9ucwojCkNPTkZJR19TWU5DX0ZJTEU9eQoj
IENPTkZJR19VRE1BQlVGIGlzIG5vdCBzZXQKIyBDT05GSUdfRE1BQlVGX01PVkVfTk9USUZZ
IGlzIG5vdCBzZXQKQ09ORklHX0RNQUJVRl9ERUJVRz15CkNPTkZJR19ETUFCVUZfU0VMRlRF
U1RTPXkKIyBDT05GSUdfRE1BQlVGX0hFQVBTIGlzIG5vdCBzZXQKIyBDT05GSUdfRE1BQlVG
X1NZU0ZTX1NUQVRTIGlzIG5vdCBzZXQKIyBlbmQgb2YgRE1BQlVGIG9wdGlvbnMKCkNPTkZJ
R19VSU89eQpDT05GSUdfVUlPX1BEUlZfR0VOSVJRPXkKQ09ORklHX1VJT19ETUVNX0dFTklS
UT15CiMgQ09ORklHX1ZGSU8gaXMgbm90IHNldApDT05GSUdfSVJRX0JZUEFTU19NQU5BR0VS
PXkKQ09ORklHX1ZJUlRfRFJJVkVSUz15CkNPTkZJR19WTUdFTklEPXkKQ09ORklHX1ZJUlRJ
T19BTkNIT1I9eQpDT05GSUdfVklSVElPPXkKQ09ORklHX1ZJUlRJT19NRU5VPXkKQ09ORklH
X1ZJUlRJT19WRFBBPXkKIyBDT05GSUdfVklSVElPX0JBTExPT04gaXMgbm90IHNldApDT05G
SUdfVklSVElPX0lOUFVUPXkKIyBDT05GSUdfVklSVElPX01NSU8gaXMgbm90IHNldApDT05G
SUdfVklSVElPX0RFQlVHPXkKQ09ORklHX1ZEUEE9eQpDT05GSUdfVkRQQV9TSU09eQojIENP
TkZJR19WRFBBX1NJTV9ORVQgaXMgbm90IHNldApDT05GSUdfVkRQQV9TSU1fQkxPQ0s9eQoj
IENPTkZJR19WRFBBX1VTRVIgaXMgbm90IHNldAojIENPTkZJR19NTFg1X1ZEUEFfU1RFRVJJ
TkdfREVCVUcgaXMgbm90IHNldApDT05GSUdfVkhPU1RfSU9UTEI9eQpDT05GSUdfVkhPU1Rf
UklORz15CkNPTkZJR19WSE9TVF9UQVNLPXkKQ09ORklHX1ZIT1NUPXkKQ09ORklHX1ZIT1NU
X01FTlU9eQojIENPTkZJR19WSE9TVF9ORVQgaXMgbm90IHNldApDT05GSUdfVkhPU1RfU0NT
ST15CkNPTkZJR19WSE9TVF9WRFBBPXkKIyBDT05GSUdfVkhPU1RfQ1JPU1NfRU5ESUFOX0xF
R0FDWSBpcyBub3Qgc2V0CgojCiMgTWljcm9zb2Z0IEh5cGVyLVYgZ3Vlc3Qgc3VwcG9ydAoj
CiMgZW5kIG9mIE1pY3Jvc29mdCBIeXBlci1WIGd1ZXN0IHN1cHBvcnQKCkNPTkZJR19HUkVZ
QlVTPXkKIyBDT05GSUdfQ09NRURJIGlzIG5vdCBzZXQKIyBDT05GSUdfU1RBR0lORyBpcyBu
b3Qgc2V0CiMgQ09ORklHX0dPTERGSVNIIGlzIG5vdCBzZXQKQ09ORklHX0NIUk9NRV9QTEFU
Rk9STVM9eQpDT05GSUdfQ0hST01FT1NfQUNQST15CkNPTkZJR19DSFJPTUVPU19MQVBUT1A9
eQpDT05GSUdfQ0hST01FT1NfUFNUT1JFPXkKQ09ORklHX0NIUk9NRU9TX1RCTUM9eQpDT05G
SUdfQ1JPU19FQz15CkNPTkZJR19DUk9TX0VDX0kyQz15CkNPTkZJR19DUk9TX0VDX1JQTVNH
PXkKQ09ORklHX0NST1NfRUNfTFBDPXkKQ09ORklHX0NST1NfRUNfUFJPVE89eQpDT05GSUdf
Q1JPU19LQkRfTEVEX0JBQ0tMSUdIVD15CkNPTkZJR19DUk9TX0VDX0NIQVJERVY9eQojIENP
TkZJR19DUk9TX0VDX0xJR0hUQkFSIGlzIG5vdCBzZXQKQ09ORklHX0NST1NfRUNfVkJDPXkK
Q09ORklHX0NST1NfRUNfU0VOU09SSFVCPXkKQ09ORklHX0NST1NfRUNfU1lTRlM9eQpDT05G
SUdfQ1JPU19VU0JQRF9MT0dHRVI9eQpDT05GSUdfQ1JPU19VU0JQRF9OT1RJRlk9eQpDT05G
SUdfQ0hST01FT1NfUFJJVkFDWV9TQ1JFRU49eQpDT05GSUdfV0lMQ09fRUM9eQpDT05GSUdf
V0lMQ09fRUNfREVCVUdGUz15CiMgQ09ORklHX1dJTENPX0VDX0VWRU5UUyBpcyBub3Qgc2V0
CkNPTkZJR19XSUxDT19FQ19URUxFTUVUUlk9eQpDT05GSUdfQ1JPU19LVU5JVF9FQ19QUk9U
T19URVNUPXkKIyBDT05GSUdfQ1pOSUNfUExBVEZPUk1TIGlzIG5vdCBzZXQKQ09ORklHX01F
TExBTk9YX1BMQVRGT1JNPXkKQ09ORklHX01MWFJFR19IT1RQTFVHPXkKQ09ORklHX01MWFJF
R19JTz15CiMgQ09ORklHX01MWFJFR19MQyBpcyBub3Qgc2V0CkNPTkZJR19OVlNXX1NOMjIw
MT15CkNPTkZJR19PTFBDX0VDPXkKQ09ORklHX1NVUkZBQ0VfUExBVEZPUk1TPXkKQ09ORklH
X1NVUkZBQ0VfM19QT1dFUl9PUFJFR0lPTj15CiMgQ09ORklHX1NVUkZBQ0VfR1BFIGlzIG5v
dCBzZXQKIyBDT05GSUdfU1VSRkFDRV9IT1RQTFVHIGlzIG5vdCBzZXQKIyBDT05GSUdfU1VS
RkFDRV9QUk8zX0JVVFRPTiBpcyBub3Qgc2V0CkNPTkZJR19YODZfUExBVEZPUk1fREVWSUNF
Uz15CkNPTkZJR19BQ1BJX1dNST15CkNPTkZJR19XTUlfQk1PRj15CkNPTkZJR19IVUFXRUlf
V01JPXkKIyBDT05GSUdfTVhNX1dNSSBpcyBub3Qgc2V0CkNPTkZJR19OVklESUFfV01JX0VD
X0JBQ0tMSUdIVD15CkNPTkZJR19YSUFPTUlfV01JPXkKQ09ORklHX0dJR0FCWVRFX1dNST15
CiMgQ09ORklHX1lPR0FCT09LIGlzIG5vdCBzZXQKQ09ORklHX0FDRVJIREY9eQpDT05GSUdf
QUNFUl9XSVJFTEVTUz15CiMgQ09ORklHX0FDRVJfV01JIGlzIG5vdCBzZXQKQ09ORklHX0FN
RF9XQlJGPXkKQ09ORklHX0FEVl9TV0JVVFRPTj15CkNPTkZJR19BU1VTX0xBUFRPUD15CkNP
TkZJR19BU1VTX1dJUkVMRVNTPXkKQ09ORklHX0FTVVNfVEYxMDNDX0RPQ0s9eQojIENPTkZJ
R19YODZfUExBVEZPUk1fRFJJVkVSU19ERUxMIGlzIG5vdCBzZXQKQ09ORklHX0ZVSklUU1Vf
TEFQVE9QPXkKIyBDT05GSUdfRlVKSVRTVV9UQUJMRVQgaXMgbm90IHNldApDT05GSUdfR1BE
X1BPQ0tFVF9GQU49eQojIENPTkZJR19YODZfUExBVEZPUk1fRFJJVkVSU19IUCBpcyBub3Qg
c2V0CiMgQ09ORklHX1dJUkVMRVNTX0hPVEtFWSBpcyBub3Qgc2V0CkNPTkZJR19MRU5PVk9f
WU1DPXkKQ09ORklHX1NFTlNPUlNfSERBUFM9eQpDT05GSUdfVEhJTktQQURfQUNQST15CiMg
Q09ORklHX1RISU5LUEFEX0FDUElfREVCVUdGQUNJTElUSUVTIGlzIG5vdCBzZXQKIyBDT05G
SUdfVEhJTktQQURfQUNQSV9ERUJVRyBpcyBub3Qgc2V0CkNPTkZJR19USElOS1BBRF9BQ1BJ
X1VOU0FGRV9MRURTPXkKIyBDT05GSUdfVEhJTktQQURfQUNQSV9WSURFTyBpcyBub3Qgc2V0
CkNPTkZJR19USElOS1BBRF9BQ1BJX0hPVEtFWV9QT0xMPXkKQ09ORklHX1RISU5LUEFEX0xN
ST15CiMgQ09ORklHX0lOVEVMX0FUT01JU1AyX0xFRCBpcyBub3Qgc2V0CkNPTkZJR19JTlRF
TF9TQVJfSU5UMTA5Mj15CkNPTkZJR19JTlRFTF9TS0xfSU5UMzQ3Mj15CkNPTkZJR19JTlRF
TF9XTUk9eQpDT05GSUdfSU5URUxfV01JX1NCTF9GV19VUERBVEU9eQpDT05GSUdfSU5URUxf
V01JX1RIVU5ERVJCT0xUPXkKQ09ORklHX0lOVEVMX0hJRF9FVkVOVD15CkNPTkZJR19JTlRF
TF9WQlROPXkKQ09ORklHX0lOVEVMX0JYVFdDX1BNSUNfVE1VPXkKIyBDT05GSUdfSU5URUxf
TVJGTERfUFdSQlROIGlzIG5vdCBzZXQKQ09ORklHX0lOVEVMX1BVTklUX0lQQz15CkNPTkZJ
R19JTlRFTF9SU1Q9eQojIENPTkZJR19JTlRFTF9TTUFSVENPTk5FQ1QgaXMgbm90IHNldApD
T05GSUdfQUNQSV9RVUlDS1NUQVJUPXkKIyBDT05GSUdfTUVFR09QQURfQU5YNzQyOCBpcyBu
b3Qgc2V0CkNPTkZJR19NU0lfRUM9eQpDT05GSUdfTVNJX1dNST15CkNPTkZJR19NU0lfV01J
X1BMQVRGT1JNPXkKQ09ORklHX1hPMTVfRUJPT0s9eQpDT05GSUdfQkFSQ09fUDUwX0dQSU89
eQpDT05GSUdfU0FNU1VOR19MQVBUT1A9eQpDT05GSUdfU0FNU1VOR19RMTA9eQpDT05GSUdf
QUNQSV9UT1NISUJBPXkKQ09ORklHX1RPU0hJQkFfQlRfUkZLSUxMPXkKQ09ORklHX1RPU0hJ
QkFfSEFQUz15CkNPTkZJR19UT1NISUJBX1dNST15CkNPTkZJR19BQ1BJX0NNUEM9eQpDT05G
SUdfTEdfTEFQVE9QPXkKIyBDT05GSUdfUEFOQVNPTklDX0xBUFRPUCBpcyBub3Qgc2V0CkNP
TkZJR19TWVNURU03Nl9BQ1BJPXkKQ09ORklHX1RPUFNUQVJfTEFQVE9QPXkKQ09ORklHX0lO
U1BVUl9QTEFURk9STV9QUk9GSUxFPXkKIyBDT05GSUdfTEVOT1ZPX1dNSV9DQU1FUkEgaXMg
bm90IHNldApDT05GSUdfRldfQVRUUl9DTEFTUz15CkNPTkZJR19JTlRFTF9TQ1VfSVBDPXkK
Q09ORklHX0lOVEVMX1NDVT15CkNPTkZJR19JTlRFTF9TQ1VfUExBVEZPUk09eQpDT05GSUdf
SU5URUxfU0NVX0lQQ19VVElMPXkKQ09ORklHX1NJRU1FTlNfU0lNQVRJQ19JUEM9eQpDT05G
SUdfU0lFTUVOU19TSU1BVElDX0lQQ19CQVRUPXkKQ09ORklHX1NJRU1FTlNfU0lNQVRJQ19J
UENfQkFUVF9BUE9MTE9MQUtFPXkKIyBDT05GSUdfU0lFTUVOU19TSU1BVElDX0lQQ19CQVRU
X0Y3MTg4WCBpcyBub3Qgc2V0CkNPTkZJR19TSUxJQ09NX1BMQVRGT1JNPXkKQ09ORklHX1dJ
Tk1BVEVfRk0wN19LRVlTPXkKIyBDT05GSUdfU0VMMzM1MF9QTEFURk9STSBpcyBub3Qgc2V0
CkNPTkZJR19IQVZFX0NMSz15CkNPTkZJR19IQVZFX0NMS19QUkVQQVJFPXkKQ09ORklHX0NP
TU1PTl9DTEs9eQojIENPTkZJR19DT01NT05fQ0xLX1dNODMxWCBpcyBub3Qgc2V0CkNPTkZJ
R19DT01NT05fQ0xLX01BWDc3Njg2PXkKQ09ORklHX0NPTU1PTl9DTEtfTUFYOTQ4NT15CiMg
Q09ORklHX0NPTU1PTl9DTEtfU0k1MzQxIGlzIG5vdCBzZXQKQ09ORklHX0NPTU1PTl9DTEtf
U0k1MzUxPXkKQ09ORklHX0NPTU1PTl9DTEtfU0k1MTQ9eQpDT05GSUdfQ09NTU9OX0NMS19T
STU0ND15CiMgQ09ORklHX0NPTU1PTl9DTEtfU0k1NzAgaXMgbm90IHNldAojIENPTkZJR19D
T01NT05fQ0xLX0NEQ0U3MDYgaXMgbm90IHNldAojIENPTkZJR19DT01NT05fQ0xLX1RQUzY4
NDcwIGlzIG5vdCBzZXQKQ09ORklHX0NPTU1PTl9DTEtfQ0RDRTkyNT15CkNPTkZJR19DT01N
T05fQ0xLX0NTMjAwMF9DUD15CkNPTkZJR19DT01NT05fQ0xLX1MyTVBTMTE9eQojIENPTkZJ
R19DTEtfVFdMIGlzIG5vdCBzZXQKQ09ORklHX0NPTU1PTl9DTEtfQVhJX0NMS0dFTj15CkNP
TkZJR19DT01NT05fQ0xLX1BBTE1BUz15CiMgQ09ORklHX0NPTU1PTl9DTEtfUFdNIGlzIG5v
dCBzZXQKQ09ORklHX0NPTU1PTl9DTEtfUlM5X1BDSUU9eQpDT05GSUdfQ09NTU9OX0NMS19T
STUyMVhYPXkKIyBDT05GSUdfQ09NTU9OX0NMS19WQzMgaXMgbm90IHNldAojIENPTkZJR19D
T01NT05fQ0xLX1ZDNSBpcyBub3Qgc2V0CkNPTkZJR19DT01NT05fQ0xLX1ZDNz15CkNPTkZJ
R19DT01NT05fQ0xLX0JENzE4WFg9eQojIENPTkZJR19DT01NT05fQ0xLX0ZJWEVEX01NSU8g
aXMgbm90IHNldApDT05GSUdfQ0xLX0xHTV9DR1U9eQpDT05GSUdfWElMSU5YX1ZDVT15CkNP
TkZJR19DT01NT05fQ0xLX1hMTlhfQ0xLV1pSRD15CkNPTkZJR19DTEtfS1VOSVRfVEVTVD15
CkNPTkZJR19DTEtfR0FURV9LVU5JVF9URVNUPXkKQ09ORklHX0NMS19GRF9LVU5JVF9URVNU
PXkKIyBDT05GSUdfSFdTUElOTE9DSyBpcyBub3Qgc2V0CgojCiMgQ2xvY2sgU291cmNlIGRy
aXZlcnMKIwpDT05GSUdfQ0xLU1JDX0k4MjUzPXkKQ09ORklHX0NMS0VWVF9JODI1Mz15CkNP
TkZJR19JODI1M19MT0NLPXkKQ09ORklHX0NMS0JMRF9JODI1Mz15CiMgZW5kIG9mIENsb2Nr
IFNvdXJjZSBkcml2ZXJzCgpDT05GSUdfTUFJTEJPWD15CkNPTkZJR19BUk1fTUhVX1YzPXkK
Q09ORklHX1BMQVRGT1JNX01IVT15CkNPTkZJR19QQ0M9eQojIENPTkZJR19BTFRFUkFfTUJP
WCBpcyBub3Qgc2V0CiMgQ09ORklHX01BSUxCT1hfVEVTVCBpcyBub3Qgc2V0CkNPTkZJR19J
T01NVV9JT1ZBPXkKQ09ORklHX0lPTU1VX0FQST15CkNPTkZJR19JT01NVV9TVVBQT1JUPXkK
CiMKIyBHZW5lcmljIElPTU1VIFBhZ2V0YWJsZSBTdXBwb3J0CiMKIyBlbmQgb2YgR2VuZXJp
YyBJT01NVSBQYWdldGFibGUgU3VwcG9ydAoKIyBDT05GSUdfSU9NTVVfREVGQVVMVF9ETUFf
U1RSSUNUIGlzIG5vdCBzZXQKIyBDT05GSUdfSU9NTVVfREVGQVVMVF9ETUFfTEFaWSBpcyBu
b3Qgc2V0CkNPTkZJR19JT01NVV9ERUZBVUxUX1BBU1NUSFJPVUdIPXkKQ09ORklHX09GX0lP
TU1VPXkKQ09ORklHX0lPTU1VX0RNQT15CiMgQ09ORklHX0lPTU1VRkQgaXMgbm90IHNldApD
T05GSUdfVklSVElPX0lPTU1VPXkKCiMKIyBSZW1vdGVwcm9jIGRyaXZlcnMKIwojIENPTkZJ
R19SRU1PVEVQUk9DIGlzIG5vdCBzZXQKIyBlbmQgb2YgUmVtb3RlcHJvYyBkcml2ZXJzCgoj
CiMgUnBtc2cgZHJpdmVycwojCkNPTkZJR19SUE1TRz15CkNPTkZJR19SUE1TR19DSEFSPXkK
IyBDT05GSUdfUlBNU0dfQ1RSTCBpcyBub3Qgc2V0CkNPTkZJR19SUE1TR19OUz15CkNPTkZJ
R19SUE1TR19RQ09NX0dMSU5LPXkKQ09ORklHX1JQTVNHX1FDT01fR0xJTktfUlBNPXkKIyBD
T05GSUdfUlBNU0dfVklSVElPIGlzIG5vdCBzZXQKIyBlbmQgb2YgUnBtc2cgZHJpdmVycwoK
Q09ORklHX1NPVU5EV0lSRT15CgojCiMgU291bmRXaXJlIERldmljZXMKIwoKIwojIFNPQyAo
U3lzdGVtIE9uIENoaXApIHNwZWNpZmljIERyaXZlcnMKIwoKIwojIEFtbG9naWMgU29DIGRy
aXZlcnMKIwojIGVuZCBvZiBBbWxvZ2ljIFNvQyBkcml2ZXJzCgojCiMgQnJvYWRjb20gU29D
IGRyaXZlcnMKIwojIGVuZCBvZiBCcm9hZGNvbSBTb0MgZHJpdmVycwoKIwojIE5YUC9GcmVl
c2NhbGUgUW9ySVEgU29DIGRyaXZlcnMKIwojIGVuZCBvZiBOWFAvRnJlZXNjYWxlIFFvcklR
IFNvQyBkcml2ZXJzCgojCiMgZnVqaXRzdSBTb0MgZHJpdmVycwojCiMgZW5kIG9mIGZ1aml0
c3UgU29DIGRyaXZlcnMKCiMKIyBpLk1YIFNvQyBkcml2ZXJzCiMKIyBlbmQgb2YgaS5NWCBT
b0MgZHJpdmVycwoKIwojIEVuYWJsZSBMaXRlWCBTb0MgQnVpbGRlciBzcGVjaWZpYyBkcml2
ZXJzCiMKQ09ORklHX0xJVEVYPXkKQ09ORklHX0xJVEVYX1NPQ19DT05UUk9MTEVSPXkKIyBl
bmQgb2YgRW5hYmxlIExpdGVYIFNvQyBCdWlsZGVyIHNwZWNpZmljIGRyaXZlcnMKCkNPTkZJ
R19XUENNNDUwX1NPQz15CgojCiMgUXVhbGNvbW0gU29DIGRyaXZlcnMKIwojIGVuZCBvZiBR
dWFsY29tbSBTb0MgZHJpdmVycwoKQ09ORklHX1NPQ19UST15CgojCiMgWGlsaW54IFNvQyBk
cml2ZXJzCiMKIyBlbmQgb2YgWGlsaW54IFNvQyBkcml2ZXJzCiMgZW5kIG9mIFNPQyAoU3lz
dGVtIE9uIENoaXApIHNwZWNpZmljIERyaXZlcnMKCiMKIyBQTSBEb21haW5zCiMKCiMKIyBB
bWxvZ2ljIFBNIERvbWFpbnMKIwojIGVuZCBvZiBBbWxvZ2ljIFBNIERvbWFpbnMKCiMKIyBC
cm9hZGNvbSBQTSBEb21haW5zCiMKIyBlbmQgb2YgQnJvYWRjb20gUE0gRG9tYWlucwoKIwoj
IGkuTVggUE0gRG9tYWlucwojCiMgZW5kIG9mIGkuTVggUE0gRG9tYWlucwoKIwojIFF1YWxj
b21tIFBNIERvbWFpbnMKIwojIGVuZCBvZiBRdWFsY29tbSBQTSBEb21haW5zCiMgZW5kIG9m
IFBNIERvbWFpbnMKCkNPTkZJR19QTV9ERVZGUkVRPXkKCiMKIyBERVZGUkVRIEdvdmVybm9y
cwojCkNPTkZJR19ERVZGUkVRX0dPVl9TSU1QTEVfT05ERU1BTkQ9eQpDT05GSUdfREVWRlJF
UV9HT1ZfUEVSRk9STUFOQ0U9eQojIENPTkZJR19ERVZGUkVRX0dPVl9QT1dFUlNBVkUgaXMg
bm90IHNldApDT05GSUdfREVWRlJFUV9HT1ZfVVNFUlNQQUNFPXkKIyBDT05GSUdfREVWRlJF
UV9HT1ZfUEFTU0lWRSBpcyBub3Qgc2V0CgojCiMgREVWRlJFUSBEcml2ZXJzCiMKIyBDT05G
SUdfUE1fREVWRlJFUV9FVkVOVCBpcyBub3Qgc2V0CkNPTkZJR19FWFRDT049eQoKIwojIEV4
dGNvbiBEZXZpY2UgRHJpdmVycwojCkNPTkZJR19FWFRDT05fQURDX0pBQ0s9eQojIENPTkZJ
R19FWFRDT05fRlNBOTQ4MCBpcyBub3Qgc2V0CiMgQ09ORklHX0VYVENPTl9HUElPIGlzIG5v
dCBzZXQKQ09ORklHX0VYVENPTl9JTlRFTF9JTlQzNDk2PXkKQ09ORklHX0VYVENPTl9JTlRF
TF9NUkZMRD15CiMgQ09ORklHX0VYVENPTl9MQzgyNDIwNlhBIGlzIG5vdCBzZXQKQ09ORklH
X0VYVENPTl9NQVgxNDU3Nz15CiMgQ09ORklHX0VYVENPTl9NQVgzMzU1IGlzIG5vdCBzZXQK
IyBDT05GSUdfRVhUQ09OX01BWDc3NjkzIGlzIG5vdCBzZXQKQ09ORklHX0VYVENPTl9NQVg3
Nzg0Mz15CiMgQ09ORklHX0VYVENPTl9QQUxNQVMgaXMgbm90IHNldAojIENPTkZJR19FWFRD
T05fUFRONTE1MCBpcyBub3Qgc2V0CiMgQ09ORklHX0VYVENPTl9SVDg5NzNBIGlzIG5vdCBz
ZXQKIyBDT05GSUdfRVhUQ09OX1NNNTUwMiBpcyBub3Qgc2V0CiMgQ09ORklHX0VYVENPTl9V
U0JfR1BJTyBpcyBub3Qgc2V0CkNPTkZJR19FWFRDT05fVVNCQ19DUk9TX0VDPXkKQ09ORklH
X01FTU9SWT15CkNPTkZJR19JSU89eQpDT05GSUdfSUlPX0JVRkZFUj15CkNPTkZJR19JSU9f
QlVGRkVSX0NCPXkKQ09ORklHX0lJT19CVUZGRVJfRE1BPXkKQ09ORklHX0lJT19CVUZGRVJf
RE1BRU5HSU5FPXkKQ09ORklHX0lJT19CVUZGRVJfSFdfQ09OU1VNRVI9eQpDT05GSUdfSUlP
X0tGSUZPX0JVRj15CkNPTkZJR19JSU9fVFJJR0dFUkVEX0JVRkZFUj15CkNPTkZJR19JSU9f
Q09ORklHRlM9eQpDT05GSUdfSUlPX0dUU19IRUxQRVI9eQpDT05GSUdfSUlPX1RSSUdHRVI9
eQpDT05GSUdfSUlPX0NPTlNVTUVSU19QRVJfVFJJR0dFUj0yCiMgQ09ORklHX0lJT19TV19E
RVZJQ0UgaXMgbm90IHNldApDT05GSUdfSUlPX1NXX1RSSUdHRVI9eQpDT05GSUdfSUlPX1RS
SUdHRVJFRF9FVkVOVD15CgojCiMgQWNjZWxlcm9tZXRlcnMKIwpDT05GSUdfQURYTDMxMz15
CkNPTkZJR19BRFhMMzEzX0kyQz15CkNPTkZJR19BRFhMMzU1PXkKQ09ORklHX0FEWEwzNTVf
STJDPXkKQ09ORklHX0FEWEwzNjc9eQpDT05GSUdfQURYTDM2N19JMkM9eQojIENPTkZJR19B
RFhMMzcyX0kyQyBpcyBub3Qgc2V0CiMgQ09ORklHX0JNQTQwMCBpcyBub3Qgc2V0CkNPTkZJ
R19CTUMxNTBfQUNDRUw9eQpDT05GSUdfQk1DMTUwX0FDQ0VMX0kyQz15CkNPTkZJR19CTUkw
ODhfQUNDRUw9eQpDT05GSUdfQk1JMDg4X0FDQ0VMX0kyQz15CiMgQ09ORklHX0RBMjgwIGlz
IG5vdCBzZXQKIyBDT05GSUdfREEzMTEgaXMgbm90IHNldApDT05GSUdfRE1BUkQwNj15CkNP
TkZJR19ETUFSRDA5PXkKQ09ORklHX0RNQVJEMTA9eQojIENPTkZJR19GWExTODk2MkFGX0ky
QyBpcyBub3Qgc2V0CiMgQ09ORklHX0lJT19LWDAyMkFfSTJDIGlzIG5vdCBzZXQKIyBDT05G
SUdfS1hTRDkgaXMgbm90IHNldApDT05GSUdfS1hDSksxMDEzPXkKQ09ORklHX01DMzIzMD15
CkNPTkZJR19NTUE3NDU1PXkKQ09ORklHX01NQTc0NTVfSTJDPXkKIyBDT05GSUdfTU1BNzY2
MCBpcyBub3Qgc2V0CkNPTkZJR19NTUE4NDUyPXkKIyBDT05GSUdfTU1BOTU1MSBpcyBub3Qg
c2V0CiMgQ09ORklHX01NQTk1NTMgaXMgbm90IHNldApDT05GSUdfTVNBMzExPXkKIyBDT05G
SUdfTVhDNDAwNSBpcyBub3Qgc2V0CkNPTkZJR19NWEM2MjU1PXkKIyBDT05GSUdfU1RLODMx
MiBpcyBub3Qgc2V0CkNPTkZJR19TVEs4QkE1MD15CiMgZW5kIG9mIEFjY2VsZXJvbWV0ZXJz
CgojCiMgQW5hbG9nIHRvIGRpZ2l0YWwgY29udmVydGVycwojCkNPTkZJR19BRDcwOTFSPXkK
Q09ORklHX0FENzA5MVI1PXkKQ09ORklHX0FENzI5MT15CkNPTkZJR19BRDc2MDY9eQpDT05G
SUdfQUQ3NjA2X0lGQUNFX1BBUkFMTEVMPXkKQ09ORklHX0FENzk5WD15CiMgQ09ORklHX0FY
UDIwWF9BREMgaXMgbm90IHNldApDT05GSUdfQVhQMjg4X0FEQz15CiMgQ09ORklHX0NDMTAw
MDFfQURDIGlzIG5vdCBzZXQKIyBDT05GSUdfREE5MTUwX0dQQURDIGlzIG5vdCBzZXQKQ09O
RklHX0VOVkVMT1BFX0RFVEVDVE9SPXkKQ09ORklHX0hYNzExPXkKIyBDT05GSUdfSU5URUxf
TVJGTERfQURDIGlzIG5vdCBzZXQKQ09ORklHX0xQODc4OF9BREM9eQpDT05GSUdfTFRDMjMw
OT15CiMgQ09ORklHX0xUQzI0NzEgaXMgbm90IHNldApDT05GSUdfTFRDMjQ4NT15CiMgQ09O
RklHX0xUQzI0OTcgaXMgbm90IHNldApDT05GSUdfTUFYMTM2Mz15CkNPTkZJR19NQVgzNDQw
OD15CiMgQ09ORklHX01BWDc3NTQxX0FEQyBpcyBub3Qgc2V0CkNPTkZJR19NQVg5NjExPXkK
Q09ORklHX01DUDM0MjI9eQojIENPTkZJR19NRURJQVRFS19NVDYzNTlfQVVYQURDIGlzIG5v
dCBzZXQKIyBDT05GSUdfTUVESUFURUtfTVQ2MzcwX0FEQyBpcyBub3Qgc2V0CkNPTkZJR19N
RU5fWjE4OF9BREM9eQpDT05GSUdfTVAyNjI5X0FEQz15CkNPTkZJR19OQVU3ODAyPXkKIyBD
T05GSUdfUEFDMTkzNCBpcyBub3Qgc2V0CkNPTkZJR19QQUxNQVNfR1BBREM9eQpDT05GSUdf
Uk41VDYxOF9BREM9eQpDT05GSUdfUklDSFRFS19SVFE2MDU2PXkKQ09ORklHX1NEX0FEQ19N
T0RVTEFUT1I9eQpDT05GSUdfU1RNUEVfQURDPXkKQ09ORklHX1RJX0FEQzA4MUM9eQojIENP
TkZJR19USV9BRFMxMDE1IGlzIG5vdCBzZXQKQ09ORklHX1RJX0FEUzExMTk9eQojIENPTkZJ
R19USV9BRFM3OTI0IGlzIG5vdCBzZXQKIyBDT05GSUdfVElfQURTMTEwMCBpcyBub3Qgc2V0
CkNPTkZJR19UV0w0MDMwX01BREM9eQojIENPTkZJR19UV0w2MDMwX0dQQURDIGlzIG5vdCBz
ZXQKQ09ORklHX1ZGNjEwX0FEQz15CkNPTkZJR19YSUxJTlhfWEFEQz15CiMgZW5kIG9mIEFu
YWxvZyB0byBkaWdpdGFsIGNvbnZlcnRlcnMKCiMKIyBBbmFsb2cgdG8gZGlnaXRhbCBhbmQg
ZGlnaXRhbCB0byBhbmFsb2cgY29udmVydGVycwojCiMgZW5kIG9mIEFuYWxvZyB0byBkaWdp
dGFsIGFuZCBkaWdpdGFsIHRvIGFuYWxvZyBjb252ZXJ0ZXJzCgojCiMgQW5hbG9nIEZyb250
IEVuZHMKIwpDT05GSUdfSUlPX1JFU0NBTEU9eQojIGVuZCBvZiBBbmFsb2cgRnJvbnQgRW5k
cwoKIwojIEFtcGxpZmllcnMKIwojIENPTkZJR19ITUM0MjUgaXMgbm90IHNldAojIGVuZCBv
ZiBBbXBsaWZpZXJzCgojCiMgQ2FwYWNpdGFuY2UgdG8gZGlnaXRhbCBjb252ZXJ0ZXJzCiMK
IyBDT05GSUdfQUQ3MTUwIGlzIG5vdCBzZXQKQ09ORklHX0FENzc0Nj15CiMgZW5kIG9mIENh
cGFjaXRhbmNlIHRvIGRpZ2l0YWwgY29udmVydGVycwoKIwojIENoZW1pY2FsIFNlbnNvcnMK
IwpDT05GSUdfQU9TT05HX0FHUzAyTUE9eQojIENPTkZJR19BVExBU19QSF9TRU5TT1IgaXMg
bm90IHNldApDT05GSUdfQVRMQVNfRVpPX1NFTlNPUj15CkNPTkZJR19CTUU2ODA9eQpDT05G
SUdfQk1FNjgwX0kyQz15CiMgQ09ORklHX0NDUzgxMSBpcyBub3Qgc2V0CkNPTkZJR19FTlMx
NjA9eQpDT05GSUdfRU5TMTYwX0kyQz15CkNPTkZJR19JQVFDT1JFPXkKIyBDT05GSUdfU0NE
MzBfQ09SRSBpcyBub3Qgc2V0CiMgQ09ORklHX1NDRDRYIGlzIG5vdCBzZXQKIyBDT05GSUdf
U0VOU0lSSU9OX1NHUDMwIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU0lSSU9OX1NHUDQwIGlz
IG5vdCBzZXQKQ09ORklHX1NQUzMwPXkKQ09ORklHX1NQUzMwX0kyQz15CkNPTkZJR19TRU5T
RUFJUl9TVU5SSVNFX0NPMj15CkNPTkZJR19WWjg5WD15CiMgZW5kIG9mIENoZW1pY2FsIFNl
bnNvcnMKCiMgQ09ORklHX0lJT19DUk9TX0VDX1NFTlNPUlNfQ09SRSBpcyBub3Qgc2V0Cgoj
CiMgSGlkIFNlbnNvciBJSU8gQ29tbW9uCiMKIyBlbmQgb2YgSGlkIFNlbnNvciBJSU8gQ29t
bW9uCgpDT05GSUdfSUlPX0lOVl9TRU5TT1JTX1RJTUVTVEFNUD15CkNPTkZJR19JSU9fTVNf
U0VOU09SU19JMkM9eQoKIwojIElJTyBTQ01JIFNlbnNvcnMKIwojIGVuZCBvZiBJSU8gU0NN
SSBTZW5zb3JzCgojCiMgU1NQIFNlbnNvciBDb21tb24KIwojIGVuZCBvZiBTU1AgU2Vuc29y
IENvbW1vbgoKQ09ORklHX0lJT19TVF9TRU5TT1JTX0kyQz15CkNPTkZJR19JSU9fU1RfU0VO
U09SU19DT1JFPXkKCiMKIyBEaWdpdGFsIHRvIGFuYWxvZyBjb252ZXJ0ZXJzCiMKQ09ORklH
X0FENTA2ND15CiMgQ09ORklHX0FENTM4MCBpcyBub3Qgc2V0CkNPTkZJR19BRDU0NDY9eQpD
T05GSUdfQUQ1NTkyUl9CQVNFPXkKQ09ORklHX0FENTU5M1I9eQojIENPTkZJR19BRDU2OTZf
STJDIGlzIG5vdCBzZXQKIyBDT05GSUdfRFBPVF9EQUMgaXMgbm90IHNldApDT05GSUdfRFM0
NDI0PXkKIyBDT05GSUdfTTYyMzMyIGlzIG5vdCBzZXQKQ09ORklHX01BWDUxNz15CkNPTkZJ
R19NQVg1ODIxPXkKIyBDT05GSUdfTUNQNDcyNSBpcyBub3Qgc2V0CiMgQ09ORklHX01DUDQ3
MjggaXMgbm90IHNldAojIENPTkZJR19USV9EQUM1NTcxIGlzIG5vdCBzZXQKQ09ORklHX1ZG
NjEwX0RBQz15CiMgZW5kIG9mIERpZ2l0YWwgdG8gYW5hbG9nIGNvbnZlcnRlcnMKCiMKIyBJ
SU8gZHVtbXkgZHJpdmVyCiMKIyBlbmQgb2YgSUlPIGR1bW15IGRyaXZlcgoKIwojIEZpbHRl
cnMKIwojIGVuZCBvZiBGaWx0ZXJzCgojCiMgRnJlcXVlbmN5IFN5bnRoZXNpemVycyBERFMv
UExMCiMKCiMKIyBDbG9jayBHZW5lcmF0b3IvRGlzdHJpYnV0aW9uCiMKIyBlbmQgb2YgQ2xv
Y2sgR2VuZXJhdG9yL0Rpc3RyaWJ1dGlvbgoKIwojIFBoYXNlLUxvY2tlZCBMb29wIChQTEwp
IGZyZXF1ZW5jeSBzeW50aGVzaXplcnMKIwpDT05GSUdfQURNRk0yMDAwPXkKIyBlbmQgb2Yg
UGhhc2UtTG9ja2VkIExvb3AgKFBMTCkgZnJlcXVlbmN5IHN5bnRoZXNpemVycwojIGVuZCBv
ZiBGcmVxdWVuY3kgU3ludGhlc2l6ZXJzIEREUy9QTEwKCiMKIyBEaWdpdGFsIGd5cm9zY29w
ZSBzZW5zb3JzCiMKQ09ORklHX0JNRzE2MD15CkNPTkZJR19CTUcxNjBfSTJDPXkKIyBDT05G
SUdfRlhBUzIxMDAyQyBpcyBub3Qgc2V0CiMgQ09ORklHX01QVTMwNTBfSTJDIGlzIG5vdCBz
ZXQKIyBDT05GSUdfSUlPX1NUX0dZUk9fM0FYSVMgaXMgbm90IHNldAojIENPTkZJR19JVEcz
MjAwIGlzIG5vdCBzZXQKIyBlbmQgb2YgRGlnaXRhbCBneXJvc2NvcGUgc2Vuc29ycwoKIwoj
IEhlYWx0aCBTZW5zb3JzCiMKCiMKIyBIZWFydCBSYXRlIE1vbml0b3JzCiMKIyBDT05GSUdf
QUZFNDQwNCBpcyBub3Qgc2V0CiMgQ09ORklHX01BWDMwMTAwIGlzIG5vdCBzZXQKQ09ORklH
X01BWDMwMTAyPXkKIyBlbmQgb2YgSGVhcnQgUmF0ZSBNb25pdG9ycwojIGVuZCBvZiBIZWFs
dGggU2Vuc29ycwoKIwojIEh1bWlkaXR5IHNlbnNvcnMKIwojIENPTkZJR19BTTIzMTUgaXMg
bm90IHNldAojIENPTkZJR19ESFQxMSBpcyBub3Qgc2V0CiMgQ09ORklHX0hEQzEwMFggaXMg
bm90IHNldApDT05GSUdfSERDMjAxMD15CkNPTkZJR19IREMzMDIwPXkKQ09ORklHX0hUUzIy
MT15CkNPTkZJR19IVFMyMjFfSTJDPXkKQ09ORklHX0hUVTIxPXkKQ09ORklHX1NJNzAwNT15
CkNPTkZJR19TSTcwMjA9eQojIGVuZCBvZiBIdW1pZGl0eSBzZW5zb3JzCgojCiMgSW5lcnRp
YWwgbWVhc3VyZW1lbnQgdW5pdHMKIwojIENPTkZJR19CTUkxNjBfSTJDIGlzIG5vdCBzZXQK
IyBDT05GSUdfQk1JMzIzX0kyQyBpcyBub3Qgc2V0CkNPTkZJR19CT1NDSF9CTk8wNTU9eQpD
T05GSUdfQk9TQ0hfQk5PMDU1X0kyQz15CiMgQ09ORklHX0ZYT1M4NzAwX0kyQyBpcyBub3Qg
c2V0CkNPTkZJR19LTVg2MT15CkNPTkZJR19JTlZfSUNNNDI2MDA9eQpDT05GSUdfSU5WX0lD
TTQyNjAwX0kyQz15CkNPTkZJR19JTlZfTVBVNjA1MF9JSU89eQpDT05GSUdfSU5WX01QVTYw
NTBfSTJDPXkKQ09ORklHX0lJT19TVF9MU002RFNYPXkKQ09ORklHX0lJT19TVF9MU002RFNY
X0kyQz15CkNPTkZJR19JSU9fU1RfTFNNNkRTWF9JM0M9eQojIGVuZCBvZiBJbmVydGlhbCBt
ZWFzdXJlbWVudCB1bml0cwoKIwojIExpZ2h0IHNlbnNvcnMKIwpDT05GSUdfQUNQSV9BTFM9
eQojIENPTkZJR19BREpEX1MzMTEgaXMgbm90IHNldAojIENPTkZJR19BRFVYMTAyMCBpcyBu
b3Qgc2V0CiMgQ09ORklHX0FMMzAxMCBpcyBub3Qgc2V0CiMgQ09ORklHX0FMMzMyMEEgaXMg
bm90IHNldApDT05GSUdfQVBEUzkzMDA9eQojIENPTkZJR19BUERTOTMwNiBpcyBub3Qgc2V0
CiMgQ09ORklHX0FQRFM5OTYwIGlzIG5vdCBzZXQKQ09ORklHX0FTNzMyMTE9eQpDT05GSUdf
QkgxNzUwPXkKQ09ORklHX0JIMTc4MD15CkNPTkZJR19DTTMyMTgxPXkKIyBDT05GSUdfQ00z
MjMyIGlzIG5vdCBzZXQKQ09ORklHX0NNMzMyMz15CkNPTkZJR19DTTM2MDU9eQojIENPTkZJ
R19DTTM2NjUxIGlzIG5vdCBzZXQKQ09ORklHX0dQMkFQMDAyPXkKIyBDT05GSUdfR1AyQVAw
MjBBMDBGIGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfSVNMMjkwMTg9eQpDT05GSUdfU0VO
U09SU19JU0wyOTAyOD15CkNPTkZJR19JU0wyOTEyNT15CkNPTkZJR19JU0w3NjY4Mj15CkNP
TkZJR19KU0ExMjEyPXkKQ09ORklHX1JPSE1fQlUyNzAwOD15CiMgQ09ORklHX1JPSE1fQlUy
NzAzNCBpcyBub3Qgc2V0CkNPTkZJR19SUFIwNTIxPXkKQ09ORklHX0xUUjM5MD15CkNPTkZJ
R19MVFI1MDE9eQojIENPTkZJR19MVFJGMjE2QSBpcyBub3Qgc2V0CkNPTkZJR19MVjAxMDRD
Uz15CkNPTkZJR19NQVg0NDAwMD15CkNPTkZJR19NQVg0NDAwOT15CiMgQ09ORklHX05PQTEz
MDUgaXMgbm90IHNldApDT05GSUdfT1BUMzAwMT15CkNPTkZJR19PUFQ0MDAxPXkKIyBDT05G
SUdfUEExMjIwMzAwMSBpcyBub3Qgc2V0CkNPTkZJR19TSTExMzM9eQpDT05GSUdfU0kxMTQ1
PXkKQ09ORklHX1NUSzMzMTA9eQpDT05GSUdfU1RfVVZJUzI1PXkKQ09ORklHX1NUX1VWSVMy
NV9JMkM9eQpDT05GSUdfVENTMzQxND15CkNPTkZJR19UQ1MzNDcyPXkKIyBDT05GSUdfU0VO
U09SU19UU0wyNTYzIGlzIG5vdCBzZXQKQ09ORklHX1RTTDI1ODM9eQpDT05GSUdfVFNMMjU5
MT15CkNPTkZJR19UU0wyNzcyPXkKIyBDT05GSUdfVFNMNDUzMSBpcyBub3Qgc2V0CkNPTkZJ
R19VUzUxODJEPXkKQ09ORklHX1ZDTkw0MDAwPXkKIyBDT05GSUdfVkNOTDQwMzUgaXMgbm90
IHNldApDT05GSUdfVkVNTDYwMzA9eQpDT05GSUdfVkVNTDYwNDA9eQpDT05GSUdfVkVNTDYw
NzA9eQpDT05GSUdfVkVNTDYwNzU9eQojIENPTkZJR19WTDYxODAgaXMgbm90IHNldApDT05G
SUdfWk9QVDIyMDE9eQojIGVuZCBvZiBMaWdodCBzZW5zb3JzCgojCiMgTWFnbmV0b21ldGVy
IHNlbnNvcnMKIwpDT05GSUdfQUY4MTMzSj15CkNPTkZJR19BSzg5NzQ9eQpDT05GSUdfQUs4
OTc1PXkKIyBDT05GSUdfQUswOTkxMSBpcyBub3Qgc2V0CkNPTkZJR19CTUMxNTBfTUFHTj15
CkNPTkZJR19CTUMxNTBfTUFHTl9JMkM9eQojIENPTkZJR19NQUczMTEwIGlzIG5vdCBzZXQK
Q09ORklHX01NQzM1MjQwPXkKQ09ORklHX0lJT19TVF9NQUdOXzNBWElTPXkKQ09ORklHX0lJ
T19TVF9NQUdOX0kyQ18zQVhJUz15CiMgQ09ORklHX1NFTlNPUlNfSE1DNTg0M19JMkMgaXMg
bm90IHNldAojIENPTkZJR19TRU5TT1JTX1JNMzEwMF9JMkMgaXMgbm90IHNldApDT05GSUdf
VElfVE1BRzUyNzM9eQpDT05GSUdfWUFNQUhBX1lBUzUzMD15CiMgZW5kIG9mIE1hZ25ldG9t
ZXRlciBzZW5zb3JzCgojCiMgTXVsdGlwbGV4ZXJzCiMKQ09ORklHX0lJT19NVVg9eQojIGVu
ZCBvZiBNdWx0aXBsZXhlcnMKCiMKIyBJbmNsaW5vbWV0ZXIgc2Vuc29ycwojCiMgZW5kIG9m
IEluY2xpbm9tZXRlciBzZW5zb3JzCgpDT05GSUdfSUlPX0dUU19LVU5JVF9URVNUPXkKQ09O
RklHX0lJT19SRVNDQUxFX0tVTklUX1RFU1Q9eQpDT05GSUdfSUlPX0ZPUk1BVF9LVU5JVF9U
RVNUPXkKCiMKIyBUcmlnZ2VycyAtIHN0YW5kYWxvbmUKIwojIENPTkZJR19JSU9fSFJUSU1F
Ul9UUklHR0VSIGlzIG5vdCBzZXQKIyBDT05GSUdfSUlPX0lOVEVSUlVQVF9UUklHR0VSIGlz
IG5vdCBzZXQKIyBDT05GSUdfSUlPX1RJR0hUTE9PUF9UUklHR0VSIGlzIG5vdCBzZXQKIyBD
T05GSUdfSUlPX1NZU0ZTX1RSSUdHRVIgaXMgbm90IHNldAojIGVuZCBvZiBUcmlnZ2VycyAt
IHN0YW5kYWxvbmUKCiMKIyBMaW5lYXIgYW5kIGFuZ3VsYXIgcG9zaXRpb24gc2Vuc29ycwoj
CiMgZW5kIG9mIExpbmVhciBhbmQgYW5ndWxhciBwb3NpdGlvbiBzZW5zb3JzCgojCiMgRGln
aXRhbCBwb3RlbnRpb21ldGVycwojCkNPTkZJR19BRDUxMTA9eQojIENPTkZJR19BRDUyNzIg
aXMgbm90IHNldApDT05GSUdfRFMxODAzPXkKQ09ORklHX01BWDU0MzI9eQpDT05GSUdfTUNQ
NDAxOD15CkNPTkZJR19NQ1A0NTMxPXkKQ09ORklHX1RQTDAxMDI9eQojIGVuZCBvZiBEaWdp
dGFsIHBvdGVudGlvbWV0ZXJzCgojCiMgRGlnaXRhbCBwb3RlbnRpb3N0YXRzCiMKQ09ORklH
X0xNUDkxMDAwPXkKIyBlbmQgb2YgRGlnaXRhbCBwb3RlbnRpb3N0YXRzCgojCiMgUHJlc3N1
cmUgc2Vuc29ycwojCiMgQ09ORklHX0FCUDA2ME1HIGlzIG5vdCBzZXQKIyBDT05GSUdfUk9I
TV9CTTEzOTAgaXMgbm90IHNldApDT05GSUdfQk1QMjgwPXkKQ09ORklHX0JNUDI4MF9JMkM9
eQojIENPTkZJR19ETEhMNjBEIGlzIG5vdCBzZXQKQ09ORklHX0RQUzMxMD15CiMgQ09ORklH
X0hQMDMgaXMgbm90IHNldApDT05GSUdfSFNDMDMwUEE9eQpDT05GSUdfSFNDMDMwUEFfSTJD
PXkKQ09ORklHX0lDUDEwMTAwPXkKQ09ORklHX01QTDExNT15CkNPTkZJR19NUEwxMTVfSTJD
PXkKQ09ORklHX01QTDMxMTU9eQpDT05GSUdfTVBSTFMwMDI1UEE9eQpDT05GSUdfTVBSTFMw
MDI1UEFfSTJDPXkKQ09ORklHX01TNTYxMT15CkNPTkZJR19NUzU2MTFfSTJDPXkKQ09ORklH
X01TNTYzNz15CiMgQ09ORklHX0lJT19TVF9QUkVTUyBpcyBub3Qgc2V0CiMgQ09ORklHX1Q1
NDAzIGlzIG5vdCBzZXQKIyBDT05GSUdfSFAyMDZDIGlzIG5vdCBzZXQKIyBDT05GSUdfWlBB
MjMyNiBpcyBub3Qgc2V0CiMgZW5kIG9mIFByZXNzdXJlIHNlbnNvcnMKCiMKIyBMaWdodG5p
bmcgc2Vuc29ycwojCiMgZW5kIG9mIExpZ2h0bmluZyBzZW5zb3JzCgojCiMgUHJveGltaXR5
IGFuZCBkaXN0YW5jZSBzZW5zb3JzCiMKIyBDT05GSUdfQ1JPU19FQ19NS0JQX1BST1hJTUlU
WSBpcyBub3Qgc2V0CkNPTkZJR19JUlNEMjAwPXkKQ09ORklHX0lTTDI5NTAxPXkKIyBDT05G
SUdfTElEQVJfTElURV9WMiBpcyBub3Qgc2V0CkNPTkZJR19NQjEyMzI9eQojIENPTkZJR19Q
SU5HIGlzIG5vdCBzZXQKQ09ORklHX1JGRDc3NDAyPXkKQ09ORklHX1NSRjA0PXkKQ09ORklH
X1NYX0NPTU1PTj15CiMgQ09ORklHX1NYOTMxMCBpcyBub3Qgc2V0CkNPTkZJR19TWDkzMjQ9
eQpDT05GSUdfU1g5MzYwPXkKQ09ORklHX1NYOTUwMD15CkNPTkZJR19TUkYwOD15CkNPTkZJ
R19WQ05MMzAyMD15CkNPTkZJR19WTDUzTDBYX0kyQz15CiMgZW5kIG9mIFByb3hpbWl0eSBh
bmQgZGlzdGFuY2Ugc2Vuc29ycwoKIwojIFJlc29sdmVyIHRvIGRpZ2l0YWwgY29udmVydGVy
cwojCiMgZW5kIG9mIFJlc29sdmVyIHRvIGRpZ2l0YWwgY29udmVydGVycwoKIwojIFRlbXBl
cmF0dXJlIHNlbnNvcnMKIwpDT05GSUdfTUxYOTA2MTQ9eQojIENPTkZJR19NTFg5MDYzMiBp
cyBub3Qgc2V0CiMgQ09ORklHX01MWDkwNjM1IGlzIG5vdCBzZXQKQ09ORklHX1RNUDAwNj15
CkNPTkZJR19UTVAwMDc9eQojIENPTkZJR19UTVAxMTcgaXMgbm90IHNldApDT05GSUdfVFNZ
UzAxPXkKIyBDT05GSUdfVFNZUzAyRCBpcyBub3Qgc2V0CiMgQ09ORklHX01BWDMwMjA4IGlz
IG5vdCBzZXQKIyBDT05GSUdfTUNQOTYwMCBpcyBub3Qgc2V0CiMgZW5kIG9mIFRlbXBlcmF0
dXJlIHNlbnNvcnMKCkNPTkZJR19QV009eQpDT05GSUdfUFdNX0FUTUVMX0hMQ0RDX1BXTT15
CkNPTkZJR19QV01fQVRNRUxfVENCPXkKQ09ORklHX1BXTV9DTEs9eQpDT05GSUdfUFdNX0NS
T1NfRUM9eQpDT05GSUdfUFdNX0ZTTF9GVE09eQojIENPTkZJR19QV01fSU5URUxfTEdNIGlz
IG5vdCBzZXQKIyBDT05GSUdfUFdNX0xQMzk0MyBpcyBub3Qgc2V0CiMgQ09ORklHX1BXTV9M
UFNTX1BMQVRGT1JNIGlzIG5vdCBzZXQKIyBDT05GSUdfUFdNX05UWEVDIGlzIG5vdCBzZXQK
Q09ORklHX1BXTV9QQ0E5Njg1PXkKQ09ORklHX1BXTV9TVE1QRT15CkNPTkZJR19QV01fVFdM
PXkKQ09ORklHX1BXTV9UV0xfTEVEPXkKQ09ORklHX1BXTV9YSUxJTlg9eQoKIwojIElSUSBj
aGlwIHN1cHBvcnQKIwpDT05GSUdfSVJRQ0hJUD15CkNPTkZJR19BTF9GSUM9eQpDT05GSUdf
TEFOOTY2WF9PSUM9eQojIENPTkZJR19YSUxJTlhfSU5UQyBpcyBub3Qgc2V0CiMgZW5kIG9m
IElSUSBjaGlwIHN1cHBvcnQKCiMgQ09ORklHX0lQQUNLX0JVUyBpcyBub3Qgc2V0CiMgQ09O
RklHX1JFU0VUX0NPTlRST0xMRVIgaXMgbm90IHNldAoKIwojIFBIWSBTdWJzeXN0ZW0KIwpD
T05GSUdfR0VORVJJQ19QSFk9eQpDT05GSUdfR0VORVJJQ19QSFlfTUlQSV9EUEhZPXkKQ09O
RklHX1BIWV9DQU5fVFJBTlNDRUlWRVI9eQoKIwojIFBIWSBkcml2ZXJzIGZvciBCcm9hZGNv
bSBwbGF0Zm9ybXMKIwpDT05GSUdfQkNNX0tPTkFfVVNCMl9QSFk9eQojIGVuZCBvZiBQSFkg
ZHJpdmVycyBmb3IgQnJvYWRjb20gcGxhdGZvcm1zCgpDT05GSUdfUEhZX0NBREVOQ0VfVE9S
UkVOVD15CiMgQ09ORklHX1BIWV9DQURFTkNFX0RQSFkgaXMgbm90IHNldAojIENPTkZJR19Q
SFlfQ0FERU5DRV9EUEhZX1JYIGlzIG5vdCBzZXQKQ09ORklHX1BIWV9DQURFTkNFX1NBTFZP
PXkKQ09ORklHX1BIWV9QWEFfMjhOTV9IU0lDPXkKQ09ORklHX1BIWV9QWEFfMjhOTV9VU0Iy
PXkKIyBDT05GSUdfUEhZX0xBTjk2NlhfU0VSREVTIGlzIG5vdCBzZXQKIyBDT05GSUdfUEhZ
X09DRUxPVF9TRVJERVMgaXMgbm90IHNldAojIENPTkZJR19QSFlfSU5URUxfTEdNX0NPTUJP
IGlzIG5vdCBzZXQKIyBDT05GSUdfUEhZX0lOVEVMX0xHTV9FTU1DIGlzIG5vdCBzZXQKIyBl
bmQgb2YgUEhZIFN1YnN5c3RlbQoKQ09ORklHX1BPV0VSQ0FQPXkKQ09ORklHX0lETEVfSU5K
RUNUPXkKIyBDT05GSUdfRFRQTSBpcyBub3Qgc2V0CkNPTkZJR19NQ0I9eQojIENPTkZJR19N
Q0JfTFBDIGlzIG5vdCBzZXQKCiMKIyBQZXJmb3JtYW5jZSBtb25pdG9yIHN1cHBvcnQKIwoj
IGVuZCBvZiBQZXJmb3JtYW5jZSBtb25pdG9yIHN1cHBvcnQKCiMgQ09ORklHX1JBUyBpcyBu
b3Qgc2V0CgojCiMgQW5kcm9pZAojCiMgQ09ORklHX0FORFJPSURfQklOREVSX0lQQyBpcyBu
b3Qgc2V0CiMgZW5kIG9mIEFuZHJvaWQKCiMgQ09ORklHX0RBWCBpcyBub3Qgc2V0CkNPTkZJ
R19OVk1FTT15CkNPTkZJR19OVk1FTV9TWVNGUz15CkNPTkZJR19OVk1FTV9MQVlPVVRTPXkK
CiMKIyBMYXlvdXQgVHlwZXMKIwojIENPTkZJR19OVk1FTV9MQVlPVVRfU0wyOF9WUEQgaXMg
bm90IHNldApDT05GSUdfTlZNRU1fTEFZT1VUX09OSUVfVExWPXkKIyBlbmQgb2YgTGF5b3V0
IFR5cGVzCgpDT05GSUdfTlZNRU1fUk1FTT15CkNPTkZJR19OVk1FTV9VX0JPT1RfRU5WPXkK
CiMKIyBIVyB0cmFjaW5nIHN1cHBvcnQKIwpDT05GSUdfU1RNPXkKQ09ORklHX1NUTV9QUk9U
T19CQVNJQz15CkNPTkZJR19TVE1fUFJPVE9fU1lTX1Q9eQpDT05GSUdfU1RNX0RVTU1ZPXkK
IyBDT05GSUdfU1RNX1NPVVJDRV9DT05TT0xFIGlzIG5vdCBzZXQKQ09ORklHX1NUTV9TT1VS
Q0VfSEVBUlRCRUFUPXkKQ09ORklHX0lOVEVMX1RIPXkKQ09ORklHX0lOVEVMX1RIX0FDUEk9
eQpDT05GSUdfSU5URUxfVEhfR1RIPXkKQ09ORklHX0lOVEVMX1RIX1NUSD15CkNPTkZJR19J
TlRFTF9USF9NU1U9eQpDT05GSUdfSU5URUxfVEhfUFRJPXkKIyBlbmQgb2YgSFcgdHJhY2lu
ZyBzdXBwb3J0CgojIENPTkZJR19GUEdBIGlzIG5vdCBzZXQKIyBDT05GSUdfRlNJIGlzIG5v
dCBzZXQKIyBDT05GSUdfVEVFIGlzIG5vdCBzZXQKQ09ORklHX01VTFRJUExFWEVSPXkKCiMK
IyBNdWx0aXBsZXhlciBkcml2ZXJzCiMKQ09ORklHX01VWF9BREc3OTJBPXkKQ09ORklHX01V
WF9HUElPPXkKQ09ORklHX01VWF9NTUlPPXkKIyBlbmQgb2YgTXVsdGlwbGV4ZXIgZHJpdmVy
cwoKQ09ORklHX1BNX09QUD15CkNPTkZJR19TSU9YPXkKIyBDT05GSUdfU0lPWF9CVVNfR1BJ
TyBpcyBub3Qgc2V0CkNPTkZJR19TTElNQlVTPXkKQ09ORklHX1NMSU1fUUNPTV9DVFJMPXkK
Q09ORklHX0lOVEVSQ09OTkVDVD15CkNPTkZJR19DT1VOVEVSPXkKQ09ORklHX0lOVEVSUlVQ
VF9DTlQ9eQojIENPTkZJR19NT1NUIGlzIG5vdCBzZXQKIyBDT05GSUdfUEVDSSBpcyBub3Qg
c2V0CkNPTkZJR19IVEU9eQojIGVuZCBvZiBEZXZpY2UgRHJpdmVycwoKIwojIEZpbGUgc3lz
dGVtcwojCkNPTkZJR19EQ0FDSEVfV09SRF9BQ0NFU1M9eQpDT05GSUdfVkFMSURBVEVfRlNf
UEFSU0VSPXkKQ09ORklHX0ZTX0lPTUFQPXkKQ09ORklHX0JVRkZFUl9IRUFEPXkKQ09ORklH
X0xFR0FDWV9ESVJFQ1RfSU89eQojIENPTkZJR19FWFQyX0ZTIGlzIG5vdCBzZXQKQ09ORklH
X0VYVDNfRlM9eQpDT05GSUdfRVhUM19GU19QT1NJWF9BQ0w9eQpDT05GSUdfRVhUM19GU19T
RUNVUklUWT15CkNPTkZJR19FWFQ0X0ZTPXkKQ09ORklHX0VYVDRfVVNFX0ZPUl9FWFQyPXkK
Q09ORklHX0VYVDRfRlNfUE9TSVhfQUNMPXkKQ09ORklHX0VYVDRfRlNfU0VDVVJJVFk9eQoj
IENPTkZJR19FWFQ0X0RFQlVHIGlzIG5vdCBzZXQKQ09ORklHX0VYVDRfS1VOSVRfVEVTVFM9
eQpDT05GSUdfSkJEMj15CkNPTkZJR19KQkQyX0RFQlVHPXkKQ09ORklHX0ZTX01CQ0FDSEU9
eQpDT05GSUdfUkVJU0VSRlNfRlM9eQpDT05GSUdfUkVJU0VSRlNfQ0hFQ0s9eQpDT05GSUdf
UkVJU0VSRlNfUFJPQ19JTkZPPXkKIyBDT05GSUdfUkVJU0VSRlNfRlNfWEFUVFIgaXMgbm90
IHNldAojIENPTkZJR19KRlNfRlMgaXMgbm90IHNldAojIENPTkZJR19YRlNfRlMgaXMgbm90
IHNldApDT05GSUdfR0ZTMl9GUz15CiMgQ09ORklHX0JUUkZTX0ZTIGlzIG5vdCBzZXQKQ09O
RklHX05JTEZTMl9GUz15CkNPTkZJR19GMkZTX0ZTPXkKIyBDT05GSUdfRjJGU19TVEFUX0ZT
IGlzIG5vdCBzZXQKIyBDT05GSUdfRjJGU19GU19YQVRUUiBpcyBub3Qgc2V0CiMgQ09ORklH
X0YyRlNfQ0hFQ0tfRlMgaXMgbm90IHNldApDT05GSUdfRjJGU19GQVVMVF9JTkpFQ1RJT049
eQojIENPTkZJR19GMkZTX0ZTX0NPTVBSRVNTSU9OIGlzIG5vdCBzZXQKQ09ORklHX0YyRlNf
SU9TVEFUPXkKQ09ORklHX0JDQUNIRUZTX0ZTPXkKIyBDT05GSUdfQkNBQ0hFRlNfUVVPVEEg
aXMgbm90IHNldAojIENPTkZJR19CQ0FDSEVGU19FUkFTVVJFX0NPRElORyBpcyBub3Qgc2V0
CkNPTkZJR19CQ0FDSEVGU19QT1NJWF9BQ0w9eQojIENPTkZJR19CQ0FDSEVGU19ERUJVRyBp
cyBub3Qgc2V0CiMgQ09ORklHX0JDQUNIRUZTX1RFU1RTIGlzIG5vdCBzZXQKIyBDT05GSUdf
QkNBQ0hFRlNfTE9DS19USU1FX1NUQVRTIGlzIG5vdCBzZXQKQ09ORklHX0JDQUNIRUZTX05P
X0xBVEVOQ1lfQUNDVD15CkNPTkZJR19CQ0FDSEVGU19TSVhfT1BUSU1JU1RJQ19TUElOPXkK
Q09ORklHX01FQU5fQU5EX1ZBUklBTkNFX1VOSVRfVEVTVD15CkNPTkZJR19GU19QT1NJWF9B
Q0w9eQpDT05GSUdfRVhQT1JURlM9eQojIENPTkZJR19FWFBPUlRGU19CTE9DS19PUFMgaXMg
bm90IHNldApDT05GSUdfRklMRV9MT0NLSU5HPXkKIyBDT05GSUdfRlNfRU5DUllQVElPTiBp
cyBub3Qgc2V0CiMgQ09ORklHX0ZTX1ZFUklUWSBpcyBub3Qgc2V0CkNPTkZJR19GU05PVElG
WT15CiMgQ09ORklHX0ROT1RJRlkgaXMgbm90IHNldApDT05GSUdfSU5PVElGWV9VU0VSPXkK
Q09ORklHX0ZBTk9USUZZPXkKIyBDT05GSUdfUVVPVEEgaXMgbm90IHNldAojIENPTkZJR19R
VU9UQV9ORVRMSU5LX0lOVEVSRkFDRSBpcyBub3Qgc2V0CkNPTkZJR19RVU9UQUNUTD15CkNP
TkZJR19BVVRPRlNfRlM9eQojIENPTkZJR19GVVNFX0ZTIGlzIG5vdCBzZXQKIyBDT05GSUdf
T1ZFUkxBWV9GUyBpcyBub3Qgc2V0CgojCiMgQ2FjaGVzCiMKQ09ORklHX05FVEZTX1NVUFBP
UlQ9eQojIENPTkZJR19ORVRGU19TVEFUUyBpcyBub3Qgc2V0CiMgQ09ORklHX0ZTQ0FDSEUg
aXMgbm90IHNldAojIGVuZCBvZiBDYWNoZXMKCiMKIyBDRC1ST00vRFZEIEZpbGVzeXN0ZW1z
CiMKQ09ORklHX0lTTzk2NjBfRlM9eQpDT05GSUdfSk9MSUVUPXkKIyBDT05GSUdfWklTT0ZT
IGlzIG5vdCBzZXQKQ09ORklHX1VERl9GUz15CiMgZW5kIG9mIENELVJPTS9EVkQgRmlsZXN5
c3RlbXMKCiMKIyBET1MvRkFUL0VYRkFUL05UIEZpbGVzeXN0ZW1zCiMKQ09ORklHX0ZBVF9G
Uz15CkNPTkZJR19NU0RPU19GUz15CkNPTkZJR19WRkFUX0ZTPXkKQ09ORklHX0ZBVF9ERUZB
VUxUX0NPREVQQUdFPTQzNwpDT05GSUdfRkFUX0RFRkFVTFRfSU9DSEFSU0VUPSJpc284ODU5
LTEiCiMgQ09ORklHX0ZBVF9ERUZBVUxUX1VURjggaXMgbm90IHNldApDT05GSUdfRkFUX0tV
TklUX1RFU1Q9eQpDT05GSUdfRVhGQVRfRlM9eQpDT05GSUdfRVhGQVRfREVGQVVMVF9JT0NI
QVJTRVQ9InV0ZjgiCkNPTkZJR19OVEZTM19GUz15CkNPTkZJR19OVEZTM19MWlhfWFBSRVNT
PXkKQ09ORklHX05URlMzX0ZTX1BPU0lYX0FDTD15CkNPTkZJR19OVEZTX0ZTPXkKIyBlbmQg
b2YgRE9TL0ZBVC9FWEZBVC9OVCBGaWxlc3lzdGVtcwoKIwojIFBzZXVkbyBmaWxlc3lzdGVt
cwojCkNPTkZJR19QUk9DX0ZTPXkKIyBDT05GSUdfUFJPQ19LQ09SRSBpcyBub3Qgc2V0CkNP
TkZJR19QUk9DX1NZU0NUTD15CkNPTkZJR19QUk9DX1BBR0VfTU9OSVRPUj15CkNPTkZJR19Q
Uk9DX0NISUxEUkVOPXkKQ09ORklHX1BST0NfUElEX0FSQ0hfU1RBVFVTPXkKQ09ORklHX0tF
Uk5GUz15CkNPTkZJR19TWVNGUz15CkNPTkZJR19UTVBGUz15CiMgQ09ORklHX1RNUEZTX1BP
U0lYX0FDTCBpcyBub3Qgc2V0CkNPTkZJR19UTVBGU19YQVRUUj15CiMgQ09ORklHX1RNUEZT
X1FVT1RBIGlzIG5vdCBzZXQKIyBDT05GSUdfSFVHRVRMQkZTIGlzIG5vdCBzZXQKQ09ORklH
X0NPTkZJR0ZTX0ZTPXkKQ09ORklHX0VGSVZBUl9GUz15CiMgZW5kIG9mIFBzZXVkbyBmaWxl
c3lzdGVtcwoKQ09ORklHX01JU0NfRklMRVNZU1RFTVM9eQojIENPTkZJR19PUkFOR0VGU19G
UyBpcyBub3Qgc2V0CiMgQ09ORklHX0FERlNfRlMgaXMgbm90IHNldAojIENPTkZJR19BRkZT
X0ZTIGlzIG5vdCBzZXQKIyBDT05GSUdfRUNSWVBUX0ZTIGlzIG5vdCBzZXQKIyBDT05GSUdf
SEZTX0ZTIGlzIG5vdCBzZXQKIyBDT05GSUdfSEZTUExVU19GUyBpcyBub3Qgc2V0CkNPTkZJ
R19CRUZTX0ZTPXkKQ09ORklHX0JFRlNfREVCVUc9eQpDT05GSUdfQkZTX0ZTPXkKQ09ORklH
X0VGU19GUz15CkNPTkZJR19KRkZTMl9GUz15CkNPTkZJR19KRkZTMl9GU19ERUJVRz0wCiMg
Q09ORklHX0pGRlMyX0ZTX1dSSVRFQlVGRkVSIGlzIG5vdCBzZXQKIyBDT05GSUdfSkZGUzJf
U1VNTUFSWSBpcyBub3Qgc2V0CkNPTkZJR19KRkZTMl9GU19YQVRUUj15CkNPTkZJR19KRkZT
Ml9GU19QT1NJWF9BQ0w9eQpDT05GSUdfSkZGUzJfRlNfU0VDVVJJVFk9eQpDT05GSUdfSkZG
UzJfQ09NUFJFU1NJT05fT1BUSU9OUz15CkNPTkZJR19KRkZTMl9aTElCPXkKQ09ORklHX0pG
RlMyX0xaTz15CiMgQ09ORklHX0pGRlMyX1JUSU1FIGlzIG5vdCBzZXQKIyBDT05GSUdfSkZG
UzJfUlVCSU4gaXMgbm90IHNldAojIENPTkZJR19KRkZTMl9DTU9ERV9OT05FIGlzIG5vdCBz
ZXQKIyBDT05GSUdfSkZGUzJfQ01PREVfUFJJT1JJVFkgaXMgbm90IHNldAojIENPTkZJR19K
RkZTMl9DTU9ERV9TSVpFIGlzIG5vdCBzZXQKQ09ORklHX0pGRlMyX0NNT0RFX0ZBVk9VUkxa
Tz15CkNPTkZJR19DUkFNRlM9eQpDT05GSUdfQ1JBTUZTX0JMT0NLREVWPXkKIyBDT05GSUdf
Q1JBTUZTX01URCBpcyBub3Qgc2V0CiMgQ09ORklHX1NRVUFTSEZTIGlzIG5vdCBzZXQKQ09O
RklHX1ZYRlNfRlM9eQojIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0CiMgQ09ORklHX09N
RlNfRlMgaXMgbm90IHNldApDT05GSUdfSFBGU19GUz15CiMgQ09ORklHX1FOWDRGU19GUyBp
cyBub3Qgc2V0CkNPTkZJR19RTlg2RlNfRlM9eQojIENPTkZJR19RTlg2RlNfREVCVUcgaXMg
bm90IHNldApDT05GSUdfUk9NRlNfRlM9eQojIENPTkZJR19ST01GU19CQUNLRURfQllfQkxP
Q0sgaXMgbm90IHNldApDT05GSUdfUk9NRlNfQkFDS0VEX0JZX01URD15CiMgQ09ORklHX1JP
TUZTX0JBQ0tFRF9CWV9CT1RIIGlzIG5vdCBzZXQKQ09ORklHX1JPTUZTX09OX01URD15CkNP
TkZJR19QU1RPUkU9eQpDT05GSUdfUFNUT1JFX0RFRkFVTFRfS01TR19CWVRFUz0xMDI0MApD
T05GSUdfUFNUT1JFX0NPTVBSRVNTPXkKQ09ORklHX1BTVE9SRV9DT05TT0xFPXkKIyBDT05G
SUdfUFNUT1JFX1BNU0cgaXMgbm90IHNldAojIENPTkZJR19QU1RPUkVfUkFNIGlzIG5vdCBz
ZXQKIyBDT05GSUdfUFNUT1JFX0JMSyBpcyBub3Qgc2V0CkNPTkZJR19TWVNWX0ZTPXkKQ09O
RklHX1VGU19GUz15CkNPTkZJR19VRlNfRlNfV1JJVEU9eQojIENPTkZJR19VRlNfREVCVUcg
aXMgbm90IHNldAojIENPTkZJR19FUk9GU19GUyBpcyBub3Qgc2V0CkNPTkZJR19ORVRXT1JL
X0ZJTEVTWVNURU1TPXkKIyBDT05GSUdfOVBfRlMgaXMgbm90IHNldApDT05GSUdfTkxTPXkK
Q09ORklHX05MU19ERUZBVUxUPSJpc284ODU5LTEiCiMgQ09ORklHX05MU19DT0RFUEFHRV80
MzcgaXMgbm90IHNldApDT05GSUdfTkxTX0NPREVQQUdFXzczNz15CkNPTkZJR19OTFNfQ09E
RVBBR0VfNzc1PXkKQ09ORklHX05MU19DT0RFUEFHRV84NTA9eQojIENPTkZJR19OTFNfQ09E
RVBBR0VfODUyIGlzIG5vdCBzZXQKIyBDT05GSUdfTkxTX0NPREVQQUdFXzg1NSBpcyBub3Qg
c2V0CkNPTkZJR19OTFNfQ09ERVBBR0VfODU3PXkKQ09ORklHX05MU19DT0RFUEFHRV84NjA9
eQojIENPTkZJR19OTFNfQ09ERVBBR0VfODYxIGlzIG5vdCBzZXQKIyBDT05GSUdfTkxTX0NP
REVQQUdFXzg2MiBpcyBub3Qgc2V0CiMgQ09ORklHX05MU19DT0RFUEFHRV84NjMgaXMgbm90
IHNldApDT05GSUdfTkxTX0NPREVQQUdFXzg2ND15CiMgQ09ORklHX05MU19DT0RFUEFHRV84
NjUgaXMgbm90IHNldApDT05GSUdfTkxTX0NPREVQQUdFXzg2Nj15CkNPTkZJR19OTFNfQ09E
RVBBR0VfODY5PXkKIyBDT05GSUdfTkxTX0NPREVQQUdFXzkzNiBpcyBub3Qgc2V0CkNPTkZJ
R19OTFNfQ09ERVBBR0VfOTUwPXkKQ09ORklHX05MU19DT0RFUEFHRV85MzI9eQpDT05GSUdf
TkxTX0NPREVQQUdFXzk0OT15CiMgQ09ORklHX05MU19DT0RFUEFHRV84NzQgaXMgbm90IHNl
dApDT05GSUdfTkxTX0lTTzg4NTlfOD15CiMgQ09ORklHX05MU19DT0RFUEFHRV8xMjUwIGlz
IG5vdCBzZXQKIyBDT05GSUdfTkxTX0NPREVQQUdFXzEyNTEgaXMgbm90IHNldAojIENPTkZJ
R19OTFNfQVNDSUkgaXMgbm90IHNldApDT05GSUdfTkxTX0lTTzg4NTlfMT15CiMgQ09ORklH
X05MU19JU084ODU5XzIgaXMgbm90IHNldApDT05GSUdfTkxTX0lTTzg4NTlfMz15CiMgQ09O
RklHX05MU19JU084ODU5XzQgaXMgbm90IHNldAojIENPTkZJR19OTFNfSVNPODg1OV81IGlz
IG5vdCBzZXQKQ09ORklHX05MU19JU084ODU5XzY9eQpDT05GSUdfTkxTX0lTTzg4NTlfNz15
CiMgQ09ORklHX05MU19JU084ODU5XzkgaXMgbm90IHNldApDT05GSUdfTkxTX0lTTzg4NTlf
MTM9eQpDT05GSUdfTkxTX0lTTzg4NTlfMTQ9eQpDT05GSUdfTkxTX0lTTzg4NTlfMTU9eQpD
T05GSUdfTkxTX0tPSThfUj15CkNPTkZJR19OTFNfS09JOF9VPXkKQ09ORklHX05MU19NQUNf
Uk9NQU49eQojIENPTkZJR19OTFNfTUFDX0NFTFRJQyBpcyBub3Qgc2V0CiMgQ09ORklHX05M
U19NQUNfQ0VOVEVVUk8gaXMgbm90IHNldApDT05GSUdfTkxTX01BQ19DUk9BVElBTj15CkNP
TkZJR19OTFNfTUFDX0NZUklMTElDPXkKIyBDT05GSUdfTkxTX01BQ19HQUVMSUMgaXMgbm90
IHNldApDT05GSUdfTkxTX01BQ19HUkVFSz15CkNPTkZJR19OTFNfTUFDX0lDRUxBTkQ9eQoj
IENPTkZJR19OTFNfTUFDX0lOVUlUIGlzIG5vdCBzZXQKQ09ORklHX05MU19NQUNfUk9NQU5J
QU49eQojIENPTkZJR19OTFNfTUFDX1RVUktJU0ggaXMgbm90IHNldApDT05GSUdfTkxTX1VU
Rjg9eQpDT05GSUdfVU5JQ09ERT15CkNPTkZJR19VTklDT0RFX05PUk1BTElaQVRJT05fU0VM
RlRFU1Q9eQpDT05GSUdfSU9fV1E9eQojIGVuZCBvZiBGaWxlIHN5c3RlbXMKCiMKIyBTZWN1
cml0eSBvcHRpb25zCiMKQ09ORklHX0tFWVM9eQojIENPTkZJR19LRVlTX1JFUVVFU1RfQ0FD
SEUgaXMgbm90IHNldApDT05GSUdfUEVSU0lTVEVOVF9LRVlSSU5HUz15CkNPTkZJR19UUlVT
VEVEX0tFWVM9eQpDT05GSUdfSEFWRV9UUlVTVEVEX0tFWVM9eQpDT05GSUdfVFJVU1RFRF9L
RVlTX1RQTT15CiMgQ09ORklHX0VOQ1JZUFRFRF9LRVlTIGlzIG5vdCBzZXQKIyBDT05GSUdf
S0VZX0RIX09QRVJBVElPTlMgaXMgbm90IHNldAojIENPTkZJR19TRUNVUklUWV9ETUVTR19S
RVNUUklDVCBpcyBub3Qgc2V0CiMgQ09ORklHX1NFQ1VSSVRZIGlzIG5vdCBzZXQKIyBDT05G
SUdfU0VDVVJJVFlGUyBpcyBub3Qgc2V0CiMgQ09ORklHX0hBUkRFTkVEX1VTRVJDT1BZIGlz
IG5vdCBzZXQKQ09ORklHX0ZPUlRJRllfU09VUkNFPXkKQ09ORklHX1NUQVRJQ19VU0VSTU9E
RUhFTFBFUj15CkNPTkZJR19TVEFUSUNfVVNFUk1PREVIRUxQRVJfUEFUSD0iL3NiaW4vdXNl
cm1vZGUtaGVscGVyIgojIENPTkZJR19QUk9DX01FTV9SRVNUUklDVF9GT0xMX0ZPUkNFX09G
RiBpcyBub3Qgc2V0CkNPTkZJR19QUk9DX01FTV9SRVNUUklDVF9GT0xMX0ZPUkNFX1BUUkFD
RT15CiMgQ09ORklHX1BST0NfTUVNX1JFU1RSSUNUX0ZPTExfRk9SQ0VfQUxMIGlzIG5vdCBz
ZXQKQ09ORklHX1BST0NfTUVNX1JFU1RSSUNUX09QRU5fUkVBRF9PRkY9eQojIENPTkZJR19Q
Uk9DX01FTV9SRVNUUklDVF9PUEVOX1JFQURfUFRSQUNFIGlzIG5vdCBzZXQKIyBDT05GSUdf
UFJPQ19NRU1fUkVTVFJJQ1RfT1BFTl9SRUFEX0FMTCBpcyBub3Qgc2V0CkNPTkZJR19QUk9D
X01FTV9SRVNUUklDVF9PUEVOX1dSSVRFX09GRj15CiMgQ09ORklHX1BST0NfTUVNX1JFU1RS
SUNUX09QRU5fV1JJVEVfUFRSQUNFIGlzIG5vdCBzZXQKIyBDT05GSUdfUFJPQ19NRU1fUkVT
VFJJQ1RfT1BFTl9XUklURV9BTEwgaXMgbm90IHNldApDT05GSUdfUFJPQ19NRU1fUkVTVFJJ
Q1RfV1JJVEVfT0ZGPXkKIyBDT05GSUdfUFJPQ19NRU1fUkVTVFJJQ1RfV1JJVEVfUFRSQUNF
IGlzIG5vdCBzZXQKIyBDT05GSUdfUFJPQ19NRU1fUkVTVFJJQ1RfV1JJVEVfQUxMIGlzIG5v
dCBzZXQKIyBDT05GSUdfSU1BX1NFQ1VSRV9BTkRfT1JfVFJVU1RFRF9CT09UIGlzIG5vdCBz
ZXQKQ09ORklHX0RFRkFVTFRfU0VDVVJJVFlfREFDPXkKQ09ORklHX0xTTT0ibGFuZGxvY2ss
bG9ja2Rvd24seWFtYSxsb2FkcGluLHNhZmVzZXRpZCxicGYiCgojCiMgS2VybmVsIGhhcmRl
bmluZyBvcHRpb25zCiMKCiMKIyBNZW1vcnkgaW5pdGlhbGl6YXRpb24KIwpDT05GSUdfQ0Nf
SEFTX0FVVE9fVkFSX0lOSVRfUEFUVEVSTj15CkNPTkZJR19DQ19IQVNfQVVUT19WQVJfSU5J
VF9aRVJPX0JBUkU9eQpDT05GSUdfQ0NfSEFTX0FVVE9fVkFSX0lOSVRfWkVSTz15CiMgQ09O
RklHX0lOSVRfU1RBQ0tfTk9ORSBpcyBub3Qgc2V0CiMgQ09ORklHX0lOSVRfU1RBQ0tfQUxM
X1BBVFRFUk4gaXMgbm90IHNldApDT05GSUdfSU5JVF9TVEFDS19BTExfWkVSTz15CiMgQ09O
RklHX0lOSVRfT05fQUxMT0NfREVGQVVMVF9PTiBpcyBub3Qgc2V0CiMgQ09ORklHX0lOSVRf
T05fRlJFRV9ERUZBVUxUX09OIGlzIG5vdCBzZXQKQ09ORklHX0NDX0hBU19aRVJPX0NBTExf
VVNFRF9SRUdTPXkKQ09ORklHX1pFUk9fQ0FMTF9VU0VEX1JFR1M9eQojIGVuZCBvZiBNZW1v
cnkgaW5pdGlhbGl6YXRpb24KCiMKIyBIYXJkZW5pbmcgb2Yga2VybmVsIGRhdGEgc3RydWN0
dXJlcwojCiMgQ09ORklHX0xJU1RfSEFSREVORUQgaXMgbm90IHNldAojIENPTkZJR19CVUdf
T05fREFUQV9DT1JSVVBUSU9OIGlzIG5vdCBzZXQKIyBlbmQgb2YgSGFyZGVuaW5nIG9mIGtl
cm5lbCBkYXRhIHN0cnVjdHVyZXMKCkNPTkZJR19SQU5EU1RSVUNUX05PTkU9eQojIGVuZCBv
ZiBLZXJuZWwgaGFyZGVuaW5nIG9wdGlvbnMKIyBlbmQgb2YgU2VjdXJpdHkgb3B0aW9ucwoK
Q09ORklHX1hPUl9CTE9DS1M9eQpDT05GSUdfQVNZTkNfQ09SRT15CkNPTkZJR19BU1lOQ19N
RU1DUFk9eQpDT05GSUdfQVNZTkNfWE9SPXkKQ09ORklHX0FTWU5DX1BRPXkKQ09ORklHX0FT
WU5DX1JBSUQ2X1JFQ09WPXkKQ09ORklHX0NSWVBUTz15CgojCiMgQ3J5cHRvIGNvcmUgb3Ig
aGVscGVyCiMKQ09ORklHX0NSWVBUT19BTEdBUEk9eQpDT05GSUdfQ1JZUFRPX0FMR0FQSTI9
eQpDT05GSUdfQ1JZUFRPX0FFQUQ9eQpDT05GSUdfQ1JZUFRPX0FFQUQyPXkKQ09ORklHX0NS
WVBUT19TSUcyPXkKQ09ORklHX0NSWVBUT19TS0NJUEhFUj15CkNPTkZJR19DUllQVE9fU0tD
SVBIRVIyPXkKQ09ORklHX0NSWVBUT19IQVNIPXkKQ09ORklHX0NSWVBUT19IQVNIMj15CkNP
TkZJR19DUllQVE9fUk5HPXkKQ09ORklHX0NSWVBUT19STkcyPXkKQ09ORklHX0NSWVBUT19S
TkdfREVGQVVMVD15CkNPTkZJR19DUllQVE9fQUtDSVBIRVIyPXkKQ09ORklHX0NSWVBUT19B
S0NJUEhFUj15CkNPTkZJR19DUllQVE9fS1BQMj15CkNPTkZJR19DUllQVE9fS1BQPXkKQ09O
RklHX0NSWVBUT19BQ09NUDI9eQpDT05GSUdfQ1JZUFRPX01BTkFHRVI9eQpDT05GSUdfQ1JZ
UFRPX01BTkFHRVIyPXkKIyBDT05GSUdfQ1JZUFRPX1VTRVIgaXMgbm90IHNldApDT05GSUdf
Q1JZUFRPX01BTkFHRVJfRElTQUJMRV9URVNUUz15CkNPTkZJR19DUllQVE9fTlVMTD15CkNP
TkZJR19DUllQVE9fTlVMTDI9eQojIENPTkZJR19DUllQVE9fUENSWVBUIGlzIG5vdCBzZXQK
Q09ORklHX0NSWVBUT19DUllQVEQ9eQpDT05GSUdfQ1JZUFRPX0FVVEhFTkM9eQpDT05GSUdf
Q1JZUFRPX1NJTUQ9eQojIGVuZCBvZiBDcnlwdG8gY29yZSBvciBoZWxwZXIKCiMKIyBQdWJs
aWMta2V5IGNyeXB0b2dyYXBoeQojCiMgQ09ORklHX0NSWVBUT19SU0EgaXMgbm90IHNldApD
T05GSUdfQ1JZUFRPX0RIPXkKQ09ORklHX0NSWVBUT19ESF9SRkM3OTE5X0dST1VQUz15CkNP
TkZJR19DUllQVE9fRUNDPXkKQ09ORklHX0NSWVBUT19FQ0RIPXkKIyBDT05GSUdfQ1JZUFRP
X0VDRFNBIGlzIG5vdCBzZXQKQ09ORklHX0NSWVBUT19FQ1JEU0E9eQpDT05GSUdfQ1JZUFRP
X0NVUlZFMjU1MTk9eQojIGVuZCBvZiBQdWJsaWMta2V5IGNyeXB0b2dyYXBoeQoKIwojIEJs
b2NrIGNpcGhlcnMKIwpDT05GSUdfQ1JZUFRPX0FFUz15CiMgQ09ORklHX0NSWVBUT19BRVNf
VEkgaXMgbm90IHNldAojIENPTkZJR19DUllQVE9fQU5VQklTIGlzIG5vdCBzZXQKQ09ORklH
X0NSWVBUT19BUklBPXkKQ09ORklHX0NSWVBUT19CTE9XRklTSD15CkNPTkZJR19DUllQVE9f
QkxPV0ZJU0hfQ09NTU9OPXkKIyBDT05GSUdfQ1JZUFRPX0NBTUVMTElBIGlzIG5vdCBzZXQK
Q09ORklHX0NSWVBUT19DQVNUX0NPTU1PTj15CkNPTkZJR19DUllQVE9fQ0FTVDU9eQpDT05G
SUdfQ1JZUFRPX0NBU1Q2PXkKQ09ORklHX0NSWVBUT19ERVM9eQpDT05GSUdfQ1JZUFRPX0ZD
UllQVD15CkNPTkZJR19DUllQVE9fS0hBWkFEPXkKQ09ORklHX0NSWVBUT19TRUVEPXkKQ09O
RklHX0NSWVBUT19TRVJQRU5UPXkKIyBDT05GSUdfQ1JZUFRPX1NNNF9HRU5FUklDIGlzIG5v
dCBzZXQKQ09ORklHX0NSWVBUT19URUE9eQojIENPTkZJR19DUllQVE9fVFdPRklTSCBpcyBu
b3Qgc2V0CiMgZW5kIG9mIEJsb2NrIGNpcGhlcnMKCiMKIyBMZW5ndGgtcHJlc2VydmluZyBj
aXBoZXJzIGFuZCBtb2RlcwojCkNPTkZJR19DUllQVE9fQURJQU5UVU09eQpDT05GSUdfQ1JZ
UFRPX0FSQzQ9eQpDT05GSUdfQ1JZUFRPX0NIQUNIQTIwPXkKQ09ORklHX0NSWVBUT19DQkM9
eQpDT05GSUdfQ1JZUFRPX0NUUj15CkNPTkZJR19DUllQVE9fQ1RTPXkKQ09ORklHX0NSWVBU
T19FQ0I9eQpDT05GSUdfQ1JZUFRPX0hDVFIyPXkKQ09ORklHX0NSWVBUT19LRVlXUkFQPXkK
IyBDT05GSUdfQ1JZUFRPX0xSVyBpcyBub3Qgc2V0CkNPTkZJR19DUllQVE9fUENCQz15CkNP
TkZJR19DUllQVE9fWENUUj15CkNPTkZJR19DUllQVE9fWFRTPXkKQ09ORklHX0NSWVBUT19O
SFBPTFkxMzA1PXkKIyBlbmQgb2YgTGVuZ3RoLXByZXNlcnZpbmcgY2lwaGVycyBhbmQgbW9k
ZXMKCiMKIyBBRUFEIChhdXRoZW50aWNhdGVkIGVuY3J5cHRpb24gd2l0aCBhc3NvY2lhdGVk
IGRhdGEpIGNpcGhlcnMKIwojIENPTkZJR19DUllQVE9fQUVHSVMxMjggaXMgbm90IHNldApD
T05GSUdfQ1JZUFRPX0NIQUNIQTIwUE9MWTEzMDU9eQpDT05GSUdfQ1JZUFRPX0NDTT15CiMg
Q09ORklHX0NSWVBUT19HQ00gaXMgbm90IHNldApDT05GSUdfQ1JZUFRPX0dFTklWPXkKQ09O
RklHX0NSWVBUT19TRVFJVj15CkNPTkZJR19DUllQVE9fRUNIQUlOSVY9eQpDT05GSUdfQ1JZ
UFRPX0VTU0lWPXkKIyBlbmQgb2YgQUVBRCAoYXV0aGVudGljYXRlZCBlbmNyeXB0aW9uIHdp
dGggYXNzb2NpYXRlZCBkYXRhKSBjaXBoZXJzCgojCiMgSGFzaGVzLCBkaWdlc3RzLCBhbmQg
TUFDcwojCkNPTkZJR19DUllQVE9fQkxBS0UyQj15CkNPTkZJR19DUllQVE9fQ01BQz15CkNP
TkZJR19DUllQVE9fR0hBU0g9eQpDT05GSUdfQ1JZUFRPX0hNQUM9eQpDT05GSUdfQ1JZUFRP
X01END15CkNPTkZJR19DUllQVE9fTUQ1PXkKQ09ORklHX0NSWVBUT19NSUNIQUVMX01JQz15
CkNPTkZJR19DUllQVE9fUE9MWVZBTD15CkNPTkZJR19DUllQVE9fUE9MWTEzMDU9eQpDT05G
SUdfQ1JZUFRPX1JNRDE2MD15CkNPTkZJR19DUllQVE9fU0hBMT15CkNPTkZJR19DUllQVE9f
U0hBMjU2PXkKQ09ORklHX0NSWVBUT19TSEE1MTI9eQpDT05GSUdfQ1JZUFRPX1NIQTM9eQpD
T05GSUdfQ1JZUFRPX1NNMz15CkNPTkZJR19DUllQVE9fU00zX0dFTkVSSUM9eQpDT05GSUdf
Q1JZUFRPX1NUUkVFQk9HPXkKQ09ORklHX0NSWVBUT19WTUFDPXkKQ09ORklHX0NSWVBUT19X
UDUxMj15CkNPTkZJR19DUllQVE9fWENCQz15CkNPTkZJR19DUllQVE9fWFhIQVNIPXkKIyBl
bmQgb2YgSGFzaGVzLCBkaWdlc3RzLCBhbmQgTUFDcwoKIwojIENSQ3MgKGN5Y2xpYyByZWR1
bmRhbmN5IGNoZWNrcykKIwpDT05GSUdfQ1JZUFRPX0NSQzMyQz15CkNPTkZJR19DUllQVE9f
Q1JDMzI9eQpDT05GSUdfQ1JZUFRPX0NSQ1QxMERJRj15CkNPTkZJR19DUllQVE9fQ1JDNjRf
Uk9DS1NPRlQ9eQojIGVuZCBvZiBDUkNzIChjeWNsaWMgcmVkdW5kYW5jeSBjaGVja3MpCgoj
CiMgQ29tcHJlc3Npb24KIwpDT05GSUdfQ1JZUFRPX0RFRkxBVEU9eQojIENPTkZJR19DUllQ
VE9fTFpPIGlzIG5vdCBzZXQKQ09ORklHX0NSWVBUT184NDI9eQojIENPTkZJR19DUllQVE9f
TFo0IGlzIG5vdCBzZXQKIyBDT05GSUdfQ1JZUFRPX0xaNEhDIGlzIG5vdCBzZXQKQ09ORklH
X0NSWVBUT19aU1REPXkKIyBlbmQgb2YgQ29tcHJlc3Npb24KCiMKIyBSYW5kb20gbnVtYmVy
IGdlbmVyYXRpb24KIwpDT05GSUdfQ1JZUFRPX0FOU0lfQ1BSTkc9eQpDT05GSUdfQ1JZUFRP
X0RSQkdfTUVOVT15CkNPTkZJR19DUllQVE9fRFJCR19ITUFDPXkKIyBDT05GSUdfQ1JZUFRP
X0RSQkdfSEFTSCBpcyBub3Qgc2V0CkNPTkZJR19DUllQVE9fRFJCR19DVFI9eQpDT05GSUdf
Q1JZUFRPX0RSQkc9eQpDT05GSUdfQ1JZUFRPX0pJVFRFUkVOVFJPUFk9eQpDT05GSUdfQ1JZ
UFRPX0pJVFRFUkVOVFJPUFlfTUVNT1JZX0JMT0NLUz02NApDT05GSUdfQ1JZUFRPX0pJVFRF
UkVOVFJPUFlfTUVNT1JZX0JMT0NLU0laRT0zMgpDT05GSUdfQ1JZUFRPX0pJVFRFUkVOVFJP
UFlfT1NSPTEKIyBlbmQgb2YgUmFuZG9tIG51bWJlciBnZW5lcmF0aW9uCgojCiMgVXNlcnNw
YWNlIGludGVyZmFjZQojCkNPTkZJR19DUllQVE9fVVNFUl9BUEk9eQojIENPTkZJR19DUllQ
VE9fVVNFUl9BUElfSEFTSCBpcyBub3Qgc2V0CiMgQ09ORklHX0NSWVBUT19VU0VSX0FQSV9T
S0NJUEhFUiBpcyBub3Qgc2V0CkNPTkZJR19DUllQVE9fVVNFUl9BUElfUk5HPXkKQ09ORklH
X0NSWVBUT19VU0VSX0FQSV9STkdfQ0FWUD15CkNPTkZJR19DUllQVE9fVVNFUl9BUElfQUVB
RD15CkNPTkZJR19DUllQVE9fVVNFUl9BUElfRU5BQkxFX09CU09MRVRFPXkKIyBlbmQgb2Yg
VXNlcnNwYWNlIGludGVyZmFjZQoKQ09ORklHX0NSWVBUT19IQVNIX0lORk89eQoKIwojIEFj
Y2VsZXJhdGVkIENyeXB0b2dyYXBoaWMgQWxnb3JpdGhtcyBmb3IgQ1BVICh4ODYpCiMKQ09O
RklHX0NSWVBUT19BRVNfTklfSU5URUw9eQpDT05GSUdfQ1JZUFRPX1NFUlBFTlRfU1NFMl81
ODY9eQojIENPTkZJR19DUllQVE9fVFdPRklTSF81ODYgaXMgbm90IHNldAojIENPTkZJR19D
UllQVE9fQ1JDMzJDX0lOVEVMIGlzIG5vdCBzZXQKQ09ORklHX0NSWVBUT19DUkMzMl9QQ0xN
VUw9eQojIGVuZCBvZiBBY2NlbGVyYXRlZCBDcnlwdG9ncmFwaGljIEFsZ29yaXRobXMgZm9y
IENQVSAoeDg2KQoKIyBDT05GSUdfQ1JZUFRPX0hXIGlzIG5vdCBzZXQKIyBDT05GSUdfQVNZ
TU1FVFJJQ19LRVlfVFlQRSBpcyBub3Qgc2V0CgojCiMgQ2VydGlmaWNhdGVzIGZvciBzaWdu
YXR1cmUgY2hlY2tpbmcKIwpDT05GSUdfU1lTVEVNX0JMQUNLTElTVF9LRVlSSU5HPXkKQ09O
RklHX1NZU1RFTV9CTEFDS0xJU1RfSEFTSF9MSVNUPSIiCiMgZW5kIG9mIENlcnRpZmljYXRl
cyBmb3Igc2lnbmF0dXJlIGNoZWNraW5nCgpDT05GSUdfQklOQVJZX1BSSU5URj15CgojCiMg
TGlicmFyeSByb3V0aW5lcwojCkNPTkZJR19SQUlENl9QUT15CiMgQ09ORklHX1JBSUQ2X1BR
X0JFTkNITUFSSyBpcyBub3Qgc2V0CkNPTkZJR19MSU5FQVJfUkFOR0VTPXkKQ09ORklHX1BB
Q0tJTkc9eQpDT05GSUdfQklUUkVWRVJTRT15CkNPTkZJR19HRU5FUklDX1NUUk5DUFlfRlJP
TV9VU0VSPXkKQ09ORklHX0dFTkVSSUNfU1RSTkxFTl9VU0VSPXkKQ09ORklHX0dFTkVSSUNf
TkVUX1VUSUxTPXkKIyBDT05GSUdfQ09SRElDIGlzIG5vdCBzZXQKQ09ORklHX1BSSU1FX05V
TUJFUlM9eQpDT05GSUdfUkFUSU9OQUw9eQpDT05GSUdfR0VORVJJQ19JT01BUD15CkNPTkZJ
R19BUkNIX0hBU19GQVNUX01VTFRJUExJRVI9eQpDT05GSUdfQVJDSF9VU0VfU1lNX0FOTk9U
QVRJT05TPXkKCiMKIyBDcnlwdG8gbGlicmFyeSByb3V0aW5lcwojCkNPTkZJR19DUllQVE9f
TElCX1VUSUxTPXkKQ09ORklHX0NSWVBUT19MSUJfQUVTPXkKQ09ORklHX0NSWVBUT19MSUJf
QUVTQ0ZCPXkKQ09ORklHX0NSWVBUT19MSUJfQVJDND15CkNPTkZJR19DUllQVE9fTElCX0dG
MTI4TVVMPXkKQ09ORklHX0NSWVBUT19MSUJfQkxBS0UyU19HRU5FUklDPXkKQ09ORklHX0NS
WVBUT19MSUJfQ0hBQ0hBX0dFTkVSSUM9eQpDT05GSUdfQ1JZUFRPX0xJQl9DSEFDSEE9eQpD
T05GSUdfQ1JZUFRPX0xJQl9DVVJWRTI1NTE5X0dFTkVSSUM9eQojIENPTkZJR19DUllQVE9f
TElCX0NVUlZFMjU1MTkgaXMgbm90IHNldApDT05GSUdfQ1JZUFRPX0xJQl9ERVM9eQpDT05G
SUdfQ1JZUFRPX0xJQl9QT0xZMTMwNV9SU0laRT0xCkNPTkZJR19DUllQVE9fTElCX1BPTFkx
MzA1X0dFTkVSSUM9eQojIENPTkZJR19DUllQVE9fTElCX1BPTFkxMzA1IGlzIG5vdCBzZXQK
IyBDT05GSUdfQ1JZUFRPX0xJQl9DSEFDSEEyMFBPTFkxMzA1IGlzIG5vdCBzZXQKQ09ORklH
X0NSWVBUT19MSUJfU0hBMT15CkNPTkZJR19DUllQVE9fTElCX1NIQTI1Nj15CiMgZW5kIG9m
IENyeXB0byBsaWJyYXJ5IHJvdXRpbmVzCgpDT05GSUdfQ1JDX0NDSVRUPXkKQ09ORklHX0NS
QzE2PXkKQ09ORklHX0NSQ19UMTBESUY9eQpDT05GSUdfQ1JDNjRfUk9DS1NPRlQ9eQpDT05G
SUdfQ1JDX0lUVV9UPXkKQ09ORklHX0NSQzMyPXkKIyBDT05GSUdfQ1JDMzJfU0VMRlRFU1Qg
aXMgbm90IHNldAojIENPTkZJR19DUkMzMl9TTElDRUJZOCBpcyBub3Qgc2V0CkNPTkZJR19D
UkMzMl9TTElDRUJZND15CiMgQ09ORklHX0NSQzMyX1NBUldBVEUgaXMgbm90IHNldAojIENP
TkZJR19DUkMzMl9CSVQgaXMgbm90IHNldApDT05GSUdfQ1JDNjQ9eQpDT05GSUdfQ1JDND15
CkNPTkZJR19DUkM3PXkKQ09ORklHX0xJQkNSQzMyQz15CkNPTkZJR19DUkM4PXkKQ09ORklH
X1hYSEFTSD15CiMgQ09ORklHX1JBTkRPTTMyX1NFTEZURVNUIGlzIG5vdCBzZXQKQ09ORklH
Xzg0Ml9DT01QUkVTUz15CkNPTkZJR184NDJfREVDT01QUkVTUz15CkNPTkZJR19aTElCX0lO
RkxBVEU9eQpDT05GSUdfWkxJQl9ERUZMQVRFPXkKQ09ORklHX0xaT19DT01QUkVTUz15CkNP
TkZJR19MWk9fREVDT01QUkVTUz15CkNPTkZJR19MWjRfQ09NUFJFU1M9eQpDT05GSUdfTFo0
SENfQ09NUFJFU1M9eQpDT05GSUdfTFo0X0RFQ09NUFJFU1M9eQpDT05GSUdfWlNURF9DT01N
T049eQpDT05GSUdfWlNURF9DT01QUkVTUz15CkNPTkZJR19aU1REX0RFQ09NUFJFU1M9eQpD
T05GSUdfWFpfREVDPXkKQ09ORklHX1haX0RFQ19YODY9eQpDT05GSUdfWFpfREVDX1BPV0VS
UEM9eQpDT05GSUdfWFpfREVDX0FSTT15CkNPTkZJR19YWl9ERUNfQVJNVEhVTUI9eQpDT05G
SUdfWFpfREVDX1NQQVJDPXkKIyBDT05GSUdfWFpfREVDX01JQ1JPTFpNQSBpcyBub3Qgc2V0
CkNPTkZJR19YWl9ERUNfQkNKPXkKQ09ORklHX1haX0RFQ19URVNUPXkKQ09ORklHX0dFTkVS
SUNfQUxMT0NBVE9SPXkKQ09ORklHX0JDSD15CkNPTkZJR19CQ0hfQ09OU1RfUEFSQU1TPXkK
Q09ORklHX1RFWFRTRUFSQ0g9eQpDT05GSUdfVEVYVFNFQVJDSF9LTVA9eQpDT05GSUdfVEVY
VFNFQVJDSF9CTT15CkNPTkZJR19URVhUU0VBUkNIX0ZTTT15CkNPTkZJR19JTlRFUlZBTF9U
UkVFPXkKQ09ORklHX1hBUlJBWV9NVUxUST15CkNPTkZJR19BU1NPQ0lBVElWRV9BUlJBWT15
CkNPTkZJR19DTE9TVVJFUz15CkNPTkZJR19IQVNfSU9NRU09eQpDT05GSUdfSEFTX0lPUE9S
VD15CkNPTkZJR19IQVNfSU9QT1JUX01BUD15CkNPTkZJR19IQVNfRE1BPXkKQ09ORklHX0RN
QV9PUFM9eQpDT05GSUdfTkVFRF9TR19ETUFfTEVOR1RIPXkKQ09ORklHX05FRURfRE1BX01B
UF9TVEFURT15CkNPTkZJR19ETUFfREVDTEFSRV9DT0hFUkVOVD15CkNPTkZJR19ETUFfTkVF
RF9TWU5DPXkKIyBDT05GSUdfRE1BX0NNQSBpcyBub3Qgc2V0CkNPTkZJR19ETUFfQVBJX0RF
QlVHPXkKIyBDT05GSUdfRE1BX0FQSV9ERUJVR19TRyBpcyBub3Qgc2V0CkNPTkZJR19TR0xf
QUxMT0M9eQpDT05GSUdfQ0hFQ0tfU0lHTkFUVVJFPXkKQ09ORklHX0NQVV9STUFQPXkKQ09O
RklHX0RRTD15CkNPTkZJR19HTE9CPXkKIyBDT05GSUdfR0xPQl9TRUxGVEVTVCBpcyBub3Qg
c2V0CkNPTkZJR19OTEFUVFI9eQpDT05GSUdfQ0xaX1RBQj15CiMgQ09ORklHX0lSUV9QT0xM
IGlzIG5vdCBzZXQKQ09ORklHX01QSUxJQj15CkNPTkZJR19MSUJGRFQ9eQpDT05GSUdfT0lE
X1JFR0lTVFJZPXkKQ09ORklHX1VDUzJfU1RSSU5HPXkKQ09ORklHX0hBVkVfR0VORVJJQ19W
RFNPPXkKQ09ORklHX0dFTkVSSUNfR0VUVElNRU9GREFZPXkKQ09ORklHX0dFTkVSSUNfVkRT
T18zMj15CkNPTkZJR19HRU5FUklDX1ZEU09fVElNRV9OUz15CkNPTkZJR19HRU5FUklDX1ZE
U09fT1ZFUkZMT1dfUFJPVEVDVD15CkNPTkZJR19GT05UX1NVUFBPUlQ9eQpDT05GSUdfRk9O
VF84eDE2PXkKQ09ORklHX0ZPTlRfQVVUT1NFTEVDVD15CkNPTkZJR19TR19QT09MPXkKQ09O
RklHX0FSQ0hfSEFTX0NQVV9DQUNIRV9JTlZBTElEQVRFX01FTVJFR0lPTj15CkNPTkZJR19B
UkNIX1NUQUNLV0FMSz15CkNPTkZJR19TVEFDS0RFUE9UPXkKQ09ORklHX1NUQUNLREVQT1Rf
QUxXQVlTX0lOSVQ9eQpDT05GSUdfU1RBQ0tERVBPVF9NQVhfRlJBTUVTPTY0CkNPTkZJR19T
QklUTUFQPXkKQ09ORklHX0xXUV9URVNUPXkKIyBlbmQgb2YgTGlicmFyeSByb3V0aW5lcwoK
Q09ORklHX0FTTjFfRU5DT0RFUj15CkNPTkZJR19QT0xZTk9NSUFMPXkKQ09ORklHX0ZJUk1X
QVJFX1RBQkxFPXkKCiMKIyBLZXJuZWwgaGFja2luZwojCgojCiMgcHJpbnRrIGFuZCBkbWVz
ZyBvcHRpb25zCiMKQ09ORklHX1BSSU5US19USU1FPXkKQ09ORklHX1BSSU5US19DQUxMRVI9
eQojIENPTkZJR19TVEFDS1RSQUNFX0JVSUxEX0lEIGlzIG5vdCBzZXQKQ09ORklHX0NPTlNP
TEVfTE9HTEVWRUxfREVGQVVMVD03CkNPTkZJR19DT05TT0xFX0xPR0xFVkVMX1FVSUVUPTQK
Q09ORklHX01FU1NBR0VfTE9HTEVWRUxfREVGQVVMVD00CkNPTkZJR19EWU5BTUlDX0RFQlVH
PXkKQ09ORklHX0RZTkFNSUNfREVCVUdfQ09SRT15CkNPTkZJR19TWU1CT0xJQ19FUlJOQU1F
PXkKQ09ORklHX0RFQlVHX0JVR1ZFUkJPU0U9eQojIGVuZCBvZiBwcmludGsgYW5kIGRtZXNn
IG9wdGlvbnMKCiMgQ09ORklHX0RFQlVHX0tFUk5FTCBpcyBub3Qgc2V0CgojCiMgQ29tcGls
ZS10aW1lIGNoZWNrcyBhbmQgY29tcGlsZXIgb3B0aW9ucwojCkNPTkZJR19BU19IQVNfTk9O
X0NPTlNUX1VMRUIxMjg9eQpDT05GSUdfRlJBTUVfV0FSTj0xMDI0CkNPTkZJR19TVFJJUF9B
U01fU1lNUz15CiMgQ09ORklHX0hFQURFUlNfSU5TVEFMTCBpcyBub3Qgc2V0CiMgQ09ORklH
X0RFQlVHX1NFQ1RJT05fTUlTTUFUQ0ggaXMgbm90IHNldAojIENPTkZJR19TRUNUSU9OX01J
U01BVENIX1dBUk5fT05MWSBpcyBub3Qgc2V0CkNPTkZJR19BUkNIX1dBTlRfRlJBTUVfUE9J
TlRFUlM9eQpDT05GSUdfRlJBTUVfUE9JTlRFUj15CiMgZW5kIG9mIENvbXBpbGUtdGltZSBj
aGVja3MgYW5kIGNvbXBpbGVyIG9wdGlvbnMKCiMKIyBHZW5lcmljIEtlcm5lbCBEZWJ1Z2dp
bmcgSW5zdHJ1bWVudHMKIwpDT05GSUdfTUFHSUNfU1lTUlE9eQpDT05GSUdfTUFHSUNfU1lT
UlFfREVGQVVMVF9FTkFCTEU9MHgxCiMgQ09ORklHX01BR0lDX1NZU1JRX1NFUklBTCBpcyBu
b3Qgc2V0CiMgQ09ORklHX0RFQlVHX0ZTIGlzIG5vdCBzZXQKQ09ORklHX0hBVkVfQVJDSF9L
R0RCPXkKQ09ORklHX0FSQ0hfSEFTX1VCU0FOPXkKQ09ORklHX1VCU0FOPXkKQ09ORklHX1VC
U0FOX1RSQVA9eQpDT05GSUdfQ0NfSEFTX1VCU0FOX0JPVU5EU19TVFJJQ1Q9eQpDT05GSUdf
VUJTQU5fQk9VTkRTPXkKQ09ORklHX1VCU0FOX0JPVU5EU19TVFJJQ1Q9eQojIENPTkZJR19V
QlNBTl9TSElGVCBpcyBub3Qgc2V0CkNPTkZJR19VQlNBTl9ESVZfWkVSTz15CiMgQ09ORklH
X1VCU0FOX1VOUkVBQ0hBQkxFIGlzIG5vdCBzZXQKIyBDT05GSUdfVUJTQU5fU0lHTkVEX1dS
QVAgaXMgbm90IHNldApDT05GSUdfVUJTQU5fQk9PTD15CiMgQ09ORklHX1VCU0FOX0VOVU0g
aXMgbm90IHNldApDT05GSUdfSEFWRV9LQ1NBTl9DT01QSUxFUj15CiMgZW5kIG9mIEdlbmVy
aWMgS2VybmVsIERlYnVnZ2luZyBJbnN0cnVtZW50cwoKIwojIE5ldHdvcmtpbmcgRGVidWdn
aW5nCiMKIyBlbmQgb2YgTmV0d29ya2luZyBEZWJ1Z2dpbmcKCiMKIyBNZW1vcnkgRGVidWdn
aW5nCiMKQ09ORklHX1BBR0VfRVhURU5TSU9OPXkKQ09ORklHX1NMVUJfREVCVUc9eQpDT05G
SUdfU0xVQl9ERUJVR19PTj15CkNPTkZJR19QQUdFX1BPSVNPTklORz15CiMgQ09ORklHX0RF
QlVHX1JPREFUQV9URVNUIGlzIG5vdCBzZXQKQ09ORklHX0FSQ0hfSEFTX0RFQlVHX1dYPXkK
IyBDT05GSUdfREVCVUdfV1ggaXMgbm90IHNldApDT05GSUdfR0VORVJJQ19QVERVTVA9eQpD
T05GSUdfUFREVU1QX0NPUkU9eQpDT05GSUdfSEFWRV9ERUJVR19LTUVNTEVBSz15CkNPTkZJ
R19BUkNIX0hBU19ERUJVR19WTV9QR1RBQkxFPXkKIyBDT05GSUdfREVCVUdfVk1fUEdUQUJM
RSBpcyBub3Qgc2V0CkNPTkZJR19BUkNIX0hBU19ERUJVR19WSVJUVUFMPXkKQ09ORklHX0RF
QlVHX01FTU9SWV9JTklUPXkKQ09ORklHX0FSQ0hfU1VQUE9SVFNfS01BUF9MT0NBTF9GT1JD
RV9NQVA9eQpDT05GSUdfSEFWRV9ERUJVR19TVEFDS09WRVJGTE9XPXkKQ09ORklHX0NPREVf
VEFHR0lORz15CkNPTkZJR19NRU1fQUxMT0NfUFJPRklMSU5HPXkKQ09ORklHX01FTV9BTExP
Q19QUk9GSUxJTkdfRU5BQkxFRF9CWV9ERUZBVUxUPXkKQ09ORklHX01FTV9BTExPQ19QUk9G
SUxJTkdfREVCVUc9eQpDT05GSUdfQ0NfSEFTX0tBU0FOX0dFTkVSSUM9eQpDT05GSUdfQ0Nf
SEFTX1dPUktJTkdfTk9TQU5JVElaRV9BRERSRVNTPXkKQ09ORklHX0hBVkVfQVJDSF9LRkVO
Q0U9eQojIENPTkZJR19LRkVOQ0UgaXMgbm90IHNldAojIGVuZCBvZiBNZW1vcnkgRGVidWdn
aW5nCgojCiMgRGVidWcgT29wcywgTG9ja3VwcyBhbmQgSGFuZ3MKIwojIENPTkZJR19QQU5J
Q19PTl9PT1BTIGlzIG5vdCBzZXQKQ09ORklHX1BBTklDX09OX09PUFNfVkFMVUU9MApDT05G
SUdfUEFOSUNfVElNRU9VVD0wCkNPTkZJR19IQVZFX0hBUkRMT0NLVVBfREVURUNUT1JfQlVE
RFk9eQojIGVuZCBvZiBEZWJ1ZyBPb3BzLCBMb2NrdXBzIGFuZCBIYW5ncwoKIwojIFNjaGVk
dWxlciBEZWJ1Z2dpbmcKIwojIENPTkZJR19TQ0hFRFNUQVRTIGlzIG5vdCBzZXQKIyBlbmQg
b2YgU2NoZWR1bGVyIERlYnVnZ2luZwoKIyBDT05GSUdfREVCVUdfVElNRUtFRVBJTkcgaXMg
bm90IHNldAoKIwojIExvY2sgRGVidWdnaW5nIChzcGlubG9ja3MsIG11dGV4ZXMsIGV0Yy4u
LikKIwpDT05GSUdfTE9DS19ERUJVR0dJTkdfU1VQUE9SVD15CkNPTkZJR19XV19NVVRFWF9T
RUxGVEVTVD15CiMgZW5kIG9mIExvY2sgRGVidWdnaW5nIChzcGlubG9ja3MsIG11dGV4ZXMs
IGV0Yy4uLikKCkNPTkZJR19ERUJVR19JUlFGTEFHUz15CkNPTkZJR19TVEFDS1RSQUNFPXkK
IyBDT05GSUdfV0FSTl9BTExfVU5TRUVERURfUkFORE9NIGlzIG5vdCBzZXQKCiMKIyBEZWJ1
ZyBrZXJuZWwgZGF0YSBzdHJ1Y3R1cmVzCiMKIyBDT05GSUdfREVCVUdfQ0xPU1VSRVMgaXMg
bm90IHNldAojIGVuZCBvZiBEZWJ1ZyBrZXJuZWwgZGF0YSBzdHJ1Y3R1cmVzCgojCiMgUkNV
IERlYnVnZ2luZwojCkNPTkZJR19SQ1VfQ1BVX1NUQUxMX1RJTUVPVVQ9MjEKQ09ORklHX1JD
VV9FWFBfQ1BVX1NUQUxMX1RJTUVPVVQ9MAojIENPTkZJR19SQ1VfQ1BVX1NUQUxMX0NQVVRJ
TUUgaXMgbm90IHNldAojIGVuZCBvZiBSQ1UgRGVidWdnaW5nCgpDT05GSUdfVVNFUl9TVEFD
S1RSQUNFX1NVUFBPUlQ9eQpDT05GSUdfSEFWRV9SRVRIT09LPXkKQ09ORklHX0hBVkVfRlVO
Q1RJT05fVFJBQ0VSPXkKQ09ORklHX0hBVkVfRlVOQ1RJT05fR1JBUEhfVFJBQ0VSPXkKQ09O
RklHX0hBVkVfRlVOQ1RJT05fR1JBUEhfUkVUVkFMPXkKQ09ORklHX0hBVkVfRFlOQU1JQ19G
VFJBQ0U9eQpDT05GSUdfSEFWRV9EWU5BTUlDX0ZUUkFDRV9XSVRIX1JFR1M9eQpDT05GSUdf
SEFWRV9EWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMUz15CkNPTkZJR19IQVZFX0RZ
TkFNSUNfRlRSQUNFX05PX1BBVENIQUJMRT15CkNPTkZJR19IQVZFX0ZUUkFDRV9NQ09VTlRf
UkVDT1JEPXkKQ09ORklHX0hBVkVfU1lTQ0FMTF9UUkFDRVBPSU5UUz15CkNPTkZJR19IQVZF
X0NfUkVDT1JETUNPVU5UPXkKQ09ORklHX0hBVkVfQlVJTERUSU1FX01DT1VOVF9TT1JUPXkK
Q09ORklHX1RSQUNJTkdfU1VQUE9SVD15CiMgQ09ORklHX0ZUUkFDRSBpcyBub3Qgc2V0CkNP
TkZJR19TQU1QTEVTPXkKQ09ORklHX1NBTVBMRV9BVVhESVNQTEFZPXkKQ09ORklHX1NBTVBM
RV9LT0JKRUNUPXkKIyBDT05GSUdfU0FNUExFX1dBVENIRE9HIGlzIG5vdCBzZXQKQ09ORklH
X0FSQ0hfSEFTX0RFVk1FTV9JU19BTExPV0VEPXkKCiMKIyB4ODYgRGVidWdnaW5nCiMKQ09O
RklHX1g4Nl9WRVJCT1NFX0JPT1RVUD15CkNPTkZJR19FQVJMWV9QUklOVEs9eQpDT05GSUdf
RUZJX1BHVF9EVU1QPXkKQ09ORklHX0hBVkVfTU1JT1RSQUNFX1NVUFBPUlQ9eQojIENPTkZJ
R19JT19ERUxBWV8wWDgwIGlzIG5vdCBzZXQKQ09ORklHX0lPX0RFTEFZXzBYRUQ9eQojIENP
TkZJR19JT19ERUxBWV9VREVMQVkgaXMgbm90IHNldAojIENPTkZJR19JT19ERUxBWV9OT05F
IGlzIG5vdCBzZXQKQ09ORklHX1VOV0lOREVSX0ZSQU1FX1BPSU5URVI9eQojIGVuZCBvZiB4
ODYgRGVidWdnaW5nCgojCiMgS2VybmVsIFRlc3RpbmcgYW5kIENvdmVyYWdlCiMKQ09ORklH
X0tVTklUPXkKQ09ORklHX0tVTklUX0RFQlVHRlM9eQojIENPTkZJR19LVU5JVF9GQVVMVF9U
RVNUIGlzIG5vdCBzZXQKQ09ORklHX0tVTklUX1RFU1Q9eQpDT05GSUdfS1VOSVRfRVhBTVBM
RV9URVNUPXkKQ09ORklHX0tVTklUX0FMTF9URVNUUz15CkNPTkZJR19LVU5JVF9ERUZBVUxU
X0VOQUJMRUQ9eQpDT05GSUdfQ0NfSEFTX1NBTkNPVl9UUkFDRV9QQz15CkNPTkZJR19SVU5U
SU1FX1RFU1RJTkdfTUVOVT15CiMgQ09ORklHX1RFU1RfREhSWSBpcyBub3Qgc2V0CkNPTkZJ
R19DUFVNQVNLX0tVTklUX1RFU1Q9eQpDT05GSUdfVEVTVF9MSVNUX1NPUlQ9eQpDT05GSUdf
VEVTVF9TT1JUPXkKQ09ORklHX1RFU1RfSU9WX0lURVI9eQojIENPTkZJR19BVE9NSUM2NF9T
RUxGVEVTVCBpcyBub3Qgc2V0CkNPTkZJR19BU1lOQ19SQUlENl9URVNUPXkKQ09ORklHX1RF
U1RfSEVYRFVNUD15CkNPTkZJR19TVFJJTkdfS1VOSVRfVEVTVD15CkNPTkZJR19TVFJJTkdf
SEVMUEVSU19LVU5JVF9URVNUPXkKIyBDT05GSUdfVEVTVF9LU1RSVE9YIGlzIG5vdCBzZXQK
IyBDT05GSUdfVEVTVF9QUklOVEYgaXMgbm90IHNldApDT05GSUdfVEVTVF9TQ0FORj15CkNP
TkZJR19URVNUX0JJVE1BUD15CkNPTkZJR19URVNUX1VVSUQ9eQpDT05GSUdfVEVTVF9YQVJS
QVk9eQpDT05GSUdfVEVTVF9NQVBMRV9UUkVFPXkKQ09ORklHX1RFU1RfUkhBU0hUQUJMRT15
CkNPTkZJR19URVNUX0lEQT15CkNPTkZJR19URVNUX0JJVE9QUz15CkNPTkZJR19GSU5EX0JJ
VF9CRU5DSE1BUks9eQojIENPTkZJR19URVNUX0ZJUk1XQVJFIGlzIG5vdCBzZXQKQ09ORklH
X1RFU1RfU1lTQ1RMPXkKQ09ORklHX0JJVEZJRUxEX0tVTklUPXkKQ09ORklHX0NIRUNLU1VN
X0tVTklUPXkKQ09ORklHX0hBU0hfS1VOSVRfVEVTVD15CkNPTkZJR19SRVNPVVJDRV9LVU5J
VF9URVNUPXkKQ09ORklHX1NZU0NUTF9LVU5JVF9URVNUPXkKQ09ORklHX0xJU1RfS1VOSVRf
VEVTVD15CkNPTkZJR19IQVNIVEFCTEVfS1VOSVRfVEVTVD15CkNPTkZJR19MSU5FQVJfUkFO
R0VTX1RFU1Q9eQpDT05GSUdfQ01ETElORV9LVU5JVF9URVNUPXkKQ09ORklHX0JJVFNfVEVT
VD15CkNPTkZJR19TTFVCX0tVTklUX1RFU1Q9eQpDT05GSUdfUkFUSU9OQUxfS1VOSVRfVEVT
VD15CkNPTkZJR19NRU1DUFlfS1VOSVRfVEVTVD15CkNPTkZJR19JU19TSUdORURfVFlQRV9L
VU5JVF9URVNUPXkKQ09ORklHX09WRVJGTE9XX0tVTklUX1RFU1Q9eQpDT05GSUdfU1RBQ0tJ
TklUX0tVTklUX1RFU1Q9eQpDT05GSUdfRk9SVElGWV9LVU5JVF9URVNUPXkKQ09ORklHX0hX
X0JSRUFLUE9JTlRfS1VOSVRfVEVTVD15CkNPTkZJR19TSVBIQVNIX0tVTklUX1RFU1Q9eQpD
T05GSUdfVVNFUkNPUFlfS1VOSVRfVEVTVD15CkNPTkZJR19URVNUX1VERUxBWT15CiMgQ09O
RklHX1RFU1RfRFlOQU1JQ19ERUJVRyBpcyBub3Qgc2V0CkNPTkZJR19URVNUX01FTUNBVF9Q
PXkKIyBDT05GSUdfVEVTVF9NRU1JTklUIGlzIG5vdCBzZXQKIyBDT05GSUdfVEVTVF9GUkVF
X1BBR0VTIGlzIG5vdCBzZXQKIyBDT05GSUdfVEVTVF9GUFUgaXMgbm90IHNldApDT05GSUdf
VEVTVF9DTE9DS1NPVVJDRV9XQVRDSERPRz15CkNPTkZJR19BUkNIX1VTRV9NRU1URVNUPXkK
IyBDT05GSUdfTUVNVEVTVCBpcyBub3Qgc2V0CiMgZW5kIG9mIEtlcm5lbCBUZXN0aW5nIGFu
ZCBDb3ZlcmFnZQoKIwojIFJ1c3QgaGFja2luZwojCiMgZW5kIG9mIFJ1c3QgaGFja2luZwoj
IGVuZCBvZiBLZXJuZWwgaGFja2luZwo=

--------------027ScQNViiROuJS1pkY2WdSU--
.

Content-Type: multipart/mixed; boundary="------------jadfGx5XNmWYTIEs4LuH1nI3"
Message-ID: <9c3efa71-d517-497d-8c52-0b96d42806db@gmail.com>
Date: Sat, 6 Jul 2024 00:20:07 +0200
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Language: en-US
To: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
From: Mirsad Todorovac <mtodorovac69@gmail.com>
Cc: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>,
 linux-acpi@vger.kernel.org
Subject: =?UTF-8?Q?=5BPROBLEM_net-next=5D_drivers/pnp/pnpbios/core=2Ec=3A90?=
 =?UTF-8?B?OjIwOiBlcnJvcjogdmFyaWFibGUg4oCYdmFsdWXigJkgc2V0IGJ1dCBub3QgdXNl?=
 =?UTF-8?Q?d_=5B-Werror=3Dunused-but-set-variable=5D?=
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269553
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-acpi
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

This is a multi-part message in MIME format.
--------------jadfGx5XNmWYTIEs4LuH1nI3
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Hi, all!

This is the result of testing randconfig with KCONFIG_SEED=0xEE7AB52F in next-20240703 vanilla tree on
Ubuntu 22.04 LTS. GCC used is gcc (Ubuntu 12.3.0-1ubuntu1~22.04) 12.3.0.

The particular error is as follows:

drivers/pnp/pnpbios/core.c: In function ‘pnp_dock_event’:
drivers/pnp/pnpbios/core.c:90:20: error: variable ‘value’ set but not used [-Werror=unused-but-set-variable]
   90 |         int i = 0, value;
      |                    ^~~~~

   75 /*
   76  *
   77  * DOCKING FUNCTIONS
   78  *
   79  */
   80 
   81 static struct completion unload_sem;
   82 
   83 /*
   84  * (Much of this belongs in a shared routine somewhere)
   85  */
   86 static int pnp_dock_event(int dock, struct pnp_docking_station_info *info)
   87 {
   88         static char const sbin_pnpbios[] = "/sbin/pnpbios";
   89         char *argv[3], **envp, *buf, *scratch;
   90         int i = 0, value;
   91 
   92         if (!(envp = kcalloc(20, sizeof(char *), GFP_KERNEL)))
   93                 return -ENOMEM;
   94         if (!(buf = kzalloc(256, GFP_KERNEL))) {
   95                 kfree(envp);
   96                 return -ENOMEM;
   97         }
   98 
   99         /* FIXME: if there are actual users of this, it should be
  100          * integrated into the driver core and use the usual infrastructure
  101          * like sysfs and uevents
  102          */
  103         argv[0] = (char *)sbin_pnpbios;
  104         argv[1] = "dock";
  105         argv[2] = NULL;
  106 
  107         /* minimal command environment */
  108         envp[i++] = "HOME=/";
  109         envp[i++] = "PATH=/sbin:/bin:/usr/sbin:/usr/bin";
  110 
  111 #ifdef  DEBUG
  112         /* hint that policy agent should enter no-stdout debug mode */
  113         envp[i++] = "DEBUG=kernel";
  114 #endif
  115         /* extensible set of named bus-specific parameters,
  116          * supporting multiple driver selection algorithms.
  117          */
  118         scratch = buf;
  119 
  120         /* action:  add, remove */
  121         envp[i++] = scratch;
  122         scratch += sprintf(scratch, "ACTION=%s", dock ? "add" : "remove") + 1;
  123 
  124         /* Report the ident for the dock */
  125         envp[i++] = scratch;
  126         scratch += sprintf(scratch, "DOCK=%x/%x/%x",
  127                            info->location_id, info->serial, info->capabilities);
  128         envp[i] = NULL;
  129 
→ 130         value = call_usermodehelper(sbin_pnpbios, argv, envp, UMH_WAIT_EXEC);
  131         kfree(buf);
  132         kfree(envp);
  133         return 0;
  134 }

The error was apparently introduced by commit 1da177e4c3f4 (tag: v2.6.12-rc2).

Hope this helps.

Best regards,
Mirsad Todorovac

--------------jadfGx5XNmWYTIEs4LuH1nI3
Content-Type: text/plain; charset=UTF-8; name=".config"
Content-Disposition: attachment; filename=".config"
Content-Transfer-Encoding: base64

IwojIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZpbGU7IERPIE5PVCBFRElULgojIExpbnV4
L3g4NiA2LjEwLjAtcmM2IEtlcm5lbCBDb25maWd1cmF0aW9uCiMKQ09ORklHX0NDX1ZFUlNJ
T05fVEVYVD0iZ2NjIChVYnVudHUgMTIuMy4wLTF1YnVudHUxfjIyLjA0KSAxMi4zLjAiCkNP
TkZJR19DQ19JU19HQ0M9eQpDT05GSUdfR0NDX1ZFUlNJT049MTIwMzAwCkNPTkZJR19DTEFO
R19WRVJTSU9OPTAKQ09ORklHX0FTX0lTX0dOVT15CkNPTkZJR19BU19WRVJTSU9OPTIzODAw
CkNPTkZJR19MRF9JU19CRkQ9eQpDT05GSUdfTERfVkVSU0lPTj0yMzgwMApDT05GSUdfTExE
X1ZFUlNJT049MApDT05GSUdfQ0NfQ0FOX0xJTks9eQpDT05GSUdfQ0NfQ0FOX0xJTktfU1RB
VElDPXkKQ09ORklHX0NDX0hBU19BU01fR09UT19PVVRQVVQ9eQpDT05GSUdfQ0NfSEFTX0FT
TV9HT1RPX1RJRURfT1VUUFVUPXkKQ09ORklHX0dDQ19BU01fR09UT19PVVRQVVRfV09SS0FS
T1VORD15CkNPTkZJR19UT09MU19TVVBQT1JUX1JFTFI9eQpDT05GSUdfQ0NfSEFTX0FTTV9J
TkxJTkU9eQpDT05GSUdfQ0NfSEFTX05PX1BST0ZJTEVfRk5fQVRUUj15CkNPTkZJR19QQUhP
TEVfVkVSU0lPTj0xMjUKQ09ORklHX0lSUV9XT1JLPXkKQ09ORklHX0JVSUxEVElNRV9UQUJM
RV9TT1JUPXkKQ09ORklHX1RIUkVBRF9JTkZPX0lOX1RBU0s9eQoKIwojIEdlbmVyYWwgc2V0
dXAKIwpDT05GSUdfSU5JVF9FTlZfQVJHX0xJTUlUPTMyCiMgQ09ORklHX0NPTVBJTEVfVEVT
VCBpcyBub3Qgc2V0CkNPTkZJR19XRVJST1I9eQpDT05GSUdfTE9DQUxWRVJTSU9OPSIiCiMg
Q09ORklHX0xPQ0FMVkVSU0lPTl9BVVRPIGlzIG5vdCBzZXQKQ09ORklHX0JVSUxEX1NBTFQ9
IiIKQ09ORklHX0hBVkVfS0VSTkVMX0daSVA9eQpDT05GSUdfSEFWRV9LRVJORUxfQlpJUDI9
eQpDT05GSUdfSEFWRV9LRVJORUxfTFpNQT15CkNPTkZJR19IQVZFX0tFUk5FTF9YWj15CkNP
TkZJR19IQVZFX0tFUk5FTF9MWk89eQpDT05GSUdfSEFWRV9LRVJORUxfTFo0PXkKQ09ORklH
X0hBVkVfS0VSTkVMX1pTVEQ9eQpDT05GSUdfS0VSTkVMX0daSVA9eQojIENPTkZJR19LRVJO
RUxfQlpJUDIgaXMgbm90IHNldAojIENPTkZJR19LRVJORUxfTFpNQSBpcyBub3Qgc2V0CiMg
Q09ORklHX0tFUk5FTF9YWiBpcyBub3Qgc2V0CiMgQ09ORklHX0tFUk5FTF9MWk8gaXMgbm90
IHNldAojIENPTkZJR19LRVJORUxfTFo0IGlzIG5vdCBzZXQKIyBDT05GSUdfS0VSTkVMX1pT
VEQgaXMgbm90IHNldApDT05GSUdfREVGQVVMVF9JTklUPSIiCkNPTkZJR19ERUZBVUxUX0hP
U1ROQU1FPSIobm9uZSkiCiMgQ09ORklHX1NZU1ZJUEMgaXMgbm90IHNldApDT05GSUdfUE9T
SVhfTVFVRVVFPXkKQ09ORklHX1BPU0lYX01RVUVVRV9TWVNDVEw9eQojIENPTkZJR19XQVRD
SF9RVUVVRSBpcyBub3Qgc2V0CiMgQ09ORklHX0NST1NTX01FTU9SWV9BVFRBQ0ggaXMgbm90
IHNldAojIENPTkZJR19VU0VMSUIgaXMgbm90IHNldAojIENPTkZJR19BVURJVCBpcyBub3Qg
c2V0CkNPTkZJR19IQVZFX0FSQ0hfQVVESVRTWVNDQUxMPXkKCiMKIyBJUlEgc3Vic3lzdGVt
CiMKQ09ORklHX0dFTkVSSUNfSVJRX1BST0JFPXkKQ09ORklHX0dFTkVSSUNfSVJRX1NIT1c9
eQpDT05GSUdfR0VORVJJQ19JUlFfRUZGRUNUSVZFX0FGRl9NQVNLPXkKQ09ORklHX0dFTkVS
SUNfUEVORElOR19JUlE9eQpDT05GSUdfR0VORVJJQ19JUlFfTUlHUkFUSU9OPXkKQ09ORklH
X0hBUkRJUlFTX1NXX1JFU0VORD15CkNPTkZJR19HRU5FUklDX0lSUV9DSElQPXkKQ09ORklH
X0lSUV9ET01BSU49eQpDT05GSUdfSVJRX0RPTUFJTl9ISUVSQVJDSFk9eQpDT05GSUdfSVJR
X01TSV9JT01NVT15CkNPTkZJR19HRU5FUklDX0lSUV9NQVRSSVhfQUxMT0NBVE9SPXkKQ09O
RklHX0dFTkVSSUNfSVJRX1JFU0VSVkFUSU9OX01PREU9eQpDT05GSUdfSVJRX0ZPUkNFRF9U
SFJFQURJTkc9eQpDT05GSUdfU1BBUlNFX0lSUT15CiMgZW5kIG9mIElSUSBzdWJzeXN0ZW0K
CkNPTkZJR19DTE9DS1NPVVJDRV9XQVRDSERPRz15CkNPTkZJR19BUkNIX0NMT0NLU09VUkNF
X0lOSVQ9eQpDT05GSUdfQ0xPQ0tTT1VSQ0VfVkFMSURBVEVfTEFTVF9DWUNMRT15CkNPTkZJ
R19HRU5FUklDX1RJTUVfVlNZU0NBTEw9eQpDT05GSUdfR0VORVJJQ19DTE9DS0VWRU5UUz15
CkNPTkZJR19HRU5FUklDX0NMT0NLRVZFTlRTX0JST0FEQ0FTVD15CkNPTkZJR19HRU5FUklD
X0NMT0NLRVZFTlRTX0JST0FEQ0FTVF9JRExFPXkKQ09ORklHX0dFTkVSSUNfQ0xPQ0tFVkVO
VFNfTUlOX0FESlVTVD15CkNPTkZJR19HRU5FUklDX0NNT1NfVVBEQVRFPXkKQ09ORklHX0hB
VkVfUE9TSVhfQ1BVX1RJTUVSU19UQVNLX1dPUks9eQpDT05GSUdfUE9TSVhfQ1BVX1RJTUVS
U19UQVNLX1dPUks9eQpDT05GSUdfVElNRV9LVU5JVF9URVNUPXkKQ09ORklHX0NPTlRFWFRf
VFJBQ0tJTkc9eQpDT05GSUdfQ09OVEVYVF9UUkFDS0lOR19JRExFPXkKCiMKIyBUaW1lcnMg
c3Vic3lzdGVtCiMKQ09ORklHX0haX1BFUklPRElDPXkKIyBDT05GSUdfTk9fSFpfSURMRSBp
cyBub3Qgc2V0CkNPTkZJR19OT19IWj15CiMgQ09ORklHX0hJR0hfUkVTX1RJTUVSUyBpcyBu
b3Qgc2V0CkNPTkZJR19DTE9DS1NPVVJDRV9XQVRDSERPR19NQVhfU0tFV19VUz0xMjUKIyBl
bmQgb2YgVGltZXJzIHN1YnN5c3RlbQoKQ09ORklHX0JQRj15CkNPTkZJR19IQVZFX0VCUEZf
SklUPXkKCiMKIyBCUEYgc3Vic3lzdGVtCiMKQ09ORklHX0JQRl9TWVNDQUxMPXkKQ09ORklH
X0JQRl9KSVQ9eQojIENPTkZJR19CUEZfSklUX0FMV0FZU19PTiBpcyBub3Qgc2V0CkNPTkZJ
R19CUEZfVU5QUklWX0RFRkFVTFRfT0ZGPXkKQ09ORklHX1VTRVJNT0RFX0RSSVZFUj15CkNP
TkZJR19CUEZfUFJFTE9BRD15CiMgQ09ORklHX0JQRl9QUkVMT0FEX1VNRCBpcyBub3Qgc2V0
CiMgZW5kIG9mIEJQRiBzdWJzeXN0ZW0KCkNPTkZJR19QUkVFTVBUX1ZPTFVOVEFSWV9CVUlM
RD15CiMgQ09ORklHX1BSRUVNUFRfTk9ORSBpcyBub3Qgc2V0CkNPTkZJR19QUkVFTVBUX1ZP
TFVOVEFSWT15CiMgQ09ORklHX1BSRUVNUFQgaXMgbm90IHNldAojIENPTkZJR19QUkVFTVBU
X0RZTkFNSUMgaXMgbm90IHNldAojIENPTkZJR19TQ0hFRF9DT1JFIGlzIG5vdCBzZXQKCiMK
IyBDUFUvVGFzayB0aW1lIGFuZCBzdGF0cyBhY2NvdW50aW5nCiMKQ09ORklHX1RJQ0tfQ1BV
X0FDQ09VTlRJTkc9eQpDT05GSUdfSVJRX1RJTUVfQUNDT1VOVElORz15CkNPTkZJR19IQVZF
X1NDSEVEX0FWR19JUlE9eQpDT05GSUdfQlNEX1BST0NFU1NfQUNDVD15CkNPTkZJR19CU0Rf
UFJPQ0VTU19BQ0NUX1YzPXkKQ09ORklHX1RBU0tTVEFUUz15CiMgQ09ORklHX1RBU0tfREVM
QVlfQUNDVCBpcyBub3Qgc2V0CiMgQ09ORklHX1RBU0tfWEFDQ1QgaXMgbm90IHNldApDT05G
SUdfUFNJPXkKIyBDT05GSUdfUFNJX0RFRkFVTFRfRElTQUJMRUQgaXMgbm90IHNldAojIGVu
ZCBvZiBDUFUvVGFzayB0aW1lIGFuZCBzdGF0cyBhY2NvdW50aW5nCgpDT05GSUdfQ1BVX0lT
T0xBVElPTj15CgojCiMgUkNVIFN1YnN5c3RlbQojCkNPTkZJR19UUkVFX1JDVT15CiMgQ09O
RklHX1JDVV9FWFBFUlQgaXMgbm90IHNldApDT05GSUdfVFJFRV9TUkNVPXkKQ09ORklHX1RB
U0tTX1JDVV9HRU5FUklDPXkKQ09ORklHX05FRURfVEFTS1NfUkNVPXkKQ09ORklHX1RBU0tT
X1RSQUNFX1JDVT15CkNPTkZJR19SQ1VfU1RBTExfQ09NTU9OPXkKQ09ORklHX1JDVV9ORUVE
X1NFR0NCTElTVD15CiMgZW5kIG9mIFJDVSBTdWJzeXN0ZW0KCkNPTkZJR19JS0NPTkZJRz15
CkNPTkZJR19JS0NPTkZJR19QUk9DPXkKQ09ORklHX0lLSEVBREVSUz15CkNPTkZJR19MT0df
QlVGX1NISUZUPTE3CkNPTkZJR19MT0dfQ1BVX01BWF9CVUZfU0hJRlQ9MTIKQ09ORklHX0hB
VkVfVU5TVEFCTEVfU0NIRURfQ0xPQ0s9eQoKIwojIFNjaGVkdWxlciBmZWF0dXJlcwojCiMg
ZW5kIG9mIFNjaGVkdWxlciBmZWF0dXJlcwoKQ09ORklHX0FSQ0hfV0FOVF9CQVRDSEVEX1VO
TUFQX1RMQl9GTFVTSD15CkNPTkZJR19DQ19JTVBMSUNJVF9GQUxMVEhST1VHSD0iLVdpbXBs
aWNpdC1mYWxsdGhyb3VnaD01IgpDT05GSUdfR0NDMTBfTk9fQVJSQVlfQk9VTkRTPXkKQ09O
RklHX0NDX05PX0FSUkFZX0JPVU5EUz15CkNPTkZJR19HQ0NfTk9fU1RSSU5HT1BfT1ZFUkZM
T1c9eQpDT05GSUdfQ0NfTk9fU1RSSU5HT1BfT1ZFUkZMT1c9eQpDT05GSUdfU0xBQl9PQkpf
RVhUPXkKQ09ORklHX0NHUk9VUFM9eQpDT05GSUdfUEFHRV9DT1VOVEVSPXkKQ09ORklHX0NH
Uk9VUF9GQVZPUl9EWU5NT0RTPXkKQ09ORklHX01FTUNHPXkKIyBDT05GSUdfTUVNQ0dfVjEg
aXMgbm90IHNldAojIENPTkZJR19CTEtfQ0dST1VQIGlzIG5vdCBzZXQKIyBDT05GSUdfQ0dS
T1VQX1NDSEVEIGlzIG5vdCBzZXQKQ09ORklHX1NDSEVEX01NX0NJRD15CiMgQ09ORklHX0NH
Uk9VUF9QSURTIGlzIG5vdCBzZXQKIyBDT05GSUdfQ0dST1VQX1JETUEgaXMgbm90IHNldApD
T05GSUdfQ0dST1VQX0ZSRUVaRVI9eQojIENPTkZJR19DUFVTRVRTIGlzIG5vdCBzZXQKQ09O
RklHX0NHUk9VUF9ERVZJQ0U9eQojIENPTkZJR19DR1JPVVBfQ1BVQUNDVCBpcyBub3Qgc2V0
CkNPTkZJR19DR1JPVVBfUEVSRj15CiMgQ09ORklHX0NHUk9VUF9CUEYgaXMgbm90IHNldApD
T05GSUdfQ0dST1VQX01JU0M9eQpDT05GSUdfU09DS19DR1JPVVBfREFUQT15CkNPTkZJR19O
QU1FU1BBQ0VTPXkKIyBDT05GSUdfVVRTX05TIGlzIG5vdCBzZXQKIyBDT05GSUdfVElNRV9O
UyBpcyBub3Qgc2V0CkNPTkZJR19JUENfTlM9eQojIENPTkZJR19VU0VSX05TIGlzIG5vdCBz
ZXQKIyBDT05GSUdfUElEX05TIGlzIG5vdCBzZXQKQ09ORklHX05FVF9OUz15CiMgQ09ORklH
X0NIRUNLUE9JTlRfUkVTVE9SRSBpcyBub3Qgc2V0CiMgQ09ORklHX1NDSEVEX0FVVE9HUk9V
UCBpcyBub3Qgc2V0CiMgQ09ORklHX1JFTEFZIGlzIG5vdCBzZXQKIyBDT05GSUdfQkxLX0RF
Vl9JTklUUkQgaXMgbm90IHNldApDT05GSUdfQk9PVF9DT05GSUc9eQpDT05GSUdfQk9PVF9D
T05GSUdfRk9SQ0U9eQpDT05GSUdfQk9PVF9DT05GSUdfRU1CRUQ9eQpDT05GSUdfQk9PVF9D
T05GSUdfRU1CRURfRklMRT0iIgpDT05GSUdfSU5JVFJBTUZTX1BSRVNFUlZFX01USU1FPXkK
Q09ORklHX0NDX09QVElNSVpFX0ZPUl9QRVJGT1JNQU5DRT15CiMgQ09ORklHX0NDX09QVElN
SVpFX0ZPUl9TSVpFIGlzIG5vdCBzZXQKQ09ORklHX0xEX09SUEhBTl9XQVJOPXkKQ09ORklH
X0xEX09SUEhBTl9XQVJOX0xFVkVMPSJlcnJvciIKQ09ORklHX1NZU0NUTD15CkNPTkZJR19I
QVZFX1VJRDE2PXkKQ09ORklHX1NZU0NUTF9FWENFUFRJT05fVFJBQ0U9eQpDT05GSUdfSEFW
RV9QQ1NQS1JfUExBVEZPUk09eQojIENPTkZJR19FWFBFUlQgaXMgbm90IHNldApDT05GSUdf
VUlEMTY9eQpDT05GSUdfTVVMVElVU0VSPXkKQ09ORklHX1NHRVRNQVNLX1NZU0NBTEw9eQpD
T05GSUdfU1lTRlNfU1lTQ0FMTD15CkNPTkZJR19GSEFORExFPXkKQ09ORklHX1BPU0lYX1RJ
TUVSUz15CkNPTkZJR19QUklOVEs9eQpDT05GSUdfQlVHPXkKQ09ORklHX0VMRl9DT1JFPXkK
Q09ORklHX1BDU1BLUl9QTEFURk9STT15CkNPTkZJR19GVVRFWD15CkNPTkZJR19GVVRFWF9Q
ST15CkNPTkZJR19FUE9MTD15CkNPTkZJR19TSUdOQUxGRD15CkNPTkZJR19USU1FUkZEPXkK
Q09ORklHX0VWRU5URkQ9eQpDT05GSUdfU0hNRU09eQpDT05GSUdfQUlPPXkKQ09ORklHX0lP
X1VSSU5HPXkKQ09ORklHX0FEVklTRV9TWVNDQUxMUz15CkNPTkZJR19NRU1CQVJSSUVSPXkK
Q09ORklHX0tDTVA9eQpDT05GSUdfUlNFUT15CkNPTkZJR19DQUNIRVNUQVRfU1lTQ0FMTD15
CkNPTkZJR19LQUxMU1lNUz15CkNPTkZJR19LQUxMU1lNU19TRUxGVEVTVD15CkNPTkZJR19L
QUxMU1lNU19CQVNFX1JFTEFUSVZFPXkKQ09ORklHX0FSQ0hfSEFTX01FTUJBUlJJRVJfU1lO
Q19DT1JFPXkKQ09ORklHX0hBVkVfUEVSRl9FVkVOVFM9eQoKIwojIEtlcm5lbCBQZXJmb3Jt
YW5jZSBFdmVudHMgQW5kIENvdW50ZXJzCiMKQ09ORklHX1BFUkZfRVZFTlRTPXkKIyBlbmQg
b2YgS2VybmVsIFBlcmZvcm1hbmNlIEV2ZW50cyBBbmQgQ291bnRlcnMKCiMgQ09ORklHX1BS
T0ZJTElORyBpcyBub3Qgc2V0CgojCiMgS2V4ZWMgYW5kIGNyYXNoIGZlYXR1cmVzCiMKIyBD
T05GSUdfS0VYRUMgaXMgbm90IHNldAojIGVuZCBvZiBLZXhlYyBhbmQgY3Jhc2ggZmVhdHVy
ZXMKIyBlbmQgb2YgR2VuZXJhbCBzZXR1cAoKIyBDT05GSUdfNjRCSVQgaXMgbm90IHNldApD
T05GSUdfWDg2XzMyPXkKQ09ORklHX1g4Nj15CkNPTkZJR19JTlNUUlVDVElPTl9ERUNPREVS
PXkKQ09ORklHX09VVFBVVF9GT1JNQVQ9ImVsZjMyLWkzODYiCkNPTkZJR19MT0NLREVQX1NV
UFBPUlQ9eQpDT05GSUdfU1RBQ0tUUkFDRV9TVVBQT1JUPXkKQ09ORklHX01NVT15CkNPTkZJ
R19BUkNIX01NQVBfUk5EX0JJVFNfTUlOPTgKQ09ORklHX0FSQ0hfTU1BUF9STkRfQklUU19N
QVg9MTYKQ09ORklHX0FSQ0hfTU1BUF9STkRfQ09NUEFUX0JJVFNfTUlOPTgKQ09ORklHX0FS
Q0hfTU1BUF9STkRfQ09NUEFUX0JJVFNfTUFYPTE2CkNPTkZJR19HRU5FUklDX0lTQV9ETUE9
eQpDT05GSUdfR0VORVJJQ19CVUc9eQpDT05GSUdfQVJDSF9NQVlfSEFWRV9QQ19GREM9eQpD
T05GSUdfR0VORVJJQ19DQUxJQlJBVEVfREVMQVk9eQpDT05GSUdfQVJDSF9IQVNfQ1BVX1JF
TEFYPXkKQ09ORklHX0FSQ0hfSElCRVJOQVRJT05fUE9TU0lCTEU9eQpDT05GSUdfQVJDSF9T
VVNQRU5EX1BPU1NJQkxFPXkKQ09ORklHX0FSQ0hfU1VQUE9SVFNfVVBST0JFUz15CkNPTkZJ
R19GSVhfRUFSTFlDT05fTUVNPXkKQ09ORklHX1BHVEFCTEVfTEVWRUxTPTIKQ09ORklHX0ND
X0hBU19TQU5FX1NUQUNLUFJPVEVDVE9SPXkKCiMKIyBQcm9jZXNzb3IgdHlwZSBhbmQgZmVh
dHVyZXMKIwpDT05GSUdfU01QPXkKIyBDT05GSUdfWDg2X01QUEFSU0UgaXMgbm90IHNldAoj
IENPTkZJR19YODZfQ1BVX1JFU0NUUkwgaXMgbm90IHNldApDT05GSUdfWDg2X0JJR1NNUD15
CiMgQ09ORklHX1g4Nl9FWFRFTkRFRF9QTEFURk9STSBpcyBub3Qgc2V0CiMgQ09ORklHX1g4
Nl9BTURfUExBVEZPUk1fREVWSUNFIGlzIG5vdCBzZXQKQ09ORklHX1g4Nl8zMl9JUklTPXkK
Q09ORklHX1NDSEVEX09NSVRfRlJBTUVfUE9JTlRFUj15CiMgQ09ORklHX0hZUEVSVklTT1Jf
R1VFU1QgaXMgbm90IHNldAojIENPTkZJR19NNDg2U1ggaXMgbm90IHNldAojIENPTkZJR19N
NDg2IGlzIG5vdCBzZXQKQ09ORklHX001ODY9eQojIENPTkZJR19NNTg2VFNDIGlzIG5vdCBz
ZXQKIyBDT05GSUdfTTU4Nk1NWCBpcyBub3Qgc2V0CiMgQ09ORklHX002ODYgaXMgbm90IHNl
dAojIENPTkZJR19NUEVOVElVTUlJIGlzIG5vdCBzZXQKIyBDT05GSUdfTVBFTlRJVU1JSUkg
aXMgbm90IHNldAojIENPTkZJR19NUEVOVElVTU0gaXMgbm90IHNldAojIENPTkZJR19NUEVO
VElVTTQgaXMgbm90IHNldAojIENPTkZJR19NSzYgaXMgbm90IHNldAojIENPTkZJR19NSzcg
aXMgbm90IHNldAojIENPTkZJR19NSzggaXMgbm90IHNldAojIENPTkZJR19NQ1JVU09FIGlz
IG5vdCBzZXQKIyBDT05GSUdfTUVGRklDRU9OIGlzIG5vdCBzZXQKIyBDT05GSUdfTVdJTkNI
SVBDNiBpcyBub3Qgc2V0CiMgQ09ORklHX01XSU5DSElQM0QgaXMgbm90IHNldAojIENPTkZJ
R19NRUxBTiBpcyBub3Qgc2V0CiMgQ09ORklHX01HRU9ERUdYMSBpcyBub3Qgc2V0CiMgQ09O
RklHX01HRU9ERV9MWCBpcyBub3Qgc2V0CiMgQ09ORklHX01DWVJJWElJSSBpcyBub3Qgc2V0
CiMgQ09ORklHX01WSUFDM18yIGlzIG5vdCBzZXQKIyBDT05GSUdfTVZJQUM3IGlzIG5vdCBz
ZXQKIyBDT05GSUdfTUNPUkUyIGlzIG5vdCBzZXQKIyBDT05GSUdfTUFUT00gaXMgbm90IHNl
dApDT05GSUdfWDg2X0dFTkVSSUM9eQpDT05GSUdfWDg2X0lOVEVSTk9ERV9DQUNIRV9TSElG
VD02CkNPTkZJR19YODZfTDFfQ0FDSEVfU0hJRlQ9NgpDT05GSUdfWDg2X0YwMEZfQlVHPXkK
Q09ORklHX1g4Nl9BTElHTk1FTlRfMTY9eQpDT05GSUdfWDg2X0lOVEVMX1VTRVJDT1BZPXkK
Q09ORklHX1g4Nl9NSU5JTVVNX0NQVV9GQU1JTFk9NApDT05GSUdfSUEzMl9GRUFUX0NUTD15
CkNPTkZJR19YODZfVk1YX0ZFQVRVUkVfTkFNRVM9eQpDT05GSUdfQ1BVX1NVUF9JTlRFTD15
CkNPTkZJR19DUFVfU1VQX0NZUklYXzMyPXkKQ09ORklHX0NQVV9TVVBfQU1EPXkKQ09ORklH
X0NQVV9TVVBfSFlHT049eQpDT05GSUdfQ1BVX1NVUF9DRU5UQVVSPXkKQ09ORklHX0NQVV9T
VVBfVFJBTlNNRVRBXzMyPXkKQ09ORklHX0NQVV9TVVBfWkhBT1hJTj15CkNPTkZJR19DUFVf
U1VQX1ZPUlRFWF8zMj15CiMgQ09ORklHX0hQRVRfVElNRVIgaXMgbm90IHNldApDT05GSUdf
RE1JPXkKQ09ORklHX05SX0NQVVNfUkFOR0VfQkVHSU49MgpDT05GSUdfTlJfQ1BVU19SQU5H
RV9FTkQ9NjQKQ09ORklHX05SX0NQVVNfREVGQVVMVD0zMgpDT05GSUdfTlJfQ1BVUz0zMgpD
T05GSUdfU0NIRURfQ0xVU1RFUj15CkNPTkZJR19TQ0hFRF9TTVQ9eQojIENPTkZJR19TQ0hF
RF9NQyBpcyBub3Qgc2V0CkNPTkZJR19YODZfTE9DQUxfQVBJQz15CkNPTkZJR19YODZfSU9f
QVBJQz15CiMgQ09ORklHX1g4Nl9SRVJPVVRFX0ZPUl9CUk9LRU5fQk9PVF9JUlFTIGlzIG5v
dCBzZXQKQ09ORklHX1g4Nl9NQ0U9eQpDT05GSUdfWDg2X01DRUxPR19MRUdBQ1k9eQpDT05G
SUdfWDg2X01DRV9JTlRFTD15CiMgQ09ORklHX1g4Nl9BTkNJRU5UX01DRSBpcyBub3Qgc2V0
CkNPTkZJR19YODZfTUNFX1RIUkVTSE9MRD15CgojCiMgUGVyZm9ybWFuY2UgbW9uaXRvcmlu
ZwojCkNPTkZJR19QRVJGX0VWRU5UU19BTURfUE9XRVI9eQpDT05GSUdfUEVSRl9FVkVOVFNf
QU1EX1VOQ09SRT15CiMgQ09ORklHX1BFUkZfRVZFTlRTX0FNRF9CUlMgaXMgbm90IHNldAoj
IGVuZCBvZiBQZXJmb3JtYW5jZSBtb25pdG9yaW5nCgojIENPTkZJR19YODZfTEVHQUNZX1ZN
ODYgaXMgbm90IHNldApDT05GSUdfWDg2XzE2QklUPXkKQ09ORklHX1g4Nl9FU1BGSVgzMj15
CkNPTkZJR19YODZfSU9QTF9JT1BFUk09eQojIENPTkZJR19UT1NISUJBIGlzIG5vdCBzZXQK
Q09ORklHX1g4Nl9SRUJPT1RGSVhVUFM9eQpDT05GSUdfTUlDUk9DT0RFPXkKQ09ORklHX01J
Q1JPQ09ERV9MQVRFX0xPQURJTkc9eQojIENPTkZJR19NSUNST0NPREVfTEFURV9GT1JDRV9N
SU5SRVYgaXMgbm90IHNldAojIENPTkZJR19YODZfTVNSIGlzIG5vdCBzZXQKIyBDT05GSUdf
WDg2X0NQVUlEIGlzIG5vdCBzZXQKIyBDT05GSUdfTk9ISUdITUVNIGlzIG5vdCBzZXQKQ09O
RklHX0hJR0hNRU00Rz15CkNPTkZJR19QQUdFX09GRlNFVD0weEMwMDAwMDAwCkNPTkZJR19I
SUdITUVNPXkKQ09ORklHX0FSQ0hfRkxBVE1FTV9FTkFCTEU9eQpDT05GSUdfQVJDSF9TUEFS
U0VNRU1fRU5BQkxFPXkKQ09ORklHX0FSQ0hfU0VMRUNUX01FTU9SWV9NT0RFTD15CkNPTkZJ
R19JTExFR0FMX1BPSU5URVJfVkFMVUU9MApDT05GSUdfSElHSFBURT15CiMgQ09ORklHX1g4
Nl9DSEVDS19CSU9TX0NPUlJVUFRJT04gaXMgbm90IHNldApDT05GSUdfTVRSUj15CkNPTkZJ
R19NVFJSX1NBTklUSVpFUj15CkNPTkZJR19NVFJSX1NBTklUSVpFUl9FTkFCTEVfREVGQVVM
VD0wCkNPTkZJR19NVFJSX1NBTklUSVpFUl9TUEFSRV9SRUdfTlJfREVGQVVMVD0xCkNPTkZJ
R19YODZfUEFUPXkKQ09ORklHX0FSQ0hfVVNFU19QR19VTkNBQ0hFRD15CkNPTkZJR19YODZf
VU1JUD15CkNPTkZJR19DQ19IQVNfSUJUPXkKQ09ORklHX1g4Nl9JTlRFTF9UU1hfTU9ERV9P
RkY9eQojIENPTkZJR19YODZfSU5URUxfVFNYX01PREVfT04gaXMgbm90IHNldAojIENPTkZJ
R19YODZfSU5URUxfVFNYX01PREVfQVVUTyBpcyBub3Qgc2V0CkNPTkZJR19FRkk9eQpDT05G
SUdfRUZJX1NUVUI9eQpDT05GSUdfRUZJX0hBTkRPVkVSX1BST1RPQ09MPXkKIyBDT05GSUdf
SFpfMTAwIGlzIG5vdCBzZXQKQ09ORklHX0haXzI1MD15CiMgQ09ORklHX0haXzMwMCBpcyBu
b3Qgc2V0CiMgQ09ORklHX0haXzEwMDAgaXMgbm90IHNldApDT05GSUdfSFo9MjUwCkNPTkZJ
R19BUkNIX1NVUFBPUlRTX0tFWEVDPXkKQ09ORklHX0FSQ0hfU1VQUE9SVFNfS0VYRUNfUFVS
R0FUT1JZPXkKQ09ORklHX0FSQ0hfU1VQUE9SVFNfS0VYRUNfU0lHPXkKQ09ORklHX0FSQ0hf
U1VQUE9SVFNfS0VYRUNfU0lHX0ZPUkNFPXkKQ09ORklHX0FSQ0hfU1VQUE9SVFNfS0VYRUNf
QlpJTUFHRV9WRVJJRllfU0lHPXkKQ09ORklHX0FSQ0hfU1VQUE9SVFNfS0VYRUNfSlVNUD15
CkNPTkZJR19BUkNIX1NVUFBPUlRTX0NSQVNIX0RVTVA9eQpDT05GSUdfQVJDSF9TVVBQT1JU
U19DUkFTSF9IT1RQTFVHPXkKQ09ORklHX1BIWVNJQ0FMX1NUQVJUPTB4MTAwMDAwMApDT05G
SUdfUkVMT0NBVEFCTEU9eQpDT05GSUdfUkFORE9NSVpFX0JBU0U9eQpDT05GSUdfWDg2X05F
RURfUkVMT0NTPXkKQ09ORklHX1BIWVNJQ0FMX0FMSUdOPTB4MjAwMDAwCkNPTkZJR19IT1RQ
TFVHX0NQVT15CkNPTkZJR19DT01QQVRfVkRTTz15CkNPTkZJR19DTURMSU5FX0JPT0w9eQpD
T05GSUdfQ01ETElORT0iIgpDT05GSUdfTU9ESUZZX0xEVF9TWVNDQUxMPXkKQ09ORklHX1NU
UklDVF9TSUdBTFRTVEFDS19TSVpFPXkKIyBlbmQgb2YgUHJvY2Vzc29yIHR5cGUgYW5kIGZl
YXR1cmVzCgpDT05GSUdfQ0NfSEFTX05BTUVEX0FTPXkKQ09ORklHX1VTRV9YODZfU0VHX1NV
UFBPUlQ9eQpDT05GSUdfQ0NfSEFTX1NMUz15CkNPTkZJR19DQ19IQVNfUkVUVVJOX1RIVU5L
PXkKQ09ORklHX0NDX0hBU19FTlRSWV9QQURESU5HPXkKQ09ORklHX0ZVTkNUSU9OX1BBRERJ
TkdfQ0ZJPTExCkNPTkZJR19GVU5DVElPTl9QQURESU5HX0JZVEVTPTE2CkNPTkZJR19DUFVf
TUlUSUdBVElPTlM9eQpDT05GSUdfTUlUSUdBVElPTl9SRVRQT0xJTkU9eQojIENPTkZJR19N
SVRJR0FUSU9OX1JFVEhVTksgaXMgbm90IHNldAojIENPTkZJR19NSVRJR0FUSU9OX0dEU19G
T1JDRSBpcyBub3Qgc2V0CkNPTkZJR19NSVRJR0FUSU9OX1JGRFM9eQojIENPTkZJR19NSVRJ
R0FUSU9OX1NQRUNUUkVfQkhJIGlzIG5vdCBzZXQKCiMKIyBQb3dlciBtYW5hZ2VtZW50IGFu
ZCBBQ1BJIG9wdGlvbnMKIwojIENPTkZJR19TVVNQRU5EIGlzIG5vdCBzZXQKIyBDT05GSUdf
SElCRVJOQVRJT04gaXMgbm90IHNldAojIENPTkZJR19QTSBpcyBub3Qgc2V0CkNPTkZJR19B
UkNIX1NVUFBPUlRTX0FDUEk9eQpDT05GSUdfQUNQST15CkNPTkZJR19BQ1BJX0xFR0FDWV9U
QUJMRVNfTE9PS1VQPXkKQ09ORklHX0FSQ0hfTUlHSFRfSEFWRV9BQ1BJX1BEQz15CkNPTkZJ
R19BQ1BJX1NZU1RFTV9QT1dFUl9TVEFURVNfU1VQUE9SVD15CkNPTkZJR19BQ1BJX1RIRVJN
QUxfTElCPXkKQ09ORklHX0FDUElfREVCVUdHRVI9eQojIENPTkZJR19BQ1BJX1NQQ1JfVEFC
TEUgaXMgbm90IHNldAojIENPTkZJR19BQ1BJX1JFVl9PVkVSUklERV9QT1NTSUJMRSBpcyBu
b3Qgc2V0CiMgQ09ORklHX0FDUElfRUNfREVCVUdGUyBpcyBub3Qgc2V0CiMgQ09ORklHX0FD
UElfQUMgaXMgbm90IHNldApDT05GSUdfQUNQSV9CQVRURVJZPXkKQ09ORklHX0FDUElfQlVU
VE9OPXkKQ09ORklHX0FDUElfVklERU89eQpDT05GSUdfQUNQSV9GQU49eQpDT05GSUdfQUNQ
SV9ET0NLPXkKQ09ORklHX0FDUElfQ1BVX0ZSRVFfUFNTPXkKQ09ORklHX0FDUElfUFJPQ0VT
U09SX0NTVEFURT15CkNPTkZJR19BQ1BJX1BST0NFU1NPUl9JRExFPXkKQ09ORklHX0FDUElf
UFJPQ0VTU09SPXkKQ09ORklHX0FDUElfSVBNST15CkNPTkZJR19BQ1BJX0hPVFBMVUdfQ1BV
PXkKQ09ORklHX0FDUElfUFJPQ0VTU09SX0FHR1JFR0FUT1I9eQpDT05GSUdfQUNQSV9USEVS
TUFMPXkKQ09ORklHX0FDUElfUExBVEZPUk1fUFJPRklMRT15CkNPTkZJR19BUkNIX0hBU19B
Q1BJX1RBQkxFX1VQR1JBREU9eQpDT05GSUdfQUNQSV9ERUJVRz15CkNPTkZJR19BQ1BJX0NP
TlRBSU5FUj15CkNPTkZJR19BQ1BJX1NCUz15CkNPTkZJR19BQ1BJX0hFRD15CkNPTkZJR19B
Q1BJX0JHUlQ9eQpDT05GSUdfSEFWRV9BQ1BJX0FQRUk9eQpDT05GSUdfSEFWRV9BQ1BJX0FQ
RUlfTk1JPXkKQ09ORklHX0FDUElfQVBFST15CiMgQ09ORklHX0FDUElfQVBFSV9HSEVTIGlz
IG5vdCBzZXQKQ09ORklHX0FDUElfQVBFSV9FUlNUX0RFQlVHPXkKIyBDT05GSUdfQUNQSV9E
UFRGIGlzIG5vdCBzZXQKIyBDT05GSUdfQUNQSV9DT05GSUdGUyBpcyBub3Qgc2V0CkNPTkZJ
R19BQ1BJX1BDQz15CiMgQ09ORklHX0FDUElfRkZIIGlzIG5vdCBzZXQKQ09ORklHX1BNSUNf
T1BSRUdJT049eQojIENPTkZJR19CWFRfV0NfUE1JQ19PUFJFR0lPTiBpcyBub3Qgc2V0CkNP
TkZJR19UUFM2ODQ3MF9QTUlDX09QUkVHSU9OPXkKQ09ORklHX0FDUElfVklPVD15CkNPTkZJ
R19YODZfUE1fVElNRVI9eQoKIwojIENQVSBGcmVxdWVuY3kgc2NhbGluZwojCiMgQ09ORklH
X0NQVV9GUkVRIGlzIG5vdCBzZXQKIyBlbmQgb2YgQ1BVIEZyZXF1ZW5jeSBzY2FsaW5nCgoj
CiMgQ1BVIElkbGUKIwpDT05GSUdfQ1BVX0lETEU9eQojIENPTkZJR19DUFVfSURMRV9HT1Zf
TEFEREVSIGlzIG5vdCBzZXQKQ09ORklHX0NQVV9JRExFX0dPVl9NRU5VPXkKIyBDT05GSUdf
Q1BVX0lETEVfR09WX1RFTyBpcyBub3Qgc2V0CiMgZW5kIG9mIENQVSBJZGxlCgpDT05GSUdf
SU5URUxfSURMRT15CiMgZW5kIG9mIFBvd2VyIG1hbmFnZW1lbnQgYW5kIEFDUEkgb3B0aW9u
cwoKIwojIEJ1cyBvcHRpb25zIChQQ0kgZXRjLikKIwpDT05GSUdfSVNBX0RNQV9BUEk9eQpD
T05GSUdfSVNBPXkKQ09ORklHX1NDeDIwMD15CkNPTkZJR19TQ3gyMDBIUl9USU1FUj15CkNP
TkZJR19PTFBDPXkKQ09ORklHX09MUENfWE8xNV9TQ0k9eQojIENPTkZJR19BTElYIGlzIG5v
dCBzZXQKQ09ORklHX05FVDU1MDE9eQpDT05GSUdfR0VPUz15CiMgZW5kIG9mIEJ1cyBvcHRp
b25zIChQQ0kgZXRjLikKCiMKIyBCaW5hcnkgRW11bGF0aW9ucwojCkNPTkZJR19DT01QQVRf
MzI9eQojIGVuZCBvZiBCaW5hcnkgRW11bGF0aW9ucwoKQ09ORklHX0hBVkVfQVRPTUlDX0lP
TUFQPXkKQ09ORklHX1ZJUlRVQUxJWkFUSU9OPXkKQ09ORklHX0FTX0FWWDUxMj15CkNPTkZJ
R19BU19TSEExX05JPXkKQ09ORklHX0FTX1NIQTI1Nl9OST15CkNPTkZJR19BU19UUEFVU0U9
eQpDT05GSUdfQVNfR0ZOST15CkNPTkZJR19BU19WQUVTPXkKQ09ORklHX0FTX1ZQQ0xNVUxR
RFE9eQpDT05GSUdfQVNfV1JVU1M9eQpDT05GSUdfQVJDSF9DT05GSUdVUkVTX0NQVV9NSVRJ
R0FUSU9OUz15CgojCiMgR2VuZXJhbCBhcmNoaXRlY3R1cmUtZGVwZW5kZW50IG9wdGlvbnMK
IwpDT05GSUdfSE9UUExVR19TTVQ9eQpDT05GSUdfSE9UUExVR19DT1JFX1NZTkM9eQpDT05G
SUdfSE9UUExVR19DT1JFX1NZTkNfREVBRD15CkNPTkZJR19IT1RQTFVHX0NPUkVfU1lOQ19G
VUxMPXkKQ09ORklHX0hPVFBMVUdfU1BMSVRfU1RBUlRVUD15CkNPTkZJR19HRU5FUklDX0VO
VFJZPXkKIyBDT05GSUdfS1BST0JFUyBpcyBub3Qgc2V0CiMgQ09ORklHX0pVTVBfTEFCRUwg
aXMgbm90IHNldAojIENPTkZJR19TVEFUSUNfQ0FMTF9TRUxGVEVTVCBpcyBub3Qgc2V0CkNP
TkZJR19IQVZFX0VGRklDSUVOVF9VTkFMSUdORURfQUNDRVNTPXkKQ09ORklHX0FSQ0hfVVNF
X0JVSUxUSU5fQlNXQVA9eQpDT05GSUdfSEFWRV9JT1JFTUFQX1BST1Q9eQpDT05GSUdfSEFW
RV9LUFJPQkVTPXkKQ09ORklHX0hBVkVfS1JFVFBST0JFUz15CkNPTkZJR19IQVZFX09QVFBS
T0JFUz15CkNPTkZJR19IQVZFX0tQUk9CRVNfT05fRlRSQUNFPXkKQ09ORklHX0FSQ0hfQ09S
UkVDVF9TVEFDS1RSQUNFX09OX0tSRVRQUk9CRT15CkNPTkZJR19IQVZFX0ZVTkNUSU9OX0VS
Uk9SX0lOSkVDVElPTj15CkNPTkZJR19IQVZFX05NST15CkNPTkZJR19UUkFDRV9JUlFGTEFH
U19TVVBQT1JUPXkKQ09ORklHX1RSQUNFX0lSUUZMQUdTX05NSV9TVVBQT1JUPXkKQ09ORklH
X0hBVkVfQVJDSF9UUkFDRUhPT0s9eQpDT05GSUdfSEFWRV9ETUFfQ09OVElHVU9VUz15CkNP
TkZJR19HRU5FUklDX1NNUF9JRExFX1RIUkVBRD15CkNPTkZJR19BUkNIX0hBU19GT1JUSUZZ
X1NPVVJDRT15CkNPTkZJR19BUkNIX0hBU19TRVRfTUVNT1JZPXkKQ09ORklHX0FSQ0hfSEFT
X1NFVF9ESVJFQ1RfTUFQPXkKQ09ORklHX0FSQ0hfSEFTX0NQVV9GSU5BTElaRV9JTklUPXkK
Q09ORklHX0hBVkVfQVJDSF9USFJFQURfU1RSVUNUX1dISVRFTElTVD15CkNPTkZJR19BUkNI
X1dBTlRTX0RZTkFNSUNfVEFTS19TVFJVQ1Q9eQpDT05GSUdfQVJDSF9XQU5UU19OT19JTlNU
Uj15CkNPTkZJR19BUkNIXzMyQklUX09GRl9UPXkKQ09ORklHX0hBVkVfQVNNX01PRFZFUlNJ
T05TPXkKQ09ORklHX0hBVkVfUkVHU19BTkRfU1RBQ0tfQUNDRVNTX0FQST15CkNPTkZJR19I
QVZFX1JTRVE9eQpDT05GSUdfSEFWRV9GVU5DVElPTl9BUkdfQUNDRVNTX0FQST15CkNPTkZJ
R19IQVZFX0hXX0JSRUFLUE9JTlQ9eQpDT05GSUdfSEFWRV9NSVhFRF9CUkVBS1BPSU5UU19S
RUdTPXkKQ09ORklHX0hBVkVfVVNFUl9SRVRVUk5fTk9USUZJRVI9eQpDT05GSUdfSEFWRV9Q
RVJGX0VWRU5UU19OTUk9eQpDT05GSUdfSEFWRV9IQVJETE9DS1VQX0RFVEVDVE9SX1BFUkY9
eQpDT05GSUdfSEFWRV9QRVJGX1JFR1M9eQpDT05GSUdfSEFWRV9QRVJGX1VTRVJfU1RBQ0tf
RFVNUD15CkNPTkZJR19IQVZFX0FSQ0hfSlVNUF9MQUJFTD15CkNPTkZJR19IQVZFX0FSQ0hf
SlVNUF9MQUJFTF9SRUxBVElWRT15CkNPTkZJR19NTVVfR0FUSEVSX01FUkdFX1ZNQVM9eQpD
T05GSUdfTU1VX0xBWllfVExCX1JFRkNPVU5UPXkKQ09ORklHX0FSQ0hfSEFWRV9OTUlfU0FG
RV9DTVBYQ0hHPXkKQ09ORklHX0FSQ0hfSEFTX05NSV9TQUZFX1RISVNfQ1BVX09QUz15CkNP
TkZJR19IQVZFX0FMSUdORURfU1RSVUNUX1BBR0U9eQpDT05GSUdfSEFWRV9DTVBYQ0hHX0xP
Q0FMPXkKQ09ORklHX0hBVkVfQ01QWENIR19ET1VCTEU9eQpDT05GSUdfQVJDSF9XQU5UX0lQ
Q19QQVJTRV9WRVJTSU9OPXkKQ09ORklHX0hBVkVfQVJDSF9TRUNDT01QPXkKQ09ORklHX0hB
VkVfQVJDSF9TRUNDT01QX0ZJTFRFUj15CkNPTkZJR19TRUNDT01QPXkKQ09ORklHX1NFQ0NP
TVBfRklMVEVSPXkKIyBDT05GSUdfU0VDQ09NUF9DQUNIRV9ERUJVRyBpcyBub3Qgc2V0CkNP
TkZJR19IQVZFX0FSQ0hfU1RBQ0tMRUFLPXkKQ09ORklHX0hBVkVfU1RBQ0tQUk9URUNUT1I9
eQojIENPTkZJR19TVEFDS1BST1RFQ1RPUiBpcyBub3Qgc2V0CkNPTkZJR19BUkNIX1NVUFBP
UlRTX0xUT19DTEFORz15CkNPTkZJR19BUkNIX1NVUFBPUlRTX0xUT19DTEFOR19USElOPXkK
Q09ORklHX0xUT19OT05FPXkKQ09ORklHX0hBVkVfQVJDSF9XSVRISU5fU1RBQ0tfRlJBTUVT
PXkKQ09ORklHX0hBVkVfSVJRX1RJTUVfQUNDT1VOVElORz15CkNPTkZJR19IQVZFX01PVkVf
UFVEPXkKQ09ORklHX0hBVkVfTU9WRV9QTUQ9eQpDT05GSUdfSEFWRV9BUkNIX1RSQU5TUEFS
RU5UX0hVR0VQQUdFPXkKQ09ORklHX0FSQ0hfV0FOVF9IVUdFX1BNRF9TSEFSRT15CkNPTkZJ
R19BUkNIX1dBTlRfUE1EX01LV1JJVEU9eQpDT05GSUdfSEFWRV9NT0RfQVJDSF9TUEVDSUZJ
Qz15CkNPTkZJR19NT0RVTEVTX1VTRV9FTEZfUkVMPXkKQ09ORklHX0hBVkVfU09GVElSUV9P
Tl9PV05fU1RBQ0s9eQpDT05GSUdfU09GVElSUV9PTl9PV05fU1RBQ0s9eQpDT05GSUdfQVJD
SF9IQVNfRUxGX1JBTkRPTUlaRT15CkNPTkZJR19IQVZFX0FSQ0hfTU1BUF9STkRfQklUUz15
CkNPTkZJR19IQVZFX0VYSVRfVEhSRUFEPXkKQ09ORklHX0FSQ0hfTU1BUF9STkRfQklUUz04
CkNPTkZJR19IQVZFX1BBR0VfU0laRV80S0I9eQpDT05GSUdfUEFHRV9TSVpFXzRLQj15CkNP
TkZJR19QQUdFX1NJWkVfTEVTU19USEFOXzY0S0I9eQpDT05GSUdfUEFHRV9TSVpFX0xFU1Nf
VEhBTl8yNTZLQj15CkNPTkZJR19QQUdFX1NISUZUPTEyCkNPTkZJR19JU0FfQlVTX0FQST15
CkNPTkZJR19DTE9ORV9CQUNLV0FSRFM9eQpDT05GSUdfT0xEX1NJR1NVU1BFTkQzPXkKQ09O
RklHX09MRF9TSUdBQ1RJT049eQpDT05GSUdfQ09NUEFUXzMyQklUX1RJTUU9eQpDT05GSUdf
SEFWRV9BUkNIX1JBTkRPTUlaRV9LU1RBQ0tfT0ZGU0VUPXkKQ09ORklHX1JBTkRPTUlaRV9L
U1RBQ0tfT0ZGU0VUPXkKIyBDT05GSUdfUkFORE9NSVpFX0tTVEFDS19PRkZTRVRfREVGQVVM
VCBpcyBub3Qgc2V0CkNPTkZJR19BUkNIX0hBU19TVFJJQ1RfS0VSTkVMX1JXWD15CkNPTkZJ
R19TVFJJQ1RfS0VSTkVMX1JXWD15CkNPTkZJR19BUkNIX0hBU19TVFJJQ1RfTU9EVUxFX1JX
WD15CkNPTkZJR19IQVZFX0FSQ0hfUFJFTDMyX1JFTE9DQVRJT05TPXkKQ09ORklHX0FSQ0hf
VVNFX01FTVJFTUFQX1BST1Q9eQpDT05GSUdfQVJDSF9IQVNfTUVNX0VOQ1JZUFQ9eQpDT05G
SUdfSEFWRV9TVEFUSUNfQ0FMTD15CkNPTkZJR19IQVZFX1BSRUVNUFRfRFlOQU1JQz15CkNP
TkZJR19IQVZFX1BSRUVNUFRfRFlOQU1JQ19DQUxMPXkKQ09ORklHX0FSQ0hfV0FOVF9MRF9P
UlBIQU5fV0FSTj15CkNPTkZJR19BUkNIX1NVUFBPUlRTX0RFQlVHX1BBR0VBTExPQz15CkNP
TkZJR19BUkNIX1NQTElUX0FSRzY0PXkKQ09ORklHX0FSQ0hfSEFTX1BBUkFOT0lEX0wxRF9G
TFVTSD15CkNPTkZJR19EWU5BTUlDX1NJR0ZSQU1FPXkKQ09ORklHX0FSQ0hfSEFTX0hXX1BU
RV9ZT1VORz15CkNPTkZJR19BUkNIX0hBU19LRVJORUxfRlBVX1NVUFBPUlQ9eQoKIwojIEdD
T1YtYmFzZWQga2VybmVsIHByb2ZpbGluZwojCkNPTkZJR19BUkNIX0hBU19HQ09WX1BST0ZJ
TEVfQUxMPXkKIyBlbmQgb2YgR0NPVi1iYXNlZCBrZXJuZWwgcHJvZmlsaW5nCgpDT05GSUdf
SEFWRV9HQ0NfUExVR0lOUz15CkNPTkZJR19GVU5DVElPTl9BTElHTk1FTlRfNEI9eQpDT05G
SUdfRlVOQ1RJT05fQUxJR05NRU5UXzE2Qj15CkNPTkZJR19GVU5DVElPTl9BTElHTk1FTlQ9
MTYKIyBlbmQgb2YgR2VuZXJhbCBhcmNoaXRlY3R1cmUtZGVwZW5kZW50IG9wdGlvbnMKCkNP
TkZJR19SVF9NVVRFWEVTPXkKIyBDT05GSUdfTU9EVUxFUyBpcyBub3Qgc2V0CkNPTkZJR19C
TE9DSz15CkNPTkZJR19CTE9DS19MRUdBQ1lfQVVUT0xPQUQ9eQpDT05GSUdfQkxLX0RFVl9C
U0dfQ09NTU9OPXkKQ09ORklHX0JMS19ERVZfQlNHTElCPXkKQ09ORklHX0JMS19ERVZfSU5U
RUdSSVRZPXkKIyBDT05GSUdfQkxLX0RFVl9XUklURV9NT1VOVEVEIGlzIG5vdCBzZXQKIyBD
T05GSUdfQkxLX0RFVl9aT05FRCBpcyBub3Qgc2V0CkNPTkZJR19CTEtfV0JUPXkKQ09ORklH
X0JMS19XQlRfTVE9eQojIENPTkZJR19CTEtfU0VEX09QQUwgaXMgbm90IHNldApDT05GSUdf
QkxLX0lOTElORV9FTkNSWVBUSU9OPXkKIyBDT05GSUdfQkxLX0lOTElORV9FTkNSWVBUSU9O
X0ZBTExCQUNLIGlzIG5vdCBzZXQKCiMKIyBQYXJ0aXRpb24gVHlwZXMKIwojIENPTkZJR19Q
QVJUSVRJT05fQURWQU5DRUQgaXMgbm90IHNldApDT05GSUdfTVNET1NfUEFSVElUSU9OPXkK
Q09ORklHX0VGSV9QQVJUSVRJT049eQojIGVuZCBvZiBQYXJ0aXRpb24gVHlwZXMKCkNPTkZJ
R19CTEtfTVFfVklSVElPPXkKQ09ORklHX0JMT0NLX0hPTERFUl9ERVBSRUNBVEVEPXkKCiMK
IyBJTyBTY2hlZHVsZXJzCiMKQ09ORklHX01RX0lPU0NIRURfREVBRExJTkU9eQojIENPTkZJ
R19NUV9JT1NDSEVEX0tZQkVSIGlzIG5vdCBzZXQKIyBDT05GSUdfSU9TQ0hFRF9CRlEgaXMg
bm90IHNldAojIGVuZCBvZiBJTyBTY2hlZHVsZXJzCgpDT05GSUdfQVNOMT15CkNPTkZJR19J
TkxJTkVfU1BJTl9VTkxPQ0tfSVJRPXkKQ09ORklHX0lOTElORV9SRUFEX1VOTE9DSz15CkNP
TkZJR19JTkxJTkVfUkVBRF9VTkxPQ0tfSVJRPXkKQ09ORklHX0lOTElORV9XUklURV9VTkxP
Q0s9eQpDT05GSUdfSU5MSU5FX1dSSVRFX1VOTE9DS19JUlE9eQpDT05GSUdfQVJDSF9TVVBQ
T1JUU19BVE9NSUNfUk1XPXkKQ09ORklHX01VVEVYX1NQSU5fT05fT1dORVI9eQpDT05GSUdf
UldTRU1fU1BJTl9PTl9PV05FUj15CkNPTkZJR19MT0NLX1NQSU5fT05fT1dORVI9eQpDT05G
SUdfQVJDSF9VU0VfUVVFVUVEX1NQSU5MT0NLUz15CkNPTkZJR19RVUVVRURfU1BJTkxPQ0tT
PXkKQ09ORklHX0FSQ0hfVVNFX1FVRVVFRF9SV0xPQ0tTPXkKQ09ORklHX1FVRVVFRF9SV0xP
Q0tTPXkKQ09ORklHX0FSQ0hfSEFTX05PTl9PVkVSTEFQUElOR19BRERSRVNTX1NQQUNFPXkK
Q09ORklHX0FSQ0hfSEFTX1NZTkNfQ09SRV9CRUZPUkVfVVNFUk1PREU9eQpDT05GSUdfQVJD
SF9IQVNfU1lTQ0FMTF9XUkFQUEVSPXkKQ09ORklHX0ZSRUVaRVI9eQoKIwojIEV4ZWN1dGFi
bGUgZmlsZSBmb3JtYXRzCiMKQ09ORklHX0JJTkZNVF9FTEY9eQpDT05GSUdfQklORk1UX0VM
Rl9LVU5JVF9URVNUPXkKQ09ORklHX0VMRkNPUkU9eQpDT05GSUdfQ09SRV9EVU1QX0RFRkFV
TFRfRUxGX0hFQURFUlM9eQpDT05GSUdfQklORk1UX1NDUklQVD15CkNPTkZJR19CSU5GTVRf
TUlTQz15CkNPTkZJR19DT1JFRFVNUD15CkNPTkZJR19FWEVDX0tVTklUX1RFU1Q9eQojIGVu
ZCBvZiBFeGVjdXRhYmxlIGZpbGUgZm9ybWF0cwoKIwojIE1lbW9yeSBNYW5hZ2VtZW50IG9w
dGlvbnMKIwpDT05GSUdfU1dBUD15CiMgQ09ORklHX1pTV0FQIGlzIG5vdCBzZXQKQ09ORklH
X0hBVkVfWlNNQUxMT0M9eQoKIwojIFNsYWIgYWxsb2NhdG9yIG9wdGlvbnMKIwpDT05GSUdf
U0xVQj15CiMgQ09ORklHX1NMQUJfTUVSR0VfREVGQVVMVCBpcyBub3Qgc2V0CiMgQ09ORklH
X1NMQUJfRlJFRUxJU1RfUkFORE9NIGlzIG5vdCBzZXQKIyBDT05GSUdfU0xBQl9GUkVFTElT
VF9IQVJERU5FRCBpcyBub3Qgc2V0CkNPTkZJR19TTEFCX0JVQ0tFVFM9eQojIENPTkZJR19T
TFVCX1NUQVRTIGlzIG5vdCBzZXQKQ09ORklHX1NMVUJfQ1BVX1BBUlRJQUw9eQpDT05GSUdf
UkFORE9NX0tNQUxMT0NfQ0FDSEVTPXkKIyBlbmQgb2YgU2xhYiBhbGxvY2F0b3Igb3B0aW9u
cwoKIyBDT05GSUdfU0hVRkZMRV9QQUdFX0FMTE9DQVRPUiBpcyBub3Qgc2V0CkNPTkZJR19D
T01QQVRfQlJLPXkKQ09ORklHX1NFTEVDVF9NRU1PUllfTU9ERUw9eQojIENPTkZJR19GTEFU
TUVNX01BTlVBTCBpcyBub3Qgc2V0CkNPTkZJR19TUEFSU0VNRU1fTUFOVUFMPXkKQ09ORklH
X1NQQVJTRU1FTT15CkNPTkZJR19TUEFSU0VNRU1fU1RBVElDPXkKQ09ORklHX0hBVkVfR1VQ
X0ZBU1Q9eQpDT05GSUdfTUVNT1JZX0lTT0xBVElPTj15CkNPTkZJR19FWENMVVNJVkVfU1lT
VEVNX1JBTT15CkNPTkZJR19BUkNIX01IUF9NRU1NQVBfT05fTUVNT1JZX0VOQUJMRT15CkNP
TkZJR19TUExJVF9QVExPQ0tfQ1BVUz00CkNPTkZJR19DT01QQUNUSU9OPXkKQ09ORklHX0NP
TVBBQ1RfVU5FVklDVEFCTEVfREVGQVVMVD0xCiMgQ09ORklHX1BBR0VfUkVQT1JUSU5HIGlz
IG5vdCBzZXQKQ09ORklHX01JR1JBVElPTj15CkNPTkZJR19DT05USUdfQUxMT0M9eQpDT05G
SUdfUENQX0JBVENIX1NDQUxFX01BWD01CkNPTkZJR19CT1VOQ0U9eQojIENPTkZJR19LU00g
aXMgbm90IHNldApDT05GSUdfREVGQVVMVF9NTUFQX01JTl9BRERSPTQwOTYKQ09ORklHX0FS
Q0hfV0FOVF9HRU5FUkFMX0hVR0VUTEI9eQpDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0U9
eQpDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VfQUxXQVlTPXkKIyBDT05GSUdfVFJBTlNQ
QVJFTlRfSFVHRVBBR0VfTUFEVklTRSBpcyBub3Qgc2V0CiMgQ09ORklHX1RSQU5TUEFSRU5U
X0hVR0VQQUdFX05FVkVSIGlzIG5vdCBzZXQKQ09ORklHX1JFQURfT05MWV9USFBfRk9SX0ZT
PXkKQ09ORklHX1BHVEFCTEVfSEFTX0hVR0VfTEVBVkVTPXkKQ09ORklHX05FRURfUEVSX0NQ
VV9FTUJFRF9GSVJTVF9DSFVOSz15CkNPTkZJR19ORUVEX1BFUl9DUFVfUEFHRV9GSVJTVF9D
SFVOSz15CkNPTkZJR19IQVZFX1NFVFVQX1BFUl9DUFVfQVJFQT15CkNPTkZJR19DTUE9eQpD
T05GSUdfQ01BX1NZU0ZTPXkKQ09ORklHX0NNQV9BUkVBUz04CkNPTkZJR19HRU5FUklDX0VB
UkxZX0lPUkVNQVA9eQpDT05GSUdfUEFHRV9JRExFX0ZMQUc9eQpDT05GSUdfSURMRV9QQUdF
X1RSQUNLSU5HPXkKQ09ORklHX0FSQ0hfSEFTX0NBQ0hFX0xJTkVfU0laRT15CkNPTkZJR19B
UkNIX0hBU19DVVJSRU5UX1NUQUNLX1BPSU5URVI9eQpDT05GSUdfWk9ORV9ETUE9eQpDT05G
SUdfVk1fRVZFTlRfQ09VTlRFUlM9eQojIENPTkZJR19QRVJDUFVfU1RBVFMgaXMgbm90IHNl
dAoKIwojIEdVUF9URVNUIG5lZWRzIHRvIGhhdmUgREVCVUdfRlMgZW5hYmxlZAojCkNPTkZJ
R19ETUFQT09MX1RFU1Q9eQpDT05GSUdfQVJDSF9IQVNfUFRFX1NQRUNJQUw9eQpDT05GSUdf
S01BUF9MT0NBTD15CkNPTkZJR19NRU1GRF9DUkVBVEU9eQpDT05GSUdfU0VDUkVUTUVNPXkK
IyBDT05GSUdfQU5PTl9WTUFfTkFNRSBpcyBub3Qgc2V0CkNPTkZJR19VU0VSRkFVTFRGRD15
CkNPTkZJR19MT0NLX01NX0FORF9GSU5EX1ZNQT15CkNPTkZJR19FWEVDTUVNPXkKCiMKIyBE
YXRhIEFjY2VzcyBNb25pdG9yaW5nCiMKQ09ORklHX0RBTU9OPXkKQ09ORklHX0RBTU9OX0tV
TklUX1RFU1Q9eQojIENPTkZJR19EQU1PTl9WQUREUiBpcyBub3Qgc2V0CiMgQ09ORklHX0RB
TU9OX1BBRERSIGlzIG5vdCBzZXQKIyBDT05GSUdfREFNT05fU1lTRlMgaXMgbm90IHNldAoj
IGVuZCBvZiBEYXRhIEFjY2VzcyBNb25pdG9yaW5nCiMgZW5kIG9mIE1lbW9yeSBNYW5hZ2Vt
ZW50IG9wdGlvbnMKCkNPTkZJR19ORVQ9eQpDT05GSUdfTkVUX0lOR1JFU1M9eQpDT05GSUdf
TkVUX0VHUkVTUz15CkNPTkZJR19ORVRfWEdSRVNTPXkKQ09ORklHX1NLQl9FWFRFTlNJT05T
PXkKCiMKIyBOZXR3b3JraW5nIG9wdGlvbnMKIwpDT05GSUdfUEFDS0VUPXkKQ09ORklHX1BB
Q0tFVF9ESUFHPXkKIyBDT05GSUdfVU5JWCBpcyBub3Qgc2V0CiMgQ09ORklHX1hEUF9TT0NL
RVRTIGlzIG5vdCBzZXQKQ09ORklHX05FVF9IQU5EU0hBS0VfS1VOSVRfVEVTVD15CiMgQ09O
RklHX0lORVQgaXMgbm90IHNldAojIENPTkZJR19ORVRXT1JLX1NFQ01BUksgaXMgbm90IHNl
dApDT05GSUdfTkVUX1BUUF9DTEFTU0lGWT15CkNPTkZJR19ORVRXT1JLX1BIWV9USU1FU1RB
TVBJTkc9eQojIENPTkZJR19ORVRGSUxURVIgaXMgbm90IHNldApDT05GSUdfQVRNPXkKQ09O
RklHX0FUTV9MQU5FPXkKQ09ORklHX01SUD15CiMgQ09ORklHX0JSSURHRSBpcyBub3Qgc2V0
CkNPTkZJR19WTEFOXzgwMjFRPXkKIyBDT05GSUdfVkxBTl84MDIxUV9HVlJQIGlzIG5vdCBz
ZXQKQ09ORklHX1ZMQU5fODAyMVFfTVZSUD15CkNPTkZJR19MTEM9eQpDT05GSUdfTExDMj15
CkNPTkZJR19BVEFMSz15CiMgQ09ORklHX1gyNSBpcyBub3Qgc2V0CkNPTkZJR19MQVBCPXkK
Q09ORklHX1BIT05FVD15CiMgQ09ORklHX0lFRUU4MDIxNTQgaXMgbm90IHNldApDT05GSUdf
TkVUX1NDSEVEPXkKCiMKIyBRdWV1ZWluZy9TY2hlZHVsaW5nCiMKQ09ORklHX05FVF9TQ0hf
SFRCPXkKQ09ORklHX05FVF9TQ0hfSEZTQz15CiMgQ09ORklHX05FVF9TQ0hfUFJJTyBpcyBu
b3Qgc2V0CiMgQ09ORklHX05FVF9TQ0hfTVVMVElRIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVU
X1NDSF9SRUQgaXMgbm90IHNldAojIENPTkZJR19ORVRfU0NIX1NGQiBpcyBub3Qgc2V0CkNP
TkZJR19ORVRfU0NIX1NGUT15CkNPTkZJR19ORVRfU0NIX1RFUUw9eQpDT05GSUdfTkVUX1ND
SF9UQkY9eQojIENPTkZJR19ORVRfU0NIX0NCUyBpcyBub3Qgc2V0CiMgQ09ORklHX05FVF9T
Q0hfRVRGIGlzIG5vdCBzZXQKQ09ORklHX05FVF9TQ0hfTVFQUklPX0xJQj15CkNPTkZJR19O
RVRfU0NIX1RBUFJJTz15CkNPTkZJR19ORVRfU0NIX0dSRUQ9eQpDT05GSUdfTkVUX1NDSF9O
RVRFTT15CkNPTkZJR19ORVRfU0NIX0RSUj15CkNPTkZJR19ORVRfU0NIX01RUFJJTz15CkNP
TkZJR19ORVRfU0NIX1NLQlBSSU89eQojIENPTkZJR19ORVRfU0NIX0NIT0tFIGlzIG5vdCBz
ZXQKIyBDT05GSUdfTkVUX1NDSF9RRlEgaXMgbm90IHNldApDT05GSUdfTkVUX1NDSF9DT0RF
TD15CiMgQ09ORklHX05FVF9TQ0hfRlFfQ09ERUwgaXMgbm90IHNldApDT05GSUdfTkVUX1ND
SF9DQUtFPXkKQ09ORklHX05FVF9TQ0hfRlE9eQojIENPTkZJR19ORVRfU0NIX0hIRiBpcyBu
b3Qgc2V0CkNPTkZJR19ORVRfU0NIX1BJRT15CkNPTkZJR19ORVRfU0NIX0ZRX1BJRT15CiMg
Q09ORklHX05FVF9TQ0hfSU5HUkVTUyBpcyBub3Qgc2V0CkNPTkZJR19ORVRfU0NIX1BMVUc9
eQpDT05GSUdfTkVUX1NDSF9FVFM9eQpDT05GSUdfTkVUX1NDSF9ERUZBVUxUPXkKIyBDT05G
SUdfREVGQVVMVF9GUSBpcyBub3Qgc2V0CiMgQ09ORklHX0RFRkFVTFRfQ09ERUwgaXMgbm90
IHNldAojIENPTkZJR19ERUZBVUxUX0ZRX1BJRSBpcyBub3Qgc2V0CiMgQ09ORklHX0RFRkFV
TFRfU0ZRIGlzIG5vdCBzZXQKQ09ORklHX0RFRkFVTFRfUEZJRk9fRkFTVD15CkNPTkZJR19E
RUZBVUxUX05FVF9TQ0g9InBmaWZvX2Zhc3QiCgojCiMgQ2xhc3NpZmljYXRpb24KIwpDT05G
SUdfTkVUX0NMUz15CkNPTkZJR19ORVRfQ0xTX0JBU0lDPXkKQ09ORklHX05FVF9DTFNfRlc9
eQpDT05GSUdfTkVUX0NMU19VMzI9eQpDT05GSUdfQ0xTX1UzMl9QRVJGPXkKQ09ORklHX0NM
U19VMzJfTUFSSz15CiMgQ09ORklHX05FVF9DTFNfRkxPVyBpcyBub3Qgc2V0CiMgQ09ORklH
X05FVF9DTFNfQ0dST1VQIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVUX0NMU19CUEYgaXMgbm90
IHNldApDT05GSUdfTkVUX0NMU19GTE9XRVI9eQojIENPTkZJR19ORVRfQ0xTX01BVENIQUxM
IGlzIG5vdCBzZXQKQ09ORklHX05FVF9FTUFUQ0g9eQpDT05GSUdfTkVUX0VNQVRDSF9TVEFD
Sz0zMgojIENPTkZJR19ORVRfRU1BVENIX0NNUCBpcyBub3Qgc2V0CkNPTkZJR19ORVRfRU1B
VENIX05CWVRFPXkKIyBDT05GSUdfTkVUX0VNQVRDSF9VMzIgaXMgbm90IHNldApDT05GSUdf
TkVUX0VNQVRDSF9NRVRBPXkKQ09ORklHX05FVF9FTUFUQ0hfVEVYVD15CkNPTkZJR19ORVRf
RU1BVENIX0NBTklEPXkKQ09ORklHX05FVF9DTFNfQUNUPXkKIyBDT05GSUdfTkVUX0FDVF9Q
T0xJQ0UgaXMgbm90IHNldApDT05GSUdfTkVUX0FDVF9HQUNUPXkKIyBDT05GSUdfR0FDVF9Q
Uk9CIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVUX0FDVF9NSVJSRUQgaXMgbm90IHNldAojIENP
TkZJR19ORVRfQUNUX1NBTVBMRSBpcyBub3Qgc2V0CkNPTkZJR19ORVRfQUNUX05BVD15CiMg
Q09ORklHX05FVF9BQ1RfUEVESVQgaXMgbm90IHNldApDT05GSUdfTkVUX0FDVF9TSU1QPXkK
Q09ORklHX05FVF9BQ1RfU0tCRURJVD15CkNPTkZJR19ORVRfQUNUX01QTFM9eQpDT05GSUdf
TkVUX0FDVF9WTEFOPXkKQ09ORklHX05FVF9BQ1RfQlBGPXkKQ09ORklHX05FVF9BQ1RfU0tC
TU9EPXkKQ09ORklHX05FVF9BQ1RfSUZFPXkKQ09ORklHX05FVF9BQ1RfVFVOTkVMX0tFWT15
CkNPTkZJR19ORVRfQUNUX0dBVEU9eQpDT05GSUdfTkVUX0lGRV9TS0JNQVJLPXkKIyBDT05G
SUdfTkVUX0lGRV9TS0JQUklPIGlzIG5vdCBzZXQKQ09ORklHX05FVF9JRkVfU0tCVENJTkRF
WD15CkNPTkZJR19ORVRfVENfU0tCX0VYVD15CkNPTkZJR19ORVRfU0NIX0ZJRk89eQpDT05G
SUdfRENCPXkKIyBDT05GSUdfRE5TX1JFU09MVkVSIGlzIG5vdCBzZXQKQ09ORklHX0JBVE1B
Tl9BRFY9eQojIENPTkZJR19CQVRNQU5fQURWX0JBVE1BTl9WIGlzIG5vdCBzZXQKQ09ORklH
X0JBVE1BTl9BRFZfTkM9eQpDT05GSUdfQkFUTUFOX0FEVl9ERUJVRz15CiMgQ09ORklHX1ZT
T0NLRVRTIGlzIG5vdCBzZXQKQ09ORklHX05FVExJTktfRElBRz15CiMgQ09ORklHX01QTFMg
aXMgbm90IHNldApDT05GSUdfTkVUX05TSD15CkNPTkZJR19IU1I9eQojIENPTkZJR19RUlRS
IGlzIG5vdCBzZXQKIyBDT05GSUdfUENQVV9ERVZfUkVGQ05UIGlzIG5vdCBzZXQKQ09ORklH
X01BWF9TS0JfRlJBR1M9MTcKQ09ORklHX1JQUz15CkNPTkZJR19SRlNfQUNDRUw9eQpDT05G
SUdfU09DS19SWF9RVUVVRV9NQVBQSU5HPXkKQ09ORklHX1hQUz15CkNPTkZJR19DR1JPVVBf
TkVUX1BSSU89eQojIENPTkZJR19DR1JPVVBfTkVUX0NMQVNTSUQgaXMgbm90IHNldApDT05G
SUdfTkVUX1JYX0JVU1lfUE9MTD15CkNPTkZJR19CUUw9eQpDT05GSUdfTkVUX0ZMT1dfTElN
SVQ9eQoKIwojIE5ldHdvcmsgdGVzdGluZwojCiMgZW5kIG9mIE5ldHdvcmsgdGVzdGluZwoj
IGVuZCBvZiBOZXR3b3JraW5nIG9wdGlvbnMKCiMgQ09ORklHX0hBTVJBRElPIGlzIG5vdCBz
ZXQKQ09ORklHX0NBTj15CiMgQ09ORklHX0NBTl9SQVcgaXMgbm90IHNldApDT05GSUdfQ0FO
X0JDTT15CkNPTkZJR19DQU5fR1c9eQpDT05GSUdfQ0FOX0oxOTM5PXkKQ09ORklHX0NBTl9J
U09UUD15CiMgQ09ORklHX0JUIGlzIG5vdCBzZXQKQ09ORklHX01DVFA9eQpDT05GSUdfTUNU
UF9URVNUPXkKQ09ORklHX01DVFBfRkxPV1M9eQojIENPTkZJR19XSVJFTEVTUyBpcyBub3Qg
c2V0CiMgQ09ORklHX1JGS0lMTCBpcyBub3Qgc2V0CkNPTkZJR19ORVRfOVA9eQojIENPTkZJ
R19ORVRfOVBfRkQgaXMgbm90IHNldApDT05GSUdfTkVUXzlQX1ZJUlRJTz15CkNPTkZJR19O
RVRfOVBfREVCVUc9eQpDT05GSUdfQ0FJRj15CkNPTkZJR19DQUlGX0RFQlVHPXkKQ09ORklH
X0NBSUZfTkVUREVWPXkKQ09ORklHX0NBSUZfVVNCPXkKIyBDT05GSUdfTkZDIGlzIG5vdCBz
ZXQKQ09ORklHX1BTQU1QTEU9eQpDT05GSUdfTkVUX0lGRT15CiMgQ09ORklHX0xXVFVOTkVM
IGlzIG5vdCBzZXQKQ09ORklHX0dST19DRUxMUz15CkNPTkZJR19ORVRfU09DS19NU0c9eQpD
T05GSUdfTkVUX0RFVkxJTks9eQpDT05GSUdfUEFHRV9QT09MPXkKQ09ORklHX1BBR0VfUE9P
TF9TVEFUUz15CkNPTkZJR19GQUlMT1ZFUj15CiMgQ09ORklHX0VUSFRPT0xfTkVUTElOSyBp
cyBub3Qgc2V0CkNPTkZJR19ORVRERVZfQUREUl9MSVNUX1RFU1Q9eQpDT05GSUdfTkVUX1RF
U1Q9eQoKIwojIERldmljZSBEcml2ZXJzCiMKQ09ORklHX0hBVkVfRUlTQT15CkNPTkZJR19F
SVNBPXkKIyBDT05GSUdfRUlTQV9WTEJfUFJJTUlORyBpcyBub3Qgc2V0CkNPTkZJR19FSVNB
X1ZJUlRVQUxfUk9PVD15CiMgQ09ORklHX0VJU0FfTkFNRVMgaXMgbm90IHNldApDT05GSUdf
SEFWRV9QQ0k9eQpDT05GSUdfR0VORVJJQ19QQ0lfSU9NQVA9eQojIENPTkZJR19QQ0kgaXMg
bm90IHNldAojIENPTkZJR19QQ0NBUkQgaXMgbm90IHNldAoKIwojIEdlbmVyaWMgRHJpdmVy
IE9wdGlvbnMKIwpDT05GSUdfQVVYSUxJQVJZX0JVUz15CiMgQ09ORklHX1VFVkVOVF9IRUxQ
RVIgaXMgbm90IHNldAojIENPTkZJR19ERVZUTVBGUyBpcyBub3Qgc2V0CkNPTkZJR19TVEFO
REFMT05FPXkKQ09ORklHX1BSRVZFTlRfRklSTVdBUkVfQlVJTEQ9eQoKIwojIEZpcm13YXJl
IGxvYWRlcgojCkNPTkZJR19GV19MT0FERVI9eQojIENPTkZJR19GV19MT0FERVJfREVCVUcg
aXMgbm90IHNldApDT05GSUdfRldfTE9BREVSX1BBR0VEX0JVRj15CkNPTkZJR19GV19MT0FE
RVJfU1lTRlM9eQpDT05GSUdfRVhUUkFfRklSTVdBUkU9IiIKQ09ORklHX0ZXX0xPQURFUl9V
U0VSX0hFTFBFUj15CkNPTkZJR19GV19MT0FERVJfVVNFUl9IRUxQRVJfRkFMTEJBQ0s9eQpD
T05GSUdfRldfTE9BREVSX0NPTVBSRVNTPXkKIyBDT05GSUdfRldfTE9BREVSX0NPTVBSRVNT
X1haIGlzIG5vdCBzZXQKIyBDT05GSUdfRldfTE9BREVSX0NPTVBSRVNTX1pTVEQgaXMgbm90
IHNldApDT05GSUdfRldfVVBMT0FEPXkKIyBlbmQgb2YgRmlybXdhcmUgbG9hZGVyCgpDT05G
SUdfQUxMT1dfREVWX0NPUkVEVU1QPXkKQ09ORklHX1BNX1FPU19LVU5JVF9URVNUPXkKQ09O
RklHX0RSSVZFUl9QRV9LVU5JVF9URVNUPXkKQ09ORklHX0dFTkVSSUNfQ1BVX0RFVklDRVM9
eQpDT05GSUdfR0VORVJJQ19DUFVfQVVUT1BST0JFPXkKQ09ORklHX0dFTkVSSUNfQ1BVX1ZV
TE5FUkFCSUxJVElFUz15CkNPTkZJR19TT0NfQlVTPXkKQ09ORklHX1JFR01BUD15CkNPTkZJ
R19SRUdNQVBfS1VOSVQ9eQpDT05GSUdfUkVHTUFQX0JVSUxEPXkKQ09ORklHX1JFR01BUF9J
MkM9eQpDT05GSUdfUkVHTUFQX1cxPXkKQ09ORklHX1JFR01BUF9NTUlPPXkKQ09ORklHX1JF
R01BUF9JUlE9eQpDT05GSUdfUkVHTUFQX1JBTT15CkNPTkZJR19SRUdNQVBfU09VTkRXSVJF
PXkKQ09ORklHX1JFR01BUF9JM0M9eQpDT05GSUdfRE1BX1NIQVJFRF9CVUZGRVI9eQojIENP
TkZJR19ETUFfRkVOQ0VfVFJBQ0UgaXMgbm90IHNldApDT05GSUdfRldfREVWTElOS19TWU5D
X1NUQVRFX1RJTUVPVVQ9eQojIGVuZCBvZiBHZW5lcmljIERyaXZlciBPcHRpb25zCgojCiMg
QnVzIGRldmljZXMKIwojIENPTkZJR19NSElfQlVTIGlzIG5vdCBzZXQKQ09ORklHX01ISV9C
VVNfRVA9eQojIGVuZCBvZiBCdXMgZGV2aWNlcwoKIwojIENhY2hlIERyaXZlcnMKIwojIGVu
ZCBvZiBDYWNoZSBEcml2ZXJzCgpDT05GSUdfQ09OTkVDVE9SPXkKIyBDT05GSUdfUFJPQ19F
VkVOVFMgaXMgbm90IHNldAoKIwojIEZpcm13YXJlIERyaXZlcnMKIwoKIwojIEFSTSBTeXN0
ZW0gQ29udHJvbCBhbmQgTWFuYWdlbWVudCBJbnRlcmZhY2UgUHJvdG9jb2wKIwojIGVuZCBv
ZiBBUk0gU3lzdGVtIENvbnRyb2wgYW5kIE1hbmFnZW1lbnQgSW50ZXJmYWNlIFByb3RvY29s
CgojIENPTkZJR19FREQgaXMgbm90IHNldApDT05GSUdfRklSTVdBUkVfTUVNTUFQPXkKQ09O
RklHX0RNSUlEPXkKIyBDT05GSUdfRE1JX1NZU0ZTIGlzIG5vdCBzZXQKQ09ORklHX0RNSV9T
Q0FOX01BQ0hJTkVfTk9OX0VGSV9GQUxMQkFDSz15CkNPTkZJR19GV19DRkdfU1lTRlM9eQpD
T05GSUdfRldfQ0ZHX1NZU0ZTX0NNRExJTkU9eQojIENPTkZJR19TWVNGQl9TSU1QTEVGQiBp
cyBub3Qgc2V0CkNPTkZJR19HT09HTEVfRklSTVdBUkU9eQpDT05GSUdfR09PR0xFX1NNST15
CiMgQ09ORklHX0dPT0dMRV9DT1JFQk9PVF9UQUJMRSBpcyBub3Qgc2V0CkNPTkZJR19HT09H
TEVfTUVNQ09OU09MRT15CkNPTkZJR19HT09HTEVfTUVNQ09OU09MRV9YODZfTEVHQUNZPXkK
CiMKIyBFRkkgKEV4dGVuc2libGUgRmlybXdhcmUgSW50ZXJmYWNlKSBTdXBwb3J0CiMKQ09O
RklHX0VGSV9FU1JUPXkKIyBDT05GSUdfRUZJX1ZBUlNfUFNUT1JFIGlzIG5vdCBzZXQKQ09O
RklHX0VGSV9EWEVfTUVNX0FUVFJJQlVURVM9eQpDT05GSUdfRUZJX1JVTlRJTUVfV1JBUFBF
UlM9eQpDT05GSUdfRUZJX0JPT1RMT0FERVJfQ09OVFJPTD15CkNPTkZJR19FRklfQ0FQU1VM
RV9MT0FERVI9eQpDT05GSUdfRUZJX0NBUFNVTEVfUVVJUktfUVVBUktfQ1NIPXkKQ09ORklH
X0VGSV9URVNUPXkKQ09ORklHX0VGSV9ERVZfUEFUSF9QQVJTRVI9eQpDT05GSUdfQVBQTEVf
UFJPUEVSVElFUz15CkNPTkZJR19SRVNFVF9BVFRBQ0tfTUlUSUdBVElPTj15CiMgQ09ORklH
X0VGSV9SQ0kyX1RBQkxFIGlzIG5vdCBzZXQKQ09ORklHX0VGSV9ESVNBQkxFX1BDSV9ETUE9
eQpDT05GSUdfRUZJX0VBUkxZQ09OPXkKQ09ORklHX0VGSV9DVVNUT01fU1NEVF9PVkVSTEFZ
Uz15CkNPTkZJR19FRklfRElTQUJMRV9SVU5USU1FPXkKIyBDT05GSUdfRUZJX0NPQ09fU0VD
UkVUIGlzIG5vdCBzZXQKIyBlbmQgb2YgRUZJIChFeHRlbnNpYmxlIEZpcm13YXJlIEludGVy
ZmFjZSkgU3VwcG9ydAoKQ09ORklHX1VFRklfQ1BFUj15CkNPTkZJR19VRUZJX0NQRVJfWDg2
PXkKCiMKIyBRdWFsY29tbSBmaXJtd2FyZSBkcml2ZXJzCiMKIyBDT05GSUdfUUNPTV9UWk1F
TV9NT0RFX0dFTkVSSUMgaXMgbm90IHNldApDT05GSUdfUUNPTV9UWk1FTV9NT0RFX1NITUJS
SURHRT15CiMgZW5kIG9mIFF1YWxjb21tIGZpcm13YXJlIGRyaXZlcnMKCiMKIyBUZWdyYSBm
aXJtd2FyZSBkcml2ZXIKIwojIGVuZCBvZiBUZWdyYSBmaXJtd2FyZSBkcml2ZXIKIyBlbmQg
b2YgRmlybXdhcmUgRHJpdmVycwoKQ09ORklHX0dOU1M9eQpDT05GSUdfTVREPXkKCiMKIyBQ
YXJ0aXRpb24gcGFyc2VycwojCkNPTkZJR19NVERfQ01ETElORV9QQVJUUz15CkNPTkZJR19N
VERfT0ZfUEFSVFM9eQojIENPTkZJR19NVERfUkVEQk9PVF9QQVJUUyBpcyBub3Qgc2V0CiMg
ZW5kIG9mIFBhcnRpdGlvbiBwYXJzZXJzCgojCiMgVXNlciBNb2R1bGVzIEFuZCBUcmFuc2xh
dGlvbiBMYXllcnMKIwpDT05GSUdfTVREX0JMS0RFVlM9eQojIENPTkZJR19NVERfQkxPQ0sg
aXMgbm90IHNldAojIENPTkZJR19NVERfQkxPQ0tfUk8gaXMgbm90IHNldAojIENPTkZJR19G
VEwgaXMgbm90IHNldApDT05GSUdfTkZUTD15CkNPTkZJR19ORlRMX1JXPXkKIyBDT05GSUdf
SU5GVEwgaXMgbm90IHNldAojIENPTkZJR19SRkRfRlRMIGlzIG5vdCBzZXQKQ09ORklHX1NT
RkRDPXkKIyBDT05GSUdfU01fRlRMIGlzIG5vdCBzZXQKQ09ORklHX01URF9PT1BTPXkKQ09O
RklHX01URF9TV0FQPXkKQ09ORklHX01URF9QQVJUSVRJT05FRF9NQVNURVI9eQoKIwojIFJB
TS9ST00vRmxhc2ggY2hpcCBkcml2ZXJzCiMKQ09ORklHX01URF9DRkk9eQpDT05GSUdfTVRE
X0pFREVDUFJPQkU9eQpDT05GSUdfTVREX0dFTl9QUk9CRT15CiMgQ09ORklHX01URF9DRklf
QURWX09QVElPTlMgaXMgbm90IHNldApDT05GSUdfTVREX01BUF9CQU5LX1dJRFRIXzE9eQpD
T05GSUdfTVREX01BUF9CQU5LX1dJRFRIXzI9eQpDT05GSUdfTVREX01BUF9CQU5LX1dJRFRI
XzQ9eQpDT05GSUdfTVREX0NGSV9JMT15CkNPTkZJR19NVERfQ0ZJX0kyPXkKIyBDT05GSUdf
TVREX0NGSV9JTlRFTEVYVCBpcyBub3Qgc2V0CkNPTkZJR19NVERfQ0ZJX0FNRFNURD15CkNP
TkZJR19NVERfQ0ZJX1NUQUE9eQpDT05GSUdfTVREX0NGSV9VVElMPXkKQ09ORklHX01URF9S
QU09eQpDT05GSUdfTVREX1JPTT15CiMgQ09ORklHX01URF9BQlNFTlQgaXMgbm90IHNldAoj
IGVuZCBvZiBSQU0vUk9NL0ZsYXNoIGNoaXAgZHJpdmVycwoKIwojIE1hcHBpbmcgZHJpdmVy
cyBmb3IgY2hpcCBhY2Nlc3MKIwpDT05GSUdfTVREX0NPTVBMRVhfTUFQUElOR1M9eQpDT05G
SUdfTVREX1BIWVNNQVA9eQojIENPTkZJR19NVERfUEhZU01BUF9DT01QQVQgaXMgbm90IHNl
dApDT05GSUdfTVREX1BIWVNNQVBfT0Y9eQojIENPTkZJR19NVERfUEhZU01BUF9WRVJTQVRJ
TEUgaXMgbm90IHNldApDT05GSUdfTVREX1BIWVNNQVBfR0VNSU5JPXkKIyBDT05GSUdfTVRE
X1BIWVNNQVBfR1BJT19BRERSIGlzIG5vdCBzZXQKIyBDT05GSUdfTVREX1NDeDIwMF9ET0NG
TEFTSCBpcyBub3Qgc2V0CiMgQ09ORklHX01URF9BTUQ3NlhST00gaXMgbm90IHNldApDT05G
SUdfTVREX0lDSFhST009eQpDT05GSUdfTVREX05FVHRlbD15CkNPTkZJR19NVERfTDQ0MEdY
PXkKIyBDT05GSUdfTVREX1BMQVRSQU0gaXMgbm90IHNldAojIGVuZCBvZiBNYXBwaW5nIGRy
aXZlcnMgZm9yIGNoaXAgYWNjZXNzCgojCiMgU2VsZi1jb250YWluZWQgTVREIGRldmljZSBk
cml2ZXJzCiMKQ09ORklHX01URF9TTFJBTT15CkNPTkZJR19NVERfUEhSQU09eQpDT05GSUdf
TVREX01URFJBTT15CkNPTkZJR19NVERSQU1fVE9UQUxfU0laRT00MDk2CkNPTkZJR19NVERS
QU1fRVJBU0VfU0laRT0xMjgKQ09ORklHX01URF9CTE9DSzJNVEQ9eQoKIwojIERpc2stT24t
Q2hpcCBEZXZpY2UgRHJpdmVycwojCkNPTkZJR19NVERfRE9DRzM9eQpDT05GSUdfQkNIX0NP
TlNUX009MTQKQ09ORklHX0JDSF9DT05TVF9UPTQKIyBlbmQgb2YgU2VsZi1jb250YWluZWQg
TVREIGRldmljZSBkcml2ZXJzCgojCiMgTkFORAojCkNPTkZJR19NVERfTkFORF9DT1JFPXkK
Q09ORklHX01URF9PTkVOQU5EPXkKIyBDT05GSUdfTVREX09ORU5BTkRfVkVSSUZZX1dSSVRF
IGlzIG5vdCBzZXQKQ09ORklHX01URF9PTkVOQU5EX0dFTkVSSUM9eQpDT05GSUdfTVREX09O
RU5BTkRfT1RQPXkKQ09ORklHX01URF9PTkVOQU5EXzJYX1BST0dSQU09eQojIENPTkZJR19N
VERfUkFXX05BTkQgaXMgbm90IHNldAoKIwojIEVDQyBlbmdpbmUgc3VwcG9ydAojCkNPTkZJ
R19NVERfTkFORF9FQ0M9eQpDT05GSUdfTVREX05BTkRfRUNDX1NXX0hBTU1JTkc9eQojIENP
TkZJR19NVERfTkFORF9FQ0NfU1dfSEFNTUlOR19TTUMgaXMgbm90IHNldAojIENPTkZJR19N
VERfTkFORF9FQ0NfU1dfQkNIIGlzIG5vdCBzZXQKQ09ORklHX01URF9OQU5EX0VDQ19NWElD
PXkKIyBlbmQgb2YgRUNDIGVuZ2luZSBzdXBwb3J0CiMgZW5kIG9mIE5BTkQKCiMKIyBMUERE
UiAmIExQRERSMiBQQ00gbWVtb3J5IGRyaXZlcnMKIwojIENPTkZJR19NVERfTFBERFIgaXMg
bm90IHNldAojIGVuZCBvZiBMUEREUiAmIExQRERSMiBQQ00gbWVtb3J5IGRyaXZlcnMKCiMg
Q09ORklHX01URF9VQkkgaXMgbm90IHNldApDT05GSUdfTVREX0hZUEVSQlVTPXkKQ09ORklH
X0RUQz15CkNPTkZJR19PRj15CiMgQ09ORklHX09GX1VOSVRURVNUIGlzIG5vdCBzZXQKQ09O
RklHX09GX0tVTklUX1RFU1Q9eQpDT05GSUdfT0ZfRkxBVFRSRUU9eQpDT05GSUdfT0ZfRUFS
TFlfRkxBVFRSRUU9eQpDT05GSUdfT0ZfUFJPTVRSRUU9eQpDT05GSUdfT0ZfS09CSj15CkNP
TkZJR19PRl9BRERSRVNTPXkKQ09ORklHX09GX0lSUT15CkNPTkZJR19PRl9SRVNFUlZFRF9N
RU09eQojIENPTkZJR19PRl9PVkVSTEFZIGlzIG5vdCBzZXQKQ09ORklHX0FSQ0hfTUlHSFRf
SEFWRV9QQ19QQVJQT1JUPXkKQ09ORklHX1BBUlBPUlQ9eQojIENPTkZJR19QQVJQT1JUX1BD
IGlzIG5vdCBzZXQKQ09ORklHX1BBUlBPUlRfMTI4ND15CkNPTkZJR19QTlA9eQpDT05GSUdf
UE5QX0RFQlVHX01FU1NBR0VTPXkKCiMKIyBQcm90b2NvbHMKIwpDT05GSUdfSVNBUE5QPXkK
Q09ORklHX1BOUEJJT1M9eQpDT05GSUdfUE5QQklPU19QUk9DX0ZTPXkKQ09ORklHX1BOUEFD
UEk9eQojIENPTkZJR19CTEtfREVWIGlzIG5vdCBzZXQKCiMKIyBOVk1FIFN1cHBvcnQKIwpD
T05GSUdfTlZNRV9BVVRIPXkKQ09ORklHX05WTUVfQ09SRT15CkNPTkZJR19OVk1FX01VTFRJ
UEFUSD15CiMgQ09ORklHX05WTUVfVkVSQk9TRV9FUlJPUlMgaXMgbm90IHNldApDT05GSUdf
TlZNRV9IV01PTj15CkNPTkZJR19OVk1FX0ZBQlJJQ1M9eQpDT05GSUdfTlZNRV9GQz15CkNP
TkZJR19OVk1FX0hPU1RfQVVUSD15CkNPTkZJR19OVk1FX1RBUkdFVD15CiMgQ09ORklHX05W
TUVfVEFSR0VUX1BBU1NUSFJVIGlzIG5vdCBzZXQKQ09ORklHX05WTUVfVEFSR0VUX0xPT1A9
eQpDT05GSUdfTlZNRV9UQVJHRVRfRkM9eQpDT05GSUdfTlZNRV9UQVJHRVRfRkNMT09QPXkK
Q09ORklHX05WTUVfVEFSR0VUX0FVVEg9eQojIGVuZCBvZiBOVk1FIFN1cHBvcnQKCiMKIyBN
aXNjIGRldmljZXMKIwpDT05GSUdfU0VOU09SU19MSVMzTFYwMkQ9eQpDT05GSUdfQUQ1MjVY
X0RQT1Q9eQojIENPTkZJR19BRDUyNVhfRFBPVF9JMkMgaXMgbm90IHNldApDT05GSUdfRFVN
TVlfSVJRPXkKIyBDT05GSUdfSUNTOTMyUzQwMSBpcyBub3Qgc2V0CiMgQ09ORklHX0VOQ0xP
U1VSRV9TRVJWSUNFUyBpcyBub3Qgc2V0CkNPTkZJR19BUERTOTgwMkFMUz15CkNPTkZJR19J
U0wyOTAwMz15CkNPTkZJR19JU0wyOTAyMD15CkNPTkZJR19TRU5TT1JTX1RTTDI1NTA9eQoj
IENPTkZJR19TRU5TT1JTX0JIMTc3MCBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX0FQRFM5
OTBYPXkKIyBDT05GSUdfSE1DNjM1MiBpcyBub3Qgc2V0CkNPTkZJR19EUzE2ODI9eQojIENP
TkZJR19TUkFNIGlzIG5vdCBzZXQKQ09ORklHX1hJTElOWF9TREZFQz15CiMgQ09ORklHX09Q
RU5fRElDRSBpcyBub3Qgc2V0CkNPTkZJR19WQ1BVX1NUQUxMX0RFVEVDVE9SPXkKQ09ORklH
X1RQUzY1OTRfRVNNPXkKQ09ORklHX1RQUzY1OTRfUEZTTT15CkNPTkZJR19OU009eQpDT05G
SUdfQzJQT1JUPXkKQ09ORklHX0MyUE9SVF9EVVJBTUFSXzIxNTA9eQoKIwojIEVFUFJPTSBz
dXBwb3J0CiMKIyBDT05GSUdfRUVQUk9NX0FUMjQgaXMgbm90IHNldAojIENPTkZJR19FRVBS
T01fTUFYNjg3NSBpcyBub3Qgc2V0CkNPTkZJR19FRVBST01fOTNDWDY9eQpDT05GSUdfRUVQ
Uk9NX0lEVF84OUhQRVNYPXkKQ09ORklHX0VFUFJPTV9FRTEwMDQ9eQojIGVuZCBvZiBFRVBS
T00gc3VwcG9ydAoKIwojIFRleGFzIEluc3RydW1lbnRzIHNoYXJlZCB0cmFuc3BvcnQgbGlu
ZSBkaXNjaXBsaW5lCiMKQ09ORklHX1RJX1NUPXkKIyBlbmQgb2YgVGV4YXMgSW5zdHJ1bWVu
dHMgc2hhcmVkIHRyYW5zcG9ydCBsaW5lIGRpc2NpcGxpbmUKCkNPTkZJR19TRU5TT1JTX0xJ
UzNfSTJDPXkKIyBDT05GSUdfQUxURVJBX1NUQVBMIGlzIG5vdCBzZXQKQ09ORklHX0VDSE89
eQojIENPTkZJR19VQUNDRSBpcyBub3Qgc2V0CiMgQ09ORklHX1BWUEFOSUMgaXMgbm90IHNl
dAojIGVuZCBvZiBNaXNjIGRldmljZXMKCiMKIyBTQ1NJIGRldmljZSBzdXBwb3J0CiMKQ09O
RklHX1NDU0lfTU9EPXkKIyBDT05GSUdfUkFJRF9BVFRSUyBpcyBub3Qgc2V0CkNPTkZJR19T
Q1NJX0NPTU1PTj15CkNPTkZJR19TQ1NJPXkKQ09ORklHX1NDU0lfRE1BPXkKQ09ORklHX1ND
U0lfTkVUTElOSz15CkNPTkZJR19TQ1NJX1BST0NfRlM9eQpDT05GSUdfU0NTSV9MSUJfS1VO
SVRfVEVTVD15CgojCiMgU0NTSSBzdXBwb3J0IHR5cGUgKGRpc2ssIHRhcGUsIENELVJPTSkK
IwojIENPTkZJR19CTEtfREVWX1NEIGlzIG5vdCBzZXQKQ09ORklHX0NIUl9ERVZfU1Q9eQpD
T05GSUdfQ0hSX0RFVl9TRz15CiMgQ09ORklHX0JMS19ERVZfQlNHIGlzIG5vdCBzZXQKIyBD
T05GSUdfQ0hSX0RFVl9TQ0ggaXMgbm90IHNldAojIENPTkZJR19TQ1NJX0NPTlNUQU5UUyBp
cyBub3Qgc2V0CkNPTkZJR19TQ1NJX0xPR0dJTkc9eQojIENPTkZJR19TQ1NJX1NDQU5fQVNZ
TkMgaXMgbm90IHNldApDT05GSUdfU0NTSV9QUk9UT19URVNUPXkKCiMKIyBTQ1NJIFRyYW5z
cG9ydHMKIwojIENPTkZJR19TQ1NJX1NQSV9BVFRSUyBpcyBub3Qgc2V0CkNPTkZJR19TQ1NJ
X0ZDX0FUVFJTPXkKQ09ORklHX1NDU0lfSVNDU0lfQVRUUlM9eQpDT05GSUdfU0NTSV9TQVNf
QVRUUlM9eQpDT05GSUdfU0NTSV9TQVNfTElCU0FTPXkKQ09ORklHX1NDU0lfU0FTX0FUQT15
CkNPTkZJR19TQ1NJX1NBU19IT1NUX1NNUD15CkNPTkZJR19TQ1NJX1NSUF9BVFRSUz15CiMg
ZW5kIG9mIFNDU0kgVHJhbnNwb3J0cwoKIyBDT05GSUdfU0NTSV9MT1dMRVZFTCBpcyBub3Qg
c2V0CiMgQ09ORklHX1NDU0lfREggaXMgbm90IHNldAojIGVuZCBvZiBTQ1NJIGRldmljZSBz
dXBwb3J0CgpDT05GSUdfQVRBPXkKQ09ORklHX1NBVEFfSE9TVD15CkNPTkZJR19QQVRBX1RJ
TUlOR1M9eQpDT05GSUdfQVRBX1ZFUkJPU0VfRVJST1I9eQpDT05GSUdfQVRBX0ZPUkNFPXkK
Q09ORklHX0FUQV9BQ1BJPXkKQ09ORklHX1NBVEFfUE1QPXkKCiMKIyBDb250cm9sbGVycyB3
aXRoIG5vbi1TRkYgbmF0aXZlIGludGVyZmFjZQojCiMgQ09ORklHX1NBVEFfQUhDSV9QTEFU
Rk9STSBpcyBub3Qgc2V0CkNPTkZJR19BSENJX0RXQz15CkNPTkZJR19BSENJX0NFVkE9eQoj
IENPTkZJR19BVEFfU0ZGIGlzIG5vdCBzZXQKQ09ORklHX01EPXkKQ09ORklHX0JMS19ERVZf
TUQ9eQpDT05GSUdfTURfQVVUT0RFVEVDVD15CkNPTkZJR19NRF9CSVRNQVBfRklMRT15CkNP
TkZJR19NRF9SQUlEMD15CkNPTkZJR19NRF9SQUlEMT15CkNPTkZJR19NRF9SQUlEMTA9eQpD
T05GSUdfTURfUkFJRDQ1Nj15CiMgQ09ORklHX0JDQUNIRSBpcyBub3Qgc2V0CiMgQ09ORklH
X0JMS19ERVZfRE0gaXMgbm90IHNldApDT05GSUdfVEFSR0VUX0NPUkU9eQpDT05GSUdfVENN
X0lCTE9DSz15CkNPTkZJR19UQ01fRklMRUlPPXkKIyBDT05GSUdfVENNX1BTQ1NJIGlzIG5v
dCBzZXQKIyBDT05GSUdfVENNX1VTRVIyIGlzIG5vdCBzZXQKQ09ORklHX0xPT1BCQUNLX1RB
UkdFVD15CiMgQ09ORklHX1JFTU9URV9UQVJHRVQgaXMgbm90IHNldApDT05GSUdfTUFDSU5U
T1NIX0RSSVZFUlM9eQojIENPTkZJR19NQUNfRU1VTU9VU0VCVE4gaXMgbm90IHNldApDT05G
SUdfTkVUREVWSUNFUz15CkNPTkZJR19NSUk9eQojIENPTkZJR19ORVRfQ09SRSBpcyBub3Qg
c2V0CiMgQ09ORklHX0FSQ05FVCBpcyBub3Qgc2V0CiMgQ09ORklHX0FUTV9EUklWRVJTIGlz
IG5vdCBzZXQKIyBDT05GSUdfQ0FJRl9EUklWRVJTIGlzIG5vdCBzZXQKQ09ORklHX0VUSEVS
TkVUPXkKIyBDT05GSUdfTkVUX1ZFTkRPUl8zQ09NIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVU
X1ZFTkRPUl9BTEFDUklURUNIIGlzIG5vdCBzZXQKQ09ORklHX0FMVEVSQV9UU0U9eQojIENP
TkZJR19ORVRfVkVORE9SX0FNQVpPTiBpcyBub3Qgc2V0CiMgQ09ORklHX05FVF9WRU5ET1Jf
QU1EIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVUX1ZFTkRPUl9BUVVBTlRJQSBpcyBub3Qgc2V0
CkNPTkZJR19ORVRfVkVORE9SX0FSQz15CiMgQ09ORklHX05FVF9WRU5ET1JfQVNJWCBpcyBu
b3Qgc2V0CiMgQ09ORklHX05FVF9WRU5ET1JfQlJPQURDT00gaXMgbm90IHNldAojIENPTkZJ
R19ORVRfVkVORE9SX0NBREVOQ0UgaXMgbm90IHNldApDT05GSUdfTkVUX1ZFTkRPUl9DQVZJ
VU09eQojIENPTkZJR19ORVRfVkVORE9SX0NJUlJVUyBpcyBub3Qgc2V0CiMgQ09ORklHX05F
VF9WRU5ET1JfQ09SVElOQSBpcyBub3Qgc2V0CiMgQ09ORklHX05FVF9WRU5ET1JfREFWSUNP
TSBpcyBub3Qgc2V0CkNPTkZJR19ETkVUPXkKIyBDT05GSUdfTkVUX1ZFTkRPUl9ERUMgaXMg
bm90IHNldApDT05GSUdfTkVUX1ZFTkRPUl9FTkdMRURFUj15CkNPTkZJR19UU05FUD15CkNP
TkZJR19UU05FUF9TRUxGVEVTVFM9eQojIENPTkZJR19ORVRfVkVORE9SX0VaQ0hJUCBpcyBu
b3Qgc2V0CiMgQ09ORklHX05FVF9WRU5ET1JfRlVOR0lCTEUgaXMgbm90IHNldAojIENPTkZJ
R19ORVRfVkVORE9SX0dPT0dMRSBpcyBub3Qgc2V0CiMgQ09ORklHX05FVF9WRU5ET1JfSFVB
V0VJIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVUX1ZFTkRPUl9JTlRFTCBpcyBub3Qgc2V0CiMg
Q09ORklHX05FVF9WRU5ET1JfTElURVggaXMgbm90IHNldApDT05GSUdfTkVUX1ZFTkRPUl9N
RUxMQU5PWD15CkNPTkZJR19NTFhTV19DT1JFPXkKQ09ORklHX01MWFNXX0NPUkVfSFdNT049
eQpDT05GSUdfTUxYU1dfQ09SRV9USEVSTUFMPXkKIyBDT05GSUdfTUxYU1dfSTJDIGlzIG5v
dCBzZXQKQ09ORklHX01MWEZXPXkKQ09ORklHX05FVF9WRU5ET1JfTUlDUkVMPXkKQ09ORklH
X0tTODg1MV9NTEw9eQpDT05GSUdfTkVUX1ZFTkRPUl9NSUNST0NISVA9eQojIENPTkZJR19W
Q0FQIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVUX1ZFTkRPUl9NSUNST1NFTUkgaXMgbm90IHNl
dApDT05GSUdfTkVUX1ZFTkRPUl9NSUNST1NPRlQ9eQojIENPTkZJR19ORVRfVkVORE9SX05J
IGlzIG5vdCBzZXQKIyBDT05GSUdfTkVUX1ZFTkRPUl9OQVRTRU1JIGlzIG5vdCBzZXQKIyBD
T05GSUdfTkVUX1ZFTkRPUl9ORVRST05PTUUgaXMgbm90IHNldAojIENPTkZJR19FVEhPQyBp
cyBub3Qgc2V0CkNPTkZJR19ORVRfVkVORE9SX1BFTlNBTkRPPXkKQ09ORklHX05FVF9WRU5E
T1JfUVVBTENPTU09eQojIENPTkZJR19RQ09NX0VNQUMgaXMgbm90IHNldApDT05GSUdfUk1O
RVQ9eQojIENPTkZJR19ORVRfVkVORE9SX1JFQUxURUsgaXMgbm90IHNldApDT05GSUdfTkVU
X1ZFTkRPUl9SRU5FU0FTPXkKQ09ORklHX05FVF9WRU5ET1JfUk9DS0VSPXkKQ09ORklHX05F
VF9WRU5ET1JfU0FNU1VORz15CkNPTkZJR19TWEdCRV9FVEg9eQojIENPTkZJR19ORVRfVkVO
RE9SX1NFRVEgaXMgbm90IHNldAojIENPTkZJR19ORVRfVkVORE9SX1NPTEFSRkxBUkUgaXMg
bm90IHNldAojIENPTkZJR19ORVRfVkVORE9SX1NNU0MgaXMgbm90IHNldAojIENPTkZJR19O
RVRfVkVORE9SX1NPQ0lPTkVYVCBpcyBub3Qgc2V0CiMgQ09ORklHX05FVF9WRU5ET1JfU1RN
SUNSTyBpcyBub3Qgc2V0CkNPTkZJR19ORVRfVkVORE9SX1NZTk9QU1lTPXkKQ09ORklHX0RX
Q19YTEdNQUM9eQpDT05GSUdfTkVUX1ZFTkRPUl9UST15CkNPTkZJR19USV9DUFNXX1BIWV9T
RUw9eQpDT05GSUdfVExBTj15CiMgQ09ORklHX05FVF9WRU5ET1JfVkVSVEVYQ09NIGlzIG5v
dCBzZXQKQ09ORklHX05FVF9WRU5ET1JfVklBPXkKQ09ORklHX1ZJQV9WRUxPQ0lUWT15CiMg
Q09ORklHX05FVF9WRU5ET1JfV0FOR1hVTiBpcyBub3Qgc2V0CiMgQ09ORklHX05FVF9WRU5E
T1JfV0laTkVUIGlzIG5vdCBzZXQKQ09ORklHX05FVF9WRU5ET1JfWElMSU5YPXkKIyBDT05G
SUdfWElMSU5YX0VNQUNMSVRFIGlzIG5vdCBzZXQKIyBDT05GSUdfWElMSU5YX0xMX1RFTUFD
IGlzIG5vdCBzZXQKIyBDT05GSUdfRkRESSBpcyBub3Qgc2V0CiMgQ09ORklHX05FVF9TQjEw
MDAgaXMgbm90IHNldApDT05GSUdfUEhZTElOSz15CkNPTkZJR19QSFlMSUI9eQpDT05GSUdf
U1dQSFk9eQpDT05GSUdfTEVEX1RSSUdHRVJfUEhZPXkKQ09ORklHX1BIWUxJQl9MRURTPXkK
Q09ORklHX0ZJWEVEX1BIWT15CiMgQ09ORklHX1NGUCBpcyBub3Qgc2V0CgojCiMgTUlJIFBI
WSBkZXZpY2UgZHJpdmVycwojCiMgQ09ORklHX0FJUl9FTjg4MTFIX1BIWSBpcyBub3Qgc2V0
CkNPTkZJR19BTURfUEhZPXkKQ09ORklHX0FESU5fUEhZPXkKQ09ORklHX0FESU4xMTAwX1BI
WT15CiMgQ09ORklHX0FRVUFOVElBX1BIWSBpcyBub3Qgc2V0CkNPTkZJR19BWDg4Nzk2Ql9Q
SFk9eQojIENPTkZJR19CUk9BRENPTV9QSFkgaXMgbm90IHNldApDT05GSUdfQkNNNTQxNDBf
UEhZPXkKQ09ORklHX0JDTTdYWFhfUEhZPXkKQ09ORklHX0JDTTg0ODgxX1BIWT15CkNPTkZJ
R19CQ004N1hYX1BIWT15CkNPTkZJR19CQ01fTkVUX1BIWUxJQj15CkNPTkZJR19DSUNBREFf
UEhZPXkKQ09ORklHX0NPUlRJTkFfUEhZPXkKIyBDT05GSUdfREFWSUNPTV9QSFkgaXMgbm90
IHNldApDT05GSUdfSUNQTFVTX1BIWT15CkNPTkZJR19MWFRfUEhZPXkKIyBDT05GSUdfSU5U
RUxfWFdBWV9QSFkgaXMgbm90IHNldAojIENPTkZJR19MU0lfRVQxMDExQ19QSFkgaXMgbm90
IHNldApDT05GSUdfTUFSVkVMTF9QSFk9eQpDT05GSUdfTUFSVkVMTF8xMEdfUEhZPXkKQ09O
RklHX01BUlZFTExfODhRMlhYWF9QSFk9eQojIENPTkZJR19NQVJWRUxMXzg4WDIyMjJfUEhZ
IGlzIG5vdCBzZXQKQ09ORklHX01BWExJTkVBUl9HUEhZPXkKIyBDT05GSUdfTUVESUFURUtf
R0VfUEhZIGlzIG5vdCBzZXQKQ09ORklHX01JQ1JFTF9QSFk9eQojIENPTkZJR19NSUNST0NI
SVBfVDFTX1BIWSBpcyBub3Qgc2V0CiMgQ09ORklHX01JQ1JPQ0hJUF9QSFkgaXMgbm90IHNl
dApDT05GSUdfTUlDUk9DSElQX1QxX1BIWT15CkNPTkZJR19NSUNST1NFTUlfUEhZPXkKQ09O
RklHX01PVE9SQ09NTV9QSFk9eQojIENPTkZJR19OQVRJT05BTF9QSFkgaXMgbm90IHNldApD
T05GSUdfTlhQX0NCVFhfUEhZPXkKQ09ORklHX05YUF9DNDVfVEpBMTFYWF9QSFk9eQpDT05G
SUdfTlhQX1RKQTExWFhfUEhZPXkKIyBDT05GSUdfTkNOMjYwMDBfUEhZIGlzIG5vdCBzZXQK
Q09ORklHX1FDT01fTkVUX1BIWUxJQj15CiMgQ09ORklHX0FUODAzWF9QSFkgaXMgbm90IHNl
dAojIENPTkZJR19RQ0E4M1hYX1BIWSBpcyBub3Qgc2V0CiMgQ09ORklHX1FDQTgwOFhfUEhZ
IGlzIG5vdCBzZXQKQ09ORklHX1FDQTgwN1hfUEhZPXkKIyBDT05GSUdfUVNFTUlfUEhZIGlz
IG5vdCBzZXQKIyBDT05GSUdfUkVBTFRFS19QSFkgaXMgbm90IHNldApDT05GSUdfUkVORVNB
U19QSFk9eQojIENPTkZJR19ST0NLQ0hJUF9QSFkgaXMgbm90IHNldApDT05GSUdfU01TQ19Q
SFk9eQpDT05GSUdfU1RFMTBYUD15CkNPTkZJR19URVJBTkVUSUNTX1BIWT15CiMgQ09ORklH
X0RQODM4MjJfUEhZIGlzIG5vdCBzZXQKQ09ORklHX0RQODNUQzgxMV9QSFk9eQpDT05GSUdf
RFA4Mzg0OF9QSFk9eQpDT05GSUdfRFA4Mzg2N19QSFk9eQpDT05GSUdfRFA4Mzg2OV9QSFk9
eQpDT05GSUdfRFA4M1RENTEwX1BIWT15CkNPTkZJR19EUDgzVEc3MjBfUEhZPXkKQ09ORklH
X1ZJVEVTU0VfUEhZPXkKQ09ORklHX1hJTElOWF9HTUlJMlJHTUlJPXkKQ09ORklHX1BTRV9D
T05UUk9MTEVSPXkKIyBDT05GSUdfUFNFX1JFR1VMQVRPUiBpcyBub3Qgc2V0CkNPTkZJR19Q
U0VfUEQ2OTJYMD15CiMgQ09ORklHX1BTRV9UUFMyMzg4MSBpcyBub3Qgc2V0CiMgQ09ORklH
X0NBTl9ERVYgaXMgbm90IHNldAoKIwojIE1DVFAgRGV2aWNlIERyaXZlcnMKIwpDT05GSUdf
TUNUUF9TRVJJQUw9eQpDT05GSUdfTUNUUF9UUkFOU1BPUlRfSTJDPXkKQ09ORklHX01DVFBf
VFJBTlNQT1JUX0kzQz15CiMgZW5kIG9mIE1DVFAgRGV2aWNlIERyaXZlcnMKCkNPTkZJR19N
RElPX0RFVklDRT15CkNPTkZJR19NRElPX0JVUz15CkNPTkZJR19GV05PREVfTURJTz15CkNP
TkZJR19PRl9NRElPPXkKQ09ORklHX0FDUElfTURJTz15CkNPTkZJR19NRElPX0RFVlJFUz15
CiMgQ09ORklHX01ESU9fQklUQkFORyBpcyBub3Qgc2V0CkNPTkZJR19NRElPX0JDTV9VTklN
QUM9eQpDT05GSUdfTURJT19ISVNJX0ZFTUFDPXkKQ09ORklHX01ESU9fTVNDQ19NSUlNPXkK
Q09ORklHX01ESU9fSVBRNDAxOT15CkNPTkZJR19NRElPX0lQUTgwNjQ9eQpDT05GSUdfTURJ
T19SRUdNQVA9eQoKIwojIE1ESU8gTXVsdGlwbGV4ZXJzCiMKQ09ORklHX01ESU9fQlVTX01V
WD15CiMgQ09ORklHX01ESU9fQlVTX01VWF9HUElPIGlzIG5vdCBzZXQKIyBDT05GSUdfTURJ
T19CVVNfTVVYX01VTFRJUExFWEVSIGlzIG5vdCBzZXQKQ09ORklHX01ESU9fQlVTX01VWF9N
TUlPUkVHPXkKCiMKIyBQQ1MgZGV2aWNlIGRyaXZlcnMKIwpDT05GSUdfUENTX0xZTlg9eQoj
IGVuZCBvZiBQQ1MgZGV2aWNlIGRyaXZlcnMKCkNPTkZJR19QTElQPXkKIyBDT05GSUdfUFBQ
IGlzIG5vdCBzZXQKQ09ORklHX1NMSVA9eQojIENPTkZJR19TTElQX0NPTVBSRVNTRUQgaXMg
bm90IHNldApDT05GSUdfU0xJUF9TTUFSVD15CiMgQ09ORklHX1NMSVBfTU9ERV9TTElQNiBp
cyBub3Qgc2V0CgojCiMgSG9zdC1zaWRlIFVTQiBzdXBwb3J0IGlzIG5lZWRlZCBmb3IgVVNC
IE5ldHdvcmsgQWRhcHRlciBzdXBwb3J0CiMKIyBDT05GSUdfV0xBTiBpcyBub3Qgc2V0CiMg
Q09ORklHX1dBTiBpcyBub3Qgc2V0CgojCiMgV2lyZWxlc3MgV0FOCiMKQ09ORklHX1dXQU49
eQpDT05GSUdfV1dBTl9IV1NJTT15CkNPTkZJR19SUE1TR19XV0FOX0NUUkw9eQojIGVuZCBv
ZiBXaXJlbGVzcyBXQU4KCkNPTkZJR19GVUpJVFNVX0VTPXkKQ09ORklHX05FVF9GQUlMT1ZF
Uj15CiMgQ09ORklHX0lTRE4gaXMgbm90IHNldAoKIwojIElucHV0IGRldmljZSBzdXBwb3J0
CiMKQ09ORklHX0lOUFVUPXkKQ09ORklHX0lOUFVUX0xFRFM9eQpDT05GSUdfSU5QVVRfRkZf
TUVNTEVTUz15CkNPTkZJR19JTlBVVF9TUEFSU0VLTUFQPXkKIyBDT05GSUdfSU5QVVRfTUFU
UklYS01BUCBpcyBub3Qgc2V0CkNPTkZJR19JTlBVVF9WSVZBTERJRk1BUD15CgojCiMgVXNl
cmxhbmQgaW50ZXJmYWNlcwojCkNPTkZJR19JTlBVVF9NT1VTRURFVj15CkNPTkZJR19JTlBV
VF9NT1VTRURFVl9QU0FVWD15CkNPTkZJR19JTlBVVF9NT1VTRURFVl9TQ1JFRU5fWD0xMDI0
CkNPTkZJR19JTlBVVF9NT1VTRURFVl9TQ1JFRU5fWT03NjgKQ09ORklHX0lOUFVUX0pPWURF
Vj15CkNPTkZJR19JTlBVVF9FVkRFVj15CiMgQ09ORklHX0lOUFVUX0VWQlVHIGlzIG5vdCBz
ZXQKQ09ORklHX0lOUFVUX0tVTklUX1RFU1Q9eQoKIwojIElucHV0IERldmljZSBEcml2ZXJz
CiMKIyBDT05GSUdfSU5QVVRfS0VZQk9BUkQgaXMgbm90IHNldApDT05GSUdfSU5QVVRfTU9V
U0U9eQojIENPTkZJR19NT1VTRV9QUzIgaXMgbm90IHNldAojIENPTkZJR19NT1VTRV9TRVJJ
QUwgaXMgbm90IHNldApDT05GSUdfTU9VU0VfQ1lBUEE9eQpDT05GSUdfTU9VU0VfRUxBTl9J
MkM9eQojIENPTkZJR19NT1VTRV9FTEFOX0kyQ19JMkMgaXMgbm90IHNldAojIENPTkZJR19N
T1VTRV9FTEFOX0kyQ19TTUJVUyBpcyBub3Qgc2V0CiMgQ09ORklHX01PVVNFX0lOUE9SVCBp
cyBub3Qgc2V0CiMgQ09ORklHX01PVVNFX0xPR0lCTSBpcyBub3Qgc2V0CkNPTkZJR19NT1VT
RV9QQzExMFBBRD15CkNPTkZJR19NT1VTRV9WU1hYWEFBPXkKQ09ORklHX01PVVNFX0dQSU89
eQpDT05GSUdfTU9VU0VfU1lOQVBUSUNTX0kyQz15CkNPTkZJR19JTlBVVF9KT1lTVElDSz15
CiMgQ09ORklHX0pPWVNUSUNLX0FOQUxPRyBpcyBub3Qgc2V0CkNPTkZJR19KT1lTVElDS19B
M0Q9eQpDT05GSUdfSk9ZU1RJQ0tfQURDPXkKIyBDT05GSUdfSk9ZU1RJQ0tfQURJIGlzIG5v
dCBzZXQKQ09ORklHX0pPWVNUSUNLX0NPQlJBPXkKIyBDT05GSUdfSk9ZU1RJQ0tfR0YySyBp
cyBub3Qgc2V0CiMgQ09ORklHX0pPWVNUSUNLX0dSSVAgaXMgbm90IHNldAojIENPTkZJR19K
T1lTVElDS19HUklQX01QIGlzIG5vdCBzZXQKQ09ORklHX0pPWVNUSUNLX0dVSUxMRU1PVD15
CkNPTkZJR19KT1lTVElDS19JTlRFUkFDVD15CkNPTkZJR19KT1lTVElDS19TSURFV0lOREVS
PXkKQ09ORklHX0pPWVNUSUNLX1RNREM9eQpDT05GSUdfSk9ZU1RJQ0tfSUZPUkNFPXkKIyBD
T05GSUdfSk9ZU1RJQ0tfSUZPUkNFXzIzMiBpcyBub3Qgc2V0CiMgQ09ORklHX0pPWVNUSUNL
X1dBUlJJT1IgaXMgbm90IHNldAojIENPTkZJR19KT1lTVElDS19NQUdFTExBTiBpcyBub3Qg
c2V0CiMgQ09ORklHX0pPWVNUSUNLX1NQQUNFT1JCIGlzIG5vdCBzZXQKQ09ORklHX0pPWVNU
SUNLX1NQQUNFQkFMTD15CkNPTkZJR19KT1lTVElDS19TVElOR0VSPXkKQ09ORklHX0pPWVNU
SUNLX1RXSURKT1k9eQojIENPTkZJR19KT1lTVElDS19aSEVOSFVBIGlzIG5vdCBzZXQKQ09O
RklHX0pPWVNUSUNLX0RCOT15CkNPTkZJR19KT1lTVElDS19HQU1FQ09OPXkKIyBDT05GSUdf
Sk9ZU1RJQ0tfVFVSQk9HUkFGWCBpcyBub3Qgc2V0CkNPTkZJR19KT1lTVElDS19BUzUwMTE9
eQojIENPTkZJR19KT1lTVElDS19KT1lEVU1QIGlzIG5vdCBzZXQKQ09ORklHX0pPWVNUSUNL
X1FXSUlDPXkKQ09ORklHX0pPWVNUSUNLX0ZTSUE2Qj15CkNPTkZJR19KT1lTVElDS19TRU5T
RUhBVD15CiMgQ09ORklHX0pPWVNUSUNLX1NFRVNBVyBpcyBub3Qgc2V0CkNPTkZJR19JTlBV
VF9UQUJMRVQ9eQpDT05GSUdfVEFCTEVUX1NFUklBTF9XQUNPTTQ9eQpDT05GSUdfSU5QVVRf
VE9VQ0hTQ1JFRU49eQpDT05GSUdfVE9VQ0hTQ1JFRU5fQUQ3ODc5PXkKIyBDT05GSUdfVE9V
Q0hTQ1JFRU5fQUQ3ODc5X0kyQyBpcyBub3Qgc2V0CiMgQ09ORklHX1RPVUNIU0NSRUVOX0FE
QyBpcyBub3Qgc2V0CkNPTkZJR19UT1VDSFNDUkVFTl9BUjEwMjFfSTJDPXkKQ09ORklHX1RP
VUNIU0NSRUVOX0FUTUVMX01YVD15CkNPTkZJR19UT1VDSFNDUkVFTl9BVU9fUElYQ0lSPXkK
Q09ORklHX1RPVUNIU0NSRUVOX0JVMjEwMTM9eQojIENPTkZJR19UT1VDSFNDUkVFTl9CVTIx
MDI5IGlzIG5vdCBzZXQKQ09ORklHX1RPVUNIU0NSRUVOX0NISVBPTkVfSUNOODMxOD15CkNP
TkZJR19UT1VDSFNDUkVFTl9DSElQT05FX0lDTjg1MDU9eQpDT05GSUdfVE9VQ0hTQ1JFRU5f
Q1k4Q1RNQTE0MD15CiMgQ09ORklHX1RPVUNIU0NSRUVOX0NZOENUTUcxMTAgaXMgbm90IHNl
dAojIENPTkZJR19UT1VDSFNDUkVFTl9DWVRUU1BfQ09SRSBpcyBub3Qgc2V0CiMgQ09ORklH
X1RPVUNIU0NSRUVOX0NZVFRTUDRfQ09SRSBpcyBub3Qgc2V0CkNPTkZJR19UT1VDSFNDUkVF
Tl9DWVRUU1A1PXkKQ09ORklHX1RPVUNIU0NSRUVOX0RZTkFQUk89eQojIENPTkZJR19UT1VD
SFNDUkVFTl9IQU1QU0hJUkUgaXMgbm90IHNldAojIENPTkZJR19UT1VDSFNDUkVFTl9FRVRJ
IGlzIG5vdCBzZXQKIyBDT05GSUdfVE9VQ0hTQ1JFRU5fRUdBTEFYIGlzIG5vdCBzZXQKIyBD
T05GSUdfVE9VQ0hTQ1JFRU5fRUdBTEFYX1NFUklBTCBpcyBub3Qgc2V0CkNPTkZJR19UT1VD
SFNDUkVFTl9FWEMzMDAwPXkKQ09ORklHX1RPVUNIU0NSRUVOX0ZVSklUU1U9eQpDT05GSUdf
VE9VQ0hTQ1JFRU5fR09PRElYPXkKQ09ORklHX1RPVUNIU0NSRUVOX0dPT0RJWF9CRVJMSU5f
Q09SRT15CkNPTkZJR19UT1VDSFNDUkVFTl9HT09ESVhfQkVSTElOX0kyQz15CiMgQ09ORklH
X1RPVUNIU0NSRUVOX0hJREVFUCBpcyBub3Qgc2V0CkNPTkZJR19UT1VDSFNDUkVFTl9IWUNP
Tl9IWTQ2WFg9eQpDT05GSUdfVE9VQ0hTQ1JFRU5fSFlOSVRST05fQ1NUWFhYPXkKQ09ORklH
X1RPVUNIU0NSRUVOX0lMSTIxMFg9eQpDT05GSUdfVE9VQ0hTQ1JFRU5fSUxJVEVLPXkKQ09O
RklHX1RPVUNIU0NSRUVOX1M2U1k3NjE9eQojIENPTkZJR19UT1VDSFNDUkVFTl9HVU5aRSBp
cyBub3Qgc2V0CkNPTkZJR19UT1VDSFNDUkVFTl9FS1RGMjEyNz15CkNPTkZJR19UT1VDSFND
UkVFTl9FTEFOPXkKQ09ORklHX1RPVUNIU0NSRUVOX0VMTz15CkNPTkZJR19UT1VDSFNDUkVF
Tl9XQUNPTV9XODAwMT15CkNPTkZJR19UT1VDSFNDUkVFTl9XQUNPTV9JMkM9eQpDT05GSUdf
VE9VQ0hTQ1JFRU5fTUFYMTE4MDE9eQpDT05GSUdfVE9VQ0hTQ1JFRU5fTUNTNTAwMD15CkNP
TkZJR19UT1VDSFNDUkVFTl9NTVMxMTQ9eQojIENPTkZJR19UT1VDSFNDUkVFTl9NRUxGQVNf
TUlQNCBpcyBub3Qgc2V0CiMgQ09ORklHX1RPVUNIU0NSRUVOX01TRzI2MzggaXMgbm90IHNl
dApDT05GSUdfVE9VQ0hTQ1JFRU5fTVRPVUNIPXkKQ09ORklHX1RPVUNIU0NSRUVOX05PVkFU
RUtfTlZUX1RTPXkKQ09ORklHX1RPVUNIU0NSRUVOX0lNQUdJUz15CkNPTkZJR19UT1VDSFND
UkVFTl9JTVg2VUxfVFNDPXkKQ09ORklHX1RPVUNIU0NSRUVOX0lORVhJTz15CkNPTkZJR19U
T1VDSFNDUkVFTl9NSzcxMj15CiMgQ09ORklHX1RPVUNIU0NSRUVOX0hUQ1BFTiBpcyBub3Qg
c2V0CkNPTkZJR19UT1VDSFNDUkVFTl9QRU5NT1VOVD15CiMgQ09ORklHX1RPVUNIU0NSRUVO
X0VEVF9GVDVYMDYgaXMgbm90IHNldAojIENPTkZJR19UT1VDSFNDUkVFTl9UT1VDSFJJR0hU
IGlzIG5vdCBzZXQKQ09ORklHX1RPVUNIU0NSRUVOX1RPVUNIV0lOPXkKIyBDT05GSUdfVE9V
Q0hTQ1JFRU5fUElYQ0lSIGlzIG5vdCBzZXQKIyBDT05GSUdfVE9VQ0hTQ1JFRU5fV0RUODdY
WF9JMkMgaXMgbm90IHNldApDT05GSUdfVE9VQ0hTQ1JFRU5fV004MzFYPXkKIyBDT05GSUdf
VE9VQ0hTQ1JFRU5fTUMxMzc4MyBpcyBub3Qgc2V0CkNPTkZJR19UT1VDSFNDUkVFTl9UT1VD
SElUMjEzPXkKQ09ORklHX1RPVUNIU0NSRUVOX1RTQ19TRVJJTz15CiMgQ09ORklHX1RPVUNI
U0NSRUVOX1RTQzIwMDQgaXMgbm90IHNldApDT05GSUdfVE9VQ0hTQ1JFRU5fVFNDMjAwNz15
CiMgQ09ORklHX1RPVUNIU0NSRUVOX1RTQzIwMDdfSUlPIGlzIG5vdCBzZXQKQ09ORklHX1RP
VUNIU0NSRUVOX1JNX1RTPXkKIyBDT05GSUdfVE9VQ0hTQ1JFRU5fU0lMRUFEIGlzIG5vdCBz
ZXQKIyBDT05GSUdfVE9VQ0hTQ1JFRU5fU0lTX0kyQyBpcyBub3Qgc2V0CkNPTkZJR19UT1VD
SFNDUkVFTl9TVDEyMzI9eQojIENPTkZJR19UT1VDSFNDUkVFTl9TVE1GVFMgaXMgbm90IHNl
dAojIENPTkZJR19UT1VDSFNDUkVFTl9TVE1QRSBpcyBub3Qgc2V0CkNPTkZJR19UT1VDSFND
UkVFTl9TWDg2NTQ9eQojIENPTkZJR19UT1VDSFNDUkVFTl9UUFM2NTA3WCBpcyBub3Qgc2V0
CiMgQ09ORklHX1RPVUNIU0NSRUVOX1pFVDYyMjMgaXMgbm90IHNldAojIENPTkZJR19UT1VD
SFNDUkVFTl9aRk9SQ0UgaXMgbm90IHNldAojIENPTkZJR19UT1VDSFNDUkVFTl9DT0xJQlJJ
X1ZGNTAgaXMgbm90IHNldAojIENPTkZJR19UT1VDSFNDUkVFTl9ST0hNX0JVMjEwMjMgaXMg
bm90IHNldApDT05GSUdfVE9VQ0hTQ1JFRU5fSVFTNVhYPXkKQ09ORklHX1RPVUNIU0NSRUVO
X0lRUzcyMTE9eQojIENPTkZJR19UT1VDSFNDUkVFTl9aSU5JVElYIGlzIG5vdCBzZXQKIyBD
T05GSUdfVE9VQ0hTQ1JFRU5fSElNQVhfSFg4MzExMkIgaXMgbm90IHNldApDT05GSUdfSU5Q
VVRfTUlTQz15CiMgQ09ORklHX0lOUFVUXzg4UE04MFhfT05LRVkgaXMgbm90IHNldApDT05G
SUdfSU5QVVRfQUQ3MTRYPXkKQ09ORklHX0lOUFVUX0FENzE0WF9JMkM9eQojIENPTkZJR19J
TlBVVF9BVE1FTF9DQVBUT1VDSCBpcyBub3Qgc2V0CkNPTkZJR19JTlBVVF9CTUExNTA9eQoj
IENPTkZJR19JTlBVVF9FM1gwX0JVVFRPTiBpcyBub3Qgc2V0CiMgQ09ORklHX0lOUFVUX1BD
U1BLUiBpcyBub3Qgc2V0CkNPTkZJR19JTlBVVF9NQVg3NzY1MF9PTktFWT15CkNPTkZJR19J
TlBVVF9NQVg3NzY5M19IQVBUSUM9eQpDT05GSUdfSU5QVVRfTUMxMzc4M19QV1JCVVRUT049
eQojIENPTkZJR19JTlBVVF9NTUE4NDUwIGlzIG5vdCBzZXQKQ09ORklHX0lOUFVUX0FQQU5F
TD15CkNPTkZJR19JTlBVVF9HUElPX0JFRVBFUj15CiMgQ09ORklHX0lOUFVUX0dQSU9fREVD
T0RFUiBpcyBub3Qgc2V0CkNPTkZJR19JTlBVVF9HUElPX1ZJQlJBPXkKIyBDT05GSUdfSU5Q
VVRfV0lTVFJPTl9CVE5TIGlzIG5vdCBzZXQKIyBDT05GSUdfSU5QVVRfQVRMQVNfQlROUyBp
cyBub3Qgc2V0CkNPTkZJR19JTlBVVF9LWFRKOT15CiMgQ09ORklHX0lOUFVUX1JFR1VMQVRP
Ul9IQVBUSUMgaXMgbm90IHNldApDT05GSUdfSU5QVVRfUkVUVV9QV1JCVVRUT049eQojIENP
TkZJR19JTlBVVF9UUFM2NTIxOF9QV1JCVVRUT04gaXMgbm90IHNldApDT05GSUdfSU5QVVRf
VFBTNjUyMTlfUFdSQlVUVE9OPXkKQ09ORklHX0lOUFVUX0FYUDIwWF9QRUs9eQpDT05GSUdf
SU5QVVRfVFdMNDAzMF9QV1JCVVRUT049eQpDT05GSUdfSU5QVVRfVFdMNDAzMF9WSUJSQT15
CkNPTkZJR19JTlBVVF9VSU5QVVQ9eQpDT05GSUdfSU5QVVRfUEFMTUFTX1BXUkJVVFRPTj15
CiMgQ09ORklHX0lOUFVUX1BDRjUwNjMzX1BNVSBpcyBub3Qgc2V0CiMgQ09ORklHX0lOUFVU
X1BDRjg1NzQgaXMgbm90IHNldAojIENPTkZJR19JTlBVVF9QV01fQkVFUEVSIGlzIG5vdCBz
ZXQKQ09ORklHX0lOUFVUX1BXTV9WSUJSQT15CkNPTkZJR19JTlBVVF9HUElPX1JPVEFSWV9F
TkNPREVSPXkKIyBDT05GSUdfSU5QVVRfREE3MjgwX0hBUFRJQ1MgaXMgbm90IHNldApDT05G
SUdfSU5QVVRfREE5MDYzX09OS0VZPXkKIyBDT05GSUdfSU5QVVRfV004MzFYX09OIGlzIG5v
dCBzZXQKQ09ORklHX0lOUFVUX0FEWEwzNFg9eQpDT05GSUdfSU5QVVRfQURYTDM0WF9JMkM9
eQpDT05GSUdfSU5QVVRfSUJNX1BBTkVMPXkKIyBDT05GSUdfSU5QVVRfSVFTMjY5QSBpcyBu
b3Qgc2V0CkNPTkZJR19JTlBVVF9JUVM2MjZBPXkKQ09ORklHX0lOUFVUX0lRUzcyMjI9eQpD
T05GSUdfSU5QVVRfQ01BMzAwMD15CkNPTkZJR19JTlBVVF9DTUEzMDAwX0kyQz15CkNPTkZJ
R19JTlBVVF9JREVBUEFEX1NMSURFQkFSPXkKQ09ORklHX0lOUFVUX0RSVjI2MFhfSEFQVElD
Uz15CkNPTkZJR19JTlBVVF9EUlYyNjY1X0hBUFRJQ1M9eQpDT05GSUdfSU5QVVRfRFJWMjY2
N19IQVBUSUNTPXkKQ09ORklHX0lOUFVUX1JUNTEyMF9QV1JLRVk9eQpDT05GSUdfUk1JNF9D
T1JFPXkKIyBDT05GSUdfUk1JNF9JMkMgaXMgbm90IHNldApDT05GSUdfUk1JNF9TTUI9eQpD
T05GSUdfUk1JNF9GMDM9eQpDT05GSUdfUk1JNF9GMDNfU0VSSU89eQpDT05GSUdfUk1JNF8y
RF9TRU5TT1I9eQpDT05GSUdfUk1JNF9GMTE9eQpDT05GSUdfUk1JNF9GMTI9eQpDT05GSUdf
Uk1JNF9GMzA9eQojIENPTkZJR19STUk0X0YzNCBpcyBub3Qgc2V0CkNPTkZJR19STUk0X0Yz
QT15CkNPTkZJR19STUk0X0Y1NT15CgojCiMgSGFyZHdhcmUgSS9PIHBvcnRzCiMKQ09ORklH
X1NFUklPPXkKQ09ORklHX0FSQ0hfTUlHSFRfSEFWRV9QQ19TRVJJTz15CkNPTkZJR19TRVJJ
T19JODA0Mj15CkNPTkZJR19TRVJJT19TRVJQT1JUPXkKQ09ORklHX1NFUklPX0NUODJDNzEw
PXkKIyBDT05GSUdfU0VSSU9fUEFSS0JEIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VSSU9fTElC
UFMyIGlzIG5vdCBzZXQKQ09ORklHX1NFUklPX1JBVz15CiMgQ09ORklHX1NFUklPX0FMVEVS
QV9QUzIgaXMgbm90IHNldApDT05GSUdfU0VSSU9fUFMyTVVMVD15CiMgQ09ORklHX1NFUklP
X0FSQ19QUzIgaXMgbm90IHNldApDT05GSUdfU0VSSU9fQVBCUFMyPXkKIyBDT05GSUdfU0VS
SU9fR1BJT19QUzIgaXMgbm90IHNldApDT05GSUdfVVNFUklPPXkKQ09ORklHX0dBTUVQT1JU
PXkKQ09ORklHX0dBTUVQT1JUX05TNTU4PXkKQ09ORklHX0dBTUVQT1JUX0w0PXkKIyBlbmQg
b2YgSGFyZHdhcmUgSS9PIHBvcnRzCiMgZW5kIG9mIElucHV0IGRldmljZSBzdXBwb3J0Cgoj
CiMgQ2hhcmFjdGVyIGRldmljZXMKIwpDT05GSUdfVFRZPXkKQ09ORklHX1ZUPXkKQ09ORklH
X0NPTlNPTEVfVFJBTlNMQVRJT05TPXkKQ09ORklHX1ZUX0NPTlNPTEU9eQojIENPTkZJR19W
VF9IV19DT05TT0xFX0JJTkRJTkcgaXMgbm90IHNldApDT05GSUdfVU5JWDk4X1BUWVM9eQpD
T05GSUdfTEVHQUNZX1BUWVM9eQpDT05GSUdfTEVHQUNZX1BUWV9DT1VOVD0yNTYKQ09ORklH
X0xFR0FDWV9USU9DU1RJPXkKQ09ORklHX0xESVNDX0FVVE9MT0FEPXkKCiMKIyBTZXJpYWwg
ZHJpdmVycwojCkNPTkZJR19TRVJJQUxfRUFSTFlDT049eQpDT05GSUdfU0VSSUFMXzgyNTA9
eQojIENPTkZJR19TRVJJQUxfODI1MF9ERVBSRUNBVEVEX09QVElPTlMgaXMgbm90IHNldApD
T05GSUdfU0VSSUFMXzgyNTBfUE5QPXkKQ09ORklHX1NFUklBTF84MjUwXzE2NTUwQV9WQVJJ
QU5UUz15CkNPTkZJR19TRVJJQUxfODI1MF9GSU5URUs9eQojIENPTkZJR19TRVJJQUxfODI1
MF9DT05TT0xFIGlzIG5vdCBzZXQKQ09ORklHX1NFUklBTF84MjUwX01FTl9NQ0I9eQpDT05G
SUdfU0VSSUFMXzgyNTBfTlJfVUFSVFM9NApDT05GSUdfU0VSSUFMXzgyNTBfUlVOVElNRV9V
QVJUUz00CkNPTkZJR19TRVJJQUxfODI1MF9FWFRFTkRFRD15CiMgQ09ORklHX1NFUklBTF84
MjUwX01BTllfUE9SVFMgaXMgbm90IHNldApDT05GSUdfU0VSSUFMXzgyNTBfU0hBUkVfSVJR
PXkKQ09ORklHX1NFUklBTF84MjUwX0RFVEVDVF9JUlE9eQojIENPTkZJR19TRVJJQUxfODI1
MF9SU0EgaXMgbm90IHNldApDT05GSUdfU0VSSUFMXzgyNTBfRFdMSUI9eQpDT05GSUdfU0VS
SUFMXzgyNTBfRFc9eQpDT05GSUdfU0VSSUFMXzgyNTBfUlQyODhYPXkKQ09ORklHX1NFUklB
TF9PRl9QTEFURk9STT15CgojCiMgTm9uLTgyNTAgc2VyaWFsIHBvcnQgc3VwcG9ydAojCkNP
TkZJR19TRVJJQUxfVUFSVExJVEU9eQojIENPTkZJR19TRVJJQUxfVUFSVExJVEVfQ09OU09M
RSBpcyBub3Qgc2V0CkNPTkZJR19TRVJJQUxfVUFSVExJVEVfTlJfVUFSVFM9MQpDT05GSUdf
U0VSSUFMX0NPUkU9eQpDT05GSUdfU0VSSUFMX0NPUkVfQ09OU09MRT15CiMgQ09ORklHX1NF
UklBTF9TSUZJVkUgaXMgbm90IHNldApDT05GSUdfU0VSSUFMX0xBTlRJUT15CiMgQ09ORklH
X1NFUklBTF9MQU5USVFfQ09OU09MRSBpcyBub3Qgc2V0CkNPTkZJR19TRVJJQUxfU0NDTlhQ
PXkKIyBDT05GSUdfU0VSSUFMX1NDQ05YUF9DT05TT0xFIGlzIG5vdCBzZXQKQ09ORklHX1NF
UklBTF9TQzE2SVM3WFg9eQpDT05GSUdfU0VSSUFMX1NDMTZJUzdYWF9JMkM9eQojIENPTkZJ
R19TRVJJQUxfVElNQkVSREFMRSBpcyBub3Qgc2V0CkNPTkZJR19TRVJJQUxfQUxURVJBX0pU
QUdVQVJUPXkKIyBDT05GSUdfU0VSSUFMX0FMVEVSQV9KVEFHVUFSVF9DT05TT0xFIGlzIG5v
dCBzZXQKQ09ORklHX1NFUklBTF9BTFRFUkFfVUFSVD15CkNPTkZJR19TRVJJQUxfQUxURVJB
X1VBUlRfTUFYUE9SVFM9NApDT05GSUdfU0VSSUFMX0FMVEVSQV9VQVJUX0JBVURSQVRFPTEx
NTIwMAojIENPTkZJR19TRVJJQUxfQUxURVJBX1VBUlRfQ09OU09MRSBpcyBub3Qgc2V0CkNP
TkZJR19TRVJJQUxfWElMSU5YX1BTX1VBUlQ9eQpDT05GSUdfU0VSSUFMX1hJTElOWF9QU19V
QVJUX0NPTlNPTEU9eQpDT05GSUdfU0VSSUFMX0FSQz15CkNPTkZJR19TRVJJQUxfQVJDX0NP
TlNPTEU9eQpDT05GSUdfU0VSSUFMX0FSQ19OUl9QT1JUUz0xCkNPTkZJR19TRVJJQUxfRlNM
X0xQVUFSVD15CiMgQ09ORklHX1NFUklBTF9GU0xfTFBVQVJUX0NPTlNPTEUgaXMgbm90IHNl
dApDT05GSUdfU0VSSUFMX0ZTTF9MSU5GTEVYVUFSVD15CiMgQ09ORklHX1NFUklBTF9GU0xf
TElORkxFWFVBUlRfQ09OU09MRSBpcyBub3Qgc2V0CkNPTkZJR19TRVJJQUxfQ09ORVhBTlRf
RElHSUNPTE9SPXkKIyBDT05GSUdfU0VSSUFMX0NPTkVYQU5UX0RJR0lDT0xPUl9DT05TT0xF
IGlzIG5vdCBzZXQKIyBDT05GSUdfU0VSSUFMX01FTl9aMTM1IGlzIG5vdCBzZXQKQ09ORklH
X1NFUklBTF9TUFJEPXkKIyBDT05GSUdfU0VSSUFMX1NQUkRfQ09OU09MRSBpcyBub3Qgc2V0
CiMgQ09ORklHX1NFUklBTF9MSVRFVUFSVCBpcyBub3Qgc2V0CiMgZW5kIG9mIFNlcmlhbCBk
cml2ZXJzCgpDT05GSUdfU0VSSUFMX01DVFJMX0dQSU89eQpDT05GSUdfU0VSSUFMX05PTlNU
QU5EQVJEPXkKQ09ORklHX01PWEFfSU5URUxMSU89eQpDT05GSUdfTl9IRExDPXkKQ09ORklH
X05fR1NNPXkKQ09ORklHX05VTExfVFRZPXkKIyBDT05GSUdfUlBNU0dfVFRZIGlzIG5vdCBz
ZXQKIyBDT05GSUdfU0VSSUFMX0RFVl9CVVMgaXMgbm90IHNldAojIENPTkZJR19QUklOVEVS
IGlzIG5vdCBzZXQKQ09ORklHX1BQREVWPXkKIyBDT05GSUdfVklSVElPX0NPTlNPTEUgaXMg
bm90IHNldApDT05GSUdfSVBNSV9IQU5ETEVSPXkKQ09ORklHX0lQTUlfRE1JX0RFQ09ERT15
CkNPTkZJR19JUE1JX1BMQVRfREFUQT15CiMgQ09ORklHX0lQTUlfUEFOSUNfRVZFTlQgaXMg
bm90IHNldAojIENPTkZJR19JUE1JX0RFVklDRV9JTlRFUkZBQ0UgaXMgbm90IHNldApDT05G
SUdfSVBNSV9TST15CkNPTkZJR19JUE1JX1NTSUY9eQojIENPTkZJR19JUE1JX0lQTUIgaXMg
bm90IHNldApDT05GSUdfSVBNSV9XQVRDSERPRz15CkNPTkZJR19JUE1JX1BPV0VST0ZGPXkK
IyBDT05GSUdfU1NJRl9JUE1JX0JNQyBpcyBub3Qgc2V0CkNPTkZJR19JUE1CX0RFVklDRV9J
TlRFUkZBQ0U9eQpDT05GSUdfSFdfUkFORE9NPXkKQ09ORklHX0hXX1JBTkRPTV9USU1FUklP
TUVNPXkKQ09ORklHX0hXX1JBTkRPTV9CQTQzMT15CkNPTkZJR19IV19SQU5ET01fVklBPXkK
Q09ORklHX0hXX1JBTkRPTV9WSVJUSU89eQojIENPTkZJR19IV19SQU5ET01fQ0NUUk5HIGlz
IG5vdCBzZXQKQ09ORklHX0hXX1JBTkRPTV9YSVBIRVJBPXkKIyBDT05GSUdfRFRMSyBpcyBu
b3Qgc2V0CkNPTkZJR19NV0FWRT15CiMgQ09ORklHX1NDeDIwMF9HUElPIGlzIG5vdCBzZXQK
IyBDT05GSUdfUEM4NzM2eF9HUElPIGlzIG5vdCBzZXQKQ09ORklHX05TQ19HUElPPXkKIyBD
T05GSUdfREVWTUVNIGlzIG5vdCBzZXQKQ09ORklHX05WUkFNPXkKIyBDT05GSUdfREVWUE9S
VCBpcyBub3Qgc2V0CiMgQ09ORklHX0hQRVQgaXMgbm90IHNldAojIENPTkZJR19IQU5HQ0hF
Q0tfVElNRVIgaXMgbm90IHNldApDT05GSUdfVENHX1RQTT15CkNPTkZJR19UQ0dfVFBNMl9I
TUFDPXkKQ09ORklHX0hXX1JBTkRPTV9UUE09eQpDT05GSUdfVENHX1RJU19DT1JFPXkKQ09O
RklHX1RDR19USVM9eQpDT05GSUdfVENHX1RJU19JMkM9eQpDT05GSUdfVENHX1RJU19JMkNf
Q1I1MD15CkNPTkZJR19UQ0dfVElTX0kyQ19BVE1FTD15CiMgQ09ORklHX1RDR19USVNfSTJD
X0lORklORU9OIGlzIG5vdCBzZXQKQ09ORklHX1RDR19USVNfSTJDX05VVk9UT049eQpDT05G
SUdfVENHX05TQz15CiMgQ09ORklHX1RDR19BVE1FTCBpcyBub3Qgc2V0CkNPTkZJR19UQ0df
SU5GSU5FT049eQpDT05GSUdfVENHX0NSQj15CkNPTkZJR19UQ0dfVlRQTV9QUk9YWT15CiMg
Q09ORklHX1RDR19USVNfU1QzM1pQMjRfSTJDIGlzIG5vdCBzZXQKIyBDT05GSUdfVEVMQ0xP
Q0sgaXMgbm90IHNldApDT05GSUdfWElMTFlCVVNfQ0xBU1M9eQpDT05GSUdfWElMTFlCVVM9
eQpDT05GSUdfWElMTFlCVVNfT0Y9eQojIGVuZCBvZiBDaGFyYWN0ZXIgZGV2aWNlcwoKIwoj
IEkyQyBzdXBwb3J0CiMKQ09ORklHX0kyQz15CiMgQ09ORklHX0FDUElfSTJDX09QUkVHSU9O
IGlzIG5vdCBzZXQKQ09ORklHX0kyQ19CT0FSRElORk89eQojIENPTkZJR19JMkNfQ09NUEFU
IGlzIG5vdCBzZXQKQ09ORklHX0kyQ19DSEFSREVWPXkKQ09ORklHX0kyQ19NVVg9eQoKIwoj
IE11bHRpcGxleGVyIEkyQyBDaGlwIHN1cHBvcnQKIwpDT05GSUdfSTJDX0FSQl9HUElPX0NI
QUxMRU5HRT15CkNPTkZJR19JMkNfTVVYX0dQSU89eQpDT05GSUdfSTJDX01VWF9HUE1VWD15
CkNPTkZJR19JMkNfTVVYX0xUQzQzMDY9eQpDT05GSUdfSTJDX01VWF9QQ0E5NTQxPXkKQ09O
RklHX0kyQ19NVVhfUENBOTU0eD15CiMgQ09ORklHX0kyQ19NVVhfUElOQ1RSTCBpcyBub3Qg
c2V0CkNPTkZJR19JMkNfTVVYX1JFRz15CiMgQ09ORklHX0kyQ19ERU1VWF9QSU5DVFJMIGlz
IG5vdCBzZXQKQ09ORklHX0kyQ19NVVhfTUxYQ1BMRD15CiMgZW5kIG9mIE11bHRpcGxleGVy
IEkyQyBDaGlwIHN1cHBvcnQKCiMgQ09ORklHX0kyQ19IRUxQRVJfQVVUTyBpcyBub3Qgc2V0
CkNPTkZJR19JMkNfU01CVVM9eQoKIwojIEkyQyBBbGdvcml0aG1zCiMKQ09ORklHX0kyQ19B
TEdPQklUPXkKQ09ORklHX0kyQ19BTEdPUENGPXkKQ09ORklHX0kyQ19BTEdPUENBPXkKIyBl
bmQgb2YgSTJDIEFsZ29yaXRobXMKCiMKIyBJMkMgSGFyZHdhcmUgQnVzIHN1cHBvcnQKIwoK
IwojIEFDUEkgZHJpdmVycwojCkNPTkZJR19JMkNfU0NNST15CgojCiMgSTJDIHN5c3RlbSBi
dXMgZHJpdmVycyAobW9zdGx5IGVtYmVkZGVkIC8gc3lzdGVtLW9uLWNoaXApCiMKQ09ORklH
X0kyQ19DQlVTX0dQSU89eQojIENPTkZJR19JMkNfREVTSUdOV0FSRV9QTEFURk9STSBpcyBu
b3Qgc2V0CiMgQ09ORklHX0kyQ19FTUVWMiBpcyBub3Qgc2V0CkNPTkZJR19JMkNfR1BJTz15
CiMgQ09ORklHX0kyQ19HUElPX0ZBVUxUX0lOSkVDVE9SIGlzIG5vdCBzZXQKQ09ORklHX0ky
Q19LRU1QTEQ9eQpDT05GSUdfSTJDX09DT1JFUz15CiMgQ09ORklHX0kyQ19QQ0FfUExBVEZP
Uk0gaXMgbm90IHNldAojIENPTkZJR19JMkNfUkszWCBpcyBub3Qgc2V0CiMgQ09ORklHX0ky
Q19TSU1URUMgaXMgbm90IHNldAojIENPTkZJR19JMkNfWElMSU5YIGlzIG5vdCBzZXQKCiMK
IyBFeHRlcm5hbCBJMkMvU01CdXMgYWRhcHRlciBkcml2ZXJzCiMKIyBDT05GSUdfSTJDX1BB
UlBPUlQgaXMgbm90IHNldAojIENPTkZJR19JMkNfVEFPU19FVk0gaXMgbm90IHNldAoKIwoj
IE90aGVyIEkyQy9TTUJ1cyBidXMgZHJpdmVycwojCkNPTkZJR19JMkNfUENBX0lTQT15CkNP
TkZJR19JMkNfQ1JPU19FQ19UVU5ORUw9eQpDT05GSUdfSTJDX1ZJUlRJTz15CiMgZW5kIG9m
IEkyQyBIYXJkd2FyZSBCdXMgc3VwcG9ydAoKQ09ORklHX0kyQ19TTEFWRT15CkNPTkZJR19J
MkNfU0xBVkVfRUVQUk9NPXkKQ09ORklHX0kyQ19TTEFWRV9URVNUVU5JVD15CkNPTkZJR19J
MkNfREVCVUdfQ09SRT15CiMgQ09ORklHX0kyQ19ERUJVR19BTEdPIGlzIG5vdCBzZXQKQ09O
RklHX0kyQ19ERUJVR19CVVM9eQojIGVuZCBvZiBJMkMgc3VwcG9ydAoKQ09ORklHX0kzQz15
CiMgQ09ORklHX0NETlNfSTNDX01BU1RFUiBpcyBub3Qgc2V0CkNPTkZJR19EV19JM0NfTUFT
VEVSPXkKQ09ORklHX1NWQ19JM0NfTUFTVEVSPXkKQ09ORklHX01JUElfSTNDX0hDST15CiMg
Q09ORklHX1NQSSBpcyBub3Qgc2V0CiMgQ09ORklHX1NQTUkgaXMgbm90IHNldApDT05GSUdf
SFNJPXkKQ09ORklHX0hTSV9CT0FSRElORk89eQoKIwojIEhTSSBjb250cm9sbGVycwojCgoj
CiMgSFNJIGNsaWVudHMKIwojIENPTkZJR19IU0lfQ0hBUiBpcyBub3Qgc2V0CkNPTkZJR19Q
UFM9eQpDT05GSUdfUFBTX0RFQlVHPXkKQ09ORklHX05UUF9QUFM9eQoKIwojIFBQUyBjbGll
bnRzIHN1cHBvcnQKIwpDT05GSUdfUFBTX0NMSUVOVF9LVElNRVI9eQpDT05GSUdfUFBTX0NM
SUVOVF9MRElTQz15CiMgQ09ORklHX1BQU19DTElFTlRfUEFSUE9SVCBpcyBub3Qgc2V0CkNP
TkZJR19QUFNfQ0xJRU5UX0dQSU89eQoKIwojIFBQUyBnZW5lcmF0b3JzIHN1cHBvcnQKIwoK
IwojIFBUUCBjbG9jayBzdXBwb3J0CiMKIyBDT05GSUdfUFRQXzE1ODhfQ0xPQ0sgaXMgbm90
IHNldApDT05GSUdfUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUw9eQojIGVuZCBvZiBQVFAgY2xv
Y2sgc3VwcG9ydAoKQ09ORklHX1BJTkNUUkw9eQpDT05GSUdfR0VORVJJQ19QSU5DVFJMX0dS
T1VQUz15CkNPTkZJR19QSU5NVVg9eQpDT05GSUdfR0VORVJJQ19QSU5NVVhfRlVOQ1RJT05T
PXkKQ09ORklHX1BJTkNPTkY9eQpDT05GSUdfR0VORVJJQ19QSU5DT05GPXkKIyBDT05GSUdf
UElOQ1RSTF9BTUQgaXMgbm90IHNldAojIENPTkZJR19QSU5DVFJMX0FYUDIwOSBpcyBub3Qg
c2V0CkNPTkZJR19QSU5DVFJMX0FXOTUyMz15CiMgQ09ORklHX1BJTkNUUkxfQ1k4Qzk1WDAg
aXMgbm90IHNldApDT05GSUdfUElOQ1RSTF9EQTkwNjI9eQpDT05GSUdfUElOQ1RSTF9FUVVJ
TElCUklVTT15CiMgQ09ORklHX1BJTkNUUkxfTUNQMjNTMDggaXMgbm90IHNldApDT05GSUdf
UElOQ1RSTF9NSUNST0NISVBfU0dQSU89eQpDT05GSUdfUElOQ1RSTF9PQ0VMT1Q9eQpDT05G
SUdfUElOQ1RSTF9QQUxNQVM9eQpDT05GSUdfUElOQ1RSTF9TSU5HTEU9eQpDT05GSUdfUElO
Q1RSTF9TVE1GWD15CkNPTkZJR19QSU5DVFJMX1NYMTUwWD15CkNPTkZJR19QSU5DVFJMX1RQ
UzY1OTQ9eQpDT05GSUdfUElOQ1RSTF9DUzQyTDQzPXkKCiMKIyBJbnRlbCBwaW5jdHJsIGRy
aXZlcnMKIwpDT05GSUdfUElOQ1RSTF9CQVlUUkFJTD15CkNPTkZJR19QSU5DVFJMX0NIRVJS
WVZJRVc9eQpDT05GSUdfUElOQ1RSTF9MWU5YUE9JTlQ9eQpDT05GSUdfUElOQ1RSTF9JTlRF
TD15CkNPTkZJR19QSU5DVFJMX0lOVEVMX1BMQVRGT1JNPXkKQ09ORklHX1BJTkNUUkxfQUxE
RVJMQUtFPXkKQ09ORklHX1BJTkNUUkxfQlJPWFRPTj15CiMgQ09ORklHX1BJTkNUUkxfQ0FO
Tk9OTEFLRSBpcyBub3Qgc2V0CkNPTkZJR19QSU5DVFJMX0NFREFSRk9SSz15CkNPTkZJR19Q
SU5DVFJMX0RFTlZFUlRPTj15CiMgQ09ORklHX1BJTkNUUkxfRUxLSEFSVExBS0UgaXMgbm90
IHNldApDT05GSUdfUElOQ1RSTF9FTU1JVFNCVVJHPXkKIyBDT05GSUdfUElOQ1RSTF9HRU1J
TklMQUtFIGlzIG5vdCBzZXQKQ09ORklHX1BJTkNUUkxfSUNFTEFLRT15CkNPTkZJR19QSU5D
VFJMX0pBU1BFUkxBS0U9eQpDT05GSUdfUElOQ1RSTF9MQUtFRklFTEQ9eQojIENPTkZJR19Q
SU5DVFJMX0xFV0lTQlVSRyBpcyBub3Qgc2V0CiMgQ09ORklHX1BJTkNUUkxfTUVURU9STEFL
RSBpcyBub3Qgc2V0CkNPTkZJR19QSU5DVFJMX01FVEVPUlBPSU5UPXkKQ09ORklHX1BJTkNU
UkxfU1VOUklTRVBPSU5UPXkKIyBDT05GSUdfUElOQ1RSTF9USUdFUkxBS0UgaXMgbm90IHNl
dAojIGVuZCBvZiBJbnRlbCBwaW5jdHJsIGRyaXZlcnMKCiMKIyBSZW5lc2FzIHBpbmN0cmwg
ZHJpdmVycwojCiMgZW5kIG9mIFJlbmVzYXMgcGluY3RybCBkcml2ZXJzCgpDT05GSUdfR1BJ
T0xJQj15CkNPTkZJR19HUElPTElCX0ZBU1RQQVRIX0xJTUlUPTUxMgpDT05GSUdfT0ZfR1BJ
Tz15CkNPTkZJR19HUElPX0FDUEk9eQpDT05GSUdfR1BJT0xJQl9JUlFDSElQPXkKQ09ORklH
X09GX0dQSU9fTU1fR1BJT0NISVA9eQpDT05GSUdfR1BJT19DREVWPXkKQ09ORklHX0dQSU9f
Q0RFVl9WMT15CkNPTkZJR19HUElPX0dFTkVSSUM9eQpDT05GSUdfR1BJT19SRUdNQVA9eQoK
IwojIE1lbW9yeSBtYXBwZWQgR1BJTyBkcml2ZXJzCiMKQ09ORklHX0dQSU9fNzRYWF9NTUlP
PXkKQ09ORklHX0dQSU9fQUxURVJBPXkKIyBDT05GSUdfR1BJT19BTURQVCBpcyBub3Qgc2V0
CkNPTkZJR19HUElPX0NBREVOQ0U9eQpDT05GSUdfR1BJT19EV0FQQj15CiMgQ09ORklHX0dQ
SU9fRlRHUElPMDEwIGlzIG5vdCBzZXQKIyBDT05GSUdfR1BJT19HRU5FUklDX1BMQVRGT1JN
IGlzIG5vdCBzZXQKIyBDT05GSUdfR1BJT19HUkFOSVRFUkFQSURTIGlzIG5vdCBzZXQKQ09O
RklHX0dQSU9fR1JHUElPPXkKQ09ORklHX0dQSU9fSExXRD15CkNPTkZJR19HUElPX0xPR0lD
VkM9eQpDT05GSUdfR1BJT19NQjg2UzdYPXkKQ09ORklHX0dQSU9fTUVOWjEyNz15CkNPTkZJ
R19HUElPX1NJRklWRT15CiMgQ09ORklHX0dQSU9fU0lPWCBpcyBub3Qgc2V0CiMgQ09ORklH
X0dQSU9fU1lTQ09OIGlzIG5vdCBzZXQKQ09ORklHX0dQSU9fWElMSU5YPXkKIyBDT05GSUdf
R1BJT19BTURfRkNIIGlzIG5vdCBzZXQKIyBlbmQgb2YgTWVtb3J5IG1hcHBlZCBHUElPIGRy
aXZlcnMKCiMKIyBQb3J0LW1hcHBlZCBJL08gR1BJTyBkcml2ZXJzCiMKQ09ORklHX0dQSU9f
RjcxODhYPXkKQ09ORklHX0dQSU9fSVQ4Nz15CiMgQ09ORklHX0dQSU9fU0NIMzExWCBpcyBu
b3Qgc2V0CkNPTkZJR19HUElPX1dJTkJPTkQ9eQpDT05GSUdfR1BJT19XUzE2QzQ4PXkKIyBl
bmQgb2YgUG9ydC1tYXBwZWQgSS9PIEdQSU8gZHJpdmVycwoKIwojIEkyQyBHUElPIGV4cGFu
ZGVycwojCkNPTkZJR19HUElPX0FETlA9eQojIENPTkZJR19HUElPX0ZYTDY0MDggaXMgbm90
IHNldApDT05GSUdfR1BJT19EUzQ1MjA9eQojIENPTkZJR19HUElPX0dXX1BMRCBpcyBub3Qg
c2V0CiMgQ09ORklHX0dQSU9fTUFYNzMwMCBpcyBub3Qgc2V0CiMgQ09ORklHX0dQSU9fTUFY
NzMyWCBpcyBub3Qgc2V0CiMgQ09ORklHX0dQSU9fUENBOTUzWCBpcyBub3Qgc2V0CkNPTkZJ
R19HUElPX1BDQTk1NzA9eQojIENPTkZJR19HUElPX1BDRjg1N1ggaXMgbm90IHNldApDT05G
SUdfR1BJT19UUElDMjgxMD15CiMgZW5kIG9mIEkyQyBHUElPIGV4cGFuZGVycwoKIwojIE1G
RCBHUElPIGV4cGFuZGVycwojCiMgQ09ORklHX0dQSU9fQURQNTUyMCBpcyBub3Qgc2V0CkNP
TkZJR19HUElPX0FSSVpPTkE9eQpDT05GSUdfR1BJT19CRDcxODE1PXkKIyBDT05GSUdfR1BJ
T19CRDcxODI4IGlzIG5vdCBzZXQKQ09ORklHX0dQSU9fQkQ5NTcxTVdWPXkKQ09ORklHX0dQ
SU9fQ1JPU19FQz15CiMgQ09ORklHX0dQSU9fRUxLSEFSVExBS0UgaXMgbm90IHNldApDT05G
SUdfR1BJT19LRU1QTEQ9eQpDT05GSUdfR1BJT19MUDM5NDM9eQojIENPTkZJR19HUElPX0xQ
ODc1NjUgaXMgbm90IHNldApDT05GSUdfR1BJT19NQVg3NzY1MD15CkNPTkZJR19HUElPX1BB
TE1BUz15CkNPTkZJR19HUElPX1JDNVQ1ODM9eQpDT05GSUdfR1BJT19TVE1QRT15CiMgQ09O
RklHX0dQSU9fVEMzNTg5WCBpcyBub3Qgc2V0CkNPTkZJR19HUElPX1RQUzY1MDg2PXkKIyBD
T05GSUdfR1BJT19UUFM2NTIxOCBpcyBub3Qgc2V0CkNPTkZJR19HUElPX1RQUzY1MjE5PXkK
IyBDT05GSUdfR1BJT19UUFM2NTg2WCBpcyBub3Qgc2V0CiMgQ09ORklHX0dQSU9fVFBTNjU5
MTAgaXMgbm90IHNldApDT05GSUdfR1BJT19UUFM2NTkxMj15CiMgQ09ORklHX0dQSU9fVFBT
Njg0NzAgaXMgbm90IHNldApDT05GSUdfR1BJT19UV0w0MDMwPXkKQ09ORklHX0dQSU9fV0hJ
U0tFWV9DT1ZFPXkKIyBDT05GSUdfR1BJT19XTTgzMVggaXMgbm90IHNldApDT05GSUdfR1BJ
T19XTTgzNTA9eQojIENPTkZJR19HUElPX1dNODk5NCBpcyBub3Qgc2V0CiMgZW5kIG9mIE1G
RCBHUElPIGV4cGFuZGVycwoKIwojIFZpcnR1YWwgR1BJTyBkcml2ZXJzCiMKIyBDT05GSUdf
R1BJT19BR0dSRUdBVE9SIGlzIG5vdCBzZXQKQ09ORklHX0dQSU9fTEFUQ0g9eQojIENPTkZJ
R19HUElPX01PQ0tVUCBpcyBub3Qgc2V0CiMgQ09ORklHX0dQSU9fVklSVElPIGlzIG5vdCBz
ZXQKIyBDT05GSUdfR1BJT19TSU0gaXMgbm90IHNldAojIGVuZCBvZiBWaXJ0dWFsIEdQSU8g
ZHJpdmVycwoKIwojIEdQSU8gRGVidWdnaW5nIHV0aWxpdGllcwojCiMgZW5kIG9mIEdQSU8g
RGVidWdnaW5nIHV0aWxpdGllcwoKQ09ORklHX1cxPXkKQ09ORklHX1cxX0NPTj15CgojCiMg
MS13aXJlIEJ1cyBNYXN0ZXJzCiMKQ09ORklHX1cxX01BU1RFUl9BTURfQVhJPXkKQ09ORklH
X1cxX01BU1RFUl9EUzI0ODI9eQpDT05GSUdfVzFfTUFTVEVSX0dQSU89eQojIENPTkZJR19X
MV9NQVNURVJfU0dJIGlzIG5vdCBzZXQKIyBlbmQgb2YgMS13aXJlIEJ1cyBNYXN0ZXJzCgoj
CiMgMS13aXJlIFNsYXZlcwojCkNPTkZJR19XMV9TTEFWRV9USEVSTT15CkNPTkZJR19XMV9T
TEFWRV9TTUVNPXkKIyBDT05GSUdfVzFfU0xBVkVfRFMyNDA1IGlzIG5vdCBzZXQKQ09ORklH
X1cxX1NMQVZFX0RTMjQwOD15CiMgQ09ORklHX1cxX1NMQVZFX0RTMjQwOF9SRUFEQkFDSyBp
cyBub3Qgc2V0CkNPTkZJR19XMV9TTEFWRV9EUzI0MTM9eQpDT05GSUdfVzFfU0xBVkVfRFMy
NDA2PXkKQ09ORklHX1cxX1NMQVZFX0RTMjQyMz15CkNPTkZJR19XMV9TTEFWRV9EUzI4MDU9
eQpDT05GSUdfVzFfU0xBVkVfRFMyNDMwPXkKIyBDT05GSUdfVzFfU0xBVkVfRFMyNDMxIGlz
IG5vdCBzZXQKQ09ORklHX1cxX1NMQVZFX0RTMjQzMz15CkNPTkZJR19XMV9TTEFWRV9EUzI0
MzNfQ1JDPXkKQ09ORklHX1cxX1NMQVZFX0RTMjQzOD15CiMgQ09ORklHX1cxX1NMQVZFX0RT
MjUwWCBpcyBub3Qgc2V0CkNPTkZJR19XMV9TTEFWRV9EUzI3ODA9eQpDT05GSUdfVzFfU0xB
VkVfRFMyNzgxPXkKQ09ORklHX1cxX1NMQVZFX0RTMjhFMDQ9eQpDT05GSUdfVzFfU0xBVkVf
RFMyOEUxNz15CiMgZW5kIG9mIDEtd2lyZSBTbGF2ZXMKCiMgQ09ORklHX1BPV0VSX1JFU0VU
IGlzIG5vdCBzZXQKQ09ORklHX1BPV0VSX1NFUVVFTkNJTkc9eQpDT05GSUdfUE9XRVJfU0VR
VUVOQ0lOR19RQ09NX1dDTj15CkNPTkZJR19QT1dFUl9TVVBQTFk9eQojIENPTkZJR19QT1dF
Ul9TVVBQTFlfREVCVUcgaXMgbm90IHNldApDT05GSUdfUE9XRVJfU1VQUExZX0hXTU9OPXkK
IyBDT05GSUdfR0VORVJJQ19BRENfQkFUVEVSWSBpcyBub3Qgc2V0CkNPTkZJR19JUDVYWFhf
UE9XRVI9eQpDT05GSUdfV004MzFYX0JBQ0tVUD15CkNPTkZJR19XTTgzMVhfUE9XRVI9eQpD
T05GSUdfV004MzUwX1BPV0VSPXkKQ09ORklHX1RFU1RfUE9XRVI9eQpDT05GSUdfQ0hBUkdF
Ul9BRFA1MDYxPXkKQ09ORklHX0JBVFRFUllfQUNUODk0NUE9eQojIENPTkZJR19CQVRURVJZ
X0NXMjAxNSBpcyBub3Qgc2V0CiMgQ09ORklHX0JBVFRFUllfRFMyNzYwIGlzIG5vdCBzZXQK
Q09ORklHX0JBVFRFUllfRFMyNzgwPXkKQ09ORklHX0JBVFRFUllfRFMyNzgxPXkKQ09ORklH
X0JBVFRFUllfRFMyNzgyPXkKIyBDT05GSUdfQkFUVEVSWV9PTFBDIGlzIG5vdCBzZXQKIyBD
T05GSUdfQkFUVEVSWV9TQU1TVU5HX1NESSBpcyBub3Qgc2V0CkNPTkZJR19CQVRURVJZX1NC
Uz15CkNPTkZJR19DSEFSR0VSX1NCUz15CkNPTkZJR19NQU5BR0VSX1NCUz15CkNPTkZJR19C
QVRURVJZX0JRMjdYWFg9eQojIENPTkZJR19CQVRURVJZX0JRMjdYWFhfSTJDIGlzIG5vdCBz
ZXQKIyBDT05GSUdfQkFUVEVSWV9CUTI3WFhYX0hEUSBpcyBub3Qgc2V0CkNPTkZJR19CQVRU
RVJZX0RBOTE1MD15CiMgQ09ORklHX0FYUDIwWF9QT1dFUiBpcyBub3Qgc2V0CiMgQ09ORklH
X0JBVFRFUllfTUFYMTcwNDAgaXMgbm90IHNldApDT05GSUdfQkFUVEVSWV9NQVgxNzA0Mj15
CkNPTkZJR19CQVRURVJZX01BWDE3MjFYPXkKIyBDT05GSUdfQkFUVEVSWV9UV0w0MDMwX01B
REMgaXMgbm90IHNldApDT05GSUdfQ0hBUkdFUl9QQ0Y1MDYzMz15CkNPTkZJR19CQVRURVJZ
X1JYNTE9eQpDT05GSUdfQ0hBUkdFUl9NQVg4OTAzPXkKQ09ORklHX0NIQVJHRVJfVFdMNDAz
MD15CkNPTkZJR19DSEFSR0VSX0xQODcyNz15CkNPTkZJR19DSEFSR0VSX0xQODc4OD15CiMg
Q09ORklHX0NIQVJHRVJfR1BJTyBpcyBub3Qgc2V0CkNPTkZJR19DSEFSR0VSX01BTkFHRVI9
eQojIENPTkZJR19DSEFSR0VSX0xUMzY1MSBpcyBub3Qgc2V0CkNPTkZJR19DSEFSR0VSX0xU
QzQxNjJMPXkKQ09ORklHX0NIQVJHRVJfTUFYMTQ1Nzc9eQpDT05GSUdfQ0hBUkdFUl9ERVRF
Q1RPUl9NQVgxNDY1Nj15CkNPTkZJR19DSEFSR0VSX01BWDc3NjUwPXkKQ09ORklHX0NIQVJH
RVJfTUFYNzc2OTM9eQojIENPTkZJR19DSEFSR0VSX01BWDc3OTc2IGlzIG5vdCBzZXQKQ09O
RklHX0NIQVJHRVJfTVAyNjI5PXkKQ09ORklHX0NIQVJHRVJfTVQ2MzcwPXkKQ09ORklHX0NI
QVJHRVJfQlEyNDE1WD15CkNPTkZJR19DSEFSR0VSX0JRMjQxOTA9eQpDT05GSUdfQ0hBUkdF
Ul9CUTI0MjU3PXkKQ09ORklHX0NIQVJHRVJfQlEyNDczNT15CkNPTkZJR19DSEFSR0VSX0JR
MjUxNVg9eQpDT05GSUdfQ0hBUkdFUl9CUTI1ODkwPXkKQ09ORklHX0NIQVJHRVJfQlEyNTk4
MD15CkNPTkZJR19DSEFSR0VSX0JRMjU2WFg9eQpDT05GSUdfQ0hBUkdFUl9TTUIzNDc9eQpD
T05GSUdfQ0hBUkdFUl9UUFM2NTA5MD15CiMgQ09ORklHX0NIQVJHRVJfVFBTNjUyMTcgaXMg
bm90IHNldApDT05GSUdfQkFUVEVSWV9HQVVHRV9MVEMyOTQxPXkKQ09ORklHX0JBVFRFUllf
R09MREZJU0g9eQpDT05GSUdfQkFUVEVSWV9SVDUwMzM9eQpDT05GSUdfQ0hBUkdFUl9SVDUw
MzM9eQpDT05GSUdfQ0hBUkdFUl9SVDk0NTU9eQpDT05GSUdfQ0hBUkdFUl9SVDk0Njc9eQpD
T05GSUdfQ0hBUkdFUl9SVDk0NzE9eQpDT05GSUdfQ0hBUkdFUl9DUk9TX1VTQlBEPXkKIyBD
T05GSUdfQ0hBUkdFUl9DUk9TX1BDSEcgaXMgbm90IHNldApDT05GSUdfQ0hBUkdFUl9DUk9T
X0NPTlRST0w9eQpDT05GSUdfQ0hBUkdFUl9VQ1MxMDAyPXkKIyBDT05GSUdfQ0hBUkdFUl9C
RDk5OTU0IGlzIG5vdCBzZXQKQ09ORklHX0NIQVJHRVJfV0lMQ089eQpDT05GSUdfUk41VDYx
OF9QT1dFUj15CkNPTkZJR19CQVRURVJZX1VHMzEwNT15CiMgQ09ORklHX0ZVRUxfR0FVR0Vf
TU04MDEzIGlzIG5vdCBzZXQKQ09ORklHX0hXTU9OPXkKQ09ORklHX0hXTU9OX1ZJRD15CiMg
Q09ORklHX0hXTU9OX0RFQlVHX0NISVAgaXMgbm90IHNldAoKIwojIE5hdGl2ZSBkcml2ZXJz
CiMKQ09ORklHX1NFTlNPUlNfQUJJVFVHVVJVPXkKIyBDT05GSUdfU0VOU09SU19BQklUVUdV
UlUzIGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfQUQ3NDE0PXkKIyBDT05GSUdfU0VOU09S
U19BRDc0MTggaXMgbm90IHNldApDT05GSUdfU0VOU09SU19BRE0xMDIxPXkKQ09ORklHX1NF
TlNPUlNfQURNMTAyNT15CkNPTkZJR19TRU5TT1JTX0FETTEwMjY9eQpDT05GSUdfU0VOU09S
U19BRE0xMDI5PXkKQ09ORklHX1NFTlNPUlNfQURNMTAzMT15CkNPTkZJR19TRU5TT1JTX0FE
TTExNzc9eQpDT05GSUdfU0VOU09SU19BRE05MjQwPXkKQ09ORklHX1NFTlNPUlNfQURUN1gx
MD15CkNPTkZJR19TRU5TT1JTX0FEVDc0MTA9eQojIENPTkZJR19TRU5TT1JTX0FEVDc0MTEg
aXMgbm90IHNldApDT05GSUdfU0VOU09SU19BRFQ3NDYyPXkKQ09ORklHX1NFTlNPUlNfQURU
NzQ3MD15CkNPTkZJR19TRU5TT1JTX0FEVDc0NzU9eQpDT05GSUdfU0VOU09SU19BSFQxMD15
CkNPTkZJR19TRU5TT1JTX0FTMzcwPXkKQ09ORklHX1NFTlNPUlNfQVNDNzYyMT15CkNPTkZJ
R19TRU5TT1JTX0FTVVNfUk9HX1JZVUpJTj15CkNPTkZJR19TRU5TT1JTX0FYSV9GQU5fQ09O
VFJPTD15CkNPTkZJR19TRU5TT1JTX0FQUExFU01DPXkKIyBDT05GSUdfU0VOU09SU19BU0Ix
MDAgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0FUWFAxIGlzIG5vdCBzZXQKQ09ORklH
X1NFTlNPUlNfQ0hJUENBUDI9eQojIENPTkZJR19TRU5TT1JTX0NPUlNBSVJfQ1BSTyBpcyBu
b3Qgc2V0CkNPTkZJR19TRU5TT1JTX0NPUlNBSVJfUFNVPXkKQ09ORklHX1NFTlNPUlNfQ1JP
U19FQz15CiMgQ09ORklHX1NFTlNPUlNfRFJJVkVURU1QIGlzIG5vdCBzZXQKQ09ORklHX1NF
TlNPUlNfRFM2MjA9eQpDT05GSUdfU0VOU09SU19EUzE2MjE9eQpDT05GSUdfU0VOU09SU19E
RUxMX1NNTT15CiMgQ09ORklHX0k4SyBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfRjcx
ODA1RiBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX0Y3MTg4MkZHPXkKIyBDT05GSUdfU0VO
U09SU19GNzUzNzVTIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19HU0MgaXMgbm90IHNl
dApDT05GSUdfU0VOU09SU19NQzEzNzgzX0FEQz15CiMgQ09ORklHX1NFTlNPUlNfRlNDSE1E
IGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfR0w1MThTTT15CkNPTkZJR19TRU5TT1JTX0dM
NTIwU009eQpDT05GSUdfU0VOU09SU19HNzYwQT15CiMgQ09ORklHX1NFTlNPUlNfRzc2MiBp
cyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX0dQSU9fRkFOPXkKQ09ORklHX1NFTlNPUlNfSElI
NjEzMD15CkNPTkZJR19TRU5TT1JTX0hTMzAwMT15CiMgQ09ORklHX1NFTlNPUlNfSUJNQUVN
IGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19JQk1QRVggaXMgbm90IHNldApDT05GSUdf
U0VOU09SU19JSU9fSFdNT049eQpDT05GSUdfU0VOU09SU19DT1JFVEVNUD15CkNPTkZJR19T
RU5TT1JTX0lUODc9eQpDT05GSUdfU0VOU09SU19KQzQyPXkKQ09ORklHX1NFTlNPUlNfUE9X
UjEyMjA9eQpDT05GSUdfU0VOU09SU19MRU5PVk9fRUM9eQojIENPTkZJR19TRU5TT1JTX0xJ
TkVBR0UgaXMgbm90IHNldApDT05GSUdfU0VOU09SU19MVEMyOTQ1PXkKQ09ORklHX1NFTlNP
UlNfTFRDMjk0Nz15CkNPTkZJR19TRU5TT1JTX0xUQzI5NDdfSTJDPXkKIyBDT05GSUdfU0VO
U09SU19MVEMyOTkwIGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfTFRDMjk5MT15CkNPTkZJ
R19TRU5TT1JTX0xUQzI5OTI9eQpDT05GSUdfU0VOU09SU19MVEM0MTUxPXkKIyBDT05GSUdf
U0VOU09SU19MVEM0MjE1IGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfTFRDNDIyMj15CkNP
TkZJR19TRU5TT1JTX0xUQzQyNDU9eQpDT05GSUdfU0VOU09SU19MVEM0MjYwPXkKQ09ORklH
X1NFTlNPUlNfTFRDNDI2MT15CkNPTkZJR19TRU5TT1JTX0xUQzQyODI9eQpDT05GSUdfU0VO
U09SU19NQVgxMjc9eQpDT05GSUdfU0VOU09SU19NQVgxNjA2NT15CkNPTkZJR19TRU5TT1JT
X01BWDE2MTk9eQpDT05GSUdfU0VOU09SU19NQVgxNjY4PXkKQ09ORklHX1NFTlNPUlNfTUFY
MTk3PXkKIyBDT05GSUdfU0VOU09SU19NQVgzMTczMCBpcyBub3Qgc2V0CkNPTkZJR19TRU5T
T1JTX01BWDMxNzYwPXkKIyBDT05GSUdfTUFYMzE4MjcgaXMgbm90IHNldApDT05GSUdfU0VO
U09SU19NQVg2NjIwPXkKQ09ORklHX1NFTlNPUlNfTUFYNjYyMT15CkNPTkZJR19TRU5TT1JT
X01BWDY2Mzk9eQpDT05GSUdfU0VOU09SU19NQVg2NjQyPXkKQ09ORklHX1NFTlNPUlNfTUFY
NjY1MD15CkNPTkZJR19TRU5TT1JTX01BWDY2OTc9eQpDT05GSUdfU0VOU09SU19NQVgzMTc5
MD15CkNPTkZJR19TRU5TT1JTX01DMzRWUjUwMD15CkNPTkZJR19TRU5TT1JTX01DUDMwMjE9
eQojIENPTkZJR19TRU5TT1JTX01MWFJFR19GQU4gaXMgbm90IHNldApDT05GSUdfU0VOU09S
U19UQzY1ND15CkNPTkZJR19TRU5TT1JTX1RQUzIzODYxPXkKIyBDT05GSUdfU0VOU09SU19N
RU5GMjFCTUNfSFdNT04gaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX01SNzUyMDMgaXMg
bm90IHNldAojIENPTkZJR19TRU5TT1JTX0xNNjMgaXMgbm90IHNldAojIENPTkZJR19TRU5T
T1JTX0xNNzMgaXMgbm90IHNldApDT05GSUdfU0VOU09SU19MTTc1PXkKQ09ORklHX1NFTlNP
UlNfTE03Nz15CkNPTkZJR19TRU5TT1JTX0xNNzg9eQojIENPTkZJR19TRU5TT1JTX0xNODAg
aXMgbm90IHNldApDT05GSUdfU0VOU09SU19MTTgzPXkKIyBDT05GSUdfU0VOU09SU19MTTg1
IGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfTE04Nz15CiMgQ09ORklHX1NFTlNPUlNfTE05
MCBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX0xNOTI9eQojIENPTkZJR19TRU5TT1JTX0xN
OTMgaXMgbm90IHNldApDT05GSUdfU0VOU09SU19MTTk1MjM0PXkKQ09ORklHX1NFTlNPUlNf
TE05NTI0MT15CkNPTkZJR19TRU5TT1JTX0xNOTUyNDU9eQpDT05GSUdfU0VOU09SU19QQzg3
MzYwPXkKQ09ORklHX1NFTlNPUlNfUEM4NzQyNz15CkNPTkZJR19TRU5TT1JTX05UQ19USEVS
TUlTVE9SPXkKIyBDT05GSUdfU0VOU09SU19OQ1Q2NjgzIGlzIG5vdCBzZXQKQ09ORklHX1NF
TlNPUlNfTkNUNjc3NV9DT1JFPXkKIyBDT05GSUdfU0VOU09SU19OQ1Q2Nzc1IGlzIG5vdCBz
ZXQKQ09ORklHX1NFTlNPUlNfTkNUNjc3NV9JMkM9eQpDT05GSUdfU0VOU09SU19OQ1Q3ODAy
PXkKQ09ORklHX1NFTlNPUlNfTlBDTTdYWD15CkNPTkZJR19TRU5TT1JTX09DQ19QOF9JMkM9
eQpDT05GSUdfU0VOU09SU19PQ0M9eQpDT05GSUdfU0VOU09SU19PWFA9eQpDT05GSUdfU0VO
U09SU19QQ0Y4NTkxPXkKQ09ORklHX1BNQlVTPXkKIyBDT05GSUdfU0VOU09SU19QTUJVUyBp
cyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX0FDQkVMX0ZTRzAzMj15CiMgQ09ORklHX1NFTlNP
UlNfQURNMTI2NiBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX0FETTEyNzU9eQojIENPTkZJ
R19TRU5TT1JTX0FEUDEwNTAgaXMgbm90IHNldApDT05GSUdfU0VOU09SU19CRUxfUEZFPXkK
Q09ORklHX1NFTlNPUlNfQlBBX1JTNjAwPXkKIyBDT05GSUdfU0VOU09SU19ERUxUQV9BSEU1
MERDX0ZBTiBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX0ZTUF8zWT15CiMgQ09ORklHX1NF
TlNPUlNfSUJNX0NGRlBTIGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfRFBTOTIwQUI9eQpD
T05GSUdfU0VOU09SU19JTlNQVVJfSVBTUFM9eQpDT05GSUdfU0VOU09SU19JUjM1MjIxPXkK
Q09ORklHX1NFTlNPUlNfSVIzNjAyMT15CiMgQ09ORklHX1NFTlNPUlNfSVIzODA2NCBpcyBu
b3Qgc2V0CkNPTkZJR19TRU5TT1JTX0lSUFM1NDAxPXkKQ09ORklHX1NFTlNPUlNfSVNMNjgx
Mzc9eQpDT05GSUdfU0VOU09SU19MTTI1MDY2PXkKIyBDT05GSUdfU0VOU09SU19MTTI1MDY2
X1JFR1VMQVRPUiBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfTFQ3MTgyUyBpcyBub3Qg
c2V0CkNPTkZJR19TRU5TT1JTX0xUQzI5Nzg9eQojIENPTkZJR19TRU5TT1JTX0xUQzI5Nzhf
UkVHVUxBVE9SIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19MVEMzODE1IGlzIG5vdCBz
ZXQKIyBDT05GSUdfU0VOU09SU19MVEM0Mjg2IGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNf
TUFYMTUzMDE9eQojIENPTkZJR19TRU5TT1JTX01BWDE2MDY0IGlzIG5vdCBzZXQKQ09ORklH
X1NFTlNPUlNfTUFYMTY2MDE9eQojIENPTkZJR19TRU5TT1JTX01BWDIwNzMwIGlzIG5vdCBz
ZXQKIyBDT05GSUdfU0VOU09SU19NQVgyMDc1MSBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JT
X01BWDMxNzg1PXkKQ09ORklHX1NFTlNPUlNfTUFYMzQ0NDA9eQojIENPTkZJR19TRU5TT1JT
X01BWDg2ODggaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX01QMjg1NiBpcyBub3Qgc2V0
CiMgQ09ORklHX1NFTlNPUlNfTVAyODg4IGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19N
UDI4OTEgaXMgbm90IHNldApDT05GSUdfU0VOU09SU19NUDI5NzU9eQojIENPTkZJR19TRU5T
T1JTX01QMjk5MyBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX01QMjk3NV9SRUdVTEFUT1I9
eQojIENPTkZJR19TRU5TT1JTX01QNTAyMyBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX01Q
NTkyMD15CkNPTkZJR19TRU5TT1JTX01QNTk5MD15CkNPTkZJR19TRU5TT1JTX01QOTk0MT15
CkNPTkZJR19TRU5TT1JTX01QUTc5MzJfUkVHVUxBVE9SPXkKQ09ORklHX1NFTlNPUlNfTVBR
NzkzMj15CiMgQ09ORklHX1NFTlNPUlNfTVBRODc4NSBpcyBub3Qgc2V0CiMgQ09ORklHX1NF
TlNPUlNfUElNNDMyOCBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX1BMSTEyMDlCQz15CiMg
Q09ORklHX1NFTlNPUlNfUExJMTIwOUJDX1JFR1VMQVRPUiBpcyBub3Qgc2V0CiMgQ09ORklH
X1NFTlNPUlNfUE02NzY0VFIgaXMgbm90IHNldApDT05GSUdfU0VOU09SU19QWEUxNjEwPXkK
Q09ORklHX1NFTlNPUlNfUTU0U0oxMDhBMj15CiMgQ09ORklHX1NFTlNPUlNfU1RQRERDNjAg
aXMgbm90IHNldApDT05GSUdfU0VOU09SU19UREEzODY0MD15CiMgQ09ORklHX1NFTlNPUlNf
VERBMzg2NDBfUkVHVUxBVE9SIGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfVFBTNDA0MjI9
eQpDT05GSUdfU0VOU09SU19UUFM1MzY3OT15CiMgQ09ORklHX1NFTlNPUlNfVFBTNTQ2RDI0
IGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfVUNEOTAwMD15CiMgQ09ORklHX1NFTlNPUlNf
VUNEOTIwMCBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX1hEUDcxMD15CkNPTkZJR19TRU5T
T1JTX1hEUEUxNTI9eQojIENPTkZJR19TRU5TT1JTX1hEUEUxMjIgaXMgbm90IHNldApDT05G
SUdfU0VOU09SU19aTDYxMDA9eQpDT05GSUdfU0VOU09SU19QVDUxNjFMPXkKQ09ORklHX1NF
TlNPUlNfUFdNX0ZBTj15CkNPTkZJR19TRU5TT1JTX1NCVFNJPXkKIyBDT05GSUdfU0VOU09S
U19TQlJNSSBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfU0hUMTUgaXMgbm90IHNldApD
T05GSUdfU0VOU09SU19TSFQyMT15CkNPTkZJR19TRU5TT1JTX1NIVDN4PXkKQ09ORklHX1NF
TlNPUlNfU0hUNHg9eQpDT05GSUdfU0VOU09SU19TSFRDMT15CkNPTkZJR19TRU5TT1JTX1NZ
NzYzNkE9eQpDT05GSUdfU0VOU09SU19ETUUxNzM3PXkKIyBDT05GSUdfU0VOU09SU19FTUMx
NDAzIGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfRU1DMjEwMz15CiMgQ09ORklHX1NFTlNP
UlNfRU1DMjMwNSBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX0VNQzZXMjAxPXkKIyBDT05G
SUdfU0VOU09SU19TTVNDNDdNMSBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX1NNU0M0N00x
OTI9eQojIENPTkZJR19TRU5TT1JTX1NNU0M0N0IzOTcgaXMgbm90IHNldApDT05GSUdfU0VO
U09SU19TVFRTNzUxPXkKIyBDT05GSUdfU0VOU09SU19BREMxMjhEODE4IGlzIG5vdCBzZXQK
Q09ORklHX1NFTlNPUlNfQURTNzgyOD15CiMgQ09ORklHX1NFTlNPUlNfQU1DNjgyMSBpcyBu
b3Qgc2V0CkNPTkZJR19TRU5TT1JTX0lOQTIwOT15CkNPTkZJR19TRU5TT1JTX0lOQTJYWD15
CkNPTkZJR19TRU5TT1JTX0lOQTIzOD15CiMgQ09ORklHX1NFTlNPUlNfSU5BMzIyMSBpcyBu
b3Qgc2V0CkNPTkZJR19TRU5TT1JTX1NQRDUxMTg9eQojIENPTkZJR19TRU5TT1JTX1NQRDUx
MThfREVURUNUIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19UQzc0IGlzIG5vdCBzZXQK
Q09ORklHX1NFTlNPUlNfVEhNQzUwPXkKQ09ORklHX1NFTlNPUlNfVE1QMTAyPXkKQ09ORklH
X1NFTlNPUlNfVE1QMTAzPXkKIyBDT05GSUdfU0VOU09SU19UTVAxMDggaXMgbm90IHNldAoj
IENPTkZJR19TRU5TT1JTX1RNUDQwMSBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX1RNUDQy
MT15CiMgQ09ORklHX1NFTlNPUlNfVE1QNDY0IGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNf
VE1QNTEzPXkKIyBDT05GSUdfU0VOU09SU19WSUFfQ1BVVEVNUCBpcyBub3Qgc2V0CkNPTkZJ
R19TRU5TT1JTX1ZUMTIxMT15CiMgQ09ORklHX1NFTlNPUlNfVzgzNzczRyBpcyBub3Qgc2V0
CiMgQ09ORklHX1NFTlNPUlNfVzgzNzgxRCBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX1c4
Mzc5MUQ9eQpDT05GSUdfU0VOU09SU19XODM3OTJEPXkKIyBDT05GSUdfU0VOU09SU19XODM3
OTMgaXMgbm90IHNldApDT05GSUdfU0VOU09SU19XODM3OTU9eQpDT05GSUdfU0VOU09SU19X
ODM3OTVfRkFOQ1RSTD15CiMgQ09ORklHX1NFTlNPUlNfVzgzTDc4NVRTIGlzIG5vdCBzZXQK
IyBDT05GSUdfU0VOU09SU19XODNMNzg2TkcgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JT
X1c4MzYyN0hGIGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfVzgzNjI3RUhGPXkKIyBDT05G
SUdfU0VOU09SU19XTTgzMVggaXMgbm90IHNldApDT05GSUdfU0VOU09SU19XTTgzNTA9eQpD
T05GSUdfU0VOU09SU19YR0VORT15CgojCiMgQUNQSSBkcml2ZXJzCiMKIyBDT05GSUdfU0VO
U09SU19BQ1BJX1BPV0VSIGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfQVRLMDExMD15CkNP
TkZJR19TRU5TT1JTX0FTVVNfV01JPXkKQ09ORklHX1NFTlNPUlNfQVNVU19FQz15CiMgQ09O
RklHX1NFTlNPUlNfSFBfV01JIGlzIG5vdCBzZXQKQ09ORklHX1RIRVJNQUw9eQpDT05GSUdf
VEhFUk1BTF9ORVRMSU5LPXkKIyBDT05GSUdfVEhFUk1BTF9TVEFUSVNUSUNTIGlzIG5vdCBz
ZXQKQ09ORklHX1RIRVJNQUxfRU1FUkdFTkNZX1BPV0VST0ZGX0RFTEFZX01TPTAKQ09ORklH
X1RIRVJNQUxfSFdNT049eQpDT05GSUdfVEhFUk1BTF9PRj15CkNPTkZJR19USEVSTUFMX0RF
RkFVTFRfR09WX1NURVBfV0lTRT15CiMgQ09ORklHX1RIRVJNQUxfREVGQVVMVF9HT1ZfRkFJ
Ul9TSEFSRSBpcyBub3Qgc2V0CiMgQ09ORklHX1RIRVJNQUxfREVGQVVMVF9HT1ZfVVNFUl9T
UEFDRSBpcyBub3Qgc2V0CiMgQ09ORklHX1RIRVJNQUxfREVGQVVMVF9HT1ZfQkFOR19CQU5H
IGlzIG5vdCBzZXQKIyBDT05GSUdfVEhFUk1BTF9HT1ZfRkFJUl9TSEFSRSBpcyBub3Qgc2V0
CkNPTkZJR19USEVSTUFMX0dPVl9TVEVQX1dJU0U9eQpDT05GSUdfVEhFUk1BTF9HT1ZfQkFO
R19CQU5HPXkKIyBDT05GSUdfVEhFUk1BTF9HT1ZfVVNFUl9TUEFDRSBpcyBub3Qgc2V0CkNP
TkZJR19DUFVfVEhFUk1BTD15CiMgQ09ORklHX0NQVV9JRExFX1RIRVJNQUwgaXMgbm90IHNl
dApDT05GSUdfREVWRlJFUV9USEVSTUFMPXkKQ09ORklHX1RIRVJNQUxfRU1VTEFUSU9OPXkK
Q09ORklHX1RIRVJNQUxfTU1JTz15CkNPTkZJR19EQTkwNjJfVEhFUk1BTD15CgojCiMgSW50
ZWwgdGhlcm1hbCBkcml2ZXJzCiMKIyBDT05GSUdfSU5URUxfUE9XRVJDTEFNUCBpcyBub3Qg
c2V0CkNPTkZJR19YODZfVEhFUk1BTF9WRUNUT1I9eQpDT05GSUdfSU5URUxfVENDPXkKIyBD
T05GSUdfWDg2X1BLR19URU1QX1RIRVJNQUwgaXMgbm90IHNldAoKIwojIEFDUEkgSU5UMzQw
WCB0aGVybWFsIGRyaXZlcnMKIwojIGVuZCBvZiBBQ1BJIElOVDM0MFggdGhlcm1hbCBkcml2
ZXJzCgojIENPTkZJR19JTlRFTF9CWFRfUE1JQ19USEVSTUFMIGlzIG5vdCBzZXQKQ09ORklH
X0lOVEVMX1RDQ19DT09MSU5HPXkKQ09ORklHX0lOVEVMX0hGSV9USEVSTUFMPXkKIyBlbmQg
b2YgSW50ZWwgdGhlcm1hbCBkcml2ZXJzCgpDT05GSUdfR0VORVJJQ19BRENfVEhFUk1BTD15
CiMgQ09ORklHX1dBVENIRE9HIGlzIG5vdCBzZXQKQ09ORklHX1NTQl9QT1NTSUJMRT15CkNP
TkZJR19TU0I9eQpDT05GSUdfU1NCX1NESU9IT1NUX1BPU1NJQkxFPXkKIyBDT05GSUdfU1NC
X1NESU9IT1NUIGlzIG5vdCBzZXQKQ09ORklHX1NTQl9EUklWRVJfR1BJTz15CkNPTkZJR19C
Q01BX1BPU1NJQkxFPXkKQ09ORklHX0JDTUE9eQojIENPTkZJR19CQ01BX0hPU1RfU09DIGlz
IG5vdCBzZXQKIyBDT05GSUdfQkNNQV9EUklWRVJfR01BQ19DTU4gaXMgbm90IHNldAojIENP
TkZJR19CQ01BX0RSSVZFUl9HUElPIGlzIG5vdCBzZXQKIyBDT05GSUdfQkNNQV9ERUJVRyBp
cyBub3Qgc2V0CgojCiMgTXVsdGlmdW5jdGlvbiBkZXZpY2UgZHJpdmVycwojCkNPTkZJR19N
RkRfQ09SRT15CkNPTkZJR19NRkRfQUNUODk0NUE9eQpDT05GSUdfTUZEX0FTMzcxMT15CiMg
Q09ORklHX01GRF9TTVBSTyBpcyBub3Qgc2V0CiMgQ09ORklHX01GRF9BUzM3MjIgaXMgbm90
IHNldApDT05GSUdfUE1JQ19BRFA1NTIwPXkKIyBDT05GSUdfTUZEX0FBVDI4NzBfQ09SRSBp
cyBub3Qgc2V0CkNPTkZJR19NRkRfQVRNRUxfRkxFWENPTT15CkNPTkZJR19NRkRfQVRNRUxf
SExDREM9eQpDT05GSUdfTUZEX0JDTTU5MFhYPXkKQ09ORklHX01GRF9CRDk1NzFNV1Y9eQpD
T05GSUdfTUZEX0FYUDIwWD15CkNPTkZJR19NRkRfQVhQMjBYX0kyQz15CkNPTkZJR19NRkRf
Q1JPU19FQ19ERVY9eQpDT05GSUdfTUZEX0NTNDJMNDM9eQojIENPTkZJR19NRkRfQ1M0Mkw0
M19JMkMgaXMgbm90IHNldApDT05GSUdfTUZEX0NTNDJMNDNfU0RXPXkKIyBDT05GSUdfTUZE
X01BREVSQSBpcyBub3Qgc2V0CiMgQ09ORklHX01GRF9NQVg1OTcwIGlzIG5vdCBzZXQKIyBD
T05GSUdfUE1JQ19EQTkwM1ggaXMgbm90IHNldAojIENPTkZJR19NRkRfREE5MDUyX0kyQyBp
cyBub3Qgc2V0CiMgQ09ORklHX01GRF9EQTkwNTUgaXMgbm90IHNldApDT05GSUdfTUZEX0RB
OTA2Mj15CkNPTkZJR19NRkRfREE5MDYzPXkKQ09ORklHX01GRF9EQTkxNTA9eQpDT05GSUdf
TUZEX0dBVEVXT1JLU19HU0M9eQpDT05GSUdfTUZEX01DMTNYWFg9eQpDT05GSUdfTUZEX01D
MTNYWFhfSTJDPXkKQ09ORklHX01GRF9NUDI2Mjk9eQojIENPTkZJR19NRkRfSEk2NDIxX1BN
SUMgaXMgbm90IHNldApDT05GSUdfSU5URUxfU09DX1BNSUNfQlhUV0M9eQpDT05GSUdfSU5U
RUxfU09DX1BNSUNfTVJGTEQ9eQpDT05GSUdfTUZEX0lOVEVMX0xQU1M9eQpDT05GSUdfTUZE
X0lOVEVMX0xQU1NfQUNQST15CkNPTkZJR19NRkRfSU5URUxfUE1DX0JYVD15CiMgQ09ORklH
X01GRF9JUVM2MlggaXMgbm90IHNldApDT05GSUdfTUZEX0tFTVBMRD15CkNPTkZJR19NRkRf
ODhQTTgwMD15CkNPTkZJR19NRkRfODhQTTgwNT15CiMgQ09ORklHX01GRF84OFBNODYwWCBp
cyBub3Qgc2V0CkNPTkZJR19NRkRfTUFYMTQ1Nzc9eQpDT05GSUdfTUZEX01BWDc3NTQxPXkK
IyBDT05GSUdfTUZEX01BWDc3NjIwIGlzIG5vdCBzZXQKQ09ORklHX01GRF9NQVg3NzY1MD15
CkNPTkZJR19NRkRfTUFYNzc2ODY9eQpDT05GSUdfTUZEX01BWDc3NjkzPXkKQ09ORklHX01G
RF9NQVg3NzcxND15CkNPTkZJR19NRkRfTUFYNzc4NDM9eQpDT05GSUdfTUZEX01BWDg5MDc9
eQojIENPTkZJR19NRkRfTUFYODkyNSBpcyBub3Qgc2V0CiMgQ09ORklHX01GRF9NQVg4OTk3
IGlzIG5vdCBzZXQKIyBDT05GSUdfTUZEX01BWDg5OTggaXMgbm90IHNldAojIENPTkZJR19N
RkRfTVQ2MzYwIGlzIG5vdCBzZXQKQ09ORklHX01GRF9NVDYzNzA9eQpDT05GSUdfTUZEX01U
NjM5Nz15CkNPTkZJR19NRkRfTUVORjIxQk1DPXkKQ09ORklHX01GRF9OVFhFQz15CkNPTkZJ
R19NRkRfUkVUVT15CkNPTkZJR19NRkRfUENGNTA2MzM9eQpDT05GSUdfUENGNTA2MzNfQURD
PXkKQ09ORklHX1BDRjUwNjMzX0dQSU89eQpDT05GSUdfTUZEX1NZNzYzNkE9eQpDT05GSUdf
TUZEX1JUNDgzMT15CkNPTkZJR19NRkRfUlQ1MDMzPXkKQ09ORklHX01GRF9SVDUxMjA9eQpD
T05GSUdfTUZEX1JDNVQ1ODM9eQojIENPTkZJR19NRkRfUks4WFhfSTJDIGlzIG5vdCBzZXQK
Q09ORklHX01GRF9STjVUNjE4PXkKQ09ORklHX01GRF9TRUNfQ09SRT15CkNPTkZJR19NRkRf
U0k0NzZYX0NPUkU9eQpDT05GSUdfTUZEX1NJTVBMRV9NRkRfSTJDPXkKQ09ORklHX01GRF9T
TTUwMT15CiMgQ09ORklHX01GRF9TTTUwMV9HUElPIGlzIG5vdCBzZXQKIyBDT05GSUdfTUZE
X1NLWTgxNDUyIGlzIG5vdCBzZXQKQ09ORklHX01GRF9TVE1QRT15CgojCiMgU1RNaWNyb2Vs
ZWN0cm9uaWNzIFNUTVBFIEludGVyZmFjZSBEcml2ZXJzCiMKIyBDT05GSUdfU1RNUEVfSTJD
IGlzIG5vdCBzZXQKIyBlbmQgb2YgU1RNaWNyb2VsZWN0cm9uaWNzIFNUTVBFIEludGVyZmFj
ZSBEcml2ZXJzCgpDT05GSUdfTUZEX1NZU0NPTj15CkNPTkZJR19NRkRfTFAzOTQzPXkKQ09O
RklHX01GRF9MUDg3ODg9eQpDT05GSUdfTUZEX1RJX0xNVT15CkNPTkZJR19NRkRfUEFMTUFT
PXkKQ09ORklHX1RQUzYxMDVYPXkKQ09ORklHX1RQUzY1MDEwPXkKIyBDT05GSUdfVFBTNjUw
N1ggaXMgbm90IHNldApDT05GSUdfTUZEX1RQUzY1MDg2PXkKQ09ORklHX01GRF9UUFM2NTA5
MD15CkNPTkZJR19NRkRfVFBTNjUyMTc9eQojIENPTkZJR19NRkRfVElfTFA4NzNYIGlzIG5v
dCBzZXQKQ09ORklHX01GRF9USV9MUDg3NTY1PXkKQ09ORklHX01GRF9UUFM2NTIxOD15CkNP
TkZJR19NRkRfVFBTNjUyMTk9eQpDT05GSUdfTUZEX1RQUzY1ODZYPXkKQ09ORklHX01GRF9U
UFM2NTkxMD15CkNPTkZJR19NRkRfVFBTNjU5MTI9eQpDT05GSUdfTUZEX1RQUzY1OTEyX0ky
Qz15CkNPTkZJR19NRkRfVFBTNjU5ND15CkNPTkZJR19NRkRfVFBTNjU5NF9JMkM9eQpDT05G
SUdfVFdMNDAzMF9DT1JFPXkKQ09ORklHX01GRF9UV0w0MDMwX0FVRElPPXkKIyBDT05GSUdf
VFdMNjA0MF9DT1JFIGlzIG5vdCBzZXQKQ09ORklHX01GRF9XTDEyNzNfQ09SRT15CiMgQ09O
RklHX01GRF9MTTM1MzMgaXMgbm90IHNldApDT05GSUdfTUZEX1RDMzU4OVg9eQojIENPTkZJ
R19NRkRfVFFNWDg2IGlzIG5vdCBzZXQKIyBDT05GSUdfTUZEX0xPQ0hOQUdBUiBpcyBub3Qg
c2V0CkNPTkZJR19NRkRfQVJJWk9OQT15CkNPTkZJR19NRkRfQVJJWk9OQV9JMkM9eQpDT05G
SUdfTUZEX0NTNDdMMjQ9eQpDT05GSUdfTUZEX1dNNTEwMj15CkNPTkZJR19NRkRfV001MTEw
PXkKIyBDT05GSUdfTUZEX1dNODk5NyBpcyBub3Qgc2V0CiMgQ09ORklHX01GRF9XTTg5OTgg
aXMgbm90IHNldApDT05GSUdfTUZEX1dNODQwMD15CkNPTkZJR19NRkRfV004MzFYPXkKQ09O
RklHX01GRF9XTTgzMVhfSTJDPXkKQ09ORklHX01GRF9XTTgzNTA9eQpDT05GSUdfTUZEX1dN
ODM1MF9JMkM9eQpDT05GSUdfTUZEX1dNODk5ND15CkNPTkZJR19NRkRfUk9ITV9CRDcxOFhY
PXkKQ09ORklHX01GRF9ST0hNX0JENzE4Mjg9eQpDT05GSUdfTUZEX1JPSE1fQkQ5NTdYTVVG
PXkKIyBDT05GSUdfTUZEX1NUUE1JQzEgaXMgbm90IHNldApDT05GSUdfTUZEX1NUTUZYPXkK
IyBDT05GSUdfTUZEX1dDRDkzNFggaXMgbm90IHNldAojIENPTkZJR19NRkRfQVRDMjYwWF9J
MkMgaXMgbm90IHNldApDT05GSUdfTUZEX1FDT01fUE04MDA4PXkKIyBDT05GSUdfTUZEX1JT
TVVfSTJDIGlzIG5vdCBzZXQKIyBlbmQgb2YgTXVsdGlmdW5jdGlvbiBkZXZpY2UgZHJpdmVy
cwoKQ09ORklHX1JFR1VMQVRPUj15CkNPTkZJR19SRUdVTEFUT1JfREVCVUc9eQpDT05GSUdf
UkVHVUxBVE9SX0ZJWEVEX1ZPTFRBR0U9eQojIENPTkZJR19SRUdVTEFUT1JfVklSVFVBTF9D
T05TVU1FUiBpcyBub3Qgc2V0CkNPTkZJR19SRUdVTEFUT1JfVVNFUlNQQUNFX0NPTlNVTUVS
PXkKIyBDT05GSUdfUkVHVUxBVE9SX05FVExJTktfRVZFTlRTIGlzIG5vdCBzZXQKIyBDT05G
SUdfUkVHVUxBVE9SXzg4UEc4NlggaXMgbm90IHNldApDT05GSUdfUkVHVUxBVE9SXzg4UE04
MDA9eQpDT05GSUdfUkVHVUxBVE9SX0FDVDg4NjU9eQpDT05GSUdfUkVHVUxBVE9SX0FDVDg5
NDVBPXkKIyBDT05GSUdfUkVHVUxBVE9SX0FENTM5OCBpcyBub3Qgc2V0CkNPTkZJR19SRUdV
TEFUT1JfQVMzNzExPXkKIyBDT05GSUdfUkVHVUxBVE9SX0FXMzc1MDMgaXMgbm90IHNldAoj
IENPTkZJR19SRUdVTEFUT1JfQVhQMjBYIGlzIG5vdCBzZXQKQ09ORklHX1JFR1VMQVRPUl9C
Q001OTBYWD15CkNPTkZJR19SRUdVTEFUT1JfQkQ3MTgxNT15CkNPTkZJR19SRUdVTEFUT1Jf
QkQ3MTgyOD15CiMgQ09ORklHX1JFR1VMQVRPUl9CRDcxOFhYIGlzIG5vdCBzZXQKQ09ORklH
X1JFR1VMQVRPUl9CRDk1NzFNV1Y9eQpDT05GSUdfUkVHVUxBVE9SX0JEOTU3WE1VRj15CiMg
Q09ORklHX1JFR1VMQVRPUl9DUk9TX0VDIGlzIG5vdCBzZXQKIyBDT05GSUdfUkVHVUxBVE9S
X0RBOTA2MiBpcyBub3Qgc2V0CiMgQ09ORklHX1JFR1VMQVRPUl9EQTkwNjMgaXMgbm90IHNl
dApDT05GSUdfUkVHVUxBVE9SX0RBOTEyMT15CiMgQ09ORklHX1JFR1VMQVRPUl9EQTkyMTAg
aXMgbm90IHNldApDT05GSUdfUkVHVUxBVE9SX0RBOTIxMT15CkNPTkZJR19SRUdVTEFUT1Jf
RkFONTM1NTU9eQojIENPTkZJR19SRUdVTEFUT1JfRkFONTM4ODAgaXMgbm90IHNldAojIENP
TkZJR19SRUdVTEFUT1JfR1BJTyBpcyBub3Qgc2V0CiMgQ09ORklHX1JFR1VMQVRPUl9JU0w5
MzA1IGlzIG5vdCBzZXQKQ09ORklHX1JFR1VMQVRPUl9JU0w2MjcxQT15CiMgQ09ORklHX1JF
R1VMQVRPUl9MTTM2M1ggaXMgbm90IHNldApDT05GSUdfUkVHVUxBVE9SX0xQMzk3MT15CiMg
Q09ORklHX1JFR1VMQVRPUl9MUDM5NzIgaXMgbm90IHNldAojIENPTkZJR19SRUdVTEFUT1Jf
TFA4NzJYIGlzIG5vdCBzZXQKIyBDT05GSUdfUkVHVUxBVE9SX0xQODc1NSBpcyBub3Qgc2V0
CkNPTkZJR19SRUdVTEFUT1JfTFA4NzU2NT15CkNPTkZJR19SRUdVTEFUT1JfTFA4Nzg4PXkK
Q09ORklHX1JFR1VMQVRPUl9MVEMzNTg5PXkKQ09ORklHX1JFR1VMQVRPUl9MVEMzNjc2PXkK
IyBDT05GSUdfUkVHVUxBVE9SX01BWDE0NTc3IGlzIG5vdCBzZXQKQ09ORklHX1JFR1VMQVRP
Ul9NQVgxNTg2PXkKIyBDT05GSUdfUkVHVUxBVE9SX01BWDc3NTAzIGlzIG5vdCBzZXQKQ09O
RklHX1JFR1VMQVRPUl9NQVg3NzU0MT15CkNPTkZJR19SRUdVTEFUT1JfTUFYNzc2NTA9eQpD
T05GSUdfUkVHVUxBVE9SX01BWDc3ODU3PXkKIyBDT05GSUdfUkVHVUxBVE9SX01BWDg2NDkg
aXMgbm90IHNldApDT05GSUdfUkVHVUxBVE9SX01BWDg2NjA9eQpDT05GSUdfUkVHVUxBVE9S
X01BWDg4OTM9eQpDT05GSUdfUkVHVUxBVE9SX01BWDg5MDc9eQpDT05GSUdfUkVHVUxBVE9S
X01BWDg5NTI9eQpDT05GSUdfUkVHVUxBVE9SX01BWDg5NzM9eQojIENPTkZJR19SRUdVTEFU
T1JfTUFYMjAwODYgaXMgbm90IHNldApDT05GSUdfUkVHVUxBVE9SX01BWDIwNDExPXkKQ09O
RklHX1JFR1VMQVRPUl9NQVg3NzY4Nj15CkNPTkZJR19SRUdVTEFUT1JfTUFYNzc2OTM9eQpD
T05GSUdfUkVHVUxBVE9SX01BWDc3ODAyPXkKQ09ORklHX1JFR1VMQVRPUl9NQVg3NzgyNj15
CkNPTkZJR19SRUdVTEFUT1JfTUMxM1hYWF9DT1JFPXkKQ09ORklHX1JFR1VMQVRPUl9NQzEz
NzgzPXkKIyBDT05GSUdfUkVHVUxBVE9SX01DMTM4OTIgaXMgbm90IHNldApDT05GSUdfUkVH
VUxBVE9SX01DUDE2NTAyPXkKQ09ORklHX1JFR1VMQVRPUl9NUDU0MTY9eQpDT05GSUdfUkVH
VUxBVE9SX01QODg1OT15CkNPTkZJR19SRUdVTEFUT1JfTVA4ODZYPXkKQ09ORklHX1JFR1VM
QVRPUl9NUFE3OTIwPXkKQ09ORklHX1JFR1VMQVRPUl9NVDYzMTE9eQojIENPTkZJR19SRUdV
TEFUT1JfTVQ2MzIzIGlzIG5vdCBzZXQKQ09ORklHX1JFR1VMQVRPUl9NVDYzMzE9eQpDT05G
SUdfUkVHVUxBVE9SX01UNjMzMj15CkNPTkZJR19SRUdVTEFUT1JfTVQ2MzU3PXkKQ09ORklH
X1JFR1VMQVRPUl9NVDYzNTg9eQojIENPTkZJR19SRUdVTEFUT1JfTVQ2MzU5IGlzIG5vdCBz
ZXQKQ09ORklHX1JFR1VMQVRPUl9NVDYzNzA9eQpDT05GSUdfUkVHVUxBVE9SX01UNjM5Nz15
CkNPTkZJR19SRUdVTEFUT1JfUEFMTUFTPXkKQ09ORklHX1JFR1VMQVRPUl9QQ0E5NDUwPXkK
IyBDT05GSUdfUkVHVUxBVE9SX1BDRjUwNjMzIGlzIG5vdCBzZXQKIyBDT05GSUdfUkVHVUxB
VE9SX1BGOFgwMCBpcyBub3Qgc2V0CkNPTkZJR19SRUdVTEFUT1JfUEZVWkUxMDA9eQpDT05G
SUdfUkVHVUxBVE9SX1BWODgwNjA9eQojIENPTkZJR19SRUdVTEFUT1JfUFY4ODA4MCBpcyBu
b3Qgc2V0CiMgQ09ORklHX1JFR1VMQVRPUl9QVjg4MDkwIGlzIG5vdCBzZXQKQ09ORklHX1JF
R1VMQVRPUl9QV009eQpDT05GSUdfUkVHVUxBVE9SX1FDT01fUE04MDA4PXkKQ09ORklHX1JF
R1VMQVRPUl9SQUEyMTUzMDA9eQpDT05GSUdfUkVHVUxBVE9SX1JBU1BCRVJSWVBJX1RPVUNI
U0NSRUVOX0FUVElOWT15CiMgQ09ORklHX1JFR1VMQVRPUl9SQzVUNTgzIGlzIG5vdCBzZXQK
Q09ORklHX1JFR1VMQVRPUl9STjVUNjE4PXkKQ09ORklHX1JFR1VMQVRPUl9ST0hNPXkKQ09O
RklHX1JFR1VMQVRPUl9SVDQ4MDE9eQpDT05GSUdfUkVHVUxBVE9SX1JUNDgwMz15CkNPTkZJ
R19SRUdVTEFUT1JfUlQ0ODMxPXkKQ09ORklHX1JFR1VMQVRPUl9SVDUwMzM9eQpDT05GSUdf
UkVHVUxBVE9SX1JUNTEyMD15CkNPTkZJR19SRUdVTEFUT1JfUlQ1MTkwQT15CkNPTkZJR19S
RUdVTEFUT1JfUlQ1NzM5PXkKIyBDT05GSUdfUkVHVUxBVE9SX1JUNTc1OSBpcyBub3Qgc2V0
CkNPTkZJR19SRUdVTEFUT1JfUlQ2MTYwPXkKIyBDT05GSUdfUkVHVUxBVE9SX1JUNjE5MCBp
cyBub3Qgc2V0CkNPTkZJR19SRUdVTEFUT1JfUlQ2MjQ1PXkKIyBDT05GSUdfUkVHVUxBVE9S
X1JUUTIxMzQgaXMgbm90IHNldAojIENPTkZJR19SRUdVTEFUT1JfUlRNVjIwIGlzIG5vdCBz
ZXQKIyBDT05GSUdfUkVHVUxBVE9SX1JUUTY3NTIgaXMgbm90IHNldApDT05GSUdfUkVHVUxB
VE9SX1JUUTIyMDg9eQpDT05GSUdfUkVHVUxBVE9SX1MyTVBBMDE9eQpDT05GSUdfUkVHVUxB
VE9SX1MyTVBTMTE9eQpDT05GSUdfUkVHVUxBVE9SX1M1TTg3Njc9eQpDT05GSUdfUkVHVUxB
VE9SX1NMRzUxMDAwPXkKIyBDT05GSUdfUkVHVUxBVE9SX1NZNzYzNkEgaXMgbm90IHNldApD
T05GSUdfUkVHVUxBVE9SX1NZODEwNkE9eQojIENPTkZJR19SRUdVTEFUT1JfU1k4ODI0WCBp
cyBub3Qgc2V0CiMgQ09ORklHX1JFR1VMQVRPUl9TWTg4MjdOIGlzIG5vdCBzZXQKIyBDT05G
SUdfUkVHVUxBVE9SX1RQUzUxNjMyIGlzIG5vdCBzZXQKIyBDT05GSUdfUkVHVUxBVE9SX1RQ
UzYxMDVYIGlzIG5vdCBzZXQKQ09ORklHX1JFR1VMQVRPUl9UUFM2MjM2MD15CiMgQ09ORklH
X1JFR1VMQVRPUl9UUFM2Mjg2WCBpcyBub3Qgc2V0CkNPTkZJR19SRUdVTEFUT1JfVFBTNjI4
N1g9eQpDT05GSUdfUkVHVUxBVE9SX1RQUzY1MDIzPXkKIyBDT05GSUdfUkVHVUxBVE9SX1RQ
UzY1MDdYIGlzIG5vdCBzZXQKQ09ORklHX1JFR1VMQVRPUl9UUFM2NTA4Nj15CiMgQ09ORklH
X1JFR1VMQVRPUl9UUFM2NTA5MCBpcyBub3Qgc2V0CkNPTkZJR19SRUdVTEFUT1JfVFBTNjUx
MzI9eQpDT05GSUdfUkVHVUxBVE9SX1RQUzY1MjE3PXkKQ09ORklHX1JFR1VMQVRPUl9UUFM2
NTIxOD15CkNPTkZJR19SRUdVTEFUT1JfVFBTNjUyMTk9eQpDT05GSUdfUkVHVUxBVE9SX1RQ
UzY1OTQ9eQpDT05GSUdfUkVHVUxBVE9SX1RQUzY1ODZYPXkKQ09ORklHX1JFR1VMQVRPUl9U
UFM2NTkxMD15CkNPTkZJR19SRUdVTEFUT1JfVFBTNjU5MTI9eQojIENPTkZJR19SRUdVTEFU
T1JfVFBTNjg0NzAgaXMgbm90IHNldApDT05GSUdfUkVHVUxBVE9SX1RXTDQwMzA9eQojIENP
TkZJR19SRUdVTEFUT1JfVkNUUkwgaXMgbm90IHNldApDT05GSUdfUkVHVUxBVE9SX1dNODMx
WD15CkNPTkZJR19SRUdVTEFUT1JfV004MzUwPXkKIyBDT05GSUdfUkVHVUxBVE9SX1dNODQw
MCBpcyBub3Qgc2V0CkNPTkZJR19SRUdVTEFUT1JfV004OTk0PXkKQ09ORklHX1JDX0NPUkU9
eQojIENPTkZJR19CUEZfTElSQ19NT0RFMiBpcyBub3Qgc2V0CkNPTkZJR19MSVJDPXkKQ09O
RklHX1JDX01BUD15CiMgQ09ORklHX1JDX0RFQ09ERVJTIGlzIG5vdCBzZXQKQ09ORklHX1JD
X0RFVklDRVM9eQojIENPTkZJR19JUl9FTkUgaXMgbm90IHNldApDT05GSUdfSVJfRklOVEVL
PXkKQ09ORklHX0lSX0dQSU9fQ0lSPXkKQ09ORklHX0lSX0dQSU9fVFg9eQpDT05GSUdfSVJf
SElYNUhEMj15CkNPTkZJR19JUl9JVEVfQ0lSPXkKQ09ORklHX0lSX05VVk9UT049eQpDT05G
SUdfSVJfU0VSSUFMPXkKQ09ORklHX0lSX1NFUklBTF9UUkFOU01JVFRFUj15CiMgQ09ORklH
X0lSX1dJTkJPTkRfQ0lSIGlzIG5vdCBzZXQKQ09ORklHX1JDX0xPT1BCQUNLPXkKQ09ORklH
X0NFQ19DT1JFPXkKQ09ORklHX0NFQ19OT1RJRklFUj15CgojCiMgQ0VDIHN1cHBvcnQKIwpD
T05GSUdfTUVESUFfQ0VDX1JDPXkKQ09ORklHX01FRElBX0NFQ19TVVBQT1JUPXkKQ09ORklH
X0NFQ19DSDczMjI9eQojIENPTkZJR19DRUNfQ1JPU19FQyBpcyBub3Qgc2V0CiMgZW5kIG9m
IENFQyBzdXBwb3J0CgpDT05GSUdfTUVESUFfU1VQUE9SVD15CiMgQ09ORklHX01FRElBX1NV
UFBPUlRfRklMVEVSIGlzIG5vdCBzZXQKQ09ORklHX01FRElBX1NVQkRSVl9BVVRPU0VMRUNU
PXkKCiMKIyBNZWRpYSBkZXZpY2UgdHlwZXMKIwpDT05GSUdfTUVESUFfQ0FNRVJBX1NVUFBP
UlQ9eQpDT05GSUdfTUVESUFfQU5BTE9HX1RWX1NVUFBPUlQ9eQpDT05GSUdfTUVESUFfRElH
SVRBTF9UVl9TVVBQT1JUPXkKQ09ORklHX01FRElBX1JBRElPX1NVUFBPUlQ9eQpDT05GSUdf
TUVESUFfU0RSX1NVUFBPUlQ9eQpDT05GSUdfTUVESUFfUExBVEZPUk1fU1VQUE9SVD15CkNP
TkZJR19NRURJQV9URVNUX1NVUFBPUlQ9eQojIGVuZCBvZiBNZWRpYSBkZXZpY2UgdHlwZXMK
CiMKIyBNZWRpYSBjb3JlIHN1cHBvcnQKIwojIENPTkZJR19WSURFT19ERVYgaXMgbm90IHNl
dApDT05GSUdfTUVESUFfQ09OVFJPTExFUj15CkNPTkZJR19EVkJfQ09SRT15CiMgZW5kIG9m
IE1lZGlhIGNvcmUgc3VwcG9ydAoKIwojIE1lZGlhIGNvbnRyb2xsZXIgb3B0aW9ucwojCkNP
TkZJR19NRURJQV9DT05UUk9MTEVSX0RWQj15CiMgZW5kIG9mIE1lZGlhIGNvbnRyb2xsZXIg
b3B0aW9ucwoKIwojIERpZ2l0YWwgVFYgb3B0aW9ucwojCkNPTkZJR19EVkJfTUFYX0FEQVBU
RVJTPTE2CiMgQ09ORklHX0RWQl9EWU5BTUlDX01JTk9SUyBpcyBub3Qgc2V0CiMgQ09ORklH
X0RWQl9ERU1VWF9TRUNUSU9OX0xPU1NfTE9HIGlzIG5vdCBzZXQKQ09ORklHX0RWQl9VTEVf
REVCVUc9eQojIGVuZCBvZiBEaWdpdGFsIFRWIG9wdGlvbnMKCiMKIyBNZWRpYSBkcml2ZXJz
CiMKCiMKIyBNZWRpYSBkcml2ZXJzCiMKIyBDT05GSUdfTUVESUFfUExBVEZPUk1fRFJJVkVS
UyBpcyBub3Qgc2V0CgojCiMgTU1DL1NESU8gRFZCIGFkYXB0ZXJzCiMKQ09ORklHX1NNU19T
RElPX0RSVj15CiMgQ09ORklHX0RWQl9URVNUX0RSSVZFUlMgaXMgbm90IHNldApDT05GSUdf
TUVESUFfQ09NTU9OX09QVElPTlM9eQoKIwojIGNvbW1vbiBkcml2ZXIgb3B0aW9ucwojCkNP
TkZJR19TTVNfU0lBTk9fTURUVj15CkNPTkZJR19TTVNfU0lBTk9fUkM9eQojIGVuZCBvZiBN
ZWRpYSBkcml2ZXJzCgpDT05GSUdfTUVESUFfSElERV9BTkNJTExBUllfU1VCRFJWPXkKCiMK
IyBNZWRpYSBhbmNpbGxhcnkgZHJpdmVycwojCkNPTkZJR19NRURJQV9UVU5FUj15CgojCiMg
VHVuZXIgZHJpdmVycyBhdXRvLXNlbGVjdGVkIGJ5ICdBdXRvc2VsZWN0IGFuY2lsbGFyeSBk
cml2ZXJzJwojCkNPTkZJR19NRURJQV9UVU5FUl9NQzQ0UzgwMz15CkNPTkZJR19NRURJQV9U
VU5FUl9NVDIwWFg9eQpDT05GSUdfTUVESUFfVFVORVJfU0lNUExFPXkKQ09ORklHX01FRElB
X1RVTkVSX1REQTE4MjcxPXkKQ09ORklHX01FRElBX1RVTkVSX1REQTgyN1g9eQpDT05GSUdf
TUVESUFfVFVORVJfVERBODI5MD15CkNPTkZJR19NRURJQV9UVU5FUl9UREE5ODg3PXkKQ09O
RklHX01FRElBX1RVTkVSX1RFQTU3NjE9eQpDT05GSUdfTUVESUFfVFVORVJfVEVBNTc2Nz15
CkNPTkZJR19NRURJQV9UVU5FUl9YQzIwMjg9eQpDT05GSUdfTUVESUFfVFVORVJfWEM0MDAw
PXkKQ09ORklHX01FRElBX1RVTkVSX1hDNTAwMD15CgojCiMgRFZCIEZyb250ZW5kIGRyaXZl
cnMgYXV0by1zZWxlY3RlZCBieSAnQXV0b3NlbGVjdCBhbmNpbGxhcnkgZHJpdmVycycKIwoK
IwojIE11bHRpc3RhbmRhcmQgKHNhdGVsbGl0ZSkgZnJvbnRlbmRzCiMKCiMKIyBNdWx0aXN0
YW5kYXJkIChjYWJsZSArIHRlcnJlc3RyaWFsKSBmcm9udGVuZHMKIwoKIwojIERWQi1TIChz
YXRlbGxpdGUpIGZyb250ZW5kcwojCgojCiMgRFZCLVQgKHRlcnJlc3RyaWFsKSBmcm9udGVu
ZHMKIwoKIwojIERWQi1DIChjYWJsZSkgZnJvbnRlbmRzCiMKCiMKIyBBVFNDIChOb3J0aCBB
bWVyaWNhbi9Lb3JlYW4gVGVycmVzdHJpYWwvQ2FibGUgRFRWKSBmcm9udGVuZHMKIwoKIwoj
IElTREItVCAodGVycmVzdHJpYWwpIGZyb250ZW5kcwojCgojCiMgSVNEQi1TIChzYXRlbGxp
dGUpICYgSVNEQi1UICh0ZXJyZXN0cmlhbCkgZnJvbnRlbmRzCiMKCiMKIyBEaWdpdGFsIHRl
cnJlc3RyaWFsIG9ubHkgdHVuZXJzL1BMTAojCgojCiMgU0VDIGNvbnRyb2wgZGV2aWNlcyBm
b3IgRFZCLVMKIwoKIwojIENvbW1vbiBJbnRlcmZhY2UgKEVONTAyMjEpIGNvbnRyb2xsZXIg
ZHJpdmVycwojCgojCiMgVG9vbHMgdG8gZGV2ZWxvcCBuZXcgZnJvbnRlbmRzCiMKQ09ORklH
X0RWQl9EVU1NWV9GRT15CiMgZW5kIG9mIE1lZGlhIGFuY2lsbGFyeSBkcml2ZXJzCgojCiMg
R3JhcGhpY3Mgc3VwcG9ydAojCkNPTkZJR19BUEVSVFVSRV9IRUxQRVJTPXkKQ09ORklHX1ZJ
REVPPXkKIyBDT05GSUdfQVVYRElTUExBWSBpcyBub3Qgc2V0CiMgQ09ORklHX1BBTkVMIGlz
IG5vdCBzZXQKQ09ORklHX0RSTT15CkNPTkZJR19EUk1fTUlQSV9EU0k9eQojIENPTkZJR19E
Uk1fREVCVUdfTU0gaXMgbm90IHNldApDT05GSUdfRFJNX0tVTklUX1RFU1RfSEVMUEVSUz15
CkNPTkZJR19EUk1fS1VOSVRfVEVTVD15CkNPTkZJR19EUk1fS01TX0hFTFBFUj15CiMgQ09O
RklHX0RSTV9QQU5JQyBpcyBub3Qgc2V0CiMgQ09ORklHX0RSTV9GQkRFVl9FTVVMQVRJT04g
aXMgbm90IHNldAojIENPTkZJR19EUk1fTE9BRF9FRElEX0ZJUk1XQVJFIGlzIG5vdCBzZXQK
Q09ORklHX0RSTV9ESVNQTEFZX0hFTFBFUj15CkNPTkZJR19EUk1fRElTUExBWV9EUF9BVVhf
QlVTPXkKIyBDT05GSUdfRFJNX0RJU1BMQVlfRFBfQVVYX0NFQyBpcyBub3Qgc2V0CiMgQ09O
RklHX0RSTV9ESVNQTEFZX0RQX0FVWF9DSEFSREVWIGlzIG5vdCBzZXQKQ09ORklHX0RSTV9E
SVNQTEFZX0RQX0hFTFBFUj15CkNPTkZJR19EUk1fRElTUExBWV9IRENQX0hFTFBFUj15CkNP
TkZJR19EUk1fRElTUExBWV9IRE1JX0hFTFBFUj15CkNPTkZJR19EUk1fRElTUExBWV9IRE1J
X1NUQVRFX0hFTFBFUj15CkNPTkZJR19EUk1fRVhFQz15CkNPTkZJR19EUk1fQlVERFk9eQpD
T05GSUdfRFJNX0dFTV9ETUFfSEVMUEVSPXkKQ09ORklHX0RSTV9HRU1fU0hNRU1fSEVMUEVS
PXkKCiMKIyBJMkMgZW5jb2RlciBvciBoZWxwZXIgY2hpcHMKIwojIENPTkZJR19EUk1fSTJD
X0NINzAwNiBpcyBub3Qgc2V0CiMgQ09ORklHX0RSTV9JMkNfU0lMMTY0IGlzIG5vdCBzZXQK
Q09ORklHX0RSTV9JMkNfTlhQX1REQTk5OFg9eQpDT05GSUdfRFJNX0kyQ19OWFBfVERBOTk1
MD15CiMgZW5kIG9mIEkyQyBlbmNvZGVyIG9yIGhlbHBlciBjaGlwcwoKIwojIEFSTSBkZXZp
Y2VzCiMKQ09ORklHX0RSTV9LT01FREE9eQojIGVuZCBvZiBBUk0gZGV2aWNlcwoKQ09ORklH
X0RSTV9WR0VNPXkKIyBDT05GSUdfRFJNX1ZLTVMgaXMgbm90IHNldAojIENPTkZJR19EUk1f
VklSVElPX0dQVSBpcyBub3Qgc2V0CkNPTkZJR19EUk1fUEFORUw9eQoKIwojIERpc3BsYXkg
UGFuZWxzCiMKQ09ORklHX0RSTV9QQU5FTF9BUk1fVkVSU0FUSUxFPXkKQ09ORklHX0RSTV9Q
QU5FTF9BU1VTX1owMFRfVE01UDVfTlQzNTU5Nj15CiMgQ09ORklHX0RSTV9QQU5FTF9CT0Vf
QkYwNjBZOE1fQUowIGlzIG5vdCBzZXQKQ09ORklHX0RSTV9QQU5FTF9CT0VfSElNQVg4Mjc5
RD15CiMgQ09ORklHX0RSTV9QQU5FTF9CT0VfVEgxMDFNQjMxVUlHMDAyXzI4QSBpcyBub3Qg
c2V0CkNPTkZJR19EUk1fUEFORUxfQk9FX1RWMTAxV1VNX05MNj15CkNPTkZJR19EUk1fUEFO
RUxfRUJCR19GVDg3MTk9eQpDT05GSUdfRFJNX1BBTkVMX0VMSURBX0tEMzVUMTMzPXkKIyBD
T05GSUdfRFJNX1BBTkVMX0ZFSVhJTl9LMTAxX0lNMkJBMDIgaXMgbm90IHNldApDT05GSUdf
RFJNX1BBTkVMX0ZFSVlBTkdfRlkwNzAyNERJMjZBMzBEPXkKIyBDT05GSUdfRFJNX1BBTkVM
X0RTSV9DTSBpcyBub3Qgc2V0CkNPTkZJR19EUk1fUEFORUxfTFZEUz15CkNPTkZJR19EUk1f
UEFORUxfSElNQVhfSFg4MzEwMj15CkNPTkZJR19EUk1fUEFORUxfSElNQVhfSFg4MzExMkE9
eQojIENPTkZJR19EUk1fUEFORUxfSElNQVhfSFg4Mzk0IGlzIG5vdCBzZXQKQ09ORklHX0RS
TV9QQU5FTF9JTElURUtfSUxJOTgwNT15CkNPTkZJR19EUk1fUEFORUxfSUxJVEVLX0lMSTk4
MDZFPXkKIyBDT05GSUdfRFJNX1BBTkVMX0lMSVRFS19JTEk5ODgxQyBpcyBub3Qgc2V0CkNP
TkZJR19EUk1fUEFORUxfSUxJVEVLX0lMSTk4ODJUPXkKQ09ORklHX0RSTV9QQU5FTF9JTk5P
TFVYX1AwNzlaQ0E9eQpDT05GSUdfRFJNX1BBTkVMX0pBREFSRF9KRDkzNjVEQV9IMz15CkNP
TkZJR19EUk1fUEFORUxfSkRJX0xQTTEwMkExODhBPXkKIyBDT05GSUdfRFJNX1BBTkVMX0pE
SV9MVDA3ME1FMDUwMDAgaXMgbm90IHNldAojIENPTkZJR19EUk1fUEFORUxfSkRJX1I2MzQ1
MiBpcyBub3Qgc2V0CkNPTkZJR19EUk1fUEFORUxfS0hBREFTX1RTMDUwPXkKQ09ORklHX0RS
TV9QQU5FTF9LSU5HRElTUExBWV9LRDA5N0QwND15CiMgQ09ORklHX0RSTV9QQU5FTF9MRUFE
VEVLX0xUSzA1MEgzMTQ2VyBpcyBub3Qgc2V0CkNPTkZJR19EUk1fUEFORUxfTEVBRFRFS19M
VEs1MDBIRDE4Mjk9eQpDT05GSUdfRFJNX1BBTkVMX0xJTkNPTE5URUNIX0xDRDE5Nz15CiMg
Q09ORklHX0RSTV9QQU5FTF9MR19TVzQzNDA4IGlzIG5vdCBzZXQKQ09ORklHX0RSTV9QQU5F
TF9NQU5USVhfTUxBRjA1N1dFNTE9eQpDT05GSUdfRFJNX1BBTkVMX05FV1ZJU0lPTl9OVjMw
NTFEPXkKIyBDT05GSUdfRFJNX1BBTkVMX05PVkFURUtfTlQzNTUxMCBpcyBub3Qgc2V0CkNP
TkZJR19EUk1fUEFORUxfTk9WQVRFS19OVDM1NTYwPXkKIyBDT05GSUdfRFJNX1BBTkVMX05P
VkFURUtfTlQzNTk1MCBpcyBub3Qgc2V0CkNPTkZJR19EUk1fUEFORUxfTk9WQVRFS19OVDM2
NTIzPXkKQ09ORklHX0RSTV9QQU5FTF9OT1ZBVEVLX05UMzY2NzJBPXkKQ09ORklHX0RSTV9Q
QU5FTF9OT1ZBVEVLX05UMzY2NzJFPXkKQ09ORklHX0RSTV9QQU5FTF9PTElNRVhfTENEX09M
SU5VWElOTz15CiMgQ09ORklHX0RSTV9QQU5FTF9PUklTRVRFQ0hfT1RNODAwOUEgaXMgbm90
IHNldAojIENPTkZJR19EUk1fUEFORUxfT1NEX09TRDEwMVQyNTg3XzUzVFMgaXMgbm90IHNl
dAojIENPTkZJR19EUk1fUEFORUxfUEFOQVNPTklDX1ZWWDEwRjAzNE4wMCBpcyBub3Qgc2V0
CkNPTkZJR19EUk1fUEFORUxfUkFTUEJFUlJZUElfVE9VQ0hTQ1JFRU49eQpDT05GSUdfRFJN
X1BBTkVMX1JBWURJVU1fUk02NzE5MT15CkNPTkZJR19EUk1fUEFORUxfUkFZRElVTV9STTY4
MjAwPXkKQ09ORklHX0RSTV9QQU5FTF9SQVlESVVNX1JNNjkyRTU9eQojIENPTkZJR19EUk1f
UEFORUxfUkFZRElVTV9STTY5MzgwIGlzIG5vdCBzZXQKQ09ORklHX0RSTV9QQU5FTF9ST05C
T19SQjA3MEQzMD15CkNPTkZJR19EUk1fUEFORUxfU0FNU1VOR19TNkU4OEEwX0FNUzQ1MkVG
MDE9eQpDT05GSUdfRFJNX1BBTkVMX1NBTVNVTkdfUzZFM0ZBNz15CiMgQ09ORklHX0RSTV9Q
QU5FTF9TQU1TVU5HX1M2RDE2RDAgaXMgbm90IHNldApDT05GSUdfRFJNX1BBTkVMX1NBTVNV
TkdfUzZEN0FBMD15CkNPTkZJR19EUk1fUEFORUxfU0FNU1VOR19TNkUzSEEyPXkKQ09ORklH
X0RSTV9QQU5FTF9TQU1TVU5HX1M2RTYzSjBYMDM9eQpDT05GSUdfRFJNX1BBTkVMX1NBTVNV
TkdfUzZFNjNNMD15CiMgQ09ORklHX0RSTV9QQU5FTF9TQU1TVU5HX1M2RTYzTTBfRFNJIGlz
IG5vdCBzZXQKQ09ORklHX0RSTV9QQU5FTF9TQU1TVU5HX1M2RThBQTA9eQojIENPTkZJR19E
Uk1fUEFORUxfU0FNU1VOR19TT0ZFRjAwIGlzIG5vdCBzZXQKQ09ORklHX0RSTV9QQU5FTF9T
RUlLT180M1dWRjFHPXkKQ09ORklHX0RSTV9QQU5FTF9TSEFSUF9MUTEwMVIxU1gwMT15CkNP
TkZJR19EUk1fUEFORUxfU0hBUlBfTFMwMzdWN0RXMDE9eQojIENPTkZJR19EUk1fUEFORUxf
U0hBUlBfTFMwNDNUMUxFMDEgaXMgbm90IHNldAojIENPTkZJR19EUk1fUEFORUxfU0hBUlBf
TFMwNjBUMVNYMDEgaXMgbm90IHNldAojIENPTkZJR19EUk1fUEFORUxfU0lUUk9OSVhfU1Q3
NzAxIGlzIG5vdCBzZXQKQ09ORklHX0RSTV9QQU5FTF9TSVRST05JWF9TVDc3MDM9eQojIENP
TkZJR19EUk1fUEFORUxfU09OWV9URDQzNTNfSkRJIGlzIG5vdCBzZXQKIyBDT05GSUdfRFJN
X1BBTkVMX1NPTllfVFVMSVBfVFJVTFlfTlQzNTUyMSBpcyBub3Qgc2V0CkNPTkZJR19EUk1f
UEFORUxfU1RBUlRFS19LRDA3MEZIRklEMDE1PXkKQ09ORklHX0RSTV9QQU5FTF9TWU5BUFRJ
Q1NfUjYzMzUzPXkKQ09ORklHX0RSTV9QQU5FTF9URE9fVEwwNzBXU0gzMD15CkNPTkZJR19E
Uk1fUEFORUxfVFJVTFlfTlQzNTU5N19XUVhHQT15CkNPTkZJR19EUk1fUEFORUxfVklTSU9O
T1hfUjY2NDUxPXkKQ09ORklHX0RSTV9QQU5FTF9WSVNJT05PWF9STTY5Mjk5PXkKQ09ORklH
X0RSTV9QQU5FTF9WSVNJT05PWF9WVERSNjEzMD15CkNPTkZJR19EUk1fUEFORUxfWElOUEVO
R19YUFAwNTVDMjcyPXkKIyBlbmQgb2YgRGlzcGxheSBQYW5lbHMKCkNPTkZJR19EUk1fQlJJ
REdFPXkKQ09ORklHX0RSTV9QQU5FTF9CUklER0U9eQoKIwojIERpc3BsYXkgSW50ZXJmYWNl
IEJyaWRnZXMKIwpDT05GSUdfRFJNX0NISVBPTkVfSUNONjIxMT15CiMgQ09ORklHX0RSTV9D
SFJPTlRFTF9DSDcwMzMgaXMgbm90IHNldAojIENPTkZJR19EUk1fQ1JPU19FQ19BTlg3Njg4
IGlzIG5vdCBzZXQKIyBDT05GSUdfRFJNX0RJU1BMQVlfQ09OTkVDVE9SIGlzIG5vdCBzZXQK
Q09ORklHX0RSTV9JVEVfSVQ2NTA1PXkKIyBDT05GSUdfRFJNX0xPTlRJVU1fTFQ4OTEyQiBp
cyBub3Qgc2V0CkNPTkZJR19EUk1fTE9OVElVTV9MVDkyMTE9eQojIENPTkZJR19EUk1fTE9O
VElVTV9MVDk2MTEgaXMgbm90IHNldApDT05GSUdfRFJNX0xPTlRJVU1fTFQ5NjExVVhDPXkK
IyBDT05GSUdfRFJNX0lURV9JVDY2MTIxIGlzIG5vdCBzZXQKIyBDT05GSUdfRFJNX0xWRFNf
Q09ERUMgaXMgbm90IHNldApDT05GSUdfRFJNX01FR0FDSElQU19TVERQWFhYWF9HRV9CODUw
VjNfRlc9eQpDT05GSUdfRFJNX05XTF9NSVBJX0RTST15CiMgQ09ORklHX0RSTV9OWFBfUFRO
MzQ2MCBpcyBub3Qgc2V0CkNPTkZJR19EUk1fUEFSQURFX1BTODYyMj15CiMgQ09ORklHX0RS
TV9QQVJBREVfUFM4NjQwIGlzIG5vdCBzZXQKQ09ORklHX0RSTV9TQU1TVU5HX0RTSU09eQpD
T05GSUdfRFJNX1NJTF9TSUk4NjIwPXkKQ09ORklHX0RSTV9TSUk5MDJYPXkKIyBDT05GSUdf
RFJNX1NJSTkyMzQgaXMgbm90IHNldApDT05GSUdfRFJNX1NJTVBMRV9CUklER0U9eQpDT05G
SUdfRFJNX1RISU5FX1RIQzYzTFZEMTAyND15CkNPTkZJR19EUk1fVE9TSElCQV9UQzM1ODc2
Mj15CkNPTkZJR19EUk1fVE9TSElCQV9UQzM1ODc2ND15CkNPTkZJR19EUk1fVE9TSElCQV9U
QzM1ODc2Nz15CiMgQ09ORklHX0RSTV9UT1NISUJBX1RDMzU4NzY4IGlzIG5vdCBzZXQKQ09O
RklHX0RSTV9UT1NISUJBX1RDMzU4Nzc1PXkKQ09ORklHX0RSTV9USV9ETFBDMzQzMz15CkNP
TkZJR19EUk1fVElfVEZQNDEwPXkKQ09ORklHX0RSTV9USV9TTjY1RFNJODM9eQojIENPTkZJ
R19EUk1fVElfU042NURTSTg2IGlzIG5vdCBzZXQKIyBDT05GSUdfRFJNX1RJX1RQRDEyUzAx
NSBpcyBub3Qgc2V0CiMgQ09ORklHX0RSTV9BTkFMT0dJWF9BTlg2MzQ1IGlzIG5vdCBzZXQK
IyBDT05GSUdfRFJNX0FOQUxPR0lYX0FOWDc4WFggaXMgbm90IHNldAojIENPTkZJR19EUk1f
QU5BTE9HSVhfQU5YNzYyNSBpcyBub3Qgc2V0CkNPTkZJR19EUk1fSTJDX0FEVjc1MTE9eQoj
IENPTkZJR19EUk1fSTJDX0FEVjc1MTFfQ0VDIGlzIG5vdCBzZXQKQ09ORklHX0RSTV9DRE5T
X0RTST15CkNPTkZJR19EUk1fQ0ROU19EU0lfSjcyMUU9eQojIENPTkZJR19EUk1fQ0ROU19N
SERQODU0NiBpcyBub3Qgc2V0CiMgZW5kIG9mIERpc3BsYXkgSW50ZXJmYWNlIEJyaWRnZXMK
CiMgQ09ORklHX0RSTV9FVE5BVklWIGlzIG5vdCBzZXQKQ09ORklHX0RSTV9MT0dJQ1ZDPXkK
Q09ORklHX0RSTV9BUkNQR1U9eQpDT05GSUdfRFJNX1NJTVBMRURSTT15CiMgQ09ORklHX0RS
TV9TU0QxMzBYIGlzIG5vdCBzZXQKQ09ORklHX0RSTV9MSUJfUkFORE9NPXkKQ09ORklHX0RS
TV9QUklWQUNZX1NDUkVFTj15CkNPTkZJR19EUk1fUEFORUxfT1JJRU5UQVRJT05fUVVJUktT
PXkKCiMKIyBGcmFtZSBidWZmZXIgRGV2aWNlcwojCiMgQ09ORklHX0ZCIGlzIG5vdCBzZXQK
IyBlbmQgb2YgRnJhbWUgYnVmZmVyIERldmljZXMKCiMKIyBCYWNrbGlnaHQgJiBMQ0QgZGV2
aWNlIHN1cHBvcnQKIwpDT05GSUdfTENEX0NMQVNTX0RFVklDRT15CkNPTkZJR19MQ0RfUExB
VEZPUk09eQpDT05GSUdfQkFDS0xJR0hUX0NMQVNTX0RFVklDRT15CkNPTkZJR19CQUNLTElH
SFRfS1REMjUzPXkKIyBDT05GSUdfQkFDS0xJR0hUX0tURDI4MDEgaXMgbm90IHNldApDT05G
SUdfQkFDS0xJR0hUX0tUWjg4NjY9eQpDT05GSUdfQkFDS0xJR0hUX1BXTT15CkNPTkZJR19C
QUNLTElHSFRfTVQ2MzcwPXkKIyBDT05GSUdfQkFDS0xJR0hUX0FQUExFIGlzIG5vdCBzZXQK
IyBDT05GSUdfQkFDS0xJR0hUX1FDT01fV0xFRCBpcyBub3Qgc2V0CiMgQ09ORklHX0JBQ0tM
SUdIVF9SVDQ4MzEgaXMgbm90IHNldAojIENPTkZJR19CQUNLTElHSFRfU0FIQVJBIGlzIG5v
dCBzZXQKIyBDT05GSUdfQkFDS0xJR0hUX1dNODMxWCBpcyBub3Qgc2V0CkNPTkZJR19CQUNL
TElHSFRfQURQNTUyMD15CkNPTkZJR19CQUNLTElHSFRfQURQODg2MD15CiMgQ09ORklHX0JB
Q0tMSUdIVF9BRFA4ODcwIGlzIG5vdCBzZXQKIyBDT05GSUdfQkFDS0xJR0hUX1BDRjUwNjMz
IGlzIG5vdCBzZXQKQ09ORklHX0JBQ0tMSUdIVF9MTTM1MDk9eQpDT05GSUdfQkFDS0xJR0hU
X0xNMzYzMEE9eQpDT05GSUdfQkFDS0xJR0hUX0xNMzYzOT15CiMgQ09ORklHX0JBQ0tMSUdI
VF9MUDg1NVggaXMgbm90IHNldApDT05GSUdfQkFDS0xJR0hUX0xQODc4OD15CiMgQ09ORklH
X0JBQ0tMSUdIVF9NUDMzMDlDIGlzIG5vdCBzZXQKQ09ORklHX0JBQ0tMSUdIVF9QQU5ET1JB
PXkKIyBDT05GSUdfQkFDS0xJR0hUX1RQUzY1MjE3IGlzIG5vdCBzZXQKIyBDT05GSUdfQkFD
S0xJR0hUX0FTMzcxMSBpcyBub3Qgc2V0CkNPTkZJR19CQUNLTElHSFRfR1BJTz15CiMgQ09O
RklHX0JBQ0tMSUdIVF9MVjUyMDdMUCBpcyBub3Qgc2V0CkNPTkZJR19CQUNLTElHSFRfQkQ2
MTA3PXkKIyBDT05GSUdfQkFDS0xJR0hUX0FSQ1hDTk4gaXMgbm90IHNldApDT05GSUdfQkFD
S0xJR0hUX0xFRD15CiMgZW5kIG9mIEJhY2tsaWdodCAmIExDRCBkZXZpY2Ugc3VwcG9ydAoK
Q09ORklHX1ZJREVPTU9ERV9IRUxQRVJTPXkKQ09ORklHX0hETUk9eQoKIwojIENvbnNvbGUg
ZGlzcGxheSBkcml2ZXIgc3VwcG9ydAojCkNPTkZJR19WR0FfQ09OU09MRT15CiMgQ09ORklH
X01EQV9DT05TT0xFIGlzIG5vdCBzZXQKQ09ORklHX0RVTU1ZX0NPTlNPTEU9eQpDT05GSUdf
RFVNTVlfQ09OU09MRV9DT0xVTU5TPTgwCkNPTkZJR19EVU1NWV9DT05TT0xFX1JPV1M9MjUK
IyBlbmQgb2YgQ29uc29sZSBkaXNwbGF5IGRyaXZlciBzdXBwb3J0CiMgZW5kIG9mIEdyYXBo
aWNzIHN1cHBvcnQKCkNPTkZJR19EUk1fQUNDRUw9eQojIENPTkZJR19TT1VORCBpcyBub3Qg
c2V0CkNPTkZJR19ISURfU1VQUE9SVD15CkNPTkZJR19ISUQ9eQpDT05GSUdfSElEX0JBVFRF
UllfU1RSRU5HVEg9eQpDT05GSUdfSElEUkFXPXkKQ09ORklHX1VISUQ9eQpDT05GSUdfSElE
X0dFTkVSSUM9eQoKIwojIFNwZWNpYWwgSElEIGRyaXZlcnMKIwpDT05GSUdfSElEX0E0VEVD
SD15CkNPTkZJR19ISURfQUNSVVg9eQpDT05GSUdfSElEX0FDUlVYX0ZGPXkKQ09ORklHX0hJ
RF9BUFBMRT15CkNPTkZJR19ISURfQVVSRUFMPXkKIyBDT05GSUdfSElEX0JFTEtJTiBpcyBu
b3Qgc2V0CiMgQ09ORklHX0hJRF9DSEVSUlkgaXMgbm90IHNldApDT05GSUdfSElEX0NPVUdB
Uj15CkNPTkZJR19ISURfTUFDQUxMWT15CkNPTkZJR19ISURfQ01FRElBPXkKQ09ORklHX0hJ
RF9DWVBSRVNTPXkKQ09ORklHX0hJRF9EUkFHT05SSVNFPXkKQ09ORklHX0RSQUdPTlJJU0Vf
RkY9eQojIENPTkZJR19ISURfRU1TX0ZGIGlzIG5vdCBzZXQKQ09ORklHX0hJRF9FTEVDT009
eQojIENPTkZJR19ISURfRVZJU0lPTiBpcyBub3Qgc2V0CkNPTkZJR19ISURfRVpLRVk9eQpD
T05GSUdfSElEX0dFTUJJUkQ9eQpDT05GSUdfSElEX0dGUk09eQpDT05GSUdfSElEX0dMT1JJ
T1VTPXkKQ09ORklHX0hJRF9WSVZBTERJX0NPTU1PTj15CkNPTkZJR19ISURfR09PR0xFX1NU
QURJQV9GRj15CkNPTkZJR19ISURfVklWQUxEST15CkNPTkZJR19ISURfS0VZVE9VQ0g9eQoj
IENPTkZJR19ISURfS1lFIGlzIG5vdCBzZXQKQ09ORklHX0hJRF9XQUxUT1A9eQojIENPTkZJ
R19ISURfVklFV1NPTklDIGlzIG5vdCBzZXQKIyBDT05GSUdfSElEX1ZSQzIgaXMgbm90IHNl
dApDT05GSUdfSElEX1hJQU9NST15CkNPTkZJR19ISURfR1lSQVRJT049eQpDT05GSUdfSElE
X0lDQURFPXkKQ09ORklHX0hJRF9JVEU9eQpDT05GSUdfSElEX0pBQlJBPXkKQ09ORklHX0hJ
RF9UV0lOSEFOPXkKIyBDT05GSUdfSElEX0tFTlNJTkdUT04gaXMgbm90IHNldAojIENPTkZJ
R19ISURfTENQT1dFUiBpcyBub3Qgc2V0CkNPTkZJR19ISURfTEVEPXkKQ09ORklHX0hJRF9M
RU5PVk89eQpDT05GSUdfSElEX01BR0lDTU9VU0U9eQpDT05GSUdfSElEX01BTFRST049eQpD
T05GSUdfSElEX01BWUZMQVNIPXkKIyBDT05GSUdfSElEX1JFRFJBR09OIGlzIG5vdCBzZXQK
Q09ORklHX0hJRF9NSUNST1NPRlQ9eQpDT05GSUdfSElEX01PTlRFUkVZPXkKQ09ORklHX0hJ
RF9NVUxUSVRPVUNIPXkKIyBDT05GSUdfSElEX05JTlRFTkRPIGlzIG5vdCBzZXQKIyBDT05G
SUdfSElEX05USSBpcyBub3Qgc2V0CkNPTkZJR19ISURfT1JURUs9eQojIENPTkZJR19ISURf
UEFOVEhFUkxPUkQgaXMgbm90IHNldApDT05GSUdfSElEX1BFVEFMWU5YPXkKQ09ORklHX0hJ
RF9QSUNPTENEPXkKQ09ORklHX0hJRF9QSUNPTENEX0JBQ0tMSUdIVD15CkNPTkZJR19ISURf
UElDT0xDRF9MQ0Q9eQpDT05GSUdfSElEX1BJQ09MQ0RfTEVEUz15CkNPTkZJR19ISURfUElD
T0xDRF9DSVI9eQojIENPTkZJR19ISURfUExBTlRST05JQ1MgaXMgbm90IHNldAojIENPTkZJ
R19ISURfUExBWVNUQVRJT04gaXMgbm90IHNldApDT05GSUdfSElEX1BYUkM9eQojIENPTkZJ
R19ISURfUkFaRVIgaXMgbm90IHNldApDT05GSUdfSElEX1BSSU1BWD15CiMgQ09ORklHX0hJ
RF9TQUlURUsgaXMgbm90IHNldApDT05GSUdfSElEX1NFTUlURUs9eQpDT05GSUdfSElEX1NQ
RUVETElOSz15CiMgQ09ORklHX0hJRF9TVEVBTSBpcyBub3Qgc2V0CkNPTkZJR19ISURfU1VO
UExVUz15CkNPTkZJR19ISURfUk1JPXkKIyBDT05GSUdfSElEX0dSRUVOQVNJQSBpcyBub3Qg
c2V0CkNPTkZJR19ISURfU01BUlRKT1lQTFVTPXkKIyBDT05GSUdfU01BUlRKT1lQTFVTX0ZG
IGlzIG5vdCBzZXQKQ09ORklHX0hJRF9USVZPPXkKIyBDT05GSUdfSElEX1RPUFNFRUQgaXMg
bm90IHNldAojIENPTkZJR19ISURfVE9QUkUgaXMgbm90IHNldAojIENPTkZJR19ISURfVEhJ
TkdNIGlzIG5vdCBzZXQKQ09ORklHX0hJRF9VRFJBV19QUzM9eQpDT05GSUdfSElEX1dJSU1P
VEU9eQojIENPTkZJR19ISURfWElOTU8gaXMgbm90IHNldApDT05GSUdfSElEX1pFUk9QTFVT
PXkKIyBDT05GSUdfWkVST1BMVVNfRkYgaXMgbm90IHNldApDT05GSUdfSElEX1pZREFDUk9O
PXkKIyBDT05GSUdfSElEX1NFTlNPUl9IVUIgaXMgbm90IHNldApDT05GSUdfSElEX0FMUFM9
eQojIGVuZCBvZiBTcGVjaWFsIEhJRCBkcml2ZXJzCgojCiMgSElELUJQRiBzdXBwb3J0CiMK
IyBlbmQgb2YgSElELUJQRiBzdXBwb3J0CgpDT05GSUdfSTJDX0hJRD15CkNPTkZJR19JMkNf
SElEX0FDUEk9eQojIENPTkZJR19JMkNfSElEX09GIGlzIG5vdCBzZXQKIyBDT05GSUdfSTJD
X0hJRF9PRl9FTEFOIGlzIG5vdCBzZXQKQ09ORklHX0kyQ19ISURfT0ZfR09PRElYPXkKQ09O
RklHX0kyQ19ISURfQ09SRT15CkNPTkZJR19VU0JfT0hDSV9MSVRUTEVfRU5ESUFOPXkKIyBD
T05GSUdfVVNCX1NVUFBPUlQgaXMgbm90IHNldApDT05GSUdfTU1DPXkKIyBDT05GSUdfUFdS
U0VRX0VNTUMgaXMgbm90IHNldAojIENPTkZJR19QV1JTRVFfU0lNUExFIGlzIG5vdCBzZXQK
Q09ORklHX01NQ19CTE9DSz15CkNPTkZJR19NTUNfQkxPQ0tfTUlOT1JTPTgKQ09ORklHX1NE
SU9fVUFSVD15CkNPTkZJR19NTUNfVEVTVD15CiMgQ09ORklHX01NQ19DUllQVE8gaXMgbm90
IHNldAoKIwojIE1NQy9TRC9TRElPIEhvc3QgQ29udHJvbGxlciBEcml2ZXJzCiMKIyBDT05G
SUdfTU1DX0RFQlVHIGlzIG5vdCBzZXQKIyBDT05GSUdfTU1DX1NESENJIGlzIG5vdCBzZXQK
Q09ORklHX01NQ19XQlNEPXkKQ09ORklHX01NQ19VU0RISTZST0wwPXkKQ09ORklHX01NQ19D
UUhDST15CkNPTkZJR19NTUNfSFNRPXkKQ09ORklHX01NQ19NVEs9eQpDT05GSUdfTU1DX0xJ
VEVYPXkKIyBDT05GSUdfU0NTSV9VRlNIQ0QgaXMgbm90IHNldApDT05GSUdfTUVNU1RJQ0s9
eQojIENPTkZJR19NRU1TVElDS19ERUJVRyBpcyBub3Qgc2V0CgojCiMgTWVtb3J5U3RpY2sg
ZHJpdmVycwojCiMgQ09ORklHX01FTVNUSUNLX1VOU0FGRV9SRVNVTUUgaXMgbm90IHNldAoj
IENPTkZJR19NU1BST19CTE9DSyBpcyBub3Qgc2V0CkNPTkZJR19NU19CTE9DSz15CgojCiMg
TWVtb3J5U3RpY2sgSG9zdCBDb250cm9sbGVyIERyaXZlcnMKIwpDT05GSUdfTkVXX0xFRFM9
eQpDT05GSUdfTEVEU19DTEFTUz15CiMgQ09ORklHX0xFRFNfQ0xBU1NfRkxBU0ggaXMgbm90
IHNldApDT05GSUdfTEVEU19DTEFTU19NVUxUSUNPTE9SPXkKIyBDT05GSUdfTEVEU19CUklH
SFRORVNTX0hXX0NIQU5HRUQgaXMgbm90IHNldAoKIwojIExFRCBkcml2ZXJzCiMKQ09ORklH
X0xFRFNfQU4zMDI1OUE9eQojIENPTkZJR19MRURTX0FQVSBpcyBub3Qgc2V0CkNPTkZJR19M
RURTX0FXMjAwWFg9eQpDT05GSUdfTEVEU19BVzIwMTM9eQpDT05GSUdfTEVEU19CQ002MzI4
PXkKQ09ORklHX0xFRFNfQkNNNjM1OD15CkNPTkZJR19MRURTX0NST1NfRUM9eQpDT05GSUdf
TEVEU19MTTM1MzA9eQpDT05GSUdfTEVEU19MTTM1MzI9eQpDT05GSUdfTEVEU19MTTM2NDI9
eQojIENPTkZJR19MRURTX0xNMzY5MlggaXMgbm90IHNldApDT05GSUdfTEVEU19NVDYzMjM9
eQpDT05GSUdfTEVEU19QQ0E5NTMyPXkKQ09ORklHX0xFRFNfUENBOTUzMl9HUElPPXkKQ09O
RklHX0xFRFNfR1BJTz15CkNPTkZJR19MRURTX0xQMzk0ND15CkNPTkZJR19MRURTX0xQMzk1
Mj15CkNPTkZJR19MRURTX0xQNTBYWD15CkNPTkZJR19MRURTX0xQNTVYWF9DT01NT049eQpD
T05GSUdfTEVEU19MUDU1MjE9eQpDT05GSUdfTEVEU19MUDU1MjM9eQojIENPTkZJR19MRURT
X0xQNTU2MiBpcyBub3Qgc2V0CiMgQ09ORklHX0xFRFNfTFA1NTY5IGlzIG5vdCBzZXQKQ09O
RklHX0xFRFNfTFA4NTAxPXkKIyBDT05GSUdfTEVEU19MUDg3ODggaXMgbm90IHNldApDT05G
SUdfTEVEU19MUDg4NjA9eQpDT05GSUdfTEVEU19QQ0E5NTVYPXkKQ09ORklHX0xFRFNfUENB
OTU1WF9HUElPPXkKIyBDT05GSUdfTEVEU19QQ0E5NjNYIGlzIG5vdCBzZXQKIyBDT05GSUdf
TEVEU19QQ0E5OTVYIGlzIG5vdCBzZXQKIyBDT05GSUdfTEVEU19XTTgzMVhfU1RBVFVTIGlz
IG5vdCBzZXQKQ09ORklHX0xFRFNfV004MzUwPXkKQ09ORklHX0xFRFNfUFdNPXkKQ09ORklH
X0xFRFNfUkVHVUxBVE9SPXkKIyBDT05GSUdfTEVEU19CRDI2MDZNVlYgaXMgbm90IHNldAoj
IENPTkZJR19MRURTX0JEMjgwMiBpcyBub3Qgc2V0CiMgQ09ORklHX0xFRFNfTFQzNTkzIGlz
IG5vdCBzZXQKQ09ORklHX0xFRFNfQURQNTUyMD15CkNPTkZJR19MRURTX01DMTM3ODM9eQpD
T05GSUdfTEVEU19UQ0E2NTA3PXkKIyBDT05GSUdfTEVEU19UTEM1OTFYWCBpcyBub3Qgc2V0
CkNPTkZJR19MRURTX01BWDc3NjUwPXkKQ09ORklHX0xFRFNfTE0zNTV4PXkKIyBDT05GSUdf
TEVEU19PVDIwMCBpcyBub3Qgc2V0CkNPTkZJR19MRURTX01FTkYyMUJNQz15CiMgQ09ORklH
X0xFRFNfSVMzMUZMMzE5WCBpcyBub3Qgc2V0CkNPTkZJR19MRURTX0lTMzFGTDMyWFg9eQoK
IwojIExFRCBkcml2ZXIgZm9yIGJsaW5rKDEpIFVTQiBSR0IgTEVEIGlzIHVuZGVyIFNwZWNp
YWwgSElEIGRyaXZlcnMgKEhJRF9USElOR00pCiMKQ09ORklHX0xFRFNfQkxJTktNPXkKQ09O
RklHX0xFRFNfU1lTQ09OPXkKIyBDT05GSUdfTEVEU19NTFhDUExEIGlzIG5vdCBzZXQKQ09O
RklHX0xFRFNfTUxYUkVHPXkKIyBDT05GSUdfTEVEU19VU0VSIGlzIG5vdCBzZXQKIyBDT05G
SUdfTEVEU19OSUM3OEJYIGlzIG5vdCBzZXQKIyBDT05GSUdfTEVEU19MTTM2OTcgaXMgbm90
IHNldAojIENPTkZJR19MRURTX0xNMzYyNzQgaXMgbm90IHNldApDT05GSUdfTEVEU19UUFM2
MTA1WD15CiMgQ09ORklHX0xFRFNfTEdNIGlzIG5vdCBzZXQKCiMKIyBGbGFzaCBhbmQgVG9y
Y2ggTEVEIGRyaXZlcnMKIwoKIwojIFJHQiBMRUQgZHJpdmVycwojCiMgQ09ORklHX0xFRFNf
R1JPVVBfTVVMVElDT0xPUiBpcyBub3Qgc2V0CkNPTkZJR19MRURTX0tURDIwMlg9eQojIENP
TkZJR19MRURTX05DUDU2MjMgaXMgbm90IHNldApDT05GSUdfTEVEU19QV01fTVVMVElDT0xP
Uj15CiMgQ09ORklHX0xFRFNfTVQ2MzcwX1JHQiBpcyBub3Qgc2V0CgojCiMgTEVEIFRyaWdn
ZXJzCiMKQ09ORklHX0xFRFNfVFJJR0dFUlM9eQpDT05GSUdfTEVEU19UUklHR0VSX1RJTUVS
PXkKQ09ORklHX0xFRFNfVFJJR0dFUl9PTkVTSE9UPXkKIyBDT05GSUdfTEVEU19UUklHR0VS
X0RJU0sgaXMgbm90IHNldAojIENPTkZJR19MRURTX1RSSUdHRVJfTVREIGlzIG5vdCBzZXQK
IyBDT05GSUdfTEVEU19UUklHR0VSX0hFQVJUQkVBVCBpcyBub3Qgc2V0CiMgQ09ORklHX0xF
RFNfVFJJR0dFUl9CQUNLTElHSFQgaXMgbm90IHNldApDT05GSUdfTEVEU19UUklHR0VSX0NQ
VT15CkNPTkZJR19MRURTX1RSSUdHRVJfQUNUSVZJVFk9eQpDT05GSUdfTEVEU19UUklHR0VS
X0dQSU89eQpDT05GSUdfTEVEU19UUklHR0VSX0RFRkFVTFRfT049eQoKIwojIGlwdGFibGVz
IHRyaWdnZXIgaXMgdW5kZXIgTmV0ZmlsdGVyIGNvbmZpZyAoTEVEIHRhcmdldCkKIwpDT05G
SUdfTEVEU19UUklHR0VSX1RSQU5TSUVOVD15CkNPTkZJR19MRURTX1RSSUdHRVJfQ0FNRVJB
PXkKQ09ORklHX0xFRFNfVFJJR0dFUl9QQU5JQz15CkNPTkZJR19MRURTX1RSSUdHRVJfTkVU
REVWPXkKIyBDT05GSUdfTEVEU19UUklHR0VSX1BBVFRFUk4gaXMgbm90IHNldApDT05GSUdf
TEVEU19UUklHR0VSX1RUWT15CkNPTkZJR19MRURTX1RSSUdHRVJfSU5QVVRfRVZFTlRTPXkK
CiMKIyBTaW1wbGUgTEVEIGRyaXZlcnMKIwpDT05GSUdfTEVEU19TSUVNRU5TX1NJTUFUSUNf
SVBDPXkKIyBDT05GSUdfTEVEU19TSUVNRU5TX1NJTUFUSUNfSVBDX0FQT0xMT0xBS0UgaXMg
bm90IHNldApDT05GSUdfTEVEU19TSUVNRU5TX1NJTUFUSUNfSVBDX0Y3MTg4WD15CkNPTkZJ
R19BQ0NFU1NJQklMSVRZPXkKQ09ORklHX0ExMVlfQlJBSUxMRV9DT05TT0xFPXkKCiMKIyBT
cGVha3VwIGNvbnNvbGUgc3BlZWNoCiMKIyBDT05GSUdfU1BFQUtVUCBpcyBub3Qgc2V0CiMg
ZW5kIG9mIFNwZWFrdXAgY29uc29sZSBzcGVlY2gKCkNPTkZJR19FREFDX0FUT01JQ19TQ1JV
Qj15CkNPTkZJR19FREFDX1NVUFBPUlQ9eQpDT05GSUdfUlRDX0xJQj15CkNPTkZJR19SVENf
TUMxNDY4MThfTElCPXkKQ09ORklHX1JUQ19DTEFTUz15CkNPTkZJR19SVENfSENUT1NZUz15
CkNPTkZJR19SVENfSENUT1NZU19ERVZJQ0U9InJ0YzAiCiMgQ09ORklHX1JUQ19TWVNUT0hD
IGlzIG5vdCBzZXQKIyBDT05GSUdfUlRDX0RFQlVHIGlzIG5vdCBzZXQKQ09ORklHX1JUQ19M
SUJfS1VOSVRfVEVTVD15CiMgQ09ORklHX1JUQ19OVk1FTSBpcyBub3Qgc2V0CgojCiMgUlRD
IGludGVyZmFjZXMKIwpDT05GSUdfUlRDX0lOVEZfU1lTRlM9eQpDT05GSUdfUlRDX0lOVEZf
UFJPQz15CiMgQ09ORklHX1JUQ19JTlRGX0RFViBpcyBub3Qgc2V0CkNPTkZJR19SVENfRFJW
X1RFU1Q9eQoKIwojIEkyQyBSVEMgZHJpdmVycwojCiMgQ09ORklHX1JUQ19EUlZfODhQTTgw
WCBpcyBub3Qgc2V0CkNPTkZJR19SVENfRFJWX0FCQjVaRVMzPXkKQ09ORklHX1JUQ19EUlZf
QUJFT1o5PXkKQ09ORklHX1JUQ19EUlZfQUJYODBYPXkKIyBDT05GSUdfUlRDX0RSVl9EUzEz
MDcgaXMgbm90IHNldAojIENPTkZJR19SVENfRFJWX0RTMTM3NCBpcyBub3Qgc2V0CiMgQ09O
RklHX1JUQ19EUlZfRFMxNjcyIGlzIG5vdCBzZXQKIyBDT05GSUdfUlRDX0RSVl9IWU04NTYz
IGlzIG5vdCBzZXQKQ09ORklHX1JUQ19EUlZfTFA4Nzg4PXkKIyBDT05GSUdfUlRDX0RSVl9N
QVg2OTAwIGlzIG5vdCBzZXQKQ09ORklHX1JUQ19EUlZfTUFYODkwNz15CkNPTkZJR19SVENf
RFJWX01BWDMxMzM1PXkKQ09ORklHX1JUQ19EUlZfTUFYNzc2ODY9eQpDT05GSUdfUlRDX0RS
Vl9OQ1QzMDE4WT15CkNPTkZJR19SVENfRFJWX1JTNUMzNzI9eQpDT05GSUdfUlRDX0RSVl9J
U0wxMjA4PXkKQ09ORklHX1JUQ19EUlZfSVNMMTIwMjI9eQpDT05GSUdfUlRDX0RSVl9JU0wx
MjAyNj15CiMgQ09ORklHX1JUQ19EUlZfWDEyMDUgaXMgbm90IHNldApDT05GSUdfUlRDX0RS
Vl9QQ0Y4NTIzPXkKQ09ORklHX1JUQ19EUlZfUENGODUwNjM9eQojIENPTkZJR19SVENfRFJW
X1BDRjg1MzYzIGlzIG5vdCBzZXQKQ09ORklHX1JUQ19EUlZfUENGODU2Mz15CiMgQ09ORklH
X1JUQ19EUlZfUENGODU4MyBpcyBub3Qgc2V0CiMgQ09ORklHX1JUQ19EUlZfTTQxVDgwIGlz
IG5vdCBzZXQKQ09ORklHX1JUQ19EUlZfQkQ3MDUyOD15CkNPTkZJR19SVENfRFJWX0JRMzJL
PXkKQ09ORklHX1JUQ19EUlZfVFdMNDAzMD15CiMgQ09ORklHX1JUQ19EUlZfUEFMTUFTIGlz
IG5vdCBzZXQKIyBDT05GSUdfUlRDX0RSVl9UUFM2NTg2WCBpcyBub3Qgc2V0CkNPTkZJR19S
VENfRFJWX1RQUzY1OTQ9eQpDT05GSUdfUlRDX0RSVl9UUFM2NTkxMD15CkNPTkZJR19SVENf
RFJWX1JDNVQ1ODM9eQpDT05GSUdfUlRDX0RSVl9SQzVUNjE5PXkKIyBDT05GSUdfUlRDX0RS
Vl9TMzUzOTBBIGlzIG5vdCBzZXQKIyBDT05GSUdfUlRDX0RSVl9GTTMxMzAgaXMgbm90IHNl
dApDT05GSUdfUlRDX0RSVl9SWDgwMTA9eQpDT05GSUdfUlRDX0RSVl9SWDgxMTE9eQpDT05G
SUdfUlRDX0RSVl9SWDg1ODE9eQpDT05GSUdfUlRDX0RSVl9SWDgwMjU9eQpDT05GSUdfUlRD
X0RSVl9FTTMwMjc9eQpDT05GSUdfUlRDX0RSVl9SVjMwMjg9eQpDT05GSUdfUlRDX0RSVl9S
VjMwMzI9eQojIENPTkZJR19SVENfRFJWX1JWODgwMyBpcyBub3Qgc2V0CkNPTkZJR19SVENf
RFJWX1M1TT15CkNPTkZJR19SVENfRFJWX1NEMzA3OD15CgojCiMgU1BJIFJUQyBkcml2ZXJz
CiMKQ09ORklHX1JUQ19JMkNfQU5EX1NQST15CgojCiMgU1BJIGFuZCBJMkMgUlRDIGRyaXZl
cnMKIwpDT05GSUdfUlRDX0RSVl9EUzMyMzI9eQojIENPTkZJR19SVENfRFJWX0RTMzIzMl9I
V01PTiBpcyBub3Qgc2V0CiMgQ09ORklHX1JUQ19EUlZfUENGMjEyNyBpcyBub3Qgc2V0CkNP
TkZJR19SVENfRFJWX1JWMzAyOUMyPXkKIyBDT05GSUdfUlRDX0RSVl9SVjMwMjlfSFdNT04g
aXMgbm90IHNldApDT05GSUdfUlRDX0RSVl9SWDYxMTA9eQoKIwojIFBsYXRmb3JtIFJUQyBk
cml2ZXJzCiMKQ09ORklHX1JUQ19EUlZfQ01PUz15CkNPTkZJR19SVENfRFJWX0RTMTI4Nj15
CkNPTkZJR19SVENfRFJWX0RTMTUxMT15CkNPTkZJR19SVENfRFJWX0RTMTU1Mz15CkNPTkZJ
R19SVENfRFJWX0RTMTY4NV9GQU1JTFk9eQpDT05GSUdfUlRDX0RSVl9EUzE2ODU9eQojIENP
TkZJR19SVENfRFJWX0RTMTY4OSBpcyBub3Qgc2V0CiMgQ09ORklHX1JUQ19EUlZfRFMxNzI4
NSBpcyBub3Qgc2V0CiMgQ09ORklHX1JUQ19EUlZfRFMxNzQ4NSBpcyBub3Qgc2V0CiMgQ09O
RklHX1JUQ19EUlZfRFMxNzg4NSBpcyBub3Qgc2V0CkNPTkZJR19SVENfRFJWX0RTMTc0Mj15
CiMgQ09ORklHX1JUQ19EUlZfRFMyNDA0IGlzIG5vdCBzZXQKQ09ORklHX1JUQ19EUlZfREE5
MDYzPXkKQ09ORklHX1JUQ19EUlZfU1RLMTdUQTg9eQpDT05GSUdfUlRDX0RSVl9NNDhUODY9
eQpDT05GSUdfUlRDX0RSVl9NNDhUMzU9eQpDT05GSUdfUlRDX0RSVl9NNDhUNTk9eQojIENP
TkZJR19SVENfRFJWX01TTTYyNDIgaXMgbm90IHNldApDT05GSUdfUlRDX0RSVl9SUDVDMDE9
eQpDT05GSUdfUlRDX0RSVl9XTTgzMVg9eQojIENPTkZJR19SVENfRFJWX1dNODM1MCBpcyBu
b3Qgc2V0CkNPTkZJR19SVENfRFJWX1BDRjUwNjMzPXkKIyBDT05GSUdfUlRDX0RSVl9aWU5R
TVAgaXMgbm90IHNldAojIENPTkZJR19SVENfRFJWX0NST1NfRUMgaXMgbm90IHNldAojIENP
TkZJR19SVENfRFJWX05UWEVDIGlzIG5vdCBzZXQKCiMKIyBvbi1DUFUgUlRDIGRyaXZlcnMK
IwpDT05GSUdfUlRDX0RSVl9DQURFTkNFPXkKIyBDT05GSUdfUlRDX0RSVl9GVFJUQzAxMCBp
cyBub3Qgc2V0CkNPTkZJR19SVENfRFJWX01DMTNYWFg9eQpDT05GSUdfUlRDX0RSVl9NVDYz
OTc9eQojIENPTkZJR19SVENfRFJWX1I3MzAxIGlzIG5vdCBzZXQKCiMKIyBISUQgU2Vuc29y
IFJUQyBkcml2ZXJzCiMKIyBDT05GSUdfUlRDX0RSVl9HT0xERklTSCBpcyBub3Qgc2V0CiMg
Q09ORklHX1JUQ19EUlZfV0lMQ09fRUMgaXMgbm90IHNldAojIENPTkZJR19ETUFERVZJQ0VT
IGlzIG5vdCBzZXQKCiMKIyBETUFCVUYgb3B0aW9ucwojCkNPTkZJR19TWU5DX0ZJTEU9eQoj
IENPTkZJR19VRE1BQlVGIGlzIG5vdCBzZXQKIyBDT05GSUdfRE1BQlVGX01PVkVfTk9USUZZ
IGlzIG5vdCBzZXQKQ09ORklHX0RNQUJVRl9ERUJVRz15CkNPTkZJR19ETUFCVUZfU0VMRlRF
U1RTPXkKIyBDT05GSUdfRE1BQlVGX0hFQVBTIGlzIG5vdCBzZXQKIyBDT05GSUdfRE1BQlVG
X1NZU0ZTX1NUQVRTIGlzIG5vdCBzZXQKIyBlbmQgb2YgRE1BQlVGIG9wdGlvbnMKCkNPTkZJ
R19VSU89eQpDT05GSUdfVUlPX1BEUlZfR0VOSVJRPXkKQ09ORklHX1VJT19ETUVNX0dFTklS
UT15CiMgQ09ORklHX1ZGSU8gaXMgbm90IHNldApDT05GSUdfSVJRX0JZUEFTU19NQU5BR0VS
PXkKQ09ORklHX1ZJUlRfRFJJVkVSUz15CkNPTkZJR19WTUdFTklEPXkKQ09ORklHX1ZJUlRJ
T19BTkNIT1I9eQpDT05GSUdfVklSVElPPXkKQ09ORklHX1ZJUlRJT19NRU5VPXkKQ09ORklH
X1ZJUlRJT19WRFBBPXkKIyBDT05GSUdfVklSVElPX0JBTExPT04gaXMgbm90IHNldApDT05G
SUdfVklSVElPX0lOUFVUPXkKIyBDT05GSUdfVklSVElPX01NSU8gaXMgbm90IHNldApDT05G
SUdfVklSVElPX0RFQlVHPXkKQ09ORklHX1ZEUEE9eQpDT05GSUdfVkRQQV9TSU09eQojIENP
TkZJR19WRFBBX1NJTV9ORVQgaXMgbm90IHNldApDT05GSUdfVkRQQV9TSU1fQkxPQ0s9eQoj
IENPTkZJR19WRFBBX1VTRVIgaXMgbm90IHNldAojIENPTkZJR19NTFg1X1ZEUEFfU1RFRVJJ
TkdfREVCVUcgaXMgbm90IHNldApDT05GSUdfVkhPU1RfSU9UTEI9eQpDT05GSUdfVkhPU1Rf
UklORz15CkNPTkZJR19WSE9TVF9UQVNLPXkKQ09ORklHX1ZIT1NUPXkKQ09ORklHX1ZIT1NU
X01FTlU9eQojIENPTkZJR19WSE9TVF9ORVQgaXMgbm90IHNldApDT05GSUdfVkhPU1RfU0NT
ST15CkNPTkZJR19WSE9TVF9WRFBBPXkKIyBDT05GSUdfVkhPU1RfQ1JPU1NfRU5ESUFOX0xF
R0FDWSBpcyBub3Qgc2V0CgojCiMgTWljcm9zb2Z0IEh5cGVyLVYgZ3Vlc3Qgc3VwcG9ydAoj
CiMgZW5kIG9mIE1pY3Jvc29mdCBIeXBlci1WIGd1ZXN0IHN1cHBvcnQKCkNPTkZJR19HUkVZ
QlVTPXkKIyBDT05GSUdfQ09NRURJIGlzIG5vdCBzZXQKIyBDT05GSUdfU1RBR0lORyBpcyBu
b3Qgc2V0CiMgQ09ORklHX0dPTERGSVNIIGlzIG5vdCBzZXQKQ09ORklHX0NIUk9NRV9QTEFU
Rk9STVM9eQpDT05GSUdfQ0hST01FT1NfQUNQST15CkNPTkZJR19DSFJPTUVPU19MQVBUT1A9
eQpDT05GSUdfQ0hST01FT1NfUFNUT1JFPXkKQ09ORklHX0NIUk9NRU9TX1RCTUM9eQpDT05G
SUdfQ1JPU19FQz15CkNPTkZJR19DUk9TX0VDX0kyQz15CkNPTkZJR19DUk9TX0VDX1JQTVNH
PXkKQ09ORklHX0NST1NfRUNfTFBDPXkKQ09ORklHX0NST1NfRUNfUFJPVE89eQpDT05GSUdf
Q1JPU19LQkRfTEVEX0JBQ0tMSUdIVD15CkNPTkZJR19DUk9TX0VDX0NIQVJERVY9eQojIENP
TkZJR19DUk9TX0VDX0xJR0hUQkFSIGlzIG5vdCBzZXQKQ09ORklHX0NST1NfRUNfVkJDPXkK
Q09ORklHX0NST1NfRUNfU0VOU09SSFVCPXkKQ09ORklHX0NST1NfRUNfU1lTRlM9eQpDT05G
SUdfQ1JPU19VU0JQRF9MT0dHRVI9eQpDT05GSUdfQ1JPU19VU0JQRF9OT1RJRlk9eQpDT05G
SUdfQ0hST01FT1NfUFJJVkFDWV9TQ1JFRU49eQpDT05GSUdfV0lMQ09fRUM9eQpDT05GSUdf
V0lMQ09fRUNfREVCVUdGUz15CiMgQ09ORklHX1dJTENPX0VDX0VWRU5UUyBpcyBub3Qgc2V0
CkNPTkZJR19XSUxDT19FQ19URUxFTUVUUlk9eQpDT05GSUdfQ1JPU19LVU5JVF9FQ19QUk9U
T19URVNUPXkKIyBDT05GSUdfQ1pOSUNfUExBVEZPUk1TIGlzIG5vdCBzZXQKQ09ORklHX01F
TExBTk9YX1BMQVRGT1JNPXkKQ09ORklHX01MWFJFR19IT1RQTFVHPXkKQ09ORklHX01MWFJF
R19JTz15CiMgQ09ORklHX01MWFJFR19MQyBpcyBub3Qgc2V0CkNPTkZJR19OVlNXX1NOMjIw
MT15CkNPTkZJR19PTFBDX0VDPXkKQ09ORklHX1NVUkZBQ0VfUExBVEZPUk1TPXkKQ09ORklH
X1NVUkZBQ0VfM19QT1dFUl9PUFJFR0lPTj15CiMgQ09ORklHX1NVUkZBQ0VfR1BFIGlzIG5v
dCBzZXQKIyBDT05GSUdfU1VSRkFDRV9IT1RQTFVHIGlzIG5vdCBzZXQKIyBDT05GSUdfU1VS
RkFDRV9QUk8zX0JVVFRPTiBpcyBub3Qgc2V0CkNPTkZJR19YODZfUExBVEZPUk1fREVWSUNF
Uz15CkNPTkZJR19BQ1BJX1dNST15CkNPTkZJR19XTUlfQk1PRj15CkNPTkZJR19IVUFXRUlf
V01JPXkKIyBDT05GSUdfTVhNX1dNSSBpcyBub3Qgc2V0CkNPTkZJR19OVklESUFfV01JX0VD
X0JBQ0tMSUdIVD15CkNPTkZJR19YSUFPTUlfV01JPXkKQ09ORklHX0dJR0FCWVRFX1dNST15
CiMgQ09ORklHX1lPR0FCT09LIGlzIG5vdCBzZXQKQ09ORklHX0FDRVJIREY9eQpDT05GSUdf
QUNFUl9XSVJFTEVTUz15CiMgQ09ORklHX0FDRVJfV01JIGlzIG5vdCBzZXQKQ09ORklHX0FN
RF9XQlJGPXkKQ09ORklHX0FEVl9TV0JVVFRPTj15CkNPTkZJR19BU1VTX0xBUFRPUD15CkNP
TkZJR19BU1VTX1dJUkVMRVNTPXkKQ09ORklHX0FTVVNfVEYxMDNDX0RPQ0s9eQojIENPTkZJ
R19YODZfUExBVEZPUk1fRFJJVkVSU19ERUxMIGlzIG5vdCBzZXQKQ09ORklHX0ZVSklUU1Vf
TEFQVE9QPXkKIyBDT05GSUdfRlVKSVRTVV9UQUJMRVQgaXMgbm90IHNldApDT05GSUdfR1BE
X1BPQ0tFVF9GQU49eQojIENPTkZJR19YODZfUExBVEZPUk1fRFJJVkVSU19IUCBpcyBub3Qg
c2V0CiMgQ09ORklHX1dJUkVMRVNTX0hPVEtFWSBpcyBub3Qgc2V0CkNPTkZJR19MRU5PVk9f
WU1DPXkKQ09ORklHX1NFTlNPUlNfSERBUFM9eQpDT05GSUdfVEhJTktQQURfQUNQST15CiMg
Q09ORklHX1RISU5LUEFEX0FDUElfREVCVUdGQUNJTElUSUVTIGlzIG5vdCBzZXQKIyBDT05G
SUdfVEhJTktQQURfQUNQSV9ERUJVRyBpcyBub3Qgc2V0CkNPTkZJR19USElOS1BBRF9BQ1BJ
X1VOU0FGRV9MRURTPXkKIyBDT05GSUdfVEhJTktQQURfQUNQSV9WSURFTyBpcyBub3Qgc2V0
CkNPTkZJR19USElOS1BBRF9BQ1BJX0hPVEtFWV9QT0xMPXkKQ09ORklHX1RISU5LUEFEX0xN
ST15CiMgQ09ORklHX0lOVEVMX0FUT01JU1AyX0xFRCBpcyBub3Qgc2V0CkNPTkZJR19JTlRF
TF9TQVJfSU5UMTA5Mj15CkNPTkZJR19JTlRFTF9TS0xfSU5UMzQ3Mj15CkNPTkZJR19JTlRF
TF9XTUk9eQpDT05GSUdfSU5URUxfV01JX1NCTF9GV19VUERBVEU9eQpDT05GSUdfSU5URUxf
V01JX1RIVU5ERVJCT0xUPXkKQ09ORklHX0lOVEVMX0hJRF9FVkVOVD15CkNPTkZJR19JTlRF
TF9WQlROPXkKQ09ORklHX0lOVEVMX0JYVFdDX1BNSUNfVE1VPXkKIyBDT05GSUdfSU5URUxf
TVJGTERfUFdSQlROIGlzIG5vdCBzZXQKQ09ORklHX0lOVEVMX1BVTklUX0lQQz15CkNPTkZJ
R19JTlRFTF9SU1Q9eQojIENPTkZJR19JTlRFTF9TTUFSVENPTk5FQ1QgaXMgbm90IHNldApD
T05GSUdfQUNQSV9RVUlDS1NUQVJUPXkKIyBDT05GSUdfTUVFR09QQURfQU5YNzQyOCBpcyBu
b3Qgc2V0CkNPTkZJR19NU0lfRUM9eQpDT05GSUdfTVNJX1dNST15CkNPTkZJR19NU0lfV01J
X1BMQVRGT1JNPXkKQ09ORklHX1hPMTVfRUJPT0s9eQpDT05GSUdfQkFSQ09fUDUwX0dQSU89
eQpDT05GSUdfU0FNU1VOR19MQVBUT1A9eQpDT05GSUdfU0FNU1VOR19RMTA9eQpDT05GSUdf
QUNQSV9UT1NISUJBPXkKQ09ORklHX1RPU0hJQkFfQlRfUkZLSUxMPXkKQ09ORklHX1RPU0hJ
QkFfSEFQUz15CkNPTkZJR19UT1NISUJBX1dNST15CkNPTkZJR19BQ1BJX0NNUEM9eQpDT05G
SUdfTEdfTEFQVE9QPXkKIyBDT05GSUdfUEFOQVNPTklDX0xBUFRPUCBpcyBub3Qgc2V0CkNP
TkZJR19TWVNURU03Nl9BQ1BJPXkKQ09ORklHX1RPUFNUQVJfTEFQVE9QPXkKQ09ORklHX0lO
U1BVUl9QTEFURk9STV9QUk9GSUxFPXkKIyBDT05GSUdfTEVOT1ZPX1dNSV9DQU1FUkEgaXMg
bm90IHNldApDT05GSUdfRldfQVRUUl9DTEFTUz15CkNPTkZJR19JTlRFTF9TQ1VfSVBDPXkK
Q09ORklHX0lOVEVMX1NDVT15CkNPTkZJR19JTlRFTF9TQ1VfUExBVEZPUk09eQpDT05GSUdf
SU5URUxfU0NVX0lQQ19VVElMPXkKQ09ORklHX1NJRU1FTlNfU0lNQVRJQ19JUEM9eQpDT05G
SUdfU0lFTUVOU19TSU1BVElDX0lQQ19CQVRUPXkKQ09ORklHX1NJRU1FTlNfU0lNQVRJQ19J
UENfQkFUVF9BUE9MTE9MQUtFPXkKIyBDT05GSUdfU0lFTUVOU19TSU1BVElDX0lQQ19CQVRU
X0Y3MTg4WCBpcyBub3Qgc2V0CkNPTkZJR19TSUxJQ09NX1BMQVRGT1JNPXkKQ09ORklHX1dJ
Tk1BVEVfRk0wN19LRVlTPXkKIyBDT05GSUdfU0VMMzM1MF9QTEFURk9STSBpcyBub3Qgc2V0
CkNPTkZJR19IQVZFX0NMSz15CkNPTkZJR19IQVZFX0NMS19QUkVQQVJFPXkKQ09ORklHX0NP
TU1PTl9DTEs9eQojIENPTkZJR19DT01NT05fQ0xLX1dNODMxWCBpcyBub3Qgc2V0CkNPTkZJ
R19DT01NT05fQ0xLX01BWDc3Njg2PXkKQ09ORklHX0NPTU1PTl9DTEtfTUFYOTQ4NT15CiMg
Q09ORklHX0NPTU1PTl9DTEtfU0k1MzQxIGlzIG5vdCBzZXQKQ09ORklHX0NPTU1PTl9DTEtf
U0k1MzUxPXkKQ09ORklHX0NPTU1PTl9DTEtfU0k1MTQ9eQpDT05GSUdfQ09NTU9OX0NMS19T
STU0ND15CiMgQ09ORklHX0NPTU1PTl9DTEtfU0k1NzAgaXMgbm90IHNldAojIENPTkZJR19D
T01NT05fQ0xLX0NEQ0U3MDYgaXMgbm90IHNldAojIENPTkZJR19DT01NT05fQ0xLX1RQUzY4
NDcwIGlzIG5vdCBzZXQKQ09ORklHX0NPTU1PTl9DTEtfQ0RDRTkyNT15CkNPTkZJR19DT01N
T05fQ0xLX0NTMjAwMF9DUD15CkNPTkZJR19DT01NT05fQ0xLX1MyTVBTMTE9eQojIENPTkZJ
R19DTEtfVFdMIGlzIG5vdCBzZXQKQ09ORklHX0NPTU1PTl9DTEtfQVhJX0NMS0dFTj15CkNP
TkZJR19DT01NT05fQ0xLX1BBTE1BUz15CiMgQ09ORklHX0NPTU1PTl9DTEtfUFdNIGlzIG5v
dCBzZXQKQ09ORklHX0NPTU1PTl9DTEtfUlM5X1BDSUU9eQpDT05GSUdfQ09NTU9OX0NMS19T
STUyMVhYPXkKIyBDT05GSUdfQ09NTU9OX0NMS19WQzMgaXMgbm90IHNldAojIENPTkZJR19D
T01NT05fQ0xLX1ZDNSBpcyBub3Qgc2V0CkNPTkZJR19DT01NT05fQ0xLX1ZDNz15CkNPTkZJ
R19DT01NT05fQ0xLX0JENzE4WFg9eQojIENPTkZJR19DT01NT05fQ0xLX0ZJWEVEX01NSU8g
aXMgbm90IHNldApDT05GSUdfQ0xLX0xHTV9DR1U9eQpDT05GSUdfWElMSU5YX1ZDVT15CkNP
TkZJR19DT01NT05fQ0xLX1hMTlhfQ0xLV1pSRD15CkNPTkZJR19DTEtfS1VOSVRfVEVTVD15
CkNPTkZJR19DTEtfR0FURV9LVU5JVF9URVNUPXkKQ09ORklHX0NMS19GRF9LVU5JVF9URVNU
PXkKIyBDT05GSUdfSFdTUElOTE9DSyBpcyBub3Qgc2V0CgojCiMgQ2xvY2sgU291cmNlIGRy
aXZlcnMKIwpDT05GSUdfQ0xLU1JDX0k4MjUzPXkKQ09ORklHX0NMS0VWVF9JODI1Mz15CkNP
TkZJR19JODI1M19MT0NLPXkKQ09ORklHX0NMS0JMRF9JODI1Mz15CiMgZW5kIG9mIENsb2Nr
IFNvdXJjZSBkcml2ZXJzCgpDT05GSUdfTUFJTEJPWD15CkNPTkZJR19BUk1fTUhVX1YzPXkK
Q09ORklHX1BMQVRGT1JNX01IVT15CkNPTkZJR19QQ0M9eQojIENPTkZJR19BTFRFUkFfTUJP
WCBpcyBub3Qgc2V0CiMgQ09ORklHX01BSUxCT1hfVEVTVCBpcyBub3Qgc2V0CkNPTkZJR19J
T01NVV9JT1ZBPXkKQ09ORklHX0lPTU1VX0FQST15CkNPTkZJR19JT01NVV9TVVBQT1JUPXkK
CiMKIyBHZW5lcmljIElPTU1VIFBhZ2V0YWJsZSBTdXBwb3J0CiMKIyBlbmQgb2YgR2VuZXJp
YyBJT01NVSBQYWdldGFibGUgU3VwcG9ydAoKIyBDT05GSUdfSU9NTVVfREVGQVVMVF9ETUFf
U1RSSUNUIGlzIG5vdCBzZXQKIyBDT05GSUdfSU9NTVVfREVGQVVMVF9ETUFfTEFaWSBpcyBu
b3Qgc2V0CkNPTkZJR19JT01NVV9ERUZBVUxUX1BBU1NUSFJPVUdIPXkKQ09ORklHX09GX0lP
TU1VPXkKQ09ORklHX0lPTU1VX0RNQT15CiMgQ09ORklHX0lPTU1VRkQgaXMgbm90IHNldApD
T05GSUdfVklSVElPX0lPTU1VPXkKCiMKIyBSZW1vdGVwcm9jIGRyaXZlcnMKIwojIENPTkZJ
R19SRU1PVEVQUk9DIGlzIG5vdCBzZXQKIyBlbmQgb2YgUmVtb3RlcHJvYyBkcml2ZXJzCgoj
CiMgUnBtc2cgZHJpdmVycwojCkNPTkZJR19SUE1TRz15CkNPTkZJR19SUE1TR19DSEFSPXkK
IyBDT05GSUdfUlBNU0dfQ1RSTCBpcyBub3Qgc2V0CkNPTkZJR19SUE1TR19OUz15CkNPTkZJ
R19SUE1TR19RQ09NX0dMSU5LPXkKQ09ORklHX1JQTVNHX1FDT01fR0xJTktfUlBNPXkKIyBD
T05GSUdfUlBNU0dfVklSVElPIGlzIG5vdCBzZXQKIyBlbmQgb2YgUnBtc2cgZHJpdmVycwoK
Q09ORklHX1NPVU5EV0lSRT15CgojCiMgU291bmRXaXJlIERldmljZXMKIwoKIwojIFNPQyAo
U3lzdGVtIE9uIENoaXApIHNwZWNpZmljIERyaXZlcnMKIwoKIwojIEFtbG9naWMgU29DIGRy
aXZlcnMKIwojIGVuZCBvZiBBbWxvZ2ljIFNvQyBkcml2ZXJzCgojCiMgQnJvYWRjb20gU29D
IGRyaXZlcnMKIwojIGVuZCBvZiBCcm9hZGNvbSBTb0MgZHJpdmVycwoKIwojIE5YUC9GcmVl
c2NhbGUgUW9ySVEgU29DIGRyaXZlcnMKIwojIGVuZCBvZiBOWFAvRnJlZXNjYWxlIFFvcklR
IFNvQyBkcml2ZXJzCgojCiMgZnVqaXRzdSBTb0MgZHJpdmVycwojCiMgZW5kIG9mIGZ1aml0
c3UgU29DIGRyaXZlcnMKCiMKIyBpLk1YIFNvQyBkcml2ZXJzCiMKIyBlbmQgb2YgaS5NWCBT
b0MgZHJpdmVycwoKIwojIEVuYWJsZSBMaXRlWCBTb0MgQnVpbGRlciBzcGVjaWZpYyBkcml2
ZXJzCiMKQ09ORklHX0xJVEVYPXkKQ09ORklHX0xJVEVYX1NPQ19DT05UUk9MTEVSPXkKIyBl
bmQgb2YgRW5hYmxlIExpdGVYIFNvQyBCdWlsZGVyIHNwZWNpZmljIGRyaXZlcnMKCkNPTkZJ
R19XUENNNDUwX1NPQz15CgojCiMgUXVhbGNvbW0gU29DIGRyaXZlcnMKIwojIGVuZCBvZiBR
dWFsY29tbSBTb0MgZHJpdmVycwoKQ09ORklHX1NPQ19UST15CgojCiMgWGlsaW54IFNvQyBk
cml2ZXJzCiMKIyBlbmQgb2YgWGlsaW54IFNvQyBkcml2ZXJzCiMgZW5kIG9mIFNPQyAoU3lz
dGVtIE9uIENoaXApIHNwZWNpZmljIERyaXZlcnMKCiMKIyBQTSBEb21haW5zCiMKCiMKIyBB
bWxvZ2ljIFBNIERvbWFpbnMKIwojIGVuZCBvZiBBbWxvZ2ljIFBNIERvbWFpbnMKCiMKIyBC
cm9hZGNvbSBQTSBEb21haW5zCiMKIyBlbmQgb2YgQnJvYWRjb20gUE0gRG9tYWlucwoKIwoj
IGkuTVggUE0gRG9tYWlucwojCiMgZW5kIG9mIGkuTVggUE0gRG9tYWlucwoKIwojIFF1YWxj
b21tIFBNIERvbWFpbnMKIwojIGVuZCBvZiBRdWFsY29tbSBQTSBEb21haW5zCiMgZW5kIG9m
IFBNIERvbWFpbnMKCkNPTkZJR19QTV9ERVZGUkVRPXkKCiMKIyBERVZGUkVRIEdvdmVybm9y
cwojCkNPTkZJR19ERVZGUkVRX0dPVl9TSU1QTEVfT05ERU1BTkQ9eQpDT05GSUdfREVWRlJF
UV9HT1ZfUEVSRk9STUFOQ0U9eQojIENPTkZJR19ERVZGUkVRX0dPVl9QT1dFUlNBVkUgaXMg
bm90IHNldApDT05GSUdfREVWRlJFUV9HT1ZfVVNFUlNQQUNFPXkKIyBDT05GSUdfREVWRlJF
UV9HT1ZfUEFTU0lWRSBpcyBub3Qgc2V0CgojCiMgREVWRlJFUSBEcml2ZXJzCiMKIyBDT05G
SUdfUE1fREVWRlJFUV9FVkVOVCBpcyBub3Qgc2V0CkNPTkZJR19FWFRDT049eQoKIwojIEV4
dGNvbiBEZXZpY2UgRHJpdmVycwojCkNPTkZJR19FWFRDT05fQURDX0pBQ0s9eQojIENPTkZJ
R19FWFRDT05fRlNBOTQ4MCBpcyBub3Qgc2V0CiMgQ09ORklHX0VYVENPTl9HUElPIGlzIG5v
dCBzZXQKQ09ORklHX0VYVENPTl9JTlRFTF9JTlQzNDk2PXkKQ09ORklHX0VYVENPTl9JTlRF
TF9NUkZMRD15CiMgQ09ORklHX0VYVENPTl9MQzgyNDIwNlhBIGlzIG5vdCBzZXQKQ09ORklH
X0VYVENPTl9NQVgxNDU3Nz15CiMgQ09ORklHX0VYVENPTl9NQVgzMzU1IGlzIG5vdCBzZXQK
IyBDT05GSUdfRVhUQ09OX01BWDc3NjkzIGlzIG5vdCBzZXQKQ09ORklHX0VYVENPTl9NQVg3
Nzg0Mz15CiMgQ09ORklHX0VYVENPTl9QQUxNQVMgaXMgbm90IHNldAojIENPTkZJR19FWFRD
T05fUFRONTE1MCBpcyBub3Qgc2V0CiMgQ09ORklHX0VYVENPTl9SVDg5NzNBIGlzIG5vdCBz
ZXQKIyBDT05GSUdfRVhUQ09OX1NNNTUwMiBpcyBub3Qgc2V0CiMgQ09ORklHX0VYVENPTl9V
U0JfR1BJTyBpcyBub3Qgc2V0CkNPTkZJR19FWFRDT05fVVNCQ19DUk9TX0VDPXkKQ09ORklH
X01FTU9SWT15CkNPTkZJR19JSU89eQpDT05GSUdfSUlPX0JVRkZFUj15CkNPTkZJR19JSU9f
QlVGRkVSX0NCPXkKQ09ORklHX0lJT19CVUZGRVJfRE1BPXkKQ09ORklHX0lJT19CVUZGRVJf
RE1BRU5HSU5FPXkKQ09ORklHX0lJT19CVUZGRVJfSFdfQ09OU1VNRVI9eQpDT05GSUdfSUlP
X0tGSUZPX0JVRj15CkNPTkZJR19JSU9fVFJJR0dFUkVEX0JVRkZFUj15CkNPTkZJR19JSU9f
Q09ORklHRlM9eQpDT05GSUdfSUlPX0dUU19IRUxQRVI9eQpDT05GSUdfSUlPX1RSSUdHRVI9
eQpDT05GSUdfSUlPX0NPTlNVTUVSU19QRVJfVFJJR0dFUj0yCiMgQ09ORklHX0lJT19TV19E
RVZJQ0UgaXMgbm90IHNldApDT05GSUdfSUlPX1NXX1RSSUdHRVI9eQpDT05GSUdfSUlPX1RS
SUdHRVJFRF9FVkVOVD15CgojCiMgQWNjZWxlcm9tZXRlcnMKIwpDT05GSUdfQURYTDMxMz15
CkNPTkZJR19BRFhMMzEzX0kyQz15CkNPTkZJR19BRFhMMzU1PXkKQ09ORklHX0FEWEwzNTVf
STJDPXkKQ09ORklHX0FEWEwzNjc9eQpDT05GSUdfQURYTDM2N19JMkM9eQojIENPTkZJR19B
RFhMMzcyX0kyQyBpcyBub3Qgc2V0CiMgQ09ORklHX0JNQTQwMCBpcyBub3Qgc2V0CkNPTkZJ
R19CTUMxNTBfQUNDRUw9eQpDT05GSUdfQk1DMTUwX0FDQ0VMX0kyQz15CkNPTkZJR19CTUkw
ODhfQUNDRUw9eQpDT05GSUdfQk1JMDg4X0FDQ0VMX0kyQz15CiMgQ09ORklHX0RBMjgwIGlz
IG5vdCBzZXQKIyBDT05GSUdfREEzMTEgaXMgbm90IHNldApDT05GSUdfRE1BUkQwNj15CkNP
TkZJR19ETUFSRDA5PXkKQ09ORklHX0RNQVJEMTA9eQojIENPTkZJR19GWExTODk2MkFGX0ky
QyBpcyBub3Qgc2V0CiMgQ09ORklHX0lJT19LWDAyMkFfSTJDIGlzIG5vdCBzZXQKIyBDT05G
SUdfS1hTRDkgaXMgbm90IHNldApDT05GSUdfS1hDSksxMDEzPXkKQ09ORklHX01DMzIzMD15
CkNPTkZJR19NTUE3NDU1PXkKQ09ORklHX01NQTc0NTVfSTJDPXkKIyBDT05GSUdfTU1BNzY2
MCBpcyBub3Qgc2V0CkNPTkZJR19NTUE4NDUyPXkKIyBDT05GSUdfTU1BOTU1MSBpcyBub3Qg
c2V0CiMgQ09ORklHX01NQTk1NTMgaXMgbm90IHNldApDT05GSUdfTVNBMzExPXkKIyBDT05G
SUdfTVhDNDAwNSBpcyBub3Qgc2V0CkNPTkZJR19NWEM2MjU1PXkKIyBDT05GSUdfU1RLODMx
MiBpcyBub3Qgc2V0CkNPTkZJR19TVEs4QkE1MD15CiMgZW5kIG9mIEFjY2VsZXJvbWV0ZXJz
CgojCiMgQW5hbG9nIHRvIGRpZ2l0YWwgY29udmVydGVycwojCkNPTkZJR19BRDcwOTFSPXkK
Q09ORklHX0FENzA5MVI1PXkKQ09ORklHX0FENzI5MT15CkNPTkZJR19BRDc2MDY9eQpDT05G
SUdfQUQ3NjA2X0lGQUNFX1BBUkFMTEVMPXkKQ09ORklHX0FENzk5WD15CiMgQ09ORklHX0FY
UDIwWF9BREMgaXMgbm90IHNldApDT05GSUdfQVhQMjg4X0FEQz15CiMgQ09ORklHX0NDMTAw
MDFfQURDIGlzIG5vdCBzZXQKIyBDT05GSUdfREE5MTUwX0dQQURDIGlzIG5vdCBzZXQKQ09O
RklHX0VOVkVMT1BFX0RFVEVDVE9SPXkKQ09ORklHX0hYNzExPXkKIyBDT05GSUdfSU5URUxf
TVJGTERfQURDIGlzIG5vdCBzZXQKQ09ORklHX0xQODc4OF9BREM9eQpDT05GSUdfTFRDMjMw
OT15CiMgQ09ORklHX0xUQzI0NzEgaXMgbm90IHNldApDT05GSUdfTFRDMjQ4NT15CiMgQ09O
RklHX0xUQzI0OTcgaXMgbm90IHNldApDT05GSUdfTUFYMTM2Mz15CkNPTkZJR19NQVgzNDQw
OD15CiMgQ09ORklHX01BWDc3NTQxX0FEQyBpcyBub3Qgc2V0CkNPTkZJR19NQVg5NjExPXkK
Q09ORklHX01DUDM0MjI9eQojIENPTkZJR19NRURJQVRFS19NVDYzNTlfQVVYQURDIGlzIG5v
dCBzZXQKIyBDT05GSUdfTUVESUFURUtfTVQ2MzcwX0FEQyBpcyBub3Qgc2V0CkNPTkZJR19N
RU5fWjE4OF9BREM9eQpDT05GSUdfTVAyNjI5X0FEQz15CkNPTkZJR19OQVU3ODAyPXkKIyBD
T05GSUdfUEFDMTkzNCBpcyBub3Qgc2V0CkNPTkZJR19QQUxNQVNfR1BBREM9eQpDT05GSUdf
Uk41VDYxOF9BREM9eQpDT05GSUdfUklDSFRFS19SVFE2MDU2PXkKQ09ORklHX1NEX0FEQ19N
T0RVTEFUT1I9eQpDT05GSUdfU1RNUEVfQURDPXkKQ09ORklHX1RJX0FEQzA4MUM9eQojIENP
TkZJR19USV9BRFMxMDE1IGlzIG5vdCBzZXQKQ09ORklHX1RJX0FEUzExMTk9eQojIENPTkZJ
R19USV9BRFM3OTI0IGlzIG5vdCBzZXQKIyBDT05GSUdfVElfQURTMTEwMCBpcyBub3Qgc2V0
CkNPTkZJR19UV0w0MDMwX01BREM9eQojIENPTkZJR19UV0w2MDMwX0dQQURDIGlzIG5vdCBz
ZXQKQ09ORklHX1ZGNjEwX0FEQz15CkNPTkZJR19YSUxJTlhfWEFEQz15CiMgZW5kIG9mIEFu
YWxvZyB0byBkaWdpdGFsIGNvbnZlcnRlcnMKCiMKIyBBbmFsb2cgdG8gZGlnaXRhbCBhbmQg
ZGlnaXRhbCB0byBhbmFsb2cgY29udmVydGVycwojCiMgZW5kIG9mIEFuYWxvZyB0byBkaWdp
dGFsIGFuZCBkaWdpdGFsIHRvIGFuYWxvZyBjb252ZXJ0ZXJzCgojCiMgQW5hbG9nIEZyb250
IEVuZHMKIwpDT05GSUdfSUlPX1JFU0NBTEU9eQojIGVuZCBvZiBBbmFsb2cgRnJvbnQgRW5k
cwoKIwojIEFtcGxpZmllcnMKIwojIENPTkZJR19ITUM0MjUgaXMgbm90IHNldAojIGVuZCBv
ZiBBbXBsaWZpZXJzCgojCiMgQ2FwYWNpdGFuY2UgdG8gZGlnaXRhbCBjb252ZXJ0ZXJzCiMK
IyBDT05GSUdfQUQ3MTUwIGlzIG5vdCBzZXQKQ09ORklHX0FENzc0Nj15CiMgZW5kIG9mIENh
cGFjaXRhbmNlIHRvIGRpZ2l0YWwgY29udmVydGVycwoKIwojIENoZW1pY2FsIFNlbnNvcnMK
IwpDT05GSUdfQU9TT05HX0FHUzAyTUE9eQojIENPTkZJR19BVExBU19QSF9TRU5TT1IgaXMg
bm90IHNldApDT05GSUdfQVRMQVNfRVpPX1NFTlNPUj15CkNPTkZJR19CTUU2ODA9eQpDT05G
SUdfQk1FNjgwX0kyQz15CiMgQ09ORklHX0NDUzgxMSBpcyBub3Qgc2V0CkNPTkZJR19FTlMx
NjA9eQpDT05GSUdfRU5TMTYwX0kyQz15CkNPTkZJR19JQVFDT1JFPXkKIyBDT05GSUdfU0NE
MzBfQ09SRSBpcyBub3Qgc2V0CiMgQ09ORklHX1NDRDRYIGlzIG5vdCBzZXQKIyBDT05GSUdf
U0VOU0lSSU9OX1NHUDMwIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU0lSSU9OX1NHUDQwIGlz
IG5vdCBzZXQKQ09ORklHX1NQUzMwPXkKQ09ORklHX1NQUzMwX0kyQz15CkNPTkZJR19TRU5T
RUFJUl9TVU5SSVNFX0NPMj15CkNPTkZJR19WWjg5WD15CiMgZW5kIG9mIENoZW1pY2FsIFNl
bnNvcnMKCiMgQ09ORklHX0lJT19DUk9TX0VDX1NFTlNPUlNfQ09SRSBpcyBub3Qgc2V0Cgoj
CiMgSGlkIFNlbnNvciBJSU8gQ29tbW9uCiMKIyBlbmQgb2YgSGlkIFNlbnNvciBJSU8gQ29t
bW9uCgpDT05GSUdfSUlPX0lOVl9TRU5TT1JTX1RJTUVTVEFNUD15CkNPTkZJR19JSU9fTVNf
U0VOU09SU19JMkM9eQoKIwojIElJTyBTQ01JIFNlbnNvcnMKIwojIGVuZCBvZiBJSU8gU0NN
SSBTZW5zb3JzCgojCiMgU1NQIFNlbnNvciBDb21tb24KIwojIGVuZCBvZiBTU1AgU2Vuc29y
IENvbW1vbgoKQ09ORklHX0lJT19TVF9TRU5TT1JTX0kyQz15CkNPTkZJR19JSU9fU1RfU0VO
U09SU19DT1JFPXkKCiMKIyBEaWdpdGFsIHRvIGFuYWxvZyBjb252ZXJ0ZXJzCiMKQ09ORklH
X0FENTA2ND15CiMgQ09ORklHX0FENTM4MCBpcyBub3Qgc2V0CkNPTkZJR19BRDU0NDY9eQpD
T05GSUdfQUQ1NTkyUl9CQVNFPXkKQ09ORklHX0FENTU5M1I9eQojIENPTkZJR19BRDU2OTZf
STJDIGlzIG5vdCBzZXQKIyBDT05GSUdfRFBPVF9EQUMgaXMgbm90IHNldApDT05GSUdfRFM0
NDI0PXkKIyBDT05GSUdfTTYyMzMyIGlzIG5vdCBzZXQKQ09ORklHX01BWDUxNz15CkNPTkZJ
R19NQVg1ODIxPXkKIyBDT05GSUdfTUNQNDcyNSBpcyBub3Qgc2V0CiMgQ09ORklHX01DUDQ3
MjggaXMgbm90IHNldAojIENPTkZJR19USV9EQUM1NTcxIGlzIG5vdCBzZXQKQ09ORklHX1ZG
NjEwX0RBQz15CiMgZW5kIG9mIERpZ2l0YWwgdG8gYW5hbG9nIGNvbnZlcnRlcnMKCiMKIyBJ
SU8gZHVtbXkgZHJpdmVyCiMKIyBlbmQgb2YgSUlPIGR1bW15IGRyaXZlcgoKIwojIEZpbHRl
cnMKIwojIGVuZCBvZiBGaWx0ZXJzCgojCiMgRnJlcXVlbmN5IFN5bnRoZXNpemVycyBERFMv
UExMCiMKCiMKIyBDbG9jayBHZW5lcmF0b3IvRGlzdHJpYnV0aW9uCiMKIyBlbmQgb2YgQ2xv
Y2sgR2VuZXJhdG9yL0Rpc3RyaWJ1dGlvbgoKIwojIFBoYXNlLUxvY2tlZCBMb29wIChQTEwp
IGZyZXF1ZW5jeSBzeW50aGVzaXplcnMKIwpDT05GSUdfQURNRk0yMDAwPXkKIyBlbmQgb2Yg
UGhhc2UtTG9ja2VkIExvb3AgKFBMTCkgZnJlcXVlbmN5IHN5bnRoZXNpemVycwojIGVuZCBv
ZiBGcmVxdWVuY3kgU3ludGhlc2l6ZXJzIEREUy9QTEwKCiMKIyBEaWdpdGFsIGd5cm9zY29w
ZSBzZW5zb3JzCiMKQ09ORklHX0JNRzE2MD15CkNPTkZJR19CTUcxNjBfSTJDPXkKIyBDT05G
SUdfRlhBUzIxMDAyQyBpcyBub3Qgc2V0CiMgQ09ORklHX01QVTMwNTBfSTJDIGlzIG5vdCBz
ZXQKIyBDT05GSUdfSUlPX1NUX0dZUk9fM0FYSVMgaXMgbm90IHNldAojIENPTkZJR19JVEcz
MjAwIGlzIG5vdCBzZXQKIyBlbmQgb2YgRGlnaXRhbCBneXJvc2NvcGUgc2Vuc29ycwoKIwoj
IEhlYWx0aCBTZW5zb3JzCiMKCiMKIyBIZWFydCBSYXRlIE1vbml0b3JzCiMKIyBDT05GSUdf
QUZFNDQwNCBpcyBub3Qgc2V0CiMgQ09ORklHX01BWDMwMTAwIGlzIG5vdCBzZXQKQ09ORklH
X01BWDMwMTAyPXkKIyBlbmQgb2YgSGVhcnQgUmF0ZSBNb25pdG9ycwojIGVuZCBvZiBIZWFs
dGggU2Vuc29ycwoKIwojIEh1bWlkaXR5IHNlbnNvcnMKIwojIENPTkZJR19BTTIzMTUgaXMg
bm90IHNldAojIENPTkZJR19ESFQxMSBpcyBub3Qgc2V0CiMgQ09ORklHX0hEQzEwMFggaXMg
bm90IHNldApDT05GSUdfSERDMjAxMD15CkNPTkZJR19IREMzMDIwPXkKQ09ORklHX0hUUzIy
MT15CkNPTkZJR19IVFMyMjFfSTJDPXkKQ09ORklHX0hUVTIxPXkKQ09ORklHX1NJNzAwNT15
CkNPTkZJR19TSTcwMjA9eQojIGVuZCBvZiBIdW1pZGl0eSBzZW5zb3JzCgojCiMgSW5lcnRp
YWwgbWVhc3VyZW1lbnQgdW5pdHMKIwojIENPTkZJR19CTUkxNjBfSTJDIGlzIG5vdCBzZXQK
IyBDT05GSUdfQk1JMzIzX0kyQyBpcyBub3Qgc2V0CkNPTkZJR19CT1NDSF9CTk8wNTU9eQpD
T05GSUdfQk9TQ0hfQk5PMDU1X0kyQz15CiMgQ09ORklHX0ZYT1M4NzAwX0kyQyBpcyBub3Qg
c2V0CkNPTkZJR19LTVg2MT15CkNPTkZJR19JTlZfSUNNNDI2MDA9eQpDT05GSUdfSU5WX0lD
TTQyNjAwX0kyQz15CkNPTkZJR19JTlZfTVBVNjA1MF9JSU89eQpDT05GSUdfSU5WX01QVTYw
NTBfSTJDPXkKQ09ORklHX0lJT19TVF9MU002RFNYPXkKQ09ORklHX0lJT19TVF9MU002RFNY
X0kyQz15CkNPTkZJR19JSU9fU1RfTFNNNkRTWF9JM0M9eQojIGVuZCBvZiBJbmVydGlhbCBt
ZWFzdXJlbWVudCB1bml0cwoKIwojIExpZ2h0IHNlbnNvcnMKIwpDT05GSUdfQUNQSV9BTFM9
eQojIENPTkZJR19BREpEX1MzMTEgaXMgbm90IHNldAojIENPTkZJR19BRFVYMTAyMCBpcyBu
b3Qgc2V0CiMgQ09ORklHX0FMMzAxMCBpcyBub3Qgc2V0CiMgQ09ORklHX0FMMzMyMEEgaXMg
bm90IHNldApDT05GSUdfQVBEUzkzMDA9eQojIENPTkZJR19BUERTOTMwNiBpcyBub3Qgc2V0
CiMgQ09ORklHX0FQRFM5OTYwIGlzIG5vdCBzZXQKQ09ORklHX0FTNzMyMTE9eQpDT05GSUdf
QkgxNzUwPXkKQ09ORklHX0JIMTc4MD15CkNPTkZJR19DTTMyMTgxPXkKIyBDT05GSUdfQ00z
MjMyIGlzIG5vdCBzZXQKQ09ORklHX0NNMzMyMz15CkNPTkZJR19DTTM2MDU9eQojIENPTkZJ
R19DTTM2NjUxIGlzIG5vdCBzZXQKQ09ORklHX0dQMkFQMDAyPXkKIyBDT05GSUdfR1AyQVAw
MjBBMDBGIGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfSVNMMjkwMTg9eQpDT05GSUdfU0VO
U09SU19JU0wyOTAyOD15CkNPTkZJR19JU0wyOTEyNT15CkNPTkZJR19JU0w3NjY4Mj15CkNP
TkZJR19KU0ExMjEyPXkKQ09ORklHX1JPSE1fQlUyNzAwOD15CiMgQ09ORklHX1JPSE1fQlUy
NzAzNCBpcyBub3Qgc2V0CkNPTkZJR19SUFIwNTIxPXkKQ09ORklHX0xUUjM5MD15CkNPTkZJ
R19MVFI1MDE9eQojIENPTkZJR19MVFJGMjE2QSBpcyBub3Qgc2V0CkNPTkZJR19MVjAxMDRD
Uz15CkNPTkZJR19NQVg0NDAwMD15CkNPTkZJR19NQVg0NDAwOT15CiMgQ09ORklHX05PQTEz
MDUgaXMgbm90IHNldApDT05GSUdfT1BUMzAwMT15CkNPTkZJR19PUFQ0MDAxPXkKIyBDT05G
SUdfUEExMjIwMzAwMSBpcyBub3Qgc2V0CkNPTkZJR19TSTExMzM9eQpDT05GSUdfU0kxMTQ1
PXkKQ09ORklHX1NUSzMzMTA9eQpDT05GSUdfU1RfVVZJUzI1PXkKQ09ORklHX1NUX1VWSVMy
NV9JMkM9eQpDT05GSUdfVENTMzQxND15CkNPTkZJR19UQ1MzNDcyPXkKIyBDT05GSUdfU0VO
U09SU19UU0wyNTYzIGlzIG5vdCBzZXQKQ09ORklHX1RTTDI1ODM9eQpDT05GSUdfVFNMMjU5
MT15CkNPTkZJR19UU0wyNzcyPXkKIyBDT05GSUdfVFNMNDUzMSBpcyBub3Qgc2V0CkNPTkZJ
R19VUzUxODJEPXkKQ09ORklHX1ZDTkw0MDAwPXkKIyBDT05GSUdfVkNOTDQwMzUgaXMgbm90
IHNldApDT05GSUdfVkVNTDYwMzA9eQpDT05GSUdfVkVNTDYwNDA9eQpDT05GSUdfVkVNTDYw
NzA9eQpDT05GSUdfVkVNTDYwNzU9eQojIENPTkZJR19WTDYxODAgaXMgbm90IHNldApDT05G
SUdfWk9QVDIyMDE9eQojIGVuZCBvZiBMaWdodCBzZW5zb3JzCgojCiMgTWFnbmV0b21ldGVy
IHNlbnNvcnMKIwpDT05GSUdfQUY4MTMzSj15CkNPTkZJR19BSzg5NzQ9eQpDT05GSUdfQUs4
OTc1PXkKIyBDT05GSUdfQUswOTkxMSBpcyBub3Qgc2V0CkNPTkZJR19CTUMxNTBfTUFHTj15
CkNPTkZJR19CTUMxNTBfTUFHTl9JMkM9eQojIENPTkZJR19NQUczMTEwIGlzIG5vdCBzZXQK
Q09ORklHX01NQzM1MjQwPXkKQ09ORklHX0lJT19TVF9NQUdOXzNBWElTPXkKQ09ORklHX0lJ
T19TVF9NQUdOX0kyQ18zQVhJUz15CiMgQ09ORklHX1NFTlNPUlNfSE1DNTg0M19JMkMgaXMg
bm90IHNldAojIENPTkZJR19TRU5TT1JTX1JNMzEwMF9JMkMgaXMgbm90IHNldApDT05GSUdf
VElfVE1BRzUyNzM9eQpDT05GSUdfWUFNQUhBX1lBUzUzMD15CiMgZW5kIG9mIE1hZ25ldG9t
ZXRlciBzZW5zb3JzCgojCiMgTXVsdGlwbGV4ZXJzCiMKQ09ORklHX0lJT19NVVg9eQojIGVu
ZCBvZiBNdWx0aXBsZXhlcnMKCiMKIyBJbmNsaW5vbWV0ZXIgc2Vuc29ycwojCiMgZW5kIG9m
IEluY2xpbm9tZXRlciBzZW5zb3JzCgpDT05GSUdfSUlPX0dUU19LVU5JVF9URVNUPXkKQ09O
RklHX0lJT19SRVNDQUxFX0tVTklUX1RFU1Q9eQpDT05GSUdfSUlPX0ZPUk1BVF9LVU5JVF9U
RVNUPXkKCiMKIyBUcmlnZ2VycyAtIHN0YW5kYWxvbmUKIwojIENPTkZJR19JSU9fSFJUSU1F
Ul9UUklHR0VSIGlzIG5vdCBzZXQKIyBDT05GSUdfSUlPX0lOVEVSUlVQVF9UUklHR0VSIGlz
IG5vdCBzZXQKIyBDT05GSUdfSUlPX1RJR0hUTE9PUF9UUklHR0VSIGlzIG5vdCBzZXQKIyBD
T05GSUdfSUlPX1NZU0ZTX1RSSUdHRVIgaXMgbm90IHNldAojIGVuZCBvZiBUcmlnZ2VycyAt
IHN0YW5kYWxvbmUKCiMKIyBMaW5lYXIgYW5kIGFuZ3VsYXIgcG9zaXRpb24gc2Vuc29ycwoj
CiMgZW5kIG9mIExpbmVhciBhbmQgYW5ndWxhciBwb3NpdGlvbiBzZW5zb3JzCgojCiMgRGln
aXRhbCBwb3RlbnRpb21ldGVycwojCkNPTkZJR19BRDUxMTA9eQojIENPTkZJR19BRDUyNzIg
aXMgbm90IHNldApDT05GSUdfRFMxODAzPXkKQ09ORklHX01BWDU0MzI9eQpDT05GSUdfTUNQ
NDAxOD15CkNPTkZJR19NQ1A0NTMxPXkKQ09ORklHX1RQTDAxMDI9eQojIGVuZCBvZiBEaWdp
dGFsIHBvdGVudGlvbWV0ZXJzCgojCiMgRGlnaXRhbCBwb3RlbnRpb3N0YXRzCiMKQ09ORklH
X0xNUDkxMDAwPXkKIyBlbmQgb2YgRGlnaXRhbCBwb3RlbnRpb3N0YXRzCgojCiMgUHJlc3N1
cmUgc2Vuc29ycwojCiMgQ09ORklHX0FCUDA2ME1HIGlzIG5vdCBzZXQKIyBDT05GSUdfUk9I
TV9CTTEzOTAgaXMgbm90IHNldApDT05GSUdfQk1QMjgwPXkKQ09ORklHX0JNUDI4MF9JMkM9
eQojIENPTkZJR19ETEhMNjBEIGlzIG5vdCBzZXQKQ09ORklHX0RQUzMxMD15CiMgQ09ORklH
X0hQMDMgaXMgbm90IHNldApDT05GSUdfSFNDMDMwUEE9eQpDT05GSUdfSFNDMDMwUEFfSTJD
PXkKQ09ORklHX0lDUDEwMTAwPXkKQ09ORklHX01QTDExNT15CkNPTkZJR19NUEwxMTVfSTJD
PXkKQ09ORklHX01QTDMxMTU9eQpDT05GSUdfTVBSTFMwMDI1UEE9eQpDT05GSUdfTVBSTFMw
MDI1UEFfSTJDPXkKQ09ORklHX01TNTYxMT15CkNPTkZJR19NUzU2MTFfSTJDPXkKQ09ORklH
X01TNTYzNz15CiMgQ09ORklHX0lJT19TVF9QUkVTUyBpcyBub3Qgc2V0CiMgQ09ORklHX1Q1
NDAzIGlzIG5vdCBzZXQKIyBDT05GSUdfSFAyMDZDIGlzIG5vdCBzZXQKIyBDT05GSUdfWlBB
MjMyNiBpcyBub3Qgc2V0CiMgZW5kIG9mIFByZXNzdXJlIHNlbnNvcnMKCiMKIyBMaWdodG5p
bmcgc2Vuc29ycwojCiMgZW5kIG9mIExpZ2h0bmluZyBzZW5zb3JzCgojCiMgUHJveGltaXR5
IGFuZCBkaXN0YW5jZSBzZW5zb3JzCiMKIyBDT05GSUdfQ1JPU19FQ19NS0JQX1BST1hJTUlU
WSBpcyBub3Qgc2V0CkNPTkZJR19JUlNEMjAwPXkKQ09ORklHX0lTTDI5NTAxPXkKIyBDT05G
SUdfTElEQVJfTElURV9WMiBpcyBub3Qgc2V0CkNPTkZJR19NQjEyMzI9eQojIENPTkZJR19Q
SU5HIGlzIG5vdCBzZXQKQ09ORklHX1JGRDc3NDAyPXkKQ09ORklHX1NSRjA0PXkKQ09ORklH
X1NYX0NPTU1PTj15CiMgQ09ORklHX1NYOTMxMCBpcyBub3Qgc2V0CkNPTkZJR19TWDkzMjQ9
eQpDT05GSUdfU1g5MzYwPXkKQ09ORklHX1NYOTUwMD15CkNPTkZJR19TUkYwOD15CkNPTkZJ
R19WQ05MMzAyMD15CkNPTkZJR19WTDUzTDBYX0kyQz15CiMgZW5kIG9mIFByb3hpbWl0eSBh
bmQgZGlzdGFuY2Ugc2Vuc29ycwoKIwojIFJlc29sdmVyIHRvIGRpZ2l0YWwgY29udmVydGVy
cwojCiMgZW5kIG9mIFJlc29sdmVyIHRvIGRpZ2l0YWwgY29udmVydGVycwoKIwojIFRlbXBl
cmF0dXJlIHNlbnNvcnMKIwpDT05GSUdfTUxYOTA2MTQ9eQojIENPTkZJR19NTFg5MDYzMiBp
cyBub3Qgc2V0CiMgQ09ORklHX01MWDkwNjM1IGlzIG5vdCBzZXQKQ09ORklHX1RNUDAwNj15
CkNPTkZJR19UTVAwMDc9eQojIENPTkZJR19UTVAxMTcgaXMgbm90IHNldApDT05GSUdfVFNZ
UzAxPXkKIyBDT05GSUdfVFNZUzAyRCBpcyBub3Qgc2V0CiMgQ09ORklHX01BWDMwMjA4IGlz
IG5vdCBzZXQKIyBDT05GSUdfTUNQOTYwMCBpcyBub3Qgc2V0CiMgZW5kIG9mIFRlbXBlcmF0
dXJlIHNlbnNvcnMKCkNPTkZJR19QV009eQpDT05GSUdfUFdNX0FUTUVMX0hMQ0RDX1BXTT15
CkNPTkZJR19QV01fQVRNRUxfVENCPXkKQ09ORklHX1BXTV9DTEs9eQpDT05GSUdfUFdNX0NS
T1NfRUM9eQpDT05GSUdfUFdNX0ZTTF9GVE09eQojIENPTkZJR19QV01fSU5URUxfTEdNIGlz
IG5vdCBzZXQKIyBDT05GSUdfUFdNX0xQMzk0MyBpcyBub3Qgc2V0CiMgQ09ORklHX1BXTV9M
UFNTX1BMQVRGT1JNIGlzIG5vdCBzZXQKIyBDT05GSUdfUFdNX05UWEVDIGlzIG5vdCBzZXQK
Q09ORklHX1BXTV9QQ0E5Njg1PXkKQ09ORklHX1BXTV9TVE1QRT15CkNPTkZJR19QV01fVFdM
PXkKQ09ORklHX1BXTV9UV0xfTEVEPXkKQ09ORklHX1BXTV9YSUxJTlg9eQoKIwojIElSUSBj
aGlwIHN1cHBvcnQKIwpDT05GSUdfSVJRQ0hJUD15CkNPTkZJR19BTF9GSUM9eQpDT05GSUdf
TEFOOTY2WF9PSUM9eQojIENPTkZJR19YSUxJTlhfSU5UQyBpcyBub3Qgc2V0CiMgZW5kIG9m
IElSUSBjaGlwIHN1cHBvcnQKCiMgQ09ORklHX0lQQUNLX0JVUyBpcyBub3Qgc2V0CiMgQ09O
RklHX1JFU0VUX0NPTlRST0xMRVIgaXMgbm90IHNldAoKIwojIFBIWSBTdWJzeXN0ZW0KIwpD
T05GSUdfR0VORVJJQ19QSFk9eQpDT05GSUdfR0VORVJJQ19QSFlfTUlQSV9EUEhZPXkKQ09O
RklHX1BIWV9DQU5fVFJBTlNDRUlWRVI9eQoKIwojIFBIWSBkcml2ZXJzIGZvciBCcm9hZGNv
bSBwbGF0Zm9ybXMKIwpDT05GSUdfQkNNX0tPTkFfVVNCMl9QSFk9eQojIGVuZCBvZiBQSFkg
ZHJpdmVycyBmb3IgQnJvYWRjb20gcGxhdGZvcm1zCgpDT05GSUdfUEhZX0NBREVOQ0VfVE9S
UkVOVD15CiMgQ09ORklHX1BIWV9DQURFTkNFX0RQSFkgaXMgbm90IHNldAojIENPTkZJR19Q
SFlfQ0FERU5DRV9EUEhZX1JYIGlzIG5vdCBzZXQKQ09ORklHX1BIWV9DQURFTkNFX1NBTFZP
PXkKQ09ORklHX1BIWV9QWEFfMjhOTV9IU0lDPXkKQ09ORklHX1BIWV9QWEFfMjhOTV9VU0Iy
PXkKIyBDT05GSUdfUEhZX0xBTjk2NlhfU0VSREVTIGlzIG5vdCBzZXQKIyBDT05GSUdfUEhZ
X09DRUxPVF9TRVJERVMgaXMgbm90IHNldAojIENPTkZJR19QSFlfSU5URUxfTEdNX0NPTUJP
IGlzIG5vdCBzZXQKIyBDT05GSUdfUEhZX0lOVEVMX0xHTV9FTU1DIGlzIG5vdCBzZXQKIyBl
bmQgb2YgUEhZIFN1YnN5c3RlbQoKQ09ORklHX1BPV0VSQ0FQPXkKQ09ORklHX0lETEVfSU5K
RUNUPXkKIyBDT05GSUdfRFRQTSBpcyBub3Qgc2V0CkNPTkZJR19NQ0I9eQojIENPTkZJR19N
Q0JfTFBDIGlzIG5vdCBzZXQKCiMKIyBQZXJmb3JtYW5jZSBtb25pdG9yIHN1cHBvcnQKIwoj
IGVuZCBvZiBQZXJmb3JtYW5jZSBtb25pdG9yIHN1cHBvcnQKCiMgQ09ORklHX1JBUyBpcyBu
b3Qgc2V0CgojCiMgQW5kcm9pZAojCiMgQ09ORklHX0FORFJPSURfQklOREVSX0lQQyBpcyBu
b3Qgc2V0CiMgZW5kIG9mIEFuZHJvaWQKCiMgQ09ORklHX0RBWCBpcyBub3Qgc2V0CkNPTkZJ
R19OVk1FTT15CkNPTkZJR19OVk1FTV9TWVNGUz15CkNPTkZJR19OVk1FTV9MQVlPVVRTPXkK
CiMKIyBMYXlvdXQgVHlwZXMKIwojIENPTkZJR19OVk1FTV9MQVlPVVRfU0wyOF9WUEQgaXMg
bm90IHNldApDT05GSUdfTlZNRU1fTEFZT1VUX09OSUVfVExWPXkKIyBlbmQgb2YgTGF5b3V0
IFR5cGVzCgpDT05GSUdfTlZNRU1fUk1FTT15CkNPTkZJR19OVk1FTV9VX0JPT1RfRU5WPXkK
CiMKIyBIVyB0cmFjaW5nIHN1cHBvcnQKIwpDT05GSUdfU1RNPXkKQ09ORklHX1NUTV9QUk9U
T19CQVNJQz15CkNPTkZJR19TVE1fUFJPVE9fU1lTX1Q9eQpDT05GSUdfU1RNX0RVTU1ZPXkK
IyBDT05GSUdfU1RNX1NPVVJDRV9DT05TT0xFIGlzIG5vdCBzZXQKQ09ORklHX1NUTV9TT1VS
Q0VfSEVBUlRCRUFUPXkKQ09ORklHX0lOVEVMX1RIPXkKQ09ORklHX0lOVEVMX1RIX0FDUEk9
eQpDT05GSUdfSU5URUxfVEhfR1RIPXkKQ09ORklHX0lOVEVMX1RIX1NUSD15CkNPTkZJR19J
TlRFTF9USF9NU1U9eQpDT05GSUdfSU5URUxfVEhfUFRJPXkKIyBlbmQgb2YgSFcgdHJhY2lu
ZyBzdXBwb3J0CgojIENPTkZJR19GUEdBIGlzIG5vdCBzZXQKIyBDT05GSUdfRlNJIGlzIG5v
dCBzZXQKIyBDT05GSUdfVEVFIGlzIG5vdCBzZXQKQ09ORklHX01VTFRJUExFWEVSPXkKCiMK
IyBNdWx0aXBsZXhlciBkcml2ZXJzCiMKQ09ORklHX01VWF9BREc3OTJBPXkKQ09ORklHX01V
WF9HUElPPXkKQ09ORklHX01VWF9NTUlPPXkKIyBlbmQgb2YgTXVsdGlwbGV4ZXIgZHJpdmVy
cwoKQ09ORklHX1BNX09QUD15CkNPTkZJR19TSU9YPXkKIyBDT05GSUdfU0lPWF9CVVNfR1BJ
TyBpcyBub3Qgc2V0CkNPTkZJR19TTElNQlVTPXkKQ09ORklHX1NMSU1fUUNPTV9DVFJMPXkK
Q09ORklHX0lOVEVSQ09OTkVDVD15CkNPTkZJR19DT1VOVEVSPXkKQ09ORklHX0lOVEVSUlVQ
VF9DTlQ9eQojIENPTkZJR19NT1NUIGlzIG5vdCBzZXQKIyBDT05GSUdfUEVDSSBpcyBub3Qg
c2V0CkNPTkZJR19IVEU9eQojIGVuZCBvZiBEZXZpY2UgRHJpdmVycwoKIwojIEZpbGUgc3lz
dGVtcwojCkNPTkZJR19EQ0FDSEVfV09SRF9BQ0NFU1M9eQpDT05GSUdfVkFMSURBVEVfRlNf
UEFSU0VSPXkKQ09ORklHX0ZTX0lPTUFQPXkKQ09ORklHX0JVRkZFUl9IRUFEPXkKQ09ORklH
X0xFR0FDWV9ESVJFQ1RfSU89eQojIENPTkZJR19FWFQyX0ZTIGlzIG5vdCBzZXQKQ09ORklH
X0VYVDNfRlM9eQpDT05GSUdfRVhUM19GU19QT1NJWF9BQ0w9eQpDT05GSUdfRVhUM19GU19T
RUNVUklUWT15CkNPTkZJR19FWFQ0X0ZTPXkKQ09ORklHX0VYVDRfVVNFX0ZPUl9FWFQyPXkK
Q09ORklHX0VYVDRfRlNfUE9TSVhfQUNMPXkKQ09ORklHX0VYVDRfRlNfU0VDVVJJVFk9eQoj
IENPTkZJR19FWFQ0X0RFQlVHIGlzIG5vdCBzZXQKQ09ORklHX0VYVDRfS1VOSVRfVEVTVFM9
eQpDT05GSUdfSkJEMj15CkNPTkZJR19KQkQyX0RFQlVHPXkKQ09ORklHX0ZTX01CQ0FDSEU9
eQpDT05GSUdfUkVJU0VSRlNfRlM9eQpDT05GSUdfUkVJU0VSRlNfQ0hFQ0s9eQpDT05GSUdf
UkVJU0VSRlNfUFJPQ19JTkZPPXkKIyBDT05GSUdfUkVJU0VSRlNfRlNfWEFUVFIgaXMgbm90
IHNldAojIENPTkZJR19KRlNfRlMgaXMgbm90IHNldAojIENPTkZJR19YRlNfRlMgaXMgbm90
IHNldApDT05GSUdfR0ZTMl9GUz15CiMgQ09ORklHX0JUUkZTX0ZTIGlzIG5vdCBzZXQKQ09O
RklHX05JTEZTMl9GUz15CkNPTkZJR19GMkZTX0ZTPXkKIyBDT05GSUdfRjJGU19TVEFUX0ZT
IGlzIG5vdCBzZXQKIyBDT05GSUdfRjJGU19GU19YQVRUUiBpcyBub3Qgc2V0CiMgQ09ORklH
X0YyRlNfQ0hFQ0tfRlMgaXMgbm90IHNldApDT05GSUdfRjJGU19GQVVMVF9JTkpFQ1RJT049
eQojIENPTkZJR19GMkZTX0ZTX0NPTVBSRVNTSU9OIGlzIG5vdCBzZXQKQ09ORklHX0YyRlNf
SU9TVEFUPXkKQ09ORklHX0JDQUNIRUZTX0ZTPXkKIyBDT05GSUdfQkNBQ0hFRlNfUVVPVEEg
aXMgbm90IHNldAojIENPTkZJR19CQ0FDSEVGU19FUkFTVVJFX0NPRElORyBpcyBub3Qgc2V0
CkNPTkZJR19CQ0FDSEVGU19QT1NJWF9BQ0w9eQojIENPTkZJR19CQ0FDSEVGU19ERUJVRyBp
cyBub3Qgc2V0CiMgQ09ORklHX0JDQUNIRUZTX1RFU1RTIGlzIG5vdCBzZXQKIyBDT05GSUdf
QkNBQ0hFRlNfTE9DS19USU1FX1NUQVRTIGlzIG5vdCBzZXQKQ09ORklHX0JDQUNIRUZTX05P
X0xBVEVOQ1lfQUNDVD15CkNPTkZJR19CQ0FDSEVGU19TSVhfT1BUSU1JU1RJQ19TUElOPXkK
Q09ORklHX01FQU5fQU5EX1ZBUklBTkNFX1VOSVRfVEVTVD15CkNPTkZJR19GU19QT1NJWF9B
Q0w9eQpDT05GSUdfRVhQT1JURlM9eQojIENPTkZJR19FWFBPUlRGU19CTE9DS19PUFMgaXMg
bm90IHNldApDT05GSUdfRklMRV9MT0NLSU5HPXkKIyBDT05GSUdfRlNfRU5DUllQVElPTiBp
cyBub3Qgc2V0CiMgQ09ORklHX0ZTX1ZFUklUWSBpcyBub3Qgc2V0CkNPTkZJR19GU05PVElG
WT15CiMgQ09ORklHX0ROT1RJRlkgaXMgbm90IHNldApDT05GSUdfSU5PVElGWV9VU0VSPXkK
Q09ORklHX0ZBTk9USUZZPXkKIyBDT05GSUdfUVVPVEEgaXMgbm90IHNldAojIENPTkZJR19R
VU9UQV9ORVRMSU5LX0lOVEVSRkFDRSBpcyBub3Qgc2V0CkNPTkZJR19RVU9UQUNUTD15CkNP
TkZJR19BVVRPRlNfRlM9eQojIENPTkZJR19GVVNFX0ZTIGlzIG5vdCBzZXQKIyBDT05GSUdf
T1ZFUkxBWV9GUyBpcyBub3Qgc2V0CgojCiMgQ2FjaGVzCiMKQ09ORklHX05FVEZTX1NVUFBP
UlQ9eQojIENPTkZJR19ORVRGU19TVEFUUyBpcyBub3Qgc2V0CiMgQ09ORklHX0ZTQ0FDSEUg
aXMgbm90IHNldAojIGVuZCBvZiBDYWNoZXMKCiMKIyBDRC1ST00vRFZEIEZpbGVzeXN0ZW1z
CiMKQ09ORklHX0lTTzk2NjBfRlM9eQpDT05GSUdfSk9MSUVUPXkKIyBDT05GSUdfWklTT0ZT
IGlzIG5vdCBzZXQKQ09ORklHX1VERl9GUz15CiMgZW5kIG9mIENELVJPTS9EVkQgRmlsZXN5
c3RlbXMKCiMKIyBET1MvRkFUL0VYRkFUL05UIEZpbGVzeXN0ZW1zCiMKQ09ORklHX0ZBVF9G
Uz15CkNPTkZJR19NU0RPU19GUz15CkNPTkZJR19WRkFUX0ZTPXkKQ09ORklHX0ZBVF9ERUZB
VUxUX0NPREVQQUdFPTQzNwpDT05GSUdfRkFUX0RFRkFVTFRfSU9DSEFSU0VUPSJpc284ODU5
LTEiCiMgQ09ORklHX0ZBVF9ERUZBVUxUX1VURjggaXMgbm90IHNldApDT05GSUdfRkFUX0tV
TklUX1RFU1Q9eQpDT05GSUdfRVhGQVRfRlM9eQpDT05GSUdfRVhGQVRfREVGQVVMVF9JT0NI
QVJTRVQ9InV0ZjgiCkNPTkZJR19OVEZTM19GUz15CkNPTkZJR19OVEZTM19MWlhfWFBSRVNT
PXkKQ09ORklHX05URlMzX0ZTX1BPU0lYX0FDTD15CkNPTkZJR19OVEZTX0ZTPXkKIyBlbmQg
b2YgRE9TL0ZBVC9FWEZBVC9OVCBGaWxlc3lzdGVtcwoKIwojIFBzZXVkbyBmaWxlc3lzdGVt
cwojCkNPTkZJR19QUk9DX0ZTPXkKIyBDT05GSUdfUFJPQ19LQ09SRSBpcyBub3Qgc2V0CkNP
TkZJR19QUk9DX1NZU0NUTD15CkNPTkZJR19QUk9DX1BBR0VfTU9OSVRPUj15CkNPTkZJR19Q
Uk9DX0NISUxEUkVOPXkKQ09ORklHX1BST0NfUElEX0FSQ0hfU1RBVFVTPXkKQ09ORklHX0tF
Uk5GUz15CkNPTkZJR19TWVNGUz15CkNPTkZJR19UTVBGUz15CiMgQ09ORklHX1RNUEZTX1BP
U0lYX0FDTCBpcyBub3Qgc2V0CkNPTkZJR19UTVBGU19YQVRUUj15CiMgQ09ORklHX1RNUEZT
X1FVT1RBIGlzIG5vdCBzZXQKIyBDT05GSUdfSFVHRVRMQkZTIGlzIG5vdCBzZXQKQ09ORklH
X0NPTkZJR0ZTX0ZTPXkKQ09ORklHX0VGSVZBUl9GUz15CiMgZW5kIG9mIFBzZXVkbyBmaWxl
c3lzdGVtcwoKQ09ORklHX01JU0NfRklMRVNZU1RFTVM9eQojIENPTkZJR19PUkFOR0VGU19G
UyBpcyBub3Qgc2V0CiMgQ09ORklHX0FERlNfRlMgaXMgbm90IHNldAojIENPTkZJR19BRkZT
X0ZTIGlzIG5vdCBzZXQKIyBDT05GSUdfRUNSWVBUX0ZTIGlzIG5vdCBzZXQKIyBDT05GSUdf
SEZTX0ZTIGlzIG5vdCBzZXQKIyBDT05GSUdfSEZTUExVU19GUyBpcyBub3Qgc2V0CkNPTkZJ
R19CRUZTX0ZTPXkKQ09ORklHX0JFRlNfREVCVUc9eQpDT05GSUdfQkZTX0ZTPXkKQ09ORklH
X0VGU19GUz15CkNPTkZJR19KRkZTMl9GUz15CkNPTkZJR19KRkZTMl9GU19ERUJVRz0wCiMg
Q09ORklHX0pGRlMyX0ZTX1dSSVRFQlVGRkVSIGlzIG5vdCBzZXQKIyBDT05GSUdfSkZGUzJf
U1VNTUFSWSBpcyBub3Qgc2V0CkNPTkZJR19KRkZTMl9GU19YQVRUUj15CkNPTkZJR19KRkZT
Ml9GU19QT1NJWF9BQ0w9eQpDT05GSUdfSkZGUzJfRlNfU0VDVVJJVFk9eQpDT05GSUdfSkZG
UzJfQ09NUFJFU1NJT05fT1BUSU9OUz15CkNPTkZJR19KRkZTMl9aTElCPXkKQ09ORklHX0pG
RlMyX0xaTz15CiMgQ09ORklHX0pGRlMyX1JUSU1FIGlzIG5vdCBzZXQKIyBDT05GSUdfSkZG
UzJfUlVCSU4gaXMgbm90IHNldAojIENPTkZJR19KRkZTMl9DTU9ERV9OT05FIGlzIG5vdCBz
ZXQKIyBDT05GSUdfSkZGUzJfQ01PREVfUFJJT1JJVFkgaXMgbm90IHNldAojIENPTkZJR19K
RkZTMl9DTU9ERV9TSVpFIGlzIG5vdCBzZXQKQ09ORklHX0pGRlMyX0NNT0RFX0ZBVk9VUkxa
Tz15CkNPTkZJR19DUkFNRlM9eQpDT05GSUdfQ1JBTUZTX0JMT0NLREVWPXkKIyBDT05GSUdf
Q1JBTUZTX01URCBpcyBub3Qgc2V0CiMgQ09ORklHX1NRVUFTSEZTIGlzIG5vdCBzZXQKQ09O
RklHX1ZYRlNfRlM9eQojIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0CiMgQ09ORklHX09N
RlNfRlMgaXMgbm90IHNldApDT05GSUdfSFBGU19GUz15CiMgQ09ORklHX1FOWDRGU19GUyBp
cyBub3Qgc2V0CkNPTkZJR19RTlg2RlNfRlM9eQojIENPTkZJR19RTlg2RlNfREVCVUcgaXMg
bm90IHNldApDT05GSUdfUk9NRlNfRlM9eQojIENPTkZJR19ST01GU19CQUNLRURfQllfQkxP
Q0sgaXMgbm90IHNldApDT05GSUdfUk9NRlNfQkFDS0VEX0JZX01URD15CiMgQ09ORklHX1JP
TUZTX0JBQ0tFRF9CWV9CT1RIIGlzIG5vdCBzZXQKQ09ORklHX1JPTUZTX09OX01URD15CkNP
TkZJR19QU1RPUkU9eQpDT05GSUdfUFNUT1JFX0RFRkFVTFRfS01TR19CWVRFUz0xMDI0MApD
T05GSUdfUFNUT1JFX0NPTVBSRVNTPXkKQ09ORklHX1BTVE9SRV9DT05TT0xFPXkKIyBDT05G
SUdfUFNUT1JFX1BNU0cgaXMgbm90IHNldAojIENPTkZJR19QU1RPUkVfUkFNIGlzIG5vdCBz
ZXQKIyBDT05GSUdfUFNUT1JFX0JMSyBpcyBub3Qgc2V0CkNPTkZJR19TWVNWX0ZTPXkKQ09O
RklHX1VGU19GUz15CkNPTkZJR19VRlNfRlNfV1JJVEU9eQojIENPTkZJR19VRlNfREVCVUcg
aXMgbm90IHNldAojIENPTkZJR19FUk9GU19GUyBpcyBub3Qgc2V0CkNPTkZJR19ORVRXT1JL
X0ZJTEVTWVNURU1TPXkKIyBDT05GSUdfOVBfRlMgaXMgbm90IHNldApDT05GSUdfTkxTPXkK
Q09ORklHX05MU19ERUZBVUxUPSJpc284ODU5LTEiCiMgQ09ORklHX05MU19DT0RFUEFHRV80
MzcgaXMgbm90IHNldApDT05GSUdfTkxTX0NPREVQQUdFXzczNz15CkNPTkZJR19OTFNfQ09E
RVBBR0VfNzc1PXkKQ09ORklHX05MU19DT0RFUEFHRV84NTA9eQojIENPTkZJR19OTFNfQ09E
RVBBR0VfODUyIGlzIG5vdCBzZXQKIyBDT05GSUdfTkxTX0NPREVQQUdFXzg1NSBpcyBub3Qg
c2V0CkNPTkZJR19OTFNfQ09ERVBBR0VfODU3PXkKQ09ORklHX05MU19DT0RFUEFHRV84NjA9
eQojIENPTkZJR19OTFNfQ09ERVBBR0VfODYxIGlzIG5vdCBzZXQKIyBDT05GSUdfTkxTX0NP
REVQQUdFXzg2MiBpcyBub3Qgc2V0CiMgQ09ORklHX05MU19DT0RFUEFHRV84NjMgaXMgbm90
IHNldApDT05GSUdfTkxTX0NPREVQQUdFXzg2ND15CiMgQ09ORklHX05MU19DT0RFUEFHRV84
NjUgaXMgbm90IHNldApDT05GSUdfTkxTX0NPREVQQUdFXzg2Nj15CkNPTkZJR19OTFNfQ09E
RVBBR0VfODY5PXkKIyBDT05GSUdfTkxTX0NPREVQQUdFXzkzNiBpcyBub3Qgc2V0CkNPTkZJ
R19OTFNfQ09ERVBBR0VfOTUwPXkKQ09ORklHX05MU19DT0RFUEFHRV85MzI9eQpDT05GSUdf
TkxTX0NPREVQQUdFXzk0OT15CiMgQ09ORklHX05MU19DT0RFUEFHRV84NzQgaXMgbm90IHNl
dApDT05GSUdfTkxTX0lTTzg4NTlfOD15CiMgQ09ORklHX05MU19DT0RFUEFHRV8xMjUwIGlz
IG5vdCBzZXQKIyBDT05GSUdfTkxTX0NPREVQQUdFXzEyNTEgaXMgbm90IHNldAojIENPTkZJ
R19OTFNfQVNDSUkgaXMgbm90IHNldApDT05GSUdfTkxTX0lTTzg4NTlfMT15CiMgQ09ORklH
X05MU19JU084ODU5XzIgaXMgbm90IHNldApDT05GSUdfTkxTX0lTTzg4NTlfMz15CiMgQ09O
RklHX05MU19JU084ODU5XzQgaXMgbm90IHNldAojIENPTkZJR19OTFNfSVNPODg1OV81IGlz
IG5vdCBzZXQKQ09ORklHX05MU19JU084ODU5XzY9eQpDT05GSUdfTkxTX0lTTzg4NTlfNz15
CiMgQ09ORklHX05MU19JU084ODU5XzkgaXMgbm90IHNldApDT05GSUdfTkxTX0lTTzg4NTlf
MTM9eQpDT05GSUdfTkxTX0lTTzg4NTlfMTQ9eQpDT05GSUdfTkxTX0lTTzg4NTlfMTU9eQpD
T05GSUdfTkxTX0tPSThfUj15CkNPTkZJR19OTFNfS09JOF9VPXkKQ09ORklHX05MU19NQUNf
Uk9NQU49eQojIENPTkZJR19OTFNfTUFDX0NFTFRJQyBpcyBub3Qgc2V0CiMgQ09ORklHX05M
U19NQUNfQ0VOVEVVUk8gaXMgbm90IHNldApDT05GSUdfTkxTX01BQ19DUk9BVElBTj15CkNP
TkZJR19OTFNfTUFDX0NZUklMTElDPXkKIyBDT05GSUdfTkxTX01BQ19HQUVMSUMgaXMgbm90
IHNldApDT05GSUdfTkxTX01BQ19HUkVFSz15CkNPTkZJR19OTFNfTUFDX0lDRUxBTkQ9eQoj
IENPTkZJR19OTFNfTUFDX0lOVUlUIGlzIG5vdCBzZXQKQ09ORklHX05MU19NQUNfUk9NQU5J
QU49eQojIENPTkZJR19OTFNfTUFDX1RVUktJU0ggaXMgbm90IHNldApDT05GSUdfTkxTX1VU
Rjg9eQpDT05GSUdfVU5JQ09ERT15CkNPTkZJR19VTklDT0RFX05PUk1BTElaQVRJT05fU0VM
RlRFU1Q9eQpDT05GSUdfSU9fV1E9eQojIGVuZCBvZiBGaWxlIHN5c3RlbXMKCiMKIyBTZWN1
cml0eSBvcHRpb25zCiMKQ09ORklHX0tFWVM9eQojIENPTkZJR19LRVlTX1JFUVVFU1RfQ0FD
SEUgaXMgbm90IHNldApDT05GSUdfUEVSU0lTVEVOVF9LRVlSSU5HUz15CkNPTkZJR19UUlVT
VEVEX0tFWVM9eQpDT05GSUdfSEFWRV9UUlVTVEVEX0tFWVM9eQpDT05GSUdfVFJVU1RFRF9L
RVlTX1RQTT15CiMgQ09ORklHX0VOQ1JZUFRFRF9LRVlTIGlzIG5vdCBzZXQKIyBDT05GSUdf
S0VZX0RIX09QRVJBVElPTlMgaXMgbm90IHNldAojIENPTkZJR19TRUNVUklUWV9ETUVTR19S
RVNUUklDVCBpcyBub3Qgc2V0CiMgQ09ORklHX1NFQ1VSSVRZIGlzIG5vdCBzZXQKIyBDT05G
SUdfU0VDVVJJVFlGUyBpcyBub3Qgc2V0CiMgQ09ORklHX0hBUkRFTkVEX1VTRVJDT1BZIGlz
IG5vdCBzZXQKQ09ORklHX0ZPUlRJRllfU09VUkNFPXkKQ09ORklHX1NUQVRJQ19VU0VSTU9E
RUhFTFBFUj15CkNPTkZJR19TVEFUSUNfVVNFUk1PREVIRUxQRVJfUEFUSD0iL3NiaW4vdXNl
cm1vZGUtaGVscGVyIgojIENPTkZJR19QUk9DX01FTV9SRVNUUklDVF9GT0xMX0ZPUkNFX09G
RiBpcyBub3Qgc2V0CkNPTkZJR19QUk9DX01FTV9SRVNUUklDVF9GT0xMX0ZPUkNFX1BUUkFD
RT15CiMgQ09ORklHX1BST0NfTUVNX1JFU1RSSUNUX0ZPTExfRk9SQ0VfQUxMIGlzIG5vdCBz
ZXQKQ09ORklHX1BST0NfTUVNX1JFU1RSSUNUX09QRU5fUkVBRF9PRkY9eQojIENPTkZJR19Q
Uk9DX01FTV9SRVNUUklDVF9PUEVOX1JFQURfUFRSQUNFIGlzIG5vdCBzZXQKIyBDT05GSUdf
UFJPQ19NRU1fUkVTVFJJQ1RfT1BFTl9SRUFEX0FMTCBpcyBub3Qgc2V0CkNPTkZJR19QUk9D
X01FTV9SRVNUUklDVF9PUEVOX1dSSVRFX09GRj15CiMgQ09ORklHX1BST0NfTUVNX1JFU1RS
SUNUX09QRU5fV1JJVEVfUFRSQUNFIGlzIG5vdCBzZXQKIyBDT05GSUdfUFJPQ19NRU1fUkVT
VFJJQ1RfT1BFTl9XUklURV9BTEwgaXMgbm90IHNldApDT05GSUdfUFJPQ19NRU1fUkVTVFJJ
Q1RfV1JJVEVfT0ZGPXkKIyBDT05GSUdfUFJPQ19NRU1fUkVTVFJJQ1RfV1JJVEVfUFRSQUNF
IGlzIG5vdCBzZXQKIyBDT05GSUdfUFJPQ19NRU1fUkVTVFJJQ1RfV1JJVEVfQUxMIGlzIG5v
dCBzZXQKIyBDT05GSUdfSU1BX1NFQ1VSRV9BTkRfT1JfVFJVU1RFRF9CT09UIGlzIG5vdCBz
ZXQKQ09ORklHX0RFRkFVTFRfU0VDVVJJVFlfREFDPXkKQ09ORklHX0xTTT0ibGFuZGxvY2ss
bG9ja2Rvd24seWFtYSxsb2FkcGluLHNhZmVzZXRpZCxicGYiCgojCiMgS2VybmVsIGhhcmRl
bmluZyBvcHRpb25zCiMKCiMKIyBNZW1vcnkgaW5pdGlhbGl6YXRpb24KIwpDT05GSUdfQ0Nf
SEFTX0FVVE9fVkFSX0lOSVRfUEFUVEVSTj15CkNPTkZJR19DQ19IQVNfQVVUT19WQVJfSU5J
VF9aRVJPX0JBUkU9eQpDT05GSUdfQ0NfSEFTX0FVVE9fVkFSX0lOSVRfWkVSTz15CiMgQ09O
RklHX0lOSVRfU1RBQ0tfTk9ORSBpcyBub3Qgc2V0CiMgQ09ORklHX0lOSVRfU1RBQ0tfQUxM
X1BBVFRFUk4gaXMgbm90IHNldApDT05GSUdfSU5JVF9TVEFDS19BTExfWkVSTz15CiMgQ09O
RklHX0lOSVRfT05fQUxMT0NfREVGQVVMVF9PTiBpcyBub3Qgc2V0CiMgQ09ORklHX0lOSVRf
T05fRlJFRV9ERUZBVUxUX09OIGlzIG5vdCBzZXQKQ09ORklHX0NDX0hBU19aRVJPX0NBTExf
VVNFRF9SRUdTPXkKQ09ORklHX1pFUk9fQ0FMTF9VU0VEX1JFR1M9eQojIGVuZCBvZiBNZW1v
cnkgaW5pdGlhbGl6YXRpb24KCiMKIyBIYXJkZW5pbmcgb2Yga2VybmVsIGRhdGEgc3RydWN0
dXJlcwojCiMgQ09ORklHX0xJU1RfSEFSREVORUQgaXMgbm90IHNldAojIENPTkZJR19CVUdf
T05fREFUQV9DT1JSVVBUSU9OIGlzIG5vdCBzZXQKIyBlbmQgb2YgSGFyZGVuaW5nIG9mIGtl
cm5lbCBkYXRhIHN0cnVjdHVyZXMKCkNPTkZJR19SQU5EU1RSVUNUX05PTkU9eQojIGVuZCBv
ZiBLZXJuZWwgaGFyZGVuaW5nIG9wdGlvbnMKIyBlbmQgb2YgU2VjdXJpdHkgb3B0aW9ucwoK
Q09ORklHX1hPUl9CTE9DS1M9eQpDT05GSUdfQVNZTkNfQ09SRT15CkNPTkZJR19BU1lOQ19N
RU1DUFk9eQpDT05GSUdfQVNZTkNfWE9SPXkKQ09ORklHX0FTWU5DX1BRPXkKQ09ORklHX0FT
WU5DX1JBSUQ2X1JFQ09WPXkKQ09ORklHX0NSWVBUTz15CgojCiMgQ3J5cHRvIGNvcmUgb3Ig
aGVscGVyCiMKQ09ORklHX0NSWVBUT19BTEdBUEk9eQpDT05GSUdfQ1JZUFRPX0FMR0FQSTI9
eQpDT05GSUdfQ1JZUFRPX0FFQUQ9eQpDT05GSUdfQ1JZUFRPX0FFQUQyPXkKQ09ORklHX0NS
WVBUT19TSUcyPXkKQ09ORklHX0NSWVBUT19TS0NJUEhFUj15CkNPTkZJR19DUllQVE9fU0tD
SVBIRVIyPXkKQ09ORklHX0NSWVBUT19IQVNIPXkKQ09ORklHX0NSWVBUT19IQVNIMj15CkNP
TkZJR19DUllQVE9fUk5HPXkKQ09ORklHX0NSWVBUT19STkcyPXkKQ09ORklHX0NSWVBUT19S
TkdfREVGQVVMVD15CkNPTkZJR19DUllQVE9fQUtDSVBIRVIyPXkKQ09ORklHX0NSWVBUT19B
S0NJUEhFUj15CkNPTkZJR19DUllQVE9fS1BQMj15CkNPTkZJR19DUllQVE9fS1BQPXkKQ09O
RklHX0NSWVBUT19BQ09NUDI9eQpDT05GSUdfQ1JZUFRPX01BTkFHRVI9eQpDT05GSUdfQ1JZ
UFRPX01BTkFHRVIyPXkKIyBDT05GSUdfQ1JZUFRPX1VTRVIgaXMgbm90IHNldApDT05GSUdf
Q1JZUFRPX01BTkFHRVJfRElTQUJMRV9URVNUUz15CkNPTkZJR19DUllQVE9fTlVMTD15CkNP
TkZJR19DUllQVE9fTlVMTDI9eQojIENPTkZJR19DUllQVE9fUENSWVBUIGlzIG5vdCBzZXQK
Q09ORklHX0NSWVBUT19DUllQVEQ9eQpDT05GSUdfQ1JZUFRPX0FVVEhFTkM9eQpDT05GSUdf
Q1JZUFRPX1NJTUQ9eQojIGVuZCBvZiBDcnlwdG8gY29yZSBvciBoZWxwZXIKCiMKIyBQdWJs
aWMta2V5IGNyeXB0b2dyYXBoeQojCiMgQ09ORklHX0NSWVBUT19SU0EgaXMgbm90IHNldApD
T05GSUdfQ1JZUFRPX0RIPXkKQ09ORklHX0NSWVBUT19ESF9SRkM3OTE5X0dST1VQUz15CkNP
TkZJR19DUllQVE9fRUNDPXkKQ09ORklHX0NSWVBUT19FQ0RIPXkKIyBDT05GSUdfQ1JZUFRP
X0VDRFNBIGlzIG5vdCBzZXQKQ09ORklHX0NSWVBUT19FQ1JEU0E9eQpDT05GSUdfQ1JZUFRP
X0NVUlZFMjU1MTk9eQojIGVuZCBvZiBQdWJsaWMta2V5IGNyeXB0b2dyYXBoeQoKIwojIEJs
b2NrIGNpcGhlcnMKIwpDT05GSUdfQ1JZUFRPX0FFUz15CiMgQ09ORklHX0NSWVBUT19BRVNf
VEkgaXMgbm90IHNldAojIENPTkZJR19DUllQVE9fQU5VQklTIGlzIG5vdCBzZXQKQ09ORklH
X0NSWVBUT19BUklBPXkKQ09ORklHX0NSWVBUT19CTE9XRklTSD15CkNPTkZJR19DUllQVE9f
QkxPV0ZJU0hfQ09NTU9OPXkKIyBDT05GSUdfQ1JZUFRPX0NBTUVMTElBIGlzIG5vdCBzZXQK
Q09ORklHX0NSWVBUT19DQVNUX0NPTU1PTj15CkNPTkZJR19DUllQVE9fQ0FTVDU9eQpDT05G
SUdfQ1JZUFRPX0NBU1Q2PXkKQ09ORklHX0NSWVBUT19ERVM9eQpDT05GSUdfQ1JZUFRPX0ZD
UllQVD15CkNPTkZJR19DUllQVE9fS0hBWkFEPXkKQ09ORklHX0NSWVBUT19TRUVEPXkKQ09O
RklHX0NSWVBUT19TRVJQRU5UPXkKIyBDT05GSUdfQ1JZUFRPX1NNNF9HRU5FUklDIGlzIG5v
dCBzZXQKQ09ORklHX0NSWVBUT19URUE9eQojIENPTkZJR19DUllQVE9fVFdPRklTSCBpcyBu
b3Qgc2V0CiMgZW5kIG9mIEJsb2NrIGNpcGhlcnMKCiMKIyBMZW5ndGgtcHJlc2VydmluZyBj
aXBoZXJzIGFuZCBtb2RlcwojCkNPTkZJR19DUllQVE9fQURJQU5UVU09eQpDT05GSUdfQ1JZ
UFRPX0FSQzQ9eQpDT05GSUdfQ1JZUFRPX0NIQUNIQTIwPXkKQ09ORklHX0NSWVBUT19DQkM9
eQpDT05GSUdfQ1JZUFRPX0NUUj15CkNPTkZJR19DUllQVE9fQ1RTPXkKQ09ORklHX0NSWVBU
T19FQ0I9eQpDT05GSUdfQ1JZUFRPX0hDVFIyPXkKQ09ORklHX0NSWVBUT19LRVlXUkFQPXkK
IyBDT05GSUdfQ1JZUFRPX0xSVyBpcyBub3Qgc2V0CkNPTkZJR19DUllQVE9fUENCQz15CkNP
TkZJR19DUllQVE9fWENUUj15CkNPTkZJR19DUllQVE9fWFRTPXkKQ09ORklHX0NSWVBUT19O
SFBPTFkxMzA1PXkKIyBlbmQgb2YgTGVuZ3RoLXByZXNlcnZpbmcgY2lwaGVycyBhbmQgbW9k
ZXMKCiMKIyBBRUFEIChhdXRoZW50aWNhdGVkIGVuY3J5cHRpb24gd2l0aCBhc3NvY2lhdGVk
IGRhdGEpIGNpcGhlcnMKIwojIENPTkZJR19DUllQVE9fQUVHSVMxMjggaXMgbm90IHNldApD
T05GSUdfQ1JZUFRPX0NIQUNIQTIwUE9MWTEzMDU9eQpDT05GSUdfQ1JZUFRPX0NDTT15CiMg
Q09ORklHX0NSWVBUT19HQ00gaXMgbm90IHNldApDT05GSUdfQ1JZUFRPX0dFTklWPXkKQ09O
RklHX0NSWVBUT19TRVFJVj15CkNPTkZJR19DUllQVE9fRUNIQUlOSVY9eQpDT05GSUdfQ1JZ
UFRPX0VTU0lWPXkKIyBlbmQgb2YgQUVBRCAoYXV0aGVudGljYXRlZCBlbmNyeXB0aW9uIHdp
dGggYXNzb2NpYXRlZCBkYXRhKSBjaXBoZXJzCgojCiMgSGFzaGVzLCBkaWdlc3RzLCBhbmQg
TUFDcwojCkNPTkZJR19DUllQVE9fQkxBS0UyQj15CkNPTkZJR19DUllQVE9fQ01BQz15CkNP
TkZJR19DUllQVE9fR0hBU0g9eQpDT05GSUdfQ1JZUFRPX0hNQUM9eQpDT05GSUdfQ1JZUFRP
X01END15CkNPTkZJR19DUllQVE9fTUQ1PXkKQ09ORklHX0NSWVBUT19NSUNIQUVMX01JQz15
CkNPTkZJR19DUllQVE9fUE9MWVZBTD15CkNPTkZJR19DUllQVE9fUE9MWTEzMDU9eQpDT05G
SUdfQ1JZUFRPX1JNRDE2MD15CkNPTkZJR19DUllQVE9fU0hBMT15CkNPTkZJR19DUllQVE9f
U0hBMjU2PXkKQ09ORklHX0NSWVBUT19TSEE1MTI9eQpDT05GSUdfQ1JZUFRPX1NIQTM9eQpD
T05GSUdfQ1JZUFRPX1NNMz15CkNPTkZJR19DUllQVE9fU00zX0dFTkVSSUM9eQpDT05GSUdf
Q1JZUFRPX1NUUkVFQk9HPXkKQ09ORklHX0NSWVBUT19WTUFDPXkKQ09ORklHX0NSWVBUT19X
UDUxMj15CkNPTkZJR19DUllQVE9fWENCQz15CkNPTkZJR19DUllQVE9fWFhIQVNIPXkKIyBl
bmQgb2YgSGFzaGVzLCBkaWdlc3RzLCBhbmQgTUFDcwoKIwojIENSQ3MgKGN5Y2xpYyByZWR1
bmRhbmN5IGNoZWNrcykKIwpDT05GSUdfQ1JZUFRPX0NSQzMyQz15CkNPTkZJR19DUllQVE9f
Q1JDMzI9eQpDT05GSUdfQ1JZUFRPX0NSQ1QxMERJRj15CkNPTkZJR19DUllQVE9fQ1JDNjRf
Uk9DS1NPRlQ9eQojIGVuZCBvZiBDUkNzIChjeWNsaWMgcmVkdW5kYW5jeSBjaGVja3MpCgoj
CiMgQ29tcHJlc3Npb24KIwpDT05GSUdfQ1JZUFRPX0RFRkxBVEU9eQojIENPTkZJR19DUllQ
VE9fTFpPIGlzIG5vdCBzZXQKQ09ORklHX0NSWVBUT184NDI9eQojIENPTkZJR19DUllQVE9f
TFo0IGlzIG5vdCBzZXQKIyBDT05GSUdfQ1JZUFRPX0xaNEhDIGlzIG5vdCBzZXQKQ09ORklH
X0NSWVBUT19aU1REPXkKIyBlbmQgb2YgQ29tcHJlc3Npb24KCiMKIyBSYW5kb20gbnVtYmVy
IGdlbmVyYXRpb24KIwpDT05GSUdfQ1JZUFRPX0FOU0lfQ1BSTkc9eQpDT05GSUdfQ1JZUFRP
X0RSQkdfTUVOVT15CkNPTkZJR19DUllQVE9fRFJCR19ITUFDPXkKIyBDT05GSUdfQ1JZUFRP
X0RSQkdfSEFTSCBpcyBub3Qgc2V0CkNPTkZJR19DUllQVE9fRFJCR19DVFI9eQpDT05GSUdf
Q1JZUFRPX0RSQkc9eQpDT05GSUdfQ1JZUFRPX0pJVFRFUkVOVFJPUFk9eQpDT05GSUdfQ1JZ
UFRPX0pJVFRFUkVOVFJPUFlfTUVNT1JZX0JMT0NLUz02NApDT05GSUdfQ1JZUFRPX0pJVFRF
UkVOVFJPUFlfTUVNT1JZX0JMT0NLU0laRT0zMgpDT05GSUdfQ1JZUFRPX0pJVFRFUkVOVFJP
UFlfT1NSPTEKIyBlbmQgb2YgUmFuZG9tIG51bWJlciBnZW5lcmF0aW9uCgojCiMgVXNlcnNw
YWNlIGludGVyZmFjZQojCkNPTkZJR19DUllQVE9fVVNFUl9BUEk9eQojIENPTkZJR19DUllQ
VE9fVVNFUl9BUElfSEFTSCBpcyBub3Qgc2V0CiMgQ09ORklHX0NSWVBUT19VU0VSX0FQSV9T
S0NJUEhFUiBpcyBub3Qgc2V0CkNPTkZJR19DUllQVE9fVVNFUl9BUElfUk5HPXkKQ09ORklH
X0NSWVBUT19VU0VSX0FQSV9STkdfQ0FWUD15CkNPTkZJR19DUllQVE9fVVNFUl9BUElfQUVB
RD15CkNPTkZJR19DUllQVE9fVVNFUl9BUElfRU5BQkxFX09CU09MRVRFPXkKIyBlbmQgb2Yg
VXNlcnNwYWNlIGludGVyZmFjZQoKQ09ORklHX0NSWVBUT19IQVNIX0lORk89eQoKIwojIEFj
Y2VsZXJhdGVkIENyeXB0b2dyYXBoaWMgQWxnb3JpdGhtcyBmb3IgQ1BVICh4ODYpCiMKQ09O
RklHX0NSWVBUT19BRVNfTklfSU5URUw9eQpDT05GSUdfQ1JZUFRPX1NFUlBFTlRfU1NFMl81
ODY9eQojIENPTkZJR19DUllQVE9fVFdPRklTSF81ODYgaXMgbm90IHNldAojIENPTkZJR19D
UllQVE9fQ1JDMzJDX0lOVEVMIGlzIG5vdCBzZXQKQ09ORklHX0NSWVBUT19DUkMzMl9QQ0xN
VUw9eQojIGVuZCBvZiBBY2NlbGVyYXRlZCBDcnlwdG9ncmFwaGljIEFsZ29yaXRobXMgZm9y
IENQVSAoeDg2KQoKIyBDT05GSUdfQ1JZUFRPX0hXIGlzIG5vdCBzZXQKIyBDT05GSUdfQVNZ
TU1FVFJJQ19LRVlfVFlQRSBpcyBub3Qgc2V0CgojCiMgQ2VydGlmaWNhdGVzIGZvciBzaWdu
YXR1cmUgY2hlY2tpbmcKIwpDT05GSUdfU1lTVEVNX0JMQUNLTElTVF9LRVlSSU5HPXkKQ09O
RklHX1NZU1RFTV9CTEFDS0xJU1RfSEFTSF9MSVNUPSIiCiMgZW5kIG9mIENlcnRpZmljYXRl
cyBmb3Igc2lnbmF0dXJlIGNoZWNraW5nCgpDT05GSUdfQklOQVJZX1BSSU5URj15CgojCiMg
TGlicmFyeSByb3V0aW5lcwojCkNPTkZJR19SQUlENl9QUT15CiMgQ09ORklHX1JBSUQ2X1BR
X0JFTkNITUFSSyBpcyBub3Qgc2V0CkNPTkZJR19MSU5FQVJfUkFOR0VTPXkKQ09ORklHX1BB
Q0tJTkc9eQpDT05GSUdfQklUUkVWRVJTRT15CkNPTkZJR19HRU5FUklDX1NUUk5DUFlfRlJP
TV9VU0VSPXkKQ09ORklHX0dFTkVSSUNfU1RSTkxFTl9VU0VSPXkKQ09ORklHX0dFTkVSSUNf
TkVUX1VUSUxTPXkKIyBDT05GSUdfQ09SRElDIGlzIG5vdCBzZXQKQ09ORklHX1BSSU1FX05V
TUJFUlM9eQpDT05GSUdfUkFUSU9OQUw9eQpDT05GSUdfR0VORVJJQ19JT01BUD15CkNPTkZJ
R19BUkNIX0hBU19GQVNUX01VTFRJUExJRVI9eQpDT05GSUdfQVJDSF9VU0VfU1lNX0FOTk9U
QVRJT05TPXkKCiMKIyBDcnlwdG8gbGlicmFyeSByb3V0aW5lcwojCkNPTkZJR19DUllQVE9f
TElCX1VUSUxTPXkKQ09ORklHX0NSWVBUT19MSUJfQUVTPXkKQ09ORklHX0NSWVBUT19MSUJf
QUVTQ0ZCPXkKQ09ORklHX0NSWVBUT19MSUJfQVJDND15CkNPTkZJR19DUllQVE9fTElCX0dG
MTI4TVVMPXkKQ09ORklHX0NSWVBUT19MSUJfQkxBS0UyU19HRU5FUklDPXkKQ09ORklHX0NS
WVBUT19MSUJfQ0hBQ0hBX0dFTkVSSUM9eQpDT05GSUdfQ1JZUFRPX0xJQl9DSEFDSEE9eQpD
T05GSUdfQ1JZUFRPX0xJQl9DVVJWRTI1NTE5X0dFTkVSSUM9eQojIENPTkZJR19DUllQVE9f
TElCX0NVUlZFMjU1MTkgaXMgbm90IHNldApDT05GSUdfQ1JZUFRPX0xJQl9ERVM9eQpDT05G
SUdfQ1JZUFRPX0xJQl9QT0xZMTMwNV9SU0laRT0xCkNPTkZJR19DUllQVE9fTElCX1BPTFkx
MzA1X0dFTkVSSUM9eQojIENPTkZJR19DUllQVE9fTElCX1BPTFkxMzA1IGlzIG5vdCBzZXQK
IyBDT05GSUdfQ1JZUFRPX0xJQl9DSEFDSEEyMFBPTFkxMzA1IGlzIG5vdCBzZXQKQ09ORklH
X0NSWVBUT19MSUJfU0hBMT15CkNPTkZJR19DUllQVE9fTElCX1NIQTI1Nj15CiMgZW5kIG9m
IENyeXB0byBsaWJyYXJ5IHJvdXRpbmVzCgpDT05GSUdfQ1JDX0NDSVRUPXkKQ09ORklHX0NS
QzE2PXkKQ09ORklHX0NSQ19UMTBESUY9eQpDT05GSUdfQ1JDNjRfUk9DS1NPRlQ9eQpDT05G
SUdfQ1JDX0lUVV9UPXkKQ09ORklHX0NSQzMyPXkKIyBDT05GSUdfQ1JDMzJfU0VMRlRFU1Qg
aXMgbm90IHNldAojIENPTkZJR19DUkMzMl9TTElDRUJZOCBpcyBub3Qgc2V0CkNPTkZJR19D
UkMzMl9TTElDRUJZND15CiMgQ09ORklHX0NSQzMyX1NBUldBVEUgaXMgbm90IHNldAojIENP
TkZJR19DUkMzMl9CSVQgaXMgbm90IHNldApDT05GSUdfQ1JDNjQ9eQpDT05GSUdfQ1JDND15
CkNPTkZJR19DUkM3PXkKQ09ORklHX0xJQkNSQzMyQz15CkNPTkZJR19DUkM4PXkKQ09ORklH
X1hYSEFTSD15CiMgQ09ORklHX1JBTkRPTTMyX1NFTEZURVNUIGlzIG5vdCBzZXQKQ09ORklH
Xzg0Ml9DT01QUkVTUz15CkNPTkZJR184NDJfREVDT01QUkVTUz15CkNPTkZJR19aTElCX0lO
RkxBVEU9eQpDT05GSUdfWkxJQl9ERUZMQVRFPXkKQ09ORklHX0xaT19DT01QUkVTUz15CkNP
TkZJR19MWk9fREVDT01QUkVTUz15CkNPTkZJR19MWjRfQ09NUFJFU1M9eQpDT05GSUdfTFo0
SENfQ09NUFJFU1M9eQpDT05GSUdfTFo0X0RFQ09NUFJFU1M9eQpDT05GSUdfWlNURF9DT01N
T049eQpDT05GSUdfWlNURF9DT01QUkVTUz15CkNPTkZJR19aU1REX0RFQ09NUFJFU1M9eQpD
T05GSUdfWFpfREVDPXkKQ09ORklHX1haX0RFQ19YODY9eQpDT05GSUdfWFpfREVDX1BPV0VS
UEM9eQpDT05GSUdfWFpfREVDX0FSTT15CkNPTkZJR19YWl9ERUNfQVJNVEhVTUI9eQpDT05G
SUdfWFpfREVDX1NQQVJDPXkKIyBDT05GSUdfWFpfREVDX01JQ1JPTFpNQSBpcyBub3Qgc2V0
CkNPTkZJR19YWl9ERUNfQkNKPXkKQ09ORklHX1haX0RFQ19URVNUPXkKQ09ORklHX0dFTkVS
SUNfQUxMT0NBVE9SPXkKQ09ORklHX0JDSD15CkNPTkZJR19CQ0hfQ09OU1RfUEFSQU1TPXkK
Q09ORklHX1RFWFRTRUFSQ0g9eQpDT05GSUdfVEVYVFNFQVJDSF9LTVA9eQpDT05GSUdfVEVY
VFNFQVJDSF9CTT15CkNPTkZJR19URVhUU0VBUkNIX0ZTTT15CkNPTkZJR19JTlRFUlZBTF9U
UkVFPXkKQ09ORklHX1hBUlJBWV9NVUxUST15CkNPTkZJR19BU1NPQ0lBVElWRV9BUlJBWT15
CkNPTkZJR19DTE9TVVJFUz15CkNPTkZJR19IQVNfSU9NRU09eQpDT05GSUdfSEFTX0lPUE9S
VD15CkNPTkZJR19IQVNfSU9QT1JUX01BUD15CkNPTkZJR19IQVNfRE1BPXkKQ09ORklHX0RN
QV9PUFM9eQpDT05GSUdfTkVFRF9TR19ETUFfTEVOR1RIPXkKQ09ORklHX05FRURfRE1BX01B
UF9TVEFURT15CkNPTkZJR19ETUFfREVDTEFSRV9DT0hFUkVOVD15CkNPTkZJR19ETUFfTkVF
RF9TWU5DPXkKIyBDT05GSUdfRE1BX0NNQSBpcyBub3Qgc2V0CkNPTkZJR19ETUFfQVBJX0RF
QlVHPXkKIyBDT05GSUdfRE1BX0FQSV9ERUJVR19TRyBpcyBub3Qgc2V0CkNPTkZJR19TR0xf
QUxMT0M9eQpDT05GSUdfQ0hFQ0tfU0lHTkFUVVJFPXkKQ09ORklHX0NQVV9STUFQPXkKQ09O
RklHX0RRTD15CkNPTkZJR19HTE9CPXkKIyBDT05GSUdfR0xPQl9TRUxGVEVTVCBpcyBub3Qg
c2V0CkNPTkZJR19OTEFUVFI9eQpDT05GSUdfQ0xaX1RBQj15CiMgQ09ORklHX0lSUV9QT0xM
IGlzIG5vdCBzZXQKQ09ORklHX01QSUxJQj15CkNPTkZJR19MSUJGRFQ9eQpDT05GSUdfT0lE
X1JFR0lTVFJZPXkKQ09ORklHX1VDUzJfU1RSSU5HPXkKQ09ORklHX0hBVkVfR0VORVJJQ19W
RFNPPXkKQ09ORklHX0dFTkVSSUNfR0VUVElNRU9GREFZPXkKQ09ORklHX0dFTkVSSUNfVkRT
T18zMj15CkNPTkZJR19HRU5FUklDX1ZEU09fVElNRV9OUz15CkNPTkZJR19HRU5FUklDX1ZE
U09fT1ZFUkZMT1dfUFJPVEVDVD15CkNPTkZJR19GT05UX1NVUFBPUlQ9eQpDT05GSUdfRk9O
VF84eDE2PXkKQ09ORklHX0ZPTlRfQVVUT1NFTEVDVD15CkNPTkZJR19TR19QT09MPXkKQ09O
RklHX0FSQ0hfSEFTX0NQVV9DQUNIRV9JTlZBTElEQVRFX01FTVJFR0lPTj15CkNPTkZJR19B
UkNIX1NUQUNLV0FMSz15CkNPTkZJR19TVEFDS0RFUE9UPXkKQ09ORklHX1NUQUNLREVQT1Rf
QUxXQVlTX0lOSVQ9eQpDT05GSUdfU1RBQ0tERVBPVF9NQVhfRlJBTUVTPTY0CkNPTkZJR19T
QklUTUFQPXkKQ09ORklHX0xXUV9URVNUPXkKIyBlbmQgb2YgTGlicmFyeSByb3V0aW5lcwoK
Q09ORklHX0FTTjFfRU5DT0RFUj15CkNPTkZJR19QT0xZTk9NSUFMPXkKQ09ORklHX0ZJUk1X
QVJFX1RBQkxFPXkKCiMKIyBLZXJuZWwgaGFja2luZwojCgojCiMgcHJpbnRrIGFuZCBkbWVz
ZyBvcHRpb25zCiMKQ09ORklHX1BSSU5US19USU1FPXkKQ09ORklHX1BSSU5US19DQUxMRVI9
eQojIENPTkZJR19TVEFDS1RSQUNFX0JVSUxEX0lEIGlzIG5vdCBzZXQKQ09ORklHX0NPTlNP
TEVfTE9HTEVWRUxfREVGQVVMVD03CkNPTkZJR19DT05TT0xFX0xPR0xFVkVMX1FVSUVUPTQK
Q09ORklHX01FU1NBR0VfTE9HTEVWRUxfREVGQVVMVD00CkNPTkZJR19EWU5BTUlDX0RFQlVH
PXkKQ09ORklHX0RZTkFNSUNfREVCVUdfQ09SRT15CkNPTkZJR19TWU1CT0xJQ19FUlJOQU1F
PXkKQ09ORklHX0RFQlVHX0JVR1ZFUkJPU0U9eQojIGVuZCBvZiBwcmludGsgYW5kIGRtZXNn
IG9wdGlvbnMKCiMgQ09ORklHX0RFQlVHX0tFUk5FTCBpcyBub3Qgc2V0CgojCiMgQ29tcGls
ZS10aW1lIGNoZWNrcyBhbmQgY29tcGlsZXIgb3B0aW9ucwojCkNPTkZJR19BU19IQVNfTk9O
X0NPTlNUX1VMRUIxMjg9eQpDT05GSUdfRlJBTUVfV0FSTj0xMDI0CkNPTkZJR19TVFJJUF9B
U01fU1lNUz15CiMgQ09ORklHX0hFQURFUlNfSU5TVEFMTCBpcyBub3Qgc2V0CiMgQ09ORklH
X0RFQlVHX1NFQ1RJT05fTUlTTUFUQ0ggaXMgbm90IHNldAojIENPTkZJR19TRUNUSU9OX01J
U01BVENIX1dBUk5fT05MWSBpcyBub3Qgc2V0CkNPTkZJR19BUkNIX1dBTlRfRlJBTUVfUE9J
TlRFUlM9eQpDT05GSUdfRlJBTUVfUE9JTlRFUj15CiMgZW5kIG9mIENvbXBpbGUtdGltZSBj
aGVja3MgYW5kIGNvbXBpbGVyIG9wdGlvbnMKCiMKIyBHZW5lcmljIEtlcm5lbCBEZWJ1Z2dp
bmcgSW5zdHJ1bWVudHMKIwpDT05GSUdfTUFHSUNfU1lTUlE9eQpDT05GSUdfTUFHSUNfU1lT
UlFfREVGQVVMVF9FTkFCTEU9MHgxCiMgQ09ORklHX01BR0lDX1NZU1JRX1NFUklBTCBpcyBu
b3Qgc2V0CiMgQ09ORklHX0RFQlVHX0ZTIGlzIG5vdCBzZXQKQ09ORklHX0hBVkVfQVJDSF9L
R0RCPXkKQ09ORklHX0FSQ0hfSEFTX1VCU0FOPXkKQ09ORklHX1VCU0FOPXkKQ09ORklHX1VC
U0FOX1RSQVA9eQpDT05GSUdfQ0NfSEFTX1VCU0FOX0JPVU5EU19TVFJJQ1Q9eQpDT05GSUdf
VUJTQU5fQk9VTkRTPXkKQ09ORklHX1VCU0FOX0JPVU5EU19TVFJJQ1Q9eQojIENPTkZJR19V
QlNBTl9TSElGVCBpcyBub3Qgc2V0CkNPTkZJR19VQlNBTl9ESVZfWkVSTz15CiMgQ09ORklH
X1VCU0FOX1VOUkVBQ0hBQkxFIGlzIG5vdCBzZXQKIyBDT05GSUdfVUJTQU5fU0lHTkVEX1dS
QVAgaXMgbm90IHNldApDT05GSUdfVUJTQU5fQk9PTD15CiMgQ09ORklHX1VCU0FOX0VOVU0g
aXMgbm90IHNldApDT05GSUdfSEFWRV9LQ1NBTl9DT01QSUxFUj15CiMgZW5kIG9mIEdlbmVy
aWMgS2VybmVsIERlYnVnZ2luZyBJbnN0cnVtZW50cwoKIwojIE5ldHdvcmtpbmcgRGVidWdn
aW5nCiMKIyBlbmQgb2YgTmV0d29ya2luZyBEZWJ1Z2dpbmcKCiMKIyBNZW1vcnkgRGVidWdn
aW5nCiMKQ09ORklHX1BBR0VfRVhURU5TSU9OPXkKQ09ORklHX1NMVUJfREVCVUc9eQpDT05G
SUdfU0xVQl9ERUJVR19PTj15CkNPTkZJR19QQUdFX1BPSVNPTklORz15CiMgQ09ORklHX0RF
QlVHX1JPREFUQV9URVNUIGlzIG5vdCBzZXQKQ09ORklHX0FSQ0hfSEFTX0RFQlVHX1dYPXkK
IyBDT05GSUdfREVCVUdfV1ggaXMgbm90IHNldApDT05GSUdfR0VORVJJQ19QVERVTVA9eQpD
T05GSUdfUFREVU1QX0NPUkU9eQpDT05GSUdfSEFWRV9ERUJVR19LTUVNTEVBSz15CkNPTkZJ
R19BUkNIX0hBU19ERUJVR19WTV9QR1RBQkxFPXkKIyBDT05GSUdfREVCVUdfVk1fUEdUQUJM
RSBpcyBub3Qgc2V0CkNPTkZJR19BUkNIX0hBU19ERUJVR19WSVJUVUFMPXkKQ09ORklHX0RF
QlVHX01FTU9SWV9JTklUPXkKQ09ORklHX0FSQ0hfU1VQUE9SVFNfS01BUF9MT0NBTF9GT1JD
RV9NQVA9eQpDT05GSUdfSEFWRV9ERUJVR19TVEFDS09WRVJGTE9XPXkKQ09ORklHX0NPREVf
VEFHR0lORz15CkNPTkZJR19NRU1fQUxMT0NfUFJPRklMSU5HPXkKQ09ORklHX01FTV9BTExP
Q19QUk9GSUxJTkdfRU5BQkxFRF9CWV9ERUZBVUxUPXkKQ09ORklHX01FTV9BTExPQ19QUk9G
SUxJTkdfREVCVUc9eQpDT05GSUdfQ0NfSEFTX0tBU0FOX0dFTkVSSUM9eQpDT05GSUdfQ0Nf
SEFTX1dPUktJTkdfTk9TQU5JVElaRV9BRERSRVNTPXkKQ09ORklHX0hBVkVfQVJDSF9LRkVO
Q0U9eQojIENPTkZJR19LRkVOQ0UgaXMgbm90IHNldAojIGVuZCBvZiBNZW1vcnkgRGVidWdn
aW5nCgojCiMgRGVidWcgT29wcywgTG9ja3VwcyBhbmQgSGFuZ3MKIwojIENPTkZJR19QQU5J
Q19PTl9PT1BTIGlzIG5vdCBzZXQKQ09ORklHX1BBTklDX09OX09PUFNfVkFMVUU9MApDT05G
SUdfUEFOSUNfVElNRU9VVD0wCkNPTkZJR19IQVZFX0hBUkRMT0NLVVBfREVURUNUT1JfQlVE
RFk9eQojIGVuZCBvZiBEZWJ1ZyBPb3BzLCBMb2NrdXBzIGFuZCBIYW5ncwoKIwojIFNjaGVk
dWxlciBEZWJ1Z2dpbmcKIwojIENPTkZJR19TQ0hFRFNUQVRTIGlzIG5vdCBzZXQKIyBlbmQg
b2YgU2NoZWR1bGVyIERlYnVnZ2luZwoKIyBDT05GSUdfREVCVUdfVElNRUtFRVBJTkcgaXMg
bm90IHNldAoKIwojIExvY2sgRGVidWdnaW5nIChzcGlubG9ja3MsIG11dGV4ZXMsIGV0Yy4u
LikKIwpDT05GSUdfTE9DS19ERUJVR0dJTkdfU1VQUE9SVD15CkNPTkZJR19XV19NVVRFWF9T
RUxGVEVTVD15CiMgZW5kIG9mIExvY2sgRGVidWdnaW5nIChzcGlubG9ja3MsIG11dGV4ZXMs
IGV0Yy4uLikKCkNPTkZJR19ERUJVR19JUlFGTEFHUz15CkNPTkZJR19TVEFDS1RSQUNFPXkK
IyBDT05GSUdfV0FSTl9BTExfVU5TRUVERURfUkFORE9NIGlzIG5vdCBzZXQKCiMKIyBEZWJ1
ZyBrZXJuZWwgZGF0YSBzdHJ1Y3R1cmVzCiMKIyBDT05GSUdfREVCVUdfQ0xPU1VSRVMgaXMg
bm90IHNldAojIGVuZCBvZiBEZWJ1ZyBrZXJuZWwgZGF0YSBzdHJ1Y3R1cmVzCgojCiMgUkNV
IERlYnVnZ2luZwojCkNPTkZJR19SQ1VfQ1BVX1NUQUxMX1RJTUVPVVQ9MjEKQ09ORklHX1JD
VV9FWFBfQ1BVX1NUQUxMX1RJTUVPVVQ9MAojIENPTkZJR19SQ1VfQ1BVX1NUQUxMX0NQVVRJ
TUUgaXMgbm90IHNldAojIGVuZCBvZiBSQ1UgRGVidWdnaW5nCgpDT05GSUdfVVNFUl9TVEFD
S1RSQUNFX1NVUFBPUlQ9eQpDT05GSUdfSEFWRV9SRVRIT09LPXkKQ09ORklHX0hBVkVfRlVO
Q1RJT05fVFJBQ0VSPXkKQ09ORklHX0hBVkVfRlVOQ1RJT05fR1JBUEhfVFJBQ0VSPXkKQ09O
RklHX0hBVkVfRlVOQ1RJT05fR1JBUEhfUkVUVkFMPXkKQ09ORklHX0hBVkVfRFlOQU1JQ19G
VFJBQ0U9eQpDT05GSUdfSEFWRV9EWU5BTUlDX0ZUUkFDRV9XSVRIX1JFR1M9eQpDT05GSUdf
SEFWRV9EWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMUz15CkNPTkZJR19IQVZFX0RZ
TkFNSUNfRlRSQUNFX05PX1BBVENIQUJMRT15CkNPTkZJR19IQVZFX0ZUUkFDRV9NQ09VTlRf
UkVDT1JEPXkKQ09ORklHX0hBVkVfU1lTQ0FMTF9UUkFDRVBPSU5UUz15CkNPTkZJR19IQVZF
X0NfUkVDT1JETUNPVU5UPXkKQ09ORklHX0hBVkVfQlVJTERUSU1FX01DT1VOVF9TT1JUPXkK
Q09ORklHX1RSQUNJTkdfU1VQUE9SVD15CiMgQ09ORklHX0ZUUkFDRSBpcyBub3Qgc2V0CkNP
TkZJR19TQU1QTEVTPXkKQ09ORklHX1NBTVBMRV9BVVhESVNQTEFZPXkKQ09ORklHX1NBTVBM
RV9LT0JKRUNUPXkKIyBDT05GSUdfU0FNUExFX1dBVENIRE9HIGlzIG5vdCBzZXQKQ09ORklH
X0FSQ0hfSEFTX0RFVk1FTV9JU19BTExPV0VEPXkKCiMKIyB4ODYgRGVidWdnaW5nCiMKQ09O
RklHX1g4Nl9WRVJCT1NFX0JPT1RVUD15CkNPTkZJR19FQVJMWV9QUklOVEs9eQpDT05GSUdf
RUZJX1BHVF9EVU1QPXkKQ09ORklHX0hBVkVfTU1JT1RSQUNFX1NVUFBPUlQ9eQojIENPTkZJ
R19JT19ERUxBWV8wWDgwIGlzIG5vdCBzZXQKQ09ORklHX0lPX0RFTEFZXzBYRUQ9eQojIENP
TkZJR19JT19ERUxBWV9VREVMQVkgaXMgbm90IHNldAojIENPTkZJR19JT19ERUxBWV9OT05F
IGlzIG5vdCBzZXQKQ09ORklHX1VOV0lOREVSX0ZSQU1FX1BPSU5URVI9eQojIGVuZCBvZiB4
ODYgRGVidWdnaW5nCgojCiMgS2VybmVsIFRlc3RpbmcgYW5kIENvdmVyYWdlCiMKQ09ORklH
X0tVTklUPXkKQ09ORklHX0tVTklUX0RFQlVHRlM9eQojIENPTkZJR19LVU5JVF9GQVVMVF9U
RVNUIGlzIG5vdCBzZXQKQ09ORklHX0tVTklUX1RFU1Q9eQpDT05GSUdfS1VOSVRfRVhBTVBM
RV9URVNUPXkKQ09ORklHX0tVTklUX0FMTF9URVNUUz15CkNPTkZJR19LVU5JVF9ERUZBVUxU
X0VOQUJMRUQ9eQpDT05GSUdfQ0NfSEFTX1NBTkNPVl9UUkFDRV9QQz15CkNPTkZJR19SVU5U
SU1FX1RFU1RJTkdfTUVOVT15CiMgQ09ORklHX1RFU1RfREhSWSBpcyBub3Qgc2V0CkNPTkZJ
R19DUFVNQVNLX0tVTklUX1RFU1Q9eQpDT05GSUdfVEVTVF9MSVNUX1NPUlQ9eQpDT05GSUdf
VEVTVF9TT1JUPXkKQ09ORklHX1RFU1RfSU9WX0lURVI9eQojIENPTkZJR19BVE9NSUM2NF9T
RUxGVEVTVCBpcyBub3Qgc2V0CkNPTkZJR19BU1lOQ19SQUlENl9URVNUPXkKQ09ORklHX1RF
U1RfSEVYRFVNUD15CkNPTkZJR19TVFJJTkdfS1VOSVRfVEVTVD15CkNPTkZJR19TVFJJTkdf
SEVMUEVSU19LVU5JVF9URVNUPXkKIyBDT05GSUdfVEVTVF9LU1RSVE9YIGlzIG5vdCBzZXQK
IyBDT05GSUdfVEVTVF9QUklOVEYgaXMgbm90IHNldApDT05GSUdfVEVTVF9TQ0FORj15CkNP
TkZJR19URVNUX0JJVE1BUD15CkNPTkZJR19URVNUX1VVSUQ9eQpDT05GSUdfVEVTVF9YQVJS
QVk9eQpDT05GSUdfVEVTVF9NQVBMRV9UUkVFPXkKQ09ORklHX1RFU1RfUkhBU0hUQUJMRT15
CkNPTkZJR19URVNUX0lEQT15CkNPTkZJR19URVNUX0JJVE9QUz15CkNPTkZJR19GSU5EX0JJ
VF9CRU5DSE1BUks9eQojIENPTkZJR19URVNUX0ZJUk1XQVJFIGlzIG5vdCBzZXQKQ09ORklH
X1RFU1RfU1lTQ1RMPXkKQ09ORklHX0JJVEZJRUxEX0tVTklUPXkKQ09ORklHX0NIRUNLU1VN
X0tVTklUPXkKQ09ORklHX0hBU0hfS1VOSVRfVEVTVD15CkNPTkZJR19SRVNPVVJDRV9LVU5J
VF9URVNUPXkKQ09ORklHX1NZU0NUTF9LVU5JVF9URVNUPXkKQ09ORklHX0xJU1RfS1VOSVRf
VEVTVD15CkNPTkZJR19IQVNIVEFCTEVfS1VOSVRfVEVTVD15CkNPTkZJR19MSU5FQVJfUkFO
R0VTX1RFU1Q9eQpDT05GSUdfQ01ETElORV9LVU5JVF9URVNUPXkKQ09ORklHX0JJVFNfVEVT
VD15CkNPTkZJR19TTFVCX0tVTklUX1RFU1Q9eQpDT05GSUdfUkFUSU9OQUxfS1VOSVRfVEVT
VD15CkNPTkZJR19NRU1DUFlfS1VOSVRfVEVTVD15CkNPTkZJR19JU19TSUdORURfVFlQRV9L
VU5JVF9URVNUPXkKQ09ORklHX09WRVJGTE9XX0tVTklUX1RFU1Q9eQpDT05GSUdfU1RBQ0tJ
TklUX0tVTklUX1RFU1Q9eQpDT05GSUdfRk9SVElGWV9LVU5JVF9URVNUPXkKQ09ORklHX0hX
X0JSRUFLUE9JTlRfS1VOSVRfVEVTVD15CkNPTkZJR19TSVBIQVNIX0tVTklUX1RFU1Q9eQpD
T05GSUdfVVNFUkNPUFlfS1VOSVRfVEVTVD15CkNPTkZJR19URVNUX1VERUxBWT15CiMgQ09O
RklHX1RFU1RfRFlOQU1JQ19ERUJVRyBpcyBub3Qgc2V0CkNPTkZJR19URVNUX01FTUNBVF9Q
PXkKIyBDT05GSUdfVEVTVF9NRU1JTklUIGlzIG5vdCBzZXQKIyBDT05GSUdfVEVTVF9GUkVF
X1BBR0VTIGlzIG5vdCBzZXQKIyBDT05GSUdfVEVTVF9GUFUgaXMgbm90IHNldApDT05GSUdf
VEVTVF9DTE9DS1NPVVJDRV9XQVRDSERPRz15CkNPTkZJR19BUkNIX1VTRV9NRU1URVNUPXkK
IyBDT05GSUdfTUVNVEVTVCBpcyBub3Qgc2V0CiMgZW5kIG9mIEtlcm5lbCBUZXN0aW5nIGFu
ZCBDb3ZlcmFnZQoKIwojIFJ1c3QgaGFja2luZwojCiMgZW5kIG9mIFJ1c3QgaGFja2luZwoj
IGVuZCBvZiBLZXJuZWwgaGFja2luZwo=

--------------jadfGx5XNmWYTIEs4LuH1nI3--
.

From: David Heidelberg <david@ixit.cz>
To: Joerg Roedel <joro@8bytes.org>,
	Will Deacon <will@kernel.org>,
	Robin Murphy <robin.murphy@arm.com>,
	Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	David Heidelberg <david@ixit.cz>
Cc: iommu@lists.linux.dev,
	devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-arm-msm@vger.kernel.org
Subject: [PATCH v7] dt-bindings: iommu: Convert msm,iommu-v0 to yaml
Date: Fri,  5 Jul 2024 15:14:54 -0700
Message-ID: <20240705221520.109540-1-david@ixit.cz>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269555
Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.iommu,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Convert Qualcomm IOMMU v0 implementation to yaml format.

iommus part being ommited for the other bindings, as mdp4 one.

Signed-off-by: David Heidelberg <david@ixit.cz>
---
v7:
 - change maintainer to myself
 - define NCB range (thx @Rob)
v6:
 - clean iommu-cells description (thx @Robin)
v5:
 - updated example (thx @Konrad)
 - ordering of requirements + dropped > and | and reformatted (thx @Konrad)
v4:
 - renamed to qcom,apq8064-iommu as Rob requested
 - changed title to Qualcomm APQ8064 IOMMU
 - dropped quotes around URLs
 - dropped mdp node
 - dropped unused mdp_port0 label

v3:
 - I kept the name as -v0, since we have other binding -v1 and it look
   good, I can change thou in v4 if requested.
 - dropped non-existent smmu_clk part (and adjusted example, which was
   using it)
 - dropped iommu description
 - moved iommu-cells description to the property #iommu-cells

v2:
 - fix wrong path in binding $id
 - comment qcom,mdp4 node example (we don't want to validate it yet)
Signed-off-by: David Heidelberg <david@ixit.cz>

 .../bindings/iommu/msm,iommu-v0.txt           | 64 ---------------
 .../bindings/iommu/qcom,apq8064-iommu.yaml    | 78 +++++++++++++++++++
 2 files changed, 78 insertions(+), 64 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/iommu/msm,iommu-v0.txt
 create mode 100644 Documentation/devicetree/bindings/iommu/qcom,apq8064-iommu.yaml

diff --git ./Documentation/devicetree/bindings/iommu/msm,iommu-v0.txt ./Documentation/devicetree/bindings/iommu/msm,iommu-v0.txt
deleted file mode 100644
index 20236385f26e..000000000000
--- ./Documentation/devicetree/bindings/iommu/msm,iommu-v0.txt
+++ /dev/null
@@ -1,64 +0,0 @@
-* QCOM IOMMU
-
-The MSM IOMMU is an implementation compatible with the ARM VMSA short
-descriptor page tables. It provides address translation for bus masters outside
-of the CPU, each connected to the IOMMU through a port called micro-TLB.
-
-Required Properties:
-
-  - compatible: Must contain "qcom,apq8064-iommu".
-  - reg: Base address and size of the IOMMU registers.
-  - interrupts: Specifiers for the MMU fault interrupts. For instances that
-    support secure mode two interrupts must be specified, for non-secure and
-    secure mode, in that order. For instances that don't support secure mode a
-    single interrupt must be specified.
-  - #iommu-cells: The number of cells needed to specify the stream id. This
-		  is always 1.
-  - qcom,ncb:	  The total number of context banks in the IOMMU.
-  - clocks	: List of clocks to be used during SMMU register access. See
-		  Documentation/devicetree/bindings/clock/clock-bindings.txt
-		  for information about the format. For each clock specified
-		  here, there must be a corresponding entry in clock-names
-		  (see below).
-
-  - clock-names	: List of clock names corresponding to the clocks specified in
-		  the "clocks" property (above).
-		  Should be "smmu_pclk" for specifying the interface clock
-		  required for iommu's register accesses.
-		  Should be "smmu_clk" for specifying the functional clock
-		  required by iommu for bus accesses.
-
-Each bus master connected to an IOMMU must reference the IOMMU in its device
-node with the following property:
-
-  - iommus: A reference to the IOMMU in multiple cells. The first cell is a
-	    phandle to the IOMMU and the second cell is the stream id.
-	    A single master device can be connected to more than one iommu
-	    and multiple contexts in each of the iommu. So multiple entries
-	    are required to list all the iommus and the stream ids that the
-	    master is connected to.
-
-Example: mdp iommu and its bus master
-
-                mdp_port0: iommu@7500000 {
-			compatible = "qcom,apq8064-iommu";
-			#iommu-cells = <1>;
-			clock-names =
-			    "smmu_pclk",
-			    "smmu_clk";
-			clocks =
-			    <&mmcc SMMU_AHB_CLK>,
-			    <&mmcc MDP_AXI_CLK>;
-			reg = <0x07500000 0x100000>;
-			interrupts =
-			    <GIC_SPI 63 0>,
-			    <GIC_SPI 64 0>;
-			qcom,ncb = <2>;
-		};
-
-		mdp: qcom,mdp@5100000 {
-			compatible = "qcom,mdp";
-			...
-			iommus = <&mdp_port0 0
-				  &mdp_port0 2>;
-		};
diff --git ./Documentation/devicetree/bindings/iommu/qcom,apq8064-iommu.yaml ./Documentation/devicetree/bindings/iommu/qcom,apq8064-iommu.yaml
new file mode 100644
index 000000000000..9f83f851e61a
--- /dev/null
+++ ./Documentation/devicetree/bindings/iommu/qcom,apq8064-iommu.yaml
@@ -0,0 +1,78 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+
+$id: http://devicetree.org/schemas/iommu/qcom,apq8064-iommu.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm APQ8064 IOMMU
+
+maintainers:
+  - David Heidelberg <david@ixit.cz>
+
+description:
+  The MSM IOMMU is an implementation compatible with the ARM VMSA short
+  descriptor page tables. It provides address translation for bus masters
+  outside of the CPU, each connected to the IOMMU through a port called micro-TLB.
+
+properties:
+  compatible:
+    const: qcom,apq8064-iommu
+
+  clocks:
+    items:
+      - description: interface clock for register accesses
+      - description: functional clock for bus accesses
+
+  clock-names:
+    items:
+      - const: smmu_pclk
+      - const: iommu_clk
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    description: Specifiers for the MMU fault interrupts.
+    minItems: 1
+    items:
+      - description: non-secure mode interrupt
+      - description: secure mode interrupt (for instances which supports it)
+
+  "#iommu-cells":
+    const: 1
+    description: Each IOMMU specifier describes a single Stream ID.
+
+  qcom,ncb:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: The total number of context banks in the IOMMU.
+    minimum: 1
+    maximum: 4
+
+required:
+  - reg
+  - interrupts
+  - clocks
+  - clock-names
+  - qcom,ncb
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/qcom,mmcc-msm8960.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+    iommu@7500000 {
+            compatible = "qcom,apq8064-iommu";
+            reg = <0x07500000 0x100000>;
+            interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>,
+                         <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
+            clocks = <&clk SMMU_AHB_CLK>,
+                     <&clk MDP_AXI_CLK>;
+            clock-names = "smmu_pclk",
+                          "iommu_clk";
+            #iommu-cells = <1>;
+            qcom,ncb = <2>;
+    };
-- 
2.45.2

.

Content-Type: multipart/mixed; boundary="------------boPeTQlb4MMG8ACs0OicDOlH"
Message-ID: <00aaf29c-e638-4161-90fa-49eff270598e@linuxfoundation.org>
Date: Fri, 5 Jul 2024 16:45:39 -0600
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Language: en-US
To: "Rafael J. Wysocki" <rafael@kernel.org>
Cc: Thomas Renninger <trenn@suse.de>, Shuah Khan <skhan@linuxfoundation.org>,
 shuah <shuah@kernel.org>, linux-pm@vger.kernel.org,
 linux-kernel@vger.kernel.org
From: Shuah Khan <skhan@linuxfoundation.org>
Subject: [GIT PULL] cpupower second update for Linux 6.11-rc1
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269559
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-pm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

This is a multi-part message in MIME format.
--------------boPeTQlb4MMG8ACs0OicDOlH
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Rafael,

Please pull the following cpupower second update for Linux 6.11-rc1.

This cpupower second update for Linux 6.11-rc1 consists of

-- fix to install cpupower library in standard librray intall
    location - /usr/lib
-- disable direct build of cpupower bench as it can only be
    built from the cpupower main makefile.

diff is attached.

thanks,
-- Shuah

----------------------------------------------------------------
The following changes since commit 3e1f12c26646eb0ad67d3eaefd32f765997da6a8:

   cpupower: Change the var type of the 'monitor' subcommand display mode (2024-06-20 10:08:08 -0600)

are available in the Git repository at:

   git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux tags/linux-cpupower-6.11-rc1-2

for you to fetch changes up to 3a5bb5066f4c7170e850b930e84b1075e25f8e90:

   cpupower: fix lib default installation path (2024-07-02 15:30:32 -0600)

----------------------------------------------------------------
linux-cpupower-6.11-rc1-2

This cpupower second update for Linux 6.11-rc1 consists of

-- fix to install cpupower library in standard librray intall
    location - /usr/lib
-- disable direct build of cpupower bench as it can only be
   built from the cpupower main makefile.

----------------------------------------------------------------
Roman Storozhenko (2):
       cpupower: Disable direct build of the 'bench' subproject
       cpupower: fix lib default installation path

  tools/power/cpupower/Makefile       | 10 +---------
  tools/power/cpupower/bench/Makefile |  5 +++++
  2 files changed, 6 insertions(+), 9 deletions(-)
----------------------------------------------------------------
--------------boPeTQlb4MMG8ACs0OicDOlH
Content-Type: text/x-patch; charset=UTF-8;
 name="linux-cpupower-6.11-rc1-2.diff"
Content-Disposition: attachment; filename="linux-cpupower-6.11-rc1-2.diff"
Content-Transfer-Encoding: base64

ZGlmZiAtLWdpdCBhL3Rvb2xzL3Bvd2VyL2NwdXBvd2VyL01ha2VmaWxlIGIvdG9vbHMvcG93
ZXIvY3B1cG93ZXIvTWFrZWZpbGUKaW5kZXggY2QwMjI1YTMxMmI0Li42YzAyZjQwMTA2OWUg
MTAwNjQ0Ci0tLSBhL3Rvb2xzL3Bvd2VyL2NwdXBvd2VyL01ha2VmaWxlCisrKyBiL3Rvb2xz
L3Bvd2VyL2NwdXBvd2VyL01ha2VmaWxlCkBAIC02Nyw2ICs2Nyw3IEBAIExBTkdVQUdFUyA9
IAkJCWRlIGZyIGl0IGNzIHB0IGthCiBiaW5kaXIgPz0JL3Vzci9iaW4KIHNiaW5kaXIgPz0J
L3Vzci9zYmluCiBtYW5kaXIgPz0JL3Vzci9tYW4KK2xpYmRpciA/PQkvdXNyL2xpYgogaW5j
bHVkZWRpciA/PQkvdXNyL2luY2x1ZGUKIGxvY2FsZWRpciA/PQkvdXNyL3NoYXJlL2xvY2Fs
ZQogZG9jZGlyID89ICAgICAgIC91c3Ivc2hhcmUvZG9jL3BhY2thZ2VzL2NwdXBvd2VyCkBA
IC05NCwxNSArOTUsNiBAQCBSQU5MSUIgPSAkKENST1NTKXJhbmxpYgogSE9TVENDID0gZ2Nj
CiBNS0RJUiA9IG1rZGlyCiAKLSMgNjRiaXQgbGlicmFyeSBkZXRlY3Rpb24KLWluY2x1ZGUg
Li4vLi4vc2NyaXB0cy9NYWtlZmlsZS5hcmNoCi0KLWlmZXEgKCQoSVNfNjRfQklUKSwgMSkK
LWxpYmRpciA/PQkvdXNyL2xpYjY0Ci1lbHNlCi1saWJkaXIgPz0JL3Vzci9saWIKLWVuZGlm
Ci0KICMgTm93IHdlIHNldCB1cCB0aGUgYnVpbGQgc3lzdGVtCiAjCiAKZGlmZiAtLWdpdCBh
L3Rvb2xzL3Bvd2VyL2NwdXBvd2VyL2JlbmNoL01ha2VmaWxlIGIvdG9vbHMvcG93ZXIvY3B1
cG93ZXIvYmVuY2gvTWFrZWZpbGUKaW5kZXggYTRiOTAyZjllMWM0Li4zNGU1ODk0NDc2ZWIg
MTAwNjQ0Ci0tLSBhL3Rvb2xzL3Bvd2VyL2NwdXBvd2VyL2JlbmNoL01ha2VmaWxlCisrKyBi
L3Rvb2xzL3Bvd2VyL2NwdXBvd2VyL2JlbmNoL01ha2VmaWxlCkBAIC0xLDQgKzEsOSBAQAog
IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAoraWZlcSAoJChNQUtFTEVWRUwp
LDApCiskKGVycm9yIFRoaXMgTWFrZWZpbGUgaXMgbm90IGludGVuZGVkIHRvIGJlIHJ1biBz
dGFuZGFsb25lLCBidXQgb25seSBhcyBhIHBhcnQgXAorb2YgdGhlICBtYWluIG9uZSBpbiB0
aGUgcGFyZW50IGRpcikKK2VuZGlmCisKIE9VVFBVVCA6PSAuLwogaWZlcSAoIiQob3JpZ2lu
IE8pIiwgImNvbW1hbmQgbGluZSIpCiBpZm5lcSAoJChPKSwpCg==

--------------boPeTQlb4MMG8ACs0OicDOlH--
.

From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com>
To: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Michael Walle <michael@walle.cc>,
	Miquel Raynal <miquel.raynal@bootlin.com>,
	devicetree@vger.kernel.org,
	linux-mtd@lists.infradead.org,
	linux-arm-kernel@lists.infradead.org,
	u-boot@lists.denx.de,
	linux-kernel@vger.kernel.org,
	=?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
Subject: [PATCH] dt-bindings: nvmem: convert U-Boot env to a layout
Date: Sat,  6 Jul 2024 00:58:21 +0200
Message-Id: <20240705225821.13196-1-zajec5@gmail.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269563
Newsgroups: org.kernel.vger.linux-kernel,de.denx.lists.u-boot,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-mtd,org.kernel.vger.linux-devicetree
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

From: Rafał Miłecki <rafal@milecki.pl>

U-Boot environment variables can be stored in various data sources. MTD
is just one of available options. Refactor DT binding into a layout so
it can be used with UBI volumes and other NVMEM devices.

Link: https://lore.kernel.org/all/20231221173421.13737-1-zajec5@gmail.com/
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
---
I'm sending this PATCH without Linux changes to see if this is the
right approach - for developers and (DT) maintainers to review it first.

My previous attempt (see above Link) turned out in refusal so I'm just
trying to save some time in case this one goes wrong as well.

Hopefully the included example (which I really think we should add)
explains well how I think this binding should be used with layouts.

If I get some positive feedback I'll work on V2 with actual Linux
changes.

 .../bindings/nvmem/layouts/nvmem-layout.yaml  |  1 +
 .../nvmem/{ => layouts}/u-boot,env.yaml       | 39 ++++++++++++++++---
 2 files changed, 35 insertions(+), 5 deletions(-)
 rename Documentation/devicetree/bindings/nvmem/{ => layouts}/u-boot,env.yaml (75%)

diff --git a/Documentation/devicetree/bindings/nvmem/layouts/nvmem-layout.yaml b/Documentation/devicetree/bindings/nvmem/layouts/nvmem-layout.yaml
index 3b40f7880774..382507060651 100644
--- a/Documentation/devicetree/bindings/nvmem/layouts/nvmem-layout.yaml
+++ b/Documentation/devicetree/bindings/nvmem/layouts/nvmem-layout.yaml
@@ -21,6 +21,7 @@ oneOf:
   - $ref: fixed-layout.yaml
   - $ref: kontron,sl28-vpd.yaml
   - $ref: onie,tlv-layout.yaml
+  - $ref: u-boot,env.yaml
 
 properties:
   compatible: true
diff --git a/Documentation/devicetree/bindings/nvmem/u-boot,env.yaml b/Documentation/devicetree/bindings/nvmem/layouts/u-boot,env.yaml
similarity index 75%
rename from Documentation/devicetree/bindings/nvmem/u-boot,env.yaml
rename to Documentation/devicetree/bindings/nvmem/layouts/u-boot,env.yaml
index 9c36afc7084b..56a8f55d4a09 100644
--- a/Documentation/devicetree/bindings/nvmem/u-boot,env.yaml
+++ b/Documentation/devicetree/bindings/nvmem/layouts/u-boot,env.yaml
@@ -1,10 +1,10 @@
 # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
 %YAML 1.2
 ---
-$id: http://devicetree.org/schemas/nvmem/u-boot,env.yaml#
+$id: http://devicetree.org/schemas/nvmem/layouts/u-boot,env.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
-title: U-Boot environment variables
+title: U-Boot environment variables layout
 
 description: |
   U-Boot uses environment variables to store device parameters and
@@ -21,9 +21,6 @@ description: |
   This binding allows marking storage device (as containing env data) and
   specifying used format.
 
-  Right now only flash partition case is covered but it may be extended to e.g.
-  UBI volumes in the future.
-
   Variables can be defined as NVMEM device subnodes.
 
 maintainers:
@@ -42,6 +39,7 @@ properties:
         const: brcm,env
 
   reg:
+    description: Partition offset and size for env on top of MTD
     maxItems: 1
 
   bootcmd:
@@ -58,6 +56,17 @@ properties:
         description: The first argument is a MAC address offset.
         const: 1
 
+allOf:
+  - if:
+      properties:
+        $nodename:
+          not:
+            contains:
+              pattern: "^partition@[0-9a-f]+$"
+    then:
+      properties:
+        reg: false
+
 additionalProperties: false
 
 examples:
@@ -101,3 +110,23 @@ examples:
             };
         };
     };
+  - |
+    partition@0 {
+        reg = <0x0 0x100000>;
+        label = "ubi";
+        compatible = "linux,ubi";
+
+        volumes {
+            ubi-volume-u-boot-env {
+                volname = "env";
+
+                nvmem-layout {
+                    compatible = "u-boot,env";
+
+                    ethaddr {
+                        #nvmem-cell-cells = <1>;
+                    };
+                };
+            };
+        };
+    };
-- 
2.35.3

.

From: =?utf-8?q?N=C3=ADcolas_F=2E_R=2E_A=2E_Prado?= <nfraprado@collabora.com>
Subject: [PATCH v2 0/3] kselftest: Add test to report device log errors
Date: Fri, 05 Jul 2024 19:29:53 -0400
Message-Id: <20240705-dev-err-log-selftest-v2-0-163b9cd7b3c1@collabora.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
To: Shuah Khan <shuah@kernel.org>, 
 Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: kernel@collabora.com, linux-kselftest@vger.kernel.org, 
 linux-kernel@vger.kernel.org, kernelci@lists.linux.dev, 
 =?utf-8?q?N=C3=ADcolas_F=2E_R=2E_A=2E_Prado?= <nfraprado@collabora.com>
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269571
Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.kernelci,org.kernel.vger.linux-kselftest
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Log errors are the most widely used mechanism for reporting issues in
the kernel. When an error is logged using the device helpers, eg
dev_err(), it gets metadata attached that identifies the subsystem and
device where the message is coming from. This series makes use of that
metadata in a new test to report which devices logged errors.

The first two patches move a test and a helper script to keep things
organized before this new test is added in the third patch.

It is expected that there might be many false-positive error messages
throughout the drivers code which will be reported by this test. By
having this test in the first place and working through the results we
can address those occurrences by adjusting the loglevel of the messages
that turn out to not be real errors that require the user's attention.
It will also motivate additional error messages to be introduced in the
code to detect real errors where they turn out to be missing, since
it will be possible to detect said issues automatically.

As an example, below you can see the test result for
mt8192-asurada-spherion. The single standing issue has been investigated
and will be addressed in an EC firmware update [1]:

TAP version 13
1..1
 power_supply sbs-8-000b: driver failed to report `time_to_empty_now' property: -5
 power_supply sbs-8-000b: driver failed to report `time_to_empty_now' property: -5
 power_supply sbs-8-000b: driver failed to report `time_to_empty_now' property: -5
 power_supply sbs-8-000b: driver failed to report `time_to_empty_now' property: -5
 power_supply sbs-8-000b: driver failed to report `time_to_empty_now' property: -5
 power_supply sbs-8-000b: driver failed to report `time_to_empty_now' property: -5
 power_supply sbs-8-000b: driver failed to report `time_to_empty_now' property: -5
 power_supply sbs-8-000b: driver failed to report `time_to_empty_now' property: -5
 power_supply sbs-8-000b: driver failed to report `time_to_empty_now' property: -5
 power_supply sbs-8-000b: driver failed to report `time_to_empty_now' property: -5
 power_supply sbs-8-000b: driver failed to report `time_to_empty_now' property: -5
 power_supply sbs-8-000b: driver failed to report `time_to_empty_now' property: -5
 power_supply sbs-8-000b: driver failed to report `model_name' property: -6
 power_supply sbs-8-000b: driver failed to report `time_to_empty_now' property: -5
 power_supply sbs-8-000b: driver failed to report `energy_full_design' property: -6
 power_supply sbs-8-000b: driver failed to report `time_to_empty_now' property: -5
 power_supply sbs-8-000b: driver failed to report `time_to_empty_now' property: -5
 power_supply sbs-8-000b: driver failed to report `time_to_empty_now' property: -5
 power_supply sbs-8-000b: driver failed to report `time_to_empty_now' property: -5
 power_supply sbs-8-000b: driver failed to report `time_to_empty_now' property: -5
not ok 1 +power_supply:sbs-8-000b
 Totals: pass:0 fail:1 xfail:0 xpass:0 skip:0 error:0

[1] https://lore.kernel.org/all/cf4d8131-4b63-4c7a-9f27-5a0847c656c4@notapiano

Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
---
Changes in v2:
- Rebased onto next-20240703
- Link to v1: https://lore.kernel.org/r/20240423-dev-err-log-selftest-v1-0-690c1741d68b@collabora.com

---
Nícolas F. R. A. Prado (3):
      kselftest: devices: Move discoverable devices test to subdirectory
      kselftest: Move ksft helper module to common directory
      kselftest: devices: Add test to detect device error logs

 tools/testing/selftests/Makefile                   |  4 +-
 tools/testing/selftests/devices/Makefile           |  4 -
 .../testing/selftests/devices/error_logs/Makefile  |  3 +
 .../devices/error_logs/test_device_error_logs.py   | 85 ++++++++++++++++++++++
 tools/testing/selftests/devices/probe/Makefile     |  4 +
 .../{ => probe}/boards/Dell Inc.,XPS 13 9300.yaml  |  0
 .../{ => probe}/boards/google,spherion.yaml        |  0
 .../{ => probe}/test_discoverable_devices.py       |  7 +-
 .../selftests/{devices => kselftest}/ksft.py       |  0
 9 files changed, 101 insertions(+), 6 deletions(-)
---
base-commit: 0b58e108042b0ed28a71cd7edf5175999955b233
change-id: 20240421-dev-err-log-selftest-28f5b8fc7cd0

Best regards,
-- 
Nícolas F. R. A. Prado <nfraprado@collabora.com>

.

From: David Heidelberg <david@ixit.cz>
To: Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	Thierry Reding <thierry.reding@gmail.com>,
	Jonathan Hunter <jonathanh@nvidia.com>,
	Svyatoslav Ryhel <clamor95@gmail.com>,
	David Heidelberg <david@ixit.cz>,
	Maxim Schwalm <maxim.schwalm@gmail.com>
Cc: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>,
	Thierry Reding <treding@nvidia.com>,
	devicetree@vger.kernel.org,
	linux-tegra@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH] dt-bindings: arm: tegra: Document Nyan, all revisions in kernel tree
Date: Fri,  5 Jul 2024 16:52:43 -0700
Message-ID: <20240705235254.126567-1-david@ixit.cz>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269576
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-tegra
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Avoid firing useless warnings when running make dtbs_check

Signed-off-by: David Heidelberg <david@ixit.cz>
---
 .../devicetree/bindings/arm/tegra.yaml        | 42 +++++++++++++++++++
 1 file changed, 42 insertions(+)

diff --git ./Documentation/devicetree/bindings/arm/tegra.yaml ./Documentation/devicetree/bindings/arm/tegra.yaml
index 8fb4923517d0..2889fd0e6592 100644
--- ./Documentation/devicetree/bindings/arm/tegra.yaml
+++ ./Documentation/devicetree/bindings/arm/tegra.yaml
@@ -127,6 +127,48 @@ properties:
               - nvidia,norrin
           - const: nvidia,tegra132
           - const: nvidia,tegra124
+      - items:
+          - const: google,nyan-blaze-rev10
+          - const: google,nyan-blaze-rev9
+          - const: google,nyan-blaze-rev8
+          - const: google,nyan-blaze-rev7
+          - const: google,nyan-blaze-rev6
+          - const: google,nyan-blaze-rev5
+          - const: google,nyan-blaze-rev4
+          - const: google,nyan-blaze-rev3
+          - const: google,nyan-blaze-rev2
+          - const: google,nyan-blaze-rev1
+          - const: google,nyan-blaze-rev0
+          - const: google,nyan-blaze
+          - const: google,nyan
+          - const: nvidia,tegra124
+      - items:
+          - const: google,nyan-big-rev10
+          - const: google,nyan-big-rev9
+          - const: google,nyan-big-rev8
+          - const: google,nyan-big-rev7
+          - const: google,nyan-big-rev6
+          - const: google,nyan-big-rev5
+          - const: google,nyan-big-rev4
+          - const: google,nyan-big-rev3
+          - const: google,nyan-big-rev2
+          - const: google,nyan-big-rev1
+          - const: google,nyan-big-rev0
+          - const: google,nyan-big
+          - const: google,nyan
+          - const: nvidia,tegra124
+      - items:
+          - const: google,nyan-big-rev7
+          - const: google,nyan-big-rev6
+          - const: google,nyan-big-rev5
+          - const: google,nyan-big-rev4
+          - const: google,nyan-big-rev3
+          - const: google,nyan-big-rev2
+          - const: google,nyan-big-rev1
+          - const: google,nyan-big-rev0
+          - const: google,nyan-big
+          - const: google,nyan
+          - const: nvidia,tegra124
       - items:
           - enum:
               - nvidia,darcy
-- 
2.45.2

.

From: Waiman Long <longman@redhat.com>
To: Tejun Heo <tj@kernel.org>,
	Zefan Li <lizefan.x@bytedance.com>,
	Johannes Weiner <hannes@cmpxchg.org>
Cc: cgroups@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Waiman Long <longman@redhat.com>
Subject: [PATCH-cgroup 1/2] cgroup: Show # of subsystem CSSes in /proc/cgroups
Date: Fri,  5 Jul 2024 20:56:21 -0400
Message-Id: <20240706005622.2003606-1-longman@redhat.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269587
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.cgroups
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

The /proc/cgroups file shows the number of cgroups for each of the
subsystems.  With cgroup v1, the number of CSSes is the same as the
number of cgroups. That is not the case anymore with cgroup v2. The
/proc/cgroups file cannot show the actual number of CSSes for the
subsystems that are bound to cgroup v2.

So if a v2 cgroup subsystem is leaking cgroups (typically memory
cgroup), we can't tell by looking at /proc/cgroups which cgroup
subsystems may be responsible.  This patch adds a css counter in the
cgroup_subsys structure to keep track of the number of CSSes for each
of the cgroup subsystems.

The proc_cgroupstats_show() function is modified to show the number
of CSSes instead. This will help us pinpoint which subsystem may be
responsible for the increasing number of dying but still allocated
cgroups.

Signed-off-by: Waiman Long <longman@redhat.com>
---
 include/linux/cgroup-defs.h | 3 +++
 kernel/cgroup/cgroup-v1.c   | 2 +-
 kernel/cgroup/cgroup.c      | 4 ++++
 3 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/include/linux/cgroup-defs.h b/include/linux/cgroup-defs.h
index b36690ca0d3f..522ab77f0406 100644
--- a/include/linux/cgroup-defs.h
+++ b/include/linux/cgroup-defs.h
@@ -776,6 +776,9 @@ struct cgroup_subsys {
 	 * specifies the mask of subsystems that this one depends on.
 	 */
 	unsigned int depends_on;
+
+	/* Number of CSSes, used only for /proc/cgroups */
+	atomic_t nr_csses;
 };
 
 extern struct percpu_rw_semaphore cgroup_threadgroup_rwsem;
diff --git a/kernel/cgroup/cgroup-v1.c b/kernel/cgroup/cgroup-v1.c
index b9dbf6bf2779..56c2b030cd00 100644
--- a/kernel/cgroup/cgroup-v1.c
+++ b/kernel/cgroup/cgroup-v1.c
@@ -678,7 +678,7 @@ int proc_cgroupstats_show(struct seq_file *m, void *v)
 	for_each_subsys(ss, i)
 		seq_printf(m, "%s\t%d\t%d\t%d\n",
 			   ss->legacy_name, ss->root->hierarchy_id,
-			   atomic_read(&ss->root->nr_cgrps),
+			   atomic_read(&ss->nr_csses),
 			   cgroup_ssid_enabled(i));
 
 	return 0;
diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c
index c8e4b62b436a..4a818192950f 100644
--- a/kernel/cgroup/cgroup.c
+++ b/kernel/cgroup/cgroup.c
@@ -5375,6 +5375,7 @@ static void css_free_rwork_fn(struct work_struct *work)
 		int id = css->id;
 
 		ss->css_free(css);
+		atomic_dec(&ss->nr_csses);
 		cgroup_idr_remove(&ss->css_idr, id);
 		cgroup_put(cgrp);
 
@@ -5567,6 +5568,7 @@ static struct cgroup_subsys_state *css_create(struct cgroup *cgrp,
 	if (IS_ERR(css))
 		return css;
 
+	atomic_inc(&ss->nr_csses);
 	init_and_link_css(css, ss, cgrp);
 
 	err = percpu_ref_init(&css->refcnt, css_release, 0, GFP_KERNEL);
@@ -6005,6 +6007,8 @@ static void __init cgroup_init_subsys(struct cgroup_subsys *ss, bool early)
 	/* Create the root cgroup state for this subsystem */
 	ss->root = &cgrp_dfl_root;
 	css = ss->css_alloc(NULL);
+	atomic_set(&ss->nr_csses, 1);
+
 	/* We don't handle early failures gracefully */
 	BUG_ON(IS_ERR(css));
 	init_and_link_css(css, ss, &cgrp_dfl_root.cgrp);
-- 
2.39.3

.

From: =?UTF-8?q?Andr=C3=A9=20Almeida?= <andrealmeid@igalia.com>
To: dri-devel@lists.freedesktop.org,
	amd-gfx@lists.freedesktop.org,
	linux-kernel@vger.kernel.org
Cc: kernel-dev@igalia.com,
	alexander.deucher@amd.com,
	christian.koenig@amd.com,
	Simon Ser <contact@emersion.fr>,
	Pekka Paalanen <ppaalanen@gmail.com>,
	daniel@ffwll.ch,
	Daniel Stone <daniel@fooishbar.org>,
	=?UTF-8?q?=27Marek=20Ol=C5=A1=C3=A1k=27?= <maraeo@gmail.com>,
	Dave Airlie <airlied@gmail.com>,
	ville.syrjala@linux.intel.com,
	Xaver Hugl <xaver.hugl@gmail.com>,
	Joshua Ashton <joshua@froggi.es>,
	=?UTF-8?q?Michel=20D=C3=A4nzer?= <michel.daenzer@mailbox.org>,
	Dmitry Baryshkov <dmitry.baryshkov@linaro.org>,
	=?UTF-8?q?Andr=C3=A9=20Almeida?= <andrealmeid@igalia.com>
Subject: [PATCH v8 0/1] drm/atomic: Ease async flip restrictions
Date: Fri,  5 Jul 2024 22:12:12 -0300
Message-ID: <20240706011214.380390-1-andrealmeid@igalia.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269590
Newsgroups: org.kernel.vger.linux-kernel,org.freedesktop.lists.amd-gfx,org.freedesktop.lists.dri-devel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Hi,

As per my previous patchsets, the goal of this work is to find a nice way to
allow amdgpu to perform async page flips in the overlay plane as well, not
only on the primary one. Currently, when using the atomic uAPI, this is the only
type of plane allowed to do async flips, and every driver accepts it.

In my last version, I had created a static field `bool async_flip` for
drm_planes. When creating new planes, drivers could tell if such plane was
allowed or not to do async flips. This would be latter checked on the atomic
uAPI whenever the DRM_MODE_PAGE_FLIP_ASYNC was present.

However, Dmitry Baryshkov raised a valid point about getting confused with the 
existing atomic_async_check() code, giving that is an function to do basically
what I want: to let drivers tell DRM whether a giving plane can do async flips
or not. It turns out atomic_async_check() is implemented by drivers to deal with
the legacy cursor update, so it's not wired with the atomic uAPI because is
something that precedes such API.

So my new proposal is to just reuse this same function in the atomic uAPI path.
The plane restrictions defined at atomic_async_check() should work in this
codepath as well. And I will be able to allow overlays planes by modifying
amdgpu_dm_plane_atomic_async_check(), and anyone else have a proper place to
play with async plane restrictions as well.

One note is that currently we always allow async flips for primary planes,
regardless of the drivers, but not every atomic_async_check() implementation
allows primary planes (because they were writing targeting cursor planes
anyway...). To avoid regressions, my patch only calls atomic_async_check() for
non primary planes, and always allows primary ones.

Thoughts?

Changelog
 v7: https://lore.kernel.org/dri-devel/20240618030024.500532-1-andrealmeid@igalia.com/
 - Complete rewrite


André Almeida (2):
  drm/atomic: Let drivers decide which planes to async flip
  drm/amdgpu: Enable async flip on overlay planes

 .../amd/display/amdgpu_dm/amdgpu_dm_plane.c   |  3 +--
 drivers/gpu/drm/drm_atomic_uapi.c             | 21 ++++++++++++++-----
 2 files changed, 17 insertions(+), 7 deletions(-)

-- 
2.45.2

.

From: Takero Funaki <flintglass@gmail.com>
To: Johannes Weiner <hannes@cmpxchg.org>,
	Yosry Ahmed <yosryahmed@google.com>,
	Nhat Pham <nphamcs@gmail.com>,
	Chengming Zhou <chengming.zhou@linux.dev>,
	Jonathan Corbet <corbet@lwn.net>,
	Andrew Morton <akpm@linux-foundation.org>,
	Domenico Cerasuolo <cerasuolodomenico@gmail.com>
Cc: Takero Funaki <flintglass@gmail.com>,
	linux-mm@kvack.org,
	linux-doc@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH v2 0/6] mm: zswap: global shrinker fix and proactive shrink
Date: Sat,  6 Jul 2024 02:25:16 +0000
Message-ID: <20240706022523.1104080-1-flintglass@gmail.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269596 org.kvack.linux-mm:202796
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-doc,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail


This series addresses some issues and introduces a minor improvement in
the zswap global shrinker.

This version addresses issues discovered during the review of v1:
https://lore.kernel.org/linux-mm/20240608155316.451600-1-flintglass@gmail.com/
and includes three additional patches to fix another issue uncovered by
applying v1.

Changes in v2:
- Added 3 patches to reduce resource contention.
mm: zswap: fix global shrinker memcg iteration:
- Change the loop style (Yosry, Nhat, Shakeel)
- To not skip online memcg, save zswap_last_shrink to detect cursor change by cleaner.  (Yosry, Nhat, Shakeel)
mm: zswap: fix global shrinker error handling logic:
- Change error code for no-writeback memcg. (Yosry)
- Use nr_scanned to check if lru is empty. (Yosry)

Changes in v1:
mm: zswap: fix global shrinker memcg iteration:
- Drop and reacquire spinlock before skipping a memcg.
- Add some comment to clarify the locking mechanism.
mm: zswap: proactive shrinking before pool size limit is hit:
- Remove unneeded check before scheduling work.
- Change shrink start threshold to accept_thr_percent + 1%.


Patches
===============================

1. Fix the memcg iteration logic that abort iteration on offline memcgs.
2. Fix the error path that aborts on expected error codes.
3. Add proactive shrinking at accept threshold + 1%.
4. Drop the global shrinker workqueue WQ_MEM_RECLAIM flag to not block
   pageout.
5. Store incompressible pages as-is to accept all pages.
6. Interrupt the shrinker to avoid blocking page-in/out.

Patches 1 to 3 should be applied in this order to avoid potential loops
caused by the first issue. Patch 3 and later can be applied
independently, but the first two issues must be resolved to ensure the
shrinker can evict pages. Patches 4 to 6 address resource contention
issues in the current shrinker uncovered by applying patch 3.

With this series applied, the shrinker will continue to evict pages
until the accept_threshold_percent proactively, as documented in patch
3. As a side effect of changes in the hysteresis logic, zswap will no
longer reject pages under the max pool limit.

The series is rebased on mainline 6.10-rc6.

Proactive shrinking (Patch 1 to 3)
===============================

Visible issue to resolve
-------------------------------
The visible issue with the current global shrinker is that pageout/in
operations from active processes are slow when zswap is near its max
pool size. This is particularly significant on small memory systems
where total swap usage exceeds what zswap can store. This results in old
pages occupying most of the zswap pool space, with recent pages using
the swap disk directly.

Root cause of the issue
-------------------------------
This issue is caused by zswap maintaining the pool size near 100%. Since
the shrinker fails to shrink the pool to accept_threshold_percent, zswap
rejects incoming pages more frequently than it should. The rejected
pages are directly written to disk while zswap protects old pages from
eviction, leading to slow pageout/in performance for recent pages.

Changes to resolve the issue
-------------------------------
If the pool size were shrunk proactively, rejection by pool limit hits
would be less likely. New incoming pages could be accepted as the pool
gains some space in advance, while older pages are written back in the
background. zswap would then be filled with recent pages, as expected
in the LRU logic.

Patches 1 and 2 ensure the shrinker reduces the pool to the
accept_threshold_percent. Without patch 2, shrink_worker() stops
evicting pages on the 16th encounter with a memcg that has no stored
pages (e.g., tiny services managed under systemd).
Patch 3 makes zswap_store() trigger the shrinker before reaching the max
pool size.

With this series, zswap will prepare some space to reduce the
probability of problematic pool_limit_hit situations, thus reducing slow
reclaim and the page priority inversion against LRU.

Visible changes
-------------------------------
Once proactive shrinking reduces the pool size, pageouts complete
instantly as long as the space prepared by proactive shrinking can store
the reclaimed pages. If an admin sees a large pool_limit_hit, lowering
the accept_threshold_percent will improve active process performance.
The optimal point depends on the tradeoff between active process
pageout/in performance and background services' pagein performance.

Benchmark
-------------------------------
The benchmark below observes active process performance under memory
pressure, coexisting with background services occupying the zswap pool.

The tests were run on a vm with 2 vCPU, 1GB RAM + 4GB swap.  20% max
pool and 50% accept threshould (about 100MB proactive shrink),
zsmalloc/lz4.  This test prefer active process than background process
to demonstrate my intended workload.

It runs `apt -qq update` 10 times under a 60MB memcg memory.max
constraint to emulate an active process running under pressure. The
zswap pool is filled prior to the test by allocating a large memory
(~1.5GB) to emulate background inactive services.

The counters below are from vmstat and zswap debugfs stats. The times
are average seconds using /usr/bin/time -v.

pre-patch, 6.10-rc4
|                    | Start       | End         | Delta      |
|--------------------|-------------|-------------|------------|
| pool_limit_hit     | 845         | 845         | 0          |
| pool_total_size    | 201539584   | 201539584   | 0          |
| stored_pages       | 63138       | 63138       | 0          |
| written_back_pages | 12          | 12          | 0          |
| pswpin             | 387         | 32412       | 32025      |
| pswpout            | 153078      | 197138      | 44060      |
| zswpin             | 0           | 0           | 0          |
| zswpout            | 63150       | 63150       | 0          |
| zswpwb             | 12          | 12          | 0          |

| Time              |              |
|-------------------|--------------|
| elapsed           | 8.473        |
| user              | 1.881        |
| system            | 0.814        |

post-patch, 6.10-rc4 with patch 1 to 5
|                    | Start       | End         | Delta      |
|--------------------|-------------|-------------|------------|
| pool_limit_hit     | 81861       | 81861       | 0          |
| pool_total_size    | 75001856    | 87117824    | 12115968   |
| reject_reclaim_fail| 0           | 32          | 32         |
| same_filled_pages  | 135         | 135         | 0          |
| stored_pages       | 23919       | 27549       | 3630       |
| written_back_pages | 97665       | 106994      | 10329      |
| pswpin             | 4981        | 8223        | 3242       |
| pswpout            | 179554      | 188883      | 9329       |
| zswpin             | 293863      | 590014      | 296151     |
| zswpout            | 455338      | 764882      | 309544     |
| zswpwb             | 97665       | 106994      | 10329      |

| Time              |              |
|-------------------|--------------|
| elapsed           | 4.525        |
| user              | 1.839        |
| system            | 1.467        |

Although the pool_limit_hit is not increased in both cases,
zswap_store() rejected pages before this patch. Note that, before this
series, zswap_store() did not increment pool_limit_hit on rejection by
limit hit hysteresis (only the first few hits were counted).

From the pre-patch result, the existing zswap global shrinker cannot
write back effectively and locks the old pages in the pool. The
pswpin/out indicates the active process uses the swap device directly.

From the post-patch result, zswpin/out/wb are increased as expected,
indicating the active process uses zswap and the old pages of the
background services are evicted from the pool. pswpin/out are
significantly reduced from pre-patch results.


System responsiveness issue (patch 4 to 6)
===============================
After applying patches 1 to 3, I encountered severe responsiveness
degradation while zswap global shrinker is running under heavy memory
pressure.

Visible issue to resolve
-------------------------------
The visible issue happens with patches 1 to 3 applied when a large
amount of memory allocation happens and zswap cannot store the incoming
pages.
While global shrinker is writing back pages, system stops responding as
if under heavy memory thrashing.

This issue is less likely to happen without patches 1 to 3 or zswap is
disabled. I believe this is because the global shrinker could not write
back a meaningful amount of pages, as described in patch 2.

Root cause and changes to resolve the issue
-------------------------------
It seems that zswap shrinker blocking IO for memory reclaim and faults
is the root cause of this responsiveness issue. I introduced three
patches to reduce possible blocking in the following problematic
situations:

1. Contention on workqueue thread pools by shrink_worker() using
WQ_MEM_RECLAIM unnecessarily.

Although the shrinker runs simultaneously with memory reclaim, shrinking
is not required to reclaim memory since zswap_store() can reject pages
without interfering with memory reclaim progress. shrink_worker() should
not use WQ_MEM_RECLAIM and should be delayed when another work in
WQ_MEM_RECLAIM is reclaiming memory. The existing code requires
allocating memory inside shrink_worker(), potentially blocking other
latency-sensitive reclaim work.

2. Contention on swap IO.

Since zswap_writeback_entry() performs write IO in 4KB pages, it
consumes a lot of IOPS, increasing the IO latency of swapout/in. We
should not perform IO for background shrinking while zswap_store() is
rejecting pages or zswap_load() is failing to find stored pages. This
series implements two mitigation logics to reduce the IO contention:

2-a. Do not reject pages in zswap_store().
This is mostly achieved by patch 3. With patch 3, zswap can prepare
space proactively and accept pages while the global shrinker is running.

To avoid rejection further, patch 5 (store incompressible pages) is
added. This reduces rejection by storing incompressible pages. When
zsmalloc is used, we can accept incompressible pages with small memory
overhead. It is a minor optimization, but I think it is worth
implementing. This does not improve performance on current zbud but does
not incur a performance penalty.

2-b. Interrupt writeback while pagein/out.
Once zswap runs out of prepared space, we cannot accept incoming pages,
incurring direct writes to the swap disk. At this moment, the shrinker
is proactively evicting pages, leading to IO contention with memory
reclaim.

Performing low-priority IO is straightforward but requires
reimplementing a low-priority version of __swap_writepage(). Instead, in
patch 6, I implemented a heuristic, delaying the next zswap writeback
based on the elapsed time since zswap_store() rejected a page.

When zswap_store() hits the max pool size and rejects pages,
swap_writepage() immediately performs the writeback to disk. The time
jiffies is saved to tell shrink_worker() to sleep up to
ZSWAP_GLOBAL_SHRINK_DELAY msec.

The same logic applied to zswap_load(). When zswap cannot find a page in
the stored pool, pagein requires read IO from the swap device. The
global shrinker should be interrupted here.

This patch proposes a constant delay of 500 milliseconds, aligning with
the mq-deadline target latency.

Visible change
-------------------------------
With patches 4 to 6, the global shrinker pauses the writeback while
pagein/out operations are using the swap device. This change reduces
resource contention and makes memory reclaim/faults complete faster,
thereby reducing system responsiveness degradation. 

Intended scenario for memory reclaim:
1. zswap pool < accept_threshold as the initial state. This is achieved
   by patch 3, proactive shrinking.
2. Active processes start allocating pages. Pageout is buffered by zswap
   without IO.
3. zswap reaches shrink_start_threshold. zswap continues to buffer
   incoming pages and starts writeback immediately in the background.
4. zswap reaches max pool size. zswap interrupts the global shrinker and
   starts rejecting pages. Write IO for the rejected page will consume
   all IO resources.
5. Active processes stop allocating pages. After the delay, the shrinker
   resumes writeback until the accept threshold.

Benchmark
-------------------------------
To demonstrate that the shrinker writeback is not interfering with
pagein/out operations, I measured the elapsed time of allocating 2GB of
3/4 compressible data by a Python script, averaged over 10 runs:

|                      | elapsed| user  | sys   |
|----------------------|--------|-------|-------|
| With patches 1 to 3  | 13.10  | 0.183 | 2.049 |
| With all patches     | 11.17  | 0.116 | 1.490 |
| zswap off (baseline) | 11.81  | 0.149 | 1.381 |

Although this test cannot distinguish responsiveness issues caused by
zswap writeback from normal memory thrashing between plain pagein/out,
the difference from the baseline indicates that the patches reduced
performance degradation on pageout caused by zswap writeback.

The tests were run on kernel 6.10-rc5 on a VM with 1GB RAM (idling Azure
VM with persistent block swap device), 2 vCPUs, zsmalloc/lz4, 25% max
pool, and 50% accept threshold.

---


Takero Funaki (6):
  mm: zswap: fix global shrinker memcg iteration
  mm: zswap: fix global shrinker error handling logic
  mm: zswap: proactive shrinking before pool size limit is hit
  mm: zswap: make writeback run in the background
  mm: zswap: store incompressible page as-is
  mm: zswap: interrupt shrinker writeback while pagein/out IO

 Documentation/admin-guide/mm/zswap.rst |  17 +-
 mm/zswap.c                             | 264 ++++++++++++++++++++-----
 2 files changed, 219 insertions(+), 62 deletions(-)

-- 
2.43.0

.

From: Tianyang Zhang <zhangtianyang@loongson.cn>
To: corbet@lwn.net,
	alexs@kernel.org,
	siyanteng@loongson.cn,
	chenhuacai@kernel.org,
	kernel@xen0n.name,
	tglx@linutronix.de,
	jiaxun.yang@flygoat.com,
	gaoliang@loongson.cn,
	wangliupu@loongson.cn,
	lvjianmin@loongson.cn,
	zhangtianyang@loongson.cn,
	yijun@loongson.cn,
	mhocko@suse.com,
	akpm@linux-foundation.org,
	dianders@chromium.org,
	maobibo@loongson.cn,
	xry111@xry111.site,
	zhaotianrui@loongson.cn,
	nathan@kernel.org,
	yangtiezhu@loongson.cn,
	zhoubinbin@loongson.cn
Cc: loongarch@lists.linux.dev,
	linux-doc@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH V3] LoongArch: Add AVEC irqchip support
Date: Sat,  6 Jul 2024 10:45:22 +0800
Message-Id: <20240706024522.30644-1-zhangtianyang@loongson.cn>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269603
Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.loongarch,org.kernel.vger.linux-doc
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Introduce the advanced extended interrupt controllers. This feature will
allow each core to have 256 independent interrupt vectors and MSI
interrupts can be independently routed to any vector on any CPU.

Co-developed-by: Jianmin Lv <lvjianmin@loongson.cn>
Signed-off-by: Jianmin Lv <lvjianmin@loongson.cn>
Co-developed-by: Liupu Wang <wangliupu@loongson.cn>
Signed-off-by: Liupu Wang <wangliupu@loongson.cn>
Co-developed-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Tianyang Zhang <zhangtianyang@loongson.cn>
---
 .../arch/loongarch/irq-chip-model.rst         |  33 ++
 .../zh_CN/arch/loongarch/irq-chip-model.rst   |  37 +-
 arch/loongarch/Kconfig                        |   1 +
 arch/loongarch/include/asm/cpu-features.h     |   1 +
 arch/loongarch/include/asm/cpu.h              |   2 +
 arch/loongarch/include/asm/hw_irq.h           |  10 +
 arch/loongarch/include/asm/irq.h              |  12 +-
 arch/loongarch/include/asm/loongarch.h        |  20 +-
 arch/loongarch/include/asm/smp.h              |   2 +
 arch/loongarch/kernel/cpu-probe.c             |   3 +-
 arch/loongarch/kernel/smp.c                   |   5 +
 drivers/irqchip/Makefile                      |   2 +-
 drivers/irqchip/irq-loongarch-avec.c          | 440 ++++++++++++++++++
 drivers/irqchip/irq-loongarch-cpu.c           |   4 +-
 drivers/irqchip/irq-loongson-eiointc.c        |   3 +
 drivers/irqchip/irq-loongson-pch-msi.c        |  43 +-
 16 files changed, 605 insertions(+), 13 deletions(-)
 create mode 100644 drivers/irqchip/irq-loongarch-avec.c

Changes log:
V0->V1:
        1.Modified some formats and declarations
        2.Removed kmalloc/kfree when adding affinity related data to pending_list,
          and used moving tag to replace the original behavior
        3.Adjusted the process that enables AVEC interrupts, now it is at the end of all processes
        4.Removed CPUHP related callbacks, now irq_matrix_online/irq_matrix_offline is completed in start_secondary/loongson_cpu_disable
        5.Adjusted compatibility issues for CONFIG_ACPI
        6.About question:
        > irr = csr_read64(LOONGARCH_CSR_IRR0 + vector / 64);
        > should be good enough, no?
        csr_read64 was built-in as __csrrd_d, it doesn't seem to support variables as parameters
        >>>>
        drivers/irqchip/irq-loongarch-avec.c: In function ‘complete_irq_moving’:
        ./arch/loongarch/include/asm/loongarch.h:164:25: error: invalid argument to built-in function
          164 | #define csr_read64(reg) __csrrd_d(reg)
              |                         ^~~~~~~~~
        drivers/irqchip/irq-loongarch-avec.c:170:23: note: in expansion of macro ‘csr_read64’
          170 |                 irr = csr_read64(LOONGARCH_CSR_IRR_BASE + vector / VECTORS_PER_REG);
              |                       ^~~~~~~~~~
        >>>>
        So we have temporarily retained the previous implementation.

V1->V2:
        Fixed up coding style. Made on/offline functions void
        Added compatibility when CONFIG_SMP is turned off

V2->V3:
	Squash two patches into one

diff --git a/Documentation/arch/loongarch/irq-chip-model.rst b/Documentation/arch/loongarch/irq-chip-model.rst
index 7988f4192363..a90c78c8e5bb 100644
--- a/Documentation/arch/loongarch/irq-chip-model.rst
+++ b/Documentation/arch/loongarch/irq-chip-model.rst
@@ -85,6 +85,39 @@ to CPUINTC directly::
     | Devices |
     +---------+
 
+Advanced Extended IRQ model
+===========================
+
+In this model, IPI (Inter-Processor Interrupt) and CPU Local Timer interrupt go
+to CPUINTC directly, CPU UARTS interrupts go to LIOINTC, PCH-MSI interrupts go to AVEC,
+and then go to CPUINTC, Other devices interrupts go to PCH-PIC/PCH-LPC and gathered
+by EIOINTC, and then go to CPUINTC directly::
+
+ +-----+     +--------------------------+     +-------+
+ | IPI | --> |           CPUINTC        | <-- | Timer |
+ +-----+     +--------------------------+     +-------+
+              ^        ^             ^
+              |        |             |
+      +--------+  +---------+ +---------+     +-------+
+      | AVEC   |  | EIOINTC | | LIOINTC | <-- | UARTs |
+      +--------+  +---------+ +---------+     +-------+
+           ^            ^
+           |            |
+         +---------+  +---------+
+         | PCH-MSI |  | PCH-PIC |
+         +---------+  +---------+
+            ^          ^       ^
+            |          |       |
+    +---------+ +---------+ +---------+
+    | Devices | | PCH-LPC | | Devices |
+    +---------+ +---------+ +---------+
+                     ^
+                     |
+                +---------+
+                | Devices |
+                +---------+
+
+
 ACPI-related definitions
 ========================
 
diff --git a/Documentation/translations/zh_CN/arch/loongarch/irq-chip-model.rst b/Documentation/translations/zh_CN/arch/loongarch/irq-chip-model.rst
index f1e9ab18206c..b54567380c90 100644
--- a/Documentation/translations/zh_CN/arch/loongarch/irq-chip-model.rst
+++ b/Documentation/translations/zh_CN/arch/loongarch/irq-chip-model.rst
@@ -9,9 +9,8 @@
 LoongArch的IRQ芯片模型（层级关系）
 ==================================
 
-目前，基于LoongArch的处理器（如龙芯3A5000）只能与LS7A芯片组配合工作。LoongArch计算机
-中的中断控制器（即IRQ芯片）包括CPUINTC（CPU Core Interrupt Controller）、LIOINTC（
-Legacy I/O Interrupt Controller）、EIOINTC（Extended I/O Interrupt Controller）、
+LoongArch计算机中的中断控制器（即IRQ芯片）包括CPUINTC（CPU Core Interrupt Controller）、
+LIOINTC（Legacy I/O Interrupt Controller）、EIOINTC（Extended I/O Interrupt Controller）、
 HTVECINTC（Hyper-Transport Vector Interrupt Controller）、PCH-PIC（LS7A芯片组的主中
 断控制器）、PCH-LPC（LS7A芯片组的LPC中断控制器）和PCH-MSI（MSI中断控制器）。
 
@@ -87,6 +86,38 @@ PCH-LPC/PCH-MSI，然后被EIOINTC统一收集，再直接到达CPUINTC::
     | Devices |
     +---------+
 
+高级扩展IRQ模型
+=======================
+
+在这种模型里面，IPI（Inter-Processor Interrupt）和CPU本地时钟中断直接发送到CPUINTC，
+CPU串口（UARTs）中断发送到LIOINTC，PCH-MSI中断发送到AVEC，而后通过AVEC送达CPUINTC，而
+其他所有设备的中断则分别发送到所连接的PCH-PIC/PCH-LPC，然后由EIOINTC统一收集，再直
+接到达CPUINTC::
+
+ +-----+     +--------------------------+     +-------+
+ | IPI | --> |           CPUINTC        | <-- | Timer |
+ +-----+     +--------------------------+     +-------+
+              ^        ^             ^
+              |        |             |
+      +--------+  +---------+ +---------+     +-------+
+      | AVEC   |  | EIOINTC | | LIOINTC | <-- | UARTs |
+      +--------+  +---------+ +---------+     +-------+
+              ^        ^
+              |        |
+      +---------+  +-------------+
+      | PCH-MSI |  |   PCH-PIC   |
+      +---------+  +-------------+
+            ^          ^       ^
+            |          |       |
+    +---------+ +---------+ +---------+
+    | Devices | | PCH-LPC | | Devices |
+    +---------+ +---------+ +---------+
+                     ^
+                     |
+                +---------+
+                | Devices |
+                +---------+
+
 ACPI相关的定义
 ==============
 
diff --git a/arch/loongarch/Kconfig b/arch/loongarch/Kconfig
index e38139c576ee..a66e49b5a68c 100644
--- a/arch/loongarch/Kconfig
+++ b/arch/loongarch/Kconfig
@@ -83,6 +83,7 @@ config LOONGARCH
 	select GENERIC_ENTRY
 	select GENERIC_GETTIMEOFDAY
 	select GENERIC_IOREMAP if !ARCH_IOREMAP
+	select GENERIC_IRQ_MATRIX_ALLOCATOR
 	select GENERIC_IRQ_MULTI_HANDLER
 	select GENERIC_IRQ_PROBE
 	select GENERIC_IRQ_SHOW
diff --git a/arch/loongarch/include/asm/cpu-features.h b/arch/loongarch/include/asm/cpu-features.h
index 2eafe6a6aca8..16a716f88a5c 100644
--- a/arch/loongarch/include/asm/cpu-features.h
+++ b/arch/loongarch/include/asm/cpu-features.h
@@ -65,5 +65,6 @@
 #define cpu_has_guestid		cpu_opt(LOONGARCH_CPU_GUESTID)
 #define cpu_has_hypervisor	cpu_opt(LOONGARCH_CPU_HYPERVISOR)
 #define cpu_has_ptw		cpu_opt(LOONGARCH_CPU_PTW)
+#define cpu_has_avecint		cpu_opt(LOONGARCH_CPU_AVECINT)
 
 #endif /* __ASM_CPU_FEATURES_H */
diff --git a/arch/loongarch/include/asm/cpu.h b/arch/loongarch/include/asm/cpu.h
index 48b9f7168bcc..843f9c4ec980 100644
--- a/arch/loongarch/include/asm/cpu.h
+++ b/arch/loongarch/include/asm/cpu.h
@@ -99,6 +99,7 @@ enum cpu_type_enum {
 #define CPU_FEATURE_GUESTID		24	/* CPU has GuestID feature */
 #define CPU_FEATURE_HYPERVISOR		25	/* CPU has hypervisor (running in VM) */
 #define CPU_FEATURE_PTW			26	/* CPU has hardware page table walker */
+#define CPU_FEATURE_AVECINT		27	/* CPU has avec interrupt */
 
 #define LOONGARCH_CPU_CPUCFG		BIT_ULL(CPU_FEATURE_CPUCFG)
 #define LOONGARCH_CPU_LAM		BIT_ULL(CPU_FEATURE_LAM)
@@ -127,5 +128,6 @@ enum cpu_type_enum {
 #define LOONGARCH_CPU_GUESTID		BIT_ULL(CPU_FEATURE_GUESTID)
 #define LOONGARCH_CPU_HYPERVISOR	BIT_ULL(CPU_FEATURE_HYPERVISOR)
 #define LOONGARCH_CPU_PTW		BIT_ULL(CPU_FEATURE_PTW)
+#define LOONGARCH_CPU_AVECINT		BIT_ULL(CPU_FEATURE_AVECINT)
 
 #endif /* _ASM_CPU_H */
diff --git a/arch/loongarch/include/asm/hw_irq.h b/arch/loongarch/include/asm/hw_irq.h
index af4f4e8fbd85..772692e765c0 100644
--- a/arch/loongarch/include/asm/hw_irq.h
+++ b/arch/loongarch/include/asm/hw_irq.h
@@ -9,6 +9,16 @@
 
 extern atomic_t irq_err_count;
 
+/*
+ * 256 vectors Map:
+ *
+ * 0 - 15: mapping legacy IPs, e.g. IP0-12.
+ * 16 - 255: mapping a vector for external IRQ.
+ *
+ */
+#define NR_VECTORS		256
+#define IRQ_MATRIX_BITS		NR_VECTORS
+#define NR_LEGACY_VECTORS	16
 /*
  * interrupt-retrigger: NOP for now. This may not be appropriate for all
  * machines, we'll see ...
diff --git a/arch/loongarch/include/asm/irq.h b/arch/loongarch/include/asm/irq.h
index 480418bc5071..cf3b635a9b86 100644
--- a/arch/loongarch/include/asm/irq.h
+++ b/arch/loongarch/include/asm/irq.h
@@ -65,7 +65,7 @@ extern struct acpi_vector_group msi_group[MAX_IO_PICS];
 #define LOONGSON_LPC_LAST_IRQ		(LOONGSON_LPC_IRQ_BASE + 15)
 
 #define LOONGSON_CPU_IRQ_BASE		16
-#define LOONGSON_CPU_LAST_IRQ		(LOONGSON_CPU_IRQ_BASE + 14)
+#define LOONGSON_CPU_LAST_IRQ		(LOONGSON_CPU_IRQ_BASE + 15)
 
 #define LOONGSON_PCH_IRQ_BASE		64
 #define LOONGSON_PCH_ACPI_IRQ		(LOONGSON_PCH_IRQ_BASE + 47)
@@ -101,6 +101,16 @@ int pch_msi_acpi_init(struct irq_domain *parent,
 					struct acpi_madt_msi_pic *acpi_pchmsi);
 int pch_pic_acpi_init(struct irq_domain *parent,
 					struct acpi_madt_bio_pic *acpi_pchpic);
+
+#ifdef CONFIG_ACPI
+int __init pch_msi_acpi_init_v2(struct irq_domain *parent,
+		struct acpi_madt_msi_pic *pch_msi_entry);
+int __init loongarch_avec_acpi_init(struct irq_domain *parent);
+void complete_irq_moving(void);
+void loongarch_avec_offline_cpu(unsigned int cpu);
+void loongarch_avec_online_cpu(unsigned int cpu);
+#endif
+
 int find_pch_pic(u32 gsi);
 struct fwnode_handle *get_pch_msi_handle(int pci_segment);
 
diff --git a/arch/loongarch/include/asm/loongarch.h b/arch/loongarch/include/asm/loongarch.h
index eb09adda54b7..16a910359977 100644
--- a/arch/loongarch/include/asm/loongarch.h
+++ b/arch/loongarch/include/asm/loongarch.h
@@ -72,7 +72,6 @@
 #define  CPUCFG1_RPLV			BIT(23)
 #define  CPUCFG1_HUGEPG			BIT(24)
 #define  CPUCFG1_CRC32			BIT(25)
-#define  CPUCFG1_MSGINT			BIT(26)
 
 #define LOONGARCH_CPUCFG2		0x2
 #define  CPUCFG2_FP			BIT(0)
@@ -252,8 +251,8 @@
 #define  CSR_ESTAT_EXC_WIDTH		6
 #define  CSR_ESTAT_EXC			(_ULCAST_(0x3f) << CSR_ESTAT_EXC_SHIFT)
 #define  CSR_ESTAT_IS_SHIFT		0
-#define  CSR_ESTAT_IS_WIDTH		14
-#define  CSR_ESTAT_IS			(_ULCAST_(0x3fff) << CSR_ESTAT_IS_SHIFT)
+#define  CSR_ESTAT_IS_WIDTH		15
+#define  CSR_ESTAT_IS			(_ULCAST_(0x7fff) << CSR_ESTAT_IS_SHIFT)
 
 #define LOONGARCH_CSR_ERA		0x6	/* ERA */
 
@@ -999,10 +998,18 @@
 #define CSR_FWPC_SKIP_SHIFT		16
 #define CSR_FWPC_SKIP			(_ULCAST_(1) << CSR_FWPC_SKIP_SHIFT)
 
+#define LOONGARCH_CSR_IRR0		0xa0
+#define LOONGARCH_CSR_IRR1		0xa1
+#define LOONGARCH_CSR_IRR2		0xa2
+#define LOONGARCH_CSR_IRR3		0xa3
+#define LOONGARCH_CSR_IRR_BASE		LOONGARCH_CSR_IRR0
+
+#define	LOONGARCH_CSR_ILR		0xa4
+
 /*
  * CSR_ECFG IM
  */
-#define ECFG0_IM		0x00001fff
+#define ECFG0_IM		0x00005fff
 #define ECFGB_SIP0		0
 #define ECFGF_SIP0		(_ULCAST_(1) << ECFGB_SIP0)
 #define ECFGB_SIP1		1
@@ -1045,6 +1052,7 @@
 #define  IOCSRF_EIODECODE		BIT_ULL(9)
 #define  IOCSRF_FLATMODE		BIT_ULL(10)
 #define  IOCSRF_VM			BIT_ULL(11)
+#define  IOCSRF_AVEC			BIT_ULL(15)
 
 #define LOONGARCH_IOCSR_VENDOR		0x10
 
@@ -1055,6 +1063,7 @@
 #define LOONGARCH_IOCSR_MISC_FUNC	0x420
 #define  IOCSR_MISC_FUNC_TIMER_RESET	BIT_ULL(21)
 #define  IOCSR_MISC_FUNC_EXT_IOI_EN	BIT_ULL(48)
+#define  IOCSR_MISC_FUNC_AVEC_EN	BIT_ULL(51)
 
 #define LOONGARCH_IOCSR_CPUTEMP		0x428
 
@@ -1375,9 +1384,10 @@ __BUILD_CSR_OP(tlbidx)
 #define INT_TI		11	/* Timer */
 #define INT_IPI		12
 #define INT_NMI		13
+#define INT_AVEC	14
 
 /* ExcCodes corresponding to interrupts */
-#define EXCCODE_INT_NUM		(INT_NMI + 1)
+#define EXCCODE_INT_NUM		(INT_AVEC + 1)
 #define EXCCODE_INT_START	64
 #define EXCCODE_INT_END		(EXCCODE_INT_START + EXCCODE_INT_NUM - 1)
 
diff --git a/arch/loongarch/include/asm/smp.h b/arch/loongarch/include/asm/smp.h
index 278700cfee88..2399004596a3 100644
--- a/arch/loongarch/include/asm/smp.h
+++ b/arch/loongarch/include/asm/smp.h
@@ -69,9 +69,11 @@ extern int __cpu_logical_map[NR_CPUS];
 #define ACTION_BOOT_CPU	0
 #define ACTION_RESCHEDULE	1
 #define ACTION_CALL_FUNCTION	2
+#define ACTION_CLEAR_VECT	3
 #define SMP_BOOT_CPU		BIT(ACTION_BOOT_CPU)
 #define SMP_RESCHEDULE		BIT(ACTION_RESCHEDULE)
 #define SMP_CALL_FUNCTION	BIT(ACTION_CALL_FUNCTION)
+#define SMP_CLEAR_VECT		BIT(ACTION_CLEAR_VECT)
 
 struct secondary_data {
 	unsigned long stack;
diff --git a/arch/loongarch/kernel/cpu-probe.c b/arch/loongarch/kernel/cpu-probe.c
index 55320813ee08..3b2e72e8f9bd 100644
--- a/arch/loongarch/kernel/cpu-probe.c
+++ b/arch/loongarch/kernel/cpu-probe.c
@@ -106,7 +106,6 @@ static void cpu_probe_common(struct cpuinfo_loongarch *c)
 		elf_hwcap |= HWCAP_LOONGARCH_CRC32;
 	}
 
-
 	config = read_cpucfg(LOONGARCH_CPUCFG2);
 	if (config & CPUCFG2_LAM) {
 		c->options |= LOONGARCH_CPU_LAM;
@@ -176,6 +175,8 @@ static void cpu_probe_common(struct cpuinfo_loongarch *c)
 		c->options |= LOONGARCH_CPU_EIODECODE;
 	if (config & IOCSRF_VM)
 		c->options |= LOONGARCH_CPU_HYPERVISOR;
+	if (config & IOCSRF_AVEC)
+		c->options |= LOONGARCH_CPU_AVECINT;
 
 	config = csr_read32(LOONGARCH_CSR_ASID);
 	config = (config & CSR_ASID_BIT) >> CSR_ASID_BIT_SHIFT;
diff --git a/arch/loongarch/kernel/smp.c b/arch/loongarch/kernel/smp.c
index 0dfe2388ef41..6dfedef306f3 100644
--- a/arch/loongarch/kernel/smp.c
+++ b/arch/loongarch/kernel/smp.c
@@ -234,6 +234,9 @@ static irqreturn_t loongson_ipi_interrupt(int irq, void *dev)
 		per_cpu(irq_stat, cpu).ipi_irqs[IPI_CALL_FUNCTION]++;
 	}
 
+	if (action & SMP_CLEAR_VECT)
+		complete_irq_moving();
+
 	return IRQ_HANDLED;
 }
 
@@ -388,6 +391,7 @@ int loongson_cpu_disable(void)
 	irq_migrate_all_off_this_cpu();
 	clear_csr_ecfg(ECFG0_IM);
 	local_irq_restore(flags);
+	loongarch_avec_offline_cpu(cpu);
 	local_flush_tlb_all();
 
 	return 0;
@@ -566,6 +570,7 @@ asmlinkage void start_secondary(void)
 	 * early is dangerous.
 	 */
 	WARN_ON_ONCE(!irqs_disabled());
+	loongarch_avec_online_cpu(cpu);
 	loongson_smp_finish();
 
 	cpu_startup_entry(CPUHP_AP_ONLINE_IDLE);
diff --git a/drivers/irqchip/Makefile b/drivers/irqchip/Makefile
index 2df72b7b165b..de091a9f7c88 100644
--- a/drivers/irqchip/Makefile
+++ b/drivers/irqchip/Makefile
@@ -110,7 +110,7 @@ obj-$(CONFIG_LS1X_IRQ)			+= irq-ls1x.o
 obj-$(CONFIG_TI_SCI_INTR_IRQCHIP)	+= irq-ti-sci-intr.o
 obj-$(CONFIG_TI_SCI_INTA_IRQCHIP)	+= irq-ti-sci-inta.o
 obj-$(CONFIG_TI_PRUSS_INTC)		+= irq-pruss-intc.o
-obj-$(CONFIG_IRQ_LOONGARCH_CPU)		+= irq-loongarch-cpu.o
+obj-$(CONFIG_IRQ_LOONGARCH_CPU)		+= irq-loongarch-cpu.o irq-loongarch-avec.o
 obj-$(CONFIG_LOONGSON_LIOINTC)		+= irq-loongson-liointc.o
 obj-$(CONFIG_LOONGSON_EIOINTC)		+= irq-loongson-eiointc.o
 obj-$(CONFIG_LOONGSON_HTPIC)		+= irq-loongson-htpic.o
diff --git a/drivers/irqchip/irq-loongarch-avec.c b/drivers/irqchip/irq-loongarch-avec.c
new file mode 100644
index 000000000000..81dbccbea5a2
--- /dev/null
+++ b/drivers/irqchip/irq-loongarch-avec.c
@@ -0,0 +1,440 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2020-2024 Loongson Technologies, Inc.
+ */
+
+#include <linux/cpuhotplug.h>
+#include <linux/init.h>
+#include <linux/interrupt.h>
+#include <linux/irq.h>
+#include <linux/irqchip.h>
+#include <linux/irqchip/chained_irq.h>
+#include <linux/irqdomain.h>
+#include <linux/kernel.h>
+#include <linux/msi.h>
+#include <linux/radix-tree.h>
+#include <linux/spinlock.h>
+
+#include <asm/loongarch.h>
+#include <asm/setup.h>
+
+#define VECTORS_PER_REG		64
+#define ILR_INVALID_MASK	0x80000000UL
+#define ILR_VECTOR_MASK		0xffUL
+#define AVEC_MSG_OFFSET		0x100000
+
+static phys_addr_t msi_base_v2;
+static DEFINE_PER_CPU(struct irq_desc * [NR_VECTORS], irq_map);
+
+#ifdef CONFIG_SMP
+struct pending_list {
+	struct list_head	head;
+};
+
+static DEFINE_PER_CPU(struct pending_list, pending_list);
+#endif
+
+struct loongarch_avec_chip {
+	struct fwnode_handle	*fwnode;
+	struct irq_domain	*domain;
+	struct irq_matrix	*vector_matrix;
+	raw_spinlock_t		lock;
+};
+
+static struct loongarch_avec_chip loongarch_avec;
+
+struct loongarch_avec_data {
+	struct list_head	entry;
+	unsigned int		cpu;
+	unsigned int		vec;
+	unsigned int		prev_cpu;
+	unsigned int		prev_vec;
+	unsigned int		moving		: 1,
+				managed		: 1;
+};
+
+static struct cpumask intersect_mask;
+
+static int assign_irq_vector(struct irq_data *irqd, const struct cpumask *dest,
+			     unsigned int *cpu)
+{
+	return irq_matrix_alloc(loongarch_avec.vector_matrix, dest, false, cpu);
+}
+
+static inline void loongarch_avec_ack_irq(struct irq_data *d)
+{
+}
+
+static inline void loongarch_avec_unmask_irq(struct irq_data *d)
+{
+}
+
+static inline void loongarch_avec_mask_irq(struct irq_data *d)
+{
+}
+
+#ifdef CONFIG_SMP
+static inline void pending_list_init(int cpu)
+{
+	struct pending_list *plist = per_cpu_ptr(&pending_list, cpu);
+
+	INIT_LIST_HEAD(&plist->head);
+}
+
+static void loongarch_avec_sync(struct loongarch_avec_data *adata)
+{
+	struct pending_list *plist;
+
+	if (cpu_online(adata->prev_cpu)) {
+		plist = per_cpu_ptr(&pending_list, adata->prev_cpu);
+		list_add_tail(&adata->entry, &plist->head);
+		adata->moving = true;
+		mp_ops.send_ipi_single(adata->prev_cpu, ACTION_CLEAR_VECT);
+	}
+}
+
+static int loongarch_avec_set_affinity(struct irq_data *data, const struct cpumask *dest,
+				       bool force)
+{
+	struct loongarch_avec_data *adata;
+	unsigned int cpu, vector;
+	unsigned long flags;
+	int ret;
+
+	raw_spin_lock_irqsave(&loongarch_avec.lock, flags);
+	adata = irq_data_get_irq_chip_data(data);
+
+	if (adata->vec && cpu_online(adata->cpu) && cpumask_test_cpu(adata->cpu, dest)) {
+		raw_spin_unlock_irqrestore(&loongarch_avec.lock, flags);
+		return 0;
+	}
+	if (adata->moving)
+		return -EBUSY;
+
+	cpumask_and(&intersect_mask, dest, cpu_online_mask);
+
+	ret = assign_irq_vector(data, &intersect_mask, &cpu);
+	if (ret < 0) {
+		raw_spin_unlock_irqrestore(&loongarch_avec.lock, flags);
+		return ret;
+	}
+	vector = ret;
+	adata->cpu = cpu;
+	adata->vec = vector;
+	per_cpu_ptr(irq_map, adata->cpu)[adata->vec] = irq_data_to_desc(data);
+	loongarch_avec_sync(adata);
+
+	raw_spin_unlock_irqrestore(&loongarch_avec.lock, flags);
+	irq_data_update_effective_affinity(data, cpumask_of(cpu));
+
+	return IRQ_SET_MASK_OK;
+}
+
+void complete_irq_moving(void)
+{
+	struct pending_list *plist = this_cpu_ptr(&pending_list);
+	struct loongarch_avec_data *adata, *tmp;
+	int cpu, vector, bias;
+	u64 irr;
+
+	raw_spin_lock(&loongarch_avec.lock);
+
+	list_for_each_entry_safe(adata, tmp, &plist->head, entry) {
+		cpu = adata->prev_cpu;
+		vector = adata->prev_vec;
+		bias = vector / VECTORS_PER_REG;
+		switch (bias) {
+		case 0:
+			irr = csr_read64(LOONGARCH_CSR_IRR0);
+		case 1:
+			irr = csr_read64(LOONGARCH_CSR_IRR1);
+		case 2:
+			irr = csr_read64(LOONGARCH_CSR_IRR2);
+		case 3:
+			irr = csr_read64(LOONGARCH_CSR_IRR3);
+		}
+
+		if (irr & (1UL << (vector % VECTORS_PER_REG))) {
+			mp_ops.send_ipi_single(cpu, ACTION_CLEAR_VECT);
+			continue;
+		}
+		list_del(&adata->entry);
+		irq_matrix_free(loongarch_avec.vector_matrix, cpu, vector, adata->managed);
+		this_cpu_write(irq_map[vector], NULL);
+		adata->prev_cpu = adata->cpu;
+		adata->prev_vec = adata->vec;
+		adata->moving = 0;
+	}
+	raw_spin_unlock(&loongarch_avec.lock);
+}
+
+void loongarch_avec_offline_cpu(unsigned int cpu)
+{
+	struct pending_list *plist = per_cpu_ptr(&pending_list, cpu);
+	unsigned long flags;
+
+	if (!loongarch_avec.vector_matrix)
+		return;
+
+	raw_spin_lock_irqsave(&loongarch_avec.lock, flags);
+	if (list_empty(&plist->head))
+		irq_matrix_offline(loongarch_avec.vector_matrix);
+	else
+		pr_warn("cpu %d advanced extioi is busy\n", cpu);
+	raw_spin_unlock_irqrestore(&loongarch_avec.lock, flags);
+}
+
+void loongarch_avec_online_cpu(unsigned int cpu)
+{
+	unsigned long flags;
+
+	if (!loongarch_avec.vector_matrix)
+		return;
+
+	raw_spin_lock_irqsave(&loongarch_avec.lock, flags);
+
+	irq_matrix_online(loongarch_avec.vector_matrix);
+
+	pending_list_init(cpu);
+
+	raw_spin_unlock_irqrestore(&loongarch_avec.lock, flags);
+}
+
+#else
+#define loongarch_avec_set_affinity		NULL
+#endif
+
+static void loongarch_avec_compose_msg(struct irq_data *d,
+		struct msi_msg *msg)
+{
+	struct loongarch_avec_data *avec_data;
+
+	avec_data = irq_data_get_irq_chip_data(d);
+
+	msg->address_hi = 0xfd;
+	msg->address_lo = ((avec_data->vec & 0xff) << 4) |
+			  ((cpu_logical_map(avec_data->cpu & 0xffff)) << 12);
+	msg->data = 0x0;
+
+}
+
+static struct irq_chip loongarch_avec_controller = {
+	.name			= "AVECINTC",
+	.irq_ack		= loongarch_avec_ack_irq,
+	.irq_mask		= loongarch_avec_mask_irq,
+	.irq_unmask		= loongarch_avec_unmask_irq,
+	.irq_set_affinity	= loongarch_avec_set_affinity,
+	.irq_compose_msi_msg	= loongarch_avec_compose_msg,
+};
+
+static void loongarch_avec_dispatch(struct irq_desc *desc)
+{
+	struct irq_chip *chip = irq_desc_get_chip(desc);
+	unsigned long vector;
+	struct irq_desc *d;
+
+	chained_irq_enter(chip, desc);
+	vector = csr_read64(LOONGARCH_CSR_ILR);
+	if (vector & ILR_INVALID_MASK)
+		return;
+
+	vector &= ILR_VECTOR_MASK;
+
+	d = this_cpu_read(irq_map[vector]);
+	if (d) {
+		generic_handle_irq_desc(d);
+	} else {
+		pr_warn("IRQ ERROR:Unexpected irq  occur on cpu %d[vector %ld]\n",
+			smp_processor_id(), vector);
+	}
+
+	chained_irq_exit(chip, desc);
+}
+
+static int loongarch_avec_alloc(struct irq_domain *domain, unsigned int virq,
+				unsigned int nr_irqs, void *arg)
+{
+	struct loongarch_avec_data *adata;
+	struct irq_data *irqd;
+	unsigned int cpu, vector, i, ret;
+	unsigned long flags;
+
+	raw_spin_lock_irqsave(&loongarch_avec.lock, flags);
+	for (i = 0; i < nr_irqs; i++) {
+		irqd = irq_domain_get_irq_data(domain, virq + i);
+		adata = kzalloc(sizeof(*adata), GFP_KERNEL);
+		if (!adata) {
+			raw_spin_unlock_irqrestore(&loongarch_avec.lock, flags);
+			return -ENOMEM;
+		}
+		ret = assign_irq_vector(irqd, cpu_online_mask, &cpu);
+		if (ret < 0) {
+			raw_spin_unlock_irqrestore(&loongarch_avec.lock, flags);
+			return ret;
+		}
+		vector = ret;
+		adata->prev_cpu = adata->cpu = cpu;
+		adata->prev_vec = adata->vec = vector;
+		adata->managed = irqd_affinity_is_managed(irqd);
+		irq_domain_set_info(domain, virq + i, virq + i, &loongarch_avec_controller,
+				adata, handle_edge_irq, NULL, NULL);
+		adata->moving = 0;
+		irqd_set_single_target(irqd);
+		irqd_set_affinity_on_activate(irqd);
+
+		per_cpu_ptr(irq_map, adata->cpu)[adata->vec] = irq_data_to_desc(irqd);
+	}
+	raw_spin_unlock_irqrestore(&loongarch_avec.lock, flags);
+
+	return 0;
+}
+
+static void clear_free_vector(struct irq_data *irqd)
+{
+	struct loongarch_avec_data *adata = irq_data_get_irq_chip_data(irqd);
+	bool managed = irqd_affinity_is_managed(irqd);
+
+	per_cpu(irq_map, adata->cpu)[adata->vec] = NULL;
+	irq_matrix_free(loongarch_avec.vector_matrix, adata->cpu, adata->vec, managed);
+	adata->cpu = 0;
+	adata->vec = 0;
+#ifdef CONFIG_SMP
+	if (!adata->moving)
+		return;
+
+	per_cpu(irq_map, adata->prev_cpu)[adata->prev_vec] = 0;
+	irq_matrix_free(loongarch_avec.vector_matrix, adata->prev_cpu,
+			adata->prev_vec, adata->managed);
+	adata->prev_vec = 0;
+	adata->prev_cpu = 0;
+	adata->moving = 0;
+	list_del_init(&adata->entry);
+#endif
+}
+
+static void loongarch_avec_free(struct irq_domain *domain, unsigned int virq,
+		unsigned int nr_irqs)
+{
+	struct irq_data *d;
+	unsigned long flags;
+	unsigned int i;
+
+	raw_spin_lock_irqsave(&loongarch_avec.lock, flags);
+	for (i = 0; i < nr_irqs; i++) {
+		d = irq_domain_get_irq_data(domain, virq + i);
+		if (d) {
+			clear_free_vector(d);
+			irq_domain_reset_irq_data(d);
+
+		}
+	}
+
+	raw_spin_unlock_irqrestore(&loongarch_avec.lock, flags);
+}
+
+static const struct irq_domain_ops loongarch_avec_domain_ops = {
+	.alloc		= loongarch_avec_alloc,
+	.free		= loongarch_avec_free,
+};
+
+static int __init irq_matrix_init(void)
+{
+	int i;
+
+	loongarch_avec.vector_matrix = irq_alloc_matrix(NR_VECTORS, 0, NR_VECTORS - 1);
+	if (!loongarch_avec.vector_matrix)
+		return -ENOMEM;
+	for (i = 0; i < NR_LEGACY_VECTORS; i++)
+		irq_matrix_assign_system(loongarch_avec.vector_matrix, i, false);
+
+	irq_matrix_online(loongarch_avec.vector_matrix);
+
+	return 0;
+}
+
+static int __init loongarch_avec_init(struct irq_domain *parent)
+{
+	int ret = 0, parent_irq;
+	unsigned long tmp;
+
+	raw_spin_lock_init(&loongarch_avec.lock);
+
+	loongarch_avec.fwnode = irq_domain_alloc_named_fwnode("CORE_AVEC");
+	if (!loongarch_avec.fwnode) {
+		pr_err("Unable to allocate domain handle\n");
+		ret = -ENOMEM;
+		goto out;
+	}
+
+	loongarch_avec.domain = irq_domain_create_tree(loongarch_avec.fwnode,
+			&loongarch_avec_domain_ops, NULL);
+	if (!loongarch_avec.domain) {
+		pr_err("core-vec: cannot create IRQ domain\n");
+		ret = -ENOMEM;
+		goto out_free_handle;
+	}
+
+	parent_irq = irq_create_mapping(parent, INT_AVEC);
+	if (!parent_irq) {
+		pr_err("Failed to mapping hwirq\n");
+		ret = -EINVAL;
+		goto out_remove_domain;
+	}
+	irq_set_chained_handler_and_data(parent_irq, loongarch_avec_dispatch, NULL);
+
+	ret = irq_matrix_init();
+	if (ret) {
+		pr_err("Failed to init irq matrix\n");
+		goto out_free_matrix;
+	}
+#ifdef CONFIG_SMP
+	pending_list_init(0);
+#endif
+	tmp = iocsr_read64(LOONGARCH_IOCSR_MISC_FUNC);
+	tmp |= IOCSR_MISC_FUNC_AVEC_EN;
+	iocsr_write64(tmp, LOONGARCH_IOCSR_MISC_FUNC);
+
+	return ret;
+
+out_free_matrix:
+	kfree(loongarch_avec.vector_matrix);
+out_remove_domain:
+	irq_domain_remove(loongarch_avec.domain);
+out_free_handle:
+	irq_domain_free_fwnode(loongarch_avec.fwnode);
+out:
+	return ret;
+}
+
+static int __init pch_msi_parse_madt(union acpi_subtable_headers *header,
+				     const unsigned long end)
+{
+	struct acpi_madt_msi_pic *pchmsi_entry = (struct acpi_madt_msi_pic *)header;
+
+	msi_base_v2 = pchmsi_entry->msg_address - AVEC_MSG_OFFSET;
+	return pch_msi_acpi_init_v2(loongarch_avec.domain, pchmsi_entry);
+}
+
+static inline int __init acpi_cascade_irqdomain_init(void)
+{
+	return acpi_table_parse_madt(ACPI_MADT_TYPE_MSI_PIC, pch_msi_parse_madt, 1);
+}
+
+int __init loongarch_avec_acpi_init(struct irq_domain *parent)
+{
+	int ret = 0;
+
+	ret = loongarch_avec_init(parent);
+	if (ret) {
+		pr_err("Failed to init irq domain\n");
+		return ret;
+	}
+
+	ret = acpi_cascade_irqdomain_init();
+	if (ret) {
+		pr_err("Failed to cascade IRQ domain\n");
+		return ret;
+	}
+
+	return ret;
+}
diff --git a/drivers/irqchip/irq-loongarch-cpu.c b/drivers/irqchip/irq-loongarch-cpu.c
index 9d8f2c406043..1ecac59925c6 100644
--- a/drivers/irqchip/irq-loongarch-cpu.c
+++ b/drivers/irqchip/irq-loongarch-cpu.c
@@ -138,7 +138,9 @@ static int __init acpi_cascade_irqdomain_init(void)
 	if (r < 0)
 		return r;
 
-	return 0;
+	if (cpu_has_avecint)
+		r = loongarch_avec_acpi_init(irq_domain);
+	return r;
 }
 
 static int __init cpuintc_acpi_init(union acpi_subtable_headers *header,
diff --git a/drivers/irqchip/irq-loongson-eiointc.c b/drivers/irqchip/irq-loongson-eiointc.c
index c7ddebf312ad..1f9a30488137 100644
--- a/drivers/irqchip/irq-loongson-eiointc.c
+++ b/drivers/irqchip/irq-loongson-eiointc.c
@@ -359,6 +359,9 @@ static int __init acpi_cascade_irqdomain_init(void)
 	if (r < 0)
 		return r;
 
+	if (cpu_has_avecint)
+		return 0;
+
 	r = acpi_table_parse_madt(ACPI_MADT_TYPE_MSI_PIC, pch_msi_parse_madt, 1);
 	if (r < 0)
 		return r;
diff --git a/drivers/irqchip/irq-loongson-pch-msi.c b/drivers/irqchip/irq-loongson-pch-msi.c
index dd4d699170f4..1926857f9a41 100644
--- a/drivers/irqchip/irq-loongson-pch-msi.c
+++ b/drivers/irqchip/irq-loongson-pch-msi.c
@@ -16,7 +16,6 @@
 #include <linux/slab.h>
 
 static int nr_pics;
-
 struct pch_msi_data {
 	struct mutex	msi_map_lock;
 	phys_addr_t	doorbell;
@@ -100,6 +99,17 @@ static struct irq_chip middle_irq_chip = {
 	.irq_compose_msi_msg	= pch_msi_compose_msi_msg,
 };
 
+static struct irq_chip pch_msi_irq_chip_v2 = {
+	.name			= "MSI",
+	.irq_ack		= irq_chip_ack_parent,
+};
+
+static struct msi_domain_info pch_msi_domain_info_v2 = {
+	.flags		= MSI_FLAG_USE_DEF_DOM_OPS | MSI_FLAG_USE_DEF_CHIP_OPS |
+			MSI_FLAG_MULTI_PCI_MSI | MSI_FLAG_PCI_MSIX,
+	.chip	= &pch_msi_irq_chip_v2,
+};
+
 static int pch_msi_parent_domain_alloc(struct irq_domain *domain,
 					unsigned int virq, int hwirq)
 {
@@ -268,6 +278,9 @@ struct fwnode_handle *get_pch_msi_handle(int pci_segment)
 {
 	int i;
 
+	if (cpu_has_avecint)
+		return pch_msi_handle[0];
+
 	for (i = 0; i < MAX_IO_PICS; i++) {
 		if (msi_group[i].pci_segment == pci_segment)
 			return pch_msi_handle[i];
@@ -289,4 +302,32 @@ int __init pch_msi_acpi_init(struct irq_domain *parent,
 
 	return ret;
 }
+
+int __init pch_msi_acpi_init_v2(struct irq_domain *parent,
+		struct acpi_madt_msi_pic *msi_entry)
+{
+	struct irq_domain *msi_domain;
+
+	if (pch_msi_handle[0])
+		return 0;
+
+	pch_msi_handle[0] = irq_domain_alloc_named_fwnode("msipic-v2");
+	if (!pch_msi_handle[0]) {
+		pr_err("Unable to allocate domain handle\n");
+		kfree(pch_msi_handle[0]);
+		return -ENOMEM;
+	}
+
+	msi_domain = pci_msi_create_irq_domain(pch_msi_handle[0],
+			&pch_msi_domain_info_v2,
+			parent);
+	if (!msi_domain) {
+		pr_err("Failed to create PCI MSI domain\n");
+		kfree(pch_msi_handle[0]);
+		return -ENOMEM;
+	}
+
+	pr_info("IRQ domain MSIPIC-V2 init done.\n");
+	return 0;
+}
 #endif
-- 
2.20.1

.

From: wanglinhui <wanglinhui@huawei.com>
To: Russell King <linux@armlinux.org.uk>, <rmk+kernel@armlinux.org.uk>, Andrew
 Morton <akpm@linux-foundation.org>, Kees Cook <kees@kernel.org>, Kefeng Wang
	<wangkefeng.wang@huawei.com>, Suren Baghdasaryan <surenb@google.com>
CC: Linus Walleij <linus.walleij@linaro.org>, Catalin Marinas
	<catalin.marinas@arm.com>, <linux-arm-kernel@lists.infradead.org>,
	<linux-kernel@vger.kernel.org>, <wangfangpeng1@huawei.com>,
	<zhangxun38@huawei.com>, <yangzhuohao1@huawei.com>
Subject: [PATCH] ARM: Fix "external abort on non-linefetch" kernel panic caused by userspace
Date: Sat, 6 Jul 2024 11:20:05 +0800
Message-ID: <20240706032005.122654-1-wanglinhui@huawei.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269610
Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

0x16800000 is a peripheral physical address that supports only
4-byte-aligned access.

Use /dev/mem to enable the user space to access 0x16800000. Then userspace
unexpectedly tried to read four bytes from 0x16800001 (actually access
its virtual address), which caused the kernel to trigger an
"external abort on non-linefetch" panic:

  Unhandled fault: external abort on non-linefetch (0x1018) at 0x0100129b
  [0100129b] *pgd=85038831, *pte=16801703, *ppte=16801e33
  Internal error: : 1018 [#1] SMP ARM
  ...
  CPU: 2 PID: xxxx Comm: xxxx Tainted: G           O      5.10.0 #1
  Hardware name: Hisilicon A9
  PC is at do_alignment_ldrstr+0xb8/0x100
  LR is at 0xc1f203fc
  psr: 200f0313
  sp : c7081ed4  ip : 00000008  fp : 00000011
  r10: b42250c8  r9 : c7081f0c  r8 : c7081fb0
  r7 : 0100129b  r6 : 00000004  r5 : 00000000  r4 : e5908000
  r3 : 00000000  r2 : c7081f0c  r1 : 200f0210  r0 : 0100129b
  Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
  Control: 1ac5387d  Table: 82c3c04a  DAC: 55555555
  Process LcnNCoreTask (pid: 4049, stack limit = 0x14066b0e)
  Call trace:
    do_alignment_ldrstr
    --do_alignment
    ----do_DataAbort
    ------__dabt_usr

It triggers a data abort exception twice. The first time occurs when
an unaligned address is accessed in user mode. The second time occurs
when the peripheral address is actually accessed in kernel mode,
and it crashes the kernel. However, the code location for the second
data abort is as follows:

  ```
  #define __get8_unaligned_check(ins, val, addr, err) \
  	__asm__(\
   ARM("1: "ins" %1, [%2], #1\n") \ <-- Second data abort is triggered here
   THUMB("1: "ins" %1, [%2]\n") \
   THUMB(" add %2, %2, #1\n") \
  	"2:\n" \
  	" .pushsection .text.fixup,\"ax\"\n" \
  ```

It is an exception table entry that can be fixed up.

There is another test that indicates that
"external abort on non-linefetch" needs to be fixed up.

Similarly, use /dev/mem to map 0x16800000 to the user space.
Pass 0x16800001 (actually passes its virtual address) to the
kernel via the write() system call and write 1 byte.
It also causes the kernel to trigger an
"external abort on non-linefetch" panic:

  Unhandled fault: external abort on non-linefetch (0x1018) at 0xb6f95000
  [b6f95000] *pgd=83fb6831, *pte=16800783, *ppte=16800e33
  Internal error: : 1018 [#1] SMP ARM
  ...
  CPU: 1 PID: xxxx Comm: xxxx Tainted: G           O      5.10.0 #1
  Hardware name: Hisilicon A9
  PC is at __get_user_1+0x14/0x20
  LR is at iov_iter_fault_in_readable+0x7c/0x198
  psr: 800b0213
  sp : c195be18  ip : 00000001  fp : c35a2478
  r10: c06b5260  r9 : 00000000  r8 : c356fee0
  r7 : ffffe000  r6 : b6f95000  r5 : 00000001  r4 : c195bf10
  r3 : b6f95000  r2 : f7f95000  r1 : beffffff  r0 : b6f95000
  Call trace looks like:
    __get_user_1
    --iov_iter_fault_in_readable
    ----generic_perform_write
    ------__generic_file_write_iter
    --------generic_file_write_iter

The location of the instruction that triggers the data abort
is as follows:
  ```
  ENTRY(__get_user_1)
  	check_uaccess r0, 1, r1, r2, __get_user_bad
  1: TUSER(ldrb) r2, [r0] <-- Data abort is triggered here
  	mov r0, #0
  	ret lr
  ENDPROC(__get_user_1)
  _ASM_NOKPROBE(__get_user_1)
  ```
It is also an exception table entry that can be fixed up.

Address passed in from user space should not crash the kernel.
Therefore, fixup_exception() is added to fix up such exception.

Fixes: 136848d4ca9c ("ARM: LPAE: Move the FSR definitions to separate files")

Signed-off-by: wanglinhui <wanglinhui@huawei.com>
---
 arch/arm/mm/fault.c      | 9 +++++++++
 arch/arm/mm/fsr-2level.c | 4 ++--
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c
index 67c425341a95..55776dcde015 100644
--- a/arch/arm/mm/fault.c
+++ b/arch/arm/mm/fault.c
@@ -558,6 +558,15 @@ do_bad(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
 	return 1;
 }
 
+static int do_fixup_exception(unsigned long addr, unsigned int fsr,
+					struct pt_regs *regs)
+{
+	if (fixup_exception(regs))
+		return 0;
+
+	return 1;
+}
+
 struct fsr_info {
 	int	(*fn)(unsigned long addr, unsigned int fsr, struct pt_regs *regs);
 	int	sig;
diff --git a/arch/arm/mm/fsr-2level.c b/arch/arm/mm/fsr-2level.c
index f2be95197265..a80444db9b3e 100644
--- a/arch/arm/mm/fsr-2level.c
+++ b/arch/arm/mm/fsr-2level.c
@@ -12,9 +12,9 @@ static struct fsr_info fsr_info[] = {
 	{ do_translation_fault,	SIGSEGV, SEGV_MAPERR,	"section translation fault"	   },
 	{ do_bad,		SIGBUS,	 0,		"external abort on linefetch"	   },
 	{ do_page_fault,	SIGSEGV, SEGV_MAPERR,	"page translation fault"	   },
-	{ do_bad,		SIGBUS,	 0,		"external abort on non-linefetch"  },
+	{ do_fixup_exception,	SIGBUS,	 0,		"external abort on non-linefetch"  },
 	{ do_bad,		SIGSEGV, SEGV_ACCERR,	"section domain fault"		   },
-	{ do_bad,		SIGBUS,	 0,		"external abort on non-linefetch"  },
+	{ do_fixup_exception,	SIGBUS,	 0,		"external abort on non-linefetch"  },
 	{ do_bad,		SIGSEGV, SEGV_ACCERR,	"page domain fault"		   },
 	{ do_bad,		SIGBUS,	 0,		"external abort on translation"	   },
 	{ do_sect_fault,	SIGSEGV, SEGV_ACCERR,	"section permission fault"	   },
-- 
2.12.3

.

Date: Sat, 6 Jul 2024 00:15:01 -0300
From: =?utf-8?Q?=C3=81gatha?= Isabelle Chris Moreira Guedes <code@agatha.dev>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>, 
	Luis Chamberlain <mcgrof@kernel.org>, linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org, 
	linux-modules@vger.kernel.org
Cc: Uwe =?utf-8?Q?Kleine-K=C3=B6nig?= <u.kleine-koenig@baylibre.com>, 
	Dan Carpenter <dan.carpenter@linaro.org>, patch-reply@agatha.dev
Subject: [PATCH v3] init: staging: Fix missing warning/taint on builtin code
Message-ID: <zsk54zosv6tht4j4nma4ix7lq2knxi3ylqadd2foznc72nkaa3@xbc7gpozx6ai>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha512;
	protocol="application/pgp-signature"; boundary="vnmlwtyqmbxxnyuw"
Content-Disposition: inline
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269611
Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.linux-staging,org.kernel.vger.linux-modules
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail


--vnmlwtyqmbxxnyuw
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

Fix the absence of warning message and kernel tainting when initializing
drivers from the `drivers/staging` subtree from initcalls (when
configured as built-in).

When such a driver is built as module and the module is loaded, the
`load_module()` function taints the kernel to signal code of unknown
quality is loaded, and produces a warning like this:

[    8.076352] rts5208: module is from the staging directory, the
quality is unknown, you have been warned.

The same behaviour is absent, however, when a staging driver is compiled
as built-in on the kernel image, since loading it happens through
initcalls and not through load_module().

This might prevent relevant information of being available on a bug
report (i.e. on a panic log) among other possible problems.

NOTES:
- The patch is written in such a way that all non-staging drivers are
  kept the way they were, except for staging drivers built with
  `-DSTAGING_CODE`.
- Since it changes some macros related to clang LTO as well, I tested it
  and it works properly in kernels compiled with both clang and gcc.
- Some `checkpatch.pl` errors, warnings and checks (with `--strict`) are
  present. Some were already there, some I introduced but I think
  they're unavoidable. Some IMHO don=B4t make sense at all, I think they
  would apply for most regular macros but initcall macros are just way
  different.

Fixes: 061b1bd394ca ("Staging: add TAINT_CRAP for all drivers/staging code")
Signed-off-by: =C1gatha Isabelle Chris Moreira Guedes <code@agatha.dev>
---
CHANGELOG
v3:
- Added some missing suggestions from Uwe's suggestions after I detected
  the oversight (the Fixes: tag).
- I also noticed a possible build break, so I removed the
  `#ifdef CONFIG_STAGING` enclosuring the definition of
  `staging_taint()`.
- Improved again the string details after further explanation of Dan's
  original suggestion in v2.

v2:
- Changed the way we hook into the initcalls as suggested by Uwe, and
  moved the logic from `include/linux/module.h` to
  `include/linux/init.h`.
- Adjusted accordingly to work with both GCC and clang with
  `CONFIG_LTO_CLANG=3Dy`, since some init scripts required that.
- Fixed the missing space pointed out by Dan & other minor string
  details.
- Changed the subject, since it became somewhat more of an init thing
  than a staging thing.

 drivers/staging/Makefile |  2 ++
 include/linux/init.h     | 76 ++++++++++++++++++++++++++++++++++------
 init/main.c              | 18 ++++++++++
 kernel/module/main.c     |  4 +--
 4 files changed, 86 insertions(+), 14 deletions(-)

diff --git a/drivers/staging/Makefile b/drivers/staging/Makefile
index 5390879b5d1b..7cea13436426 100644
--- a/drivers/staging/Makefile
+++ b/drivers/staging/Makefile
@@ -1,6 +1,8 @@
 # SPDX-License-Identifier: GPL-2.0
 # Makefile for staging directory
=20
+subdir-ccflags-y +=3D -DSTAGING_CODE
+
 obj-y				+=3D media/
 obj-$(CONFIG_FB_OLPC_DCON)	+=3D olpc_dcon/
 obj-$(CONFIG_RTL8192E)		+=3D rtl8192e/
diff --git a/include/linux/init.h b/include/linux/init.h
index 58cef4c2e59a..c7afee978b42 100644
--- a/include/linux/init.h
+++ b/include/linux/init.h
@@ -188,6 +188,8 @@ extern struct module __this_module;
=20
 #ifndef __ASSEMBLY__
=20
+extern void staging_taint(const char *code_id, bool module);
+
 /*
  * initcalls are now grouped by functionality into separate
  * subsections. Ordering inside the subsections is determined
@@ -220,6 +222,14 @@ extern struct module __this_module;
 	__PASTE(__,						\
 	__PASTE(__iid, id))))
=20
+#define __define_stub_fn(___stub, fn, __taintcall)		\
+	int __init ___stub(void);				\
+	int __init ___stub(void)				\
+	{							\
+		__taintcall();					\
+		return fn();					\
+	}							\
+
 #ifdef CONFIG_LTO_CLANG
 /*
  * With LTO, the compiler doesn't necessarily obey link order for
@@ -230,31 +240,75 @@ extern struct module __this_module;
 #define __initcall_section(__sec, __iid)			\
 	#__sec ".init.." #__iid
=20
+#define ___define_initcall_stub(__stub, fn, __taintcall)	\
+	__define_stub_fn(__stub, fn, __taintcall)		\
+	__ADDRESSABLE(__stub)
+#else
+#define __initcall_section(__sec, __iid)			\
+	#__sec ".init"
+
+#define ___define_initcall_stub(__stub, fn, __taintcall)	\
+	__ADDRESSABLE(fn)
+#endif /* CONFIG_LTO_CLANG */
+
+#ifdef STAGING_CODE
+
 /*
  * With LTO, the compiler can rename static functions to avoid
  * global naming collisions. We use a global stub function for
  * initcalls to create a stable symbol name whose address can be
  * taken in inline assembly when PREL32 relocations are used.
+ *
+ * Moreover, when there's staging code, regardless of LTO, we
+ * need to wrap the function inside a new one to taint the
+ * kernel and warn about it in the log. So we need this special
+ * symbol name for the wrapper regardless of that.
  */
 #define __initcall_stub(fn, __iid, id)				\
 	__initcall_name(initstub, __iid, id)
=20
+#define __staging_taint_fn()					\
+	staging_taint(KBUILD_MODNAME, false)
+
+#ifdef CONFIG_LTO_CLANG
+
 #define __define_initcall_stub(__stub, fn)			\
-	int __init __stub(void);				\
-	int __init __stub(void)					\
-	{ 							\
-		return fn();					\
-	}							\
-	__ADDRESSABLE(__stub)
-#else
-#define __initcall_section(__sec, __iid)			\
-	#__sec ".init"
+	___define_initcall_stub(__stub, fn, __staging_taint_fn)
+
+#else /* no CONFIG_LTO_CLANG */
+
+#define __define_initcall_stub(_stub, fn)			\
+	__define_stub_fn(_stub, fn, __staging_taint_fn)		\
+	__ADDRESSABLE(_stub)
+
+#endif /* CONFIG_LTO_CLANG */
+
+#else /* no STAGING_CODE */
+
+#ifdef CONFIG_LTO_CLANG
+
+/*
+ * Same case as before, it's not staging code but there's LTO
+ */
+#define __initcall_stub(fn, __iid, id)				\
+	__initcall_name(initstub, __iid, id)
=20
+#else /* no CONFIG_LTO_CLANG*/
+
+/* For no LTO outside staging code, the vast majority of drivers
+ * can just be built with their regular symbol names as they
+ * just have been built all the time
+ */
 #define __initcall_stub(fn, __iid, id)	fn
=20
+#endif /* CONFIG_LTO_CLANG */
+
+#define __staging_taint_fn()
+
 #define __define_initcall_stub(__stub, fn)			\
-	__ADDRESSABLE(fn)
-#endif
+	___define_initcall_stub(__stub, fn, __staging_taint_fn)
+
+#endif /* STAGING_CODE */
=20
 #ifdef CONFIG_HAVE_ARCH_PREL32_RELOCATIONS
 #define ____define_initcall(fn, __stub, __name, __sec)		\
diff --git a/init/main.c b/init/main.c
index 206acdde51f5..e35eeec1fbe4 100644
--- a/init/main.c
+++ b/init/main.c
@@ -1602,3 +1602,21 @@ static noinline void __init kernel_init_freeable(voi=
d)
=20
 	integrity_load_keys();
 }
+
+/**
+ * staging_init_taint() - We need to taint the kernel whenever staging code
+ * is initialized (from built-in drivers) or loaded (as modules) and issue
+ * a warning the first time it happens.
+ */
+void staging_taint(const char *code_id, bool module)
+{
+	char *code_type =3D module ? "module" : "builtin driver";
+
+	pr_warn("%s %s: The kernel contains code from staging directory, "
+		"the quality is unknown, you have been warned.\n",
+		code_type, code_id);
+
+	add_taint(TAINT_CRAP, LOCKDEP_STILL_OK);
+}
+EXPORT_SYMBOL(staging_taint);
+
diff --git a/kernel/module/main.c b/kernel/module/main.c
index d18a94b973e1..d7d33336ab43 100644
--- a/kernel/module/main.c
+++ b/kernel/module/main.c
@@ -2039,9 +2039,7 @@ static void module_augment_kernel_taints(struct modul=
e *mod, struct load_info *i
 	check_modinfo_retpoline(mod, info);
=20
 	if (get_modinfo(info, "staging")) {
-		add_taint_module(mod, TAINT_CRAP, LOCKDEP_STILL_OK);
-		pr_warn("%s: module is from the staging directory, the quality "
-			"is unknown, you have been warned.\n", mod->name);
+		staging_taint(mod->name, true);
 	}
=20
 	if (is_livepatch_module(mod)) {
--=20
2.45.2


--vnmlwtyqmbxxnyuw
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iHUEABYKAB0WIQQMdxNgKl/8Z+5yuVT3jE4VBgsOTAUCZoi2rwAKCRD3jE4VBgsO
TB90AP0XRBi9BPtaDpj4qwSgH06Ig8tX6A7U42NwKsM7FyH1pwD/W6U5tl6K6prj
Y/NtFWow1IfUb5yQLkrbJMutIwOKWAk=
=ZLxQ
-----END PGP SIGNATURE-----

--vnmlwtyqmbxxnyuw--
.

From: Thorsten Blum <thorsten.blum@toblux.com>
To: jikos@kernel.org,
	bentiss@kernel.org
Cc: linux-input@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Thorsten Blum <thorsten.blum@toblux.com>
Subject: [PATCH] HID: hid-steam: Use clamp() macro
Date: Sat,  6 Jul 2024 05:53:15 +0200
Message-ID: <20240706035314.153460-2-thorsten.blum@toblux.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269616
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-input
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Use clamp() to actually clamp the value to the range [-32767, 32767]
(as mentioned in the function comment) instead of manually mapping
one specific value.

Compile-tested only.

Signed-off-by: Thorsten Blum <thorsten.blum@toblux.com>
---
 drivers/hid/hid-steam.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/hid/hid-steam.c b/drivers/hid/hid-steam.c
index a765a48c0ab5..69dde025999b 100644
--- a/drivers/hid/hid-steam.c
+++ b/drivers/hid/hid-steam.c
@@ -1340,7 +1340,7 @@ static inline s16 steam_le16(u8 *data)
 {
 	s16 x = (s16) le16_to_cpup((__le16 *)data);
 
-	return x == -32768 ? -32767 : x;
+	return clamp(x, -32767, 32767);
 }
 
 /*
-- 
2.45.2

.

From: Thorsten Blum <thorsten.blum@toblux.com>
To: almaz.alexandrovich@paragon-software.com
Cc: ntfs3@lists.linux.dev,
	linux-kernel@vger.kernel.org,
	Thorsten Blum <thorsten.blum@toblux.com>
Subject: [PATCH] fs/ntfs3: Use swap() to improve code
Date: Sat,  6 Jul 2024 06:18:09 +0200
Message-ID: <20240706041808.181638-2-thorsten.blum@toblux.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269622
Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.ntfs3
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Use the swap() macro to simplify the code and improve its readability.

Fixes the following Coccinelle/coccicheck warning reported by
swap.cocci:

  WARNING opportunity for swap()

Compile-tested only.

Signed-off-by: Thorsten Blum <thorsten.blum@toblux.com>
---
 fs/ntfs3/lib/lzx_decompress.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/fs/ntfs3/lib/lzx_decompress.c b/fs/ntfs3/lib/lzx_decompress.c
index 6b16f07073c1..d9adb290acba 100644
--- a/fs/ntfs3/lib/lzx_decompress.c
+++ b/fs/ntfs3/lib/lzx_decompress.c
@@ -511,9 +511,7 @@ static int lzx_decompress_block(const struct lzx_decompressor *d,
 			 * quirk allows all 3 recent offsets to be handled by
 			 * the same code.  (For R0, the swap is a no-op.)
 			 */
-			match_offset = recent_offsets[offset_slot];
-			recent_offsets[offset_slot] = recent_offsets[0];
-			recent_offsets[0] = match_offset;
+			swap(recent_offsets[offset_slot], recent_offsets[0]);
 		} else {
 			/* Explicit offset  */
 
-- 
2.45.2

.

From: Sergey Senozhatsky <senozhatsky@chromium.org>
To: Andrew Morton <akpm@linux-foundation.org>,
	Minchan Kim <minchan@kernel.org>
Cc: linux-kernel@vger.kernel.org,
	Sergey Senozhatsky <senozhatsky@chromium.org>
Subject: [PATCHv5 00/23] zram: compression algorithms tunables
Date: Sat,  6 Jul 2024 13:56:02 +0900
Message-ID: <20240706045641.631961-1-senozhatsky@chromium.org>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269624
Newsgroups: org.kernel.vger.linux-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

This series introduces support for run-time compression algorithms
tuning, so users, for instance, can adjust compression/acceleration
levels and provide pre-trained compression/decompression dictionaries
which certain algorithms support.

At this point we stop supporting (old/deprecated) comp API.  We may
add new acomp API support in the future, but before that zram needs
to undergo some major rework (we are not ready for async compression).

Some benchmarks for reference (look at column #2)

*** zstd
/sys/block/zram0/mm_stat
1750650880 504575194 514392064        0 514392064        1        0    34204    34204

*** zstd level=-1
/sys/block/zram0/mm_stat
1750638592 591816152 603758592        0 603758592        1        0    34288    34288

*** zstd level=8
/sys/block/zram0/mm_stat
1750659072 486924248 496377856        0 496377856        1        0    34204    34204

*** zstd dict=/home/ss/zstd-dict-amd64
/sys/block/zram0/mm_stat
1750634496 465853994 475230208        0 475230208        1        0    34185    34185

*** zstd level=8 dict=/home/ss/zstd-dict-amd64
/sys/block/zram0/mm_stat
1750650880 430760956 439967744        0 439967744        1        0    34185    34185

*** lz4
/sys/block/zram0/mm_stat
1750663168 664194239 676970496        0 676970496        1        0    34288    34288

*** lz4 dict=/home/ss/lz4-dict-amd64
/sys/block/zram0/mm_stat
1750650880 619901052 632061952        0 632061952        1        0    34278    34278

*** lz4 level=5 dict=/home/ss/lz4-dict-amd64
/sys/block/zram0/mm_stat
1750650880 727180082 740884480        0 740884480        1        0    34438    34438

v4..v5:
- minor improvements to zstd API (stopped exposing ZSTD_dlm_byRef
  and ZSTD_dct_auto)
- fixed null-deref in ZSTD_createCDict_advanced2()
- major rework on the zcomp side
  - new zcomp_params structure, new zcomp_req structure, and so on
  - moved immutable params data out of per-CPU ctx to zcomp
  - etc.

Sergey Senozhatsky (23):
  lib: zstd: export API needed for dictionary support
  lib: lz4hc: export LZ4_resetStreamHC symbol
  lib: zstd: fix null-deref in ZSTD_createCDict_advanced2()
  zram: introduce custom comp backends API
  zram: add lzo and lzorle compression backends support
  zram: add lz4 compression backend support
  zram: add lz4hc compression backend support
  zram: add zstd compression backend support
  zram: pass estimated src size hint to zstd
  zram: add zlib compression backend support
  zram: add 842 compression backend support
  zram: check that backends array has at least one backend
  zram: introduce zcomp_params structure
  zram: recalculate zstd compression params once
  zram: extend comp_algorithm attr write handling
  zram: add support for dict comp config
  zram: introduce zcomp_req structure
  zram: introduce zcomp_ctx structure
  zram: move immutable comp params away from per-CPU context
  zram: add dictionary support to lz4
  zram: add dictionary support to lz4hc
  zram: add dictionary support to zstd backend
  Documentation/zram: add documentation for algorithm parameters

 Documentation/admin-guide/blockdev/zram.rst |  45 +++-
 drivers/block/zram/Kconfig                  |  76 +++++--
 drivers/block/zram/Makefile                 |   8 +
 drivers/block/zram/backend_842.c            |  61 ++++++
 drivers/block/zram/backend_842.h            |  10 +
 drivers/block/zram/backend_deflate.c        | 146 +++++++++++++
 drivers/block/zram/backend_deflate.h        |  10 +
 drivers/block/zram/backend_lz4.c            | 127 +++++++++++
 drivers/block/zram/backend_lz4.h            |  10 +
 drivers/block/zram/backend_lz4hc.c          | 128 +++++++++++
 drivers/block/zram/backend_lz4hc.h          |  10 +
 drivers/block/zram/backend_lzo.c            |  59 +++++
 drivers/block/zram/backend_lzo.h            |  10 +
 drivers/block/zram/backend_lzorle.c         |  59 +++++
 drivers/block/zram/backend_lzorle.h         |  10 +
 drivers/block/zram/backend_zstd.c           | 226 ++++++++++++++++++++
 drivers/block/zram/backend_zstd.h           |  10 +
 drivers/block/zram/zcomp.c                  | 195 ++++++++---------
 drivers/block/zram/zcomp.h                  |  71 ++++--
 drivers/block/zram/zram_drv.c               | 117 +++++++++-
 drivers/block/zram/zram_drv.h               |   1 +
 include/linux/zstd.h                        | 167 +++++++++++++++
 lib/lz4/lz4hc_compress.c                    |   1 +
 lib/zstd/compress/zstd_compress.c           |   2 +
 lib/zstd/zstd_compress_module.c             |  49 +++++
 lib/zstd/zstd_decompress_module.c           |  36 ++++
 26 files changed, 1505 insertions(+), 139 deletions(-)
 create mode 100644 drivers/block/zram/backend_842.c
 create mode 100644 drivers/block/zram/backend_842.h
 create mode 100644 drivers/block/zram/backend_deflate.c
 create mode 100644 drivers/block/zram/backend_deflate.h
 create mode 100644 drivers/block/zram/backend_lz4.c
 create mode 100644 drivers/block/zram/backend_lz4.h
 create mode 100644 drivers/block/zram/backend_lz4hc.c
 create mode 100644 drivers/block/zram/backend_lz4hc.h
 create mode 100644 drivers/block/zram/backend_lzo.c
 create mode 100644 drivers/block/zram/backend_lzo.h
 create mode 100644 drivers/block/zram/backend_lzorle.c
 create mode 100644 drivers/block/zram/backend_lzorle.h
 create mode 100644 drivers/block/zram/backend_zstd.c
 create mode 100644 drivers/block/zram/backend_zstd.h

-- 
2.45.2.803.g4e1b14247a-goog

.

From: Jiaxun Yang <jiaxun.yang@flygoat.com>
Subject: [PATCH 0/4] MIPS: Refresh some configs
Date: Sat, 06 Jul 2024 13:07:57 +0800
Message-Id: <20240706-config-refresh-v1-0-5dba0064cf08@flygoat.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
To: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Cc: linux-mips@vger.kernel.org, linux-kernel@vger.kernel.org, 
 Jiaxun Yang <jiaxun.yang@flygoat.com>
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269651
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-mips
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

To: Thomas Bogendoerfer <tsbogend@alpha.franken.de>

Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
---
Jiaxun Yang (4):
      MIPS: config: Enable MSA and virtualization for MIPS64R6
      MIPS: config: generic: Add board-litex
      MIPS: config: lemote2f: Regenerate defconfig
      MIPS: config: Add ip30_defconfig

 arch/mips/configs/generic/64r6.config        |   2 +
 arch/mips/configs/generic/board-litex.config |   8 +
 arch/mips/configs/ip30_defconfig             | 285 +++++++++++++++++++++++++++
 arch/mips/configs/lemote2f_defconfig         |  54 +++--
 4 files changed, 318 insertions(+), 31 deletions(-)
---
base-commit: 0b58e108042b0ed28a71cd7edf5175999955b233
change-id: 20240706-config-refresh-f1f87ddf3652

Best regards,
-- 
Jiaxun Yang <jiaxun.yang@flygoat.com>

.

From: Thorsten Blum <thorsten.blum@toblux.com>
To: martin.lau@linux.dev,
	ast@kernel.org,
	daniel@iogearbox.net,
	andrii@kernel.org,
	eddyz87@gmail.com,
	song@kernel.org,
	yonghong.song@linux.dev,
	john.fastabend@gmail.com,
	kpsingh@kernel.org,
	sdf@fomichev.me,
	haoluo@google.com,
	jolsa@kernel.org
Cc: bpf@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Thorsten Blum <thorsten.blum@toblux.com>
Subject: [PATCH bpf-next] bpf: Use max() instead of max_t()
Date: Sat,  6 Jul 2024 07:12:46 +0200
Message-ID: <20240706051244.216737-3-thorsten.blum@toblux.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269659
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.bpf
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Use max() instead of max_t(). The types are already compatible and don't
need to be cast to u32 using max_t().

Compile-tested only.

Signed-off-by: Thorsten Blum <thorsten.blum@toblux.com>
---
 kernel/bpf/bpf_local_storage.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/bpf/bpf_local_storage.c b/kernel/bpf/bpf_local_storage.c
index 976cb258a0ed..f0a4f5c06b10 100644
--- a/kernel/bpf/bpf_local_storage.c
+++ b/kernel/bpf/bpf_local_storage.c
@@ -779,7 +779,7 @@ bpf_local_storage_map_alloc(union bpf_attr *attr,
 
 	nbuckets = roundup_pow_of_two(num_possible_cpus());
 	/* Use at least 2 buckets, select_bucket() is undefined behavior with 1 bucket */
-	nbuckets = max_t(u32, 2, nbuckets);
+	nbuckets = max(2, nbuckets);
 	smap->bucket_log = ilog2(nbuckets);
 
 	smap->buckets = bpf_map_kvcalloc(&smap->map, sizeof(*smap->buckets),
-- 
2.45.2

.

From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= <linux@weissschuh.net>
Date: Sat, 06 Jul 2024 09:33:46 +0200
Subject: [PATCH v2] kbuild: add script and target to generate pacman
 package
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
Message-Id: <20240706-kbuild-pacman-pkg-v2-1-613422a03a7a@weissschuh.net>
To: Masahiro Yamada <masahiroy@kernel.org>, 
 Nathan Chancellor <nathan@kernel.org>, Nicolas Schier <nicolas@fjasle.eu>
Cc: "Jan Alexander Steffens (heftig)" <heftig@archlinux.org>, 
 linux-kernel@vger.kernel.org, linux-kbuild@vger.kernel.org, 
 =?utf-8?q?Thomas_Wei=C3=9Fschuh?= <linux@weissschuh.net>
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269673
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-kbuild
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

pacman is the package manager used by Arch Linux and its derivates.
Creating native packages from the kernel tree has multiple advantages:

* The package triggers the correct hooks for initramfs generation and
  bootloader configuration
* Uninstallation is complete and also invokes the relevant hooks
* New UAPI headers can be installed without any manual bookkeeping

The PKGBUILD file is a simplified version of the one used for the
downstream Arch Linux "linux" package.
Extra steps that should not be necessary for a development kernel have
been removed and an UAPI header package has been added.

Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
---
Changes in v2:
- Replace ${MAKE} with $MAKE for consistency with other variables
- Use $MAKE for "-s image_name"
- Avoid permission warnings from build directory
- Clarify reason for /build symlink removal
- Install System.map and config
- Install dtbs where available
- Allow cross-build through arch=any
- Sort Contributor/Maintainer chronologically
- Disable some unneeded makepkg options
- Use DEPMOD=true for consistency with rpm-package
- Link to v1: https://lore.kernel.org/r/20240704-kbuild-pacman-pkg-v1-1-ac2f63f5fa7b@weissschuh.net
---
 .gitignore               |  6 ++++
 scripts/Makefile.package | 15 +++++++++
 scripts/package/PKGBUILD | 83 ++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 104 insertions(+)

diff --git a/.gitignore b/.gitignore
index c59dc60ba62e..7902adf4f7f1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -92,6 +92,12 @@ modules.order
 #
 /tar-install/
 
+#
+# pacman files (make pacman-pkg)
+#
+/PKGBUILD
+/pacman/
+
 #
 # We don't want to ignore the following even if they are dot-files
 #
diff --git a/scripts/Makefile.package b/scripts/Makefile.package
index bf016af8bf8a..8c0c80f8bec0 100644
--- a/scripts/Makefile.package
+++ b/scripts/Makefile.package
@@ -141,6 +141,20 @@ snap-pkg:
 	cd $(objtree)/snap && \
 	snapcraft --target-arch=$(UTS_MACHINE)
 
+# pacman-pkg
+# ---------------------------------------------------------------------------
+
+PHONY += pacman-pkg
+pacman-pkg:
+	@ln -srf $(srctree)/scripts/package/PKGBUILD $(objtree)/PKGBUILD
+	cd $(objtree) && \
+		srctree="$(realpath $(srctree))" \
+		objtree="$(realpath $(objtree))" \
+		BUILDDIR="$(realpath $(objtree))/pacman" \
+		KBUILD_MAKEFLAGS="$(MAKEFLAGS)" \
+		KBUILD_REVISION="$(shell $(srctree)/init/build-version)" \
+		makepkg
+
 # dir-pkg tar*-pkg - tarball targets
 # ---------------------------------------------------------------------------
 
@@ -221,6 +235,7 @@ help:
 	@echo '  bindeb-pkg          - Build only the binary kernel deb package'
 	@echo '  snap-pkg            - Build only the binary kernel snap package'
 	@echo '                        (will connect to external hosts)'
+	@echo '  pacman-pkg          - Build only the binary kernel pacman package'
 	@echo '  dir-pkg             - Build the kernel as a plain directory structure'
 	@echo '  tar-pkg             - Build the kernel as an uncompressed tarball'
 	@echo '  targz-pkg           - Build the kernel as a gzip compressed tarball'
diff --git a/scripts/package/PKGBUILD b/scripts/package/PKGBUILD
new file mode 100644
index 000000000000..fe899c77a976
--- /dev/null
+++ b/scripts/package/PKGBUILD
@@ -0,0 +1,83 @@
+# SPDX-License-Identifier: GPL-2.0-only
+# Maintainer: Thomas Weißschuh <linux@weissschuh.net>
+# Contributor: Jan Alexander Steffens (heftig) <heftig@archlinux.org>
+
+pkgbase=linux-upstream
+pkgname=("$pkgbase" "$pkgbase-headers" "$pkgbase-api-headers")
+pkgver="${KERNELRELEASE//-/_}"
+pkgrel="$KBUILD_REVISION"
+pkgdesc='Linux'
+url='https://www.kernel.org/'
+arch=(any)
+options=(!debug !strip !buildflags !makeflags)
+license=(GPL-2.0-only)
+
+build() {
+  export MAKEFLAGS="${KBUILD_MAKEFLAGS}"
+  cd "$objtree"
+
+  # makepkg does a "chmod a-srw", triggering warnings during kbuild
+  chmod 0755 "$pkgdirbase" || true
+
+  $MAKE -f "${srctree}/Makefile"
+}
+
+package_linux-upstream() {
+  pkgdesc="The $pkgdesc kernel and modules"
+
+  export MAKEFLAGS="${KBUILD_MAKEFLAGS}"
+  cd "$objtree"
+  local modulesdir="$pkgdir/usr/$MODLIB"
+
+  echo "Installing boot image..."
+  # systemd expects to find the kernel here to allow hibernation
+  # https://github.com/systemd/systemd/commit/edda44605f06a41fb86b7ab8128dcf99161d2344
+  install -Dm644 "$($MAKE -s image_name)" "$modulesdir/vmlinuz"
+
+  # Used by mkinitcpio to name the kernel
+  echo "$pkgbase" | install -Dm644 /dev/stdin "$modulesdir/pkgbase"
+
+  echo "Installing modules..."
+  $MAKE INSTALL_MOD_PATH="$pkgdir/usr" INSTALL_MOD_STRIP=1 \
+    DEPMOD=true modules_install
+
+  if $MAKE run-command KBUILD_RUN_COMMAND='test -d ${srctree}/arch/${SRCARCH}/boot/dts' 2>/dev/null; then
+    echo "Installing dtbs..."
+    $MAKE INSTALL_DTBS_PATH="$modulesdir/dtb" dtbs_install
+  fi
+
+  # remove build link, will be part of -headers package
+  rm -f "$modulesdir/build"
+}
+
+package_linux-upstream-headers() {
+  pkgdesc="Headers and scripts for building modules for the $pkgdesc kernel"
+
+  export MAKEFLAGS="${KBUILD_MAKEFLAGS}"
+  cd "$objtree"
+  local builddir="$pkgdir/usr/$MODLIB/build"
+
+  echo "Installing build files..."
+  "$srctree/scripts/package/install-extmod-build" "$builddir"
+
+  echo "Installing System.map and config..."
+  cp System.map "$builddir/System.map"
+  cp .config "$builddir/.config"
+
+  echo "Adding symlink..."
+  mkdir -p "$pkgdir/usr/src"
+  ln -sr "$builddir" "$pkgdir/usr/src/$pkgbase"
+}
+
+package_linux-upstream-api-headers() {
+  pkgdesc="Kernel headers sanitized for use in userspace"
+  provides=(linux-api-headers)
+  conflicts=(linux-api-headers)
+
+  export MAKEFLAGS="${KBUILD_MAKEFLAGS}"
+  cd "$objtree"
+
+  $MAKE headers_install INSTALL_HDR_PATH="$pkgdir/usr"
+}
+
+# vim:set ts=8 sts=2 sw=2 et:

---
base-commit: 1dd28064d4164a4dc9096fd1a7990d2de15f2bb6
change-id: 20240625-kbuild-pacman-pkg-b4f87e19d036

Best regards,
-- 
Thomas Weißschuh <linux@weissschuh.net>

.

Date: Sat, 06 Jul 2024 15:38:21 +0800
From: kernel test robot <lkp@intel.com>
To: "x86-ml" <x86@kernel.org>
Cc: linux-kernel@vger.kernel.org
Subject: [tip:master] BUILD SUCCESS
 af54b04c691af76c751efa33a949bb74e7d3d0ee
Message-ID: <202407061520.0V3XXGjO-lkp@intel.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269675
Newsgroups: org.kernel.vger.linux-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git master
branch HEAD: af54b04c691af76c751efa33a949bb74e7d3d0ee  Merge branch into tip/master: 'x86/vmware'

elapsed time: 1447m

configs tested: 132
configs skipped: 2

The following configs have been built successfully.
More configs may be tested in the coming days.

tested configs:
alpha                             allnoconfig   gcc-13.2.0
alpha                            allyesconfig   gcc-13.2.0
arc                              allmodconfig   gcc-13.2.0
arc                               allnoconfig   gcc-13.2.0
arc                              allyesconfig   gcc-13.2.0
arc                   randconfig-001-20240706   gcc-13.2.0
arc                   randconfig-002-20240706   gcc-13.2.0
arm                              allmodconfig   gcc-13.2.0
arm                               allnoconfig   clang-19
arm                              allyesconfig   gcc-13.2.0
arm                            dove_defconfig   gcc-13.2.0
arm                       multi_v4t_defconfig   clang-19
arm                        mvebu_v7_defconfig   clang-15
arm                   randconfig-001-20240706   gcc-13.2.0
arm                   randconfig-002-20240706   gcc-13.2.0
arm                   randconfig-003-20240706   gcc-13.2.0
arm                   randconfig-004-20240706   gcc-13.2.0
arm                           tegra_defconfig   gcc-13.2.0
arm64                            allmodconfig   clang-19
arm64                             allnoconfig   gcc-13.2.0
arm64                 randconfig-001-20240706   gcc-13.2.0
arm64                 randconfig-002-20240706   gcc-13.2.0
arm64                 randconfig-003-20240706   clang-16
arm64                 randconfig-004-20240706   clang-19
csky                              allnoconfig   gcc-13.2.0
csky                  randconfig-001-20240706   gcc-13.2.0
csky                  randconfig-002-20240706   gcc-13.2.0
hexagon                          allmodconfig   clang-19
hexagon                           allnoconfig   clang-19
hexagon                          allyesconfig   clang-19
hexagon               randconfig-001-20240706   clang-19
hexagon               randconfig-002-20240706   clang-15
i386                             allmodconfig   gcc-13
i386                              allnoconfig   gcc-13
i386                             allyesconfig   gcc-13
i386         buildonly-randconfig-001-20240705   gcc-13
i386         buildonly-randconfig-002-20240705   gcc-9
i386         buildonly-randconfig-003-20240705   gcc-11
i386         buildonly-randconfig-004-20240705   clang-18
i386         buildonly-randconfig-005-20240705   clang-18
i386         buildonly-randconfig-006-20240705   clang-18
i386                                defconfig   clang-18
i386                  randconfig-001-20240705   gcc-13
i386                  randconfig-002-20240705   clang-18
i386                  randconfig-003-20240705   gcc-11
i386                  randconfig-004-20240705   gcc-13
i386                  randconfig-005-20240705   clang-18
i386                  randconfig-006-20240705   clang-18
i386                  randconfig-011-20240705   gcc-13
i386                  randconfig-012-20240705   gcc-13
i386                  randconfig-013-20240705   clang-18
i386                  randconfig-014-20240705   gcc-8
i386                  randconfig-015-20240705   gcc-10
i386                  randconfig-016-20240705   clang-18
loongarch                        allmodconfig   gcc-13.2.0
loongarch                         allnoconfig   gcc-13.2.0
loongarch             randconfig-001-20240706   gcc-13.2.0
loongarch             randconfig-002-20240706   gcc-13.2.0
m68k                             allmodconfig   gcc-13.2.0
m68k                              allnoconfig   gcc-13.2.0
m68k                             allyesconfig   gcc-13.2.0
microblaze                       allmodconfig   gcc-13.2.0
microblaze                        allnoconfig   gcc-13.2.0
microblaze                       allyesconfig   gcc-13.2.0
mips                              allnoconfig   gcc-13.2.0
mips                      fuloong2e_defconfig   gcc-13.2.0
mips                           jazz_defconfig   clang-19
nios2                             allnoconfig   gcc-13.2.0
nios2                 randconfig-001-20240706   gcc-13.2.0
nios2                 randconfig-002-20240706   gcc-13.2.0
openrisc                          allnoconfig   gcc-13.2.0
openrisc                         allyesconfig   gcc-13.2.0
openrisc                            defconfig   gcc-13.2.0
parisc                           allmodconfig   gcc-13.2.0
parisc                            allnoconfig   gcc-13.2.0
parisc                           allyesconfig   gcc-13.2.0
parisc                              defconfig   gcc-13.2.0
parisc                randconfig-001-20240706   gcc-13.2.0
parisc                randconfig-002-20240706   gcc-13.2.0
powerpc                          allmodconfig   gcc-13.2.0
powerpc                           allnoconfig   gcc-13.2.0
powerpc                          allyesconfig   clang-19
powerpc                    ge_imp3a_defconfig   gcc-13.2.0
powerpc                     mpc512x_defconfig   clang-19
powerpc                    mvme5100_defconfig   gcc-13.2.0
powerpc                      pasemi_defconfig   clang-19
powerpc               randconfig-001-20240706   gcc-13.2.0
powerpc               randconfig-002-20240706   gcc-13.2.0
powerpc               randconfig-003-20240706   clang-19
powerpc64             randconfig-001-20240706   gcc-13.2.0
powerpc64             randconfig-002-20240706   gcc-13.2.0
powerpc64             randconfig-003-20240706   clang-19
riscv                            allmodconfig   clang-19
riscv                             allnoconfig   gcc-13.2.0
riscv                            allyesconfig   clang-19
riscv                               defconfig   clang-19
riscv                 randconfig-001-20240706   gcc-13.2.0
riscv                 randconfig-002-20240706   gcc-13.2.0
s390                             allmodconfig   clang-19
s390                              allnoconfig   clang-19
s390                             allyesconfig   gcc-13.2.0
s390                                defconfig   clang-19
s390                  randconfig-001-20240706   gcc-13.2.0
s390                  randconfig-002-20240706   clang-19
sh                               alldefconfig   gcc-13.2.0
sh                               allmodconfig   gcc-13.2.0
sh                                allnoconfig   gcc-13.2.0
sh                               allyesconfig   gcc-13.2.0
sh                                  defconfig   gcc-13.2.0
sh                     magicpanelr2_defconfig   gcc-13.2.0
sh                    randconfig-001-20240706   gcc-13.2.0
sh                    randconfig-002-20240706   gcc-13.2.0
sh                           sh2007_defconfig   gcc-13.2.0
sh                     sh7710voipgw_defconfig   gcc-13.2.0
sh                        sh7785lcr_defconfig   gcc-13.2.0
sparc                            allmodconfig   gcc-13.2.0
sparc64                             defconfig   gcc-13.2.0
sparc64               randconfig-001-20240706   gcc-13.2.0
sparc64               randconfig-002-20240706   gcc-13.2.0
um                                allnoconfig   clang-17
um                               allyesconfig   gcc-13
um                                  defconfig   clang-19
um                             i386_defconfig   gcc-13
um                    randconfig-001-20240706   clang-19
um                    randconfig-002-20240706   gcc-13
um                           x86_64_defconfig   clang-15
x86_64                            allnoconfig   clang-18
x86_64                           allyesconfig   clang-18
x86_64                              defconfig   gcc-13
x86_64                          rhel-8.3-rust   clang-18
xtensa                            allnoconfig   gcc-13.2.0
xtensa                randconfig-002-20240706   gcc-13.2.0

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
.

From: Xi Ruoyao <xry111@xry111.site>
To: Huacai Chen <chenhuacai@kernel.org>,
	WANG Xuerui <kernel@xen0n.name>
Cc: Jinyang He <hejinyang@loongson.cn>,
	Youling Tang <tangyouling@kylinos.cn>,
	Tiezhu Yang <yangtiezhu@loongson.cn>,
	Fangrui Song <maskray@google.com>,
	Nathan Chancellor <nathan@kernel.org>,
	Nick Desaulniers <ndesaulniers@google.com>,
	loongarch@lists.linux.dev,
	linux-kernel@vger.kernel.org,
	llvm@lists.linux.dev,
	Xi Ruoyao <xry111@xry111.site>
Subject: [PATCH 1/2] LoongArch: Remove a redundant checking in relocator
Date: Sat,  6 Jul 2024 15:38:57 +0800
Message-ID: <20240706073858.161035-1-xry111@xry111.site>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269676
Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.llvm,dev.linux.lists.loongarch
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

With our linker script "relocated_addr >= VMLINUX_LOAD_ADDRESS" should
be always true.

Signed-off-by: Xi Ruoyao <xry111@xry111.site>
---
 arch/loongarch/kernel/relocate.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/arch/loongarch/kernel/relocate.c b/arch/loongarch/kernel/relocate.c
index 1acfa704c8d0..69d73dc7326a 100644
--- a/arch/loongarch/kernel/relocate.c
+++ b/arch/loongarch/kernel/relocate.c
@@ -34,9 +34,7 @@ static inline void __init relocate_relative(void)
 		if (rela->r_info != R_LARCH_RELATIVE)
 			continue;
 
-		if (relocated_addr >= VMLINUX_LOAD_ADDRESS)
-			relocated_addr = (Elf64_Addr)RELOCATED(relocated_addr);
-
+		relocated_addr = (Elf64_Addr)RELOCATED(relocated_addr);
 		*(Elf64_Addr *)RELOCATED(addr) = relocated_addr;
 	}
 }
-- 
2.45.2

.

From: Muhammad Qasim Abdul Majeed <qasim.majeed20@gmail.com>
To: rafael@kernel.org,
	lenb@kernel.org,
	linux-acpi@vger.kernel.org,
	linux-kernel@vger.kernel.org
Cc: Muhammad Qasim Abdul Majeed <qasim.majeed20@gmail.com>
Subject: [PATCH] Updating a deprecated use of strcpy in ac.c file.
Date: Sat,  6 Jul 2024 12:45:05 +0500
Message-Id: <20240706074505.9885-1-qasim.majeed20@gmail.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269678
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-acpi
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Replacing strcpy with strscpy.
strcpy is a deprecated function.
It should be removed from the kernel source.

Link: https://github.com/KSPP/linux/issues/88

Signed-off-by: Muhammad Qasim Abdul Majeed <qasim.majeed20@gmail.com>
---
 drivers/acpi/ac.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/acpi/ac.c b/drivers/acpi/ac.c
index 09a87fa222c7..ad1427a384e4 100644
--- a/drivers/acpi/ac.c
+++ b/drivers/acpi/ac.c
@@ -213,8 +213,8 @@ static int acpi_ac_probe(struct platform_device *pdev)
 		return -ENOMEM;
 
 	ac->device = adev;
-	strcpy(acpi_device_name(adev), ACPI_AC_DEVICE_NAME);
-	strcpy(acpi_device_class(adev), ACPI_AC_CLASS);
+	strscpy(acpi_device_name(adev), ACPI_AC_DEVICE_NAME);
+	strscpy(acpi_device_class(adev), ACPI_AC_CLASS);
 
 	platform_set_drvdata(pdev, ac);
 
-- 
2.34.1

.

Return-Path: <linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org>
From: Jisheng Zhang <jszhang@kernel.org>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Jiri Slaby <jirislaby@kernel.org>,
	Heikki Krogerus <heikki.krogerus@linux.intel.com>
Cc: Arnd Bergmann <arnd@arndb.de>,
	linux-kernel@vger.kernel.org,
	linux-serial@vger.kernel.org,
	linux-riscv@lists.infradead.org
Subject: [PATCH] serial: 8250: don't lost port's default capabilities
Date: Sat,  6 Jul 2024 16:29:28 +0800
Message-ID: <20240706082928.2238-1-jszhang@kernel.org>
MIME-Version: 1.0
X-BeenThere: linux-riscv@lists.infradead.org
X-Mailman-Version: 2.1.34
List-Id: <linux-riscv.lists.infradead.org>
List-Unsubscribe: <http://lists.infradead.org/mailman/options/linux-riscv>,
 <mailto:linux-riscv-request@lists.infradead.org?subject=unsubscribe>
List-Archive: <http://lists.infradead.org/pipermail/linux-riscv/>
List-Post: <mailto:linux-riscv@lists.infradead.org>
List-Help: <mailto:linux-riscv-request@lists.infradead.org?subject=help>
List-Subscribe: <http://lists.infradead.org/mailman/listinfo/linux-riscv>,
 <mailto:linux-riscv-request@lists.infradead.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: "linux-riscv" <linux-riscv-bounces@lists.infradead.org>
Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org
Xref: photonic.trudheim.com org.infradead.lists.linux-riscv:79436 org.kernel.vger.linux-kernel:1269688
Newsgroups: org.infradead.lists.linux-riscv,org.kernel.vger.linux-kernel,org.kernel.vger.linux-serial
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Commit b0b8c84cf58d ("serial: of_serial: Handle auto-flow-control
property") added support for fifo-size and hw-flow-control properties
to avoid adding new types to 8250.c for UARTs that are compatible with
the standard types but that have different size fifo or support 16750
compatible auto flow control. We avoided many new 8250 port types with
this nice feature, but there's a problem, if the code detects fifo-size
or auto-flow-control property, up->capabilities will be set
accordingly, then serial8250_set_defaults() will ignore the default
port's capabilities:

|if (!up->capabilities)
|	up->capabilities = uart_config[type].flags;

If the port's default capabilities contains other bits such as
UART_CAP_SLEEP, UART_CAP_EFR and so on, they are lost.

Fixes: b0b8c84cf58d ("serial: of_serial: Handle auto-flow-control property")
Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
---
 drivers/tty/serial/8250/8250_port.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/8250_port.c
index 893bc493f662..e20614241229 100644
--- a/drivers/tty/serial/8250/8250_port.c
+++ b/drivers/tty/serial/8250/8250_port.c
@@ -3245,8 +3245,7 @@ void serial8250_set_defaults(struct uart_8250_port *up)
 			up->port.fifosize = uart_config[type].fifo_size;
 		if (!up->tx_loadsz)
 			up->tx_loadsz = uart_config[type].tx_loadsz;
-		if (!up->capabilities)
-			up->capabilities = uart_config[type].flags;
+		up->capabilities |= uart_config[type].flags;
 	}
 
 	set_io_from_upio(port);
-- 
2.43.0


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
.

From: Muhammad Qasim Abdul Majeed <qasim.majeed20@gmail.com>
To: rafael@kernel.org,
	lenb@kernel.org,
	linux-acpi@vger.kernel.org,
	linux-kernel@vger.kernel.org
Cc: Muhammad Qasim Abdul Majeed <qasim.majeed20@gmail.com>
Subject: [PATCH 1/4] Updating a deprecated use of strcpy from acpi_pad.c file.
Date: Sat,  6 Jul 2024 13:11:01 +0500
Message-Id: <20240706081104.14493-1-qasim.majeed20@gmail.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269690
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-acpi
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Replacing strcpy with strscpy.
strcpy is a deprecated function.
It should be removed from the kernel source.

Link: https://github.com/KSPP/linux/issues/88

Signed-off-by: Muhammad Qasim Abdul Majeed <qasim.majeed20@gmail.com>
---
 drivers/acpi/acpi_pad.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/acpi/acpi_pad.c b/drivers/acpi/acpi_pad.c
index bd1ad07f0290..e49f89bbeacf 100644
--- a/drivers/acpi/acpi_pad.c
+++ b/drivers/acpi/acpi_pad.c
@@ -417,8 +417,8 @@ static int acpi_pad_probe(struct platform_device *pdev)
 	struct acpi_device *adev = ACPI_COMPANION(&pdev->dev);
 	acpi_status status;
 
-	strcpy(acpi_device_name(adev), ACPI_PROCESSOR_AGGREGATOR_DEVICE_NAME);
-	strcpy(acpi_device_class(adev), ACPI_PROCESSOR_AGGREGATOR_CLASS);
+	strscpy(acpi_device_name(adev), ACPI_PROCESSOR_AGGREGATOR_DEVICE_NAME);
+	strscpy(acpi_device_class(adev), ACPI_PROCESSOR_AGGREGATOR_CLASS);
 
 	status = acpi_install_notify_handler(adev->handle,
 		ACPI_DEVICE_NOTIFY, acpi_pad_notify, adev);
-- 
2.34.1

.

From: Bing Huang <huangbing775@126.com>
To: vincent.guittot@linaro.org
Cc: dietmar.eggemann@arm.com,
	rostedt@goodmis.org,
	brauner@kernel.org,
	bristot@redhat.com,
	bsegall@google.com,
	juri.lelli@redhat.com,
	linux-kernel@vger.kernel.org,
	mgorman@suse.de,
	mingo@redhat.com,
	peterz@infradead.org
Subject: [PATCH] sched/fair: Remove sg_lb_stats forward declaration
Date: Sat,  6 Jul 2024 16:35:40 +0800
Message-Id: <20240706083540.47420-1-huangbing775@126.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269697
Newsgroups: org.kernel.vger.linux-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

From: Bing Huang <huangbing@kylinos.cn>

struct sg_lb_stats has already been declared previously,
so there is no need for a forward declaration

Signed-off-by: Bing Huang <huangbing@kylinos.cn>
---
 kernel/sched/fair.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index 41b58387023d..5a94769f1f2d 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -10203,9 +10203,6 @@ static inline enum fbq_type fbq_classify_rq(struct rq *rq)
 }
 #endif /* CONFIG_NUMA_BALANCING */
 
-
-struct sg_lb_stats;
-
 /*
  * task_running_on_cpu - return 1 if @p is running on @cpu.
  */
-- 
2.25.1

.

From: Bing Huang <huangbing775@126.com>
To: dietmar.eggemann@arm.com
Cc: rostedt@goodmis.org,
	brauner@kernel.org,
	bristot@redhat.com,
	bsegall@google.com,
	juri.lelli@redhat.com,
	linux-kernel@vger.kernel.org,
	mgorman@suse.de,
	mingo@redhat.com,
	peterz@infradead.org,
	vincent.guittot@linaro.org
Subject: [PATCH] sched/fair: Remove stale buddies comment for last and skip
Date: Sat,  6 Jul 2024 17:05:11 +0800
Message-Id: <20240706090511.48818-1-huangbing775@126.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269709
Newsgroups: org.kernel.vger.linux-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

From: Bing Huang <huangbing@kylinos.cn>

commit 5e963f2bd465 ("sched/fair: Commit to EEVDF") has removed last and
skip. Modify the comment accordingly.

Signed-off-by: Bing Huang <huangbing@kylinos.cn>
---
 kernel/sched/fair.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index 41b58387023d..383582f87def 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -5466,8 +5466,6 @@ set_next_entity(struct cfs_rq *cfs_rq, struct sched_entity *se)
  * Pick the next process, keeping these things in mind, in this order:
  * 1) keep things fair between processes/task groups
  * 2) pick the "next" process, since someone really wants that to run
- * 3) pick the "last" process, for cache locality
- * 4) do not run the "skip" process, if something else is available
  */
 static struct sched_entity *
 pick_next_entity(struct cfs_rq *cfs_rq)
-- 
2.25.1

.

From: Aditya Garg <gargaditya08@live.com>
To: "gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>,
	"oneukum@suse.com" <oneukum@suse.com>, "stern@rowland.harvard.edu"
	<stern@rowland.harvard.edu>
CC: Kerem Karabay <kekrby@gmail.com>, Orlando Chamberlain
	<orlandoch.dev@gmail.com>, Linux Kernel Mailing List
	<linux-kernel@vger.kernel.org>, "linux-usb@vger.kernel.org"
	<linux-usb@vger.kernel.org>, "linux-scsi@vger.kernel.org"
	<linux-scsi@vger.kernel.org>, "usb-storage@lists.one-eyed-alien.net"
	<usb-storage@lists.one-eyed-alien.net>
Subject: [PATCH v2 0/2] USB: Simplify running code on shutdown for USB devices
Date: Sat, 6 Jul 2024 09:58:56 +0000
Message-ID: <A6C4519F-852E-4B5C-B791-7396B515B8A6@live.com>
Accept-Language: en-IN, en-US
Content-Language: en-US
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269713
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-scsi,org.kernel.vger.linux-usb
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Currently there is no standardized method for USB drivers to handle
shutdown events.

The first patch in this series fixes this by simplifying running code
on shutdown for USB devices by adding a shutdown callback to usb_driver.

The second patch implements this new callback to the UAS driver.

Kerem Karabay (2):
  USB: core: add 'shutdown' callback to usb_driver
  scsi: usb: uas: Implement the new shutdown callback

 drivers/usb/core/driver.c | 14 ++++++++++++++
 drivers/usb/storage/uas.c |  5 ++---
 include/linux/usb.h       |  3 +++
 3 files changed, 19 insertions(+), 3 deletions(-)

--=20
2.43.0

.

Return-Path: <linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org>
From: Jisheng Zhang <jszhang@kernel.org>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Jiri Slaby <jirislaby@kernel.org>
Cc: linux-kernel@vger.kernel.org,
	linux-serial@vger.kernel.org,
	linux-riscv@lists.infradead.org
Subject: [PATCH] serial: 8250: move mmp|pxa uart earlycon code and add xscale earlycon
Date: Sat,  6 Jul 2024 18:18:56 +0800
Message-ID: <20240706101856.3077-1-jszhang@kernel.org>
MIME-Version: 1.0
X-BeenThere: linux-riscv@lists.infradead.org
X-Mailman-Version: 2.1.34
List-Id: <linux-riscv.lists.infradead.org>
List-Unsubscribe: <http://lists.infradead.org/mailman/options/linux-riscv>,
 <mailto:linux-riscv-request@lists.infradead.org?subject=unsubscribe>
List-Archive: <http://lists.infradead.org/pipermail/linux-riscv/>
List-Post: <mailto:linux-riscv@lists.infradead.org>
List-Help: <mailto:linux-riscv-request@lists.infradead.org?subject=help>
List-Subscribe: <http://lists.infradead.org/mailman/listinfo/linux-riscv>,
 <mailto:linux-riscv-request@lists.infradead.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: "linux-riscv" <linux-riscv-bounces@lists.infradead.org>
Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org
Xref: photonic.trudheim.com org.infradead.lists.linux-riscv:79438 org.kernel.vger.linux-kernel:1269714
Newsgroups: org.infradead.lists.linux-riscv,org.kernel.vger.linux-kernel,org.kernel.vger.linux-serial
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

There are two other drivers that bind to "mrvl,mmp-uart": the 8250_of
and the 8250_pxa. The previous one is generic and the latter is binded
to ARCH_PXA || ARCH_MMP. Now we may have pxa programming compatible
HW to support, making use of the generic 8250_of seems a good idea.
However, there's no earlycon support if we go with this solution. So
move the mmp|pxa-uart earlycon code to core 8250_early.c.

At the same, add xscale earlycon support too, only build test since
I have no xscale machine any more.

Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
---
 drivers/tty/serial/8250/8250_early.c | 11 +++++++++++
 drivers/tty/serial/8250/8250_pxa.c   | 16 ----------------
 2 files changed, 11 insertions(+), 16 deletions(-)

diff --git a/drivers/tty/serial/8250/8250_early.c b/drivers/tty/serial/8250/8250_early.c
index e3f482fd3de4..6176083d0341 100644
--- a/drivers/tty/serial/8250/8250_early.c
+++ b/drivers/tty/serial/8250/8250_early.c
@@ -171,6 +171,17 @@ OF_EARLYCON_DECLARE(ns16550a, "ns16550a", early_serial8250_setup);
 OF_EARLYCON_DECLARE(uart, "nvidia,tegra20-uart", early_serial8250_setup);
 OF_EARLYCON_DECLARE(uart, "snps,dw-apb-uart", early_serial8250_setup);
 
+static int __init early_serial8250_rs2_setup(struct earlycon_device *device,
+					     const char *options)
+{
+	device->port.regshift = 2;
+
+	return early_serial8250_setup(device, options);
+}
+OF_EARLYCON_DECLARE(uart, "intel,xscale-uart", early_serial8250_rs2_setup);
+OF_EARLYCON_DECLARE(uart, "mrvl,mmp-uart", early_serial8250_rs2_setup);
+OF_EARLYCON_DECLARE(uart, "mrvl,pxa-uart", early_serial8250_rs2_setup);
+
 #ifdef CONFIG_SERIAL_8250_OMAP
 
 static int __init early_omap8250_setup(struct earlycon_device *device,
diff --git a/drivers/tty/serial/8250/8250_pxa.c b/drivers/tty/serial/8250/8250_pxa.c
index ba96fa913e7f..b5d937f6f3f9 100644
--- a/drivers/tty/serial/8250/8250_pxa.c
+++ b/drivers/tty/serial/8250/8250_pxa.c
@@ -165,22 +165,6 @@ static struct platform_driver serial_pxa_driver = {
 
 module_platform_driver(serial_pxa_driver);
 
-#ifdef CONFIG_SERIAL_8250_CONSOLE
-static int __init early_serial_pxa_setup(struct earlycon_device *device,
-				  const char *options)
-{
-	struct uart_port *port = &device->port;
-
-	if (!(device->port.membase || device->port.iobase))
-		return -ENODEV;
-
-	port->regshift = 2;
-	return early_serial8250_setup(device, NULL);
-}
-OF_EARLYCON_DECLARE(early_pxa, "mrvl,pxa-uart", early_serial_pxa_setup);
-OF_EARLYCON_DECLARE(mmp, "mrvl,mmp-uart", early_serial_pxa_setup);
-#endif
-
 MODULE_AUTHOR("Sergei Ianovich");
 MODULE_LICENSE("GPL");
 MODULE_ALIAS("platform:pxa2xx-uart");
-- 
2.43.0


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
.

From: Muhammad Qasim Abdul Majeed <qasim.majeed20@gmail.com>
To: rafael@kernel.org,
	lenb@kernel.org,
	linux-acpi@vger.kernel.org,
	linux-kernel@vger.kernel.org
Cc: Muhammad Qasim Abdul Majeed <qasim.majeed20@gmail.com>
Subject: [PATCH v2 4/4] Updating a deprecated use of strcpy in button.c file.
Date: Sat,  6 Jul 2024 14:58:20 +0500
Message-Id: <20240706095818.96150-1-qasim.majeed20@gmail.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269724
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-acpi
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Replacing strcpy with strscpy.
strcpy is a deprecated function.
It should be removed from the kernel source.

Link: https://github.com/KSPP/linux/issues/88

Signed-off-by: Muhammad Qasim Abdul Majeed <qasim.majeed20@gmail.com>

Hi All,

strscpy requires destination size for pointers. (https://elixir.bootlin.com/linux/latest/source/include/linux/string.h#L95)
acpi_device_name is defined as 40 bytes no macro definition for length (https://elixir.bootlin.com/linux/latest/source/include/acpi/acpi_bus.h#L224). 
Placing a constant number to copy is not a good idea. If name lenght chages in future it will be an issue. Replacing name array with acpi_device_name macro for this reason.

ACPI compile time arrays should be defined using a macro. It keeps code change consistent accross the source (#define ACPI_DEVICE_NAME_LENGTH) 
If this suggestions seems good to you, I'll push the patch for the sugested change.

Best Regards,
Qasim

---
	v1-> v2: It fixes the build issue, removes char* name and use acpi_device_name for simplicity.
 drivers/acpi/button.c | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/drivers/acpi/button.c b/drivers/acpi/button.c
index cc61020756be..9dda4a3998f8 100644
--- a/drivers/acpi/button.c
+++ b/drivers/acpi/button.c
@@ -521,7 +521,7 @@ static int acpi_button_add(struct acpi_device *device)
 	struct input_dev *input;
 	const char *hid = acpi_device_hid(device);
 	acpi_status status;
-	char *name, *class;
+	char *class;
 	int error = 0;
 
 	if (!strcmp(hid, ACPI_BUTTON_HID_LID) &&
@@ -540,27 +540,26 @@ static int acpi_button_add(struct acpi_device *device)
 		goto err_free_button;
 	}
 
-	name = acpi_device_name(device);
 	class = acpi_device_class(device);
 
 	if (!strcmp(hid, ACPI_BUTTON_HID_POWER) ||
 	    !strcmp(hid, ACPI_BUTTON_HID_POWERF)) {
 		button->type = ACPI_BUTTON_TYPE_POWER;
 		handler = acpi_button_notify;
-		strcpy(name, ACPI_BUTTON_DEVICE_NAME_POWER);
+		strscpy(acpi_device_name(device), ACPI_BUTTON_DEVICE_NAME_POWER);
 		sprintf(class, "%s/%s",
 			ACPI_BUTTON_CLASS, ACPI_BUTTON_SUBCLASS_POWER);
 	} else if (!strcmp(hid, ACPI_BUTTON_HID_SLEEP) ||
 		   !strcmp(hid, ACPI_BUTTON_HID_SLEEPF)) {
 		button->type = ACPI_BUTTON_TYPE_SLEEP;
 		handler = acpi_button_notify;
-		strcpy(name, ACPI_BUTTON_DEVICE_NAME_SLEEP);
+		strscpy(acpi_device_name(device), ACPI_BUTTON_DEVICE_NAME_SLEEP);
 		sprintf(class, "%s/%s",
 			ACPI_BUTTON_CLASS, ACPI_BUTTON_SUBCLASS_SLEEP);
 	} else if (!strcmp(hid, ACPI_BUTTON_HID_LID)) {
 		button->type = ACPI_BUTTON_TYPE_LID;
 		handler = acpi_lid_notify;
-		strcpy(name, ACPI_BUTTON_DEVICE_NAME_LID);
+		strscpy(acpi_device_name(device), ACPI_BUTTON_DEVICE_NAME_LID);
 		sprintf(class, "%s/%s",
 			ACPI_BUTTON_CLASS, ACPI_BUTTON_SUBCLASS_LID);
 		input->open = acpi_lid_input_open;
@@ -579,7 +578,7 @@ static int acpi_button_add(struct acpi_device *device)
 
 	snprintf(button->phys, sizeof(button->phys), "%s/button/input0", hid);
 
-	input->name = name;
+	input->name = acpi_device_name(device);
 	input->phys = button->phys;
 	input->id.bustype = BUS_HOST;
 	input->id.product = button->type;
@@ -636,7 +635,7 @@ static int acpi_button_add(struct acpi_device *device)
 	}
 
 	device_init_wakeup(&device->dev, true);
-	pr_info("%s [%s]\n", name, acpi_device_bid(device));
+	pr_info("%s [%s]\n", input->name, acpi_device_bid(device));
 	return 0;
 
 err_input_unregister:
-- 
2.34.1

.

From: Hironori KIKUCHI <kikuchan98@gmail.com>
To: linux-kernel@vger.kernel.org
Cc: Hironori KIKUCHI <kikuchan98@gmail.com>,
	Jagan Teki <jagan@amarulasolutions.com>,
	Neil Armstrong <neil.armstrong@linaro.org>,
	Jessica Zhang <quic_jesszhan@quicinc.com>,
	Sam Ravnborg <sam@ravnborg.org>,
	David Airlie <airlied@gmail.com>,
	Daniel Vetter <daniel@ffwll.ch>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Maxime Ripard <mripard@kernel.org>,
	Thomas Zimmermann <tzimmermann@suse.de>,
	Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	dri-devel@lists.freedesktop.org,
	devicetree@vger.kernel.org
Subject: [PATCH v3 0/5] drm/panel: st7701: Add Anbernic RG28XX panel support
Date: Sat,  6 Jul 2024 19:23:31 +0900
Message-ID: <20240706102338.99231-1-kikuchan98@gmail.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269728
Newsgroups: org.kernel.vger.linux-kernel,org.freedesktop.lists.dri-devel,org.kernel.vger.linux-devicetree
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Add support for the display panel of the Anbernic RG28XX, a handheld
gaming device from Anbernic. "RG28XX" is the actual name of the device.

This panel is driven by a variant of the ST7701 driver IC internally,
and is connected via an RGB parallel interface for image transmission and
an SPI interface for configuration.

Since the current code of the panel driver for ST7701 variants only
supports MIPI DSI as the configuration interface, add support for SPI
as well.

v3:
  - Split commits
  - Remove unnecessary changes
  - Change Kconfig dependency and adjust for it
  - Fix incorrect device variable in st7701_get_modes()

v2:
  - Update dt-bindings
  - Rename DSI_CMD* macros to ST7701_CMD*
  - Rename ST7701_DSI macro to ST7701_WRITE
  - Fix incorrect dev_err_probe() usage
  - Remove GPIOD_FLAGS_BIT_NONEXCLUSIVE flag
  - Remove st7701_remove() and st7701_spi_remove()
  - Call drm_panel_disable() and drm_panel_unprepare() on cleanup

Hironori KIKUCHI (5):
  drm/panel: st7701: Rename macros
  drm/panel: st7701: Decouple DSI and DRM parts
  dt-bindings: display: st7701: Add Anbernic RG28XX panel
  drm/panel: st7701: Add support for SPI for configuration
  drm/panel: st7701: Add Anbernic RG28XX panel support

 .../display/panel/sitronix,st7701.yaml        |   69 +-
 drivers/gpu/drm/panel/Kconfig                 |    3 +-
 drivers/gpu/drm/panel/panel-sitronix-st7701.c | 1074 ++++++++++-------
 3 files changed, 734 insertions(+), 412 deletions(-)

-- 
2.45.2

.

From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= <linux@weissschuh.net>
Subject: [PATCH 0/2] regmap: add const_struct.checkpatch entries and
 constify regmap_irq_sub_irq_map
Date: Sat, 06 Jul 2024 13:13:40 +0200
Message-Id: <20240706-regmap-const-structs-v1-0-d08c776da787@weissschuh.net>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
To: Mark Brown <broonie@kernel.org>, 
 Greg Kroah-Hartman <gregkh@linuxfoundation.org>, 
 "Rafael J. Wysocki" <rafael@kernel.org>
Cc: linux-kernel@vger.kernel.org, 
 =?utf-8?q?Thomas_Wei=C3=9Fschuh?= <linux@weissschuh.net>
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269750
Newsgroups: org.kernel.vger.linux-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Some non-functional changes to enable more .rodata structs.

Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
---
Thomas Weißschuh (2):
      const_structs.checkpatch: add regmap structs
      regmap-irq: handle const struct regmap_irq_sub_irq_map

 drivers/base/regmap/regmap-irq.c |  2 +-
 include/linux/regmap.h           |  2 +-
 scripts/const_structs.checkpatch | 10 ++++++++++
 3 files changed, 12 insertions(+), 2 deletions(-)
---
base-commit: 1dd28064d4164a4dc9096fd1a7990d2de15f2bb6
change-id: 20240706-regmap-const-structs-25e3d5833d3b

Best regards,
-- 
Thomas Weißschuh <linux@weissschuh.net>

.

From: Chen Ridong <chenridong@huawei.com>
To: <tj@kernel.org>, <lizefan.x@bytedance.com>, <hannes@cmpxchg.org>,
	<longman@redhat.com>
CC: <cgroups@vger.kernel.org>, <linux-kernel@vger.kernel.org>
Subject: [PATCH -next] cgroup: distinguish name and legacy_name when show /proc/cgroups
Date: Sat, 6 Jul 2024 11:38:30 +0000
Message-ID: <20240706113830.1612319-1-chenridong@huawei.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269815
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.cgroups
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Subsys_name may be different between v1 and v2. In cgroup v2
blk subsys_name is io, while it is named blkio in cgroup v1.
It better to distinguish name and legacy_name when we cat /proc/cgroups.

Signed-off-by: Chen Ridong <chenridong@huawei.com>
---
 kernel/cgroup/cgroup-v1.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/kernel/cgroup/cgroup-v1.c b/kernel/cgroup/cgroup-v1.c
index b9dbf6bf2779..b29252ad91b6 100644
--- a/kernel/cgroup/cgroup-v1.c
+++ b/kernel/cgroup/cgroup-v1.c
@@ -677,7 +677,8 @@ int proc_cgroupstats_show(struct seq_file *m, void *v)
 
 	for_each_subsys(ss, i)
 		seq_printf(m, "%s\t%d\t%d\t%d\n",
-			   ss->legacy_name, ss->root->hierarchy_id,
+			   ss->root == &cgrp_dfl_root ? ss->name : ss->legacy_name,
+			   ss->root->hierarchy_id,
 			   atomic_read(&ss->root->nr_cgrps),
 			   cgroup_ssid_enabled(i));
 
-- 
2.34.1

.

From: Aditya Garg <gargaditya08@live.com>
To: "gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>,
	"oneukum@suse.com" <oneukum@suse.com>, "stern@rowland.harvard.edu"
	<stern@rowland.harvard.edu>
CC: Kerem Karabay <kekrby@gmail.com>, Orlando Chamberlain
	<orlandoch.dev@gmail.com>, Linux Kernel Mailing List
	<linux-kernel@vger.kernel.org>, "linux-usb@vger.kernel.org"
	<linux-usb@vger.kernel.org>, "linux-scsi@vger.kernel.org"
	<linux-scsi@vger.kernel.org>, "usb-storage@lists.one-eyed-alien.net"
	<usb-storage@lists.one-eyed-alien.net>
Subject: [PATCH v3 0/2] USB: Simplify running code on shutdown for USB devices
Date: Sat, 6 Jul 2024 12:02:16 +0000
Message-ID: <58227E2C-1886-40AD-8F80-7C618EF2D8F2@live.com>
Accept-Language: en-IN, en-US
Content-Language: en-US
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269820
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-scsi,org.kernel.vger.linux-usb
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Currently there is no standardized method for USB drivers to handle
shutdown events.

The first patch in this series fixes this by simplifying running code
on shutdown for USB devices by adding a shutdown callback to usb_driver.

The second patch implements this new callback to the UAS driver

Kerem Karabay (2):
  USB: core: add 'shutdown' callback to usb_driver
  USB: uas: Implement the new shutdown callback

 drivers/usb/core/driver.c | 14 ++++++++++++++
 drivers/usb/storage/uas.c |  5 ++---
 include/linux/usb.h       |  3 +++
 3 files changed, 19 insertions(+), 3 deletions(-)

--=20
2.43.0

.

Date: Sat, 6 Jul 2024 15:20:02 +0200
From: Wolfram Sang <wsa@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org,
	Peter Rosin <peda@axentia.se>, Bartosz Golaszewski <brgl@bgdev.pl>,
	Andi Shyti <andi.shyti@kernel.org>
Subject: [PULL REQUEST] i2c-for-6.10-rc7
Message-ID: <ZolEgp8R-JPRLYDB@shikoro>
Mail-Followup-To: Wolfram Sang <wsa@kernel.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org,
	Peter Rosin <peda@axentia.se>, Bartosz Golaszewski <brgl@bgdev.pl>,
	Andi Shyti <andi.shyti@kernel.org>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha512;
	protocol="application/pgp-signature"; boundary="w4BAlaxAov1f3nQ1"
Content-Disposition: inline
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269835
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-i2c
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail


--w4BAlaxAov1f3nQ1
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

The following changes since commit 22a40d14b572deb80c0648557f4bd502d7e83826:

  Linux 6.10-rc6 (2024-06-30 14:40:44 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git tags/i2c-for-6.10-rc7

for you to fetch changes up to b46803320c6ee2251de72d68f576a41aadbba17d:

  Merge tag 'i2c-host-fixes-6.10-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/andi.shyti/linux into i2c/for-current (2024-07-05 16:08:55 +0200)

----------------------------------------------------------------
Passing through an I2C driver fix

----------------------------------------------------------------
Piotr Wojtaszczyk (1):
      i2c: pnx: Fix potential deadlock warning from del_timer_sync() call in isr

Wolfram Sang (1):
      Merge tag 'i2c-host-fixes-6.10-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/andi.shyti/linux into i2c/for-current

 drivers/i2c/busses/i2c-pnx.c | 48 +++++++++-----------------------------------
 1 file changed, 10 insertions(+), 38 deletions(-)

--w4BAlaxAov1f3nQ1
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQIzBAABCgAdFiEEOZGx6rniZ1Gk92RdFA3kzBSgKbYFAmaJRIEACgkQFA3kzBSg
KbYdgQ//dTOrvDZKsPtk3r/imD65FyPOZKX+rIPiuHBJLLVjnwTaJaqM+kUd6061
PZqwNhPQVD6/9AuiGRw6NtSIhfnUKHimI2wUFX1twOY2issqYckT3jjqZ6iQHENP
fsP1C3HQN/qLBtdwwOYX72AIQJWkgfipUWr1guk45B+vbOGd4LDgJBlGnoyDzeHI
tlH0sLf7TTW5CttzPssPLOJZlJtJ2F6zUSbiGSWJqGdJ5WMZdEe4xQmUH28f5Tx9
T5A2TbSidx7+dCuKMxSBGYtS+2vOUsVApgQN04NzhJ20JXWTuF/BWIFSHSyatzex
skamGlazj93ECz+3KshH3sZyMO57h+FVf3aorSPwV7HYNA4gwtbG4nyYEXBFFc+F
SXfux7u9pYsXqKMEPsa7NqRhKhXhAityFvAPNKQXWwXiTeuVijRXpjDzF2BWxoLx
3vXev9BdnCHtJr5TE5ULwdG5owMbs4/aKYcz3v+j7ApIgS/i9kTPYqga6of5E4eG
LPaC/hipDYK+uLRM8BQcThOLcg73wFSq8OTf8EMx3EEevZPsycL9GJ3qjsKw9lJy
zyKy+xniwq7n0exkfwLS2ocCy9LUIFHwyFZyf/OgXG+bJquamxEQxJykLaDyY24V
3hCD6jnz4/N7ND2ZdV5wIFPxdMpiaZkBaIAuaXN3KByyhCniwWY=
=USBK
-----END PGP SIGNATURE-----

--w4BAlaxAov1f3nQ1--
.

From: =?UTF-8?q?Sergio=20Gonz=C3=A1lez=20Collado?= <sergio.collado@gmail.com>
To: Jonathan Corbet <corbet@lwn.net>,
	Ingo Molnar <mingo@kernel.org>,
	Mukesh Kumar Chaurasiya <mchauras@linux.ibm.com>,
	Shrikanth Hegde <sshegde@linux.vnet.ibm.com>,
	Wenyu Huang <huangwenyu5@huawei.com>
Cc: Carlos Bilbao <carlos.bilbao.osdev@gmail.com>,
	linux-doc@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	bilbao@vt.edu,
	=?UTF-8?q?Sergio=20Gonz=C3=A1lez=20Collado?= <sergio.collado@gmail.com>
Subject: [PATCH] docs/sp_SP: Add translation for scheduler/sched-design-CFS.rst
Date: Sat,  6 Jul 2024 15:22:01 +0200
Message-Id: <20240706132201.26136-1-sergio.collado@gmail.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269837
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-doc
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Translate Documentation/scheduler/sched-design-CFS.rst into Spanish

Signed-off-by: Sergio González Collado <sergio.collado@gmail.com>
---
 Documentation/scheduler/sched-design-CFS.rst  |   2 +
 Documentation/translations/sp_SP/index.rst    |   1 +
 .../translations/sp_SP/scheduler/index.rst    |   8 +
 .../sp_SP/scheduler/sched-design-CFS.rst      | 275 ++++++++++++++++++
 4 files changed, 286 insertions(+)
 create mode 100644 Documentation/translations/sp_SP/scheduler/index.rst
 create mode 100644 Documentation/translations/sp_SP/scheduler/sched-design-CFS.rst

diff --git a/Documentation/scheduler/sched-design-CFS.rst b/Documentation/scheduler/sched-design-CFS.rst
index e030876fbd68..bc1e507269c6 100644
--- a/Documentation/scheduler/sched-design-CFS.rst
+++ b/Documentation/scheduler/sched-design-CFS.rst
@@ -1,3 +1,5 @@
+.. _sched_design_CFS:
+
 =============
 CFS Scheduler
 =============
diff --git a/Documentation/translations/sp_SP/index.rst b/Documentation/translations/sp_SP/index.rst
index 274ef4ad96b9..aae7018b0d1a 100644
--- a/Documentation/translations/sp_SP/index.rst
+++ b/Documentation/translations/sp_SP/index.rst
@@ -78,3 +78,4 @@ Traducciones al español
 
    process/index
    wrappers/memory-barriers
+   scheduler/index
diff --git a/Documentation/translations/sp_SP/scheduler/index.rst b/Documentation/translations/sp_SP/scheduler/index.rst
new file mode 100644
index 000000000000..768488d6f001
--- /dev/null
+++ b/Documentation/translations/sp_SP/scheduler/index.rst
@@ -0,0 +1,8 @@
+.. include:: ../disclaimer-sp.rst
+
+.. _sp_scheduler_index:
+
+.. toctree::
+    :maxdepth: 1
+
+    sched-design-CFS
diff --git a/Documentation/translations/sp_SP/scheduler/sched-design-CFS.rst b/Documentation/translations/sp_SP/scheduler/sched-design-CFS.rst
new file mode 100644
index 000000000000..43e29297d7fa
--- /dev/null
+++ b/Documentation/translations/sp_SP/scheduler/sched-design-CFS.rst
@@ -0,0 +1,275 @@
+.. include:: ../disclaimer-sp.rst
+
+:Original: :ref:`Documentation/scheduler/sched-design-CFS.rst <sched_design_CFS>`
+:Translator: Sergio González Collado <sergio.collado@gmail.com>
+
+.. _sp_sched_desing_CFS:
+
+====================
+Gestor de tareas CFS
+====================
+
+1.  VISIÓN GENERAL
+==================
+
+CFS viene de las siglas en inglés de "Gestor te tareas totalmente justo"
+("Completely Fair Scheduler"), y es el nuevo gestor de tareas de escritorio
+implementado por Ingo Molnar e integrado en Linux 2.6.23. Es el sustituto de
+el previo gestor de tareas SCHED_OTHER.
+
+El 80% del diseño de CFS puede ser resumido en una única frase: CFS
+básicamente modela una "CPU ideal, precisa y multi-tarea" sobre hardware
+real.
+
+"una CPU multitarea ideal" es una CPU (inexistente :-)) que tiene un 100%
+de potencia y que puede ejecutar cualquier tarea exactamente a la misma
+velocidad, en paralelo, y cada una a 1/n velocidad. Por ejemplo, si hay dos
+tareas ejecutándose, entonces cada una usa un 50% de la potencia --- es decir,
+como si se ejecutaran en paralelo.
+
+En un hardware real, se puede ejecutar una única tarea a la vez, así que
+se ha usado el concepto de "tiempo de ejecución virtual". El tiempo
+de ejecución virtual de una tarea, específica cuando la siguiente porción
+de ejecución podría empezar en la CPU ideal multi-tarea descrita anteriormente.
+En la práctica, el tiempo de ejecución virtual de una tarea es el
+tiempo de ejecución real normalizado con respecto al número total de
+tareas ejecutándose.
+
+
+2.  UNOS CUANTOS DETALLES DE IMPLEMENTACIÓN
+===========================================
+
+En CFS, el tiempo de ejecución virtual se expresa y se monitoriza por
+cada tarea, en su valor de p->se.vruntime (en unidades de nanosegundos).
+De este modo, es posible temporizar con precisión y medir el "tiempo
+de CPU esperado" que una tarea debería tener.
+
+Un pequeño detalle: en hardware "ideal", en cualquier momento todas las
+tareas pueden tener el mismo valor de p->se.vruntime --- i.e., tareas
+se podrían ejecutar simultáneamente y ninguna tarea podría escaparse del
+"balance" de la partición "ideal" del tiempo compartido de la CPU.
+
+La lógica de elección del tareas de CFS se basa en el valor de p->se.vruntime
+y por tanto es muy sencilla: siempre intenta ejecutar la tarea con el valor
+p->se.vruntime más pequeño (i.e., la tarea que se ha ejecutado menos hasta el
+momento). CFS siempre intenta dividir el espacio de tiempo entre tareas
+en ejecución tan próximo a la "ejecución multitarea ideal del hardware" como
+sea posible.
+
+El resto del diseño de CFS simplemente se escapa de este simple concepto,
+con unos cuantos añadidos como los niveles "nice" ("nice" significa "amable"
+en inglés), multi-tarea y varias variantes del algoritmo para identificar
+tareas "durmiendo".
+
+
+3.  EL ÁRBOL ROJO-NEGRO
+=======================
+
+El diseño de CFS es bastante radical: no utiliza las antiguas estructuras
+de datos para las colas de ejecución (en inglés "runqueues"), pero usa una
+estructura de árbol rojo-negro (en inglés "red-black tree") ordenado cronológicamente
+para construir un línea de ejecución en el futuro, y por eso no tiene ningún
+artificio de "cambio de tareas" (algo que previamente era usado por el gestor
+anterior y RSDL/SD).
+
+CFS también mantiene el valor de rq->cfs.min_vruntime, el cual crece
+monotónicamente siguiendo el valor más pequeño de vruntime de entre todas
+las tareas en la cola de ejecución. La cantidad total de trabajo realizado
+por el sistema es monitorizado usado min_vruntime; este valor es usado
+para situar las nuevas tareas en la parte izquierda del árbol tanto
+como sea posible.
+
+El valor total de tareas ejecutándose en la cola de ejecución es
+contabilizado mediante el valor rq->cfs.load, el cual es la suma de los
+de esas tareas que están en la cola de ejecución.
+
+CFS mantiene un árbol rojo-negro cronológiamente ordenado, donde todas las
+tareas que pueden ser ejecutadas están ordenadas por su valor de
+p->se.vruntime. CFS selecciona la tarea más hacia la izquierda de este
+árbol y la mantiene. Según el sistema continúa, las tareas ejecutadas
+se ponen en este árbol más y más hacia la derecha --- lentamente pero
+de forma continuada dando una oportunidad a cada tarea de ser la que
+está "la más hacia la izquierda" y por tanto obtener la CPU una cantidad
+determinista de tiempo.
+
+Resumiendo, CFS funciona así: ejecuta una tarea un tiempo, y cuando la
+tarea se gestiona (o sucede un tic del gestor de tareas) se considera
+que el tiempo de uso de la CPU se ha completado, y se añade a
+p->se.vruntime. Una vez p->se.vruntime ha aumentado lo suficiente como
+para que otra tarea sea "la tarea más hacia la izquierda" del árbol
+rojo-negro ordenado cronológicamente esta mantienen (más una cierta pequeña
+cantidad de distancia relativa a la tarea más hacia la izquierda para
+que no se sobre-reserven tareas y perjudique a la cache), entonces la
+nueva tarea "que está a la izquierda del todo", es la que se elige
+para que se ejecute, y la tarea en ejecución es interrumpida.
+
+4.  ALGUNAS CARACTERÍSTICAS DE CFS
+==================================
+
+CFS usa una granularidad de nanosegundos y no depende de ningún
+jiffie o detalles como HZ. De este modo el gestor de tareas CFS no tiene
+noción de "ventanas de tiempo" de la forma en que tenía el gestor de
+tareas previo, y tampoco tiene heurísticos. Únicamente hay un parámetro
+central ajustable (se ha de cambiar en CONFIG_SCHED_DEBUG):
+
+   /sys/kernel/debug/sched/base_slice_ns
+
+El cual puede ser usado para afinar desde el gestor de tareas del "escritorio"
+(i.e., bajas latencias) hacia cargas de "servidor" (i.e., bueno con
+procesamientos). Su valor por defecto es adecuado para tareas de escritorio.
+SCHED_BATCH también es gestionado por el gestor de tareas CFS.
+
+Debido a su diseño, el gestor de tareas CFS no es proclive a ninguno de los
+ataques que existen a día de hoy contra los heurísticos del gestor de tareas:
+fiftyp.c, thud.c, chew.c, ring-test.c, massive_intr.c todos trabajan
+correctamente y no tienen impacto en la interacción y se comportan de la forma
+esperada.
+
+El gestor de tareas CFS tiene una gestión mucho más firme de los niveles
+"nice" y SCHED_BATCH que los previos gestores de tareas: ambos tipos de
+tareas están aisladas de forma más eficiente.
+
+El balanceo de tareas SMP ha sido rehecho/mejorado: el avance por las
+colas de ejecución de tareas ha desaparecido del código de balanceo de
+carga, y ahora se usan iteradores en la gestión de módulos. El balanceo
+del código ha sido simplificado como resultado esto.
+
+5.  Políticas de gestión de tareas
+==================================
+
+CFS implementa tres políticas de gestión de tareas:
+
+  - SCHED_NORMAL (tradicionalmente llamada SCHED_OTHER): Gestión de
+    tareas que se usan para tareas normales.
+
+  - SCHED_BATCH: No interrumpe tareas tan amenudo como las tareas
+    normales harían, por eso permite a las tareas ejecutarse durante
+    ventanas de tiempo mayores y hace un uso más efectivo de las
+    caches pero al coste de la interactividad. Esto es adecuado
+    para trabajos de procesado de datos.
+
+  - SCHED_IDLE: Esta política es más débil incluso que nice 19, pero
+    no es un gestor "idle" para evitar caer en el problema de la
+    inversión de prioridades que causaría un bloqueo de la máquina
+    (deadlock).
+
+SCHED_FIFO/_RR se implementan en sched/rt.c y son específicos de
+POSIX.
+
+El comando chrt de util-linux-ng 2.13.1.1. puede asignar cualquiera de
+estas políticas excepto SCHED_IDLE.
+
+
+6.  CLASES DE GESTIÓN
+=====================
+
+El nuevo gestor de tareas CFS ha sido diseñado de tal modo para incluir
+"clases de gestión", una jerarquía ampliable de módulos que pueden tener
+distintas políticas de gestión de tareas. Estos módulos encapsulan los
+detalles de las politicas de gestion y son manejadas por el núcleo del
+gestor de tareas sin que este tenga que presuponer mucho sobre estas clases.
+
+sched/fair.c implementa el gestor de tareas CFS descrito arriba.
+
+sched/rt.c implementa la semántica de SCHED_FIFO y SCHED_RR, de una forma
+más sencilla que el gestor de tareas anterior. Usa 100 colas de ejecución
+(por todos los 100 niveles de prioridad RT, en vez de las 140 que necesitaba
+el gestor de tareas anterior) y no necesita las listas de expiración.
+
+Las clases de gestión de tareas son implementadas por medio de la estructura
+sched_class, la cual tiene llamadas a las funciones que deben de llamarse
+cuando quiera que ocurra un evento interesante.
+
+Esta es la lista parcial de llamadas:
+
+ - enqueue_task(...)
+
+   Llamada cuando una tarea entra en el estado de lista para ejecución.
+   Pone la entidad a ser gestionada (la tarea) en el árbol rojo-negro
+   e incrementa la variable nr_running.
+
+ - dequeue_task(...)
+
+   Cuando una tarea deja de ser ejecutable, esta función se llama para
+   mantener a la entidad gestionada fuera del árbol rojo-negor. Esto
+   decrementa la variable nr_running.
+
+ - yield_task(...)
+
+   Esta función es básicamente desencolar, seguido por encolar, a menos que
+   sysctl compat_yield esté activado; en ese caso, sitúa la entidad a gestionar
+   en la parte más hacia la derecha del árbol rojo-negro.
+
+ - check_preempt_curr(...)
+
+   Esta función comprueba si una tarea que ha entrado en el estado de
+   poder ser ejecutada, podría reemplazar a la tarea que actualmente
+   se esté ejecutando.
+
+ - pick_next_task(...)
+
+   Esta función elige la tarea más apropiada para ser ejecutada a continuación.
+
+ - set_curr_task(...)
+
+   Esta función se llama cuando una tarea cambia su clase de gestión o
+   cambia su grupo de tareas.
+
+ - task_tick(...)
+
+   Esta función es llamada la mayoría de las veces desde la función de tiempo
+   tick; esto puede llevar a un cambio de procesos. Esto dirige el reemplazo
+   de las tareas.
+
+
+7.  EXTENSIONES DE GRUPOS PARA CFS
+==================================
+
+Normalmente, el gestor de tareas gestiona tareas individuales e intenta
+proporcionar una cantidad justa de CPU a cada tarea. Algunas veces, puede
+ser deseable agrupar las tareas y proporcionarles una cantidad justa
+de tiempo de CPU a cada una de las tareas de ese grupo. Por ejemplo,
+podría ser deseable que primero se proporcione una cantidad justa de
+tiempo de CPU a cada usuario del sistema y después a cada tarea
+que pertenezca a un usuario.
+
+CONFIG_CGROUP_SCHED destaca en conseguir exactamente eso. Permite a las
+tareas ser agrupadas y divide el tiempo de CPU de forma just entre esos
+grupos.
+
+CONFIG_RT_GROUP_SCHED permite agrupar tareas de tiempo real (i.e.,
+SCHED_FIFO y SCHED_RR).
+
+CONFIG_FAIR_GROUP_SCHED permite agrupar tareas de CFS (i.e., SCHED_NORMAL y
+SCHED_BATCH).
+
+Estas opciones necesitan CONFIG_CGROUPS para ser definidas, y permitir
+al administrador crear grupos arbitrarios de tareas, usando el pseudo
+sistema de archivos "cgroup". Vease la documentación para más información
+sobre este sistema de archivos: Documentation/admin-guide/cgroup-v1/cgroups.rst
+
+Cuando CONFIG_FAIR_GROUP_SCHED es definido, un archivo
+"cpu.shares" es creado por cada grupo creado usado en el pseudo
+sistema de archivos. Véanse por ejemplo los pasos a continuación
+para crear grupos de tareas y modificar cuanto comparten de la CPU
+usando el pseudo sistema de archivos "cgroup" ::
+
+	# mount -t tmpfs cgroup_root /sys/fs/cgroup
+	# mkdir /sys/fs/cgroup/cpu
+	# mount -t cgroup -ocpu none /sys/fs/cgroup/cpu
+	# cd /sys/fs/cgroup/cpu
+
+	# mkdir multimedia	# crear un grupo de tareas "multimedia"
+	# mkdir browser 	# crear un grupo de tareas "browser"
+
+	# #Configurar el grupo multimedia para tener el doble de tiempo de CPU
+	# #que el grupo browser
+
+	# echo 2048 > multimedia/cpu.shares
+	# echo 1024 > browser/cpu.shares
+
+	# firefox &	# Lanzar firefox y moverlo al grupo "browser"
+	# echo <firefox_pid> > browser/tasks
+
+	# #Lanzar gmplayer (o su programa favorito de reproducción de películas)
+	# echo <movie_player_pid> > multimedia/tasks
-- 
2.39.2

.

Date: Sat, 6 Jul 2024 15:33:30 +0200
From: Stanislav Jakubek <stano.jakubek@gmail.com>
To: Ulf Hansson <ulf.hansson@linaro.org>, Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	Orson Zhai <orsonzhai@gmail.com>,
	Baolin Wang <baolin.wang@linux.alibaba.com>,
	Baolin Wang <baolin.wang7@gmail.com>,
	Chunyan Zhang <zhang.lyra@gmail.com>
Cc: linux-mmc@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH] dt-bindings: mmc: sdhci-sprd: convert to YAML
Message-ID: <ZolHqsBnQxSo6SbT@standask-GA-A55M-S2HP>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269838
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-mmc
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Covert the Spreadtrum SDHCI controller bindings to DT schema.
Rename the file to match compatible.

Signed-off-by: Stanislav Jakubek <stano.jakubek@gmail.com>
---
Node name adjustments in DTS are being handled as part of:
https://lore.kernel.org/lkml/cover.1720112081.git.stano.jakubek@gmail.com/

 .../devicetree/bindings/mmc/sdhci-sprd.txt    |  67 ----------
 .../bindings/mmc/sprd,sdhci-r11.yaml          | 120 ++++++++++++++++++
 2 files changed, 120 insertions(+), 67 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/mmc/sdhci-sprd.txt
 create mode 100644 Documentation/devicetree/bindings/mmc/sprd,sdhci-r11.yaml

diff --git a/Documentation/devicetree/bindings/mmc/sdhci-sprd.txt b/Documentation/devicetree/bindings/mmc/sdhci-sprd.txt
deleted file mode 100644
index eb7eb1b529f0..000000000000
--- a/Documentation/devicetree/bindings/mmc/sdhci-sprd.txt
+++ /dev/null
@@ -1,67 +0,0 @@
-* Spreadtrum SDHCI controller (sdhci-sprd)
-
-The Secure Digital (SD) Host controller on Spreadtrum SoCs provides an interface
-for MMC, SD and SDIO types of cards.
-
-This file documents differences between the core properties in mmc.txt
-and the properties used by the sdhci-sprd driver.
-
-Required properties:
-- compatible: Should contain "sprd,sdhci-r11".
-- reg: physical base address of the controller and length.
-- interrupts: Interrupts used by the SDHCI controller.
-- clocks: Should contain phandle for the clock feeding the SDHCI controller
-- clock-names: Should contain the following:
-	"sdio" - SDIO source clock (required)
-	"enable" - gate clock which used for enabling/disabling the device (required)
-	"2x_enable" - gate clock controlling the device for some special platforms (optional)
-
-Optional properties:
-- assigned-clocks: the same with "sdio" clock
-- assigned-clock-parents: the default parent of "sdio" clock
-- pinctrl-names: should be "default", "state_uhs"
-- pinctrl-0: should contain default/high speed pin control
-- pinctrl-1: should contain uhs mode pin control
-
-PHY DLL delays are used to delay the data valid window, and align the window
-to sampling clock. PHY DLL delays can be configured by following properties,
-and each property contains 4 cells which are used to configure the clock data
-write line delay value, clock read command line delay value, clock read data
-positive edge delay value and clock read data negative edge delay value.
-Each cell's delay value unit is cycle of the PHY clock.
-
-- sprd,phy-delay-legacy: Delay value for legacy timing.
-- sprd,phy-delay-sd-highspeed: Delay value for SD high-speed timing.
-- sprd,phy-delay-sd-uhs-sdr50: Delay value for SD UHS SDR50 timing.
-- sprd,phy-delay-sd-uhs-sdr104: Delay value for SD UHS SDR50 timing.
-- sprd,phy-delay-mmc-highspeed: Delay value for MMC high-speed timing.
-- sprd,phy-delay-mmc-ddr52: Delay value for MMC DDR52 timing.
-- sprd,phy-delay-mmc-hs200: Delay value for MMC HS200 timing.
-- sprd,phy-delay-mmc-hs400: Delay value for MMC HS400 timing.
-- sprd,phy-delay-mmc-hs400es: Delay value for MMC HS400 enhanced strobe timing.
-
-Examples:
-
-sdio0: sdio@20600000 {
-	compatible  = "sprd,sdhci-r11";
-	reg = <0 0x20600000 0 0x1000>;
-	interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
-
-	clock-names = "sdio", "enable";
-	clocks = <&ap_clk CLK_EMMC_2X>,
-		 <&apahb_gate CLK_EMMC_EB>;
-	assigned-clocks = <&ap_clk CLK_EMMC_2X>;
-	assigned-clock-parents = <&rpll CLK_RPLL_390M>;
-
-	pinctrl-names = "default", "state_uhs";
-	pinctrl-0 = <&sd0_pins_default>;
-	pinctrl-1 = <&sd0_pins_uhs>;
-
-	sprd,phy-delay-sd-uhs-sdr104 = <0x3f 0x7f 0x2e 0x2e>;
-	bus-width = <8>;
-	non-removable;
-	no-sdio;
-	no-sd;
-	cap-mmc-hw-reset;
-	status = "okay";
-};
diff --git a/Documentation/devicetree/bindings/mmc/sprd,sdhci-r11.yaml b/Documentation/devicetree/bindings/mmc/sprd,sdhci-r11.yaml
new file mode 100644
index 000000000000..3cf4a41e4ed8
--- /dev/null
+++ b/Documentation/devicetree/bindings/mmc/sprd,sdhci-r11.yaml
@@ -0,0 +1,120 @@
+# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mmc/sprd,sdhci-r11.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Spreadtrum SDHCI controller
+
+maintainers:
+  - Orson Zhai <orsonzhai@gmail.com>
+  - Baolin Wang <baolin.wang7@gmail.com>
+  - Chunyan Zhang <zhang.lyra@gmail.com>
+
+properties:
+  compatible:
+    const: sprd,sdhci-r11
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    minItems: 2
+    items:
+      - description: SDIO source clock
+      - description: gate clock for enabling/disabling the device
+      - description: gate clock controlling the device for some special platforms (optional)
+
+  clock-names:
+    minItems: 2
+    items:
+      - const: sdio
+      - const: enable
+      - const: 2x_enable
+
+  assigned-clocks:
+    maxItems: 1
+
+  assigned-clock-parents:
+    maxItems: 1
+
+  pinctrl-0:
+    description: default/high speed pin control
+    maxItems: 1
+
+  pinctrl-1:
+    description: UHS mode pin control
+    maxItems: 1
+
+  pinctrl-names:
+    minItems: 1
+    items:
+      - const: default
+      - const: state_uhs
+
+patternProperties:
+  "^sprd,phy-delay-(legacy|mmc-(ddr52|highspeed|hs[24]00|hs400es)|sd-(highspeed|uhs-sdr(50|104)))$":
+    $ref: /schemas/types.yaml#/definitions/uint32-array
+    items:
+      - description: clock data write line delay value
+      - description: clock read command line delay value
+      - description: clock read data positive edge delay value
+      - description: clock read data negative edge delay value
+    description:
+      PHY DLL delays are used to delay the data valid window, and align
+      the window to the sampling clock. Each cell's delay value unit is
+      cycle of the PHY clock.
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+  - clock-names
+
+allOf:
+  - $ref: sdhci-common.yaml#
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/sprd,sc9860-clk.h>
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    mmc@50430000 {
+      compatible = "sprd,sdhci-r11";
+      reg = <0x50430000 0x1000>;
+      interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
+
+      clocks = <&aon_prediv CLK_EMMC_2X>,
+               <&apahb_gate CLK_EMMC_EB>,
+               <&aon_gate CLK_EMMC_2X_EN>;
+      clock-names = "sdio", "enable", "2x_enable";
+      assigned-clocks = <&aon_prediv CLK_EMMC_2X>;
+      assigned-clock-parents = <&clk_l0_409m6>;
+
+      pinctrl-0 = <&sd0_pins_default>;
+      pinctrl-1 = <&sd0_pins_uhs>;
+      pinctrl-names = "default", "state_uhs";
+
+      bus-width = <8>;
+      cap-mmc-hw-reset;
+      mmc-hs400-enhanced-strobe;
+      mmc-hs400-1_8v;
+      mmc-hs200-1_8v;
+      mmc-ddr-1_8v;
+      non-removable;
+      no-sdio;
+      no-sd;
+
+      sprd,phy-delay-mmc-ddr52 = <0x3f 0x75 0x14 0x14>;
+      sprd,phy-delay-mmc-hs200 = <0x0 0x8c 0x8c 0x8c>;
+      sprd,phy-delay-mmc-hs400 = <0x44 0x7f 0x2e 0x2e>;
+      sprd,phy-delay-mmc-hs400es = <0x3f 0x3f 0x2e 0x2e>;
+    };
+...
-- 
2.34.1

.

From: Aleksandr Mishin <amishin@t-argos.ru>
To: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
CC: Aleksandr Mishin <amishin@t-argos.ru>, Jesse Brandeburg
	<jesse.brandeburg@intel.com>, Tony Nguyen <anthony.l.nguyen@intel.com>,
	"David S. Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	<intel-wired-lan@lists.osuosl.org>, <netdev@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <lvc-project@linuxtesting.org>, Simon Horman
	<horms@kernel.org>
Subject: [PATCH net-next v2] ice: Adjust over allocation of memory in ice_sched_add_root_node() and ice_sched_add_node()
Date: Sat, 6 Jul 2024 17:05:18 +0300
Message-ID: <20240706140518.9214-1-amishin@t-argos.ru>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-KSMG-Rule-ID: 1
X-KSMG-Message-Action: clean
X-KSMG-AntiSpam-Lua-Profiles: 186347 [Jul 06 2024]
X-KSMG-AntiSpam-Version: 6.1.0.4
X-KSMG-AntiSpam-Envelope-From: amishin@t-argos.ru
X-KSMG-AntiSpam-Rate: 0
X-KSMG-AntiSpam-Status: not_detected
X-KSMG-AntiSpam-Method: none
X-KSMG-AntiSpam-Auth: dkim=none
X-KSMG-AntiSpam-Info: LuaCore: 21 0.3.21 ebee5449fc125b2da45f1a6a6bc2c5c0c3ad0e05, {Tracking_uf_ne_domains}, {Tracking_from_domain_doesnt_match_to}, mx1.t-argos.ru.ru:7.1.1;d41d8cd98f00b204e9800998ecf8427e.com:7.1.1;127.0.0.199:7.1.2;t-argos.ru:7.1.1;lore.kernel.org:7.1.1, FromAlignment: s
X-MS-Exchange-Organization-SCL: -1
X-KSMG-AntiSpam-Interceptor-Info: scan successful
X-KSMG-AntiPhishing: Clean, bases: 2024/07/06 13:56:00
X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 1.1.2.30, bases: 2024/07/06 10:24:00 #25877639
X-KSMG-AntiVirus-Status: Clean, skipped
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269857 org.kernel.vger.netdev:355788
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.netdev
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

In ice_sched_add_root_node() and ice_sched_add_node() there are calls to
devm_kcalloc() in order to allocate memory for array of pointers to
'ice_sched_node' structure. But in this calls there are 'sizeof(*root)'
instead of 'sizeof(root)' and 'sizeof(*node)' instead of 'sizeof(node)'.
So memory is allocated for structures instead pointers. This lead to
significant over allocation of memory.

Adjust over allocation of memory by correcting devm_kcalloc() parameters.

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Suggested-by: Simon Horman <horms@kernel.org>
Signed-off-by: Aleksandr Mishin <amishin@t-argos.ru>
---
v2:
  - Update comment, remove 'Fixes' tag and change the tree from 'net' to
    'net-next' as suggested by Simon
	(https://lore.kernel.org/all/20240706095258.GB1481495@kernel.org/)
v1: https://lore.kernel.org/all/20240705163620.12429-1-amishin@t-argos.ru/

 drivers/net/ethernet/intel/ice/ice_sched.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/intel/ice/ice_sched.c b/drivers/net/ethernet/intel/ice/ice_sched.c
index ecf8f5d60292..d8b6054f3436 100644
--- a/drivers/net/ethernet/intel/ice/ice_sched.c
+++ b/drivers/net/ethernet/intel/ice/ice_sched.c
@@ -28,9 +28,8 @@ ice_sched_add_root_node(struct ice_port_info *pi,
 	if (!root)
 		return -ENOMEM;
 
-	/* coverity[suspicious_sizeof] */
 	root->children = devm_kcalloc(ice_hw_to_dev(hw), hw->max_children[0],
-				      sizeof(*root), GFP_KERNEL);
+				      sizeof(root), GFP_KERNEL);
 	if (!root->children) {
 		devm_kfree(ice_hw_to_dev(hw), root);
 		return -ENOMEM;
@@ -186,10 +185,9 @@ ice_sched_add_node(struct ice_port_info *pi, u8 layer,
 	if (!node)
 		return -ENOMEM;
 	if (hw->max_children[layer]) {
-		/* coverity[suspicious_sizeof] */
 		node->children = devm_kcalloc(ice_hw_to_dev(hw),
 					      hw->max_children[layer],
-					      sizeof(*node), GFP_KERNEL);
+					      sizeof(node), GFP_KERNEL);
 		if (!node->children) {
 			devm_kfree(ice_hw_to_dev(hw), node);
 			return -ENOMEM;
-- 
2.30.2

.

From: Wolfram Sang <wsa+renesas@sang-engineering.com>
To: linux-kernel@vger.kernel.org
Cc: Lee Jones <lee@kernel.org>,
	linux-i2c@vger.kernel.org,
	Wolfram Sang <wsa+renesas@sang-engineering.com>
Subject: [PATCH] MAINTAINERS: delete entries for Thor Thayer
Date: Sat,  6 Jul 2024 16:23:11 +0200
Message-ID: <20240706142313.2028-2-wsa+renesas@sang-engineering.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269859
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-i2c
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

The email address bounced. I couldn't find a newer one in recent git
history. Delete the entries and let them fallback to subsystem defaults.

Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
---
 MAINTAINERS | 21 ---------------------
 1 file changed, 21 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index 3c4fdf74a3f9..68e3ef05facf 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -846,12 +846,6 @@ ALPS PS/2 TOUCHPAD DRIVER
 R:	Pali Rohár <pali@kernel.org>
 F:	drivers/input/mouse/alps.*
 
-ALTERA I2C CONTROLLER DRIVER
-M:	Thor Thayer <thor.thayer@linux.intel.com>
-S:	Maintained
-F:	Documentation/devicetree/bindings/i2c/i2c-altera.txt
-F:	drivers/i2c/busses/i2c-altera.c
-
 ALTERA MAILBOX DRIVER
 M:	Mun Yew Tham <mun.yew.tham@intel.com>
 S:	Maintained
@@ -871,21 +865,6 @@ L:	linux-gpio@vger.kernel.org
 S:	Maintained
 F:	drivers/gpio/gpio-altera.c
 
-ALTERA SYSTEM MANAGER DRIVER
-M:	Thor Thayer <thor.thayer@linux.intel.com>
-S:	Maintained
-F:	drivers/mfd/altera-sysmgr.c
-F:	include/linux/mfd/altera-sysmgr.h
-
-ALTERA SYSTEM RESOURCE DRIVER FOR ARRIA10 DEVKIT
-M:	Thor Thayer <thor.thayer@linux.intel.com>
-S:	Maintained
-F:	drivers/gpio/gpio-altera-a10sr.c
-F:	drivers/mfd/altera-a10sr.c
-F:	drivers/reset/reset-a10sr.c
-F:	include/dt-bindings/reset/altr,rst-mgr-a10sr.h
-F:	include/linux/mfd/altera-a10sr.h
-
 ALTERA TRIPLE SPEED ETHERNET DRIVER
 M:	Joyce Ooi <joyce.ooi@intel.com>
 L:	netdev@vger.kernel.org
-- 
2.43.0

.

From: =?UTF-8?q?Mateusz=20Jo=C5=84czyk?= <mat.jonczyk@o2.pl>
To: linux-raid@vger.kernel.org,
	linux-kernel@vger.kernel.org
Cc: regressions@lists.linux.dev,
	Song Liu <song@kernel.org>,
	Yu Kuai <yukuai3@huawei.com>,
	Paul Luse <paul.e.luse@linux.intel.com>,
	Xiao Ni <xni@redhat.com>,
	=?UTF-8?Q?Mateusz_Jo=C5=84czyk?= <mat.jonczyk@o2.pl>
Subject: [REGRESSION] Cannot start degraded RAID1 array with device with write-mostly flag
Date: Sat,  6 Jul 2024 16:30:38 +0200
Message-Id: <20240706143038.7253-1-mat.jonczyk@o2.pl>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-WP-DKIM-Status: good (id: o2.pl)                                                      
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269863
Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.regressions,org.kernel.vger.linux-raid
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Hello,=0D
=0D
Linux 6.9+ cannot start a degraded RAID1 array when the only remaining=0D
device has the write-mostly flag set. Linux 6.8.0 works fine, as does=0D
6.1.96.=0D
=0D
#regzbot introduced: v6.8.0..v6.9.0=0D
=0D
In my laptop, I used to have two RAID1 arrays on top of NVMe and SATA=0D
SSD drives: /dev/md0 for /boot, /dev/md1 for remaining data. For=0D
performance, I have marked the RAID component devices on the SATA SSD=0D
drive write-mostly, which "means that the 'md' driver will avoid reading=0D
from these devices if at all possible".=0D
=0D
Recently, the NVMe drive started failing, so I removed it from the arrays:=
=0D
=0D
=C2=A0=C2=A0 =C2=A0$ cat /proc/mdstat=0D
=C2=A0=C2=A0 =C2=A0Personalities : [raid1]=0D
=C2=A0=C2=A0 =C2=A0md1 : active raid1 sdb5[1](W)=0D
=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 471727104 blocks super 1.=
2 [2/1] [_U]=0D
=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 bitmap: 4/4 pages [16KB],=
 65536KB chunk=0D
=0D
=C2=A0=C2=A0 =C2=A0md0 : active raid1 sdb4[1](W)=0D
=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 2094080 blocks super 1.2 =
[2/1] [_U]=0D
=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=0D
=C2=A0=C2=A0 =C2=A0unused devices: <none>=0D
=0D
and wiped it. Since then, Linux 6.9+ fails to assemble the arrays on startu=
p=0D
with the following stacktraces in dmesg:=0D
=0D
=C2=A0=C2=A0 =C2=A0md/raid1:md0: active with 1 out of 2 mirrors=0D
=C2=A0=C2=A0 =C2=A0md0: detected capacity change from 0 to 4188160=0D
=C2=A0=C2=A0 =C2=A0------------[ cut here ]------------=0D
=C2=A0=C2=A0 =C2=A0kernel BUG at block/bio.c:1659!=0D
=C2=A0=C2=A0 =C2=A0Oops: invalid opcode: 0000 [#1] PREEMPT SMP PTI=0D
=C2=A0=C2=A0 =C2=A0CPU: 0 PID: 174 Comm: mdadm Not tainted 6.10.0-rc6unif33=
 #493=0D
=C2=A0=C2=A0 =C2=A0Hardware name: HP HP Laptop 17-by0xxx/84CA, BIOS F.72 05=
/31/2024=0D
=C2=A0=C2=A0 =C2=A0RIP: 0010:bio_split+0x96/0xb0=0D
=C2=A0=C2=A0 =C2=A0Code: df ff ff 41 f6 45 14 80 74 08 66 41 81 4c 24 14 80=
 00 5b 4c 89 e0 41 5c 41 5d 5d c3 cc cc cc cc 41 c7 45 28 00 00 00 00 eb d9=
 <0f> 0b 0f 0b 0f 0b 45 31 e4 eb dd 66 66 2e 0f 1f 84 00 00 00 00 00=0D
=C2=A0=C2=A0 =C2=A0RSP: 0018:ffffa7588041b330 EFLAGS: 00010246=0D
=C2=A0=C2=A0 =C2=A0RAX: 0000000000000008 RBX: 0000000000000001 RCX: ffff9f2=
2cb08f938=0D
=C2=A0=C2=A0 =C2=A0RDX: 0000000000000c00 RSI: 0000000000000000 RDI: ffff9f2=
2c1199400=0D
=C2=A0=C2=A0 =C2=A0RBP: ffffa7588041b420 R08: ffff9f22c3587b30 R09: 0000000=
000000001=0D
=C2=A0=C2=A0 =C2=A0R10: 0000000000000000 R11: 0000000000000008 R12: ffff9f2=
2cc9da700=0D
=C2=A0=C2=A0 =C2=A0R13: ffff9f22cb08f800 R14: ffff9f22c6a35fa0 R15: ffff9f2=
2c1846800=0D
=C2=A0=C2=A0 =C2=A0FS:=C2=A0 00007f5f88404740(0000) GS:ffff9f2621e00000(000=
0) knlGS:0000000000000000=0D
=C2=A0=C2=A0 =C2=A0CS:=C2=A0 0010 DS: 0000 ES: 0000 CR0: 0000000080050033=0D
=C2=A0=C2=A0 =C2=A0CR2: 000056299cb95000 CR3: 000000010c82a002 CR4: 0000000=
0003706f0=0D
=C2=A0=C2=A0 =C2=A0Call Trace:=0D
=C2=A0=C2=A0 =C2=A0 <TASK>=0D
=C2=A0=C2=A0 =C2=A0 ? show_regs+0x67/0x70=0D
=C2=A0=C2=A0 =C2=A0 ? __die_body+0x20/0x70=0D
=C2=A0=C2=A0 =C2=A0 ? die+0x3e/0x60=0D
=C2=A0=C2=A0 =C2=A0 ? do_trap+0xd6/0xf0=0D
=C2=A0=C2=A0 =C2=A0 ? do_error_trap+0x71/0x90=0D
=C2=A0=C2=A0 =C2=A0 ? bio_split+0x96/0xb0=0D
=C2=A0=C2=A0 =C2=A0 ? exc_invalid_op+0x53/0x70=0D
=C2=A0=C2=A0 =C2=A0 ? bio_split+0x96/0xb0=0D
=C2=A0=C2=A0 =C2=A0 ? asm_exc_invalid_op+0x1b/0x20=0D
=C2=A0=C2=A0 =C2=A0 ? bio_split+0x96/0xb0=0D
=C2=A0=C2=A0 =C2=A0 ? raid1_read_request+0x890/0xd20=0D
=C2=A0=C2=A0 =C2=A0 ? __call_rcu_common.constprop.0+0x97/0x260=0D
=C2=A0=C2=A0 =C2=A0 raid1_make_request+0x81/0xce0=0D
=C2=A0=C2=A0 =C2=A0 ? __get_random_u32_below+0x17/0x70=C2=A0=C2=A0=C2=A0 //=
 is not present in other stacktraces=0D
=C2=A0=C2=A0 =C2=A0 ? new_slab+0x2b3/0x580=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 =C2=A0=C2=A0=C2=A0 // is not present in other stacktraces=0D
=C2=A0=C2=A0 =C2=A0 md_handle_request+0x77/0x210=0D
=C2=A0=C2=A0 =C2=A0 md_submit_bio+0x62/0xa0=0D
=C2=A0=C2=A0 =C2=A0 __submit_bio+0x17b/0x230=0D
=C2=A0=C2=A0 =C2=A0 submit_bio_noacct_nocheck+0x18e/0x3c0=0D
=C2=A0=C2=A0 =C2=A0 submit_bio_noacct+0x244/0x670=0D
=C2=A0=C2=A0 =C2=A0 submit_bio+0xac/0xe0=0D
=C2=A0=C2=A0 =C2=A0 submit_bh_wbc+0x168/0x190=0D
=C2=A0=C2=A0 =C2=A0 block_read_full_folio+0x203/0x420=0D
=C2=A0=C2=A0 =C2=A0 ? __mod_memcg_lruvec_state+0xcd/0x210=0D
=C2=A0=C2=A0 =C2=A0 ? __pfx_blkdev_get_block+0x10/0x10=0D
=C2=A0=C2=A0 =C2=A0 ? __lruvec_stat_mod_folio+0x63/0xb0=0D
=C2=A0=C2=A0 =C2=A0 ? __filemap_add_folio+0x24d/0x450=0D
=C2=A0=C2=A0 =C2=A0 ? __pfx_blkdev_read_folio+0x10/0x10=0D
=C2=A0=C2=A0 =C2=A0 blkdev_read_folio+0x18/0x20=0D
=C2=A0=C2=A0 =C2=A0 filemap_read_folio+0x45/0x290=0D
=C2=A0=C2=A0 =C2=A0 ? __pfx_workingset_update_node+0x10/0x10=0D
=C2=A0=C2=A0 =C2=A0 ? folio_add_lru+0x5a/0x80=0D
=C2=A0=C2=A0 =C2=A0 ? filemap_add_folio+0xba/0xe0=0D
=C2=A0=C2=A0 =C2=A0 ? __pfx_blkdev_read_folio+0x10/0x10=0D
=C2=A0=C2=A0 =C2=A0 do_read_cache_folio+0x10a/0x3c0=0D
=C2=A0=C2=A0 =C2=A0 read_cache_folio+0x12/0x20=0D
=C2=A0=C2=A0 =C2=A0 read_part_sector+0x36/0xc0=0D
=C2=A0=C2=A0 =C2=A0 read_lba+0x96/0x1b0=0D
=C2=A0=C2=A0 =C2=A0 find_valid_gpt+0xe8/0x770=0D
=C2=A0=C2=A0 =C2=A0 ? get_page_from_freelist+0x615/0x12e0=0D
=C2=A0=C2=A0 =C2=A0 ? __pfx_efi_partition+0x10/0x10=0D
=C2=A0=C2=A0 =C2=A0 efi_partition+0x80/0x4e0=0D
=C2=A0=C2=A0 =C2=A0 ? vsnprintf+0x297/0x4f0=0D
=C2=A0=C2=A0 =C2=A0 ? snprintf+0x49/0x70=0D
=C2=A0=C2=A0 =C2=A0 ? __pfx_efi_partition+0x10/0x10=0D
=C2=A0=C2=A0 =C2=A0 bdev_disk_changed+0x270/0x760=0D
=C2=A0=C2=A0 =C2=A0 blkdev_get_whole+0x8b/0xb0=0D
=C2=A0=C2=A0 =C2=A0 bdev_open+0x2bd/0x390=0D
=C2=A0=C2=A0 =C2=A0 ? __pfx_blkdev_open+0x10/0x10=0D
=C2=A0=C2=A0 =C2=A0 blkdev_open+0x8f/0xc0=0D
=C2=A0=C2=A0 =C2=A0 do_dentry_open+0x174/0x570=0D
=C2=A0=C2=A0 =C2=A0 vfs_open+0x2b/0x40=0D
=C2=A0=C2=A0 =C2=A0 path_openat+0xb20/0x1150=0D
=C2=A0=C2=A0 =C2=A0 do_filp_open+0xa8/0x120=0D
=C2=A0=C2=A0 =C2=A0 ? alloc_fd+0xc2/0x180=0D
=C2=A0=C2=A0 =C2=A0 do_sys_openat2+0x250/0x2a0=0D
=C2=A0=C2=A0 =C2=A0 do_sys_open+0x46/0x80=0D
=C2=A0=C2=A0 =C2=A0 __x64_sys_openat+0x20/0x30=0D
=C2=A0=C2=A0 =C2=A0 x64_sys_call+0xe55/0x20d0=0D
=C2=A0=C2=A0 =C2=A0 do_syscall_64+0x47/0x110=0D
=C2=A0=C2=A0 =C2=A0 entry_SYSCALL_64_after_hwframe+0x76/0x7e=0D
=C2=A0=C2=A0 =C2=A0RIP: 0033:0x7f5f88514f5b=0D
=C2=A0=C2=A0 =C2=A0Code: 25 00 00 41 00 3d 00 00 41 00 74 4b 64 8b 04 25 18=
 00 00 00 85 c0 75 67 44 89 e2 48 89 ee bf 9c ff ff ff b8 01 01 00 00 0f 05=
 <48> 3d 00 f0 ff ff 0f 87 91 00 00 00 48 8b 4c 24 28 64 48 33 0c 25=0D
=C2=A0=C2=A0 =C2=A0RSP: 002b:00007ffd8839cbe0 EFLAGS: 00000246 ORIG_RAX: 00=
00000000000101=0D
=C2=A0=C2=A0 =C2=A0RAX: ffffffffffffffda RBX: 00007ffd8839dbe0 RCX: 00007f5=
f88514f5b=0D
=C2=A0=C2=A0 =C2=A0RDX: 0000000000004000 RSI: 00007ffd8839cc70 RDI: 0000000=
0ffffff9c=0D
=C2=A0=C2=A0 =C2=A0RBP: 00007ffd8839cc70 R08: 0000000000000000 R09: 00007ff=
d8839cae0=0D
=C2=A0=C2=A0 =C2=A0R10: 0000000000000000 R11: 0000000000000246 R12: 0000000=
000004000=0D
=C2=A0=C2=A0 =C2=A0R13: 0000000000004000 R14: 00007ffd8839cc68 R15: 0000559=
42d9dabe0=0D
=C2=A0=C2=A0 =C2=A0 </TASK>=0D
=C2=A0=C2=A0 =C2=A0Modules linked in: crct10dif_pclmul crc32_pclmul ghash_c=
lmulni_intel sha512_ssse3 sha256_ssse3 sha1_ssse3 drm_buddy r8169 i2c_algo_=
bit psmouse i2c_i801 drm_display_helper i2c_mux video i2c_smbus=0D
xhci_pci realtek cec xhci_pci_renesas i2c_hid_acpi i2c_hid hid wmi aesni_in=
tel crypto_simd cryptd=0D
=C2=A0=C2=A0 =C2=A0---[ end trace 0000000000000000 ]---=0D
=0D
which were logged twice (for two arrays).=0D
=0D
The line=0D
=C2=A0=C2=A0 =C2=A0kernel BUG at block/bio.c:1659!=0D
corresponds to=0D
=C2=A0=C2=A0 =C2=A0BUG_ON(sectors <=3D 0);=0D
in bio_split().=0D
=0D
After some investigation, I have determined that the bug is most likely in=
=0D
choose_slow_rdev() in drivers/md/raid1.c, which doesn't set max_sectors=0D
before returning early. A test patch (below) seems to fix this issue (Linux=
=0D
boots and appears to be working correctly with it, but I didn't do any more=
=0D
advanced experiments yet).=0D
=0D
This points to=0D
commit dfa8ecd167c1 ("md/raid1: factor out choose_slow_rdev() from read_bal=
ance()")=0D
as the most likely culprit. However, I was running into other bugs in mdadm=
 when=0D
trying to test this commit directly.=0D
=0D
Distribution: Ubuntu 20.04, hardware: a HP 17-by0001nw laptop.=0D
=0D
Greetings,=0D
=0D
Mateusz=0D
=0D
---------------------------------------------------=0D
=0D
>From e19348bc62eea385459ca1df67bd7c7c2afd7538 Mon Sep 17 00:00:00 2001=0D
From: =3D?UTF-8?q?Mateusz=3D20Jo=3DC5=3D84czyk?=3D <mat.jonczyk@o2.pl>=0D
Date: Sat, 6 Jul 2024 11:21:03 +0200=0D
Subject: [RFC PATCH] md/raid1: fill in max_sectors=0D
=0D
Not yet fully tested or carefully investigated.=0D
=0D
Signed-off-by: Mateusz Jo=C5=84czyk <mat.jonczyk@o2.pl>=0D
=0D
---=0D
 drivers/md/raid1.c | 1 +=0D
 1 file changed, 1 insertion(+)=0D
=0D
diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c=0D
index 7b8a71ca66dd..82f70a4ce6ed 100644=0D
--- a/drivers/md/raid1.c=0D
+++ b/drivers/md/raid1.c=0D
@@ -680,6 +680,7 @@ static int choose_slow_rdev(struct r1conf *conf, struct=
 r1bio *r1_bio,=0D
 		len =3D r1_bio->sectors;=0D
 		read_len =3D raid1_check_read_range(rdev, this_sector, &len);=0D
 		if (read_len =3D=3D r1_bio->sectors) {=0D
+			*max_sectors =3D read_len;=0D
 			update_read_sectors(conf, disk, this_sector, read_len);=0D
 			return disk;=0D
 		}=0D
-- =0D
2.25.1=0D
=0D
.

From: Wolfram Sang <wsa+renesas@sang-engineering.com>
To: linux-i2c@vger.kernel.org
Cc: Viresh Kumar <viresh.kumar@linaro.org>,
	Wolfram Sang <wsa+renesas@sang-engineering.com>,
	linux-kernel@vger.kernel.org
Subject: [PATCH] MAINTAINERS: delete entry for Conghui Chen
Date: Sat,  6 Jul 2024 16:41:50 +0200
Message-ID: <20240706144150.2668-2-wsa+renesas@sang-engineering.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269864
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-i2c
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

The email address bounced. I couldn't find a newer one in recent git
history, so delete this email entry.

Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
---
 MAINTAINERS | 1 -
 1 file changed, 1 deletion(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index 68e3ef05facf..55bf8ba02386 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -23842,7 +23842,6 @@ S:	Maintained
 F:	drivers/vhost/scsi.c
 
 VIRTIO I2C DRIVER
-M:	Conghui Chen <conghui.chen@intel.com>
 M:	Viresh Kumar <viresh.kumar@linaro.org>
 L:	linux-i2c@vger.kernel.org
 L:	virtualization@lists.linux.dev
-- 
2.43.0

.

From: Masahiro Yamada <masahiroy@kernel.org>
To: Olivia Mackall <olivia@selenic.com>,
	Herbert Xu <herbert@gondor.apana.org.au>,
	linux-crypto@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	Masahiro Yamada <masahiroy@kernel.org>
Subject: [PATCH] hwrng: core - remove (un)register_miscdev()
Date: Sat,  6 Jul 2024 23:41:24 +0900
Message-ID: <20240706144205.2301865-1-masahiroy@kernel.org>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269865
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-crypto
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

These functions are redundant after commit 0daa7a0afd0f ("hwrng: Avoid
manual device_create_file() calls").

Let's call misc_(de)register() directly.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---

 drivers/char/hw_random/core.c | 14 ++------------
 1 file changed, 2 insertions(+), 12 deletions(-)

diff --git a/drivers/char/hw_random/core.c b/drivers/char/hw_random/core.c
index 4084df65c9fa..29a663db6909 100644
--- a/drivers/char/hw_random/core.c
+++ b/drivers/char/hw_random/core.c
@@ -470,16 +470,6 @@ static struct attribute *rng_dev_attrs[] = {
 
 ATTRIBUTE_GROUPS(rng_dev);
 
-static void __exit unregister_miscdev(void)
-{
-	misc_deregister(&rng_miscdev);
-}
-
-static int __init register_miscdev(void)
-{
-	return misc_register(&rng_miscdev);
-}
-
 static int hwrng_fillfn(void *unused)
 {
 	size_t entropy, entropy_credit = 0; /* in 1/1024 of a bit */
@@ -668,7 +658,7 @@ static int __init hwrng_modinit(void)
 		return -ENOMEM;
 	}
 
-	ret = register_miscdev();
+	ret = misc_register(&rng_miscdev);
 	if (ret) {
 		kfree(rng_fillbuf);
 		kfree(rng_buffer);
@@ -685,7 +675,7 @@ static void __exit hwrng_modexit(void)
 	kfree(rng_fillbuf);
 	mutex_unlock(&rng_mutex);
 
-	unregister_miscdev();
+	misc_deregister(&rng_miscdev);
 }
 
 fs_initcall(hwrng_modinit); /* depends on misc_register() */
-- 
2.43.0

.

From: Javier Carrasco <javier.carrasco.cruz@gmail.com>
Subject: [PATCH 0/2] PCI: kirin: cleanup (dev_err_probe() and scoped loop)
Date: Sat, 06 Jul 2024 17:07:45 +0200
Message-Id: <20240706-pcie-kirin-dev_err_probe-v1-0-56df797fb8ee@gmail.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
To: Xiaowei Song <songxiaowei@hisilicon.com>, 
 Binghui Wang <wangbinghui@hisilicon.com>, 
 Lorenzo Pieralisi <lpieralisi@kernel.org>, 
 =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= <kw@linux.com>, 
 Rob Herring <robh@kernel.org>, 
 Jonathan Cameron <Jonathan.Cameron@Huawei.com>, 
 Bjorn Helgaas <bhelgaas@google.com>
Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, 
 Javier Carrasco <javier.carrasco.cruz@gmail.com>
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269869 org.kernel.vger.linux-pci:144959
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-pci
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

This series removes some patterns that require multiple steps to achieve
what single calls can achieve.

Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com>
---
Javier Carrasco (2):
      PCI: kirin: use dev_err_probe() in probe error paths
      PCI: kirin: use for_each_available_child_of_node_scoped()

 drivers/pci/controller/dwc/pcie-kirin.c | 49 ++++++++++++---------------------
 1 file changed, 18 insertions(+), 31 deletions(-)
---
base-commit: 412d6f897b7a494b373986e63a14a94d0fbd0fdb
change-id: 20240705-pcie-kirin-dev_err_probe-0c9035188ff9

Best regards,
-- 
Javier Carrasco <javier.carrasco.cruz@gmail.com>

.

From: Leo Yan <leo.yan@arm.com>
To: Arnaldo Carvalho de Melo <acme@kernel.org>,
	Ian Rogers <irogers@google.com>,
	Namhyung Kim <namhyung@kernel.org>,
	James Clark <james.clark@linaro.org>,
	John Garry <john.g.garry@oracle.com>,
	Will Deacon <will@kernel.org>,
	Adrian Hunter <adrian.hunter@intel.com>,
	Jiri Olsa <jolsa@kernel.org>,
	"Liang, Kan" <kan.liang@linux.intel.com>,
	Suzuki K Poulose <suzuki.poulose@arm.com>,
	Mike Leach <mike.leach@linaro.org>,
	Kajol Jain <kjain@linux.ibm.com>,
	coresight@lists.linaro.org,
	linux-arm-kernel@lists.infradead.org,
	linux-perf-users@vger.kernel.org,
	linux-kernel@vger.kernel.org
Cc: Leo Yan <leo.yan@arm.com>
Subject: [PATCH v2 0/2] perf mem: Support multiple Arm SPE PMUs
Date: Sat,  6 Jul 2024 16:20:33 +0100
Message-Id: <20240706152035.86983-1-leo.yan@arm.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269876
Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-perf-users
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

This patch series is to enable multiple Arm SPE PMUs.

The patch 01 is to enable multiple Arm SPE PMUs. The second patch is to
print out warning if not all CPUs support memory events, this can give
users a hint that the memory profiling is absent on some CPUs.

Changes from v1:
- Changed to use strstarts() (Ian Rogers)
- Changed to use 'arm_spe_' for searching Arm SPE events (Namhyung Kim)


Leo Yan (2):
  perf arm-spe: Support multiple Arm SPE PMUs
  perf mem: Warn if memory events are not supported on all CPUs

 tools/perf/arch/arm/util/pmu.c |  2 +-
 tools/perf/util/mem-events.c   | 14 ++++++++++++++
 2 files changed, 15 insertions(+), 1 deletion(-)

-- 
2.34.1

.

From: Masahiro Yamada <masahiroy@kernel.org>
To: linux-kbuild@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	Wei Yang <richard.weiyang@gmail.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Masahiro Yamada <masahiroy@kernel.org>
Subject: [PATCH 1/2] init: remove unused __MEMINIT* macros
Date: Sun,  7 Jul 2024 01:05:05 +0900
Message-ID: <20240706160511.2331061-1-masahiroy@kernel.org>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269886
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-kbuild
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

These macros are not used anywhere.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---

 include/linux/init.h | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/include/linux/init.h b/include/linux/init.h
index 58cef4c2e59a..b2e9dfff8691 100644
--- a/include/linux/init.h
+++ b/include/linux/init.h
@@ -99,10 +99,6 @@
 #define __INITRODATA	.section	".init.rodata","a",%progbits
 #define __FINITDATA	.previous
 
-#define __MEMINIT        .section	".meminit.text", "ax"
-#define __MEMINITDATA    .section	".meminit.data", "aw"
-#define __MEMINITRODATA  .section	".meminit.rodata", "a"
-
 /* silence warnings when references are OK */
 #define __REF            .section       ".ref.text", "ax"
 #define __REFDATA        .section       ".ref.data", "aw"
-- 
2.43.0

.

Date: Sat, 6 Jul 2024 18:11:52 +0200
From: Stanislav Jakubek <stano.jakubek@gmail.com>
To: Alexandre Belloni <alexandre.belloni@bootlin.com>,
	Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	Orson Zhai <orsonzhai@gmail.com>,
	Baolin Wang <baolin.wang@linux.alibaba.com>,
	Baolin Wang <baolin.wang7@gmail.com>,
	Chunyan Zhang <zhang.lyra@gmail.com>
Cc: linux-rtc@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH] dt-bindings: rtc: sprd,sc2731-rtc: convert to YAML
Message-ID: <ZolsyEC8eeJWNIb6@standask-GA-A55M-S2HP>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269889
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-rtc
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Convert the Spreadtrum SC2731 RTC bindings to DT schema.
Rename file to match compatible.

Signed-off-by: Stanislav Jakubek <stano.jakubek@gmail.com>
---
 .../bindings/rtc/sprd,sc2731-rtc.yaml         | 49 +++++++++++++++++++
 .../bindings/rtc/sprd,sc27xx-rtc.txt          | 26 ----------
 2 files changed, 49 insertions(+), 26 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/rtc/sprd,sc2731-rtc.yaml
 delete mode 100644 Documentation/devicetree/bindings/rtc/sprd,sc27xx-rtc.txt

diff --git a/Documentation/devicetree/bindings/rtc/sprd,sc2731-rtc.yaml b/Documentation/devicetree/bindings/rtc/sprd,sc2731-rtc.yaml
new file mode 100644
index 000000000000..f3d20e976965
--- /dev/null
+++ b/Documentation/devicetree/bindings/rtc/sprd,sc2731-rtc.yaml
@@ -0,0 +1,49 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/rtc/sprd,sc2731-rtc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Spreadtrum SC2731 Real Time Clock
+
+maintainers:
+  - Orson Zhai <orsonzhai@gmail.com>
+  - Baolin Wang <baolin.wang7@gmail.com>
+  - Chunyan Zhang <zhang.lyra@gmail.com>
+
+properties:
+  compatible:
+    const: sprd,sc2731-rtc
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - interrupts
+
+allOf:
+  - $ref: rtc.yaml#
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    pmic {
+      #address-cells = <1>;
+      #size-cells = <0>;
+
+      rtc@280 {
+        compatible = "sprd,sc2731-rtc";
+        reg = <0x280>;
+        interrupt-parent = <&sc2731_pmic>;
+        interrupts = <2 IRQ_TYPE_LEVEL_HIGH>;
+      };
+    };
+...
diff --git a/Documentation/devicetree/bindings/rtc/sprd,sc27xx-rtc.txt b/Documentation/devicetree/bindings/rtc/sprd,sc27xx-rtc.txt
deleted file mode 100644
index 1f5754299d31..000000000000
--- a/Documentation/devicetree/bindings/rtc/sprd,sc27xx-rtc.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-Spreadtrum SC27xx Real Time Clock
-
-Required properties:
-- compatible: should be "sprd,sc2731-rtc".
-- reg: address offset of rtc register.
-- interrupts: rtc alarm interrupt.
-
-Example:
-
-	sc2731_pmic: pmic@0 {
-		compatible = "sprd,sc2731";
-		reg = <0>;
-		spi-max-frequency = <26000000>;
-		interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
-		interrupt-controller;
-		#interrupt-cells = <2>;
-		#address-cells = <1>;
-		#size-cells = <0>;
-
-		rtc@280 {
-			compatible = "sprd,sc2731-rtc";
-			reg = <0x280>;
-			interrupt-parent = <&sc2731_pmic>;
-			interrupts = <2 IRQ_TYPE_LEVEL_HIGH>;
-		};
-	};
-- 
2.34.1

.

From: Leo Yan <leo.yan@arm.com>
To: Arnaldo Carvalho de Melo <acme@kernel.org>,
	Namhyung Kim <namhyung@kernel.org>,
	Ian Rogers <irogers@google.com>,
	Jiri Olsa <jolsa@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Adrian Hunter <adrian.hunter@intel.com>,
	"Liang, Kan" <kan.liang@linux.intel.com>,
	Nick Terrell <terrelln@fb.com>,
	Nathan Chancellor <nathan@kernel.org>,
	Nick Desaulniers <ndesaulniers@google.com>,
	Bill Wendling <morbo@google.com>,
	Justin Stitt <justinstitt@google.com>,
	Thomas Richter <tmricht@linux.ibm.com>,
	Changbin Du <changbin.du@huawei.com>,
	James Clark <james.clark@linaro.org>,
	amadio@gentoo.org,
	linux-kernel@vger.kernel.org,
	linux-perf-users@vger.kernel.org
Cc: Leo Yan <leo.yan@arm.com>
Subject: [PATCH v3 0/7] perf: build: Fix cross compilation
Date: Sat,  6 Jul 2024 19:29:05 +0100
Message-Id: <20240706182912.222780-1-leo.yan@arm.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269900
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-perf-users
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

This patch series fixes cross compilation issues.

The first patch sets the package path if the package configuration path
is not specified. This helps the compiler to find the architecture's
package in a Multiarch system.

The patch 02 sets the Python configuration path and renames the .so to

The patches 03, 04 and 05 fix the static build failures.

The patch 06 adds document for how to cross compile. The patch 07 is to
remove obsolete info for building perf with Android NDK.

This patch series is tested for building perf on x86_64 host for Arm64
target, with verified on Debian two distros (buster and bookworm).

Changes from v2:
- Reordered lib paths for PKG_CONFIG_LIBDIR. (Namhyung)
- Verified the Android NDK and based on the testing result to remove the
  file android.txt. (Ian)

Changes from v1:
- Kept the cross-compile-pkg-config if it is available. (Namhyung)
- Removed the patch 02 for fixing pkg-config path for libtraceevent, as
  this will be resolved in Guilherme Amadio's patch "perf build: Use
  pkg-config for feature check for libtrace{event,fs}".
- Added patch 06 for document.


Leo Yan (7):
  perf: build: Setup PKG_CONFIG_LIBDIR for cross compilation
  perf: build: Set Python configuration for cross compilation
  perf: build: Only link libebl.a for old libdw
  perf: build: Link lib 'lzma' for static build
  perf: build: Link lib 'zstd' for static build
  perf docs: Document cross compilation
  perf docs: Remove the Android cross building document

 tools/build/feature/Makefile         | 54 +++++++++++++++----
 tools/perf/Documentation/Build.txt   | 37 +++++++++++++
 tools/perf/Documentation/android.txt | 78 ----------------------------
 tools/perf/Makefile.config           | 20 ++++++-
 tools/perf/Makefile.perf             | 26 +++++++++-
 5 files changed, 125 insertions(+), 90 deletions(-)
 delete mode 100644 tools/perf/Documentation/android.txt

-- 
2.34.1

.

From: David Heidelberg <david@ixit.cz>
To: Bjorn Andersson <andersson@kernel.org>,
	Konrad Dybcio <konrad.dybcio@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>
Cc: David Heidelberg <david@ixit.cz>,
	linux-arm-msm@vger.kernel.org,
	devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH] ARM: dts: qcom: apq8960: correct memory base
Date: Sat,  6 Jul 2024 12:34:07 -0700
Message-ID: <20240706193415.218940-1-david@ixit.cz>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269910
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Bootloader will provide the information anyway to the kernel.

Ref: https://github.com/msm8916-mainline/lk2nd/blob/main/target/msm8960/rules.mk

Signed-off-by: David Heidelberg <david@ixit.cz>
---
 arch/arm/boot/dts/qcom/qcom-msm8960.dtsi | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git ./arch/arm/boot/dts/qcom/qcom-msm8960.dtsi ./arch/arm/boot/dts/qcom/qcom-msm8960.dtsi
index a9c6d2dbb460..ebc43c5c6e5f 100644
--- ./arch/arm/boot/dts/qcom/qcom-msm8960.dtsi
+++ ./arch/arm/boot/dts/qcom/qcom-msm8960.dtsi
@@ -47,9 +47,9 @@ L2: l2-cache {
 		};
 	};
 
-	memory {
+	memory@80000000 {
 		device_type = "memory";
-		reg = <0x0 0x0>;
+		reg = <0x80000000 0>;
 	};
 
 	cpu-pmu {
-- 
2.45.2

.

Date: Sat, 6 Jul 2024 16:55:49 -0300
From: Mark Watson <markus.c.watson@gmail.com>
To: robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org
Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH] dt-bindings: misc: axi-fifo: Add dt documentation for xilinx
 axi-fifo
Message-ID: <ZomhRSs3Y/EQKXNa@laptop>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269913
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-devicetree
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

This resolves a checkpatch warning in drivers/staging/axis-fifo
regarding a missing devie-tree binding. The full warning is included
below.

WARNING: DT compatible string "xlnx,axi-fifo-mm-s-4.1" appears
un-documented -- check ./Documentation/devicetree/bindings/
+       { .compatible = "xlnx,axi-fifo-mm-s-4.1", },

Signed-off-by: Mark Watson <markus.c.watson@gmail.com>
---
 .../bindings/misc/xlnx,axi-fifo-mm-s-4.1.yaml | 214 ++++++++++++++++++
 1 file changed, 214 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/misc/xlnx,axi-fifo-mm-s-4.1.yaml

diff --git a/Documentation/devicetree/bindings/misc/xlnx,axi-fifo-mm-s-4.1.yaml b/Documentation/devicetree/bindings/misc/xlnx,axi-fifo-mm-s-4.1.yaml
new file mode 100644
index 000000000000..cfb335752054
--- /dev/null
+++ b/Documentation/devicetree/bindings/misc/xlnx,axi-fifo-mm-s-4.1.yaml
@@ -0,0 +1,214 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/misc/xlnx,axi-fifo-mm-s-4.1.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Xilinx AXI-Stream FIFO v4.1 IP core
+
+description: |
+  The Xilinx AXI-Stream FIFO v4.1 IP core has read and write AXI-Stream FIFOs,
+  the contents of which can be accessed from the AXI4 memory-mapped interface.
+  This is useful for transferring data from a processor into the FPGA fabric.
+  The driver creates a character device that can be read/written to with
+  standard open/read/write/close operations.
+
+  See Xilinx PG080 document for IP details.
+
+  Currently supports only store-forward mode with a 32-bit AXI4-Lite
+  interface.
+
+  DOES NOT support:
+    - cut-through mode
+    - AXI4 (non-lite)
+
+properties:
+  compatible:
+    const: xlnx,axi-fifo-mm-s-4.1
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  interrupt-names:
+    items:
+      - const: interrupt
+
+  interrupt-parent:
+    $ref: /schemas/types.yaml#/definitions/phandle
+
+  xlnx,axi-str-rxd-protocol:
+    const: XIL_AXI_STREAM_ETH_DATA
+
+  xlnx,axi-str-rxd-tdata-width:
+    const: 0x20
+
+  xlnx,axi-str-txc-protocol:
+    const: XIL_AXI_STREAM_ETH_CTRL
+
+  xlnx,axi-str-txc-tdata-width:
+    const: 0x20
+
+  xlnx,axi-str-txd-protocol:
+    const: XIL_AXI_STREAM_ETH_DATA
+
+  xlnx,axi-str-txd-tdata-width:
+    const: 0x20
+
+  xlnx,axis-tdest-width:
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  xlnx,axis-tid-width:
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  xlnx,axis-tuser-width:
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  xlnx,data-interface-type:
+    const: 0x0
+
+  xlnx,has-axis-tdest:
+    const: 0x0
+
+  xlnx,has-axis-tid:
+    const: 0x0
+
+  xlnx,has-axis-tkeep:
+    const: 0x1
+
+  xlnx,has-axis-tstrb:
+    const: 0x0
+
+  xlnx,has-axis-tuser:
+    const: 0x0
+
+  xlnx,rx-fifo-depth:
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  xlnx,rx-fifo-pe-threshold:
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  xlnx,rx-fifo-pf-threshold:
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  xlnx,s-axi-id-width:
+    const: 0x4
+
+  xlnx,s-axi4-data-width:
+    const: 0x20
+
+  xlnx,select-xpm:
+    const: 0x0
+
+  xlnx,tx-fifo-depth:
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  xlnx,tx-fifo-pe-threshold:
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  xlnx,tx-fifo-pf-threshold:
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  xlnx,use-rx-cut-through:
+    const: 0x0
+
+  xlnx,use-rx-data:
+    const: 0x1
+
+  xlnx,use-tx-ctrl:
+    const: 0x0
+
+  xlnx,use-tx-cut-through:
+    const: 0x0
+
+  xlnx,use-tx-data:
+    const: 0x1
+
+  xlnx,tx-max-pkt-size:
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  xlnx,rx-min-pkt-size:
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - interrupt-names
+  - interrupt-parent
+  - xlnx,axi-str-rxd-protocol
+  - xlnx,axi-str-rxd-tdata-width
+  - xlnx,axi-str-txc-protocol
+  - xlnx,axi-str-txc-tdata-width
+  - xlnx,axi-str-txd-protocol
+  - xlnx,axi-str-txd-tdata-width
+  - xlnx,axis-tdest-width
+  - xlnx,axis-tid-width
+  - xlnx,axis-tuser-width
+  - xlnx,data-interface-type
+  - xlnx,has-axis-tdest
+  - xlnx,has-axis-tid
+  - xlnx,has-axis-tkeep
+  - xlnx,has-axis-tstrb
+  - xlnx,has-axis-tuser
+  - xlnx,rx-fifo-depth
+  - xlnx,rx-fifo-pe-threshold
+  - xlnx,rx-fifo-pf-threshold
+  - xlnx,s-axi-id-width
+  - xlnx,s-axi4-data-width
+  - xlnx,select-xpm
+  - xlnx,tx-fifo-depth
+  - xlnx,tx-fifo-pe-threshold
+  - xlnx,tx-fifo-pf-threshold
+  - xlnx,use-rx-cut-through
+  - xlnx,use-rx-data
+  - xlnx,use-tx-ctrl
+  - xlnx,use-tx-cut-through
+  - xlnx,use-tx-data
+  - xlnx,tx-max-pkt-size
+  - xlnx,rx-min-pkt-size
+
+additionalProperties: false
+
+examples:
+  - |
+    axi_fifo_mm_s_0: axi_fifo_mm_s@43c00000 {
+      compatible = "xlnx,axi-fifo-mm-s-4.1";
+      interrupt-names = "interrupt";
+      interrupt-parent = <&intc>;
+      interrupts = <0 29 4>;
+      reg = <0x43c00000 0x10000>;
+      xlnx,axi-str-rxd-protocol = "XIL_AXI_STREAM_ETH_DATA";
+      xlnx,axi-str-rxd-tdata-width = <0x20>;
+      xlnx,axi-str-txc-protocol = "XIL_AXI_STREAM_ETH_CTRL";
+      xlnx,axi-str-txc-tdata-width = <0x20>;
+      xlnx,axi-str-txd-protocol = "XIL_AXI_STREAM_ETH_DATA";
+      xlnx,axi-str-txd-tdata-width = <0x20>;
+      xlnx,axis-tdest-width = <0x4>;
+      xlnx,axis-tid-width = <0x4>;
+      xlnx,axis-tuser-width = <0x4>;
+      xlnx,data-interface-type = <0x0>;
+      xlnx,has-axis-tdest = <0x0>;
+      xlnx,has-axis-tid = <0x0>;
+      xlnx,has-axis-tkeep = <0x1>;
+      xlnx,has-axis-tstrb = <0x0>;
+      xlnx,has-axis-tuser = <0x0>;
+      xlnx,rx-fifo-depth = <0x200>;
+      xlnx,rx-fifo-pe-threshold = <0x2>;
+      xlnx,rx-fifo-pf-threshold = <0x1fb>;
+      xlnx,s-axi-id-width = <0x4>;
+      xlnx,s-axi4-data-width = <0x20>;
+      xlnx,select-xpm = <0x0>;
+      xlnx,tx-fifo-depth = <0x8000>;
+      xlnx,tx-fifo-pe-threshold = <0x200>;
+      xlnx,tx-fifo-pf-threshold = <0x7ffb>;
+      xlnx,use-rx-cut-through = <0x0>;
+      xlnx,use-rx-data = <0x0>;
+      xlnx,use-tx-ctrl = <0x0>;
+      xlnx,use-tx-cut-through = <0x0>;
+      xlnx,use-tx-data = <0x1>;
+      xlnx,tx-max-pkt-size = <257>;
+      xlnx,rx-min-pkt-size = <255>;
+    };
-- 
2.34.1

.

X-Mailing-List: linux-cifs@vger.kernel.org
List-Id: <linux-cifs.vger.kernel.org>
List-Subscribe: <mailto:linux-cifs+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-cifs+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
From: Steve French <smfrench@gmail.com>
Date: Sat, 6 Jul 2024 16:56:16 -0500
Message-ID: <CAH2r5msEqt_4VmncybOWBcADS96cPd19NjJnhtpkF7eMnAsSuQ@mail.gmail.com>
Subject: [GIT PULL] smb3 client fix
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: LKML <linux-kernel@vger.kernel.org>, CIFS <linux-cifs@vger.kernel.org>, 
	David Howells <dhowells@redhat.com>
Content-Type: text/plain; charset="UTF-8"
Xref: photonic.trudheim.com org.kernel.vger.linux-cifs:43234 org.kernel.vger.linux-kernel:1269916
Newsgroups: org.kernel.vger.linux-cifs,org.kernel.vger.linux-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Please pull the following changes since commit
22a40d14b572deb80c0648557f4bd502d7e83826:

  Linux 6.10-rc6 (2024-06-30 14:40:44 -0700)

are available in the Git repository at:

  git://git.samba.org/sfrench/cifs-2.6.git tags/6.10-rc6-smb3-client-fix

for you to fetch changes up to 08f70c0a930c00d25015fed7e3b7c5370d60be24:

  cifs: Fix read-performance regression by dropping readahead
expansion (2024-07-02 21:23:41 -0500)

----------------------------------------------------------------
fix for smb3 readahead performance regression

----------------------------------------------------------------
David Howells (1):
      cifs: Fix read-performance regression by dropping readahead expansion

 fs/smb/client/file.c | 30 ------------------------------
 1 file changed, 30 deletions(-)

-- 
Thanks,

Steve
.

