From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by sourceware.org (Postfix) with ESMTPS id 1E8983858D1E for ; Wed, 17 May 2023 15:18:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 1E8983858D1E Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1684336696; x=1715872696; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=JHR2pJAd1FkVYgoDqJuGYOMw9HGy/FQDBW7gDW1K6D4=; b=LzMGnAwELAxDDJEWKllX8iTPZtbvZl2muOqbq+jpCEjaCEC9OVZmzPzs qFVaOsJtR7uuKb4yQtgnXIG2WUL5H6zlFVMzaIyROxRf8lTSTpeGaZHvs 0NlHBtVl5MMtvLM8kFVu2N/txMQv76Tsi1Kt2GBHoBNg1YkaiYC8Wmqg+ gNYhGOrFkoLxfTMwZ9RF/FpwGVyEgVHD011Okgn9UF6mLO0fNkxQNn4xn yLFbeRvW7bT7CzkvJFVz52kB1vd26PIwTElfORnBTlIxMJxX10cb89kHx kl1Jk4PwNF9n+sBiOB0vi8OP1yW94ktVemx60jc54J+eBDmRJ40pnjgfO g==; X-IronPort-AV: E=McAfee;i="6600,9927,10713"; a="341176030" X-IronPort-AV: E=Sophos;i="5.99,282,1677571200"; d="scan'208";a="341176030" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 May 2023 08:18:15 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10713"; a="766817281" X-IronPort-AV: E=Sophos;i="5.99,282,1677571200"; d="scan'208";a="766817281" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by fmsmga008.fm.intel.com with ESMTP; 17 May 2023 08:18:14 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Wed, 17 May 2023 08:18:14 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) 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.2507.23 via Frontend Transport; Wed, 17 May 2023 08:18:14 -0700 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.100) 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.2507.23; Wed, 17 May 2023 08:18:11 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QorQyjAlBYC9iR0Vlw3+GvHHDK+Bg//v8Yag06pWjORZdGSTag+8TAdgbtuMQrju1WMOZHwJq40JpvZCpiF3TpDffG+sTZNYoWvgUuDSRgZt3tAA/P5+xKwQImdJJs2Q3zktTQzC8U7UKLe87Oln0VGJBeZSpd+v8IZ1HV3/mGOcCxRH0a1Fd5znWTY6SUccp9OjIVcLCpkSklJb4bhOqPdhCXVgaZhYifE6KLQ+hkFU/BSRtRfMhCl+0OhRrIXxRfRbir4wqwlSfi4JIC6HDTVSlaib6U9Nmt8dgJMbOj4m2DlQdo4GfiL0NCzCHGwg+j31ReRppxZ45usGMPmPLA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=JHR2pJAd1FkVYgoDqJuGYOMw9HGy/FQDBW7gDW1K6D4=; b=mCnzhZ2KGixwZO5L6qWGO+u35iUfyrDlMkt5NjXjMRZm/ZYcUpBqZXtmo641a4ZKQemItrE8G7r3VvIm5N1egWSZfgdm5ZYjLJihRxkDlL+5VfJE5TZhYZjJpn0/Qfrseje7bmg55UI14JQIbbZ+nz1EvJpgtFuOt+cEMXL9oPV+SPK/nqr10DG0mzyPniXXKfEhShmH+qaA+bUTEyC1isg3gLy1Qzrd9vqfNz79u0AzTw1YFFe6sT8QALeJgJOYgR6ewNifmjK4QheJ25OV5oePe19WybPVOyjQy5svBQADXcUWvC5XwDJdVi1lOnmZBhclzwcsusXYWf1Sn/LRyw== 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 Received: from MW5PR11MB5908.namprd11.prod.outlook.com (2603:10b6:303:194::10) by CY8PR11MB7108.namprd11.prod.outlook.com (2603:10b6:930:50::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6411.17; Wed, 17 May 2023 15:18:10 +0000 Received: from MW5PR11MB5908.namprd11.prod.outlook.com ([fe80::bbc5:f013:1f53:10a9]) by MW5PR11MB5908.namprd11.prod.outlook.com ([fe80::bbc5:f013:1f53:10a9%3]) with mapi id 15.20.6411.017; Wed, 17 May 2023 15:18:10 +0000 From: "Li, Pan2" To: Kito Cheng , "juzhe.zhong@rivai.ai" CC: "gcc-patches@gcc.gnu.org" , "kito.cheng@gmail.com" , "palmer@dabbelt.com" , "palmer@rivosinc.com" , "jeffreyalaw@gmail.com" , "rdapp.gcc@gmail.com" Subject: RE: [PATCH] RISC-V: Add mode switching target hook to insert rounding mode config for fixed-point instructions Thread-Topic: [PATCH] RISC-V: Add mode switching target hook to insert rounding mode config for fixed-point instructions Thread-Index: AQHZiK1A4JON/nJspkO/wm7r0ECTUa9ePQCAgABXJWA= Date: Wed, 17 May 2023 15:18:09 +0000 Message-ID: References: <20230517095818.1285188-1-juzhe.zhong@rivai.ai> 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=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MW5PR11MB5908:EE_|CY8PR11MB7108:EE_ x-ms-office365-filtering-correlation-id: fe680f76-bffc-42ec-ae9d-08db56e9ec95 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: +EWicJrNpmPmgkZO+nXJw9UGJaq5Ss4RkpxvdURNeW0ZXY6pWNK+4yvXw32eqGRHCM7zJIzwdwxsEEn9+BIuR4FO3+xKE+eiGMpN/vaz3fySuFTlD839I0xwNHLMXu/uxWNEs96iZfWJM/G2tO70Vk87HkuldwKrw0nnyprz5EYrKxIEHVY0uX95CCKRWhzGzzxTBFpcCPbluvTuPAOiJP6Tqw0dBuq3FNQz5ki5LS2OWENTBsX4CQ8M9WQMl1GxGI2GyCxeBP+c8op6yM4Bzv9Meq2Ohca3oELZYGOtSb+HNrbQDBcl7uHz0HLFwoKOq+wu0lsfHwWYzuerQKcPNJwlm+pxAltvvliBKTwqUx/pqNqN2yhEuG7IHESZ3kORasxuduw4/ykBbkxnNU6TDiP/G7kjaY5fyssF9jg5ObhD36nb3z4q9/FXEh+gqbXCK8ExV0Lo6LWZD4P2LOREoW3G0ySx0CYzIFfVGWG+jQzQzI19Q5mEfxro2g1eAAR5ZjEjrya9CzkEyQSU5DvpUzJYV/rAmbp4FR1Xk/qfvCyFqJu0dTar3gawPPCMa+Lxr61M5bh0PbcGJI7nlRogb1npmuqFspTtdWk7e4bqGrE= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW5PR11MB5908.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(39860400002)(366004)(376002)(346002)(136003)(396003)(451199021)(71200400001)(122000001)(38100700002)(186003)(52536014)(6506007)(82960400001)(26005)(53546011)(9686003)(33656002)(83380400001)(30864003)(5660300002)(2906002)(8676002)(8936002)(41300700001)(478600001)(110136005)(54906003)(38070700005)(7696005)(966005)(64756008)(66446008)(66476007)(66946007)(76116006)(66556008)(4326008)(316002)(86362001)(55016003)(84970400001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?SDZJTGRnTDhZZkdvMW9oTDhCY1hWeVFLZUN4TG0xRFppZUVYcU4xdXlBVFlU?= =?utf-8?B?RjZwSzgwQWcrNFBMd1p2d2JTVk03cHJ0ckFRWVkrcnpEaU1FKzJyRE80Zlpq?= =?utf-8?B?ZWxEQ3VHRVhod1ZZeUVkYmF6SnFWMVRhSDZZY3RKZHdBQ04xb1RLMm92SHAx?= =?utf-8?B?RTF1YkpaNSt6LzNsdjVWU1FxWC9hbktKd20wRUE5SnowcjZXOUVDWEkxWlRH?= =?utf-8?B?NHViTk11b3Bka2hFaG1HRGk0M3ZUenFmUkJGRW9rL3M5cC9Oem8vVGpUZFF4?= =?utf-8?B?V1lJa3pwVDJFK2NPYTU1NkpXa1JRQ1ZXQjlEWFhtVDVybTViOE1UbjhKTWpX?= =?utf-8?B?SDl6cUxiRWlDTTZaQ3BiN0t4NktBZzVwb3pYUmp5TWxZL3d0UHRaOVhpZVB2?= =?utf-8?B?eUZuWHBBZEtPYzg4OXVHK2h4dGErN3lnWTJSeWgwUGdGbHBtc1pOMlhEY3pj?= =?utf-8?B?UWQxZ2gzcXlXNVBCbnd3aHpMVHE4TUY5UmdpbnFaclJUMkc0aGFWVnlndzRo?= =?utf-8?B?VUxWN1l1M2U2QzA4V285em9qaE9XNjNacDRxUml2bzRFbC9KazNsS2xWTHFW?= =?utf-8?B?b3pqZ0ZOL3JkY1BKR1phajJMRkY0UWwrekZxS1NvOHdHZlIwUVc4eHRIZFNG?= =?utf-8?B?Um10UkxTV05ENDhxMlJORzZaUFFkYW42Z0VCeE1LR3RNSTlGbS8xSnptZHBR?= =?utf-8?B?Uk9HSUpWWHdOd3VKRzB6M24rcUV0T20zUmFjaGptVHVUR1YvOWR4RjFqWlRj?= =?utf-8?B?ZENsdzFxOEU2RDZ1QzcvamN0NzFkQmtIVUJFTHI4U25tYUo2VFplelNvQmFj?= =?utf-8?B?cWF2YVoxWWM4ZDdNcE1xZ1NvRTgvdTAySDNmOUNYdGFYSEc3NFRXc2RwTWZG?= =?utf-8?B?KzM0YjIrdlpBR0pIM3ZwM1JoQWtncGlFZ1FVOWxZWGJtN2k3MG1ZaUNxTW5u?= =?utf-8?B?endRU0NxWnpJTVh0Ny9tZXNDc3VvSThJYStndm05cjk2dVhzazI0NU9JMVhU?= =?utf-8?B?YTlsVTNmUHlPYStJWDU1TUUxL0ZNNlh3TWp3SlJOUDYrbENkc091ZTJYbXVq?= =?utf-8?B?SHdyd0lpdGVzMWYzeWZpdllyQzd1VUl1TVRiTnFXSzdNYndjTkJmVlUrbjJR?= =?utf-8?B?RURua3ZrTmU5REY3MzRwaVFSU0JLZUVOUS9QdC9KM2dDUDYzMU9lK1F6NTdJ?= =?utf-8?B?RXNrcXlYWnVRcFIxcWpGYW9LSVFEbkJua0MwVzZjSk9GY1ViYnhsK2ZQQUYw?= =?utf-8?B?LzR4Vkp2OEZHcE5ybTJUMFQ3LzlEWFI1MGwvOCtkVjMzYjVGOU5neTFWQUpa?= =?utf-8?B?dFhuanh6RG1sVEx5NXgwZlBMQlBYUk9zWEJHc0lPQ0xmd0tJckxCeStxRUVl?= =?utf-8?B?LzdYN1JneW42NExSa1M0d3J2MCthUGNVWGx4N1JPeGlFUitiRTdjMFhOYnB1?= =?utf-8?B?ZHVTdWNCaFR3cFVLcjMyTjRpVGNGV25xSGhMUHppYTh4QTVBenZMSkVYZ0pO?= =?utf-8?B?N09KMjZOQlRZeHo3aHIrK1BLMUt6WUN6TVhvV1FFNlFROUp3UkNMN0tkTC9I?= =?utf-8?B?QTZJU3g1VlBWM2hUeDR5QWV6bXZlM1h5QW16a1l6Tko1TWZwM0R3VmVqVGhS?= =?utf-8?B?NUxpVUc4U2JSSzcrUnJmRzRDbXdlVDlvL2lBV1NpMC9rcloxZ2c2SVl2VkxP?= =?utf-8?B?a1V5Nk9BUXpvT2dOemx0ZTFPVFlIME56KzJqdFBQdURsVkh6V2luMkszSkZk?= =?utf-8?B?cmlPRE1UU2pUS3RmYy9DQ2ZXemJROU9EbmVTVnJqdHUzRzZzaEE5Wi9JWXNm?= =?utf-8?B?NExrd2xKTWxQQThIa0hkUVhoWG5za0diRmNrclVOei9iTGEzR2ZmckxZdjgz?= =?utf-8?B?bi93OUhMNS9DSS84NlllK2Q3a3IwRDg3ZlJ6ZnJhb1ZtdUtiZ1RZMWRsbVpD?= =?utf-8?B?YVZGS05PaXBUb2V0Um9Fci8xODZqa0JNRDk4NzExZVJ5d04reUFPSDM5dDRz?= =?utf-8?B?dkdZK1RkSk81TytCT0FPYklteGlWbG9xNnk0TlNUTSs3WGlQQ2pwc2E0c2g1?= =?utf-8?B?ODRyM1lKSFpYQWVsd3lZNnBGUm1SakhyVVV4ZWI3TG40Y2tjUVVBR3RJazVU?= =?utf-8?Q?Rm28=3D?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW5PR11MB5908.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: fe680f76-bffc-42ec-ae9d-08db56e9ec95 X-MS-Exchange-CrossTenant-originalarrivaltime: 17 May 2023 15:18:09.9300 (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: HAXjKP7rMV6jmZJwYLknVN+pOo1bcMguu4RoFNJeKNM09w+RHNvLD7KYP6NPOh+lK3N3j86bYSplS7AT1VW4qA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR11MB7108 X-OriginatorOrg: intel.com X-Spam-Status: No, score=-11.6 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_ASCII_DIVIDERS,KAM_SHORT,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE 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: Q29tbWl0dGVkLCB0aGFua3Mga2l0by4NCg0KUGFuDQoNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t LS0tDQpGcm9tOiBHY2MtcGF0Y2hlcyA8Z2NjLXBhdGNoZXMtYm91bmNlcytwYW4yLmxpPWludGVs LmNvbUBnY2MuZ251Lm9yZz4gT24gQmVoYWxmIE9mIEtpdG8gQ2hlbmcgdmlhIEdjYy1wYXRjaGVz DQpTZW50OiBXZWRuZXNkYXksIE1heSAxNywgMjAyMyA2OjA2IFBNDQpUbzoganV6aGUuemhvbmdA cml2YWkuYWkNCkNjOiBnY2MtcGF0Y2hlc0BnY2MuZ251Lm9yZzsga2l0by5jaGVuZ0BnbWFpbC5j b207IHBhbG1lckBkYWJiZWx0LmNvbTsgcGFsbWVyQHJpdm9zaW5jLmNvbTsgamVmZnJleWFsYXdA Z21haWwuY29tOyByZGFwcC5nY2NAZ21haWwuY29tDQpTdWJqZWN0OiBSZTogW1BBVENIXSBSSVND LVY6IEFkZCBtb2RlIHN3aXRjaGluZyB0YXJnZXQgaG9vayB0byBpbnNlcnQgcm91bmRpbmcgbW9k ZSBjb25maWcgZm9yIGZpeGVkLXBvaW50IGluc3RydWN0aW9ucw0KDQpMR1RNLCBpdCdzIHJlYWxs eSBhd2Vzb21lLCBJIGtub3cgaXQncyBraW5kIG9mIGJsb2NraW5nIGR1ZSB0byBlbnVtIHN0dWZm LCBzbyBmZWVsIGZyZWUgdG8gY29tbWl0IHRoaXMgb25jZSBpdCB1bmJsb2NrIDopDQoNCk9uIFdl ZCwgTWF5IDE3LCAyMDIzIGF0IDU6NTjigK9QTSA8anV6aGUuemhvbmdAcml2YWkuYWk+IHdyb3Rl Og0KPg0KPiBGcm9tOiBKdXpoZS1aaG9uZyA8anV6aGUuemhvbmdAcml2YWkuYWk+DQo+DQo+IEhp LCB0aGlzIHBhdGNoIHN1cHBvcnQgdGhlIG5ldyBjb21pbmcgZml4ZWQtcG9pbnQgaW50cmluc2lj czoNCj4gaHR0cHM6Ly9naXRodWIuY29tL3Jpc2N2LW5vbi1pc2EvcnZ2LWludHJpbnNpYy1kb2Mv cHVsbC8yMjINCj4NCj4gSW5zZXJ0IGZpeGVkLXBvaW50IHJvdW5kaW5nIG1vZGUgY29uZmlndXJh dGlvbiBieSBtb2RlIHN3aXRjaGluZyB0YXJnZXQgaG9vay4NCj4NCj4gTW9kZSBzd2l0Y2hpbmcg dGFyZ2V0IGhvb2sgaXMgaW1wbGVtZW50ZWQgYXBwbHlpbmcgTENNIChMYXp5IGNvZGUgTW90aW9u KS4NCj4NCj4gU28gdGhlIHBlcmZvcm1hbmNlICYmIGNvcnJlY3RuZXNzIGNhbiBiZSB3ZWxsIHRy dXN0ZWQuDQo+DQo+IEhlcmUgaXMgdGhlIGV4YW1wbGU6DQo+DQo+IHZvaWQgZiAodm9pZCAqIGlu LCB2b2lkICpvdXQsIGludDMyX3QgeCwgaW50IG4sIGludCBtKSB7DQo+ICAgZm9yIChpbnQgaSA9 IDA7IGkgPCBuOyBpKyspIHsNCj4gICAgIHZpbnQzMm0xX3QgdiA9IF9fcmlzY3ZfdmxlMzJfdl9p MzJtMSAoaW4gKyBpLCA0KTsNCj4gICAgIHZpbnQzMm0xX3QgdjIgPSBfX3Jpc2N2X3ZsZTMyX3Zf aTMybTFfdHUgKHYsIGluICsgMTAwICsgaSwgNCk7DQo+ICAgICB2aW50MzJtMV90IHYzID0gX19y aXNjdl92YWFkZF92eF9pMzJtMSAodjIsIDAsIFZYUk1fUkROLCA0KTsNCj4gICAgIHYzID0gX19y aXNjdl92YWFkZF92eF9pMzJtMSAodjMsIDMsIFZYUk1fUkROLCA0KTsNCj4gICAgIF9fcmlzY3Zf dnNlMzJfdl9pMzJtMSAob3V0ICsgMTAwICsgaSwgdjMsIDQpOw0KPiAgIH0NCj4NCj4gICBmb3Ig KGludCBpID0gMDsgaSA8IG47IGkrKykgew0KPiAgICAgdmludDMybTFfdCB2ID0gX19yaXNjdl92 bGUzMl92X2kzMm0xIChpbiArIGkgKyAxMDAwLCA0KTsNCj4gICAgIHZpbnQzMm0xX3QgdjIgPSBf X3Jpc2N2X3ZsZTMyX3ZfaTMybTFfdHUgKHYsIGluICsgMTAwICsgaSArIDEwMDAsIDQpOw0KPiAg ICAgdmludDMybTFfdCB2MyA9IF9fcmlzY3ZfdmFhZGRfdnhfaTMybTEgKHYyLCAwLCBWWFJNX1JE TiwgNCk7DQo+ICAgICB2MyA9IF9fcmlzY3ZfdmFhZGRfdnhfaTMybTEgKHYzLCAzLCBWWFJNX1JE TiwgNCk7DQo+ICAgICBfX3Jpc2N2X3ZzZTMyX3ZfaTMybTEgKG91dCArIDEwMCArIGkgKyAxMDAw LCB2MywgNCk7DQo+ICAgfQ0KPiB9DQo+DQo+IEFTTToNCj4NCj4gLi4uDQo+IGNzcndpICAgdnhy bSwyDQo+IHZzZXRpdmxpICAgICAgICB6ZXJvLDQsZTMyLG0xLHR1LG1hDQo+IC4uLg0KPiBMb29w IDENCj4gLi4uDQo+IExvb3AgMg0KPg0KPiBtb2RlIHN3aXRjaGluZyBjYW4gZ2xvYmFsIHJlY29n bml6ZSBib3RoIExvb3AgMSBhbmQgTG9vcCAyIGFyZSB1c2luZyANCj4gUkROIHJvdW5kaW5nIG1v ZGUgYW5kIGhvaXN0IHN1Y2ggc2luZ2xlICJjc3J3aSB2eHJtLDIiIHRvIGRvbWluYXRlIA0KPiBi b3RoIExvb3AgMSBhbmQgTG9vcCAyLg0KPg0KPiBCZXNpZGVzLCBJIGhhdmUgYWRkIGNvcnJlY3Ru ZXNzIGNoZWNrIHNhbml0eSB0ZXN0cyBpbiB0aGlzIHBhdGNoIHRvby4NCj4NCj4gT2sgZm9yIHRy dW5rID8NCj4NCj4gZ2NjL0NoYW5nZUxvZzoNCj4NCj4gICAgICAgICAqIGNvbmZpZy9yaXNjdi9y aXNjdi1vcHRzLmggKGVudW0gcmlzY3ZfZW50aXR5KTogTmV3IGVudW0uDQo+ICAgICAgICAgKiBj b25maWcvcmlzY3YvcmlzY3YuY2MgKHJpc2N2X2VtaXRfbW9kZV9zZXQpOiBOZXcgZnVuY3Rpb24u DQo+ICAgICAgICAgKHJpc2N2X21vZGVfbmVlZGVkKTogRGl0dG8uDQo+ICAgICAgICAgKHJpc2N2 X21vZGVfYWZ0ZXIpOiBEaXR0by4NCj4gICAgICAgICAocmlzY3ZfbW9kZV9lbnRyeSk6IERpdHRv Lg0KPiAgICAgICAgIChyaXNjdl9tb2RlX2V4aXQpOiBEaXR0by4NCj4gICAgICAgICAocmlzY3Zf bW9kZV9wcmlvcml0eSk6IERpdHRvLg0KPiAgICAgICAgIChUQVJHRVRfTU9ERV9FTUlUKTogTmV3 IHRhcmdldCBob29rLg0KPiAgICAgICAgIChUQVJHRVRfTU9ERV9ORUVERUQpOiBEaXR0by4NCj4g ICAgICAgICAoVEFSR0VUX01PREVfQUZURVIpOiBEaXR0by4NCj4gICAgICAgICAoVEFSR0VUX01P REVfRU5UUlkpOiBEaXR0by4NCj4gICAgICAgICAoVEFSR0VUX01PREVfRVhJVCk6IERpdHRvLg0K PiAgICAgICAgIChUQVJHRVRfTU9ERV9QUklPUklUWSk6IERpdHRvLg0KPiAgICAgICAgICogY29u ZmlnL3Jpc2N2L3Jpc2N2LmggKE9QVElNSVpFX01PREVfU1dJVENISU5HKTogRGl0dG8uDQo+ICAg ICAgICAgKE5VTV9NT0RFU19GT1JfTU9ERV9TV0lUQ0hJTkcpOiBEaXR0by4NCj4gICAgICAgICAq IGNvbmZpZy9yaXNjdi9yaXNjdi5tZDogQWRkIGNzcnd2eHJtLg0KPiAgICAgICAgICogY29uZmln L3Jpc2N2L3ZlY3Rvci5tZCAocm51LHJuZSxyZG4scm9kLG5vbmUpOiBOZXcgYXR0cmlidXRlLg0K PiAgICAgICAgICh2eHJtc2kpOiBOZXcgcGF0dGVybi4NCj4NCj4gZ2NjL3Rlc3RzdWl0ZS9DaGFu Z2VMb2c6DQo+DQo+ICAgICAgICAgKiBnY2MudGFyZ2V0L3Jpc2N2L3J2di9iYXNlL3Z4cm0tMTAu YzogTmV3IHRlc3QuDQo+ICAgICAgICAgKiBnY2MudGFyZ2V0L3Jpc2N2L3J2di9iYXNlL3Z4cm0t Ni5jOiBOZXcgdGVzdC4NCj4gICAgICAgICAqIGdjYy50YXJnZXQvcmlzY3YvcnZ2L2Jhc2Uvdnhy bS03LmM6IE5ldyB0ZXN0Lg0KPiAgICAgICAgICogZ2NjLnRhcmdldC9yaXNjdi9ydnYvYmFzZS92 eHJtLTguYzogTmV3IHRlc3QuDQo+ICAgICAgICAgKiBnY2MudGFyZ2V0L3Jpc2N2L3J2di9iYXNl L3Z4cm0tOS5jOiBOZXcgdGVzdC4NCj4NCj4gLS0tDQo+ICBnY2MvY29uZmlnL3Jpc2N2L3Jpc2N2 LW9wdHMuaCAgICAgICAgICAgICAgICAgfCAgIDggKysNCj4gIGdjYy9jb25maWcvcmlzY3Yvcmlz Y3YuY2MgICAgICAgICAgICAgICAgICAgICB8IDEwNCArKysrKysrKysrKysrKysrKysNCj4gIGdj Yy9jb25maWcvcmlzY3YvcmlzY3YuaCAgICAgICAgICAgICAgICAgICAgICB8ICAgNiArLQ0KPiAg Z2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5tZCAgICAgICAgICAgICAgICAgICAgIHwgICAzICstDQo+ ICBnY2MvY29uZmlnL3Jpc2N2L3ZlY3Rvci5tZCAgICAgICAgICAgICAgICAgICAgfCAgMjkgKysr KysNCj4gIC4uLi9nY2MudGFyZ2V0L3Jpc2N2L3J2di9iYXNlL3Z4cm0tMTAuYyAgICAgICB8ICAy NiArKysrKw0KPiAgLi4uL2djYy50YXJnZXQvcmlzY3YvcnZ2L2Jhc2UvdnhybS02LmMgICAgICAg IHwgIDE1ICsrKw0KPiAgLi4uL2djYy50YXJnZXQvcmlzY3YvcnZ2L2Jhc2UvdnhybS03LmMgICAg ICAgIHwgIDE2ICsrKw0KPiAgLi4uL2djYy50YXJnZXQvcmlzY3YvcnZ2L2Jhc2UvdnhybS04LmMg ICAgICAgIHwgIDE4ICsrKw0KPiAgLi4uL2djYy50YXJnZXQvcmlzY3YvcnZ2L2Jhc2UvdnhybS05 LmMgICAgICAgIHwgIDI2ICsrKysrDQo+ICAxMCBmaWxlcyBjaGFuZ2VkLCAyNDkgaW5zZXJ0aW9u cygrKSwgMiBkZWxldGlvbnMoLSkgIGNyZWF0ZSBtb2RlIA0KPiAxMDA2NDQgZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9iYXNlL3Z4cm0tMTAuYw0KPiAgY3JlYXRlIG1vZGUgMTAw NjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYmFzZS92eHJtLTYuYw0KPiAg Y3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYmFz ZS92eHJtLTcuYw0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9yaXNjdi9ydnYvYmFzZS92eHJtLTguYw0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYmFzZS92eHJtLTkuYw0KPg0KPiBkaWZmIC0tZ2l0 IGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi1vcHRzLmggDQo+IGIvZ2NjL2NvbmZpZy9yaXNjdi9y aXNjdi1vcHRzLmggaW5kZXggMWIyZTZkZTVlMWIuLjJhMTY0MDIyNjVhIDEwMDY0NA0KPiAtLS0g YS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LW9wdHMuaA0KPiArKysgYi9nY2MvY29uZmlnL3Jpc2N2 L3Jpc2N2LW9wdHMuaA0KPiBAQCAtOTEsNiArOTEsMTQgQEAgZW51bSByaXNjdl9tdWx0aWxpYl9z ZWxlY3Rfa2luZCB7DQo+ICAgIHNlbGVjdF9ieV9hYmksDQo+ICB9Ow0KPg0KPiArLyogRU5USVRJ RVMgaW4gbW9kZSBzd2l0Y2hpbmcuICAqLw0KPiArZW51bSByaXNjdl9lbnRpdHkNCj4gK3sNCj4g KyAgUklTQ1ZfVlhSTSA9IDAsDQo+ICsgIFJJU0NWX0ZSTSwNCj4gKyAgTUFYX1JJU0NWX0VOVElU SUVTDQo+ICt9Ow0KPiArDQo+ICAjZGVmaW5lIE1BU0tfWklDU1IgICAgKDEgPDwgMCkNCj4gICNk ZWZpbmUgTUFTS19aSUZFTkNFSSAoMSA8PCAxKQ0KPg0KPiBkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZp Zy9yaXNjdi9yaXNjdi5jYyBiL2djYy9jb25maWcvcmlzY3YvcmlzY3YuY2MgDQo+IGluZGV4IGRl NWI4N2IxYTg3Li4wZDFiODNmNDMxNSAxMDA2NDQNCj4gLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9y aXNjdi5jYw0KPiArKysgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LmNjDQo+IEBAIC03NTEzLDYg Kzc1MTMsOTUgQEAgcmlzY3ZfdmVjdG9yaXplX3ByZWZlcnJlZF92ZWN0b3JfYWxpZ25tZW50IChj b25zdF90cmVlIHR5cGUpDQo+ICAgIHJldHVybiBUWVBFX0FMSUdOICh0eXBlKTsNCj4gIH0NCj4N Cj4gKy8qIEltcGxlbWVudCBNb2RlIHN3aXRjaGluZy4gICovDQo+ICsNCj4gK3N0YXRpYyB2b2lk DQo+ICtyaXNjdl9lbWl0X21vZGVfc2V0IChpbnQgZW50aXR5LCBpbnQgbW9kZSwgaW50IHByZXZf bW9kZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgSEFSRF9SRUdfU0VUIHJlZ3NfbGl2ZSBBVFRS SUJVVEVfVU5VU0VEKSB7DQo+ICsgIHN3aXRjaCAoZW50aXR5KQ0KPiArICAgIHsNCj4gKyAgICBj YXNlIFJJU0NWX1ZYUk06DQo+ICsgICAgICBpZiAobW9kZSAhPSBWWFJNX01PREVfTk9ORSAmJiBt b2RlICE9IHByZXZfbW9kZSkNCj4gKyAgICAgICBlbWl0X2luc24gKGdlbl92eHJtc2kgKGdlbl9p bnRfbW9kZSAobW9kZSwgU0ltb2RlKSkpOw0KPiArICAgICAgYnJlYWs7DQo+ICsgICAgZGVmYXVs dDoNCj4gKyAgICAgIGdjY191bnJlYWNoYWJsZSAoKTsNCj4gKyAgICB9DQo+ICt9DQo+ICsNCj4g Ky8qIFJldHVybiBtb2RlIHRoYXQgZW50aXR5IG11c3QgYmUgc3dpdGNoZWQgaW50bw0KPiArICAg cHJpb3IgdG8gdGhlIGV4ZWN1dGlvbiBvZiBpbnNuLiAgKi8NCj4gKw0KPiArc3RhdGljIGludA0K PiArcmlzY3ZfbW9kZV9uZWVkZWQgKGludCBlbnRpdHksIHJ0eF9pbnNuICppbnNuKSB7DQo+ICsg IHN3aXRjaCAoZW50aXR5KQ0KPiArICAgIHsNCj4gKyAgICBjYXNlIFJJU0NWX1ZYUk06DQo+ICsg ICAgICByZXR1cm4gcmVjb2dfbWVtb2l6ZWQgKGluc24pID49IDAgPyBnZXRfYXR0cl92eHJtX21v ZGUgKGluc24pDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFZY Uk1fTU9ERV9OT05FOw0KPiArICAgIGRlZmF1bHQ6DQo+ICsgICAgICBnY2NfdW5yZWFjaGFibGUg KCk7DQo+ICsgICAgfQ0KPiArfQ0KPiArDQo+ICsvKiBSZXR1cm4gdGhlIG1vZGUgdGhhdCBhbiBp bnNuIHJlc3VsdHMgaW4uICAqLw0KPiArDQo+ICtzdGF0aWMgaW50DQo+ICtyaXNjdl9tb2RlX2Fm dGVyIChpbnQgZW50aXR5LCBpbnQgbW9kZSwgcnR4X2luc24gKmluc24pIHsNCj4gKyAgc3dpdGNo IChlbnRpdHkpDQo+ICsgICAgew0KPiArICAgIGNhc2UgUklTQ1ZfVlhSTToNCj4gKyAgICAgIGlm IChyZWNvZ19tZW1vaXplZCAoaW5zbikgPj0gMCkNCj4gKyAgICAgICByZXR1cm4gcmVnX21lbnRp b25lZF9wIChnZW5fcnR4X1JFRyAoU0ltb2RlLCBWWFJNX1JFR05VTSksDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUEFUVEVSTiAoaW5zbikpDQo+ICsgICAgICAgICAgICAgICAg PyBnZXRfYXR0cl92eHJtX21vZGUgKGluc24pDQo+ICsgICAgICAgICAgICAgICAgOiBtb2RlOw0K PiArICAgICAgZWxzZQ0KPiArICAgICAgIHJldHVybiBtb2RlOw0KPiArICAgIGRlZmF1bHQ6DQo+ ICsgICAgICBnY2NfdW5yZWFjaGFibGUgKCk7DQo+ICsgICAgfQ0KPiArfQ0KPiArDQo+ICsvKiBS ZXR1cm4gYSBtb2RlIHRoYXQgRU5USVRZIGlzIGFzc3VtZWQgdG8gYmUNCj4gKyAgIHN3aXRjaGVk IHRvIGF0IGZ1bmN0aW9uIGVudHJ5LiAgKi8NCj4gKw0KPiArc3RhdGljIGludA0KPiArcmlzY3Zf bW9kZV9lbnRyeSAoaW50IGVudGl0eSkNCj4gK3sNCj4gKyAgc3dpdGNoIChlbnRpdHkpDQo+ICsg ICAgew0KPiArICAgIGNhc2UgUklTQ1ZfVlhSTToNCj4gKyAgICAgIHJldHVybiBWWFJNX01PREVf Tk9ORTsNCj4gKyAgICBkZWZhdWx0Og0KPiArICAgICAgZ2NjX3VucmVhY2hhYmxlICgpOw0KPiAr ICAgIH0NCj4gK30NCj4gKw0KPiArLyogUmV0dXJuIGEgbW9kZSB0aGF0IEVOVElUWSBpcyBhc3N1 bWVkIHRvIGJlDQo+ICsgICBzd2l0Y2hlZCB0byBhdCBmdW5jdGlvbiBleGl0LiAgKi8NCj4gKw0K PiArc3RhdGljIGludA0KPiArcmlzY3ZfbW9kZV9leGl0IChpbnQgZW50aXR5KQ0KPiArew0KPiAr ICBzd2l0Y2ggKGVudGl0eSkNCj4gKyAgICB7DQo+ICsgICAgY2FzZSBSSVNDVl9WWFJNOg0KPiAr ICAgICAgcmV0dXJuIFZYUk1fTU9ERV9OT05FOw0KPiArICAgIGRlZmF1bHQ6DQo+ICsgICAgICBn Y2NfdW5yZWFjaGFibGUgKCk7DQo+ICsgICAgfQ0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50DQo+ ICtyaXNjdl9tb2RlX3ByaW9yaXR5IChpbnQsIGludCBuKQ0KPiArew0KPiArICByZXR1cm4gbjsN Cj4gK30NCj4gKw0KPiAgLyogSW5pdGlhbGl6ZSB0aGUgR0NDIHRhcmdldCBzdHJ1Y3R1cmUuICAq LyAgI3VuZGVmIA0KPiBUQVJHRVRfQVNNX0FMSUdORURfSElfT1AgICNkZWZpbmUgVEFSR0VUX0FT TV9BTElHTkVEX0hJX09QICJcdC5oYWxmXHQiDQo+IEBAIC03Nzg5LDYgKzc4NzgsMjEgQEAgcmlz Y3ZfdmVjdG9yaXplX3ByZWZlcnJlZF92ZWN0b3JfYWxpZ25tZW50IA0KPiAoY29uc3RfdHJlZSB0 eXBlKSAgI2RlZmluZSBUQVJHRVRfVkVDVE9SSVpFX1BSRUZFUlJFRF9WRUNUT1JfQUxJR05NRU5U IFwNCj4gICAgcmlzY3ZfdmVjdG9yaXplX3ByZWZlcnJlZF92ZWN0b3JfYWxpZ25tZW50DQo+DQo+ ICsvKiBNb2RlIHN3aXRjaGluZyBob29rcy4gICovDQo+ICsNCj4gKyN1bmRlZiBUQVJHRVRfTU9E RV9FTUlUDQo+ICsjZGVmaW5lIFRBUkdFVF9NT0RFX0VNSVQgcmlzY3ZfZW1pdF9tb2RlX3NldCAj dW5kZWYgDQo+ICtUQVJHRVRfTU9ERV9ORUVERUQgI2RlZmluZSBUQVJHRVRfTU9ERV9ORUVERUQg cmlzY3ZfbW9kZV9uZWVkZWQgDQo+ICsjdW5kZWYgVEFSR0VUX01PREVfQUZURVIgI2RlZmluZSBU QVJHRVRfTU9ERV9BRlRFUiByaXNjdl9tb2RlX2FmdGVyIA0KPiArI3VuZGVmIFRBUkdFVF9NT0RF X0VOVFJZICNkZWZpbmUgVEFSR0VUX01PREVfRU5UUlkgcmlzY3ZfbW9kZV9lbnRyeSANCj4gKyN1 bmRlZiBUQVJHRVRfTU9ERV9FWElUICNkZWZpbmUgVEFSR0VUX01PREVfRVhJVCByaXNjdl9tb2Rl X2V4aXQgDQo+ICsjdW5kZWYgVEFSR0VUX01PREVfUFJJT1JJVFkgI2RlZmluZSBUQVJHRVRfTU9E RV9QUklPUklUWSANCj4gK3Jpc2N2X21vZGVfcHJpb3JpdHkNCj4gKw0KPiAgc3RydWN0IGdjY190 YXJnZXQgdGFyZ2V0bSA9IFRBUkdFVF9JTklUSUFMSVpFUjsNCj4NCj4gICNpbmNsdWRlICJndC1y aXNjdi5oIg0KPiBkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5oIGIvZ2NjL2Nv bmZpZy9yaXNjdi9yaXNjdi5oIGluZGV4IA0KPiBmNTViZDYxMTJhOC4uMjlmMmMwN2NlNWQgMTAw NjQ0DQo+IC0tLSBhL2djYy9jb25maWcvcmlzY3YvcmlzY3YuaA0KPiArKysgYi9nY2MvY29uZmln L3Jpc2N2L3Jpc2N2LmgNCj4gQEAgLTg0NSw3ICs4NDUsNyBAQCB0eXBlZGVmIHN0cnVjdCB7DQo+ ICAgICJmczAiLCAiZnMxIiwgImZhMCIsICJmYTEiLCAiZmEyIiwgImZhMyIsICJmYTQiLCAiZmE1 IiwgICAgICBcDQo+ICAgICJmYTYiLCAiZmE3IiwgImZzMiIsICJmczMiLCAiZnM0IiwgImZzNSIs ICJmczYiLCAiZnM3IiwgICAgICBcDQo+ICAgICJmczgiLCAiZnM5IiwgImZzMTAiLCJmczExIiwi ZnQ4IiwgImZ0OSIsICJmdDEwIiwiZnQxMSIsICAgICBcDQo+IC0gICJhcmciLCAiZnJhbWUiLCAi dmwiLCAidnR5cGUiLCAiTi9BIiwgIk4vQSIsICJOL0EiLCAiTi9BIiwgICAgXA0KPiArICAiYXJn IiwgImZyYW1lIiwgInZsIiwgInZ0eXBlIiwgInZ4cm0iLCAiTi9BIiwgIk4vQSIsICJOL0EiLCAg IFwNCj4gICAgIk4vQSIsICJOL0EiLCAiTi9BIiwgIk4vQSIsICJOL0EiLCAiTi9BIiwgIk4vQSIs ICJOL0EiLCAgICAgIFwNCj4gICAgIk4vQSIsICJOL0EiLCAiTi9BIiwgIk4vQSIsICJOL0EiLCAi Ti9BIiwgIk4vQSIsICJOL0EiLCAgICAgIFwNCj4gICAgIk4vQSIsICJOL0EiLCAiTi9BIiwgIk4v QSIsICJOL0EiLCAiTi9BIiwgIk4vQSIsICJOL0EiLCAgICAgIFwNCj4gQEAgLTExMDcsNCArMTEw Nyw4IEBAIGV4dGVybiB2b2lkIHJpc2N2X3JlbW92ZV91bm5lZWRlZF9zYXZlX3Jlc3RvcmVfY2Fs bHMgKHZvaWQpOw0KPiAgICAgQ09OU1QxX1JUWCBmb3IgdGhlIHNpbXBsaWZpY2F0aW9uLiAgKi8g ICNkZWZpbmUgDQo+IFZFQ1RPUl9TVE9SRV9GTEFHX1ZBTFVFKE1PREUpIENPTlNUTTFfUlRYIChH RVRfTU9ERV9JTk5FUiAoTU9ERSkpDQo+DQo+ICsvKiBNb2RlIHN3aXRjaGluZyAoTGF6eSBjb2Rl IG1vdGlvbikgZm9yIFJWViByb3VuZGluZyBtb2RlIA0KPiAraW5zdHJ1Y3Rpb25zLiAgKi8gI2Rl ZmluZSBPUFRJTUlaRV9NT0RFX1NXSVRDSElORyhFTlRJVFkpIA0KPiArKFRBUkdFVF9WRUNUT1Ip ICNkZWZpbmUgTlVNX01PREVTX0ZPUl9NT0RFX1NXSVRDSElORyB7VlhSTV9NT0RFX05PTkV9DQo+ ICsNCj4gICNlbmRpZiAvKiAhIEdDQ19SSVNDVl9IICovDQo+IGRpZmYgLS1naXQgYS9nY2MvY29u ZmlnL3Jpc2N2L3Jpc2N2Lm1kIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5tZCANCj4gaW5kZXgg OTE4MDhkNmJkMmEuLmE5MTc5OTMxMjE3IDEwMDY0NA0KPiAtLS0gYS9nY2MvY29uZmlnL3Jpc2N2 L3Jpc2N2Lm1kDQo+ICsrKyBiL2djYy9jb25maWcvcmlzY3YvcmlzY3YubWQNCj4gQEAgLTI4NCw2 ICsyODQsNyBAQA0KPiAgOzsgQ2xhc3NpZmljYXRpb24gb2YgUlZWIGluc3RydWN0aW9ucyB3aGlj aCB3aWxsIGJlIGFkZGVkIHRvIGVhY2ggUlZWIC5tZCBwYXR0ZXJuIGFuZCB1c2VkIGJ5IHNjaGVk dWxlci4NCj4gIDs7IHJkdmxlbmIgICAgIHZlY3RvciBieXRlIGxlbmd0aCB2bGVuYiBjc3JyIHJl YWQNCj4gIDs7IHJkdmwgICAgICAgIHZlY3RvciBsZW5ndGggdmwgY3NyciByZWFkDQo+ICs7OyB3 cnZ4cm0gICAgICB2ZWN0b3IgZml4ZWQtcG9pbnQgcm91bmRpbmcgbW9kZSB3cml0ZQ0KPiAgOzsg dnNldHZsICAgICAgdmVjdG9yIGNvbmZpZ3VyYXRpb24tc2V0dGluZyBpbnN0cnVjaW9ucw0KPiAg OzsgNy4gVmVjdG9yIExvYWRzIGFuZCBTdG9yZXMNCj4gIDs7IHZsZGUgICAgICAgIHZlY3RvciB1 bml0LXN0cmlkZSBsb2FkIGluc3RydWN0aW9ucw0KPiBAQCAtMzg3LDcgKzM4OCw3IEBADQo+ICAg ICBtdGMsbWZjLGNvbnN0LGFyaXRoLGxvZ2ljYWwsc2hpZnQsc2x0LGltdWwsaWRpdixtb3ZlLGZt b3ZlLGZhZGQsZm11bCwNCj4gICAgIGZtYWRkLGZkaXYsZmNtcCxmY3Z0LGZzcXJ0LG11bHRpLGF1 aXBjLHNmYl9hbHUsbm9wLGdob3N0LGJpdG1hbmlwLHJvdGF0ZSwNCj4gICAgIGNsbXVsLG1pbixt YXgsbWludSxtYXh1LGNseixjdHosY3BvcCwNCj4gLSAgIGF0b21pYyxjb25kbW92ZSxjcnlwdG8s cmR2bGVuYixyZHZsLHZzZXR2bCx2bGRlLHZzdGUsdmxkbSx2c3RtLHZsZHMsdnN0cywNCj4gKyAg IA0KPiArIGF0b21pYyxjb25kbW92ZSxjcnlwdG8scmR2bGVuYixyZHZsLHdydnhybSx2c2V0dmws dmxkZSx2c3RlLHZsZG0sdnN0DQo+ICsgbSx2bGRzLHZzdHMsDQo+ICAgICB2bGR1eCx2bGRveCx2 c3R1eCx2c3RveCx2bGRmZix2bGRyLHZzdHIsDQo+ICAgICB2bHNlZ2RlLHZzc2VndGUsdmxzZWdk cyx2c3NlZ3RzLHZsc2VnZHV4LHZsc2VnZG94LHZzc2VndHV4LHZzc2VndG94LHZsc2VnZGZmLA0K PiAgICAgdmlhbHUsdml3YWx1LHZleHQsdmljYWx1LHZzaGlmdCx2bnNoaWZ0LHZpY21wLHZpbWlu bWF4LA0KPiBkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yaXNjdi92ZWN0b3IubWQgYi9nY2MvY29u ZmlnL3Jpc2N2L3ZlY3Rvci5tZCANCj4gaW5kZXggYTA2Yjg0ZDc0NzMuLjFjMTAyOTQzNjIyIDEw MDY0NA0KPiAtLS0gYS9nY2MvY29uZmlnL3Jpc2N2L3ZlY3Rvci5tZA0KPiArKysgYi9nY2MvY29u ZmlnL3Jpc2N2L3ZlY3Rvci5tZA0KPiBAQCAtNDA3LDYgKzQwNywyNiBAQA0KPiAgICAgICAgICAg IChzeW1ib2xfcmVmICJJTlRWQUwgKG9wZXJhbmRzWzRdKSIpXQ0KPiAgICAgICAgIChjb25zdF9p bnQgSU5WQUxJRF9BVFRSSUJVVEUpKSkNCj4NCj4gKzs7IERlZmluZXMgcm91bmRpbmcgbW9kZSBv ZiBhbiBmaXhlZC1wb2ludCBvcGVyYXRpb24uDQo+ICsNCj4gKyhkZWZpbmVfYXR0ciAidnhybV9t b2RlIiAicm51LHJuZSxyZG4scm9kLG5vbmUiDQo+ICsgIChjb25kIFsoYW5kIChlcV9hdHRyICJ0 eXBlIiAidnNhbHUsdmFhbHUsdnNtdWwsdnNzaGlmdCx2bmNsaXAiKQ0KPiArICAgICAgICAgICAg IChtYXRjaF90ZXN0ICJJTlRWQUwob3BlcmFuZHNbOV0pID09IHJpc2N2X3ZlY3Rvcjo6VlhSTV9S TlUiKSkNCj4gKyAgICAgICAgKGNvbnN0X3N0cmluZyAicm51IikNCj4gKw0KPiArICAgICAgICAo YW5kIChlcV9hdHRyICJ0eXBlIiAidnNhbHUsdmFhbHUsdnNtdWwsdnNzaGlmdCx2bmNsaXAiKQ0K PiArICAgICAgICAgICAgIChtYXRjaF90ZXN0ICJJTlRWQUwob3BlcmFuZHNbOV0pID09IHJpc2N2 X3ZlY3Rvcjo6VlhSTV9STkUiKSkNCj4gKyAgICAgICAgKGNvbnN0X3N0cmluZyAicm5lIikNCj4g Kw0KPiArICAgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAidnNhbHUsdmFhbHUsdnNtdWwsdnNz aGlmdCx2bmNsaXAiKQ0KPiArICAgICAgICAgICAgIChtYXRjaF90ZXN0ICJJTlRWQUwob3BlcmFu ZHNbOV0pID09IHJpc2N2X3ZlY3Rvcjo6VlhSTV9SRE4iKSkNCj4gKyAgICAgICAgKGNvbnN0X3N0 cmluZyAicmRuIikNCj4gKw0KPiArICAgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAidnNhbHUs dmFhbHUsdnNtdWwsdnNzaGlmdCx2bmNsaXAiKQ0KPiArICAgICAgICAgICAgIChtYXRjaF90ZXN0 ICJJTlRWQUwob3BlcmFuZHNbOV0pID09IHJpc2N2X3ZlY3Rvcjo6VlhSTV9ST0QiKSkNCj4gKyAg ICAgICAgKGNvbnN0X3N0cmluZyAicm9kIildDQo+ICsgICAgICAgIChjb25zdF9zdHJpbmcgIm5v bmUiKSkpDQo+ICsNCj4gIDs7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICA7OyAtLS0tIE1pc2NlbGxhbmVvdXMgT3Bl cmF0aW9ucw0KPiAgOzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gQEAgLTU4NCw2ICs2MDQsMTUgQEANCj4gICAgIlRB UkdFVF9WRUNUT1IiDQo+ICAgICIiKQ0KPg0KPiArOzsgU2V0IFZYUk0NCj4gKyhkZWZpbmVfaW5z biAidnhybXNpIg0KPiArICBbKHNldCAocmVnOlNJIFZYUk1fUkVHTlVNKQ0KPiArICAgICAgICht YXRjaF9vcGVyYW5kIDAgImNvbnN0X2ludF9vcGVyYW5kIiAiaSIpKV0NCj4gKyAgIlRBUkdFVF9W RUNUT1IiDQo+ICsgICJjc3J3aVx0dnhybSwlMCINCj4gKyAgWyhzZXRfYXR0ciAidHlwZSIgIndy dnhybSIpDQo+ICsgICAoc2V0X2F0dHIgIm1vZGUiICJTSSIpXSkNCj4gKw0KPiAgOzsgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NCj4gIDs7IC0tLS0gTW92ZXMgT3BlcmF0aW9ucw0KPiAgOzsgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYmFzZS92eHJtLTEwLmMg DQo+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9iYXNlL3Z4cm0tMTAuYw0K PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMC4uYTcwN2FhMTY0NWUN Cj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yv cnZ2L2Jhc2UvdnhybS0xMC5jDQo+IEBAIC0wLDAgKzEsMjYgQEANCj4gKy8qIHsgZGctZG8gY29t cGlsZSB9ICovDQo+ICsvKiB7IGRnLW9wdGlvbnMgIi1tYXJjaD1ydjY0Z2N2IC1tYWJpPWxwNjRk IC1PMyAtZm5vLXNjaGVkdWxlLWluc25zIA0KPiArLWZuby1zY2hlZHVsZS1pbnNuczIiIH0gKi8N Cj4gKw0KPiArI2luY2x1ZGUgInJpc2N2X3ZlY3Rvci5oIg0KPiArDQo+ICt2b2lkIGYgKHZvaWQg KiBpbiwgdm9pZCAqb3V0LCBpbnQzMl90IHgsIGludCBuLCBpbnQgbSkgew0KPiArICBmb3IgKGlu dCBpID0gMDsgaSA8IG47IGkrKykgew0KPiArICAgIHZpbnQzMm0xX3QgdiA9IF9fcmlzY3Zfdmxl MzJfdl9pMzJtMSAoaW4gKyBpLCA0KTsNCj4gKyAgICB2aW50MzJtMV90IHYyID0gX19yaXNjdl92 bGUzMl92X2kzMm0xX3R1ICh2LCBpbiArIDEwMCArIGksIDQpOw0KPiArICAgIHZpbnQzMm0xX3Qg djMgPSBfX3Jpc2N2X3ZhYWRkX3Z4X2kzMm0xICh2MiwgMCwgVlhSTV9SRE4sIDQpOw0KPiArICAg IHYzID0gX19yaXNjdl92YWFkZF92eF9pMzJtMSAodjMsIDMsIFZYUk1fUkROLCA0KTsNCj4gKyAg ICBfX3Jpc2N2X3ZzZTMyX3ZfaTMybTEgKG91dCArIDEwMCArIGksIHYzLCA0KTsNCj4gKyAgfQ0K PiArDQo+ICsgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7DQo+ICsgICAgdmludDMybTFf dCB2ID0gX19yaXNjdl92bGUzMl92X2kzMm0xIChpbiArIGkgKyAxMDAwLCA0KTsNCj4gKyAgICB2 aW50MzJtMV90IHYyID0gX19yaXNjdl92bGUzMl92X2kzMm0xX3R1ICh2LCBpbiArIDEwMCArIGkg KyAxMDAwLCA0KTsNCj4gKyAgICB2aW50MzJtMV90IHYzID0gX19yaXNjdl92YWFkZF92eF9pMzJt MSAodjIsIDAsIFZYUk1fUk5FLCA0KTsNCj4gKyAgICB2MyA9IF9fcmlzY3ZfdmFhZGRfdnhfaTMy bTEgKHYzLCAzLCBWWFJNX1JORSwgNCk7DQo+ICsgICAgX19yaXNjdl92c2UzMl92X2kzMm0xIChv dXQgKyAxMDAgKyBpICsgMTAwMCwgdjMsIDQpOw0KPiArICB9DQo+ICt9DQo+ICsNCj4gKy8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7Y3Nyd2lccyt2eHJtLFxzKjF9IDEgfSB9 ICovDQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge2NzcndpXHMrdnhy bSxccyoyfSAxIH0gfSAqLw0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L3Jpc2N2L3J2di9iYXNlL3Z4cm0tNi5jIA0KPiBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9y aXNjdi9ydnYvYmFzZS92eHJtLTYuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAw MDAwMDAwMDAwMC4uNGIzNDZkNjdjMjcNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2Jhc2UvdnhybS02LmMNCj4gQEAgLTAsMCArMSwx NSBAQA0KPiArLyogeyBkZy1kbyBjb21waWxlIH0gKi8NCj4gKy8qIHsgZGctb3B0aW9ucyAiLW1h cmNoPXJ2NjRnY3YgLW1hYmk9bHA2NGQgLU8zIiB9ICovDQo+ICsNCj4gKyNpbmNsdWRlICJyaXNj dl92ZWN0b3IuaCINCj4gKw0KPiArdm9pZCBmICh2b2lkICogaW4sIHZvaWQgKm91dCwgaW50MzJf dCB4LCBpbnQgbiwgaW50IG0pIHsNCj4gKyAgdmludDMybTFfdCB2ID0gX19yaXNjdl92bGUzMl92 X2kzMm0xIChpbiwgNCk7DQo+ICsgIHZpbnQzMm0xX3QgdjIgPSBfX3Jpc2N2X3ZsZTMyX3ZfaTMy bTFfdHUgKHYsIGluICsgMTAwLCA0KTsNCj4gKyAgdmludDMybTFfdCB2MyA9IF9fcmlzY3ZfdmFh ZGRfdnhfaTMybTEgKHYyLCAwLCBWWFJNX1JETiwgNCk7DQo+ICsgIHYzID0gX19yaXNjdl92YWFk ZF92eF9pMzJtMSAodjMsIDMsIFZYUk1fUkROLCA0KTsNCj4gKyAgX19yaXNjdl92c2UzMl92X2kz Mm0xIChvdXQgKyAxMDAsIHYzLCA0KTsgfQ0KPiArDQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXItdGltZXMge2NzcndpXHMrdnhybSxccyoyfSAxIH0gfSAqLw0KPiBkaWZmIC0tZ2l0 IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9iYXNlL3Z4cm0tNy5jIA0KPiBi L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYmFzZS92eHJtLTcuYw0KPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMC4uMWNhNzk1Y2UzZjQNCj4gLS0t IC9kZXYvbnVsbA0KPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2Jh c2UvdnhybS03LmMNCj4gQEAgLTAsMCArMSwxNiBAQA0KPiArLyogeyBkZy1kbyBjb21waWxlIH0g Ki8NCj4gKy8qIHsgZGctb3B0aW9ucyAiLW1hcmNoPXJ2NjRnY3YgLW1hYmk9bHA2NGQgLU8zIiB9 ICovDQo+ICsNCj4gKyNpbmNsdWRlICJyaXNjdl92ZWN0b3IuaCINCj4gKw0KPiArdm9pZCBmICh2 b2lkICogaW4sIHZvaWQgKm91dCwgaW50MzJfdCB4LCBpbnQgbiwgaW50IG0pIHsNCj4gKyAgdmlu dDMybTFfdCB2ID0gX19yaXNjdl92bGUzMl92X2kzMm0xIChpbiwgNCk7DQo+ICsgIHZpbnQzMm0x X3QgdjIgPSBfX3Jpc2N2X3ZsZTMyX3ZfaTMybTFfdHUgKHYsIGluICsgMTAwLCA0KTsNCj4gKyAg dmludDMybTFfdCB2MyA9IF9fcmlzY3ZfdmFhZGRfdnhfaTMybTEgKHYyLCAwLCBWWFJNX1JORSwg NCk7DQo+ICsgIHYzID0gX19yaXNjdl92YWFkZF92eF9pMzJtMSAodjMsIDMsIFZYUk1fUkROLCA0 KTsNCj4gKyAgX19yaXNjdl92c2UzMl92X2kzMm0xIChvdXQgKyAxMDAsIHYzLCA0KTsgfQ0KPiAr DQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge2NzcndpXHMrdnhybSxc cyoxfSAxIH0gfSAqLw0KPiArLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtj c3J3aVxzK3Z4cm0sXHMqMn0gMSB9IH0gKi8NCj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9yaXNjdi9ydnYvYmFzZS92eHJtLTguYyANCj4gYi9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvcmlzY3YvcnZ2L2Jhc2UvdnhybS04LmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQN Cj4gaW5kZXggMDAwMDAwMDAwMDAuLjU3OTlmNzMxZTIxDQo+IC0tLSAvZGV2L251bGwNCj4gKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9iYXNlL3Z4cm0tOC5jDQo+IEBA IC0wLDAgKzEsMTggQEANCj4gKy8qIHsgZGctZG8gY29tcGlsZSB9ICovDQo+ICsvKiB7IGRnLW9w dGlvbnMgIi1tYXJjaD1ydjY0Z2N2IC1tYWJpPWxwNjRkIC1PMyAtZm5vLXNjaGVkdWxlLWluc25z IA0KPiArLWZuby1zY2hlZHVsZS1pbnNuczIiIH0gKi8NCj4gKw0KPiArI2luY2x1ZGUgInJpc2N2 X3ZlY3Rvci5oIg0KPiArDQo+ICt2b2lkIGYgKHZvaWQgKiBpbiwgdm9pZCAqb3V0LCBpbnQzMl90 IHgsIGludCBuLCBpbnQgbSkgew0KPiArICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgew0K PiArICAgIHZpbnQzMm0xX3QgdiA9IF9fcmlzY3ZfdmxlMzJfdl9pMzJtMSAoaW4gKyBpLCA0KTsN Cj4gKyAgICB2aW50MzJtMV90IHYyID0gX19yaXNjdl92bGUzMl92X2kzMm0xX3R1ICh2LCBpbiAr IDEwMCArIGksIDQpOw0KPiArICAgIHZpbnQzMm0xX3QgdjMgPSBfX3Jpc2N2X3ZhYWRkX3Z4X2kz Mm0xICh2MiwgMCwgVlhSTV9SRE4sIDQpOw0KPiArICAgIHYzID0gX19yaXNjdl92YWFkZF92eF9p MzJtMSAodjMsIDMsIFZYUk1fUkROLCA0KTsNCj4gKyAgICBfX3Jpc2N2X3ZzZTMyX3ZfaTMybTEg KG91dCArIDEwMCArIGksIHYzLCA0KTsNCj4gKyAgfQ0KPiArfQ0KPiArDQo+ICsvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgDQo+ICt7Y3Nyd2lccyt2eHJtLFxzKjJccyt2c2V0 aXZsaVxzK3plcm8sXHMqNCxccyplMzIsXHMqbTEsXHMqdHUsXHMqbVthdV0NCj4gK30gMSB9IH0g Ki8NCj4gKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7Y3Nyd2lccyt2eHJt LFxzKjJ9IDEgfSB9ICovDQo+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv cmlzY3YvcnZ2L2Jhc2UvdnhybS05LmMgDQo+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jp c2N2L3J2di9iYXNlL3Z4cm0tOS5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAw MDAwMDAwMDAwLi4xMzkyMWQ0YWYyMQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYmFzZS92eHJtLTkuYw0KPiBAQCAtMCwwICsxLDI2 IEBADQo+ICsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLw0KPiArLyogeyBkZy1vcHRpb25zICItbWFy Y2g9cnY2NGdjdiAtbWFiaT1scDY0ZCAtTzMgLWZuby1zY2hlZHVsZS1pbnNucyANCj4gKy1mbm8t c2NoZWR1bGUtaW5zbnMyIiB9ICovDQo+ICsNCj4gKyNpbmNsdWRlICJyaXNjdl92ZWN0b3IuaCIN Cj4gKw0KPiArdm9pZCBmICh2b2lkICogaW4sIHZvaWQgKm91dCwgaW50MzJfdCB4LCBpbnQgbiwg aW50IG0pIHsNCj4gKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsNCj4gKyAgICB2aW50 MzJtMV90IHYgPSBfX3Jpc2N2X3ZsZTMyX3ZfaTMybTEgKGluICsgaSwgNCk7DQo+ICsgICAgdmlu dDMybTFfdCB2MiA9IF9fcmlzY3ZfdmxlMzJfdl9pMzJtMV90dSAodiwgaW4gKyAxMDAgKyBpLCA0 KTsNCj4gKyAgICB2aW50MzJtMV90IHYzID0gX19yaXNjdl92YWFkZF92eF9pMzJtMSAodjIsIDAs IFZYUk1fUkROLCA0KTsNCj4gKyAgICB2MyA9IF9fcmlzY3ZfdmFhZGRfdnhfaTMybTEgKHYzLCAz LCBWWFJNX1JETiwgNCk7DQo+ICsgICAgX19yaXNjdl92c2UzMl92X2kzMm0xIChvdXQgKyAxMDAg KyBpLCB2MywgNCk7DQo+ICsgIH0NCj4gKw0KPiArICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkr Kykgew0KPiArICAgIHZpbnQzMm0xX3QgdiA9IF9fcmlzY3ZfdmxlMzJfdl9pMzJtMSAoaW4gKyBp ICsgMTAwMCwgNCk7DQo+ICsgICAgdmludDMybTFfdCB2MiA9IF9fcmlzY3ZfdmxlMzJfdl9pMzJt MV90dSAodiwgaW4gKyAxMDAgKyBpICsgMTAwMCwgNCk7DQo+ICsgICAgdmludDMybTFfdCB2MyA9 IF9fcmlzY3ZfdmFhZGRfdnhfaTMybTEgKHYyLCAwLCBWWFJNX1JETiwgNCk7DQo+ICsgICAgdjMg PSBfX3Jpc2N2X3ZhYWRkX3Z4X2kzMm0xICh2MywgMywgVlhSTV9SRE4sIDQpOw0KPiArICAgIF9f cmlzY3ZfdnNlMzJfdl9pMzJtMSAob3V0ICsgMTAwICsgaSArIDEwMDAsIHYzLCA0KTsNCj4gKyAg fQ0KPiArfQ0KPiArDQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgDQo+ ICt7Y3Nyd2lccyt2eHJtLFxzKjJccyt2c2V0aXZsaVxzK3plcm8sXHMqNCxccyplMzIsXHMqbTEs XHMqdHUsXHMqbVthdV0NCj4gK30gMSB9IH0gKi8NCj4gKy8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlci10aW1lcyB7Y3Nyd2lccyt2eHJtLFxzKjJ9IDEgfSB9ICovDQo+IC0tDQo+IDIuMzYu Mw0KPg0K