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 5CA0E46D89 for ; Sat, 9 Sep 2023 10:45:58 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0A70268C863; Sat, 9 Sep 2023 13:45:56 +0300 (EEST) Received: from mail-vs1-f51.google.com (mail-vs1-f51.google.com [209.85.217.51]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6A4F568C709 for ; Sat, 9 Sep 2023 13:45:49 +0300 (EEST) Received: by mail-vs1-f51.google.com with SMTP id ada2fe7eead31-450711d9bf1so1174117137.1 for ; Sat, 09 Sep 2023 03:45:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1694256347; x=1694861147; darn=ffmpeg.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=i+bn1eyQgfwaU8Gpyf1giiNw2eV+3MCTzbUMpr/dh20=; b=soWAHm1s/vAVv51NDF6wRIlu+ovlVha8GbdhiFMpUeFfrnOejMfD+MRyQHmEyjqDbU cSiSjEXABkBlnZesUy/zBymtmrJZ+EKdEdG2ZtHa7a97IlYzTvb1qAuIvrO+hFWdratn EYwZVKbUY2+w75ZJbCK0bRFHG8PYRDt0ZS78f4aO80kAL0aZHi3HlPZuydn1ms9YdtnQ PwyTDUhsTBEuu4kmF7R80k1/FImyrXBAI6/rRLdCIG4kSIqvNIMtdRkoXUmvPEkkv/cn CPhZT/AI7l20LpQ3KmczqNByshlW0aB29Q26+sU7tFgspDv9YneKTlUP6l+Gb0Z5oOMn H3IA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1694256347; x=1694861147; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=i+bn1eyQgfwaU8Gpyf1giiNw2eV+3MCTzbUMpr/dh20=; b=OWoG1S/cjbDXnax3lzGZ+ihD7pYRW8v23vFJuhX9EqyRjqkoJ4lvzxfTo+SyETTJkG OJtnhQTJt9IMTYWfJXcFRdJnYmkB+GCccPHx1BOekAF0Y/CP07XrTMcTYkJ1BfF3yMcU 4eiwur3uCFwXp/w6HOdkbbXLATsz7+1hUYBkKr+4BwJcGdP0/IOs5iK/b0qr/6PIVZv8 rf6zoAoR4KkkLI7A4dsIUiYn41mrfqiifH+PGzZF5iH6K9FSjPIPgiGKevQb0fclBsU/ 3al+jQXxQ4LEUz8CT010gcAx0CQ9mubZvMwRrIlotILNT5tCQMvTa556rmppucMi8h2H VWCg== X-Gm-Message-State: AOJu0YzmImcUNMzRqWUOKv3OFoo3lZv2oYcKufko4+ifErvX3/+X8LEc z72b/wYrSPOWYS18jlPN4bCImJ8pOAvniN6ehQgtgVuURAY= X-Google-Smtp-Source: AGHT+IFx0nXZv8/na8udixM6qqAUNXBVlOtI1onAS9Id+azvvXwYc2ebdxB1jvuKyf1fEJ+LOKSYHpfApvcAyl1xzaM= X-Received: by 2002:a67:e94f:0:b0:44d:4dd6:796b with SMTP id p15-20020a67e94f000000b0044d4dd6796bmr4908253vso.15.1694256347356; Sat, 09 Sep 2023 03:45:47 -0700 (PDT) MIME-Version: 1.0 References: <20230823101144.68898-1-karwalharshit@gmail.com> In-Reply-To: <20230823101144.68898-1-karwalharshit@gmail.com> From: Paul B Mahol Date: Sat, 9 Sep 2023 12:53:12 +0200 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH] GSoC 2023: Add Audio Overlay Filter 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: Harshit Karwal 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: T24gV2VkLCBBdWcgMjMsIDIwMjMgYXQgMTI6MTbigK9QTSBIYXJzaGl0IEthcndhbCA8a2Fyd2Fs aGFyc2hpdEBnbWFpbC5jb20+Cndyb3RlOgoKPiAxLiBBZGRlZCBhZl9hb3ZlcmxheS5jCj4gMi4g VXBkYXRlZCBmaWx0ZXIgZG9jdW1lbnRhdGlvbgo+IDMuIEluY2x1ZGVkIHRoZSBmaWx0ZXIgaW4g bGliYXZmaWx0ZXIvTWFrZWZpbGUgYW5kIGxpYmF2ZmlsdGVyL2FsbGZpbHRlcnMuYwo+Cj4gU2ln bmVkLW9mZi1ieTogSGFyc2hpdCBLYXJ3YWwgPGthcndhbGhhcnNoaXRAZ21haWwuY29tPgo+IC0t LQo+ICBkb2MvZmlsdGVycy50ZXhpICAgICAgICAgIHwgIDQwICsrKwo+ICBsaWJhdmZpbHRlci9N YWtlZmlsZSAgICAgIHwgICAxICsKPiAgbGliYXZmaWx0ZXIvYWZfYW92ZXJsYXkuYyB8IDYyMyAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBsaWJhdmZpbHRlci9hbGxm aWx0ZXJzLmMgIHwgICAxICsKPiAgNCBmaWxlcyBjaGFuZ2VkLCA2NjUgaW5zZXJ0aW9ucygrKQo+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZmaWx0ZXIvYWZfYW92ZXJsYXkuYwo+Cj4gZGlmZiAt LWdpdCBhL2RvYy9maWx0ZXJzLnRleGkgYi9kb2MvZmlsdGVycy50ZXhpCj4gaW5kZXggY2FjMWVl NDM4MTAuLmY2YTJhYjk3NDNlIDEwMDY0NAo+IC0tLSBhL2RvYy9maWx0ZXJzLnRleGkKPiArKysg Yi9kb2MvZmlsdGVycy50ZXhpCj4gQEAgLTI3MDksNiArMjcwOSw0NiBAQCBUaGlzIGZpbHRlciBz dXBwb3J0cyB0aGUgc2FtZSBjb21tYW5kcyBhcyBvcHRpb25zLAo+IGV4Y2x1ZGluZyBvcHRpb24g QGNvZGV7b3JkZXJ9Cj4KPiAgUGFzcyB0aGUgYXVkaW8gc291cmNlIHVuY2hhbmdlZCB0byB0aGUg b3V0cHV0Lgo+Cj4gK0BzZWN0aW9uIGFvdmVybGF5Cj4gKwo+ICtSZXBsYWNlIGEgc3BlY2lmaWVk IHNlY3Rpb24gb2YgYW4gYXVkaW8gc3RyZWFtIHdpdGggYW5vdGhlciBpbnB1dCBhdWRpbwo+IHN0 cmVhbS4KPiArCj4gK0luIGNhc2Ugbm8gZW5hYmxlIG9wdGlvbiBmb3IgdGltZWxpbmUgZWRpdGlu ZyBpcyBzcGVjaWZpZWQsIHRoZSBzZWNvbmQKPiBhdWRpbyBzdHJlYW0gd2lsbAo+ICtiZSBvdXRw dXQgYXQgc2VjdGlvbnMgb2YgdGhlIGZpcnN0IHN0cmVhbSB3aGljaCBoYXZlIGEgZ2FwIGluIFBU Uwo+IChQcmVzZW50YXRpb24gVGltZVN0YW1wKSB2YWx1ZXMKPiArc3VjaCB0aGF0IHRoZSBvdXRw dXQgc3RyZWFtJ3MgUFRTIHZhbHVlcyBhcmUgbW9ub3Rvbm91cy4KPiArCj4gK1RoaXMgZmlsdGVy IGFsc28gc3VwcG9ydHMgbGluZWFyIGNyb3NzIGZhZGluZyB3aGVuIHRyYW5zaXRpb25pbmcgZnJv bSBvbmUKPiAraW5wdXQgc3RyZWFtIHRvIGFub3RoZXIuCj4gKwo+ICtUaGUgZmlsdGVyIGFjY2Vw dHMgdGhlIGZvbGxvd2luZyBvcHRpb246Cj4gKwo+ICtAdGFibGUgQG9wdGlvbgo+ICtAaXRlbSBj Zl9kdXJhdGlvbgo+ICtTZXQgZHVyYXRpb24gKGluIHNlY29uZHMpIGZvciBjcm9zcyBmYWRlIGJl dHdlZW4gdGhlIGlucHV0cy4gRGVmYXVsdAo+IHZhbHVlIGlzIEBjb2RlezEwMH0gbWlsbGlzZWNv bmRzLgo+ICtAZW5kIHRhYmxlCj4gKwo+ICtAc3Vic2VjdGlvbiBFeGFtcGxlcwo+ICsKPiArQGl0 ZW1pemUKPiArQGl0ZW0KPiArUmVwbGFjZSB0aGUgZmlyc3Qgc3RyZWFtIHdpdGggdGhlIHNlY29u ZCBzdHJlYW0gZnJvbSBAY29kZXt0PTEwfSBzZWNvbmRzCj4gdG8gQGNvZGV7dD0yMH0gc2Vjb25k czoKPiArQGV4YW1wbGUKPiArZmZtcGVnIC1pIGZpcnN0LndhdiAtaSBzZWNvbmQud2F2IC1maWx0 ZXJfY29tcGxleAo+ICJhb3ZlcmxheT1lbmFibGU9J2JldHdlZW4odCwxMCwyMCknIiBvdXRwdXQu d2F2Cj4gK0BlbmQgZXhhbXBsZQo+ICsKPiArQGl0ZW0KPiArRG8gdGhlIHNhbWUgYXMgYWJvdmUs IGJ1dCB3aXRoIGNyb3NzZmFkaW5nIGZvciBAY29kZXsyfSBzZWNvbmRzIGJldHdlZW4KPiB0aGUg c3RyZWFtczoKPiArQGV4YW1wbGUKPiArZmZtcGVnIC1pIGZpcnN0LndhdiAtaSBzZWNvbmQud2F2 IC1maWx0ZXJfY29tcGxleAo+ICJhb3ZlcmxheT1jZl9kdXJhdGlvbj0yOmVuYWJsZT0nYmV0d2Vl bih0LDEwLDIwKSciIG91dHB1dC53YXYKPiArQGVuZCBleGFtcGxlCj4gKwo+ICtAaXRlbQo+ICtJ bnRyb2R1Y2UgYSBQVFMgZ2FwIGZyb20gQGNvZGV7dD00fSBzZWNvbmRzIHRvIEBjb2Rle3Q9OH0g c2Vjb25kcyBpbiB0aGUKPiBmaXJzdCBzdHJlYW0gYW5kIG91dHB1dCB0aGUgc2Vjb25kIHN0cmVh bSBkdXJpbmcgdGhpcyBnYXA6Cj4gK0BleGFtcGxlCj4gK2ZmbXBlZyAtaSBmaXJzdC53YXYgLWkg c2Vjb25kLndhdiAtZmlsdGVyX2NvbXBsZXgKPiAiWzBdYXNlbGVjdD0nbm90KGJldHdlZW4odCw0 LDgpKSdbdGVtcF07W3RlbXBdWzFdYW92ZXJsYXlbb3V0XSIgLW1hcAo+ICJbb3V0XSIgb3V0cHV0 Lndhdgo+ICtAZW5kIGV4YW1wbGUKPiArQGVuZCBpdGVtaXplCj4gKwo+ICBAc2VjdGlvbiBhcGFk Cj4KPiAgUGFkIHRoZSBlbmQgb2YgYW4gYXVkaW8gc3RyZWFtIHdpdGggc2lsZW5jZS4KPiBkaWZm IC0tZ2l0IGEvbGliYXZmaWx0ZXIvTWFrZWZpbGUgYi9saWJhdmZpbHRlci9NYWtlZmlsZQo+IGlu ZGV4IDJmZTAwMzNiMjE4Li5jNDY5MzgwMDM4ZiAxMDA2NDQKPiAtLS0gYS9saWJhdmZpbHRlci9N YWtlZmlsZQo+ICsrKyBiL2xpYmF2ZmlsdGVyL01ha2VmaWxlCj4gQEAgLTgwLDYgKzgwLDcgQEAg T0JKUy0kKENPTkZJR19BTkxNRE5fRklMVEVSKSAgICAgICAgICAgICAgICAgKz0KPiBhZl9hbmxt ZG4ubwo+ICBPQkpTLSQoQ09ORklHX0FOTE1GX0ZJTFRFUikgICAgICAgICAgICAgICAgICArPSBh Zl9hbmxtcy5vCj4gIE9CSlMtJChDT05GSUdfQU5MTVNfRklMVEVSKSAgICAgICAgICAgICAgICAg ICs9IGFmX2FubG1zLm8KPiAgT0JKUy0kKENPTkZJR19BTlVMTF9GSUxURVIpICAgICAgICAgICAg ICAgICAgKz0gYWZfYW51bGwubwo+ICtPQkpTLSQoQ09ORklHX0FPVkVSTEFZX0ZJTFRFUikgICAg ICAgICAgICAgICArPSBhZl9hb3ZlcmxheS5vCj4gIE9CSlMtJChDT05GSUdfQVBBRF9GSUxURVIp ICAgICAgICAgICAgICAgICAgICs9IGFmX2FwYWQubwo+ICBPQkpTLSQoQ09ORklHX0FQRVJNU19G SUxURVIpICAgICAgICAgICAgICAgICArPSBmX3Blcm1zLm8KPiAgT0JKUy0kKENPTkZJR19BUEhB U0VSX0ZJTFRFUikgICAgICAgICAgICAgICAgKz0gYWZfYXBoYXNlci5vCj4gZ2VuZXJhdGVfd2F2 ZV90YWJsZS5vCj4gZGlmZiAtLWdpdCBhL2xpYmF2ZmlsdGVyL2FmX2FvdmVybGF5LmMgYi9saWJh dmZpbHRlci9hZl9hb3ZlcmxheS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAw MDAwMDAwMC4uZWEwNzU5ZmM4NTYKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbGliYXZmaWx0ZXIv YWZfYW92ZXJsYXkuYwo+IEBAIC0wLDAgKzEsNjIzIEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCAo YykgMjAyMyBIYXJzaGl0IEthcndhbAo+ICsgKgo+ICsgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBG Rm1wZWcuCj4gKyAqCj4gKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IKPiArICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwo+ICsgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKPiArICogdmVyc2lvbiAyLjEgb2Yg dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4gKyAq Cj4gKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAo+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgo+ICsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQo+ICsgKiBMZXNzZXIgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+ICsgKgo+ICsgKiBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4gKyAq IExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m dHdhcmUKPiArICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG bG9vciwgQm9zdG9uLCBNQQo+IDAyMTEwLTEzMDEgVVNBCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUg ImxpYmF2dXRpbC9vcHQuaCIKPiArI2luY2x1ZGUgImxpYmF2dXRpbC9sb2cuaCIKPiArCj4gKyNp bmNsdWRlICJhdWRpby5oIgo+ICsjaW5jbHVkZSAiYXZmaWx0ZXIuaCIKPiArI2luY2x1ZGUgImZp bHRlcnMuaCIKPiArI2luY2x1ZGUgImludGVybmFsLmgiCj4gKyNpbmNsdWRlICJmb3JtYXRzLmgi Cj4gKwo+ICt0eXBlZGVmIHN0cnVjdCBGcmFtZVJpbmdCdWZmZXIgewo+ICsgICAgdWludDhfdCAq ZXh0ZW5kZWRfZGF0YV9idWZmZXI7Cj4gKyAgICBpbnQgY2FwYWNpdHk7Cj4gKyAgICBpbnQgc3Rh cnQ7Cj4gKyAgICBpbnQgZW5kOwo+ICsgICAgaW50IHNpemU7Cj4gK30gRnJhbWVSaW5nQnVmZmVy Owo+ICsKPiArc3RhdGljIGludCByaW5nX2luaXQoRnJhbWVSaW5nQnVmZmVyICoqcmluZywgdW5z aWduZWQgaW50IGNhcGFjaXR5LCBpbnQKPiBzaXplKQo+ICt7Cj4gKyAgICAqcmluZyA9IGF2X21h bGxvYyhzaXplb2YoRnJhbWVSaW5nQnVmZmVyKSk7Cj4gKyAgICBpZiAoISpyaW5nKQo+ICsgICAg ICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7Cj4gKwo+ICsgICAgKCpyaW5nKS0+ZXh0ZW5kZWRf ZGF0YV9idWZmZXIgPSBhdl9tYWxsb2NfYXJyYXkoY2FwYWNpdHksIHNpemUpOwo+ICsKPiArICAg IGlmICghKCpyaW5nKS0+ZXh0ZW5kZWRfZGF0YV9idWZmZXIpCj4gKyAgICAgICAgcmV0dXJuIEFW RVJST1IoRU5PTUVNKTsKPiArCj4gKyAgICAoKnJpbmcpLT5jYXBhY2l0eSA9IGNhcGFjaXR5Owo+ ICsgICAgKCpyaW5nKS0+c3RhcnQgPSAwOwo+ICsgICAgKCpyaW5nKS0+ZW5kID0gMDsKPiArICAg ICgqcmluZyktPnNpemUgPSAwOwo+ICsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgaW50IHJpbmdfZW1wdHkoRnJhbWVSaW5nQnVmZmVyICpyaW5nKQo+ICt7Cj4gKyAgICByZXR1 cm4gcmluZy0+c2l6ZSA9PSAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHJpbmdfZnVsbChGcmFt ZVJpbmdCdWZmZXIgKnJpbmcpCj4gK3sKPiArICAgIHJldHVybiByaW5nLT5zaXplID09IHJpbmct PmNhcGFjaXR5Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHJpbmdfaW5zZXJ0KEZyYW1lUmluZ0J1 ZmZlciAqKnNhbXBsZV9idWZmZXJzLCBBVkZyYW1lICpmcmFtZSwKPiBBVkZpbHRlckxpbmsgKmlu bGluaykKPiArewo+ICsgICAgdWludDhfdCAqZHN0Owo+ICsKPiArICAgIGZvciAoaW50IGMgPSAw OyBjIDwgaW5saW5rLT5jaF9sYXlvdXQubmJfY2hhbm5lbHM7IGMrKykgewo+ICsgICAgICAgIGZv ciAoaW50IGkgPSAwOyBpIDwgZnJhbWUtPm5iX3NhbXBsZXM7IGkrKykgewo+ICsgICAgICAgICAg ICBpZiAocmluZ19mdWxsKHNhbXBsZV9idWZmZXJzW2NdKSkKPiArICAgICAgICAgICAgICAgIHJl dHVybiBBVkVSUk9SKEVQRVJNKTsKPiArCj4gKyAgICAgICAgICAgIGRzdCA9IHNhbXBsZV9idWZm ZXJzW2NdLT5leHRlbmRlZF9kYXRhX2J1ZmZlciArCj4gKyAgICAgICAgICAgICAgICAgIHNhbXBs ZV9idWZmZXJzW2NdLT5lbmQgKgo+IGF2X2dldF9ieXRlc19wZXJfc2FtcGxlKGlubGluay0+Zm9y bWF0KTsKPiArCj4gKyAgICAgICAgICAgIHNhbXBsZV9idWZmZXJzW2NdLT5lbmQgPSAoc2FtcGxl X2J1ZmZlcnNbY10tPmVuZCArIDEpICUKPiBzYW1wbGVfYnVmZmVyc1tjXS0+Y2FwYWNpdHk7Cj4g KyAgICAgICAgICAgIHNhbXBsZV9idWZmZXJzW2NdLT5zaXplKys7Cj4gKwo+ICsgICAgICAgICAg ICBtZW1jcHkoZHN0LCBmcmFtZS0+ZXh0ZW5kZWRfZGF0YVtjXSArIGkgKgo+IGF2X2dldF9ieXRl c19wZXJfc2FtcGxlKGlubGluay0+Zm9ybWF0KSwKPiArICAgICAgICAgICAgICAgICAgIGF2X2dl dF9ieXRlc19wZXJfc2FtcGxlKGlubGluay0+Zm9ybWF0KSk7Cj4gKyAgICAgICAgfQo+ICsgICAg fQo+ICsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHJpbmdfcmVtb3Zl KEZyYW1lUmluZ0J1ZmZlciAqKnNhbXBsZV9idWZmZXJzLCBBVkZpbHRlckxpbmsKPiAqaW5saW5r LCB1aW50OF90ICoqZGVzdCwgaW50IG5iX3NhbXBsZXMpCj4gK3sKPiArICAgIHVpbnQ4X3QgKnNy YzsKPiArCj4gKyAgICBmb3IgKGludCBjID0gMDsgYyA8IGlubGluay0+Y2hfbGF5b3V0Lm5iX2No YW5uZWxzOyBjKyspIHsKPiArICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG5iX3NhbXBsZXM7 IGkrKykgewo+ICsgICAgICAgICAgICBpZiAocmluZ19lbXB0eShzYW1wbGVfYnVmZmVyc1tjXSkp Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFUEVSTSk7Cj4gKwo+ICsgICAgICAg ICAgICBzcmMgPSBzYW1wbGVfYnVmZmVyc1tjXS0+ZXh0ZW5kZWRfZGF0YV9idWZmZXIgKwo+ICsg ICAgICAgICAgICAgICAgICBzYW1wbGVfYnVmZmVyc1tjXS0+c3RhcnQgKgo+IGF2X2dldF9ieXRl c19wZXJfc2FtcGxlKGlubGluay0+Zm9ybWF0KTsKPiArCj4gKyAgICAgICAgICAgIHNhbXBsZV9i dWZmZXJzW2NdLT5zdGFydCA9IChzYW1wbGVfYnVmZmVyc1tjXS0+c3RhcnQgKyAxKSAlCj4gc2Ft cGxlX2J1ZmZlcnNbY10tPmNhcGFjaXR5Owo+ICsgICAgICAgICAgICBzYW1wbGVfYnVmZmVyc1tj XS0+c2l6ZS0tOwo+ICsKPiArICAgICAgICAgICAgbWVtY3B5KGRlc3RbY10gKyBpICogYXZfZ2V0 X2J5dGVzX3Blcl9zYW1wbGUoaW5saW5rLT5mb3JtYXQpLAo+IHNyYywKPiArICAgICAgICAgICAg ICAgICAgIGF2X2dldF9ieXRlc19wZXJfc2FtcGxlKGlubGluay0+Zm9ybWF0KSk7Cj4gKyAgICAg ICAgfQo+ICsgICAgfQo+ICsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9p ZCByaW5nX2ZyZWUoRnJhbWVSaW5nQnVmZmVyICpyaW5nKQo+ICt7Cj4gKyAgICBhdl9mcmVlcCgm cmluZy0+ZXh0ZW5kZWRfZGF0YV9idWZmZXIpOwo+ICsgICAgYXZfZnJlZXAoJnJpbmcpOwo+ICt9 Cj4gKwo+ICt0eXBlZGVmIHN0cnVjdCBBT3ZlcmxheUNvbnRleHQgewo+ICsgICAgY29uc3QgQVZD bGFzcyAqY2xhc3M7Cj4gKyAgICBBVkZyYW1lICptYWluX2lucHV0Owo+ICsgICAgQVZGcmFtZSAq b3ZlcmxheV9pbnB1dDsKPiArICAgIGludDY0X3QgcHRzOwo+ICsgICAgaW50IG1haW5fZW9mOwo+ ICsgICAgaW50IG92ZXJsYXlfZW9mOwo+ICsKPiArICAgIGludCBkZWZhdWx0X21vZGU7Cj4gKyAg ICBpbnQgcHJldmlvdXNfc2FtcGxlczsKPiArICAgIGludDY0X3QgcHRzX2dhcDsKPiArICAgIGlu dDY0X3QgcHJldmlvdXNfcHRzOwo+ICsgICAgaW50NjRfdCBwdHNfZ2FwX3N0YXJ0Owo+ICsgICAg aW50NjRfdCBwdHNfZ2FwX2VuZDsKPiArCj4gKyAgICBpbnQgaXNfZGlzYWJsZWQ7Cj4gKyAgICBp bnQgbmJfY2hhbm5lbHM7Cj4gKyAgICBpbnQgY3Jvc3NmYWRlX3JlYWR5Owo+ICsgICAgRnJhbWVS aW5nQnVmZmVyICoqbWFpbl9zYW1wbGVfYnVmZmVyczsKPiArICAgIEZyYW1lUmluZ0J1ZmZlciAq Km92ZXJsYXlfc2FtcGxlX2J1ZmZlcnM7Cj4gKyAgICBpbnQ2NF90IGNmX2R1cmF0aW9uOwo+ICsg ICAgaW50NjRfdCBjZl9zYW1wbGVzOwo+ICsgICAgdm9pZCAoKmNyb3NzZmFkZV9zYW1wbGVzKSh1 aW50OF90ICoqZHN0LCB1aW50OF90ICogY29uc3QgKmNmMCwKPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdWludDhfdCAqIGNvbnN0ICpjZjEsCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGludCBuYl9zYW1wbGVzLCBpbnQgY2hhbm5lbHMpOwo+ICsKPiArICAgIGludDY0 X3QgdHJhbnNpdGlvbl9wdHM7Cj4gKyAgICBpbnQ2NF90IHRyYW5zaXRpb25fcHRzMjsKPiArCj4g KyAgICB1aW50OF90ICoqY2YwOwo+ICsgICAgdWludDhfdCAqKmNmMTsKPiArfSBBT3ZlcmxheUNv bnRleHQ7Cj4gKwo+ICsjZGVmaW5lIFNFR01FTlRfU0laRSAxMDI0Cj4gKwo+ICsjZGVmaW5lIE9G RlNFVCh4KSBvZmZzZXRvZihBT3ZlcmxheUNvbnRleHQsIHgpCj4gKwo+ICsjZGVmaW5lIEZMQUdT IEFWX09QVF9GTEFHX0FVRElPX1BBUkFNIHwgQVZfT1BUX0ZMQUdfRklMVEVSSU5HX1BBUkFNCj4g Kwo+ICtzdGF0aWMgY29uc3QgQVZPcHRpb24gYW92ZXJsYXlfb3B0aW9uc1tdID0gewo+ICsgICAg eyAiY2ZfZHVyYXRpb24iLCAgICAic2V0IGR1cmF0aW9uIChpbiBzZWNvbmRzKSBmb3IgY3Jvc3Mg ZmFkZSBiZXR3ZWVuCj4gdGhlIGlucHV0cyIsIE9GRlNFVChjZl9kdXJhdGlvbiksICAgIEFWX09Q VF9UWVBFX0RVUkFUSU9OLCAgIHsuaTY0ID0KPiAxMDAwMDB9LCAwLCAgNjAwMDAwMDAsICAgRkxB R1MgfSwKPiArICAgIHsgTlVMTCB9Cj4gK307Cj4gKwo+ICtBVkZJTFRFUl9ERUZJTkVfQ0xBU1Mo YW92ZXJsYXkpOwo+ICsKPiArI2RlZmluZSBDUk9TU0ZBREVfUExBTkFSKG5hbWUsIHR5cGUpCj4g ICAgICAgICAgICBcCj4gK3N0YXRpYyB2b2lkIGNyb3NzZmFkZV9zYW1wbGVzXyMjIG5hbWUgIyNw KHVpbnQ4X3QgKipkc3QsIHVpbnQ4X3QgKiBjb25zdAo+ICpjZjAsICAgICAgIFwKPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqIGNvbnN0ICpjZjEs Cj4gICAgICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnQgbmJfc2FtcGxlcywgaW50IGNoYW5uZWxzKQo+ICAgICAgICAgICAgIFwKPiArewo+ ICAgICAgICAgICAgIFwKPiArICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbmJfc2FtcGxlczsgaSsr KSB7Cj4gICAgICAgICAgICBcCj4gKyAgICAgICAgZG91YmxlIG1haW5fZ2FpbiA9IGF2X2NsaXBk KDEuMCAqIChuYl9zYW1wbGVzIC0gMSAtIGkpIC8KPiBuYl9zYW1wbGVzLCAwLCAxLik7IFwKPiAr ICAgICAgICBkb3VibGUgb3ZlcmxheV9nYWluID0gYXZfY2xpcGQoMS4wICogaSAvIG5iX3NhbXBs ZXMsIDAsIDEuKTsKPiAgICAgICAgICAgIFwKPiArICAgICAgICBmb3IgKGludCBjID0gMDsgYyA8 IGNoYW5uZWxzOyBjKyspIHsKPiAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgdHlwZSAqZCA9 ICh0eXBlICopZHN0W2NdOwo+ICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgY29uc3QgdHlw ZSAqczAgPSAodHlwZSAqKWNmMFtjXTsKPiAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgY29u c3QgdHlwZSAqczEgPSAodHlwZSAqKWNmMVtjXTsKPiAgICAgICAgICAgIFwKPiArCj4gICAgICAg ICAgICBcCj4gKyAgICAgICAgICAgIGRbaV0gPSBzMFtpXSAqIG1haW5fZ2FpbiArIHMxW2ldICog b3ZlcmxheV9nYWluOwo+ICAgICAgICAgICAgXAo+ICsgICAgICAgIH0KPiAgICAgICAgICAgICBc Cj4gKyAgICB9Cj4gICAgICAgICAgICAgXAo+ICt9Cj4gKwo+ICtDUk9TU0ZBREVfUExBTkFSKGRi bCwgZG91YmxlKQo+ICtDUk9TU0ZBREVfUExBTkFSKGZsdCwgZmxvYXQpCj4gK0NST1NTRkFERV9Q TEFOQVIoczE2LCBpbnQxNl90KQo+ICtDUk9TU0ZBREVfUExBTkFSKHMzMiwgaW50MzJfdCkKPiAr Cj4gK3N0YXRpYyBhdl9jb2xkIGludCBpbml0KEFWRmlsdGVyQ29udGV4dCAqY3R4KQo+ICt7Cj4g KyAgICBBT3ZlcmxheUNvbnRleHQgKnMgID0gY3R4LT5wcml2Owo+ICsKPiArICAgIHMtPmlzX2Rp c2FibGVkICAgICAgPSAxOwo+ICsgICAgcy0+dHJhbnNpdGlvbl9wdHMgICA9IEFWX05PUFRTX1ZB TFVFOwo+ICsgICAgcy0+dHJhbnNpdGlvbl9wdHMyICA9IEFWX05PUFRTX1ZBTFVFOwo+ICsKPiAr ICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgYXZfY29sZCB2b2lkIHVuaW5pdChBVkZp bHRlckNvbnRleHQgKmN0eCkKPiArewo+ICsgICAgQU92ZXJsYXlDb250ZXh0ICpzID0gY3R4LT5w cml2Owo+ICsKPiArICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcy0+bmJfY2hhbm5lbHM7IGkrKykg ewo+ICsgICAgICAgIHJpbmdfZnJlZShzLT5tYWluX3NhbXBsZV9idWZmZXJzW2ldKTsKPiArICAg ICAgICByaW5nX2ZyZWUocy0+b3ZlcmxheV9zYW1wbGVfYnVmZmVyc1tpXSk7Cj4gKyAgICAgICAg YXZfZnJlZXAoJnMtPmNmMFtpXSk7Cj4gKyAgICAgICAgYXZfZnJlZXAoJnMtPmNmMVtpXSk7Cj4g KyAgICB9Cj4gKyAgICBhdl9mcmVlcCgmcy0+Y2YwKTsKPiArICAgIGF2X2ZyZWVwKCZzLT5jZjEp Owo+ICsKPiArICAgIGF2X2ZyZWVwKCZzLT5tYWluX3NhbXBsZV9idWZmZXJzKTsKPiArICAgIGF2 X2ZyZWVwKCZzLT5vdmVybGF5X3NhbXBsZV9idWZmZXJzKTsKPiArCj4gKyAgICBhdl9mcmFtZV9m cmVlKCZzLT5tYWluX2lucHV0KTsKPiArICAgIGF2X2ZyYW1lX2ZyZWUoJnMtPm92ZXJsYXlfaW5w dXQpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHF1ZXJ5X2Zvcm1hdHMoQVZGaWx0ZXJDb250ZXh0 ICpjdHgpCj4gK3sKPiArICAgIHN0YXRpYyBjb25zdCBlbnVtIEFWU2FtcGxlRm9ybWF0IHNhbXBs ZV9mbXRzW10gPSB7Cj4gKyAgICAgICAgQVZfU0FNUExFX0ZNVF9EQkxQLCBBVl9TQU1QTEVfRk1U X0ZMVFAsCj4gKyAgICAgICAgQVZfU0FNUExFX0ZNVF9TMTZQLCBBVl9TQU1QTEVfRk1UX1MzMlAs Cj4gKyAgICAgICAgQVZfU0FNUExFX0ZNVF9OT05FCj4gKyAgICB9Owo+ICsKPiArICAgIHJldHVy biBmZl9zZXRfY29tbW9uX2Zvcm1hdHNfZnJvbV9saXN0KGN0eCwgc2FtcGxlX2ZtdHMpOwo+CgpU aGVyZSBpcyBub3cgc2ltcGxlciB3YXkgdG8gZG8gdGhpcywgYnkganVzdCBzZXR0aW5nIGFycmF5 IGluIGZpbHRlcgpzdHJ1Y3R1cmUsIHBsZW50eSBvZiBleGFtcGxlcyBpbiBvdGhlciBhdWRpbyBm aWx0ZXJzLgoKCj4gK30KPiArCj4gK3N0YXRpYyBpbnQgY3Jvc3NmYWRlX3ByZXBhcmUoQU92ZXJs YXlDb250ZXh0ICpzLCBBVkZpbHRlckxpbmsKPiAqbWFpbl9pbmxpbmssIEFWRmlsdGVyTGluayAq b3ZlcmxheV9pbmxpbmssIEFWRmlsdGVyTGluayAqb3V0bGluaywKPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnQgbmJfc2FtcGxlcywgQVZGcmFtZSAqKm1haW5fYnVmZmVyLAo+IEFW RnJhbWUgKipvdmVybGF5X2J1ZmZlciwgaW50IG1vZGUpCj4gK3sKPiArICAgIGludCByZXQ7Cj4g Kwo+ICsgICAgKm1haW5fYnVmZmVyID0gZmZfZ2V0X2F1ZGlvX2J1ZmZlcihvdXRsaW5rLCBuYl9z YW1wbGVzKTsKPiArICAgIGlmICghKCptYWluX2J1ZmZlcikpCj4gKyAgICAgICAgcmV0dXJuIEFW RVJST1IoRU5PTUVNKTsKPiArCj4gKyAgICAoKm1haW5fYnVmZmVyKS0+cHRzID0gcy0+cHRzOwo+ ICsgICAgcy0+cHRzICs9IGF2X3Jlc2NhbGVfcShuYl9zYW1wbGVzLCAoQVZSYXRpb25hbCl7IDEs Cj4gb3V0bGluay0+c2FtcGxlX3JhdGUgfSwgb3V0bGluay0+dGltZV9iYXNlKTsKPiArCj4gKyAg ICBpZiAocmV0ID0gcmluZ19yZW1vdmUocy0+bWFpbl9zYW1wbGVfYnVmZmVycywgbWFpbl9pbmxp bmssCj4gKCptYWluX2J1ZmZlciktPmV4dGVuZGVkX2RhdGEsIG5iX3NhbXBsZXMpIDwgMCkKPiAr ICAgICAgICByZXR1cm4gcmV0Owo+ICsKPiArICAgIGlmIChtb2RlID09IDEpIHsKPiArICAgICAg ICBzLT5wcmV2aW91c19zYW1wbGVzID0gKCptYWluX2J1ZmZlciktPm5iX3NhbXBsZXM7Cj4gKyAg ICB9IGVsc2UgaWYgKG1vZGUgPT0gLTEgfHwgKG1vZGUgPT0gMCAmJiBzLT5pc19kaXNhYmxlZCkp IHsKPiArICAgICAgICAqb3ZlcmxheV9idWZmZXIgPSBmZl9nZXRfYXVkaW9fYnVmZmVyKG91dGxp bmssIG5iX3NhbXBsZXMpOwo+ICsgICAgICAgIGlmICghKCpvdmVybGF5X2J1ZmZlcikpCj4gKyAg ICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7Cj4gKwo+ICsgICAgICAgIGlmIChyZXQg PSByaW5nX3JlbW92ZShzLT5vdmVybGF5X3NhbXBsZV9idWZmZXJzLCBvdmVybGF5X2lubGluaywK PiAoKm92ZXJsYXlfYnVmZmVyKS0+ZXh0ZW5kZWRfZGF0YSwgbmJfc2FtcGxlcykgPCAwKQo+ICsg ICAgICAgICAgICByZXR1cm4gcmV0Owo+ICsKPiArICAgICAgICAoKm92ZXJsYXlfYnVmZmVyKS0+ cHRzID0gKCptYWluX2J1ZmZlciktPnB0czsKPiArICAgIH0KPiArCj4gKyAgICBzLT5jcm9zc2Zh ZGVfcmVhZHkgPSAxOwo+ICsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50 IGNyb3NzZmFkZV9zYW1wbGVzKEFPdmVybGF5Q29udGV4dCAqcywgQVZGaWx0ZXJMaW5rCj4gKm1h aW5faW5saW5rLCBBVkZpbHRlckxpbmsgKm92ZXJsYXlfaW5saW5rLCBBVkZpbHRlckxpbmsgKm91 dGxpbmssCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5iX3NhbXBsZXMsIEFW RnJhbWUgKipvdXQsIGludCBtb2RlKQo+ICt7Cj4gKyAgICBpbnQgcmV0Owo+ICsKPiArICAgICpv dXQgPSBmZl9nZXRfYXVkaW9fYnVmZmVyKG91dGxpbmssIG5iX3NhbXBsZXMpOwo+ICsgICAgaWYg KCEoKm91dCkpCj4gKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKPiArCj4gKyAgICBp ZiAocmV0ID0gcmluZ19yZW1vdmUocy0+bWFpbl9zYW1wbGVfYnVmZmVycywgbWFpbl9pbmxpbmss IHMtPmNmMCwKPiBuYl9zYW1wbGVzKSA8IDApCj4gKyAgICAgICAgcmV0dXJuIHJldDsKPiArICAg IGlmIChyZXQgPSByaW5nX3JlbW92ZShzLT5vdmVybGF5X3NhbXBsZV9idWZmZXJzLCBvdmVybGF5 X2lubGluaywKPiBzLT5jZjEsIG5iX3NhbXBsZXMpIDwgMCkKPiArICAgICAgICByZXR1cm4gcmV0 Owo+ICsKPiArICAgIGlmIChtb2RlID09IDApIHsKPiArICAgICAgICBzLT5pc19kaXNhYmxlZCA/ IHMtPmNyb3NzZmFkZV9zYW1wbGVzKCgqb3V0KS0+ZXh0ZW5kZWRfZGF0YSwKPiBzLT5jZjEsIHMt PmNmMCwgbmJfc2FtcGxlcywgKCpvdXQpLT5jaF9sYXlvdXQubmJfY2hhbm5lbHMpCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgOiBzLT5jcm9zc2ZhZGVfc2FtcGxlcygoKm91dCktPmV4dGVuZGVk X2RhdGEsCj4gcy0+Y2YwLCBzLT5jZjEsIG5iX3NhbXBsZXMsICgqb3V0KS0+Y2hfbGF5b3V0Lm5i X2NoYW5uZWxzKTsKPiArICAgIH0gZWxzZSBpZiAobW9kZSA9PSAtMSkgewo+ICsgICAgICAgIHMt PmNyb3NzZmFkZV9zYW1wbGVzKCgqb3V0KS0+ZXh0ZW5kZWRfZGF0YSwgcy0+Y2YxLCBzLT5jZjAs Cj4gcy0+Y2Zfc2FtcGxlcywgKCpvdXQpLT5jaF9sYXlvdXQubmJfY2hhbm5lbHMpOwo+ICsgICAg fSBlbHNlIGlmIChtb2RlID09IDEpIHsKPiArICAgICAgICBzLT50cmFuc2l0aW9uX3B0czIgIT0g QVZfTk9QVFNfVkFMVUUgPwo+IHMtPmNyb3NzZmFkZV9zYW1wbGVzKCgqb3V0KS0+ZXh0ZW5kZWRf ZGF0YSwgcy0+Y2YxLCBzLT5jZjAsIG5iX3NhbXBsZXMsCj4gKCpvdXQpLT5jaF9sYXlvdXQubmJf Y2hhbm5lbHMpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDoKPiBzLT5jcm9zc2ZhZGVfc2FtcGxlcygoKm91dCktPmV4dGVuZGVkX2RhdGEsIHMtPmNmMCwg cy0+Y2YxLCBuYl9zYW1wbGVzLAo+ICgqb3V0KS0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzKTsKPiAr ICAgIH0KPiArCj4gKyAgICAoKm91dCktPnB0cyA9IHMtPnB0czsKPiArICAgIHMtPnB0cyArPSBh dl9yZXNjYWxlX3EobmJfc2FtcGxlcywgKEFWUmF0aW9uYWwpeyAxLAo+IG91dGxpbmstPnNhbXBs ZV9yYXRlIH0sIG91dGxpbmstPnRpbWVfYmFzZSk7Cj4gKyAgICBzLT50cmFuc2l0aW9uX3B0cyA9 IEFWX05PUFRTX1ZBTFVFOwo+ICsgICAgcy0+dHJhbnNpdGlvbl9wdHMyID0gQVZfTk9QVFNfVkFM VUU7Cj4gKyAgICBzLT5jcm9zc2ZhZGVfcmVhZHkgPSAwOwo+ICsKPiArICAgIHJldHVybiAwOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGNvbnN1bWVfc2FtcGxlcyhBT3ZlcmxheUNvbnRleHQgKnMs IEFWRmlsdGVyTGluawo+ICpvdmVybGF5X2lubGluaywgQVZGaWx0ZXJMaW5rICpvdXRsaW5rKQo+ ICt7Cj4gKyAgICBpbnQgcmV0LCBzdGF0dXMsIG5iX3NhbXBsZXM7Cj4gKyAgICBpbnQ2NF90IHB0 czsKPiArCj4gKyAgICBuYl9zYW1wbGVzID0gRkZNSU4oU0VHTUVOVF9TSVpFLAo+IHMtPm92ZXJs YXlfc2FtcGxlX2J1ZmZlcnNbMF0tPmNhcGFjaXR5IC0KPiBzLT5vdmVybGF5X3NhbXBsZV9idWZm ZXJzWzBdLT5zaXplKTsKPiArCj4gKyAgICByZXQgPSBmZl9pbmxpbmtfY29uc3VtZV9zYW1wbGVz KG92ZXJsYXlfaW5saW5rLCBuYl9zYW1wbGVzLAo+IG5iX3NhbXBsZXMsICZzLT5vdmVybGF5X2lu cHV0KTsKPiArICAgIGlmIChyZXQgPCAwKSB7Cj4gKyAgICAgICAgcmV0dXJuIHJldDsKPiArICAg IH0gZWxzZSBpZiAoZmZfaW5saW5rX2Fja25vd2xlZGdlX3N0YXR1cyhvdmVybGF5X2lubGluaywg JnN0YXR1cywKPiAmcHRzKSkgewo+ICsgICAgICAgIHMtPm92ZXJsYXlfZW9mID0gMTsKPiArICAg ICAgICByZXR1cm4gMDsKPiArICAgIH0gZWxzZSBpZiAoIXJldCkgewo+ICsgICAgICAgIGlmIChm Zl9vdXRsaW5rX2ZyYW1lX3dhbnRlZChvdXRsaW5rKSkKPiArICAgICAgICAgICAgZmZfaW5saW5r X3JlcXVlc3RfZnJhbWUob3ZlcmxheV9pbmxpbmspOwo+ICsgICAgICAgIHJldHVybiAwOwo+ICsg ICAgfQo+ICsKPiArICAgIGlmIChyZXQgPSByaW5nX2luc2VydChzLT5vdmVybGF5X3NhbXBsZV9i dWZmZXJzLCBzLT5vdmVybGF5X2lucHV0LAo+IG92ZXJsYXlfaW5saW5rKSA8IDApCj4gKyAgICAg ICAgcmV0dXJuIHJldDsKPiArCj4gKyAgICByZXR1cm4gMTsKPiArfQo+ICsKPiArc3RhdGljIGlu dCBhY3RpdmF0ZShBVkZpbHRlckNvbnRleHQgKmN0eCkKPiArewo+ICsgICAgQU92ZXJsYXlDb250 ZXh0ICpzID0gY3R4LT5wcml2Owo+ICsgICAgaW50IHN0YXR1cywgcmV0LCBuYl9zYW1wbGVzOwo+ ICsgICAgaW50NjRfdCBwdHM7Cj4gKyAgICBBVkZyYW1lICpvdXQgPSBOVUxMLCAqbWFpbl9idWZm ZXIgPSBOVUxMLCAqb3ZlcmxheV9idWZmZXIgPSBOVUxMOwo+ICsKPiArICAgIEFWRmlsdGVyTGlu ayAqbWFpbl9pbmxpbmsgPSBjdHgtPmlucHV0c1swXTsKPiArICAgIEFWRmlsdGVyTGluayAqb3Zl cmxheV9pbmxpbmsgPSBjdHgtPmlucHV0c1sxXTsKPiArICAgIEFWRmlsdGVyTGluayAqb3V0bGlu ayA9IGN0eC0+b3V0cHV0c1swXTsKPiArCj4gKyAgICBGRl9GSUxURVJfRk9SV0FSRF9TVEFUVVNf QkFDS19BTEwob3V0bGluaywgY3R4KTsKPiArCj4gKyAgICBpZiAocy0+ZGVmYXVsdF9tb2RlICYm IChzLT5wdHNfZ2FwX2VuZCAtIHMtPnB0c19nYXBfc3RhcnQgPD0gMCB8fAo+IHMtPm92ZXJsYXlf ZW9mKSkgewo+ICsgICAgICAgIHMtPmRlZmF1bHRfbW9kZSA9IDA7Cj4gKyAgICAgICAgcy0+dHJh bnNpdGlvbl9wdHMyID0gcy0+cHRzX2dhcF9lbmQ7Cj4gKyAgICB9Cj4gKwo+ICsgICAgaWYgKHMt Pm1haW5fc2FtcGxlX2J1ZmZlcnNbMF0tPnNpemUgIT0KPiBzLT5tYWluX3NhbXBsZV9idWZmZXJz WzBdLT5jYXBhY2l0eSAmJiAhcy0+bWFpbl9lb2YgJiYgIXMtPmRlZmF1bHRfbW9kZSkgewo+ICsg ICAgICAgIG5iX3NhbXBsZXMgPSBGRk1JTihTRUdNRU5UX1NJWkUsCj4gcy0+bWFpbl9zYW1wbGVf YnVmZmVyc1swXS0+Y2FwYWNpdHkgLSBzLT5tYWluX3NhbXBsZV9idWZmZXJzWzBdLT5zaXplKTsK PiArCj4gKyAgICAgICAgcmV0ID0gZmZfaW5saW5rX2NvbnN1bWVfc2FtcGxlcyhtYWluX2lubGlu aywgbmJfc2FtcGxlcywKPiBuYl9zYW1wbGVzLCAmcy0+bWFpbl9pbnB1dCk7Cj4gKyAgICAgICAg aWYgKHJldCA+IDApIHsKPiArICAgICAgICAgICAgaWYgKGN0eC0+ZW5hYmxlX3N0ciAmJiBzLT5p c19kaXNhYmxlZCAhPSBjdHgtPmlzX2Rpc2FibGVkICYmCj4gIXMtPm92ZXJsYXlfZW9mKSB7Cj4g KyAgICAgICAgICAgICAgICBzLT5pc19kaXNhYmxlZCA9IGN0eC0+aXNfZGlzYWJsZWQ7Cj4gKyAg ICAgICAgICAgICAgICBzLT50cmFuc2l0aW9uX3B0cyA9IHMtPm1haW5faW5wdXQtPnB0czsKPiAr Cj4gKyAgICAgICAgICAgICAgICBpZiAocy0+bWFpbl9zYW1wbGVfYnVmZmVyc1swXS0+c2l6ZSAr Cj4gcy0+bWFpbl9pbnB1dC0+bmJfc2FtcGxlcyA8IHMtPm1haW5fc2FtcGxlX2J1ZmZlcnNbMF0t PmNhcGFjaXR5KQo+ICsgICAgICAgICAgICAgICAgICAgIHMtPmNyb3NzZmFkZV9yZWFkeSA9IDE7 Cj4gKyAgICAgICAgICAgICAgICBpZiAocy0+bWFpbl9zYW1wbGVfYnVmZmVyc1swXS0+c2l6ZSA9 PSAwKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgcy0+dHJhbnNpdGlvbl9wdHMgPSBBVl9OT1BU U19WQUxVRTsKPiArICAgICAgICAgICAgICAgICAgICBzLT5jcm9zc2ZhZGVfcmVhZHkgPSAwOwo+ ICsgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgIGlmICgh Y3R4LT5lbmFibGVfc3RyICYmICFzLT5kZWZhdWx0X21vZGUpIHsKPiArICAgICAgICAgICAgICAg IGlmIChzLT5wcmV2aW91c19wdHMgKyBhdl9yZXNjYWxlX3Eocy0+cHJldmlvdXNfc2FtcGxlcywK PiAoQVZSYXRpb25hbCl7IDEsIG91dGxpbmstPnNhbXBsZV9yYXRlIH0sIG91dGxpbmstPnRpbWVf YmFzZSkgPj0KPiBzLT5tYWluX2lucHV0LT5wdHMpIHsKPiArICAgICAgICAgICAgICAgICAgICBz LT5kZWZhdWx0X21vZGUgPSAwOwo+ICsgICAgICAgICAgICAgICAgICAgIHMtPnByZXZpb3VzX3B0 cyA9IHMtPm1haW5faW5wdXQtPnB0czsKPiArICAgICAgICAgICAgICAgICAgICBzLT5wcmV2aW91 c19zYW1wbGVzID0gcy0+bWFpbl9pbnB1dC0+bmJfc2FtcGxlczsKPiArICAgICAgICAgICAgICAg IH0gZWxzZSBpZiAoIXMtPm92ZXJsYXlfZW9mKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgcy0+ cHRzX2dhcF9zdGFydCA9IHMtPnByZXZpb3VzX3B0czsKPiArICAgICAgICAgICAgICAgICAgICBp ZiAocy0+cHRzID4gMCB8fCBzLT5tYWluX3NhbXBsZV9idWZmZXJzWzBdLT5zaXplID4gMCkKPiAr ICAgICAgICAgICAgICAgICAgICAgICAgcy0+dHJhbnNpdGlvbl9wdHMgPSBzLT5wdHNfZ2FwX3N0 YXJ0Owo+ICsgICAgICAgICAgICAgICAgICAgIHMtPnB0c19nYXBfZW5kID0gcy0+bWFpbl9pbnB1 dC0+cHRzOwo+ICsgICAgICAgICAgICAgICAgICAgIHMtPmRlZmF1bHRfbW9kZSA9IDE7Cj4gKyAg ICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAgICAgIGlmIChy ZXQgPSByaW5nX2luc2VydChzLT5tYWluX3NhbXBsZV9idWZmZXJzLCBzLT5tYWluX2lucHV0LAo+ IG1haW5faW5saW5rKSA8IDApCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICsgICAg ICAgIH0gZWxzZSBpZiAocmV0IDwgMCkgewo+ICsgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICsg ICAgICAgIH0gZWxzZSBpZiAoZmZfaW5saW5rX2Fja25vd2xlZGdlX3N0YXR1cyhtYWluX2lubGlu aywgJnN0YXR1cywKPiAmcHRzKSkgewo+ICsgICAgICAgICAgICBzLT5tYWluX2VvZiA9IDE7Cj4g KyAgICAgICAgICAgIHMtPmNyb3NzZmFkZV9yZWFkeSA9IDE7Cj4gKyAgICAgICAgfSBlbHNlIGlm ICghcmV0KSB7Cj4gKyAgICAgICAgICAgIGlmIChmZl9vdXRsaW5rX2ZyYW1lX3dhbnRlZChvdXRs aW5rKSkKPiArICAgICAgICAgICAgICAgIGZmX2lubGlua19yZXF1ZXN0X2ZyYW1lKG1haW5faW5s aW5rKTsKPiArICAgICAgICAgICAgcmV0dXJuIDA7Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICsK PiArICAgIGlmIChzLT5tYWluX2VvZiAmJiBzLT5tYWluX3NhbXBsZV9idWZmZXJzWzBdLT5zaXpl ID09IDAgJiYKPiBmZl9pbmxpbmtfYWNrbm93bGVkZ2Vfc3RhdHVzKG1haW5faW5saW5rLCAmc3Rh dHVzLCAmcHRzKSkgewo+ICsgICAgICAgIGZmX291dGxpbmtfc2V0X3N0YXR1cyhvdXRsaW5rLCBz dGF0dXMsIHB0cyk7Cj4gKyAgICAgICAgcmV0dXJuIDA7Cj4gKyAgICB9Cj4gKwo+ICsgICAgaWYg KHMtPm1haW5fc2FtcGxlX2J1ZmZlcnNbMF0tPnNpemUgPAo+IHMtPm1haW5fc2FtcGxlX2J1ZmZl cnNbMF0tPmNhcGFjaXR5ICYmCj4gKyAgICAgICAgKHMtPnRyYW5zaXRpb25fcHRzID09IEFWX05P UFRTX1ZBTFVFIHx8Cj4gcy0+bWFpbl9zYW1wbGVfYnVmZmVyc1swXS0+c2l6ZSAhPSBzLT5jZl9z YW1wbGVzKSAmJiAhcy0+ZGVmYXVsdF9tb2RlKSB7Cj4gKyAgICAgICAgaWYgKGZmX2lubGlua19h Y2tub3dsZWRnZV9zdGF0dXMobWFpbl9pbmxpbmssICZzdGF0dXMsICZwdHMpKSB7Cj4gKyAgICAg ICAgICAgIHMtPm1haW5fZW9mID0gMTsKPiArICAgICAgICAgICAgcy0+Y3Jvc3NmYWRlX3JlYWR5 ID0gMTsKPiArICAgICAgICB9IGVsc2Ugewo+ICsgICAgICAgICAgICBmZl9pbmxpbmtfcmVxdWVz dF9mcmFtZShtYWluX2lubGluayk7Cj4gKyAgICAgICAgICAgIHJldHVybiAwOwo+ICsgICAgICAg IH0KPiArICAgIH0KPiArCj4gKyAgICBpZiAoIXMtPm92ZXJsYXlfZW9mKSB7Cj4gKyAgICAgICAg aWYgKHMtPm92ZXJsYXlfc2FtcGxlX2J1ZmZlcnNbMF0tPnNpemUgPAo+IHMtPm92ZXJsYXlfc2Ft cGxlX2J1ZmZlcnNbMF0tPmNhcGFjaXR5KSB7Cj4gKyAgICAgICAgICAgIHJldCA9IGNvbnN1bWVf c2FtcGxlcyhzLCBvdmVybGF5X2lubGluaywgb3V0bGluayk7Cj4gKyAgICAgICAgICAgIGlmIChy ZXQgPD0gMCkgewo+ICsgICAgICAgICAgICAgICAgaWYgKCFzLT5vdmVybGF5X2VvZikKPiArICAg ICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAg fQo+ICsKPiArICAgICAgICBpZiAocy0+b3ZlcmxheV9zYW1wbGVfYnVmZmVyc1swXS0+c2l6ZSA8 Cj4gcy0+b3ZlcmxheV9zYW1wbGVfYnVmZmVyc1swXS0+Y2FwYWNpdHkpIHsKPiArICAgICAgICAg ICAgaWYgKGZmX2lubGlua19hY2tub3dsZWRnZV9zdGF0dXMob3ZlcmxheV9pbmxpbmssICZzdGF0 dXMsCj4gJnB0cykpIHsKPiArICAgICAgICAgICAgICAgIHMtPm92ZXJsYXlfZW9mID0gMTsKPiAr ICAgICAgICAgICAgICAgIHMtPnRyYW5zaXRpb25fcHRzID0gcy0+cHRzICsKPiBhdl9yZXNjYWxl X3Eocy0+b3ZlcmxheV9zYW1wbGVfYnVmZmVyc1swXS0+c2l6ZSAtIChzLT5jZl9zYW1wbGVzIC8g MiksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoQVZSYXRpb25hbCl7Cj4gMSwgb3V0bGluay0+c2FtcGxlX3JhdGUgfSwgb3V0bGlu ay0+dGltZV9iYXNlKTsKPiArICAgICAgICAgICAgICAgIHMtPmlzX2Rpc2FibGVkID0gMTsKPiAr ICAgICAgICAgICAgfSBlbHNlIHsKPiArICAgICAgICAgICAgICAgIGZmX2lubGlua19yZXF1ZXN0 X2ZyYW1lKG92ZXJsYXlfaW5saW5rKTsKPiArICAgICAgICAgICAgICAgIHJldHVybiAwOwo+ICsg ICAgICAgICAgICB9Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICsKPiArICAgIGlmICghY3R4LT5l bmFibGVfc3RyKSB7Cj4gKyAgICAgICAgaWYgKHMtPnRyYW5zaXRpb25fcHRzICE9IEFWX05PUFRT X1ZBTFVFICYmCj4gcy0+bWFpbl9zYW1wbGVfYnVmZmVyc1swXS0+c2l6ZSA+IHMtPmNmX3NhbXBs ZXMgKyBTRUdNRU5UX1NJWkUpIHsKPiArICAgICAgICAgICAgbmJfc2FtcGxlcyA9IHMtPm1haW5f c2FtcGxlX2J1ZmZlcnNbMF0tPmNhcGFjaXR5IC0KPiBzLT5jZl9zYW1wbGVzIC0gU0VHTUVOVF9T SVpFOwo+ICsKPiArICAgICAgICAgICAgaWYgKHJldCA9IGNyb3NzZmFkZV9wcmVwYXJlKHMsIG1h aW5faW5saW5rLCBvdmVybGF5X2lubGluaywKPiBvdXRsaW5rLCBuYl9zYW1wbGVzLCAmbWFpbl9i dWZmZXIsICZvdmVybGF5X2J1ZmZlciwgMSkgPCAwKQo+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHJldDsKPiArCj4gKyAgICAgICAgICAgIHJldHVybiBmZl9maWx0ZXJfZnJhbWUob3V0bGluaywg bWFpbl9idWZmZXIpOwo+ICsgICAgICAgIH0gZWxzZSBpZiAocy0+dHJhbnNpdGlvbl9wdHMgIT0g QVZfTk9QVFNfVkFMVUUgfHwKPiBzLT50cmFuc2l0aW9uX3B0czIgIT0gQVZfTk9QVFNfVkFMVUUp IHsKPiArICAgICAgICAgICAgbmJfc2FtcGxlcyA9IEZGTUlOKHMtPmNmX3NhbXBsZXMsCj4gcy0+ bWFpbl9zYW1wbGVfYnVmZmVyc1swXS0+c2l6ZSAtIFNFR01FTlRfU0laRSk7Cj4gKwo+ICsgICAg ICAgICAgICBpZiAocmV0ID0gY3Jvc3NmYWRlX3NhbXBsZXMocywgbWFpbl9pbmxpbmssIG92ZXJs YXlfaW5saW5rLAo+IG91dGxpbmssIG5iX3NhbXBsZXMsICZvdXQsIDEpIDwgMCkKPiArICAgICAg ICAgICAgICAgIHJldHVybiByZXQ7Cj4gKwo+ICsgICAgICAgICAgICByZXR1cm4gZmZfZmlsdGVy X2ZyYW1lKG91dGxpbmssIG91dCk7Cj4gKyAgICAgICAgfSBlbHNlIGlmICghcy0+ZGVmYXVsdF9t b2RlKSB7Cj4gKyAgICAgICAgICAgIG5iX3NhbXBsZXMgPSBGRk1JTihzLT5tYWluX3NhbXBsZV9i dWZmZXJzWzBdLT5zaXplLAo+IFNFR01FTlRfU0laRSk7Cj4gKwo+ICsgICAgICAgICAgICBtYWlu X2J1ZmZlciA9IGZmX2dldF9hdWRpb19idWZmZXIob3V0bGluaywgbmJfc2FtcGxlcyk7Cj4gKyAg ICAgICAgICAgIGlmICghbWFpbl9idWZmZXIpCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gQVZF UlJPUihFTk9NRU0pOwo+ICsKPiArICAgICAgICAgICAgbWFpbl9idWZmZXItPnB0cyA9IHMtPnB0 czsKPiArICAgICAgICAgICAgcy0+cHRzICs9IGF2X3Jlc2NhbGVfcShuYl9zYW1wbGVzLCAoQVZS YXRpb25hbCl7IDEsCj4gb3V0bGluay0+c2FtcGxlX3JhdGUgfSwgb3V0bGluay0+dGltZV9iYXNl KTsKPiArCj4gKyAgICAgICAgICAgIGlmIChyZXQgPSByaW5nX3JlbW92ZShzLT5tYWluX3NhbXBs ZV9idWZmZXJzLCBtYWluX2lubGluaywKPiBtYWluX2J1ZmZlci0+ZXh0ZW5kZWRfZGF0YSwgbmJf c2FtcGxlcykgPCAwKQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiArICAgICAgICB9 Cj4gKwo+ICsgICAgICAgIGlmICghcy0+ZGVmYXVsdF9tb2RlIHx8IHMtPm92ZXJsYXlfZW9mKSB7 Cj4gKyAgICAgICAgICAgIHMtPnByZXZpb3VzX3NhbXBsZXMgPSBtYWluX2J1ZmZlci0+bmJfc2Ft cGxlczsKPiArICAgICAgICAgICAgcmV0dXJuIGZmX2ZpbHRlcl9mcmFtZShvdXRsaW5rLCBtYWlu X2J1ZmZlcik7Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICBzLT5wdHNfZ2FwID0gcy0+cHRz X2dhcF9lbmQgLSBzLT5wdHNfZ2FwX3N0YXJ0Owo+ICsKPiArICAgICAgICBuYl9zYW1wbGVzID0g RkZNSU4oU0VHTUVOVF9TSVpFLCBhdl9yZXNjYWxlX3Eocy0+cHRzX2dhcCwKPiBvdXRsaW5rLT50 aW1lX2Jhc2UsIChBVlJhdGlvbmFsKXsgMSwgb3V0bGluay0+c2FtcGxlX3JhdGUgfSkpOwo+ICsK PiArICAgICAgICBvdmVybGF5X2J1ZmZlciA9IGZmX2dldF9hdWRpb19idWZmZXIob3V0bGluaywg bmJfc2FtcGxlcyk7Cj4gKyAgICAgICAgaWYgKCFvdmVybGF5X2J1ZmZlcikKPiArICAgICAgICAg ICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKPiArCj4gKyAgICAgICAgaWYgKHJldCA9IHJpbmdf cmVtb3ZlKHMtPm92ZXJsYXlfc2FtcGxlX2J1ZmZlcnMsIG92ZXJsYXlfaW5saW5rLAo+IG92ZXJs YXlfYnVmZmVyLT5leHRlbmRlZF9kYXRhLCBuYl9zYW1wbGVzKSA8IDApCj4gKyAgICAgICAgICAg IHJldHVybiByZXQ7Cj4gKwo+ICsgICAgICAgIHMtPnByZXZpb3VzX3NhbXBsZXMgPSBuYl9zYW1w bGVzOwo+ICsgICAgICAgIHMtPnByZXZpb3VzX3B0cyArPSBhdl9yZXNjYWxlX3EobmJfc2FtcGxl cywgKEFWUmF0aW9uYWwpeyAxLAo+IG91dGxpbmstPnNhbXBsZV9yYXRlIH0sIG91dGxpbmstPnRp bWVfYmFzZSk7Cj4gKyAgICAgICAgcy0+cHRzX2dhcF9zdGFydCArPSBhdl9yZXNjYWxlX3EobmJf c2FtcGxlcywgKEFWUmF0aW9uYWwpeyAxLAo+IG91dGxpbmstPnNhbXBsZV9yYXRlIH0sIG91dGxp bmstPnRpbWVfYmFzZSk7Cj4gKwo+ICsgICAgICAgIG92ZXJsYXlfYnVmZmVyLT5wdHMgPSBzLT5w dHM7Cj4gKyAgICAgICAgcy0+cHRzICs9IGF2X3Jlc2NhbGVfcShuYl9zYW1wbGVzLCAoQVZSYXRp b25hbCl7IDEsCj4gb3V0bGluay0+c2FtcGxlX3JhdGUgfSwgb3V0bGluay0+dGltZV9iYXNlKTsK PiArCj4gKyAgICAgICAgYXZfZnJhbWVfZnJlZSgmbWFpbl9idWZmZXIpOwo+ICsKPiArICAgICAg ICByZXR1cm4gZmZfZmlsdGVyX2ZyYW1lKG91dGxpbmssIG92ZXJsYXlfYnVmZmVyKTsKPiArICAg IH0KPiArCj4gKyAgICBpZiAocy0+b3ZlcmxheV9lb2YgJiYgcy0+b3ZlcmxheV9zYW1wbGVfYnVm ZmVyc1swXS0+c2l6ZSA+IDApIHsKPiArICAgICAgICBpZiAocy0+b3ZlcmxheV9zYW1wbGVfYnVm ZmVyc1swXS0+c2l6ZSAhPSBzLT5jZl9zYW1wbGVzKSB7Cj4gKyAgICAgICAgICAgIG5iX3NhbXBs ZXMgPSBzLT5vdmVybGF5X3NhbXBsZV9idWZmZXJzWzBdLT5zaXplIC0KPiBzLT5jZl9zYW1wbGVz Owo+ICsKPiArICAgICAgICAgICAgaWYgKHJldCA9IGNyb3NzZmFkZV9wcmVwYXJlKHMsIG1haW5f aW5saW5rLCBvdmVybGF5X2lubGluaywKPiBvdXRsaW5rLCBuYl9zYW1wbGVzLCAmbWFpbl9idWZm ZXIsICZvdmVybGF5X2J1ZmZlciwgLTEpIDwgMCkKPiArICAgICAgICAgICAgICAgIHJldHVybiBy ZXQ7Cj4gKwo+ICsgICAgICAgICAgICByZXR1cm4gZmZfZmlsdGVyX2ZyYW1lKG91dGxpbmssIG92 ZXJsYXlfYnVmZmVyKTsKPiArICAgICAgICB9IGVsc2UgaWYgKHMtPm92ZXJsYXlfc2FtcGxlX2J1 ZmZlcnNbMF0tPnNpemUgPT0gcy0+Y2Zfc2FtcGxlcykgewo+ICsgICAgICAgICAgICBpZiAocmV0 ID0gY3Jvc3NmYWRlX3NhbXBsZXMocywgbWFpbl9pbmxpbmssIG92ZXJsYXlfaW5saW5rLAo+IG91 dGxpbmssIHMtPmNmX3NhbXBsZXMsICZvdXQsIC0xKSA8IDApCj4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gcmV0Owo+ICsKPiArICAgICAgICAgICAgcmV0dXJuIGZmX2ZpbHRlcl9mcmFtZShvdXRs aW5rLCBvdXQpOwo+ICsgICAgICAgIH0KPiArICAgIH0KPiArCj4gKyAgICBpZiAocy0+dHJhbnNp dGlvbl9wdHMgIT0gQVZfTk9QVFNfVkFMVUUgJiYgIXMtPmNyb3NzZmFkZV9yZWFkeSkgewo+ICsg ICAgICAgIG5iX3NhbXBsZXMgPSBhdl9yZXNjYWxlX3Eocy0+dHJhbnNpdGlvbl9wdHMgLSAocy0+ Y2Zfc2FtcGxlcyAvIDIpCj4gLSBzLT5wdHMsIG91dGxpbmstPnRpbWVfYmFzZSwgKEFWUmF0aW9u YWwpIHsgMSwgb3V0bGluay0+c2FtcGxlX3JhdGUgfSk7Cj4gKwo+ICsgICAgICAgIGlmIChyZXQg PSBjcm9zc2ZhZGVfcHJlcGFyZShzLCBtYWluX2lubGluaywgb3ZlcmxheV9pbmxpbmssCj4gb3V0 bGluaywgbmJfc2FtcGxlcywgJm1haW5fYnVmZmVyLCAmb3ZlcmxheV9idWZmZXIsIDApIDwgMCkK PiArICAgICAgICAgICAgcmV0dXJuIHJldDsKPiArICAgIH0gZWxzZSBpZiAocy0+dHJhbnNpdGlv bl9wdHMgIT0gQVZfTk9QVFNfVkFMVUUpIHsKPiArICAgICAgICBuYl9zYW1wbGVzID0gcy0+bWFp bl9lb2YgPyBzLT5tYWluX3NhbXBsZV9idWZmZXJzWzBdLT5zaXplIDoKPiBzLT5jZl9zYW1wbGVz Owo+ICsgICAgICAgIGlmIChzLT50cmFuc2l0aW9uX3B0cyA8IGF2X3Jlc2NhbGVfcShzLT5jZl9z YW1wbGVzLCAoQVZSYXRpb25hbCl7Cj4gMSwgb3V0bGluay0+c2FtcGxlX3JhdGUgfSwgb3V0bGlu ay0+dGltZV9iYXNlKSkgewo+ICsgICAgICAgICAgICBuYl9zYW1wbGVzID0gYXZfcmVzY2FsZV9x KHMtPnRyYW5zaXRpb25fcHRzLAo+IG91dGxpbmstPnRpbWVfYmFzZSwgKEFWUmF0aW9uYWwpeyAx LCBvdXRsaW5rLT5zYW1wbGVfcmF0ZSB9KTsKPiArICAgICAgICB9Cj4gKwo+ICsgICAgICAgIGlm IChyZXQgPSBjcm9zc2ZhZGVfc2FtcGxlcyhzLCBtYWluX2lubGluaywgb3ZlcmxheV9pbmxpbmss Cj4gb3V0bGluaywgbmJfc2FtcGxlcywgJm91dCwgMCkgPCAwKQo+ICsgICAgICAgICAgICByZXR1 cm4gcmV0Owo+ICsKPiArICAgICAgICByZXR1cm4gZmZfZmlsdGVyX2ZyYW1lKG91dGxpbmssIG91 dCk7Cj4gKyAgICB9IGVsc2Ugewo+ICsgICAgICAgIG5iX3NhbXBsZXMgPSBGRk1JTihzLT5tYWlu X3NhbXBsZV9idWZmZXJzWzBdLT5zaXplLCBTRUdNRU5UX1NJWkUpOwo+ICsgICAgICAgIG1haW5f YnVmZmVyID0gZmZfZ2V0X2F1ZGlvX2J1ZmZlcihvdXRsaW5rLCBuYl9zYW1wbGVzKTsKPiArICAg ICAgICBpZiAoIW1haW5fYnVmZmVyKQo+ICsgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9N RU0pOwo+ICsKPiArICAgICAgICBtYWluX2J1ZmZlci0+cHRzID0gcy0+cHRzOwo+ICsgICAgICAg IHMtPnB0cyArPSBhdl9yZXNjYWxlX3EobmJfc2FtcGxlcywgKEFWUmF0aW9uYWwpeyAxLAo+IG91 dGxpbmstPnNhbXBsZV9yYXRlIH0sIG91dGxpbmstPnRpbWVfYmFzZSk7Cj4gKwo+ICsgICAgICAg IGlmIChyZXQgPSByaW5nX3JlbW92ZShzLT5tYWluX3NhbXBsZV9idWZmZXJzLCBtYWluX2lubGlu aywKPiBtYWluX2J1ZmZlci0+ZXh0ZW5kZWRfZGF0YSwgbmJfc2FtcGxlcykgPCAwKQo+ICsgICAg ICAgICAgICByZXR1cm4gcmV0Owo+ICsgICAgfQo+ICsKPiArICAgIGlmICghZmZfaW5saW5rX2V2 YWx1YXRlX3RpbWVsaW5lX2F0X2ZyYW1lKG1haW5faW5saW5rLCBtYWluX2J1ZmZlcikKPiB8fCAo cy0+b3ZlcmxheV9lb2YgJiYgcy0+b3ZlcmxheV9zYW1wbGVfYnVmZmVyc1swXS0+c2l6ZSA9PSAw KSkgewo+ICsgICAgICAgIHJldHVybiBmZl9maWx0ZXJfZnJhbWUob3V0bGluaywgbWFpbl9idWZm ZXIpOwo+ICsgICAgfSBlbHNlIHsKPiArICAgICAgICBpZiAocy0+dHJhbnNpdGlvbl9wdHMgPT0g QVZfTk9QVFNfVkFMVUUpIHsKPiArICAgICAgICAgICAgbmJfc2FtcGxlcyA9IEZGTUlOKHMtPm92 ZXJsYXlfc2FtcGxlX2J1ZmZlcnNbMF0tPnNpemUsCj4gU0VHTUVOVF9TSVpFKTsKPiArICAgICAg ICAgICAgb3ZlcmxheV9idWZmZXIgPSBmZl9nZXRfYXVkaW9fYnVmZmVyKG91dGxpbmssIG5iX3Nh bXBsZXMpOwo+ICsgICAgICAgICAgICBpZiAoIW92ZXJsYXlfYnVmZmVyKQo+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKPiArICAgICAgICAgICAgaWYgKHJldCA9IHJp bmdfcmVtb3ZlKHMtPm92ZXJsYXlfc2FtcGxlX2J1ZmZlcnMsCj4gb3ZlcmxheV9pbmxpbmssIG92 ZXJsYXlfYnVmZmVyLT5leHRlbmRlZF9kYXRhLCBuYl9zYW1wbGVzKSA8IDApCj4gKyAgICAgICAg ICAgICAgICByZXR1cm4gcmV0Owo+ICsKPiArICAgICAgICAgICAgb3ZlcmxheV9idWZmZXItPnB0 cyA9IG1haW5fYnVmZmVyLT5wdHM7Cj4gKyAgICAgICAgfQo+ICsgICAgICAgIGF2X2ZyYW1lX2Zy ZWUoJm1haW5fYnVmZmVyKTsKPiArICAgICAgICByZXR1cm4gZmZfZmlsdGVyX2ZyYW1lKG91dGxp bmssIG92ZXJsYXlfYnVmZmVyKTsKPiArICAgIH0KPiArfQo+ICsKPiArc3RhdGljIGludCBjb25m aWdfb3V0cHV0KEFWRmlsdGVyTGluayAqb3V0bGluaykKPiArewo+ICsgICAgQVZGaWx0ZXJDb250 ZXh0ICpjdHggPSBvdXRsaW5rLT5zcmM7Cj4gKyAgICBBT3ZlcmxheUNvbnRleHQgKnMgPSBjdHgt PnByaXY7Cj4gKyAgICBpbnQgcmV0LCBzaXplLCByaW5nX2J1ZmZlcl9zaXplOwo+ICsKPiArICAg IHN3aXRjaCAob3V0bGluay0+Zm9ybWF0KSB7Cj4gKyAgICBjYXNlIEFWX1NBTVBMRV9GTVRfREJM UDogcy0+Y3Jvc3NmYWRlX3NhbXBsZXMgPQo+IGNyb3NzZmFkZV9zYW1wbGVzX2RibHA7Cj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IHNpemVvZihkb3VibGUpOwo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgY2FzZSBBVl9TQU1QTEVfRk1U X0ZMVFA6IHMtPmNyb3NzZmFkZV9zYW1wbGVzID0KPiBjcm9zc2ZhZGVfc2FtcGxlc19mbHRwOwo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgPSBzaXplb2YoZmxvYXQpOwo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgY2FzZSBBVl9TQU1QTEVf Rk1UX1MxNlA6IHMtPmNyb3NzZmFkZV9zYW1wbGVzID0KPiBjcm9zc2ZhZGVfc2FtcGxlc19zMTZw Owo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgPSBzaXplb2YoaW50MTZfdCk7 Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICBjYXNlIEFWX1NB TVBMRV9GTVRfUzMyUDogcy0+Y3Jvc3NmYWRlX3NhbXBsZXMgPQo+IGNyb3NzZmFkZV9zYW1wbGVz X3MzMnA7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IHNpemVvZihpbnQz Ml90KTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiArICAgIH0KPiAr Cj4gKyAgICBpZiAocy0+Y2ZfZHVyYXRpb24pCj4gKyAgICAgICAgcy0+Y2Zfc2FtcGxlcyA9IGF2 X3Jlc2NhbGUocy0+Y2ZfZHVyYXRpb24sIG91dGxpbmstPnNhbXBsZV9yYXRlLAo+IEFWX1RJTUVf QkFTRSk7Cj4gKyAgICBlbHNlCj4gKyAgICAgICAgcy0+Y2Zfc2FtcGxlcyA9IGF2X3Jlc2NhbGUo MTAwMDAwLCBvdXRsaW5rLT5zYW1wbGVfcmF0ZSwKPiBBVl9USU1FX0JBU0UpOwo+ICsKPiArICAg IHMtPm5iX2NoYW5uZWxzID0gb3V0bGluay0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzOwo+ICsKPiAr ICAgIHMtPmNmMCA9IGF2X21hbGxvY19hcnJheShzLT5uYl9jaGFubmVscywgc2l6ZW9mKHVpbnQ4 X3QqKSk7Cj4gKyAgICBzLT5jZjEgPSBhdl9tYWxsb2NfYXJyYXkocy0+bmJfY2hhbm5lbHMsIHNp emVvZih1aW50OF90KikpOwo+ICsKPiArICAgIHJpbmdfYnVmZmVyX3NpemUgPSBTRUdNRU5UX1NJ WkUgKyBTRUdNRU5UX1NJWkUgKiAoMSArICgocy0+Y2Zfc2FtcGxlcwo+IC0gMSkgLyBTRUdNRU5U X1NJWkUpKTsKPiArCj4gKyAgICBzLT5tYWluX3NhbXBsZV9idWZmZXJzID0gYXZfbWFsbG9jX2Fy cmF5KHMtPm5iX2NoYW5uZWxzLAo+IHNpemVvZihGcmFtZVJpbmdCdWZmZXIqKSk7Cj4gKyAgICBm b3IgKGludCBpID0gMDsgaSA8IHMtPm5iX2NoYW5uZWxzOyBpKyspIHsKPiArICAgICAgICBzLT5j ZjBbaV0gPSBhdl9tYWxsb2NfYXJyYXkocy0+Y2Zfc2FtcGxlcywgc2l6ZSk7Cj4gKyAgICAgICAg cmV0ID0gcmluZ19pbml0KCZzLT5tYWluX3NhbXBsZV9idWZmZXJzW2ldLCByaW5nX2J1ZmZlcl9z aXplLAo+IHNpemUpOwo+ICsgICAgICAgIGlmIChyZXQgPCAwKQo+ICsgICAgICAgICAgICByZXR1 cm4gcmV0Owo+ICsgICAgfQo+ICsKPiArICAgIHMtPm92ZXJsYXlfc2FtcGxlX2J1ZmZlcnMgPSBh dl9tYWxsb2NfYXJyYXkocy0+bmJfY2hhbm5lbHMsCj4gc2l6ZW9mKEZyYW1lUmluZ0J1ZmZlciop KTsKPiArICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcy0+bmJfY2hhbm5lbHM7IGkrKykgewo+ICsg ICAgICAgIHMtPmNmMVtpXSA9IGF2X21hbGxvY19hcnJheShzLT5jZl9zYW1wbGVzLCBzaXplKTsK PiArICAgICAgICByZXQgPSByaW5nX2luaXQoJnMtPm92ZXJsYXlfc2FtcGxlX2J1ZmZlcnNbaV0s IHJpbmdfYnVmZmVyX3NpemUsCj4gc2l6ZSk7Cj4gKyAgICAgICAgaWYgKHJldCA8IDApCj4gKyAg ICAgICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0dXJuIDA7Cj4gK30K PiArCj4gK3N0YXRpYyBjb25zdCBBVkZpbHRlclBhZCBhdmZpbHRlcl9hZl9hb3ZlcmxheV9pbnB1 dHNbXSA9IHsKPiArICAgIHsKPiArICAgICAgICAubmFtZSA9ICJtYWluIiwKPiArICAgICAgICAu dHlwZSA9IEFWTUVESUFfVFlQRV9BVURJTywKPiArICAgIH0sCj4gKyAgICB7Cj4gKyAgICAgICAg Lm5hbWUgPSAicy0+b3ZlcmxheV9pbnB1dCIsCj4gKyAgICAgICAgLnR5cGUgPSBBVk1FRElBX1RZ UEVfQVVESU8sCj4gKyAgICB9LAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IEFWRmlsdGVyUGFk IGF2ZmlsdGVyX2FmX2FvdmVybGF5X291dHB1dHNbXSA9IHsKPiArICAgIHsKPiArICAgICAgICAu bmFtZSAgICAgICAgICAgPSAiZGVmYXVsdCIsCj4gKyAgICAgICAgLnR5cGUgICAgICAgICAgID0g QVZNRURJQV9UWVBFX0FVRElPLAo+ICsgICAgICAgIC5jb25maWdfcHJvcHMgICA9IGNvbmZpZ19v dXRwdXQsCj4gKyAgICB9LAo+ICt9Owo+ICsKPiArY29uc3QgQVZGaWx0ZXIgZmZfYWZfYW92ZXJs YXkgPSB7Cj4gKyAgICAubmFtZSAgICAgICAgICAgPSAiYW92ZXJsYXkiLAo+ICsgICAgLmRlc2Ny aXB0aW9uICAgID0gTlVMTF9JRl9DT05GSUdfU01BTEwoIlJlcGxhY2UgYSBzcGVjaWZpZWQgc2Vj dGlvbgo+IG9mIGFuIGF1ZGlvIHN0cmVhbSB3aXRoIGFub3RoZXIgYXVkaW8gaW5wdXQuIiksCj4g KyAgICAucHJpdl9zaXplICAgICAgPSBzaXplb2YoQU92ZXJsYXlDb250ZXh0KSwKPiArICAgIC5w cml2X2NsYXNzICAgICA9ICZhb3ZlcmxheV9jbGFzcywKPiArICAgIC5hY3RpdmF0ZSAgICAgICA9 IGFjdGl2YXRlLAo+ICsgICAgLmluaXQgICAgICAgICAgID0gaW5pdCwKPiArICAgIC51bmluaXQg ICAgICAgICA9IHVuaW5pdCwKPiArICAgIEZJTFRFUl9JTlBVVFMoYXZmaWx0ZXJfYWZfYW92ZXJs YXlfaW5wdXRzKSwKPiArICAgIEZJTFRFUl9PVVRQVVRTKGF2ZmlsdGVyX2FmX2FvdmVybGF5X291 dHB1dHMpLAo+ICsgICAgRklMVEVSX1FVRVJZX0ZVTkMocXVlcnlfZm9ybWF0cyksCj4gKyAgICAu ZmxhZ3MgICAgICAgICAgPSBBVkZJTFRFUl9GTEFHX1NVUFBPUlRfVElNRUxJTkVfSU5URVJOQUws Cj4gK307Cj4gZGlmZiAtLWdpdCBhL2xpYmF2ZmlsdGVyL2FsbGZpbHRlcnMuYyBiL2xpYmF2Zmls dGVyL2FsbGZpbHRlcnMuYwo+IGluZGV4IGQ0MTg0ZDZlODA4Li5hYmRlYjQwZmI0OSAxMDA2NDQK PiAtLS0gYS9saWJhdmZpbHRlci9hbGxmaWx0ZXJzLmMKPiArKysgYi9saWJhdmZpbHRlci9hbGxm aWx0ZXJzLmMKPiBAQCAtNjYsNiArNjYsNyBAQCBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfYWZf YW5sbWRuOwo+ICBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfYWZfYW5sbWY7Cj4gIGV4dGVybiBj b25zdCBBVkZpbHRlciBmZl9hZl9hbmxtczsKPiAgZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX2Fm X2FudWxsOwo+ICtleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfYWZfYW92ZXJsYXk7Cj4gIGV4dGVy biBjb25zdCBBVkZpbHRlciBmZl9hZl9hcGFkOwo+ICBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZf YWZfYXBlcm1zOwo+ICBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfYWZfYXBoYXNlcjsKPiAtLQo+ IDIuMzkuMyAoQXBwbGUgR2l0LTE0NSkKPgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCj4gZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdAo+IGZmbXBlZy1k ZXZlbEBmZm1wZWcub3JnCj4gaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZt cGVnLWRldmVsCj4KPiBUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwK PiBmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3Jp YmUiLgo+Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZm bXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9m Zm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwg dmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9y ZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4K