From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by mx.groups.io with SMTP id smtpd.web09.34150.1628844334619179032 for ; Fri, 13 Aug 2021 01:45:35 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=Anv5CkAb; spf=pass (domain: intel.com, ip: 192.55.52.151, mailfrom: hao.a.wu@intel.com) X-IronPort-AV: E=McAfee;i="6200,9189,10074"; a="195798486" X-IronPort-AV: E=Sophos;i="5.84,318,1620716400"; d="scan'208";a="195798486" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Aug 2021 01:45:33 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.84,318,1620716400"; d="scan'208";a="517957310" Received: from fmsmsx605.amr.corp.intel.com ([10.18.126.85]) by FMSMGA003.fm.intel.com with ESMTP; 13 Aug 2021 01:45:29 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx605.amr.corp.intel.com (10.18.126.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4; Fri, 13 Aug 2021 01:45:29 -0700 Received: from fmsmsx606.amr.corp.intel.com (10.18.126.86) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.10; Fri, 13 Aug 2021 01:45:29 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx606.amr.corp.intel.com (10.18.126.86) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.10 via Frontend Transport; Fri, 13 Aug 2021 01:45:29 -0700 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.169) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.10; Fri, 13 Aug 2021 01:45:27 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=d2rqhFryOdzEI+druTuAHk3ngfO9UqMSykuPwbb18Dum1svNzOwUAMcz6RItguDFXU/PQSCrAj7myDd6aqchp3PSgPNsswHr2YK8F4uS4pbsvCWW2Db9S/0xVLSJNe12GP2qQDI8SEURJotcFQuNK0abDGvjyTlmYiZ/tRKWulC6zCFkH9bK2BCn1Y/0JcqIayQwFh9ZYA0UoP2AJlcl3QftdW/f5d+JnSUJvyRmbHSDSA5JWuQNOxp1sp8IzH1p+tqS9EZwI+bYm5w7kOuUPP8Sb8vLgidRIu9BuFyGbMQRqzLxOY6vVKxCz9qgLDWHrwRz1lR7r0e00h7Pv8P0WQ== 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-SenderADCheck; bh=M3owoIuCzKNGK2AB8O9yxUqwH+rZIHTm9KvOW2vgGJo=; b=OVYIUcHUh/j6XZx5BnNLmgnbRnlRshyyrOcjy5JE3TSE6pSzQswAOJZTPmzgegl0jcCZp8X/yGbxersDQW2/+5GRZmXbauQ7u6/GTtdy+loXajx/7OjNTIPg1CwPrvpYfwVnq6FjmUOKcjVHqIHVugf6WylcQgMgHIPM0Mu3m0oLE8d/U+b7pSU1u8M9cl4bu1126gHblwMOZw49Ao9u0JyjOJeuIDTCt7Mk0CFPYOqzuzgpZIXGZ2OrWv2CXlodLKtjKvK3YHSotZeWlg0tGhtfvLx2CTmLNFJA7L3O7PkvQ8EtTNYd0xPR4a+NrNrQuuwXwXOxfklS7S+XvNkxsg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=M3owoIuCzKNGK2AB8O9yxUqwH+rZIHTm9KvOW2vgGJo=; b=Anv5CkAbE8gWz7l70xM35VEWDD6t3vCB74OUeQSFBgM5ttgpxHWOw4Eyzh8aL4Ykxqj2CIOL6qDmwp240WfiwjlmNasoSG0EiBs5xkDsy6xsRaxYNaFVFQASSN1EM4yEi6F3nDdxuM/RHOA+H4XTVN4FplrY48CtDU/nNEFVM68= Received: from BN8PR11MB3666.namprd11.prod.outlook.com (20.178.221.19) by BN0PR11MB5728.namprd11.prod.outlook.com (20.180.176.178) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4415.14; Fri, 13 Aug 2021 08:45:24 +0000 Received: from BN8PR11MB3666.namprd11.prod.outlook.com ([fe80::1d8:daf8:84de:1666]) by BN8PR11MB3666.namprd11.prod.outlook.com ([fe80::1d8:daf8:84de:1666%3]) with mapi id 15.20.4415.019; Fri, 13 Aug 2021 08:45:24 +0000 From: "Wu, Hao A" To: "devel@edk2.groups.io" , "mhaeuser@posteo.de" CC: "Kinney, Michael D" , Liming Gao , "Liu, Zhiguang" , "Wang, Jian J" , "Ni, Ray" , "Vitaly Cheptsov" Subject: Re: [edk2-devel] [PATCH] MdePkg/Base.h: Introduce various alignment-related macros Thread-Topic: [edk2-devel] [PATCH] MdePkg/Base.h: Introduce various alignment-related macros Thread-Index: AQHXjI1U27rRhBJ6gEO+unKONugkiKtxD7mAgAAVLoCAAADVAA== Date: Fri, 13 Aug 2021 08:45:23 +0000 Message-ID: References: <5df11a13422732b9c03c120775a2b4dd0a49182f.1628444003.git.mhaeuser@posteo.de> <22aacb64-00e3-2c4a-63de-7d7e74179349@posteo.de> In-Reply-To: <22aacb64-00e3-2c4a-63de-7d7e74179349@posteo.de> Accept-Language: en-US, zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.5.1.3 authentication-results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: ae91a5e9-70c1-41d6-11e4-08d95e36b117 x-ms-traffictypediagnostic: BN0PR11MB5728: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: RFNHzfkUNDhO+oM/OAQYtwpWeuCP0dtREIPOxnzohwSIqGHO8x4PRVsa1AzOvsrAsKxUcvARdABviIGNGRrSCqkhZAg/NWXnP4SN4E0wF2SnGGLHNPIkBKzxBnJIQ1HxG+dsg2wg4GqAJeEDD79cM/RM9XLDDlO97y+AraKbrM97dB9WWWNiZfFBO0dPbyg5nFLzo7u3QIrdOJmo/kPIy61OUA8A01Hk3BSMcEa6e5FI9FORSPrqPuOLuflairaeHGFRvvSJ7jnVaUchlRL/46sP8t4FvsQc4ucxFvyHwYloWxQ8ylDIwWmW8rcywvB/jwCna/XO8q78+LobZnVyBAfLkf798K3OPqQQ8yvk4nW2Dx8BQmfOs3N7uW7fY/7V3MUijPLhw05jMWyD7At6GjBngwM6DW06VupIuJNkzc9Q/QxuB9K3dpwA2vd3NCtB+4qz6KLR9Vvzd5UaMAIzvc+8R2HC14/rVcU6YYaUnKhhWsQxwrmRWsMd2l3eSGeRMRDQdG0WOaxNhlGKs3SCCIvyWsEc1j6D9/3NkvjP4guaCEmwYqPRoUu/oxhkYDu8Q9Vh2IcaLwAKVwxBQbnjTzJEGzSxMDRuBxf15J5jmkaP5jaNFIWRH+8pClTDwSWKnc3HjKAeqT/ET8GCD7/xap1xapGjn1sPAEfb2pkEFuc1SMPcN1a+rbvd3bKtOTkwK01wDlX7s734nscmS8qPDOTBp5Da1x+fTJXKj2GtXC1+HkQKuMHCOVSKi8/p8zAjY1oiyQv8NTeOxUewGObN9N9wPBYo96ywlk0Vs/uebOntqt/p89LqQAHcgRlZJ0OMprb9r0C3EaAWmzoDZRQu4w== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN8PR11MB3666.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(39860400002)(376002)(346002)(366004)(396003)(136003)(8936002)(66446008)(478600001)(64756008)(66556008)(66946007)(55016002)(66476007)(30864003)(122000001)(4326008)(38100700002)(7696005)(38070700005)(186003)(8676002)(316002)(2906002)(5660300002)(26005)(76116006)(9686003)(71200400001)(33656002)(6506007)(966005)(54906003)(86362001)(52536014)(83380400001)(53546011)(110136005)(66574015)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?REhUcktXTldDK3drYjJQSTAvcTBLSVc0MTkxNjdPLzdLLzkzWFhyaGJXZG1S?= =?utf-8?B?NVJtYzdNd3krTFJFWkhUZnlwT1g3cFVhRGJ4bnpwZXNzTXJRUWdldWtERU1X?= =?utf-8?B?NUk0eWRDVHFWeGZ1dnpiRTdoRFo3L2o4dnRnL0RJMGZLWUJBWG80Q0VHY094?= =?utf-8?B?MVp0UHUzKzEzU1VGUnNUdDNjcC9HNjQ0ejJyTEhndExobUxRYUtvdHV4bmY4?= =?utf-8?B?QWovbTd6NStmM2JGV2NCRzlpU0xtbkpPeDFLN0U2eUxiNlZIbE9yMllPcDNh?= =?utf-8?B?Y21mTG5TS3FuQ3FTUS8rTUZQQUphMFhVRTZOanpFeGVCOGM2elpERVA0Z1Jy?= =?utf-8?B?U01wV0RQL21YNzZpNHRKMVFrV0k4WU40VmZ6UCtGUjhZZE5xR2YwdlVOYUZI?= =?utf-8?B?dlA2QTR0eDFrWXhFRTJEczFsYXg5M05Qa0xjN1VlUGxJTTY0ZmhkMHdyYkdm?= =?utf-8?B?c0FPNmdaV0xha1JMMkFEVVM3NWkwQVhtazJ4RS9yNG40dktJRzJlUGFnU1FN?= =?utf-8?B?MDkxekxPZEh4SmVhT0libHMwMSs5TzQ3TEI2MkJJTzBHc3RZZXR2akhsRDZs?= =?utf-8?B?MW00UmxXVTdMZFpWMkRJb1AwTzZRc1N2QTBQcUtacm1xQmR2Zm5EM2l5K0sw?= =?utf-8?B?eHdIcTJzRUJiTkRPSldBWXRMYTl1SUJpRWRURXEyRnhpcC9rZCszcnZFUGNu?= =?utf-8?B?RFQzemxLenVZTmh0T0RUR2RvSzNzNk1BeDVZazJSRFJqWENuVWxxbFBQRytD?= =?utf-8?B?dEU3ZmNqbVVQamtnYlBCK0RHTFV0S0xpRE5tN3YxY1Z0Q0lOQW55VDRtTkt4?= =?utf-8?B?WjZXeVhrVkdJWXp4bzA5Q09TU2FZcnNleDJ2U2FiRVozSkFMc1pHVWU2NTlq?= =?utf-8?B?M1E4alhBMmprbjQzOFVoSFVqUTNER1BXdkdkbkErVGdWb1E5NVBJZlpmVEIr?= =?utf-8?B?K2FKQjg0S3FNbm5vaUErdHl0TTNDZk4zK3I0dmhDQnJqVFVQT0E5UjgvcmpE?= =?utf-8?B?SHVJdWRpV1N1aFA0KzF2UGxkRnpzYWRKYWlac0pnRzd1R0x0UFFLdW5JdUhm?= =?utf-8?B?SnNLUGt6VXVTWmI3UmMwVnlMSUl2UmZOUUtldW1HU0k2cE9CK00yTGZLb1ll?= =?utf-8?B?MVZmcG5HREttd3pwVmc0TE1xU1VQQytHLzR0bHN0RGlZZGV6akZFMmVXVlZo?= =?utf-8?B?dW9hc0R0Rk1sSHAzZzZuYnhaeGRnOUFIYjV6Yk01emRwTHhHQkFMQWlPMkUx?= =?utf-8?B?RUlQQVNORWRXYnRHMVAvallzcnFIM1VLNXk5SVNMcENBdHlha3d0UXBTMWRm?= =?utf-8?B?ZEphZjFpc1ZFUGFzUWQ1Q1RRZUV3YmhTbGRsZTNQL3VvdzVGOFhTNnJHREsx?= =?utf-8?B?QjN1L3ByenEveThoZk9ETkhmMEZreUVZVmJZS2w2ejVyaEMrd0VuUHh2OHlk?= =?utf-8?B?c0tEb2VOcjlTb3hvd2pCMzcyaFhFMkpJTkl6NDBwMHNuV1lEajk4U2FBRitl?= =?utf-8?B?dk9qTUNJckUydEJOV0M3NHJsWjNTVkxNYndTQkF1d05XaTV2azVLeUs0bCtU?= =?utf-8?B?cDhTR2wzSFgyUCtLRjJLKzNhbkNaQjNXS05TZmY3VysrUDVGYS9XWU5Ccm5S?= =?utf-8?B?WHdjL1Jod3QyL21TdFk3dXN3Ritud2VXSkkyMzg1bTMvWHh2NE43b2hZTzdR?= =?utf-8?B?d3ZlamlBQVBNYXdJMG1kdFJNeVRsdWpYR3FtVm81di8vMU9IdVdTbThtRTl3?= =?utf-8?Q?rE4JDlMVdbap61zQjoygN5SPJjaZHj2pIfthvU1?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN8PR11MB3666.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ae91a5e9-70c1-41d6-11e4-08d95e36b117 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Aug 2021 08:45:23.9431 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: qmGOT8j4GqYXF2f8DLK3m3qOlxZnjHxnn0fcQ8VAg2GfNgoJ7LOClXyBhIe10H+5jzIj7/LZV2STvCVAoAOTaA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN0PR11MB5728 Return-Path: hao.a.wu@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBkZXZlbEBlZGsyLmdyb3Vwcy5p byA8ZGV2ZWxAZWRrMi5ncm91cHMuaW8+IE9uIEJlaGFsZiBPZiBNYXJ2aW4NCj4gSD91c2VyDQo+ IFNlbnQ6IEZyaWRheSwgQXVndXN0IDEzLCAyMDIxIDQ6NDEgUE0NCj4gVG86IGRldmVsQGVkazIu Z3JvdXBzLmlvOyBXdSwgSGFvIEEgPGhhby5hLnd1QGludGVsLmNvbT4NCj4gQ2M6IEtpbm5leSwg TWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47IExpbWluZyBHYW8NCj4gPGdh b2xpbWluZ0BieW9zb2Z0LmNvbS5jbj47IExpdSwgWmhpZ3VhbmcgPHpoaWd1YW5nLmxpdUBpbnRl bC5jb20+Ow0KPiBXYW5nLCBKaWFuIEogPGppYW4uai53YW5nQGludGVsLmNvbT47IE5pLCBSYXkg PHJheS5uaUBpbnRlbC5jb20+OyBWaXRhbHkNCj4gQ2hlcHRzb3YgPHZpdDk2OTZAcHJvdG9ubWFp bC5jb20+DQo+IFN1YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0gW1BBVENIXSBNZGVQa2cvQmFzZS5o OiBJbnRyb2R1Y2UgdmFyaW91cw0KPiBhbGlnbm1lbnQtcmVsYXRlZCBtYWNyb3MNCj4gDQo+IE9u IDEzLzA4LzIwMjEgMDk6MjcsIFd1LCBIYW8gQSB3cm90ZToNCj4gPj4gLS0tLS1PcmlnaW5hbCBN ZXNzYWdlLS0tLS0NCj4gPj4gRnJvbTogTWFydmluIEjDpHVzZXIgPG1oYWV1c2VyQHBvc3Rlby5k ZT4NCj4gPj4gU2VudDogTW9uZGF5LCBBdWd1c3QgOSwgMjAyMSAzOjQwIEFNDQo+ID4+IFRvOiBk ZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiA+PiBDYzogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwu ZC5raW5uZXlAaW50ZWwuY29tPjsgTGltaW5nIEdhbw0KPiA+PiA8Z2FvbGltaW5nQGJ5b3NvZnQu Y29tLmNuPjsgTGl1LCBaaGlndWFuZyA8emhpZ3VhbmcubGl1QGludGVsLmNvbT47DQo+ID4+IFdh bmcsIEppYW4gSiA8amlhbi5qLndhbmdAaW50ZWwuY29tPjsgV3UsIEhhbyBBIDxoYW8uYS53dUBp bnRlbC5jb20+Ow0KPiA+PiBOaSwgUmF5IDxyYXkubmlAaW50ZWwuY29tPjsgVml0YWx5IENoZXB0 c292IDx2aXQ5Njk2QHByb3Rvbm1haWwuY29tPg0KPiA+PiBTdWJqZWN0OiBbUEFUQ0hdIE1kZVBr Zy9CYXNlLmg6IEludHJvZHVjZSB2YXJpb3VzIGFsaWdubWVudC1yZWxhdGVkDQo+ID4+IG1hY3Jv cw0KPiA+Pg0KPiA+PiBBTElHTk9GOiBEZXRlcm1pbmluZyB0aGUgYWxpZ25tZW50IHJlcXVpcmVt ZW50IG9mIGRhdGEgdHlwZXMgaXMNCj4gPj4gY3J1Y2lhbCB0byBlbnN1cmUgc2FmZSBtZW1vcnkg YWNjZXNzZXMgd2hlbiBwYXJzaW5nIHVudHJ1c3RlZCBkYXRhLg0KPiA+Pg0KPiA+PiBJU19QT1cy OiBEZXRlcm1pbmluZyB3aGV0aGVyIGEgdmFsdWUgaXMgYSBwb3dlciBvZiB0d28gaXMgaW1wb3J0 YW50DQo+ID4+IHRvIHZlcmlmeSB3aGV0aGVyIHVudHJ1c3RlZCB2YWx1ZXMgYXJlIHZhbGlkIGFs aWdubWVudCB2YWx1ZXMuDQo+ID4+DQo+ID4+IElTX0FMSUdORUQ6IEluIGNvbWJpbmF0aW9uIHdp dGggQUxJR05PRiBkYXRhIG9mZnNldHMgY2FuIGJlIHZlcmlmaWVkLg0KPiA+PiBBIG1vcmUgZ2Vu ZXJhbCB2ZXJzaW9uIG9mIElTX0FMSUdORUQgZGVmaW5lZCBieSBzZXZlcmFsIG1vZHVsZXMuDQo+ ID4+DQo+ID4+IEFERFJFU1NfSVNfQUxJR05FRDogVmFyaWFudCBvZiBJU19BTElHTkVEIGZvciBw b2ludGVycyBhbmQgYWRkcmVzc2VzLg0KPiA+PiBSZXBsYWNlcyBtb2R1bGUtc3BlY2lmaWMgZGVm aW5pdGlvbnMgdGhyb3VnaG91dCB0aGUgY29kZWJhc2UuDQo+ID4+DQo+ID4+IEFMSUdOX1ZBTFVF X0FEREVORDogVGhlIGFkZGVkIHRvIGFsaWduIHVwIGNhbiBiZSB1c2VkIHRvIGRpcmVjdGx5DQo+ ID4+IGRldGVybWluZSB0aGUgcmVxdWlyZWQgb2Zmc2V0IGZvciBkYXRhIGFsaWdubWVudC4NCj4g Pj4NCj4gPj4gQ2M6IE1pY2hhZWwgRCBLaW5uZXkgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29t Pg0KPiA+PiBDYzogTGltaW5nIEdhbyA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPg0KPiA+PiBD YzogWmhpZ3VhbmcgTGl1IDx6aGlndWFuZy5saXVAaW50ZWwuY29tPg0KPiA+PiBDYzogSmlhbiBK IFdhbmcgPGppYW4uai53YW5nQGludGVsLmNvbT4NCj4gPj4gQ2M6IEhhbyBBIFd1IDxoYW8uYS53 dUBpbnRlbC5jb20+DQo+ID4+IENjOiBSYXkgTmkgPHJheS5uaUBpbnRlbC5jb20+DQo+ID4+IENj OiBWaXRhbHkgQ2hlcHRzb3YgPHZpdDk2OTZAcHJvdG9ubWFpbC5jb20+DQo+ID4+IFNpZ25lZC1v ZmYtYnk6IE1hcnZpbiBIw6R1c2VyIDxtaGFldXNlckBwb3N0ZW8uZGU+DQo+ID4+IC0tLQ0KPiA+ PiAgIE1kZU1vZHVsZVBrZy9CdXMvQXRhL0FoY2lQZWkvQWhjaU1vZGUuYyAgICAgICAgICAgICAg ICAgIHwgIDIgKy0NCj4gPj4gICBNZGVNb2R1bGVQa2cvQnVzL0F0YS9BaGNpUGVpL0FoY2lQZWlQ YXNzVGhydS5jICAgICAgICAgICB8ICA2ICstDQo+ID4+ICAgTWRlTW9kdWxlUGtnL0J1cy9BdGEv QXRhQXRhcGlQYXNzVGhydS9BdGFBdGFwaVBhc3NUaHJ1LmMgfCAxMiArLS0NCj4gPj4gICBNZGVN b2R1bGVQa2cvQnVzL0F0YS9BdGFCdXNEeGUvQXRhUGFzc1RocnVFeGVjdXRlLmMgICAgICB8ICAy ICstDQo+ID4+ICAgTWRlTW9kdWxlUGtnL0J1cy9TY3NpL1Njc2lEaXNrRHhlL1Njc2lEaXNrLmMg ICAgICAgICAgICAgfCAgNCArLQ0KPiA+PiAgIE1kZU1vZHVsZVBrZy9CdXMvVWZzL1Vmc1Bhc3NU aHJ1RHhlL1Vmc1Bhc3NUaHJ1LmMgICAgICAgIHwgIDYgKy0NCj4gPj4gICBNZGVNb2R1bGVQa2cv VW5pdmVyc2FsL0ViY0R4ZS9FYmNFeGVjdXRlLmMgICAgICAgICAgICAgICB8IDM2ICsrKystLS0t DQo+ID4+ICAgTWRlTW9kdWxlUGtnL0J1cy9BdGEvQWhjaVBlaS9BaGNpUGVpLmggICAgICAgICAg ICAgICAgICAgfCAgMSAtDQo+ID4+ICAgTWRlTW9kdWxlUGtnL0J1cy9BdGEvQXRhQXRhcGlQYXNz VGhydS9BdGFBdGFwaVBhc3NUaHJ1LmggfCAgMiAtDQo+ID4+ICAgTWRlTW9kdWxlUGtnL0J1cy9B dGEvQXRhQnVzRHhlL0F0YUJ1cy5oICAgICAgICAgICAgICAgICAgfCAgMSAtDQo+ID4+ICAgTWRl TW9kdWxlUGtnL0J1cy9TY3NpL1Njc2lEaXNrRHhlL1Njc2lEaXNrLmggICAgICAgICAgICAgfCAg NCArLQ0KPiA+PiAgIE1kZU1vZHVsZVBrZy9CdXMvVWZzL1Vmc0Jsb2NrSW9QZWkvVWZzQmxvY2tJ b1BlaS5oICAgICAgIHwgIDIgLQ0KPiA+PiAgIE1kZU1vZHVsZVBrZy9CdXMvVWZzL1Vmc1Bhc3NU aHJ1RHhlL1Vmc1Bhc3NUaHJ1LmggICAgICAgIHwgIDIgLQ0KPiA+PiAgIE1kZU1vZHVsZVBrZy9V bml2ZXJzYWwvRWJjRHhlL0ViY0V4ZWN1dGUuaCAgICAgICAgICAgICAgIHwgIDMgKy0NCj4gPj4g ICBNZGVQa2cvSW5jbHVkZS9CYXNlLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IDkwICsrKysrKysrKysrKysrKysrKystDQo+ID4+ICAgMTUgZmlsZXMgY2hhbmdlZCwgMTI1 IGluc2VydGlvbnMoKyksIDQ4IGRlbGV0aW9ucygtKQ0KPiA+DQo+ID4gU3VnZ2VzdCB0byBicmVh ayB0aGlzIGludG8gMiBwYXRjaGVzOg0KPiA+IFRoZSBmaXJzdCBvbmUgaXMgZm9yIE1kZVBrZyBm b3IgYWRkaW5nIHRoZSBtYWNyb3MuIEFuZCB0aGUgc2Vjb25kIG9uZSBmb3INCj4gY2hhbmdlcyBp biBNZGVNb2R1bGVQa2cuDQo+ID4NCj4gPiBGb3IgdGhlIE1kZU1vZHVsZVBrZyBjaGFuZ2VzLCB0 aGV5IGxvb2sgZ29vZCB0byBtZToNCj4gPiBSZXZpZXdlZC1ieTogSGFvIEEgV3UgPGhhby5hLnd1 QGludGVsLmNvbT4NCj4gPg0KPiA+IFlvdSBjYW4gYWRkIHRoZSBhYm92ZSAnUi1iJyB0YWcgZm9y IHlvdXIgTWRlTW9kdWxlUGtnIHBhdGNoIGluIHRoZSBWMg0KPiBzZXJpZXMuDQo+IA0KPiBUaGFu ayB5b3UhIFRoZSByZWFzb24gSSBkaWRuJ3QgZG8gdGhpcyBpcyB0aGF0IE1kZU1vZHVsZVBrZyBh bHJlYWR5IGhhcw0KPiAiSVNfQUxJR05FRCIgbWFjcm9zLCBzbyBiYXNpY2FsbHkgaXQgd291bGQg bmVlZCB0aHJlZSBwYXRjaGVzOg0KPiAxKSBSZW5hbWUgTWRlTW9kdWxlUGtnICJJU19BTElHTkVE IiB0byBzb21ldGhpbmcgZWxzZQ0KPiAyKSBJbnRyb2R1Y2UgTWRlUGtnICJJU19BTElHTkVEIg0K PiAzKSBEcm9wIG5ld2x5IHJlbmFtZWQgbWFjcm9zIGZyb20gMSkgdG8gdXNlIHRoZSBtYWNyb3Mg ZnJvbSAyKQ0KDQoNClBsZWFzZSBoZWxwIHRvIGRvIHNvLg0KR2VuZXJhbGx5LCBhIHNpbmdsZSBw YXRjaCBzaG91bGQgbWFrZSBjaGFuZ2VzIHdpdGhpbiBvbmx5IG9uZSBwYWNrYWdlLg0KDQpCZXN0 IFJlZ2FyZHMsDQpIYW8gV3UNCg0KDQo+IA0KPiBpZiB5b3UgcHJlZmVyIGl0IHRoYXQgd2F5LCBJ J2xsIGhhdmUgYSBWMiByZWFkeSBzb29uLg0KPiANCj4gQmVzdCByZWdhcmRzLA0KPiBNYXJ2aW4N Cj4gDQo+ID4NCj4gPiBCZXN0IFJlZ2FyZHMsDQo+ID4gSGFvIFd1DQo+ID4NCj4gPg0KPiA+PiBk aWZmIC0tZ2l0IGEvTWRlTW9kdWxlUGtnL0J1cy9BdGEvQWhjaVBlaS9BaGNpTW9kZS5jDQo+ID4+ IGIvTWRlTW9kdWxlUGtnL0J1cy9BdGEvQWhjaVBlaS9BaGNpTW9kZS5jDQo+ID4+IGluZGV4IDc2 MzZhZDI3Yzg2Yy4uNTIwMTk3YWVlNzUyIDEwMDY0NA0KPiA+PiAtLS0gYS9NZGVNb2R1bGVQa2cv QnVzL0F0YS9BaGNpUGVpL0FoY2lNb2RlLmMNCj4gPj4gKysrIGIvTWRlTW9kdWxlUGtnL0J1cy9B dGEvQWhjaVBlaS9BaGNpTW9kZS5jDQo+ID4+IEBAIC0yMDk5LDcgKzIwOTksNyBAQCBUcnVzdFRy YW5zZmVyQXRhRGV2aWNlICgNCj4gPj4gICAgICAgLy8gQVRBIFBhc3NUaHJ1IFBQSS4gICAgIC8v ICAgICBpZiAoKEF0YVBhc3NUaHJ1LT5Nb2RlLT5Jb0FsaWduID4gMSkgJiYtDQo+ID4+ICAgICAg ICAgICFJU19BTElHTkVEIChCdWZmZXIsIEF0YVBhc3NUaHJ1LT5Nb2RlLT5Jb0FsaWduKSkNCj4g Pj4geysgICAgICAgICFBRERSRVNTX0lTX0FMSUdORUQgKEJ1ZmZlciwgQXRhUGFzc1RocnUtPk1v ZGUtPklvQWxpZ24pKQ0KPiA+PiB7ICAgICAgIE5ld0J1ZmZlciA9IEFsbG9jYXRlQWxpZ25lZFBh Z2VzICggICAgICAgICAgICAgICAgICAgICBFRklfU0laRV9UT19QQUdFUw0KPiA+PiAoVHJhbnNm ZXJMZW5ndGgpLCAgICAgICAgICAgICAgICAgICAgIEF0YVBhc3NUaHJ1LT5Nb2RlLT5Jb0FsaWdu ZGlmZiAtLWdpdA0KPiA+PiBhL01kZU1vZHVsZVBrZy9CdXMvQXRhL0FoY2lQZWkvQWhjaVBlaVBh c3NUaHJ1LmMNCj4gPj4gYi9NZGVNb2R1bGVQa2cvQnVzL0F0YS9BaGNpUGVpL0FoY2lQZWlQYXNz VGhydS5jDQo+ID4+IGluZGV4IDE5MWI3OGM4ODU0MS4uMDU3YWQ0MmQ1OTZiIDEwMDY0NA0KPiA+ PiAtLS0gYS9NZGVNb2R1bGVQa2cvQnVzL0F0YS9BaGNpUGVpL0FoY2lQZWlQYXNzVGhydS5jDQo+ ID4+ICsrKyBiL01kZU1vZHVsZVBrZy9CdXMvQXRhL0FoY2lQZWkvQWhjaVBlaVBhc3NUaHJ1LmMN Cj4gPj4gQEAgLTE5MywxNSArMTkzLDE1IEBAIEFoY2lBdGFQYXNzVGhydVBhc3NUaHJ1ICgNCj4g Pj4gICAgIH0gICAgSW9BbGlnbiA9IFRoaXMtPk1vZGUtPklvQWxpZ247LSAgaWYgKChJb0FsaWdu ID4gMSkgJiYgIUlTX0FMSUdORUQNCj4gPj4gKFBhY2tldC0+SW5EYXRhQnVmZmVyLCBJb0FsaWdu KSkgeysgIGlmICgoSW9BbGlnbiA+IDEpDQo+ID4+ICYmICFBRERSRVNTX0lTX0FMSUdORUQgKFBh Y2tldC0+SW5EYXRhQnVmZmVyLCBJb0FsaWduKSkgeyAgICAgcmV0dXJuDQo+ID4+IEVGSV9JTlZB TElEX1BBUkFNRVRFUjsgICB9IC0gIGlmICgoSW9BbGlnbiA+IDEpICYmICFJU19BTElHTkVEIChQ YWNrZXQtDQo+ID4+PiBPdXREYXRhQnVmZmVyLCBJb0FsaWduKSkgeysgIGlmICgoSW9BbGlnbiA+ IDEpICYmDQo+ID4+PiAhQUREUkVTU19JU19BTElHTkVEDQo+ID4+IChQYWNrZXQtPk91dERhdGFC dWZmZXIsIElvQWxpZ24pKSB7ICAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOyAgIH0N Cj4gLQ0KPiA+PiBpZiAoKElvQWxpZ24gPiAxKSAmJiAhSVNfQUxJR05FRCAoUGFja2V0LT5Bc2Is IElvQWxpZ24pKSB7KyAgaWYgKChJb0FsaWduID4gMSkNCj4gPj4gJiYgIUFERFJFU1NfSVNfQUxJ R05FRCAoUGFja2V0LT5Bc2IsIElvQWxpZ24pKSB7ICAgICByZXR1cm4NCj4gPj4gRUZJX0lOVkFM SURfUEFSQU1FVEVSOyAgIH0gZGlmZiAtLWdpdA0KPiA+PiBhL01kZU1vZHVsZVBrZy9CdXMvQXRh L0F0YUF0YXBpUGFzc1RocnUvQXRhQXRhcGlQYXNzVGhydS5jDQo+ID4+IGIvTWRlTW9kdWxlUGtn L0J1cy9BdGEvQXRhQXRhcGlQYXNzVGhydS9BdGFBdGFwaVBhc3NUaHJ1LmMNCj4gPj4gaW5kZXgg ODZmZTlkOTU0ZmRiLi5jN2IzY2ZjZTEzNDAgMTAwNjQ0DQo+ID4+IC0tLSBhL01kZU1vZHVsZVBr Zy9CdXMvQXRhL0F0YUF0YXBpUGFzc1RocnUvQXRhQXRhcGlQYXNzVGhydS5jDQo+ID4+ICsrKyBi L01kZU1vZHVsZVBrZy9CdXMvQXRhL0F0YUF0YXBpUGFzc1RocnUvQXRhQXRhcGlQYXNzVGhydS5j DQo+ID4+IEBAIC0xMjgxLDE1ICsxMjgxLDE1IEBAIEF0YVBhc3NUaHJ1UGFzc1RocnUgKA0KPiA+ PiAgICAgIEluc3RhbmNlID0gQVRBX1BBU1NfVEhSVV9QUklWQVRFX0RBVEFfRlJPTV9USElTIChU aGlzKTsgLSAgaWYNCj4gPj4gKChUaGlzLT5Nb2RlLT5Jb0FsaWduID4gMSkgJiYgIUlTX0FMSUdO RUQoUGFja2V0LT5JbkRhdGFCdWZmZXIsIFRoaXMtDQo+ID4+PiBNb2RlLT5Jb0FsaWduKSkgeysg IGlmICgoVGhpcy0+TW9kZS0+SW9BbGlnbiA+IDEpDQo+ID4+ICYmICFBRERSRVNTX0lTX0FMSUdO RUQoUGFja2V0LT5JbkRhdGFCdWZmZXIsIFRoaXMtPk1vZGUtPklvQWxpZ24pKQ0KPiA+PiB7ICAg ICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOyAgIH0gLSAgaWYgKChUaGlzLT5Nb2RlLT5J b0FsaWduID4gMSkNCj4gPj4gJiYgIUlTX0FMSUdORUQoUGFja2V0LT5PdXREYXRhQnVmZmVyLCBU aGlzLT5Nb2RlLT5Jb0FsaWduKSkgeysgIGlmDQo+ID4+ICgoVGhpcy0NCj4gPj4+IE1vZGUtPklv QWxpZ24gPiAxKSAmJiAhQUREUkVTU19JU19BTElHTkVEKFBhY2tldC0+T3V0RGF0YUJ1ZmZlciwN Cj4gPj4gVGhpcy0+TW9kZS0+SW9BbGlnbikpIHsgICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJB TUVURVI7ICAgfSAtICBpZiAoKFRoaXMtDQo+ID4+PiBNb2RlLT5Jb0FsaWduID4gMSkgJiYgIUlT X0FMSUdORUQoUGFja2V0LT5Bc2IsIFRoaXMtPk1vZGUtDQo+ID5Jb0FsaWduKSkNCj4gPj4geysg IGlmICgoVGhpcy0+TW9kZS0+SW9BbGlnbiA+IDEpICYmICFBRERSRVNTX0lTX0FMSUdORUQoUGFj a2V0LT5Bc2IsDQo+ID4+IFRoaXMtPk1vZGUtPklvQWxpZ24pKSB7ICAgICByZXR1cm4gRUZJX0lO VkFMSURfUEFSQU1FVEVSOyAgIH0gQEAgLQ0KPiAyMDEyLDE1DQo+ID4+ICsyMDEyLDE1IEBAIEV4 dFNjc2lQYXNzVGhydVBhc3NUaHJ1ICgNCj4gPj4gICAgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BB UkFNRVRFUjsgICB9IC0gIGlmICgoVGhpcy0+TW9kZS0+SW9BbGlnbiA+IDEpDQo+ID4+ICYmICFJ U19BTElHTkVEKFBhY2tldC0+SW5EYXRhQnVmZmVyLCBUaGlzLT5Nb2RlLT5Jb0FsaWduKSkgeysg IGlmDQo+ID4+ICgoVGhpcy0NCj4gPj4+IE1vZGUtPklvQWxpZ24gPiAxKSAmJiAhQUREUkVTU19J U19BTElHTkVEKFBhY2tldC0+SW5EYXRhQnVmZmVyLA0KPiBUaGlzLQ0KPiA+Pj4gTW9kZS0+SW9B bGlnbikpIHsgICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7ICAgfSAtICBpZiAoKFRo aXMtDQo+ID5Nb2RlLQ0KPiA+Pj4gSW9BbGlnbiA+IDEpICYmICFJU19BTElHTkVEKFBhY2tldC0+ T3V0RGF0YUJ1ZmZlciwgVGhpcy0+TW9kZS0NCj4gPj4+IElvQWxpZ24pKSB7KyAgaWYgKChUaGlz LT5Nb2RlLT5Jb0FsaWduID4gMSkNCj4gPj4gJiYgIUFERFJFU1NfSVNfQUxJR05FRChQYWNrZXQt Pk91dERhdGFCdWZmZXIsIFRoaXMtPk1vZGUtDQo+ID5Jb0FsaWduKSkNCj4gPj4geyAgICAgcmV0 dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsgICB9IC0gIGlmICgoVGhpcy0+TW9kZS0+SW9BbGln biA+IDEpDQo+ID4+ICYmICFJU19BTElHTkVEKFBhY2tldC0+U2Vuc2VEYXRhLCBUaGlzLT5Nb2Rl LT5Jb0FsaWduKSkgeysgIGlmDQo+ID4+ICgoVGhpcy0NCj4gPj4+IE1vZGUtPklvQWxpZ24gPiAx KSAmJiAhQUREUkVTU19JU19BTElHTkVEKFBhY2tldC0+U2Vuc2VEYXRhLA0KPiBUaGlzLQ0KPiA+ Pj4gTW9kZS0+SW9BbGlnbikpIHsgICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7ICAg fSBkaWZmIC0tZ2l0DQo+ID4+IGEvTWRlTW9kdWxlUGtnL0J1cy9BdGEvQXRhQnVzRHhlL0F0YVBh c3NUaHJ1RXhlY3V0ZS5jDQo+ID4+IGIvTWRlTW9kdWxlUGtnL0J1cy9BdGEvQXRhQnVzRHhlL0F0 YVBhc3NUaHJ1RXhlY3V0ZS5jDQo+ID4+IGluZGV4IDc5MDI2YTRhOTU3ZC4uZWFiYWI4YWM1YmM1 IDEwMDY0NA0KPiA+PiAtLS0gYS9NZGVNb2R1bGVQa2cvQnVzL0F0YS9BdGFCdXNEeGUvQXRhUGFz c1RocnVFeGVjdXRlLmMNCj4gPj4gKysrIGIvTWRlTW9kdWxlUGtnL0J1cy9BdGEvQXRhQnVzRHhl L0F0YVBhc3NUaHJ1RXhlY3V0ZS5jDQo+ID4+IEBAIC0xMDM2LDcgKzEwMzYsNyBAQCBUcnVzdFRy YW5zZmVyQXRhRGV2aWNlICgNCj4gPj4gICAgICAgLy8gQ2hlY2sgdGhlIGFsaWdubWVudCBvZiB0 aGUgaW5jb21pbmcgYnVmZmVyIHByaW9yIHRvIGludm9raW5nDQo+IHVuZGVybHlpbmcNCj4gPj4g QVRBIFBhc3NUaHJ1ICAgICAvLyAgICAgQXRhUGFzc1RocnUgPSBBdGFEZXZpY2UtPkF0YUJ1c0Ry aXZlckRhdGEtDQo+ID4+PiBBdGFQYXNzVGhydTstICAgIGlmICgoQXRhUGFzc1RocnUtPk1vZGUt PklvQWxpZ24gPiAxKSAmJiAhSVNfQUxJR05FRA0KPiA+PiAoQnVmZmVyLCBBdGFQYXNzVGhydS0+ TW9kZS0+SW9BbGlnbikpIHsrICAgIGlmICgoQXRhUGFzc1RocnUtPk1vZGUtDQo+ID4+PiBJb0Fs aWduID4gMSkgJiYgIUFERFJFU1NfSVNfQUxJR05FRCAoQnVmZmVyLCBBdGFQYXNzVGhydS0+TW9k ZS0NCj4gPj4+IElvQWxpZ24pKSB7ICAgICAgIE5ld0J1ZmZlciA9IEFsbG9jYXRlQWxpZ25lZEJ1 ZmZlciAoQXRhRGV2aWNlLA0KPiA+PiBUcmFuc2Zlckxlbmd0aCk7ICAgICAgIGlmIChOZXdCdWZm ZXIgPT0gTlVMTCkgeyAgICAgICAgIHJldHVybg0KPiA+PiBFRklfT1VUX09GX1JFU09VUkNFUztk aWZmIC0tZ2l0DQo+ID4+IGEvTWRlTW9kdWxlUGtnL0J1cy9TY3NpL1Njc2lEaXNrRHhlL1Njc2lE aXNrLmMNCj4gPj4gYi9NZGVNb2R1bGVQa2cvQnVzL1Njc2kvU2NzaURpc2tEeGUvU2NzaURpc2su Yw0KPiA+PiBpbmRleCBjODBlNzhmYThhNmIuLjgxZGIyZWZkMDU5OSAxMDA2NDQNCj4gPj4gLS0t IGEvTWRlTW9kdWxlUGtnL0J1cy9TY3NpL1Njc2lEaXNrRHhlL1Njc2lEaXNrLmMNCj4gPj4gKysr IGIvTWRlTW9kdWxlUGtnL0J1cy9TY3NpL1Njc2lEaXNrRHhlL1Njc2lEaXNrLmMNCj4gPj4gQEAg LTE5NTYsNyArMTk1Niw3IEBAIFNjc2lEaXNrUmVjZWl2ZURhdGEgKA0KPiA+PiAgICAgICAgIGdv dG8gRG9uZTsgICAgIH0gLSAgICBpZiAoKFNjc2lEaXNrRGV2aWNlLT5TY3NpSW8tPklvQWxpZ24g PiAxKQ0KPiA+PiAmJiAhSVNfQUxJR05FRCAoUGF5bG9hZEJ1ZmZlciwgU2NzaURpc2tEZXZpY2Ut PlNjc2lJby0+SW9BbGlnbikpIHsrICAgIGlmDQo+ID4+ICgoU2NzaURpc2tEZXZpY2UtPlNjc2lJ by0+SW9BbGlnbiA+IDEpICYmICFBRERSRVNTX0lTX0FMSUdORUQNCj4gPj4gKFBheWxvYWRCdWZm ZXIsIFNjc2lEaXNrRGV2aWNlLT5TY3NpSW8tPklvQWxpZ24pKSB7ICAgICAgIEFsaWduZWRCdWZm ZXIgPQ0KPiA+PiBBbGxvY2F0ZUFsaWduZWRCdWZmZXIgKFNjc2lEaXNrRGV2aWNlLCBQYXlsb2Fk QnVmZmVyU2l6ZSk7ICAgICAgIGlmDQo+ID4+IChBbGlnbmVkQnVmZmVyID09IE5VTEwpIHsgICAg ICAgICBTdGF0dXMgPSBFRklfT1VUX09GX1JFU09VUkNFUztAQCAtDQo+ID4+IDIxNzEsNyArMjE3 MSw3IEBAIFNjc2lEaXNrU2VuZERhdGEgKA0KPiA+PiAgICAgICAgIGdvdG8gRG9uZTsgICAgIH0g LSAgICBpZiAoKFNjc2lEaXNrRGV2aWNlLT5TY3NpSW8tPklvQWxpZ24gPiAxKQ0KPiA+PiAmJiAh SVNfQUxJR05FRCAoUGF5bG9hZEJ1ZmZlciwgU2NzaURpc2tEZXZpY2UtPlNjc2lJby0+SW9BbGln bikpIHsrICAgIGlmDQo+ID4+ICgoU2NzaURpc2tEZXZpY2UtPlNjc2lJby0+SW9BbGlnbiA+IDEp ICYmICFBRERSRVNTX0lTX0FMSUdORUQNCj4gPj4gKFBheWxvYWRCdWZmZXIsIFNjc2lEaXNrRGV2 aWNlLT5TY3NpSW8tPklvQWxpZ24pKSB7ICAgICAgIEFsaWduZWRCdWZmZXIgPQ0KPiA+PiBBbGxv Y2F0ZUFsaWduZWRCdWZmZXIgKFNjc2lEaXNrRGV2aWNlLCBQYXlsb2FkQnVmZmVyU2l6ZSk7ICAg ICAgIGlmDQo+ID4+IChBbGlnbmVkQnVmZmVyID09IE5VTEwpIHsgICAgICAgICBTdGF0dXMgPSBF RklfT1VUX09GX1JFU09VUkNFUztkaWZmIC0tZ2l0DQo+ID4+IGEvTWRlTW9kdWxlUGtnL0J1cy9V ZnMvVWZzUGFzc1RocnVEeGUvVWZzUGFzc1RocnUuYw0KPiA+PiBiL01kZU1vZHVsZVBrZy9CdXMv VWZzL1Vmc1Bhc3NUaHJ1RHhlL1Vmc1Bhc3NUaHJ1LmMNCj4gPj4gaW5kZXggOTJmZjk1OGYxNjFl Li5jNGQwMWEyMGZjYmUgMTAwNjQ0DQo+ID4+IC0tLSBhL01kZU1vZHVsZVBrZy9CdXMvVWZzL1Vm c1Bhc3NUaHJ1RHhlL1Vmc1Bhc3NUaHJ1LmMNCj4gPj4gKysrIGIvTWRlTW9kdWxlUGtnL0J1cy9V ZnMvVWZzUGFzc1RocnVEeGUvVWZzUGFzc1RocnUuYw0KPiA+PiBAQCAtMTcwLDE1ICsxNzAsMTUg QEAgVWZzUGFzc1RocnVQYXNzVGhydSAoDQo+ID4+ICAgICAgIHJldHVybiBFRklfSU5WQUxJRF9Q QVJBTUVURVI7ICAgfSAtICBpZiAoKFRoaXMtPk1vZGUtPklvQWxpZ24gPiAxKQ0KPiA+PiAmJiAh SVNfQUxJR05FRChQYWNrZXQtPkluRGF0YUJ1ZmZlciwgVGhpcy0+TW9kZS0+SW9BbGlnbikpIHsr ICBpZg0KPiA+PiAoKFRoaXMtDQo+ID4+PiBNb2RlLT5Jb0FsaWduID4gMSkgJiYgIUFERFJFU1Nf SVNfQUxJR05FRChQYWNrZXQtPkluRGF0YUJ1ZmZlciwNCj4gVGhpcy0NCj4gPj4+IE1vZGUtPklv QWxpZ24pKSB7ICAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOyAgIH0gLSAgaWYgKChU aGlzLQ0KPiA+TW9kZS0NCj4gPj4+IElvQWxpZ24gPiAxKSAmJiAhSVNfQUxJR05FRChQYWNrZXQt Pk91dERhdGFCdWZmZXIsIFRoaXMtPk1vZGUtDQo+ID4+PiBJb0FsaWduKSkgeysgIGlmICgoVGhp cy0+TW9kZS0+SW9BbGlnbiA+IDEpDQo+ID4+ICYmICFBRERSRVNTX0lTX0FMSUdORUQoUGFja2V0 LT5PdXREYXRhQnVmZmVyLCBUaGlzLT5Nb2RlLQ0KPiA+SW9BbGlnbikpDQo+ID4+IHsgICAgIHJl dHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7ICAgfSAtICBpZiAoKFRoaXMtPk1vZGUtPklvQWxp Z24gPiAxKQ0KPiA+PiAmJiAhSVNfQUxJR05FRChQYWNrZXQtPlNlbnNlRGF0YSwgVGhpcy0+TW9k ZS0+SW9BbGlnbikpIHsrICBpZg0KPiA+PiAoKFRoaXMtDQo+ID4+PiBNb2RlLT5Jb0FsaWduID4g MSkgJiYgIUFERFJFU1NfSVNfQUxJR05FRChQYWNrZXQtPlNlbnNlRGF0YSwNCj4gVGhpcy0NCj4g Pj4+IE1vZGUtPklvQWxpZ24pKSB7ICAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOyAg IH0gZGlmZiAtLWdpdA0KPiA+PiBhL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvRWJjRHhlL0ViY0V4 ZWN1dGUuYw0KPiA+PiBiL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvRWJjRHhlL0ViY0V4ZWN1dGUu Yw0KPiA+PiBpbmRleCAxYzRhNGY1MTU1YzkuLmJhNjZmNDQxYmNlYSAxMDA2NDQNCj4gPj4gLS0t IGEvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9FYmNEeGUvRWJjRXhlY3V0ZS5jDQo+ID4+ICsrKyBi L01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvRWJjRHhlL0ViY0V4ZWN1dGUuYw0KPiA+PiBAQCAtMjAw NCw3ICsyMDA0LDcgQEAgRXhlY3V0ZUpNUCAoDQo+ID4+ICAgICAgIC8vIGNoZWNrIGZvciBhbGln bm1lbnQsIGFuZCBqdW1wIGFic29sdXRlLiAgICAgLy8gICAgIERhdGE2NCA9IChVSU5UNjQpDQo+ ID4+IFZtUmVhZEltbWVkNjQgKFZtUHRyLCAyKTstICAgIGlmICghSVNfQUxJR05FRCAoKFVJTlRO KSBEYXRhNjQsIHNpemVvZg0KPiA+PiAoVUlOVDE2KSkpIHsrICAgIGlmICghQUREUkVTU19JU19B TElHTkVEICgoVUlOVE4pIERhdGE2NCwgc2l6ZW9mDQo+IChVSU5UMTYpKSkNCj4gPj4geyAgICAg ICBFYmNEZWJ1Z1NpZ25hbEV4Y2VwdGlvbiAoICAgICAgICAgRVhDRVBUX0VCQ19BTElHTk1FTlRf Q0hFQ0ssDQo+ID4+IEVYQ0VQVElPTl9GTEFHX0ZBVEFMLEBAIC0yMDU5LDcgKzIwNTksNyBAQCBF eGVjdXRlSk1QICgNCj4gPj4gICAgICAgLy8gRm9ybTogSk1QMzIgQFJ4IHtJbmRleDMyfSAgICAg Ly8gICAgIEFkZHIgPSBWbVJlYWRNZW1OIChWbVB0ciwNCj4gPj4gKFVJTlROKSBEYXRhNjQgKyBJ bmRleDMyKTstICAgIGlmICghSVNfQUxJR05FRCAoKFVJTlROKSBBZGRyLCBzaXplb2YNCj4gPj4g KFVJTlQxNikpKSB7KyAgICBpZiAoIUFERFJFU1NfSVNfQUxJR05FRCAoKFVJTlROKSBBZGRyLCBz aXplb2YgKFVJTlQxNikpKQ0KPiA+PiB7ICAgICAgIEViY0RlYnVnU2lnbmFsRXhjZXB0aW9uICgg ICAgICAgICBFWENFUFRfRUJDX0FMSUdOTUVOVF9DSEVDSywNCj4gPj4gRVhDRVBUSU9OX0ZMQUdf RkFUQUwsQEAgLTIwODIsNyArMjA4Miw3IEBAIEV4ZWN1dGVKTVAgKA0KPiA+PiAgICAgICAvLyBG b3JtOiBKTVAzMiBSeCB7SW1tZWQzMn0gICAgIC8vICAgICBBZGRyID0gKFVJTlROKSAoRGF0YTY0 ICsNCj4gSW5kZXgzMik7LQ0KPiA+PiBpZiAoIUlTX0FMSUdORUQgKChVSU5UTikgQWRkciwgc2l6 ZW9mIChVSU5UMTYpKSkgeysgICAgaWYNCj4gPj4gKCFBRERSRVNTX0lTX0FMSUdORUQgKChVSU5U TikgQWRkciwgc2l6ZW9mIChVSU5UMTYpKSkNCj4gPj4geyAgICAgICBFYmNEZWJ1Z1NpZ25hbEV4 Y2VwdGlvbiAoICAgICAgICAgRVhDRVBUX0VCQ19BTElHTk1FTlRfQ0hFQ0ssDQo+ID4+IEVYQ0VQ VElPTl9GTEFHX0ZBVEFMLEBAIC0zMTI4LDcgKzMxMjgsNyBAQCBFeGVjdXRlUkVUICgNCj4gPj4g ICAgICAgLy8gUHVsbCB0aGUgcmV0dXJuIGFkZHJlc3Mgb2ZmIHRoZSBWTSBhcHAncyBzdGFjayBh bmQgc2V0IHRoZSBJUCAgICAgLy8gdG8NCj4gaXQNCj4gPj4gLy8tICAgIGlmICghSVNfQUxJR05F RCAoKFVJTlROKSBWbVB0ci0+R3ByWzBdLCBzaXplb2YgKFVJTlQxNikpKSB7KyAgICBpZg0KPiA+ PiAoIUFERFJFU1NfSVNfQUxJR05FRCAoKFVJTlROKSBWbVB0ci0+R3ByWzBdLCBzaXplb2YgKFVJ TlQxNikpKQ0KPiA+PiB7ICAgICAgIEViY0RlYnVnU2lnbmFsRXhjZXB0aW9uICggICAgICAgICBF WENFUFRfRUJDX0FMSUdOTUVOVF9DSEVDSywNCj4gPj4gRVhDRVBUSU9OX0ZMQUdfRkFUQUwsQEAg LTQ2OTMsNyArNDY5Myw3IEBAIFZtV3JpdGVNZW0xNiAoDQo+ID4+ICAgICAvLyAgIC8vIERvIGEg c2ltcGxlIHdyaXRlIGlmIGFsaWduZWQgICAvLy0gIGlmIChJU19BTElHTkVEIChBZGRyLCBzaXpl b2YNCj4gPj4gKFVJTlQxNikpKSB7KyAgaWYgKEFERFJFU1NfSVNfQUxJR05FRCAoQWRkciwgc2l6 ZW9mIChVSU5UMTYpKSkNCj4gPj4geyAgICAgKihVSU5UMTYgKikgQWRkciA9IERhdGE7ICAgfSBl bHNlIHsgICAgIC8vQEAgLTQ3NTYsNyArNDc1Niw3IEBADQo+ID4+IFZtV3JpdGVNZW0zMiAoDQo+ ID4+ICAgICAvLyAgIC8vIERvIGEgc2ltcGxlIHdyaXRlIGlmIGFsaWduZWQgICAvLy0gIGlmIChJ U19BTElHTkVEIChBZGRyLCBzaXplb2YNCj4gPj4gKFVJTlQzMikpKSB7KyAgaWYgKEFERFJFU1Nf SVNfQUxJR05FRCAoQWRkciwgc2l6ZW9mIChVSU5UMzIpKSkNCj4gPj4geyAgICAgKihVSU5UMzIg KikgQWRkciA9IERhdGE7ICAgfSBlbHNlIHsgICAgIC8vQEAgLTQ4MTksNyArNDgxOSw3IEBADQo+ ID4+IFZtV3JpdGVNZW02NCAoDQo+ID4+ICAgICAvLyAgIC8vIERvIGEgc2ltcGxlIHdyaXRlIGlm IGFsaWduZWQgICAvLy0gIGlmIChJU19BTElHTkVEIChBZGRyLCBzaXplb2YNCj4gPj4gKFVJTlQ2 NCkpKSB7KyAgaWYgKEFERFJFU1NfSVNfQUxJR05FRCAoQWRkciwgc2l6ZW9mIChVSU5UNjQpKSkN Cj4gPj4geyAgICAgKihVSU5UNjQgKikgQWRkciA9IERhdGE7ICAgfSBlbHNlIHsgICAgIC8vQEAg LTQ4ODUsNyArNDg4NSw3IEBADQo+ID4+IFZtV3JpdGVNZW1OICgNCj4gPj4gICAgIC8vICAgLy8g RG8gYSBzaW1wbGUgd3JpdGUgaWYgYWxpZ25lZCAgIC8vLSAgaWYgKElTX0FMSUdORUQgKEFkZHIs IHNpemVvZg0KPiAoVUlOVE4pKSkNCj4gPj4geysgIGlmIChBRERSRVNTX0lTX0FMSUdORUQgKEFk ZHIsIHNpemVvZiAoVUlOVE4pKSkgeyAgICAgKihVSU5UTiAqKSBBZGRyDQo+ID0NCj4gPj4gRGF0 YTsgICB9IGVsc2UgeyAgICAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgc2l6ZW9mIChVSU5UTikg LyBzaXplb2YgKFVJTlQzMik7DQo+ID4+IEluZGV4KyspIHtAQCAtNDk0OSw3ICs0OTQ5LDcgQEAg Vm1SZWFkSW1tZWQxNiAoDQo+ID4+ICAgICAvLyAgIC8vIFJlYWQgZGlyZWN0IGlmIGFsaWduZWQg ICAvLy0gIGlmIChJU19BTElHTkVEICgoVUlOVE4pIFZtUHRyLT5JcCArDQo+ID4+IE9mZnNldCwg c2l6ZW9mIChJTlQxNikpKSB7KyAgaWYgKEFERFJFU1NfSVNfQUxJR05FRCAoKFVJTlROKSBWbVB0 ci0+SXANCj4gKw0KPiA+PiBPZmZzZXQsIHNpemVvZiAoSU5UMTYpKSkgeyAgICAgcmV0dXJuICog KElOVDE2ICopIChWbVB0ci0+SXAgKyBPZmZzZXQpOyAgIH0gZWxzZQ0KPiA+PiB7ICAgICAvL0BA IC00OTkzLDcgKzQ5OTMsNyBAQCBWbVJlYWRJbW1lZDMyICgNCj4gPj4gICAgIC8vICAgLy8gUmVh ZCBkaXJlY3QgaWYgYWxpZ25lZCAgIC8vLSAgaWYgKElTX0FMSUdORUQgKChVSU5UTikgVm1QdHIt PklwICsNCj4gPj4gT2Zmc2V0LCBzaXplb2YgKFVJTlQzMikpKSB7KyAgaWYgKEFERFJFU1NfSVNf QUxJR05FRCAoKFVJTlROKSBWbVB0ci0NCj4gPklwICsNCj4gPj4gT2Zmc2V0LCBzaXplb2YgKFVJ TlQzMikpKSB7ICAgICByZXR1cm4gKiAoSU5UMzIgKikgKFZtUHRyLT5JcCArIE9mZnNldCk7ICAg fQ0KPiA+PiAvL0BAIC01MDMyLDcgKzUwMzIsNyBAQCBWbVJlYWRJbW1lZDY0ICgNCj4gPj4gICAg IC8vICAgLy8gUmVhZCBkaXJlY3QgaWYgYWxpZ25lZCAgIC8vLSAgaWYgKElTX0FMSUdORUQgKChV SU5UTikgVm1QdHItPklwICsNCj4gPj4gT2Zmc2V0LCBzaXplb2YgKFVJTlQ2NCkpKSB7KyAgaWYg KEFERFJFU1NfSVNfQUxJR05FRCAoKFVJTlROKSBWbVB0ci0NCj4gPklwICsNCj4gPj4gT2Zmc2V0 LCBzaXplb2YgKFVJTlQ2NCkpKSB7ICAgICByZXR1cm4gKiAoVUlOVDY0ICopIChWbVB0ci0+SXAg KyBPZmZzZXQpOyAgIH0NCj4gPj4gLy9AQCAtNTA2OSw3ICs1MDY5LDcgQEAgVm1SZWFkQ29kZTE2 ICgNCj4gPj4gICAgIC8vICAgLy8gUmVhZCBkaXJlY3QgaWYgYWxpZ25lZCAgIC8vLSAgaWYgKElT X0FMSUdORUQgKChVSU5UTikgVm1QdHItPklwICsNCj4gPj4gT2Zmc2V0LCBzaXplb2YgKFVJTlQx NikpKSB7KyAgaWYgKEFERFJFU1NfSVNfQUxJR05FRCAoKFVJTlROKSBWbVB0ci0NCj4gPklwICsN Cj4gPj4gT2Zmc2V0LCBzaXplb2YgKFVJTlQxNikpKSB7ICAgICByZXR1cm4gKiAoVUlOVDE2ICop IChWbVB0ci0+SXAgKyBPZmZzZXQpOyAgIH0NCj4gZWxzZQ0KPiA+PiB7ICAgICAvL0BAIC01MTEw LDcgKzUxMTAsNyBAQCBWbVJlYWRDb2RlMzIgKA0KPiA+PiAgICAgLy8gICAvLyBSZWFkIGRpcmVj dCBpZiBhbGlnbmVkICAgLy8tICBpZiAoSVNfQUxJR05FRCAoKFVJTlROKSBWbVB0ci0+SXAgKw0K PiA+PiBPZmZzZXQsIHNpemVvZiAoVUlOVDMyKSkpIHsrICBpZiAoQUREUkVTU19JU19BTElHTkVE ICgoVUlOVE4pIFZtUHRyLQ0KPiA+SXAgKw0KPiA+PiBPZmZzZXQsIHNpemVvZiAoVUlOVDMyKSkp IHsgICAgIHJldHVybiAqIChVSU5UMzIgKikgKFZtUHRyLT5JcCArIE9mZnNldCk7ICAgfQ0KPiA+ PiAvL0BAIC01MTQ3LDcgKzUxNDcsNyBAQCBWbVJlYWRDb2RlNjQgKA0KPiA+PiAgICAgLy8gICAv LyBSZWFkIGRpcmVjdCBpZiBhbGlnbmVkICAgLy8tICBpZiAoSVNfQUxJR05FRCAoKFVJTlROKSBW bVB0ci0+SXAgKw0KPiA+PiBPZmZzZXQsIHNpemVvZiAoVUlOVDY0KSkpIHsrICBpZiAoQUREUkVT U19JU19BTElHTkVEICgoVUlOVE4pIFZtUHRyLQ0KPiA+SXAgKw0KPiA+PiBPZmZzZXQsIHNpemVv ZiAoVUlOVDY0KSkpIHsgICAgIHJldHVybiAqIChVSU5UNjQgKikgKFZtUHRyLT5JcCArIE9mZnNl dCk7ICAgfQ0KPiA+PiAvL0BAIC01MjEwLDcgKzUyMTAsNyBAQCBWbVJlYWRNZW0xNiAoDQo+ID4+ ICAgICAvLyAgIC8vIFJlYWQgZGlyZWN0IGlmIGFsaWduZWQgICAvLy0gIGlmIChJU19BTElHTkVE IChBZGRyLCBzaXplb2YgKFVJTlQxNikpKQ0KPiB7Kw0KPiA+PiBpZiAoQUREUkVTU19JU19BTElH TkVEIChBZGRyLCBzaXplb2YgKFVJTlQxNikpKSB7ICAgICByZXR1cm4gKiAoVUlOVDE2ICopDQo+ ID4+IEFkZHI7ICAgfSAgIC8vQEAgLTUyNDMsNyArNTI0Myw3IEBAIFZtUmVhZE1lbTMyICgNCj4g Pj4gICAgIC8vICAgLy8gUmVhZCBkaXJlY3QgaWYgYWxpZ25lZCAgIC8vLSAgaWYgKElTX0FMSUdO RUQgKEFkZHIsIHNpemVvZiAoVUlOVDMyKSkpDQo+IHsrDQo+ID4+IGlmIChBRERSRVNTX0lTX0FM SUdORUQgKEFkZHIsIHNpemVvZiAoVUlOVDMyKSkpIHsgICAgIHJldHVybiAqIChVSU5UMzIgKikN Cj4gPj4gQWRkcjsgICB9ICAgLy9AQCAtNTI4MCw3ICs1MjgwLDcgQEAgVm1SZWFkTWVtNjQgKA0K PiA+PiAgICAgLy8gICAvLyBSZWFkIGRpcmVjdCBpZiBhbGlnbmVkICAgLy8tICBpZiAoSVNfQUxJ R05FRCAoQWRkciwgc2l6ZW9mIChVSU5UNjQpKSkNCj4geysNCj4gPj4gaWYgKEFERFJFU1NfSVNf QUxJR05FRCAoQWRkciwgc2l6ZW9mIChVSU5UNjQpKSkgeyAgICAgcmV0dXJuICogKFVJTlQ2NCAq KQ0KPiA+PiBBZGRyOyAgIH0gICAvL0BAIC01MzQ5LDcgKzUzNDksNyBAQCBWbVJlYWRNZW1OICgN Cj4gPj4gICAgIC8vICAgLy8gUmVhZCBkaXJlY3QgaWYgYWxpZ25lZCAgIC8vLSAgaWYgKElTX0FM SUdORUQgKEFkZHIsIHNpemVvZiAoVUlOVE4pKSkNCj4geysgIGlmDQo+ID4+IChBRERSRVNTX0lT X0FMSUdORUQgKEFkZHIsIHNpemVvZiAoVUlOVE4pKSkgeyAgICAgcmV0dXJuICogKFVJTlROICop DQo+ID4+IEFkZHI7ICAgfSAgIC8vZGlmZiAtLWdpdCBhL01kZU1vZHVsZVBrZy9CdXMvQXRhL0Fo Y2lQZWkvQWhjaVBlaS5oDQo+ID4+IGIvTWRlTW9kdWxlUGtnL0J1cy9BdGEvQWhjaVBlaS9BaGNp UGVpLmgNCj4gPj4gaW5kZXggMmJlNzgwNzZiZWU3Li41OWJiOWU1ZDBiY2EgMTAwNjQ0DQo+ID4+ IC0tLSBhL01kZU1vZHVsZVBrZy9CdXMvQXRhL0FoY2lQZWkvQWhjaVBlaS5oDQo+ID4+ICsrKyBi L01kZU1vZHVsZVBrZy9CdXMvQXRhL0FoY2lQZWkvQWhjaVBlaS5oDQo+ID4+IEBAIC0xNDUsNyAr MTQ1LDYgQEAgdHlwZWRlZiB1bmlvbiB7DQo+ID4+ICAgI2RlZmluZSBBSENJX1BPUlRfU0VSUiAg ICAgICAgICAgICAgICAgICAgICAgICAweDAwMzAgI2RlZmluZSBBSENJX1BPUlRfQ0kNCj4gPj4g MHgwMDM4IC0jZGVmaW5lIElTX0FMSUdORUQoYWRkciwgc2l6ZSkgICAgICAgICAgICAgICAgICgo KFVJTlROKSAoYWRkcikgJiAoc2l6ZSAtDQo+IDEpKQ0KPiA+PiA9PSAwKSAjZGVmaW5lIFRJTUVS X1BFUklPRF9TRUNPTkRTKFNlY29uZHMpDQo+ID4+IE11bHRVNjR4MzIoKFVJTlQ2NCkoU2Vjb25k cyksIDEwMDAwMDAwKSAgI3ByYWdtYSBwYWNrKDEpZGlmZiAtLWdpdA0KPiA+PiBhL01kZU1vZHVs ZVBrZy9CdXMvQXRhL0F0YUF0YXBpUGFzc1RocnUvQXRhQXRhcGlQYXNzVGhydS5oDQo+ID4+IGIv TWRlTW9kdWxlUGtnL0J1cy9BdGEvQXRhQXRhcGlQYXNzVGhydS9BdGFBdGFwaVBhc3NUaHJ1LmgN Cj4gPj4gaW5kZXggNWY1ODJiOWIzZTc2Li45OWJiZjdkMTRhMTcgMTAwNjQ0DQo+ID4+IC0tLSBh L01kZU1vZHVsZVBrZy9CdXMvQXRhL0F0YUF0YXBpUGFzc1RocnUvQXRhQXRhcGlQYXNzVGhydS5o DQo+ID4+ICsrKyBiL01kZU1vZHVsZVBrZy9CdXMvQXRhL0F0YUF0YXBpUGFzc1RocnUvQXRhQXRh cGlQYXNzVGhydS5oDQo+ID4+IEBAIC0xNDcsOCArMTQ3LDYgQEAgc3RydWN0IF9BVEFfTk9OQkxP Q0tfVEFTSyB7DQo+ID4+ICAgI2RlZmluZSBBVEFfQVRBUElfVElNRU9VVCAgICAgICAgICAgRUZJ X1RJTUVSX1BFUklPRF9TRUNPTkRTKDMpDQo+ID4+ICNkZWZpbmUgQVRBX1NQSU5VUF9USU1FT1VU ICAgICAgICAgIEVGSV9USU1FUl9QRVJJT0RfU0VDT05EUygxMCkgLQ0KPiA+PiAjZGVmaW5lIElT X0FMSUdORUQoYWRkciwgc2l6ZSkgICAgICAoKChVSU5UTikgKGFkZHIpICYgKHNpemUgLSAxKSkg PT0gMCktDQo+ID4+ICNkZWZpbmUgQVRBX1BBU1NfVEhSVV9QUklWQVRFX0RBVEFfRlJPTV9USElT KGEpIFwgICBDUiAoYSwgXA0KPiA+PiBBVEFfQVRBUElfUEFTU19USFJVX0lOU1RBTkNFLCBcZGlm ZiAtLWdpdA0KPiA+PiBhL01kZU1vZHVsZVBrZy9CdXMvQXRhL0F0YUJ1c0R4ZS9BdGFCdXMuaA0K PiA+PiBiL01kZU1vZHVsZVBrZy9CdXMvQXRhL0F0YUJ1c0R4ZS9BdGFCdXMuaA0KPiA+PiBpbmRl eCBhNWE4NjUyMDk5NDIuLjE3MmQyZDYxZWE2YyAxMDA2NDQNCj4gPj4gLS0tIGEvTWRlTW9kdWxl UGtnL0J1cy9BdGEvQXRhQnVzRHhlL0F0YUJ1cy5oDQo+ID4+ICsrKyBiL01kZU1vZHVsZVBrZy9C dXMvQXRhL0F0YUJ1c0R4ZS9BdGFCdXMuaA0KPiA+PiBAQCAtNzYsNyArNzYsNiBAQA0KPiA+PiAg ICNkZWZpbmUgQVRBX1RBU0tfU0lHTkFUVVJFICAgICAgICAgICAgICAgIFNJR05BVFVSRV8zMiAo J0EnLCAnVCcsICdTJywgJ0snKQ0KPiA+PiAjZGVmaW5lIEFUQV9ERVZJQ0VfU0lHTkFUVVJFICAg ICAgICAgICAgICBTSUdOQVRVUkVfMzIgKCdBJywgJ0InLCAnSScsICdEJykNCj4gPj4gI2RlZmlu ZSBBVEFfU1VCX1RBU0tfU0lHTkFUVVJFICAgICAgICAgICAgU0lHTkFUVVJFXzMyICgnQScsICdT JywgJ1QnLCAnUycpLQ0KPiA+PiAjZGVmaW5lIElTX0FMSUdORUQoYWRkciwgc2l6ZSkgICAgICAg ICAgICAoKChVSU5UTikgKGFkZHIpICYgKHNpemUgLSAxKSkgPT0gMCkNCj4gLy8gLy8NCj4gPj4g QVRBIGJ1cyBkYXRhIHN0cnVjdHVyZSBmb3IgQVRBIGNvbnRyb2xsZXJkaWZmIC0tZ2l0DQo+ID4+ IGEvTWRlTW9kdWxlUGtnL0J1cy9TY3NpL1Njc2lEaXNrRHhlL1Njc2lEaXNrLmgNCj4gPj4gYi9N ZGVNb2R1bGVQa2cvQnVzL1Njc2kvU2NzaURpc2tEeGUvU2NzaURpc2suaA0KPiA+PiBpbmRleCBl ZDliYmQ2ZjhiYTguLjg2YWQyN2IzMjkyZiAxMDA2NDQNCj4gPj4gLS0tIGEvTWRlTW9kdWxlUGtn L0J1cy9TY3NpL1Njc2lEaXNrRHhlL1Njc2lEaXNrLmgNCj4gPj4gKysrIGIvTWRlTW9kdWxlUGtn L0J1cy9TY3NpL1Njc2lEaXNrRHhlL1Njc2lEaXNrLmgNCj4gPj4gQEAgLTM3LDkgKzM3LDcgQEAg U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPj4gICAjaW5j bHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9TY3NpLmg+ICNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJk L0F0YXBpLmg+DQo+IC0NCj4gPj4gI2RlZmluZSBJU19ERVZJQ0VfRklYRUQoYSkgICAgICAgIChh KS0+Rml4ZWREZXZpY2UgPyAxIDogMC0tI2RlZmluZQ0KPiA+PiBJU19BTElHTkVEKGFkZHIsIHNp emUpICAgICgoKFVJTlROKSAoYWRkcikgJiAoc2l6ZSAtIDEpKSA9PSAwKSsjZGVmaW5lDQo+ID4+ IElTX0RFVklDRV9GSVhFRChhKSAgICAgICAgICAoYSktPkZpeGVkRGV2aWNlID8gMSA6IDAgICNk ZWZpbmUNCj4gVUZTX1dMVU5fUlBNQg0KPiA+PiAweEM0IGRpZmYgLS1naXQgYS9NZGVNb2R1bGVQ a2cvQnVzL1Vmcy9VZnNCbG9ja0lvUGVpL1Vmc0Jsb2NrSW9QZWkuaA0KPiA+PiBiL01kZU1vZHVs ZVBrZy9CdXMvVWZzL1Vmc0Jsb2NrSW9QZWkvVWZzQmxvY2tJb1BlaS5oDQo+ID4+IGluZGV4IDZl MjMwNWFhMmJjMi4uNzMwNjEwNmE0NDU0IDEwMDY0NA0KPiA+PiAtLS0gYS9NZGVNb2R1bGVQa2cv QnVzL1Vmcy9VZnNCbG9ja0lvUGVpL1Vmc0Jsb2NrSW9QZWkuaA0KPiA+PiArKysgYi9NZGVNb2R1 bGVQa2cvQnVzL1Vmcy9VZnNCbG9ja0lvUGVpL1Vmc0Jsb2NrSW9QZWkuaA0KPiA+PiBAQCAtMTMz LDggKzEzMyw2IEBAIHR5cGVkZWYgc3RydWN0IF9VRlNfUEVJTV9IQ19QUklWQVRFX0RBVEEgew0K PiA+PiAgICAjZGVmaW5lIFJPVU5EVVA4KHgpICgoKHgpICUgOCA9PSAwKSA/ICh4KSA6ICgoeCkg LyA4ICsgMSkgKiA4KSAtI2RlZmluZQ0KPiA+PiBJU19BTElHTkVEKGFkZHIsIHNpemUpICAgICAg KCgoVUlOVE4pIChhZGRyKSAmIChzaXplIC0gMSkpID09IDApLSAjZGVmaW5lDQo+ID4+IEdFVF9V RlNfUEVJTV9IQ19QUklWQVRFX0RBVEFfRlJPTV9USElTKGEpIENSIChhLA0KPiA+PiBVRlNfUEVJ TV9IQ19QUklWQVRFX0RBVEEsIEJsa0lvUHBpLCBVRlNfUEVJTV9IQ19TSUcpICNkZWZpbmUNCj4g Pj4gR0VUX1VGU19QRUlNX0hDX1BSSVZBVEVfREFUQV9GUk9NX1RISVMyKGEpIENSIChhLA0KPiA+ PiBVRlNfUEVJTV9IQ19QUklWQVRFX0RBVEEsIEJsa0lvMlBwaSwgVUZTX1BFSU1fSENfU0lHKSAj ZGVmaW5lDQo+ID4+IEdFVF9VRlNfUEVJTV9IQ19QUklWQVRFX0RBVEFfRlJPTV9USElTX05PVElG WShhKSBDUiAoYSwNCj4gPj4gVUZTX1BFSU1fSENfUFJJVkFURV9EQVRBLCBFbmRPZlBlaU5vdGlm eUxpc3QsDQo+IFVGU19QRUlNX0hDX1NJRylkaWZmDQo+ID4+IC0tZ2l0IGEvTWRlTW9kdWxlUGtn L0J1cy9VZnMvVWZzUGFzc1RocnVEeGUvVWZzUGFzc1RocnUuaA0KPiA+PiBiL01kZU1vZHVsZVBr Zy9CdXMvVWZzL1Vmc1Bhc3NUaHJ1RHhlL1Vmc1Bhc3NUaHJ1LmgNCj4gPj4gaW5kZXggNzliODZm N2U2YjNkLi4xMWI1YjE5N2I2N2EgMTAwNjQ0DQo+ID4+IC0tLSBhL01kZU1vZHVsZVBrZy9CdXMv VWZzL1Vmc1Bhc3NUaHJ1RHhlL1Vmc1Bhc3NUaHJ1LmgNCj4gPj4gKysrIGIvTWRlTW9kdWxlUGtn L0J1cy9VZnMvVWZzUGFzc1RocnVEeGUvVWZzUGFzc1RocnUuaA0KPiA+PiBAQCAtMTA1LDggKzEw NSw2IEBAIHR5cGVkZWYgc3RydWN0IHsNCj4gPj4gICAgI2RlZmluZSBST1VORFVQOCh4KSAoKCh4 KSAlIDggPT0gMCkgPyAoeCkgOiAoKHgpIC8gOCArIDEpICogOCkgLSNkZWZpbmUNCj4gPj4gSVNf QUxJR05FRChhZGRyLCBzaXplKSAgICAgICAgKCgoVUlOVE4pIChhZGRyKSAmIChzaXplIC0gMSkp ID09IDApLSAjZGVmaW5lDQo+ID4+IFVGU19QQVNTX1RIUlVfUFJJVkFURV9EQVRBX0ZST01fVEhJ UyhhKSBcICAgQ1IgKGEsIFwNCj4gPj4gVUZTX1BBU1NfVEhSVV9QUklWQVRFX0RBVEEsIFxkaWZm IC0tZ2l0DQo+ID4+IGEvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9FYmNEeGUvRWJjRXhlY3V0ZS5o DQo+ID4+IGIvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9FYmNEeGUvRWJjRXhlY3V0ZS5oDQo+ID4+ IGluZGV4IDFjYjY4YmM1Mzg1YS4uODU4Y2E3ZmM4NmFlIDEwMDY0NA0KPiA+PiAtLS0gYS9NZGVN b2R1bGVQa2cvVW5pdmVyc2FsL0ViY0R4ZS9FYmNFeGVjdXRlLmgNCj4gPj4gKysrIGIvTWRlTW9k dWxlUGtnL1VuaXZlcnNhbC9FYmNEeGUvRWJjRXhlY3V0ZS5oDQo+ID4+IEBAIC0xNCw4ICsxNCw3 IEBAIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4+ICAg Ly8gLy8gTWFjcm9zIHRvIGNoZWNrIGFuZCBzZXQgYWxpZ25tZW50IC8vLSNkZWZpbmUNCj4gPj4g QVNTRVJUX0FMSUdORUQoYWRkciwNCj4gPj4gc2l6ZSkgIEFTU0VSVCAoISgoVUlOVDMyKSAoYWRk cikgJiAoc2l6ZSAtIDEpKSktI2RlZmluZSBJU19BTElHTkVEKGFkZHIsDQo+ID4+IHNpemUpICAg ICAgISgoVUlOVDMyKSAoYWRkcikgJiAoc2l6ZSAtIDEpKSsjZGVmaW5lIEFTU0VSVF9BTElHTkVE KGFkZHIsDQo+IHNpemUpDQo+ID4+IEFTU0VSVCAoSVNfQUxJR05FRCAoYWRkciwgc2l6ZSkpICAv LyAvLyBEZWJ1ZyBtYWNyb2RpZmYgLS1naXQNCj4gPj4gYS9NZGVQa2cvSW5jbHVkZS9CYXNlLmgg Yi9NZGVQa2cvSW5jbHVkZS9CYXNlLmggaW5kZXgNCj4gPj4gMmRhMDhiMGM3ODdmLi4zMmQwZTUx MmUwNWYgMTAwNjQ0DQo+ID4+IC0tLSBhL01kZVBrZy9JbmNsdWRlL0Jhc2UuaA0KPiA+PiArKysg Yi9NZGVQa2cvSW5jbHVkZS9CYXNlLmgNCj4gPj4gQEAgLTc4OSw2ICs3ODksMzUgQEAgdHlwZWRl ZiBVSU5UTiAgKkJBU0VfTElTVDsNCj4gPj4gICAjZGVmaW5lIE9GRlNFVF9PRihUWVBFLCBGaWVs ZCkgKChVSU5UTikgJigoKFRZUEUgKikwKS0+RmllbGQpKQ0KPiA+PiAjZW5kaWYNCj4gPj4gKy8q KisgIFJldHVybnMgdGhlIGFsaWdubWVudCByZXF1aXJlbWVudCBvZiBhIHR5cGUuKysgIEBwYXJh bSAgIFRZUEUNCj4gVGhlDQo+ID4+IG5hbWUgb2YgdGhlIHR5cGUgdG8gcmV0cmlldmUgdGhlIGFs aWdubWVudCByZXF1aXJlbWVudCBvZi4rKyAgQHJldHVybg0KPiA+PiBBbGlnbm1lbnQgcmVxdWly ZW1lbnQsIGluIEJ5dGVzLCBvZiBUWVBFLisqKi8rI2lmIGRlZmluZWQoX19HTlVDX18pDQo+ID4+ IHx8DQo+ID4+IGRlZmluZWQoX19jbGFuZ19fKSB8fCAoZGVmaW5lZChfTVNDX1ZFUikgJiYgX01T Q19WRVIgPj0gMTkwMCkrDQo+IC8vKw0KPiA+PiAvLyBBbGwgc3VwcG9ydGVkIHZlcnNpb25zIG9m IEdDQyBhbmQgQ2xhbmcsIGFzIHdlbGwgYXMgTVNWQyAyMDE1IGFuZA0KPiA+PiBsYXRlciwrIC8v IHN1cHBvcnQgdGhlIHN0YW5kYXJkIG9wZXJhdG9yIF9BbGlnbm9mLisgIC8vKyAgI2RlZmluZQ0K PiA+PiBBTElHTk9GKFRZUEUpIF9BbGlnbm9mIChUWVBFKSsjZWxpZiBkZWZpbmVkKF9NU0NfVkVS KSsgIC8vKyAgLy8NCj4gPj4gRWFybGllciB2ZXJzaW9ucyBvZiBNU1ZDLCBhdCBsZWFzdCBNU1ZD IDIwMDggYW5kIGxhdGVyLCBzdXBwb3J0IHRoZSsNCj4gPj4gLy8gdmVuZG9yLWV4dGVuc2lvbiBf X2FsaWdub2YuKyAvLysgICNkZWZpbmUgQUxJR05PRihUWVBFKSAgX19hbGlnbm9mDQo+ID4+IChU WVBFKSsjZWxzZSsgIC8vKyAgLy8gRm9yIGNvbXBpbGVycyB0aGF0IGRvIG5vdCBzdXBwb3J0IGlu YnVpbHQNCj4gPj4gYWxpZ25vZiBvcGVyYXRvcnMsIHVzZSBPRkZTRVRfT0YuKyAgLy8gQ0hBUjgg aXMga25vd24gdG8gaGF2ZSBib3RoIGENCj4gPj4gc2l6ZSBhbmQgYW4gYWxpZ25tZW50IHJlcXVp cmVtZW50IG9mIDEgQnl0ZS4rICAvLyBBcyBzdWNoLCBBIG11c3QgYmUNCj4gPj4gbG9jYXRlZCBl eGFjdGx5IGF0IHRoZSBvZmZzZXQgZXF1YWwgdG8gaXRzIGFsaWdubWVudCsgIC8vIHJlcXVpcmVt ZW50LisgIC8vKw0KPiAjZGVmaW5lIEFMSUdOT0YoVFlQRSkgT0ZGU0VUX09GIChzdHJ1Y3QgeyBD SEFSOCBDOw0KPiA+PiBUWVBFIEE7IH0sIEEpKyNlbmRpZisgLyoqICAgUG9ydGFibGUgZGVmaW5p dGlvbiBmb3IgY29tcGlsZSB0aW1lIGFzc2VydGlvbnMuDQo+ID4+IEVxdWl2YWxlbnQgdG8gQzEx IHN0YXRpY19hc3NlcnQgbWFjcm8gZnJvbSBhc3NlcnQuaC5AQCAtODI0LDYgKzg1MywyMQ0KPiA+ PiBAQCBTVEFUSUNfQVNTRVJUIChzaXplb2YgKENIQVIxNikgID09IDIsICJzaXplb2YgKENIQVIx NikgZG9lcyBub3QNCj4gPj4gbWVldCBVRUZJIFNwZWNpZg0KPiA+PiAgIFNUQVRJQ19BU1NFUlQg KHNpemVvZiAoTCdBJykgICAgPT0gMiwgInNpemVvZiAoTCdBJykgZG9lcyBub3QgbWVldCBVRUZJ DQo+ID4+IFNwZWNpZmljYXRpb24gRGF0YSBUeXBlIHJlcXVpcmVtZW50cyIpOyBTVEFUSUNfQVNT RVJUIChzaXplb2YgKEwiQSIpDQo+ID09IDQsDQo+ID4+ICJzaXplb2YgKExcIkFcIikgZG9lcyBu b3QgbWVldCBVRUZJIFNwZWNpZmljYXRpb24gRGF0YSBUeXBlDQo+ID4+IHJlcXVpcmVtZW50cyIp Ow0KPiA+PiArU1RBVElDX0FTU0VSVCAoQUxJR05PRiAoQk9PTEVBTikgPT0gc2l6ZW9mIChCT09M RUFOKSwgIkFsaWdubWVudA0KPiBvZg0KPiA+PiBCT09MRUFOIGRvZXMgbm90IG1lZXQgVUVGSSBT cGVjaWZpY2F0aW9uIERhdGEgVHlwZQ0KPiA+PiByZXF1aXJlbWVudHMiKTsrU1RBVElDX0FTU0VS VCAoQUxJR05PRiAoSU5UOCkgICAgPT0gc2l6ZW9mIChJTlQ4KSwNCj4gPj4gIkFsaWdubWVudCBv ZiBJTlQ4IGRvZXMgbm90IG1lZXQgVUVGSSBTcGVjaWZpY2F0aW9uIERhdGEgVHlwZQ0KPiA+PiBy ZXF1aXJlbWVudHMiKTsrU1RBVElDX0FTU0VSVCAoQUxJR05PRiAoVUlOVDgpICAgPT0gc2l6ZW9m IChVSU5UOCksDQo+ID4+ICJBbGlnbm1lbnQgb2YgSU5UMTYgZG9lcyBub3QgbWVldCBVRUZJIFNw ZWNpZmljYXRpb24gRGF0YSBUeXBlDQo+ID4+IHJlcXVpcmVtZW50cyIpOytTVEFUSUNfQVNTRVJU IChBTElHTk9GIChJTlQxNikgICA9PSBzaXplb2YgKElOVDE2KSwNCj4gPj4gIkFsaWdubWVudCBv ZiBJTlQxNiBkb2VzIG5vdCBtZWV0IFVFRkkgU3BlY2lmaWNhdGlvbiBEYXRhIFR5cGUNCj4gPj4g cmVxdWlyZW1lbnRzIik7K1NUQVRJQ19BU1NFUlQgKEFMSUdOT0YgKFVJTlQxNikgID09IHNpemVv ZiAoVUlOVDE2KSwNCj4gPj4gIkFsaWdubWVudCBvZiBVSU5UMTYgZG9lcyBub3QgbWVldCBVRUZJ IFNwZWNpZmljYXRpb24gRGF0YSBUeXBlDQo+ID4+IHJlcXVpcmVtZW50cyIpOytTVEFUSUNfQVNT RVJUIChBTElHTk9GIChJTlQzMikgICA9PSBzaXplb2YgKElOVDMyKSwNCj4gPj4gIkFsaWdubWVu dCBvZiBJTlQzMiBkb2VzIG5vdCBtZWV0IFVFRkkgU3BlY2lmaWNhdGlvbiBEYXRhIFR5cGUNCj4g Pj4gcmVxdWlyZW1lbnRzIik7K1NUQVRJQ19BU1NFUlQgKEFMSUdOT0YgKFVJTlQzMikgID09IHNp emVvZiAoVUlOVDMyKSwNCj4gPj4gIkFsaWdubWVudCBvZiBVSU5UMzIgZG9lcyBub3QgbWVldCBV RUZJIFNwZWNpZmljYXRpb24gRGF0YSBUeXBlDQo+ID4+IHJlcXVpcmVtZW50cyIpOytTVEFUSUNf QVNTRVJUIChBTElHTk9GIChJTlQ2NCkgICA9PSBzaXplb2YgKElOVDY0KSwNCj4gPj4gIkFsaWdu bWVudCBvZiBJTlQ2NCBkb2VzIG5vdCBtZWV0IFVFRkkgU3BlY2lmaWNhdGlvbiBEYXRhIFR5cGUN Cj4gPj4gcmVxdWlyZW1lbnRzIik7K1NUQVRJQ19BU1NFUlQgKEFMSUdOT0YgKFVJTlQ2NCkgID09 IHNpemVvZiAoVUlOVDY0KSwNCj4gPj4gIkFsaWdubWVudCBvZiBVSU5UNjQgZG9lcyBub3QgbWVl dCBVRUZJIFNwZWNpZmljYXRpb24gRGF0YSBUeXBlDQo+ID4+IHJlcXVpcmVtZW50cyIpOytTVEFU SUNfQVNTRVJUIChBTElHTk9GIChDSEFSOCkgICA9PSBzaXplb2YgKENIQVI4KSwNCj4gPj4gIkFs aWdubWVudCBvZiBDSEFSOCBkb2VzIG5vdCBtZWV0IFVFRkkgU3BlY2lmaWNhdGlvbiBEYXRhIFR5 cGUNCj4gPj4gcmVxdWlyZW1lbnRzIik7K1NUQVRJQ19BU1NFUlQgKEFMSUdOT0YgKENIQVIxNikg ID09IHNpemVvZiAoQ0hBUjE2KSwNCj4gPj4gIkFsaWdubWVudCBvZiBDSEFSMTYgZG9lcyBub3Qg bWVldCBVRUZJIFNwZWNpZmljYXRpb24gRGF0YSBUeXBlDQo+ID4+IHJlcXVpcmVtZW50cyIpOytT VEFUSUNfQVNTRVJUIChBTElHTk9GIChJTlROKSAgICA9PSBzaXplb2YgKElOVE4pLA0KPiA+PiAi QWxpZ25tZW50IG9mIElOVE4gZG9lcyBub3QgbWVldCBVRUZJIFNwZWNpZmljYXRpb24gRGF0YSBU eXBlDQo+ID4+IHJlcXVpcmVtZW50cyIpOytTVEFUSUNfQVNTRVJUIChBTElHTk9GIChVSU5UTikg ICA9PSBzaXplb2YgKFVJTlROKSwNCj4gPj4gIkFsaWdubWVudCBvZiBVSU5UTiBkb2VzIG5vdCBt ZWV0IFVFRkkgU3BlY2lmaWNhdGlvbiBEYXRhIFR5cGUNCj4gPj4gcmVxdWlyZW1lbnRzIik7K1NU QVRJQ19BU1NFUlQgKEFMSUdOT0YgKFZPSUQgKikgID09IHNpemVvZiAoVk9JRCAqKSwNCj4gPj4g IkFsaWdubWVudCBvZiBWT0lEICogZG9lcyBub3QgbWVldCBVRUZJIFNwZWNpZmljYXRpb24gRGF0 YSBUeXBlDQo+ID4+IHJlcXVpcmVtZW50cyIpOysgLy8gLy8gVGhlIGZvbGxvd2luZyB0aHJlZSBl bnVtIHR5cGVzIGFyZSB1c2VkIHRvDQo+ID4+IHZlcmlmeSB0aGF0IHRoZSBjb21waWxlciAvLyBj b25maWd1cmF0aW9uIGZvciBlbnVtIHR5cGVzIGlzIGNvbXBsaWFudA0KPiA+PiB3aXRoIFNlY3Rp b24NCj4gPj4gMi4zLjEgb2YgdGhlQEAgLTg0Nyw2ICs4OTEsMTAgQEAgU1RBVElDX0FTU0VSVCAo c2l6ZW9mDQo+ID4+IChfX1ZFUklGWV9VSU5UOF9FTlVNX1NJWkUpID09IDQsICJTaXplIG9mIGVu dW0gZG9lcyBub3QgbWUNCj4gPj4gICBTVEFUSUNfQVNTRVJUIChzaXplb2YgKF9fVkVSSUZZX1VJ TlQxNl9FTlVNX1NJWkUpID09IDQsICJTaXplIG9mDQo+ID4+IGVudW0gZG9lcyBub3QgbWVldCBV RUZJIFNwZWNpZmljYXRpb24gRGF0YSBUeXBlIHJlcXVpcmVtZW50cyIpOw0KPiA+PiBTVEFUSUNf QVNTRVJUIChzaXplb2YgKF9fVkVSSUZZX1VJTlQzMl9FTlVNX1NJWkUpID09IDQsICJTaXplIG9m DQo+IGVudW0NCj4gPj4gZG9lcyBub3QgbWVldCBVRUZJIFNwZWNpZmljYXRpb24gRGF0YSBUeXBl IHJlcXVpcmVtZW50cyIpOw0KPiA+PiArU1RBVElDX0FTU0VSVCAoQUxJR05PRg0KPiA+PiAoX19W RVJJRllfVUlOVDhfRU5VTV9TSVpFKSAgPT0gc2l6ZW9mDQo+IChfX1ZFUklGWV9VSU5UOF9FTlVN X1NJWkUpLA0KPiA+PiAiQWxpZ25tZW50IG9mIGVudW0gZG9lcyBub3QgbWVldCBVRUZJIFNwZWNp ZmljYXRpb24gRGF0YSBUeXBlDQo+ID4+IHJlcXVpcmVtZW50cyIpOytTVEFUSUNfQVNTRVJUIChB TElHTk9GDQo+IChfX1ZFUklGWV9VSU5UMTZfRU5VTV9TSVpFKSA9PQ0KPiA+PiBzaXplb2YgKF9f VkVSSUZZX1VJTlQxNl9FTlVNX1NJWkUpLCAiQWxpZ25tZW50IG9mIGVudW0gZG9lcyBub3QNCj4g bWVldA0KPiA+PiBVRUZJIFNwZWNpZmljYXRpb24gRGF0YSBUeXBlIHJlcXVpcmVtZW50cyIpOytT VEFUSUNfQVNTRVJUIChBTElHTk9GDQo+ID4+IChfX1ZFUklGWV9VSU5UMzJfRU5VTV9TSVpFKSA9 PSBzaXplb2YNCj4gKF9fVkVSSUZZX1VJTlQzMl9FTlVNX1NJWkUpLA0KPiA+PiAiQWxpZ25tZW50 IG9mIGVudW0gZG9lcyBub3QgbWVldCBVRUZJDQo+ID4+IFNwZWNpZmljYXRpb24gRGF0YSBUeXBl IHJlcXVpcmVtZW50cyIpOysgLyoqICAgTWFjcm8gdGhhdCByZXR1cm5zIGENCj4gcG9pbnRlcg0K PiA+PiB0byB0aGUgZGF0YSBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucyBhIHNwZWNpZmllZCBmaWVs ZCBvZiAgIHRoYXQgZGF0YSBzdHJ1Y3R1cmUuDQo+ID4+IFRoaXMgaXMgYSBsaWdodHdlaWdodCBt ZXRob2QgdG8gaGlkZSBpbmZvcm1hdGlvbiBieSBwbGFjaW5nIGFAQA0KPiA+PiAtODY4LDYNCj4g Pj4gKzkxNiw0NiBAQCBTVEFUSUNfQVNTRVJUIChzaXplb2YgKF9fVkVSSUZZX1VJTlQzMl9FTlVN X1NJWkUpID09DQo+IDQsDQo+ID4+ICJTaXplIG9mIGVudW0gZG9lcyBub3QgbQ0KPiA+PiAgICoq LyAjZGVmaW5lIEJBU0VfQ1IoUmVjb3JkLCBUWVBFLCBGaWVsZCkgICgoVFlQRSAqKSAoKENIQVI4 ICopDQo+ID4+IChSZWNvcmQpIC0gT0ZGU0VUX09GIChUWVBFLCBGaWVsZCkpKSArLyoqKyAgQ2hl Y2tzIHdoZXRoZXIgYSB2YWx1ZSBpcyBhDQo+IHBvd2VyIG9mDQo+ID4+IHR3by4rKyAgQHBhcmFt ICAgVmFsdWUgIFRoZSB2YWx1ZSB0byBjaGVjay4rKyAgQHJldHVybiAgV2hldGhlciBWYWx1ZQ0K PiBpcyBhDQo+ID4+IHBvd2VyIG9mIHR3by4rKiovKyNkZWZpbmUgSVNfUE9XMihWYWx1ZSkgICgo VmFsdWUpICE9IDBVICYmICgoVmFsdWUpDQo+ID4+ICYNCj4gPj4gKChWYWx1ZSkgLSAxVSkpID09 IDBVKSsrLyoqKyAgQ2hlY2tzIHdoZXRoZXIgYSB2YWx1ZSBpcyBhbGlnbmVkIGJ5IGENCj4gPj4g c3BlY2lmaWVkIGFsaWdubWVudC4rKyAgQHBhcmFtICAgVmFsdWUgICAgICBUaGUgdmFsdWUgdG8g Y2hlY2suKyAgQHBhcmFtDQo+ID4+IEFsaWdubWVudCAgVGhlIGFsaWdubWVudCBib3VuZGFyeSB1 c2VkIHRvIGNoZWNrIGFnYWluc3QuKysgIEByZXR1cm4NCj4gPj4gV2hldGhlciBWYWx1ZSBpcyBh bGlnbmVkIGJ5IEFsaWdubWVudC4rKiovKyNkZWZpbmUgSVNfQUxJR05FRChWYWx1ZSwNCj4gPj4g QWxpZ25tZW50KSAgKCgoVmFsdWUpICYgKChBbGlnbm1lbnQpIC0gMVUpKSA9PSAwVSkrKy8qKisg IENoZWNrcw0KPiB3aGV0aGVyIGENCj4gPj4gcG9pbnRlciBvciBhZGRyZXNzIGlzIGFsaWduZWQg YnkgYSBzcGVjaWZpZWQgYWxpZ25tZW50LisrICBAcGFyYW0NCj4gQWRkcmVzcw0KPiA+PiBUaGUg cG9pbnRlciBvciBhZGRyZXNzIHRvIGNoZWNrLisgIEBwYXJhbSAgIEFsaWdubWVudCAgVGhlIGFs aWdubWVudA0KPiA+PiBib3VuZGFyeSB1c2VkIHRvIGNoZWNrIGFnYWluc3QuKysgIEByZXR1cm4g IFdoZXRoZXIgQWRkcmVzcyBpcw0KPiA+PiBhbGlnbmVkIGJ5IEFsaWdubWVudC4rKiovKyNkZWZp bmUgQUREUkVTU19JU19BTElHTkVEKEFkZHJlc3MsDQo+ID4+IEFsaWdubWVudCkgSVNfQUxJR05F RCAoKFVJTlROKSAoQWRkcmVzcyksIEFsaWdubWVudCkrKy8qKisNCj4gPj4gRGV0ZXJtaW5lcyB0 aGUgYWRkZW5kIHRvIGFkZCB0byBhIHZhbHVlIHRvIHJvdW5kIGl0IHVwIHRvIHRoZSBuZXh0DQo+ IGJvdW5kYXJ5IG9mKyAgYSBzcGVjaWZpZWQNCj4gPj4gYWxpZ25tZW50LisrICBAcGFyYW0gICBW YWx1ZSAgICAgIFRoZSB2YWx1ZSB0byByb3VuZCB1cC4rICBAcGFyYW0NCj4gPj4gQWxpZ25tZW50 ICBUaGUgYWxpZ25tZW50IGJvdW5kYXJ5IHVzZWQgdG8gcmV0dXJuIHRoZSBhZGRlbmQuKysNCj4g Pj4gQHJldHVybiBBZGRlbmQgdG8gcm91bmQgVmFsdWUgdXAgdG8gYWxpZ25tZW50IGJvdW5kYXJ5 DQo+ID4+IEFsaWdubWVudC4rKiovKyNkZWZpbmUgQUxJR05fVkFMVUVfQURERU5EKFZhbHVlLCBB bGlnbm1lbnQpDQo+ICgoKEFsaWdubWVudCkgLSAoVmFsdWUpKSAmDQo+ID4+ICgoQWxpZ25tZW50 KSAtIDFVKSkrIC8qKiAgIFJvdW5kcyBhIHZhbHVlIHVwIHRvIHRoZSBuZXh0IGJvdW5kYXJ5IHVz aW5nIGENCj4gPj4gc3BlY2lmaWVkIGFsaWdubWVudC4gQEAgLTg4MCw3ICs5NjgsNyBAQCBTVEFU SUNfQVNTRVJUIChzaXplb2YNCj4gPj4gKF9fVkVSSUZZX1VJTlQzMl9FTlVNX1NJWkUpID09IDQs ICJTaXplIG9mIGVudW0gZG9lcyBub3QgbQ0KPiA+PiAgICAgQHJldHVybiAgQSB2YWx1ZSB1cCB0 byB0aGUgbmV4dCBib3VuZGFyeS4gICoqLy0jZGVmaW5lDQo+ID4+IEFMSUdOX1ZBTFVFKFZhbHVl LCBBbGlnbm1lbnQpICgoVmFsdWUpICsgKCgoQWxpZ25tZW50KSAtIChWYWx1ZSkpICYNCj4gPj4g KChBbGlnbm1lbnQpIC0gMSkpKSsjZGVmaW5lIEFMSUdOX1ZBTFVFKFZhbHVlLCBBbGlnbm1lbnQp ICgoVmFsdWUpICsNCj4gPj4gQUxJR05fVkFMVUVfQURERU5EIChWYWx1ZSwgQWxpZ25tZW50KSkg IC8qKiAgIEFkanVzdCBhIHBvaW50ZXIgYnkNCj4gYWRkaW5nDQo+ID4+IHRoZSBtaW5pbXVtIG9m ZnNldCByZXF1aXJlZCBmb3IgaXQgdG8gYmUgYWxpZ25lZCBvbi0tDQo+ID4+IDIuMzEuMQ0KPiA+ DQo+ID4NCj4gPg0KPiA+DQo+ID4NCj4gDQo+IA0KPiANCj4gDQo+IA0KDQo=