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 ESMTP id 9C95240957
	for <ffmpegdev@gitmailbox.com>; Sun,  3 Apr 2022 22:39:47 +0000 (UTC)
Received: from [127.0.1.1] (localhost [127.0.0.1])
	by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 596CE68B2D0;
	Mon,  4 Apr 2022 01:39:39 +0300 (EEST)
Received: from mail-ed1-f44.google.com (mail-ed1-f44.google.com
 [209.85.208.44])
 by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 680A768B226
 for <ffmpeg-devel@ffmpeg.org>; Mon,  4 Apr 2022 01:39:32 +0300 (EEST)
Received: by mail-ed1-f44.google.com with SMTP id g22so9042680edz.2
 for <ffmpeg-devel@ffmpeg.org>; Sun, 03 Apr 2022 15:39:32 -0700 (PDT)
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=Gf1iNDhFyY01A0Pv76hn7cKZFpcfrQrTNCLMQ70Tkfc=;
 b=HOSajRLhsTHhdpQ853UBKK3KW95KyN6Pms+++i+yHMklTOnSb5LJYm2VfBWYsCxKwr
 Ols/qN+zBVEAgoqMpBqYU8BfzDNUsZ90rJ6xzzl4vAMUGDKyMmg2GJ11sS+52KIkK0AS
 3QRxffXLxcy+7B+65WEx5EeI8aGFDkE7x1whZzGKi3ZW/DwnCA+ziug7tAviawKEaj+7
 JMNjSeY6KB170IdOB/Pu4NITIbELcT9I/kZak9Rt5J5p0gxC2AY8DaUsdtBmNhDgAC4V
 ahonr6i5RaKVfG0DWyo8nRgtJOWISf8Cya69rge87EQQQL3NLBiaEElzuuSAY46Zv3B0
 tFtw==
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=Gf1iNDhFyY01A0Pv76hn7cKZFpcfrQrTNCLMQ70Tkfc=;
 b=VShOi7lMFK9OsiHz+6544yistz1HXmZS9JLw+tGXpk3fyquCBjFw1CfM/TC6eANg0D
 tv6TJ8yjveiy3UB8xKzbCgrj8g7ulMJmwh5zpMIjhLhxCRGsi1fx5tPM4EmXSNIwZt/J
 643Tc/1Av74KYfAM3CbJIxZ0P/deupC4AAoZgbY07mqn8PCuyEcbjHNrhUy0UHpLRXY9
 EPFewkYKp4lsOv7iXIdGd7lAtJH9G4HtyaOtfDmJ72AioHcabkswOieN5lzu08PcNFtz
 YCKTLIE/vQf7UQUYQlSkpVzfQ372pvmKsdyELql+hMGHbk1HYRFvv0Fg7sSzE5LabA5C
 RplQ==
X-Gm-Message-State: AOAM531y8g9/mY0XwjlGQqX4nFNKk3oEtLGJK4q7oI/gbO6hfkD4RZAB
 +dhZM/Zanco25HPk3pnlwKaKNo0UunQ=
X-Google-Smtp-Source: ABdhPJxIc1ItQfAID1ChTmrNrOPF3NwlezM/dnKgMRexYni6jt/IW+YoMe6R8kn1G+NfhLK5q2f8SQ==
X-Received: by 2002:a05:6402:4305:b0:419:2aeb:2a9b with SMTP id
 m5-20020a056402430500b004192aeb2a9bmr30451097edc.346.1649025571395; 
 Sun, 03 Apr 2022 15:39:31 -0700 (PDT)
Received: from localhost.localdomain (92-110-137-10.cable.dynamic.v4.ziggo.nl.
 [92.110.137.10]) by smtp.gmail.com with ESMTPSA id
 gt17-20020a170906f21100b006e6f9ab4830sm1897398ejb.186.2022.04.03.15.39.30
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 03 Apr 2022 15:39:30 -0700 (PDT)
From: Mark Gaiser <markg85@gmail.com>
To: ffmpeg-devel@ffmpeg.org
Date: Mon,  4 Apr 2022 00:38:25 +0200
Message-Id: <20220403223825.26764-2-markg85@gmail.com>
X-Mailer: git-send-email 2.35.1
In-Reply-To: <20220403223825.26764-1-markg85@gmail.com>
References: <20220403223825.26764-1-markg85@gmail.com>
MIME-Version: 1.0
Subject: [FFmpeg-devel] [PATCH v12 1/1] avformat: Add IPFS protocol support.
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: Mark Gaiser <markg85@gmail.com>
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/20220403223825.26764-2-markg85@gmail.com/>
List-Archive: <https://master.gitmailbox.com/ffmpegdev/>
List-Post: <mailto:ffmpegdev@gitmailbox.com>

VGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yOgotIGZmcGxheSBpcGZzOi8vPGNpZD4KLSBmZnBs
YXkgaXBuczovLzxjaWQ+CgpJUEZTIGRhdGEgY2FuIGJlIHBsYXllZCBmcm9tIHNvIGNhbGxlZCAi
aXBmcyBnYXRld2F5cyIuCkEgZ2F0ZXdheSBpcyBlc3NlbnRpYWxseSBhIHdlYnNlcnZlciB0aGF0
IGdpdmVzIGFjY2VzcyB0byB0aGUKZGlzdHJpYnV0ZWQgSVBGUyBuZXR3b3JrLgoKVGhpcyBwcm90
b2NvbCBzdXBwb3J0IChpcGZzIGFuZCBpcG5zKSB0aGVyZWZvcmUgdHJhbnNsYXRlcwppcGZzOi8v
IGFuZCBpcG5zOi8vIHRvIGEgaHR0cDovLyB1cmwuIFRoaXMgcmVzdWx0aW5nIHVybCBpcwp0aGVu
IGhhbmRsZWQgYnkgdGhlIGh0dHAgcHJvdG9jb2wuIEl0IGNvdWxkIGFsc28gYmUgaHR0cHMKZGVw
ZW5kaW5nIG9uIHRoZSBnYXRld2F5IHByb3ZpZGVkLgoKVG8gdXNlIHRoaXMgcHJvdG9jb2wsIGEg
Z2F0ZXdheSBtdXN0IGJlIHByb3ZpZGVkLgpJZiB5b3UgZG8gbm90aGluZyBpdCB3aWxsIHRyeSB0
byBmaW5kIGl0IGluIHlvdXIKJEhPTUUvLmlwZnMvZ2F0ZXdheSBmaWxlLiBUaGUgd2F5cyB0byBz
ZXQgaXQgbWFudWFsbHkgYXJlOgoxLiBEZWZpbmUgYSAtZ2F0ZXdheSA8dXJsPiB0byB0aGUgZ2F0
ZXdheS4KMi4gRGVmaW5lICRJUEZTX0dBVEVXQVkgd2l0aCB0aGUgZnVsbCBodHRwIGxpbmsgdG8g
dGhlIGdhdGV3YXkuCjMuIERlZmluZSAkSVBGU19QQVRIIGFuZCBwb2ludCBpdCB0byB0aGUgSVBG
UyBkYXRhIHBhdGguCjQuIEhhdmUgSVBGUyBydW5uaW5nIGluIHlvdXIgbG9jYWwgdXNlciBmb2xk
ZXIgKHVuZGVyICRIT01FLy5pcGZzKS4KClNpZ25lZC1vZmYtYnk6IE1hcmsgR2Fpc2VyIDxtYXJr
Zzg1QGdtYWlsLmNvbT4KLS0tCiBjb25maWd1cmUgICAgICAgICAgICAgICAgIHwgICAyICsKIGRv
Yy9wcm90b2NvbHMudGV4aSAgICAgICAgfCAgMzAgKysrKwogbGliYXZmb3JtYXQvTWFrZWZpbGUg
ICAgICB8ICAgMiArCiBsaWJhdmZvcm1hdC9pcGZzZ2F0ZXdheS5jIHwgMzI2ICsrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrCiBsaWJhdmZvcm1hdC9wcm90b2NvbHMuYyAgIHwg
ICAyICsKIDUgZmlsZXMgY2hhbmdlZCwgMzYyIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBsaWJhdmZvcm1hdC9pcGZzZ2F0ZXdheS5jCgpkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIv
Y29uZmlndXJlCmluZGV4IGU0ZDM2YWE2MzkuLjU1YWY5MDk1N2EgMTAwNzU1Ci0tLSBhL2NvbmZp
Z3VyZQorKysgYi9jb25maWd1cmUKQEAgLTM1NzksNiArMzU3OSw4IEBAIHVkcF9wcm90b2NvbF9z
ZWxlY3Q9Im5ldHdvcmsiCiB1ZHBsaXRlX3Byb3RvY29sX3NlbGVjdD0ibmV0d29yayIKIHVuaXhf
cHJvdG9jb2xfZGVwcz0ic3lzX3VuX2giCiB1bml4X3Byb3RvY29sX3NlbGVjdD0ibmV0d29yayIK
K2lwZnNfcHJvdG9jb2xfc2VsZWN0PSJodHRwc19wcm90b2NvbCIKK2lwbnNfcHJvdG9jb2xfc2Vs
ZWN0PSJodHRwc19wcm90b2NvbCIKIAogIyBleHRlcm5hbCBsaWJyYXJ5IHByb3RvY29scwogbGli
YW1xcF9wcm90b2NvbF9kZXBzPSJsaWJyYWJiaXRtcSIKZGlmZiAtLWdpdCBhL2RvYy9wcm90b2Nv
bHMudGV4aSBiL2RvYy9wcm90b2NvbHMudGV4aQppbmRleCBkMjA3ZGYwYjUyLi43YzljMGE0ODA4
IDEwMDY0NAotLS0gYS9kb2MvcHJvdG9jb2xzLnRleGkKKysrIGIvZG9jL3Byb3RvY29scy50ZXhp
CkBAIC0yMDI1LDUgKzIwMjUsMzUgQEAgZGVjb2RpbmcgZXJyb3JzLgogCiBAZW5kIHRhYmxlCiAK
K0BzZWN0aW9uIGlwZnMKKworSW50ZXJQbGFuZXRhcnkgRmlsZSBTeXN0ZW0gKElQRlMpIHByb3Rv
Y29sIHN1cHBvcnQuIE9uZSBjYW4gYWNjZXNzIGZpbGVzIHN0b3JlZCAKK29uIHRoZSBJUEZTIG5l
dHdvcmsgdGhyb3VnaCBzbyBjYWxsZWQgZ2F0ZXdheXMuIFRob3NlIGFyZSBodHRwKHMpIGVuZHBv
aW50cy4KK1RoaXMgcHJvdG9jb2wgd3JhcHMgdGhlIElQRlMgbmF0aXZlIHByb3RvY29scyAoaXBm
czovLyBhbmQgaXBuczovLykgdG8gYmUgc2VuZCAKK3RvIHN1Y2ggYSBnYXRld2F5LiBVc2VycyBj
YW4gKGFuZCBzaG91bGQpIGhvc3QgdGhlaXIgb3duIG5vZGUgd2hpY2ggbWVhbnMgdGhpcyAKK3By
b3RvY29sIHdpbGwgdXNlIHlvdXIgbG9jYWwgbWFjaGluZSBnYXRld2F5IHRvIGFjY2VzcyBmaWxl
cyBvbiB0aGUgSVBGUyBuZXR3b3JrLgorCitJZiBhIHVzZXIgZG9lc24ndCBoYXZlIGEgbm9kZSBv
ZiB0aGVpciBvd24gdGhlbiB0aGUgcHVibGljIGdhdGV3YXkgZHdlYi5saW5rIGlzIAordXNlZCBi
eSBkZWZhdWx0LgorCitZb3UgY2FuIHVzZSB0aGlzIHByb3RvY29sIGluIDIgd2F5cy4gVXNpbmcg
SVBGUzoKK0BleGFtcGxlCitmZnBsYXkgaXBmczovL1FtYkd0SmcyM3NraHZGbXU5bUppZVBWQnlo
Znp1NXJ3bzc0TUVrVkRZQW1GNVQKK0BlbmQgZXhhbXBsZQorCitPciB0aGUgSVBOUyBwcm90b2Nv
bCAoSVBOUyBpcyBtdXRhYmxlIElQRlMpOgorQGV4YW1wbGUKK2ZmcGxheSBpcG5zOi8vUW1iR3RK
ZzIzc2todkZtdTltSmllUFZCeWhmenU1cndvNzRNRWtWRFlBbUY1VAorQGVuZCBleGFtcGxlCisK
K1lvdSBjYW4gYWxzbyBjaGFuZ2UgdGhlIGdhdGV3YXkgdG8gYmUgdXNlZDoKKworQHRhYmxlIEBv
cHRpb24KKworQGl0ZW0gZ2F0ZXdheQorRGVmaW5lcyB0aGUgZ2F0ZXdheSB0byB1c2UuIFdoZW4g
bm90aGluZyBpcyBwcm92aWRlZCB0aGUgcHJvdG9jb2wgd2lsbCBmaXJzdCB0cnkgCit5b3VyIGxv
Y2FsIGdhdGV3YXkuIElmIHRoYXQgZmFpbHMgZHdlYi5saW5rIHdpbGwgYmUgdXNlZC4KKworQGVu
ZCB0YWJsZQogCiBAYyBtYW4gZW5kIFBST1RPQ09MUwpkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQv
TWFrZWZpbGUgYi9saWJhdmZvcm1hdC9NYWtlZmlsZQppbmRleCBkNzE4MmQ2YmQ4Li5lMzIzM2Zk
N2FjIDEwMDY0NAotLS0gYS9saWJhdmZvcm1hdC9NYWtlZmlsZQorKysgYi9saWJhdmZvcm1hdC9N
YWtlZmlsZQpAQCAtNjYwLDYgKzY2MCw4IEBAIE9CSlMtJChDT05GSUdfU1JUUF9QUk9UT0NPTCkg
ICAgICAgICAgICAgKz0gc3J0cHByb3RvLm8gc3J0cC5vCiBPQkpTLSQoQ09ORklHX1NVQkZJTEVf
UFJPVE9DT0wpICAgICAgICAgICs9IHN1YmZpbGUubwogT0JKUy0kKENPTkZJR19URUVfUFJPVE9D
T0wpICAgICAgICAgICAgICArPSB0ZWVwcm90by5vIHRlZV9jb21tb24ubwogT0JKUy0kKENPTkZJ
R19UQ1BfUFJPVE9DT0wpICAgICAgICAgICAgICArPSB0Y3AubworT0JKUy0kKENPTkZJR19JUEZT
X1BST1RPQ09MKSAgICAgICAgICAgICArPSBpcGZzZ2F0ZXdheS5vCitPQkpTLSQoQ09ORklHX0lQ
TlNfUFJPVE9DT0wpICAgICAgICAgICAgICs9IGlwZnNnYXRld2F5Lm8KIFRMUy1PQkpTLSQoQ09O
RklHX0dOVVRMUykgICAgICAgICAgICAgICAgKz0gdGxzX2dudXRscy5vCiBUTFMtT0JKUy0kKENP
TkZJR19MSUJUTFMpICAgICAgICAgICAgICAgICs9IHRsc19saWJ0bHMubwogVExTLU9CSlMtJChD
T05GSUdfTUJFRFRMUykgICAgICAgICAgICAgICArPSB0bHNfbWJlZHRscy5vCmRpZmYgLS1naXQg
YS9saWJhdmZvcm1hdC9pcGZzZ2F0ZXdheS5jIGIvbGliYXZmb3JtYXQvaXBmc2dhdGV3YXkuYwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5lMDFlYjJmOWEzCi0tLSAvZGV2
L251bGwKKysrIGIvbGliYXZmb3JtYXQvaXBmc2dhdGV3YXkuYwpAQCAtMCwwICsxLDMyNiBAQAor
LyoKKyAqIElQRlMgYW5kIElQTlMgcHJvdG9jb2wgc3VwcG9ydCB0aHJvdWdoIElQRlMgR2F0ZXdh
eS4KKyAqIENvcHlyaWdodCAoYykgMjAyMiBNYXJrIEdhaXNlcgorICoKKyAqIFRoaXMgZmlsZSBp
cyBwYXJ0IG9mIEZGbXBlZy4KKyAqCisgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMi4xIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcg
d2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSBVU0EKKyAqLworCisjaW5jbHVkZSAibGliYXZ1dGlsL2F2c3RyaW5nLmgiCisj
aW5jbHVkZSAibGliYXZ1dGlsL29wdC5oIgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVk
ZSAib3Nfc3VwcG9ydC5oIgorI2luY2x1ZGUgInVybC5oIgorCit0eXBlZGVmIHN0cnVjdCBJUEZT
R2F0ZXdheUNvbnRleHQgeworICAgIEFWQ2xhc3MgKmNsYXNzOworICAgIFVSTENvbnRleHQgKmlu
bmVyOworICAgIC8vIElzIGZpbGxlZCBieSB0aGUgLWdhdGV3YXkgYXJndW1lbnQgYW5kIG5vdCBj
aGFuZ2VkIGFmdGVyLgorICAgIGNoYXIgKmdhdGV3YXk7CisgICAgLy8gSWYgdGhlIGFib3ZlIGdh
dGV3YXkgaXMgbm9uIG51bGwsIGl0IHdpbGwgYmUgY29waWVkIGludG8gdGhpcyBidWZmZXIuCisg
ICAgLy8gRWxzZSB0aGlzIGJ1ZmZlciB3aWxsIGNvbnRhaW4gdGhlIGF1dG8gZGV0ZWN0ZWQgZ2F0
ZXdheS4KKyAgICAvLyBJbiBlaXRoZXIgY2FzZSwgdGhlIGdhdGV3YXkgdG8gdXNlIHdpbGwgYmUg
aW4gdGhpcyBidWZmZXIuCisgICAgY2hhciBnYXRld2F5X2J1ZmZlcltQQVRIX01BWF07Cit9IElQ
RlNHYXRld2F5Q29udGV4dDsKKworLy8gQSBiZXN0LWVmZm9ydCB3YXkgdG8gZmluZCB0aGUgSVBG
UyBnYXRld2F5LgorLy8gT25seSB0aGUgbW9zdCBhcHByb3BpYXRlIGdhdGV3YXkgaXMgc2V0LiBJ
dCdzIG5vdCBhY3R1YWxseSByZXF1ZXN0ZWQKKy8vIChodHRwIGNhbGwpIHRvIHByZXZlbnQgYSBw
b3RlbnRpYWwgc2xvd2Rvd24gaW4gc3RhcnR1cC4gQSBwb3RlbnRpYWwgdGltZW91dAorLy8gaXMg
aGFuZGxlZCBieSB0aGUgSFRUUCBwcm90b2NvbC4KK3N0YXRpYyBpbnQgcG9wdWxhdGVfaXBmc19n
YXRld2F5KFVSTENvbnRleHQgKmgpCit7CisgICAgSVBGU0dhdGV3YXlDb250ZXh0ICpjID0gaC0+
cHJpdl9kYXRhOworICAgIGNoYXIgaXBmc19mdWxsX2RhdGFfZm9sZGVyW1BBVEhfTUFYXTsKKyAg
ICBjaGFyIGlwZnNfZ2F0ZXdheV9maWxlW1BBVEhfTUFYXTsKKyAgICBzdHJ1Y3Qgc3RhdCBzdDsK
KyAgICBpbnQgc3RhdF9yZXQgPSAwOworICAgIGludCByZXQgPSBBVkVSUk9SKEVJTlZBTCk7Cisg
ICAgRklMRSAqZ2F0ZXdheV9maWxlID0gTlVMTDsKKworICAgIC8vIFRlc3QgJElQRlNfR0FURVdB
WS4KKyAgICBpZiAoZ2V0ZW52KCJJUEZTX0dBVEVXQVkiKSAhPSBOVUxMKSB7CisgICAgICAgIGlm
IChzbnByaW50ZihjLT5nYXRld2F5X2J1ZmZlciwgc2l6ZW9mKGMtPmdhdGV3YXlfYnVmZmVyKSwg
IiVzIiwKKyAgICAgICAgICAgICAgICAgICAgIGdldGVudigiSVBGU19HQVRFV0FZIikpID49IHNp
emVvZihjLT5nYXRld2F5X2J1ZmZlcikpIHsKKyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0df
V0FSTklORywgIlRoZSBJUEZTX0dBVEVXQVkgZW52aXJvbm1lbnQgdmFyaWFibGUgIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjZWVkcyB0aGUgbWF4aW11bSBsZW5n
dGguICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldlIGFsbG93IGEg
bWF4IG9mICV6dSBjaGFyYWN0ZXJzXG4iLAorICAgICAgICAgICAgICAgICAgIHNpemVvZihjLT5n
YXRld2F5X2J1ZmZlcikpOworICAgICAgICAgICAgcmV0ID0gQVZFUlJPUihFSU5WQUwpOworICAg
ICAgICAgICAgZ290byBlcnI7CisgICAgICAgIH0KKworICAgICAgICByZXQgPSAxOworICAgICAg
ICBnb3RvIGVycjsKKyAgICB9IGVsc2UKKyAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19ERUJVRywg
IiRJUEZTX0dBVEVXQVkgaXMgZW1wdHkuXG4iKTsKKworICAgIC8vIFdlIG5lZWQgdG8ga25vdyB0
aGUgSVBGUyBmb2xkZXIgdG8gLSBldmVudHVhbGx5IC0gcmVhZCB0aGUgY29udGVudHMgb2YKKyAg
ICAvLyB0aGUgImdhdGV3YXkiIGZpbGUgd2hpY2ggd291bGQgdGVsbCB1cyB0aGUgZ2F0ZXdheSB0
byB1c2UuCisgICAgaWYgKGdldGVudigiSVBGU19QQVRIIikgPT0gTlVMTCkgeworICAgICAgICBh
dl9sb2coaCwgQVZfTE9HX0RFQlVHLCAiJElQRlNfUEFUSCBpcyBlbXB0eS5cbiIpOworCisgICAg
ICAgIC8vIFRyeSB2aWEgdGhlIGhvbWUgZm9sZGVyLgorICAgICAgICBpZiAoZ2V0ZW52KCJIT01F
IikgPT0gTlVMTCkgeworICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLCAiJEhP
TUUgYXBwZWFycyB0byBiZSBlbXB0eS5cbiIpOworICAgICAgICAgICAgcmV0ID0gQVZFUlJPUihF
SU5WQUwpOworICAgICAgICAgICAgZ290byBlcnI7CisgICAgICAgIH0KKworICAgICAgICAvLyBW
ZXJpZnkgdGhlIGNvbXBvc2VkIHBhdGggZml0cy4KKyAgICAgICAgaWYgKHNucHJpbnRmKGlwZnNf
ZnVsbF9kYXRhX2ZvbGRlciwgc2l6ZW9mKGlwZnNfZnVsbF9kYXRhX2ZvbGRlciksCisgICAgICAg
ICAgICAgICAgICAgICAiJXMvLmlwZnMvIiwgZ2V0ZW52KCJIT01FIikpID49IHNpemVvZihpcGZz
X2Z1bGxfZGF0YV9mb2xkZXIpKSB7CisgICAgICAgICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5J
TkcsICJUaGUgSVBGUyBkYXRhIHBhdGggZXhjZWVkcyB0aGUgIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAibWF4IHBhdGggbGVuZ3RoICglenUpXG4iLAorICAgICAgICAg
ICAgICAgICAgIHNpemVvZihpcGZzX2Z1bGxfZGF0YV9mb2xkZXIpKTsKKyAgICAgICAgICAgIHJl
dCA9IEFWRVJST1IoRUlOVkFMKTsKKyAgICAgICAgICAgIGdvdG8gZXJyOworICAgICAgICB9CisK
KyAgICAgICAgLy8gU3RhdCB0aGUgZm9sZGVyLgorICAgICAgICAvLyBJdCBzaG91bGQgZXhpc3Qg
aW4gYSBkZWZhdWx0IElQRlMgc2V0dXAgd2hlbiBydW4gYXMgbG9jYWwgdXNlci4KKyAgICAgICAg
c3RhdF9yZXQgPSBzdGF0KGlwZnNfZnVsbF9kYXRhX2ZvbGRlciwgJnN0KTsKKworICAgICAgICBp
ZiAoc3RhdF9yZXQgPCAwKSB7CisgICAgICAgICAgICBhdl9sb2coaCwgQVZfTE9HX0lORk8sICJV
bmFibGUgdG8gZmluZCBJUEZTIGZvbGRlci4gV2UgdHJpZWQ6XG4iKTsKKyAgICAgICAgICAgIGF2
X2xvZyhoLCBBVl9MT0dfSU5GTywgIi0gJElQRlNfUEFUSCwgd2hpY2ggd2FzIGVtcHR5LlxuIik7
CisgICAgICAgICAgICBhdl9sb2coaCwgQVZfTE9HX0lORk8sICItICRIT01FLy5pcGZzIChmdWxs
IHVyaTogJXMpIHdoaWNoIGRvZXNuJ3QgZXhpc3QuXG4iLCBpcGZzX2Z1bGxfZGF0YV9mb2xkZXIp
OworICAgICAgICAgICAgcmV0ID0gQVZFUlJPUihFTk9FTlQpOworICAgICAgICAgICAgZ290byBl
cnI7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoc25wcmludGYoaXBmc19m
dWxsX2RhdGFfZm9sZGVyLCBzaXplb2YoaXBmc19mdWxsX2RhdGFfZm9sZGVyKSwgIiVzIiwKKyAg
ICAgICAgICAgICAgICAgZ2V0ZW52KCJJUEZTX1BBVEgiKSkgPj0gc2l6ZW9mKGlwZnNfZnVsbF9k
YXRhX2ZvbGRlcikpIHsKKyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIlRo
ZSBJUEZTX1BBVEggZW52aXJvbm1lbnQgdmFyaWFibGUgIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiZXhjZWVkcyB0aGUgbWF4aW11bSBsZW5ndGguICIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldlIGFsbG93IGEgbWF4IG9mICV6dSBjaGFy
YWN0ZXJzXG4iLAorICAgICAgICAgICAgICAgICAgIHNpemVvZihjLT5nYXRld2F5X2J1ZmZlcikp
OworICAgICAgICAgICAgcmV0ID0gQVZFUlJPUihFSU5WQUwpOworICAgICAgICAgICAgZ290byBl
cnI7CisgICAgICAgIH0KKworICAgIH0KKworICAgIC8vIENvcHkgdGhlIGZ1bGx5IGNvbXBvc2Vk
IGdhdGV3YXkgcGF0aCBpbnRvIGlwZnNfZ2F0ZXdheV9maWxlLgorICAgIGlmIChzbnByaW50Zihp
cGZzX2dhdGV3YXlfZmlsZSwgc2l6ZW9mKGlwZnNfZ2F0ZXdheV9maWxlKSwgIiVzZ2F0ZXdheSIs
CisgICAgICAgICAgICAgICAgIGlwZnNfZnVsbF9kYXRhX2ZvbGRlcikgPj0gc2l6ZW9mKGlwZnNf
Z2F0ZXdheV9maWxlKSkgeworICAgICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICJUaGUg
SVBGUyBnYXRld2F5IGZpbGUgcGF0aCBleGNlZWRzICIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAidGhlIG1heCBwYXRoIGxlbmd0aCAoJXp1KVxuIiwKKyAgICAgICAgICAgICAg
IHNpemVvZihpcGZzX2dhdGV3YXlfZmlsZSkpOworICAgICAgICByZXQgPSBBVkVSUk9SKEVOT0VO
VCk7CisgICAgICAgIGdvdG8gZXJyOworICAgIH0KKworICAgIC8vIEdldCB0aGUgY29udGVudHMg
b2YgdGhlIGdhdGV3YXkgZmlsZS4KKyAgICBnYXRld2F5X2ZpbGUgPSBhdl9mb3Blbl91dGY4KGlw
ZnNfZ2F0ZXdheV9maWxlLCAiciIpOworICAgIGlmICghZ2F0ZXdheV9maWxlKSB7CisgICAgICAg
IGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIlRoZSBJUEZTIGdhdGV3YXkgZmlsZSAoZnVsbCB1
cmk6ICVzKSBkb2Vzbid0IGV4aXN0LiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIklzIHRoZSBnYXRld2F5IGVuYWJsZWQ/XG4iLAorICAgICAgICAgICAgICAgaXBmc19nYXRl
d2F5X2ZpbGUpOworICAgICAgICByZXQgPSBBVkVSUk9SKEVOT0VOVCk7CisgICAgICAgIGdvdG8g
ZXJyOworICAgIH0KKworICAgIC8vIFJlYWQgYSBzaW5nbGUgbGluZSAoZmdldHMgc3RvcHMgYXQg
bmV3IGxpbmUgbWFyaykuCisgICAgaWYgKCFmZ2V0cyhjLT5nYXRld2F5X2J1ZmZlciwgc2l6ZW9m
KGMtPmdhdGV3YXlfYnVmZmVyKSAtIDEsIGdhdGV3YXlfZmlsZSkpIHsKKyAgICAgIGF2X2xvZyho
LCBBVl9MT0dfV0FSTklORywgIlVuYWJsZSB0byByZWFkIGZyb20gZmlsZSAoZnVsbCB1cmk6ICVz
KS5cbiIsCisgICAgICAgICAgICAgaXBmc19nYXRld2F5X2ZpbGUpOworICAgICAgcmV0ID0gQVZF
UlJPUihFTk9FTlQpOworICAgICAgZ290byBlcnI7CisgICAgfQorCisgICAgLy8gUmVwbGFjZSBm
aXJzdCBvY2N1cmVuY2Ugb2YgZW5kIG9mIGxpbmUgd2l0aCBcMAorICAgIGMtPmdhdGV3YXlfYnVm
ZmVyW3N0cmNzcG4oYy0+Z2F0ZXdheV9idWZmZXIsICJcclxuIildID0gMDsKKworICAgIC8vIElm
IHN0cmxlbiBmaW5kcyBhbnl0aGluZyBsb25nZXIgdGhlbiAwIGNoYXJhY3RlcnMgdGhlbiB3ZSBo
YXZlIGEKKyAgICAvLyBwb3RlbnRpYWwgZ2F0ZXdheSB1cmwuCisgICAgaWYgKCpjLT5nYXRld2F5
X2J1ZmZlciA9PSAnXDAnKSB7CisgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIlRo
ZSBJUEZTIGdhdGV3YXkgZmlsZSAoZnVsbCB1cmk6ICVzKSBhcHBlYXJzIHRvIGJlIGVtcHR5LiAi
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIklzIHRoZSBnYXRld2F5IHN0YXJ0
ZWQ/XG4iLAorICAgICAgICAgICAgICAgaXBmc19nYXRld2F5X2ZpbGUpOworICAgICAgICByZXQg
PSBBVkVSUk9SKEVJTFNFUSk7CisgICAgICAgIGdvdG8gZXJyOworICAgIH0gZWxzZSB7CisgICAg
ICAgIC8vIFdlJ3JlIGRvbmUsIHRoZSBjLT5nYXRld2F5X2J1ZmZlciBoYXMgc29tZXRoaW5nIHRo
YXQgbG9va3MgdmFsaWQuCisgICAgICAgIHJldCA9IDE7CisgICAgICAgIGdvdG8gZXJyOworICAg
IH0KKworZXJyOgorICAgIGlmIChnYXRld2F5X2ZpbGUpCisgICAgICAgIGZjbG9zZShnYXRld2F5
X2ZpbGUpOworCisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCB0cmFuc2xhdGVfaXBm
c190b19odHRwKFVSTENvbnRleHQgKmgsIGNvbnN0IGNoYXIgKnVyaSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MsIEFWRGljdGlvbmFyeSAqKm9wdGlvbnMpCit7
CisgICAgY29uc3QgY2hhciAqaXBmc19jaWQ7CisgICAgY2hhciAqZnVsbHVyaSA9IE5VTEw7Cisg
ICAgaW50IHJldDsKKyAgICBJUEZTR2F0ZXdheUNvbnRleHQgKmMgPSBoLT5wcml2X2RhdGE7CisK
KyAgICAvLyBUZXN0IGZvciBpcGZzOi8vLCBpcGZzOiwgaXBuczovLyBhbmQgaXBuczouIFRoaXMg
cHJlZml4IGlzIHN0cmlwcGVkIGZyb20KKyAgICAvLyB0aGUgc3RyaW5nIGxlYXZpbmcganVzdCB0
aGUgQ0lEIGluIGlwZnNfY2lkLgorICAgIGludCBpc19pcGZzID0gYXZfc3RyaXN0YXJ0KHVyaSwg
ImlwZnM6Ly8iLCAmaXBmc19jaWQpOworICAgIGludCBpc19pcG5zID0gYXZfc3RyaXN0YXJ0KHVy
aSwgImlwbnM6Ly8iLCAmaXBmc19jaWQpOworCisgICAgLy8gV2UgbXVzdCBoYXZlIGVpdGhlciBp
cG5zIG9yIGlwZnMuCisgICAgaWYgKCFpc19pcGZzICYmICFpc19pcG5zKSB7CisgICAgICAgIHJl
dCA9IEFWRVJST1IoRUlOVkFMKTsKKyAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLCAi
VW5zdXBwb3J0ZWQgdXJsICVzXG4iLCB1cmkpOworICAgICAgICBnb3RvIGVycjsKKyAgICB9CisK
KyAgICAvLyBJZiB0aGUgQ0lEIGhhcyBhIGxlbmd0aCBncmVhdGVyIHRoZW4gMCB0aGVuIHdlIGFz
c3VtZSB3ZSBoYXZlIGEgcHJvcGVyIHdvcmtpbmcgb25lLgorICAgIC8vIEl0IGNvdWxkIHN0aWxs
IGJlIHdyb25nIGJ1dCBpbiB0aGF0IGNhc2UgdGhlIGdhdGV3YXkgc2hvdWxkIHNhdmUgdXMgYW5k
CisgICAgLy8gcnV0dXJuIGEgNDAzIGVycm9yLiBUaGUgaHR0cCBwcm90b2NvbCBoYW5kbGVzIHRo
aXMuCisgICAgaWYgKHN0cmxlbihpcGZzX2NpZCkgPCAxKSB7CisgICAgICAgIGF2X2xvZyhoLCBB
Vl9MT0dfV0FSTklORywgIkEgQ0lEIG11c3QgYmUgcHJvdmlkZWQuXG4iKTsKKyAgICAgICAgcmV0
ID0gQVZFUlJPUihFSUxTRVEpOworICAgICAgICBnb3RvIGVycjsKKyAgICB9CisKKyAgICAvLyBQ
b3B1bGF0ZSBjLT5nYXRld2F5X2J1ZmZlciB3aXRoIHdoYXRldmVyIGlzIGluIGMtPmdhdGV3YXkK
KyAgICBpZiAoYy0+Z2F0ZXdheSAhPSBOVUxMKSB7CisgICAgICAgIGlmIChzbnByaW50ZihjLT5n
YXRld2F5X2J1ZmZlciwgc2l6ZW9mKGMtPmdhdGV3YXlfYnVmZmVyKSwgIiVzIiwKKyAgICAgICAg
ICAgICAgICAgICAgIGMtPmdhdGV3YXkpID49IHNpemVvZihjLT5nYXRld2F5X2J1ZmZlcikpIHsK
KyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIlRoZSAtZ2F0ZXdheSBwYXJh
bWV0ZXIgaXMgdG9vIGxvbmcuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIldlIGFsbG93IGEgbWF4IG9mICV6dSBjaGFyYWN0ZXJzXG4iLAorICAgICAgICAgICAgICAg
ICAgIHNpemVvZihjLT5nYXRld2F5X2J1ZmZlcikpOworICAgICAgICAgICAgcmV0ID0gQVZFUlJP
UihFSU5WQUwpOworICAgICAgICAgICAgZ290byBlcnI7CisgICAgICAgIH0KKyAgICB9IGVsc2Ug
eworICAgICAgICAvLyBQb3B1bGF0ZSB0aGUgSVBGUyBnYXRld2F5IGlmIHdlIGhhdmUgYW55Lgor
ICAgICAgICAvLyBJZiBub3QsIGluZm9ybSB0aGUgdXNlciBob3cgdG8gcHJvcGVybHkgc2V0IG9u
ZS4KKyAgICAgICAgcmV0ID0gcG9wdWxhdGVfaXBmc19nYXRld2F5KGgpOworCisgICAgICAgIGlm
IChyZXQgPCAxKSB7CisgICAgICAgICAgICAvLyBXZSBmYWxsYmFjayBvbiBkd2ViLmxpbmsgKG1h
bmFnZWQgYnkgUHJvdG9jb2wgTGFicykuCisgICAgICAgICAgICBzbnByaW50ZihjLT5nYXRld2F5
X2J1ZmZlciwgc2l6ZW9mKGMtPmdhdGV3YXlfYnVmZmVyKSwgImh0dHBzOi8vZHdlYi5saW5rIik7
CisKKyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIklQRlMgZG9lcyBub3Qg
YXBwZWFyIHRvIGJlIHJ1bm5pbmcuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIllvdeKAmXJlIG5vdyB1c2luZyB0aGUgcHVibGljIGdhdGV3YXkgYXQgZHdlYi5saW5r
LlxuIik7CisgICAgICAgICAgICBhdl9sb2coaCwgQVZfTE9HX0lORk8sICJJbnN0YWxsaW5nIElQ
RlMgbG9jYWxseSBpcyByZWNvbW1lbmRlZCB0byAiCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJpbXByb3ZlIHBlcmZvcm1hbmNlIGFuZCByZWxpYWJpbGl0eSwgIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYW5kIG5vdCBzaGFyZSBhbGwgeW91ciBhY3Rp
dml0eSB3aXRoIGEgc2luZ2xlIElQRlMgZ2F0ZXdheS5cbiIKKyAgICAgICAgICAgICAgICAgICAi
VGhlcmUgYXJlIG11bHRpcGxlIG9wdGlvbnMgdG8gZGVmaW5lIHRoaXMgZ2F0ZXdheS5cbiIKKyAg
ICAgICAgICAgICAgICAgICAiMS4gQ2FsbCBmZm1wZWcgd2l0aCBhIGdhdGV3YXkgcGFyYW0sICIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpdGhvdXQgYSB0cmFpbGluZyBz
bGFzaDogLWdhdGV3YXkgPHVybD4uXG4iCisgICAgICAgICAgICAgICAgICAgIjIuIERlZmluZSBh
biAkSVBGU19HQVRFV0FZIGVudmlyb25tZW50IHZhcmlhYmxlIHdpdGggdGhlICIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImZ1bGwgSFRUUCBVUkwgdG8gdGhlIGdhdGV3YXkg
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2l0aG91dCB0cmFpbGluZyBm
b3J3YXJkIHNsYXNoLlxuIgorICAgICAgICAgICAgICAgICAgICIzLiBEZWZpbmUgYW4gJElQRlNf
UEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJhbmQgcG9pbnQgaXQgdG8gdGhlIElQRlMgZGF0YSBwYXRoICIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIi0gdGhpcyBpcyB0eXBpY2FsbHkgfi8uaXBmc1xuIik7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBUZXN0IGlmIHRoZSBnYXRld2F5IHN0YXJ0cyB3
aXRoIGVpdGhlciBodHRwOi8vIG9yIGh0dHBzOi8vCisgICAgaWYgKGF2X3N0cmlzdGFydChjLT5n
YXRld2F5X2J1ZmZlciwgImh0dHA6Ly8iLCBOVUxMKSA9PSAwCisgICAgICAgICYmIGF2X3N0cmlz
dGFydChjLT5nYXRld2F5X2J1ZmZlciwgImh0dHBzOi8vIiwgTlVMTCkgPT0gMCkgeworICAgICAg
ICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICJUaGUgZ2F0ZXdheSBVUkwgZGlkbid0IHN0YXJ0
IHdpdGggaHR0cDovLyBvciAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImh0
dHBzOi8vIGFuZCBpcyB0aGVyZWZvcmUgaW52YWxpZC5cbiIpOworICAgICAgICByZXQgPSBBVkVS
Uk9SKEVJTFNFUSk7CisgICAgICAgIGdvdG8gZXJyOworICAgIH0KKworICAgIC8vIENvbmNhdGVu
YXRlIHRoZSB1cmwuCisgICAgLy8gVGhpcyBlbmRzIHVwIHdpdGggc29tZXRoaW5nIGxpa2U6IGh0
dHA6Ly9sb2NhbGhvc3Q6ODA4MC9pcGZzL1FtLi4uLi4KKyAgICAvLyBUaGUgZm9ybWF0IG9mICIl
cyVzJXMlcyIgaXMgdGhlIGZvbGxvd2luZzoKKyAgICAvLyAxc3QgJXMgPSBUaGUgZ2F0ZXdheS4K
KyAgICAvLyAybmQgJXMgPSBJZiB0aGUgZ2F0ZXdheSBkaWRuJ3QgZW5kIGluIGEgc2xhc2gsIGFk
ZCBhICIvIi4gT3RoZXJ3aXNlIGl0J3MgYW4gZW1wdHkgc3RyaW5nCisgICAgLy8gM3JkICVzID0g
RWl0aGVyIGlwbnMvIG9yIGlwZnMvLgorICAgIC8vIDR0aCAlcyA9IFRoZSBJUEZTIENJRCAoUW0u
Li4sIGJhZnkuLi4sIC4uLikuCisgICAgZnVsbHVyaSA9IGF2X2FzcHJpbnRmKCIlcyVzJXMlcyIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgIGMtPmdhdGV3YXlfYnVmZmVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAoYy0+Z2F0ZXdheV9idWZmZXJbc3RybGVuKGMtPmdhdGV3YXlfYnVm
ZmVyKSAtIDFdID09ICcvJykgPyAiIiA6ICIvIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
KGlzX2lwbnMpID8gImlwbnMvIiA6ICJpcGZzLyIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IGlwZnNfY2lkKTsKKworICAgIGlmICghZnVsbHVyaSkgeworICAgICAgYXZfbG9nKGgsIEFWX0xP
R19FUlJPUiwgIkZhaWxlZCB0byBjb21wb3NlIHRoZSBVUkxcbiIpOworICAgICAgcmV0ID0gQVZF
UlJPUihFTk9NRU0pOworICAgICAgZ290byBlcnI7CisgICAgfQorCisgICAgLy8gUGFzcyB0aGUg
VVJMIGJhY2sgdG8gRkZNcGVnJ3MgcHJvdG9jb2wgaGFuZGxlci4KKyAgICByZXQgPSBmZnVybF9v
cGVuX3doaXRlbGlzdCgmYy0+aW5uZXIsIGZ1bGx1cmksIGZsYWdzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZoLT5pbnRlcnJ1cHRfY2FsbGJhY2ssIG9wdGlvbnMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaC0+cHJvdG9jb2xfd2hpdGVsaXN0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGgtPnByb3RvY29sX2JsYWNrbGlzdCwgaCk7CisgICAgaWYg
KHJldCA8IDApIHsKKyAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLCAiVW5hYmxlIHRv
IG9wZW4gcmVzb3VyY2U6ICVzXG4iLCBmdWxsdXJpKTsKKyAgICAgICAgZ290byBlcnI7CisgICAg
fQorCitlcnI6CisgICAgYXZfZnJlZShmdWxsdXJpKTsKKyAgICByZXR1cm4gcmV0OworfQorCitz
dGF0aWMgaW50IGlwZnNfcmVhZChVUkxDb250ZXh0ICpoLCB1bnNpZ25lZCBjaGFyICpidWYsIGlu
dCBzaXplKQoreworICAgIElQRlNHYXRld2F5Q29udGV4dCAqYyA9IGgtPnByaXZfZGF0YTsKKyAg
ICByZXR1cm4gZmZ1cmxfcmVhZChjLT5pbm5lciwgYnVmLCBzaXplKTsKK30KKworc3RhdGljIGlu
dDY0X3QgaXBmc19zZWVrKFVSTENvbnRleHQgKmgsIGludDY0X3QgcG9zLCBpbnQgd2hlbmNlKQor
eworICAgIElQRlNHYXRld2F5Q29udGV4dCAqYyA9IGgtPnByaXZfZGF0YTsKKyAgICByZXR1cm4g
ZmZ1cmxfc2VlayhjLT5pbm5lciwgcG9zLCB3aGVuY2UpOworfQorCitzdGF0aWMgaW50IGlwZnNf
Y2xvc2UoVVJMQ29udGV4dCAqaCkKK3sKKyAgICBJUEZTR2F0ZXdheUNvbnRleHQgKmMgPSBoLT5w
cml2X2RhdGE7CisgICAgcmV0dXJuIGZmdXJsX2Nsb3NlcCgmYy0+aW5uZXIpOworfQorCisjZGVm
aW5lIE9GRlNFVCh4KSBvZmZzZXRvZihJUEZTR2F0ZXdheUNvbnRleHQsIHgpCisKK3N0YXRpYyBj
b25zdCBBVk9wdGlvbiBvcHRpb25zW10gPSB7CisgICAgeyJnYXRld2F5IiwgIlRoZSBnYXRld2F5
IHRvIGFzayBmb3IgSVBGUyBkYXRhLiIsIE9GRlNFVChnYXRld2F5KSwgQVZfT1BUX1RZUEVfU1RS
SU5HLCB7LnN0ciA9IE5VTEx9LCAwLCAwLCBBVl9PUFRfRkxBR19ERUNPRElOR19QQVJBTX0sCisg
ICAge05VTEx9LAorfTsKKworc3RhdGljIGNvbnN0IEFWQ2xhc3MgaXBmc19jb250ZXh0X2NsYXNz
ID0geworICAgIC5jbGFzc19uYW1lICAgPSAiSVBGUyIsCisgICAgLml0ZW1fbmFtZSAgICA9IGF2
X2RlZmF1bHRfaXRlbV9uYW1lLAorICAgIC5vcHRpb24gICAgICAgPSBvcHRpb25zLAorICAgIC52
ZXJzaW9uICAgICAgPSBMSUJBVlVUSUxfVkVSU0lPTl9JTlQsCit9OworCitjb25zdCBVUkxQcm90
b2NvbCBmZl9pcGZzX3Byb3RvY29sID0geworICAgIC5uYW1lICAgICAgICAgICAgID0gImlwZnMi
LAorICAgIC51cmxfb3BlbjIgICAgICAgID0gdHJhbnNsYXRlX2lwZnNfdG9faHR0cCwKKyAgICAu
dXJsX3JlYWQgICAgICAgICA9IGlwZnNfcmVhZCwKKyAgICAudXJsX3NlZWsgICAgICAgICA9IGlw
ZnNfc2VlaywKKyAgICAudXJsX2Nsb3NlICAgICAgICA9IGlwZnNfY2xvc2UsCisgICAgLnByaXZf
ZGF0YV9zaXplICAgPSBzaXplb2YoSVBGU0dhdGV3YXlDb250ZXh0KSwKKyAgICAucHJpdl9kYXRh
X2NsYXNzICA9ICZpcGZzX2NvbnRleHRfY2xhc3MsCit9OworCitjb25zdCBVUkxQcm90b2NvbCBm
Zl9pcG5zX3Byb3RvY29sID0geworICAgIC5uYW1lICAgICAgICAgICAgID0gImlwbnMiLAorICAg
IC51cmxfb3BlbjIgICAgICAgID0gdHJhbnNsYXRlX2lwZnNfdG9faHR0cCwKKyAgICAudXJsX3Jl
YWQgICAgICAgICA9IGlwZnNfcmVhZCwKKyAgICAudXJsX3NlZWsgICAgICAgICA9IGlwZnNfc2Vl
aywKKyAgICAudXJsX2Nsb3NlICAgICAgICA9IGlwZnNfY2xvc2UsCisgICAgLnByaXZfZGF0YV9z
aXplICAgPSBzaXplb2YoSVBGU0dhdGV3YXlDb250ZXh0KSwKKyAgICAucHJpdl9kYXRhX2NsYXNz
ICA9ICZpcGZzX2NvbnRleHRfY2xhc3MsCit9OwpkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvcHJv
dG9jb2xzLmMgYi9saWJhdmZvcm1hdC9wcm90b2NvbHMuYwppbmRleCBkMDc1NjNjZDBjLi42ZWU2
MmE1OThhIDEwMDY0NAotLS0gYS9saWJhdmZvcm1hdC9wcm90b2NvbHMuYworKysgYi9saWJhdmZv
cm1hdC9wcm90b2NvbHMuYwpAQCAtNzEsNiArNzEsOCBAQCBleHRlcm4gY29uc3QgVVJMUHJvdG9j
b2wgZmZfbGlic3J0X3Byb3RvY29sOwogZXh0ZXJuIGNvbnN0IFVSTFByb3RvY29sIGZmX2xpYnNz
aF9wcm90b2NvbDsKIGV4dGVybiBjb25zdCBVUkxQcm90b2NvbCBmZl9saWJzbWJjbGllbnRfcHJv
dG9jb2w7CiBleHRlcm4gY29uc3QgVVJMUHJvdG9jb2wgZmZfbGliem1xX3Byb3RvY29sOworZXh0
ZXJuIGNvbnN0IFVSTFByb3RvY29sIGZmX2lwZnNfcHJvdG9jb2w7CitleHRlcm4gY29uc3QgVVJM
UHJvdG9jb2wgZmZfaXBuc19wcm90b2NvbDsKIAogI2luY2x1ZGUgImxpYmF2Zm9ybWF0L3Byb3Rv
Y29sX2xpc3QuYyIKIAotLSAKMi4zNS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBm
Zm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZl
bAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZl
bC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==