From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 01BD447C86 for ; Mon, 16 Oct 2023 08:05:54 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B090668C9F5; Mon, 16 Oct 2023 11:05:50 +0300 (EEST) Received: from mgamail.intel.com (mgamail.intel.com [134.134.136.31]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8CB2D68CA01 for ; Mon, 16 Oct 2023 11:05:40 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1697443546; x=1728979546; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=euF+KvzMTavUgHjcSqX3D6Q1FQYU/k68GT447b/HiMM=; b=BuN/9Wr9uvitYHrhqGkVv73vvekMm/7rmsCiWAaF/nD3cc1+vSUDoXkK yStTkEh+qdhqF/K65qd6jDGkdjRMjDoTW0dpLfUyiG+Xl5g+euzHCmsWp 3r87D4g+I009hjISfIQg38wBEKvT/pZ2VReZ2lYFcSny4MkTBXw4HY+DJ Ki5aQO5jUjjdtxxoT/2gZLKQ1Yhsxv6rVs5KhUJrk8cjupkOpmKepNEYN uvdHiDy/89QFDG06aC4SeZwxCOwpgZj+qLXkBQk28UhgUup//kEPPUYVx UpVGd/wIAULpIg1DI47eNs4hnZo0pQ1uukT3CNe0nAWdLHov+bYlIWNup w==; X-IronPort-AV: E=McAfee;i="6600,9927,10863"; a="449679410" X-IronPort-AV: E=Sophos;i="6.03,228,1694761200"; d="scan'208";a="449679410" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Oct 2023 01:05:34 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10863"; a="1086997877" X-IronPort-AV: E=Sophos;i="6.03,228,1694761200"; d="scan'208";a="1086997877" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by fmsmga005.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 16 Oct 2023 01:05:34 -0700 Received: from fmsmsx612.amr.corp.intel.com (10.18.126.92) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Mon, 16 Oct 2023 01:05:33 -0700 Received: from fmsmsx612.amr.corp.intel.com (10.18.126.92) by fmsmsx612.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Mon, 16 Oct 2023 01:05:33 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx612.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32 via Frontend Transport; Mon, 16 Oct 2023 01:05:33 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.40) 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.32; Mon, 16 Oct 2023 01:05:33 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aXQGNN2zRny1MGI5DORpr0BjikF3oIQdvqymkof3QOdJtDidgsySOM8zGDW30h7qldF+lKAklNLs4BUEHaJf8q3dUVGPPFBcLd3IaPM5pYFsDpHMhBAH6YhRKjF80pYzAUw4lHqAKQbFARMhfyJ0/fU1KIm+Py9Nf6mBtbEu77DrCt7B1SD9arx8+a/VfX+Nx1Z/u9MH3VvKe09aRKOyoGeUg33G2QSbr48+KrtmNra8tS64FDC5oaNEbFFc10fJ377BoOimliTdsnPPWp+h/6deuQ2fB1ueoLxvui/g7XacH99TKdA0u5yB1X9vOeYIGcK0rKSVd5bAowCRrx2WnA== 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=euF+KvzMTavUgHjcSqX3D6Q1FQYU/k68GT447b/HiMM=; b=k26JpTmdejGBMKmRfGJwdNBsDSKn4Citv7chruNnf2HWbUVlRbg7zTS1fWeQHW8i/I7zseUA5EbyHtIy8zbE+ZSAAXKfw1iiJWb5dE6C+8Onja59iSK0WI4L2+AytLzBSxRItIjX5sqRi18s92Ih+WaycgQxzgPZ/Mf4VM5iB/kMpRXquiBHPCkrCMNO+YR590HmD2PGY49gg/0eW9DqsWXgSgYCuJccYhZHdGOpELgJJRsF9gseb8yqZKETZz0kKLQZoy9eMevT0ZN7Mr4Hjn87SmTEptd6g2yM8rsU5khBJhPLImGGod8IqpQNTZniKIVMYW7agELr8nGvQXdoxg== 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 LV8PR11MB8678.namprd11.prod.outlook.com (2603:10b6:408:20b::16) by DM4PR11MB8225.namprd11.prod.outlook.com (2603:10b6:8:188::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6886.35; Mon, 16 Oct 2023 08:05:31 +0000 Received: from LV8PR11MB8678.namprd11.prod.outlook.com ([fe80::6303:dce9:fec9:711d]) by LV8PR11MB8678.namprd11.prod.outlook.com ([fe80::6303:dce9:fec9:711d%4]) with mapi id 15.20.6863.047; Mon, 16 Oct 2023 08:05:31 +0000 From: "Xiang, Haihao" To: "ffmpeg-devel@ffmpeg.org" Thread-Topic: [FFmpeg-devel] [PATCH 2/2] avfilter/vf_vpp_qsv: apply 3D LUT from file. Thread-Index: AQHZ7jSgw80MhTFTA0u/gBA+h5tdn7BMMqUA Date: Mon, 16 Oct 2023 08:05:30 +0000 Message-ID: <96f8c2a5d43a4091e0f439336759bd57dc866fe3.camel@intel.com> References: <20230923154125.31376-1-cyfdecyf@gmail.com> <20230923154125.31376-3-cyfdecyf@gmail.com> In-Reply-To: <20230923154125.31376-3-cyfdecyf@gmail.com> Accept-Language: en-AS, zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.44.4-0ubuntu2 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: LV8PR11MB8678:EE_|DM4PR11MB8225:EE_ x-ms-office365-filtering-correlation-id: a77e5147-1304-4601-7fca-08dbce1eaa9f x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: zG6kwe0vIxE9Bx3rBHnkQYO3rjrsUJwhtrxNZGNiKKNsphXLAutPcDgyLKMTdUbbnt0a80yIu6rr9fAByDE91HB7+fyCukJ4wBdegyyJwuK4i/zn6ZU9n5d0/MCtqo43x+7JpNFinVDsnUVaKEIkFQj/oy9rBp6Aa3+Kd7bMsjJsr9BdVDwZjiOZqylOjQzFjU4Wf6cR8ZxvXdFs2BThWnAnmVhNoFZZoDekI9DVsqlXs2dtiR0jXg+D8835G/+V/gZd/+koEUAp6WOQ/Ibxfy5bNu1M0JTq5EKoXt3zKiHiwayY6INIIsGtz+AP7dmFpE/IfnN4P/p5OaS2cW714KbJPLjdW571121Usi1R6oQGy0dg8fRPWAGHDp7EE2SJBMLarKeNym0fy+c6KtPEdYveeush/j9eMQVXf0tb+SV0kEtWpVl000+yC49AZoyR9hKBh+8Z8sJ21zbv4GgGvsKauWuI76gsK8gB1jr7XsCeLgZQtsAUc3be5WKc3iTMf88O7KWdk70DzidD4rEdEthptRjmOL4TS3CQpUjXG9zu/1uRFV9RfnQxTyNzB0V3wQz24OeXvrj5kfM0L0mnBWH6pCQ/KwCJ6T0zgEih/LU= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:LV8PR11MB8678.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(346002)(366004)(39860400002)(396003)(376002)(136003)(230922051799003)(451199024)(64100799003)(186009)(1800799009)(6486002)(966005)(19627235002)(122000001)(36756003)(82960400001)(38070700005)(38100700002)(83380400001)(71200400001)(6512007)(26005)(6506007)(76116006)(66946007)(66556008)(66476007)(64756008)(6916009)(316002)(66446008)(478600001)(2616005)(91956017)(30864003)(41300700001)(2906002)(86362001)(5660300002)(8936002)(8676002)(4326008); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?eTUxMGJISkp1MTR4NG5VRU1ZaUVndG5PSzV1anhlZ09pZm55a3lZUTVORWE4?= =?utf-8?B?QXF1TXdFUWtiWXB0TVBDdTVhbnV4bks2QUxlZnBKWjN0SU9id1FSWVpSbW85?= =?utf-8?B?c2dLSC9YckwrdHJwY0ovVTFEZ1RxN0NCeEhVVUR3ODZHYVdQbnJpYU84UnZ2?= =?utf-8?B?R2tUU3BlOGxKSTVSakIrTXVnQkY2dFg4R3pERjhyTTJsdkpEbS9WZURpbHRn?= =?utf-8?B?b2xZSzd5RkdhOSs2NXB1ZTVYN0hPQ0RWZzZ6SWR3bXJFelZKWHp6UU52Q3hn?= =?utf-8?B?V3B1Qk9kczZZM0RiVTJGNW95K1lHS0d4ck1Hc3R2VDBzYjJRNlJkcDdSbVNK?= =?utf-8?B?eEVmcmRNcGsvWTdXa1cydFJPN2NxdGRiS2dlTXNRdjYrbEJRelczOWZhcTFo?= =?utf-8?B?TE9Db3ZCL2IzSEg4b3NVUjFvMUV5WWswSjNxdTdaeE5NQm85bWZ2MFlwZkhR?= =?utf-8?B?cm5ZZmo2UTNWTWI5b2tMV1N2d2FpMEFsZk1TSXhxQ0Vkb0VCaTdXWmorUTJJ?= =?utf-8?B?SzFSQURWaFg3R0ljWVBBNWcrM281T1U2WmFRa2t5R1JtSmtvWGY5d0J0MlNN?= =?utf-8?B?SkNKdzRDWlZVUUh1enNENm04alRHRUFpNDJMQmY5MjRKMEVWR2VySWYzNkd3?= =?utf-8?B?Tm5iWXZxMk5pb3JCNVJOOVF5SnBmaDV0UnFUcjR3aDFXd1dIZXlQVjM5M0R5?= =?utf-8?B?UFQwMk93QTRZUllQUmNyTHhvb29hdEpTNWJ1a0t1L0VCWUpZcEs0V0VhdzJM?= =?utf-8?B?TjgwSWdRU2FNMmRsbldoUWp3bWV5bm9kWmUxWnkwaG5XdEsvak5KNDNUZmZK?= =?utf-8?B?bGRMb3dTOXhwSDQwZTNHQ3JiL1FESG9UWDF4eEFkWFQ1RjN6VzJ2bUNCa1ZH?= =?utf-8?B?WmNxekJKZ3Y5VURDQmZFTGtnaW5VSEhkZG1qL0NNQUhMNEZQcHUwajNxUWdt?= =?utf-8?B?ckphclVwRVZYRXJmUTdaV1R4S0N4U3BnUUdpM3FBZDFEYmU5ZGFVVExMZytP?= =?utf-8?B?a0Y2L0VVMUs3V2U3cEkvbDdLV3Z2SDFIaEFGMGlvdmJxUW9zTy84cGdUc1J6?= =?utf-8?B?MFN2OU1aQytGRi9xMTl6OG5uQjRWY0krQityY0diNlIwYUFDNE1XUUVYb3hz?= =?utf-8?B?aTJPMEVmSDZCanV1NE1td2MvdGMxekxWNkNCVGF2VGVGZk91VHEvN3krT2NS?= =?utf-8?B?ckpPdWZqalM4N0pBTmNrWU5ibGVYdU9ZTU16VUFGOGFLalQraFZidVhqWVBQ?= =?utf-8?B?VHRhZE42TXVqWFhrcGtjT010cEp0VWZnN01XL1BtN0tyYVdnQ1lacWI2WERa?= =?utf-8?B?dGJMNWFxZDB4bGFtMTl3bGZnak1Jbk0yN0FNeFdRaWRIUkNmM1lOWDJsTTVB?= =?utf-8?B?bS9PaGpHQXRFMzl0UTdqcmM2QXgvYjgvL2FxVDloLzhoZ3ZoY2x5bVl3bVph?= =?utf-8?B?WkZNWTdOa2lRaFUyKzc4RW1LRUtQUXJocW5acm9vai9HNTcxM0JBZC9QMlAx?= =?utf-8?B?YXB0MzNOOUJoWksvVUsrUU9uVzF1ako2MVdiRHNOd2IwUHR5dmdVZThSV2tT?= =?utf-8?B?Nk5lYVBQZncrZmNVSC9rLzFyeUR4NVVyOEdTZ1hQeGdjeXlwZFZXa1ZucVRw?= =?utf-8?B?aEY5NUxKWTdkd04yT0dBODhtSWQ2NWIva2FPOE5zU0ZEUU85YmpaWmlOQ1Yw?= =?utf-8?B?M0xjaE9WdWlpT0VsMkFzMGVsenZzNkR1YUtibkMyMHlmM0hrWkZsdU1sdU91?= =?utf-8?B?OFZrNFhleTlMSFFmVjJnVEFlL1RtUURqcE1DWXZVMkEvSXB4Q0VVdDliam5J?= =?utf-8?B?dklkWXl2Uk1MVFI1TzZjcFJvaHRZNG1sQ0Jpb1JNcVg0N29VazhXVW9kQ09l?= =?utf-8?B?em1iclNnaGdYRlFCOXFoZHBsSWNwd2dVWEdUVFZTNU9qOWNhQlZVQW42WFJV?= =?utf-8?B?TVkyNEV5T05PZlpHVm81aUlxeUhCaUluT3drUUhWeUQ3R0x2OFRFZThFUkZs?= =?utf-8?B?SEs2QmJERXE3cEZvWUlLQys2b3ZJNzF0WkZRM1VUbDlVVThkbm12TUpyT0Ry?= =?utf-8?B?MHB4dWUvZmMxT01oNWRYOVIydFdVVUpvNGJYdTdHV1ltK1JuSzQzeVNDWE44?= =?utf-8?B?c2hIVnVLKytpT0ZSTnNqMW54WU5vOXdPd0VzUm5kMHVjWHdEdFI4RmJ3bVEz?= =?utf-8?B?eEE9PQ==?= Content-ID: <886F68F56CB0CA49A5772CFB31142347@namprd11.prod.outlook.com> MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: LV8PR11MB8678.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a77e5147-1304-4601-7fca-08dbce1eaa9f X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Oct 2023 08:05:30.9853 (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: 7tQmteSW05Wedg78114CXhvaj/iFXrJmI02UFflhXqPGKGSeXr/buF7FNq6qokv3FSHF2WCjomqfYogPGBc9pw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB8225 X-OriginatorOrg: intel.com Subject: Re: [FFmpeg-devel] [PATCH 2/2] avfilter/vf_vpp_qsv: apply 3D LUT from file. X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: "cyfdecyf@gmail.com" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: T24gU2EsIDIwMjMtMDktMjMgYXQgMjM6MzYgKzA4MDAsIENoZW4gWXVmZWkgd3JvdGU6Cj4gVXNh Z2U6ICJ2cHBfcXN2PWx1dDNkX2ZpbGU9PHBhdGggdG8gZmlsZT4iCj4gCj4gT25seSBlbmFibGVk IHdpdGggVkFBUEkgYmVjYXVzZSB1c2luZyBWQVN1cmZhY2UgdG8gc3RvcmUgM0QgTFVULgo+IAo+ IFNpZ25lZC1vZmYtYnk6IENoZW4gWXVmZWkgPGN5ZmRlY3lmQGdtYWlsLmNvbT4KPiAtLS0KPiDC oGxpYmF2ZmlsdGVyL3ZmX3ZwcF9xc3YuYyB8IDI0MSArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0KPiDCoDEgZmlsZSBjaGFuZ2VkLCAyMzYgaW5zZXJ0aW9ucygrKSwgNSBk ZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvbGliYXZmaWx0ZXIvdmZfdnBwX3Fzdi5jIGIv bGliYXZmaWx0ZXIvdmZfdnBwX3Fzdi5jCj4gaW5kZXggYzA3YjQ1ZmVkYi4uY2Q5MTNkM2M0MCAx MDA2NDQKPiAtLS0gYS9saWJhdmZpbHRlci92Zl92cHBfcXN2LmMKPiArKysgYi9saWJhdmZpbHRl ci92Zl92cHBfcXN2LmMKPiBAQCAtMjMsNiArMjMsNyBAQAo+IMKgCj4gwqAjaW5jbHVkZSA8Zmxv YXQuaD4KPiDCoAo+ICsjaW5jbHVkZSAiY29uZmlnLmgiCj4gwqAjaW5jbHVkZSAiY29uZmlnX2Nv bXBvbmVudHMuaCIKPiDCoAo+IMKgI2luY2x1ZGUgImxpYmF2dXRpbC9vcHQuaCIKPiBAQCAtMzcs MTAgKzM4LDE1IEBACj4gwqAjaW5jbHVkZSAiaW50ZXJuYWwuaCIKPiDCoCNpbmNsdWRlICJhdmZp bHRlci5oIgo+IMKgI2luY2x1ZGUgImZpbHRlcnMuaCIKPiArI2luY2x1ZGUgImx1dDNkLmgiCj4g wqAKPiDCoCNpbmNsdWRlICJxc3Z2cHAuaCIKPiDCoCNpbmNsdWRlICJ0cmFuc3Bvc2UuaCIKPiDC oAo+ICsjaWYgUVNWX09ORVZQTCAmJiBDT05GSUdfVkFBUEkKPiArI2luY2x1ZGUgPHZhL3ZhLmg+ Cj4gKyNlbmRpZgoKVkEtQVBJIGlzIGF2YWlsYWJsZSBvbiBXaW5kb3dzIG5vdywgaG93ZXZlciBv bmVWUEwgY2FuJ3Qgd29yayB3aXRoIFZBLUFQSSBvbgpXaW5kb3dzLiAKCkknZCBwcmVmZXIgdG8g c3VwcG9ydCBNRlhfUkVTT1VSQ0VfU1lTVEVNX1NVUkZBQ0UgaW5zdGVhZCBvZgpNRlhfUkVTT1VS Q0VfVkFfU1VSRkFDRSBpbiBGRm1wZWcgYmVjYXVzZSB3ZSBuZWVuZCd0IGNvbnNpZGVyIFZBLUFQ SSB0b28gbXVjaApmb3IgTUZYX1JFU09VUkNFX1NZU1RFTV9TVVJGQUNFLiBvbmVWUEwgc2hvdWxk IGJlIGFibGUgdG8gY29weSBkYXRhIGZyb20gc3lzdGVtCm1lbW9yeSB0byBnZnggbWVtb3J5IGlu dGVybmFsbHkuCgpUaGFua3MKSGFpaGFvCgoKPiArCj4gwqAjZGVmaW5lIE9GRlNFVCh4KSBvZmZz ZXRvZihWUFBDb250ZXh0LCB4KQo+IMKgI2RlZmluZSBGTEFHUyAoQVZfT1BUX0ZMQUdfVklERU9f UEFSQU0gfCBBVl9PUFRfRkxBR19GSUxURVJJTkdfUEFSQU0pCj4gwqAKPiBAQCAtNjcsNiArNzMs MTAgQEAgdHlwZWRlZiBzdHJ1Y3QgVlBQQ29udGV4dHsKPiDCoMKgwqDCoCAvKiogSERSIHBhcmFt ZXRlcnMgYXR0YWNoZWQgb24gdGhlIGlucHV0IGZyYW1lICovCj4gwqDCoMKgwqAgbWZ4RXh0TWFz dGVyaW5nRGlzcGxheUNvbG91clZvbHVtZSBtZGN2X2NvbmY7Cj4gwqDCoMKgwqAgbWZ4RXh0Q29u dGVudExpZ2h0TGV2ZWxJbmZvIGNsbGlfY29uZjsKPiArCj4gK8KgwqDCoCAvKiogTFVUIHBhcmFt ZXRlcnMgYXR0YWNoZWQgb24gdGhlIGlucHV0IGZyYW1lICovCj4gK8KgwqDCoCBtZnhFeHRWUFAz REx1dCBsdXQzZF9jb25mOwo+ICvCoMKgwqAgTFVUM0RDb250ZXh0IGx1dDNkOwo+IMKgI2VuZGlm Cj4gwqAKPiDCoMKgwqDCoCAvKioKPiBAQCAtMjYwLDYgKzI3MCw3IEBAIHN0YXRpYyBhdl9jb2xk IGludCB2cHBfcHJlaW5pdChBVkZpbHRlckNvbnRleHQgKmN0eCkKPiDCoAo+IMKgc3RhdGljIGF2 X2NvbGQgaW50IHZwcF9pbml0KEFWRmlsdGVyQ29udGV4dCAqY3R4KQo+IMKgewo+ICvCoMKgwqAg aW50IHJldCA9IDA7Cj4gwqDCoMKgwqAgVlBQQ29udGV4dMKgICp2cHDCoCA9IGN0eC0+cHJpdjsK PiDCoAo+IMKgwqDCoMKgIGlmICghdnBwLT5vdXRwdXRfZm9ybWF0X3N0ciB8fCAhc3RyY21wKHZw cC0+b3V0cHV0X2Zvcm1hdF9zdHIsICJzYW1lIikpIHsKPiBAQCAtMjg4LDkgKzI5OSw5IEBAIHN0 YXRpYyBhdl9jb2xkIGludCB2cHBfaW5pdChBVkZpbHRlckNvbnRleHQgKmN0eCkKPiDCoMKgwqDC oCBTVFJJTkdfT1BUSU9OKGNvbG9yX3ByaW1hcmllcywgY29sb3JfcHJpbWFyaWVzLCBBVkNPTF9Q UklfVU5TUEVDSUZJRUQpOwo+IMKgwqDCoMKgIFNUUklOR19PUFRJT04oY29sb3JfdHJhbnNmZXIs wqAgY29sb3JfdHJhbnNmZXIswqAgQVZDT0xfVFJDX1VOU1BFQ0lGSUVEKTsKPiDCoMKgwqDCoCBT VFJJTkdfT1BUSU9OKGNvbG9yX21hdHJpeCzCoMKgwqAgY29sb3Jfc3BhY2UswqDCoMKgwqAgQVZD T0xfU1BDX1VOU1BFQ0lGSUVEKTsKPiAtCj4gwqAjdW5kZWYgU1RSSU5HX09QVElPTgo+IC3CoMKg wqAgcmV0dXJuIDA7Cj4gKwo+ICvCoMKgwqAgcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IMKgc3Rh dGljIGludCBjb25maWdfaW5wdXQoQVZGaWx0ZXJMaW5rICppbmxpbmspCj4gQEAgLTM4OCw2ICsz OTksMTk0IEBAIHN0YXRpYyBtZnhTdGF0dXMgZ2V0X21meF92ZXJzaW9uKGNvbnN0IEFWRmlsdGVy Q29udGV4dAo+ICpjdHgsIG1meFZlcnNpb24gKm1meF92ZXIKPiDCoMKgwqDCoCByZXR1cm4gTUZY UXVlcnlWZXJzaW9uKGRldmljZV9od2N0eC0+c2Vzc2lvbiwgbWZ4X3ZlcnNpb24pOwo+IMKgfQo+ IMKgCj4gKyNpZiBRU1ZfT05FVlBMICYmIENPTkZJR19WQUFQSQo+ICtzdGF0aWMgbWZ4U3RhdHVz IGdldF92YV9kaXNwbGF5KEFWRmlsdGVyQ29udGV4dCAqY3R4LCBWQURpc3BsYXkgKnZhX2Rpc3Bs YXkpCj4gK3sKPiArwqDCoMKgIFZQUENvbnRleHQgKnZwcCA9IGN0eC0+cHJpdjsKPiArwqDCoMKg IFFTVlZQUENvbnRleHQgKnFzdnZwcCA9ICZ2cHAtPnFzdjsKPiArwqDCoMKgIG1meEhETCBoYW5k bGU7Cj4gK8KgwqDCoCBtZnhTdGF0dXMgcmV0Owo+ICsKPiArwqDCoMKgIHJldCA9IE1GWFZpZGVv Q09SRV9HZXRIYW5kbGUocXN2dnBwLT5zZXNzaW9uLCBNRlhfSEFORExFX1ZBX0RJU1BMQVksCj4g JmhhbmRsZSk7Cj4gK8KgwqDCoCBpZiAocmV0ICE9IE1GWF9FUlJfTk9ORSkgewo+ICvCoMKgwqDC oMKgwqDCoCBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1IsICJNRlhWaWRlb0NPUkVfR2V0SGFuZGxl IGZhaWxlZCwgc3RhdHVzOgo+ICVkXG4iLCByZXQpOwo+ICvCoMKgwqDCoMKgwqDCoCAqdmFfZGlz cGxheSA9IE5VTEw7Cj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4gK8KgwqDCoCB9Cj4g Kwo+ICvCoMKgwqAgKnZhX2Rpc3BsYXkgPSAoVkFEaXNwbGF5KWhhbmRsZTsKPiArwqDCoMKgIHJl dHVybiBNRlhfRVJSX05PTkU7Cj4gK30KPiArCj4gKy8vIEFsbG9jYXRlIG1lbW9yeSBvbiBkZXZp Y2UgYW5kIGNvcHkgM0QgTFVUIHRhYmxlLgo+ICsvLyBSZWZlcmVuY2UKPiBodHRwczovL3NwZWMu b25lYXBpLmlvL29uZXZwbC8yLjkuMC9wcm9ncmFtbWluZ19ndWlkZS9WUExfcHJnX3ZwcC5odG1s I3ZpZGVvLXByb2Nlc3NpbmctM2RsdXQKPiArc3RhdGljIGludCBpbml0XzNkbHV0X3N1cmZhY2Uo QVZGaWx0ZXJDb250ZXh0ICpjdHgpCj4gK3sKPiArwqDCoMKgIFZQUENvbnRleHQgKnZwcCA9IGN0 eC0+cHJpdjsKPiArwqDCoMKgIExVVDNEQ29udGV4dCAqbHV0M2QgPSAmdnBwLT5sdXQzZDsKPiAr wqDCoMKgIG1meEV4dFZQUDNETHV0ICpsdXQzZF9jb25mID0gJnZwcC0+bHV0M2RfY29uZjsKPiAr Cj4gK8KgwqDCoCBWQVN0YXR1cyByZXQgPSAwOwo+ICvCoMKgwqAgVkFEaXNwbGF5IHZhX2RweSA9 IDA7Cj4gK8KgwqDCoCBWQVN1cmZhY2VJRCBzdXJmYWNlX2lkID0gMDsKPiArwqDCoMKgIFZBU3Vy ZmFjZUF0dHJpYiBzdXJmYWNlX2F0dHJpYjsKPiArwqDCoMKgIFZBSW1hZ2Ugc3VyZmFjZV9pbWFn ZTsKPiArwqDCoMKgIG1meFUxNiAqc3VyZmFjZV91MTYgPSBOVUxMOwo+ICvCoMKgwqAgbWZ4M0RM dXRNZW1vcnlMYXlvdXQgbWVtX2xheW91dDsKPiArwqDCoMKgIG1meE1lbUlkIG1lbV9pZCA9IDA7 Cj4gKwo+ICvCoMKgwqAgaW50IGx1dF9zaXplID0gbHV0M2QtPmx1dHNpemU7Cj4gK8KgwqDCoCBp bnQgbXVsX3NpemUgPSAwOwo+ICsKPiArwqDCoMKgIGludCByLCBnLCBiLCBsdXRfaWR4LCBzZl9p ZHg7Cj4gK8KgwqDCoCBzdHJ1Y3QgcmdidmVjICpzID0gTlVMTDsKPiArCj4gK8KgwqDCoCBhdl9s b2coY3R4LCBBVl9MT0dfVkVSQk9TRSwgImNyZWF0ZSAzRCBMVVQgc3VyZmFjZSwgc2l6ZTogJXUu XG4iLAo+IGx1dF9zaXplKTsKPiArCj4gK8KgwqDCoCBzd2l0Y2ggKGx1dF9zaXplKSB7Cj4gK8Kg wqDCoCBjYXNlIDE3Ogo+ICvCoMKgwqDCoMKgwqDCoCBtdWxfc2l6ZSA9IDMyOwo+ICvCoMKgwqDC oMKgwqDCoCBtZW1fbGF5b3V0ID0gTUZYXzNETFVUX01FTU9SWV9MQVlPVVRfSU5URUxfMTdMVVQ7 Cj4gK8KgwqDCoMKgwqDCoMKgIGJyZWFrOwo+ICvCoMKgwqAgY2FzZSAzMzoKPiArwqDCoMKgwqDC oMKgwqAgbXVsX3NpemUgPSA2NDsKPiArwqDCoMKgwqDCoMKgwqAgbWVtX2xheW91dCA9IE1GWF8z RExVVF9NRU1PUllfTEFZT1VUX0lOVEVMXzMzTFVUOwo+ICvCoMKgwqDCoMKgwqDCoCBicmVhazsK PiArwqDCoMKgIGNhc2UgNjU6Cj4gK8KgwqDCoMKgwqDCoMKgIG11bF9zaXplID0gMTI4Owo+ICvC oMKgwqDCoMKgwqDCoCBtZW1fbGF5b3V0ID0gTUZYXzNETFVUX01FTU9SWV9MQVlPVVRfSU5URUxf NjVMVVQ7Cj4gK8KgwqDCoMKgwqDCoMKgIGJyZWFrOwo+ICvCoMKgwqAgZGVmYXVsdDoKPiArwqDC oMKgwqDCoMKgwqAgYXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9SLCAiM0QgTFVUIHN1cmZhY2Ugc3Vw cG9ydHMgb25seSBMVVQgc2l6ZTogMTcsCj4gMzMsIDY1LiIpOwo+ICvCoMKgwqDCoMKgwqDCoCBy ZXR1cm4gQVZFUlJPUihFSU5WQUwpOwo+ICvCoMKgwqAgfQo+ICsKPiArwqDCoMKgIHJldCA9IGdl dF92YV9kaXNwbGF5KGN0eCwgJnZhX2RweSk7Cj4gK8KgwqDCoCBpZiAocmV0ICE9IFZBX1NUQVRV U19TVUNDRVNTKSB7Cj4gK8KgwqDCoMKgwqDCoMKgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwg ImdldCBWQURpc3BsYXkgZmFpbGVkLCB1bmFibGUgdG8gY3JlYXRlIDNECj4gTFVUIHN1cmZhY2Uu XG4iKTsKPiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsKPiArwqDCoMKgIH0KPiArCj4gK8Kg wqDCoCBtZW1zZXQoJnN1cmZhY2VfYXR0cmliLCAwLCBzaXplb2Yoc3VyZmFjZV9hdHRyaWIpKTsK PiArwqDCoMKgIHN1cmZhY2VfYXR0cmliLnR5cGUgPSBWQVN1cmZhY2VBdHRyaWJQaXhlbEZvcm1h dDsKPiArwqDCoMKgIHN1cmZhY2VfYXR0cmliLmZsYWdzID0gVkFfU1VSRkFDRV9BVFRSSUJfU0VU VEFCTEU7Cj4gK8KgwqDCoCBzdXJmYWNlX2F0dHJpYi52YWx1ZS50eXBlID0gVkFHZW5lcmljVmFs dWVUeXBlSW50ZWdlcjsKPiArwqDCoMKgIHN1cmZhY2VfYXR0cmliLnZhbHVlLnZhbHVlLmkgPSBW QV9GT1VSQ0NfUkdCQTsKPiArCj4gK8KgwqDCoCByZXQgPSB2YUNyZWF0ZVN1cmZhY2VzKHZhX2Rw eSwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBWQV9SVF9GT1JNQVRfUkdCMzIswqAgLy8gNCBieXRlcwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGx1dF9zaXplICogbXVsX3NpemUsIC8v IHdpZHRoCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgbHV0X3NpemUgKiAyLMKgwqDCoMKgwqDCoMKgIC8vIGhlaWdodAo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZzdXJmYWNlX2lkLCAx LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ICZzdXJmYWNlX2F0dHJpYiwgMSk7Cj4gK8KgwqDCoCBpZiAocmV0ICE9IFZBX1NUQVRVU19TVUND RVNTKSB7Cj4gK8KgwqDCoMKgwqDCoMKgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwgInZhQ3Jl YXRlU3VyZmFjZXMgZm9yIDNEIExVVCBzdXJmYWNlCj4gZmFpbGVkLCBzdGF0dXM6ICVkICVzXG4i LCByZXQsIHZhRXJyb3JTdHIocmV0KSk7Cj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBBVkVSUk9S KHJldCk7Cj4gK8KgwqDCoCB9Cj4gK8KgwqDCoCBhdl9sb2coY3R4LCBBVl9MT0dfREVCVUcsICIz RCBMVVQgc3VyZmFjZSBpZCAldVxuIiwgc3VyZmFjZV9pZCk7Cj4gKwo+ICvCoMKgwqAgcmV0ID0g dmFTeW5jU3VyZmFjZSh2YV9kcHksIHN1cmZhY2VfaWQpOwo+ICvCoMKgwqAgaWYgKHJldCAhPSBW QV9TVEFUVVNfU1VDQ0VTUykgewo+ICvCoMKgwqDCoMKgwqDCoCBhdl9sb2coY3R4LCBBVl9MT0df RVJST1IsICJ2YVN5bmNTdXJmYWNlIGZvciAzRCBMVVQgc3VyZmFjZSBmYWlsZWQsCj4gc3RhdHVz OiAlZCAlc1xuIiwgcmV0LCB2YUVycm9yU3RyKHJldCkpOwo+ICvCoMKgwqDCoMKgwqDCoCBnb3Rv IGVycl9kZXN0cm95X3N1cmZhY2U7Cj4gK8KgwqDCoCB9Cj4gKwo+ICvCoMKgwqAgbWVtc2V0KCZz dXJmYWNlX2ltYWdlLCAwLCBzaXplb2Yoc3VyZmFjZV9pbWFnZSkpOwo+ICvCoMKgwqAgcmV0ID0g dmFEZXJpdmVJbWFnZSh2YV9kcHksIHN1cmZhY2VfaWQsICZzdXJmYWNlX2ltYWdlKTsKPiArwqDC oMKgIGlmIChyZXQgIT0gVkFfU1RBVFVTX1NVQ0NFU1MpIHsKPiArwqDCoMKgwqDCoMKgwqAgYXZf bG9nKGN0eCwgQVZfTE9HX0VSUk9SLCAidmFEZXJpdmVJbWFnZSBmb3IgM0QgTFVUIHN1cmZhY2Ug ZmFpbGVkLAo+IHN0YXR1czogJWQgJXNcbiIsIHJldCwgdmFFcnJvclN0cihyZXQpKTsKPiArwqDC oMKgwqDCoMKgwqAgZ290byBlcnJfZGVzdHJveV9zdXJmYWNlOwo+ICvCoMKgwqAgfQo+ICvCoMKg wqAgaWYgKHN1cmZhY2VfaW1hZ2UuZm9ybWF0LmZvdXJjYyAhPSBWQV9GT1VSQ0NfUkdCQSkgewo+ ICvCoMKgwqDCoMKgwqDCoCBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1IsICJ2YURlcml2ZUltYWdl IGZvcm1hdCBpcyBub3QgZXhwZWN0ZWQKPiBWQV9GT1VSQ0NfUkdCQSwgZ290IDB4JXhcbiIsIHN1 cmZhY2VfaW1hZ2UuZm9ybWF0LmZvdXJjYyk7Cj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gZXJyX2Rl c3Ryb3lfaW1hZ2U7Cj4gK8KgwqDCoCB9Cj4gKwo+ICvCoMKgwqAgLy8gTWFwIHN1cmZhY2UgdG8g c3lzdGVtIG1lbW9yeSBmb3IgY29weSAzRCBMVVQgdGFibGUuCj4gK8KgwqDCoCByZXQgPSB2YU1h cEJ1ZmZlcih2YV9kcHksIHN1cmZhY2VfaW1hZ2UuYnVmLCAodm9pZCAqKikmc3VyZmFjZV91MTYp Owo+ICvCoMKgwqAgaWYgKHJldCAhPSBWQV9TVEFUVVNfU1VDQ0VTUykgewo+ICvCoMKgwqDCoMKg wqDCoCBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1IsICJ2YU1hcEJ1ZmZlciBmb3IgM0QgTFVUIHN1 cmZhY2UgZmFpbGVkLAo+IHN0YXR1czogJWQgJXNcbiIsIHJldCwgdmFFcnJvclN0cihyZXQpKTsK PiArwqDCoMKgwqDCoMKgwqAgZ290byBlcnJfZGVzdHJveV9pbWFnZTsKPiArwqDCoMKgIH0KPiAr Cj4gK8KgwqDCoCAvLyBDb3B5IDNEIExVVCB0byBzdXJmYWNlLgo+ICvCoMKgwqAgbWVtc2V0KHN1 cmZhY2VfdTE2LCAwLCBzdXJmYWNlX2ltYWdlLndpZHRoICogc3VyZmFjZV9pbWFnZS5oZWlnaHQg KiA0KTsKPiArI2RlZmluZSBJTlRFTF8zRExVVF9TQ0FMRSAoVUlOVDE2X01BWCAtIDEpCj4gK8Kg wqDCoCBmb3IgKHIgPSAwOyByIDwgbHV0X3NpemU7ICsrcikgewo+ICvCoMKgwqDCoMKgwqDCoCBm b3IgKGcgPSAwOyBnIDwgbHV0X3NpemU7ICsrZykgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGZvciAoYiA9IDA7IGIgPCBsdXRfc2l6ZTsgKytiKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBsdXRfaWR4ID0gciAqIGx1dF9zaXplICogbHV0X3NpemUgKyBnICogbHV0X3Np emUgKyBiOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcyA9ICZsdXQzZC0+bHV0 W2x1dF9pZHhdOwo+ICsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNmX2lkeCA9 IChyICogbHV0X3NpemUgKiBtdWxfc2l6ZSArIGcgKiBtdWxfc2l6ZSArIGIpICogNDsKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN1cmZhY2VfdTE2W3NmX2lkeCArIDBdID0gKG1m eFUxNikocy0+ciAqIElOVEVMXzNETFVUX1NDQUxFKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHN1cmZhY2VfdTE2W3NmX2lkeCArIDFdID0gKG1meFUxNikocy0+ZyAqIElOVEVM XzNETFVUX1NDQUxFKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN1cmZhY2Vf dTE2W3NmX2lkeCArIDJdID0gKG1meFUxNikocy0+YiAqIElOVEVMXzNETFVUX1NDQUxFKTsKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8vIHN1cmZhY2VfdTE2W3NmX2lkeCArIDRd IGlzIHJlc2VydmVkIGNoYW5uZWwuCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+ICvCoMKg wqDCoMKgwqDCoCB9Cj4gK8KgwqDCoCB9Cj4gKyN1bmRlZiBJTlRFTF8zRExVVF9TQ0FMRQo+ICsK PiArwqDCoMKgIGlmICh2YVVubWFwQnVmZmVyKHZhX2RweSwgc3VyZmFjZV9pbWFnZS5idWYpKSB7 Cj4gK8KgwqDCoMKgwqDCoMKgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwgInZhVW5tYXBCdWZm ZXIgZm9yIDNEIExVVCBzdXJmYWNlIGZhaWxlZCwKPiBzdGF0dXM6ICVkICVzXG4iLCByZXQsIHZh RXJyb3JTdHIocmV0KSk7Cj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gZXJyX2Rlc3Ryb3lfaW1hZ2U7 Cj4gK8KgwqDCoCB9Cj4gK8KgwqDCoCB2YURlc3Ryb3lJbWFnZSh2YV9kcHksIHN1cmZhY2VfaW1h Z2UuaW1hZ2VfaWQpOwo+ICsKPiArwqDCoMKgIG1lbV9pZCA9IGF2X21hbGxvYyhzaXplb2YoVkFT dXJmYWNlSUQpKTsKPiArwqDCoMKgIGlmIChtZW1faWQgPT0gMCkgewo+ICvCoMKgwqDCoMKgwqDC oCByZXQgPSBBVkVSUk9SKEVOT01FTSk7Cj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gZXJyX2Rlc3Ry b3lfc3VyZmFjZTsKPiArwqDCoMKgIH0KPiArCj4gK8KgwqDCoCBhdl9sb2coY3R4LCBBVl9MT0df REVCVUcsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgICJ1cGxvYWQgM0QgTFVUIHN1cmZhY2Ugd2lk dGggJWQsIGhlaWdodCAlZFxuIiwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGludClzdXJmYWNl X2ltYWdlLndpZHRoLCAoaW50KXN1cmZhY2VfaW1hZ2UuaGVpZ2h0KTsKPiArCj4gK8KgwqDCoCBt ZW1zZXQobHV0M2RfY29uZiwgMCwgc2l6ZW9mKCpsdXQzZF9jb25mKSk7Cj4gK8KgwqDCoCBsdXQz ZF9jb25mLT5IZWFkZXIuQnVmZmVySWQgPSBNRlhfRVhUQlVGRl9WUFBfM0RMVVQ7Cj4gK8KgwqDC oCBsdXQzZF9jb25mLT5IZWFkZXIuQnVmZmVyU3ogPSBzaXplb2YoKmx1dDNkX2NvbmYpOwo+ICvC oMKgwqAgbHV0M2RfY29uZi0+Q2hhbm5lbE1hcHBpbmcgPSBNRlhfM0RMVVRfQ0hBTk5FTF9NQVBQ SU5HX1JHQl9SR0I7Cj4gK8KgwqDCoCBsdXQzZF9jb25mLT5CdWZmZXJUeXBlID0gTUZYX1JFU09V UkNFX1ZBX1NVUkZBQ0U7Cj4gK8KgwqDCoCBsdXQzZF9jb25mLT5WaWRlb0J1ZmZlci5EYXRhVHlw ZSA9IE1GWF9EQVRBX1RZUEVfVTE2Owo+ICvCoMKgwqAgbHV0M2RfY29uZi0+VmlkZW9CdWZmZXIu TWVtTGF5b3V0ID0gbWVtX2xheW91dDsKPiArwqDCoMKgIGx1dDNkX2NvbmYtPlZpZGVvQnVmZmVy Lk1lbUlkID0gbWVtX2lkOwo+ICvCoMKgwqAgKigoVkFTdXJmYWNlSUQqKWx1dDNkX2NvbmYtPlZp ZGVvQnVmZmVyLk1lbUlkKSA9IHN1cmZhY2VfaWQ7Cj4gKwo+ICvCoMKgwqAgcmV0dXJuIDA7Cj4g Kwo+ICtlcnJfZGVzdHJveV9pbWFnZToKPiArwqDCoMKgIHZhRGVzdHJveUltYWdlKHZhX2RweSwg c3VyZmFjZV9pbWFnZS5pbWFnZV9pZCk7Cj4gK2Vycl9kZXN0cm95X3N1cmZhY2U6Cj4gK8KgwqDC oCB2YURlc3Ryb3lTdXJmYWNlcyh2YV9kcHksICZzdXJmYWNlX2lkLCAxKTsKPiArwqDCoMKgIHJl dHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgdW5pbml0XzNkbHV0X3N1cmZhY2UoQVZG aWx0ZXJDb250ZXh0ICpjdHgpIHsKPiArwqDCoMKgIFZQUENvbnRleHQgKnZwcCA9IGN0eC0+cHJp djsKPiArwqDCoMKgIG1meEV4dFZQUDNETHV0ICpsdXQzZF9jb25mID0gJnZwcC0+bHV0M2RfY29u ZjsKPiArwqDCoMKgIFZBRGlzcGxheSB2YV9kcHkgPSAwOwo+ICvCoMKgwqAgaW50IHJldDsKPiAr Cj4gK8KgwqDCoCBpZiAobHV0M2RfY29uZi0+SGVhZGVyLkJ1ZmZlcklkID09IE1GWF9FWFRCVUZG X1ZQUF8zRExVVCkgewo+ICvCoMKgwqDCoMKgwqDCoCByZXQgPSBnZXRfdmFfZGlzcGxheShjdHgs ICZ2YV9kcHkpOwo+ICvCoMKgwqDCoMKgwqDCoCBpZiAoIXZhX2RweSkgewo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4gK8KgwqDCoMKgwqDCoMKgIH0KPiArwqDCoMKgwqDC oMKgwqAgcmV0ID0gdmFEZXN0cm95U3VyZmFjZXModmFfZHB5LCAoVkFTdXJmYWNlSUQqKWx1dDNk X2NvbmYtCj4gPlZpZGVvQnVmZmVyLk1lbUlkLCAxKTsKPiArwqDCoMKgwqDCoMKgwqAgaWYgKHJl dCAhPSBWQV9TVEFUVVNfU1VDQ0VTUykgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGF2X2xv ZyhjdHgsIEFWX0xPR19FUlJPUiwgInZhRGVzdHJveVN1cmZhY2VzIGZhaWxlZCwgc3RhdHVzOiAl ZAo+ICVzXG4iLCByZXQsIHZhRXJyb3JTdHIocmV0KSApOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHJldHVybiByZXQ7Cj4gK8KgwqDCoMKgwqDCoMKgIH0KPiArwqDCoMKgwqDCoMKgwqAgYXZf ZnJlZShsdXQzZF9jb25mLT5WaWRlb0J1ZmZlci5NZW1JZCk7Cj4gK8KgwqDCoCB9Cj4gK8KgwqDC oCBtZW1zZXQobHV0M2RfY29uZiwgMCwgc2l6ZW9mKCpsdXQzZF9jb25mKSk7Cj4gKwo+ICvCoMKg wqAgcmV0dXJuIDA7Cj4gK30KPiArI2VuZGlmIC8vIFFTVl9PTkVWUEwgJiYgQ09ORklHX1ZBQVBJ Cj4gKwo+IMKgc3RhdGljIGludCB2cHBfc2V0X2ZyYW1lX2V4dF9wYXJhbXMoQVZGaWx0ZXJDb250 ZXh0ICpjdHgsIGNvbnN0IEFWRnJhbWUgKmluLAo+IEFWRnJhbWUgKm91dCzCoCBRU1ZWUFBGcmFt ZVBhcmFtICpmcCkKPiDCoHsKPiDCoCNpZiBRU1ZfT05FVlBMCj4gQEAgLTQwMSw2ICs2MDAsNyBA QCBzdGF0aWMgaW50IHZwcF9zZXRfZnJhbWVfZXh0X3BhcmFtcyhBVkZpbHRlckNvbnRleHQgKmN0 eCwKPiBjb25zdCBBVkZyYW1lICppbiwgQVZGCj4gwqAKPiDCoMKgwqDCoCBmcC0+bnVtX2V4dF9i dWYgPSAwOwo+IMKgCj4gK8KgwqDCoCBhdl9sb2coY3R4LCBBVl9MT0dfREVCVUcsICJ2cHBfc2V0 X2ZyYW1lX2V4dF9wYXJhbXMgUVNWX09ORVZQTFxuIik7Cj4gwqDCoMKgwqAgaWYgKCFpbiB8fCAh b3V0IHx8Cj4gwqDCoMKgwqDCoMKgwqDCoCAhUVNWX1JVTlRJTUVfVkVSU0lPTl9BVExFQVNUKHFz dnZwcC0+dmVyLCAyLCAwKSkKPiDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAwOwo+IEBAIC00OTks NiArNjk5LDEzIEBAIHN0YXRpYyBpbnQgdnBwX3NldF9mcmFtZV9leHRfcGFyYW1zKEFWRmlsdGVy Q29udGV4dCAqY3R4LAo+IGNvbnN0IEFWRnJhbWUgKmluLCBBVkYKPiDCoMKgwqDCoCBvdXR2c2lf Y29uZi5NYXRyaXhDb2VmZmljaWVudHPCoMKgwqDCoMKgwqAgPSAob3V0LT5jb2xvcnNwYWNlID09 Cj4gQVZDT0xfU1BDX1VOU1BFQ0lGSUVEKSA/IEFWQ09MX1NQQ19CVDcwOSA6IG91dC0+Y29sb3Jz cGFjZTsKPiDCoMKgwqDCoCBvdXR2c2lfY29uZi5Db2xvdXJEZXNjcmlwdGlvblByZXNlbnQgPSAx Owo+IMKgCj4gKyNpZiBDT05GSUdfVkFBUEkKPiArwqDCoMKgIGlmICh2cHAtPmx1dDNkLmZpbGUg JiYgKHZwcC0+bHV0M2RfY29uZi5IZWFkZXIuQnVmZmVySWQgPT0gMCkpIHsKPiArwqDCoMKgwqDC oMKgwqAgLy8gM0QgTFVUIGRvZXMgbm90IGRlcGVuZCBvbiBpbi9vdXQgZnJhbWUsIHNvIGluaXRp YWxpemUganVzdCBvbmNlLgo+ICvCoMKgwqDCoMKgwqDCoCBpbml0XzNkbHV0X3N1cmZhY2UoY3R4 KTsKPiArwqDCoMKgIH0KPiArI2VuZGlmCj4gKwo+IMKgwqDCoMKgIGlmIChtZW1jbXAoJnZwcC0+ aW52c2lfY29uZiwgJmludnNpX2NvbmYsIHNpemVvZihtZnhFeHRWaWRlb1NpZ25hbEluZm8pKQo+ IHx8Cj4gwqDCoMKgwqDCoMKgwqDCoCBtZW1jbXAoJnZwcC0+bWRjdl9jb25mLCAmbWRjdl9jb25m LAo+IHNpemVvZihtZnhFeHRNYXN0ZXJpbmdEaXNwbGF5Q29sb3VyVm9sdW1lKSkgfHwKPiDCoMKg wqDCoMKgwqDCoMKgIG1lbWNtcCgmdnBwLT5jbGxpX2NvbmYsICZjbGxpX2NvbmYsCj4gc2l6ZW9m KG1meEV4dENvbnRlbnRMaWdodExldmVsSW5mbykpIHx8Cj4gQEAgLTUxNiw2ICs3MjMsMTAgQEAg c3RhdGljIGludCB2cHBfc2V0X2ZyYW1lX2V4dF9wYXJhbXMoQVZGaWx0ZXJDb250ZXh0ICpjdHgs Cj4gY29uc3QgQVZGcmFtZSAqaW4sIEFWRgo+IMKgwqDCoMKgwqDCoMKgwqAgdnBwLT5jbGxpX2Nv bmbCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgID0gY2xsaV9jb25mOwo+ IMKgwqDCoMKgwqDCoMKgwqAgaWYgKGNsbGlfY29uZi5IZWFkZXIuQnVmZmVySWQpCj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGZwLT5leHRfYnVmW2ZwLT5udW1fZXh0X2J1ZisrXSA9IChtZnhF eHRCdWZmZXIqKSZ2cHAtPmNsbGlfY29uZjsKPiArCj4gK8KgwqDCoMKgwqDCoMKgIGlmICh2cHAt Pmx1dDNkX2NvbmYuSGVhZGVyLkJ1ZmZlcklkKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg ZnAtPmV4dF9idWZbZnAtPm51bV9leHRfYnVmKytdID0gKG1meEV4dEJ1ZmZlciAqKSZ2cHAtCj4g Pmx1dDNkX2NvbmY7Cj4gK8KgwqDCoMKgwqDCoMKgIH0KPiDCoMKgwqDCoCB9Cj4gwqAjZW5kaWYK PiDCoAo+IEBAIC01MjQsNiArNzM1LDcgQEAgc3RhdGljIGludCB2cHBfc2V0X2ZyYW1lX2V4dF9w YXJhbXMoQVZGaWx0ZXJDb250ZXh0ICpjdHgsCj4gY29uc3QgQVZGcmFtZSAqaW4sIEFWRgo+IMKg Cj4gwqBzdGF0aWMgaW50IGNvbmZpZ19vdXRwdXQoQVZGaWx0ZXJMaW5rICpvdXRsaW5rKQo+IMKg ewo+ICvCoMKgwqAgaW50IHJldDsKPiDCoMKgwqDCoCBBVkZpbHRlckNvbnRleHQgKmN0eCA9IG91 dGxpbmstPnNyYzsKPiDCoMKgwqDCoCBWUFBDb250ZXh0wqDCoMKgwqDCoCAqdnBwID0gY3R4LT5w cml2Owo+IMKgwqDCoMKgIFFTVlZQUFBhcmFtwqDCoMKgwqAgcGFyYW0gPSB7IE5VTEwgfTsKPiBA QCAtNzExLDkgKzkyMywxNyBAQCBzdGF0aWMgaW50IGNvbmZpZ19vdXRwdXQoQVZGaWx0ZXJMaW5r ICpvdXRsaW5rKQo+IMKgwqDCoMKgwqDCoMKgwqAgdnBwLT5jb2xvcl90cmFuc2ZlciAhPSBBVkNP TF9UUkNfVU5TUEVDSUZJRUQgfHwKPiDCoMKgwqDCoMKgwqDCoMKgIHZwcC0+Y29sb3JfbWF0cml4 ICE9IEFWQ09MX1NQQ19VTlNQRUNJRklFRCB8fAo+IMKgwqDCoMKgwqDCoMKgwqAgdnBwLT50b25l bWFwIHx8Cj4gLcKgwqDCoMKgwqDCoMKgICF2cHAtPmhhc19wYXNzdGhyb3VnaCkKPiArwqDCoMKg wqDCoMKgwqAgdnBwLT5sdXQzZC5maWxlIHx8Cj4gK8KgwqDCoMKgwqDCoMKgICF2cHAtPmhhc19w YXNzdGhyb3VnaCkgewo+ICvCoMKgwqDCoMKgwqDCoCBpZiAodnBwLT5sdXQzZC5maWxlKSB7Cj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXZfbG9nKGN0eCwgQVZfTE9HX0lORk8sICJsb2FkIDNE IExVVCBmcm9tIGZpbGU6ICVzXG4iLCB2cHAtCj4gPmx1dDNkLmZpbGUpOwo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHJldCA9IGZmX2x1dDNkX2luaXQoY3R4LCAmdnBwLT5sdXQzZCk7Cj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHJldCAhPSAwKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Owo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPiAr wqDCoMKgwqDCoMKgwqAgfQo+IMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGZmX3FzdnZwcF9pbml0 KGN0eCwgJnBhcmFtKTsKPiAtwqDCoMKgIGVsc2Ugewo+ICvCoMKgwqAgfSBlbHNlIHsKPiDCoMKg wqDCoMKgwqDCoMKgIC8qIE5vIE1GWCBzZXNzaW9uIGlzIGNyZWF0ZWQgaW4gdGhpcyBjYXNlICov Cj4gwqDCoMKgwqDCoMKgwqDCoCBhdl9sb2coY3R4LCBBVl9MT0dfVkVSQk9TRSwgInFzdiB2cHAg cGFzcyB0aHJvdWdoIG1vZGUuXG4iKTsKPiDCoMKgwqDCoMKgwqDCoMKgIGlmIChpbmxpbmstPmh3 X2ZyYW1lc19jdHgpCj4gQEAgLTgwMSw2ICsxMDIxLDE1IEBAIGVvZjoKPiDCoAo+IMKgc3RhdGlj IGF2X2NvbGQgdm9pZCB2cHBfdW5pbml0KEFWRmlsdGVyQ29udGV4dCAqY3R4KQo+IMKgewo+ICvC oMKgwqAgVlBQQ29udGV4dCAqdnBwID0gY3R4LT5wcml2Owo+ICsKPiArI2lmIFFTVl9PTkVWUEwg JiYgQ09ORklHX1ZBQVBJCj4gK8KgwqDCoCB1bmluaXRfM2RsdXRfc3VyZmFjZShjdHgpOwo+ICsj ZW5kaWYKPiArCj4gK8KgwqDCoCBpZiAodnBwLT5sdXQzZC5maWxlKSB7Cj4gK8KgwqDCoMKgwqDC oMKgIGZmX2x1dDNkX3VuaW5pdCgmdnBwLT5sdXQzZCk7Cj4gK8KgwqDCoCB9Cj4gwqDCoMKgwqAg ZmZfcXN2dnBwX2Nsb3NlKGN0eCk7Cj4gwqB9Cj4gwqAKPiBAQCAtOTI0LDcgKzExNTMsOSBAQCBz dGF0aWMgY29uc3QgQVZPcHRpb24gdnBwX29wdGlvbnNbXSA9IHsKPiDCoMKgwqDCoMKgwqAgT0ZG U0VUKGNvbG9yX3RyYW5zZmVyX3N0cikswqAgQVZfT1BUX1RZUEVfU1RSSU5HLCB7IC5zdHIgPSBO VUxMIH0sCj4gLmZsYWdzID0gRkxBR1MgfSwKPiDCoAo+IMKgwqDCoMKgIHsidG9uZW1hcCIsICJQ ZXJmb3JtIHRvbmVtYXBwaW5nICgwPWRpc2FibGUgdG9uZW1hcHBpbmcsIDE9cGVyZm9ybQo+IHRv bmVtYXBwaW5nIGlmIHRoZSBpbnB1dCBoYXMgSERSIG1ldGFkYXRhKSIsIE9GRlNFVCh0b25lbWFw KSwgQVZfT1BUX1RZUEVfSU5ULAo+IHsuaTY0ID0gMCB9LCAwLCAxLCAuZmxhZ3MgPSBGTEFHU30s Cj4gLQo+ICsjaWYgUVNWX09ORVZQTCAmJiBDT05GSUdfVkFBUEkKPiArwqDCoMKgIHsgImx1dDNk X2ZpbGUiLCAiTG9hZCBhbmQgYXBwbHkgM0QgTFVUIGZpbGUiLCBPRkZTRVQobHV0M2QpICsKPiBv ZmZzZXRvZihMVVQzRENvbnRleHQsIGZpbGUpLCBBVl9PUFRfVFlQRV9TVFJJTkcsIHsgLnN0ciA9 IE5VTEwgfSwgLmZsYWdzID0KPiBGTEFHUyB9LAo+ICsjZW5kaWYKPiDCoMKgwqDCoCB7IE5VTEwg fQo+IMKgfTsKPiDCoAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwpo dHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKClRvIHVuc3Vi c2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwtcmVxdWVzdEBm Zm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo=