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 D730042958 for ; Wed, 6 Apr 2022 12:02:31 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8B68A68B2C2; Wed, 6 Apr 2022 15:02:14 +0300 (EEST) Received: from mail-ej1-f49.google.com (mail-ej1-f49.google.com [209.85.218.49]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E216D68B2B0 for ; Wed, 6 Apr 2022 15:02:05 +0300 (EEST) Received: by mail-ej1-f49.google.com with SMTP id dr20so3766087ejc.6 for ; Wed, 06 Apr 2022 05:02:05 -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=osAgQQ5WlTVXjmJ/VKRt0QuYmA4iD8/s0dsDy0RZKAE=; b=kAVdc1+N/dCRJhg0Omz0BeDAa3vTLG3KffJ17zdJ1K/UJWmOqBtvcB7ZvB6kEas4QV zNWwabiu3gbpe8kMZAMOlrtUlKiVQiydqwMQGAOwN//EJrZxXgTMnSJNQtysavcA9n1G V9G7ZHcMZXx+wI2Wpmo2NDYaz06NxMswx8I3pKzdWVI9fyPiMduVBLHANMbHxdMLPZF6 ogY2e9LLaEpDQCRPvPT1SIpJfciMerWD3svOpxlB6lLEr1JZfrd7mLwc2bSxK+2YgGCS ADZabkZQHAto133QI+UymqjmR8uQtO/8LNmPg4mLUiXudI3bMz3jJJU+wXIIkKbhJkiT E7cA== 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=osAgQQ5WlTVXjmJ/VKRt0QuYmA4iD8/s0dsDy0RZKAE=; b=nAN9S+6/4Fpbw9AWAilccWD2gEihU5C0GHSsW/Xwb8yzL+HDcSxzMpnYnNDo/+jBKD fm54pYujIDMdXQNDcsRe+/FqJ63UgijbSTWCDbV2QS2aqSsBvW3lFxrBYUEkCNXs88cc hFmSIU4DxpK77hOPtmcWVCUQ7pzCF9frgEmJLdZ1IYdu8vjJ+9eAZ8ZBE5xeW9j0S/T3 QNx6/l19GL+j7lzL6Wkf7JZo+53ua414vea5FWtVHvRFIpJnhaqc9LxTx2AyVA7gmhZ2 KKCY7J4VrFOW7vBqZ3hSu8UAEqVNu/m6TFOMEruHR27bm4wnbd/wpmdZYzqszb46McV2 XQMA== X-Gm-Message-State: AOAM532tw1Wb+mnEzwZF1czzDCz3B+BQZFHCuOnIuC64IZh98cbypy87 J6Fc9cp12z18tXjRnOJkB4Kj4LcCpA0= X-Google-Smtp-Source: ABdhPJx9pEOoyXD5jRpS30EgmsZfmi4Podb8c3FT3w/SZj4QQ7uuljQojgUyXV/o/zq3OvIjzOWacw== X-Received: by 2002:a17:907:2d93:b0:6db:ab5e:7e0b with SMTP id gt19-20020a1709072d9300b006dbab5e7e0bmr7920837ejc.262.1649246524505; Wed, 06 Apr 2022 05:02:04 -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 bs7-20020a056402304700b004197e5d2350sm7616448edb.54.2022.04.06.05.02.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Apr 2022 05:02:04 -0700 (PDT) From: Mark Gaiser To: ffmpeg-devel@ffmpeg.org Date: Wed, 6 Apr 2022 14:00:56 +0200 Message-Id: <20220406120056.10537-2-markg85@gmail.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220406120056.10537-1-markg85@gmail.com> References: <20220406120056.10537-1-markg85@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v13 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Mark Gaiser 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: VGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yOgotIGZmcGxheSBpcGZzOi8vPGNpZD4KLSBmZnBs YXkgaXBuczovLzxjaWQ+CgpJUEZTIGRhdGEgY2FuIGJlIHBsYXllZCBmcm9tIHNvIGNhbGxlZCAi aXBmcyBnYXRld2F5cyIuCkEgZ2F0ZXdheSBpcyBlc3NlbnRpYWxseSBhIHdlYnNlcnZlciB0aGF0 IGdpdmVzIGFjY2VzcyB0byB0aGUKZGlzdHJpYnV0ZWQgSVBGUyBuZXR3b3JrLgoKVGhpcyBwcm90 b2NvbCBzdXBwb3J0IChpcGZzIGFuZCBpcG5zKSB0aGVyZWZvcmUgdHJhbnNsYXRlcwppcGZzOi8v IGFuZCBpcG5zOi8vIHRvIGEgaHR0cDovLyB1cmwuIFRoaXMgcmVzdWx0aW5nIHVybCBpcwp0aGVu IGhhbmRsZWQgYnkgdGhlIGh0dHAgcHJvdG9jb2wuIEl0IGNvdWxkIGFsc28gYmUgaHR0cHMKZGVw ZW5kaW5nIG9uIHRoZSBnYXRld2F5IHByb3ZpZGVkLgoKVG8gdXNlIHRoaXMgcHJvdG9jb2wsIGEg Z2F0ZXdheSBtdXN0IGJlIHByb3ZpZGVkLgpJZiB5b3UgZG8gbm90aGluZyBpdCB3aWxsIHRyeSB0 byBmaW5kIGl0IGluIHlvdXIKJEhPTUUvLmlwZnMvZ2F0ZXdheSBmaWxlLiBUaGUgd2F5cyB0byBz ZXQgaXQgbWFudWFsbHkgYXJlOgoxLiBEZWZpbmUgYSAtZ2F0ZXdheSA8dXJsPiB0byB0aGUgZ2F0 ZXdheS4KMi4gRGVmaW5lICRJUEZTX0dBVEVXQVkgd2l0aCB0aGUgZnVsbCBodHRwIGxpbmsgdG8g dGhlIGdhdGV3YXkuCjMuIERlZmluZSAkSVBGU19QQVRIIGFuZCBwb2ludCBpdCB0byB0aGUgSVBG UyBkYXRhIHBhdGguCjQuIEhhdmUgSVBGUyBydW5uaW5nIGluIHlvdXIgbG9jYWwgdXNlciBmb2xk ZXIgKHVuZGVyICRIT01FLy5pcGZzKS4KClNpZ25lZC1vZmYtYnk6IE1hcmsgR2Fpc2VyIDxtYXJr Zzg1QGdtYWlsLmNvbT4KLS0tCiBjb25maWd1cmUgICAgICAgICAgICAgICAgIHwgICAyICsKIGRv Yy9wcm90b2NvbHMudGV4aSAgICAgICAgfCAgMzAgKysrKwogbGliYXZmb3JtYXQvTWFrZWZpbGUg ICAgICB8ICAgMiArCiBsaWJhdmZvcm1hdC9pcGZzZ2F0ZXdheS5jIHwgMzM5ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCiBsaWJhdmZvcm1hdC9wcm90b2NvbHMuYyAgIHwg ICAyICsKIDUgZmlsZXMgY2hhbmdlZCwgMzc1IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEw MDY0NCBsaWJhdmZvcm1hdC9pcGZzZ2F0ZXdheS5jCgpkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIv Y29uZmlndXJlCmluZGV4IGU0ZDM2YWE2MzkuLjU1YWY5MDk1N2EgMTAwNzU1Ci0tLSBhL2NvbmZp Z3VyZQorKysgYi9jb25maWd1cmUKQEAgLTM1NzksNiArMzU3OSw4IEBAIHVkcF9wcm90b2NvbF9z ZWxlY3Q9Im5ldHdvcmsiCiB1ZHBsaXRlX3Byb3RvY29sX3NlbGVjdD0ibmV0d29yayIKIHVuaXhf cHJvdG9jb2xfZGVwcz0ic3lzX3VuX2giCiB1bml4X3Byb3RvY29sX3NlbGVjdD0ibmV0d29yayIK K2lwZnNfcHJvdG9jb2xfc2VsZWN0PSJodHRwc19wcm90b2NvbCIKK2lwbnNfcHJvdG9jb2xfc2Vs ZWN0PSJodHRwc19wcm90b2NvbCIKIAogIyBleHRlcm5hbCBsaWJyYXJ5IHByb3RvY29scwogbGli YW1xcF9wcm90b2NvbF9kZXBzPSJsaWJyYWJiaXRtcSIKZGlmZiAtLWdpdCBhL2RvYy9wcm90b2Nv bHMudGV4aSBiL2RvYy9wcm90b2NvbHMudGV4aQppbmRleCBkMjA3ZGYwYjUyLi45MGE5ZWVmZGUw IDEwMDY0NAotLS0gYS9kb2MvcHJvdG9jb2xzLnRleGkKKysrIGIvZG9jL3Byb3RvY29scy50ZXhp CkBAIC0yMDI1LDUgKzIwMjUsMzUgQEAgZGVjb2RpbmcgZXJyb3JzLgogCiBAZW5kIHRhYmxlCiAK K0BzZWN0aW9uIGlwZnMKKworSW50ZXJQbGFuZXRhcnkgRmlsZSBTeXN0ZW0gKElQRlMpIHByb3Rv Y29sIHN1cHBvcnQuIE9uZSBjYW4gYWNjZXNzIGZpbGVzIHN0b3JlZAorb24gdGhlIElQRlMgbmV0 d29yayB0aHJvdWdoIHNvIGNhbGxlZCBnYXRld2F5cy4gVGhvc2UgYXJlIGh0dHAocykgZW5kcG9p bnRzLgorVGhpcyBwcm90b2NvbCB3cmFwcyB0aGUgSVBGUyBuYXRpdmUgcHJvdG9jb2xzIChpcGZz Oi8vIGFuZCBpcG5zOi8vKSB0byBiZSBzZW5kCit0byBzdWNoIGEgZ2F0ZXdheS4gVXNlcnMgY2Fu IChhbmQgc2hvdWxkKSBob3N0IHRoZWlyIG93biBub2RlIHdoaWNoIG1lYW5zIHRoaXMKK3Byb3Rv Y29sIHdpbGwgdXNlIHlvdXIgbG9jYWwgZ2F0ZXdheSB0byBhY2Nlc3MgZmlsZXMgb24gdGhlIElQ RlMgbmV0d29yay4KKworSWYgYSB1c2VyIGRvZXNuJ3QgaGF2ZSBhIG5vZGUgb2YgdGhlaXIgb3du IHRoZW4gdGhlIHB1YmxpYyBnYXRld2F5IGR3ZWIubGluayBpcwordXNlZCBieSBkZWZhdWx0Lgor CitZb3UgY2FuIHVzZSB0aGlzIHByb3RvY29sIGluIDIgd2F5cy4gVXNpbmcgSVBGUzoKK0BleGFt cGxlCitmZnBsYXkgaXBmczovL1FtYkd0SmcyM3NraHZGbXU5bUppZVBWQnloZnp1NXJ3bzc0TUVr VkRZQW1GNVQKK0BlbmQgZXhhbXBsZQorCitPciB0aGUgSVBOUyBwcm90b2NvbCAoSVBOUyBpcyBt dXRhYmxlIElQRlMpOgorQGV4YW1wbGUKK2ZmcGxheSBpcG5zOi8vUW1iR3RKZzIzc2todkZtdTlt SmllUFZCeWhmenU1cndvNzRNRWtWRFlBbUY1VAorQGVuZCBleGFtcGxlCisKK1lvdSBjYW4gYWxz byBjaGFuZ2UgdGhlIGdhdGV3YXkgdG8gYmUgdXNlZDoKKworQHRhYmxlIEBvcHRpb24KKworQGl0 ZW0gZ2F0ZXdheQorRGVmaW5lcyB0aGUgZ2F0ZXdheSB0byB1c2UuIFdoZW4gbm90aGluZyBpcyBw cm92aWRlZCB0aGUgcHJvdG9jb2wgd2lsbCBmaXJzdCB0cnkKK3lvdXIgbG9jYWwgZ2F0ZXdheS4g SWYgdGhhdCBmYWlscyBkd2ViLmxpbmsgd2lsbCBiZSB1c2VkLgorCitAZW5kIHRhYmxlCiAKIEBj IG1hbiBlbmQgUFJPVE9DT0xTCmRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9NYWtlZmlsZSBiL2xp YmF2Zm9ybWF0L01ha2VmaWxlCmluZGV4IGQ3MTgyZDZiZDguLmUzMjMzZmQ3YWMgMTAwNjQ0Ci0t LSBhL2xpYmF2Zm9ybWF0L01ha2VmaWxlCisrKyBiL2xpYmF2Zm9ybWF0L01ha2VmaWxlCkBAIC02 NjAsNiArNjYwLDggQEAgT0JKUy0kKENPTkZJR19TUlRQX1BST1RPQ09MKSAgICAgICAgICAgICAr PSBzcnRwcHJvdG8ubyBzcnRwLm8KIE9CSlMtJChDT05GSUdfU1VCRklMRV9QUk9UT0NPTCkgICAg ICAgICAgKz0gc3ViZmlsZS5vCiBPQkpTLSQoQ09ORklHX1RFRV9QUk9UT0NPTCkgICAgICAgICAg ICAgICs9IHRlZXByb3RvLm8gdGVlX2NvbW1vbi5vCiBPQkpTLSQoQ09ORklHX1RDUF9QUk9UT0NP TCkgICAgICAgICAgICAgICs9IHRjcC5vCitPQkpTLSQoQ09ORklHX0lQRlNfUFJPVE9DT0wpICAg ICAgICAgICAgICs9IGlwZnNnYXRld2F5Lm8KK09CSlMtJChDT05GSUdfSVBOU19QUk9UT0NPTCkg ICAgICAgICAgICAgKz0gaXBmc2dhdGV3YXkubwogVExTLU9CSlMtJChDT05GSUdfR05VVExTKSAg ICAgICAgICAgICAgICArPSB0bHNfZ251dGxzLm8KIFRMUy1PQkpTLSQoQ09ORklHX0xJQlRMUykg ICAgICAgICAgICAgICAgKz0gdGxzX2xpYnRscy5vCiBUTFMtT0JKUy0kKENPTkZJR19NQkVEVExT KSAgICAgICAgICAgICAgICs9IHRsc19tYmVkdGxzLm8KZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0 L2lwZnNnYXRld2F5LmMgYi9saWJhdmZvcm1hdC9pcGZzZ2F0ZXdheS5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjA1ZmQzN2JiYzUKLS0tIC9kZXYvbnVsbAorKysgYi9s aWJhdmZvcm1hdC9pcGZzZ2F0ZXdheS5jCkBAIC0wLDAgKzEsMzM5IEBACisvKgorICogSVBGUyBh bmQgSVBOUyBwcm90b2NvbCBzdXBwb3J0IHRocm91Z2ggSVBGUyBHYXRld2F5LgorICogQ29weXJp Z2h0IChjKSAyMDIyIE1hcmsgR2Fpc2VyCisgKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZt cGVnLgorICoKKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz ZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2Us IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogRkZtcGVnIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsg aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwg NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVT QQorICovCisKKyNpbmNsdWRlICJsaWJhdnV0aWwvYXZzdHJpbmcuaCIKKyNpbmNsdWRlICJsaWJh dnV0aWwvb3B0LmgiCisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlICJvc19zdXBwb3J0 LmgiCisjaW5jbHVkZSAidXJsLmgiCisKK3R5cGVkZWYgc3RydWN0IElQRlNHYXRld2F5Q29udGV4 dCB7CisgICAgQVZDbGFzcyAqY2xhc3M7CisgICAgVVJMQ29udGV4dCAqaW5uZXI7CisgICAgLy8g SXMgZmlsbGVkIGJ5IHRoZSAtZ2F0ZXdheSBhcmd1bWVudCBhbmQgbm90IGNoYW5nZWQgYWZ0ZXIu CisgICAgY2hhciAqZ2F0ZXdheTsKKyAgICAvLyBJZiB0aGUgYWJvdmUgZ2F0ZXdheSBpcyBub24g bnVsbCwgaXQgd2lsbCBiZSBjb3BpZWQgaW50byB0aGlzIGJ1ZmZlci4KKyAgICAvLyBFbHNlIHRo aXMgYnVmZmVyIHdpbGwgY29udGFpbiB0aGUgYXV0byBkZXRlY3RlZCBnYXRld2F5LgorICAgIC8v IEluIGVpdGhlciBjYXNlLCB0aGUgZ2F0ZXdheSB0byB1c2Ugd2lsbCBiZSBpbiB0aGlzIGJ1ZmZl ci4KKyAgICBjaGFyIGdhdGV3YXlfYnVmZmVyW1BBVEhfTUFYXTsKK30gSVBGU0dhdGV3YXlDb250 ZXh0OworCisvLyBBIGJlc3QtZWZmb3J0IHdheSB0byBmaW5kIHRoZSBJUEZTIGdhdGV3YXkuCisv LyBPbmx5IHRoZSBtb3N0IGFwcHJvcGlhdGUgZ2F0ZXdheSBpcyBzZXQuIEl0J3Mgbm90IGFjdHVh bGx5IHJlcXVlc3RlZAorLy8gKGh0dHAgY2FsbCkgdG8gcHJldmVudCBhIHBvdGVudGlhbCBzbG93 ZG93biBpbiBzdGFydHVwLiBBIHBvdGVudGlhbCB0aW1lb3V0CisvLyBpcyBoYW5kbGVkIGJ5IHRo ZSBIVFRQIHByb3RvY29sLgorc3RhdGljIGludCBwb3B1bGF0ZV9pcGZzX2dhdGV3YXkoVVJMQ29u dGV4dCAqaCkKK3sKKyAgICBJUEZTR2F0ZXdheUNvbnRleHQgKmMgPSBoLT5wcml2X2RhdGE7Cisg ICAgY2hhciBpcGZzX2Z1bGxfZGF0YV9mb2xkZXJbUEFUSF9NQVhdOworICAgIGNoYXIgaXBmc19n YXRld2F5X2ZpbGVbUEFUSF9NQVhdOworICAgIHN0cnVjdCBzdGF0IHN0OworICAgIGludCBzdGF0 X3JldCA9IDA7CisgICAgaW50IHJldCA9IEFWRVJST1IoRUlOVkFMKTsKKyAgICBGSUxFICpnYXRl d2F5X2ZpbGUgPSBOVUxMOworCisgICAgLy8gVGVzdCAkSVBGU19HQVRFV0FZLgorICAgIGlmIChn ZXRlbnYoIklQRlNfR0FURVdBWSIpICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKHNucHJpbnRmKGMt PmdhdGV3YXlfYnVmZmVyLCBzaXplb2YoYy0+Z2F0ZXdheV9idWZmZXIpLCAiJXMiLAorICAgICAg ICAgICAgICAgICAgICAgZ2V0ZW52KCJJUEZTX0dBVEVXQVkiKSkKKyAgICAgICAgICAgID49IHNp emVvZihjLT5nYXRld2F5X2J1ZmZlcikpIHsKKyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0df V0FSTklORywKKyAgICAgICAgICAgICAgICAgICAiVGhlIElQRlNfR0FURVdBWSBlbnZpcm9ubWVu dCB2YXJpYWJsZSAiCisgICAgICAgICAgICAgICAgICAgImV4Y2VlZHMgdGhlIG1heGltdW0gbGVu Z3RoLiAiCisgICAgICAgICAgICAgICAgICAgIldlIGFsbG93IGEgbWF4IG9mICV6dSBjaGFyYWN0 ZXJzXG4iLAorICAgICAgICAgICAgICAgICAgIHNpemVvZihjLT5nYXRld2F5X2J1ZmZlcikpOwor ICAgICAgICAgICAgcmV0ID0gQVZFUlJPUihFSU5WQUwpOworICAgICAgICAgICAgZ290byBlcnI7 CisgICAgICAgIH0KKworICAgICAgICByZXQgPSAxOworICAgICAgICBnb3RvIGVycjsKKyAgICB9 IGVsc2UKKyAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19ERUJVRywgIiRJUEZTX0dBVEVXQVkgaXMg ZW1wdHkuXG4iKTsKKworICAgIC8vIFdlIG5lZWQgdG8ga25vdyB0aGUgSVBGUyBmb2xkZXIgdG8g LSBldmVudHVhbGx5IC0gcmVhZCB0aGUgY29udGVudHMgb2YKKyAgICAvLyB0aGUgImdhdGV3YXki IGZpbGUgd2hpY2ggd291bGQgdGVsbCB1cyB0aGUgZ2F0ZXdheSB0byB1c2UuCisgICAgaWYgKGdl dGVudigiSVBGU19QQVRIIikgPT0gTlVMTCkgeworICAgICAgICBhdl9sb2coaCwgQVZfTE9HX0RF QlVHLCAiJElQRlNfUEFUSCBpcyBlbXB0eS5cbiIpOworCisgICAgICAgIC8vIFRyeSB2aWEgdGhl IGhvbWUgZm9sZGVyLgorICAgICAgICBpZiAoZ2V0ZW52KCJIT01FIikgPT0gTlVMTCkgeworICAg ICAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLCAiJEhPTUUgYXBwZWFycyB0byBiZSBl bXB0eS5cbiIpOworICAgICAgICAgICAgcmV0ID0gQVZFUlJPUihFSU5WQUwpOworICAgICAgICAg ICAgZ290byBlcnI7CisgICAgICAgIH0KKworICAgICAgICAvLyBWZXJpZnkgdGhlIGNvbXBvc2Vk IHBhdGggZml0cy4KKyAgICAgICAgaWYgKHNucHJpbnRmKGlwZnNfZnVsbF9kYXRhX2ZvbGRlciwg c2l6ZW9mKGlwZnNfZnVsbF9kYXRhX2ZvbGRlciksCisgICAgICAgICAgICAgICAgICAgICAiJXMv LmlwZnMvIiwgZ2V0ZW52KCJIT01FIikpCisgICAgICAgICAgICA+PSBzaXplb2YoaXBmc19mdWxs X2RhdGFfZm9sZGVyKSkgeworICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLAor ICAgICAgICAgICAgICAgICAgICJUaGUgSVBGUyBkYXRhIHBhdGggZXhjZWVkcyB0aGUgIgorICAg ICAgICAgICAgICAgICAgICJtYXggcGF0aCBsZW5ndGggKCV6dSlcbiIsCisgICAgICAgICAgICAg ICAgICAgc2l6ZW9mKGlwZnNfZnVsbF9kYXRhX2ZvbGRlcikpOworICAgICAgICAgICAgcmV0ID0g QVZFUlJPUihFSU5WQUwpOworICAgICAgICAgICAgZ290byBlcnI7CisgICAgICAgIH0KKworICAg ICAgICAvLyBTdGF0IHRoZSBmb2xkZXIuCisgICAgICAgIC8vIEl0IHNob3VsZCBleGlzdCBpbiBh IGRlZmF1bHQgSVBGUyBzZXR1cCB3aGVuIHJ1biBhcyBsb2NhbCB1c2VyLgorICAgICAgICBzdGF0 X3JldCA9IHN0YXQoaXBmc19mdWxsX2RhdGFfZm9sZGVyLCAmc3QpOworCisgICAgICAgIGlmIChz dGF0X3JldCA8IDApIHsKKyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfSU5GTywgIlVuYWJs ZSB0byBmaW5kIElQRlMgZm9sZGVyLiBXZSB0cmllZDpcbiIpOworICAgICAgICAgICAgYXZfbG9n KGgsIEFWX0xPR19JTkZPLCAiLSAkSVBGU19QQVRILCB3aGljaCB3YXMgZW1wdHkuXG4iKTsKKyAg ICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfSU5GTywgIi0gJEhPTUUvLmlwZnMgKGZ1bGwgdXJp OiAlcykgd2hpY2ggZG9lc24ndCBleGlzdC5cbiIsIGlwZnNfZnVsbF9kYXRhX2ZvbGRlcik7Cisg ICAgICAgICAgICByZXQgPSBBVkVSUk9SKEVOT0VOVCk7CisgICAgICAgICAgICBnb3RvIGVycjsK KyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChzbnByaW50ZihpcGZzX2Z1bGxf ZGF0YV9mb2xkZXIsIHNpemVvZihpcGZzX2Z1bGxfZGF0YV9mb2xkZXIpLCAiJXMiLAorICAgICAg ICAgICAgICAgICAgICAgZ2V0ZW52KCJJUEZTX1BBVEgiKSkKKyAgICAgICAgICAgID49IHNpemVv ZihpcGZzX2Z1bGxfZGF0YV9mb2xkZXIpKSB7CisgICAgICAgICAgICBhdl9sb2coaCwgQVZfTE9H X1dBUk5JTkcsCisgICAgICAgICAgICAgICAgICAgIlRoZSBJUEZTX1BBVEggZW52aXJvbm1lbnQg dmFyaWFibGUgIgorICAgICAgICAgICAgICAgICAgICJleGNlZWRzIHRoZSBtYXhpbXVtIGxlbmd0 aC4gIgorICAgICAgICAgICAgICAgICAgICJXZSBhbGxvdyBhIG1heCBvZiAlenUgY2hhcmFjdGVy c1xuIiwKKyAgICAgICAgICAgICAgICAgICBzaXplb2YoYy0+Z2F0ZXdheV9idWZmZXIpKTsKKyAg ICAgICAgICAgIHJldCA9IEFWRVJST1IoRUlOVkFMKTsKKyAgICAgICAgICAgIGdvdG8gZXJyOwor ICAgICAgICB9CisgICAgfQorCisgICAgLy8gQ29weSB0aGUgZnVsbHkgY29tcG9zZWQgZ2F0ZXdh eSBwYXRoIGludG8gaXBmc19nYXRld2F5X2ZpbGUuCisgICAgaWYgKHNucHJpbnRmKGlwZnNfZ2F0 ZXdheV9maWxlLCBzaXplb2YoaXBmc19nYXRld2F5X2ZpbGUpLCAiJXNnYXRld2F5IiwKKyAgICAg ICAgICAgICAgICAgaXBmc19mdWxsX2RhdGFfZm9sZGVyKQorICAgICAgICA+PSBzaXplb2YoaXBm c19nYXRld2F5X2ZpbGUpKSB7CisgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywKKyAg ICAgICAgICAgICAgICJUaGUgSVBGUyBnYXRld2F5IGZpbGUgcGF0aCBleGNlZWRzICIKKyAgICAg ICAgICAgICAgICJ0aGUgbWF4IHBhdGggbGVuZ3RoICglenUpXG4iLAorICAgICAgICAgICAgICAg c2l6ZW9mKGlwZnNfZ2F0ZXdheV9maWxlKSk7CisgICAgICAgIHJldCA9IEFWRVJST1IoRU5PRU5U KTsKKyAgICAgICAgZ290byBlcnI7CisgICAgfQorCisgICAgLy8gR2V0IHRoZSBjb250ZW50cyBv ZiB0aGUgZ2F0ZXdheSBmaWxlLgorICAgIGdhdGV3YXlfZmlsZSA9IGF2X2ZvcGVuX3V0ZjgoaXBm c19nYXRld2F5X2ZpbGUsICJyIik7CisgICAgaWYgKCFnYXRld2F5X2ZpbGUpIHsKKyAgICAgICAg YXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLAorICAgICAgICAgICAgICAgIlRoZSBJUEZTIGdhdGV3 YXkgZmlsZSAoZnVsbCB1cmk6ICVzKSBkb2Vzbid0IGV4aXN0LiAiCisgICAgICAgICAgICAgICAi SXMgdGhlIGdhdGV3YXkgZW5hYmxlZD9cbiIsCisgICAgICAgICAgICAgICBpcGZzX2dhdGV3YXlf ZmlsZSk7CisgICAgICAgIHJldCA9IEFWRVJST1IoRU5PRU5UKTsKKyAgICAgICAgZ290byBlcnI7 CisgICAgfQorCisgICAgLy8gUmVhZCBhIHNpbmdsZSBsaW5lIChmZ2V0cyBzdG9wcyBhdCBuZXcg bGluZSBtYXJrKS4KKyAgICBpZiAoIWZnZXRzKGMtPmdhdGV3YXlfYnVmZmVyLCBzaXplb2YoYy0+ Z2F0ZXdheV9idWZmZXIpIC0gMSwgZ2F0ZXdheV9maWxlKSkgeworICAgICAgICBhdl9sb2coaCwg QVZfTE9HX1dBUk5JTkcsICJVbmFibGUgdG8gcmVhZCBmcm9tIGZpbGUgKGZ1bGwgdXJpOiAlcyku XG4iLAorICAgICAgICAgICAgICAgaXBmc19nYXRld2F5X2ZpbGUpOworICAgICAgICByZXQgPSBB VkVSUk9SKEVOT0VOVCk7CisgICAgICAgIGdvdG8gZXJyOworICAgIH0KKworICAgIC8vIFJlcGxh Y2UgZmlyc3Qgb2NjdXJlbmNlIG9mIGVuZCBvZiBsaW5lIHdpdGggXDAKKyAgICBjLT5nYXRld2F5 X2J1ZmZlcltzdHJjc3BuKGMtPmdhdGV3YXlfYnVmZmVyLCAiXHJcbiIpXSA9IDA7CisKKyAgICAv LyBJZiBzdHJsZW4gZmluZHMgYW55dGhpbmcgbG9uZ2VyIHRoZW4gMCBjaGFyYWN0ZXJzIHRoZW4g d2UgaGF2ZSBhCisgICAgLy8gcG90ZW50aWFsIGdhdGV3YXkgdXJsLgorICAgIGlmICgqYy0+Z2F0 ZXdheV9idWZmZXIgPT0gJ1wwJykgeworICAgICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcs CisgICAgICAgICAgICAgICAiVGhlIElQRlMgZ2F0ZXdheSBmaWxlIChmdWxsIHVyaTogJXMpIGFw cGVhcnMgdG8gYmUgZW1wdHkuICIKKyAgICAgICAgICAgICAgICJJcyB0aGUgZ2F0ZXdheSBzdGFy dGVkP1xuIiwKKyAgICAgICAgICAgICAgIGlwZnNfZ2F0ZXdheV9maWxlKTsKKyAgICAgICAgcmV0 ID0gQVZFUlJPUihFSUxTRVEpOworICAgICAgICBnb3RvIGVycjsKKyAgICB9IGVsc2UgeworICAg ICAgICAvLyBXZSdyZSBkb25lLCB0aGUgYy0+Z2F0ZXdheV9idWZmZXIgaGFzIHNvbWV0aGluZyB0 aGF0IGxvb2tzIHZhbGlkLgorICAgICAgICByZXQgPSAxOworICAgICAgICBnb3RvIGVycjsKKyAg ICB9CisKK2VycjoKKyAgICBpZiAoZ2F0ZXdheV9maWxlKQorICAgICAgICBmY2xvc2UoZ2F0ZXdh eV9maWxlKTsKKworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgdHJhbnNsYXRlX2lw ZnNfdG9faHR0cChVUkxDb250ZXh0ICpoLCBjb25zdCBjaGFyICp1cmksIGludCBmbGFncywgQVZE aWN0aW9uYXJ5ICoqb3B0aW9ucykKK3sKKyAgICBjb25zdCBjaGFyICppcGZzX2NpZDsKKyAgICBj aGFyICpmdWxsdXJpID0gTlVMTDsKKyAgICBpbnQgcmV0OworICAgIElQRlNHYXRld2F5Q29udGV4 dCAqYyA9IGgtPnByaXZfZGF0YTsKKworICAgIC8vIFRlc3QgZm9yIGlwZnM6Ly8sIGlwZnM6LCBp cG5zOi8vIGFuZCBpcG5zOi4gVGhpcyBwcmVmaXggaXMgc3RyaXBwZWQgZnJvbQorICAgIC8vIHRo ZSBzdHJpbmcgbGVhdmluZyBqdXN0IHRoZSBDSUQgaW4gaXBmc19jaWQuCisgICAgaW50IGlzX2lw ZnMgPSBhdl9zdHJpc3RhcnQodXJpLCAiaXBmczovLyIsICZpcGZzX2NpZCk7CisgICAgaW50IGlz X2lwbnMgPSBhdl9zdHJpc3RhcnQodXJpLCAiaXBuczovLyIsICZpcGZzX2NpZCk7CisKKyAgICAv LyBXZSBtdXN0IGhhdmUgZWl0aGVyIGlwbnMgb3IgaXBmcy4KKyAgICBpZiAoIWlzX2lwZnMgJiYg IWlzX2lwbnMpIHsKKyAgICAgICAgcmV0ID0gQVZFUlJPUihFSU5WQUwpOworICAgICAgICBhdl9s b2coaCwgQVZfTE9HX1dBUk5JTkcsICJVbnN1cHBvcnRlZCB1cmwgJXNcbiIsIHVyaSk7CisgICAg ICAgIGdvdG8gZXJyOworICAgIH0KKworICAgIC8vIElmIHRoZSBDSUQgaGFzIGEgbGVuZ3RoIGdy ZWF0ZXIgdGhlbiAwIHRoZW4gd2UgYXNzdW1lIHdlIGhhdmUgYSBwcm9wZXIgd29ya2luZyBvbmUu CisgICAgLy8gSXQgY291bGQgc3RpbGwgYmUgd3JvbmcgYnV0IGluIHRoYXQgY2FzZSB0aGUgZ2F0 ZXdheSBzaG91bGQgc2F2ZSB1cyBhbmQKKyAgICAvLyBydXR1cm4gYSA0MDMgZXJyb3IuIFRoZSBo dHRwIHByb3RvY29sIGhhbmRsZXMgdGhpcy4KKyAgICBpZiAoc3RybGVuKGlwZnNfY2lkKSA8IDEp IHsKKyAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLCAiQSBDSUQgbXVzdCBiZSBwcm92 aWRlZC5cbiIpOworICAgICAgICByZXQgPSBBVkVSUk9SKEVJTFNFUSk7CisgICAgICAgIGdvdG8g ZXJyOworICAgIH0KKworICAgIC8vIFBvcHVsYXRlIGMtPmdhdGV3YXlfYnVmZmVyIHdpdGggd2hh dGV2ZXIgaXMgaW4gYy0+Z2F0ZXdheQorICAgIGlmIChjLT5nYXRld2F5ICE9IE5VTEwpIHsKKyAg ICAgICAgaWYgKHNucHJpbnRmKGMtPmdhdGV3YXlfYnVmZmVyLCBzaXplb2YoYy0+Z2F0ZXdheV9i dWZmZXIpLCAiJXMiLAorICAgICAgICAgICAgICAgICAgICAgYy0+Z2F0ZXdheSkKKyAgICAgICAg ICAgID49IHNpemVvZihjLT5nYXRld2F5X2J1ZmZlcikpIHsKKyAgICAgICAgICAgIGF2X2xvZyho LCBBVl9MT0dfV0FSTklORywKKyAgICAgICAgICAgICAgICAgICAiVGhlIC1nYXRld2F5IHBhcmFt ZXRlciBpcyB0b28gbG9uZy4gIgorICAgICAgICAgICAgICAgICAgICJXZSBhbGxvdyBhIG1heCBv ZiAlenUgY2hhcmFjdGVyc1xuIiwKKyAgICAgICAgICAgICAgICAgICBzaXplb2YoYy0+Z2F0ZXdh eV9idWZmZXIpKTsKKyAgICAgICAgICAgIHJldCA9IEFWRVJST1IoRUlOVkFMKTsKKyAgICAgICAg ICAgIGdvdG8gZXJyOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gUG9wdWxh dGUgdGhlIElQRlMgZ2F0ZXdheSBpZiB3ZSBoYXZlIGFueS4KKyAgICAgICAgLy8gSWYgbm90LCBp bmZvcm0gdGhlIHVzZXIgaG93IHRvIHByb3Blcmx5IHNldCBvbmUuCisgICAgICAgIHJldCA9IHBv cHVsYXRlX2lwZnNfZ2F0ZXdheShoKTsKKworICAgICAgICBpZiAocmV0IDwgMSkgeworICAgICAg ICAgICAgLy8gV2UgZmFsbGJhY2sgb24gZHdlYi5saW5rIChtYW5hZ2VkIGJ5IFByb3RvY29sIExh YnMpLgorICAgICAgICAgICAgc25wcmludGYoYy0+Z2F0ZXdheV9idWZmZXIsIHNpemVvZihjLT5n YXRld2F5X2J1ZmZlciksICJodHRwczovL2R3ZWIubGluayIpOworCisgICAgICAgICAgICBhdl9s b2coaCwgQVZfTE9HX1dBUk5JTkcsCisgICAgICAgICAgICAgICAgICAgIklQRlMgZG9lcyBub3Qg YXBwZWFyIHRvIGJlIHJ1bm5pbmcuICIKKyAgICAgICAgICAgICAgICAgICAiWW914oCZcmUgbm93 IHVzaW5nIHRoZSBwdWJsaWMgZ2F0ZXdheSBhdCBkd2ViLmxpbmsuXG4iKTsKKyAgICAgICAgICAg IGF2X2xvZyhoLCBBVl9MT0dfSU5GTywKKyAgICAgICAgICAgICAgICAgICAiSW5zdGFsbGluZyBJ UEZTIGxvY2FsbHkgaXMgcmVjb21tZW5kZWQgdG8gIgorICAgICAgICAgICAgICAgICAgICJpbXBy b3ZlIHBlcmZvcm1hbmNlIGFuZCByZWxpYWJpbGl0eSwgIgorICAgICAgICAgICAgICAgICAgICJh bmQgbm90IHNoYXJlIGFsbCB5b3VyIGFjdGl2aXR5IHdpdGggYSBzaW5nbGUgSVBGUyBnYXRld2F5 LlxuIgorICAgICAgICAgICAgICAgICAgICJUaGVyZSBhcmUgbXVsdGlwbGUgb3B0aW9ucyB0byBk ZWZpbmUgdGhpcyBnYXRld2F5LlxuIgorICAgICAgICAgICAgICAgICAgICIxLiBDYWxsIGZmbXBl ZyB3aXRoIGEgZ2F0ZXdheSBwYXJhbSwgIgorICAgICAgICAgICAgICAgICAgICJ3aXRob3V0IGEg dHJhaWxpbmcgc2xhc2g6IC1nYXRld2F5IDx1cmw+LlxuIgorICAgICAgICAgICAgICAgICAgICIy LiBEZWZpbmUgYW4gJElQRlNfR0FURVdBWSBlbnZpcm9ubWVudCB2YXJpYWJsZSB3aXRoIHRoZSAi CisgICAgICAgICAgICAgICAgICAgImZ1bGwgSFRUUCBVUkwgdG8gdGhlIGdhdGV3YXkgIgorICAg ICAgICAgICAgICAgICAgICJ3aXRob3V0IHRyYWlsaW5nIGZvcndhcmQgc2xhc2guXG4iCisgICAg ICAgICAgICAgICAgICAgIjMuIERlZmluZSBhbiAkSVBGU19QQVRIIGVudmlyb25tZW50IHZhcmlh YmxlICIKKyAgICAgICAgICAgICAgICAgICAiYW5kIHBvaW50IGl0IHRvIHRoZSBJUEZTIGRhdGEg cGF0aCAiCisgICAgICAgICAgICAgICAgICAgIi0gdGhpcyBpcyB0eXBpY2FsbHkgfi8uaXBmc1xu Iik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBUZXN0IGlmIHRoZSBnYXRld2F5IHN0YXJ0 cyB3aXRoIGVpdGhlciBodHRwOi8vIG9yIGh0dHBzOi8vCisgICAgaWYgKGF2X3N0cmlzdGFydChj LT5nYXRld2F5X2J1ZmZlciwgImh0dHA6Ly8iLCBOVUxMKSA9PSAwCisgICAgICAgICYmIGF2X3N0 cmlzdGFydChjLT5nYXRld2F5X2J1ZmZlciwgImh0dHBzOi8vIiwgTlVMTCkgPT0gMCkgeworICAg ICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsCisgICAgICAgICAgICAgICAiVGhlIGdhdGV3 YXkgVVJMIGRpZG4ndCBzdGFydCB3aXRoIGh0dHA6Ly8gb3IgIgorICAgICAgICAgICAgICAgImh0 dHBzOi8vIGFuZCBpcyB0aGVyZWZvcmUgaW52YWxpZC5cbiIpOworICAgICAgICByZXQgPSBBVkVS Uk9SKEVJTFNFUSk7CisgICAgICAgIGdvdG8gZXJyOworICAgIH0KKworICAgIC8vIENvbmNhdGVu YXRlIHRoZSB1cmwuCisgICAgLy8gVGhpcyBlbmRzIHVwIHdpdGggc29tZXRoaW5nIGxpa2U6IGh0 dHA6Ly9sb2NhbGhvc3Q6ODA4MC9pcGZzL1FtLi4uLi4KKyAgICAvLyBUaGUgZm9ybWF0IG9mICIl cyVzJXMlcyIgaXMgdGhlIGZvbGxvd2luZzoKKyAgICAvLyAxc3QgJXMgPSBUaGUgZ2F0ZXdheS4K KyAgICAvLyAybmQgJXMgPSBJZiB0aGUgZ2F0ZXdheSBkaWRuJ3QgZW5kIGluIGEgc2xhc2gsIGFk ZCBhICIvIi4gT3RoZXJ3aXNlIGl0J3MgYW4gZW1wdHkgc3RyaW5nCisgICAgLy8gM3JkICVzID0g RWl0aGVyIGlwbnMvIG9yIGlwZnMvLgorICAgIC8vIDR0aCAlcyA9IFRoZSBJUEZTIENJRCAoUW0u Li4sIGJhZnkuLi4sIC4uLikuCisgICAgZnVsbHVyaSA9IGF2X2FzcHJpbnRmKCIlcyVzJXMlcyIs CisgICAgICAgICAgICAgICAgICAgICAgICAgIGMtPmdhdGV3YXlfYnVmZmVyLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAoYy0+Z2F0ZXdheV9idWZmZXJbc3RybGVuKGMtPmdhdGV3YXlfYnVm ZmVyKSAtIDFdID09ICcvJykgPyAiIiA6ICIvIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg KGlzX2lwbnMpID8gImlwbnMvIiA6ICJpcGZzLyIsCisgICAgICAgICAgICAgICAgICAgICAgICAg IGlwZnNfY2lkKTsKKworICAgIGlmICghZnVsbHVyaSkgeworICAgICAgICBhdl9sb2coaCwgQVZf TE9HX0VSUk9SLCAiRmFpbGVkIHRvIGNvbXBvc2UgdGhlIFVSTFxuIik7CisgICAgICAgIHJldCA9 IEFWRVJST1IoRU5PTUVNKTsKKyAgICAgICAgZ290byBlcnI7CisgICAgfQorCisgICAgLy8gUGFz cyB0aGUgVVJMIGJhY2sgdG8gRkZNcGVnJ3MgcHJvdG9jb2wgaGFuZGxlci4KKyAgICByZXQgPSBm ZnVybF9vcGVuX3doaXRlbGlzdCgmYy0+aW5uZXIsIGZ1bGx1cmksIGZsYWdzLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICZoLT5pbnRlcnJ1cHRfY2FsbGJhY2ssIG9wdGlvbnMsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaC0+cHJvdG9jb2xfd2hpdGVsaXN0LAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGgtPnByb3RvY29sX2JsYWNrbGlzdCwgaCk7Cisg ICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLCAiVW5h YmxlIHRvIG9wZW4gcmVzb3VyY2U6ICVzXG4iLCBmdWxsdXJpKTsKKyAgICAgICAgZ290byBlcnI7 CisgICAgfQorCitlcnI6CisgICAgYXZfZnJlZShmdWxsdXJpKTsKKyAgICByZXR1cm4gcmV0Owor fQorCitzdGF0aWMgaW50IGlwZnNfcmVhZChVUkxDb250ZXh0ICpoLCB1bnNpZ25lZCBjaGFyICpi dWYsIGludCBzaXplKQoreworICAgIElQRlNHYXRld2F5Q29udGV4dCAqYyA9IGgtPnByaXZfZGF0 YTsKKyAgICByZXR1cm4gZmZ1cmxfcmVhZChjLT5pbm5lciwgYnVmLCBzaXplKTsKK30KKworc3Rh dGljIGludDY0X3QgaXBmc19zZWVrKFVSTENvbnRleHQgKmgsIGludDY0X3QgcG9zLCBpbnQgd2hl bmNlKQoreworICAgIElQRlNHYXRld2F5Q29udGV4dCAqYyA9IGgtPnByaXZfZGF0YTsKKyAgICBy ZXR1cm4gZmZ1cmxfc2VlayhjLT5pbm5lciwgcG9zLCB3aGVuY2UpOworfQorCitzdGF0aWMgaW50 IGlwZnNfY2xvc2UoVVJMQ29udGV4dCAqaCkKK3sKKyAgICBJUEZTR2F0ZXdheUNvbnRleHQgKmMg PSBoLT5wcml2X2RhdGE7CisgICAgcmV0dXJuIGZmdXJsX2Nsb3NlcCgmYy0+aW5uZXIpOworfQor CisjZGVmaW5lIE9GRlNFVCh4KSBvZmZzZXRvZihJUEZTR2F0ZXdheUNvbnRleHQsIHgpCisKK3N0 YXRpYyBjb25zdCBBVk9wdGlvbiBvcHRpb25zW10gPSB7CisgICAgeyJnYXRld2F5IiwgIlRoZSBn YXRld2F5IHRvIGFzayBmb3IgSVBGUyBkYXRhLiIsIE9GRlNFVChnYXRld2F5KSwgQVZfT1BUX1RZ UEVfU1RSSU5HLCB7LnN0ciA9IE5VTEx9LCAwLCAwLCBBVl9PUFRfRkxBR19ERUNPRElOR19QQVJB TX0sCisgICAge05VTEx9LAorfTsKKworc3RhdGljIGNvbnN0IEFWQ2xhc3MgaXBmc19jb250ZXh0 X2NsYXNzID0geworICAgIC5jbGFzc19uYW1lICAgICA9ICJJUEZTIiwKKyAgICAuaXRlbV9uYW1l ICAgICAgPSBhdl9kZWZhdWx0X2l0ZW1fbmFtZSwKKyAgICAub3B0aW9uICAgICAgICAgPSBvcHRp b25zLAorICAgIC52ZXJzaW9uICAgICAgICA9IExJQkFWVVRJTF9WRVJTSU9OX0lOVCwKK307CisK K2NvbnN0IFVSTFByb3RvY29sIGZmX2lwZnNfcHJvdG9jb2wgPSB7CisgICAgLm5hbWUgICAgICAg ICAgICAgICA9ICJpcGZzIiwKKyAgICAudXJsX29wZW4yICAgICAgICAgID0gdHJhbnNsYXRlX2lw ZnNfdG9faHR0cCwKKyAgICAudXJsX3JlYWQgICAgICAgICAgID0gaXBmc19yZWFkLAorICAgIC51 cmxfc2VlayAgICAgICAgICAgPSBpcGZzX3NlZWssCisgICAgLnVybF9jbG9zZSAgICAgICAgICA9 IGlwZnNfY2xvc2UsCisgICAgLnByaXZfZGF0YV9zaXplICAgICA9IHNpemVvZihJUEZTR2F0ZXdh eUNvbnRleHQpLAorICAgIC5wcml2X2RhdGFfY2xhc3MgICAgPSAmaXBmc19jb250ZXh0X2NsYXNz LAorfTsKKworY29uc3QgVVJMUHJvdG9jb2wgZmZfaXBuc19wcm90b2NvbCA9IHsKKyAgICAubmFt ZSAgICAgICAgICAgICAgID0gImlwbnMiLAorICAgIC51cmxfb3BlbjIgICAgICAgICAgPSB0cmFu c2xhdGVfaXBmc190b19odHRwLAorICAgIC51cmxfcmVhZCAgICAgICAgICAgPSBpcGZzX3JlYWQs CisgICAgLnVybF9zZWVrICAgICAgICAgICA9IGlwZnNfc2VlaywKKyAgICAudXJsX2Nsb3NlICAg ICAgICAgID0gaXBmc19jbG9zZSwKKyAgICAucHJpdl9kYXRhX3NpemUgICAgID0gc2l6ZW9mKElQ RlNHYXRld2F5Q29udGV4dCksCisgICAgLnByaXZfZGF0YV9jbGFzcyAgICA9ICZpcGZzX2NvbnRl eHRfY2xhc3MsCit9OwpkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvcHJvdG9jb2xzLmMgYi9saWJh dmZvcm1hdC9wcm90b2NvbHMuYwppbmRleCBkMDc1NjNjZDBjLi42ZWU2MmE1OThhIDEwMDY0NAot LS0gYS9saWJhdmZvcm1hdC9wcm90b2NvbHMuYworKysgYi9saWJhdmZvcm1hdC9wcm90b2NvbHMu YwpAQCAtNzEsNiArNzEsOCBAQCBleHRlcm4gY29uc3QgVVJMUHJvdG9jb2wgZmZfbGlic3J0X3By b3RvY29sOwogZXh0ZXJuIGNvbnN0IFVSTFByb3RvY29sIGZmX2xpYnNzaF9wcm90b2NvbDsKIGV4 dGVybiBjb25zdCBVUkxQcm90b2NvbCBmZl9saWJzbWJjbGllbnRfcHJvdG9jb2w7CiBleHRlcm4g Y29uc3QgVVJMUHJvdG9jb2wgZmZfbGliem1xX3Byb3RvY29sOworZXh0ZXJuIGNvbnN0IFVSTFBy b3RvY29sIGZmX2lwZnNfcHJvdG9jb2w7CitleHRlcm4gY29uc3QgVVJMUHJvdG9jb2wgZmZfaXBu c19wcm90b2NvbDsKIAogI2luY2x1ZGUgImxpYmF2Zm9ybWF0L3Byb3RvY29sX2xpc3QuYyIKIAot LSAKMi4zNS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBz Oi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3Jp YmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBl Zy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==