From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <ffmpeg-devel-bounces@ffmpeg.org>
Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100])
	by master.gitmailbox.com (Postfix) with ESMTPS id D9D464D39D
	for <ffmpegdev@gitmailbox.com>; Thu, 17 Apr 2025 14:40:08 +0000 (UTC)
Received: from [127.0.1.1] (localhost [127.0.0.1])
	by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9E2B168B0EF;
	Thu, 17 Apr 2025 17:40:03 +0300 (EEST)
Received: from mail-wr1-f43.google.com (mail-wr1-f43.google.com
 [209.85.221.43])
 by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C7E42687C6A
 for <ffmpeg-devel@ffmpeg.org>; Thu, 17 Apr 2025 17:39:56 +0300 (EEST)
Received: by mail-wr1-f43.google.com with SMTP id
 ffacd0b85a97d-39c1ee0fd43so754336f8f.0
 for <ffmpeg-devel@ffmpeg.org>; Thu, 17 Apr 2025 07:39:56 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=spectre-music.com; s=google; t=1744900796; x=1745505596; darn=ffmpeg.org;
 h=content-transfer-encoding:mime-version:message-id:date:subject:cc
 :to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=ncgtg0cUDm+q00r+3NyuDSUfgBR1jRgz2qatNe6M4RY=;
 b=gQLMP2s6gGOYO0c5acPm8cSVYYPHQgkrxyAcKFczyoddWXOjpnfBPju37M+GkznKCh
 3fRcQXzUkNTcuCltAJTRDjWqUkNh96vtrIhBRZUp7nm4fZmj4HLxd/wenX2Ma3QCStqI
 v/X7kfoPkTeiz5/4Ii2AoBF+0TA/3biCLOHAg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1744900796; x=1745505596;
 h=content-transfer-encoding:mime-version:message-id:date:subject:cc
 :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
 :reply-to;
 bh=ncgtg0cUDm+q00r+3NyuDSUfgBR1jRgz2qatNe6M4RY=;
 b=TpLgRhg/vN/dsi0RVydVvyifeDAGcrx77UEMnd0Fyow4ru3PCSBvkxKgV2+bY929sF
 x27Ldv3rEwaRadd1uqM8Dda+eZjYrOc5LsSapva6echbbl/BQ5Ke1/0/wYptw8Nj3CTx
 3ciDUKnmIGNrJnvjbrkWR3XcmMEhs0Wm26qM0l0k4IcdE9U8X0Jz6cmtw9CvIZSTMeeS
 s88cWZ6Pv2Xagd1r8wcKRq9BHCUGBILgi6XIWF7CcYNnKlHXuwjrdCG37dVTt/oF1PEN
 edpeH/PtDXvXwO4gy9BtOEgGFN38g0yQXFIawhnwtswO/YYxBBuvHHfOQ1C+G1BJEEwO
 RGuw==
X-Gm-Message-State: AOJu0YwtIFuKotHkt6rBrp402JBPlHIm2QqNPzZI68rUlIhvVJditwUz
 ejN/8fktkgtZ9C90n8ZJLLNjI//UiDURBZCW4p/8sOcfvPSdXpzTNrHdUf4d1NLNcwAHppTnKjV
 c
X-Gm-Gg: ASbGncsdsmSGFBMuFg/31+EGbwagiNAEBQWtCsBJ6Ca/M1vZUKQhddLY2a2tPpCP9sY
 2Vzj0qBqFXKYxCh5f8wx8TfyBnoNNwYOoxuivG6poL1S0DcVAWme+2MANyondrU2MMqifal602P
 xBq/XH6uKw+UUtY8U9njkuyt2VOaddbRpeVUXO4ZLQLKUM9bq1BvnJQsIk4r8yK5FdCMmhJbldm
 soOwgUkZPXOlJabN9NLw478+p9C69GKlFbxbffEDBsiuBurmywEzc8xw/XFej1S0qkoWNYFy7hf
 3aLpEeT+HxZl9xzd9iBh7Ij0NOC4XDLgQ3ul7PiHTzI5+ZPlPt+BmhtobUwqIa1/ooXhb1CTolD
 UfsXU31IYxGoIKrT7hLCKQMj6/Xk79/VLUqET7rT9yvzMpxG1
X-Google-Smtp-Source: AGHT+IGrnl9zpi1qLXWV/ocUPPgGBsFI0rBFLAPbwXazBmjdGYGlQwGv5vaKji9yAhwa5ZKvmt7HZg==
X-Received: by 2002:a05:6000:250f:b0:39b:fa24:950a with SMTP id
 ffacd0b85a97d-39ee5b98d66mr5435560f8f.36.1744900795859; 
 Thu, 17 Apr 2025 07:39:55 -0700 (PDT)
Received: from localhost.localdomain
 (amontsouris-559-1-14-136.w90-24.abo.wanadoo.fr. [90.24.141.136])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-39eae97751fsm20200040f8f.41.2025.04.17.07.39.54
 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256);
 Thu, 17 Apr 2025 07:39:55 -0700 (PDT)
From: gkhayat@spectre-music.com
To: ffmpeg-devel@ffmpeg.org
Date: Thu, 17 Apr 2025 16:33:16 +0200
Message-ID: <20250417143524.48567-3-gkhayat@spectre-music.com>
X-Mailer: git-send-email 2.49.0
MIME-Version: 1.0
Subject: [FFmpeg-devel] [PATCH] libavfilter/ebur128: SIMD optimization
X-BeenThere: ffmpeg-devel@ffmpeg.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: FFmpeg development discussions and patches <ffmpeg-devel.ffmpeg.org>
List-Unsubscribe: <https://ffmpeg.org/mailman/options/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=unsubscribe>
List-Archive: <https://ffmpeg.org/pipermail/ffmpeg-devel>
List-Post: <mailto:ffmpeg-devel@ffmpeg.org>
List-Help: <mailto:ffmpeg-devel-request@ffmpeg.org?subject=help>
List-Subscribe: <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=subscribe>
Reply-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Cc: Guillaume Khayat <gkhayat@spectre-music.com>,
 Cesar Matheus <cesar.matheus@telecom-paris.fr>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: ffmpeg-devel-bounces@ffmpeg.org
Sender: "ffmpeg-devel" <ffmpeg-devel-bounces@ffmpeg.org>
Archived-At: <https://master.gitmailbox.com/ffmpegdev/20250417143524.48567-3-gkhayat@spectre-music.com/>
List-Archive: <https://master.gitmailbox.com/ffmpegdev/>
List-Post: <mailto:ffmpegdev@gitmailbox.com>

