From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on20601.outbound.protection.outlook.com [IPv6:2a01:111:f403:2413::601]) by sourceware.org (Postfix) with ESMTPS id E41A33858CD9 for ; Tue, 1 Oct 2024 14:56:31 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org E41A33858CD9 Authentication-Results: sourceware.org; dmarc=fail (p=reject dis=none) header.from=nvidia.com Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=nvidia.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org E41A33858CD9 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=2a01:111:f403:2413::601 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1727794595; cv=pass; b=e5iKiw6mP8sTj0JYmdJs4a9IlHAAcZXAfZYPdpdi6ZD2RZMs1jAjr5Fjnx2bpoFWHM6SJ1NGCS5VcANKNtGIY9vH8Z0m6nFJ47uEX2lJoCqToj8Mgmn7LoAZuOmKlN3natmADEckXyOiZ/xWoutapMzpFc0alCk6nR6CGhRbcao= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1727794595; c=relaxed/simple; bh=Fv9xzl+Ap1/VwgFXwc/fNKL1TGxcxH4erqMbxUJSmJ4=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=gfJ+Xc9MmxdEtRHNg5JheafuDv0p4k0M21355o/+O252QxxApiE/rl9nOZU5gUW4qwh+MIeGRYbnSim6Vu7hoyJ7LdHEjpKjKZlRNx6aW0RJfFhzkMGR0IpR/lJjsJIrfgOx7jxu9NbQ1m8VbZ1ijV6FVv/0o+8WN1Tk7+bMeaU= ARC-Authentication-Results: i=2; server2.sourceware.org ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=yjYc0rI1d9tWgIIat9J1WMBA3ny/endCq31L/od+4z5Bk6K0PFINAGaVLdaxpKPVf4HyLfYd2SenmacpmTh7jnc86FOmzVame7Lb84uq4sQerrdAJvzADk91/SAaS3Jvs+FS3sus3zMQoWF+3I/3U5L/KzotsXQ0c7tEPNzIYbO7k69cNYeDTAsBMS0U9VVUYtH2oNanal6HJpmUigfFFJh39UbuPo0LjCwQwkrwGL+TirHUrF0TmCkHgQ2lPpftCPhmto1hBn0qSJZCY76SnHC3x8Zbr+tQ7jH8POVos4Bhg0iRdAfvICdFkdu9TT816RP7mQhAvhcEGQpnWP4JhA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=Fv9xzl+Ap1/VwgFXwc/fNKL1TGxcxH4erqMbxUJSmJ4=; b=CEa8P0iFMoMx1tb9yb0lqgJcvM+qEFjPJWfSxc6i+Pt22PEG3tyB0M4PUmnAwu8SbaKt7LeAD+ddgMshxwuToUPsF376fI3LOX9zzjto7Y1QkfJ/ofkmW8Y9o/9GqqUxO8887BBHEOe8AehUGWI/Zv0kNIqfJUsJ6KrZJY1h1un4gNE0mEBx8KrlJkyi46WK/9ED7oG2D0jfMqprt/E90pfxl8bL3reUzTMQZ+ZzUEok7mQ/Ok4iLH4OlGufdbQpllEEtcO7vEFLiZIL2LOP2mlKApfEM54JgA+vrqFalAp05Dj+YAbobAmAzLC2waQ8i2ix3xuJUkCkl59x8mCFvQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Fv9xzl+Ap1/VwgFXwc/fNKL1TGxcxH4erqMbxUJSmJ4=; b=NgJ5U11VJOXxS+mF4kLNQ8SRPtPKe8G1/d/0uMErFbLGgdNhkgIMHq8cjqV5zyOWLoy79Kwpmv3Zu9484EhoAwJcGT4AhkIM0GKm+kccbjc7eDhhH7FHXRvMapw4N8SVcLA3qdqmcJhQa9m1mkcn3BsspPE/FVY2bv7ucHclcXspA89ewehbNeQAEo5CpHkPHQZb9oGOSf1wGLbAnrsWQFzJI5UDQQSqy3sQyOf6hOjQ3stB8ki4uG9YkUzw8DP2hadtOZ/YLaNeIsP0Dq7wOB40oZx6EqP/xQHt52pMbqHloexbcBBCl4hL3fkXnqG58cq/YneP+65hd/US4YQXYg== Received: from IA1PR12MB9031.namprd12.prod.outlook.com (2603:10b6:208:3f9::19) by BL3PR12MB6452.namprd12.prod.outlook.com (2603:10b6:208:3bb::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8005.26; Tue, 1 Oct 2024 14:56:26 +0000 Received: from IA1PR12MB9031.namprd12.prod.outlook.com ([fe80::1fb7:5076:77b5:559c]) by IA1PR12MB9031.namprd12.prod.outlook.com ([fe80::1fb7:5076:77b5:559c%3]) with mapi id 15.20.8026.016; Tue, 1 Oct 2024 14:56:26 +0000 From: Prathamesh Kulkarni To: Richard Sandiford CC: "rguenther@suse.de" , Thomas Schwinge , "gcc-patches@gcc.gnu.org" Subject: RE: Re-compute TYPE_MODE and DECL_MODE while streaming in for accelerator Thread-Topic: Re-compute TYPE_MODE and DECL_MODE while streaming in for accelerator Thread-Index: AdrxVpf6dNO5bvvBSsmk3+TcPYF3JwBEtIz2ABVSLwAAPjKK0AAB0eiAADcjXtACQ7/qgAFFWz0AAuCtIXAAAzP6gAFwh/0g Date: Tue, 1 Oct 2024 14:56:26 +0000 Message-ID: References: <84437483-ED6B-47F3-8BB5-3766EC270F12@suse.de> <33q20n27-2n79-s910-6549-8s95pron7599@fhfr.qr> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: IA1PR12MB9031:EE_|BL3PR12MB6452:EE_ x-ms-office365-filtering-correlation-id: 5d6aa45a-d523-4de0-9a2d-08dce2293961 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|1800799024|366016|38070700018; x-microsoft-antispam-message-info: =?utf-8?B?ejVkWXFHVU1nTFUxUzQ3Zk52SktvclMzUlZOM1lnTnJDeDJzdXYvYXJ1R3VU?= =?utf-8?B?d2RNWDhiblRwVHBsdUZvWjZtNlFlRzlrKzB1MlUyUW16R1Q1ZXhja2VpM3ZL?= =?utf-8?B?aTZsRzFzckpwaXR2MCtvbFAvNnhZOXVTUW56VDd1SWhEY2tNOXFiVkNHeDhs?= =?utf-8?B?R1plSzZPdmZESjAzNHdPRmJCZ3VHalIwdENlZFRUZmRNT0EwTGNpaUMxaTdw?= =?utf-8?B?MERBbGtJcHZJQ29UbDd1RlRTY0VIc256V3hZdEJSNStaSmhqY0wxV1M3Yysz?= =?utf-8?B?eFEvSFdob0FTWXZCKy9naU81a1EzcmtTdmRzUFlGSTUzTkVJcFA5YjMyTEdJ?= =?utf-8?B?VjRsVVZwaUsrb21kRS9USFdpQXp5S0FDM0EzN1ErVExMMUZCWVZrZjNVMEdB?= =?utf-8?B?RzlXNG4vVUxxaVNpNk1zWkJHTG1JczJoNTVXUjBkYkJEbzhpNG1zR1BzQmMx?= =?utf-8?B?SWZPKzdZelp3QzJRcmIyMlVRTkM3UC92MnVBaDR0cHBmME5CeGFzVkpkOGVs?= =?utf-8?B?b3JjL3o3bWE1VDVNN3o3QktObk9mYUhrYTdpSnpLUTJiRk5nOEh4NHVBYXBO?= =?utf-8?B?Mmt0Z1RNZTZzYUxqeXRRR25HOEl2LzFtK2dJVkRIVWNVRlBlQ3JRMGdDL3FT?= =?utf-8?B?S05xNG8wMGRKT0RSek1PWkFWdUxGQzZKbkMvR3k4VjA5eFF3QlVGNW8xVXUy?= =?utf-8?B?OWpwSndOSmJmOFhrc0lUaXBtaUFtTzgva2FGNjNEalVmSis1azR2NWxXWGIv?= =?utf-8?B?YzVNam5jQWthYm5qTStmdW1DT2hudUFmSmFwcld4Vzl6NWdYaGxTV01naWpS?= =?utf-8?B?ZEZUd0YwSmVQV05RV0RqR3RPSWxFeU9OYy8rVklpZm91RFpoVk1qeFlkUjk0?= =?utf-8?B?REdlRVZDT3FKVjlZS1dGNmN3MTMrZzdSbkZDaUZXSnlnUUM2SHovRlk2bGQr?= =?utf-8?B?QnRmcGw3SXdHbUVhZmFIa0NaTDQrWjFuOEFvZjh3MkZCRDl4MzNOZEwxeUdR?= =?utf-8?B?bnJtamhhN2ppYnVWZW1JWlBKTlJ0T2dvR29JNGNiWFdiY1RlKzFNK0ZpVEw3?= =?utf-8?B?YVROUmFoZWVBWXlRZHNMN1lDS0FvRG5RaWhDRzZRYzFKa2ZZTkg5WWxGK0dT?= =?utf-8?B?YnJoRHpESDdiT1hSL0dGenJScDBtWG92ZnNGWTJDQjl4cE1rOFBpZ3NaNitM?= =?utf-8?B?dnh3MkJXUHlCK25Rd2VTZzZld25VVG5QdWFPd0VqQlJLb3l1bzZEalJzckFp?= =?utf-8?B?TjVCUnVPWnR5eS83OWZnam9IbGg3NG9TNWVwWmF1b2lqNjJGc0ZmVUdNTkxa?= =?utf-8?B?MzRxeGxiY0ZvZnh1MmprQ2UrTk5yK0srbEovRmkxV0FLWXA1U1lsTEtaWEJu?= =?utf-8?B?aEw0T1lsN1IveXB1azF4T05LWW4wSWpRMFB2L1BEK3FYc0xLblRvTi9YVU00?= =?utf-8?B?YnpZbklTVXZMWWhsbGxkZ3FyVUl5Uzk0SFg5d0U5dFpEUGlHcDk2YUtvMGVa?= =?utf-8?B?V1ltdmtkaVo4d0E3SHpTUGFwZkZGYmZweWpFL0loNGQ5UW5HMHFvOU0rT05i?= =?utf-8?B?K05mZjcrdmVaQnYzcWxQMWFlMnZJWCt5cnBHM3VEeGJSQ09jc0hkZjVlL1hs?= =?utf-8?B?ay83N0s2WHdmNkxrSHd3b0hZSkhZNFI5MldWajRSOVF6OXloSDQ0REFheUwz?= =?utf-8?B?STNSYlRwZUdURndxdmsxRENLcFF6MTY4azM3b25KMUpyZWJOL0Y1ZFQwbWkx?= =?utf-8?B?OS9hWER4eW5JdTVjdXBmaHR2dFhoRkV2WkZCYVc2R0FQLzR0YTlhZ0hNZjRM?= =?utf-8?B?UlpibDZycDdBNEJmZlMwQWxYQ3BWNVBDK0xoemhVQ2g5TDNUNzdaM21ZZjJs?= =?utf-8?B?SXV2Qk1mMTJlbmFUZDBKem1CWnJmaGVpaGNpeHRrcEtHV2ZTN1drSldMYWZn?= =?utf-8?Q?t3mrC7yzVpc=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:IA1PR12MB9031.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?akR6VnRzY1pjZFF3RDBsdzVCeTlnZFd0aHJlN2tnVTFZT0FrUC84MS9PYXNo?= =?utf-8?B?Rkd0dWwzWmpzQU44WlJRVHVOMkFQQzlRSnpYVGZTNmtxd05iYmo0d3B3K2kx?= =?utf-8?B?Wm5sRkxjQm5UKzdIZ1JIOUdiaExuc2pCMkwxV0lUbzRBUDdub3djZ041cjNh?= =?utf-8?B?TEphZ3pqL245aUV5WVZ1R1dPZHRFU3pyQWNhSkZ1d3owbWgzZ1g5S3ZXbUFW?= =?utf-8?B?aG1DdDg0UUp1ODlwTlNvaG04Tm9rUFRVUGpjcEtuQ0FIYVpHaWVCUU1zREth?= =?utf-8?B?U1RtblArL1R2Z1ZlZi9Xc3d1SGFzcnVrbnFUUDdCMzJlalNRb2NWT0RPQWEv?= =?utf-8?B?SVJHcmNPQ0thcHVZM20yVVZuMFY3Kys4UlI3aFdSaVlSdlBndnpBSC84a0x4?= =?utf-8?B?OEU2TGJHaVUrL0ZmMjk0TCsrVUJvRTlWdlBIY1VPeW1JTWErNGFnaVZrUlVw?= =?utf-8?B?VEFCckREakU5STNobEt4OGF3ck14VnQ0SzNoNXV2cVZBSWh4QVVWV09Gbk1D?= =?utf-8?B?VVdjVWlvdzhZR2N4dFE5OGloajkzRUlodkdRU0o1NGJEWTM1ODNHbUZDeTc0?= =?utf-8?B?SHlVSXM0a3hUMksxNFh6UGx1amxXTkV1aHdPQ1ZDQy95T09BaXdnZy9hZVJY?= =?utf-8?B?c2lHSStybDhNOGFSdW53QnZHYWFvTGw0TnRtZTBCMStSbU9RODhkYkJLYjVR?= =?utf-8?B?elplTWc3TytKRE4yNGR0Ry84aVk3NXFZT2tKWEtPSkQ5UWNDUkFuZlVwVUU0?= =?utf-8?B?OVJSM0ZHTDROTUZOaTRLeFZVMFAwU3hDRHZiMWM2UEVXbHhKMGRQaGNZNzNF?= =?utf-8?B?SjBFNTA3cHNxUS8rMUJYRmlVeWk0WXJkNGR6NlFvS0dmMEpFOHN2WndnbEZH?= =?utf-8?B?bGVSd3dPd1d0MzNXdVR4MFA2eTQ5cWw4OG9EQ0JMRk5kZkJZUnYrSXNEY3hC?= =?utf-8?B?UGZxd3hhK1RLbU9LRmhBcU00MTJQOVhoYXNKaDZ0WU85V2ZwMWtKSk5oeWZr?= =?utf-8?B?andHMHIvdTgrcE03S3kzclMxZjJzbjBScTE3K3hDNndhTFE1VmJ6dlVOOWdT?= =?utf-8?B?dGc4TjVTSVU5VW16WGQrdWRxeCtlQkJvVFBCWFJOM1pOOUh4dzZ2aUtNMzRQ?= =?utf-8?B?b0xEd2U0elk1bmlqLzdrclRkUWxGSU8yWFYwU1AzNDh0TUtqZEJwL01mYkRq?= =?utf-8?B?S1FTT0Z3eWpCMkhwWTZtY2piWlNmMDY1aFpTb2w2QjlJd0JxK2taTWlyMjRC?= =?utf-8?B?OGpPYVB2d083NjVDYitmWmRRNVVDVmcrbEdhVkgxUGdVMGh4Q1Zva1BHNDI2?= =?utf-8?B?dldiNE5wd1JNRmQ4OVNMU2xVOHNuMHZIK3FnVjNyVkM1bEZMampvRUh3QWx1?= =?utf-8?B?TjQySElxYVV6TldETlFCMExPMEgzOUF3bWhlSjFHYzVaSjh6YkxrWng0LzNL?= =?utf-8?B?RmdrZVh6VTdhaTdrTC9wWHZvZTJwa1NWaTdsS0ZpOEJqZ2laUW8rODQ0N1ZK?= =?utf-8?B?Z3NMOHk4TWkyTUduTmhWVXlFTXRQWXJIa2RqUFhzK0FheGFKUitiMUtMQy9N?= =?utf-8?B?aENOM3ZicFA1aDJETHRheUNWa29mdFQxbDdaRUJyYnFpalFaTHRZdHpIeldm?= =?utf-8?B?R3AvVUdITEZiYjIwZXptd2k1WDhkL0s2V0xHRVp5VTJMdVFYZVhOTmpNN3VF?= =?utf-8?B?cm44L1AzSTIzS2V5SzlneHZTNjRhUVpZOEJtdXRoMnN5VU84VUpZR2N1R0lz?= =?utf-8?B?dmIzd1F6ZjV1QUpERG5ab3hKeU5TY3IvMk9QWUh6a1VKVk1UNDlPWitWbHUw?= =?utf-8?B?YlNaeTdWOFBDbmMwZ3haaFljTXFqVW8zREcweWhWckkvYnQzckg5bC9XQWdq?= =?utf-8?B?UUhtNkxtVkdKYld5ckJWSXhMQWJsekNraEpyNzY4RUV0dTBSZnU4ZWdKcFlX?= =?utf-8?B?d2ZxeFB0T2F3cXVhVVhENjB4K0h6MG1ucjVzemw5cjU1RHBJdnlLNklnS3dM?= =?utf-8?B?ZUthd01kYlNZWFdEUnUycmNyV3ZQbExMckRYZW0yaE1FN1VVM2w5ekc2cFlJ?= =?utf-8?B?c0R1bHhIaGh3eW9IZk1vRnFVMnZ1SG1EeGhwNWoyZlovY2p0V0VRSDRVajdV?= =?utf-8?Q?5yNGPxuI/38brRxtmwxuRy2jW?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: IA1PR12MB9031.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5d6aa45a-d523-4de0-9a2d-08dce2293961 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Oct 2024 14:56:26.3889 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: vHWcxcUwgETtpHEESayYE4XF2jsifCFY1+q8ErsU6Wdy+pBUKaLriIhD1ZvnWhvx1lw06CUjtsyTXl8TXxzk/Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL3PR12MB6452 X-Spam-Status: No, score=-11.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FORGED_SPF_HELO,GIT_PATCH_0,KAM_SHORT,SPF_HELO_PASS,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: DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogUmljaGFyZCBCaWVuZXIg PHJndWVudGhlckBzdXNlLmRlPg0KPiBTZW50OiBUdWVzZGF5LCBTZXB0ZW1iZXIgMjQsIDIwMjQg MTI6MjkgUE0NCj4gVG86IFByYXRoYW1lc2ggS3Vsa2FybmkgPHByYXRoYW1lc2hrQG52aWRpYS5j b20+DQo+IENjOiBSaWNoYXJkIFNhbmRpZm9yZCA8cmljaGFyZC5zYW5kaWZvcmRAYXJtLmNvbT47 IFRob21hcyBTY2h3aW5nZQ0KPiA8dHNjaHdpbmdlQGJheWxpYnJlLmNvbT47IGdjYy1wYXRjaGVz QGdjYy5nbnUub3JnDQo+IFN1YmplY3Q6IFJFOiBSZS1jb21wdXRlIFRZUEVfTU9ERSBhbmQgREVD TF9NT0RFIHdoaWxlIHN0cmVhbWluZyBpbiBmb3INCj4gYWNjZWxlcmF0b3INCj4gDQo+IEV4dGVy bmFsIGVtYWlsOiBVc2UgY2F1dGlvbiBvcGVuaW5nIGxpbmtzIG9yIGF0dGFjaG1lbnRzDQo+IA0K PiANCj4gT24gVHVlLCAyNCBTZXAgMjAyNCwgUHJhdGhhbWVzaCBLdWxrYXJuaSB3cm90ZToNCj4g DQo+ID4NCj4gPg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZyb206 IFJpY2hhcmQgQmllbmVyIDxyZ3VlbnRoZXJAc3VzZS5kZT4NCj4gPiA+IFNlbnQ6IE1vbmRheSwg U2VwdGVtYmVyIDksIDIwMjQgNzoyNCBQTQ0KPiA+ID4gVG86IFByYXRoYW1lc2ggS3Vsa2Fybmkg PHByYXRoYW1lc2hrQG52aWRpYS5jb20+DQo+ID4gPiBDYzogUmljaGFyZCBTYW5kaWZvcmQgPHJp Y2hhcmQuc2FuZGlmb3JkQGFybS5jb20+OyBUaG9tYXMgU2Nod2luZ2UNCj4gPiA+IDx0c2Nod2lu Z2VAYmF5bGlicmUuY29tPjsgZ2NjLXBhdGNoZXNAZ2NjLmdudS5vcmcNCj4gPiA+IFN1YmplY3Q6 IFJFOiBSZS1jb21wdXRlIFRZUEVfTU9ERSBhbmQgREVDTF9NT0RFIHdoaWxlIHN0cmVhbWluZyBp bg0KPiA+ID4gZm9yIGFjY2VsZXJhdG9yDQo+ID4gPg0KPiA+ID4gRXh0ZXJuYWwgZW1haWw6IFVz ZSBjYXV0aW9uIG9wZW5pbmcgbGlua3Mgb3IgYXR0YWNobWVudHMNCj4gPiA+DQo+ID4gPg0KPiA+ ID4gT24gVHVlLCAzIFNlcCAyMDI0LCBQcmF0aGFtZXNoIEt1bGthcm5pIHdyb3RlOg0KPiA+ID4N Cj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0K PiA+ID4gPiA+IEZyb206IFByYXRoYW1lc2ggS3Vsa2FybmkgPHByYXRoYW1lc2hrQG52aWRpYS5j b20+DQo+ID4gPiA+ID4gU2VudDogVGh1cnNkYXksIEF1Z3VzdCAyMiwgMjAyNCA3OjQxIFBNDQo+ ID4gPiA+ID4gVG86IFJpY2hhcmQgQmllbmVyIDxyZ3VlbnRoZXJAc3VzZS5kZT4NCj4gPiA+ID4g PiBDYzogUmljaGFyZCBTYW5kaWZvcmQgPHJpY2hhcmQuc2FuZGlmb3JkQGFybS5jb20+OyBUaG9t YXMNCj4gPiA+ID4gPiBTY2h3aW5nZSA8dHNjaHdpbmdlQGJheWxpYnJlLmNvbT47IGdjYy1wYXRj aGVzQGdjYy5nbnUub3JnDQo+ID4gPiA+ID4gU3ViamVjdDogUkU6IFJlLWNvbXB1dGUgVFlQRV9N T0RFIGFuZCBERUNMX01PREUgd2hpbGUNCj4gc3RyZWFtaW5nDQo+ID4gPiA+ID4gaW4gZm9yIGFj Y2VsZXJhdG9yDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBFeHRlcm5hbCBlbWFpbDogVXNlIGNhdXRp b24gb3BlbmluZyBsaW5rcyBvciBhdHRhY2htZW50cw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4NCj4g PiA+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+ID4gPiBGcm9tOiBS aWNoYXJkIEJpZW5lciA8cmd1ZW50aGVyQHN1c2UuZGU+DQo+ID4gPiA+ID4gPiBTZW50OiBXZWRu ZXNkYXksIEF1Z3VzdCAyMSwgMjAyNCA1OjA5IFBNDQo+ID4gPiA+ID4gPiBUbzogUHJhdGhhbWVz aCBLdWxrYXJuaSA8cHJhdGhhbWVzaGtAbnZpZGlhLmNvbT4NCj4gPiA+ID4gPiA+IENjOiBSaWNo YXJkIFNhbmRpZm9yZCA8cmljaGFyZC5zYW5kaWZvcmRAYXJtLmNvbT47IFRob21hcw0KPiA+ID4g PiA+ID4gU2Nod2luZ2UgPHRzY2h3aW5nZUBiYXlsaWJyZS5jb20+OyBnY2MtcGF0Y2hlc0BnY2Mu Z251Lm9yZw0KPiA+ID4gPiA+ID4gU3ViamVjdDogUkU6IFJlLWNvbXB1dGUgVFlQRV9NT0RFIGFu ZCBERUNMX01PREUgd2hpbGUNCj4gPiA+ID4gPiA+IHN0cmVhbWluZyBpbg0KPiA+ID4gPiA+IGZv cg0KPiA+ID4gPiA+ID4gYWNjZWxlcmF0b3INCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBFeHRl cm5hbCBlbWFpbDogVXNlIGNhdXRpb24gb3BlbmluZyBsaW5rcyBvciBhdHRhY2htZW50cw0KPiA+ ID4gPiA+ID4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBPbiBXZWQsIDIxIEF1ZyAyMDI0LCBQ cmF0aGFtZXNoIEt1bGthcm5pIHdyb3RlOg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4NCj4g PiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0K PiA+ID4gPiA+ID4gPiA+IEZyb206IFJpY2hhcmQgQmllbmVyIDxyZ3VlbnRoZXJAc3VzZS5kZT4N Cj4gPiA+ID4gPiA+ID4gPiBTZW50OiBUdWVzZGF5LCBBdWd1c3QgMjAsIDIwMjQgMTA6MzYgQU0N Cj4gPiA+ID4gPiA+ID4gPiBUbzogUmljaGFyZCBTYW5kaWZvcmQgPHJpY2hhcmQuc2FuZGlmb3Jk QGFybS5jb20+DQo+ID4gPiA+ID4gPiA+ID4gQ2M6IFByYXRoYW1lc2ggS3Vsa2FybmkgPHByYXRo YW1lc2hrQG52aWRpYS5jb20+OyBUaG9tYXMNCj4gPiA+ID4gPiBTY2h3aW5nZQ0KPiA+ID4gPiA+ ID4gPiA+IDx0c2Nod2luZ2VAYmF5bGlicmUuY29tPjsgZ2NjLXBhdGNoZXNAZ2NjLmdudS5vcmcN Cj4gPiA+ID4gPiA+ID4gPiBTdWJqZWN0OiBSZTogUmUtY29tcHV0ZSBUWVBFX01PREUgYW5kIERF Q0xfTU9ERSB3aGlsZQ0KPiA+ID4gPiA+ID4gPiA+IHN0cmVhbWluZw0KPiA+ID4gPiA+IGluDQo+ ID4gPiA+ID4gPiA+ID4gZm9yIGFjY2VsZXJhdG9yDQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4g PiA+ID4gPiBFeHRlcm5hbCBlbWFpbDogVXNlIGNhdXRpb24gb3BlbmluZyBsaW5rcyBvciBhdHRh Y2htZW50cw0KPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4g PiA+IEFtIDE5LjA4LjIwMjQgdW0gMjA6NTYgc2NocmllYiBSaWNoYXJkIFNhbmRpZm9yZA0KPiA+ ID4gPiA+ID4gPiA+IDxyaWNoYXJkLnNhbmRpZm9yZEBhcm0uY29tPjoNCj4gPiA+ID4gPiA+ID4g PiA+DQo+ID4gPiA+ID4gPiA+ID4gPiDvu79QcmF0aGFtZXNoIEt1bGthcm5pIDxwcmF0aGFtZXNo a0BudmlkaWEuY29tPiB3cml0ZXM6DQo+ID4gPiA+ID4gPiA+ID4gPj4gZGlmZiAtLWdpdCBhL2dj Yy9sdG8tc3RyZWFtZXItaW4uY2MNCj4gPiA+ID4gPiA+ID4gPiA+PiBiL2djYy9sdG8tc3RyZWFt ZXItaW4uY2MgaW5kZXgNCj4gPiA+ID4gPiA+ID4gPiA+PiBjYmY2MDQxZmQ2OC4uMDQyMDE4M2Zh ZjggMTAwNjQ0DQo+ID4gPiA+ID4gPiA+ID4gPj4gLS0tIGEvZ2NjL2x0by1zdHJlYW1lci1pbi5j Yw0KPiA+ID4gPiA+ID4gPiA+ID4+ICsrKyBiL2djYy9sdG8tc3RyZWFtZXItaW4uY2MNCj4gPiA+ ID4gPiA+ID4gPiA+PiBAQCAtNDQsNiArNDQsNyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBm aWxlDQo+IENPUFlJTkczLg0KPiA+ID4gPiA+ID4gPiA+ID4+IElmDQo+ID4gPiA+ID4gPiBub3QN Cj4gPiA+ID4gPiA+ID4gPiBzZWUNCj4gPiA+ID4gPiA+ID4gPiA+PiAjaW5jbHVkZSAiZGVidWcu aCINCj4gPiA+ID4gPiA+ID4gPiA+PiAjaW5jbHVkZSAiYWxsb2MtcG9vbC5oIg0KPiA+ID4gPiA+ ID4gPiA+ID4+ICNpbmNsdWRlICJ0b3BsZXYuaCINCj4gPiA+ID4gPiA+ID4gPiA+PiArI2luY2x1 ZGUgInN0b3ItbGF5b3V0LmgiDQo+ID4gPiA+ID4gPiA+ID4gPj4NCj4gPiA+ID4gPiA+ID4gPiA+ PiAvKiBBbGxvY2F0b3IgdXNlZCB0byBob2xkIHN0cmluZyBzbG90IGVudHJpZXMgZm9yDQo+IGxp bmUNCj4gPiA+ID4gPiA+ID4gPiA+PiBtYXANCj4gPiA+ID4gPiA+ID4gPiBzdHJlYW1pbmcuDQo+ ID4gPiA+ID4gPiA+ID4gPj4gKi8gc3RhdGljIHN0cnVjdCBvYmplY3RfYWxsb2NhdG9yPHN0cnVj dCBzdHJpbmdfc2xvdD4NCj4gPiA+ID4gPiA+ID4gPiA+PiAqc3RyaW5nX3Nsb3RfYWxsb2NhdG9y OyBAQCAtMTc1Miw2ICsxNzUzLDE3IEBADQo+ID4gPiA+ID4gbHRvX3JlYWRfdHJlZV8xDQo+ID4g PiA+ID4gPiA+ID4gKGNsYXNzIGx0b19pbnB1dF9ibG9jayAqaWIsIGNsYXNzIGRhdGFfaW4gKmRh dGFfaW4sIHRyZWUNCj4gPiA+ID4gPiA+ID4gPiBleHByKQ0KPiA+ID4gPiA+ID4gPiA+ID4+ICAg ICB3aXRoIC1nMSwgc2VlIGZvciBleGFtcGxlIFBSMTEzNDg4LiAgKi8NCj4gPiA+ID4gPiA+ID4g PiA+PiAgICAgICBlbHNlIGlmIChERUNMX1AgKGV4cHIpICYmIERFQ0xfQUJTVFJBQ1RfT1JJR0lO DQo+ID4gPiA+ID4gPiA+ID4gPj4gKGV4cHIpDQo+ID4gPiA+ID4gPT0NCj4gPiA+ID4gPiA+ID4g PiBleHByKQ0KPiA+ID4gPiA+ID4gPiA+ID4+ICAgIERFQ0xfQUJTVFJBQ1RfT1JJR0lOIChleHBy KSA9IE5VTExfVFJFRTsNCj4gPiA+ID4gPiA+ID4gPiA+PiArDQo+ID4gPiA+ID4gPiA+ID4gPj4g KyNpZmRlZiBBQ0NFTF9DT01QSUxFUg0KPiA+ID4gPiA+ID4gPiA+ID4+ICsgICAgICAvKiBGb3Ig ZGVjbCB3aXRoIGFnZ3JlZ2F0ZSB0eXBlLCBob3N0IHN0cmVhbXMNCj4gPiA+ID4gPiA+ID4gPiA+ PiArb3V0DQo+ID4gPiA+ID4gPiBWT0lEbW9kZS4NCj4gPiA+ID4gPiA+ID4gPiA+PiArICAgICBD b21wdXRlIHRoZSBjb3JyZWN0IERFQ0xfTU9ERSBieSBjYWxsaW5nDQo+ID4gPiByZWxheW91dF9k ZWNsLg0KPiA+ID4gPiA+ID4gKi8NCj4gPiA+ID4gPiA+ID4gPiA+PiArICAgICAgaWYgKChWQVJf UCAoZXhwcikNCj4gPiA+ID4gPiA+ID4gPiA+PiArICAgICAgIHx8IFRSRUVfQ09ERSAoZXhwcikg PT0gUEFSTV9ERUNMDQo+ID4gPiA+ID4gPiA+ID4gPj4gKyAgICAgICB8fCBUUkVFX0NPREUgKGV4 cHIpID09IEZJRUxEX0RFQ0wpDQo+ID4gPiA+ID4gPiA+ID4gPj4gKyAgICAgICYmIEFHR1JFR0FU RV9UWVBFX1AgKFRSRUVfVFlQRSAoZXhwcikpDQo+ID4gPiA+ID4gPiA+ID4gPj4gKyAgICAgICYm IERFQ0xfTU9ERSAoZXhwcikgPT0gVk9JRG1vZGUpDQo+ID4gPiA+ID4gPiA+ID4gPj4gKyAgICBy ZWxheW91dF9kZWNsIChleHByKTsgI2VuZGlmDQo+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ ID4gPiA+ID4gR2VudWluZSBxdWVzdGlvbiwgYnV0OiBpcyByZWxheW91dF9kZWNsIHNhZmUgaW4g dGhpcw0KPiA+ID4gY29udGV4dD8NCj4gPiA+ID4gPiA+IEl0DQo+ID4gPiA+ID4gPiA+ID4gZG9l cw0KPiA+ID4gPiA+ID4gPiA+ID4gYSBsb3QgbW9yZSB0aGFuIGp1c3QgcmVzZXQgdGhlIG1vZGUu ICBJdCBhbHNvIGFwcGxpZXMNCj4gPiA+ID4gPiA+ID4gPiA+IHRoZQ0KPiA+ID4gPiA+IHRhcmdl dA0KPiA+ID4gPiA+ID4gPiA+IEFCSSdzDQo+ID4gPiA+ID4gPiA+ID4gPiBwcmVmZXJlbmNlcyB3 cnQgYWxpZ25tZW50LCBwYWRkaW5nLCBhbmQgc28gb24sIHJhdGhlcg0KPiA+ID4gPiA+ID4gPiA+ ID4gdGhhbg0KPiA+ID4gPiA+ID4gPiA+IHByZXNlcnZpbmcNCj4gPiA+ID4gPiA+ID4gPiA+IHRo b3NlIG9mIHRoZSBob3N0J3MuDQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiBJdCB3 b3VsZCBiZSBiZXR0ZXIgdG8ganVzdCByZWNvbXB1dGUgdGhlIG1vZGUgaGVyZS4NCj4gPiA+ID4g PiA+ID4gSGksDQo+ID4gPiA+ID4gPiA+IFRoZSBhdHRhY2hlZCBwYXRjaCBzZXRzIERFQ0xfTU9E RSAoZXhwcikgdG8gVFlQRV9NT0RFDQo+ID4gPiA+ID4gPiA+IChUUkVFX1RZUEUNCj4gPiA+ID4g PiA+IChleHByKSkgaW4gbHRvX3JlYWRfdHJlZV8xIGluc3RlYWQgb2YgY2FsbGluZyByZWxheW91 dF9kZWNsDQo+ID4gPiAoZXhwcikuDQo+ID4gPiA+ID4gPiA+IEkgY2hlY2tlZCBsYXlvdXRfZGVj bF90eXBlIGRvZXMgdGhlIHNhbWUgdGhpbmcgZm9yIHNldHRpbmcNCj4gPiA+ID4gPiA+ID4gZGVj bA0KPiA+ID4gPiA+ID4gbW9kZSwNCj4gPiA+ID4gPiA+ID4gZXhjZXB0IGZvciBiaXQgZmllbGRz LiBTaW5jZSBiaXQtZmllbGRzIGNhbm5vdCBoYXZlDQo+ID4gPiA+ID4gPiA+IGFnZ3JlZ2F0ZQ0K PiA+ID4gPiA+IHR5cGUsDQo+ID4gPiA+ID4gPiBJIGFtIGFzc3VtaW5nIHNldHRpbmcgREVDTF9N T0RFIChleHByKSB0byBUWVBFX01PREUNCj4gKFRSRUVfVFlQRQ0KPiA+ID4gPiA+IChleHByKSkN Cj4gPiA+ID4gPiA+IHdvdWxkIGJlIE9LIGluIHRoaXMgY2FzZSA/DQo+ID4gPiA+ID4gPg0KPiA+ ID4gPiA+ID4gWWVwLCB0aGF0IHNob3VsZCB3b3JrLg0KPiA+ID4gPiA+IFRoYW5rcywgSSBoYXZl IGNvbW1pdHRlZCB0aGUgcGF0Y2ggaW46DQo+ID4gPiA+ID4NCj4gaHR0cHM6Ly9nY2MuZ251Lm9y Zy9naXQvP3A9Z2NjLmdpdDthPWNvbW1pdDtoPTc5MmFkYjhkMjIyZDBkMWQxNg0KPiA+ID4gPiA+ IGIxODINCj4gPiA+ID4gPiA4Nw0KPiA+ID4gPiA+IDFlMTA1ZjQ3ODIzYjhlNzINCj4gPiA+ID4g SGksDQo+ID4gPiA+IFRoaXMgYWxzbyByZXN1bHRzIGluIHNhbWUgZmFpbHVyZSAodXNpbmcgT0lt b2RlKSBmb3IgdmVjdG9yIG9mDQo+ID4gPiA+IDI1Ni1iaXQgdHlwZSwgd2hpY2ggd2FzIHRyaWdn ZXJlZCBmb3IgZmlyc3Rwcml2YXRlLW1hcHBpbmdzLTEuYy4NCj4gPiA+ID4gQ2FuIGJlIHJlcHJv ZHVjZWQgd2l0aCBmb2xsb3dpbmcgc2ltcGxlIHRlc3QtY2FzZToNCj4gPiA+ID4NCj4gPiA+ID4g dHlwZWRlZiBsb25nIHY0ZGkgX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUgKHNpemVvZiAobG9u ZykgKg0KPiA+ID4gPiA0KSkpOyBpbnQgbWFpbigpIHsNCj4gPiA+ID4gICB2NGRpIHg7DQo+ID4g PiA+ICAgI3ByYWdtYSBhY2MgcGFyYWxsZWwgY29weSh4KQ0KPiA+ID4gPiAgICAgeDsNCj4gPiA+ ID4gICByZXR1cm4gMDsNCj4gPiA+ID4gfQ0KPiA+ID4gPg0KPiA+ID4gPiBDb21waWxpbmcgd2l0 aCAtZm9wZW5hY2MgLWZvZmZsb2FkPW52cHR4LW5vbmU6DQo+ID4gPiA+IGx0bzE6IGZhdGFsIGVy cm9yOiBudnB0eC1ub25lIC0gMjU2LWJpdCBpbnRlZ2VyIG51bWJlcnMNCj4gPiA+ID4gdW5zdXBw b3J0ZWQgKG1vZGUg4oCYT0nigJkpIGNvbXBpbGF0aW9uIHRlcm1pbmF0ZWQuDQo+ID4gPiA+IG52 cHR4IG1rb2ZmbG9hZDogZmF0YWwgZXJyb3I6DQo+ID4gPiA+IC4uL2luc3RhbGwvYmluL2FhcmNo NjQtdW5rbm93bi1saW51eC1nbnUtYWNjZWwtbnZwdHgtbm9uZS1nY2MNCj4gPiA+ID4gcmV0dXJu ZWQNCj4gPiA+IDEgZXhpdCBzdGF0dXMgY29tcGlsYXRpb24gdGVybWluYXRlZC4NCj4gPiA+ID4N Cj4gPiA+ID4gVGhlIGF0dGFjaGVkIHBhdGNoIGZpeGVzIHRoZSB0ZXN0IHdpdGggc2FtZSBhcHBy b2FjaCBhcyBmb3INCj4gPiA+ID4gYWdncmVnYXRlIHR5cGUgLS0gc3RyZWFtaW5nIG91dCBWT0lE bW9kZSBmcm9tIGhvc3QsIGFuZA0KPiA+ID4gPiByZWNvbXB1dGluZyBtb2RlIGZvcg0KPiA+ID4g dmVjdG9yX3R5cGUgZHVyaW5nIHN0cmVhbS1pbiBmb3IgYWNjZWxlcmF0b3IuDQo+ID4gPiA+IExU TyBib290c3RyYXArdGVzdGVkIG9uIGFhcmNoNjQtbGludXgtZ251Lg0KPiA+ID4gPiBEb2VzIHRo ZSBwYXRjaCBsb29rIE9LID8NCj4gPiA+DQo+ID4gPiBAQCAtMTc1NywxMSArMTc1NywyMiBAQCBs dG9fcmVhZF90cmVlXzEgKGNsYXNzIGx0b19pbnB1dF9ibG9jaw0KPiAqaWIsDQo+ID4gPiBjbGFz cyBkYXRhX2luICpkYXRhX2luLCB0cmVlIGV4cHIpDQo+ID4gPiAgICAgICAgaWYgKChWQVJfUCAo ZXhwcikNCj4gPiA+ICAgICAgICAgICAgfHwgVFJFRV9DT0RFIChleHByKSA9PSBQQVJNX0RFQ0wN Cj4gPiA+ICAgICAgICAgICAgfHwgVFJFRV9DT0RFIChleHByKSA9PSBGSUVMRF9ERUNMKQ0KPiA+ ID4gLSAgICAgICAgICYmIEFHR1JFR0FURV9UWVBFX1AgKFRSRUVfVFlQRSAoZXhwcikpDQo+ID4g PiArICAgICAgICAgJiYgKEFHR1JFR0FURV9UWVBFX1AgKFRSRUVfVFlQRSAoZXhwcikpIHx8IFZF Q1RPUl9UWVBFX1ANCj4gPiA+IChUUkVFX1RZUEUgKGV4cHIpKSkNCj4gPiA+DQo+ID4gPiBsb25n IGxpbmUsIHBsZWFzZSB3cmFwLg0KPiA+ID4NCj4gPiA+ICAgICAgICAgICAmJiBERUNMX01PREUg KGV4cHIpID09IFZPSURtb2RlKQ0KPiA+ID4gICAgICAgICBTRVRfREVDTF9NT0RFIChleHByLCBU WVBFX01PREUgKFRSRUVfVFlQRSAoZXhwcikpKTsNCj4gI2VuZGlmDQo+ID4gPiAgICAgIH0NCj4g PiA+DQo+ID4gPiBJJ20gbm90IHN1cmUgeW91IGNhbiBjYWxsIFRZUEVfTU9ERSBha2EgdmVjdG9y X3R5cGVfbW9kZSBzYWZlbHkNCj4gPiA+IGR1cmluZyBMVE8gc3RyZWFtaW5nLiAgSW5zdGVhZCB5 b3UgcG9zc2libHkgd2FudCB0byB1c2UNCj4gVFlQRV9NT0RFX1JBVyBoZXJlPw0KPiA+ID4NCj4g PiA+ICsjaWZkZWYgQUNDRUxfQ09NUElMRVINCj4gPiA+ICsgICAgaWYgKFZFQ1RPUl9UWVBFX1Ag KGV4cHIpICYmIFRZUEVfTU9ERSAoZXhwcikgPT0gVk9JRG1vZGUpDQo+ID4gPiArICAgICAgew0K PiA+ID4gKyAgICAgICBwb2x5X3VpbnQ2NCBudW5pdHMgPSBUWVBFX1ZFQ1RPUl9TVUJQQVJUUyAo ZXhwcik7DQo+ID4gPiArICAgICAgIHRyZWUgaW5uZXJ0eXBlID0gVFJFRV9UWVBFIChleHByKTsN Cj4gPiA+ICsgICAgICAgbWFjaGluZV9tb2RlIHZtb2RlDQo+ID4gPiArICAgICAgICAgPSBtb2Rl X2Zvcl92ZWN0b3IgKFNDQUxBUl9UWVBFX01PREUgKGlubmVydHlwZSksDQo+ID4gPiBudW5pdHMp LmVsc2VfYmxrICgpOw0KPiA+ID4gKyAgICAgICBTRVRfVFlQRV9NT0RFIChleHByLCB2bW9kZSk7 DQo+ID4gPg0KPiA+ID4gSSdtIG5vdCBzdXJlIHRoaXMgdW5hbWJpZ3VvdXNseSBzcGVjaWZpZXMg dGhlIG1vZGUsIGRvZXMgaXQ/ICh4Mg0KPiA+ID4gbW9kZXMsIGV0Yy4pLg0KPiA+ID4NCj4gPiA+ IFJpY2hhcmQ/DQo+ID4gPg0KPiA+ID4NCj4gPiA+ID4gSWYgd2UgZ28gd2l0aCB0aGlzIGFwcHJv YWNoLCB3b3VsZCBpdCBiZSBzYWZlIHRvIHJlbW92ZSB0aGUNCj4gPiA+ID4gZm9sbG93aW5nIGh1 bmsgZnJvbSBsdG9faW5wdXRfbW9kZV90YWJsZSwgc2luY2UgdmVjdG9yIG1vZGVzDQo+IHdvdWxk DQo+ID4gPiA+IG5vIGxvbmdlciBiZQ0KPiA+ID4gc3RyZWFtZWQgb3V0IGluIExUTyBieXRlY29k ZSA/DQo+ID4gPg0KPiA+ID4gSSB3b3VsZCBndWVzcyB5b3Ugd2FudCB0byBwdXQgYW4gYXNzZXJ0 IG9uIHRoZSBxdWVyeSBzaWRlIHRoZW4/DQo+ID4gSGkgUmljaGFyZCwNCj4gPiBUaGFua3MgZm9y IHRoZSByZXZpZXcgYW5kIHNvcnJ5IGZvciBsYXRlIHJlcGx5Lg0KPiA+IFRoZSBhdHRhY2hlZCBw YXRjaCB1c2VzIFRZUEVfTU9ERV9SQVcgZm9yIHZlY3Rvcl90eXBlLCBhbmQgcmVtb3Zlcw0KPiA+ IHZlY3RvciBoYW5kbGluZyBpbiBsdG9faW5wdXRfbW9kZV90YWJsZS4NCj4gPg0KPiA+IFNob3Vs ZCBJIGFsc28gbmVlZCB0byBhZGQgYW4gYXNzZXJ0IGZvciAhVkVDVE9SX01PREVfUCBpbg0KPiA+ IGJwX3VucGFja19tYWNoaW5lX21vZGUgKGlmIHdlJ3JlIGluIGFjY2VsKSBvciB0aGUgY2hlY2sg aW4NCj4gPiBsdG9faW5wdXRfbW9kZV90YWJsZSBzaG91bGQgYmUgc3VmZmljaWVudCA/DQo+ID4N Cj4gPiBUaGUgcGF0Y2ggbW92ZXMgdGhlIGZvbGxvd2luZyBodW5rIGluIGx0b19yZWFkX3RyZWVf MToNCj4gPg0KPiA+ICNpZmRlZiBBQ0NFTF9DT01QSUxFUg0KPiA+ICAgICAgIGlmICgoVkFSX1Ag KGV4cHIpDQo+ID4gICAgICAgICAgICB8fCBUUkVFX0NPREUgKGV4cHIpID09IFBBUk1fREVDTA0K PiA+ICAgICAgICAgICAgfHwgVFJFRV9DT0RFIChleHByKSA9PSBGSUVMRF9ERUNMKQ0KPiA+ICAg ICAgICAgICAmJiBBR0dSRUdBVEVfVFlQRV9QIChUUkVFX1RZUEUgKGV4cHIpKQ0KPiA+ICAgICAg ICAgICAmJiBERUNMX01PREUgKGV4cHIpID09IFZPSURtb2RlKQ0KPiA+ICAgICAgICAgU0VUX0RF Q0xfTU9ERSAoZXhwciwgVFlQRV9NT0RFIChUUkVFX1RZUEUgKGV4cHIpKSk7ICNlbmRpZg0KPiA+ DQo+ID4gb3V0c2lkZSB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbjoNCj4gPiAgaWYgKChERUNMX1Ag KGV4cHIpDQo+ID4gICAgICAgICYmIFRSRUVfQ09ERSAoZXhwcikgIT0gRklFTERfREVDTA0KPiA+ ICAgICAgICAmJiBUUkVFX0NPREUgKGV4cHIpICE9IERFQlVHX0VYUFJfREVDTA0KPiA+ICAgICAg ICAmJiBUUkVFX0NPREUgKGV4cHIpICE9IFRZUEVfREVDTCkNCj4gPg0KPiA+IHNpbmNlIHRoZSBj b25kaXRpb24gZG9lc24ndCBhbGxvdyBGSUVMRF9ERUNMIGFuZCB0aHVzIHdvdWxkIG5vdCBzZXQN Cj4gPiBtb2RlIGZvciBGSUVMRF9ERUNMLg0KPiA+DQo+ID4gSSBhbSBub3Qgc3VyZSBob3cgdG8g aW5mZXIgdmVjdG9yIG1vZGUgZnJvbSBzY2FsYXJfdHlwZSBhbmQgbGVuZ3RoLA0KPiBpZg0KPiA+ IHdlIGNhbid0IHVzZSBtb2RlX2Zvcl92ZWN0b3IgaGVyZS4gQ291bGQgeW91IHBsZWFzZSBzdWdn ZXN0IGhvdyB0bw0KPiBwcm9jZWVkID8NCj4gDQo+IEkgaGF2ZSBubyBnb29kIGlkZWEgYmVzaWRl cyBpbmRlZWQgdXNpbmcgbW9kZV9mb3JfdmVjdG9yIGFzDQo+IGxheW91dF90eXBlIGRvZXMuDQo+ IA0KPiBTbyBPSyB1bmxlc3MgUmljaGFyZCBTLiBoYXMgYW55dGhpbmcgdG8gYWRkLg0KSGkgUmlj aGFyZCBTLiwNCkRvZXMgdGhlIHBhdGNoIGluOg0KaHR0cHM6Ly9nY2MuZ251Lm9yZy9waXBlcm1h aWwvZ2NjLXBhdGNoZXMvMjAyNC1TZXB0ZW1iZXIvNjYzNjcwLmh0bWwNCg0KbG9vayBPSyB0byB5 b3UgPyBXb3VsZCB1c2luZyBtb2RlX2Zvcl92ZWN0b3IgYmUgY29ycmVjdCB0byByZWNvbXB1dGUg dmVjdG9yIG1vZGUgd2hpbGUgc3RyZWFtaW5nLWluIGR1cmluZyBhY2NlbCwNCmFzIGRvbmUgaW4g dGhlIHBhdGNoID8NCg0KVGhhbmtzLA0KUHJhdGhhbWVzaA0KPiANCj4gVGhhbmtzLA0KPiBSaWNo YXJkLg0KPiANCj4gPiBTaWduZWQtb2ZmLWJ5OiBQcmF0aGFtZXNoIEt1bGthcm5pIDxwcmF0aGFt ZXNoa0BudmlkaWEuY29tPg0KPiA+DQo+ID4gVGhhbmtzDQo+ID4gUHJhdGhhbWVzaA0KPiA+ID4N Cj4gPiA+ID4gICAgICAgICAgICAgY2FzZSBNT0RFX1ZFQ1RPUl9CT09MOg0KPiA+ID4gPiAgICAg ICAgICAgICBjYXNlIE1PREVfVkVDVE9SX0lOVDoNCj4gPiA+ID4gICAgICAgICAgICAgY2FzZSBN T0RFX1ZFQ1RPUl9GTE9BVDoNCj4gPiA+ID4gICAgICAgICAgICAgY2FzZSBNT0RFX1ZFQ1RPUl9G UkFDVDoNCj4gPiA+ID4gICAgICAgICAgICAgY2FzZSBNT0RFX1ZFQ1RPUl9VRlJBQ1Q6DQo+ID4g PiA+ICAgICAgICAgICAgIGNhc2UgTU9ERV9WRUNUT1JfQUNDVU06DQo+ID4gPiA+ICAgICAgICAg ICAgIGNhc2UgTU9ERV9WRUNUT1JfVUFDQ1VNOg0KPiA+ID4gPiAgICAgICAgICAgICAgIC8qIEZv ciB1bnN1cHBvcnRlZCB2ZWN0b3IgbW9kZXMganVzdCB1c2UgQkxLbW9kZSwNCj4gPiA+ID4gICAg ICAgICAgICAgICAgICBpZiB0aGUgc2NhbGFyIG1vZGUgaXMgc3VwcG9ydGVkLiAgKi8NCj4gPiA+ ID4gICAgICAgICAgICAgICBpZiAodGFibGVbKGludCkgaW5uZXJdICE9IFZPSURtb2RlKQ0KPiA+ ID4gPiAgICAgICAgICAgICAgICAgew0KPiA+ID4gPiAgICAgICAgICAgICAgICAgICB0YWJsZVtt XSA9IEJMS21vZGU7DQo+ID4gPiA+ICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ID4gPiAg ICAgICAgICAgICAgICAgfQ0KPiA+ID4gPg0KPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBQcmF0aGFt ZXNoIEt1bGthcm5pIDxwcmF0aGFtZXNoa0BudmlkaWEuY29tPg0KPiA+ID4gPg0KPiA+ID4gPiBU aGFua3MsDQo+ID4gPiA+IFByYXRoYW1lc2gNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IGFmdGVyIHZl cmlmeWluZyBpdCBwYXNzZXMgYm9vdHN0cmFwK3Rlc3Qgb24gYWFyY2g2NC1saW51eC1nbnUsDQo+ ID4gPiA+ID4gYW5kIGxpYmdvbXAgdGVzdGluZyAod2l0aG91dCBHUFUpIGZvciBhYXJjaDY0LT5u dnB0eCBhbmQNCj4geDg2XzY0LT5udnB0eC4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IFNv cnJ5IGlmIHRoaXMgc291bmRzIGxpa2UgYSBzaWxseSBxdWVzIC0tIFdoeSB3b3VsZCBpdCBiZQ0K PiA+ID4gPiA+ID4gPiB1bnNhZmUNCj4gPiA+ID4gPiB0bw0KPiA+ID4gPiA+ID4gPiBjYWxsIHJl bGF5b3V0X2RlY2wgZm9yIHZhcmlhYmxlcyB0aGF0IGFyZSBtYXBwZWQgdG8NCj4gPiA+ID4gPiA+ ID4gYWNjZWxlcmF0b3INCj4gPiA+ID4gPiBldmVuDQo+ID4gPiA+ID4gPiA+IGlmIGl0J2Qgbm90 IHByZXNlcnZlIGhvc3QncyBwcm9wZXJ0aWVzID8gSSBhc3N1bWVkIHdlIHdhbnQNCj4gPiA+ID4g PiA+ID4gdG8NCj4gPiA+ID4gPiBhc3NpZ24NCj4gPiA+ID4gPiA+IGFjY2VsJ3MgQUJJIHByb3Bl cnRpZXMgZm9yIG1hcHBlZCBkZWNscyAobW9kZSBiZWluZyBvbmUgb2YNCj4gPiA+ID4gPiA+IHRo ZW0pLCBvciBhbSBJIG1pc3VuZGVyc3RhbmRpbmcgPw0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ IFN0cnVjdHVyZSBsYXlvdXQgbmVlZCBub3QgYmUgY29tcGF0aWJsZSBidXQgd2UgYXJlDQo+IHBy ZXNlcnZpbmcNCj4gPiA+ID4gPiA+IHRoYXQNCj4gPiA+ID4gPiBvZg0KPiA+ID4gPiA+ID4gdGhl IGhvc3QgaW5zdGVhZCBvZiByZS1sYXlvdXRpbmcgaW4gdGFyZ2V0IGNvbnRleHQuDQo+IExpa2V3 aXNlDQo+ID4gPiA+ID4gPiB0eXBlDQo+ID4gPiA+ID4gPC0+DQo+ID4gPiA+ID4gPiBtb2RlIG1h cHBpbmcgZG9lc24ndCBoYXZlIHRvIGFncmVlLg0KPiA+ID4gPiA+IEFoIE9LLCB0aGFua3MgZm9y IGNsYXJpZnlpbmcuIFNvIElJVUMsIGluIGZ1dHVyZSwgd2UgbWlnaHQNCj4gbmVlZA0KPiA+ID4g PiA+IHRvIGNoYW5nZSB0aGF0IGlmIChpbiB0aGVvcnkpLCBob3N0J3Mgc3RydWN0dXJlIGxheW91 dCBmb3IgYQ0KPiA+ID4gPiA+IGRlY2wgaXMgaW5jb21wYXRpYmxlIHdpdGggYSBwYXJ0aWN1bGFy IGFjY2VsJ3MgQUJJIGFuZCB3aWxsDQo+IG5lZWQNCj4gPiA+ID4gPiB0byByZWxheW91dCBpbiBh Y2NlbCdzIGNvbnRleHQgPw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gVGhhbmtzLA0KPiA+ID4gPiA+ IFByYXRoYW1lc2gNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBSaWNoYXJkLg0KPiA+ID4gPiA+ ID4NCj4gPiA+ID4gPiA+ID4gU2lnbmVkLW9mZi1ieTogUHJhdGhhbWVzaCBLdWxrYXJuaQ0KPiA8 cHJhdGhhbWVzaGtAbnZpZGlhLmNvbT4NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gVGhh bmtzLA0KPiA+ID4gPiA+ID4gPiBQcmF0aGFtZXNoDQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4g PiA+ID4gPiBSaWNoYXJkDQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+IFRoYW5r cywNCj4gPiA+ID4gPiA+ID4gPiA+IFJpY2hhcmQNCj4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4+ICAgICB9DQo+ID4gPiA+ID4gPiA+ID4gPj4g fQ0KPiA+ID4gPiA+ID4gPiA+ID4+DQo+ID4gPiA+ID4gPiA+ID4gPj4gZGlmZiAtLWdpdCBhL2dj Yy9zdG9yLWxheW91dC5jYyBiL2djYy9zdG9yLWxheW91dC5jYw0KPiA+ID4gPiA+ID4gPiA+ID4+ IGluZGV4IDEwYzA4MDk5MTRjLi4wZmY4YmQxMTcxZSAxMDA2NDQNCj4gPiA+ID4gPiA+ID4gPiA+ PiAtLS0gYS9nY2Mvc3Rvci1sYXlvdXQuY2MNCj4gPiA+ID4gPiA+ID4gPiA+PiArKysgYi9nY2Mv c3Rvci1sYXlvdXQuY2MNCj4gPiA+ID4gPiA+ID4gPiA+PiBAQCAtMjM5Niw2ICsyMzk2LDMyIEBA IGZpbmlzaF9idWlsdGluX3N0cnVjdCAodHJlZQ0KPiA+ID4gPiA+ID4gPiA+ID4+IHR5cGUsDQo+ ID4gPiA+ID4gY29uc3QNCj4gPiA+ID4gPiA+ID4gPiA+PiBjaGFyDQo+ID4gPiA+ID4gPiA+ID4g Km5hbWUsIHRyZWUgZmllbGRzLA0KPiA+ID4gPiA+ID4gPiA+ID4+ICAgbGF5b3V0X2RlY2wgKFRZ UEVfTkFNRSAodHlwZSksIDApOyB9DQo+ID4gPiA+ID4gPiA+ID4gPj4NCj4gPiA+ID4gPiA+ID4g PiA+PiArLyogQ29tcHV0ZSBUWVBFX01PREUgZm9yIFRZUEUgKHdoaWNoIGlzIEFSUkFZX1RZUEUp Lg0KPiA+ID4gPiA+ID4gPiA+ID4+ICsqLw0KPiA+ID4gPiA+ID4gPiA+ID4+ICsNCj4gPiA+ID4g PiA+ID4gPiA+PiArdm9pZCBjb21wdXRlX2FycmF5X21vZGUgKHRyZWUgdHlwZSkgew0KPiA+ID4g PiA+ID4gPiA+ID4+ICsgIGdjY19hc3NlcnQgKFRSRUVfQ09ERSAodHlwZSkgPT0gQVJSQVlfVFlQ RSk7DQo+ID4gPiA+ID4gPiA+ID4gPj4gKw0KPiA+ID4gPiA+ID4gPiA+ID4+ICsgIFNFVF9UWVBF X01PREUgKHR5cGUsIEJMS21vZGUpOyAgaWYgKFRZUEVfU0laRQ0KPiAodHlwZSkNCj4gPiA+ID4g PiA+ID4gPiA+PiArICE9DQo+ID4gPiAwDQo+ID4gPiA+ID4gPiA+ID4gPj4gKyAgICAgICYmICEg dGFyZ2V0bS5tZW1iZXJfdHlwZV9mb3JjZXNfYmxrICh0eXBlLA0KPiBWT0lEbW9kZSkNCj4gPiA+ ID4gPiA+ID4gPiA+PiArICAgICAgLyogQkxLbW9kZSBlbGVtZW50cyBmb3JjZSBCTEttb2RlIGFn Z3JlZ2F0ZTsNCj4gPiA+ID4gPiA+ID4gPiA+PiArICAgICBlbHNlIGV4dHJhY3Qvc3RvcmUgZmll bGRzIG1heSBsb3NlLiAgKi8NCj4gPiA+ID4gPiA+ID4gPiA+PiArICAgICAgJiYgKFRZUEVfTU9E RSAoVFJFRV9UWVBFICh0eXBlKSkgIT0gQkxLbW9kZQ0KPiA+ID4gPiA+ID4gPiA+ID4+ICsgICAg ICB8fCBUWVBFX05PX0ZPUkNFX0JMSyAoVFJFRV9UWVBFICh0eXBlKSkpKQ0KPiA+ID4gPiA+ID4g PiA+ID4+ICsgICAgew0KPiA+ID4gPiA+ID4gPiA+ID4+ICsgICAgICBTRVRfVFlQRV9NT0RFICh0 eXBlLCBtb2RlX2Zvcl9hcnJheSAoVFJFRV9UWVBFDQo+ID4gPiAodHlwZSksDQo+ID4gPiA+ID4g PiA+ID4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgVFlQRV9TSVpFICh0eXBlKSkpOw0KPiA+ ID4gPiA+ID4gPiA+ID4+ICsgICAgICBpZiAoVFlQRV9NT0RFICh0eXBlKSAhPSBCTEttb2RlDQo+ ID4gPiA+ID4gPiA+ID4gPj4gKyAgICAgICYmIFNUUklDVF9BTElHTk1FTlQgJiYgVFlQRV9BTElH TiAodHlwZSkgPA0KPiA+ID4gPiA+ID4gQklHR0VTVF9BTElHTk1FTlQNCj4gPiA+ID4gPiA+ID4g PiA+PiArICAgICAgJiYgVFlQRV9BTElHTiAodHlwZSkgPCBHRVRfTU9ERV9BTElHTk1FTlQNCj4g PiA+ID4gPiA+ID4gPiA+PiArIChUWVBFX01PREUNCj4gPiA+ID4gPiA+ID4gPiAodHlwZSkpKQ0K PiA+ID4gPiA+ID4gPiA+ID4+ICsgICAgew0KPiA+ID4gPiA+ID4gPiA+ID4+ICsgICAgICBUWVBF X05PX0ZPUkNFX0JMSyAodHlwZSkgPSAxOw0KPiA+ID4gPiA+ID4gPiA+ID4+ICsgICAgICBTRVRf VFlQRV9NT0RFICh0eXBlLCBCTEttb2RlKTsNCj4gPiA+ID4gPiA+ID4gPiA+PiArICAgIH0NCj4g PiA+ID4gPiA+ID4gPiA+PiArICAgIH0NCj4gPiA+ID4gPiA+ID4gPiA+PiArfQ0KPiA+ID4gPiA+ ID4gPiA+ID4+ICsNCj4gPiA+ID4gPiA+ID4gPiA+PiAvKiBDYWxjdWxhdGUgdGhlIG1vZGUsIHNp emUsIGFuZCBhbGlnbm1lbnQgZm9yIFRZUEUuDQo+ID4gPiA+ID4gPiA+ID4gPj4gICAgRm9yIGFu IGFycmF5IHR5cGUsIGNhbGN1bGF0ZSB0aGUgZWxlbWVudA0KPiBzZXBhcmF0aW9uDQo+ID4gPiA+ ID4gPiA+ID4gPj4gYXMNCj4gPiA+ID4gPiB3ZWxsLg0KPiA+ID4gPiA+ID4gPiA+ID4+ICAgIFJl Y29yZCBUWVBFIG9uIHRoZSBjaGFpbiBvZiBwZXJtYW5lbnQgb3IgdGVtcG9yYXJ5DQo+ID4gPiA+ ID4gPiA+ID4gPj4gdHlwZXMNCj4gPiA+ID4gPiBAQA0KPiA+ID4gPiA+ID4gPiA+ID4+IC0yNzA5 LDI0ICsyNzM1LDcgQEAgbGF5b3V0X3R5cGUgKHRyZWUgdHlwZSkNCj4gPiA+ID4gPiA+ID4gPiA+ PiAgICBhbGlnbiA9IE1BWCAoYWxpZ24sIEJJVFNfUEVSX1VOSVQpOyAjZW5kaWYNCj4gPiA+ID4g PiA+ID4gPiA+PiAgICBTRVRfVFlQRV9BTElHTiAodHlwZSwgYWxpZ24pOw0KPiA+ID4gPiA+ID4g PiA+ID4+IC0gICAgU0VUX1RZUEVfTU9ERSAodHlwZSwgQkxLbW9kZSk7DQo+ID4gPiA+ID4gPiA+ ID4gPj4gLSAgICBpZiAoVFlQRV9TSVpFICh0eXBlKSAhPSAwDQo+ID4gPiA+ID4gPiA+ID4gPj4g LSAgICAgICAgJiYgISB0YXJnZXRtLm1lbWJlcl90eXBlX2ZvcmNlc19ibGsgKHR5cGUsDQo+ID4g PiBWT0lEbW9kZSkNCj4gPiA+ID4gPiA+ID4gPiA+PiAtICAgICAgICAvKiBCTEttb2RlIGVsZW1l bnRzIGZvcmNlIEJMS21vZGUgYWdncmVnYXRlOw0KPiA+ID4gPiA+ID4gPiA+ID4+IC0gICAgICAg ICAgIGVsc2UgZXh0cmFjdC9zdG9yZSBmaWVsZHMgbWF5IGxvc2UuICAqLw0KPiA+ID4gPiA+ID4g PiA+ID4+IC0gICAgICAgICYmIChUWVBFX01PREUgKFRSRUVfVFlQRSAodHlwZSkpICE9IEJMS21v ZGUNCj4gPiA+ID4gPiA+ID4gPiA+PiAtICAgICAgICB8fCBUWVBFX05PX0ZPUkNFX0JMSyAoVFJF RV9UWVBFICh0eXBlKSkpKQ0KPiA+ID4gPiA+ID4gPiA+ID4+IC0gICAgICB7DQo+ID4gPiA+ID4g PiA+ID4gPj4gLSAgICAgICAgU0VUX1RZUEVfTU9ERSAodHlwZSwgbW9kZV9mb3JfYXJyYXkNCj4g KFRSRUVfVFlQRQ0KPiA+ID4gPiA+ICh0eXBlKSwNCj4gPiA+ID4gPiA+ID4gPiA+PiAtICAgICAg ICAgICAgICAgICAgICAgICAgIFRZUEVfU0laRSAodHlwZSkpKTsNCj4gPiA+ID4gPiA+ID4gPiA+ PiAtICAgICAgICBpZiAoVFlQRV9NT0RFICh0eXBlKSAhPSBCTEttb2RlDQo+ID4gPiA+ID4gPiA+ ID4gPj4gLSAgICAgICAgJiYgU1RSSUNUX0FMSUdOTUVOVCAmJiBUWVBFX0FMSUdOICh0eXBlKSA8 DQo+ID4gPiA+ID4gPiA+ID4gQklHR0VTVF9BTElHTk1FTlQNCj4gPiA+ID4gPiA+ID4gPiA+PiAt ICAgICAgICAmJiBUWVBFX0FMSUdOICh0eXBlKSA8IEdFVF9NT0RFX0FMSUdOTUVOVA0KPiA+ID4g KFRZUEVfTU9ERQ0KPiA+ID4gPiA+ID4gPiA+ICh0eXBlKSkpDQo+ID4gPiA+ID4gPiA+ID4gPj4g LSAgICAgICAgICB7DQo+ID4gPiA+ID4gPiA+ID4gPj4gLSAgICAgICAgVFlQRV9OT19GT1JDRV9C TEsgKHR5cGUpID0gMTsNCj4gPiA+ID4gPiA+ID4gPiA+PiAtICAgICAgICBTRVRfVFlQRV9NT0RF ICh0eXBlLCBCTEttb2RlKTsNCj4gPiA+ID4gPiA+ID4gPiA+PiAtICAgICAgICAgIH0NCj4gPiA+ ID4gPiA+ID4gPiA+PiAtICAgICAgfQ0KPiA+ID4gPiA+ID4gPiA+ID4+ICsgICAgY29tcHV0ZV9h cnJheV9tb2RlICh0eXBlKTsNCj4gPiA+ID4gPiA+ID4gPiA+PiAgICBpZiAoQUdHUkVHQVRFX1RZ UEVfUCAoZWxlbWVudCkpDQo+ID4gPiA+ID4gPiA+ID4gPj4gICAgICBUWVBFX1RZUEVMRVNTX1NU T1JBR0UgKHR5cGUpID0NCj4gPiA+ID4gPiA+ID4gPiA+PiBUWVBFX1RZUEVMRVNTX1NUT1JBR0UN Cj4gPiA+ID4gPiA+ID4gPiAoZWxlbWVudCk7DQo+ID4gPiA+ID4gPiA+ID4gPj4gICAgLyogV2hl biB0aGUgZWxlbWVudCBzaXplIGlzIGNvbnN0YW50LCBjaGVjayB0aGF0DQo+IGl0DQo+ID4gPiA+ ID4gPiA+ID4gPj4gaXMgYXQgbGVhc3QNCj4gPiA+ID4gPiA+ID4gPiBhcw0KPiA+ID4gPiA+ID4g PiA+ID4+IGRpZmYgLS1naXQgYS9nY2Mvc3Rvci1sYXlvdXQuaCBiL2djYy9zdG9yLWxheW91dC5o DQo+ID4gPiA+ID4gPiA+ID4gPj4gaW5kZXgNCj4gPiA+ID4gPiA+ID4gPiA+PiAwOTZjYTgxMTc2 Mi4uOWQ5YjhjMzg1ZjYgMTAwNjQ0DQo+ID4gPiA+ID4gPiA+ID4gPj4gLS0tIGEvZ2NjL3N0b3It bGF5b3V0LmgNCj4gPiA+ID4gPiA+ID4gPiA+PiArKysgYi9nY2Mvc3Rvci1sYXlvdXQuaA0KPiA+ ID4gPiA+ID4gPiA+ID4+IEBAIC0zNCw2ICszNCw3IEBAIGV4dGVybiB0cmVlIHJsaV9zaXplX3Nv X2Zhcg0KPiA+ID4gPiA+ID4gPiA+ID4+IChyZWNvcmRfbGF5b3V0X2luZm8pOyBleHRlcm4gdm9p ZCBub3JtYWxpemVfcmxpDQo+ID4gPiA+ID4gPiA+ID4gPj4gKHJlY29yZF9sYXlvdXRfaW5mbyk7 IGV4dGVybiB2b2lkIHBsYWNlX2ZpZWxkDQo+ID4gPiA+ID4gPiA+ID4gPj4gKHJlY29yZF9sYXlv dXRfaW5mbywgdHJlZSk7IGV4dGVybiB2b2lkDQo+ID4gPiA+ID4gPiA+ID4gPj4gY29tcHV0ZV9y ZWNvcmRfbW9kZSAodHJlZSk7DQo+ID4gPiA+ID4gPiA+ID4gPj4gK2V4dGVybiB2b2lkIGNvbXB1 dGVfYXJyYXlfbW9kZSAodHJlZSk7DQo+ID4gPiA+ID4gPiA+ID4gPj4gZXh0ZXJuIHZvaWQgZmlu aXNoX2JpdGZpZWxkX2xheW91dCAodHJlZSk7IGV4dGVybg0KPiB2b2lkDQo+ID4gPiA+ID4gPiA+ ID4gPj4gZmluaXNoX3JlY29yZF9sYXlvdXQgKHJlY29yZF9sYXlvdXRfaW5mbywgaW50KTsNCj4g ZXh0ZXJuDQo+ID4gPiA+ID4gPiA+ID4gPj4gdm9pZCBmaW5hbGl6ZV9zaXplX2Z1bmN0aW9ucyAo dm9pZCk7IGRpZmYgLS1naXQNCj4gPiA+ID4gPiA+ID4gPiA+PiBhL2djYy90cmVlLQ0KPiA+ID4g PiA+IHN0cmVhbWVyLQ0KPiA+ID4gPiA+ID4gPiA+IGluLmNjDQo+ID4gPiA+ID4gPiA+ID4gPj4g Yi9nY2MvdHJlZS1zdHJlYW1lci1pbi5jYyBpbmRleA0KPiA+ID4gPiA+ID4gPiA+ID4+IDQwMDI5 NDM3MTk5Li4zMjlkMjE4ZTdkNA0KPiA+ID4gPiA+IDEwMDY0NA0KPiA+ID4gPiA+ID4gPiA+ID4+ IC0tLSBhL2djYy90cmVlLXN0cmVhbWVyLWluLmNjDQo+ID4gPiA+ID4gPiA+ID4gPj4gKysrIGIv Z2NjL3RyZWUtc3RyZWFtZXItaW4uY2MNCj4gPiA+ID4gPiA+ID4gPiA+PiBAQCAtMzUsNiArMzUs NyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlDQo+IENPUFlJTkczLg0KPiA+ID4gPiA+ ID4gPiA+ID4+IElmDQo+ID4gPiA+ID4gPiBub3QNCj4gPiA+ID4gPiA+ID4gPiBzZWUNCj4gPiA+ ID4gPiA+ID4gPiA+PiAjaW5jbHVkZSAiYXR0cmlicy5oIg0KPiA+ID4gPiA+ID4gPiA+ID4+ICNp bmNsdWRlICJhc2FuLmgiDQo+ID4gPiA+ID4gPiA+ID4gPj4gI2luY2x1ZGUgIm9wdHMuaCINCj4g PiA+ID4gPiA+ID4gPiA+PiArI2luY2x1ZGUgInN0b3ItbGF5b3V0LmgiDQo+ID4gPiA+ID4gPiA+ ID4gPj4NCj4gPiA+ID4gPiA+ID4gPiA+Pg0KPiA+ID4gPiA+ID4gPiA+ID4+IC8qIFJlYWQgYSBT VFJJTkdfQ1NUIGZyb20gdGhlIHN0cmluZyB0YWJsZSBpbiBEQVRBX0lODQo+ID4gPiA+ID4gPiA+ ID4gPj4gdXNpbmcNCj4gPiA+ID4gPiA+IGlucHV0DQo+ID4gPiA+ID4gPiA+ID4gQEANCj4gPiA+ ID4gPiA+ID4gPiA+PiAtMzk1LDYgKzM5NiwxNyBAQCB1bnBhY2tfdHNfdHlwZV9jb21tb25fdmFs dWVfZmllbGRzDQo+ID4gPiA+ID4gPiA+ID4gPj4gKHN0cnVjdCBiaXRwYWNrX2QgKmJwLCB0cmVl IGV4cHIpICNpZmRlZg0KPiBBQ0NFTF9DT01QSUxFUg0KPiA+ID4gPiA+ID4gPiA+ID4+ICAgaWYg KFRZUEVfQUxJR04gKGV4cHIpID4NCj4gPiA+IHRhcmdldG0uYWJzb2x1dGVfYmlnZ2VzdF9hbGln bm1lbnQpDQo+ID4gPiA+ID4gPiA+ID4gPj4gICAgIFNFVF9UWVBFX0FMSUdOIChleHByLA0KPiA+ ID4gPiA+IHRhcmdldG0uYWJzb2x1dGVfYmlnZ2VzdF9hbGlnbm1lbnQpOw0KPiA+ID4gPiA+ID4g PiA+ID4+ICsNCj4gPiA+ID4gPiA+ID4gPiA+PiArICAvKiBIb3N0IHN0cmVhbXMgb3V0IFZPSURt b2RlIGZvciBhZ2dyZWdhdGUgdHlwZS4NCj4gKi8NCj4gPiA+ID4gPiA+ID4gPiA+PiArIGlmIChB R0dSRUdBVEVfVFlQRV9QIChleHByKSAmJiBUWVBFX01PREUgKGV4cHIpID09DQo+IFZPSURtb2Rl KQ0KPiA+ID4gPiA+ID4gPiA+ID4+ICsgICAgew0KPiA+ID4gPiA+ID4gPiA+ID4+ICsgICAgICBp ZiAoVFJFRV9DT0RFIChleHByKSA9PSBBUlJBWV9UWVBFKQ0KPiA+ID4gPiA+ID4gPiA+ID4+ICsg ICAgY29tcHV0ZV9hcnJheV9tb2RlIChleHByKTsNCj4gPiA+ID4gPiA+ID4gPiA+PiArICAgICAg ZWxzZSBpZiAoUkVDT1JEX09SX1VOSU9OX1RZUEVfUCAoZXhwcikpDQo+ID4gPiA+ID4gPiA+ID4g Pj4gKyAgICBjb21wdXRlX3JlY29yZF9tb2RlIChleHByKTsNCj4gPiA+ID4gPiA+ID4gPiA+PiAr ICAgICAgZWxzZQ0KPiA+ID4gPiA+ID4gPiA+ID4+ICsgICAgZ2NjX3VucmVhY2hhYmxlICgpOw0K PiA+ID4gPiA+ID4gPiA+ID4+ICsgICAgfQ0KPiA+ID4gPiA+ID4gPiA+ID4+ICNlbmRpZg0KPiA+ ID4gPiA+ID4gPiA+ID4+IH0NCj4gPiA+ID4gPiA+ID4gPiA+Pg0KPiA+ID4gPiA+ID4gPiA+ID4+ IGRpZmYgLS1naXQgYS9nY2MvdHJlZS1zdHJlYW1lci1vdXQuY2MNCj4gPiA+ID4gPiA+ID4gPiA+ PiBiL2djYy90cmVlLXN0cmVhbWVyLQ0KPiA+ID4gPiA+ID4gb3V0LmNjDQo+ID4gPiA+ID4gPiA+ ID4gPj4gaW5kZXggYjcyMDUyODdmZmIuLjdkZTQ0NDdhMWI1IDEwMDY0NA0KPiA+ID4gPiA+ID4g PiA+ID4+IC0tLSBhL2djYy90cmVlLXN0cmVhbWVyLW91dC5jYw0KPiA+ID4gPiA+ID4gPiA+ID4+ ICsrKyBiL2djYy90cmVlLXN0cmVhbWVyLW91dC5jYw0KPiA+ID4gPiA+ID4gPiA+ID4+IEBAIC0x ODcsNyArMTg3LDE3IEBAIHBhY2tfdHNfZml4ZWRfY3N0X3ZhbHVlX2ZpZWxkcw0KPiA+ID4gPiA+ ID4gPiA+ID4+IChzdHJ1Y3QNCj4gPiA+ID4gPiA+ID4gPiBiaXRwYWNrX2QNCj4gPiA+ID4gPiA+ ID4gPiA+PiAqYnAsIHRyZWUgZXhwcikgc3RhdGljIHZvaWQNCj4gPiA+ID4gPiA+ID4gPiA+PiBw YWNrX3RzX2RlY2xfY29tbW9uX3ZhbHVlX2ZpZWxkcw0KPiA+ID4gPiA+ID4gPiA+IChzdHJ1Y3QN Cj4gPiA+ID4gPiA+ID4gPiA+PiBiaXRwYWNrX2QgKmJwLCB0cmVlIGV4cHIpIHsNCj4gPiA+ID4g PiA+ID4gPiA+PiAtICBicF9wYWNrX21hY2hpbmVfbW9kZSAoYnAsIERFQ0xfTU9ERSAoZXhwcikp Ow0KPiA+ID4gPiA+ID4gPiA+ID4+ICsgIC8qIFNpbWlsYXIgdG8gVFlQRV9NT0RFLCBhdm9pZCBz dHJlYW1pbmcgb3V0DQo+ID4gPiA+ID4gPiA+ID4gPj4gKyBob3N0LXNwZWNpZmljDQo+ID4gPiA+ ID4gPiA+ID4gREVDTF9NT0RFDQo+ID4gPiA+ID4gPiA+ID4gPj4gKyAgICAgZm9yIGFnZ3JlZ2F0 ZSB0eXBlIHdpdGggb2ZmbG9hZGluZyBlbmFibGVkLCBhbmQNCj4gPiA+ID4gPiA+ID4gPiA+PiAr IHdoaWxlDQo+ID4gPiA+ID4gPiA+ID4gc3RyZWFtaW5nLWluDQo+ID4gPiA+ID4gPiA+ID4gPj4g KyAgICAgcmVjb21wdXRlIGFwcHJvcHJpYXRlIERFQ0xfTU9ERSBmb3INCj4gYWNjZWxlcmF0b3Iu DQo+ID4gPiA+ID4gPiA+ID4gPj4gKyAqLw0KPiA+ID4gPiA+IGlmDQo+ID4gPiA+ID4gPiA+ID4g Pj4gKyAobHRvX3N0cmVhbV9vZmZsb2FkX3ANCj4gPiA+ID4gPiA+ID4gPiA+PiArICAgICAgJiYg KFZBUl9QIChleHByKQ0KPiA+ID4gPiA+ID4gPiA+ID4+ICsgICAgICB8fCBUUkVFX0NPREUgKGV4 cHIpID09IFBBUk1fREVDTA0KPiA+ID4gPiA+ID4gPiA+ID4+ICsgICAgICB8fCBUUkVFX0NPREUg KGV4cHIpID09IEZJRUxEX0RFQ0wpDQo+ID4gPiA+ID4gPiA+ID4gPj4gKyAgICAgICYmIEFHR1JF R0FURV9UWVBFX1AgKFRSRUVfVFlQRSAoZXhwcikpKQ0KPiA+ID4gPiA+ID4gPiA+ID4+ICsgICAg YnBfcGFja19tYWNoaW5lX21vZGUgKGJwLCBWT0lEbW9kZSk7ICBlbHNlDQo+ID4gPiA+ID4gPiA+ ID4gPj4gKyAgICBicF9wYWNrX21hY2hpbmVfbW9kZSAoYnAsIERFQ0xfTU9ERSAoZXhwcikpOw0K PiA+ID4gPiA+ID4gPiA+ID4+ICAgYnBfcGFja192YWx1ZSAoYnAsIERFQ0xfTk9OTE9DQUwgKGV4 cHIpLCAxKTsNCj4gPiA+ID4gPiA+ID4gPiA+PiAgIGJwX3BhY2tfdmFsdWUgKGJwLCBERUNMX1ZJ UlRVQUxfUCAoZXhwciksIDEpOw0KPiA+ID4gPiA+ID4gPiA+ID4+ICAgYnBfcGFja192YWx1ZSAo YnAsIERFQ0xfSUdOT1JFRF9QIChleHByKSwgMSk7IEBADQo+ID4gPiA+ID4gPiA+ID4gPj4gLTMx NywxMA0KPiA+ID4gPiA+ID4gPiA+ID4+ICszMjcsMTgNCj4gPiA+ID4gPiA+ID4gPiBAQA0KPiA+ ID4gPiA+ID4gPiA+ID4+IHBhY2tfdHNfZnVuY3Rpb25fZGVjbF92YWx1ZV9maWVsZHMgKHN0cnVj dCBiaXRwYWNrX2QNCj4gPiA+ID4gPiA+ID4gPiA+PiAqYnAsDQo+ID4gPiA+ID4gdHJlZQ0KPiA+ ID4gPiA+ID4gPiA+IGV4cHIpDQo+ID4gPiA+ID4gPiA+ID4gPj4gc3RhdGljIHZvaWQgcGFja190 c190eXBlX2NvbW1vbl92YWx1ZV9maWVsZHMgKHN0cnVjdA0KPiA+ID4gPiA+IGJpdHBhY2tfZA0K PiA+ID4gPiA+ID4gPiA+ID4+ICpicCwgdHJlZSBleHByKSB7DQo+ID4gPiA+ID4gPiA+ID4gPj4g KyAgLyogRm9yIG9mZmxvYWRpbmcsIGF2b2lkIHN0cmVhbWluZyBvdXQgVFlQRV9NT0RFDQo+IGZv cg0KPiA+ID4gPiA+ID4gYWdncmVnYXRlDQo+ID4gPiA+ID4gPiA+ID4gdHlwZSBzaW5jZQ0KPiA+ ID4gPiA+ID4gPiA+ID4+ICsgICAgIGl0IG1heSBiZSBob3N0LXNwZWNpZmljLiBGb3IgZWcsIGFh cmNoNjQgdXNlcw0KPiA+ID4gPiA+ID4gPiA+ID4+ICsgT0ltb2RlDQo+ID4gPiA+ID4gZm9yDQo+ ID4gPiA+ID4gPiA+ID4gQVJSQVlfVFlQRQ0KPiA+ID4gPiA+ID4gPiA+ID4+ICsgICAgIHdob3Nl IHNpemUgaXMgMjU2LWJpdHMsIHdoaWNoIGlzIG5vdA0KPiA+ID4gPiA+ID4gPiA+ID4+ICsgcmVw cmVzZW50YWJsZSBvbg0KPiA+ID4gPiA+ID4gPiA+IGFjY2VsZXJhdG9yLg0KPiA+ID4gPiA+ID4g PiA+ID4+ICsgICAgIEluc3RlYWQgc3RyZWFtIG91dCBWT0lEbW9kZSwgYW5kIHdoaWxlDQo+ID4g PiA+ID4gPiA+ID4gPj4gKyBzdHJlYW1pbmctaW4sDQo+ID4gPiA+ID4gPiA+ID4gcmVjb21wdXRl DQo+ID4gPiA+ID4gPiA+ID4gPj4gKyAgICAgYXBwcm9wcmlhdGUgVFlQRV9NT0RFIGZvciBhY2Nl bGVyYXRvci4gICovICBpZg0KPiA+ID4gPiA+ID4gPiA+ID4+ICsgKGx0b19zdHJlYW1fb2ZmbG9h ZF9wICYmIEFHR1JFR0FURV9UWVBFX1AgKGV4cHIpKQ0KPiA+ID4gPiA+ID4gPiA+ID4+ICsgICAg YnBfcGFja19tYWNoaW5lX21vZGUgKGJwLCBWT0lEbW9kZSk7DQo+ID4gPiA+ID4gPiA+ID4gPj4g ICAvKiBmb3IgVkVDVE9SX1RZUEUsIFRZUEVfTU9ERSByZWV2YWx1YXRlcyB0aGUgbW9kZQ0KPiA+ ID4gPiA+ID4gPiA+ID4+IHVzaW5nDQo+ID4gPiA+ID4gPiA+ID4gdGFyZ2V0X2ZsYWdzDQo+ID4g PiA+ID4gPiA+ID4gPj4gICAgICBub3QgbmVjZXNzYXJ5IHZhbGlkIGluIGEgZ2xvYmFsIGNvbnRl eHQuDQo+ID4gPiA+ID4gPiA+ID4gPj4gICAgICBVc2UgdGhlIHJhdyB2YWx1ZSBwcmV2aW91c2x5 IHNldCBieSBsYXlvdXRfdHlwZS4NCj4gPiA+ID4gPiA+ID4gPiA+PiAqLw0KPiA+ID4gPiA+ID4g PiA+ID4+IC0gIGJwX3BhY2tfbWFjaGluZV9tb2RlIChicCwgVFlQRV9NT0RFX1JBVyAoZXhwcikp Ow0KPiA+ID4gPiA+ID4gPiA+ID4+ICsgIGVsc2UNCj4gPiA+ID4gPiA+ID4gPiA+PiArICAgIGJw X3BhY2tfbWFjaGluZV9tb2RlIChicCwgVFlQRV9NT0RFX1JBVyAoZXhwcikpOw0KPiA+ID4gPiA+ ID4gPiA+ID4+ICAgLyogVFlQRV9OT19GT1JDRV9CTEsgaXMgcHJpdmF0ZSB0byBzdG9yLWxheW91 dCBhbmQNCj4gbmVlZA0KPiA+ID4gPiA+ID4gPiA+ID4+ICAgICAgbm8gc3RyZWFtaW5nLiAgKi8N Cj4gPiA+ID4gPiA+ID4gPiA+PiAgIGJwX3BhY2tfdmFsdWUgKGJwLCBUWVBFX1BBQ0tFRCAoZXhw ciksIDEpOw0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IC0tDQo+ID4g PiA+ID4gPiBSaWNoYXJkIEJpZW5lciA8cmd1ZW50aGVyQHN1c2UuZGU+IFNVU0UgU29mdHdhcmUg U29sdXRpb25zDQo+ID4gPiA+ID4gPiBHZXJtYW55IEdtYkgsIEZyYW5rZW5zdHJhc3NlIDE0Niwg OTA0NjEgTnVlcm5iZXJnLCBHZXJtYW55Ow0KPiA+ID4gPiA+ID4gR0Y6IEl2byBUb3RldiwgQW5k cmV3IE1jRG9uYWxkLCBXZXJuZXIgS25vYmxpY2g7IChIUkIgMzY4MDksDQo+ID4gPiA+ID4gPiBB Rw0KPiA+ID4gPiA+ID4gTnVlcm5iZXJnKQ0KPiA+ID4gPg0KPiA+ID4NCj4gPiA+IC0tDQo+ID4g PiBSaWNoYXJkIEJpZW5lciA8cmd1ZW50aGVyQHN1c2UuZGU+DQo+ID4gPiBTVVNFIFNvZnR3YXJl IFNvbHV0aW9ucyBHZXJtYW55IEdtYkgsIEZyYW5rZW5zdHJhc3NlIDE0NiwgOTA0NjENCj4gPiA+ IE51ZXJuYmVyZywgR2VybWFueTsNCj4gPiA+IEdGOiBJdm8gVG90ZXYsIEFuZHJldyBNY0RvbmFs ZCwgV2VybmVyIEtub2JsaWNoOyAoSFJCIDM2ODA5LCBBRw0KPiA+ID4gTnVlcm5iZXJnKQ0KPiA+ DQo+IA0KPiAtLQ0KPiBSaWNoYXJkIEJpZW5lciA8cmd1ZW50aGVyQHN1c2UuZGU+DQo+IFNVU0Ug U29mdHdhcmUgU29sdXRpb25zIEdlcm1hbnkgR21iSCwNCj4gRnJhbmtlbnN0cmFzc2UgMTQ2LCA5 MDQ2MSBOdWVybmJlcmcsIEdlcm1hbnk7DQo+IEdGOiBJdm8gVG90ZXYsIEFuZHJldyBNY0RvbmFs ZCwgV2VybmVyIEtub2JsaWNoOyAoSFJCIDM2ODA5LCBBRw0KPiBOdWVybmJlcmcpDQo=