From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by sourceware.org (Postfix) with ESMTPS id 9CAC53858C2C for ; Mon, 3 Oct 2022 15:21:01 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 9CAC53858C2C Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=oracle.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=oracle.com Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 293En0i5020825; Mon, 3 Oct 2022 15:20:47 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-id : content-transfer-encoding : mime-version; s=corp-2022-7-12; bh=wUKTuBWpfw9iGx1qLDfVDkPJ0AUSUJ4lzrlmqO8MqJI=; b=qXBSKhYH6AvsVHjB3sAk4Qo310IEzOEL21y++jPwFuZDO/5sWKQRxv38jdsn7A1WbCpu R5f73I3LpPScyVvxHI5lQlXf4/fjI2jy/hQ8MCbHdESUaJBkWpkyGDXTcX6PRZE2xhFI 4iHpaOz2vMNoN8kCRJxmwDE+WMR0sqYAShPn8LULnUSyUHszmue0Rl+bjdtQMInmEYA1 WNBqnea2mGJhGUFhK6P1GvClwSVJB+elaZoEWA70CSCmcMCotljjES42i4udfbdkXkEe zouBC021OBdmZBKMXH61h2ssa/QqFFvgbD+Ab9wcC9ns8kZpWgYo9ekUUS/LdJDi7yGJ Qg== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3jxdea3x3f-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 03 Oct 2022 15:20:46 +0000 Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 293DUVi7015572; Mon, 3 Oct 2022 15:20:24 GMT Received: from nam11-bn8-obe.outbound.protection.outlook.com (mail-bn8nam11lp2169.outbound.protection.outlook.com [104.47.58.169]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3jxc03c33w-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 03 Oct 2022 15:20:24 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=l5FbDTIa5tbv9KSdnOxJRFkXADi+SpuQkOQkiGL7TskTnC5Ygcf+IyDKnMWG1/7Hoirw570HmUWB/MSgvFSGm4evblZ2/QGJtdAGDT9uH1u+RFGUlwBirSxT0/ZcCu3U0TWvWF21UiAxa8fmxM8QMZbDCiAX/ssExGAKiupKytkIOiokUtznPp871TNwbhI2jhmmeKPRlYqGpHTGpQZYZJjgDL2seN+72P30YRKz0nSEuNtJRZG2ZqQ5d7rmkRt4+Uurm+YL7Mkpl8K0An8wWkYqq3LGdEBIlz1BUMPyz5K1ENvPdLAnOVQqt4d/Q4iRB/M/DIgJ2rmFWdNY0KUImg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=wUKTuBWpfw9iGx1qLDfVDkPJ0AUSUJ4lzrlmqO8MqJI=; b=nlgEfTyzCPBXnvVPjpaHItgRfRKlBJali9RGqO37fV/Y2SxQEB5DhzzrbND0Ga+p575tW9nMQ+D7LN8gNByNmHEH4A+rOF+tcRddPlsAAvH8S4w7vVhsQOZg5IJJWQ9U+aKSvvs7oWTvhVOpyYgcNqKFqOtheIhvpxnasXeFN5BjvYk2tdkvoTyK14jZvCihECEdU+vZlfcg6sUjAWyL6c0WKI7qy0Avt6W4voO9mgMPxeafGmF0mTWlpE65RiDkJfCPFkniKqoDt3zljzyS93epE60sV8TczKTY0Sdts7Z35yqkbbGhJY2sZ6Jmf3bn9qv3tdZ487cmB/CRQTkG3w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wUKTuBWpfw9iGx1qLDfVDkPJ0AUSUJ4lzrlmqO8MqJI=; b=zKpxQ8lrgxGLzIFsSmP5g3GfARAeE6p8bt+38Ztnlt583L4hqthvdHM998MnpuTsMxsAhqoSwLHXWhUC7Mr6zoDBaiNTX6/WyHr0E2lS9Mo2748L/AvTNznu3uM+9qK+IXPvr+JqQBVQXbymaW3ZYgzfCn1iBeOOTMrmKCGomzU= Received: from CH2PR10MB4344.namprd10.prod.outlook.com (2603:10b6:610:af::19) by DM4PR10MB6061.namprd10.prod.outlook.com (2603:10b6:8:b5::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.20; Mon, 3 Oct 2022 15:20:21 +0000 Received: from CH2PR10MB4344.namprd10.prod.outlook.com ([fe80::cbf8:6682:721e:835c]) by CH2PR10MB4344.namprd10.prod.outlook.com ([fe80::cbf8:6682:721e:835c%6]) with mapi id 15.20.5676.028; Mon, 3 Oct 2022 15:20:21 +0000 From: Qing Zhao To: Martin Sebor CC: "gcc-patches@gcc.gnu.org" , Richard Biener , "jakub@redhat.com" , "keescook@chromium.org" , "joseph@codesourcery.com" Subject: Re: [GCC13][Patch][V4][PATCH 1/2] Add a new option -fstrict-flex-arrays[=n] and new attribute strict_flex_arrays Thread-Topic: [GCC13][Patch][V4][PATCH 1/2] Add a new option -fstrict-flex-arrays[=n] and new attribute strict_flex_arrays Thread-Index: AQHYwlDNoK120rNQuk6NL57vfqUeC63cCMIAgBlQbYCAAwlngIAEkBOA Date: Mon, 3 Oct 2022 15:20:21 +0000 Message-ID: References: <20220907002817.236178-1-qing.zhao@oracle.com> <20220907002817.236178-2-qing.zhao@oracle.com> <90234BB4-BAFA-4528-AF95-BD1809B2D37B@oracle.com> <95f53b26-a73c-661f-52df-2411e7c874b4@gmail.com> In-Reply-To: <95f53b26-a73c-661f-52df-2411e7c874b4@gmail.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Apple Mail (2.3696.120.41.1.1) x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CH2PR10MB4344:EE_|DM4PR10MB6061:EE_ x-ms-office365-filtering-correlation-id: 394a2531-62d3-4989-d0d8-08daa552c974 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Kl/1nDCIxH8mtS4s0hTNGjotKOoQX5hwKqiuRCjwgYcQvl+RsiXGPcJl6Erv8zbsKV1paXtUiGGvUELom2InWFEgsOVcGVpEhtqtGA6LUuGL+wI8wmqUnWcQ6WZpG/ik9SzxQ4fyZJM1RYH878olIxXppdF+HVszDGzYWpsdAtpNACyiAu4CoYTwMTw4K7AwUUwmAeHi9Nq7tV6cqnM9iMn8JBEnlqxgsLMqEsLNMO+l7S8o8TM03EGtyYl1If/2iqtLDsSOHOKQ0QZ736w5oQ0DJ61fSlwS4sGx5xvQ53XlHwjVVr3H/SaxUYQn8QCYrxhL2KW7mYrpYh1JqdZ8TOBvdYgbcSfsgewPUQOUF5wsr1q7lKDPUBarMQ+z+cdW0qnfY6QKJfRYvP7oIVFCXS6NYlwern1y1Cy1GKnpuADssOEyiDeYfQj/P9RpMSNCv9rpwKbj515fkWNGoJQY2qn3g6lpHPMgNsuNs7veYgJr8uS+1vG0VFzlG0rpAPbG2K02C7GobNtGiRqx5NRdhNEk9EV2k0OYt3Y5oFUHWXSYuovNGpMiu78tZwlLG7hFiVFGNut1CLXGCgqiUXXHaSFWC4xVa2VcJzNpz+Go0Yyo9tCFe1sGzWLxbOC7TWmFAMug98LKaM6m2E8YMDn7CfKCb1S39QXxqJ7ly92VCv3xRn6fwJkx7oFN4ke04eERpQI6iScO5FqQrbkhm4hqFo1GQYJbsTy0O2CR52ihSEwlexC55gvbPY5/vC1/Wcgui0aPwuVBwJuD48XeaxqA7ZOoAH98pcRjWWbQy+sZ2HRBAkm4WJb1F5PnEnxeT3PcLcguzIfv3xGElOmG2JBtlA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR10MB4344.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(39860400002)(136003)(366004)(346002)(376002)(396003)(451199015)(76116006)(30864003)(966005)(66899015)(6486002)(71200400001)(478600001)(44832011)(66946007)(84970400001)(83380400001)(38100700002)(91956017)(122000001)(41300700001)(36756003)(33656002)(6506007)(5660300002)(66476007)(64756008)(53546011)(66556008)(86362001)(316002)(6512007)(4326008)(8676002)(66446008)(6916009)(186003)(26005)(38070700005)(2616005)(54906003)(8936002)(2906002)(45980500001)(559001)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?WWRWUjZTK1RMUWNoK2RBeGhka1NCNGFUL0tUVHNqdm5DbHdPeTFkQzB3bHVL?= =?utf-8?B?WU95T0VxVmNGM2RBa1BGSVRER1ZFNlAyOW00YnBJclIyQnIvQzJiKzYrZlZu?= =?utf-8?B?eG1DaTlPNWViWndyWlorQURNS3VYZ2lEOHRwd29TblBXYW02SFNmUk1ONldI?= =?utf-8?B?YlFUSmFhaUc4cjFPRndsOW1QbEVZZS94VjRSQUVNL3lZT3Zva2NjNlY2a1RM?= =?utf-8?B?V3BCaWZmenQ4OTdBeGJIbmJaZWp4MEFtUkdoRjN6dlVpN00vdGV6UVJ3bWlD?= =?utf-8?B?b1BmbWNQWEJURzZtdzBnS0V2YWRJR25saXZxTVVaUWo5R04reFhSU0ExY2Vz?= =?utf-8?B?NmtKT01qM2dqOUFoemM1VW5tR3lFRlpHdXNzbUxRdFozaGV4cWw3MWJKTkVt?= =?utf-8?B?YUhkTWNzYnA2OFRUNEFBTjhXQjhoakFCUjNGR3ExVXhIQW0vZE5iSk55M3Uy?= =?utf-8?B?Nkg4d2lSdDM5S1NMbkNwVWpWK0N2NnRnTW9uTzN4RXFxVGhjY1FhWTdRUXI3?= =?utf-8?B?UXlGcC9kMmt1NnYzYWgwSWgxNUhXczR5S3JKYmFmUjlyNlV0US9SM3l1a2RR?= =?utf-8?B?S0FoU3ZmaEY4Y3V6OWtmdXNmb2x2UUt1c3M0d2R5Z2JEa3ZxdnU3ZGsxR2Ur?= =?utf-8?B?dk1WaU45cHFQNG8rTDUwZUV5N1ZVSzd4S2dIOU5Dc1RmbjRsQnl0dEZwOTk4?= =?utf-8?B?amJkSEg5TmhCYVU1OWwrODNRWXBFeWRyT3E1dVlaUVJ4UGYzeEIyS1pGTHNz?= =?utf-8?B?YTVoNDQzQWFQK1FEbHprMW1ENlh1QnhLNjJUYTB3OW9uaXFveGtLMGw3RWs3?= =?utf-8?B?V2F0cy9ZVWJMN3NTaXFjV0xSUS9hdy9UbENsRHpFY2hLMGtSeEZmTmkvbHRM?= =?utf-8?B?WnJ2T0lqemtpL2dNVVd2Q1k0VXNubW5LUDNnK1FCREpyVWthZHp0Wjg2WVE5?= =?utf-8?B?NTF2RGJvUmhDY0FIWmUwTTRqT3hUZDhaYVVEem02eUlGcEFiVktIUHZhNUhI?= =?utf-8?B?amNoTURLN0VhQmJQZ0t3QTExTEpwODhCLzVtMWhJMFROejI2VU9pemw4cXJY?= =?utf-8?B?bFhERFhOOHhEbW5xMitXcE5tMERkQzBjQ3FjSW5SLzFhRitjS3FXaEFuK3Iz?= =?utf-8?B?M3k4M3Q1eUJQcDdxNmk0clIyTmVPeHNEcW9jcExNOXRNdExGZ29HMkUwS2Rm?= =?utf-8?B?azJiMVRDTllRRlhZWG9CVTNralRWNGdiTEp1SUphVm9ZODAzbjd5RGZ6eHpU?= =?utf-8?B?WnJQSU9UWVdKTVAwL0FONTljRnV2a2NSSlpZVjFiOStYSjVzaGduSjBLaG1j?= =?utf-8?B?NEFEbGNBMnFpNGpxbk9JczZsa0RvRFQ0dE1GQXQ3eTYvUmtsbWo4dG80UXR5?= =?utf-8?B?bHNlQzNCekhKUWlJT01xYmVLTCt2UnZDT2VWb0lreTdQM0tFdXZJSnZpL1V5?= =?utf-8?B?M05TMkZzTSszWnp5aUVOUkY1dGJhdk12NUJ2NG02ZmVRNzhxZVQ4TFd0VDVX?= =?utf-8?B?UFBPSGV1TWZSeC9iSGtMRDU0OHFRWnhPYVBlRDFWQ3FZbkU1T3dZejNkckdP?= =?utf-8?B?T2pKWE9OcllQNjBBeWJmTzZwL2tUQVJGK3hhdHdXbzVzcVBLTlg4OHlQbWVY?= =?utf-8?B?UVNEdjkrNjdXbUI4OFFXdnNyVng3aCtXQ1BUNWxvL05kckF6RVFLelpmdExR?= =?utf-8?B?L0o5L1pJd05ZN3BMZitNOUVjZ1dmL1BkajBVZk50TjE3TzZtTkxPQ0FqazdD?= =?utf-8?B?QmdZdjRGSGwxZUh0SU9CeTBIeEVNcWNUbUZSZEdNWjBaQUU5WU1WK0RlZTNI?= =?utf-8?B?dWY0K2wxQ3F4aFg5cm52Kyt3RDZqNnV4bWMweGJ4M3hRdDY1eHNHVmc5L05n?= =?utf-8?B?K0pkQ0doZ01uSUVZa2dBQkpWNWNhamQ1SXNYVU5IQ2ViUFgwVnJNQXpISW8w?= =?utf-8?B?bncyMWVnNmxkR2ExaGpXOThtZGVuREYvL1BrVkRibmUwQUQ0TklRczlnSS9l?= =?utf-8?B?QmNkbDI2KzNvQ1p3TG94Q0dSdGlnU3hLNXlucVRURWZUWTZ5V1VVdVN5Lzha?= =?utf-8?B?a3JGN2ZHSVlqVTJVZVRhd3huNWV3ZlZHVmJkRWQ2ZXBhVEJOUkliL0J1U0hp?= =?utf-8?B?Njd2V3JjYmJadUI1VWhxKzhMMG56ek9haWI1cVFSWHZYNDAyVEp5ckxMS0tW?= =?utf-8?B?V1E9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: <2058C3170EE37C4BBD4D5EB795EE100A@namprd10.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH2PR10MB4344.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 394a2531-62d3-4989-d0d8-08daa552c974 X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Oct 2022 15:20:21.1811 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: qnVs+YFoF94rGj7Tvc8zK1NUspMLg8/B7YrR6TWsmqjCcXHFL8Ek+Dmrbbl6raO+ACZtpqfYZhCtymjLQdhtNA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR10MB6061 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.895,Hydra:6.0.528,FMLib:17.11.122.1 definitions=2022-10-03_02,2022-09-29_03,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 phishscore=0 bulkscore=0 suspectscore=0 mlxlogscore=999 mlxscore=0 spamscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2209130000 definitions=main-2210030091 X-Proofpoint-GUID: H2dQxBLenHeWsy_z8e_oo7HpyX3vT5OV X-Proofpoint-ORIG-GUID: H2dQxBLenHeWsy_z8e_oo7HpyX3vT5OV X-Spam-Status: No, score=-11.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: DQoNCj4gT24gU2VwIDMwLCAyMDIyLCBhdCAxOjM5IFBNLCBNYXJ0aW4gU2Vib3IgPG1zZWJvckBn bWFpbC5jb20+IHdyb3RlOg0KPiANCj4gT24gOS8yOC8yMiAxMzoxNywgUWluZyBaaGFvIHdyb3Rl Og0KPj4gSGksIE1hcnRpbiwNCj4+IFRoYW5rcyBmb3IgdGhlIGNvbW1lbnRzLiBBbmQgc29ycnkg Zm9yIG15IGxhdGUgcmVwbHkgdGlsbCBub3cgKEkganVzdCBjYW1lIGJhY2sgaG9tZSBmcm9tIExQ QywgR05VIENhdWxkcm9uIGFuZCB0aGVuIGEgb25lLXdlZWsgdmFjYXRpb24gYWZ0ZXIgdGhhdOKA pikNCj4+PiBPbiBTZXAgMTIsIDIwMjIsIGF0IDEyOjQyIFBNLCBNYXJ0aW4gU2Vib3IgPG1zZWJv ckBnbWFpbC5jb20+IHdyb3RlOg0KPj4+IA0KPj4+IE9uIDkvNi8yMiAxODoyOCwgUWluZyBaaGFv IHdyb3RlOg0KPj4+PiBBZGQgdGhlIGZvbGxvd2luZyBuZXcgb3B0aW9uIC1mc3RyaWN0LWZsZXgt YXJyYXlzWz1uXSBhbmQgYSBjb3JyZXNwb25kaW5nDQo+Pj4+IGF0dHJpYnV0ZSBzdHJpY3RfZmxl eF9hcnJheXMgdG8gR0NDOg0KPj4+PiAnLWZzdHJpY3QtZmxleC1hcnJheXMnDQo+Pj4+ICAgICAg VHJlYXQgdGhlIHRyYWlsaW5nIGFycmF5IG9mIGEgc3RydWN0dXJlIGFzIGEgZmxleGlibGUgYXJy YXkgbWVtYmVyDQo+Pj4+ICAgICAgaW4gYSBzdHJpY3RlciB3YXkuDQo+Pj4gDQo+Pj4gQSBtaW5v ciBwcm9ibGVtIHdpdGggdGhpcyBwaHJhc2luZyB3YXMgcG9pbnRlZCBvdXQgaW4gdGhlIHJldmll dw0KPj4+IG9mIHRoZSBDbGFuZyBvcHRpb246IGh0dHBzOi8vcmV2aWV3cy5sbHZtLm9yZy9EMTI2 ODY0I2lubGluZS0xMjgyNzE2DQo+Pj4gSXQgd291bGQgYmUgZ29vZCB0byBhdm9pZCBpdCBoZXJl Lg0KPj4gWWVzLCBJIGFncmVlLg0KPj4+ICAoSSB0aGluayBxdWFsaWZ5aW5nIHRoZSBzZW50ZW5j ZQ0KPj4+IGJ5IGFkZGluZyAiZm9yIHRoZSBwdXJwb3NlcyBvZiBhY2Nlc3NpbmcgdGhlIGVsZW1l bnRzIG9mIHN1Y2ggYXJyYXlzIg0KPj4+IG1pZ2h0IGJlIG9uZSB3YXkgdG8gZG8gaXQpLg0KPj4g SG93IGFib3V0Og0KPj4gJy1mc3RyaWN0LWZsZXgtYXJyYXlz4oCZDQo+PiAgICAgIFRyZWF0IHRo ZSB0cmFpbGluZyBhcnJheSBvZiBhIHN0cnVjdHVyZSBhcyBhIHZhcmlhYmxlLWxlbmd0aCBhcnJh eQ0KPj4gICAgICAgaW4gYSBzdHJpY3RlciB3YXkuDQo+PiA/DQo+IA0KPiBJIGRvbid0IHRoaW5r IHRhbGtpbmcgYWJvdXQgdmFyaWFibGUgbGVuZ3RoIGFycmF5cyBpbiB0aGlzIGNvbnRleHQNCj4g d291bGQgYmUgYXBwcm9wcmlhdGUgKHRoZXkncmUgYSBkaWZmZXJlbnQgdGhpbmcpLiAgVGhlIGNv bmNlcm4gaW4NCj4gdGhlIHJldmlldyBhYm92ZSB3YXMgdGhhdCB0aGUgYSBpbiBzb21ldGhpbmcg bGlrZQ0KPiANCj4gIHN0cnVjdCB7IGludCBuLCBhWzFdOyB9IHM7DQo+IA0KPiBpcyB0cmVhdGVk IGFzIGEgZmxleGlibGUgYXJyYXkgbWVtYmVyIG9ubHkgZm9yIHRoZSBwdXJwb3NlcyBvZg0KPiBh Y2Nlc3NpbmcgYSdzIGVsZW1lbnRzLCBidXQgbm90IGFsc28gaW4gYSBzaXplb2YgZXhwcmVzc2lv biwgZm9yDQo+IGluc3RhbmNlLiAgc2l6ZW9mIHMuYSBpcyAxIHJlZ2FyZGxlc3Mgb2YgdGhlIC1m c3RyaWN0LWZsZXgtYXJyYXlzDQo+IGFyZ3VtZW50LCBidXQgaWYgcy5hIHdlcmUgY29uc2lkZXJl ZCBhIGZsZXhpYmxlIGFycmF5IG1lbWJlciB0aGVuDQo+IHNpemVvZiBzLmEgd291bGQgYSBjb25z dHJhaW50IHZpb2xhdGlvbi4gIFNpbWlsYXJseSwgaWYgcy5hIHdlcmUNCj4gdHJlYXRlZCBhcyBh IEZBTSB0aGUgZGVmaW5pdGlvbiBvZiBzIHdvdWxkIHBlZGFudGljYWxseSBzcGVha2luZw0KPiBi ZSBpbnZhbGlkLCBhbmQgcydzIHNpemUgd291bGQgYmUgZXF1YWwgdG8gc2l6ZW9mIChpbnQpIGJl Y2F1c2UNCj4gR0NDIGFjY2VwdHMgdGhlIGRlZmludGlvbiBidXQgYWRkcyBubyBwYWRkaW5nLg0K DQpPa2F5LCB1bmRlcnN0b29kIG5vdy4gIC06KQ0KPiANCj4gT25lIHdheSB0byBhdm9pZCBpbXBs eWluZyB0aGF0IG1pZ2h0IGJlIHF1YWxpZnlpbmcgdGhlIGRlc2NyaXB0aW9uDQo+IHdpdGggd2hh dCBJIHN1Z2dlc3RlZCBhYm92ZToNCj4gDQo+ICBDb250cm9sIHdoZW4gdG8gdHJlYXQgdGhlIHRy YWlsaW5nIGFycmF5IG9mIGEgc3RydWN0dXJlIGFzDQo+ICBhIGZsZXhpYmxlIGFycmF5IG1lbWJl ciBmb3IgdGhlIHB1cnBvc2VzIG9mIGFjY2Vzc2luZw0KPiAgdGhlIGVsZW1lbnRzIG9mIHN1Y2gg YW4gYXJyYXkuDQoNCk9rYXksIEkgd2lsbCB1c2UgdGhpcywgSSB0aGluayBpdOKAmXMgZ29vZCBl bm91Z2guDQoNClRoYW5rIHlvdSENCg0KDQo+IA0KPiBCdXQgSSdtIHN1cmUgdGhlcmUgYXJlIGJl dHRlciB3YXlzIHRvIHB1dCBpdC4NCj4gDQo+IEluIGFkZGl0aW9uLCBpdCBzaG91bGQgcHJvYmFi bHkgYWxzbyBiZSBtYWRlIGNsZWFyIHdoZXRoZXIgdGhpcw0KPiBzdGF5cyB0aGUgc2FtZSB3aGVu IGFuIG9iamVjdCBvZiBzdWNoIGEgc3RydWN0dXJlIGlzIGl0c2VsZg0KPiBhIHN1Ym9iamVjdCBv ZiBhbm90aGVyIGFnZ3JlZ2F0ZSAoYXJyYXkgb3Igc3RydWN0KS4gIEUuZy4sDQo+IA0KPiAgc3Ry dWN0IEEgeyBpbnQgbiwgYVsxXTsgfTsNCj4gIHN0cnVjdCBBIGFbMl07ICAgICAgICAgICAgICAg ICAgICAgICAvLyBpcyBhLmEgdHJlYXRlZCBhcyBhIEZBTT8NCj4gIHN0cnVjdCBCIHsgc3RydWN0 IEEgYTsgfSBiOyAgICAgICAgICAvLyBpcyBiLmEuYSB0cmVhdGVkIGFzIGEgRkFNPw0KPiAgc3Ry dWN0IEMgeyBzdHJ1Y3QgQSBhOyBpbnQgaTsgfSBjOyAgIC8vIGhvdyBhYm91dCBjLmEuYT8NCg0K WWVzLCByaWdodCBub3csIGl0IHN0YXkgdGhlIHNhbWUgYmVoYXZpb3IgYXMgYmVmb3JlLiANCkJ1 dCBJIGFtIG5vdCBzdXJlIHdoZXRoZXIgdGhlIGN1cnJlbnQgYmVoYXZpb3IgaXMgY29ycmVjdCBv ciBub3QuIA0KDQpBbnkgc3VnZ2VzdGlvbiBoZXJlPw0KDQo+IA0KPiBGaW5hbGx5LCBhbmQgd2l0 aCB0aGUgY2F2ZWF0IHRoYXQgSSBoYXZlbid0IGJlZW4gdmVyeSBjbG9zZQ0KPiBhdHRlbnRpb24g dG8gdGhlIEdDQyBwYXRjaGVzIHNvIHRoaXMgbWF5IG5vdCBiZSBhbiBpc3N1ZSwgYnV0IEkgaGF2 ZQ0KPiB0aGUgaW1wcmVzc2lvbiB0aGF0IHRoZSBkZWNpc2lvbiBpbiBDbGFuZyBpcyB0byBsZXQg LVdhcnJheS1ib3VuZHMNCj4gdHJpZ2dlciAoYXQgbGVhc3Qgc29tZXdoYXQpIGluZGVwZW5kZW50 bHkgb2YgLWZzdHJpY3QtZmxleC1hcnJheXMuDQo+IFRoZSBnb2FsIGlzIHRvIG1ha2UgaXQgcG9z c2libGUgdG8gZGlhZ25vc2UgbWlzdXNlcyB3aXRob3V0IGNhdXNpbmcNCj4gcnVudGltZSBlcnJv cnMuDQoNCllvdSBtZWFuIHRoYXQgaW4gQ2xhbmcsICAtV2FycmF5LWJvdW5kcyB3aWxsIE5PVCBi ZSBhZGp1c3RlZCB3aXRoIGRpZmZlcmVudCBsZXZlbCBvZiAtZnN0cmljdC1mbGV4LWFycmF5Pw0K SWYgc28sIEkgZG9u4oCZdCB0aGluayB0aGF04oCZcyBhIGdvb2QgaWRlYS4NCg0KPiAgVGhpcyBo YXMgYWxzbyBiZWVuIHRoZSBoaXN0b3JpY2FsIEdDQyBiZWhhdmlvciB0aGF0DQo+IEkgdGhpbmsg aXQgc2hvdWxkIGJlIG1haW50YWluZWQgZ29pbmcgZm9yd2FyZC4NCg0KSSB0aGluayB0aGF0IC1X YXJyYXktYm91bmRzIG5lZWQgdG8gYmUgYWRqdXN0ZWQgdG8gcmVmbGVjdCB0aGUgZGlmZmVyZW50 IGxldmVsIG9mIC1mc3RyaWN0LWZsZXgtYXJyYXkuIA0KT25seSB3aGVuIGFsbCB0aGUgcGhhc2Vz IChib3RoIGFuYWx5c2lzIHBoYXNlIGFuZCB3YXJuaW5nIHBoYXNlcykgaW4gR0NDIGNhbiBiZWhh dmlvciBjb25zaXN0ZW50bHksIHdlIGNhbiBjb25zaXN0ZW50bHkgZW5jb3VyYWdlIHRoZSBzdGFu ZGFyZCBjb25mb3JtaW5nIGNvZGluZyBzdHlsZS4NCk90aGVyd2lzZSwgdGhlIHVzZXIgYW5kIGRl dmVsb3BlcnMgd2lsbCBiZSBldmVuIG1vcmUgY29uZnVzaW5nIHdpdGggYW5vdGhlciBpbmNvbnNp c3RlbmN5IGFkZGVkIGludG8gR0NDLg0KDQpRaW5nIA0KPiANCj4gTWFydGluDQo+IA0KPj4+IA0K Pj4+PiBUaGUgcG9zaXRpdmUgZm9ybSBpcyBlcXVpdmFsZW50IHRvDQo+Pj4+ICAgICAgJy1mc3Ry aWN0LWZsZXgtYXJyYXlzPTMnLCB3aGljaCBpcyB0aGUgc3RyaWN0ZXN0LiAgQSB0cmFpbGluZyBh cnJheQ0KPj4+PiAgICAgIGlzIHRyZWF0ZWQgYXMgYSBmbGV4aWJsZSBhcnJheSBtZW1iZXIgb25s eSB3aGVuIGl0IGlzIGRlY2xhcmVkIGFzIGENCj4+Pj4gICAgICBmbGV4aWJsZSBhcnJheSBtZW1i ZXIgcGVyIEM5OSBzdGFuZGFyZCBvbndhcmRzLiAgVGhlIG5lZ2F0aXZlIGZvcm0NCj4+Pj4gICAg ICBpcyBlcXVpdmFsZW50IHRvICctZnN0cmljdC1mbGV4LWFycmF5cz0wJywgd2hpY2ggaXMgdGhl IGxlYXN0DQo+Pj4+ICAgICAgc3RyaWN0LiAgQWxsIHRyYWlsaW5nIGFycmF5cyBvZiBzdHJ1Y3R1 cmVzIGFyZSB0cmVhdGVkIGFzIGZsZXhpYmxlDQo+Pj4+ICAgICAgYXJyYXkgbWVtYmVycy4NCj4+ Pj4gJy1mc3RyaWN0LWZsZXgtYXJyYXlzPUxFVkVMJw0KPj4+PiAgICAgIFRyZWF0IHRoZSB0cmFp bGluZyBhcnJheSBvZiBhIHN0cnVjdHVyZSBhcyBhIGZsZXhpYmxlIGFycmF5IG1lbWJlcg0KPj4+ PiAgICAgIGluIGEgc3RyaWN0ZXIgd2F5LiAgVGhlIHZhbHVlIG9mIExFVkVMIGNvbnRyb2xzIHRo ZSBsZXZlbCBvZg0KPj4+PiAgICAgIHN0cmljdG5lc3MuDQo+Pj4+ICAgICAgVGhlIHBvc3NpYmxl IHZhbHVlcyBvZiBMRVZFTCBhcmUgdGhlIHNhbWUgYXMgZm9yIHRoZQ0KPj4+PiAgICAgICdzdHJp Y3RfZmxleF9hcnJheXMnIGF0dHJpYnV0ZSAoKm5vdGUgVmFyaWFibGUgQXR0cmlidXRlczo6KS4N Cj4+Pj4gICAgICBZb3UgY2FuIGNvbnRyb2wgdGhpcyBiZWhhdmlvciBmb3IgYSBzcGVjaWZpYyB0 cmFpbGluZyBhcnJheSBmaWVsZA0KPj4+PiAgICAgIG9mIGEgc3RydWN0dXJlIGJ5IHVzaW5nIHRo ZSB2YXJpYWJsZSBhdHRyaWJ1dGUgJ3N0cmljdF9mbGV4X2FycmF5cycNCj4+Pj4gICAgICBhdHRy aWJ1dGUgKCpub3RlIFZhcmlhYmxlIEF0dHJpYnV0ZXM6OikuDQo+Pj4+ICdzdHJpY3RfZmxleF9h cnJheXMgKExFVkVMKScNCj4+Pj4gICAgICBUaGUgJ3N0cmljdF9mbGV4X2FycmF5cycgYXR0cmli dXRlIHNob3VsZCBiZSBhdHRhY2hlZCB0byB0aGUNCj4+Pj4gICAgICB0cmFpbGluZyBhcnJheSBm aWVsZCBvZiBhIHN0cnVjdHVyZS4gIEl0IHNwZWNpZmllcyB0aGUgbGV2ZWwgb2YNCj4+Pj4gICAg ICBzdHJpY3RuZXNzIG9mIHRyZWF0aW5nIHRoZSB0cmFpbGluZyBhcnJheSBmaWVsZCBvZiBhIHN0 cnVjdHVyZSBhcyBhDQo+Pj4+ICAgICAgZmxleGlibGUgYXJyYXkgbWVtYmVyLiAgTEVWRUwgbXVz dCBiZSBhbiBpbnRlZ2VyIGJldHdlbiAwIHRvIDMuDQo+Pj4gDQo+Pj4gDQo+Pj4gU2luY2UgdGhl IGF0dHJpYnV0ZSBhcHBsaWVzIHRvIGp1c3QgYSBzaW5nbGUgYXJyYXkgZGVjbGFyYXRpb24gaXQN Cj4+PiBzZWVtcyB0aGF0IGl0cyBuYW1lIHNob3VsZCBiZSBzdHJpY3RfZmxleF9hcnJheSAoaS5l Liwgc2luZ3VsYXIsDQo+Pj4gd2l0aG91dCB0aGUgdHJhaWxpbmcgJ3MnKS4NCj4+IFdpbGwgbWFr ZSB0aGUgY2hhbmdlIGFzIHlvdSBzdWdnZXN0ZWQuDQo+PiBUaGFua3MuDQo+PiBRaW5nDQo+Pj4g DQo+Pj4gTWFydGluDQo+Pj4gDQo+Pj4+ICAgICAgTEVWRUw9MCBpcyB0aGUgbGVhc3Qgc3RyaWN0 IGxldmVsLCBhbGwgdHJhaWxpbmcgYXJyYXlzIG9mDQo+Pj4+ICAgICAgc3RydWN0dXJlcyBhcmUg dHJlYXRlZCBhcyBmbGV4aWJsZSBhcnJheSBtZW1iZXJzLiAgTEVWRUw9MyBpcyB0aGUNCj4+Pj4g ICAgICBzdHJpY3Rlc3QgbGV2ZWwsIG9ubHkgd2hlbiB0aGUgdHJhaWxpbmcgYXJyYXkgaXMgZGVj bGFyZWQgYXMgYQ0KPj4+PiAgICAgIGZsZXhpYmxlIGFycmF5IG1lbWJlciBwZXIgQzk5IHN0YW5k YXJkIG9ud2FyZHMgKCdbXScpLCBpdCBpcw0KPj4+PiAgICAgIHRyZWF0ZWQgYXMgYSBmbGV4aWJs ZSBhcnJheSBtZW1iZXIuDQo+Pj4+ICAgICAgVGhlcmUgYXJlIHR3byBtb3JlIGxldmVscyBpbiBi ZXR3ZWVuIDAgYW5kIDMsIHdoaWNoIGFyZSBwcm92aWRlZCB0bw0KPj4+PiAgICAgIHN1cHBvcnQg b2xkZXIgY29kZXMgdGhhdCB1c2UgR0NDIHplcm8tbGVuZ3RoIGFycmF5IGV4dGVuc2lvbg0KPj4+ PiAgICAgICgnWzBdJykgb3Igb25lLXNpemUgYXJyYXkgYXMgZmxleGlibGUgYXJyYXkgbWVtYmVy ICgnWzFdJyk6IFdoZW4NCj4+Pj4gICAgICBMRVZFTCBpcyAxLCB0aGUgdHJhaWxpbmcgYXJyYXkg aXMgdHJlYXRlZCBhcyBhIGZsZXhpYmxlIGFycmF5DQo+Pj4+ICAgICAgbWVtYmVyIHdoZW4gaXQg aXMgZGVjbGFyZWQgYXMgZWl0aGVyICdbXScsICdbMF0nLCBvciAnWzFdJzsgV2hlbg0KPj4+PiAg ICAgIExFVkVMIGlzIDIsIHRoZSB0cmFpbGluZyBhcnJheSBpcyB0cmVhdGVkIGFzIGEgZmxleGli bGUgYXJyYXkNCj4+Pj4gICAgICBtZW1iZXIgd2hlbiBpdCBpcyBkZWNsYXJlZCBhcyBlaXRoZXIg J1tdJywgb3IgJ1swXScuDQo+Pj4+ICAgICAgVGhpcyBhdHRyaWJ1dGUgY2FuIGJlIHVzZWQgd2l0 aCBvciB3aXRob3V0IHRoZQ0KPj4+PiAgICAgICctZnN0cmljdC1mbGV4LWFycmF5cycuICBXaGVu IGJvdGggdGhlIGF0dHJpYnV0ZSBhbmQgdGhlIG9wdGlvbg0KPj4+PiAgICAgIHByZXNlbnQgYXQg dGhlIHNhbWUgdGltZSwgdGhlIGxldmVsIG9mIHRoZSBzdHJpY3RuZXNzIGZvciB0aGUNCj4+Pj4g ICAgICBzcGVjaWZpYyB0cmFpbGluZyBhcnJheSBmaWVsZCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBh dHRyaWJ1dGUuDQo+Pj4+IGdjYy9jLWZhbWlseS9DaGFuZ2VMb2c6DQo+Pj4+IAkqIGMtYXR0cmli cy5jYyAoaGFuZGxlX3N0cmljdF9mbGV4X2FycmF5c19hdHRyaWJ1dGUpOiBOZXcgZnVuY3Rpb24u DQo+Pj4+IAkoY19jb21tb25fYXR0cmlidXRlX3RhYmxlKTogTmV3IGl0ZW0gZm9yIHN0cmljdF9m bGV4X2FycmF5cy4NCj4+Pj4gCSogYy5vcHQ6IChmc3RyaWN0LWZsZXgtYXJyYXlzKTogTmV3IG9w dGlvbi4NCj4+Pj4gCShmc3RyaWN0LWZsZXgtYXJyYXlzPSk6IE5ldyBvcHRpb24uDQo+Pj4+IGdj Yy9jL0NoYW5nZUxvZzoNCj4+Pj4gCSogYy1kZWNsLmNjIChmbGV4aWJsZV9hcnJheV9tZW1iZXJf dHlwZV9wKTogTmV3IGZ1bmN0aW9uLg0KPj4+PiAJKG9uZV9lbGVtZW50X2FycmF5X3R5cGVfcCk6 IExpa2V3aXNlLg0KPj4+PiAJKHplcm9fbGVuZ3RoX2FycmF5X3R5cGVfcCk6IExpa2V3aXNlLg0K Pj4+PiAJKGFkZF9mbGV4aWJsZV9hcnJheV9lbHRzX3RvX3NpemUpOiBDYWxsIG5ldyB1dGlsaXR5 DQo+Pj4+IAlyb3V0aW5lIGZsZXhpYmxlX2FycmF5X21lbWJlcl90eXBlX3AuDQo+Pj4+IAkoaXNf ZmxleGlibGVfYXJyYXlfbWVtYmVyX3ApOiBOZXcgZnVuY3Rpb24uDQo+Pj4+IAkoZmluaXNoX3N0 cnVjdCk6IFNldCB0aGUgbmV3IERFQ0xfTk9UX0ZMRVhBUlJBWSBmbGFnLg0KPj4+PiBnY2MvY3Av Q2hhbmdlTG9nOg0KPj4+PiAJKiBtb2R1bGUuY2MgKHRyZWVzX291dDo6Y29yZV9ib29scyk6IFN0 cmVhbSBvdXQgbmV3IGJpdA0KPj4+PiAJZGVjbF9ub3RfZmxleGFycmF5Lg0KPj4+PiAJKHRyZWVz X2luOjpjb3JlX2Jvb2xzKTogU3RyZWFtIGluIG5ldyBiaXQgZGVjbF9ub3RfZmxleGFycmF5Lg0K Pj4+PiBnY2MvQ2hhbmdlTG9nOg0KPj4+PiAJKiBkb2MvZXh0ZW5kLnRleGk6IERvY3VtZW50IHN0 cmljdF9mbGV4X2FycmF5cyBhdHRyaWJ1dGUuDQo+Pj4+IAkqIGRvYy9pbnZva2UudGV4aTogRG9j dW1lbnQgLWZzdHJpY3QtZmxleC1hcnJheXNbPW5dIG9wdGlvbi4NCj4+Pj4gCSogcHJpbnQtdHJl ZS5jYyAocHJpbnRfbm9kZSk6IFByaW50IG5ldyBiaXQgZGVjbF9ub3RfZmxleGFycmF5Lg0KPj4+ PiAJKiB0cmVlLWNvcmUuaCAoc3RydWN0IHRyZWVfZGVjbF9jb21tb24pOiBOZXcgYml0IGZpZWxk DQo+Pj4+IAlkZWNsX25vdF9mbGV4YXJyYXkuDQo+Pj4+IAkqIHRyZWUtc3RyZWFtZXItaW4uY2Mg KHVucGFja190c19kZWNsX2NvbW1vbl92YWx1ZV9maWVsZHMpOiBTdHJlYW0NCj4+Pj4gCWluIG5l dyBiaXQgZGVjbF9ub3RfZmxleGFycmF5Lg0KPj4+PiAJKiB0cmVlLXN0cmVhbWVyLW91dC5jYyAo cGFja190c19kZWNsX2NvbW1vbl92YWx1ZV9maWVsZHMpOiBTdHJlYW0NCj4+Pj4gCW91dCBuZXcg Yml0IGRlY2xfbm90X2ZsZXhhcnJheS4NCj4+Pj4gCSogdHJlZS5jYyAoYXJyYXlfYXRfc3RydWN0 X2VuZF9wKTogVXBkYXRlIGl0IHdpdGggdGhlIG5ldyBiaXQgZmllbGQNCj4+Pj4gCWRlY2xfbm90 X2ZsZXhhcnJheS4NCj4+Pj4gCSogdHJlZS5oIChERUNMX05PVF9GTEVYQVJSQVkpOiBOZXcgZmxh Zy4NCj4+Pj4gZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6DQo+Pj4+IAkqIGcrKy5kZy9zdHJpY3Qt ZmxleC1hcnJheS0xLkM6IE5ldyB0ZXN0Lg0KPj4+PiAJKiBnY2MuZGcvc3RyaWN0LWZsZXgtYXJy YXktMS5jOiBOZXcgdGVzdC4NCj4+Pj4gLS0tDQo+Pj4+ICBnY2MvYy1mYW1pbHkvYy1hdHRyaWJz LmNjICAgICAgICAgICAgICAgICAgfCAgNDcgKysrKysrKysNCj4+Pj4gIGdjYy9jLWZhbWlseS9j Lm9wdCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNyArKw0KPj4+PiAgZ2NjL2MvYy1kZWNs LmNjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTMwICsrKysrKysrKysrKysrKysrKyst LQ0KPj4+PiAgZ2NjL2NwL21vZHVsZS5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAy ICsNCj4+Pj4gIGdjYy9kb2MvZXh0ZW5kLnRleGkgICAgICAgICAgICAgICAgICAgICAgICB8ICAy NSArKysrDQo+Pj4+ICBnY2MvZG9jL2ludm9rZS50ZXhpICAgICAgICAgICAgICAgICAgICAgICAg fCAgMjcgKysrKy0NCj4+Pj4gIGdjYy9wcmludC10cmVlLmNjICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgOCArLQ0KPj4+PiAgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvc3RyaWN0LWZsZXgtYXJy YXktMS5DIHwgIDMxICsrKysrDQo+Pj4+ICBnY2MvdGVzdHN1aXRlL2djYy5kZy9zdHJpY3QtZmxl eC1hcnJheS0xLmMgfCAgMzEgKysrKysNCj4+Pj4gIGdjYy90cmVlLWNvcmUuaCAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgNSArLQ0KPj4+PiAgZ2NjL3RyZWUtc3RyZWFtZXItaW4uY2Mg ICAgICAgICAgICAgICAgICAgIHwgICAxICsNCj4+Pj4gIGdjYy90cmVlLXN0cmVhbWVyLW91dC5j YyAgICAgICAgICAgICAgICAgICB8ICAgMSArDQo+Pj4+ICBnY2MvdHJlZS5jYyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgNDUgKysrKystLQ0KPj4+PiAgZ2NjL3RyZWUuaCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE0ICsrLQ0KPj4+PiAgMTQgZmlsZXMgY2hh bmdlZCwgMzQ2IGluc2VydGlvbnMoKyksIDI4IGRlbGV0aW9ucygtKQ0KPj4+PiAgY3JlYXRlIG1v ZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRnL3N0cmljdC1mbGV4LWFycmF5LTEuQw0KPj4+ PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3N0cmljdC1mbGV4LWFy cmF5LTEuYw0KPj4+PiBkaWZmIC0tZ2l0IGEvZ2NjL2MtZmFtaWx5L2MtYXR0cmlicy5jYyBiL2dj Yy9jLWZhbWlseS9jLWF0dHJpYnMuY2MNCj4+Pj4gaW5kZXggOGJiODBlMjUxZGMyLi4wYmVjZDRi YmU4ZDIgMTAwNjQ0DQo+Pj4+IC0tLSBhL2djYy9jLWZhbWlseS9jLWF0dHJpYnMuY2MNCj4+Pj4g KysrIGIvZ2NjL2MtZmFtaWx5L2MtYXR0cmlicy5jYw0KPj4+PiBAQCAtMTAxLDYgKzEwMSw4IEBA IHN0YXRpYyB0cmVlIGhhbmRsZV9zcGVjaWFsX3Zhcl9zZWNfYXR0cmlidXRlICh0cmVlICosIHRy ZWUsIHRyZWUsIGludCwgYm9vbCAqKTsNCj4+Pj4gIHN0YXRpYyB0cmVlIGhhbmRsZV9hbGlnbmVk X2F0dHJpYnV0ZSAodHJlZSAqLCB0cmVlLCB0cmVlLCBpbnQsIGJvb2wgKik7DQo+Pj4+ICBzdGF0 aWMgdHJlZSBoYW5kbGVfd2Fybl9pZl9ub3RfYWxpZ25lZF9hdHRyaWJ1dGUgKHRyZWUgKiwgdHJl ZSwgdHJlZSwNCj4+Pj4gIAkJCQkJCSAgaW50LCBib29sICopOw0KPj4+PiArc3RhdGljIHRyZWUg aGFuZGxlX3N0cmljdF9mbGV4X2FycmF5c19hdHRyaWJ1dGUgKHRyZWUgKiwgdHJlZSwgdHJlZSwN Cj4+Pj4gKwkJCQkJCSBpbnQsIGJvb2wgKik7DQo+Pj4+ICBzdGF0aWMgdHJlZSBoYW5kbGVfd2Vh a19hdHRyaWJ1dGUgKHRyZWUgKiwgdHJlZSwgdHJlZSwgaW50LCBib29sICopIDsNCj4+Pj4gIHN0 YXRpYyB0cmVlIGhhbmRsZV9ub3BsdF9hdHRyaWJ1dGUgKHRyZWUgKiwgdHJlZSwgdHJlZSwgaW50 LCBib29sICopIDsNCj4+Pj4gIHN0YXRpYyB0cmVlIGhhbmRsZV9hbGlhc19pZnVuY19hdHRyaWJ1 dGUgKGJvb2wsIHRyZWUgKiwgdHJlZSwgdHJlZSwgYm9vbCAqKTsNCj4+Pj4gQEAgLTM2OCw2ICsz NzAsOCBAQCBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX3NwZWMgY19jb21tb25fYXR0cmlidXRlX3Rh YmxlW10gPQ0KPj4+PiAgCSAgICAgICAgICAgICAgICAgICAgICBhdHRyX2FsaWduZWRfZXhjbHVz aW9ucyB9LA0KPj4+PiAgICB7ICJ3YXJuX2lmX25vdF9hbGlnbmVkIiwgICAgMCwgMSwgZmFsc2Us IGZhbHNlLCBmYWxzZSwgZmFsc2UsDQo+Pj4+ICAJCQkgICAgICBoYW5kbGVfd2Fybl9pZl9ub3Rf YWxpZ25lZF9hdHRyaWJ1dGUsIE5VTEwgfSwNCj4+Pj4gKyAgeyAic3RyaWN0X2ZsZXhfYXJyYXlz IiwgICAgICAxLCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwNCj4+Pj4gKwkJCSAgICAg IGhhbmRsZV9zdHJpY3RfZmxleF9hcnJheXNfYXR0cmlidXRlLCBOVUxMIH0sDQo+Pj4+ICAgIHsg IndlYWsiLCAgICAgICAgICAgICAgICAgICAwLCAwLCB0cnVlLCAgZmFsc2UsIGZhbHNlLCBmYWxz ZSwNCj4+Pj4gIAkJCSAgICAgIGhhbmRsZV93ZWFrX2F0dHJpYnV0ZSwgTlVMTCB9LA0KPj4+PiAg ICB7ICJub3BsdCIsICAgICAgICAgICAgICAgICAgIDAsIDAsIHRydWUsICBmYWxzZSwgZmFsc2Us IGZhbHNlLA0KPj4+PiBAQCAtMjUwNSw2ICsyNTA5LDQ5IEBAIGhhbmRsZV93YXJuX2lmX25vdF9h bGlnbmVkX2F0dHJpYnV0ZSAodHJlZSAqbm9kZSwgdHJlZSBuYW1lLA0KPj4+PiAgCQkJCQkgIG5v X2FkZF9hdHRycywgdHJ1ZSk7DQo+Pj4+ICB9DQo+Pj4+ICArLyogSGFuZGxlIGEgInN0cmljdF9m bGV4X2FycmF5cyIgYXR0cmlidXRlOyBhcmd1bWVudHMgYXMgaW4NCj4+Pj4gKyAgIHN0cnVjdCBh dHRyaWJ1dGVfc3BlYy5oYW5kbGVyLiAgKi8NCj4+Pj4gKw0KPj4+PiArc3RhdGljIHRyZWUNCj4+ Pj4gK2hhbmRsZV9zdHJpY3RfZmxleF9hcnJheXNfYXR0cmlidXRlICh0cmVlICpub2RlLCB0cmVl IG5hbWUsDQo+Pj4+ICsJCQkJICAgICB0cmVlIGFyZ3MsIGludCBBUkdfVU5VU0VEIChmbGFncyks DQo+Pj4+ICsJCQkJICAgICBib29sICpub19hZGRfYXR0cnMpDQo+Pj4+ICt7DQo+Pj4+ICsgIHRy ZWUgZGVjbCA9ICpub2RlOw0KPj4+PiArICB0cmVlIGFyZ3ZhbCA9IFRSRUVfVkFMVUUgKGFyZ3Mp Ow0KPj4+PiArDQo+Pj4+ICsgIC8qIFRoaXMgYXR0cmlidXRlIG9ubHkgYXBwbGllcyB0byBmaWVs ZCBkZWNscyBvZiBhIHN0cnVjdHVyZS4gICovDQo+Pj4+ICsgIGlmIChUUkVFX0NPREUgKGRlY2wp ICE9IEZJRUxEX0RFQ0wpDQo+Pj4+ICsgICAgew0KPj4+PiArICAgICAgZXJyb3JfYXQgKERFQ0xf U09VUkNFX0xPQ0FUSU9OIChkZWNsKSwNCj4+Pj4gKwkJIiVxRSBhdHRyaWJ1dGUgbWF5IG5vdCBi ZSBzcGVjaWZpZWQgZm9yICVxK0QiLCBuYW1lLCBkZWNsKTsNCj4+Pj4gKyAgICAgICpub19hZGRf YXR0cnMgPSB0cnVlOw0KPj4+PiArICAgIH0NCj4+Pj4gKyAgLyogVGhpcyBhdHRyaWJ1dGUgb25s eSBhcHBsaWVzIHRvIGZpZWxkIHdpdGggYXJyYXkgdHlwZS4gICovDQo+Pj4+ICsgIGVsc2UgaWYg KFRSRUVfQ09ERSAoVFJFRV9UWVBFIChkZWNsKSkgIT0gQVJSQVlfVFlQRSkNCj4+Pj4gKyAgICB7 DQo+Pj4+ICsgICAgICBlcnJvcl9hdCAoREVDTF9TT1VSQ0VfTE9DQVRJT04gKGRlY2wpLA0KPj4+ PiArCQkiJXFFIGF0dHJpYnV0ZSBtYXkgbm90IGJlIHNwZWNpZmllZCBmb3IgYSBub24tYXJyYXkg ZmllbGQiLA0KPj4+PiArCQluYW1lKTsNCj4+Pj4gKyAgICAgICpub19hZGRfYXR0cnMgPSB0cnVl Ow0KPj4+PiArICAgIH0NCj4+Pj4gKyAgZWxzZSBpZiAoVFJFRV9DT0RFIChhcmd2YWwpICE9IElO VEVHRVJfQ1NUKQ0KPj4+PiArICAgIHsNCj4+Pj4gKyAgICAgIGVycm9yX2F0IChERUNMX1NPVVJD RV9MT0NBVElPTiAoZGVjbCksDQo+Pj4+ICsJCSIlcUUgYXR0cmlidXRlIGFyZ3VtZW50IG5vdCBh biBpbnRlZ2VyIiwgbmFtZSk7DQo+Pj4+ICsgICAgICAqbm9fYWRkX2F0dHJzID0gdHJ1ZTsNCj4+ Pj4gKyAgICB9DQo+Pj4+ICsgIGVsc2UgaWYgKCF0cmVlX2ZpdHNfdWh3aV9wIChhcmd2YWwpIHx8 IHRyZWVfdG9fdWh3aSAoYXJndmFsKSA+IDMpDQo+Pj4+ICsgICAgew0KPj4+PiArICAgICAgZXJy b3JfYXQgKERFQ0xfU09VUkNFX0xPQ0FUSU9OIChkZWNsKSwNCj4+Pj4gKwkJIiVxRSBhdHRyaWJ1 dGUgYXJndW1lbnQgJXFFIGlzIG5vdCBhbiBpbnRlZ2VyIGNvbnN0YW50Ig0KPj4+PiArCQkiIGJl dHdlZW4gMCBhbmQgMyIsIG5hbWUsIGFyZ3ZhbCk7DQo+Pj4+ICsgICAgICAqbm9fYWRkX2F0dHJz ID0gdHJ1ZTsNCj4+Pj4gKyAgICB9DQo+Pj4+ICsNCj4+Pj4gKyAgcmV0dXJuIE5VTExfVFJFRTsN Cj4+Pj4gK30NCj4+Pj4gKw0KPj4+PiAgLyogSGFuZGxlIGEgIndlYWsiIGF0dHJpYnV0ZTsgYXJn dW1lbnRzIGFzIGluDQo+Pj4+ICAgICBzdHJ1Y3QgYXR0cmlidXRlX3NwZWMuaGFuZGxlci4gICov DQo+Pj4+ICBkaWZmIC0tZ2l0IGEvZ2NjL2MtZmFtaWx5L2Mub3B0IGIvZ2NjL2MtZmFtaWx5L2Mu b3B0DQo+Pj4+IGluZGV4IDQ1MTU2NjRhYTU5MC4uZTA1M2JkOTM5NTU5IDEwMDY0NA0KPj4+PiAt LS0gYS9nY2MvYy1mYW1pbHkvYy5vcHQNCj4+Pj4gKysrIGIvZ2NjL2MtZmFtaWx5L2Mub3B0DQo+ Pj4+IEBAIC0yMDcyLDYgKzIwNzIsMTMgQEAgZnNpemVkLWRlYWxsb2NhdGlvbg0KPj4+PiAgQysr IE9iakMrKyBWYXIoZmxhZ19zaXplZF9kZWFsbG9jYXRpb24pIEluaXQoLTEpDQo+Pj4+ICBFbmFi bGUgQysrMTQgc2l6ZWQgZGVhbGxvY2F0aW9uIHN1cHBvcnQuDQo+Pj4+ICArZnN0cmljdC1mbGV4 LWFycmF5cw0KPj4+PiArQyBDKysgQ29tbW9uIEFsaWFzKGZzdHJpY3QtZmxleC1hcnJheXM9LDMs MCkNCj4+Pj4gKw0KPj4+PiArZnN0cmljdC1mbGV4LWFycmF5cz0NCj4+Pj4gK0MgQysrIENvbW1v biBKb2luZWQgUmVqZWN0TmVnYXRpdmUgVUludGVnZXIgVmFyKGZsYWdfc3RyaWN0X2ZsZXhfYXJy YXlzKSBJbml0KDApIEludGVnZXJSYW5nZSgwLDMpDQo+Pj4+ICstZnN0cmljdC1mbGV4LWFycmF5 cz08bGV2ZWw+ICAgIFRyZWF0IHRoZSB0cmFpbGluZyBhcnJheSBvZiBhIHN0cnVjdHVyZSBhcyBh IGZsZXhpYmxlIGFycmF5IGluIGEgc3RyaWN0ZXIgd2F5LiAgVGhlIGRlZmF1bHQgaXMgdHJlYXRp bmcgYWxsIHRyYWlsaW5nIGFycmF5cyBvZiBzdHJ1Y3R1cmVzIGFzIGZsZXhpYmxlIGFycmF5cy4N Cj4+Pj4gKw0KPj4+PiAgZnNxdWFuZ2xlDQo+Pj4+ICBDKysgT2JqQysrIFdhcm5SZW1vdmVkDQo+ Pj4+ICBkaWZmIC0tZ2l0IGEvZ2NjL2MvYy1kZWNsLmNjIGIvZ2NjL2MvYy1kZWNsLmNjDQo+Pj4+ IGluZGV4IDM0ZjhmZWRhODk3Zi4uZWU5MDgwOGJjYjBlIDEwMDY0NA0KPj4+PiAtLS0gYS9nY2Mv Yy9jLWRlY2wuY2MNCj4+Pj4gKysrIGIvZ2NjL2MvYy1kZWNsLmNjDQo+Pj4+IEBAIC01MDA1LDYg KzUwMDUsNDEgQEAgc2V0X2FycmF5X2RlY2xhcmF0b3JfaW5uZXIgKHN0cnVjdCBjX2RlY2xhcmF0 b3IgKmRlY2wsDQo+Pj4+ICAgIHJldHVybiBkZWNsOw0KPj4+PiAgfQ0KPj4+PiAgKy8qIERldGVy bWluZSB3aGV0aGVyIFRZUEUgaXMgYSBJU08gQzk5IGZsZXhpYmxlIGFycmF5IG1lbWViZXIgdHlw ZSAiW10iLiAgKi8NCj4+Pj4gK3N0YXRpYyBib29sDQo+Pj4+ICtmbGV4aWJsZV9hcnJheV9tZW1i ZXJfdHlwZV9wIChjb25zdF90cmVlIHR5cGUpDQo+Pj4+ICt7DQo+Pj4+ICsgIGlmIChUUkVFX0NP REUgKHR5cGUpID09IEFSUkFZX1RZUEUNCj4+Pj4gKyAgICAgICYmIFRZUEVfU0laRSAodHlwZSkg PT0gTlVMTF9UUkVFDQo+Pj4+ICsgICAgICAmJiBUWVBFX0RPTUFJTiAodHlwZSkgIT0gTlVMTF9U UkVFDQo+Pj4+ICsgICAgICAmJiBUWVBFX01BWF9WQUxVRSAoVFlQRV9ET01BSU4gKHR5cGUpKSA9 PSBOVUxMX1RSRUUpDQo+Pj4+ICsgICAgcmV0dXJuIHRydWU7DQo+Pj4+ICsNCj4+Pj4gKyAgcmV0 dXJuIGZhbHNlOw0KPj4+PiArfQ0KPj4+PiArDQo+Pj4+ICsvKiBEZXRlcm1pbmUgd2hldGhlciBU WVBFIGlzIGEgb25lLWVsZW1lbnQgYXJyYXkgdHlwZSAiWzFdIi4gICovDQo+Pj4+ICtzdGF0aWMg Ym9vbA0KPj4+PiArb25lX2VsZW1lbnRfYXJyYXlfdHlwZV9wIChjb25zdF90cmVlIHR5cGUpDQo+ Pj4+ICt7DQo+Pj4+ICsgIGlmIChUUkVFX0NPREUgKHR5cGUpICE9IEFSUkFZX1RZUEUpDQo+Pj4+ ICsgICAgcmV0dXJuIGZhbHNlOw0KPj4+PiArICByZXR1cm4gaW50ZWdlcl96ZXJvcCAoYXJyYXlf dHlwZV9uZWx0cyAodHlwZSkpOw0KPj4+PiArfQ0KPj4+PiArDQo+Pj4+ICsvKiBEZXRlcm1pbmUg d2hldGhlciBUWVBFIGlzIGEgemVyby1sZW5ndGggYXJyYXkgdHlwZSAiWzBdIi4gICovDQo+Pj4+ ICtzdGF0aWMgYm9vbA0KPj4+PiAremVyb19sZW5ndGhfYXJyYXlfdHlwZV9wIChjb25zdF90cmVl IHR5cGUpDQo+Pj4+ICt7DQo+Pj4+ICsgIGlmIChUUkVFX0NPREUgKHR5cGUpID09IEFSUkFZX1RZ UEUpDQo+Pj4+ICsgICAgaWYgKHRyZWUgdHlwZV9zaXplID0gVFlQRV9TSVpFX1VOSVQgKHR5cGUp KQ0KPj4+PiArICAgICAgaWYgKChpbnRlZ2VyX3plcm9wICh0eXBlX3NpemUpKQ0KPj4+PiArCSAg ICYmIFRZUEVfRE9NQUlOICh0eXBlKSAhPSBOVUxMX1RSRUUNCj4+Pj4gKwkgICAmJiBUWVBFX01B WF9WQUxVRSAoVFlQRV9ET01BSU4gKHR5cGUpKSA9PSBOVUxMX1RSRUUpDQo+Pj4+ICsJcmV0dXJu IHRydWU7DQo+Pj4+ICsgIHJldHVybiBmYWxzZTsNCj4+Pj4gK30NCj4+Pj4gKw0KPj4+PiAgLyog SU5JVCBpcyBhIGNvbnN0cnVjdG9yIHRoYXQgZm9ybXMgREVDTCdzIGluaXRpYWxpemVyLiAgSWYg dGhlIGZpbmFsDQo+Pj4+ICAgICBlbGVtZW50IGluaXRpYWxpemVzIGEgZmxleGlibGUgYXJyYXkg ZmllbGQsIGFkZCB0aGUgc2l6ZSBvZiB0aGF0DQo+Pj4+ICAgICBpbml0aWFsaXplciB0byBERUNM J3Mgc2l6ZS4gICovDQo+Pj4+IEBAIC01MDE5LDEwICs1MDU0LDcgQEAgYWRkX2ZsZXhpYmxlX2Fy cmF5X2VsdHNfdG9fc2l6ZSAodHJlZSBkZWNsLCB0cmVlIGluaXQpDQo+Pj4+ICAgICAgZWx0ID0g Q09OU1RSVUNUT1JfRUxUUyAoaW5pdCktPmxhc3QgKCkudmFsdWU7DQo+Pj4+ICAgIHR5cGUgPSBU UkVFX1RZUEUgKGVsdCk7DQo+Pj4+IC0gIGlmIChUUkVFX0NPREUgKHR5cGUpID09IEFSUkFZX1RZ UEUNCj4+Pj4gLSAgICAgICYmIFRZUEVfU0laRSAodHlwZSkgPT0gTlVMTF9UUkVFDQo+Pj4+IC0g ICAgICAmJiBUWVBFX0RPTUFJTiAodHlwZSkgIT0gTlVMTF9UUkVFDQo+Pj4+IC0gICAgICAmJiBU WVBFX01BWF9WQUxVRSAoVFlQRV9ET01BSU4gKHR5cGUpKSA9PSBOVUxMX1RSRUUpDQo+Pj4+ICsg IGlmIChmbGV4aWJsZV9hcnJheV9tZW1iZXJfdHlwZV9wICh0eXBlKSkNCj4+Pj4gICAgICB7DQo+ Pj4+ICAgICAgICBjb21wbGV0ZV9hcnJheV90eXBlICgmdHlwZSwgZWx0LCBmYWxzZSk7DQo+Pj4+ ICAgICAgICBERUNMX1NJWkUgKGRlY2wpDQo+Pj4+IEBAIC04NzEwLDYgKzg3NDIsODEgQEAgZmlu aXNoX2luY29tcGxldGVfdmFycyAodHJlZSBpbmNvbXBsZXRlX3ZhcnMsIGJvb2wgdG9wbGV2ZWwp DQo+Pj4+ICAgICAgfQ0KPj4+PiAgfQ0KPj4+PiAgKw0KPj4+PiArLyogRGV0ZXJtaW5lIHdoZXRo ZXIgdGhlIEZJRUxEX0RFQ0wgWCBpcyBhIGZsZXhpYmxlIGFycmF5IG1lbWJlciBhY2NvcmRpbmcg dG8NCj4+Pj4gKyAgIHRoZSBmb2xsb3dpbmcgaW5mbzoNCj4+Pj4gKyAgQS4gd2hldGhlciB0aGUg RklFTERfREVDTCBYIGlzIHRoZSBsYXN0IGZpZWxkIG9mIHRoZSBERUNMX0NPTlRFWFQ7DQo+Pj4+ ICsgIEIuIHdoZXRoZXIgdGhlIEZJRUxEX0RFQ0wgaXMgYW4gYXJyYXkgdGhhdCBpcyBkZWNsYXJl ZCBhcyAiW10iLCAiWzBdIiwNCj4+Pj4gKyAgICAgb3IgIlsxXSI7DQo+Pj4+ICsgIEMuIGZsYWdf c3RyaWN0X2ZsZXhfYXJyYXlzOw0KPj4+PiArICBELiB0aGUgYXR0cmlidXRlIHN0cmljdF9mbGV4 X2FycmF5IHRoYXQgaXMgYXR0YWNoZWQgdG8gdGhlIGZpZWxkDQo+Pj4+ICsgICAgIGlmIHByZXNl bnRpbmcuDQo+Pj4+ICsgIFJldHVybiBUUlVFIHdoZW4gaXQncyBhIGZsZXhpYmxlIGFycmF5IG1l bWJlciwgRkFMU0Ugb3RoZXJ3aXNlLiAgKi8NCj4+Pj4gKw0KPj4+PiArc3RhdGljIGJvb2wNCj4+ Pj4gK2lzX2ZsZXhpYmxlX2FycmF5X21lbWJlcl9wIChib29sIGlzX2xhc3RfZmllbGQsDQo+Pj4+ ICsJCQkgICAgdHJlZSB4KQ0KPj4+PiArew0KPj4+PiArICAvKiBpZiBub3QgdGhlIGxhc3QgZmll bGQsIHJldHVybiBmYWxzZS4gICovDQo+Pj4+ICsgIGlmICghaXNfbGFzdF9maWVsZCkNCj4+Pj4g KyAgICByZXR1cm4gZmFsc2U7DQo+Pj4+ICsNCj4+Pj4gKyAgLyogaWYgbm90IGFuIGFycmF5IGZp ZWxkLCByZXR1cm4gZmFsc2UuICAqLw0KPj4+PiArICBpZiAoVFJFRV9DT0RFIChUUkVFX1RZUEUg KHgpKSAhPSBBUlJBWV9UWVBFKQ0KPj4+PiArICAgIHJldHVybiBmYWxzZTsNCj4+Pj4gKw0KPj4+ PiArICBib29sIGlzX3plcm9fbGVuZ3RoX2FycmF5ID0gemVyb19sZW5ndGhfYXJyYXlfdHlwZV9w IChUUkVFX1RZUEUgKHgpKTsNCj4+Pj4gKyAgYm9vbCBpc19vbmVfZWxlbWVudF9hcnJheSA9IG9u ZV9lbGVtZW50X2FycmF5X3R5cGVfcCAoVFJFRV9UWVBFICh4KSk7DQo+Pj4+ICsgIGJvb2wgaXNf ZmxleGlibGVfYXJyYXkgPSBmbGV4aWJsZV9hcnJheV9tZW1iZXJfdHlwZV9wIChUUkVFX1RZUEUg KHgpKTsNCj4+Pj4gKw0KPj4+PiArICB1bnNpZ25lZCBpbnQgc3RyaWN0X2ZsZXhfYXJyYXlfbGV2 ZWwgPSBmbGFnX3N0cmljdF9mbGV4X2FycmF5czsNCj4+Pj4gKw0KPj4+PiArICB0cmVlIGF0dHJf c3RyaWN0X2ZsZXhfYXJyYXkgPSBsb29rdXBfYXR0cmlidXRlICgic3RyaWN0X2ZsZXhfYXJyYXlz IiwNCj4+Pj4gKwkJCQkJCSAgREVDTF9BVFRSSUJVVEVTICh4KSk7DQo+Pj4+ICsgIC8qIGlmIHRo ZXJlIGlzIGEgc3RyaWN0X2ZsZXhfYXJyYXkgYXR0cmlidXRlIGF0dGFjaGVkIHRvIHRoZSBmaWVs ZCwNCj4+Pj4gKyAgICAgb3ZlcnJpZGUgdGhlIGZsYWdfc3RyaWN0X2ZsZXhfYXJyYXlzLiAgKi8N Cj4+Pj4gKyAgaWYgKGF0dHJfc3RyaWN0X2ZsZXhfYXJyYXkpDQo+Pj4+ICsgICAgew0KPj4+PiAr ICAgICAgLyogZ2V0IHRoZSB2YWx1ZSBvZiB0aGUgbGV2ZWwgZmlyc3QgZnJvbSB0aGUgYXR0cmli dXRlLiAgKi8NCj4+Pj4gKyAgICAgIHVuc2lnbmVkIEhPU1RfV0lERV9JTlQgYXR0cl9zdHJpY3Rf ZmxleF9hcnJheV9sZXZlbCA9IDA7DQo+Pj4+ICsgICAgICBnY2NfYXNzZXJ0IChUUkVFX1ZBTFVF IChhdHRyX3N0cmljdF9mbGV4X2FycmF5KSAhPSBOVUxMX1RSRUUpOw0KPj4+PiArICAgICAgYXR0 cl9zdHJpY3RfZmxleF9hcnJheSA9IFRSRUVfVkFMVUUgKGF0dHJfc3RyaWN0X2ZsZXhfYXJyYXkp Ow0KPj4+PiArICAgICAgZ2NjX2Fzc2VydCAoVFJFRV9WQUxVRSAoYXR0cl9zdHJpY3RfZmxleF9h cnJheSkgIT0gTlVMTF9UUkVFKTsNCj4+Pj4gKyAgICAgIGF0dHJfc3RyaWN0X2ZsZXhfYXJyYXkg PSBUUkVFX1ZBTFVFIChhdHRyX3N0cmljdF9mbGV4X2FycmF5KTsNCj4+Pj4gKyAgICAgIGdjY19h c3NlcnQgKHRyZWVfZml0c191aHdpX3AgKGF0dHJfc3RyaWN0X2ZsZXhfYXJyYXkpKTsNCj4+Pj4g KyAgICAgIGF0dHJfc3RyaWN0X2ZsZXhfYXJyYXlfbGV2ZWwgPSB0cmVlX3RvX3Vod2kgKGF0dHJf c3RyaWN0X2ZsZXhfYXJyYXkpOw0KPj4+PiArDQo+Pj4+ICsgICAgICAvKiB0aGUgYXR0cmlidXRl IGhhcyBoaWdoZXIgcHJpb3JpdHkgdGhhbiBmbGFnX3N0cnVjdF9mbGV4X2FycmF5LiAgKi8NCj4+ Pj4gKyAgICAgIHN0cmljdF9mbGV4X2FycmF5X2xldmVsID0gYXR0cl9zdHJpY3RfZmxleF9hcnJh eV9sZXZlbDsNCj4+Pj4gKyAgICB9DQo+Pj4+ICsNCj4+Pj4gKyAgc3dpdGNoIChzdHJpY3RfZmxl eF9hcnJheV9sZXZlbCkNCj4+Pj4gKyAgICB7DQo+Pj4+ICsgICAgICBjYXNlIDA6DQo+Pj4+ICsJ LyogZGVmYXVsdCwgYWxsIHRyYWlsaW5nIGFycmF5cyBhcmUgZmxleGlhYmxlIGFycmF5IG1lbWJl cnMuICAqLw0KPj4+PiArCXJldHVybiB0cnVlOw0KPj4+PiArICAgICAgY2FzZSAxOg0KPj4+PiAr CS8qIExldmVsIDE6IGFsbCAiWzFdIiwgIlswXSIsIGFuZCAiW10iIGFyZSBmbGV4aWFibGUgYXJy YXkgbWVtYmVycy4gICovDQo+Pj4+ICsJaWYgKGlzX29uZV9lbGVtZW50X2FycmF5KQ0KPj4+PiAr CSAgcmV0dXJuIHRydWU7DQo+Pj4+ICsJLyogRkFMTFRIUk9VR0guICAqLw0KPj4+PiArICAgICAg Y2FzZSAyOg0KPj4+PiArCS8qIExldmVsIDI6IGFsbCAiWzBdIiwgYW5kICJbXSIgYXJlIGZsZXhp YWJsZSBhcnJheSBtZW1iZXJzLiAgKi8NCj4+Pj4gKwlpZiAoaXNfemVyb19sZW5ndGhfYXJyYXkp DQo+Pj4+ICsJICByZXR1cm4gdHJ1ZTsNCj4+Pj4gKwkvKiBGQUxMVEhST1VHSC4gICovDQo+Pj4+ ICsgICAgICBjYXNlIDM6DQo+Pj4+ICsJLyogTGV2ZWwgMzogT25seSAiW10iIGFyZSBmbGV4aWJs ZSBhcnJheSBtZW1iZXJzLiAgKi8NCj4+Pj4gKwlpZiAoaXNfZmxleGlibGVfYXJyYXkpDQo+Pj4+ ICsJICByZXR1cm4gdHJ1ZTsNCj4+Pj4gKwlicmVhazsNCj4+Pj4gKyAgICAgIGRlZmF1bHQ6DQo+ Pj4+ICsJZ2NjX3VucmVhY2hhYmxlICgpOw0KPj4+PiArICAgIH0NCj4+Pj4gKyAgcmV0dXJuIGZh bHNlOw0KPj4+PiArfQ0KPj4+PiArDQo+Pj4+ICsNCj4+Pj4gIC8qIEZpbGwgaW4gdGhlIGZpZWxk cyBvZiBhIFJFQ09SRF9UWVBFIG9yIFVOSU9OX1RZUEUgbm9kZSwgVC4NCj4+Pj4gICAgIExPQyBp cyB0aGUgbG9jYXRpb24gb2YgdGhlIFJFQ09SRF9UWVBFIG9yIFVOSU9OX1RZUEUncyBkZWZpbml0 aW9uLg0KPj4+PiAgICAgRklFTERMSVNUIGlzIGEgY2hhaW4gb2YgRklFTERfREVDTCBub2RlcyBm b3IgdGhlIGZpZWxkcy4NCj4+Pj4gQEAgLTg3NzEsNiArODg3OCwxMSBAQCBmaW5pc2hfc3RydWN0 IChsb2NhdGlvbl90IGxvYywgdHJlZSB0LCB0cmVlIGZpZWxkbGlzdCwgdHJlZSBhdHRyaWJ1dGVz LA0KPj4+PiAgICBib29sIHNhd19uYW1lZF9maWVsZCA9IGZhbHNlOw0KPj4+PiAgICBmb3IgKHgg PSBmaWVsZGxpc3Q7IHg7IHggPSBERUNMX0NIQUlOICh4KSkNCj4+Pj4gICAgICB7DQo+Pj4+ICsg ICAgICAvKiB3aGV0aGVyIHRoaXMgZmllbGQgaXMgdGhlIGxhc3QgZmllbGQgb2YgdGhlIHN0cnVj dHVyZSBvciB1bmlvbi4NCj4+Pj4gKwkgZm9yIFVOSU9OLCBhbnkgZmllbGQgaXMgdGhlIGxhc3Qg ZmllbGQgb2YgaXQuICAqLw0KPj4+PiArICAgICAgYm9vbCBpc19sYXN0X2ZpZWxkID0gKERFQ0xf Q0hBSU4gKHgpID09IE5VTExfVFJFRSkNCj4+Pj4gKwkJCSAgICB8fCAoVFJFRV9DT0RFICh0KSA9 PSBVTklPTl9UWVBFKTsNCj4+Pj4gKw0KPj4+PiAgICAgICAgaWYgKFRSRUVfVFlQRSAoeCkgPT0g ZXJyb3JfbWFya19ub2RlKQ0KPj4+PiAgCWNvbnRpbnVlOw0KPj4+PiAgQEAgLTg4MDksMTAgKzg5 MjEsNyBAQCBmaW5pc2hfc3RydWN0IChsb2NhdGlvbl90IGxvYywgdHJlZSB0LCB0cmVlIGZpZWxk bGlzdCwgdHJlZSBhdHRyaWJ1dGVzLA0KPj4+PiAgCURFQ0xfUEFDS0VEICh4KSA9IDE7DQo+Pj4+ ICAgICAgICAgIC8qIERldGVjdCBmbGV4aWJsZSBhcnJheSBtZW1iZXIgaW4gYW4gaW52YWxpZCBj b250ZXh0LiAgKi8NCj4+Pj4gLSAgICAgIGlmIChUUkVFX0NPREUgKFRSRUVfVFlQRSAoeCkpID09 IEFSUkFZX1RZUEUNCj4+Pj4gLQkgICYmIFRZUEVfU0laRSAoVFJFRV9UWVBFICh4KSkgPT0gTlVM TF9UUkVFDQo+Pj4+IC0JICAmJiBUWVBFX0RPTUFJTiAoVFJFRV9UWVBFICh4KSkgIT0gTlVMTF9U UkVFDQo+Pj4+IC0JICAmJiBUWVBFX01BWF9WQUxVRSAoVFlQRV9ET01BSU4gKFRSRUVfVFlQRSAo eCkpKSA9PSBOVUxMX1RSRUUpDQo+Pj4+ICsgICAgICBpZiAoZmxleGlibGVfYXJyYXlfbWVtYmVy X3R5cGVfcCAoVFJFRV9UWVBFICh4KSkpDQo+Pj4+ICAJew0KPj4+PiAgCSAgaWYgKFRSRUVfQ09E RSAodCkgPT0gVU5JT05fVFlQRSkNCj4+Pj4gIAkgICAgew0KPj4+PiBAQCAtODgyMCw3ICs4OTI5 LDcgQEAgZmluaXNoX3N0cnVjdCAobG9jYXRpb25fdCBsb2MsIHRyZWUgdCwgdHJlZSBmaWVsZGxp c3QsIHRyZWUgYXR0cmlidXRlcywNCj4+Pj4gIAkJCSJmbGV4aWJsZSBhcnJheSBtZW1iZXIgaW4g dW5pb24iKTsNCj4+Pj4gIAkgICAgICBUUkVFX1RZUEUgKHgpID0gZXJyb3JfbWFya19ub2RlOw0K Pj4+PiAgCSAgICB9DQo+Pj4+IC0JICBlbHNlIGlmIChERUNMX0NIQUlOICh4KSAhPSBOVUxMX1RS RUUpDQo+Pj4+ICsJICBlbHNlIGlmICghaXNfbGFzdF9maWVsZCkNCj4+Pj4gIAkgICAgew0KPj4+ PiAgCSAgICAgIGVycm9yX2F0IChERUNMX1NPVVJDRV9MT0NBVElPTiAoeCksDQo+Pj4+ICAJCQki ZmxleGlibGUgYXJyYXkgbWVtYmVyIG5vdCBhdCBlbmQgb2Ygc3RydWN0Iik7DQo+Pj4+IEBAIC04 ODQwLDYgKzg5NDksOSBAQCBmaW5pc2hfc3RydWN0IChsb2NhdGlvbl90IGxvYywgdHJlZSB0LCB0 cmVlIGZpZWxkbGlzdCwgdHJlZSBhdHRyaWJ1dGVzLA0KPj4+PiAgCXBlZHdhcm4gKERFQ0xfU09V UkNFX0xPQ0FUSU9OICh4KSwgT1BUX1dwZWRhbnRpYywNCj4+Pj4gIAkJICJpbnZhbGlkIHVzZSBv ZiBzdHJ1Y3R1cmUgd2l0aCBmbGV4aWJsZSBhcnJheSBtZW1iZXIiKTsNCj4+Pj4gICsgICAgICAv KiBTZXQgREVDTF9OT1RfRkxFWEFSUkFZIGZsYWcgZm9yIEZJRUxEX0RFQ0wgeC4gICovDQo+Pj4+ ICsgICAgICBERUNMX05PVF9GTEVYQVJSQVkgKHgpID0gIWlzX2ZsZXhpYmxlX2FycmF5X21lbWJl cl9wIChpc19sYXN0X2ZpZWxkLCB4KTsNCj4+Pj4gKw0KPj4+PiAgICAgICAgaWYgKERFQ0xfTkFN RSAoeCkNCj4+Pj4gIAkgIHx8IFJFQ09SRF9PUl9VTklPTl9UWVBFX1AgKFRSRUVfVFlQRSAoeCkp KQ0KPj4+PiAgCXNhd19uYW1lZF9maWVsZCA9IHRydWU7DQo+Pj4+IGRpZmYgLS1naXQgYS9nY2Mv Y3AvbW9kdWxlLmNjIGIvZ2NjL2NwL21vZHVsZS5jYw0KPj4+PiBpbmRleCBmMjdmNGQwOTFlNWUu Ljc1ZWUyNTE0ZjY2YiAxMDA2NDQNCj4+Pj4gLS0tIGEvZ2NjL2NwL21vZHVsZS5jYw0KPj4+PiAr KysgYi9nY2MvY3AvbW9kdWxlLmNjDQo+Pj4+IEBAIC01NDE0LDYgKzU0MTQsNyBAQCB0cmVlc19v dXQ6OmNvcmVfYm9vbHMgKHRyZWUgdCkNCj4+Pj4gICAgICAgIFdCICh0LT5kZWNsX2NvbW1vbi5k ZWNsX2J5X3JlZmVyZW5jZV9mbGFnKTsNCj4+Pj4gICAgICAgIFdCICh0LT5kZWNsX2NvbW1vbi5k ZWNsX3JlYWRfZmxhZyk7DQo+Pj4+ICAgICAgICBXQiAodC0+ZGVjbF9jb21tb24uZGVjbF9ub25z aGFyZWFibGVfZmxhZyk7DQo+Pj4+ICsgICAgICBXQiAodC0+ZGVjbF9jb21tb24uZGVjbF9ub3Rf ZmxleGFycmF5KTsNCj4+Pj4gICAgICB9DQo+Pj4+ICAgICAgaWYgKENPREVfQ09OVEFJTlNfU1RS VUNUIChjb2RlLCBUU19ERUNMX1dJVEhfVklTKSkNCj4+Pj4gQEAgLTU1NTgsNiArNTU1OSw3IEBA IHRyZWVzX2luOjpjb3JlX2Jvb2xzICh0cmVlIHQpDQo+Pj4+ICAgICAgICBSQiAodC0+ZGVjbF9j b21tb24uZGVjbF9ieV9yZWZlcmVuY2VfZmxhZyk7DQo+Pj4+ICAgICAgICBSQiAodC0+ZGVjbF9j b21tb24uZGVjbF9yZWFkX2ZsYWcpOw0KPj4+PiAgICAgICAgUkIgKHQtPmRlY2xfY29tbW9uLmRl Y2xfbm9uc2hhcmVhYmxlX2ZsYWcpOw0KPj4+PiArICAgICAgUkIgKHQtPmRlY2xfY29tbW9uLmRl Y2xfbm90X2ZsZXhhcnJheSk7DQo+Pj4+ICAgICAgfQ0KPj4+PiAgICAgIGlmIChDT0RFX0NPTlRB SU5TX1NUUlVDVCAoY29kZSwgVFNfREVDTF9XSVRIX1ZJUykpDQo+Pj4+IGRpZmYgLS1naXQgYS9n Y2MvZG9jL2V4dGVuZC50ZXhpIGIvZ2NjL2RvYy9leHRlbmQudGV4aQ0KPj4+PiBpbmRleCAwZmVk YWI5NjYxMGIuLjYyMzI4ZDc3Yzc4YyAxMDA2NDQNCj4+Pj4gLS0tIGEvZ2NjL2RvYy9leHRlbmQu dGV4aQ0KPj4+PiArKysgYi9nY2MvZG9jL2V4dGVuZC50ZXhpDQo+Pj4+IEBAIC03NDU5LDYgKzc0 NTksMzEgQEAgVGhpcyB3YXJuaW5nIGNhbiBiZSBkaXNhYmxlZCBieSBAb3B0aW9uey1Xbm8taWYt bm90LWFsaWduZWR9Lg0KPj4+PiAgVGhlIEBjb2Rle3dhcm5faWZfbm90X2FsaWduZWR9IGF0dHJp YnV0ZSBjYW4gYWxzbyBiZSB1c2VkIGZvciB0eXBlcw0KPj4+PiAgKEBweHJlZntDb21tb24gVHlw ZSBBdHRyaWJ1dGVzfS4pDQo+Pj4+ICArQGNpbmRleCBAY29kZXtzdHJpY3RfZmxleF9hcnJheXN9 IHZhcmlhYmxlIGF0dHJpYnV0ZQ0KPj4+PiArQGl0ZW0gc3RyaWN0X2ZsZXhfYXJyYXlzIChAdmFy e2xldmVsfSkNCj4+Pj4gK1RoZSBAY29kZXtzdHJpY3RfZmxleF9hcnJheXN9IGF0dHJpYnV0ZSBz aG91bGQgYmUgYXR0YWNoZWQgdG8gdGhlIHRyYWlsaW5nDQo+Pj4+ICthcnJheSBmaWVsZCBvZiBh IHN0cnVjdHVyZS4gIEl0IHNwZWNpZmllcyB0aGUgbGV2ZWwgb2Ygc3RyaWN0bmVzcyBvZg0KPj4+ PiArdHJlYXRpbmcgdGhlIHRyYWlsaW5nIGFycmF5IGZpZWxkIG9mIGEgc3RydWN0dXJlIGFzIGEg ZmxleGlibGUgYXJyYXkNCj4+Pj4gK21lbWJlci4gQHZhcntsZXZlbH0gbXVzdCBiZSBhbiBpbnRl Z2VyIGJldHdlbiAwIHRvIDMuDQo+Pj4+ICsNCj4+Pj4gK0B2YXJ7bGV2ZWx9PTAgaXMgdGhlIGxl YXN0IHN0cmljdCBsZXZlbCwgYWxsIHRyYWlsaW5nIGFycmF5cyBvZiBzdHJ1Y3R1cmVzDQo+Pj4+ ICthcmUgdHJlYXRlZCBhcyBmbGV4aWJsZSBhcnJheSBtZW1iZXJzLiBAdmFye2xldmVsfT0zIGlz IHRoZSBzdHJpY3Rlc3QgbGV2ZWwsDQo+Pj4+ICtvbmx5IHdoZW4gdGhlIHRyYWlsaW5nIGFycmF5 IGlzIGRlY2xhcmVkIGFzIGEgZmxleGlibGUgYXJyYXkgbWVtYmVyIHBlciBDOTkNCj4+Pj4gK3N0 YW5kYXJkIG9ud2FyZHMgKEBzYW1we1tdfSksIGl0IGlzIHRyZWF0ZWQgYXMgYSBmbGV4aWJsZSBh cnJheSBtZW1iZXIuDQo+Pj4+ICsNCj4+Pj4gK1RoZXJlIGFyZSB0d28gbW9yZSBsZXZlbHMgaW4g YmV0d2VlbiAwIGFuZCAzLCB3aGljaCBhcmUgcHJvdmlkZWQgdG8gc3VwcG9ydA0KPj4+PiArb2xk ZXIgY29kZXMgdGhhdCB1c2UgR0NDIHplcm8tbGVuZ3RoIGFycmF5IGV4dGVuc2lvbiAoQHNhbXB7 WzBdfSkgb3Igb25lLXNpemUNCj4+Pj4gK2FycmF5IGFzIGZsZXhpYmxlIGFycmF5IG1lbWJlciAo QHNhbXB7WzFdfSk6DQo+Pj4+ICtXaGVuIEB2YXJ7bGV2ZWx9IGlzIDEsIHRoZSB0cmFpbGluZyBh cnJheSBpcyB0cmVhdGVkIGFzIGEgZmxleGlibGUgYXJyYXkgbWVtYmVyDQo+Pj4+ICt3aGVuIGl0 IGlzIGRlY2xhcmVkIGFzIGVpdGhlciBAc2FtcHtbXX0sIEBzYW1we1swXX0sIG9yIEBzYW1we1sx XX07DQo+Pj4+ICtXaGVuIEB2YXJ7bGV2ZWx9IGlzIDIsIHRoZSB0cmFpbGluZyBhcnJheSBpcyB0 cmVhdGVkIGFzIGEgZmxleGlibGUgYXJyYXkgbWVtYmVyDQo+Pj4+ICt3aGVuIGl0IGlzIGRlY2xh cmVkIGFzIGVpdGhlciBAc2FtcHtbXX0sIG9yIEBzYW1we1swXX0uDQo+Pj4+ICsNCj4+Pj4gK1Ro aXMgYXR0cmlidXRlIGNhbiBiZSB1c2VkIHdpdGggb3Igd2l0aG91dCB0aGUgQG9wdGlvbnstZnN0 cmljdC1mbGV4LWFycmF5c30uDQo+Pj4+ICtXaGVuIGJvdGggdGhlIGF0dHJpYnV0ZSBhbmQgdGhl IG9wdGlvbiBwcmVzZW50IGF0IHRoZSBzYW1lIHRpbWUsIHRoZSBsZXZlbCBvZg0KPj4+PiArdGhl IHN0cmljdG5lc3MgZm9yIHRoZSBzcGVjaWZpYyB0cmFpbGluZyBhcnJheSBmaWVsZCBpcyBkZXRl cm1pbmVkIGJ5IHRoZQ0KPj4+PiArYXR0cmlidXRlLg0KPj4+PiArDQo+Pj4+ICBAaXRlbSBhbGxv Y19zaXplIChAdmFye3Bvc2l0aW9ufSkNCj4+Pj4gIEBpdGVteCBhbGxvY19zaXplIChAdmFye3Bv c2l0aW9uLTF9LCBAdmFye3Bvc2l0aW9uLTJ9KQ0KPj4+PiAgQGNpbmRleCBAY29kZXthbGxvY19z aXplfSB2YXJpYWJsZSBhdHRyaWJ1dGUNCj4+Pj4gZGlmZiAtLWdpdCBhL2djYy9kb2MvaW52b2tl LnRleGkgYi9nY2MvZG9jL2ludm9rZS50ZXhpDQo+Pj4+IGluZGV4IDlkNjYyZTM1MzE2My4uZGIx YTY4Y2Q1NDVjIDEwMDY0NA0KPj4+PiAtLS0gYS9nY2MvZG9jL2ludm9rZS50ZXhpDQo+Pj4+ICsr KyBiL2djYy9kb2MvaW52b2tlLnRleGkNCj4+Pj4gQEAgLTIwNyw3ICsyMDcsOCBAQCBpbiB0aGUg Zm9sbG93aW5nIHNlY3Rpb25zLg0KPj4+PiAgLWZvcGVubXAgIC1mb3Blbm1wLXNpbWQgQGdvbA0K Pj4+PiAgLWZwZXJtaXR0ZWQtZmx0LWV2YWwtbWV0aG9kcz1AdmFye3N0YW5kYXJkfSBAZ29sDQo+ Pj4+ICAtZnBsYW45LWV4dGVuc2lvbnMgIC1mc2lnbmVkLWJpdGZpZWxkcyAgLWZ1bnNpZ25lZC1i aXRmaWVsZHMgQGdvbA0KPj4+PiAtLWZzaWduZWQtY2hhciAgLWZ1bnNpZ25lZC1jaGFyICAtZnNz by1zdHJ1Y3Q9QHZhcntlbmRpYW5uZXNzfX0NCj4+Pj4gKy1mc2lnbmVkLWNoYXIgIC1mdW5zaWdu ZWQtY2hhciAtZnN0cmljdC1mbGV4LWFycmF5c1s9QHZhcntufV0gQGdvbA0KPj4+PiArLWZzc28t c3RydWN0PUB2YXJ7ZW5kaWFubmVzc319DQo+Pj4+ICAgIEBpdGVtIEMrKyBMYW5ndWFnZSBPcHRp b25zDQo+Pj4+ICBAeHJlZntDKysgRGlhbGVjdCBPcHRpb25zLCxPcHRpb25zIENvbnRyb2xsaW5n IEMrKyBEaWFsZWN0fS4NCj4+Pj4gQEAgLTI4MjYsNiArMjgyNywzMCBAQCBUaGUgdHlwZSBAY29k ZXtjaGFyfSBpcyBhbHdheXMgYSBkaXN0aW5jdCB0eXBlIGZyb20gZWFjaCBvZg0KPj4+PiAgQGNv ZGV7c2lnbmVkIGNoYXJ9IG9yIEBjb2Rle3Vuc2lnbmVkIGNoYXJ9LCBldmVuIHRob3VnaCBpdHMg YmVoYXZpb3INCj4+Pj4gIGlzIGFsd2F5cyBqdXN0IGxpa2Ugb25lIG9mIHRob3NlIHR3by4NCj4+ Pj4gICtAaXRlbSAtZnN0cmljdC1mbGV4LWFycmF5cw0KPj4+PiArQG9waW5kZXggZnN0cmljdC1m bGV4LWFycmF5cw0KPj4+PiArQG9waW5kZXggZm5vLXN0cmljdC1mbGV4LWFycmF5cw0KPj4+PiAr VHJlYXQgdGhlIHRyYWlsaW5nIGFycmF5IG9mIGEgc3RydWN0dXJlIGFzIGEgZmxleGlibGUgYXJy YXkgbWVtYmVyIGluIGENCj4+Pj4gK3N0cmljdGVyIHdheS4NCj4+Pj4gK1RoZSBwb3NpdGl2ZSBm b3JtIGlzIGVxdWl2YWxlbnQgdG8gQG9wdGlvbnstZnN0cmljdC1mbGV4LWFycmF5cz0zfSwgd2hp Y2ggaXMgdGhlDQo+Pj4+ICtzdHJpY3Rlc3QuICBBIHRyYWlsaW5nIGFycmF5IGlzIHRyZWF0ZWQg YXMgYSBmbGV4aWJsZSBhcnJheSBtZW1iZXIgb25seSB3aGVuIGl0DQo+Pj4+ICtpcyBkZWNsYXJl ZCBhcyBhIGZsZXhpYmxlIGFycmF5IG1lbWJlciBwZXIgQzk5IHN0YW5kYXJkIG9ud2FyZHMuDQo+ Pj4+ICtUaGUgbmVnYXRpdmUgZm9ybSBpcyBlcXVpdmFsZW50IHRvIEBvcHRpb257LWZzdHJpY3Qt ZmxleC1hcnJheXM9MH0sIHdoaWNoIGlzIHRoZQ0KPj4+PiArbGVhc3Qgc3RyaWN0LiAgQWxsIHRy YWlsaW5nIGFycmF5cyBvZiBzdHJ1Y3R1cmVzIGFyZSB0cmVhdGVkIGFzIGZsZXhpYmxlIGFycmF5 DQo+Pj4+ICttZW1iZXJzLg0KPj4+PiArDQo+Pj4+ICtAaXRlbSAtZnN0cmljdC1mbGV4LWFycmF5 cz1AdmFye2xldmVsfQ0KPj4+PiArQG9waW5kZXggZnN0cmljdC1mbGV4LWFycmF5cz1AdmFye2xl dmVsfQ0KPj4+PiArVHJlYXQgdGhlIHRyYWlsaW5nIGFycmF5IG9mIGEgc3RydWN0dXJlIGFzIGEg ZmxleGlibGUgYXJyYXkgbWVtYmVyIGluIGENCj4+Pj4gK3N0cmljdGVyIHdheS4gIFRoZSB2YWx1 ZSBvZiBAdmFye2xldmVsfSBjb250cm9scyB0aGUgbGV2ZWwgb2Ygc3RyaWN0bmVzcy4NCj4+Pj4g Kw0KPj4+PiArVGhlIHBvc3NpYmxlIHZhbHVlcyBvZiBAdmFye2xldmVsfSBhcmUgdGhlIHNhbWUg YXMgZm9yIHRoZQ0KPj4+PiArQGNvZGV7c3RyaWN0X2ZsZXhfYXJyYXlzfSBhdHRyaWJ1dGUgKEBw eHJlZntWYXJpYWJsZSBBdHRyaWJ1dGVzfSkuDQo+Pj4+ICsNCj4+Pj4gK1lvdSBjYW4gY29udHJv bCB0aGlzIGJlaGF2aW9yIGZvciBhIHNwZWNpZmljIHRyYWlsaW5nIGFycmF5IGZpZWxkIG9mIGEN Cj4+Pj4gK3N0cnVjdHVyZSBieSB1c2luZyB0aGUgdmFyaWFibGUgYXR0cmlidXRlIEBjb2Rle3N0 cmljdF9mbGV4X2FycmF5c30gYXR0cmlidXRlDQo+Pj4+ICsoQHB4cmVme1ZhcmlhYmxlIEF0dHJp YnV0ZXN9KS4NCj4+Pj4gKw0KPj4+PiAgQGl0ZW0gLWZzc28tc3RydWN0PUB2YXJ7ZW5kaWFubmVz c30NCj4+Pj4gIEBvcGluZGV4IGZzc28tc3RydWN0DQo+Pj4+ICBTZXQgdGhlIGRlZmF1bHQgc2Nh bGFyIHN0b3JhZ2Ugb3JkZXIgb2Ygc3RydWN0dXJlcyBhbmQgdW5pb25zIHRvIHRoZQ0KPj4+PiBk aWZmIC0tZ2l0IGEvZ2NjL3ByaW50LXRyZWUuY2MgYi9nY2MvcHJpbnQtdHJlZS5jYw0KPj4+PiBp bmRleCA2ZDQ1YTRhNTk2NjkuLjU4YTk4MjUwY2M0ZiAxMDA2NDQNCj4+Pj4gLS0tIGEvZ2NjL3By aW50LXRyZWUuY2MNCj4+Pj4gKysrIGIvZ2NjL3ByaW50LXRyZWUuY2MNCj4+Pj4gQEAgLTUxNyw4 ICs1MTcsMTIgQEAgcHJpbnRfbm9kZSAoRklMRSAqZmlsZSwgY29uc3QgY2hhciAqcHJlZml4LCB0 cmVlIG5vZGUsIGludCBpbmRlbnQsDQo+Pj4+ICAJICBmcHJpbnRmIChmaWxlLCAiIGFsaWduOiVk IHdhcm5faWZfbm90X2FsaWduOiVkIiwNCj4+Pj4gIAkJICAgREVDTF9BTElHTiAobm9kZSksIERF Q0xfV0FSTl9JRl9OT1RfQUxJR04gKG5vZGUpKTsNCj4+Pj4gIAkgIGlmIChjb2RlID09IEZJRUxE X0RFQ0wpDQo+Pj4+IC0JICAgIGZwcmludGYgKGZpbGUsICIgb2Zmc2V0X2FsaWduICIgSE9TVF9X SURFX0lOVF9QUklOVF9VTlNJR05FRCwNCj4+Pj4gLQkJICAgICBERUNMX09GRlNFVF9BTElHTiAo bm9kZSkpOw0KPj4+PiArCSAgICB7DQo+Pj4+ICsJICAgICAgZnByaW50ZiAoZmlsZSwgIiBvZmZz ZXRfYWxpZ24gIiBIT1NUX1dJREVfSU5UX1BSSU5UX1VOU0lHTkVELA0KPj4+PiArCQkgICAgICAg REVDTF9PRkZTRVRfQUxJR04gKG5vZGUpKTsNCj4+Pj4gKwkgICAgICBmcHJpbnRmIChmaWxlLCAi IGRlY2xfbm90X2ZsZXhhcnJheTogJWQiLA0KPj4+PiArCQkgICAgICAgREVDTF9OT1RfRkxFWEFS UkFZIChub2RlKSk7DQo+Pj4+ICsJICAgIH0NCj4+Pj4gICAgCSAgaWYgKGNvZGUgPT0gRlVOQ1RJ T05fREVDTCAmJiBmbmRlY2xfYnVpbHRfaW5fcCAobm9kZSkpDQo+Pj4+ICAJICAgIHsNCj4+Pj4g ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL3N0cmljdC1mbGV4LWFycmF5LTEuQyBi L2djYy90ZXN0c3VpdGUvZysrLmRnL3N0cmljdC1mbGV4LWFycmF5LTEuQw0KPj4+PiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPj4+PiBpbmRleCAwMDAwMDAwMDAwMDAuLmNkNmE2NWQyYjdlNg0KPj4+ PiAtLS0gL2Rldi9udWxsDQo+Pj4+ICsrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL3N0cmljdC1m bGV4LWFycmF5LTEuQw0KPj4+PiBAQCAtMCwwICsxLDMxIEBADQo+Pj4+ICsvKiB0ZXN0aW5nIHRo ZSBjb3JyZWN0IHVzYWdlIG9mIGF0dHJpYnV0ZSBzdHJpY3RfZmxleF9hcnJheS4gICovDQo+Pj4+ ICsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLw0KPj4+PiArLyogeyBkZy1vcHRpb25zICItTzIiIH0g Ki8NCj4+Pj4gKw0KPj4+PiArDQo+Pj4+ICtpbnQgeCBfX2F0dHJpYnV0ZV9fICgoc3RyaWN0X2Zs ZXhfYXJyYXlzICgxKSkpOyAvKiB7IGRnLWVycm9yICInc3RyaWN0X2ZsZXhfYXJyYXlzJyBhdHRy aWJ1dGUgbWF5IG5vdCBiZSBzcGVjaWZpZWQgZm9yICd4JyIgfSAqLw0KPj4+PiArDQo+Pj4+ICtz dHJ1Y3QgdHJhaWxpbmcgew0KPj4+PiArICAgIGludCBhOw0KPj4+PiArICAgIGludCBjIF9fYXR0 cmlidXRlICgoc3RyaWN0X2ZsZXhfYXJyYXlzKSk7IC8qIHsgZGctZXJyb3IgIndyb25nIG51bWJl ciBvZiBhcmd1bWVudHMgc3BlY2lmaWVkIGZvciAnc3RyaWN0X2ZsZXhfYXJyYXlzJyBhdHRyaWJ1 dGUiIH0gKi8NCj4+Pj4gK307DQo+Pj4+ICsNCj4+Pj4gK3N0cnVjdCB0cmFpbGluZ18xIHsNCj4+ Pj4gKyAgICBpbnQgYTsNCj4+Pj4gKyAgICBpbnQgYjsNCj4+Pj4gKyAgICBpbnQgYyBfX2F0dHJp YnV0ZSAoKHN0cmljdF9mbGV4X2FycmF5cyAoMikpKTsgLyogeyBkZy1lcnJvciAiJ3N0cmljdF9m bGV4X2FycmF5cycgYXR0cmlidXRlIG1heSBub3QgYmUgc3BlY2lmaWVkIGZvciBhIG5vbi1hcnJh eSBmaWVsZCIgfSAqLw0KPj4+PiArfTsNCj4+Pj4gKw0KPj4+PiArZXh0ZXJuIGludCBkOw0KPj4+ PiArDQo+Pj4+ICtzdHJ1Y3QgdHJhaWxpbmdfYXJyYXlfMiB7DQo+Pj4+ICsgICAgaW50IGE7DQo+ Pj4+ICsgICAgaW50IGI7DQo+Pj4+ICsgICAgaW50IGNbMV0gX19hdHRyaWJ1dGUgKChzdHJpY3Rf ZmxleF9hcnJheXMgKGQpKSk7IC8qIHsgZGctZXJyb3IgIidzdHJpY3RfZmxleF9hcnJheXMnIGF0 dHJpYnV0ZSBhcmd1bWVudCBub3QgYW4gaW50ZWdlciIgfSAqLw0KPj4+PiArfTsNCj4+Pj4gKw0K Pj4+PiArc3RydWN0IHRyYWlsaW5nX2FycmF5XzMgew0KPj4+PiArICAgIGludCBhOw0KPj4+PiAr ICAgIGludCBiOw0KPj4+PiArICAgIGludCBjWzBdIF9fYXR0cmlidXRlICgoc3RyaWN0X2ZsZXhf YXJyYXlzICg1KSkpOyAvKiB7IGRnLWVycm9yICInc3RyaWN0X2ZsZXhfYXJyYXlzJyBhdHRyaWJ1 dGUgYXJndW1lbnQgJzUnIGlzIG5vdCBhbiBpbnRlZ2VyIGNvbnN0YW50IGJldHdlZW4gMCBhbmQg MyIgfSAqLw0KPj4+PiArfTsNCj4+Pj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRn L3N0cmljdC1mbGV4LWFycmF5LTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3N0cmljdC1mbGV4 LWFycmF5LTEuYw0KPj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4+PiBpbmRleCAwMDAwMDAw MDAwMDAuLmNkNmE2NWQyYjdlNg0KPj4+PiAtLS0gL2Rldi9udWxsDQo+Pj4+ICsrKyBiL2djYy90 ZXN0c3VpdGUvZ2NjLmRnL3N0cmljdC1mbGV4LWFycmF5LTEuYw0KPj4+PiBAQCAtMCwwICsxLDMx IEBADQo+Pj4+ICsvKiB0ZXN0aW5nIHRoZSBjb3JyZWN0IHVzYWdlIG9mIGF0dHJpYnV0ZSBzdHJp Y3RfZmxleF9hcnJheS4gICovDQo+Pj4+ICsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLw0KPj4+PiAr LyogeyBkZy1vcHRpb25zICItTzIiIH0gKi8NCj4+Pj4gKw0KPj4+PiArDQo+Pj4+ICtpbnQgeCBf X2F0dHJpYnV0ZV9fICgoc3RyaWN0X2ZsZXhfYXJyYXlzICgxKSkpOyAvKiB7IGRnLWVycm9yICIn c3RyaWN0X2ZsZXhfYXJyYXlzJyBhdHRyaWJ1dGUgbWF5IG5vdCBiZSBzcGVjaWZpZWQgZm9yICd4 JyIgfSAqLw0KPj4+PiArDQo+Pj4+ICtzdHJ1Y3QgdHJhaWxpbmcgew0KPj4+PiArICAgIGludCBh Ow0KPj4+PiArICAgIGludCBjIF9fYXR0cmlidXRlICgoc3RyaWN0X2ZsZXhfYXJyYXlzKSk7IC8q IHsgZGctZXJyb3IgIndyb25nIG51bWJlciBvZiBhcmd1bWVudHMgc3BlY2lmaWVkIGZvciAnc3Ry aWN0X2ZsZXhfYXJyYXlzJyBhdHRyaWJ1dGUiIH0gKi8NCj4+Pj4gK307DQo+Pj4+ICsNCj4+Pj4g K3N0cnVjdCB0cmFpbGluZ18xIHsNCj4+Pj4gKyAgICBpbnQgYTsNCj4+Pj4gKyAgICBpbnQgYjsN Cj4+Pj4gKyAgICBpbnQgYyBfX2F0dHJpYnV0ZSAoKHN0cmljdF9mbGV4X2FycmF5cyAoMikpKTsg LyogeyBkZy1lcnJvciAiJ3N0cmljdF9mbGV4X2FycmF5cycgYXR0cmlidXRlIG1heSBub3QgYmUg c3BlY2lmaWVkIGZvciBhIG5vbi1hcnJheSBmaWVsZCIgfSAqLw0KPj4+PiArfTsNCj4+Pj4gKw0K Pj4+PiArZXh0ZXJuIGludCBkOw0KPj4+PiArDQo+Pj4+ICtzdHJ1Y3QgdHJhaWxpbmdfYXJyYXlf MiB7DQo+Pj4+ICsgICAgaW50IGE7DQo+Pj4+ICsgICAgaW50IGI7DQo+Pj4+ICsgICAgaW50IGNb MV0gX19hdHRyaWJ1dGUgKChzdHJpY3RfZmxleF9hcnJheXMgKGQpKSk7IC8qIHsgZGctZXJyb3Ig IidzdHJpY3RfZmxleF9hcnJheXMnIGF0dHJpYnV0ZSBhcmd1bWVudCBub3QgYW4gaW50ZWdlciIg fSAqLw0KPj4+PiArfTsNCj4+Pj4gKw0KPj4+PiArc3RydWN0IHRyYWlsaW5nX2FycmF5XzMgew0K Pj4+PiArICAgIGludCBhOw0KPj4+PiArICAgIGludCBiOw0KPj4+PiArICAgIGludCBjWzBdIF9f YXR0cmlidXRlICgoc3RyaWN0X2ZsZXhfYXJyYXlzICg1KSkpOyAvKiB7IGRnLWVycm9yICInc3Ry aWN0X2ZsZXhfYXJyYXlzJyBhdHRyaWJ1dGUgYXJndW1lbnQgJzUnIGlzIG5vdCBhbiBpbnRlZ2Vy IGNvbnN0YW50IGJldHdlZW4gMCBhbmQgMyIgfSAqLw0KPj4+PiArfTsNCj4+Pj4gZGlmZiAtLWdp dCBhL2djYy90cmVlLWNvcmUuaCBiL2djYy90cmVlLWNvcmUuaA0KPj4+PiBpbmRleCA4MGMyYmNi MzMzZGQuLjE4YmQ2ZDgyYTMyZCAxMDA2NDQNCj4+Pj4gLS0tIGEvZ2NjL3RyZWUtY29yZS5oDQo+ Pj4+ICsrKyBiL2djYy90cmVlLWNvcmUuaA0KPj4+PiBAQCAtMTgyMyw3ICsxODIzLDEwIEBAIHN0 cnVjdCBHVFkoKCkpIHRyZWVfZGVjbF9jb21tb24gew0KPj4+PiAgICAgICBUWVBFX1dBUk5fSUZf Tk9UX0FMSUdOLiAgKi8NCj4+Pj4gICAgdW5zaWduZWQgaW50IHdhcm5faWZfbm90X2FsaWduIDog NjsNCj4+Pj4gIC0gIC8qIDE0IGJpdHMgdW51c2VkLiAgKi8NCj4+Pj4gKyAgLyogSW4gRklFTERf REVDTCwgdGhpcyBpcyBERUNMX05PVF9GTEVYQVJSQVkuICAqLw0KPj4+PiArICB1bnNpZ25lZCBp bnQgZGVjbF9ub3RfZmxleGFycmF5IDogMTsNCj4+Pj4gKw0KPj4+PiArICAvKiAxMyBiaXRzIHVu dXNlZC4gICovDQo+Pj4+ICAgICAgLyogVUlEIGZvciBwb2ludHMtdG8gc2V0cywgc3RhYmxlIG92 ZXIgY29weWluZyBmcm9tIGlubGluaW5nLiAgKi8NCj4+Pj4gICAgdW5zaWduZWQgaW50IHB0X3Vp ZDsNCj4+Pj4gZGlmZiAtLWdpdCBhL2djYy90cmVlLXN0cmVhbWVyLWluLmNjIGIvZ2NjL3RyZWUt c3RyZWFtZXItaW4uY2MNCj4+Pj4gaW5kZXggMjE5Y2Y1ZTdlZjQ1Li41NzkyM2RhMzc0MWUgMTAw NjQ0DQo+Pj4+IC0tLSBhL2djYy90cmVlLXN0cmVhbWVyLWluLmNjDQo+Pj4+ICsrKyBiL2djYy90 cmVlLXN0cmVhbWVyLWluLmNjDQo+Pj4+IEBAIC0yNjEsNiArMjYxLDcgQEAgdW5wYWNrX3RzX2Rl Y2xfY29tbW9uX3ZhbHVlX2ZpZWxkcyAoc3RydWN0IGJpdHBhY2tfZCAqYnAsIHRyZWUgZXhwcikN Cj4+Pj4gICAgICAgIGVsc2UNCj4+Pj4gIAlTRVRfREVDTF9GSUVMRF9BQklfSUdOT1JFRCAoZXhw ciwgdmFsKTsNCj4+Pj4gICAgICAgIGV4cHItPmRlY2xfY29tbW9uLm9mZl9hbGlnbiA9IGJwX3Vu cGFja192YWx1ZSAoYnAsIDgpOw0KPj4+PiArICAgICAgREVDTF9OT1RfRkxFWEFSUkFZIChleHBy KSA9ICh1bnNpZ25lZCkgYnBfdW5wYWNrX3ZhbHVlIChicCwgMSk7DQo+Pj4+ICAgICAgfQ0KPj4+ PiAgICAgIGVsc2UgaWYgKFZBUl9QIChleHByKSkNCj4+Pj4gZGlmZiAtLWdpdCBhL2djYy90cmVl LXN0cmVhbWVyLW91dC5jYyBiL2djYy90cmVlLXN0cmVhbWVyLW91dC5jYw0KPj4+PiBpbmRleCA5 YjExNGRjMDViYjEuLjY4YTI4MThhOWY5MyAxMDA2NDQNCj4+Pj4gLS0tIGEvZ2NjL3RyZWUtc3Ry ZWFtZXItb3V0LmNjDQo+Pj4+ICsrKyBiL2djYy90cmVlLXN0cmVhbWVyLW91dC5jYw0KPj4+PiBA QCAtMjI5LDYgKzIyOSw3IEBAIHBhY2tfdHNfZGVjbF9jb21tb25fdmFsdWVfZmllbGRzIChzdHJ1 Y3QgYml0cGFja19kICpicCwgdHJlZSBleHByKQ0KPj4+PiAgICAgICAgZWxzZQ0KPj4+PiAgCWJw X3BhY2tfdmFsdWUgKGJwLCBERUNMX0ZJRUxEX0FCSV9JR05PUkVEIChleHByKSwgMSk7DQo+Pj4+ ICAgICAgICBicF9wYWNrX3ZhbHVlIChicCwgZXhwci0+ZGVjbF9jb21tb24ub2ZmX2FsaWduLCA4 KTsNCj4+Pj4gKyAgICAgIGJwX3BhY2tfdmFsdWUgKGJwLCBERUNMX05PVF9GTEVYQVJSQVkgKGV4 cHIpLCAxKTsNCj4+Pj4gICAgICB9DQo+Pj4+ICAgICAgZWxzZSBpZiAoVkFSX1AgKGV4cHIpKQ0K Pj4+PiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUuY2MgYi9nY2MvdHJlZS5jYw0KPj4+PiBpbmRleCAy ZjQ4OGU0NDY3YzQuLmU0NjY0ZWFiNTRlZiAxMDA2NDQNCj4+Pj4gLS0tIGEvZ2NjL3RyZWUuY2MN Cj4+Pj4gKysrIGIvZ2NjL3RyZWUuY2MNCj4+Pj4gQEAgLTEyNjg4LDE0ICsxMjY4OCwzMCBAQCBh cnJheV9yZWZfdXBfYm91bmQgKHRyZWUgZXhwKQ0KPj4+PiAgfQ0KPj4+PiAgICAvKiBSZXR1cm5z IHRydWUgaWYgUkVGIGlzIGFuIGFycmF5IHJlZmVyZW5jZSwgY29tcG9uZW50IHJlZmVyZW5jZSwN Cj4+Pj4gLSAgIG9yIG1lbW9yeSByZWZlcmVuY2UgdG8gYW4gYXJyYXkgYXQgdGhlIGVuZCBvZiBh IHN0cnVjdHVyZS4NCj4+Pj4gLSAgIElmIHRoaXMgaXMgdGhlIGNhc2UsIHRoZSBhcnJheSBtYXkg YmUgYWxsb2NhdGVkIGxhcmdlcg0KPj4+PiAtICAgdGhhbiBpdHMgdXBwZXIgYm91bmQgaW1wbGll cy4gICovDQo+Pj4+ICsgICBvciBtZW1vcnkgcmVmZXJlbmNlIHRvIGFuIGFycmF5IHdob3NlIGFj dHVhbCBzaXplIG1pZ2h0IGJlIGxhcmdlcg0KPj4+PiArICAgdGhhbiBpdHMgdXBwZXIgYm91bmQg aW1wbGllcywgdGhlcmUgYXJlIG11bHRpcGxlIGNhc2VzOg0KPj4+PiArICAgQS4gYSByZWYgdG8g YSBmbGV4aWJsZSBhcnJheSBtZW1iZXIgYXQgdGhlIGVuZCBvZiBhIHN0cnVjdHVyZTsNCj4+Pj4g KyAgIEIuIGEgcmVmIHRvIGFuIGFycmF5IHdpdGggYSBkaWZmZXJlbnQgdHlwZSBhZ2FpbnN0IHRo ZSBvcmlnaW5hbCBkZWNsOw0KPj4+PiArICAgICAgZm9yIGV4YW1wbGU6DQo+Pj4+ICArICAgc2hv cnQgYVsxNl0gPSB7IDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEz LCAxNCwgMTUsIDE2IH07DQo+Pj4+ICsgICAoKigoY2hhcigqKVsxNl0pJmFbMF0pKVtpKzhdDQo+ Pj4+ICsNCj4+Pj4gKyAgIEMuIGEgcmVmIHRvIGFuIGFycmF5IHRoYXQgd2FzIHBhc3NlZCBhcyBh IHBhcmFtZXRlcjsNCj4+Pj4gKyAgICAgIGZvciBleGFtcGxlOg0KPj4+PiArDQo+Pj4+ICsgICBp bnQgdGVzdCAodWludDhfdCAqcCwgdWludDMyX3QgdFsxXVsxXSwgaW50IG4pIHsNCj4+Pj4gKyAg IGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSsrLCBwKyspDQo+Pj4+ICsgICAgIHRbaV1bMF0gPSAu Li47DQo+Pj4+ICsNCj4+Pj4gKyAgIEZJWE1FLCB0aGUgbmFtZSBvZiB0aGlzIHJvdXRpbmUgbmVl ZCB0byBiZSBjaGFuZ2VkIHRvIGJlIG1vcmUgYWNjdXJhdGUuICAqLw0KPj4+PiAgYm9vbA0KPj4+ PiAgYXJyYXlfYXRfc3RydWN0X2VuZF9wICh0cmVlIHJlZikNCj4+Pj4gIHsNCj4+Pj4gLSAgdHJl ZSBhdHlwZTsNCj4+Pj4gKyAgLyogdGhlIFRZUEUgZm9yIHRoaXMgYXJyYXkgcmVmZXJlY2UuICAq Lw0KPj4+PiArICB0cmVlIGF0eXBlID0gTlVMTF9UUkVFOw0KPj4+PiArICAvKiB0aGUgRklFTERf REVDTCBmb3IgdGhlIGFycmF5IGZpZWxkIGluIHRoZSBjb250YWluaW5nIHN0cnVjdHVyZS4gICov DQo+Pj4+ICsgIHRyZWUgYWZpZWxkX2RlY2wgPSBOVUxMX1RSRUU7DQo+Pj4+ICAgICAgaWYgKFRS RUVfQ09ERSAocmVmKSA9PSBBUlJBWV9SRUYNCj4+Pj4gICAgICAgIHx8IFRSRUVfQ09ERSAocmVm KSA9PSBBUlJBWV9SQU5HRV9SRUYpDQo+Pj4+IEBAIC0xMjcwNSw3ICsxMjcyMSwxMCBAQCBhcnJh eV9hdF9zdHJ1Y3RfZW5kX3AgKHRyZWUgcmVmKQ0KPj4+PiAgICAgIH0NCj4+Pj4gICAgZWxzZSBp ZiAoVFJFRV9DT0RFIChyZWYpID09IENPTVBPTkVOVF9SRUYNCj4+Pj4gIAkgICAmJiBUUkVFX0NP REUgKFRSRUVfVFlQRSAoVFJFRV9PUEVSQU5EIChyZWYsIDEpKSkgPT0gQVJSQVlfVFlQRSkNCj4+ Pj4gLSAgICBhdHlwZSA9IFRSRUVfVFlQRSAoVFJFRV9PUEVSQU5EIChyZWYsIDEpKTsNCj4+Pj4g KyAgICB7DQo+Pj4+ICsgICAgICBhdHlwZSA9IFRSRUVfVFlQRSAoVFJFRV9PUEVSQU5EIChyZWYs IDEpKTsNCj4+Pj4gKyAgICAgIGFmaWVsZF9kZWNsID0gVFJFRV9PUEVSQU5EIChyZWYsIDEpOw0K Pj4+PiArICAgIH0NCj4+Pj4gICAgZWxzZSBpZiAoVFJFRV9DT0RFIChyZWYpID09IE1FTV9SRUYp DQo+Pj4+ICAgICAgew0KPj4+PiAgICAgICAgdHJlZSBhcmcgPSBUUkVFX09QRVJBTkQgKHJlZiwg MCk7DQo+Pj4+IEBAIC0xMjcxNyw2ICsxMjczNiw3IEBAIGFycmF5X2F0X3N0cnVjdF9lbmRfcCAo dHJlZSByZWYpDQo+Pj4+ICAJICBpZiAodHJlZSBmbGQgPSBsYXN0X2ZpZWxkIChhcmd0eXBlKSkN Cj4+Pj4gIAkgICAgew0KPj4+PiAgCSAgICAgIGF0eXBlID0gVFJFRV9UWVBFIChmbGQpOw0KPj4+ PiArCSAgICAgIGFmaWVsZF9kZWNsID0gZmxkOw0KPj4+PiAgCSAgICAgIGlmIChUUkVFX0NPREUg KGF0eXBlKSAhPSBBUlJBWV9UWVBFKQ0KPj4+PiAgCQlyZXR1cm4gZmFsc2U7DQo+Pj4+ICAJICAg ICAgaWYgKFZBUl9QIChhcmcpICYmIERFQ0xfU0laRSAoZmxkKSkNCj4+Pj4gQEAgLTEyNzcwLDEz ICsxMjc5MCwxNiBAQCBhcnJheV9hdF9zdHJ1Y3RfZW5kX3AgKHRyZWUgcmVmKQ0KPj4+PiAgICAg ICAgcmVmID0gVFJFRV9PUEVSQU5EIChyZWYsIDApOw0KPj4+PiAgICAgIH0NCj4+Pj4gIC0gIC8q IFRoZSBhcnJheSBub3cgaXMgYXQgc3RydWN0IGVuZC4gIFRyZWF0IGZsZXhpYmxlIGFycmF5cyBh cw0KPj4+PiArICBnY2NfYXNzZXJ0ICghYWZpZWxkX2RlY2wNCj4+Pj4gKwkgICAgICB8fCAoYWZp ZWxkX2RlY2wgJiYgVFJFRV9DT0RFIChhZmllbGRfZGVjbCkgPT0gRklFTERfREVDTCkpOw0KPj4+ PiArDQo+Pj4+ICsgIC8qIFRoZSBhcnJheSBub3cgaXMgYXQgc3RydWN0IGVuZC4gIFRyZWF0IGZs ZXhpYmxlIGFycmF5IG1lbWJlciBhcw0KPj4+PiAgICAgICBhbHdheXMgc3ViamVjdCB0byBleHRl bmQsIGV2ZW4gaW50byBqdXN0IHBhZGRpbmcgY29uc3RyYWluZWQgYnkNCj4+Pj4gICAgICAgYW4g dW5kZXJseWluZyBkZWNsLiAgKi8NCj4+Pj4gICAgaWYgKCEgVFlQRV9TSVpFIChhdHlwZSkNCj4+ Pj4gICAgICAgIHx8ICEgVFlQRV9ET01BSU4gKGF0eXBlKQ0KPj4+PiAgICAgICAgfHwgISBUWVBF X01BWF9WQUxVRSAoVFlQRV9ET01BSU4gKGF0eXBlKSkpDQo+Pj4+IC0gICAgcmV0dXJuIHRydWU7 DQo+Pj4+ICsgICAgcmV0dXJuIGFmaWVsZF9kZWNsID8gIURFQ0xfTk9UX0ZMRVhBUlJBWSAoYWZp ZWxkX2RlY2wpIDogdHJ1ZTsNCj4+Pj4gICAgICAvKiBJZiB0aGUgcmVmZXJlbmNlIGlzIGJhc2Vk IG9uIGEgZGVjbGFyZWQgZW50aXR5LCB0aGUgc2l6ZSBvZiB0aGUgYXJyYXkNCj4+Pj4gICAgICAg aXMgY29uc3RyYWluZWQgYnkgaXRzIGdpdmVuIGRvbWFpbi4gIChEbyBub3QgdHJ1c3QgY29tbW9u cyBQUi82OTM2OCkuICAqLw0KPj4+PiBAQCAtMTI3OTgsOSArMTI4MjEsOSBAQCBhcnJheV9hdF9z dHJ1Y3RfZW5kX3AgKHRyZWUgcmVmKQ0KPj4+PiAgICAgICAgaWYgKFRSRUVfQ09ERSAoVFlQRV9T SVpFX1VOSVQgKFRSRUVfVFlQRSAoYXR5cGUpKSkgIT0gSU5URUdFUl9DU1QNCj4+Pj4gIAkgIHx8 IFRSRUVfQ09ERSAoVFlQRV9NQVhfVkFMVUUgKFRZUEVfRE9NQUlOIChhdHlwZSkpKSAhPSBJTlRF R0VSX0NTVA0KPj4+PiAgICAgICAgICAgIHx8IFRSRUVfQ09ERSAoVFlQRV9NSU5fVkFMVUUgKFRZ UEVfRE9NQUlOIChhdHlwZSkpKSAhPSBJTlRFR0VSX0NTVCkNCj4+Pj4gLQlyZXR1cm4gdHJ1ZTsN Cj4+Pj4gKwlyZXR1cm4gYWZpZWxkX2RlY2wgPyAhREVDTF9OT1RfRkxFWEFSUkFZIChhZmllbGRf ZGVjbCkgOiB0cnVlOw0KPj4+PiAgICAgICAgaWYgKCEgZ2V0X2FkZHJfYmFzZV9hbmRfdW5pdF9v ZmZzZXQgKHJlZl90b19hcnJheSwgJm9mZnNldCkpDQo+Pj4+IC0JcmV0dXJuIHRydWU7DQo+Pj4+ ICsJcmV0dXJuIGFmaWVsZF9kZWNsID8gIURFQ0xfTk9UX0ZMRVhBUlJBWSAoYWZpZWxkX2RlY2wp IDogdHJ1ZTsNCj4+Pj4gICAgICAgICAgLyogSWYgYXQgbGVhc3Qgb25lIGV4dHJhIGVsZW1lbnQg Zml0cyBpdCBpcyBhIGZsZXhhcnJheS4gICovDQo+Pj4+ICAgICAgICBpZiAoa25vd25fbGUgKCh3 aTo6dG9fb2Zmc2V0IChUWVBFX01BWF9WQUxVRSAoVFlQRV9ET01BSU4gKGF0eXBlKSkpDQo+Pj4+ IEBAIC0xMjgwOCwxMiArMTI4MzEsMTIgQEAgYXJyYXlfYXRfc3RydWN0X2VuZF9wICh0cmVlIHJl ZikNCj4+Pj4gIAkJICAgICArIDIpDQo+Pj4+ICAJCSAgICAqIHdpOjp0b19vZmZzZXQgKFRZUEVf U0laRV9VTklUIChUUkVFX1RZUEUgKGF0eXBlKSkpLA0KPj4+PiAgCQkgICAgd2k6OnRvX29mZnNl dCAoREVDTF9TSVpFX1VOSVQgKHJlZikpIC0gb2Zmc2V0KSkNCj4+Pj4gLQlyZXR1cm4gdHJ1ZTsN Cj4+Pj4gKwlyZXR1cm4gYWZpZWxkX2RlY2wgPyAhREVDTF9OT1RfRkxFWEFSUkFZIChhZmllbGRf ZGVjbCkgOiB0cnVlOw0KPj4+PiAgICAgICAgICByZXR1cm4gZmFsc2U7DQo+Pj4+ICAgICAgfQ0K Pj4+PiAgLSAgcmV0dXJuIHRydWU7DQo+Pj4+ICsgIHJldHVybiBhZmllbGRfZGVjbCA/ICFERUNM X05PVF9GTEVYQVJSQVkgKGFmaWVsZF9kZWNsKSA6IHRydWU7DQo+Pj4+ICB9DQo+Pj4+ICAgIC8q IFJldHVybiBhIHRyZWUgcmVwcmVzZW50aW5nIHRoZSBvZmZzZXQsIGluIGJ5dGVzLCBvZiB0aGUg ZmllbGQgcmVmZXJlbmNlZA0KPj4+PiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUuaCBiL2djYy90cmVl LmgNCj4+Pj4gaW5kZXggMjY2ZTI0YTA1NjMzLi44MTA3NmIwNDUwMDMgMTAwNjQ0DQo+Pj4+IC0t LSBhL2djYy90cmVlLmgNCj4+Pj4gKysrIGIvZ2NjL3RyZWUuaA0KPj4+PiBAQCAtMzAwNSw2ICsz MDA1LDEyIEBAIGV4dGVybiB2b2lkIGRlY2xfdmFsdWVfZXhwcl9pbnNlcnQgKHRyZWUsIHRyZWUp Ow0KPj4+PiAgI2RlZmluZSBERUNMX1BBRERJTkdfUChOT0RFKSBcDQo+Pj4+ICAgIChGSUVMRF9E RUNMX0NIRUNLIChOT0RFKS0+ZGVjbF9jb21tb24uZGVjbF9mbGFnXzMpDQo+Pj4+ICArLyogVXNl ZCBpbiBhIEZJRUxEX0RFQ0wgdG8gaW5kaWNhdGUgd2hldGhlciB0aGlzIGZpZWxkIGlzIG5vdCBh IGZsZXhpYmxlDQo+Pj4+ICsgICBhcnJheSBtZW1iZXIuIFRoaXMgaXMgb25seSB2YWxpZCBmb3Ig dGhlIGxhc3QgYXJyYXkgdHlwZSBmaWVsZCBvZiBhDQo+Pj4+ICsgICBzdHJ1Y3R1cmUuICAqLw0K Pj4+PiArI2RlZmluZSBERUNMX05PVF9GTEVYQVJSQVkoTk9ERSkgXA0KPj4+PiArICAoRklFTERf REVDTF9DSEVDSyAoTk9ERSktPmRlY2xfY29tbW9uLmRlY2xfbm90X2ZsZXhhcnJheSkNCj4+Pj4g Kw0KPj4+PiAgLyogQSBudW1lcmljIHVuaXF1ZSBpZGVudGlmaWVyIGZvciBhIExBQkVMX0RFQ0wu ICBUaGUgVUlEIGFsbG9jYXRpb24gaXMNCj4+Pj4gICAgIGRlbnNlLCB1bmlxdWUgd2l0aGluIGFu eSBvbmUgZnVuY3Rpb24sIGFuZCBtYXkgYmUgdXNlZCB0byBpbmRleCBhcnJheXMuDQo+Pj4+ICAg ICBJZiB0aGUgdmFsdWUgaXMgLTEsIHRoZW4gbm8gVUlEIGhhcyBiZWVuIGFzc2lnbmVkLiAgKi8N Cj4+Pj4gQEAgLTU1NDMsMTAgKzU1NDksMTAgQEAgZXh0ZXJuIHRyZWUgY29tcG9uZW50X3JlZl9m aWVsZF9vZmZzZXQgKHRyZWUpOw0KPj4+PiAgICAgcmV0dXJucyBudWxsLiAgKi8NCj4+Pj4gIGVu dW0gc3RydWN0IHNwZWNpYWxfYXJyYXlfbWVtYmVyDQo+Pj4+ICAgIHsNCj4+Pj4gLSAgIG5vbmUs ICAgICAgLyogTm90IGEgc3BlY2lhbCBhcnJheSBtZW1iZXIuICAqLw0KPj4+PiAtICAgaW50XzAs ICAgICAvKiBJbnRlcmlvciBhcnJheSBtZW1iZXIgd2l0aCBzaXplIHplcm8uICAqLw0KPj4+PiAt ICAgdHJhaWxfMCwgICAvKiBUcmFpbGluZyBhcnJheSBtZW1iZXIgd2l0aCBzaXplIHplcm8uICAq Lw0KPj4+PiAtICAgdHJhaWxfMSAgICAvKiBUcmFpbGluZyBhcnJheSBtZW1iZXIgd2l0aCBvbmUg ZWxlbWVudC4gICovDQo+Pj4+ICsgICAgbm9uZSwJLyogTm90IGEgc3BlY2lhbCBhcnJheSBtZW1i ZXIuICAqLw0KPj4+PiArICAgIGludF8wLAkvKiBJbnRlcmlvciBhcnJheSBtZW1iZXIgd2l0aCBz aXplIHplcm8uICAqLw0KPj4+PiArICAgIHRyYWlsXzAsCS8qIFRyYWlsaW5nIGFycmF5IG1lbWJl ciB3aXRoIHNpemUgemVyby4gICovDQo+Pj4+ICsgICAgdHJhaWxfMQkvKiBUcmFpbGluZyBhcnJh eSBtZW1iZXIgd2l0aCBvbmUgZWxlbWVudC4gICovDQo+Pj4+ICAgIH07DQo+Pj4+ICAgIC8qIFJl dHVybiB0aGUgc2l6ZSBvZiB0aGUgbWVtYmVyIHJlZmVyZW5jZWQgYnkgdGhlIENPTVBPTkVOVF9S RUYsIHVzaW5nDQoNCg==