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 5CEBD42543 for ; Fri, 18 Mar 2022 14:51:11 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D5BFE68B125; Fri, 18 Mar 2022 16:51:01 +0200 (EET) 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 8209768AC6D for ; Fri, 18 Mar 2022 16:50:55 +0200 (EET) Received: by mail-ed1-f44.google.com with SMTP id z92so9591136ede.13 for ; Fri, 18 Mar 2022 07:50:55 -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=hsWRAus6lmf6Awl3E35Fw67GKRKg4D/hOt9iWrdiUHk=; b=DQfqyeWDrQ3q7ZWdbEBAUEnRXKmBWwboodqxWIz0QeMqkGFHKy4BEuvXPFTlZNdSbp URey2vcO5MV3/a4vMzTkwMjV6r0Cs285aRvVAzpb6jzvVHd0oRhNBJkTzwWOC/I2yGx9 7Gedg2f11XLfjPsVxehqWtpDes/JSJot94mIYq2U3gdIXxgDbp0IYP92iX7DD+ddoNhx YUivFTVhzuDx8bkiCrWEGQsCTFo5IMHAn2OHfrigYDsOT457vTIrBJ+KvI/CBO7k7p6C vtjyPBmd2NqHZQvOFsl4WDWSKjTIFTgt27cBQRx7poNUZniB7Kg8DK1BzAW4WGUNEw/3 +haw== 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=hsWRAus6lmf6Awl3E35Fw67GKRKg4D/hOt9iWrdiUHk=; b=EsXJrCArMJymfRLQQEMardB9tbbGYZSIsPXyFgG0u+Jd1q56p5nTbHEuzfpBBro7bn w92WwWvWDDT1YR6Fvg2441qc5bGB5CnP8Utad4H4dWwV6LQOr7q1hujyGi2aQ0SVn6ot IxCCZ6tDYZ8lQPbGFXrkT0i4yr22uz+tK/Y7+k3lSLowdjRwhyFLqBitIkKYVm2Opr8H eCq2feXAx5eCQoBMhV/VhnmEXkgyf4wPgTRGksi4z1tudB7mHr4/b+oZ11L7aa7AXsQU YhULl640M6fWIA+R8VnmGZu7oVQI7C5MOi8h8QVsdjPoyPWggjxOViLOB+DvVioPnlBE g27A== X-Gm-Message-State: AOAM5333rdS12BJ5KYvvmvyHIHQl91NqIVRx8Bhe0P18mJZMdyDdm8Fq nY7pUB+hngqJg+KbB1aFX42To/Fx/rI= X-Google-Smtp-Source: ABdhPJzdteXJuKlPXHlTGL41a4lZjFirzp8wM6ddEiGojTU9xPjgsest0daYjs4JUTANwqp0onjonw== X-Received: by 2002:aa7:d5c1:0:b0:419:113:3e2b with SMTP id d1-20020aa7d5c1000000b0041901133e2bmr6615285eds.237.1647615054241; Fri, 18 Mar 2022 07:50:54 -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 hg8-20020a1709072cc800b006d6e469fbf0sm3704010ejc.134.2022.03.18.07.50.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 18 Mar 2022 07:50:53 -0700 (PDT) From: Mark Gaiser To: ffmpeg-devel@ffmpeg.org Date: Fri, 18 Mar 2022 15:50:05 +0100 Message-Id: <20220318145005.241414-2-markg85@gmail.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220318145005.241414-1-markg85@gmail.com> References: <20220318145005.241414-1-markg85@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v9 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 ICAgICB8ICAgMiArCiBsaWJhdmZvcm1hdC9pcGZzZ2F0ZXdheS5jIHwgMzEwICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCiBsaWJhdmZvcm1hdC9wcm90b2NvbHMuYyAgIHwg ICAyICsKIDUgZmlsZXMgY2hhbmdlZCwgMzQ2IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEw MDY0NCBsaWJhdmZvcm1hdC9pcGZzZ2F0ZXdheS5jCgpkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIv Y29uZmlndXJlCmluZGV4IDViMTlhMzVmNTkuLjZmZjA5ZTc5NzQgMTAwNzU1Ci0tLSBhL2NvbmZp Z3VyZQorKysgYi9jb25maWd1cmUKQEAgLTM1ODUsNiArMzU4NSw4IEBAIHVkcF9wcm90b2NvbF9z 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 TWFrZWZpbGUgYi9saWJhdmZvcm1hdC9NYWtlZmlsZQppbmRleCAzZGM2YTQ3OWNjLi40ZWRjZTg0 MjBmIDEwMDY0NAotLS0gYS9saWJhdmZvcm1hdC9NYWtlZmlsZQorKysgYi9saWJhdmZvcm1hdC9N YWtlZmlsZQpAQCAtNjU2LDYgKzY1Niw4IEBAIE9CSlMtJChDT05GSUdfU1JUUF9QUk9UT0NPTCkg ICAgICAgICAgICAgKz0gc3J0cHByb3RvLm8gc3J0cC5vCiBPQkpTLSQoQ09ORklHX1NVQkZJTEVf UFJPVE9DT0wpICAgICAgICAgICs9IHN1YmZpbGUubwogT0JKUy0kKENPTkZJR19URUVfUFJPVE9D T0wpICAgICAgICAgICAgICArPSB0ZWVwcm90by5vIHRlZV9jb21tb24ubwogT0JKUy0kKENPTkZJ R19UQ1BfUFJPVE9DT0wpICAgICAgICAgICAgICArPSB0Y3AubworT0JKUy0kKENPTkZJR19JUEZT X1BST1RPQ09MKSAgICAgICAgICAgICArPSBpcGZzZ2F0ZXdheS5vCitPQkpTLSQoQ09ORklHX0lQ TlNfUFJPVE9DT0wpICAgICAgICAgICAgICs9IGlwZnNnYXRld2F5Lm8KIFRMUy1PQkpTLSQoQ09O RklHX0dOVVRMUykgICAgICAgICAgICAgICAgKz0gdGxzX2dudXRscy5vCiBUTFMtT0JKUy0kKENP TkZJR19MSUJUTFMpICAgICAgICAgICAgICAgICs9IHRsc19saWJ0bHMubwogVExTLU9CSlMtJChD T05GSUdfTUJFRFRMUykgICAgICAgICAgICAgICArPSB0bHNfbWJlZHRscy5vCmRpZmYgLS1naXQg YS9saWJhdmZvcm1hdC9pcGZzZ2F0ZXdheS5jIGIvbGliYXZmb3JtYXQvaXBmc2dhdGV3YXkuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4yYjI5MDVkMmMyCi0tLSAvZGV2 L251bGwKKysrIGIvbGliYXZmb3JtYXQvaXBmc2dhdGV3YXkuYwpAQCAtMCwwICsxLDMxMCBAQAor LyoKKyAqIElQRlMgYW5kIElQTlMgcHJvdG9jb2wgc3VwcG9ydCB0aHJvdWdoIElQRlMgR2F0ZXdh eS4KKyAqIENvcHlyaWdodCAoYykgMjAyMiBNYXJrIEdhaXNlcgorICoKKyAqIFRoaXMgZmlsZSBp cyBwYXJ0IG9mIEZGbXBlZy4KKyAqCisgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMi4xIG9m IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK KyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcg d2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5k YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEg MDIxMTAtMTMwMSBVU0EKKyAqLworCisjaW5jbHVkZSAiYXZmb3JtYXQuaCIKKyNpbmNsdWRlICJs aWJhdnV0aWwvYXZhc3NlcnQuaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvYXZzdHJpbmcuaCIKKyNp bmNsdWRlICJsaWJhdnV0aWwvaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvb3B0Lmgi CisjaW5jbHVkZSAibGliYXZ1dGlsL3RyZWUuaCIKKyNpbmNsdWRlIDxmY250bC5oPgorI2lmIEhB VkVfSU9fSAorI2luY2x1ZGUgPGlvLmg+CisjZW5kaWYKKyNpZiBIQVZFX1VOSVNURF9ICisjaW5j bHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpbmNsdWRlICJvc19zdXBwb3J0LmgiCisjaW5jbHVk ZSAidXJsLmgiCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKwor dHlwZWRlZiBzdHJ1Y3QgSVBGU0dhdGV3YXlDb250ZXh0IHsKKyAgICBBVkNsYXNzICpjbGFzczsK KyAgICBVUkxDb250ZXh0ICppbm5lcjsKKyAgICAvLyBJcyBmaWxsZWQgYnkgdGhlIC1nYXRld2F5 IGFyZ3VtZW50IGFuZCBub3QgY2hhbmdlZCBhZnRlci4KKyAgICBjaGFyICpnYXRld2F5OworICAg IC8vIElmIHRoZSBhYm92ZSBnYXRld2F5IGlzIG5vbiBudWxsLCBpdCB3aWxsIGJlIGNvcGllZCBp bnRvIHRoaXMgYnVmZmVyLgorICAgIC8vIEVsc2UgdGhpcyBidWZmZXIgd2lsbCBjb250YWluIHRo ZSBhdXRvIGRldGVjdGVkIGdhdGV3YXkuCisgICAgLy8gSW4gZWl0aGVyIGNhc2UsIHRoZSBnYXRl d2F5IHRvIHVzZSB3aWxsIGJlIGluIHRoaXMgYnVmZmVyLgorICAgIGNoYXIgZ2F0ZXdheV9idWZm ZXJbUEFUSF9NQVhdOworfSBJUEZTR2F0ZXdheUNvbnRleHQ7CisKKy8vIEEgYmVzdC1lZmZvcnQg d2F5IHRvIGZpbmQgdGhlIElQRlMgZ2F0ZXdheS4KKy8vIE9ubHkgdGhlIG1vc3QgYXBwcm9waWF0 ZSBnYXRld2F5IGlzIHNldC4gSXQncyBub3QgYWN0dWFsbHkgcmVxdWVzdGVkCisvLyAoaHR0cCBj YWxsKSB0byBwcmV2ZW50IGEgcG90ZW50aWFsIHNsb3dkb3duIGluIHN0YXJ0dXAuIEEgcG90ZW50 aWFsIHRpbWVvdXQKKy8vIGlzIGhhbmRsZWQgYnkgdGhlIEhUVFAgcHJvdG9jb2wuCitzdGF0aWMg aW50IHBvcHVsYXRlX2lwZnNfZ2F0ZXdheShVUkxDb250ZXh0ICpoKQoreworICAgIElQRlNHYXRl d2F5Q29udGV4dCAqYyA9IGgtPnByaXZfZGF0YTsKKyAgICBjaGFyIGlwZnNfZnVsbF9kYXRhX2Zv bGRlcltQQVRIX01BWF07CisgICAgY2hhciBpcGZzX2dhdGV3YXlfZmlsZVtQQVRIX01BWF07Cisg ICAgc3RydWN0IHN0YXQgc3Q7CisgICAgaW50IHN0YXRfcmV0ID0gMDsKKyAgICBpbnQgcmV0ID0g QVZFUlJPUihFSU5WQUwpOworICAgIEZJTEUgKmdhdGV3YXlfZmlsZSA9IE5VTEw7CisKKyAgICAv LyBUZXN0ICRJUEZTX0dBVEVXQVkuCisgICAgaWYgKGdldGVudigiSVBGU19HQVRFV0FZIikgIT0g TlVMTCkgeworICAgICAgICBpZiAoc25wcmludGYoYy0+Z2F0ZXdheV9idWZmZXIsIHNpemVvZihj LT5nYXRld2F5X2J1ZmZlciksICIlcyIsCisgICAgICAgICAgICAgICAgICAgICBnZXRlbnYoIklQ RlNfR0FURVdBWSIpKSA+PSBzaXplb2YoYy0+Z2F0ZXdheV9idWZmZXIpKSB7CisgICAgICAgICAg ICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICJUaGUgSVBGU19HQVRFV0FZIGVudmlyb25tZW50 IHZhcmlhYmxlIGV4Y2VlZHMgdGhlIG1heGltdW0gbGVuZ3RoLiBXZSBhbGxvdyBhIG1heCBvZiAl enUgY2hhcmFjdGVyc1xuIiwgc2l6ZW9mKGMtPmdhdGV3YXlfYnVmZmVyKSk7CisgICAgICAgICAg ICByZXQgPSBBVkVSUk9SKEVJTlZBTCk7CisgICAgICAgICAgICBnb3RvIGVycjsKKyAgICAgICAg fQorCisgICAgICAgIHJldCA9IDE7CisgICAgICAgIGdvdG8gZXJyOworICAgIH0gZWxzZQorICAg ICAgICBhdl9sb2coaCwgQVZfTE9HX0RFQlVHLCAiJElQRlNfR0FURVdBWSBpcyBlbXB0eS5cbiIp OworCisgICAgLy8gV2UgbmVlZCB0byBrbm93IHRoZSBJUEZTIGZvbGRlciB0byAtIGV2ZW50dWFs bHkgLSByZWFkIHRoZSBjb250ZW50cyBvZgorICAgIC8vIHRoZSAiZ2F0ZXdheSIgZmlsZSB3aGlj aCB3b3VsZCB0ZWxsIHVzIHRoZSBnYXRld2F5IHRvIHVzZS4KKyAgICBpZiAoZ2V0ZW52KCJJUEZT X1BBVEgiKSA9PSBOVUxMKSB7CisgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfREVCVUcsICIkSVBG U19QQVRIIGlzIGVtcHR5LlxuIik7CisKKyAgICAgICAgLy8gVHJ5IHZpYSB0aGUgaG9tZSBmb2xk ZXIuCisgICAgICAgIGlmIChnZXRlbnYoIkhPTUUiKSA9PSBOVUxMKSB7CisgICAgICAgICAgICBh dl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICIkSE9NRSBhcHBlYXJzIHRvIGJlIGVtcHR5LlxuIik7 CisgICAgICAgICAgICByZXQgPSBBVkVSUk9SKEVJTlZBTCk7CisgICAgICAgICAgICBnb3RvIGVy cjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFZlcmlmeSB0aGUgY29tcG9zZWQgcGF0aCBmaXRz LgorICAgICAgICBpZiAoc25wcmludGYoaXBmc19mdWxsX2RhdGFfZm9sZGVyLCBzaXplb2YoaXBm c19mdWxsX2RhdGFfZm9sZGVyKSwKKyAgICAgICAgICAgICAgICAgICAgICIlcy8uaXBmcy8iLCBn ZXRlbnYoIkhPTUUiKSkgPj0gc2l6ZW9mKGlwZnNfZnVsbF9kYXRhX2ZvbGRlcikpIHsKKyAgICAg ICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIlRoZSBJUEZTIGRhdGEgcGF0aCBleGNl ZWRzIHRoZSBtYXggcGF0aCBsZW5ndGggKCV6dSlcbiIsIHNpemVvZihpcGZzX2Z1bGxfZGF0YV9m b2xkZXIpKTsKKyAgICAgICAgICAgIHJldCA9IEFWRVJST1IoRUlOVkFMKTsKKyAgICAgICAgICAg IGdvdG8gZXJyOworICAgICAgICB9CisKKyAgICAgICAgLy8gU3RhdCB0aGUgZm9sZGVyLgorICAg ICAgICAvLyBJdCBzaG91bGQgZXhpc3QgaW4gYSBkZWZhdWx0IElQRlMgc2V0dXAgd2hlbiBydW4g YXMgbG9jYWwgdXNlci4KKyNpZm5kZWYgX1dJTjMyCisgICAgICAgIHN0YXRfcmV0ID0gc3RhdChp cGZzX2Z1bGxfZGF0YV9mb2xkZXIsICZzdCk7CisjZWxzZQorICAgICAgICBzdGF0X3JldCA9IHdp bjMyX3N0YXQoaXBmc19mdWxsX2RhdGFfZm9sZGVyLCAmc3QpOworI2VuZGlmCisgICAgICAgIGlm IChzdGF0X3JldCA8IDApIHsKKyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfSU5GTywgIlVu YWJsZSB0byBmaW5kIElQRlMgZm9sZGVyLiBXZSB0cmllZDpcbiIpOworICAgICAgICAgICAgYXZf bG9nKGgsIEFWX0xPR19JTkZPLCAiLSAkSVBGU19QQVRILCB3aGljaCB3YXMgZW1wdHkuXG4iKTsK KyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfSU5GTywgIi0gJEhPTUUvLmlwZnMgKGZ1bGwg dXJpOiAlcykgd2hpY2ggZG9lc24ndCBleGlzdC5cbiIsIGlwZnNfZnVsbF9kYXRhX2ZvbGRlcik7 CisgICAgICAgICAgICByZXQgPSBBVkVSUk9SKEVOT0VOVCk7CisgICAgICAgICAgICBnb3RvIGVy cjsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChzbnByaW50ZihpcGZzX2Z1 bGxfZGF0YV9mb2xkZXIsIHNpemVvZihpcGZzX2Z1bGxfZGF0YV9mb2xkZXIpLCAiJXMiLAorICAg ICAgICAgICAgICAgICBnZXRlbnYoIklQRlNfUEFUSCIpKSA+PSBzaXplb2YoaXBmc19mdWxsX2Rh dGFfZm9sZGVyKSkgeworICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLCAiVGhl IElQRlNfUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZSBleGNlZWRzIHRoZSBtYXhpbXVtIGxlbmd0 aC4gV2UgYWxsb3cgYSBtYXggb2YgJXp1IGNoYXJhY3RlcnNcbiIsIHNpemVvZihjLT5nYXRld2F5 X2J1ZmZlcikpOworICAgICAgICAgICAgcmV0ID0gQVZFUlJPUihFSU5WQUwpOworICAgICAgICAg ICAgZ290byBlcnI7CisgICAgICAgIH0KKworICAgIH0KKworICAgIC8vIENvcHkgdGhlIGZ1bGx5 IGNvbXBvc2VkIGdhdGV3YXkgcGF0aCBpbnRvIGlwZnNfZ2F0ZXdheV9maWxlLgorICAgIGlmIChz bnByaW50ZihpcGZzX2dhdGV3YXlfZmlsZSwgc2l6ZW9mKGlwZnNfZ2F0ZXdheV9maWxlKSwgIiVz Z2F0ZXdheSIsCisgICAgICAgICAgICAgICAgIGlwZnNfZnVsbF9kYXRhX2ZvbGRlcikgPj0gc2l6 ZW9mKGlwZnNfZ2F0ZXdheV9maWxlKSkgeworICAgICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5J TkcsICJUaGUgSVBGUyBnYXRld2F5IGZpbGUgcGF0aCBleGNlZWRzIHRoZSBtYXggcGF0aCBsZW5n dGggKCV6dSlcbiIsIHNpemVvZihpcGZzX2dhdGV3YXlfZmlsZSkpOworICAgICAgICByZXQgPSBB VkVSUk9SKEVOT0VOVCk7CisgICAgICAgIGdvdG8gZXJyOworICAgIH0KKworICAgIC8vIEdldCB0 aGUgY29udGVudHMgb2YgdGhlIGdhdGV3YXkgZmlsZS4KKyAgICBnYXRld2F5X2ZpbGUgPSBhdl9m b3Blbl91dGY4KGlwZnNfZ2F0ZXdheV9maWxlLCAiciIpOworICAgIGlmICghZ2F0ZXdheV9maWxl KSB7CisgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIlRoZSBJUEZTIGdhdGV3YXkg ZmlsZSAoZnVsbCB1cmk6ICVzKSBkb2Vzbid0IGV4aXN0LiBJcyB0aGUgZ2F0ZXdheSBlbmFibGVk P1xuIiwgaXBmc19nYXRld2F5X2ZpbGUpOworICAgICAgICByZXQgPSBBVkVSUk9SKEVOT0VOVCk7 CisgICAgICAgIGdvdG8gZXJyOworICAgIH0KKworICAgIC8vIFJlYWQgYSBzaW5nbGUgbGluZSAo ZmdldHMgc3RvcHMgYXQgbmV3IGxpbmUgbWFyaykuCisgICAgZmdldHMoYy0+Z2F0ZXdheV9idWZm ZXIsIHNpemVvZihjLT5nYXRld2F5X2J1ZmZlcikgLSAxLCBnYXRld2F5X2ZpbGUpOworCisgICAg Ly8gUmVwbGFjZSB0aGUgbGFzdCBjaGFyIHdpdGggXDAKKyAgICBjLT5nYXRld2F5X2J1ZmZlcltz aXplb2YoYy0+Z2F0ZXdheV9idWZmZXIpIC0gMV0gPSAwOworCisgICAgLy8gUmVwbGFjZSBmaXJz dCBvY2N1cmVuY2Ugb2YgZW5kIG9mIGxpbmUgd2l0aCBcMAorICAgIGMtPmdhdGV3YXlfYnVmZmVy W3N0cmNzcG4oYy0+Z2F0ZXdheV9idWZmZXIsICJcciIpXSA9IDA7CisgICAgYy0+Z2F0ZXdheV9i dWZmZXJbc3RyY3NwbihjLT5nYXRld2F5X2J1ZmZlciwgIlxuIildID0gMDsKKworICAgIC8vIElm IHN0cmxlbiBmaW5kcyBhbnl0aGluZyBsb25nZXIgdGhlbiAwIGNoYXJhY3RlcnMgdGhlbiB3ZSBo YXZlIGEKKyAgICAvLyBwb3RlbnRpYWwgZ2F0ZXdheSB1cmwuCisgICAgaWYgKHN0cmxlbihjLT5n YXRld2F5X2J1ZmZlcikgPCAxKSB7CisgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywg IlRoZSBJUEZTIGdhdGV3YXkgZmlsZSAoZnVsbCB1cmk6ICVzKSBhcHBlYXJzIHRvIGJlIGVtcHR5 LiBJcyB0aGUgZ2F0ZXdheSBzdGFydGVkP1xuIiwgaXBmc19nYXRld2F5X2ZpbGUpOworICAgICAg ICByZXQgPSBBVkVSUk9SKEVJTFNFUSk7CisgICAgICAgIGdvdG8gZXJyOworICAgIH0gZWxzZSB7 CisgICAgICAgIC8vIFdlJ3JlIGRvbmUsIHRoZSBjLT5nYXRld2F5X2J1ZmZlciBoYXMgc29tZXRo aW5nIHRoYXQgbG9va3MgdmFsaWQuCisgICAgICAgIHJldCA9IDE7CisgICAgICAgIGdvdG8gZXJy OworICAgIH0KKworZXJyOgorICAgIGlmIChnYXRld2F5X2ZpbGUpCisgICAgICAgIGZjbG9zZShn YXRld2F5X2ZpbGUpOworCisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCB0cmFuc2xh dGVfaXBmc190b19odHRwKFVSTENvbnRleHQgKmgsIGNvbnN0IGNoYXIgKnVyaSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MsIEFWRGljdGlvbmFyeSAqKm9wdGlv bnMpCit7CisgICAgY29uc3QgY2hhciAqaXBmc19jaWQ7CisgICAgY2hhciAqZnVsbHVyaSA9IE5V TEw7CisgICAgaW50IHJldDsKKyAgICBJUEZTR2F0ZXdheUNvbnRleHQgKmMgPSBoLT5wcml2X2Rh dGE7CisKKyAgICAvLyBUZXN0IGZvciBpcGZzOi8vLCBpcGZzOiwgaXBuczovLyBhbmQgaXBuczou IFRoaXMgcHJlZml4IGlzIHN0cmlwcGVkIGZyb20KKyAgICAvLyB0aGUgc3RyaW5nIGxlYXZpbmcg anVzdCB0aGUgQ0lEIGluIGlwZnNfY2lkLgorICAgIGludCBpc19pcGZzID0gYXZfc3RyaXN0YXJ0 KHVyaSwgImlwZnM6Ly8iLCAmaXBmc19jaWQpOworICAgIGludCBpc19pcG5zID0gYXZfc3RyaXN0 YXJ0KHVyaSwgImlwbnM6Ly8iLCAmaXBmc19jaWQpOworCisgICAgLy8gV2UgbXVzdCBoYXZlIGVp dGhlciBpcG5zIG9yIGlwZnMuCisgICAgaWYgKCFpc19pcGZzICYmICFpc19pcG5zKSB7CisgICAg ICAgIHJldCA9IEFWRVJST1IoRUlOVkFMKTsKKyAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJO SU5HLCAiVW5zdXBwb3J0ZWQgdXJsICVzXG4iLCB1cmkpOworICAgICAgICBnb3RvIGVycjsKKyAg ICB9CisKKyAgICAvLyBJZiB0aGUgQ0lEIGhhcyBhIGxlbmd0aCBncmVhdGVyIHRoZW4gMCB0aGVu IHdlIGFzc3VtZSB3ZSBoYXZlIGEgcHJvcGVyIHdvcmtpbmcgb25lLgorICAgIC8vIEl0IGNvdWxk IHN0aWxsIGJlIHdyb25nIGJ1dCBpbiB0aGF0IGNhc2UgdGhlIGdhdGV3YXkgc2hvdWxkIHNhdmUg dXMgYW5kCisgICAgLy8gcnV0dXJuIGEgNDAzIGVycm9yLiBUaGUgaHR0cCBwcm90b2NvbCBoYW5k bGVzIHRoaXMuCisgICAgaWYgKHN0cmxlbihpcGZzX2NpZCkgPCAxKSB7CisgICAgICAgIGF2X2xv ZyhoLCBBVl9MT0dfV0FSTklORywgIkEgQ0lEIG11c3QgYmUgcHJvdmlkZWQuXG4iKTsKKyAgICAg ICAgcmV0ID0gQVZFUlJPUihFSUxTRVEpOworICAgICAgICBnb3RvIGVycjsKKyAgICB9CisKKyAg ICAvLyBQb3B1bGF0ZSBjLT5nYXRld2F5X2J1ZmZlciB3aXRoIHdoYXRldmVyIGlzIGluIGMtPmdh dGV3YXkKKyAgICBpZiAoYy0+Z2F0ZXdheSAhPSBOVUxMKSB7CisgICAgICAgIGlmIChzbnByaW50 ZihjLT5nYXRld2F5X2J1ZmZlciwgc2l6ZW9mKGMtPmdhdGV3YXlfYnVmZmVyKSwgIiVzIiwKKyAg ICAgICAgICAgICAgICAgICAgIGMtPmdhdGV3YXkpID49IHNpemVvZihjLT5nYXRld2F5X2J1ZmZl cikpIHsKKyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIlRoZSAtZ2F0ZXdh eSBwYXJhbWV0ZXIgaXMgdG9vIGxvbmcuIFdlIGFsbG93IGEgbWF4IG9mICV6dSBjaGFyYWN0ZXJz XG4iLCBzaXplb2YoYy0+Z2F0ZXdheV9idWZmZXIpKTsKKyAgICAgICAgICAgIHJldCA9IEFWRVJS T1IoRUlOVkFMKTsKKyAgICAgICAgICAgIGdvdG8gZXJyOworICAgICAgICB9CisgICAgfSBlbHNl IHsKKyAgICAgICAgLy8gUG9wdWxhdGUgdGhlIElQRlMgZ2F0ZXdheSBpZiB3ZSBoYXZlIGFueS4K KyAgICAgICAgLy8gSWYgbm90LCBpbmZvcm0gdGhlIHVzZXIgaG93IHRvIHByb3Blcmx5IHNldCBv bmUuCisgICAgICAgIHJldCA9IHBvcHVsYXRlX2lwZnNfZ2F0ZXdheShoKTsKKworICAgICAgICBp ZiAocmV0IDwgMSkgeworICAgICAgICAgICAgLy8gV2UgZmFsbGJhY2sgb24gZHdlYi5saW5rICht YW5hZ2VkIGJ5IFByb3RvY29sIExhYnMpLgorICAgICAgICAgICAgc25wcmludGYoYy0+Z2F0ZXdh eV9idWZmZXIsIHNpemVvZihjLT5nYXRld2F5X2J1ZmZlciksICJodHRwczovL2R3ZWIubGluayIp OworCisgICAgICAgICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICJJUEZTIGRvZXMgbm90 IGFwcGVhciB0byBiZSBydW5uaW5nLiBZb3XigJlyZSBub3cgdXNpbmcgdGhlIHB1YmxpYyBnYXRl d2F5IGF0IGR3ZWIubGluay5cbiIpOworICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19JTkZP LCAiSW5zdGFsbGluZyBJUEZTIGxvY2FsbHkgaXMgcmVjb21tZW5kZWQgdG8gaW1wcm92ZSBwZXJm b3JtYW5jZSBhbmQgcmVsaWFiaWxpdHksIGFuZCBub3Qgc2hhcmUgYWxsIHlvdXIgYWN0aXZpdHkg d2l0aCBhIHNpbmdsZSBJUEZTIGdhdGV3YXkuXG4iKTsKKyAgICAgICAgICAgIGF2X2xvZyhoLCBB Vl9MT0dfSU5GTywgIlRoZXJlIGFyZSBtdWx0aXBsZSBvcHRpb25zIHRvIGRlZmluZSB0aGlzIGdh dGV3YXkuXG4iKTsKKyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfSU5GTywgIjEuIENhbGwg ZmZtcGVnIHdpdGggYSBnYXRld2F5IHBhcmFtLCB3aXRob3V0IGEgdHJhaWxpbmcgc2xhc2g6IC1n YXRld2F5IDx1cmw+LlxuIik7CisgICAgICAgICAgICBhdl9sb2coaCwgQVZfTE9HX0lORk8sICIy LiBEZWZpbmUgYW4gJElQRlNfR0FURVdBWSBlbnZpcm9ubWVudCB2YXJpYWJsZSB3aXRoIHRoZSBm dWxsIEhUVFAgVVJMIHRvIHRoZSBnYXRld2F5IHdpdGhvdXQgdHJhaWxpbmcgZm9yd2FyZCBzbGFz aC5cbiIpOworICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19JTkZPLCAiMy4gRGVmaW5lIGFu ICRJUEZTX1BBVEggZW52aXJvbm1lbnQgdmFyaWFibGUgYW5kIHBvaW50IGl0IHRvIHRoZSBJUEZT IGRhdGEgcGF0aCAtIHRoaXMgaXMgdHlwaWNhbGx5IH4vLmlwZnNcbiIpOworICAgICAgICB9Cisg ICAgfQorCisgICAgLy8gVGVzdCBpZiB0aGUgZ2F0ZXdheSBzdGFydHMgd2l0aCBlaXRoZXIgaHR0 cDovLyBvciBodHRwczovLworICAgIGlmIChhdl9zdHJpc3RhcnQoYy0+Z2F0ZXdheV9idWZmZXIs ICJodHRwOi8vIiwgTlVMTCkgPT0gMAorICAgICAgICAmJiBhdl9zdHJpc3RhcnQoYy0+Z2F0ZXdh eV9idWZmZXIsICJodHRwczovLyIsIE5VTEwpID09IDApIHsKKyAgICAgICAgYXZfbG9nKGgsIEFW X0xPR19XQVJOSU5HLCAiVGhlIGdhdGV3YXkgVVJMIGRpZG4ndCBzdGFydCB3aXRoIGh0dHA6Ly8g b3IgaHR0cHM6Ly8gYW5kIGlzIHRoZXJlZm9yZSBpbnZhbGlkLlxuIik7CisgICAgICAgIHJldCA9 IEFWRVJST1IoRUlMU0VRKTsKKyAgICAgICAgZ290byBlcnI7CisgICAgfQorCisgICAgLy8gQ29u Y2F0ZW5hdGUgdGhlIHVybC4KKyAgICAvLyBUaGlzIGVuZHMgdXAgd2l0aCBzb21ldGhpbmcgbGlr ZTogaHR0cDovL2xvY2FsaG9zdDo4MDgwL2lwZnMvUW0uLi4uLgorICAgIC8vIFRoZSBmb3JtYXQg b2YgIiVzJXMlcyVzIiBpcyB0aGUgZm9sbG93aW5nOgorICAgIC8vIDFzdCAlcyA9IFRoZSBnYXRl d2F5LgorICAgIC8vIDJuZCAlcyA9IElmIHRoZSBnYXRld2F5IGRpZG4ndCBlbmQgaW4gYSBzbGFz aCwgYWRkIGEgIi8iLiBPdGhlcndpc2UgaXQncyBhbiBlbXB0eSBzdHJpbmcKKyAgICAvLyAzcmQg JXMgPSBFaXRoZXIgaXBucy8gb3IgaXBmcy8uCisgICAgLy8gNHRoICVzID0gVGhlIElQRlMgQ0lE IChRbS4uLiwgYmFmeS4uLiwgLi4uKS4KKyAgICBmdWxsdXJpID0gYXZfYXNwcmludGYoIiVzJXMl cyVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYy0+Z2F0ZXdheV9idWZmZXIsCisgICAg ICAgICAgICAgICAgICAgICAgICAgIChjLT5nYXRld2F5X2J1ZmZlcltzdHJsZW4oYy0+Z2F0ZXdh eV9idWZmZXIpIC0gMV0gPT0gJy8nKSA/ICIiIDogIi8iLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAoaXNfaXBucykgPyAiaXBucy8iIDogImlwZnMvIiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgaXBmc19jaWQpOworCisgICAgLy8gUGFzcyB0aGUgVVJMIGJhY2sgdG8gRkZNcGVnJ3Mg cHJvdG9jb2wgaGFuZGxlci4KKyAgICBpZiAoKHJldCA9IGZmdXJsX29wZW5fd2hpdGVsaXN0KCZj LT5pbm5lciwgZnVsbHVyaSwgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmaC0+aW50ZXJydXB0X2NhbGxiYWNrLCBvcHRpb25zLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaC0+cHJvdG9jb2xfd2hpdGVsaXN0LAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaC0+cHJvdG9jb2xfYmxhY2tsaXN0LCBoKSkKKyAgICAgICAg PCAwKSB7CisgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIlVuYWJsZSB0byBvcGVu IHJlc291cmNlOiAlc1xuIiwgZnVsbHVyaSk7CisgICAgICAgIGdvdG8gZXJyOworICAgIH0KKwor ZXJyOgorICAgIGF2X2ZyZWUoZnVsbHVyaSk7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGlj IGludCBpcGZzX3JlYWQoVVJMQ29udGV4dCAqaCwgdW5zaWduZWQgY2hhciAqYnVmLCBpbnQgc2l6 ZSkKK3sKKyAgICBJUEZTR2F0ZXdheUNvbnRleHQgKmMgPSBoLT5wcml2X2RhdGE7CisgICAgcmV0 dXJuIGZmdXJsX3JlYWQoYy0+aW5uZXIsIGJ1Ziwgc2l6ZSk7Cit9CisKK3N0YXRpYyBpbnQ2NF90 IGlwZnNfc2VlayhVUkxDb250ZXh0ICpoLCBpbnQ2NF90IHBvcywgaW50IHdoZW5jZSkKK3sKKyAg ICBJUEZTR2F0ZXdheUNvbnRleHQgKmMgPSBoLT5wcml2X2RhdGE7CisgICAgcmV0dXJuIGZmdXJs X3NlZWsoYy0+aW5uZXIsIHBvcywgd2hlbmNlKTsKK30KKworc3RhdGljIGludCBpcGZzX2Nsb3Nl KFVSTENvbnRleHQgKmgpCit7CisgICAgSVBGU0dhdGV3YXlDb250ZXh0ICpjID0gaC0+cHJpdl9k YXRhOworICAgIGF2X2ZyZWUoYy0+Z2F0ZXdheSk7CisgICAgcmV0dXJuIGZmdXJsX2Nsb3NlcCgm Yy0+aW5uZXIpOworfQorCisjZGVmaW5lIE9GRlNFVCh4KSBvZmZzZXRvZihJUEZTR2F0ZXdheUNv bnRleHQsIHgpCisKK3N0YXRpYyBjb25zdCBBVk9wdGlvbiBvcHRpb25zW10gPSB7CisgICAgeyJn YXRld2F5IiwgIlRoZSBnYXRld2F5IHRvIGFzayBmb3IgSVBGUyBkYXRhLiIsIE9GRlNFVChnYXRl d2F5KSwgQVZfT1BUX1RZUEVfU1RSSU5HLCB7LnN0ciA9IE5VTEx9LCAwLCAwLCBBVl9PUFRfRkxB R19ERUNPRElOR19QQVJBTX0sCisgICAge05VTEx9LAorfTsKKworc3RhdGljIGNvbnN0IEFWQ2xh c3MgaXBmc19jb250ZXh0X2NsYXNzID0geworICAgIC5jbGFzc19uYW1lICAgPSAiSVBGUyIsCisg ICAgLml0ZW1fbmFtZSAgICA9IGF2X2RlZmF1bHRfaXRlbV9uYW1lLAorICAgIC5vcHRpb24gICAg ICAgPSBvcHRpb25zLAorICAgIC52ZXJzaW9uICAgICAgPSBMSUJBVlVUSUxfVkVSU0lPTl9JTlQs Cit9OworCitjb25zdCBVUkxQcm90b2NvbCBmZl9pcGZzX3Byb3RvY29sID0geworICAgIC5uYW1l ICAgICAgICAgICAgID0gImlwZnMiLAorICAgIC51cmxfb3BlbjIgICAgICAgID0gdHJhbnNsYXRl X2lwZnNfdG9faHR0cCwKKyAgICAudXJsX3JlYWQgICAgICAgICA9IGlwZnNfcmVhZCwKKyAgICAu dXJsX3NlZWsgICAgICAgICA9IGlwZnNfc2VlaywKKyAgICAudXJsX2Nsb3NlICAgICAgICA9IGlw ZnNfY2xvc2UsCisgICAgLnByaXZfZGF0YV9zaXplICAgPSBzaXplb2YoSVBGU0dhdGV3YXlDb250 ZXh0KSwKKyAgICAucHJpdl9kYXRhX2NsYXNzICA9ICZpcGZzX2NvbnRleHRfY2xhc3MsCit9Owor Citjb25zdCBVUkxQcm90b2NvbCBmZl9pcG5zX3Byb3RvY29sID0geworICAgIC5uYW1lICAgICAg ICAgICAgID0gImlwbnMiLAorICAgIC51cmxfb3BlbjIgICAgICAgID0gdHJhbnNsYXRlX2lwZnNf dG9faHR0cCwKKyAgICAudXJsX3JlYWQgICAgICAgICA9IGlwZnNfcmVhZCwKKyAgICAudXJsX3Nl ZWsgICAgICAgICA9IGlwZnNfc2VlaywKKyAgICAudXJsX2Nsb3NlICAgICAgICA9IGlwZnNfY2xv c2UsCisgICAgLnByaXZfZGF0YV9zaXplICAgPSBzaXplb2YoSVBGU0dhdGV3YXlDb250ZXh0KSwK KyAgICAucHJpdl9kYXRhX2NsYXNzICA9ICZpcGZzX2NvbnRleHRfY2xhc3MsCit9OwpkaWZmIC0t Z2l0IGEvbGliYXZmb3JtYXQvcHJvdG9jb2xzLmMgYi9saWJhdmZvcm1hdC9wcm90b2NvbHMuYwpp bmRleCA5NDhmYWU0MTFmLi42NzViNjg0YmQzIDEwMDY0NAotLS0gYS9saWJhdmZvcm1hdC9wcm90 b2NvbHMuYworKysgYi9saWJhdmZvcm1hdC9wcm90b2NvbHMuYwpAQCAtNzMsNiArNzMsOCBAQCBl eHRlcm4gY29uc3QgVVJMUHJvdG9jb2wgZmZfbGlic3J0X3Byb3RvY29sOwogZXh0ZXJuIGNvbnN0 IFVSTFByb3RvY29sIGZmX2xpYnNzaF9wcm90b2NvbDsKIGV4dGVybiBjb25zdCBVUkxQcm90b2Nv bCBmZl9saWJzbWJjbGllbnRfcHJvdG9jb2w7CiBleHRlcm4gY29uc3QgVVJMUHJvdG9jb2wgZmZf bGliem1xX3Byb3RvY29sOworZXh0ZXJuIGNvbnN0IFVSTFByb3RvY29sIGZmX2lwZnNfcHJvdG9j b2w7CitleHRlcm4gY29uc3QgVVJMUHJvdG9jb2wgZmZfaXBuc19wcm90b2NvbDsKIAogI2luY2x1 ZGUgImxpYmF2Zm9ybWF0L3Byb3RvY29sX2xpc3QuYyIKIAotLSAKMi4zNS4xCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGlu ZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUs IG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1 bnN1YnNjcmliZSIuCg==