Received: by 2002:ab2:6857:0:b0:1ef:ffd0:ce49 with SMTP id l23csp861055lqp; Thu, 21 Mar 2024 19:25:17 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCXMth67axZWUXxthA68jgyiB88c0zTS5o+E4gS+FkQ1VT4e8t2bWGj93qa2D/XFyb9GZVhRJy8WPh/0ukt6duYDjaOsbSOeYqB3BRr98w== X-Google-Smtp-Source: AGHT+IFqUeVPEfA48uWrk2gtu1h1EbYMkHk5dLYjAv8Ut6TFszrnQcxTNtnuRAP4mU0cjumGTcyV X-Received: by 2002:a0d:e483:0:b0:608:4e7a:abc7 with SMTP id n125-20020a0de483000000b006084e7aabc7mr1093901ywe.29.1711074316995; Thu, 21 Mar 2024 19:25:16 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1711074316; cv=pass; d=google.com; s=arc-20160816; b=0ap01dNXZs9LMYPzf9kulGcyxA2r0T4O1UVpl44NiGbNfbijyO4n/XtU5utar2FRrG 35oClzlXN7zrfCUUQYmdesvvS1LyQl3cBhzdkvl4RJbfw2QBEPWLYuBzWET8Q1y4QCXk Jad28SP5B25FNLhSLRoa5sdZUVDEDciTJEsy/mtzcsr89ncaVYEiL7/3gqKC+6P7N6o0 4AHnqE5sUnY5b6o5bB0Ozn9fvGfgpBvaXXcXpBG+mAxTJ41E4/dPe4JL7cNJ7uCIsbMp nrBdKyUM4TLLlOPKY4H0ehjO/ZEruxyqQiBp7PeGc2rAGwNLjQkjZckDwRSYIAGVYZdk gmnA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:list-unsubscribe:list-subscribe:list-id:precedence :content-transfer-encoding:user-agent:references:in-reply-to:date:to :from:subject:message-id:dkim-signature; bh=FzjmzcX3IZamP4CbVzO1syijE7p9KmtONJRxLdHdOA0=; fh=fDnI+Z/kvqUnsnAqBR/gku+7QJiHdJM96UxKJ56/YkM=; b=sS04E0wH0VnHNi0RsF6oI9y+eWkHL/SS1NkoAB5wr99QRyZW8EPjrBZ8eT6V8zAI7a 6J6NfSgmA1MwWPHiHgG+m9TO8EbVIfj1l7wpaEBajieRjD7bptXBl/B5j0CBqMWbD+// IIiBhTarNPYjGx7/41SNDNaysZMAy0Kr1PVZOKnewKIHiuUKwTcZnv8BQgLp4XGhIb0d sl0Ub/Ti4Vk7SPHkYOeIFOoVLH3P0t4HRyC5SfEE8CXYE3DxHeKiwLFlFFe6E2SK/xsY pzO+n4AtBl6orhQAMShafu/abU9zrwBmY+hQsFtWWbpjJBZpS0zry4q9KaxyKd6Km48m QnQg==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@ibm.com header.s=pp1 header.b=dYgpVJjK; arc=pass (i=1 spf=pass spfdomain=linux.ibm.com dkim=pass dkdomain=ibm.com dmarc=pass fromdomain=linux.ibm.com); spf=pass (google.com: domain of linux-kernel+bounces-110882-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-110882-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=NONE dis=NONE) header.from=ibm.com Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id i10-20020a17090a974a00b0029e061c54e2si1046336pjw.25.2024.03.21.19.25.16 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Mar 2024 19:25:16 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-110882-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@ibm.com header.s=pp1 header.b=dYgpVJjK; arc=pass (i=1 spf=pass spfdomain=linux.ibm.com dkim=pass dkdomain=ibm.com dmarc=pass fromdomain=linux.ibm.com); spf=pass (google.com: domain of linux-kernel+bounces-110882-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-110882-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=NONE dis=NONE) header.from=ibm.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id 9D369285D31 for ; Fri, 22 Mar 2024 02:25:16 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id BCFAF6138; Fri, 22 Mar 2024 02:25:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="dYgpVJjK" Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 31D04138E; Fri, 22 Mar 2024 02:24:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.156.1 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711074302; cv=none; b=mP7/rT4xdP63zdCKjfRqFGuF0amJeH0UJLJtrF3ZXwSXgwPCEztg89HnouMZHR1uJe8tHKzWZ5mSpLCIR7GN9GM2V6LSvl62zedWtisVgD/THtFCA9b4LwpJ25HgX+cDtEPy/7aJyKAAeYRxrpJ39IM1oBvdnA3OzE7QrwzoiFs= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711074302; c=relaxed/simple; bh=FzjmzcX3IZamP4CbVzO1syijE7p9KmtONJRxLdHdOA0=; h=Message-ID:Subject:From:To:Date:In-Reply-To:References: Content-Type:MIME-Version; b=WneyoPKr0+7xsmdc94UU08HvcRoCdeXzdrKYfff8UzpaqZLTqO6dBiJzj9m27kIfRmO2vSNy+uPeKHS0OxpVnmCCRH/cTKMUhrxdPHOLf97uORYx7qnQdRexgAlhy0iUbMOiMDeA2ozUcALpUcIvxQi6de+hMHI1zrwL8aNBIYo= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=dYgpVJjK; arc=none smtp.client-ip=148.163.156.1 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Received: from pps.filterd (m0353726.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 42M1x1VN000486; Fri, 22 Mar 2024 02:24:29 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=message-id : subject : from : to : date : in-reply-to : references : content-type : content-transfer-encoding : mime-version; s=pp1; bh=FzjmzcX3IZamP4CbVzO1syijE7p9KmtONJRxLdHdOA0=; b=dYgpVJjKzxV5ZOJHUYsB4tGgsRCH5cN7wQ8MBH/9B2v8Lp2ZgC8d+kvJcnfTQbh71JJo Y23oaVMd4x6JB/b173Hdrs1Hdsw9574fkHhsrHuRWF024KrTNUs2SeF/XHVew40l9a6t sh9P7Ddsr2KllHq2fDvu82RZDAyZlLv5GZUoAch05UjK+P9nUpmd2v7Hvm3sJ+r14cax hBreuJNl0AwsqmMUd5Ip9T77zHgUARj7bp2PMr3PvWtnmdNeboQPLYkoX+piFZCqwLmD FnSJXld/RQFS0PM+pXEHh2ilzBOnULMgxhutHNPQoBmr94RMFDplvBQYHFNNkqwHrRz5 4Q== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3x10sbr1eq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 22 Mar 2024 02:24:28 +0000 Received: from m0353726.ppops.net (m0353726.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 42M2ORUW019713; Fri, 22 Mar 2024 02:24:28 GMT Received: from ppma11.dal12v.mail.ibm.com (db.9e.1632.ip4.static.sl-reverse.com [50.22.158.219]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3x10sbr1em-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 22 Mar 2024 02:24:27 +0000 Received: from pps.filterd (ppma11.dal12v.mail.ibm.com [127.0.0.1]) by ppma11.dal12v.mail.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 42M2Enn4015751; Fri, 22 Mar 2024 02:24:26 GMT Received: from smtprelay03.fra02v.mail.ibm.com ([9.218.2.224]) by ppma11.dal12v.mail.ibm.com (PPS) with ESMTPS id 3x0x15gx3f-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 22 Mar 2024 02:24:26 +0000 Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay03.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 42M2ONjK43450812 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 22 Mar 2024 02:24:25 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id E16052004B; Fri, 22 Mar 2024 02:24:22 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 662CA20049; Fri, 22 Mar 2024 02:24:21 +0000 (GMT) Received: from [9.171.7.191] (unknown [9.171.7.191]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Fri, 22 Mar 2024 02:24:21 +0000 (GMT) Message-ID: <7517d0cfa29ba53be11d25ba18bff781207294b1.camel@linux.ibm.com> Subject: Re: [PATCH bpf v4] bpf: verifier: prevent userspace memory access From: Ilya Leoshkevich To: Puranjay Mohan , "David S. Miller" , David Ahern , Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Eduard Zingerman , Song Liu , Yonghong Song , John Fastabend , KP Singh , Stanislav Fomichev , Hao Luo , Jiri Olsa , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H. Peter Anvin" , Jean-Philippe Brucker , netdev@vger.kernel.org, bpf@vger.kernel.org, linux-kernel@vger.kernel.org Date: Fri, 22 Mar 2024 03:24:21 +0100 In-Reply-To: <20240321124640.8870-1-puranjay12@gmail.com> References: <20240321124640.8870-1-puranjay12@gmail.com> Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.50.4 (3.50.4-1.fc39) X-TM-AS-GCONF: 00 X-Proofpoint-GUID: Uk4AaDQXi8FKTq0vXmHmvqQR1CCKeRPS X-Proofpoint-ORIG-GUID: LQnwVBYEJXfB6m6YkqsRpk6pQe-IdcD2 Content-Transfer-Encoding: base64 X-Proofpoint-UnRewURL: 0 URL was un-rewritten Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-03-21_14,2024-03-21_02,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 clxscore=1015 adultscore=0 phishscore=0 bulkscore=0 mlxlogscore=441 lowpriorityscore=0 spamscore=0 suspectscore=0 priorityscore=1501 mlxscore=0 impostorscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2403210000 definitions=main-2403220016 T24gVGh1LCAyMDI0LTAzLTIxIGF0IDEyOjQ2ICswMDAwLCBQdXJhbmpheSBNb2hhbiB3cm90ZToK PiBXaXRoIEJQRl9QUk9CRV9NRU0sIEJQRiBhbGxvd3MgZGUtcmVmZXJlbmNpbmcgYW4gdW50cnVz dGVkIHBvaW50ZXIuCj4gVG8KPiB0aHdhcnQgaW52YWxpZCBtZW1vcnkgYWNjZXNzZXMsIHRoZSBK SVRzIGFkZCBhbiBleGNlcHRpb24gdGFibGUgZW50cnkKPiBmb3IgYWxsIHN1Y2ggYWNjZXNzZXMu IEJ1dCBpbiBjYXNlIHRoZSBzcmNfcmVnICsgb2Zmc2V0IG92ZXJmbG93cyBhbmQKPiB0dXJucyBp bnRvIGEgdXNlcnNwYWNlIGFkZHJlc3MsIHRoZSBCUEYgcHJvZ3JhbSBtaWdodCByZWFkIHRoYXQK PiBtZW1vcnkgaWYKPiB0aGUgdXNlciBoYXMgbWFwcGVkIGl0Lgo+IAo+IFRoZXJlIGFyZSBhcmNo aXRlY3R1cmFsIGZlYXR1cmVzIHRoYXQgcHJldmVudCB0aGUga2VybmVsIGZyb20KPiBhY2Nlc3Np bmcKPiB1c2Vyc3BhY2UgbWVtb3J5LCBsaWtlIFByaXZpbGVnZWQgQWNjZXNzIE5ldmVyIChQQU4p IG9uIEFSTTY0LAo+IFN1cGVydmlzb3IgTW9kZSBBY2Nlc3MgUHJldmVudGlvbiAoU01BUCkgb24g eDg2LTY0LCBTdXBlcnZpc29yIFVzZXIKPiBNZW1vcnkgYWNjZXNzIChTVU0pIG9uIFJJU0MtViwg ZXRjLiBCdXQgQlBGIHNob3VsZCBub3QgcmVseSBvbiB0aGUKPiBleGlzdGVuY2Ugb2YgdGhlc2Ug ZmVhdHVyZXMuCj4gCj4gTWFrZSB0aGUgdmVyaWZpZXIgYWRkIGd1YXJkIGluc3RydWN0aW9ucyBh cm91bmQgc3VjaCBtZW1vcnkgYWNjZXNzZXMKPiBhbmQKPiBza2lwIHRoZSBsb2FkIGlmIHRoZSBh ZGRyZXNzIGZhbGxzIGludG8gdGhlIHVzZXJzcGFjZSByZWdpb24uCj4gCj4gVGhlIEpJVHMgbmVl ZCB0byBpbXBsZW1lbnQgYnBmX2FyY2hfdWFkZHJlc3NfbGltaXQoKSB0byBkZWZpbmUgd2hlcmUK PiB0aGUgdXNlcnNwYWNlIGFkZHJlc3NlcyBlbmQgZm9yIHRoYXQgYXJjaGl0ZWN0dXJlIG9yIFRB U0tfU0laRSBpcwo+IHRha2VuCj4gYXMgZGVmYXVsdC4KPiAKPiBUaGUgaW1wbGVtZW50YXRpb24g aXMgYXMgZm9sbG93czoKPiAKPiBSRUdfQVggPcKgIFNSQ19SRUcKPiBpZihvZmZzZXQpCj4gCVJF R19BWCArPSBvZmZzZXQ7Cj4gUkVHX0FYID4+PSAzMjsKPiBpZiAoUkVHX0FYIDw9ICh1YWRkcmVz c19saW1pdCA+PiAzMikpCj4gCURTVF9SRUcgPSAwOwo+IGVsc2UKPiAJRFNUX1JFRyA9ICooc2l6 ZSAqKShTUkNfUkVHICsgb2Zmc2V0KTsKPiAKPiBDb21wYXJpbmcganVzdCB0aGUgdXBwZXIgMzIg Yml0cyBvZiB0aGUgbG9hZCBhZGRyZXNzIHdpdGggdGhlIHVwcGVyCj4gMzIgYml0cyBvZiB1YWRk cmVzc19saW1pdCBpbXBsaWVzIHRoYXQgdGhlIHZhbHVlcyBhcmUgYmVpbmcgYWxpZ25lZAo+IGRv d24KPiB0byBhIDRHQiBib3VuZGFyeSBiZWZvcmUgY29tcGFyaXNvbi4KPiAKPiBUaGUgYWJvdmUg bWVhbnMgdGhhdCBhbGwgbG9hZHMgd2l0aCBhZGRyZXNzIDw9IHVhZGRyZXNzX2xpbWl0ICsgNEdC Cj4gYXJlCj4gc2tpcHBlZC4gVGhpcyBpcyBhY2NlcHRhYmxlIGJlY2F1c2UgdGhlcmUgaXMgYSBs YXJnZSBob2xlIChtdWNoCj4gbGFyZ2VyCj4gdGhhbiA0R0IpIGJldHdlZW4gdXNlcnNwYWNlIGFu ZCBrZXJuZWwgc3BhY2UgbWVtb3J5LCB0aGVyZWZvcmUgYQo+IGNvcnJlY3RseSBmdW5jdGlvbmlu ZyBCUEYgcHJvZ3JhbSBzaG91bGQgbm90IGFjY2VzcyB0aGlzIDRHQiBtZW1vcnkKPiBhYm92ZSB0 aGUgdXNlcnNwYWNlLgo+IAo+IExldCdzIGFuYWx5emUgd2hhdCB0aGlzIHBhdGNoIGRvZXMgdG8g dGhlIGZvbGxvd2luZyBmZW50cnkgcHJvZ3JhbQo+IGRlcmVmZXJlbmNpbmcgYW4gdW50cnVzdGVk IHBvaW50ZXI6Cj4gCj4gwqAgU0VDKCJmZW50cnkvdGNwX3Y0X2Nvbm5lY3QiKQo+IMKgIGludCBC UEZfUFJPRyhmZW50cnlfdGNwX3Y0X2Nvbm5lY3QsIHN0cnVjdCBzb2NrICpzaykKPiDCoCB7Cj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICoodm9sYXRpbGUgbG9uZyAqKXNrOwo+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsKPiDCoCB9Cj4gCj4gwqDCoMKg IEJQRiBQcm9ncmFtIGJlZm9yZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKg wqDCoMKgwqDCoCBCUEYgUHJvZ3JhbSBhZnRlcgo+IMKgwqDCoCAtLS0tLS0tLS0tLS0tLS0tLS3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqAgLS0tLS0tLS0t LS0tLS0tLS0KPiAKPiDCoCAwOiAoNzkpIHIxID0gKih1NjQgKikocjEgKzApwqDCoMKgwqDCoMKg wqDCoMKgIDA6ICg3OSkgcjEgPSAqKHU2NCAqKShyMSArMCkKPiDCoCAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gLS0t LQo+IMKgIDE6ICg3OSkgcjEgPSAqKHU2NCAqKShyMSArMCkgLS1cwqDCoMKgwqDCoCAxOiAoYmYp IHIxMSA9IHIxCj4gwqAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVzCoMKgIFzCoMKgwqDC oCAyOiAoNzcpIHIxMSA+Pj0gMzIKPiDCoCAyOiAoYjcpIHIwID0gMMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgXMKgwqAgXMKgwqDCoCAzOiAoYjUpIGlmIHIxMSA8PSAweDgwMDAgZ290bwo+ IHBjKzIKPiDCoCAzOiAoOTUpIGV4aXTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IFzCoMKgIFwtPiA0OiAoNzkpIHIxID0gKih1NjQgKikocjEgKzApCj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcwqDCoMKg wqDCoCA1OiAoMDUpIGdvdG8gcGMrMQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcwqDCoMKgwqAgNjogKGI3KSByMSA9 IDAKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBcLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gLS0t LS0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgNzogKGI3KSByMCA9IDAKPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgODogKDk1KSBleGl0Cj4gCj4gQXMgeW91IGNhbiBzZWUgZnJvbSBhYm92ZSwgaW4g dGhlIGJlc3QgY2FzZSAob2ZmPTApLCA1IGV4dHJhCj4gaW5zdHJ1Y3Rpb25zCj4gYXJlIGVtaXR0 ZWQuCj4gCj4gTm93LCB3ZSBhbmFseXNlIHRoZSBzYW1lIHByb2dyYW0gYWZ0ZXIgaXQgaGFzIGdv bmUgdGhyb3VnaCB0aGUgSklUcwo+IG9mCj4gWDg2LTY0LCBBUk02NCwgYW5kIFJJU0MtViBhcmNo aXRlY3R1cmVzLiBXZSBmb2xsb3cgdGhlIHNpbmdsZSBsb2FkCj4gaW5zdHJ1Y3Rpb24gdGhhdCBo YXMgdGhlIHVudHJ1c3RlZCBwb2ludGVyIGFuZCBzZWUgd2hhdAo+IGluc3RydW1lbnRhdGlvbgo+ IGhhcyBiZWVuIGFkZGVkIGFyb3VuZCBpdC4KPiAKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB4ODYtNjQgSklUCj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg PT09PT09PT09PQo+IMKgwqDCoMKgIEpJVCdzIEluc3RydW1lbnRhdGlvbsKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgVmVyaWZpZXIncwo+IEluc3RydW1lbnRhdGlvbgo+IMKgwqDC oMKgwqDCoMKgwqDCoCAodXBzdHJlYW0pwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChUaGlzIHBhdGNoKQo+IMKgwqDCoMKgIC0tLS0t LS0tLS0tLS0tLS0tLS0tLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQo+IC0KPiAKPiDCoMKgIDA6wqDCoCBub3BswqDCoCAweDAoJXJh eCwlcmF4LDEpwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDA6wqDCoCBub3BswqDCoAo+IDB4MCgl cmF4LCVyYXgsMSkKPiDCoMKgIDU6wqDCoCB4Y2hnwqDCoCAlYXgsJWF4wqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDU6wqDCoCB4Y2hnwqDCoCAlYXgsJWF4Cj4gwqDC oCA3OsKgwqAgcHVzaMKgwqAgJXJicMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCA3OsKgwqAgcHVzaMKgwqAgJXJicAo+IMKgwqAgODrCoMKgIG1vdsKgwqDC oCAlcnNwLCVyYnDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA4OsKgwqAg bW92wqDCoMKgICVyc3AsJXJicAo+IMKgwqAgYjrCoMKgIG1vdsKgwqDCoCAweDAoJXJkaSksJXJk acKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYjrCoMKgIG1vdsKgwqDCoAo+IDB4MCglcmRp KSwlcmRpCj4gwqAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+IC0tLS0tCj4gwqDCoCBmOsKgwqAgbW92YWJzICQweDgw MDAwMDAwMDAwMCwlcjExwqDCoMKgwqDCoMKgwqDCoCBmOsKgwqAgbW92wqDCoMKgICVyZGksJXIx MAo+IMKgIDE5OsKgwqAgY21wwqDCoMKgICVyMTEsJXJkacKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAxMjrCoMKgIHNocsKgwqDCoCAkMHgyMCwlcjEwCj4gwqAgMWM6wqDCoCBq YsKgwqDCoMKgIDB4MDAwMDAwMDAwMDAwMDAyYcKgwqDCoMKgwqDCoMKgwqDCoCAxNjrCoMKgIGNt cMKgwqDCoCAkMHg4MDAwLCVyMTAKPiDCoCAxZTrCoMKgIG1vdsKgwqDCoCAlcmRpLCVyMTHCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMWQ6wqDCoCBqYmXCoMKgwqAKPiAweDAw MDAwMDAwMDAwMDAwMjUKPiDCoCAyMTrCoMKgIGFkZMKgwqDCoCAkMHgwLCVyMTHCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAvLS0+IDFmOsKgwqAgbW92wqDCoMKgCj4gMHgwKCVyZGkpLCVyZGkK PiDCoCAyODrCoMKgIGphZcKgwqDCoCAweDAwMDAwMDAwMDAwMDAwMmXCoMKgwqAgL8KgwqDCoMKg IDIzOsKgwqAgam1wwqDCoMKgCj4gMHgwMDAwMDAwMDAwMDAwMDI3Cj4gwqAgMmE6wqDCoCB4b3LC oMKgwqAgJWVkaSwlZWRpwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvwqDCoMKgwqDCoCAyNTrCoMKg IHhvcsKgwqDCoCAlZWRpLCVlZGkKPiDCoCAyYzrCoMKgIGptcMKgwqDCoCAweDAwMDAwMDAwMDAw MDAwMzLCoCAvIC8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gLS0tLS0KPiDCoCAy ZTrCoMKgIG1vdsKgwqDCoCAweDAoJXJkaSksJXJkacKgIC0tLS8gL8KgwqDCoMKgwqAgMjc6wqDC oCB4b3LCoMKgwqAgJWVheCwlZWF4Cj4gwqAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tL8KgwqDCoMKgwqDCoCAyOTrCoMKgIGxlYXZlCj4gwqAgMzI6wqDCoCB4b3LCoMKgwqAgJWVh eCwlZWF4wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDJhOsKgwqAgcmV0Cj4g wqAgMzQ6wqDCoCBsZWF2ZQo+IMKgIDM1OsKgwqAgcmV0Cj4gCj4gVGhlIHg4Ni02NCBKSVQgYWxy ZWFkeSBlbWl0cyBzb21lIGluc3RydWN0aW9ucyB0byBwcm90ZWN0IGFnYWluc3QKPiB1c2VyCj4g bWVtb3J5IGFjY2Vzcy4gVGhlIGltcGxlbWVudGF0aW9uIGluIHRoaXMgcGF0Y2ggbGVhZHMgdG8g YSBzbWFsbGVyCj4gbnVtYmVyIG9mIGluc3RydWN0aW9ucyBiZWluZyBlbWl0dGVkLiBJbiB0aGUg d29yc3QgY2FzZSB0aGUgSklUIHdpbGwKPiBlbWl0IDkgZXh0cmEgaW5zdHJ1Y3Rpb25zIGFuZCB0 aGlzIHBhdGNoIGRlY3JlYXNlcyBpdCB0byA3Lgo+IAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBUk02NCBKSVQKPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgPT09PT09PT09Cj4gCj4gwqDCoMKgwqDCoMKgwqAgTm8gSW50cnVtZW50YXRpb27C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBWZXJpZmllcidzCj4g SW5zdHJ1bWVudGF0aW9uCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgKHVwc3RyZWFtKcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAoVGhpcyBwYXRjaCkKPiDCoMKgwqDCoMKgwqDCoCAtLS0tLS0tLS0tLS0tLS0tLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC0tLS0tLS0tLS0tLS0tLS0tLS0t LQo+IC0tLS0tCj4gCj4gwqDCoCAwOsKgwqAgYWRkwqDCoMKgwqAgeDksIHgzMCwgIzB4MMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAwOsKgwqAgYWRkwqDCoMKgwqAgeDksIHgzMCwKPiAj MHgwCj4gwqDCoCA0OsKgwqAgbm9wwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDQ6wqDCoCBub3AKPiDCoMKgIDg6wqDCoCBw YWNpYXNwwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCA4OsKgwqAgcGFjaWFzcAo+IMKgwqAgYzrCoMKgIHN0cMKgwqDCoMKgIHgyOSwgeDMw LCBbc3AsICMtMTZdIcKgwqDCoMKgwqDCoMKgIGM6wqDCoCBzdHDCoMKgwqDCoCB4MjksIHgzMCwK PiBbc3AsICMtMTZdIQo+IMKgIDEwOsKgwqAgbW92wqDCoMKgwqAgeDI5LCBzcMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMTA6wqDCoCBtb3bCoMKgwqDCoCB4MjksIHNw Cj4gwqAgMTQ6wqDCoCBzdHDCoMKgwqDCoCB4MTksIHgyMCwgW3NwLCAjLTE2XSHCoMKgwqDCoMKg wqAgMTQ6wqDCoCBzdHDCoMKgwqDCoCB4MTksIHgyMCwKPiBbc3AsICMtMTZdIQo+IMKgIDE4OsKg wqAgc3RwwqDCoMKgwqAgeDIxLCB4MjIsIFtzcCwgIy0xNl0hwqDCoMKgwqDCoMKgIDE4OsKgwqAg c3RwwqDCoMKgwqAgeDIxLCB4MjIsCj4gW3NwLCAjLTE2XSEKPiDCoCAxYzrCoMKgIHN0cMKgwqDC oMKgIHgyNSwgeDI2LCBbc3AsICMtMTZdIcKgwqDCoMKgwqDCoCAxYzrCoMKgIHN0cMKgwqDCoMKg IHgyNSwgeDI2LAo+IFtzcCwgIy0xNl0hCj4gwqAgMjA6wqDCoCBzdHDCoMKgwqDCoCB4MjcsIHgy OCwgW3NwLCAjLTE2XSHCoMKgwqDCoMKgwqAgMjA6wqDCoCBzdHDCoMKgwqDCoCB4MjcsIHgyOCwK PiBbc3AsICMtMTZdIQo+IMKgIDI0OsKgwqAgbW92wqDCoMKgwqAgeDI1LCBzcMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjQ6wqDCoCBtb3bCoMKgwqDCoCB4MjUsIHNw Cj4gwqAgMjg6wqDCoCBtb3bCoMKgwqDCoCB4MjYsICMweDDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgMjg6wqDCoCBtb3bCoMKgwqDCoCB4MjYsICMweDAKPiDCoCAyYzrCoMKg IHN1YsKgwqDCoMKgIHgyNywgeDI1LCAjMHgwwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMmM6 wqDCoCBzdWLCoMKgwqDCoCB4MjcsIHgyNSwKPiAjMHgwCj4gwqAgMzA6wqDCoCBzdWLCoMKgwqDC oCBzcCwgc3AsICMweDDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMzA6wqDCoCBzdWLC oMKgwqDCoCBzcCwgc3AsCj4gIzB4MAo+IMKgIDM0OsKgwqAgbGRywqDCoMKgwqAgeDAsIFt4MF3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAzNDrCoMKgIGxkcsKgwqDCoMKg IHgwLCBbeDBdCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gLS0tLS0tLS0tLS0KPiDCoCAzODrCoMKgIGxkcsKg wqDCoMKgIHgwLCBbeDBdIC0tLS0tLS0tLS1cwqDCoMKgwqDCoMKgwqAgMzg6wqDCoCBhZGTCoMKg wqDCoCB4OSwgeDAsCj4gIzB4MAo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t XFzCoMKgwqDCoMKgwqAgM2M6wqDCoCBsc3LCoMKgwqDCoCB4OSwgeDksICMzMgo+IMKgIDNjOsKg wqAgbW92wqDCoMKgwqAgeDcsICMweDDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFxcwqDCoMKgwqDC oCA0MDrCoMKgIGNtcMKgwqDCoMKgIHg5LCAjMHgxMCwKPiBsc2wgIzEyCj4gwqAgNDA6wqDCoCBt b3bCoMKgwqDCoCBzcCwgc3DCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFxcwqDCoMKgwqAg NDQ6wqDCoCBiLmxzwqDCoMKgCj4gMHgwMDAwMDAwMDAwMDAwMDUwCj4gwqAgNDQ6wqDCoCBsZHDC oMKgwqDCoCB4MjcsIHgyOCwgW3NwXSwgIzE2wqDCoCBcXC0tPiA0ODrCoMKgIGxkcsKgwqDCoMKg IHgwLCBbeDBdCj4gwqAgNDg6wqDCoCBsZHDCoMKgwqDCoCB4MjUsIHgyNiwgW3NwXSwgIzE2wqDC oMKgIFzCoMKgwqAgNGM6wqDCoCBiwqDCoMKgwqDCoMKgCj4gMHgwMDAwMDAwMDAwMDAwMDU0Cj4g wqAgNGM6wqDCoCBsZHDCoMKgwqDCoCB4MjEsIHgyMiwgW3NwXSwgIzE2wqDCoMKgwqAgXMKgwqAg NTA6wqDCoCBtb3bCoMKgwqDCoCB4MCwgIzB4MAo+IMKgIDUwOsKgwqAgbGRwwqDCoMKgwqAgeDE5 LCB4MjAsIFtzcF0sICMxNsKgwqDCoMKgwqAgXC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ IC0tLS0tLS0tLS0tLQo+IMKgIDU0OsKgwqAgbGRwwqDCoMKgwqAgeDI5LCB4MzAsIFtzcF0sICMx NsKgwqDCoMKgwqDCoMKgwqAgNTQ6wqDCoCBtb3bCoMKgwqDCoCB4NywgIzB4MAo+IMKgIDU4OsKg wqAgYWRkwqDCoMKgwqAgeDAsIHg3LCAjMHgwwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IDU4OsKgwqAgbW92wqDCoMKgwqAgc3AsIHNwCj4gwqAgNWM6wqDCoCBhdXRpYXNwwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgNWM6wqDCoCBs ZHDCoMKgwqDCoCB4MjcsIHgyOCwKPiBbc3BdLCAjMTYKPiDCoCA2MDrCoMKgIHJldMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg NjA6wqDCoCBsZHDCoMKgwqDCoCB4MjUsIHgyNiwKPiBbc3BdLCAjMTYKPiDCoCA2NDrCoMKgIG5v cMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgNjQ6wqDCoCBsZHDCoMKgwqDCoCB4MjEsIHgyMiwKPiBbc3BdLCAjMTYKPiDCoCA2 ODrCoMKgIGxkcsKgwqDCoMKgIHgxMCwgMHgwMDAwMDAwMDAwMDAwMDcwwqDCoMKgwqAgNjg6wqDC oCBsZHDCoMKgwqDCoCB4MTksIHgyMCwKPiBbc3BdLCAjMTYKPiDCoCA2YzrCoMKgIGJywqDCoMKg wqDCoCB4MTDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg NmM6wqDCoCBsZHDCoMKgwqDCoCB4MjksIHgzMCwKPiBbc3BdLCAjMTYKPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCA3MDrCoMKgIGFkZMKgwqDCoMKgIHgwLCB4NywKPiAjMHgwCj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgNzQ6wqDCoCBhdXRpYXNwCj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgNzg6wqDCoCByZXQKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCA3YzrCoMKgIG5vcAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDgwOsKgwqAg bGRywqDCoMKgwqAgeDEwLAo+IDB4MDAwMDAwMDAwMDAwMDA4OAo+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIDg0OsKgwqAgYnLCoMKgwqDCoMKgIHgxMAo+IAo+IFRoZXJlIGFyZSA2IGV4 dHJhIGluc3RydWN0aW9ucyBhZGRlZCBpbiBBUk02NCBpbiB0aGUgYmVzdCBjYXNlLiBUaGlzCj4g d2lsbAo+IGJlY29tZSA3IGluIHRoZSB3b3JzdCBjYXNlIChvZmYgIT0gMCkuCj4gCj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBSSVNDLVYgSklU IChSSVNDVl9JU0FfQyBEaXNhYmxlZCkKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgID09PT09PT09PT0KPiAKPiDCoMKgwqDCoMKgwqDCoCBObyBJ bnRydW1lbnRhdGlvbsKgwqDCoMKgwqDCoMKgwqDCoMKgIFZlcmlmaWVyJ3MgSW5zdHJ1bWVudGF0 aW9uCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgKHVwc3RyZWFtKcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoVGhpcyBwYXRjaCkKPiDCoMKgwqDCoMKgwqDCoCAtLS0t LS0tLS0tLS0tLS0tLcKgwqDCoMKgwqDCoMKgwqDCoMKgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCj4gCj4gwqDCoCAwOsKgwqAgbm9wwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIDA6wqDCoCBub3AKPiDCoMKgIDQ6wqDCoCBub3DCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgNDrCoMKgIG5v cAo+IMKgwqAgODrCoMKgIGxpwqDCoMKgwqDCoCBhNiwgMzPCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCA4OsKgwqAgbGnCoMKgwqDCoMKgIGE2LCAzMwo+IMKgwqAgYzrCoMKgIGFkZGnC oMKgwqAgc3AsIHNwLCAtMTbCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGM6wqDCoCBhZGRpwqDCoMKg IHNwLCBzcCwgLTE2Cj4gwqAgMTA6wqDCoCBzZMKgwqDCoMKgwqAgczAsIDgoc3ApwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIDEwOsKgwqAgc2TCoMKgwqDCoMKgIHMwLCA4KHNwKQo+IMKgIDE0OsKg wqAgYWRkacKgwqDCoCBzMCwgc3AsIDE2wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAxNDrCoMKgIGFk ZGnCoMKgwqAgczAsIHNwLCAxNgo+IMKgIDE4OsKgwqAgbGTCoMKgwqDCoMKgIGEwLCAwKGEwKcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAxODrCoMKgIGxkwqDCoMKgwqDCoCBhMCwgMChhMCkKPiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KPiDCoCAxYzrCoMKgIGxkwqDCoMKgwqDCoCBhMCwgMChhMCkgLS1cwqDCoMKgwqDCoMKg wqDCoCAxYzrCoMKgIG12wqDCoMKgwqDCoCB0MCwgYTAKPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLVzCoCBcwqDCoMKgwqDCoMKgwqAgMjA6wqDCoCBzcmxpwqDCoMKgIHQwLCB0MCwgMzIKPiDC oCAyMDrCoMKgIGxpwqDCoMKgwqDCoCBhNSwgMMKgwqDCoMKgwqAgXMKgIFzCoMKgwqDCoMKgwqAg MjQ6wqDCoCBsdWnCoMKgwqDCoCB0MSwgNDA5Ngo+IMKgIDI0OsKgwqAgbGTCoMKgwqDCoMKgIHMw LCA4KHNwKcKgwqAgXMKgIFzCoMKgwqDCoMKgIDI4OsKgwqAgc2V4dC53wqAgdDEsIHQxCj4gwqAg Mjg6wqDCoCBhZGRpwqDCoMKgIHNwLCBzcCwgMTbCoMKgIFzCoCBcwqDCoMKgwqAgMmM6wqDCoCBi Z2V1wqDCoMKgIHQxLCB0MCwgMTIKPiDCoCAyYzrCoMKgIHNleHQud8KgIGEwLCBhNcKgwqDCoMKg wqDCoMKgIFzCoCBcLS0+IDMwOsKgwqAgbGTCoMKgwqDCoMKgIGEwLCAwKGEwKQo+IMKgIDMwOsKg wqAgcmV0wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXMKgwqDCoMKgwqAg MzQ6wqDCoCBqwqDCoMKgwqDCoMKgIDgKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcwqDCoMKgwqAgMzg6wqDCoCBsacKgwqDC oMKgwqAgYTAsIDAKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAzYzrCoMKgIGxpwqDCoMKgwqDCoCBhNSwgMAo+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIDQwOsKgwqAgbGTCoMKgwqDCoMKgIHMwLCA4KHNwKQo+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IDQ0OsKgwqAgYWRkacKgwqDCoCBzcCwgc3AsIDE2Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgNDg6wqDC oCBzZXh0LnfCoCBhMCwgYTUKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA0YzrCoMKgIHJldAo+IAo+IFRo ZXJlIGFyZSA3IGV4dHJhIGluc3RydWN0aW9ucyBhZGRlZCBpbiBSSVNDLVYuCj4gCj4gRml4ZXM6 IDgwMDgzNDI4NTM2MSAoImJwZiwgYXJtNjQ6IEFkZCBCUEYgZXhjZXB0aW9uIHRhYmxlcyIpCj4g UmVwb3J0ZWQtYnk6IEJyZW5vIExlaXRhbyA8bGVpdGFvQGRlYmlhbi5vcmc+Cj4gU3VnZ2VzdGVk LWJ5OiBBbGV4ZWkgU3Rhcm92b2l0b3YgPGFzdEBrZXJuZWwub3JnPgo+IFNpZ25lZC1vZmYtYnk6 IFB1cmFuamF5IE1vaGFuIDxwdXJhbmpheTEyQGdtYWlsLmNvbT4KPiAtLS0KPiBWMzoKPiBodHRw czovL2xvcmUua2VybmVsLm9yZy9icGYvMjAyNDAzMjExMjA4NDIuNzg5ODMtMS1wdXJhbmpheTEy QGdtYWlsLmNvbS8KPiBDaGFuZ2VzIGluIFY0Ogo+IC0gRGlzYWJsZSB0aGlzIGZlYXR1cmUgb24g YXJjaGl0ZWN0dXJlcyB0aGF0IGRvbid0IGRlZmluZQo+IMKgIENPTkZJR19BUkNIX0hBU19OT05f T1ZFUkxBUFBJTkdfQUREUkVTU19TUEFDRS4KPiAtIEJ5IGRvaW5nIHRoZSBhYm92ZSwgd2UgZG9u J3QgbmVlZCBhbnl0aGluZyBleHBsaWNpdGx5IGZvciBzMzkweC4KPiAKPiBWMjoKPiBodHRwczov L2xvcmUua2VybmVsLm9yZy9icGYvMjAyNDAzMjExMDEwNTguNjg1MzAtMS1wdXJhbmpheTEyQGdt YWlsLmNvbS8KPiBDaGFuZ2VzIGluIFYzOgo+IC0gUmV0dXJuIDAgZnJvbSBicGZfYXJjaF91YWRk cmVzc19saW1pdCgpIGluIGRpc2FibGVkIGNhc2UgYmVjYXVzZSBpdAo+IMKgIHJldHVybnMgdTY0 Lgo+IC0gTW9kaWZ5IHRoZSBjaGVjayBpbiB2ZXJpZmllciB0byBubyBkbyBpbnN0cnVtZW50YXRp b24gd2hlbgo+IHVhZGRyZXNzX2xpbWl0Cj4gwqAgaXMgMC4KPiAKPiBWMToKPiBodHRwczovL2xv cmUua2VybmVsLm9yZy9icGYvMjAyNDAzMjAxMDU0MzYuNDc4MS0xLXB1cmFuamF5MTJAZ21haWwu Y29tLwo+IENoYW5nZXMgaW4gVjI6Cj4gLSBEaXNhYmxlIHRoaXMgZmVhdHVyZSBvbiBzMzkweC4K PiAtLS0KPiDCoGFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYyB8IDcyICsrKysrLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gLS0KPiDCoGluY2x1ZGUvbGludXgvZmlsdGVyLmjCoMKg wqDCoMKgIHzCoCAxICsKPiDCoGtlcm5lbC9icGYvY29yZS5jwqDCoMKgwqDCoMKgwqDCoMKgwqAg fMKgIDkgKysrKysKPiDCoGtlcm5lbC9icGYvdmVyaWZpZXIuY8KgwqDCoMKgwqDCoCB8IDMwICsr KysrKysrKysrKysrKysKPiDCoDQgZmlsZXMgY2hhbmdlZCwgNDggaW5zZXJ0aW9ucygrKSwgNjQg ZGVsZXRpb25zKC0pCgpBY2tlZC1ieTogSWx5YSBMZW9zaGtldmljaCA8aWlpQGxpbnV4LmlibS5j b20+Cg==