RnJvbTogR3VpbGxhdW1lIEtoYXlhdCA8Z2toYXlhdEBzcGVjdHJlLW11c2ljLmNvbT4KCkltcHJv
dmUgcGVyZm9ybWFuY2UgKCsxNyUpIG9mIGVidXJfMTI4IGZpbHRlciB1c2luZyBBVlgyIGFuZCBG
TUEgaW5zdHJ1Y3Rpb24gaW4gdGhlIGJvZHkgb2YgdGhlIGZpbHRlcl9mcmFtZSBmdW5jdGlvbi4K
CiMjIEJlbmNobWFyawoKVGVzdGVkIHdpdGggaHlwZXJmaW5lCgpoeXBlcmZpbmUgLS13YXJtdXAg
MiAiLi9mZm1wZWdfcmVmZXJlbmNlIC1pIH4vdGVzdC53YXYgLXZuIC1hZiBlYnVyMTI4PXBlYWs9
bm9uZTpmcmFtZWxvZz1xdWlldCAtZiBudWxsIC0iICIuL2ZmbXBlZ19hdnggLWkgfi90ZXN0Lndh
diAtdm4gLWFmIGVidXIxMjg9cGVhaz1ub25lOmZyYW1lbG9nPXF1aWV0IC1mIG51bGwgLSIKQmVu
Y2htYXJrIDE6IC4vZmZtcGVnX3JlZmVyZW5jZSAtaSB+L3Rlc3Qud2F2IC12biAtYWYgZWJ1cjEy
OD1wZWFrPW5vbmU6ZnJhbWVsb2c9cXVpZXQgLWYgbnVsbCAtCiAgVGltZSAobWVhbiDCsSDPgyk6
ICAgICAgNy4xMTggcyDCsSAgMC4wMzcgcyAgICBbVXNlcjogOS4xMTQgcywgU3lzdGVtOiAxLjAz
OCBzXQogIFJhbmdlIChtaW4g4oCmIG1heCk6ICAgIDcuMDczIHMg4oCmICA3LjE3NyBzICAgIDEw
IHJ1bnMKIApCZW5jaG1hcmsgMjogLi9mZm1wZWdfYXZ4IC1pIH4vdGVzdC53YXYgLXZuIC1hZiBl
YnVyMTI4PXBlYWs9bm9uZTpmcmFtZWxvZz1xdWlldCAtZiBudWxsIC0KICBUaW1lIChtZWFuIMKx
IM+DKTogICAgICA2LjA3MyBzIMKxICAwLjEwOCBzICAgIFtVc2VyOiA3LjkwMyBzLCBTeXN0ZW06
IDEuMDU4IHNdCiAgUmFuZ2UgKG1pbiDigKYgbWF4KTogICAgNS45NTUgcyDigKYgIDYuMzI3IHMg
ICAgMTAgcnVucwogClN1bW1hcnkKICAuL2ZmbXBlZ19hdnggLWkgfi90ZXN0LndhdiAtdm4gLWFm
IGVidXIxMjg9cGVhaz1ub25lOmZyYW1lbG9nPXF1aWV0IC1mIG51bGwgLSByYW4KICAgIDEuMTcg
wrEgMC4wMiB0aW1lcyBmYXN0ZXIgdGhhbiAuL2ZmbXBlZ19yZWZlcmVuY2UgLWkgfi90ZXN0Lndh
diAtdm4gLWFmIGVidXIxMjg9cGVhaz1ub25lOmZyYW1lbG9nPXF1aWV0IC1mIG51bGwgLQoKIyMg
VGVzdHMKCi0gYWxsIEZBVEUgdGVzdHMgcGFzcywgdGVzdGVkIG9uIERhcndpbi9hcm02NCBhbmQg
TGludXgveDg2XzY0IHcvIEFWWDIvRk1BIHN1cHBvcnQKLSBPbiBBVlgyL0ZNQS1jYXBhYmxlIHN5
c3RlbSwgYWxsIHRlc3QgZmlsZXMgZnJvbSB0aGUgRUJVIHlpZWxkIHRoZSBleGFjdCBzYW1lIG91
dHB1dCB2YWx1ZXMgKEkvTFJBKSBhZnRlciBhbmQgYmVmb3JlIG9wdGltaXphdGlvbi4gU2VlIGh0
dHBzOi8vdGVjaC5lYnUuY2gvcHVibGljYXRpb25zL2VidV9sb3VkbmVzc190ZXN0X3NldAoKRGlz
Y2xhaW1lcjogdGhpcyBpcyBteSBmaXJzdCBldmVyIHBhdGNoIHN1Ym1pc3Npb24gdG8gRkZtcGVn
LCBhbmQgZmlyc3QgZXZlciB0aW1lIHVzaW5nIGdpdCBzZW5kLWVtYWlsIHRvIHN1Ym1pdCBhIHBh
dGNoIGFueXdoZXJlLgoKU2lnbmVkLW9mZi1ieTogQ2VzYXIgTWF0aGV1cyA8Y2VzYXIubWF0aGV1
c0B0ZWxlY29tLXBhcmlzLmZyPgpTaWduZWQtb2ZmLWJ5OiBHdWlsbGF1bWUgS2hheWF0IDxna2hh
eWF0QHNwZWN0cmUtbXVzaWMuY29tPgotLS0KIGxpYmF2ZmlsdGVyL2ZfZWJ1cjEyOC5jIHwgMjQ2
ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0KIDEgZmlsZSBjaGFuZ2Vk
LCAyMTQgaW5zZXJ0aW9ucygrKSwgMzIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliYXZm
aWx0ZXIvZl9lYnVyMTI4LmMgYi9saWJhdmZpbHRlci9mX2VidXIxMjguYwppbmRleCA3NjhmMDYy
YmFjLi5lMzA1YjBhM2NlIDEwMDY0NAotLS0gYS9saWJhdmZpbHRlci9mX2VidXIxMjguYworKysg
Yi9saWJhdmZpbHRlci9mX2VidXIxMjguYwpAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSA8
ZmxvYXQuaD4KICNpbmNsdWRlIDxtYXRoLmg+Ci0KKyNpbmNsdWRlICJsaWJhdnV0aWwvaW50bWF0
aC5oIgogI2luY2x1ZGUgImxpYmF2dXRpbC9hdmFzc2VydC5oIgogI2luY2x1ZGUgImxpYmF2dXRp
bC9jaGFubmVsX2xheW91dC5oIgogI2luY2x1ZGUgImxpYmF2dXRpbC9kaWN0LmgiCkBAIC0xOTks
NyArMTk5LDcgQEAgc3RhdGljIGNvbnN0IEFWT3B0aW9uIGVidXIxMjhfb3B0aW9uc1tdID0gewog
fTsKIAogQVZGSUxURVJfREVGSU5FX0NMQVNTKGVidXIxMjgpOwotCisjZGVmaW5lIE1JTihhLCBi
KSAoKGEpIDwgKGIpID8gKGEpIDogKGIpKQogc3RhdGljIGNvbnN0IHVpbnQ4X3QgZ3JhcGhfY29s
b3JzW10gPSB7CiAgICAgMHhkZCwgMHg2NiwgMHg2NiwgICAvLyB2YWx1ZSBhYm92ZSAxTFUgbm9u
IHJlYWNoZWQgYmVsb3cgLTFMVSAoaW1wb3NzaWJsZSkKICAgICAweDY2LCAweDY2LCAweGRkLCAg
IC8vIHZhbHVlIGJlbG93IDFMVSBub24gcmVhY2hlZCBiZWxvdyAtMUxVCkBAIC02MjgsMTMgKzYy
OCw2MSBAQCBzdGF0aWMgaW50IGdhdGVfdXBkYXRlKHN0cnVjdCBpbnRlZ3JhdG9yICppbnRlZywg
ZG91YmxlIHBvd2VyLAogCiBzdGF0aWMgaW50IGZpbHRlcl9mcmFtZShBVkZpbHRlckxpbmsgKmlu
bGluaywgQVZGcmFtZSAqaW5zYW1wbGVzKQogewotICAgIGludCBpLCBjaCwgaWR4X2luc2FtcGxl
LCByZXQ7CisKKyAgICBpbnQgaSwgY2gsIGlkeF9pbnNhbXBsZSwgcmV0LGJpbl9pZF80MDAsYmlu
X2lkXzMwMDA7CiAgICAgQVZGaWx0ZXJDb250ZXh0ICpjdHggPSBpbmxpbmstPmRzdDsKICAgICBF
QlVSMTI4Q29udGV4dCAqZWJ1cjEyOCA9IGN0eC0+cHJpdjsKICAgICBjb25zdCBpbnQgbmJfY2hh
bm5lbHMgPSBlYnVyMTI4LT5uYl9jaGFubmVsczsKICAgICBjb25zdCBpbnQgbmJfc2FtcGxlcyAg
PSBpbnNhbXBsZXMtPm5iX3NhbXBsZXM7CiAgICAgY29uc3QgZG91YmxlICpzYW1wbGVzID0gKGRv
dWJsZSAqKWluc2FtcGxlcy0+ZGF0YVswXTsKICAgICBBVkZyYW1lICpwaWM7CisgICAgICAgIAor
I2lmIEhBVkVfQVZYMl9FWFRFUk5BTCAmJiBIQVZFX0FWWDIKKyAgICAgICAgZG91YmxlIGJpbls0
XTsKKyAgICAgICAgX19tMjU2ZCBwcmVfYl8wLHByZV9iXzEscHJlX2JfMixwcmVfYV8xLHByZV9h
XzIscmxiX2JfMCxybGJfYl8xLHJsYl9iXzIscmxiX2FfMSxybGJfYV8yLHgxLHgyLHgwLHkxLHky
LHkwLHoxLHoyLHowOyAvLworCisgICAgICAgIC8qKgorICAgICAgICAgKiBTZXQgZWFjaCBjb2Vl
ZmljaWVudHMgdmFsdWUgb2YgcHJlX2IscHJlX2EscmxiX2IsIHJsYl9hIGFzIHZlY3RvciB2YXJp
YWJsZSBvZiBzaXplIDQsIGVhY2ggZWxlbWVudAorICAgICAgICAgKiBvZiB0aGUgdmVjdG9ycyBj
b3JyZXNwb25kcyB0byBhIGNoYW5uZWwsIGhlcmUgd2UgY29kZWQgdGhlIGNhc2Ugd2hlcmUgdGhl
cmUgaXMgMiBjaGFubmVsIHRvIGRlYWwgd2l0aCwgY2FzZSB3aGVyZSBuYl9jaGFubmVsID0zIG9y
IAorICAgICAgICAgKiA0IGNhbiBlYXNpbHkgYmUgaW1wbGVtZW50ZWQgZm9sbG93aW5nIHRoZSBl
eGFjdCBzYW1lIG1ldGhvZG9sb2d5CisgICAgICAgICAqLworCisgICAgICAgIC8vIENhc2Ugd2hl
cmUgbmJfY2hhbm5lbCA9IDMgOiBwcmVfYl8wID0gX21tMjU2X3NldHJfcHMoZWJ1cjEyOC0+cHJl
X2JbMF0sZWJ1cjEyOC0+cHJlX2JbMF0sIGVidXIxMjgtPnByZV9iWzBdLCAwLjApOworICAgICAg
ICBiaW5bMF0gPSAwLjA7CisgICAgICAgIGJpblsxXSA9IDAuMDsKKyAgICAgICAgYmluWzJdID0g
MC4wOworICAgICAgICBiaW5bM10gPSAwLjA7CisKKyAgICAgICAgLy8gTG9hZCBwcmVfYiBjb2Vm
ZmljaWVudHMgaW4gMyA0KjY0IGJpdHMgdmVjdG9yCisgICAgICAgIHByZV9iXzAgPSBfbW0yNTZf
c2V0MV9wZChlYnVyMTI4LT5wcmVfYlswXSk7CisgICAgICAgIHByZV9iXzEgPSBfbW0yNTZfc2V0
MV9wZChlYnVyMTI4LT5wcmVfYlsxXSk7CisgICAgICAgIHByZV9iXzIgPSBfbW0yNTZfc2V0MV9w
ZChlYnVyMTI4LT5wcmVfYlsyXSk7CisKKyAgICAgICAgLy8gTG9hZCBwcmVfYSBjb2VmZmljaWVu
dHMgaW4gMiA0KjY0IGJpdHMgdmVjdG9yIHByZV9hXzAgaXMgbm90IHVzZWQgaGVyZSBzbyBubyBu
ZWVkIHRvIGxhZCBpdAorICAgICAgICBwcmVfYV8xID0gX21tMjU2X3NldDFfcGQoZWJ1cjEyOC0+
cHJlX2FbMV0pOworICAgICAgICBwcmVfYV8yID0gX21tMjU2X3NldDFfcGQoZWJ1cjEyOC0+cHJl
X2FbMl0pOworCisgICAgICAgIC8vIExvYWQgcmxiX2IgCisgICAgICAgIHJsYl9iXzAgPSBfbW0y
NTZfc2V0MV9wZChlYnVyMTI4LT5ybGJfYlswXSk7CisgICAgICAgIHJsYl9iXzEgPSBfbW0yNTZf
c2V0MV9wZChlYnVyMTI4LT5ybGJfYlsxXSk7CisgICAgICAgIHJsYl9iXzIgPSBfbW0yNTZfc2V0
MV9wZChlYnVyMTI4LT5ybGJfYlsyXSk7CisKKyAgICAgICAgLy8gTG9hZCBybGJfYQorICAgICAg
ICBybGJfYV8xID0gX21tMjU2X3NldDFfcGQoZWJ1cjEyOC0+cmxiX2FbMV0pOworICAgICAgICBy
bGJfYV8yID0gX21tMjU2X3NldDFfcGQoZWJ1cjEyOC0+cmxiX2FbMl0pOworCisgICAgICAgIC8v
IEF0IHRoZSBzdGFydCBhbGwgdGhlIGJ1ZmZlciBmaWx0ZXIgYXJlIHNldCBhdCAwIGluIHRoZSBz
dGFydAorICAgICAgICB4MSA9IF9tbTI1Nl9zZXQxX3BkKDAuMCk7CisgICAgICAgIHgyID0gX21t
MjU2X3NldDFfcGQoMC4wKTsKKworICAgICAgICB5MCA9IF9tbTI1Nl9zZXQxX3BkKDAuMCk7Cisg
ICAgICAgIHkxID0gX21tMjU2X3NldDFfcGQoMC4wKTsKKyAgICAgICAgeTIgPSBfbW0yNTZfc2V0
MV9wZCgwLjApOworCisgICAgICAgIHowID1fbW0yNTZfc2V0MV9wZCgwLjApOworICAgICAgICB6
MSA9IF9tbTI1Nl9zZXQxX3BkKDAuMCk7CisgICAgICAgIHoyID0gX21tMjU2X3NldDFfcGQoMC4w
KTsKKyNlbmRpZgogCiAjaWYgQ09ORklHX1NXUkVTQU1QTEUKICAgICBpZiAoZWJ1cjEyOC0+cGVh
a19tb2RlICYgUEVBS19NT0RFX1RSVUVfUEVBS1MgJiYgZWJ1cjEyOC0+aWR4X2luc2FtcGxlID09
IDApIHsKQEAgLTY1Nyw4ICs3MDUsOCBAQCBzdGF0aWMgaW50IGZpbHRlcl9mcmFtZShBVkZpbHRl
ckxpbmsgKmlubGluaywgQVZGcmFtZSAqaW5zYW1wbGVzKQogI2VuZGlmCiAKICAgICBmb3IgKGlk
eF9pbnNhbXBsZSA9IGVidXIxMjgtPmlkeF9pbnNhbXBsZTsgaWR4X2luc2FtcGxlIDwgbmJfc2Ft
cGxlczsgaWR4X2luc2FtcGxlKyspIHsKLSAgICAgICAgY29uc3QgaW50IGJpbl9pZF80MDAgID0g
ZWJ1cjEyOC0+aTQwMC5jYWNoZV9wb3M7Ci0gICAgICAgIGNvbnN0IGludCBiaW5faWRfMzAwMCA9
IGVidXIxMjgtPmkzMDAwLmNhY2hlX3BvczsKKyAgICAgICAgYmluX2lkXzQwMCAgPSBlYnVyMTI4
LT5pNDAwLmNhY2hlX3BvczsKKyAgICAgICAgYmluX2lkXzMwMDAgPSBlYnVyMTI4LT5pMzAwMC5j
YWNoZV9wb3M7CiAKICNkZWZpbmUgTU9WRV9UT19ORVhUX0NBQ0hFRF9FTlRSWSh0aW1lKSBkbyB7
ICAgICAgICAgICAgICAgIFwKICAgICBlYnVyMTI4LT5pIyN0aW1lLmNhY2hlX3BvcysrOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTY3MSw0NiArNzE5LDE4MCBAQCBzdGF0aWMgaW50
IGZpbHRlcl9mcmFtZShBVkZpbHRlckxpbmsgKmlubGluaywgQVZGcmFtZSAqaW5zYW1wbGVzKQog
CiAgICAgICAgIE1PVkVfVE9fTkVYVF9DQUNIRURfRU5UUlkoNDAwKTsKICAgICAgICAgTU9WRV9U
T19ORVhUX0NBQ0hFRF9FTlRSWSgzMDAwKTsKKyAgICAgICAgCisjaWYgSEFWRV9BVlgyX0VYVEVS
TkFMICYmIEhBVkVfQVZYMgorICAgICAgICAvLyBQZXJmb3JtcyBmaWx0ZXIgY29tcHV0YXRpb24g
aW4gcGFyYWxsZWwgZm9yIHRoZSBmaXJzdCA0IGNoYW5uZWxzIG9mIHRoZSBhdWRpbyBmaWxlCisg
ICAgICAgIGZvciAoY2ggPSAwOyBjaCA8IE1JTig0LG5iX2NoYW5uZWxzKTsgY2grKykgeworICAg
ICAgICAgICAgaWYgKGVidXIxMjgtPnBlYWtfbW9kZSAmIFBFQUtfTU9ERV9TQU1QTEVTX1BFQUtT
KXsKKyAgICAgICAgICAgICAgICBlYnVyMTI4LT5zYW1wbGVfcGVha3NbY2hdID0gRkZNQVgoZWJ1
cjEyOC0+c2FtcGxlX3BlYWtzWzBdLCBmYWJzKHNhbXBsZXNbaWR4X2luc2FtcGxlICogbmJfY2hh
bm5lbHMgXSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJpbltjaF0gPSBzYW1w
bGVzW2lkeF9pbnNhbXBsZSAqIG5iX2NoYW5uZWxzICtjaCBdOworICAgICAgICB9CisKKyAgICAg
ICAgLy8gSW5pdGlhbGlzZSB4MAorICAgICAgICB4MCA9IF9tbTI1Nl9zZXRyX3BkKGJpblswXSxi
aW5bMV0sIGJpblsyXSxiaW5bM10pOyAgCisgICAgICAgIHkyID0geTE7CisgICAgICAgIHkxID0g
eTA7CisgICAgICAgIHkwID0gX21tMjU2X2ZtYWRkX3BkKHgwLHByZV9iXzAsX21tMjU2X2ZtYWRk
X3BkKHgxLHByZV9iXzEsX21tMjU2X2ZtYWRkX3BkKHgyLHByZV9iXzIsX21tMjU2X2ZubXN1Yl9w
ZCh5MSxwcmVfYV8xLF9tbTI1Nl9tdWxfcGQoeTIscHJlX2FfMikpKSkpOworCisKKyAgICAgICAg
eDIgPSB4MTsKKyAgICAgICAgeDEgPSB4MDsKKworICAgICAgICB6MiA9IHoxOworICAgICAgICB6
MSA9IHowOworCisgICAgICAgIHowID0gX21tMjU2X2ZtYWRkX3BkKHkwLHJsYl9iXzAsX21tMjU2
X2ZtYWRkX3BkKHkxLHJsYl9iXzEsX21tMjU2X2ZtYWRkX3BkKHkyLHJsYl9iXzIsX21tMjU2X2Zu
bXN1Yl9wZCh6MSxybGJfYV8xLF9tbTI1Nl9tdWxfcGQoejIscmxiX2FfMikpKSkpOworICAgICAg
ICAgICAKKworICAgICAgICAvLyBSZXRyaWV2ZSB0aGUgZmlsdGVyZWQgdmFsdWVzIHN0b3JlZCBp
biBaMCwgYmluW2ldIGdldHMgdGhlIHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGNoYW5uZWwg
aSAgICAgIAorICAgICAgICBfbW0yNTZfc3RvcmVfcGQoYmluLCBfbW0yNTZfbXVsX3BkKHowLCB6
MCkpOworCisKKworICAgICAgICAvKioKKyAgICAgICAgICogQWRkIHRoZSBuZXcgdmFsdWUsIGFu
ZCBsaW1pdCB0aGUgc3VtIHRvIHRoZSBjYWNoZSBzaXplICg0MDBtcyBvciAzcykKKyAgICAgICAg
ICogYnkgcmVtb3ZpbmcgdGhlIG9sZGVzdCBvbmUKKyAgICAgICAgICogdXBkYXRlIHN1bSBhbmQg
Y2FjaGUsIGRlbWFuZGluZyBvbiB0aGUgbnVtYmVyIG9mIGNoYW5uZWwKKyAgICAgICAgICovCisg
ICAgICAgIHN3aXRjaChuYl9jaGFubmVscyl7CisgICAgICAgICAgICBjYXNlIDE6IAorCisgICAg
ICAgICAgICAgICAgZWJ1cjEyOC0+aTQwMC5zdW0gWzBdID0gZWJ1cjEyOC0+aTQwMC5zdW0gWzBd
ICsgYmluWzBdIC0gZWJ1cjEyOC0+aTQwMC5jYWNoZSBbMF1bYmluX2lkXzQwMF07CisgICAgICAg
ICAgICAgICAgZWJ1cjEyOC0+aTMwMDAuc3VtWzBdID0gZWJ1cjEyOC0+aTMwMDAuc3VtWzBdICsg
YmluWzBdIC0gZWJ1cjEyOC0+aTMwMDAuY2FjaGVbMF1bYmluX2lkXzMwMDBdOworICAgICAgICAg
ICAgICAgIGVidXIxMjgtPmk0MDAuY2FjaGUgWzBdW2Jpbl9pZF80MDAgXSA9IGJpblswXTsKKyAg
ICAgICAgICAgICAgICBlYnVyMTI4LT5pMzAwMC5jYWNoZVswXVtiaW5faWRfMzAwMF0gPSBiaW5b
MF07CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDI6IAorCisgICAg
ICAgICAgICAgICAgZWJ1cjEyOC0+aTQwMC5zdW0gWzBdID0gZWJ1cjEyOC0+aTQwMC5zdW0gWzBd
ICsgYmluWzBdIC0gZWJ1cjEyOC0+aTQwMC5jYWNoZSBbMF1bYmluX2lkXzQwMF07CisgICAgICAg
ICAgICAgICAgZWJ1cjEyOC0+aTMwMDAuc3VtWzBdID0gZWJ1cjEyOC0+aTMwMDAuc3VtWzBdICsg
YmluWzBdIC0gZWJ1cjEyOC0+aTMwMDAuY2FjaGVbMF1bYmluX2lkXzMwMDBdOworCisgICAgICAg
ICAgICAgICAgZWJ1cjEyOC0+aTQwMC5jYWNoZSBbMF1bYmluX2lkXzQwMCBdID0gYmluWzBdOwor
ICAgICAgICAgICAgICAgIGVidXIxMjgtPmkzMDAwLmNhY2hlWzBdW2Jpbl9pZF8zMDAwXSA9IGJp
blswXTsKKworICAgICAgICAgICAgICAgIGVidXIxMjgtPmk0MDAuc3VtIFsxXSA9IGVidXIxMjgt
Pmk0MDAuc3VtIFsxXSArIGJpblsxXSAtIGVidXIxMjgtPmk0MDAuY2FjaGUgWzFdW2Jpbl9pZF80
MDBdOworICAgICAgICAgICAgICAgIGVidXIxMjgtPmkzMDAwLnN1bVsxXSA9IGVidXIxMjgtPmkz
MDAwLnN1bVsxXSArIGJpblsxXSAtIGVidXIxMjgtPmkzMDAwLmNhY2hlWzFdW2Jpbl9pZF8zMDAw
XTsKIAotICAgICAgICBmb3IgKGNoID0gMDsgY2ggPCBuYl9jaGFubmVsczsgY2grKykgewotICAg
ICAgICAgICAgZG91YmxlIGJpbjsKIAorICAgICAgICAgICAgICAgIGVidXIxMjgtPmk0MDAuY2Fj
aGUgWzFdW2Jpbl9pZF80MDAgXSA9IGJpblsxXTsKKyAgICAgICAgICAgICAgICBlYnVyMTI4LT5p
MzAwMC5jYWNoZVsxXVtiaW5faWRfMzAwMF0gPSBiaW5bMV07CisgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgIGNhc2UgMzoKKworICAgICAgICAgICAgICAgIGVidXIxMjgtPmk0
MDAuc3VtIFswXSA9IGVidXIxMjgtPmk0MDAuc3VtIFswXSArIGJpblswXSAtIGVidXIxMjgtPmk0
MDAuY2FjaGUgWzBdW2Jpbl9pZF80MDBdOworICAgICAgICAgICAgICAgIGVidXIxMjgtPmkzMDAw
LnN1bVswXSA9IGVidXIxMjgtPmkzMDAwLnN1bVswXSArIGJpblswXSAtIGVidXIxMjgtPmkzMDAw
LmNhY2hlWzBdW2Jpbl9pZF8zMDAwXTsKKyAgICAgICAgICAgICAgICBlYnVyMTI4LT5pNDAwLmNh
Y2hlIFswXVtiaW5faWRfNDAwIF0gPSBiaW5bMF07CisgICAgICAgICAgICAgICAgZWJ1cjEyOC0+
aTMwMDAuY2FjaGVbMF1bYmluX2lkXzMwMDBdID0gYmluWzBdOworCisgICAgICAgICAgICAgICAg
ZWJ1cjEyOC0+aTQwMC5zdW0gWzFdID0gZWJ1cjEyOC0+aTQwMC5zdW0gWzFdICsgYmluWzFdIC0g
ZWJ1cjEyOC0+aTQwMC5jYWNoZSBbMV1bYmluX2lkXzQwMF07CisgICAgICAgICAgICAgICAgZWJ1
cjEyOC0+aTMwMDAuc3VtWzFdID0gZWJ1cjEyOC0+aTMwMDAuc3VtWzFdICsgYmluWzFdIC0gZWJ1
cjEyOC0+aTMwMDAuY2FjaGVbMV1bYmluX2lkXzMwMDBdOworICAgICAgICAgICAgICAgIGVidXIx
MjgtPmk0MDAuY2FjaGUgWzFdW2Jpbl9pZF80MDAgXSA9IGJpblsxXTsKKyAgICAgICAgICAgICAg
ICBlYnVyMTI4LT5pMzAwMC5jYWNoZVsxXVtiaW5faWRfMzAwMF0gPSBiaW5bMV07CisKKyAgICAg
ICAgICAgICAgICBlYnVyMTI4LT5pNDAwLnN1bSBbMl0gPSBlYnVyMTI4LT5pNDAwLnN1bSBbMl0g
KyBiaW5bMl0gLSBlYnVyMTI4LT5pNDAwLmNhY2hlIFsyXVtiaW5faWRfNDAwXTsKKyAgICAgICAg
ICAgICAgICBlYnVyMTI4LT5pMzAwMC5zdW1bMl0gPSBlYnVyMTI4LT5pMzAwMC5zdW1bMl0gKyBi
aW5bMl0gLSBlYnVyMTI4LT5pMzAwMC5jYWNoZVsyXVtiaW5faWRfMzAwMF07CisgICAgICAgICAg
ICAgICAgZWJ1cjEyOC0+aTQwMC5jYWNoZSBbMl1bYmluX2lkXzQwMCBdID0gYmluWzJdOworICAg
ICAgICAgICAgICAgIGVidXIxMjgtPmkzMDAwLmNhY2hlWzJdW2Jpbl9pZF8zMDAwXSA9IGJpblsy
XTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgZGVmYXVsdCA6CisgICAg
ICAgICAgICAgICAgZWJ1cjEyOC0+aTQwMC5zdW1bMF0gPSBlYnVyMTI4LT5pNDAwLnN1bSBbMF0g
KyBiaW5bMF0gLSBlYnVyMTI4LT5pNDAwLmNhY2hlIFswXVtiaW5faWRfNDAwXTsKKyAgICAgICAg
ICAgICAgICBlYnVyMTI4LT5pMzAwMC5zdW1bMF0gPSBlYnVyMTI4LT5pMzAwMC5zdW1bMF0gKyBi
aW5bMF0gLSBlYnVyMTI4LT5pMzAwMC5jYWNoZVswXVtiaW5faWRfMzAwMF07CisgICAgICAgICAg
ICAgICAgZWJ1cjEyOC0+aTQwMC5jYWNoZVswXVtiaW5faWRfNDAwIF0gPSBiaW5bMF07CisgICAg
ICAgICAgICAgICAgZWJ1cjEyOC0+aTMwMDAuY2FjaGVbMF1bYmluX2lkXzMwMDBdID0gYmluWzBd
OworCisgICAgICAgICAgICAgICAgZWJ1cjEyOC0+aTQwMC5zdW1bMV0gPSBlYnVyMTI4LT5pNDAw
LnN1bSBbMV0gKyBiaW5bMV0gLSBlYnVyMTI4LT5pNDAwLmNhY2hlIFsxXVtiaW5faWRfNDAwXTsK
KyAgICAgICAgICAgICAgICBlYnVyMTI4LT5pMzAwMC5zdW1bMV0gPSBlYnVyMTI4LT5pMzAwMC5z
dW1bMV0gKyBiaW5bMV0gLSBlYnVyMTI4LT5pMzAwMC5jYWNoZVsxXVtiaW5faWRfMzAwMF07Cisg
ICAgICAgICAgICAgICAgZWJ1cjEyOC0+aTQwMC5jYWNoZVsxXVtiaW5faWRfNDAwIF0gPSBiaW5b
MV07CisgICAgICAgICAgICAgICAgZWJ1cjEyOC0+aTMwMDAuY2FjaGVbMV1bYmluX2lkXzMwMDBd
ID0gYmluWzFdOworCisgICAgICAgICAgICAgICAgZWJ1cjEyOC0+aTQwMC5zdW1bMl0gPSBlYnVy
MTI4LT5pNDAwLnN1bSBbMl0gKyBiaW5bMl0gLSBlYnVyMTI4LT5pNDAwLmNhY2hlIFsyXVtiaW5f
aWRfNDAwXTsKKyAgICAgICAgICAgICAgICBlYnVyMTI4LT5pMzAwMC5zdW1bMl0gPSBlYnVyMTI4
LT5pMzAwMC5zdW1bMl0gKyBiaW5bMl0gLSBlYnVyMTI4LT5pMzAwMC5jYWNoZVsyXVtiaW5faWRf
MzAwMF07CisgICAgICAgICAgICAgICAgZWJ1cjEyOC0+aTQwMC5jYWNoZVsyXVtiaW5faWRfNDAw
IF0gPSBiaW5bMl07CisgICAgICAgICAgICAgICAgZWJ1cjEyOC0+aTMwMDAuY2FjaGVbMl1bYmlu
X2lkXzMwMDBdID0gYmluWzJdOworCisgICAgICAgICAgICAgICAgZWJ1cjEyOC0+aTQwMC5zdW1b
M10gPSBlYnVyMTI4LT5pNDAwLnN1bSBbM10gKyBiaW5bM10gLSBlYnVyMTI4LT5pNDAwLmNhY2hl
IFszXVtiaW5faWRfNDAwXTsKKyAgICAgICAgICAgICAgICBlYnVyMTI4LT5pMzAwMC5zdW1bM10g
PSBlYnVyMTI4LT5pMzAwMC5zdW1bM10gKyBiaW5bM10gLSBlYnVyMTI4LT5pMzAwMC5jYWNoZVsz
XVtiaW5faWRfMzAwMF07CisgICAgICAgICAgICAgICAgZWJ1cjEyOC0+aTQwMC5jYWNoZSBbM11b
YmluX2lkXzQwMCBdID0gYmluWzNdOworICAgICAgICAgICAgICAgIGVidXIxMjgtPmkzMDAwLmNh
Y2hlWzNdW2Jpbl9pZF8zMDAwXSA9IGJpblszXTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICAvLyBVc2UgdGhlIGNsYXNzaWMgdmVyc2lvbiB0byBjb21wdXRlIGRh
dGEgZnJvbSB0aGUgcmVtYWluaW5ncyBjaGFubmVscworICAgICAgICBmb3IgKGNoID0gNDsgY2gg
PCBuYl9jaGFubmVsczsgY2grKykgeworICAgICAgICAgICAgZG91YmxlIGJpbjI7CiAgICAgICAg
ICAgICBpZiAoZWJ1cjEyOC0+cGVha19tb2RlICYgUEVBS19NT0RFX1NBTVBMRVNfUEVBS1MpCiAg
ICAgICAgICAgICAgICAgZWJ1cjEyOC0+c2FtcGxlX3BlYWtzW2NoXSA9IEZGTUFYKGVidXIxMjgt
PnNhbXBsZV9wZWFrc1tjaF0sIGZhYnMoc2FtcGxlc1tpZHhfaW5zYW1wbGUgKiBuYl9jaGFubmVs
cyArIGNoXSkpOwogCiAgICAgICAgICAgICBlYnVyMTI4LT54W2NoICogM10gPSBzYW1wbGVzW2lk
eF9pbnNhbXBsZSAqIG5iX2NoYW5uZWxzICsgY2hdOyAvLyBzZXQgWFtpXQotCiAgICAgICAgICAg
ICBpZiAoIWVidXIxMjgtPmNoX3dlaWdodGluZ1tjaF0pCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICAgICAgCisgICAgI2RlZmluZSBGSUxURVIoWSwgWCwgTlVNLCBERU4p
IGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgICAgICAgICAgZG91YmxlICpkc3QgPSBlYnVyMTI4LT5ZICsgY2gqMzsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgZG91YmxlICpzcmMgPSBl
YnVyMTI4LT5YICsgY2gqMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgICAgICAgICAgZHN0WzJdID0gZHN0WzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgZHN0WzFdID0gZHN0
WzBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgICAgICAgICAgZHN0WzBdID0gc3JjWzBdKk5VTVswXSArIHNyY1sxXSpOVU1bMV0g
KyBzcmNbMl0qTlVNWzJdICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAtIGRzdFsxXSpERU5bMV0gLSBkc3RbMl0qREVOWzJdOyAgICAgICAgICAg
ICBcCisgICAgfSB3aGlsZSAoMCkKKworICAgICAgICAgICAgICAgIC8vIFRPRE86IG1lcmdlIGJv
dGggZmlsdGVycyBpbiBvbmU/CisgICAgICAgICAgICAgICAgRklMVEVSKHksIHgsIGVidXIxMjgt
PnByZV9iLCBlYnVyMTI4LT5wcmVfYSk7ICAvLyBhcHBseSBwcmUtZmlsdGVyCisgICAgICAgICAg
ICAgICAgZWJ1cjEyOC0+eFtjaCAqIDMgKyAyXSA9IGVidXIxMjgtPnhbY2ggKiAzICsgMV07Cisg
ICAgICAgICAgICAgICAgZWJ1cjEyOC0+eFtjaCAqIDMgKyAxXSA9IGVidXIxMjgtPnhbY2ggKiAz
ICAgIF07CisgICAgICAgICAgICAgICAgRklMVEVSKHosIHksIGVidXIxMjgtPnJsYl9iLCBlYnVy
MTI4LT5ybGJfYSk7ICAvLyBhcHBseSBSTEItZmlsdGVyCisKKyAgICAgICAgICAgICAgICBiaW4y
ID0gZWJ1cjEyOC0+eltjaCAqIDNdICogZWJ1cjEyOC0+eltjaCAqIDNdOworCisgICAgICAgICAg
ICAgICAgLyogQWRkIHRoZSBuZXcgdmFsdWUsIGFuZCBsaW1pdCB0aGUgc3VtIHRvIHRoZSBjYWNo
ZSBzaXplICg0MDBtcyBvciAzcykKKyAgICAgICAgICAgICAgICAgKiBieSByZW1vdmluZyB0aGUg
b2xkZXN0IG9uZSAqLworICAgICAgICAgICAgICAgIGVidXIxMjgtPmk0MDAuc3VtIFtjaF0gPSBl
YnVyMTI4LT5pNDAwLnN1bSBbY2hdICsgYmluMiAtIGVidXIxMjgtPmk0MDAuY2FjaGUgW2NoXVti
aW5faWRfNDAwXTsKKyAgICAgICAgICAgICAgICBlYnVyMTI4LT5pMzAwMC5zdW1bY2hdID0gZWJ1
cjEyOC0+aTMwMDAuc3VtW2NoXSArIGJpbjIgLSBlYnVyMTI4LT5pMzAwMC5jYWNoZVtjaF1bYmlu
X2lkXzMwMDBdOworCisgICAgICAgICAgICAgICAgLy8gT3ZlcnJpZGUgb2xkIGNhY2hlIGVudHJ5
IHdpdGggdGhlIG5ldyB2YWx1ZQorICAgICAgICAgICAgICAgIGVidXIxMjgtPmk0MDAuY2FjaGUg
W2NoXVtiaW5faWRfNDAwIF0gPSBiaW4yOworICAgICAgICAgICAgICAgIGVidXIxMjgtPmkzMDAw
LmNhY2hlW2NoXVtiaW5faWRfMzAwMF0gPSBiaW4yOworICAgICAgICB9CiAKLSAgICAgICAgICAg
IC8qIFlbaV0gPSBYW2ldKmIwICsgWFtpLTFdKmIxICsgWFtpLTJdKmIyIC0gWVtpLTFdKmExIC0g
WVtpLTJdKmEyICovCi0jZGVmaW5lIEZJTFRFUihZLCBYLCBOVU0sIERFTikgZG8geyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIGRvdWJs
ZSAqZHN0ID0gZWJ1cjEyOC0+WSArIGNoKjM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAotICAgICAgICAgICAgZG91YmxlICpzcmMgPSBlYnVyMTI4LT5YICsgY2gqMzsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBkc3RbMl0gPSBk
c3RbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLSAgICAgICAgICAgIGRzdFsxXSA9IGRzdFswXTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgZHN0WzBdID0gc3JjWzBd
Kk5VTVswXSArIHNyY1sxXSpOVU1bMV0gKyBzcmNbMl0qTlVNWzJdICAgICAgICAgICAgICBcCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gZHN0WzFdKkRFTlsxXSAtIGRzdFsy
XSpERU5bMl07ICAgICAgICAgICAgIFwKLX0gd2hpbGUgKDApCi0KLSAgICAgICAgICAgIC8vIFRP
RE86IG1lcmdlIGJvdGggZmlsdGVycyBpbiBvbmU/Ci0gICAgICAgICAgICBGSUxURVIoeSwgeCwg
ZWJ1cjEyOC0+cHJlX2IsIGVidXIxMjgtPnByZV9hKTsgIC8vIGFwcGx5IHByZS1maWx0ZXIKLSAg
ICAgICAgICAgIGVidXIxMjgtPnhbY2ggKiAzICsgMl0gPSBlYnVyMTI4LT54W2NoICogMyArIDFd
OwotICAgICAgICAgICAgZWJ1cjEyOC0+eFtjaCAqIDMgKyAxXSA9IGVidXIxMjgtPnhbY2ggKiAz
ICAgIF07Ci0gICAgICAgICAgICBGSUxURVIoeiwgeSwgZWJ1cjEyOC0+cmxiX2IsIGVidXIxMjgt
PnJsYl9hKTsgIC8vIGFwcGx5IFJMQi1maWx0ZXIKKyNlbHNlCiAKLSAgICAgICAgICAgIGJpbiA9
IGVidXIxMjgtPnpbY2ggKiAzXSAqIGVidXIxMjgtPnpbY2ggKiAzXTsKKyAgICAgICAgZm9yIChj
aCA9IDA7IGNoIDwgbmJfY2hhbm5lbHM7IGNoKyspIHsKKyAgICAgICAgICAgIGRvdWJsZSBiaW47
CisgICAgICAgICAgICBpZiAoZWJ1cjEyOC0+cGVha19tb2RlICYgUEVBS19NT0RFX1NBTVBMRVNf
UEVBS1MpCisgICAgICAgICAgICAgICAgZWJ1cjEyOC0+c2FtcGxlX3BlYWtzW2NoXSA9IEZGTUFY
KGVidXIxMjgtPnNhbXBsZV9wZWFrc1tjaF0sIGZhYnMoc2FtcGxlc1tpZHhfaW5zYW1wbGUgKiBu
Yl9jaGFubmVscyArIGNoXSkpOwogCi0gICAgICAgICAgICAvKiBhZGQgdGhlIG5ldyB2YWx1ZSwg
YW5kIGxpbWl0IHRoZSBzdW0gdG8gdGhlIGNhY2hlIHNpemUgKDQwMG1zIG9yIDNzKQotICAgICAg
ICAgICAgICogYnkgcmVtb3ZpbmcgdGhlIG9sZGVzdCBvbmUgKi8KLSAgICAgICAgICAgIGVidXIx
MjgtPmk0MDAuc3VtIFtjaF0gPSBlYnVyMTI4LT5pNDAwLnN1bSBbY2hdICsgYmluIC0gZWJ1cjEy
OC0+aTQwMC5jYWNoZSBbY2hdW2Jpbl9pZF80MDBdOwotICAgICAgICAgICAgZWJ1cjEyOC0+aTMw
MDAuc3VtW2NoXSA9IGVidXIxMjgtPmkzMDAwLnN1bVtjaF0gKyBiaW4gLSBlYnVyMTI4LT5pMzAw
MC5jYWNoZVtjaF1bYmluX2lkXzMwMDBdOworICAgICAgICAgICAgZWJ1cjEyOC0+eFtjaCAqIDNd
ID0gc2FtcGxlc1tpZHhfaW5zYW1wbGUgKiBuYl9jaGFubmVscyArIGNoXTsgLy8gU2V0IFhbaV0K
IAotICAgICAgICAgICAgLyogb3ZlcnJpZGUgb2xkIGNhY2hlIGVudHJ5IHdpdGggdGhlIG5ldyB2
YWx1ZSAqLwotICAgICAgICAgICAgZWJ1cjEyOC0+aTQwMC5jYWNoZSBbY2hdW2Jpbl9pZF80MDAg
XSA9IGJpbjsKLSAgICAgICAgICAgIGVidXIxMjgtPmkzMDAwLmNhY2hlW2NoXVtiaW5faWRfMzAw
MF0gPSBiaW47CisgICAgICAgICAgICBpZiAoIWVidXIxMjgtPmNoX3dlaWdodGluZ1tjaF0pCisg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgCisgICAgI2RlZmluZSBG
SUxURVIoWSwgWCwgTlVNLCBERU4pIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgZG91YmxlICpkc3QgPSBlYnVyMTI4LT5Z
ICsgY2gqMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg
ICAgICAgZG91YmxlICpzcmMgPSBlYnVyMTI4LT5YICsgY2gqMzsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgZHN0WzJdID0gZHN0WzFdOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
ICAgICAgICAgZHN0WzFdID0gZHN0WzBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgZHN0WzBdID0gc3JjWzBdKk5V
TVswXSArIHNyY1sxXSpOVU1bMV0gKyBzcmNbMl0qTlVNWzJdICAgICAgICAgICAgICBcCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIGRzdFsxXSpERU5bMV0gLSBkc3Rb
Ml0qREVOWzJdOyAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoMCkKKworICAgICAgICAgICAg
ICAgIC8vIFRPRE86IG1lcmdlIGJvdGggZmlsdGVycyBpbiBvbmU/CisgICAgICAgICAgICAgICAg
RklMVEVSKHksIHgsIGVidXIxMjgtPnByZV9iLCBlYnVyMTI4LT5wcmVfYSk7ICAvLyBBcHBseSBw
cmUtZmlsdGVyCisgICAgICAgICAgICAgICAgZWJ1cjEyOC0+eFtjaCAqIDMgKyAyXSA9IGVidXIx
MjgtPnhbY2ggKiAzICsgMV07CisgICAgICAgICAgICAgICAgZWJ1cjEyOC0+eFtjaCAqIDMgKyAx
XSA9IGVidXIxMjgtPnhbY2ggKiAzICAgIF07CisgICAgICAgICAgICAgICAgRklMVEVSKHosIHks
IGVidXIxMjgtPnJsYl9iLCBlYnVyMTI4LT5ybGJfYSk7ICAvLyBBcHBseSBSTEItZmlsdGVyCisg
ICAgICAgICAgICAgICAgYmluID0gZWJ1cjEyOC0+eltjaCAqIDNdICogZWJ1cjEyOC0+eltjaCAq
IDNdOworICAgICAgICAgICAgICAgIC8qIEFkZCB0aGUgbmV3IHZhbHVlLCBhbmQgbGltaXQgdGhl
IHN1bSB0byB0aGUgY2FjaGUgc2l6ZSAoNDAwbXMgb3IgM3MpCisgICAgICAgICAgICAgICAgICog
YnkgcmVtb3ZpbmcgdGhlIG9sZGVzdCBvbmUgKi8KKyAgICAgICAgICAgICAgICBlYnVyMTI4LT5p
NDAwLnN1bSBbY2hdID0gZWJ1cjEyOC0+aTQwMC5zdW0gW2NoXSArIGJpbiAtIGVidXIxMjgtPmk0
MDAuY2FjaGUgW2NoXVtiaW5faWRfNDAwXTsKKyAgICAgICAgICAgICAgICBlYnVyMTI4LT5pMzAw
MC5zdW1bY2hdID0gZWJ1cjEyOC0+aTMwMDAuc3VtW2NoXSArIGJpbiAtIGVidXIxMjgtPmkzMDAw
LmNhY2hlW2NoXVtiaW5faWRfMzAwMF07CisgICAgICAgICAgICAgICAgLy8gT3ZlcnJpZGUgb2xk
IGNhY2hlIGVudHJ5IHdpdGggdGhlIG5ldyB2YWx1ZQorICAgICAgICAgICAgICAgIGVidXIxMjgt
Pmk0MDAuY2FjaGUgW2NoXVtiaW5faWRfNDAwIF0gPSBiaW47CisgICAgICAgICAgICAgICAgZWJ1
cjEyOC0+aTMwMDAuY2FjaGVbY2hdW2Jpbl9pZF8zMDAwXSA9IGJpbjsKICAgICAgICAgfQotCisj
ZW5kaWYKKyAgICAgICAgCiAjZGVmaW5lIEZJTkRfUEVBSyhnbG9iYWwsIHNwLCBwdHlwZSkgZG8g
eyAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBpbnQgY2g7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGRvdWJsZSBtYXhwZWFr
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tIAoyLjQ5
LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBl
Zy1kZXZlbCBtYWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1w
ZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlz
aXQgbGluayBhYm92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3
aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4K