From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by sourceware.org (Postfix) with ESMTPS id 3E6553858D28 for ; Mon, 17 Jul 2023 10:27:44 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 3E6553858D28 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=1689589664; x=1721125664; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=Hu10+yHLaQKESXDhMGdLOW1rEDA+Tn23t3WekGPOBnE=; b=H3vfJuE4r8s75zAOEXM3wDooUTajEgihy69Y1fbz6G808/hvPot2UOcd lPlHyBebMHFApGyfJG4oxv/A0wpifWeqfgD4vey8cXL30dM6PqanKS1/O uF1cctYsHB73LdYrckaRbjysMDh7HVhcAnndHLUFW1KMMbKNnIgOdf4EH JbHZabnZNAZkPq6GkIBvL+JQ4kpKe19gZeP+Jkb4xHMDmiw6c1j4EFUF4 btC5dcOIIJHZbag/WZjavrey89b8O/P0HjGLoAwsz9WPamMp3MGd2LM6A MJBwJVezhYY9QVDkImVQXsAi8QYJM2XmjphA9mIDv6n5XJxWZOAbxPT5R w==; X-IronPort-AV: E=McAfee;i="6600,9927,10773"; a="368538356" X-IronPort-AV: E=Sophos;i="6.01,211,1684825200"; d="scan'208";a="368538356" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Jul 2023 03:27:42 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10773"; a="752842069" X-IronPort-AV: E=Sophos;i="6.01,211,1684825200"; d="scan'208";a="752842069" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by orsmga008.jf.intel.com with ESMTP; 17 Jul 2023 03:27:41 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Mon, 17 Jul 2023 03:27:41 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) 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.27; Mon, 17 Jul 2023 03:27:40 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) 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.27 via Frontend Transport; Mon, 17 Jul 2023 03:27:40 -0700 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.173) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.27; Mon, 17 Jul 2023 03:27:40 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Asj4NLUIHeXR77HQjlQo7Pa/3ZnsLgpfHlFLjKmIM++HQFBbajjcorpVMxiGfpdzIsfrDrJ9sCrVXahbhmKqRYVSaa+UDiDAPxtGbqHEzBLKBkCYwkiG8eXBvjIK1Zm+UzHmIJg/2fcVhShuiUxLxK9QHN0Yqq58ueQ4f/Upg7wCLiPXWSkrbbSv8d2MGhrZDRqLgQ2qrO+4YsWbfzcweStKQEZ8ClMkqH5DEEIaHmmSA5bz1cZ4xfAp7nq+EJWCNmtFjYFwznvlehmwZA/+V3aQfEhMrXMfDuAUGtZTjvG1W5K6Pr0+K8p1tbvKCA+2OLXPwSfObx9iEpeD6u1taA== 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=Hu10+yHLaQKESXDhMGdLOW1rEDA+Tn23t3WekGPOBnE=; b=UI4+dv580RSq3b8fDz8mZ78XP5WMaHc/xV0DFIesYD4NdgkawsVBMe9EoXhGyc4kAangCJb8wre0iSVqisG5ufryfPPSRoRCHkoI6xlqteCPDtuSSqITDCuxLlXbAfwvG5HeTTqKEdYwzm96hUFl1OrDd1lRCxgsnV5d/XztrShWWwR0DjBfqwXy9MjJ06uOX6mpMJc7yEcsdbtMETSMA03a70GkDNSHf7fI8DYAUe5ckPVH77wNQSqQksW2mOjlJG/35bjGk58QfG4/YioTIFRj9L/97qgTNgzQRTj0iMxRpK0vUJv/FX2KLPvakJdKKqejfoU9rTLOIVmC5nrcag== 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 IA0PR11MB8379.namprd11.prod.outlook.com (2603:10b6:208:488::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6588.32; Mon, 17 Jul 2023 10:27:32 +0000 Received: from MW5PR11MB5908.namprd11.prod.outlook.com ([fe80::21a9:85fa:b8a8:8052]) by MW5PR11MB5908.namprd11.prod.outlook.com ([fe80::21a9:85fa:b8a8:8052%3]) with mapi id 15.20.6588.031; Mon, 17 Jul 2023 10:27:32 +0000 From: "Li, Pan2" To: Kito Cheng , Juzhe-Zhong 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 V2] RISC-V: Support non-SLP unordered reduction Thread-Topic: [PATCH V2] RISC-V: Support non-SLP unordered reduction Thread-Index: AQHZuIeVHeCcxnyIuUCt363udK8Yuq+9smMAgAAO83A= Date: Mon, 17 Jul 2023 10:27:32 +0000 Message-ID: References: <20230717081946.187709-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_|IA0PR11MB8379:EE_ x-ms-office365-filtering-correlation-id: 7a88826a-dd46-4984-af7d-08db86b06e4b x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 7f1RFFKsIIf/cTQoBzwSiq6AN7kosXWUSfe36J2lEfjqjEb+56OfUJA20Eb3dWWSZoTEjsbSLKsGWJvUTrbRSkl20uMUKXm4K2EpYrwQNu1dI/TyFYlMWADCTwSJ2ORaZTbzYkhVMJFxQBXQ8DFLRxeRcPmJZ9DGGfX+lRDoqsvLJng4L3aHsiUcsJYQe+kquBGgaMojcZCbDLeixhGzYwdwqxxChZjbiiofCewx3edl1Ff8rC7J+4P5Zs6w4sQ4GzN1zKi5MzKFplfjQrKfN3TJmjRuDOOAazoChcu7YQ+pF1uJXxBCl7TYb+74VcXu4WrbQmToVNhKjHhOEyjJo4yxCmz+If62gdq+hi6YqhIFxVT7qNmKbkqkXey0qtn8tjYCV/VHO7Bh/6OaIP4+MW7YlNCr3rsjdVV3d1Hj+eIgI/uJz7i8q5gW2IxAgff32sRQv6qlPfeQMZqGnNVe7lC1yg8XatSTCz7JEgCJW5jHhXqo1le0x/dnfvS1euom6+CKvMLmt5/518Qk6s/ZC4lux3tDWs+I1onsyWhZkEYwnuy6RqAevrvm5TXqK9iLjtR8YnE04cNvKyYRR1US3LvdQyqzDJflVfkmK9bLFNLlMr+KLEzmbajX7XLXKPaL 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)(396003)(366004)(136003)(346002)(376002)(39860400002)(451199021)(478600001)(71200400001)(7696005)(110136005)(54906003)(186003)(53546011)(6506007)(26005)(9686003)(76116006)(2906002)(30864003)(41300700001)(316002)(66476007)(66946007)(64756008)(66556008)(66446008)(4326008)(5660300002)(52536014)(8676002)(8936002)(38100700002)(122000001)(82960400001)(33656002)(86362001)(38070700005)(83380400001)(55016003)(84970400001)(559001)(579004)(77204004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?TG1EOU9ydmY5ZDZQMWNwUDkySHFrZGF6Y1MxY0lIMUpRYXkrSHlSYmZZdk5j?= =?utf-8?B?VHpxSUtaV3BxckVxM0FFc0IxalkxNGlxWUtOcjZ6d05CdnFDTUZkb3hzaWsy?= =?utf-8?B?Q2UvMFRqNGROSzFlck1HOFlpbFVPUGNMVE1hTVJaSTJlM2RTaU9JUFVLa0oz?= =?utf-8?B?cy9rWlArZlpBM1BwVGtkWnAxeUUrVG5yZjRicWtEUU5SZGlNdW56ZlJpWkd4?= =?utf-8?B?MEFXOW9QVk8rUUtmbDE2dnpGMDdYUjhFZXViTXprL052SHUzRjBFSlRrUjUr?= =?utf-8?B?YUExbWlpVWFzYS9DMnBhSnZDYlN0V3p3RzBxM3ZOczQyWVYwWGtaa096ZEpo?= =?utf-8?B?N213MFlBdG5GTUNCb012NUY2bHBTanI5WW42dWJBNEZRVlQ1MmplTkVYNUM2?= =?utf-8?B?ZFNSZWNPSHc1VzhYMTVyUXBnRGhTM1diZm1lTy92UTY1K3lrOHQvNlYwSjB1?= =?utf-8?B?YUVKV2xGUll5ckhmTXZ4dGVUNkZ4aENMeXVRMDc4Q0djbDZrS25xYk9ZempC?= =?utf-8?B?QWI0UDlrSllmQXRPQk5oMDE4VkN2V1ZscmpNb3ZpVzJZcE5mN2NUZDVRNERw?= =?utf-8?B?Mk9SY2NDK3llZk1kdUxiaXljUFA0WEJUUjRiSHRXRVM2SE1NUWVDVUVkS29X?= =?utf-8?B?SVlEOE5BRU0vbHVjeEpyV1AyeG5rY1FLT2IwVHlTZnFDMkt4UlRMUkxxWW9T?= =?utf-8?B?dDJyN1NBV0NkVC9wVkFCUWh0b2I0RWtWNGwwb1RWNW01MmN2NG05R2krWlZp?= =?utf-8?B?ZGNaQ2tVbDJ2L0ZTSDVGeTh0d1lKQ1ZWb0JMR2lrZmxpTlV1WStOYjdSTXd2?= =?utf-8?B?R2RObEtMaEMzU1lCYVJmTkgydXhYS2VPdGsrT3RpMENMQ0RBbUl5SnRRbkRr?= =?utf-8?B?cDE5QjZ2cy9rNE1sanhHOWw1V2xVTUQyN2Z4YjlhMXh6S3p0dC9ISGZyWTNP?= =?utf-8?B?ODVRVzRsWmFUZzJQRGUyYkU1SGhOQmQxT1VwWmRIdE5BQWxiRmNOUjZ4UHB4?= =?utf-8?B?dWFRYUF6MjFiZkpvc2xlZVUvYThFejdzcjY3QXR0dUxRSFNvTitWa2FvM0lW?= =?utf-8?B?ZjR6VDRobXNXb1ZDemluQm56Yk9GZDhnRHdtd2pwenpnaklnYWNURDhyT2Ny?= =?utf-8?B?K05wWk1nSUd3U1NDRUorWUFFZ3R5ekVYVGIrSWV1dmN1NFBTcUNOQitGTFdP?= =?utf-8?B?Qk5OT0QxVDdXay93NGdvSHNPRjhBeGpkYThVSXZWMjdGUWw0Tyt2c1A0OGFL?= =?utf-8?B?ZENSWmFSR0xBZnZ6TzZNYUxaYWN0WHJkWGdzZWtzMEZqM05DYmVqRnN2YmJl?= =?utf-8?B?TXhwdWZkMmdISkxVcHZsN3F2U0xKd0dKem9ScTU3QTlrLzlydld6QkVzTm9P?= =?utf-8?B?TTZRaklEcE4za0RBU0hFUDJLc0pVYnhWUGFDZit4UGNUK1hrNmNvcnc1bUdt?= =?utf-8?B?YW52aHdibXdVUnp3QVN6NmN1QXZLUDkwN1pjMkltdDBkOUJPQ1JneGN1aGdj?= =?utf-8?B?c1BGTklFWmpoWHhKTmViL1NJS0VPVnMvQ1F6Q0dScDFFVndwTGVqNWxtOVdM?= =?utf-8?B?MmxTUmluRm84dHdNQTJZK2xPVUxwVHhkc2w0d1dJazRuVFpWMkNWMjd2bTZk?= =?utf-8?B?Mit4blBkcEF2THk2QS8zWTNjTXZJbHZaNm85Y0VST3J4MFQ0K1pVQU01Z3gv?= =?utf-8?B?blRIK3h6R3dkQnJYbWR4a0NHdlpidHpNWUlHZ1cwakIzaG0zUisyTTVadTcv?= =?utf-8?B?MnFqSmVTSTZ5Nm95VXlKL3QwanpXMVEyY1ErREh3eENGTys3OHE4VGRZZmZU?= =?utf-8?B?Q044YXNXelJKVGFYRVZaUDBwbzU2RzBmY3ZObkQ1T2hjZ25EMkFvSWgwbVgv?= =?utf-8?B?TlptSFZKNkY0QkZra3FhaHhDYWdXVzIvSFYvYW1oZUR6QWw1U3IxWUtaYnU1?= =?utf-8?B?VCt0TjBlY3hsUmRpRmhmOUpnNktMYTFHem01MlJWbjF2SXZ4KzVvaCtSb2hB?= =?utf-8?B?b3E2VzJvRHNXdzJ4UkRiOElra3BIaHFldHh4U0NqU1Rub0M5R0ZBdFlXRUJt?= =?utf-8?B?a1VXcHhSbVlVTW5EWlVSZnJWVVpiRzk0MFg1Rm01NFdtQ29XaHdNbVVxaE15?= =?utf-8?Q?NGY8=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: 7a88826a-dd46-4984-af7d-08db86b06e4b X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Jul 2023 10:27:32.5669 (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: iNX3Vcl61DOnWwtJEtuzNrXtec3UoNKGmMSOl9Od21IOqME/9iQOkHb2xe0oPfY431TmoRB+ss8j9oRBPbUJcA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR11MB8379 X-OriginatorOrg: intel.com X-Spam-Status: No, score=-11.5 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: Q29tbWl0dGVkLCB0aGFua3MgS2l0by4NCg0KUGFuDQoNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t LS0tDQpGcm9tOiBHY2MtcGF0Y2hlcyA8Z2NjLXBhdGNoZXMtYm91bmNlcytwYW4yLmxpPWludGVs LmNvbUBnY2MuZ251Lm9yZz4gT24gQmVoYWxmIE9mIEtpdG8gQ2hlbmcgdmlhIEdjYy1wYXRjaGVz DQpTZW50OiBNb25kYXksIEp1bHkgMTcsIDIwMjMgNTozMyBQTQ0KVG86IEp1emhlLVpob25nIDxq dXpoZS56aG9uZ0ByaXZhaS5haT4NCkNjOiBnY2MtcGF0Y2hlc0BnY2MuZ251Lm9yZzsga2l0by5j aGVuZ0BnbWFpbC5jb207IHBhbG1lckBkYWJiZWx0LmNvbTsgcGFsbWVyQHJpdm9zaW5jLmNvbTsg amVmZnJleWFsYXdAZ21haWwuY29tOyByZGFwcC5nY2NAZ21haWwuY29tDQpTdWJqZWN0OiBSZTog W1BBVENIIFYyXSBSSVNDLVY6IFN1cHBvcnQgbm9uLVNMUCB1bm9yZGVyZWQgcmVkdWN0aW9uDQoN CkxHVE0sIHRoYW5rcyA6KQ0KDQpPbiBNb24sIEp1bCAxNywgMjAyMyBhdCA0OjIw4oCvUE0gSnV6 aGUtWmhvbmcgPGp1emhlLnpob25nQHJpdmFpLmFpPiB3cm90ZToNCj4NCj4gVGhpcyBwYXRjaCBh ZGQgcmVkdWNfKl9zY2FsIHRvIHN1cHBvcnQgcmVkdWN0aW9uIGF1dG8tdmVjdG9yaXphdGlvbi4N Cj4NCj4gVXNlIENPTkRfTEVOXyogKyByZWR1Y18qX3NjYWwgdG8gc3VwcG9ydCB1bm9yZGVyZWQg bm9uLVNMUCBhdXRvLXZlY3Rvcml6YXRpb24uDQo+DQo+IENvbnNpZGVyIHRoaXMgZm9sbG93aW5n IGNhc2U6DQo+IGludCBfX2F0dHJpYnV0ZV9fKChub2lwYSkpDQo+IGFuZF9sb29wIChpbnQzMl90 ICogX19yZXN0cmljdCB4LA0KPiBpbnQzMl90IG4sIGludCByZXMpDQo+IHsNCj4gICBmb3IgKGlu dCBpID0gMDsgaSA8IG47ICsraSkNCj4gICAgIHJlcyAmPSB4W2ldOw0KPiAgIHJldHVybiByZXM7 DQo+IH0NCj4NCj4gQVNNOg0KPiBhbmRfbG9vcDoNCj4gICAgICAgICBibGUgICAgIGExLHplcm8s Lkw0DQo+ICAgICAgICAgdnNldHZsaSBhMyx6ZXJvLGUzMixtMSx0YSxtYQ0KPiAgICAgICAgIHZt di52LmkgdjEsLTENCj4gLkwzOg0KPiAgICAgICAgIHZzZXR2bGkgYTUsYTEsZTMyLG0xLHR1LG1h ICAgICAgIC0tLS0tLS0tLS0tLT4gTVVTVCBCRSAiVFUiLg0KPiAgICAgICAgIHNsbGkgICAgYTQs YTUsMg0KPiAgICAgICAgIHN1YiAgICAgYTEsYTEsYTUNCj4gICAgICAgICB2bGUzMi52IHYyLDAo YTApDQo+ICAgICAgICAgYWRkICAgICBhMCxhMCxhNA0KPiAgICAgICAgIHZhbmQudnYgdjEsdjIs djENCj4gICAgICAgICBibmUgICAgIGExLHplcm8sLkwzDQo+ICAgICAgICAgdnNldGl2bGkgICAg ICAgIHplcm8sMSxlMzIsbTEsdGEsbWENCj4gICAgICAgICB2bXYudi5pIHYyLC0xDQo+ICAgICAg ICAgdnNldHZsaSBhMyx6ZXJvLGUzMixtMSx0YSxtYQ0KPiAgICAgICAgIHZyZWRhbmQudnMgICAg ICB2MSx2MSx2Mg0KPiAgICAgICAgIHZtdi54LnMgYTUsdjENCj4gICAgICAgICBhbmQgICAgIGEw LGEyLGE1DQo+ICAgICAgICAgcmV0DQo+IC5MNDoNCj4gICAgICAgICBtdiAgICAgIGEwLGEyDQo+ ICAgICAgICAgcmV0DQo+DQo+IEZpeCBidWcgb2YgVlNFVFZMIFBBU1Mgd2hpY2ggaXMgY2F1c2Vk IGJ5IHJlZHVjdGlvbiB0ZXN0Y2FzZS4NCj4NCj4gU0xQIHJlZHVjdGlvbiBhbmQgZmxvYXRpbmct cG9pbnQgaW4tb3JkZXIgcmVkdWN0aW9uIGFyZSBub3Qgc3VwcG9ydGVkIHlldC4NCj4NCj4gZ2Nj L0NoYW5nZUxvZzoNCj4NCj4gICAgICAgICAqIGNvbmZpZy9yaXNjdi9hdXRvdmVjLm1kIChyZWR1 Y19wbHVzX3NjYWxfPG1vZGU+KTogTmV3IHBhdHRlcm4uDQo+ICAgICAgICAgKHJlZHVjX3NtYXhf c2NhbF88bW9kZT4pOiBEaXR0by4NCj4gICAgICAgICAocmVkdWNfdW1heF9zY2FsXzxtb2RlPik6 IERpdHRvLg0KPiAgICAgICAgIChyZWR1Y19zbWluX3NjYWxfPG1vZGU+KTogRGl0dG8uDQo+ICAg ICAgICAgKHJlZHVjX3VtaW5fc2NhbF88bW9kZT4pOiBEaXR0by4NCj4gICAgICAgICAocmVkdWNf YW5kX3NjYWxfPG1vZGU+KTogRGl0dG8uDQo+ICAgICAgICAgKHJlZHVjX2lvcl9zY2FsXzxtb2Rl Pik6IERpdHRvLg0KPiAgICAgICAgIChyZWR1Y194b3Jfc2NhbF88bW9kZT4pOiBEaXR0by4NCj4g ICAgICAgICAqIGNvbmZpZy9yaXNjdi9yaXNjdi1wcm90b3MuaCAoZW51bSBpbnNuX3R5cGUpOiBB ZGQgcmVkdWN0aW9uLg0KPiAgICAgICAgIChleHBhbmRfcmVkdWN0aW9uKTogTmV3IGZ1bmN0aW9u Lg0KPiAgICAgICAgICogY29uZmlnL3Jpc2N2L3Jpc2N2LXYuY2MgKGVtaXRfdmxtYXhfcmVkdWN0 aW9uX2luc24pOiBEaXR0by4NCj4gICAgICAgICAoZW1pdF92bG1heF9mcF9yZWR1Y3Rpb25faW5z bik6IERpdHRvLg0KPiAgICAgICAgIChnZXRfbTFfbW9kZSk6IERpdHRvLg0KPiAgICAgICAgIChl eHBhbmRfY29uZF9sZW5fYmlub3ApOiBGaXggbmFtZS4NCj4gICAgICAgICAoZXhwYW5kX3JlZHVj dGlvbik6IE5ldyBmdW5jdGlvbg0KPiAgICAgICAgICogY29uZmlnL3Jpc2N2L3Jpc2N2LXZzZXR2 bC5jYyAoZ2VuX3ZzZXR2bF9wYXQpOiBGaXggVlNFVFZMIEJVRy4NCj4gICAgICAgICAodmFsaWRh dGVfY2hhbmdlX29yX2ZhaWwpOiBOZXcgZnVuY3Rpb24uDQo+ICAgICAgICAgKGNoYW5nZV9pbnNu KTogRml4IFZTRVRWTCBCVUcuDQo+ICAgICAgICAgKGNoYW5nZV92c2V0dmxfaW5zbik6IERpdHRv Lg0KPiAgICAgICAgIChwYXNzX3ZzZXR2bDo6YmFja3dhcmRfZGVtYW5kX2Z1c2lvbik6IERpdHRv Lg0KPiAgICAgICAgIChwYXNzX3ZzZXR2bDo6ZGZfcG9zdF9vcHRpbWl6YXRpb24pOiBEaXR0by4N Cj4NCj4gZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6DQo+DQo+ICAgICAgICAgKiBnY2MudGFyZ2V0 L3Jpc2N2L3J2di9ydnYuZXhwOiBBZGQgcmVkdWN0aW9uIHRlc3RzLg0KPiAgICAgICAgICogZ2Nj LnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9yZWR1Yy9yZWR1Yy0xLmM6IE5ldyB0ZXN0Lg0KPiAg ICAgICAgICogZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9yZWR1Yy9yZWR1Yy0yLmM6IE5l dyB0ZXN0Lg0KPiAgICAgICAgICogZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9yZWR1Yy9y ZWR1Yy0zLmM6IE5ldyB0ZXN0Lg0KPiAgICAgICAgICogZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0 b3ZlYy9yZWR1Yy9yZWR1Yy00LmM6IE5ldyB0ZXN0Lg0KPiAgICAgICAgICogZ2NjLnRhcmdldC9y aXNjdi9ydnYvYXV0b3ZlYy9yZWR1Yy9yZWR1Y19ydW4tMS5jOiBOZXcgdGVzdC4NCj4gICAgICAg ICAqIGdjYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcmVkdWMvcmVkdWNfcnVuLTIuYzogTmV3 IHRlc3QuDQo+ICAgICAgICAgKiBnY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3JlZHVjL3Jl ZHVjX3J1bi0zLmM6IE5ldyB0ZXN0Lg0KPiAgICAgICAgICogZ2NjLnRhcmdldC9yaXNjdi9ydnYv YXV0b3ZlYy9yZWR1Yy9yZWR1Y19ydW4tNC5jOiBOZXcgdGVzdC4NCj4NCj4gLS0tDQo+ICBnY2Mv Y29uZmlnL3Jpc2N2L2F1dG92ZWMubWQgICAgICAgICAgICAgICAgICAgfCAxMzggKysrKysrKysr KysrKysrKysrDQo+ICBnY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXByb3Rvcy5oICAgICAgICAgICAg ICAgfCAgIDIgKw0KPiAgZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12LmNjICAgICAgICAgICAgICAg ICAgIHwgIDg0ICsrKysrKysrKystDQo+ICBnY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZzZXR2bC5j YyAgICAgICAgICAgICAgfCAgNTcgKysrKysrLS0NCj4gIC4uLi9yaXNjdi9ydnYvYXV0b3ZlYy9y ZWR1Yy9yZWR1Yy0xLmMgICAgICAgICB8IDExOCArKysrKysrKysrKysrKysNCj4gIC4uLi9yaXNj di9ydnYvYXV0b3ZlYy9yZWR1Yy9yZWR1Yy0yLmMgICAgICAgICB8IDEyOSArKysrKysrKysrKysr KysrDQo+ICAuLi4vcmlzY3YvcnZ2L2F1dG92ZWMvcmVkdWMvcmVkdWMtMy5jICAgICAgICAgfCAg NjUgKysrKysrKysrDQo+ICAuLi4vcmlzY3YvcnZ2L2F1dG92ZWMvcmVkdWMvcmVkdWMtNC5jICAg ICAgICAgfCAgNTkgKysrKysrKysNCj4gIC4uLi9yaXNjdi9ydnYvYXV0b3ZlYy9yZWR1Yy9yZWR1 Y19ydW4tMS5jICAgICB8ICA1NiArKysrKysrDQo+ICAuLi4vcmlzY3YvcnZ2L2F1dG92ZWMvcmVk dWMvcmVkdWNfcnVuLTIuYyAgICAgfCAgNzkgKysrKysrKysrKw0KPiAgLi4uL3Jpc2N2L3J2di9h dXRvdmVjL3JlZHVjL3JlZHVjX3J1bi0zLmMgICAgIHwgIDQ5ICsrKysrKysNCj4gIC4uLi9yaXNj di9ydnYvYXV0b3ZlYy9yZWR1Yy9yZWR1Y19ydW4tNC5jICAgICB8ICA2NiArKysrKysrKysNCj4g IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvcnZ2LmV4cCAgICB8ICAgMiArDQo+ ICAxMyBmaWxlcyBjaGFuZ2VkLCA4ODcgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pDQo+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9h dXRvdmVjL3JlZHVjL3JlZHVjLTEuYw0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9yZWR1Yy9yZWR1Yy0yLmMNCj4gIGNyZWF0 ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMv cmVkdWMvcmVkdWMtMy5jDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3JlZHVjL3JlZHVjLTQuYw0KPiAgY3JlYXRlIG1vZGUg MTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9yZWR1Yy9y ZWR1Y19ydW4tMS5jDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L3Jpc2N2L3J2di9hdXRvdmVjL3JlZHVjL3JlZHVjX3J1bi0yLmMNCj4gIGNyZWF0ZSBtb2Rl IDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcmVkdWMv cmVkdWNfcnVuLTMuYw0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9yZWR1Yy9yZWR1Y19ydW4tNC5jDQo+DQo+IGRpZmYgLS1n aXQgYS9nY2MvY29uZmlnL3Jpc2N2L2F1dG92ZWMubWQgYi9nY2MvY29uZmlnL3Jpc2N2L2F1dG92 ZWMubWQNCj4gaW5kZXggNjRhNDFiZDcxMDEuLjhjZGVjNzViYWNmIDEwMDY0NA0KPiAtLS0gYS9n Y2MvY29uZmlnL3Jpc2N2L2F1dG92ZWMubWQNCj4gKysrIGIvZ2NjL2NvbmZpZy9yaXNjdi9hdXRv dmVjLm1kDQo+IEBAIC0xNTU0LDMgKzE1NTQsMTQxIEBADQo+ICAgIHJpc2N2X3ZlY3Rvcjo6ZXhw YW5kX2NvbmRfbGVuX3Rlcm5vcCAoaWNvZGUsIG9wZXJhbmRzKTsNCj4gICAgRE9ORTsNCj4gIH0p DQo+ICsNCj4gKzs7ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gKzs7ID09IFJlZHVjdGlvbnMNCj4gKzs7 ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0NCj4gKw0KPiArOzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiArOzsgLS0t LSBbSU5UXSBUcmVlIHJlZHVjdGlvbnMNCj4gKzs7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gKzs7IElu Y2x1ZGVzOg0KPiArOzsgLSB2cmVkc3VtLnZzDQo+ICs7OyAtIHZyZWRtYXh1LnZzDQo+ICs7OyAt IHZyZWRtYXgudnMNCj4gKzs7IC0gdnJlZG1pbnUudnMNCj4gKzs7IC0gdnJlZG1pbi52cw0KPiAr OzsgLSB2cmVkYW5kLnZzDQo+ICs7OyAtIHZyZWRvci52cw0KPiArOzsgLSB2cmVkeG9yLnZzDQo+ ICs7OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICsNCj4gKyhkZWZpbmVfZXhwYW5kICJyZWR1Y19wbHVz X3NjYWxfPG1vZGU+Ig0KPiArICBbKG1hdGNoX29wZXJhbmQ6PFZFTD4gMCAicmVnaXN0ZXJfb3Bl cmFuZCIpDQo+ICsgICAobWF0Y2hfb3BlcmFuZDpWSSAxICJyZWdpc3Rlcl9vcGVyYW5kIildDQo+ ICsgICJUQVJHRVRfVkVDVE9SIg0KPiArew0KPiArICByaXNjdl92ZWN0b3I6OmV4cGFuZF9yZWR1 Y3Rpb24gKFBMVVMsIG9wZXJhbmRzLCBDT05TVDBfUlRYICg8VkVMPm1vZGUpKTsNCj4gKyAgRE9O RTsNCj4gK30pDQo+ICsNCj4gKyhkZWZpbmVfZXhwYW5kICJyZWR1Y19zbWF4X3NjYWxfPG1vZGU+ Ig0KPiArICBbKG1hdGNoX29wZXJhbmQ6PFZFTD4gMCAicmVnaXN0ZXJfb3BlcmFuZCIpDQo+ICsg ICAobWF0Y2hfb3BlcmFuZDpWSSAxICJyZWdpc3Rlcl9vcGVyYW5kIildDQo+ICsgICJUQVJHRVRf VkVDVE9SIg0KPiArew0KPiArICBpbnQgcHJlYyA9IEdFVF9NT0RFX1BSRUNJU0lPTiAoPFZFTD5t b2RlKTsNCj4gKyAgcnR4IG1pbiA9IGltbWVkX3dpZGVfaW50X2NvbnN0ICh3aTo6bWluX3ZhbHVl IChwcmVjLCBTSUdORUQpLCA8VkVMPm1vZGUpOw0KPiArICByaXNjdl92ZWN0b3I6OmV4cGFuZF9y ZWR1Y3Rpb24gKFNNQVgsIG9wZXJhbmRzLCBtaW4pOw0KPiArICBET05FOw0KPiArfSkNCj4gKw0K PiArKGRlZmluZV9leHBhbmQgInJlZHVjX3VtYXhfc2NhbF88bW9kZT4iDQo+ICsgIFsobWF0Y2hf b3BlcmFuZDo8VkVMPiAwICJyZWdpc3Rlcl9vcGVyYW5kIikNCj4gKyAgIChtYXRjaF9vcGVyYW5k OlZJIDEgInJlZ2lzdGVyX29wZXJhbmQiKV0NCj4gKyAgIlRBUkdFVF9WRUNUT1IiDQo+ICt7DQo+ ICsgIHJpc2N2X3ZlY3Rvcjo6ZXhwYW5kX3JlZHVjdGlvbiAoVU1BWCwgb3BlcmFuZHMsIENPTlNU MF9SVFggKDxWRUw+bW9kZSkpOw0KPiArICBET05FOw0KPiArfSkNCj4gKw0KPiArKGRlZmluZV9l eHBhbmQgInJlZHVjX3NtaW5fc2NhbF88bW9kZT4iDQo+ICsgIFsobWF0Y2hfb3BlcmFuZDo8VkVM PiAwICJyZWdpc3Rlcl9vcGVyYW5kIikNCj4gKyAgIChtYXRjaF9vcGVyYW5kOlZJIDEgInJlZ2lz dGVyX29wZXJhbmQiKV0NCj4gKyAgIlRBUkdFVF9WRUNUT1IiDQo+ICt7DQo+ICsgIGludCBwcmVj ID0gR0VUX01PREVfUFJFQ0lTSU9OICg8VkVMPm1vZGUpOw0KPiArICBydHggbWF4ID0gaW1tZWRf d2lkZV9pbnRfY29uc3QgKHdpOjptYXhfdmFsdWUgKHByZWMsIFNJR05FRCksIDxWRUw+bW9kZSk7 DQo+ICsgIHJpc2N2X3ZlY3Rvcjo6ZXhwYW5kX3JlZHVjdGlvbiAoU01JTiwgb3BlcmFuZHMsIG1h eCk7DQo+ICsgIERPTkU7DQo+ICt9KQ0KPiArDQo+ICsoZGVmaW5lX2V4cGFuZCAicmVkdWNfdW1p bl9zY2FsXzxtb2RlPiINCj4gKyAgWyhtYXRjaF9vcGVyYW5kOjxWRUw+IDAgInJlZ2lzdGVyX29w ZXJhbmQiKQ0KPiArICAgKG1hdGNoX29wZXJhbmQ6VkkgMSAicmVnaXN0ZXJfb3BlcmFuZCIpXQ0K PiArICAiVEFSR0VUX1ZFQ1RPUiINCj4gK3sNCj4gKyAgaW50IHByZWMgPSBHRVRfTU9ERV9QUkVD SVNJT04gKDxWRUw+bW9kZSk7DQo+ICsgIHJ0eCBtYXggPSBpbW1lZF93aWRlX2ludF9jb25zdCAo d2k6Om1heF92YWx1ZSAocHJlYywgVU5TSUdORUQpLCA8VkVMPm1vZGUpOw0KPiArICByaXNjdl92 ZWN0b3I6OmV4cGFuZF9yZWR1Y3Rpb24gKFVNSU4sIG9wZXJhbmRzLCBtYXgpOw0KPiArICBET05F Ow0KPiArfSkNCj4gKw0KPiArKGRlZmluZV9leHBhbmQgInJlZHVjX2FuZF9zY2FsXzxtb2RlPiIN Cj4gKyAgWyhtYXRjaF9vcGVyYW5kOjxWRUw+IDAgInJlZ2lzdGVyX29wZXJhbmQiKQ0KPiArICAg KG1hdGNoX29wZXJhbmQ6VkkgMSAicmVnaXN0ZXJfb3BlcmFuZCIpXQ0KPiArICAiVEFSR0VUX1ZF Q1RPUiINCj4gK3sNCj4gKyAgcmlzY3ZfdmVjdG9yOjpleHBhbmRfcmVkdWN0aW9uIChBTkQsIG9w ZXJhbmRzLCBDT05TVE0xX1JUWCAoPFZFTD5tb2RlKSk7DQo+ICsgIERPTkU7DQo+ICt9KQ0KPiAr DQo+ICsoZGVmaW5lX2V4cGFuZCAicmVkdWNfaW9yX3NjYWxfPG1vZGU+Ig0KPiArICBbKG1hdGNo X29wZXJhbmQ6PFZFTD4gMCAicmVnaXN0ZXJfb3BlcmFuZCIpDQo+ICsgICAobWF0Y2hfb3BlcmFu ZDpWSSAxICJyZWdpc3Rlcl9vcGVyYW5kIildDQo+ICsgICJUQVJHRVRfVkVDVE9SIg0KPiArew0K PiArICByaXNjdl92ZWN0b3I6OmV4cGFuZF9yZWR1Y3Rpb24gKElPUiwgb3BlcmFuZHMsIENPTlNU MF9SVFggKDxWRUw+bW9kZSkpOw0KPiArICBET05FOw0KPiArfSkNCj4gKw0KPiArKGRlZmluZV9l eHBhbmQgInJlZHVjX3hvcl9zY2FsXzxtb2RlPiINCj4gKyAgWyhtYXRjaF9vcGVyYW5kOjxWRUw+ IDAgInJlZ2lzdGVyX29wZXJhbmQiKQ0KPiArICAgKG1hdGNoX29wZXJhbmQ6VkkgMSAicmVnaXN0 ZXJfb3BlcmFuZCIpXQ0KPiArICAiVEFSR0VUX1ZFQ1RPUiINCj4gK3sNCj4gKyAgcmlzY3ZfdmVj dG9yOjpleHBhbmRfcmVkdWN0aW9uIChYT1IsIG9wZXJhbmRzLCBDT05TVDBfUlRYICg8VkVMPm1v ZGUpKTsNCj4gKyAgRE9ORTsNCj4gK30pDQo+ICsNCj4gKzs7IC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4g Kzs7IC0tLS0gW0ZQXSBUcmVlIHJlZHVjdGlvbnMNCj4gKzs7IC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4g Kzs7IEluY2x1ZGVzOg0KPiArOzsgLSB2ZnJlZHVzdW0udnMNCj4gKzs7IC0gdmZyZWRtYXgudnMN Cj4gKzs7IC0gdmZyZWRtaW4udnMNCj4gKzs7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gKw0KPiArKGRl ZmluZV9leHBhbmQgInJlZHVjX3BsdXNfc2NhbF88bW9kZT4iDQo+ICsgIFsobWF0Y2hfb3BlcmFu ZDo8VkVMPiAwICJyZWdpc3Rlcl9vcGVyYW5kIikNCj4gKyAgIChtYXRjaF9vcGVyYW5kOlZGIDEg InJlZ2lzdGVyX29wZXJhbmQiKV0NCj4gKyAgIlRBUkdFVF9WRUNUT1IiDQo+ICt7DQo+ICsgIHJp c2N2X3ZlY3Rvcjo6ZXhwYW5kX3JlZHVjdGlvbiAoUExVUywgb3BlcmFuZHMsIENPTlNUMF9SVFgg KDxWRUw+bW9kZSkpOw0KPiArICBET05FOw0KPiArfSkNCj4gKw0KPiArKGRlZmluZV9leHBhbmQg InJlZHVjX3NtYXhfc2NhbF88bW9kZT4iDQo+ICsgIFsobWF0Y2hfb3BlcmFuZDo8VkVMPiAwICJy ZWdpc3Rlcl9vcGVyYW5kIikNCj4gKyAgIChtYXRjaF9vcGVyYW5kOlZGIDEgInJlZ2lzdGVyX29w ZXJhbmQiKV0NCj4gKyAgIlRBUkdFVF9WRUNUT1IiDQo+ICt7DQo+ICsgIFJFQUxfVkFMVUVfVFlQ RSBydjsNCj4gKyAgcmVhbF9pbmYgKCZydiwgdHJ1ZSk7DQo+ICsgIHJ0eCBmID0gY29uc3RfZG91 YmxlX2Zyb21fcmVhbF92YWx1ZSAocnYsIDxWRUw+bW9kZSk7DQo+ICsgIHJpc2N2X3ZlY3Rvcjo6 ZXhwYW5kX3JlZHVjdGlvbiAoU01BWCwgb3BlcmFuZHMsIGYpOw0KPiArICBET05FOw0KPiArfSkN Cj4gKw0KPiArKGRlZmluZV9leHBhbmQgInJlZHVjX3NtaW5fc2NhbF88bW9kZT4iDQo+ICsgIFso bWF0Y2hfb3BlcmFuZDo8VkVMPiAwICJyZWdpc3Rlcl9vcGVyYW5kIikNCj4gKyAgIChtYXRjaF9v cGVyYW5kOlZGIDEgInJlZ2lzdGVyX29wZXJhbmQiKV0NCj4gKyAgIlRBUkdFVF9WRUNUT1IiDQo+ ICt7DQo+ICsgIFJFQUxfVkFMVUVfVFlQRSBydjsNCj4gKyAgcmVhbF9pbmYgKCZydiwgZmFsc2Up Ow0KPiArICBydHggZiA9IGNvbnN0X2RvdWJsZV9mcm9tX3JlYWxfdmFsdWUgKHJ2LCA8VkVMPm1v ZGUpOw0KPiArICByaXNjdl92ZWN0b3I6OmV4cGFuZF9yZWR1Y3Rpb24gKFNNSU4sIG9wZXJhbmRz LCBmKTsNCj4gKyAgRE9ORTsNCj4gK30pDQo+IGRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jpc2N2 L3Jpc2N2LXByb3Rvcy5oIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi1wcm90b3MuaA0KPiBpbmRl eCBmOTFjMmQ1MWMzYy4uMTZmYjhkYWJjYTAgMTAwNjQ0DQo+IC0tLSBhL2djYy9jb25maWcvcmlz Y3YvcmlzY3YtcHJvdG9zLmgNCj4gKysrIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi1wcm90b3Mu aA0KPiBAQCAtMTk4LDYgKzE5OCw3IEBAIGVudW0gaW5zbl90eXBlDQo+ICAgIFJWVl9DT01QUkVT U19PUCA9IDQsDQo+ICAgIFJWVl9HQVRIRVJfTV9PUCA9IDUsDQo+ICAgIFJWVl9TQ0FUVEVSX01f T1AgPSA0LA0KPiArICBSVlZfUkVEVUNUSU9OX09QID0gMywNCj4gIH07DQo+ICBlbnVtIHZsbXVs X3R5cGUNCj4gIHsNCj4gQEAgLTI4MSw2ICsyODIsNyBAQCBib29sIGhhc192aV92YXJpYW50X3Ag KHJ0eF9jb2RlLCBydHgpOw0KPiAgdm9pZCBleHBhbmRfdmVjX2NtcCAocnR4LCBydHhfY29kZSwg cnR4LCBydHgpOw0KPiAgYm9vbCBleHBhbmRfdmVjX2NtcF9mbG9hdCAocnR4LCBydHhfY29kZSwg cnR4LCBydHgsIGJvb2wpOw0KPiAgdm9pZCBleHBhbmRfY29uZF9sZW5fYmlub3AgKHJ0eF9jb2Rl LCBydHggKik7DQo+ICt2b2lkIGV4cGFuZF9yZWR1Y3Rpb24gKHJ0eF9jb2RlLCBydHggKiwgcnR4 KTsNCj4gICNlbmRpZg0KPiAgYm9vbCBzZXc2NF9zY2FsYXJfaGVscGVyIChydHggKiwgcnR4ICos IHJ0eCwgbWFjaGluZV9tb2RlLA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wsIHZv aWQgKCopKHJ0eCAqLCBydHgpKTsNCj4gZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3Yvcmlz Y3Ytdi5jYyBiL2djYy9jb25maWcvcmlzY3YvcmlzY3Ytdi5jYw0KPiBpbmRleCBjM2ZkNGExYjAz Yi4uYjQ4ODRhMzA4NzIgMTAwNjQ0DQo+IC0tLSBhL2djYy9jb25maWcvcmlzY3YvcmlzY3Ytdi5j Yw0KPiArKysgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXYuY2MNCj4gQEAgLTExNTksNiArMTE1 OSw0MyBAQCBlbWl0X3ZsbWF4X2NvbXByZXNzX2luc24gKHVuc2lnbmVkIGljb2RlLCBydHggKm9w cykNCj4gICAgZS5lbWl0X2luc24gKChlbnVtIGluc25fY29kZSkgaWNvZGUsIG9wcyk7DQo+ICB9 DQo+DQo+ICsvKiBFbWl0IHJlZHVjdGlvbiBpbnN0cnVjdGlvbi4gICovDQo+ICtzdGF0aWMgdm9p ZA0KPiArZW1pdF92bG1heF9yZWR1Y3Rpb25faW5zbiAodW5zaWduZWQgaWNvZGUsIGludCBvcF9u dW0sIHJ0eCAqb3BzKQ0KPiArew0KPiArICBtYWNoaW5lX21vZGUgZGVzdF9tb2RlID0gR0VUX01P REUgKG9wc1swXSk7DQo+ICsgIG1hY2hpbmVfbW9kZSBtYXNrX21vZGUgPSBnZXRfbWFza19tb2Rl IChHRVRfTU9ERSAob3BzWzFdKSkucmVxdWlyZSAoKTsNCj4gKyAgaW5zbl9leHBhbmRlcjxSVlZf SU5TTl9PUEVSQU5EU19NQVg+IGUgKG9wX251bSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLyogSEFTX0RFU1RfUCAqLyB0cnVlLA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBGVUxMWV9VTk1BU0tFRF9QICovIHRydWUs DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFVTRV9SRUFM X01FUkdFX1AgKi8gZmFsc2UsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8qIEhBU19BVkxfUCAqLyB0cnVlLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAvKiBWTE1BWF9QICovIHRydWUsIGRlc3RfbW9kZSwNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFza19tb2RlKTsNCj4gKw0KPiAr ICBlLnNldF9wb2xpY3kgKFRBSUxfQU5ZKTsNCj4gKyAgZS5lbWl0X2luc24gKChlbnVtIGluc25f Y29kZSkgaWNvZGUsIG9wcyk7DQo+ICt9DQo+ICsNCj4gKy8qIEVtaXQgcmVkdWN0aW9uIGluc3Ry dWN0aW9uLiAgKi8NCj4gK3N0YXRpYyB2b2lkDQo+ICtlbWl0X3ZsbWF4X2ZwX3JlZHVjdGlvbl9p bnNuICh1bnNpZ25lZCBpY29kZSwgaW50IG9wX251bSwgcnR4ICpvcHMpDQo+ICt7DQo+ICsgIG1h Y2hpbmVfbW9kZSBkZXN0X21vZGUgPSBHRVRfTU9ERSAob3BzWzBdKTsNCj4gKyAgbWFjaGluZV9t b2RlIG1hc2tfbW9kZSA9IGdldF9tYXNrX21vZGUgKEdFVF9NT0RFIChvcHNbMV0pKS5yZXF1aXJl ICgpOw0KPiArICBpbnNuX2V4cGFuZGVyPFJWVl9JTlNOX09QRVJBTkRTX01BWD4gZSAob3BfbnVt LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBIQVNfREVT VF9QICovIHRydWUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC8qIEZVTExZX1VOTUFTS0VEX1AgKi8gdHJ1ZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLyogVVNFX1JFQUxfTUVSR0VfUCAqLyBmYWxzZSwNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSEFTX0FWTF9QICovIHRydWUs DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFZMTUFYX1Ag Ki8gdHJ1ZSwgZGVzdF9tb2RlLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBtYXNrX21vZGUpOw0KPiArDQo+ICsgIGUuc2V0X3BvbGljeSAoVEFJTF9BTlkpOw0K PiArICBlLnNldF9yb3VuZGluZ19tb2RlIChGUk1fRFlOKTsNCj4gKyAgZS5lbWl0X2luc24gKChl bnVtIGluc25fY29kZSkgaWNvZGUsIG9wcyk7DQo+ICt9DQo+ICsNCj4gIC8qIEVtaXQgbWVyZ2Ug aW5zdHJ1Y3Rpb24uICAqLw0KPg0KPiAgc3RhdGljIG1hY2hpbmVfbW9kZQ0KPiBAQCAtMTY1MSw2 ICsxNjg4LDE3IEBAIGdldF9tYXNrX21vZGUgKG1hY2hpbmVfbW9kZSBtb2RlKQ0KPiAgICByZXR1 cm4gZ2V0X3ZlY3Rvcl9tb2RlIChCSW1vZGUsIEdFVF9NT0RFX05VTklUUyAobW9kZSkpOw0KPiAg fQ0KPg0KPiArLyogUmV0dXJuIHRoZSBhcHByb3ByaWF0ZSBNMSBtb2RlIGZvciBNT0RFLiAgKi8N Cj4gKw0KPiArc3RhdGljIG9wdF9tYWNoaW5lX21vZGUNCj4gK2dldF9tMV9tb2RlIChtYWNoaW5l X21vZGUgbW9kZSkNCj4gK3sNCj4gKyAgc2NhbGFyX21vZGUgc21vZGUgPSBHRVRfTU9ERV9JTk5F UiAobW9kZSk7DQo+ICsgIHVuc2lnbmVkIGludCBieXRlcyA9IEdFVF9NT0RFX1NJWkUgKHNtb2Rl KTsNCj4gKyAgcG9seV91aW50NjQgbTFfbnVuaXRzID0gZXhhY3RfZGl2IChCWVRFU19QRVJfUklT Q1ZfVkVDVE9SLCBieXRlcyk7DQo+ICsgIHJldHVybiBnZXRfdmVjdG9yX21vZGUgKHNtb2RlLCBt MV9udW5pdHMpOw0KPiArfQ0KPiArDQo+ICAvKiBSZXR1cm4gdGhlIFJWViB2ZWN0b3IgbW9kZSB0 aGF0IGhhcyBOVU5JVFMgZWxlbWVudHMgb2YgbW9kZSBJTk5FUl9NT0RFLg0KPiAgICAgVGhpcyBm dW5jdGlvbiBpcyBub3Qgb25seSB1c2VkIGJ5IGJ1aWx0aW5zLCBidXQgYWxzbyB3aWxsIGJlIHVz ZWQgYnkNCj4gICAgIGF1dG8tdmVjdG9yaXphdGlvbiBpbiB0aGUgZnV0dXJlLiAgKi8NCj4gQEAg LTMxMjEsOSArMzE2OSw5IEBAIGV4cGFuZF9jb25kX2xlbl9iaW5vcCAocnR4X2NvZGUgY29kZSwg cnR4ICpvcHMpDQo+ICAgICAgICBydHggb3BzW10gPSB7ZGVzdCwgbWFzaywgbWVyZ2UsIHNyYzEs IHNyYzJ9Ow0KPiAgICAgICAgaW5zbl9jb2RlIGljb2RlID0gY29kZV9mb3JfcHJlZCAoY29kZSwg bW9kZSk7DQo+ICAgICAgICBpZiAobmVlZHNfZnBfcm91bmRpbmcgKGNvZGUsIG1vZGUpKQ0KPiAt ICAgICAgIGVtaXRfbm9udmxtYXhfZnBfdHVfaW5zbiAoaWNvZGUsIFJWVl9CSU5PUF9NVSwgb3Bz LCBsZW4pOw0KPiArICAgICAgIGVtaXRfbm9udmxtYXhfZnBfdHVfaW5zbiAoaWNvZGUsIFJWVl9C SU5PUF9UVSwgb3BzLCBsZW4pOw0KPiAgICAgICAgZWxzZQ0KPiAtICAgICAgIGVtaXRfbm9udmxt YXhfdHVfaW5zbiAoaWNvZGUsIFJWVl9CSU5PUF9NVSwgb3BzLCBsZW4pOw0KPiArICAgICAgIGVt aXRfbm9udmxtYXhfdHVfaW5zbiAoaWNvZGUsIFJWVl9CSU5PUF9UVSwgb3BzLCBsZW4pOw0KPiAg ICAgIH0NCj4gICAgZWxzZQ0KPiAgICAgIC8qIEZJWE1FOiBFbmFibGUgdGhpcyBjYXNlIHdoZW4g d2Ugc3VwcG9ydCBpdCBpbiB0aGUgbWlkZGxlLWVuZC4gICovDQo+IEBAIC0zMzE2LDQgKzMzNjQs MzYgQEAgZXhwYW5kX2NvbmRfbGVuX3Rlcm5vcCAodW5zaWduZWQgaWNvZGUsIHJ0eCAqb3BzKQ0K PiAgICAgIGdjY191bnJlYWNoYWJsZSAoKTsNCj4gIH0NCj4NCj4gKy8qIEV4cGFuZCByZWR1Y3Rp b24gb3BlcmF0aW9ucy4gICovDQo+ICt2b2lkDQo+ICtleHBhbmRfcmVkdWN0aW9uIChydHhfY29k ZSBjb2RlLCBydHggKm9wcywgcnR4IGluaXQpDQo+ICt7DQo+ICsgIG1hY2hpbmVfbW9kZSB2bW9k ZSA9IEdFVF9NT0RFIChvcHNbMV0pOw0KPiArICBtYWNoaW5lX21vZGUgbTFfbW9kZSA9IGdldF9t MV9tb2RlICh2bW9kZSkucmVxdWlyZSAoKTsNCj4gKyAgbWFjaGluZV9tb2RlIG0xX21tb2RlID0g Z2V0X21hc2tfbW9kZSAobTFfbW9kZSkucmVxdWlyZSAoKTsNCj4gKw0KPiArICBydHggbTFfdG1w ID0gZ2VuX3JlZ19ydHggKG0xX21vZGUpOw0KPiArICBydHggbTFfbWFzayA9IGdlbl9zY2FsYXJf bW92ZV9tYXNrIChtMV9tbW9kZSk7DQo+ICsgIHJ0eCBtMV91bmRlZiA9IFJWVl9WVU5ERUYgKG0x X21vZGUpOw0KPiArICBydHggc2NhbGFyX21vdmVfb3BzW10gPSB7bTFfdG1wLCBtMV9tYXNrLCBt MV91bmRlZiwgaW5pdH07DQo+ICsgIGVtaXRfc2NhbGFyX21vdmVfaW5zbiAoY29kZV9mb3JfcHJl ZF9icm9hZGNhc3QgKG0xX21vZGUpLCBzY2FsYXJfbW92ZV9vcHMpOw0KPiArDQo+ICsgIHJ0eCBt MV90bXAyID0gZ2VuX3JlZ19ydHggKG0xX21vZGUpOw0KPiArICBydHggcmVkdWNfb3BzW10gPSB7 bTFfdG1wMiwgb3BzWzFdLCBtMV90bXB9Ow0KPiArDQo+ICsgIGlmIChGTE9BVF9NT0RFX1AgKHZt b2RlKSAmJiBjb2RlID09IFBMVVMpDQo+ICsgICAgew0KPiArICAgICAgaW5zbl9jb2RlIGljb2Rl DQo+ICsgICAgICAgPSBjb2RlX2Zvcl9wcmVkX3JlZHVjX3BsdXMgKFVOU1BFQ19VTk9SREVSRUQs IHZtb2RlLCBtMV9tb2RlKTsNCj4gKyAgICAgIGVtaXRfdmxtYXhfZnBfcmVkdWN0aW9uX2luc24g KGljb2RlLCBSVlZfUkVEVUNUSU9OX09QLCByZWR1Y19vcHMpOw0KPiArICAgIH0NCj4gKyAgZWxz ZQ0KPiArICAgIHsNCj4gKyAgICAgIGluc25fY29kZSBpY29kZSA9IGNvZGVfZm9yX3ByZWRfcmVk dWMgKGNvZGUsIHZtb2RlLCBtMV9tb2RlKTsNCj4gKyAgICAgIGVtaXRfdmxtYXhfcmVkdWN0aW9u X2luc24gKGljb2RlLCBSVlZfUkVEVUNUSU9OX09QLCByZWR1Y19vcHMpOw0KPiArICAgIH0NCj4g Kw0KPiArICBlbWl0X2luc24gKGdlbl9wcmVkX2V4dHJhY3RfZmlyc3QgKG0xX21vZGUsIG9wc1sw XSwgbTFfdG1wMikpOw0KPiArfQ0KPiArDQo+ICB9IC8vIG5hbWVzcGFjZSByaXNjdl92ZWN0b3IN Cj4gZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3YvcmlzY3YtdnNldHZsLmNjIGIvZ2NjL2Nv bmZpZy9yaXNjdi9yaXNjdi12c2V0dmwuY2MNCj4gaW5kZXggNTg2ZGM4ZTUzNzkuLmJiN2JhMTI5 YTVkIDEwMDY0NA0KPiAtLS0gYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZzZXR2bC5jYw0KPiAr KysgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZzZXR2bC5jYw0KPiBAQCAtNjQ2LDcgKzY0Niw4 IEBAIGdlbl92c2V0dmxfcGF0IChlbnVtIHZzZXR2bF90eXBlIGluc25fdHlwZSwgY29uc3Qgdmxf dnR5cGVfaW5mbyAmaW5mbywgcnR4IHZsKQ0KPiAgfQ0KPg0KPiAgc3RhdGljIHJ0eA0KPiAtZ2Vu X3ZzZXR2bF9wYXQgKHJ0eF9pbnNuICpyaW5zbiwgY29uc3QgdmVjdG9yX2luc25faW5mbyAmaW5m bykNCj4gK2dlbl92c2V0dmxfcGF0IChydHhfaW5zbiAqcmluc24sIGNvbnN0IHZlY3Rvcl9pbnNu X2luZm8gJmluZm8sDQo+ICsgICAgICAgICAgICAgICBydHggdmwgPSBOVUxMX1JUWCkNCj4gIHsN Cj4gICAgcnR4IG5ld19wYXQ7DQo+ICAgIHZsX3Z0eXBlX2luZm8gbmV3X2luZm8gPSBpbmZvOw0K PiBAQCAtNjU0LDE1ICs2NTUsMTcgQEAgZ2VuX3ZzZXR2bF9wYXQgKHJ0eF9pbnNuICpyaW5zbiwg Y29uc3QgdmVjdG9yX2luc25faW5mbyAmaW5mbykNCj4gICAgICAgICYmIGZhdWx0X2ZpcnN0X2xv YWRfcCAoaW5mby5nZXRfaW5zbiAoKS0+cnRsICgpKSkNCj4gICAgICBuZXdfaW5mby5zZXRfYXZs X2luZm8gKA0KPiAgICAgICAgYXZsX2luZm8gKGdldF9hdmwgKGluZm8uZ2V0X2luc24gKCktPnJ0 bCAoKSksIG51bGxwdHIpKTsNCj4gLSAgaWYgKHZzZXR2bF9pbnNuX3AgKHJpbnNuKSB8fCB2bG1h eF9hdmxfcCAoaW5mby5nZXRfYXZsICgpKSkNCj4gKyAgaWYgKHZsKQ0KPiArICAgIG5ld19wYXQg PSBnZW5fdnNldHZsX3BhdCAoVlNFVFZMX05PUk1BTCwgbmV3X2luZm8sIHZsKTsNCj4gKyAgZWxz ZQ0KPiAgICAgIHsNCj4gLSAgICAgIHJ0eCBkZXN0ID0gZ2V0X3ZsIChyaW5zbik7DQo+IC0gICAg ICBuZXdfcGF0ID0gZ2VuX3ZzZXR2bF9wYXQgKFZTRVRWTF9OT1JNQUwsIG5ld19pbmZvLCBkZXN0 KTsNCj4gKyAgICAgIGlmICh2c2V0dmxfaW5zbl9wIChyaW5zbikgfHwgdmxtYXhfYXZsX3AgKGlu Zm8uZ2V0X2F2bCAoKSkpDQo+ICsgICAgICAgbmV3X3BhdCA9IGdlbl92c2V0dmxfcGF0IChWU0VU VkxfTk9STUFMLCBuZXdfaW5mbywgZ2V0X3ZsIChyaW5zbikpOw0KPiArICAgICAgZWxzZSBpZiAo SU5TTl9DT0RFIChyaW5zbikgPT0gQ09ERV9GT1JfdnNldHZsX3Z0eXBlX2NoYW5nZV9vbmx5KQ0K PiArICAgICAgIG5ld19wYXQgPSBnZW5fdnNldHZsX3BhdCAoVlNFVFZMX1ZUWVBFX0NIQU5HRV9P TkxZLCBuZXdfaW5mbywgTlVMTF9SVFgpOw0KPiArICAgICAgZWxzZQ0KPiArICAgICAgIG5ld19w YXQgPSBnZW5fdnNldHZsX3BhdCAoVlNFVFZMX0RJU0NBUkRfUkVTVUxULCBuZXdfaW5mbywgTlVM TF9SVFgpOw0KPiAgICAgIH0NCj4gLSAgZWxzZSBpZiAoSU5TTl9DT0RFIChyaW5zbikgPT0gQ09E RV9GT1JfdnNldHZsX3Z0eXBlX2NoYW5nZV9vbmx5KQ0KPiAtICAgIG5ld19wYXQgPSBnZW5fdnNl dHZsX3BhdCAoVlNFVFZMX1ZUWVBFX0NIQU5HRV9PTkxZLCBuZXdfaW5mbywgTlVMTF9SVFgpOw0K PiAtICBlbHNlDQo+IC0gICAgbmV3X3BhdCA9IGdlbl92c2V0dmxfcGF0IChWU0VUVkxfRElTQ0FS RF9SRVNVTFQsIG5ld19pbmZvLCBOVUxMX1JUWCk7DQo+ICAgIHJldHVybiBuZXdfcGF0Ow0KPiAg fQ0KPg0KPiBAQCAtODA1LDYgKzgwOCwxNCBAQCBnZXRfdmxfdnR5cGVfaW5mbyAoY29uc3QgaW5z bl9pbmZvICppbnNuKQ0KPiAgICByZXR1cm4gaW5mbzsNCj4gIH0NCj4NCj4gKy8qIENoYW5nZSBp bnNuIGFuZCBBc3NlcnQgdGhlIGNoYW5nZSBhbHdheXMgaGFwcGVucy4gICovDQo+ICtzdGF0aWMg dm9pZA0KPiArdmFsaWRhdGVfY2hhbmdlX29yX2ZhaWwgKHJ0eCBvYmplY3QsIHJ0eCAqbG9jLCBy dHggbmV3X3J0eCwgYm9vbCBpbl9ncm91cCkNCj4gK3sNCj4gKyAgYm9vbCBjaGFuZ2VfcCA9IHZh bGlkYXRlX2NoYW5nZSAob2JqZWN0LCBsb2MsIG5ld19ydHgsIGluX2dyb3VwKTsNCj4gKyAgZ2Nj X2Fzc2VydCAoY2hhbmdlX3ApOw0KPiArfQ0KPiArDQo+ICBzdGF0aWMgdm9pZA0KPiAgY2hhbmdl X2luc24gKHJ0eF9pbnNuICpyaW5zbiwgcnR4IG5ld19wYXQpDQo+ICB7DQo+IEBAIC04MTgsNyAr ODI5LDcgQEAgY2hhbmdlX2luc24gKHJ0eF9pbnNuICpyaW5zbiwgcnR4IG5ld19wYXQpDQo+ICAg ICAgICBwcmludF9ydGxfc2luZ2xlIChkdW1wX2ZpbGUsIFBBVFRFUk4gKHJpbnNuKSk7DQo+ICAg ICAgfQ0KPg0KPiAtICB2YWxpZGF0ZV9jaGFuZ2UgKHJpbnNuLCAmUEFUVEVSTiAocmluc24pLCBu ZXdfcGF0LCBmYWxzZSk7DQo+ICsgIHZhbGlkYXRlX2NoYW5nZV9vcl9mYWlsIChyaW5zbiwgJlBB VFRFUk4gKHJpbnNuKSwgbmV3X3BhdCwgZmFsc2UpOw0KPg0KPiAgICBpZiAoZHVtcF9maWxlKQ0K PiAgICAgIHsNCj4gQEAgLTg3NCw3ICs4ODUsNyBAQCBjaGFuZ2VfaW5zbiAoZnVuY3Rpb25faW5m byAqc3NhLCBpbnNuX2NoYW5nZSBjaGFuZ2UsIGluc25faW5mbyAqaW5zbiwNCj4gICAgICB9DQo+ DQo+ICAgIGluc25fY2hhbmdlX3dhdGVybWFyayB3YXRlcm1hcms7DQo+IC0gIHZhbGlkYXRlX2No YW5nZSAocmluc24sICZQQVRURVJOIChyaW5zbiksIG5ld19wYXQsIHRydWUpOw0KPiArICB2YWxp ZGF0ZV9jaGFuZ2Vfb3JfZmFpbCAocmluc24sICZQQVRURVJOIChyaW5zbiksIG5ld19wYXQsIHRy dWUpOw0KPg0KPiAgICAvKiBUaGVzZSByb3V0aW5lcyByZXBvcnQgZmFpbHVyZXMgdGhlbXNlbHZl cy4gICovDQo+ICAgIGlmICghcmVjb2cgKGF0dGVtcHQsIGNoYW5nZSkgfHwgIWNoYW5nZV9pc193 b3J0aHdoaWxlIChjaGFuZ2UsIGZhbHNlKSkNCj4gQEAgLTkzMSw3ICs5NDIsOCBAQCBjaGFuZ2Vf aW5zbiAoZnVuY3Rpb25faW5mbyAqc3NhLCBpbnNuX2NoYW5nZSBjaGFuZ2UsIGluc25faW5mbyAq aW5zbiwNCj4gIH0NCj4NCj4gIHN0YXRpYyB2b2lkDQo+IC1jaGFuZ2VfdnNldHZsX2luc24gKGNv bnN0IGluc25faW5mbyAqaW5zbiwgY29uc3QgdmVjdG9yX2luc25faW5mbyAmaW5mbykNCj4gK2No YW5nZV92c2V0dmxfaW5zbiAoY29uc3QgaW5zbl9pbmZvICppbnNuLCBjb25zdCB2ZWN0b3JfaW5z bl9pbmZvICZpbmZvLA0KPiArICAgICAgICAgICAgICAgICAgIHJ0eCB2bCA9IE5VTExfUlRYKQ0K PiAgew0KPiAgICBydHhfaW5zbiAqcmluc247DQo+ICAgIGlmICh2ZWN0b3JfY29uZmlnX2luc25f cCAoaW5zbi0+cnRsICgpKSkNCj4gQEAgLTk0NSw3ICs5NTcsNyBAQCBjaGFuZ2VfdnNldHZsX2lu c24gKGNvbnN0IGluc25faW5mbyAqaW5zbiwgY29uc3QgdmVjdG9yX2luc25faW5mbyAmaW5mbykN Cj4gICAgICAgIHJpbnNuID0gUFJFVl9JTlNOIChpbnNuLT5ydGwgKCkpOw0KPiAgICAgICAgZ2Nj X2Fzc2VydCAodmVjdG9yX2NvbmZpZ19pbnNuX3AgKHJpbnNuKSk7DQo+ICAgICAgfQ0KPiAtICBy dHggbmV3X3BhdCA9IGdlbl92c2V0dmxfcGF0IChyaW5zbiwgaW5mbyk7DQo+ICsgIHJ0eCBuZXdf cGF0ID0gZ2VuX3ZzZXR2bF9wYXQgKHJpbnNuLCBpbmZvLCB2bCk7DQo+ICAgIGNoYW5nZV9pbnNu IChyaW5zbiwgbmV3X3BhdCk7DQo+ICB9DQo+DQo+IEBAIC0zMzc3LDcgKzMzODksMjAgQEAgcGFz c192c2V0dmw6OmJhY2t3YXJkX2RlbWFuZF9mdXNpb24gKHZvaWQpDQo+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19pbmZvKSkNCj4gICAgICAgICAgICAgICAgIGNv bnRpbnVlOw0KPg0KPiAtICAgICAgICAgICAgIGNoYW5nZV92c2V0dmxfaW5zbiAobmV3X2luZm8u Z2V0X2luc24gKCksIG5ld19pbmZvKTsNCj4gKyAgICAgICAgICAgICBydHggdmwgPSBOVUxMX1JU WDsNCj4gKyAgICAgICAgICAgICAvKiBCYWNrd2FyZCBWTE1BWCBWTDoNCj4gKyAgICAgICAgICAg ICAgICAgIGJiIDM6DQo+ICsgICAgICAgICAgICAgICAgICAgIHZzZXRpdmxpIHplcm8sIDEgLi4u IC0+IHZzZXR2bGkgdDEsIHplcm8NCj4gKyAgICAgICAgICAgICAgICAgICAgdm12LnMueA0KPiAr ICAgICAgICAgICAgICAgICAgYmIgNToNCj4gKyAgICAgICAgICAgICAgICAgICAgdnNldHZsaSB0 MSwgemVybyAuLi4gLT4gdG8gYmUgZWxpZGVkLg0KPiArICAgICAgICAgICAgICAgICAgICB2bHNl MTYudg0KPiArDQo+ICsgICAgICAgICAgICAgICAgICBXZSBzaG91bGQgZm9yd2FyZCAidDEiLiAg Ki8NCj4gKyAgICAgICAgICAgICBpZiAoIWJsb2NrX2luZm8ucmVhY2hpbmdfb3V0Lmhhc19hdmxf cmVnICgpDQo+ICsgICAgICAgICAgICAgICAgICYmIHZsbWF4X2F2bF9wIChuZXdfaW5mby5nZXRf YXZsICgpKSkNCj4gKyAgICAgICAgICAgICAgIHZsID0gZ2V0X3ZsIChwcm9wLmdldF9pbnNuICgp LT5ydGwgKCkpOw0KPiArICAgICAgICAgICAgIGNoYW5nZV92c2V0dmxfaW5zbiAobmV3X2luZm8u Z2V0X2luc24gKCksIG5ld19pbmZvLCB2bCk7DQo+ICAgICAgICAgICAgICAgaWYgKGJsb2NrX2lu Zm8ubG9jYWxfZGVtID09IGJsb2NrX2luZm8ucmVhY2hpbmdfb3V0KQ0KPiAgICAgICAgICAgICAg ICAgYmxvY2tfaW5mby5sb2NhbF9kZW0gPSBuZXdfaW5mbzsNCj4gICAgICAgICAgICAgICBibG9j a19pbmZvLnJlYWNoaW5nX291dCA9IG5ld19pbmZvOw0KPiBAQCAtNDUyNCwxMyArNDU0OSwxNSBA QCBwYXNzX3ZzZXR2bDo6ZGZfcG9zdF9vcHRpbWl6YXRpb24gKHZvaWQpIGNvbnN0DQo+ICAgICAg ICAgICAgICAgICAgICAgew0KPiAgICAgICAgICAgICAgICAgICAgICAgcnR4IG5ld19wYXQgPSBn ZW5fdnNldHZsX3BhdCAoVlNFVFZMX1ZUWVBFX0NIQU5HRV9PTkxZLA0KPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mbywgTlVMTF9SVFgpOw0K PiAtICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfY2hhbmdlIChyaW5zbiwgJlBBVFRFUk4g KHJpbnNuKSwgbmV3X3BhdCwgZmFsc2UpOw0KPiArICAgICAgICAgICAgICAgICAgICAgdmFsaWRh dGVfY2hhbmdlX29yX2ZhaWwgKHJpbnNuLCAmUEFUVEVSTiAocmluc24pLCBuZXdfcGF0LA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKTsNCj4g ICAgICAgICAgICAgICAgICAgICB9DQo+ICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCF2bG1h eF9hdmxfcCAoaW5mby5nZXRfYXZsICgpKSkNCj4gICAgICAgICAgICAgICAgICAgICB7DQo+ICAg ICAgICAgICAgICAgICAgICAgICBydHggbmV3X3BhdCA9IGdlbl92c2V0dmxfcGF0IChWU0VUVkxf RElTQ0FSRF9SRVNVTFQsIGluZm8sDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBOVUxMX1JUWCk7DQo+IC0gICAgICAgICAgICAgICAgICAgICB2 YWxpZGF0ZV9jaGFuZ2UgKHJpbnNuLCAmUEFUVEVSTiAocmluc24pLCBuZXdfcGF0LCBmYWxzZSk7 DQo+ICsgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZV9jaGFuZ2Vfb3JfZmFpbCAocmluc24s ICZQQVRURVJOIChyaW5zbiksIG5ld19wYXQsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZmFsc2UpOw0KPiAgICAgICAgICAgICAgICAgICAgIH0NCj4g ICAgICAgICAgICAgICAgIH0NCj4gICAgICAgICAgICAgfQ0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3JlZHVjL3JlZHVjLTEuYyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9yZWR1Yy9yZWR1Yy0xLmMN Cj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAuLjBkNTQzYWYxM2Nh DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2 L3J2di9hdXRvdmVjL3JlZHVjL3JlZHVjLTEuYw0KPiBAQCAtMCwwICsxLDExOCBAQA0KPiArLyog eyBkZy1kbyBjb21waWxlIH0gKi8NCj4gKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbWFy Y2g9cnYzMmdjdl96dmZoIC1tYWJpPWlscDMyZCAtLXBhcmFtPXJpc2N2LWF1dG92ZWMtcHJlZmVy ZW5jZT1zY2FsYWJsZSAtZmZhc3QtbWF0aCAtZm5vLXZlY3QtY29zdC1tb2RlbCIgfSAqLw0KPiAr DQo+ICsjaW5jbHVkZSA8c3RkaW50LWdjYy5oPg0KPiArDQo+ICsjZGVmaW5lIERFRl9SRURVQ19Q TFVTKFRZUEUpICAgICAgICAgICAgICAgICAgIFwNCj4gK1RZUEUgX19hdHRyaWJ1dGVfXyAoKG5v aW5saW5lLCBub2Nsb25lKSkgICAgICAgXA0KPiArcmVkdWNfcGx1c18jI1RZUEUgKFRZUEUgKmEs IGludCBuKSAgICAgICAgICAgICBcDQo+ICt7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwNCj4gKyAgVFlQRSByID0gMDsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXA0KPiArICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkgICAgICAgICAg ICAgICAgICBcDQo+ICsgICAgciArPSBhW2ldOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwNCj4gKyAgcmV0dXJuIHI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XA0KPiArfQ0KPiArDQo+ICsjZGVmaW5lIFRFU1RfUExVUyhUKSAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwNCj4gKyAgVCAoaW50OF90KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXA0KPiArICBUIChpbnQxNl90KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc DQo+ICsgIFQgKGludDMyX3QpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4g KyAgVCAoaW50NjRfdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBU ICh1aW50OF90KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIFQgKHVp bnQxNl90KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgVCAodWludDMy X3QpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBUICh1aW50NjRfdCkg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIFQgKF9GbG9hdDE2KSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgVCAoZmxvYXQpICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBUIChkb3VibGUpDQo+ICsNCj4gK1RFU1Rf UExVUyAoREVGX1JFRFVDX1BMVVMpDQo+ICsNCj4gKyNkZWZpbmUgREVGX1JFRFVDX01BWE1JTihU WVBFLCBOQU1FLCBDTVBfT1ApICAgXA0KPiArVFlQRSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUs IG5vY2xvbmUpKSAgICAgICBcDQo+ICtyZWR1Y18jI05BTUUjI18jI1RZUEUgKFRZUEUgKmEsIGlu dCBuKSAgICAgICAgIFwNCj4gK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXA0KPiArICBUWVBFIHIgPSAxMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcDQo+ICsgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKSAgICAgICAgICAgICAgICAg IFwNCj4gKyAgICByID0gYVtpXSBDTVBfT1AgciA/IGFbaV0gOiByOyAgICAgICAgICAgICAgXA0K PiArICByZXR1cm4gcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICt9 DQo+ICsNCj4gKyNkZWZpbmUgVEVTVF9NQVhNSU4oVCkgICAgICAgICAgICAgICAgICAgICAgICAg XA0KPiArICBUIChpbnQ4X3QsIG1heCwgPikgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ ICsgIFQgKGludDE2X3QsIG1heCwgPikgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAg VCAoaW50MzJfdCwgbWF4LCA+KSAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBUIChp bnQ2NF90LCBtYXgsID4pICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIFQgKHVpbnQ4 X3QsIG1heCwgPikgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgVCAodWludDE2X3Qs IG1heCwgPikgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBUICh1aW50MzJfdCwgbWF4 LCA+KSAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIFQgKHVpbnQ2NF90LCBtYXgsID4p ICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgVCAoX0Zsb2F0MTYsIG1heCwgPikgICAg ICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBUIChmbG9hdCwgbWF4LCA+KSAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcDQo+ICsgIFQgKGRvdWJsZSwgbWF4LCA+KSAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXA0KPiArICBUIChpbnQ4X3QsIG1pbiwgPCkgICAgICAgICAgICAgICAgICAgICAg ICAgICBcDQo+ICsgIFQgKGludDE2X3QsIG1pbiwgPCkgICAgICAgICAgICAgICAgICAgICAgICAg IFwNCj4gKyAgVCAoaW50MzJfdCwgbWluLCA8KSAgICAgICAgICAgICAgICAgICAgICAgICAgXA0K PiArICBUIChpbnQ2NF90LCBtaW4sIDwpICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsg IFQgKHVpbnQ4X3QsIG1pbiwgPCkgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgVCAo dWludDE2X3QsIG1pbiwgPCkgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBUICh1aW50 MzJfdCwgbWluLCA8KSAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIFQgKHVpbnQ2NF90 LCBtaW4sIDwpICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgVCAoX0Zsb2F0MTYsIG1p biwgPCkgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBUIChmbG9hdCwgbWluLCA8KSAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIFQgKGRvdWJsZSwgbWluLCA8KQ0KPiAr DQo+ICtURVNUX01BWE1JTiAoREVGX1JFRFVDX01BWE1JTikNCj4gKw0KPiArI2RlZmluZSBERUZf UkVEVUNfQklUV0lTRShUWVBFLCBOQU1FLCBCSVRfT1ApICBcDQo+ICtUWVBFIF9fYXR0cmlidXRl X18gKChub2lubGluZSwgbm9jbG9uZSkpICAgICAgIFwNCj4gK3JlZHVjXyMjTkFNRSMjXyMjVFlQ RSAoVFlQRSAqYSwgaW50IG4pICAgICAgICAgXA0KPiAreyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIFRZUEUgciA9IDEzOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyArK2kpICAg ICAgICAgICAgICAgICAgXA0KPiArICAgIHIgQklUX09QIGFbaV07ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcDQo+ICsgIHJldHVybiByOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwNCj4gK30NCj4gKw0KPiArI2RlZmluZSBURVNUX0JJVFdJU0UoVCkgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgVCAoaW50OF90LCBhbmQsICY9KSAgICAgICAg ICAgICAgICAgICAgICAgICAgXA0KPiArICBUIChpbnQxNl90LCBhbmQsICY9KSAgICAgICAgICAg ICAgICAgICAgICAgICBcDQo+ICsgIFQgKGludDMyX3QsIGFuZCwgJj0pICAgICAgICAgICAgICAg ICAgICAgICAgIFwNCj4gKyAgVCAoaW50NjRfdCwgYW5kLCAmPSkgICAgICAgICAgICAgICAgICAg ICAgICAgXA0KPiArICBUICh1aW50OF90LCBhbmQsICY9KSAgICAgICAgICAgICAgICAgICAgICAg ICBcDQo+ICsgIFQgKHVpbnQxNl90LCBhbmQsICY9KSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXA0KPiArICBUICh1aW50MzJfdCwgYW5kLCAmPSkgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwNCj4gKyAgVCAodWludDY0X3QsIGFuZCwgJj0pICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwNCj4gKyAgVCAoaW50OF90LCBpb3IsIHw9KSAgICAgICAgICAgICAgICAgICAg ICAgICAgXA0KPiArICBUIChpbnQxNl90LCBpb3IsIHw9KSAgICAgICAgICAgICAgICAgICAgICAg ICBcDQo+ICsgIFQgKGludDMyX3QsIGlvciwgfD0pICAgICAgICAgICAgICAgICAgICAgICAgIFwN Cj4gKyAgVCAoaW50NjRfdCwgaW9yLCB8PSkgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiAr ICBUICh1aW50OF90LCBpb3IsIHw9KSAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIFQg KHVpbnQxNl90LCBpb3IsIHw9KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiAr ICBUICh1aW50MzJfdCwgaW9yLCB8PSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwN Cj4gKyAgVCAodWludDY0X3QsIGlvciwgfD0pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwN Cj4gKyAgVCAoaW50OF90LCB4b3IsIF49KSAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiAr ICBUIChpbnQxNl90LCB4b3IsIF49KSAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIFQg KGludDMyX3QsIHhvciwgXj0pICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgVCAoaW50 NjRfdCwgeG9yLCBePSkgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBUICh1aW50OF90 LCB4b3IsIF49KSAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIFQgKHVpbnQxNl90LCB4 b3IsIF49KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBUICh1aW50MzJf dCwgeG9yLCBePSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgVCAodWlu dDY0X3QsIHhvciwgXj0pDQo+ICsNCj4gK1RFU1RfQklUV0lTRSAoREVGX1JFRFVDX0JJVFdJU0Up DQo+ICsNCj4gKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7dnJlZHN1bVwu dnNccyt2WzAtOV0rLFxzKnZbMC05XSssXHMqdlswLTldK30gOCB9IH0gKi8NCj4gKy8qIHsgZGct ZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7dnJlZG1heFwudnNccyt2WzAtOV0rLFxzKnZb MC05XSssXHMqdlswLTldK30gNCB9IH0gKi8NCj4gKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt Ymxlci10aW1lcyB7dnJlZG1heHVcLnZzXHMrdlswLTldKyxccyp2WzAtOV0rLFxzKnZbMC05XSt9 IDQgfSB9ICovDQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge3ZyZWRt aW5cLnZzXHMrdlswLTldKyxccyp2WzAtOV0rLFxzKnZbMC05XSt9IDQgfSB9ICovDQo+ICsvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge3ZyZWRtaW51XC52c1xzK3ZbMC05XSss XHMqdlswLTldKyxccyp2WzAtOV0rfSA0IH0gfSAqLw0KPiArLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyLXRpbWVzIHt2cmVkYW5kXC52c1xzK3ZbMC05XSssXHMqdlswLTldKyxccyp2WzAt OV0rfSA4IH0gfSAqLw0KPiArLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHt2 cmVkb3JcLnZzXHMrdlswLTldKyxccyp2WzAtOV0rLFxzKnZbMC05XSt9IDggfSB9ICovDQo+ICsv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge3ZyZWR4b3JcLnZzXHMrdlswLTld Kyxccyp2WzAtOV0rLFxzKnZbMC05XSt9IDggfSB9ICovDQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXItdGltZXMge3ZmcmVkdXN1bVwudnNccyt2WzAtOV0rLFxzKnZbMC05XSssXHMq dlswLTldK30gMyB9IH0gKi8NCj4gKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1l cyB7dmZyZWRtYXhcLnZzXHMrdlswLTldKyxccyp2WzAtOV0rLFxzKnZbMC05XSt9IDMgfSB9ICov DQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge3ZmcmVkbWluXC52c1xz K3ZbMC05XSssXHMqdlswLTldKyxccyp2WzAtOV0rfSAzIH0gfSAqLw0KPiBkaWZmIC0tZ2l0IGEv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3JlZHVjL3JlZHVjLTIu YyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9yZWR1Yy9yZWR1 Yy0yLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAuLjEzNmE4 YTM3OGJmDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L3Jpc2N2L3J2di9hdXRvdmVjL3JlZHVjL3JlZHVjLTIuYw0KPiBAQCAtMCwwICsxLDEyOSBAQA0K PiArLyogeyBkZy1kbyBjb21waWxlIH0gKi8NCj4gKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25z ICItbWFyY2g9cnYzMmdjdl96dmZoIC1tYWJpPWlscDMyZCAtLXBhcmFtPXJpc2N2LWF1dG92ZWMt cHJlZmVyZW5jZT1zY2FsYWJsZSAtZmZhc3QtbWF0aCAtZm5vLXZlY3QtY29zdC1tb2RlbCIgfSAq Lw0KPiArDQo+ICsjaW5jbHVkZSA8c3RkaW50LWdjYy5oPg0KPiArDQo+ICsjZGVmaW5lIE5VTV9F TEVNUyhUWVBFKSAoMTAyNCAvIHNpemVvZiAoVFlQRSkpDQo+ICsNCj4gKyNkZWZpbmUgREVGX1JF RFVDX1BMVVMoVFlQRSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gK3Zv aWQgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lLCBub2Nsb25lKSkgICAgICAgICAgICAgICAgICAg ICAgIFwNCj4gK3JlZHVjX3BsdXNfIyNUWVBFIChUWVBFICgqcmVzdHJpY3QgYSlbTlVNX0VMRU1T IChUWVBFKV0sICAgICAgIFwNCj4gKyAgICAgICAgICAgICAgICAgIFRZUEUgKnJlc3RyaWN0IHIs IGludCBuKSAgICAgICAgICAgICAgICAgICAgIFwNCj4gK3sgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgZm9yIChpbnQg aSA9IDA7IGkgPCBuOyBpKyspICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4g KyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwNCj4gKyAgICAgIHJbaV0gPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgZm9yIChpbnQgaiA9IDA7IGog PCBOVU1fRUxFTVMgKFRZUEUpOyBqKyspICAgICAgICAgICAgICAgXA0KPiArICAgICAgICByW2ld ICs9IGFbaV1bal07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiAr ICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXA0KPiArfQ0KPiArDQo+ICsjZGVmaW5lIFRFU1RfUExVUyhUKSAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwNCj4gKyAgVCAoaW50OF90KSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXA0KPiArICBUIChpbnQxNl90KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcDQo+ICsgIFQgKGludDMyX3QpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwNCj4gKyAgVCAoaW50NjRfdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0K PiArICBUICh1aW50OF90KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsg IFQgKHVpbnQxNl90KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgVCAo dWludDMyX3QpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBUICh1aW50 NjRfdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIFQgKF9GbG9hdDE2 KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgVCAoZmxvYXQpICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBUIChkb3VibGUpDQo+ICsNCj4g K1RFU1RfUExVUyAoREVGX1JFRFVDX1BMVVMpDQo+ICsNCj4gKyNkZWZpbmUgREVGX1JFRFVDX01B WE1JTihUWVBFLCBOQU1FLCBDTVBfT1ApICAgICAgICAgICAgICAgICAgIFwNCj4gK3ZvaWQgX19h dHRyaWJ1dGVfXyAoKG5vaW5saW5lLCBub2Nsb25lKSkgICAgICAgICAgICAgICAgICAgICAgIFwN Cj4gK3JlZHVjXyMjTkFNRSMjXyMjVFlQRSAoVFlQRSAoKnJlc3RyaWN0IGEpW05VTV9FTEVNUyAo VFlQRSldLCAgIFwNCj4gKyAgICAgICAgICAgICAgICAgICAgICBUWVBFICpyZXN0cmljdCByLCBp bnQgbikgICAgICAgICAgICAgICAgIFwNCj4gK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgZm9yIChpbnQgaSA9IDA7 IGkgPCBuOyBpKyspICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICB7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwNCj4gKyAgICAgIHJbaV0gPSBhW2ldWzBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwNCj4gKyAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgTlVNX0VMRU1TIChU WVBFKTsgaisrKSAgICAgICAgICAgICAgIFwNCj4gKyAgICAgICAgcltpXSA9IGFbaV1bal0gQ01Q X09QIHJbaV0gPyBhW2ldW2pdIDogcltpXTsgICAgICAgICAgIFwNCj4gKyAgICB9ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gK30N Cj4gKw0KPiArI2RlZmluZSBURVNUX01BWE1JTihUKSAgICAgICAgICAgICAgICAgICAgICAgICBc DQo+ICsgIFQgKGludDhfdCwgbWF4LCA+KSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4g KyAgVCAoaW50MTZfdCwgbWF4LCA+KSAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBU IChpbnQzMl90LCBtYXgsID4pICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIFQgKGlu dDY0X3QsIG1heCwgPikgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgVCAodWludDhf dCwgbWF4LCA+KSAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBUICh1aW50MTZfdCwg bWF4LCA+KSAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIFQgKHVpbnQzMl90LCBtYXgs ID4pICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgVCAodWludDY0X3QsIG1heCwgPikg ICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBUIChfRmxvYXQxNiwgbWF4LCA+KSAgICAg ICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIFQgKGZsb2F0LCBtYXgsID4pICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwNCj4gKyAgVCAoZG91YmxlLCBtYXgsID4pICAgICAgICAgICAgICAg ICAgICAgICAgICAgXA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcDQo+ICsgIFQgKGludDhfdCwgbWluLCA8KSAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwNCj4gKyAgVCAoaW50MTZfdCwgbWluLCA8KSAgICAgICAgICAgICAgICAgICAgICAgICAg XA0KPiArICBUIChpbnQzMl90LCBtaW4sIDwpICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ ICsgIFQgKGludDY0X3QsIG1pbiwgPCkgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAg VCAodWludDhfdCwgbWluLCA8KSAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBUICh1 aW50MTZfdCwgbWluLCA8KSAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIFQgKHVpbnQz Ml90LCBtaW4sIDwpICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgVCAodWludDY0X3Qs IG1pbiwgPCkgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBUIChfRmxvYXQxNiwgbWlu LCA8KSAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIFQgKGZsb2F0LCBtaW4sIDwpICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgVCAoZG91YmxlLCBtaW4sIDwpDQo+ICsN Cj4gK1RFU1RfTUFYTUlOIChERUZfUkVEVUNfTUFYTUlOKQ0KPiArDQo+ICsjZGVmaW5lIERFRl9S RURVQ19CSVRXSVNFKFRZUEUsTkFNRSxCSVRfT1ApICAgICAgICAgICAgICAgICAgICBcDQo+ICt2 b2lkIF9fYXR0cmlidXRlX18gKChub2lubGluZSwgbm9jbG9uZSkpICAgICAgICAgICAgICAgICAg ICAgICBcDQo+ICtyZWR1Y18jI05BTUUjI1RZUEUgKFRZUEUgKCpyZXN0cmljdCBhKVtOVU1fRUxF TVMoVFlQRSldLCAgICAgICBcDQo+ICsgICAgICAgICAgICAgICAgICAgVFlQRSAqcmVzdHJpY3Qg ciwgaW50IG4pICAgICAgICAgICAgICAgICAgICBcDQo+ICt7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIGZvciAoaW50 IGkgPSAwOyBpIDwgbjsgaSsrKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ ICsgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcDQo+ICsgICAgICByW2ldID0gYVtpXVswXTsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgICBmb3IgKGludCBqID0gMDsgaiA8IE5VTV9F TEVNUyhUWVBFKTsgaisrKSAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgICAgcltp XSBCSVRfT1AgYVtpXVtqXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4g KyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwNCj4gK30NCj4gKw0KPiArI2RlZmluZSBURVNUX0JJVFdJU0UoVCkgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgVCAoaW50OF90LCBhbmQsICY9KSAgICAgICAg ICAgICAgICAgICAgICAgICAgXA0KPiArICBUIChpbnQxNl90LCBhbmQsICY9KSAgICAgICAgICAg ICAgICAgICAgICAgICBcDQo+ICsgIFQgKGludDMyX3QsIGFuZCwgJj0pICAgICAgICAgICAgICAg ICAgICAgICAgIFwNCj4gKyAgVCAoaW50NjRfdCwgYW5kLCAmPSkgICAgICAgICAgICAgICAgICAg ICAgICAgXA0KPiArICBUICh1aW50OF90LCBhbmQsICY9KSAgICAgICAgICAgICAgICAgICAgICAg ICBcDQo+ICsgIFQgKHVpbnQxNl90LCBhbmQsICY9KSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXA0KPiArICBUICh1aW50MzJfdCwgYW5kLCAmPSkgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwNCj4gKyAgVCAodWludDY0X3QsIGFuZCwgJj0pICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwNCj4gKyAgVCAoaW50OF90LCBpb3IsIHw9KSAgICAgICAgICAgICAgICAgICAg ICAgICAgXA0KPiArICBUIChpbnQxNl90LCBpb3IsIHw9KSAgICAgICAgICAgICAgICAgICAgICAg ICBcDQo+ICsgIFQgKGludDMyX3QsIGlvciwgfD0pICAgICAgICAgICAgICAgICAgICAgICAgIFwN Cj4gKyAgVCAoaW50NjRfdCwgaW9yLCB8PSkgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiAr ICBUICh1aW50OF90LCBpb3IsIHw9KSAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIFQg KHVpbnQxNl90LCBpb3IsIHw9KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiAr ICBUICh1aW50MzJfdCwgaW9yLCB8PSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwN Cj4gKyAgVCAodWludDY0X3QsIGlvciwgfD0pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwN Cj4gKyAgVCAoaW50OF90LCB4b3IsIF49KSAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiAr ICBUIChpbnQxNl90LCB4b3IsIF49KSAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIFQg KGludDMyX3QsIHhvciwgXj0pICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgVCAoaW50 NjRfdCwgeG9yLCBePSkgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBUICh1aW50OF90 LCB4b3IsIF49KSAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIFQgKHVpbnQxNl90LCB4 b3IsIF49KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBUICh1aW50MzJf dCwgeG9yLCBePSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgVCAodWlu dDY0X3QsIHhvciwgXj0pDQo+ICsNCj4gK1RFU1RfQklUV0lTRSAoREVGX1JFRFVDX0JJVFdJU0Up DQo+ICsNCj4gKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7dnJlZHN1bVwu dnNccyt2WzAtOV0rLFxzKnZbMC05XSssXHMqdlswLTldK30gOCB9IH0gKi8NCj4gKy8qIHsgZGct ZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7dnJlZG1heFwudnNccyt2WzAtOV0rLFxzKnZb MC05XSssXHMqdlswLTldK30gNCB9IH0gKi8NCj4gKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt Ymxlci10aW1lcyB7dnJlZG1heHVcLnZzXHMrdlswLTldKyxccyp2WzAtOV0rLFxzKnZbMC05XSt9 IDQgfSB9ICovDQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge3ZyZWRt aW5cLnZzXHMrdlswLTldKyxccyp2WzAtOV0rLFxzKnZbMC05XSt9IDQgfSB9ICovDQo+ICsvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge3ZyZWRtaW51XC52c1xzK3ZbMC05XSss XHMqdlswLTldKyxccyp2WzAtOV0rfSA0IH0gfSAqLw0KPiArLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyLXRpbWVzIHt2cmVkYW5kXC52c1xzK3ZbMC05XSssXHMqdlswLTldKyxccyp2WzAt OV0rfSA4IH0gfSAqLw0KPiArLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHt2 cmVkb3JcLnZzXHMrdlswLTldKyxccyp2WzAtOV0rLFxzKnZbMC05XSt9IDggfSB9ICovDQo+ICsv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge3ZyZWR4b3JcLnZzXHMrdlswLTld Kyxccyp2WzAtOV0rLFxzKnZbMC05XSt9IDggfSB9ICovDQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXItdGltZXMge3ZmcmVkdXN1bVwudnNccyt2WzAtOV0rLFxzKnZbMC05XSssXHMq dlswLTldK30gMyB9IH0gKi8NCj4gKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1l cyB7dmZyZWRtYXhcLnZzXHMrdlswLTldKyxccyp2WzAtOV0rLFxzKnZbMC05XSt9IDMgfSB9ICov DQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge3ZmcmVkbWluXC52c1xz K3ZbMC05XSssXHMqdlswLTldKyxccyp2WzAtOV0rfSAzIH0gfSAqLw0KPiBkaWZmIC0tZ2l0IGEv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3JlZHVjL3JlZHVjLTMu YyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9yZWR1Yy9yZWR1 Yy0zLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAuLmMzNjM4 MzQ0ZjgwDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L3Jpc2N2L3J2di9hdXRvdmVjL3JlZHVjL3JlZHVjLTMuYw0KPiBAQCAtMCwwICsxLDY1IEBADQo+ ICsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLw0KPiArLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMg Ii1tYXJjaD1ydjMyZ2N2IC1tYWJpPWlscDMyZCAtLXBhcmFtPXJpc2N2LWF1dG92ZWMtcHJlZmVy ZW5jZT1zY2FsYWJsZSAtZmZhc3QtbWF0aCAtZm5vLXZlY3QtY29zdC1tb2RlbCIgfSAqLw0KPiAr DQo+ICsjaW5jbHVkZSA8c3RkaW50LWdjYy5oPg0KPiArDQo+ICt1bnNpZ25lZCBzaG9ydCBfX2F0 dHJpYnV0ZV9fKChub2lwYSkpDQo+ICthZGRfbG9vcCAodW5zaWduZWQgc2hvcnQgKngsIGludCBu KQ0KPiArew0KPiArICB1bnNpZ25lZCBzaG9ydCByZXMgPSAwOw0KPiArICBmb3IgKGludCBpID0g MDsgaSA8IG47ICsraSkNCj4gKyAgICByZXMgKz0geFtpXTsNCj4gKyAgcmV0dXJuIHJlczsNCj4g K30NCj4gKw0KPiArdW5zaWduZWQgc2hvcnQgX19hdHRyaWJ1dGVfXygobm9pcGEpKQ0KPiArbWlu X2xvb3AgKHVuc2lnbmVkIHNob3J0ICp4LCBpbnQgbikNCj4gK3sNCj4gKyAgdW5zaWduZWQgc2hv cnQgcmVzID0gfjA7DQo+ICsgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKQ0KPiArICAgIHJl cyA9IHJlcyA8IHhbaV0gPyByZXMgOiB4W2ldOw0KPiArICByZXR1cm4gcmVzOw0KPiArfQ0KPiAr DQo+ICt1bnNpZ25lZCBzaG9ydCBfX2F0dHJpYnV0ZV9fKChub2lwYSkpDQo+ICttYXhfbG9vcCAo dW5zaWduZWQgc2hvcnQgKngsIGludCBuKQ0KPiArew0KPiArICB1bnNpZ25lZCBzaG9ydCByZXMg PSAwOw0KPiArICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkNCj4gKyAgICByZXMgPSByZXMg PiB4W2ldID8gcmVzIDogeFtpXTsNCj4gKyAgcmV0dXJuIHJlczsNCj4gK30NCj4gKw0KPiArdW5z aWduZWQgc2hvcnQgX19hdHRyaWJ1dGVfXygobm9pcGEpKQ0KPiArYW5kX2xvb3AgKHVuc2lnbmVk IHNob3J0ICp4LCBpbnQgbikNCj4gK3sNCj4gKyAgdW5zaWduZWQgc2hvcnQgcmVzID0gfjA7DQo+ ICsgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKQ0KPiArICAgIHJlcyAmPSB4W2ldOw0KPiAr ICByZXR1cm4gcmVzOw0KPiArfQ0KPiArDQo+ICt1bnNpZ25lZCBzaG9ydCBfX2F0dHJpYnV0ZV9f KChub2lwYSkpDQo+ICtvcl9sb29wICh1bnNpZ25lZCBzaG9ydCAqeCwgaW50IG4pDQo+ICt7DQo+ ICsgIHVuc2lnbmVkIHNob3J0IHJlcyA9IDA7DQo+ICsgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsg KytpKQ0KPiArICAgIHJlcyB8PSB4W2ldOw0KPiArICByZXR1cm4gcmVzOw0KPiArfQ0KPiArDQo+ ICt1bnNpZ25lZCBzaG9ydCBfX2F0dHJpYnV0ZV9fKChub2lwYSkpDQo+ICtlb3JfbG9vcCAodW5z aWduZWQgc2hvcnQgKngsIGludCBuKQ0KPiArew0KPiArICB1bnNpZ25lZCBzaG9ydCByZXMgPSAw Ow0KPiArICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkNCj4gKyAgICByZXMgXj0geFtpXTsN Cj4gKyAgcmV0dXJuIHJlczsNCj4gK30NCj4gKw0KPiArLyogeyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyLXRpbWVzIHt2cmVkc3VtXC52c1xzK3ZbMC05XSssXHMqdlswLTldKyxccyp2WzAtOV0r fSAxIH0gfSAqLw0KPiArLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHt2cmVk bWF4dVwudnNccyt2WzAtOV0rLFxzKnZbMC05XSssXHMqdlswLTldK30gMSB9IH0gKi8NCj4gKy8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7dnJlZG1pbnVcLnZzXHMrdlswLTld Kyxccyp2WzAtOV0rLFxzKnZbMC05XSt9IDEgfSB9ICovDQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXItdGltZXMge3ZyZWRhbmRcLnZzXHMrdlswLTldKyxccyp2WzAtOV0rLFxzKnZb MC05XSt9IDEgfSB9ICovDQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMg e3ZyZWRvclwudnNccyt2WzAtOV0rLFxzKnZbMC05XSssXHMqdlswLTldK30gMSB9IH0gKi8NCj4g Ky8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7dnJlZHhvclwudnNccyt2WzAt OV0rLFxzKnZbMC05XSssXHMqdlswLTldK30gMSB9IH0gKi8NCj4gZGlmZiAtLWdpdCBhL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9yZWR1Yy9yZWR1Yy00LmMgYi9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcmVkdWMvcmVkdWMtNC5j DQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwLi5mMDBhMTI4MjZj Ng0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNj di9ydnYvYXV0b3ZlYy9yZWR1Yy9yZWR1Yy00LmMNCj4gQEAgLTAsMCArMSw1OSBAQA0KPiArLyog eyBkZy1kbyBjb21waWxlIH0gKi8NCj4gKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbWFy Y2g9cnYzMmdjdiAtbWFiaT1pbHAzMmQgLS1wYXJhbT1yaXNjdi1hdXRvdmVjLXByZWZlcmVuY2U9 c2NhbGFibGUgLWZmYXN0LW1hdGggLWZuby12ZWN0LWNvc3QtbW9kZWwiIH0gKi8NCj4gKw0KPiAr I2luY2x1ZGUgPHN0ZGludC1nY2MuaD4NCj4gKw0KPiArdW5zaWduZWQgc2hvcnQgX19hdHRyaWJ1 dGVfXygobm9pcGEpKQ0KPiArYWRkX2xvb3AgKHVuc2lnbmVkIHNob3J0ICp4LCBpbnQgbiwgdW5z aWduZWQgc2hvcnQgcmVzKQ0KPiArew0KPiArICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkN Cj4gKyAgICByZXMgKz0geFtpXTsNCj4gKyAgcmV0dXJuIHJlczsNCj4gK30NCj4gKw0KPiArdW5z aWduZWQgc2hvcnQgX19hdHRyaWJ1dGVfXygobm9pcGEpKQ0KPiArbWluX2xvb3AgKHVuc2lnbmVk IHNob3J0ICp4LCBpbnQgbiwgdW5zaWduZWQgc2hvcnQgcmVzKQ0KPiArew0KPiArICBmb3IgKGlu dCBpID0gMDsgaSA8IG47ICsraSkNCj4gKyAgICByZXMgPSByZXMgPCB4W2ldID8gcmVzIDogeFtp XTsNCj4gKyAgcmV0dXJuIHJlczsNCj4gK30NCj4gKw0KPiArdW5zaWduZWQgc2hvcnQgX19hdHRy aWJ1dGVfXygobm9pcGEpKQ0KPiArbWF4X2xvb3AgKHVuc2lnbmVkIHNob3J0ICp4LCBpbnQgbiwg dW5zaWduZWQgc2hvcnQgcmVzKQ0KPiArew0KPiArICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsr aSkNCj4gKyAgICByZXMgPSByZXMgPiB4W2ldID8gcmVzIDogeFtpXTsNCj4gKyAgcmV0dXJuIHJl czsNCj4gK30NCj4gKw0KPiArdW5zaWduZWQgc2hvcnQgX19hdHRyaWJ1dGVfXygobm9pcGEpKQ0K PiArYW5kX2xvb3AgKHVuc2lnbmVkIHNob3J0ICp4LCBpbnQgbiwgdW5zaWduZWQgc2hvcnQgcmVz KQ0KPiArew0KPiArICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkNCj4gKyAgICByZXMgJj0g eFtpXTsNCj4gKyAgcmV0dXJuIHJlczsNCj4gK30NCj4gKw0KPiArdW5zaWduZWQgc2hvcnQgX19h dHRyaWJ1dGVfXygobm9pcGEpKQ0KPiArb3JfbG9vcCAodW5zaWduZWQgc2hvcnQgKngsIGludCBu LCB1bnNpZ25lZCBzaG9ydCByZXMpDQo+ICt7DQo+ICsgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsg KytpKQ0KPiArICAgIHJlcyB8PSB4W2ldOw0KPiArICByZXR1cm4gcmVzOw0KPiArfQ0KPiArDQo+ ICt1bnNpZ25lZCBzaG9ydCBfX2F0dHJpYnV0ZV9fKChub2lwYSkpDQo+ICtlb3JfbG9vcCAodW5z aWduZWQgc2hvcnQgKngsIGludCBuLCB1bnNpZ25lZCBzaG9ydCByZXMpDQo+ICt7DQo+ICsgIGZv ciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKQ0KPiArICAgIHJlcyBePSB4W2ldOw0KPiArICByZXR1 cm4gcmVzOw0KPiArfQ0KPiArDQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGlt ZXMge3ZyZWRzdW1cLnZzXHMrdlswLTldKyxccyp2WzAtOV0rLFxzKnZbMC05XSt9IDEgfSB9ICov DQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge3ZyZWRtYXh1XC52c1xz K3ZbMC05XSssXHMqdlswLTldKyxccyp2WzAtOV0rfSAxIH0gfSAqLw0KPiArLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHt2cmVkbWludVwudnNccyt2WzAtOV0rLFxzKnZbMC05 XSssXHMqdlswLTldK30gMSB9IH0gKi8NCj4gKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ci10aW1lcyB7dnJlZGFuZFwudnNccyt2WzAtOV0rLFxzKnZbMC05XSssXHMqdlswLTldK30gMSB9 IH0gKi8NCj4gKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7dnJlZG9yXC52 c1xzK3ZbMC05XSssXHMqdlswLTldKyxccyp2WzAtOV0rfSAxIH0gfSAqLw0KPiArLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHt2cmVkeG9yXC52c1xzK3ZbMC05XSssXHMqdlsw LTldKyxccyp2WzAtOV0rfSAxIH0gfSAqLw0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3JlZHVjL3JlZHVjX3J1bi0xLmMgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcmVkdWMvcmVkdWNfcnVuLTEuYw0K PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMC4uYjUwMGY4NTc1OTgN Cj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yv cnZ2L2F1dG92ZWMvcmVkdWMvcmVkdWNfcnVuLTEuYw0KPiBAQCAtMCwwICsxLDU2IEBADQo+ICsv KiB7IGRnLWRvIHJ1biB7IHRhcmdldCB7IHJpc2N2X3ZlY3RvciB9IH0gfSAqLw0KPiArLyogeyBk Zy1hZGRpdGlvbmFsLW9wdGlvbnMgIi0tcGFyYW09cmlzY3YtYXV0b3ZlYy1wcmVmZXJlbmNlPXNj YWxhYmxlIC1mZmFzdC1tYXRoIC1mbm8tdmVjdC1jb3N0LW1vZGVsIiB9ICovDQo+ICsNCj4gKyNp bmNsdWRlICJyZWR1Yy0xLmMiDQo+ICsNCj4gKyNkZWZpbmUgTlVNX0VMRU1TKFRZUEUpICg3MyAr IHNpemVvZiAoVFlQRSkpDQo+ICsNCj4gKyNkZWZpbmUgSU5JVF9WRUNUT1IoVFlQRSkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIFRZUEUgYVtOVU1fRUxFTVMgKFRZUEUpICsg MV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIGZvciAoaW50IGkgPSAw OyBpIDwgTlVNX0VMRU1TIChUWVBFKSArIDE7IGkrKykgICAgICAgXA0KPiArICAgIHsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgIGFb aV0gPSAoKGkgKiAyKSAqIChpICYgMSA/IDEgOiAtMSkgfCAzKTsgICAgICAgICBcDQo+ICsgICAg ICBhc20gdm9sYXRpbGUgKCIiIDo6OiAibWVtb3J5Iik7ICAgICAgICAgICAgICAgICAgXA0KPiAr ICAgIH0NCj4gKw0KPiArI2RlZmluZSBURVNUX1JFRFVDX1BMVVMoVFlQRSkgICAgICAgICAgICAg ICAgICAgICAgICAgIFwNCj4gKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcDQo+ICsgICAgSU5JVF9WRUNUT1IgKFRZUEUpOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgVFlQRSByMSA9IHJlZHVjX3Bs dXNfIyNUWVBFIChhLCBOVU1fRUxFTVMgKFRZUEUpKTsgXA0KPiArICAgIHZvbGF0aWxlIFRZUEUg cjIgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICBmb3IgKGludCBp ID0gMDsgaSA8IE5VTV9FTEVNUyAoVFlQRSk7ICsraSkgICAgICAgICBcDQo+ICsgICAgICByMiAr PSBhW2ldOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgIGlm IChyMSAhPSByMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAg ICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ ICsgIH0NCj4gKw0KPiArI2RlZmluZSBURVNUX1JFRFVDX01BWE1JTihUWVBFLCBOQU1FLCBDTVBf T1ApICAgICAgICAgICAgICAgICAgXA0KPiArICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgIElOSVRfVkVDVE9SIChU WVBFKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ ICsgICAgVFlQRSByMSA9IHJlZHVjXyMjTkFNRSMjXyMjVFlQRSAoYSwgTlVNX0VMRU1TIChUWVBF KSk7ICAgICBcDQo+ICsgICAgdm9sYXRpbGUgVFlQRSByMiA9IDEzOyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOVU1fRUxF TVMgKFRZUEUpOyArK2kpICAgICAgICAgICAgICAgICBcDQo+ICsgICAgICByMiA9IGFbaV0gQ01Q X09QIHIyID8gYVtpXSA6IHIyOyAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgaWYg KHIxICE9IHIyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc DQo+ICsgICAgICBfX2J1aWx0aW5fYWJvcnQgKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcDQo+ICsgIH0NCj4gKw0KPiArI2RlZmluZSBURVNUX1JFRFVDX0JJVFdJU0Uo VFlQRSwgTkFNRSwgQklUX09QKSAgICAgICAgICAgICAgICAgXA0KPiArICB7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAg IElOSVRfVkVDVE9SIChUWVBFKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcDQo+ICsgICAgVFlQRSByMSA9IHJlZHVjXyMjTkFNRSMjXyMjVFlQRSAoYSwg TlVNX0VMRU1TIChUWVBFKSk7ICAgICBcDQo+ICsgICAgdm9sYXRpbGUgVFlQRSByMiA9IDEzOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgZm9yIChpbnQgaSA9 IDA7IGkgPCBOVU1fRUxFTVMgKFRZUEUpOyArK2kpICAgICAgICAgICAgICAgICBcDQo+ICsgICAg ICByMiBCSVRfT1AgYVtpXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcDQo+ICsgICAgaWYgKHIxICE9IHIyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcDQo+ICsgICAgICBfX2J1aWx0aW5fYWJvcnQgKCk7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIH0NCj4gKw0KPiAraW50IG1haW4gKCkN Cj4gK3sNCj4gKyAgVEVTVF9QTFVTIChURVNUX1JFRFVDX1BMVVMpDQo+ICsgIFRFU1RfTUFYTUlO IChURVNUX1JFRFVDX01BWE1JTikNCj4gKyAgVEVTVF9CSVRXSVNFIChURVNUX1JFRFVDX0JJVFdJ U0UpDQo+ICsNCj4gKyAgcmV0dXJuIDA7DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcmVkdWMvcmVkdWNfcnVuLTIuYyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9yZWR1Yy9yZWR1Y19ydW4t Mi5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwLi4zYzJmNjI1 NTdiMQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9y aXNjdi9ydnYvYXV0b3ZlYy9yZWR1Yy9yZWR1Y19ydW4tMi5jDQo+IEBAIC0wLDAgKzEsNzkgQEAN Cj4gKy8qIHsgZGctZG8gcnVuIHsgdGFyZ2V0IHsgcmlzY3ZfdmVjdG9yIH0gfSB9ICovDQo+ICsv KiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLS1wYXJhbT1yaXNjdi1hdXRvdmVjLXByZWZlcmVu Y2U9c2NhbGFibGUiIH0gKi8NCj4gKw0KPiArI2luY2x1ZGUgInJlZHVjLTIuYyINCj4gKw0KPiAr I2RlZmluZSBOUk9XUyA1Mw0KPiArDQo+ICsvKiAtZmZhc3QtbWF0aCBmdXp6IGZvciBQTFVTLiAg Ki8NCj4gKyNkZWZpbmUgQ01QX19GbG9hdDE2KFgsIFkpICgoWCkgPj0gKFkpICogMC44NzUgJiYg KFgpIDw9IChZKSAqIDEuMTI1KQ0KPiArI2RlZmluZSBDTVBfZmxvYXQoWCwgWSkgKChYKSA9PSAo WSkpDQo+ICsjZGVmaW5lIENNUF9kb3VibGUoWCwgWSkgKChYKSA9PSAoWSkpDQo+ICsjZGVmaW5l IENNUF9pbnQ4X3QoWCwgWSkgKChYKSA9PSAoWSkpDQo+ICsjZGVmaW5lIENNUF9pbnQxNl90KFgs IFkpICgoWCkgPT0gKFkpKQ0KPiArI2RlZmluZSBDTVBfaW50MzJfdChYLCBZKSAoKFgpID09IChZ KSkNCj4gKyNkZWZpbmUgQ01QX2ludDY0X3QoWCwgWSkgKChYKSA9PSAoWSkpDQo+ICsjZGVmaW5l IENNUF91aW50OF90KFgsIFkpICgoWCkgPT0gKFkpKQ0KPiArI2RlZmluZSBDTVBfdWludDE2X3Qo WCwgWSkgKChYKSA9PSAoWSkpDQo+ICsjZGVmaW5lIENNUF91aW50MzJfdChYLCBZKSAoKFgpID09 IChZKSkNCj4gKyNkZWZpbmUgQ01QX3VpbnQ2NF90KFgsIFkpICgoWCkgPT0gKFkpKQ0KPiArDQo+ ICsjZGVmaW5lIElOSVRfTUFUUklYKFRZUEUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XA0KPiArICBUWVBFIG1hdFtOUk9XU11bTlVNX0VMRU1TIChUWVBFKV07ICAgICAgICAgICAgICAg ICAgIFwNCj4gKyAgVFlQRSByW05ST1dTXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcDQo+ICsgIGZvciAoaW50IGkgPSAwOyBpIDwgTlJPV1M7IGkrKykgICAgICAgICAg ICAgICAgICAgICAgXA0KPiArICAgIGZvciAoaW50IGogPSAwOyBqIDwgTlVNX0VMRU1TIChUWVBF KTsgaisrKSAgICAgICAgIFwNCj4gKyAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgICBtYXRbaV1bal0gPSBpICsg KGogKiAyKSAqIChqICYgMSA/IDEgOiAtMSk7ICAgICBcDQo+ICsgICAgICAgYXNtIHZvbGF0aWxl ICgiIiA6OjogIm1lbW9yeSIpOyAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgfQ0KPiArDQo+ ICsjZGVmaW5lIFRFU1RfUkVEVUNfUExVUyhUWVBFKSAgICAgICAgICAgICAgICAgICAgICAgICAg XA0KPiArICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwNCj4gKyAgICBJTklUX01BVFJJWCAoVFlQRSk7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwNCj4gKyAgICByZWR1Y19wbHVzXyMjVFlQRSAobWF0LCByLCBOUk9X Uyk7ICAgICAgICAgICAgICAgICBcDQo+ICsgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOUk9XUzsg aSsrKSAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgeyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgIHZvbGF0aWxl IFRZUEUgcjIgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgICBmb3Ig KGludCBqID0gMDsgaiA8IE5VTV9FTEVNUyAoVFlQRSk7ICsraikgICAgICBcDQo+ICsgICAgICAg ICByMiArPSBtYXRbaV1bal07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAg ICAgIGlmICghQ01QXyMjVFlQRSAocltpXSwgcjIpKSAgICAgICAgICAgICAgICAgICAgIFwNCj4g KyAgICAgICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBc DQo+ICsgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcDQo+ICsgICAgfQ0KPiArDQo+ICsjZGVmaW5lIFRFU1RfUkVEVUNfTUFYTUlO KFRZUEUsIE5BTUUsIENNUF9PUCkgICAgICAgICAgXA0KPiArICB7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICBJTklUX01BVFJJWCAo VFlQRSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICBy ZWR1Y18jI05BTUUjI18jI1RZUEUgKG1hdCwgciwgTlJPV1MpOyAgICAgICAgICAgICBcDQo+ICsg ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOUk9XUzsgaSsrKSAgICAgICAgICAgICAgICAgICAgXA0K PiArICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXA0KPiArICAgICAgIHZvbGF0aWxlIFRZUEUgcjIgPSBtYXRbaV1bMF07ICAgICAg ICAgICAgICAgICAgIFwNCj4gKyAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IE5VTV9FTEVNUyAo VFlQRSk7ICsraikgICAgICBcDQo+ICsgICAgICAgICByMiA9IG1hdFtpXVtqXSBDTVBfT1AgcjIg PyBtYXRbaV1bal0gOiByMjsgICAgXA0KPiArICAgICAgIGlmIChyW2ldICE9IHIyKSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgICAgIF9fYnVpbHRpbl9hYm9ydCAo KTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgICB9ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgfQ0KPiAr DQo+ICsjZGVmaW5lIFRFU1RfUkVEVUNfQklUV0lTRShUWVBFLCBOQU1FLCBCSVRfT1ApICAgICAg ICAgXA0KPiArICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwNCj4gKyAgICBJTklUX01BVFJJWCAoVFlQRSk7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICByZWR1Y18jI05BTUUjI18jI1RZUEUgKG1hdCwg ciwgTlJPV1MpOyAgICAgICAgICAgICBcDQo+ICsgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOUk9X UzsgaSsrKSAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgeyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgIHZvbGF0 aWxlIFRZUEUgcjIgPSBtYXRbaV1bMF07ICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgICBm b3IgKGludCBqID0gMDsgaiA8IE5VTV9FTEVNUyAoVFlQRSk7ICsraikgICAgICBcDQo+ICsgICAg ICAgICByMiBCSVRfT1AgbWF0W2ldW2pdOyAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiAr ICAgICAgIGlmIChyW2ldICE9IHIyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwN Cj4gKyAgICAgICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsgICAgICAgICAgICAgICAgICAgICAgICAg ICBcDQo+ICsgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcDQo+ICsgICAgfQ0KPiArDQo+ICtpbnQgbWFpbiAoKQ0KPiArew0KPiAr ICBURVNUX1BMVVMgKFRFU1RfUkVEVUNfUExVUykNCj4gKyAgVEVTVF9NQVhNSU4gKFRFU1RfUkVE VUNfTUFYTUlOKQ0KPiArDQo+ICsgIHJldHVybiAwOw0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3JlZHVjL3JlZHVjX3J1bi0z LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcmVkdWMvcmVk dWNfcnVuLTMuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMC4u ZDFiMjJjMGQ2OWENCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcmVkdWMvcmVkdWNfcnVuLTMuYw0KPiBAQCAtMCwwICsx LDQ5IEBADQo+ICsvKiB7IGRnLWRvIHJ1biB7IHRhcmdldCB7IHJpc2N2X3ZlY3RvciB9IH0gfSAq Lw0KPiArLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi0tcGFyYW09cmlzY3YtYXV0b3ZlYy1w cmVmZXJlbmNlPXNjYWxhYmxlIC1mZmFzdC1tYXRoIC1mbm8tdmVjdC1jb3N0LW1vZGVsIiB9ICov DQo+ICsNCj4gKyNpbmNsdWRlICJyZWR1Yy0zLmMiDQo+ICsNCj4gKyNkZWZpbmUgTiAweDExMDAN Cj4gKw0KPiAraW50DQo+ICttYWluICh2b2lkKQ0KPiArew0KPiArICB1bnNpZ25lZCBzaG9ydCB4 W05dOw0KPiArICBmb3IgKGludCBpID0gMDsgaSA8IE47ICsraSkNCj4gKyAgICB4W2ldID0gKGkg KyAxKSAqIChpICsgMik7DQo+ICsNCj4gKyAgaWYgKGFkZF9sb29wICh4LCAwKSAhPSAwDQo+ICsg ICAgICB8fCBhZGRfbG9vcCAoeCwgMTEpICE9IDU3Mg0KPiArICAgICAgfHwgYWRkX2xvb3AgKHgs IDB4MTAwKSAhPSAyMjAxNg0KPiArICAgICAgfHwgYWRkX2xvb3AgKHgsIDB4ZmZmKSAhPSAyMDQ4 MA0KPiArICAgICAgfHwgbWF4X2xvb3AgKHgsIDApICE9IDANCj4gKyAgICAgIHx8IG1heF9sb29w ICh4LCAxMSkgIT0gMTMyDQo+ICsgICAgICB8fCBtYXhfbG9vcCAoeCwgMHgxMDApICE9IDY1Mjgw DQo+ICsgICAgICB8fCBtYXhfbG9vcCAoeCwgMHhmZmYpICE9IDY1NTA0DQo+ICsgICAgICB8fCBv cl9sb29wICh4LCAwKSAhPSAwDQo+ICsgICAgICB8fCBvcl9sb29wICh4LCAxMSkgIT0gMHhmZQ0K PiArICAgICAgfHwgb3JfbG9vcCAoeCwgMHg4MCkgIT0gMHg3ZmZlDQo+ICsgICAgICB8fCBvcl9s b29wICh4LCAweGI0KSAhPSAweDdmZmUNCj4gKyAgICAgIHx8IG9yX2xvb3AgKHgsIDB4YjUpICE9 IDB4ZmZmZQ0KPiArICAgICAgfHwgZW9yX2xvb3AgKHgsIDApICE9IDANCj4gKyAgICAgIHx8IGVv cl9sb29wICh4LCAxMSkgIT0gMHhlOA0KPiArICAgICAgfHwgZW9yX2xvb3AgKHgsIDB4MTAwKSAh PSAweGNmMDANCj4gKyAgICAgIHx8IGVvcl9sb29wICh4LCAweGZmZikgIT0gMHhhMDAwKQ0KPiAr ICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsNCj4gKw0KPiArICBmb3IgKGludCBpID0gMDsgaSA8IE47 ICsraSkNCj4gKyAgICB4W2ldID0gfnhbaV07DQo+ICsNCj4gKyAgaWYgKG1pbl9sb29wICh4LCAw KSAhPSA2NTUzNQ0KPiArICAgICAgfHwgbWluX2xvb3AgKHgsIDExKSAhPSA2NTQwMw0KPiArICAg ICAgfHwgbWluX2xvb3AgKHgsIDB4MTAwKSAhPSAyNTUNCj4gKyAgICAgIHx8IG1pbl9sb29wICh4 LCAweGZmZikgIT0gMzENCj4gKyAgICAgIHx8IGFuZF9sb29wICh4LCAwKSAhPSAweGZmZmYNCj4g KyAgICAgIHx8IGFuZF9sb29wICh4LCAxMSkgIT0gMHhmZjAxDQo+ICsgICAgICB8fCBhbmRfbG9v cCAoeCwgMHg4MCkgIT0gMHg4MDAxDQo+ICsgICAgICB8fCBhbmRfbG9vcCAoeCwgMHhiNCkgIT0g MHg4MDAxDQo+ICsgICAgICB8fCBhbmRfbG9vcCAoeCwgMHhiNSkgIT0gMSkNCj4gKyAgICBfX2J1 aWx0aW5fYWJvcnQgKCk7DQo+ICsNCj4gKyAgcmV0dXJuIDA7DQo+ICt9DQo+IGRpZmYgLS1naXQg YS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcmVkdWMvcmVkdWNf cnVuLTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9yZWR1 Yy9yZWR1Y19ydW4tNC5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAw MDAwLi5jMTdlMTI1YTc2Mw0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9yZWR1Yy9yZWR1Y19ydW4tNC5jDQo+IEBAIC0w LDAgKzEsNjYgQEANCj4gKy8qIHsgZGctZG8gcnVuIHsgdGFyZ2V0IHsgcmlzY3ZfdmVjdG9yIH0g fSB9ICovDQo+ICsvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLS1wYXJhbT1yaXNjdi1hdXRv dmVjLXByZWZlcmVuY2U9c2NhbGFibGUgLWZmYXN0LW1hdGggLWZuby12ZWN0LWNvc3QtbW9kZWwi IH0gKi8NCj4gKw0KPiArI2luY2x1ZGUgInJlZHVjLTQuYyINCj4gKw0KPiArI2RlZmluZSBOIDB4 MTEwMA0KPiArDQo+ICtpbnQNCj4gK21haW4gKHZvaWQpDQo+ICt7DQo+ICsgIHVuc2lnbmVkIHNo b3J0IHhbTl07DQo+ICsgIGZvciAoaW50IGkgPSAwOyBpIDwgTjsgKytpKQ0KPiArICAgIHhbaV0g PSAoaSArIDEpICogKGkgKyAyKTsNCj4gKw0KPiArICBpZiAoYWRkX2xvb3AgKHgsIDAsIDEwKSAh PSAxMA0KPiArICAgICAgfHwgYWRkX2xvb3AgKHgsIDExLCA0MikgIT0gNjE0DQo+ICsgICAgICB8 fCBhZGRfbG9vcCAoeCwgMHgxMDAsIDg0KSAhPSAyMjEwMA0KPiArICAgICAgfHwgYWRkX2xvb3Ag KHgsIDB4ZmZmLCAyMCkgIT0gMjA1MDANCj4gKyAgICAgIHx8IG1heF9sb29wICh4LCAwLCAxMCkg IT0gMTANCj4gKyAgICAgIHx8IG1heF9sb29wICh4LCAxMSwgMTMxKSAhPSAxMzINCj4gKyAgICAg IHx8IG1heF9sb29wICh4LCAxMSwgMTMzKSAhPSAxMzMNCj4gKyAgICAgIHx8IG1heF9sb29wICh4 LCAweDEwMCwgNjUyNzkpICE9IDY1MjgwDQo+ICsgICAgICB8fCBtYXhfbG9vcCAoeCwgMHgxMDAs IDY1MjgxKSAhPSA2NTI4MQ0KPiArICAgICAgfHwgbWF4X2xvb3AgKHgsIDB4ZmZmLCA2NTUwMykg IT0gNjU1MDQNCj4gKyAgICAgIHx8IG1heF9sb29wICh4LCAweGZmZiwgNjU1MDUpICE9IDY1NTA1 DQo+ICsgICAgICB8fCBvcl9sb29wICh4LCAwLCAweDcxKSAhPSAweDcxDQo+ICsgICAgICB8fCBv cl9sb29wICh4LCAxMSwgMCkgIT0gMHhmZQ0KPiArICAgICAgfHwgb3JfbG9vcCAoeCwgMTEsIDB4 YjNjKSAhPSAweGJmZQ0KPiArICAgICAgfHwgb3JfbG9vcCAoeCwgMHg4MCwgMCkgIT0gMHg3ZmZl DQo+ICsgICAgICB8fCBvcl9sb29wICh4LCAweDgwLCAxKSAhPSAweDdmZmYNCj4gKyAgICAgIHx8 IG9yX2xvb3AgKHgsIDB4YjQsIDApICE9IDB4N2ZmZQ0KPiArICAgICAgfHwgb3JfbG9vcCAoeCwg MHhiNCwgMSkgIT0gMHg3ZmZmDQo+ICsgICAgICB8fCBvcl9sb29wICh4LCAweGI1LCAwKSAhPSAw eGZmZmUNCj4gKyAgICAgIHx8IG9yX2xvb3AgKHgsIDB4YjUsIDEpICE9IDB4ZmZmZg0KPiArICAg ICAgfHwgZW9yX2xvb3AgKHgsIDAsIDB4M2UpICE9IDB4M2UNCj4gKyAgICAgIHx8IGVvcl9sb29w ICh4LCAxMSwgMCkgIT0gMHhlOA0KPiArICAgICAgfHwgZW9yX2xvb3AgKHgsIDExLCAweDFmZikg IT0gMHgxMTcNCj4gKyAgICAgIHx8IGVvcl9sb29wICh4LCAweDEwMCwgMCkgIT0gMHhjZjAwDQo+ ICsgICAgICB8fCBlb3JfbG9vcCAoeCwgMHgxMDAsIDB4ZWVlKSAhPSAweGMxZWUNCj4gKyAgICAg IHx8IGVvcl9sb29wICh4LCAweGZmZiwgMCkgIT0gMHhhMDAwDQo+ICsgICAgICB8fCBlb3JfbG9v cCAoeCwgMHhmZmYsIDB4ODg4OCkgIT0gMHgyODg4KQ0KPiArICAgIF9fYnVpbHRpbl9hYm9ydCAo KTsNCj4gKw0KPiArICBmb3IgKGludCBpID0gMDsgaSA8IE47ICsraSkNCj4gKyAgICB4W2ldID0g fnhbaV07DQo+ICsNCj4gKyAgaWYgKG1pbl9sb29wICh4LCAwLCAxMDAwMCkgIT0gMTAwMDANCj4g KyAgICAgIHx8IG1pbl9sb29wICh4LCAxMSwgNjU0MDQpICE9IDY1NDAzDQo+ICsgICAgICB8fCBt aW5fbG9vcCAoeCwgMTEsIDY1NDAyKSAhPSA2NTQwMg0KPiArICAgICAgfHwgbWluX2xvb3AgKHgs IDB4MTAwLCAyNTYpICE9IDI1NQ0KPiArICAgICAgfHwgbWluX2xvb3AgKHgsIDB4MTAwLCAyNTQp ICE9IDI1NA0KPiArICAgICAgfHwgbWluX2xvb3AgKHgsIDB4ZmZmLCAzMikgIT0gMzENCj4gKyAg ICAgIHx8IG1pbl9sb29wICh4LCAweGZmZiwgMzApICE9IDMwDQo+ICsgICAgICB8fCBhbmRfbG9v cCAoeCwgMCwgMHgxMjM0KSAhPSAweDEyMzQNCj4gKyAgICAgIHx8IGFuZF9sb29wICh4LCAxMSwg MHhmZmZmKSAhPSAweGZmMDENCj4gKyAgICAgIHx8IGFuZF9sb29wICh4LCAxMSwgMHhjZGVmKSAh PSAweGNkMDENCj4gKyAgICAgIHx8IGFuZF9sb29wICh4LCAweDgwLCAweGZmZmYpICE9IDB4ODAw MQ0KPiArICAgICAgfHwgYW5kX2xvb3AgKHgsIDB4ODAsIDB4ZmZmZSkgIT0gMHg4MDAwDQo+ICsg ICAgICB8fCBhbmRfbG9vcCAoeCwgMHhiNCwgMHhmZmZmKSAhPSAweDgwMDENCj4gKyAgICAgIHx8 IGFuZF9sb29wICh4LCAweGI0LCAweGZmZmUpICE9IDB4ODAwMA0KPiArICAgICAgfHwgYW5kX2xv b3AgKHgsIDB4YjUsIDB4ZmZmZikgIT0gMQ0KPiArICAgICAgfHwgYW5kX2xvb3AgKHgsIDB4YjUs IDB4ZmZmZSkgIT0gMCkNCj4gKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7DQo+ICsNCj4gKyAgcmV0 dXJuIDA7DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlz Y3YvcnZ2L3J2di5leHAgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3J2di5l eHANCj4gaW5kZXggMTk1ODlmYTk2MzguLjUzMmMxN2M0MDY1IDEwMDY0NA0KPiAtLS0gYS9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3J2di5leHANCj4gKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9ydnYuZXhwDQo+IEBAIC03MSw2ICs3MSw4IEBAIGZv cmVhY2ggb3AgJEFVVE9WRUNfVEVTVF9PUFRTIHsNCj4gICAgICAiIiAiJG9wIg0KPiAgICBkZy1y dW50ZXN0IFtsc29ydCBbZ2xvYiAtbm9jb21wbGFpbiAkc3JjZGlyLyRzdWJkaXIvYXV0b3ZlYy90 ZXJub3AvKi5cW2NTXF1dXSBcDQo+ICAgICAgIiIgIiRvcCINCj4gKyAgZGctcnVudGVzdCBbbHNv cnQgW2dsb2IgLW5vY29tcGxhaW4gJHNyY2Rpci8kc3ViZGlyL2F1dG92ZWMvcmVkdWMvKi5cW2NT XF1dXSBcDQo+ICsgICAgIiIgIiRvcCINCj4gIH0NCj4NCj4gICMgd2lkZW5pbmcgb3BlcmF0aW9u IG9ubHkgdGVzdCBvbiBMTVVMIDwgOA0KPiAtLQ0KPiAyLjM2LjENCj4NCg==