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 2BECE4262E for ; Wed, 5 Jan 2022 14:52:03 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 42C3A68ADE6; Wed, 5 Jan 2022 16:52:02 +0200 (EET) Received: from mail-wr1-f50.google.com (mail-wr1-f50.google.com [209.85.221.50]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6462168A6E0 for ; Wed, 5 Jan 2022 16:51:56 +0200 (EET) Received: by mail-wr1-f50.google.com with SMTP id l10so2178009wrh.7 for ; Wed, 05 Jan 2022 06:51:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=SzfIDEwxgRpMU5x3+Nc6qcfW50Y3oSDtdZE59bEdR4E=; b=e8bQSi7ZY+U2eUZP6s/KRd2R6eKaNcBDdf3csAdAHO1kTHABwLmNTbT1ZRIaINkunM DzlgIhnx2/f8HIGunXtxZ+DM6SuFA5VgaMSv3blqltpztDq1frpDfJJV5LeWOa8dw+Al SXjYzI/wH7kw8ta9bRbIoRPKh6M59JSDVYGqAfwgdXSjMaK1erjUpIJyn4j7qGNDZ0Ge iCSI8SRG6F9Ef3D4fLv2ZC78DppK6LLW+StZEZTA63jH3+3I1yx5eY6fpOgspVlsLZQV xXNAv/r3VT8NZUEfOIduBGT4f88HbLkfF6PRBWA00hD1ABtn18Vy9ThniUTI3ETR3V0h vH7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=SzfIDEwxgRpMU5x3+Nc6qcfW50Y3oSDtdZE59bEdR4E=; b=F6FcpTTX5nxPSdwKIG94j6VJ7zQncZr6hws5hJLfvouy+7+tW6+rcAfcU/citWiJ2g 1zmZHBXJiOj39FELnIhBYmsgfml2c9GOrFP9gwHMfL/+6XMvTra1pYON4zqm6Ifed7Dq OsYRfCzXPkYCiaiam8Ijpx7wUPSghbxaS994tH6iMYUrRqChjkIDjLLDOWlL5mUwdq5W IcsMAU5MnzHsa2Agzzcvyb9J6a1aezZKhdSLj1LXG5V33hpIqmzLqh8H7yD7Zx2CjpOY 6bR525HyGvJgmSw40jJiMktVjmLsL+KQpo1N9gn79ykoIabT65Edaa1IV6NBU5Zlhlch YT1Q== X-Gm-Message-State: AOAM532j6J895ZFnTcDUkQ+rRm2zhWFWmb+z6KZjoWqcHlO0AUI+CtOx LNKW5yY9fpl5rjJ8L6Zaw1hWH8yJ9vJaWg== X-Google-Smtp-Source: ABdhPJyK3BMq9AzI3xYWUdnhKyckqDJFKIp+z4xyckqIvDspgEc1Opej4DGFg4UzZ3WR6D8d6TC2pg== X-Received: by 2002:a5d:5987:: with SMTP id n7mr45895712wri.1.1641394315722; Wed, 05 Jan 2022 06:51:55 -0800 (PST) Received: from [10.10.10.172] (84-112-75-55.cable.dynamic.surfer.at. [84.112.75.55]) by smtp.gmail.com with ESMTPSA id 1sm47091125wry.33.2022.01.05.06.51.55 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 05 Jan 2022 06:51:55 -0800 (PST) From: "Marvin Scholz" To: "FFmpeg development discussions and patches" Date: Wed, 05 Jan 2022 15:51:54 +0100 X-Mailer: MailMate (1.13.2r5673) Message-ID: <4F2D812A-796E-45F3-A587-962A5C6D55D3@gmail.com> In-Reply-To: <44D555B2-4959-47EA-8210-917ACB4652EE@rastageeks.org> References: <44D555B2-4959-47EA-8210-917ACB4652EE@rastageeks.org> MIME-Version: 1.0 Subject: Re: [FFmpeg-devel] [PATCH v8 1/3] libavdevice/avfoundation.m: use AudioConvert, extend supported formats 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: Thilo Borgmann , Aman Karmani Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: T24gMzEgRGVjIDIwMjEsIGF0IDE4OjQyLCBSb21haW4gQmVhdXhpcyB3cm90ZToKCj4gKiBJbXBs ZW1lbnQgc3VwcG9ydCBmb3IgQXVkaW9Db252ZXJ0ZXIKPiAqIFN3aXRjaCB0byBBdWRpb0NvbnZl cnRlcidzIEFQSSB0byBjb252ZXJ0IHVuc3VwcG9ydGVkIFBDTQo+ICAgZm9ybWF0cyAobm9uLWlu dGVybGVhdmVkLCBub24tcGFja2VkKSB0byBzdXBwb3J0ZWQgZm9ybWF0cwo+ICogTWluaW1pemUg ZGF0YSBjb3B5Lgo+Cj4gVGhpcyBmaXhlczogaHR0cHM6Ly90cmFjLmZmbXBlZy5vcmcvdGlja2V0 Lzk1MDIKPgo+IEFQSSByZWY6Cj4gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50 YXRpb24vYXVkaW90b29sYm94L2F1ZGlvX2NvbnZlcnRlcl9zZXJ2aWNlcwo+Cj4gU2lnbmVkLW9m Zi1ieTogUm9tYWluIEJlYXV4aXMgPHRvb3RzQHJhc3RhZ2Vla3Mub3JnPgo+IOKAlAo+IFtTb3Jy eSBmb3IgdGhlIG5vaXNlIGJ1dCBhbiBpc3N1ZSBjYW1lIHVwIHdpdGggdGhlIHByZXZpb3VzIHNl dF0KPgo+IFRoaXMgaXMgdGhlIGZpcnN0IHBhdGNoIG9mIGEgc2VyaWVzIG9mIDMgdGhhdCBmaXgs IGNsZWFudXAgYW5kIGVuaGFuY2UgCj4gdGhlCj4gYXZmb3VuZGF0aW9uIGltcGxlbWVudGF0aW9u IGZvciBsaWJhdmRldmljZS4KPgo+IFRoZXNlIHBhdGNoZXMgY29tZSBmcm9tIGFuIGFjdHVhbCB1 c2VyLWZhY2luZyBhcHBsaWNhdGlvbiByZWx5aW5nIG9uCj4gbGliYXZkZXZpY2XigJlzIGltcGxl bWVudGF0aW9uIG9mIGF2Zm91bmRhdGlvbiBhdWRpbyBpbnB1dC4gV2l0aG91dCAKPiB0aGVtLAo+ IEF2Zm91bmRhdGlvbiBpcyBwcmFjdGljYWxseSB1bnVzYWJsZSBhcyBpdCB3aWxsOgo+ICogUmVm dXNlIHRvIHByb2Nlc3MgY2VydGFpbiBzcGVjaWZpYyBhdWRpbyBpbnB1dCBmb3JtYXQgdGhhdCBh cmUgCj4gYWN0dWFsbHkKPiByZXR1cm5lZCBieSB0aGUgT1MgZm9yIHNvbWUgdXNlcnMgKHBhY2tl ZCBQQ00gYXVkaW8pCj4gKiBEcm9wIGF1ZGlvIGZyYW1lcywgcmVzdWx0aW5nIGluIGNvcnJ1cHRl ZCBhdWRpbyBpbnB1dC4gVGhpcyBtaWdodCAKPiBoYXZlIGJlZW4KPiB1bm5vdGljZWQgd2l0aCB2 aWRlbyBmcmFtZXMgYnV0IHRoaXMgbWFrZXMgYXZmb3VuZGF0aW9uIGVzc2VudGlhbGx5IAo+IHVu dXNhYmxlCj4gZm9yIGF1ZGlvLgo+Cj4gVGhlIHBhdGNoZXMgYXJlIG5vdyBiZWluZyBpbmNsdWRl ZCBpbiBvdXIgcHJvZHVjdGlvbiBidWlsZCBzbyB0aGV5IGFyZSAKPiB0ZXN0ZWQKPiBhbmQgdXNh YmxlIGluIHByb2R1Y3Rpb24uCj4KPiBDaGFuZ2Vsb2cgZm9yIHRoaXMgcGF0Y2g6Cj4gKiB2Mjog Tm9uZQo+ICogdjM6IE5vbmUKPiAqIHY0OiBOb25lCj4gKiB2NTogRml4IGluZGVudGF0aW9uL3dy YXBwaW5nCj4gKiB2NjogTm9uZQo+ICogdjc6IFJlbW92ZWQgdXNlIG9mIGtBdWRpb0NvbnZlcnRl clByb3BlcnR5Q2FsY3VsYXRlT3V0cHV0QnVmZmVyU2l6ZQo+ICB0byBjYWxjdWxhdGUgb3V0cHV0 IGJ1ZmZlciBzaXplLiBUaGUgY2FsY3VsYXRpb24gaXMgdHJpdmlhbCBhbmQgdGhpcyAKPiBjYWxs IHdhcwo+ICByYW5kb21seSBmYWlsaW5nIGZvciBubyByZWFzb24KPiAqIHY4OiBOb25lCj4KClRo ZSBwYXRjaHNldCBmYWlscyB0byBhcHBseSBmb3IgbWU6CgpBcHBseWluZzogbGliYXZkZXZpY2Uv YXZmb3VuZGF0aW9uLm06IHVzZSBBdWRpb0NvbnZlcnQsIGV4dGVuZCBzdXBwb3J0ZWQgCmZvcm1h dHMKZXJyb3I6IGNvcnJ1cHQgcGF0Y2ggYXQgbGluZSAxOTEKUGF0Y2ggZmFpbGVkIGF0IDAwMDEg bGliYXZkZXZpY2UvYXZmb3VuZGF0aW9uLm06IHVzZSBBdWRpb0NvbnZlcnQsIApleHRlbmQgc3Vw cG9ydGVkIGZvcm1hdHMKCj4KPiBsaWJhdmRldmljZS9hdmZvdW5kYXRpb24ubSB8IDI1NSArKysr KysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCj4gMSBmaWxlIGNoYW5nZWQsIDE0NSBp bnNlcnRpb25zKCspLCAxMTAgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvbGliYXZkZXZp Y2UvYXZmb3VuZGF0aW9uLm0gYi9saWJhdmRldmljZS9hdmZvdW5kYXRpb24ubQo+IGluZGV4IDBj ZDZlNjQ2ZDUuLjczOGNkOTMzNzUgMTAwNjQ0Cj4gLS0tIGEvbGliYXZkZXZpY2UvYXZmb3VuZGF0 aW9uLm0KPiArKysgYi9saWJhdmRldmljZS9hdmZvdW5kYXRpb24ubQo+IEBAIC0xMTEsMTYgKzEx MSwxMSBAQAo+Cj4gICAgIGludCAgICAgICAgICAgICBudW1fdmlkZW9fZGV2aWNlczsKPgo+IC0g ICAgaW50ICAgICAgICAgICAgIGF1ZGlvX2NoYW5uZWxzOwo+IC0gICAgaW50ICAgICAgICAgICAg IGF1ZGlvX2JpdHNfcGVyX3NhbXBsZTsKPiAtICAgIGludCAgICAgICAgICAgICBhdWRpb19mbG9h dDsKPiAtICAgIGludCAgICAgICAgICAgICBhdWRpb19iZTsKPiAtICAgIGludCAgICAgICAgICAg ICBhdWRpb19zaWduZWRfaW50ZWdlcjsKPiAtICAgIGludCAgICAgICAgICAgICBhdWRpb19wYWNr ZWQ7Cj4gLSAgICBpbnQgICAgICAgICAgICAgYXVkaW9fbm9uX2ludGVybGVhdmVkOwo+IC0KPiAt ICAgIGludDMyX3QgICAgICAgICAqYXVkaW9fYnVmZmVyOwo+IC0gICAgaW50ICAgICAgICAgICAg IGF1ZGlvX2J1ZmZlcl9zaXplOwo+ICsgICAgVUludDMyICAgICAgICAgICAgYXVkaW9fYnVmZmVy czsKPiArICAgIFVJbnQzMiAgICAgICAgICAgIGF1ZGlvX2NoYW5uZWxzOwo+ICsgICAgVUludDMy ICAgICAgICAgICAgaW5wdXRfYnl0ZXNfcGVyX3NhbXBsZTsKPiArICAgIFVJbnQzMiAgICAgICAg ICAgIG91dHB1dF9ieXRlc19wZXJfc2FtcGxlOwo+ICsgICAgQXVkaW9Db252ZXJ0ZXJSZWYgYXVk aW9fY29udmVydGVyOwo+Cj4gICAgIGVudW0gQVZQaXhlbEZvcm1hdCBwaXhlbF9mb3JtYXQ7Cj4K PiBAQCAtMjk5LDcgKzI5NCwxMCBAQCBzdGF0aWMgdm9pZCBkZXN0cm95X2NvbnRleHQoQVZGQ29u dGV4dCogY3R4KQo+ICAgICBjdHgtPmF2Zl9kZWxlZ2F0ZSAgICA9IE5VTEw7Cj4gICAgIGN0eC0+ YXZmX2F1ZGlvX2RlbGVnYXRlID0gTlVMTDsKPgo+IC0gICAgYXZfZnJlZXAoJmN0eC0+YXVkaW9f YnVmZmVyKTsKPiArICAgIGlmIChjdHgtPmF1ZGlvX2NvbnZlcnRlcikgewo+ICsgICAgICBBdWRp b0NvbnZlcnRlckRpc3Bvc2UoY3R4LT5hdWRpb19jb252ZXJ0ZXIpOwo+ICsgICAgICBjdHgtPmF1 ZGlvX2NvbnZlcnRlciA9IE5VTEw7Cj4gKyAgICB9Cj4KPiAgICAgcHRocmVhZF9tdXRleF9kZXN0 cm95KCZjdHgtPmZyYW1lX2xvY2spOwo+Cj4gQEAgLTY3Myw2ICs2NzEsMTAgQEAgc3RhdGljIGlu dCBnZXRfYXVkaW9fY29uZmlnKEFWRm9ybWF0Q29udGV4dCAqcykKPiAgICAgQVZGQ29udGV4dCAq Y3R4ID0gKEFWRkNvbnRleHQqKXMtPnByaXZfZGF0YTsKPiAgICAgQ01Gb3JtYXREZXNjcmlwdGlv blJlZiBmb3JtYXRfZGVzYzsKPiAgICAgQVZTdHJlYW0qIHN0cmVhbSA9IGF2Zm9ybWF0X25ld19z dHJlYW0ocywgTlVMTCk7Cj4gKyAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gb3V0cHV0 X2Zvcm1hdCA9IHswfTsKPiArICAgIGludCBhdWRpb19iaXRzX3Blcl9zYW1wbGUsIGF1ZGlvX2Zs b2F0LCBhdWRpb19iZTsKPiArICAgIGludCBhdWRpb19zaWduZWRfaW50ZWdlciwgYXVkaW9fcGFj a2VkLCBhdWRpb19ub25faW50ZXJsZWF2ZWQ7Cj4gKyAgICBpbnQgbXVzdF9jb252ZXJ0ID0gMDsK Pgo+ICAgICBpZiAoIXN0cmVhbSkgewo+ICAgICAgICAgcmV0dXJuIDE7Cj4gQEAgLTY5MCw2MCAr NjkyLDk3IEBAIHN0YXRpYyBpbnQgZ2V0X2F1ZGlvX2NvbmZpZyhBVkZvcm1hdENvbnRleHQgKnMp Cj4gICAgIGF2cHJpdl9zZXRfcHRzX2luZm8oc3RyZWFtLCA2NCwgMSwgYXZmX3RpbWVfYmFzZSk7 Cj4KPiAgICAgZm9ybWF0X2Rlc2MgPSAKPiBDTVNhbXBsZUJ1ZmZlckdldEZvcm1hdERlc2NyaXB0 aW9uKGN0eC0+Y3VycmVudF9hdWRpb19mcmFtZSk7Cj4gLSAgICBjb25zdCBBdWRpb1N0cmVhbUJh c2ljRGVzY3JpcHRpb24gKmJhc2ljX2Rlc2MgPSAKPiBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25H ZXRTdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKGZvcm1hdF9kZXNjKTsKPiArICAgIGNvbnN0IEF1ZGlv U3RyZWFtQmFzaWNEZXNjcmlwdGlvbiAqaW5wdXRfZm9ybWF0ID0gCj4gQ01BdWRpb0Zvcm1hdERl c2NyaXB0aW9uR2V0U3RyZWFtQmFzaWNEZXNjcmlwdGlvbihmb3JtYXRfZGVzYyk7Cj4KPiAtICAg IGlmICghYmFzaWNfZGVzYykgewo+ICsgICAgaWYgKCFpbnB1dF9mb3JtYXQpIHsKPiAgICAgICAg IHVubG9ja19mcmFtZXMoY3R4KTsKPiAgICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfRVJST1IsICJh dWRpbyBmb3JtYXQgbm90IGF2YWlsYWJsZVxuIik7Cj4gICAgICAgICByZXR1cm4gMTsKPiAgICAg fQo+Cj4gKyAgICBpZiAoaW5wdXRfZm9ybWF0LT5tRm9ybWF0SUQgIT0ga0F1ZGlvRm9ybWF0TGlu ZWFyUENNKSB7Cj4gKyAgICAgICAgdW5sb2NrX2ZyYW1lcyhjdHgpOwo+ICsgICAgICAgIGF2X2xv ZyhzLCBBVl9MT0dfRVJST1IsICJvbmx5IFBDTSBhdWRpbyBmb3JtYXQgYXJlIHN1cHBvcnRlZCAK PiBhdCB0aGUgbW9tZW50XG4iKTsKPiArICAgICAgICByZXR1cm4gMTsKPiArICAgIH0KPiArCj4g ICAgIHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX3R5cGUgICAgID0gQVZNRURJQV9UWVBFX0FVRElP Owo+IC0gICAgc3RyZWFtLT5jb2RlY3Bhci0+c2FtcGxlX3JhdGUgICAgPSBiYXNpY19kZXNjLT5t U2FtcGxlUmF0ZTsKPiAtICAgIHN0cmVhbS0+Y29kZWNwYXItPmNoYW5uZWxzICAgICAgID0gYmFz aWNfZGVzYy0+bUNoYW5uZWxzUGVyRnJhbWU7Cj4gKyAgICBzdHJlYW0tPmNvZGVjcGFyLT5zYW1w bGVfcmF0ZSAgICA9IGlucHV0X2Zvcm1hdC0+bVNhbXBsZVJhdGU7Cj4gKyAgICBzdHJlYW0tPmNv ZGVjcGFyLT5jaGFubmVscyAgICAgICA9IAo+IGlucHV0X2Zvcm1hdC0+bUNoYW5uZWxzUGVyRnJh bWU7Cj4gICAgIHN0cmVhbS0+Y29kZWNwYXItPmNoYW5uZWxfbGF5b3V0ID0gCj4gYXZfZ2V0X2Rl ZmF1bHRfY2hhbm5lbF9sYXlvdXQoc3RyZWFtLT5jb2RlY3Bhci0+Y2hhbm5lbHMpOwo+Cj4gLSAg ICBjdHgtPmF1ZGlvX2NoYW5uZWxzICAgICAgICA9IGJhc2ljX2Rlc2MtPm1DaGFubmVsc1BlckZy YW1lOwo+IC0gICAgY3R4LT5hdWRpb19iaXRzX3Blcl9zYW1wbGUgPSBiYXNpY19kZXNjLT5tQml0 c1BlckNoYW5uZWw7Cj4gLSAgICBjdHgtPmF1ZGlvX2Zsb2F0ICAgICAgICAgICA9IGJhc2ljX2Rl c2MtPm1Gb3JtYXRGbGFncyAmIAo+IGtBdWRpb0Zvcm1hdEZsYWdJc0Zsb2F0Owo+IC0gICAgY3R4 LT5hdWRpb19iZSAgICAgICAgICAgICAgPSBiYXNpY19kZXNjLT5tRm9ybWF0RmxhZ3MgJiAKPiBr QXVkaW9Gb3JtYXRGbGFnSXNCaWdFbmRpYW47Cj4gLSAgICBjdHgtPmF1ZGlvX3NpZ25lZF9pbnRl Z2VyICA9IGJhc2ljX2Rlc2MtPm1Gb3JtYXRGbGFncyAmIAo+IGtBdWRpb0Zvcm1hdEZsYWdJc1Np Z25lZEludGVnZXI7Cj4gLSAgICBjdHgtPmF1ZGlvX3BhY2tlZCAgICAgICAgICA9IGJhc2ljX2Rl c2MtPm1Gb3JtYXRGbGFncyAmIAo+IGtBdWRpb0Zvcm1hdEZsYWdJc1BhY2tlZDsKPiAtICAgIGN0 eC0+YXVkaW9fbm9uX2ludGVybGVhdmVkID0gYmFzaWNfZGVzYy0+bUZvcm1hdEZsYWdzICYgCj4g a0F1ZGlvRm9ybWF0RmxhZ0lzTm9uSW50ZXJsZWF2ZWQ7Cj4gLQo+IC0gICAgaWYgKGJhc2ljX2Rl c2MtPm1Gb3JtYXRJRCA9PSBrQXVkaW9Gb3JtYXRMaW5lYXJQQ00gJiYKPiAtICAgICAgICBjdHgt PmF1ZGlvX2Zsb2F0ICYmCj4gLSAgICAgICAgY3R4LT5hdWRpb19iaXRzX3Blcl9zYW1wbGUgPT0g MzIgJiYKPiAtICAgICAgICBjdHgtPmF1ZGlvX3BhY2tlZCkgewo+IC0gICAgICAgIHN0cmVhbS0+ Y29kZWNwYXItPmNvZGVjX2lkID0gY3R4LT5hdWRpb19iZSA/IAo+IEFWX0NPREVDX0lEX1BDTV9G MzJCRSA6IEFWX0NPREVDX0lEX1BDTV9GMzJMRTsKPiAtICAgIH0gZWxzZSBpZiAoYmFzaWNfZGVz Yy0+bUZvcm1hdElEID09IGtBdWRpb0Zvcm1hdExpbmVhclBDTSAmJgo+IC0gICAgICAgIGN0eC0+ YXVkaW9fc2lnbmVkX2ludGVnZXIgJiYKPiAtICAgICAgICBjdHgtPmF1ZGlvX2JpdHNfcGVyX3Nh bXBsZSA9PSAxNiAmJgo+IC0gICAgICAgIGN0eC0+YXVkaW9fcGFja2VkKSB7Cj4gLSAgICAgICAg c3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQgPSBjdHgtPmF1ZGlvX2JlID8gCj4gQVZfQ09ERUNf SURfUENNX1MxNkJFIDogQVZfQ09ERUNfSURfUENNX1MxNkxFOwo+IC0gICAgfSBlbHNlIGlmIChi YXNpY19kZXNjLT5tRm9ybWF0SUQgPT0ga0F1ZGlvRm9ybWF0TGluZWFyUENNICYmCj4gLSAgICAg ICAgY3R4LT5hdWRpb19zaWduZWRfaW50ZWdlciAmJgo+IC0gICAgICAgIGN0eC0+YXVkaW9fYml0 c19wZXJfc2FtcGxlID09IDI0ICYmCj4gLSAgICAgICAgY3R4LT5hdWRpb19wYWNrZWQpIHsKPiAt ICAgICAgICBzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19pZCA9IGN0eC0+YXVkaW9fYmUgPyAKPiBB Vl9DT0RFQ19JRF9QQ01fUzI0QkUgOiBBVl9DT0RFQ19JRF9QQ01fUzI0TEU7Cj4gLSAgICB9IGVs c2UgaWYgKGJhc2ljX2Rlc2MtPm1Gb3JtYXRJRCA9PSBrQXVkaW9Gb3JtYXRMaW5lYXJQQ00gJiYK PiAtICAgICAgICBjdHgtPmF1ZGlvX3NpZ25lZF9pbnRlZ2VyICYmCj4gLSAgICAgICAgY3R4LT5h dWRpb19iaXRzX3Blcl9zYW1wbGUgPT0gMzIgJiYKPiAtICAgICAgICBjdHgtPmF1ZGlvX3BhY2tl ZCkgewo+IC0gICAgICAgIHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkID0gY3R4LT5hdWRpb19i ZSA/IAo+IEFWX0NPREVDX0lEX1BDTV9TMzJCRSA6IEFWX0NPREVDX0lEX1BDTV9TMzJMRTsKPiAr ICAgIGF1ZGlvX2JpdHNfcGVyX3NhbXBsZSA9IGlucHV0X2Zvcm1hdC0+bUJpdHNQZXJDaGFubmVs Owo+ICsgICAgYXVkaW9fZmxvYXQgICAgICAgICAgID0gaW5wdXRfZm9ybWF0LT5tRm9ybWF0Rmxh Z3MgJiAKPiBrQXVkaW9Gb3JtYXRGbGFnSXNGbG9hdDsKPiArICAgIGF1ZGlvX2JlICAgICAgICAg ICAgICA9IGlucHV0X2Zvcm1hdC0+bUZvcm1hdEZsYWdzICYgCj4ga0F1ZGlvRm9ybWF0RmxhZ0lz QmlnRW5kaWFuOwo+ICsgICAgYXVkaW9fc2lnbmVkX2ludGVnZXIgID0gaW5wdXRfZm9ybWF0LT5t Rm9ybWF0RmxhZ3MgJiAKPiBrQXVkaW9Gb3JtYXRGbGFnSXNTaWduZWRJbnRlZ2VyOwo+ICsgICAg YXVkaW9fcGFja2VkICAgICAgICAgID0gaW5wdXRfZm9ybWF0LT5tRm9ybWF0RmxhZ3MgJiAKPiBr QXVkaW9Gb3JtYXRGbGFnSXNQYWNrZWQ7Cj4gKyAgICBhdWRpb19ub25faW50ZXJsZWF2ZWQgPSBp bnB1dF9mb3JtYXQtPm1Gb3JtYXRGbGFncyAmIAo+IGtBdWRpb0Zvcm1hdEZsYWdJc05vbkludGVy bGVhdmVkOwo+ICsKPiArICAgIGN0eC0+aW5wdXRfYnl0ZXNfcGVyX3NhbXBsZSAgPSBpbnB1dF9m b3JtYXQtPm1CaXRzUGVyQ2hhbm5lbCA+PiAKPiAzOwo+ICsgICAgY3R4LT5vdXRwdXRfYnl0ZXNf cGVyX3NhbXBsZSA9IGN0eC0+aW5wdXRfYnl0ZXNfcGVyX3NhbXBsZTsKPiArICAgIGN0eC0+YXVk aW9fY2hhbm5lbHMgICAgICAgICAgPSBpbnB1dF9mb3JtYXQtPm1DaGFubmVsc1BlckZyYW1lOwo+ ICsKPiArICAgIGlmIChhdWRpb19ub25faW50ZXJsZWF2ZWQpIHsKPiArICAgICAgICBjdHgtPmF1 ZGlvX2J1ZmZlcnMgPSBpbnB1dF9mb3JtYXQtPm1DaGFubmVsc1BlckZyYW1lOwo+ICAgICB9IGVs c2Ugewo+IC0gICAgICAgIHVubG9ja19mcmFtZXMoY3R4KTsKPiAtICAgICAgICBhdl9sb2cocywg QVZfTE9HX0VSUk9SLCAiYXVkaW8gZm9ybWF0IGlzIG5vdCBzdXBwb3J0ZWRcbiIpOwo+IC0gICAg ICAgIHJldHVybiAxOwo+ICsgICAgICAgIGN0eC0+YXVkaW9fYnVmZmVycyA9IDE7Cj4gKyAgICB9 Cj4gKwo+ICsgICAgaWYgKGF1ZGlvX25vbl9pbnRlcmxlYXZlZCB8fCAhYXVkaW9fcGFja2VkKSB7 Cj4gKyAgICAgIG11c3RfY29udmVydCA9IDE7Cj4gKyAgICB9Cj4gKwo+ICsgICAgb3V0cHV0X2Zv cm1hdC5tQml0c1BlckNoYW5uZWwgICA9IGlucHV0X2Zvcm1hdC0+bUJpdHNQZXJDaGFubmVsOwo+ ICsgICAgb3V0cHV0X2Zvcm1hdC5tQ2hhbm5lbHNQZXJGcmFtZSA9IGN0eC0+YXVkaW9fY2hhbm5l bHM7Cj4gKyAgICBvdXRwdXRfZm9ybWF0Lm1GcmFtZXNQZXJQYWNrZXQgID0gMTsKPiArICAgIG91 dHB1dF9mb3JtYXQubUJ5dGVzUGVyRnJhbWUgICAgPSBvdXRwdXRfZm9ybWF0Lm1DaGFubmVsc1Bl ckZyYW1lIAo+ICogY3R4LT5pbnB1dF9ieXRlc19wZXJfc2FtcGxlOwo+ICsgICAgb3V0cHV0X2Zv cm1hdC5tQnl0ZXNQZXJQYWNrZXQgICA9IG91dHB1dF9mb3JtYXQubUZyYW1lc1BlclBhY2tldCAK PiAqIG91dHB1dF9mb3JtYXQubUJ5dGVzUGVyRnJhbWU7Cj4gKyAgICBvdXRwdXRfZm9ybWF0Lm1G b3JtYXRGbGFncyAgICAgID0ga0F1ZGlvRm9ybWF0RmxhZ0lzUGFja2VkIHwgCj4gYXVkaW9fYmU7 Cj4gKyAgICBvdXRwdXRfZm9ybWF0Lm1Gb3JtYXRJRCAgICAgICAgID0ga0F1ZGlvRm9ybWF0TGlu ZWFyUENNOwo+ICsgICAgb3V0cHV0X2Zvcm1hdC5tUmVzZXJ2ZWQgICAgICAgICA9IDA7Cj4gKyAg ICBvdXRwdXRfZm9ybWF0Lm1TYW1wbGVSYXRlICAgICAgID0gaW5wdXRfZm9ybWF0LT5tU2FtcGxl UmF0ZTsKPiArCj4gKyAgICBpZiAoYXVkaW9fZmxvYXQgJiYKPiArICAgICAgICBhdWRpb19iaXRz X3Blcl9zYW1wbGUgPT0gMzIpIHsKPiArICAgICAgICBzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19p ZCA9IGF1ZGlvX2JlID8gQVZfQ09ERUNfSURfUENNX0YzMkJFIAo+IDogQVZfQ09ERUNfSURfUENN X0YzMkxFOwo+ICsgICAgICAgIG91dHB1dF9mb3JtYXQubUZvcm1hdEZsYWdzIHw9IGtBdWRpb0Zv cm1hdEZsYWdJc0Zsb2F0Owo+ICsgICAgfSBlbHNlIGlmIChhdWRpb19mbG9hdCAmJgo+ICsgICAg ICAgIGF1ZGlvX2JpdHNfcGVyX3NhbXBsZSA9PSA2NCkgewo+ICsgICAgICAgIHN0cmVhbS0+Y29k ZWNwYXItPmNvZGVjX2lkID0gYXVkaW9fYmUgPyBBVl9DT0RFQ19JRF9QQ01fRjY0QkUgCj4gOiBB Vl9DT0RFQ19JRF9QQ01fRjY0TEU7Cj4gKyAgICAgICAgb3V0cHV0X2Zvcm1hdC5tRm9ybWF0Rmxh Z3MgfD0ga0F1ZGlvRm9ybWF0RmxhZ0lzRmxvYXQ7Cj4gKyAgICB9IGVsc2UgaWYgKGF1ZGlvX3Np Z25lZF9pbnRlZ2VyICYmCj4gKyAgICAgICAgYXVkaW9fYml0c19wZXJfc2FtcGxlID09IDgpIHsK PiArICAgICAgICBzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19pZCA9IEFWX0NPREVDX0lEX1BDTV9T ODsKPiArICAgICAgICBvdXRwdXRfZm9ybWF0Lm1Gb3JtYXRGbGFncyB8PSAKPiBrQXVkaW9Gb3Jt YXRGbGFnSXNTaWduZWRJbnRlZ2VyOwo+ICsgICAgfSBlbHNlIGlmIChhdWRpb19zaWduZWRfaW50 ZWdlciAmJgo+ICsgICAgICAgIGF1ZGlvX2JpdHNfcGVyX3NhbXBsZSA9PSAxNikgewo+ICsgICAg ICAgIHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkID0gYXVkaW9fYmUgPyBBVl9DT0RFQ19JRF9Q Q01fUzE2QkUgCj4gOiBBVl9DT0RFQ19JRF9QQ01fUzE2TEU7Cj4gKyAgICAgICAgb3V0cHV0X2Zv cm1hdC5tRm9ybWF0RmxhZ3MgfD0gCj4ga0F1ZGlvRm9ybWF0RmxhZ0lzU2lnbmVkSW50ZWdlcjsK PiArICAgIH0gZWxzZSBpZiAoYXVkaW9fc2lnbmVkX2ludGVnZXIgJiYKPiArICAgICAgICBhdWRp b19iaXRzX3Blcl9zYW1wbGUgPT0gMjQpIHsKPiArICAgICAgICBzdHJlYW0tPmNvZGVjcGFyLT5j b2RlY19pZCA9IGF1ZGlvX2JlID8gQVZfQ09ERUNfSURfUENNX1MyNEJFIAo+IDogQVZfQ09ERUNf SURfUENNX1MyNExFOwo+ICsgICAgICAgIG91dHB1dF9mb3JtYXQubUZvcm1hdEZsYWdzIHw9IAo+ IGtBdWRpb0Zvcm1hdEZsYWdJc1NpZ25lZEludGVnZXI7Cj4gKyAgICB9IGVsc2UgaWYgKGF1ZGlv X3NpZ25lZF9pbnRlZ2VyICYmCj4gKyAgICAgICAgYXVkaW9fYml0c19wZXJfc2FtcGxlID09IDMy KSB7Cj4gKyAgICAgICAgc3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQgPSBhdWRpb19iZSA/IEFW X0NPREVDX0lEX1BDTV9TMzJCRSAKPiA6IEFWX0NPREVDX0lEX1BDTV9TMzJMRTsKPiArICAgICAg ICBvdXRwdXRfZm9ybWF0Lm1Gb3JtYXRGbGFncyB8PSAKPiBrQXVkaW9Gb3JtYXRGbGFnSXNTaWdu ZWRJbnRlZ2VyOwo+ICsgICAgfSBlbHNlIGlmIChhdWRpb19zaWduZWRfaW50ZWdlciAmJgo+ICsg ICAgICAgIGF1ZGlvX2JpdHNfcGVyX3NhbXBsZSA9PSA2NCkgewo+ICsgICAgICAgIHN0cmVhbS0+ Y29kZWNwYXItPmNvZGVjX2lkID0gYXVkaW9fYmUgPyBBVl9DT0RFQ19JRF9QQ01fUzY0QkUgCj4g OiBBVl9DT0RFQ19JRF9QQ01fUzY0TEU7Cj4gKyAgICAgICAgb3V0cHV0X2Zvcm1hdC5tRm9ybWF0 RmxhZ3MgfD0gCj4ga0F1ZGlvRm9ybWF0RmxhZ0lzU2lnbmVkSW50ZWdlcjsKPiArICAgIH0gZWxz ZSB7Cj4gKyAgICAgICAgc3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQgPSBhdWRpb19iZSA/IEFW X0NPREVDX0lEX1BDTV9TMzJCRSAKPiA6IEFWX0NPREVDX0lEX1BDTV9TMzJMRTsKPiArICAgICAg ICBjdHgtPm91dHB1dF9ieXRlc19wZXJfc2FtcGxlID0gNDsKPiArICAgICAgICBvdXRwdXRfZm9y bWF0Lm1CaXRzUGVyQ2hhbm5lbCA9IDMyOwo+ICsgICAgICAgIG91dHB1dF9mb3JtYXQubUZvcm1h dEZsYWdzIHw9IAo+IGtBdWRpb0Zvcm1hdEZsYWdJc1NpZ25lZEludGVnZXI7Cj4gKyAgICAgICAg bXVzdF9jb252ZXJ0ID0gMTsKPiAgICAgfQo+Cj4gLSAgICBpZiAoY3R4LT5hdWRpb19ub25faW50 ZXJsZWF2ZWQpIHsKPiAtICAgICAgICBDTUJsb2NrQnVmZmVyUmVmIGJsb2NrX2J1ZmZlciA9IAo+ IENNU2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZlcihjdHgtPmN1cnJlbnRfYXVkaW9fZnJhbWUpOwo+ IC0gICAgICAgIGN0eC0+YXVkaW9fYnVmZmVyX3NpemUgICAgICAgID0gCj4gQ01CbG9ja0J1ZmZl ckdldERhdGFMZW5ndGgoYmxvY2tfYnVmZmVyKTsKPiAtICAgICAgICBjdHgtPmF1ZGlvX2J1ZmZl ciAgICAgICAgICAgICA9IAo+IGF2X21hbGxvYyhjdHgtPmF1ZGlvX2J1ZmZlcl9zaXplKTsKPiAt ICAgICAgICBpZiAoIWN0eC0+YXVkaW9fYnVmZmVyKSB7Cj4gKyAgICBpZiAobXVzdF9jb252ZXJ0 KSB7Cj4gKyAgICAgICAgT1NTdGF0dXMgcmV0ID0gQXVkaW9Db252ZXJ0ZXJOZXcoaW5wdXRfZm9y bWF0LCAKPiAmb3V0cHV0X2Zvcm1hdCwgJmN0eC0+YXVkaW9fY29udmVydGVyKTsKPiArICAgICAg ICBpZiAocmV0ICE9IG5vRXJyKSB7Cj4gICAgICAgICAgICAgdW5sb2NrX2ZyYW1lcyhjdHgpOwo+ IC0gICAgICAgICAgICBhdl9sb2cocywgQVZfTE9HX0VSUk9SLCAiZXJyb3IgYWxsb2NhdGluZyBh dWRpbyAKPiBidWZmZXJcbiIpOwo+ICsgICAgICAgICAgICBhdl9sb2cocywgQVZfTE9HX0VSUk9S LCAiRXJyb3Igd2hpbGUgYWxsb2NhdGluZyBhdWRpbyAKPiBjb252ZXJ0ZXJcbiIpOwo+ICAgICAg ICAgICAgIHJldHVybiAxOwo+ICAgICAgICAgfQo+ICAgICB9Cj4gQEAgLTEwNDgsNiArMTA4Nyw3 IEBAIHN0YXRpYyBpbnQgY29weV9jdnBpeGVsYnVmZmVyKEFWRm9ybWF0Q29udGV4dCAKPiAqcywK Pgo+IHN0YXRpYyBpbnQgYXZmX3JlYWRfcGFja2V0KEFWRm9ybWF0Q29udGV4dCAqcywgQVZQYWNr ZXQgKnBrdCkKPiB7Cj4gKyAgICBPU1N0YXR1cyByZXQ7Cj4gICAgIEFWRkNvbnRleHQqIGN0eCA9 IChBVkZDb250ZXh0KilzLT5wcml2X2RhdGE7Cj4KPiAgICAgZG8gewo+IEBAIC0xMDkxLDcgKzEx MzEsNyBAQCBzdGF0aWMgaW50IGF2Zl9yZWFkX3BhY2tldChBVkZvcm1hdENvbnRleHQgKnMsIAo+ IEFWUGFja2V0ICpwa3QpCj4gICAgICAgICAgICAgICAgIHN0YXR1cyA9IGNvcHlfY3ZwaXhlbGJ1 ZmZlcihzLCBpbWFnZV9idWZmZXIsIHBrdCk7Cj4gICAgICAgICAgICAgfSBlbHNlIHsKPiAgICAg ICAgICAgICAgICAgc3RhdHVzID0gMDsKPiAtICAgICAgICAgICAgICAgIE9TU3RhdHVzIHJldCA9 IAo+IENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzKGJsb2NrX2J1ZmZlciwgMCwgcGt0LT5zaXpl LCBwa3QtPmRhdGEpOwo+ICsgICAgICAgICAgICAgICAgcmV0ID0gQ01CbG9ja0J1ZmZlckNvcHlE YXRhQnl0ZXMoYmxvY2tfYnVmZmVyLCAwLCAKPiBwa3QtPnNpemUsIHBrdC0+ZGF0YSk7Cj4gICAg ICAgICAgICAgICAgIGlmIChyZXQgIT0ga0NNQmxvY2tCdWZmZXJOb0Vycikgewo+ICAgICAgICAg ICAgICAgICAgICAgc3RhdHVzID0gQVZFUlJPUihFSU8pOwo+ICAgICAgICAgICAgICAgICB9Cj4g QEAgLTExMDUsMjEgKzExNDUsNjAgQEAgc3RhdGljIGludCBhdmZfcmVhZF9wYWNrZXQoQVZGb3Jt YXRDb250ZXh0ICpzLCAKPiBBVlBhY2tldCAqcGt0KQo+ICAgICAgICAgICAgIH0KPiAgICAgICAg IH0gZWxzZSBpZiAoY3R4LT5jdXJyZW50X2F1ZGlvX2ZyYW1lICE9IG5pbCkgewo+ICAgICAgICAg ICAgIENNQmxvY2tCdWZmZXJSZWYgYmxvY2tfYnVmZmVyID0gCj4gQ01TYW1wbGVCdWZmZXJHZXRE YXRhQnVmZmVyKGN0eC0+Y3VycmVudF9hdWRpb19mcmFtZSk7Cj4gLSAgICAgICAgICAgIGludCBi bG9ja19idWZmZXJfc2l6ZSAgICAgICAgID0gCj4gQ01CbG9ja0J1ZmZlckdldERhdGFMZW5ndGgo YmxvY2tfYnVmZmVyKTsKPgo+IC0gICAgICAgICAgICBpZiAoIWJsb2NrX2J1ZmZlciB8fCAhYmxv Y2tfYnVmZmVyX3NpemUpIHsKPiAtICAgICAgICAgICAgICAgIHVubG9ja19mcmFtZXMoY3R4KTsK PiAtICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTyk7Cj4gLSAgICAgICAgICAgIH0K PiArICAgICAgICAgICAgc2l6ZV90IGlucHV0X3NpemUgPSAKPiBDTUJsb2NrQnVmZmVyR2V0RGF0 YUxlbmd0aChibG9ja19idWZmZXIpOwo+ICsgICAgICAgICAgICBpbnQgYnVmZmVyX3NpemUgPSBp bnB1dF9zaXplIC8gY3R4LT5hdWRpb19idWZmZXJzOwo+ICsgICAgICAgICAgICBpbnQgbmJfc2Ft cGxlcyA9IGlucHV0X3NpemUgLyAoY3R4LT5hdWRpb19jaGFubmVscyAqIAo+IGN0eC0+aW5wdXRf Ynl0ZXNfcGVyX3NhbXBsZSk7Cj4gKyAgICAgICAgICAgIGludCBvdXRwdXRfc2l6ZSA9IG5iX3Nh bXBsZXMgKiAKPiBjdHgtPm91dHB1dF9ieXRlc19wZXJfc2FtcGxlICogY3R4LT5hdWRpb19jaGFu bmVsczsKPgo+IC0gICAgICAgICAgICBpZiAoY3R4LT5hdWRpb19ub25faW50ZXJsZWF2ZWQgJiYg YmxvY2tfYnVmZmVyX3NpemUgPiAKPiBjdHgtPmF1ZGlvX2J1ZmZlcl9zaXplKSB7Cj4gLSAgICAg ICAgICAgICAgICB1bmxvY2tfZnJhbWVzKGN0eCk7Cj4gLSAgICAgICAgICAgICAgICByZXR1cm4g QVZFUlJPUl9CVUZGRVJfVE9PX1NNQUxMOwo+ICsgICAgICAgICAgICBzdGF0dXMgPSBhdl9uZXdf cGFja2V0KHBrdCwgb3V0cHV0X3NpemUpOwo+ICsgICAgICAgICAgICBpZiAoc3RhdHVzIDwgMCkg ewo+ICsgICAgICAgICAgICAgICAgQ0ZSZWxlYXNlKGF1ZGlvX2ZyYW1lKTsKPiArICAgICAgICAg ICAgICAgIHJldHVybiBzdGF0dXM7Cj4gICAgICAgICAgICAgfQo+Cj4gLSAgICAgICAgICAgIGlm IChhdl9uZXdfcGFja2V0KHBrdCwgYmxvY2tfYnVmZmVyX3NpemUpIDwgMCkgewo+IC0gICAgICAg ICAgICAgICAgdW5sb2NrX2ZyYW1lcyhjdHgpOwo+IC0gICAgICAgICAgICAgICAgcmV0dXJuIEFW RVJST1IoRUlPKTsKPiArICAgICAgICAgICAgaWYgKGN0eC0+YXVkaW9fY29udmVydGVyKSB7Cj4g KyAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRfYnVmZmVyX3NpemUgPSBvZmZzZXRvZihBdWRp b0J1ZmZlckxpc3QsIAo+IG1CdWZmZXJzWzBdKSArIChzaXplb2YoQXVkaW9CdWZmZXIpICogY3R4 LT5hdWRpb19idWZmZXJzKTsKPiArICAgICAgICAgICAgICAgIEF1ZGlvQnVmZmVyTGlzdCAqaW5w dXRfYnVmZmVyID0gCj4gYXZfbWFsbG9jKGlucHV0X2J1ZmZlcl9zaXplKTsKPiArCj4gKyAgICAg ICAgICAgICAgICBpbnB1dF9idWZmZXItPm1OdW1iZXJCdWZmZXJzID0gY3R4LT5hdWRpb19idWZm ZXJzOwo+ICsKPiArICAgICAgICAgICAgICAgIGZvciAoaW50IGMgPSAwOyBjIDwgY3R4LT5hdWRp b19idWZmZXJzOyBjKyspIHsKPiArICAgICAgICAgICAgICAgICAgICBpbnB1dF9idWZmZXItPm1C dWZmZXJzW2NdLm1OdW1iZXJDaGFubmVscyA9IDE7Cj4gKwo+ICsgICAgICAgICAgICAgICAgICAg IHJldCA9IENNQmxvY2tCdWZmZXJHZXREYXRhUG9pbnRlcihibG9ja19idWZmZXIsIGMgCj4gKiBi dWZmZXJfc2l6ZSwgKHNpemVfdCAqKSZpbnB1dF9idWZmZXItPm1CdWZmZXJzW2NdLm1EYXRhQnl0 ZVNpemUsIAo+IE5VTEwsICh2b2lkICopJmlucHV0X2J1ZmZlci0+bUJ1ZmZlcnNbY10ubURhdGEp Owo+ICsKPiArICAgICAgICAgICAgICAgICAgICBpZiAocmV0ICE9IGtDTUJsb2NrQnVmZmVyTm9F cnIpIHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgYXZfZnJlZShpbnB1dF9idWZmZXIpOwo+ ICsgICAgICAgICAgICAgICAgICAgICAgICB1bmxvY2tfZnJhbWVzKGN0eCk7Cj4gKyAgICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTyk7Cj4gKyAgICAgICAgICAgICAgICAg ICAgfQo+ICsgICAgICAgICAgICAgICAgfQo+ICsKPiArICAgICAgICAgICAgICAgIEF1ZGlvQnVm ZmVyTGlzdCBvdXRwdXRfYnVmZmVyID0gewo+ICsgICAgICAgICAgICAgICAgICAgLm1OdW1iZXJC dWZmZXJzID0gMSwKPiArICAgICAgICAgICAgICAgICAgIC5tQnVmZmVyc1swXSAgICA9IHsKPiAr ICAgICAgICAgICAgICAgICAgICAgICAubU51bWJlckNoYW5uZWxzID0gY3R4LT5hdWRpb19jaGFu bmVscywKPiArICAgICAgICAgICAgICAgICAgICAgICAubURhdGFCeXRlU2l6ZSAgID0gcGt0LT5z aXplLAo+ICsgICAgICAgICAgICAgICAgICAgICAgIC5tRGF0YSAgICAgICAgICAgPSBwa3QtPmRh dGEKPiArICAgICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgICAgIH07Cj4gKwo+ICsg ICAgICAgICAgICAgICAgcmV0ID0gCj4gQXVkaW9Db252ZXJ0ZXJDb252ZXJ0Q29tcGxleEJ1ZmZl cihjdHgtPmF1ZGlvX2NvbnZlcnRlciwgbmJfc2FtcGxlcywgCj4gaW5wdXRfYnVmZmVyLCAmb3V0 cHV0X2J1ZmZlcik7Cj4gKyAgICAgICAgICAgICAgICBhdl9mcmVlKGlucHV0X2J1ZmZlcik7Cj4g Kwo+ICsgICAgICAgICAgICAgICAgaWYgKHJldCAhPSBub0Vycikgewo+ICsgICAgICAgICAgICAg ICAgICAgIHVubG9ja19mcmFtZXMoY3R4KTsKPiArICAgICAgICAgICAgICAgICAgICByZXR1cm4g QVZFUlJPUihFSU8pOwo+ICsgICAgICAgICAgICAgICAgfQo+ICsKPiArICAgICAgICAgICAgICAg IHBrdC0+c2l6ZSA9IG91dHB1dF9idWZmZXIubUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZTsKPiAr ICAgICAgICAgICAgfSBlbHNlIHsKPiArICAgICAgICAgICAgICAgICByZXQgPSBDTUJsb2NrQnVm ZmVyQ29weURhdGFCeXRlcyhibG9ja19idWZmZXIsIDAsIAo+IHBrdC0+c2l6ZSwgcGt0LT5kYXRh KTsKPiArICAgICAgICAgICAgICAgICBpZiAocmV0ICE9IGtDTUJsb2NrQnVmZmVyTm9FcnIpIHsK PiArICAgICAgICAgICAgICAgICAgICAgdW5sb2NrX2ZyYW1lcyhjdHgpOwo+ICsgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFSU8pOwo+ICsgICAgICAgICAgICAgICAgIH0KPiAg ICAgICAgICAgICB9Cj4KPiAgICAgICAgICAgICBDTUl0ZW1Db3VudCBjb3VudDsKPiBAQCAtMTEz Myw1NCArMTIxMiwxMCBAQCBzdGF0aWMgaW50IGF2Zl9yZWFkX3BhY2tldChBVkZvcm1hdENvbnRl eHQgKnMsIAo+IEFWUGFja2V0ICpwa3QpCj4gICAgICAgICAgICAgcGt0LT5zdHJlYW1faW5kZXgg ID0gY3R4LT5hdWRpb19zdHJlYW1faW5kZXg7Cj4gICAgICAgICAgICAgcGt0LT5mbGFncyAgICAg ICAgfD0gQVZfUEtUX0ZMQUdfS0VZOwo+Cj4gLSAgICAgICAgICAgIGlmIChjdHgtPmF1ZGlvX25v bl9pbnRlcmxlYXZlZCkgewo+IC0gICAgICAgICAgICAgICAgaW50IHNhbXBsZSwgYywgc2hpZnQs IG51bV9zYW1wbGVzOwo+IC0KPiAtICAgICAgICAgICAgICAgIE9TU3RhdHVzIHJldCA9IAo+IENN QmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzKGJsb2NrX2J1ZmZlciwgMCwgcGt0LT5zaXplLCAKPiBj dHgtPmF1ZGlvX2J1ZmZlcik7Cj4gLSAgICAgICAgICAgICAgICBpZiAocmV0ICE9IGtDTUJsb2Nr QnVmZmVyTm9FcnIpIHsKPiAtICAgICAgICAgICAgICAgICAgICB1bmxvY2tfZnJhbWVzKGN0eCk7 Cj4gLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlPKTsKPiAtICAgICAgICAg ICAgICAgIH0KPiAtCj4gLSAgICAgICAgICAgICAgICBudW1fc2FtcGxlcyA9IHBrdC0+c2l6ZSAv IChjdHgtPmF1ZGlvX2NoYW5uZWxzICogCj4gKGN0eC0+YXVkaW9fYml0c19wZXJfc2FtcGxlID4+ IDMpKTsKPiAtCj4gLSAgICAgICAgICAgICAgICAvLyB0cmFuc2Zvcm0gZGVjb2RlZCBmcmFtZSBp bnRvIG91dHB1dCBmb3JtYXQKPiAtICAgICAgICAgICAgICAgICNkZWZpbmUgSU5URVJMRUFWRV9P VVRQVVQoYnBzKSAgICAgICAgICAgICAgICAgICAgICAgIAo+ICAgICAgICAgICAgICAgICAgXAo+ IC0gICAgICAgICAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCj4gICAgICAgICAgICAgICAgICBcCj4gLSAgICAgICAgICAgICAgICAg ICAgaW50IyNicHMjI190ICoqc3JjOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPiAg ICAgICAgICAgICAgICAgIFwKPiAtICAgICAgICAgICAgICAgICAgICBpbnQjI2JwcyMjX3QgKmRl c3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo+ICAgICAgICAgICAgICAgICAgXAo+ IC0gICAgICAgICAgICAgICAgICAgIHNyYyA9IGF2X21hbGxvYyhjdHgtPmF1ZGlvX2NoYW5uZWxz ICogCj4gc2l6ZW9mKGludCMjYnBzIyNfdCopKTsgICAgICBcCj4gLSAgICAgICAgICAgICAgICAg ICAgaWYgKCFzcmMpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPiAg ICAgICAgICAgICAgICAgIFwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgdW5sb2NrX2ZyYW1l cyhjdHgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIAo+ICAgICAgICAgICAgICAgICAgXAo+ IC0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFSU8pOyAgICAgICAgICAg ICAgICAgICAgICAgICAgCj4gICAgICAgICAgICAgICAgICBcCj4gLSAgICAgICAgICAgICAgICAg ICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPiAg ICAgICAgICAgICAgICAgIFwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo+ICAgICAgICAgICAgICAgICAgXAo+ IC0gICAgICAgICAgICAgICAgICAgIGZvciAoYyA9IDA7IGMgPCBjdHgtPmF1ZGlvX2NoYW5uZWxz OyBjKyspIHsgICAgICAgCj4gICAgICAgICAgICAgICAgICBcCj4gLSAgICAgICAgICAgICAgICAg ICAgICAgIHNyY1tjXSA9ICgoaW50IyNicHMjI190KiljdHgtPmF1ZGlvX2J1ZmZlcikgKyAKPiBj ICogbnVtX3NhbXBsZXM7IFwKPiAtICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo+ICAgICAgICAgICAgICAgICAgXAo+ IC0gICAgICAgICAgICAgICAgICAgIGRlc3QgID0gKGludCMjYnBzIyNfdCopcGt0LT5kYXRhOyAg ICAgICAgICAgICAgICAgCj4gICAgICAgICAgICAgICAgICBcCj4gLSAgICAgICAgICAgICAgICAg ICAgc2hpZnQgPSBicHMgLSBjdHgtPmF1ZGlvX2JpdHNfcGVyX3NhbXBsZTsgICAgICAgICAKPiAg ICAgICAgICAgICAgICAgIFwKPiAtICAgICAgICAgICAgICAgICAgICBmb3IgKHNhbXBsZSA9IDA7 IHNhbXBsZSA8IG51bV9zYW1wbGVzOyBzYW1wbGUrKykgIAo+ICAgICAgICAgICAgICAgICAgXAo+ IC0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGMgPSAwOyBjIDwgY3R4LT5hdWRpb19jaGFu bmVsczsgYysrKSAgICAgCj4gICAgICAgICAgICAgICAgICBcCj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAqZGVzdCsrID0gc3JjW2NdW3NhbXBsZV0gPDwgc2hpZnQ7ICAgICAgICAKPiAg ICAgICAgICAgICAgICAgIFwKPiAtICAgICAgICAgICAgICAgICAgICBhdl9mcmVlcCgmc3JjKTsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo+ICAgICAgICAgICAgICAgICAgXAo+ IC0gICAgICAgICAgICAgICAgfQo+IC0KPiAtICAgICAgICAgICAgICAgIGlmIChjdHgtPmF1ZGlv X2JpdHNfcGVyX3NhbXBsZSA8PSAxNikgewo+IC0gICAgICAgICAgICAgICAgICAgIElOVEVSTEVB VkVfT1VUUFVUKDE2KQo+IC0gICAgICAgICAgICAgICAgfSBlbHNlIHsKPiAtICAgICAgICAgICAg ICAgICAgICBJTlRFUkxFQVZFX09VVFBVVCgzMikKPiAtICAgICAgICAgICAgICAgIH0KPiAtICAg ICAgICAgICAgfSBlbHNlIHsKPiAtICAgICAgICAgICAgICAgIE9TU3RhdHVzIHJldCA9IAo+IENN QmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzKGJsb2NrX2J1ZmZlciwgMCwgcGt0LT5zaXplLCBwa3Qt PmRhdGEpOwo+IC0gICAgICAgICAgICAgICAgaWYgKHJldCAhPSBrQ01CbG9ja0J1ZmZlck5vRXJy KSB7Cj4gLSAgICAgICAgICAgICAgICAgICAgdW5sb2NrX2ZyYW1lcyhjdHgpOwo+IC0gICAgICAg ICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTyk7Cj4gLSAgICAgICAgICAgICAgICB9Cj4g LSAgICAgICAgICAgIH0KPiAtCj4gICAgICAgICAgICAgQ0ZSZWxlYXNlKGN0eC0+Y3VycmVudF9h dWRpb19mcmFtZSk7Cj4gICAgICAgICAgICAgY3R4LT5jdXJyZW50X2F1ZGlvX2ZyYW1lID0gbmls Owo+ICsKPiArICAgICAgICAgICAgdW5sb2NrX2ZyYW1lcyhjdHgpOwo+ICAgICAgICAgfSBlbHNl IHsKPiAgICAgICAgICAgICBwa3QtPmRhdGEgPSBOVUxMOwo+ICAgICAgICAgICAgIHVubG9ja19m cmFtZXMoY3R4KTsKPiAtLSAKPiAyLjMyLjAgKEFwcGxlIEdpdC0xMzIpCj4KPiBfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGZmbXBlZy1kZXZlbCBtYWls aW5nIGxpc3QKPiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwo+IGh0dHBzOi8vZmZtcGVnLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAo+Cj4gVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxp bmsgYWJvdmUsIG9yIGVtYWlsCj4gZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRo IHN1YmplY3QgInVuc3Vic2NyaWJlIi4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZt cGVnLm9yZwpodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwK ClRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwt cmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo=