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 10947427F0 for ; Fri, 1 Apr 2022 00:10:11 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3218268B229; Fri, 1 Apr 2022 03:10:01 +0300 (EEST) Received: from mail-ej1-f41.google.com (mail-ej1-f41.google.com [209.85.218.41]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 76B4968A5CC for ; Fri, 1 Apr 2022 03:09:54 +0300 (EEST) Received: by mail-ej1-f41.google.com with SMTP id o10so2600329ejd.1 for ; Thu, 31 Mar 2022 17:09:54 -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=iNeUHn/6d+mGYprc0wWHdAmFYayfyvtHch1PvMmmD2Q=; b=cfyZS5TN6lrzXmoOKU5vUjPcaa36bu8YXgoCwsaZhHcaRs3Kc1xEnmAnuzJ8C0uIM6 V9IFVwzD0RfrWnx9QJgOVvYj8KLC6qJTABOi3OAkZPTQhImBbw2nGxRHmLctVHLLXcj6 QcxvjKGSsleTwgM02kFHMol7hbUaE2dzR8HuGz9M+AfVehyPP8ZanchcQY6f/ZYrzLwq m+yhlI4suuExT1Zgi71JRmyvmsl78ush8kt1vFPXzt3Twjy1X17FE7Ghxyjmk7KIra3U oZWnPcS19brqCbwK5OR0LhsQyrBE5VyaDFExddZUVeXED/5/4sES2hfXzR1KjyhiQfzN jYrA== 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=iNeUHn/6d+mGYprc0wWHdAmFYayfyvtHch1PvMmmD2Q=; b=5bZcE0+JeSTgYralm6I7jmSkaspcGRYDAKoj875+OAXMHasvt2Y+LyK3JIwVpYEvse bfgaATdn4FbCH89gwxoPn80GKmu+vrV0JztFvIAr3b92kWV89TOoUFab7iehjrt9s2/q QJXtr4FWiOR3NAd4F4NM8c6sBpG2K3gyGbfDZAJI2s7LL3jkxzt4Rf6c8D79HCGRHXPC TwLcSTBtmtNQaTG6um3Nlqjrf1uxIrITRs3PBMsy3epVekot88T2N68eCcLwnFyZeSfF oyeA5D+2/0JT0uA4EO75iIZXOxPUvrDVCQtsrdKJ5jr8ZKTB7TFqxtbpLUbX3GopbkKs adbQ== X-Gm-Message-State: AOAM533EZEonoJev3EDFISJ9hWdc2SqeIMuzFHWI8A2IIDIqW9zgCcij VyEX/7sjw71Dw7BvFXJIX/6G1C2UT+w= X-Google-Smtp-Source: ABdhPJzq2NxbVrIH8sgNnmRkGUnksydf4Rvf5J8KJVsQnB6LuwpMEDhJMZfZAqZwydjFy5EYkB3e1w== X-Received: by 2002:a17:907:a414:b0:6e0:68f3:d7a with SMTP id sg20-20020a170907a41400b006e068f30d7amr1089846ejc.75.1648771793277; Thu, 31 Mar 2022 17:09:53 -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 v20-20020a056402349400b00419651e513asm419298edc.45.2022.03.31.17.09.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 31 Mar 2022 17:09:52 -0700 (PDT) From: Mark Gaiser To: ffmpeg-devel@ffmpeg.org Date: Fri, 1 Apr 2022 02:08:52 +0200 Message-Id: <20220401000852.156566-2-markg85@gmail.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220401000852.156566-1-markg85@gmail.com> References: <20220401000852.156566-1-markg85@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v11 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 ICAgICB8ICAgMiArCiBsaWJhdmZvcm1hdC9pcGZzZ2F0ZXdheS5jIHwgMzI4ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCiBsaWJhdmZvcm1hdC9wcm90b2NvbHMuYyAgIHwg ICAyICsKIDUgZmlsZXMgY2hhbmdlZCwgMzY0IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEw 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 ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi43MjVjYzVlNDc0Ci0tLSAvZGV2 L251bGwKKysrIGIvbGliYXZmb3JtYXQvaXBmc2dhdGV3YXkuYwpAQCAtMCwwICsxLDMyOCBAQAor LyoKKyAqIElQRlMgYW5kIElQTlMgcHJvdG9jb2wgc3VwcG9ydCB0aHJvdWdoIElQRlMgR2F0ZXdh eS4KKyAqIENvcHlyaWdodCAoYykgMjAyMiBNYXJrIEdhaXNlcgorICoKKyAqIFRoaXMgZmlsZSBp cyBwYXJ0IG9mIEZGbXBlZy4KKyAqCisgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMi4xIG9m IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK KyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcg d2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5k YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEg MDIxMTAtMTMwMSBVU0EKKyAqLworCisjaW5jbHVkZSAibGliYXZ1dGlsL2F2c3RyaW5nLmgiCisj aW5jbHVkZSAibGliYXZ1dGlsL29wdC5oIgorI2luY2x1ZGUgInVybC5oIgorI2luY2x1ZGUgPHN5 cy9zdGF0Lmg+CisKK3R5cGVkZWYgc3RydWN0IElQRlNHYXRld2F5Q29udGV4dCB7CisgICAgQVZD bGFzcyAqY2xhc3M7CisgICAgVVJMQ29udGV4dCAqaW5uZXI7CisgICAgLy8gSXMgZmlsbGVkIGJ5 IHRoZSAtZ2F0ZXdheSBhcmd1bWVudCBhbmQgbm90IGNoYW5nZWQgYWZ0ZXIuCisgICAgY2hhciAq Z2F0ZXdheTsKKyAgICAvLyBJZiB0aGUgYWJvdmUgZ2F0ZXdheSBpcyBub24gbnVsbCwgaXQgd2ls bCBiZSBjb3BpZWQgaW50byB0aGlzIGJ1ZmZlci4KKyAgICAvLyBFbHNlIHRoaXMgYnVmZmVyIHdp bGwgY29udGFpbiB0aGUgYXV0byBkZXRlY3RlZCBnYXRld2F5LgorICAgIC8vIEluIGVpdGhlciBj YXNlLCB0aGUgZ2F0ZXdheSB0byB1c2Ugd2lsbCBiZSBpbiB0aGlzIGJ1ZmZlci4KKyAgICBjaGFy IGdhdGV3YXlfYnVmZmVyW1BBVEhfTUFYXTsKK30gSVBGU0dhdGV3YXlDb250ZXh0OworCisvLyBB IGJlc3QtZWZmb3J0IHdheSB0byBmaW5kIHRoZSBJUEZTIGdhdGV3YXkuCisvLyBPbmx5IHRoZSBt b3N0IGFwcHJvcGlhdGUgZ2F0ZXdheSBpcyBzZXQuIEl0J3Mgbm90IGFjdHVhbGx5IHJlcXVlc3Rl ZAorLy8gKGh0dHAgY2FsbCkgdG8gcHJldmVudCBhIHBvdGVudGlhbCBzbG93ZG93biBpbiBzdGFy dHVwLiBBIHBvdGVudGlhbCB0aW1lb3V0CisvLyBpcyBoYW5kbGVkIGJ5IHRoZSBIVFRQIHByb3Rv Y29sLgorc3RhdGljIGludCBwb3B1bGF0ZV9pcGZzX2dhdGV3YXkoVVJMQ29udGV4dCAqaCkKK3sK KyAgICBJUEZTR2F0ZXdheUNvbnRleHQgKmMgPSBoLT5wcml2X2RhdGE7CisgICAgY2hhciBpcGZz X2Z1bGxfZGF0YV9mb2xkZXJbUEFUSF9NQVhdOworICAgIGNoYXIgaXBmc19nYXRld2F5X2ZpbGVb UEFUSF9NQVhdOworICAgIHN0cnVjdCBzdGF0IHN0OworICAgIGludCBzdGF0X3JldCA9IDA7Cisg ICAgaW50IHJldCA9IEFWRVJST1IoRUlOVkFMKTsKKyAgICBGSUxFICpnYXRld2F5X2ZpbGUgPSBO VUxMOworCisgICAgLy8gVGVzdCAkSVBGU19HQVRFV0FZLgorICAgIGlmIChnZXRlbnYoIklQRlNf R0FURVdBWSIpICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKHNucHJpbnRmKGMtPmdhdGV3YXlfYnVm ZmVyLCBzaXplb2YoYy0+Z2F0ZXdheV9idWZmZXIpLCAiJXMiLAorICAgICAgICAgICAgICAgICAg ICAgZ2V0ZW52KCJJUEZTX0dBVEVXQVkiKSkgPj0gc2l6ZW9mKGMtPmdhdGV3YXlfYnVmZmVyKSkg eworICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLCAiVGhlIElQRlNfR0FURVdB WSBlbnZpcm9ubWVudCB2YXJpYWJsZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJleGNlZWRzIHRoZSBtYXhpbXVtIGxlbmd0aC4gIgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiV2UgYWxsb3cgYSBtYXggb2YgJXp1IGNoYXJhY3RlcnNcbiIs CisgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGMtPmdhdGV3YXlfYnVmZmVyKSk7CisgICAgICAg ICAgICByZXQgPSBBVkVSUk9SKEVJTlZBTCk7CisgICAgICAgICAgICBnb3RvIGVycjsKKyAgICAg ICAgfQorCisgICAgICAgIHJldCA9IDE7CisgICAgICAgIGdvdG8gZXJyOworICAgIH0gZWxzZQor ICAgICAgICBhdl9sb2coaCwgQVZfTE9HX0RFQlVHLCAiJElQRlNfR0FURVdBWSBpcyBlbXB0eS5c biIpOworCisgICAgLy8gV2UgbmVlZCB0byBrbm93IHRoZSBJUEZTIGZvbGRlciB0byAtIGV2ZW50 dWFsbHkgLSByZWFkIHRoZSBjb250ZW50cyBvZgorICAgIC8vIHRoZSAiZ2F0ZXdheSIgZmlsZSB3 aGljaCB3b3VsZCB0ZWxsIHVzIHRoZSBnYXRld2F5IHRvIHVzZS4KKyAgICBpZiAoZ2V0ZW52KCJJ UEZTX1BBVEgiKSA9PSBOVUxMKSB7CisgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfREVCVUcsICIk SVBGU19QQVRIIGlzIGVtcHR5LlxuIik7CisKKyAgICAgICAgLy8gVHJ5IHZpYSB0aGUgaG9tZSBm b2xkZXIuCisgICAgICAgIGlmIChnZXRlbnYoIkhPTUUiKSA9PSBOVUxMKSB7CisgICAgICAgICAg ICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICIkSE9NRSBhcHBlYXJzIHRvIGJlIGVtcHR5Llxu Iik7CisgICAgICAgICAgICByZXQgPSBBVkVSUk9SKEVJTlZBTCk7CisgICAgICAgICAgICBnb3Rv IGVycjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFZlcmlmeSB0aGUgY29tcG9zZWQgcGF0aCBm aXRzLgorICAgICAgICBpZiAoc25wcmludGYoaXBmc19mdWxsX2RhdGFfZm9sZGVyLCBzaXplb2Yo aXBmc19mdWxsX2RhdGFfZm9sZGVyKSwKKyAgICAgICAgICAgICAgICAgICAgICIlcy8uaXBmcy8i LCBnZXRlbnYoIkhPTUUiKSkgPj0gc2l6ZW9mKGlwZnNfZnVsbF9kYXRhX2ZvbGRlcikpIHsKKyAg ICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIlRoZSBJUEZTIGRhdGEgcGF0aCBl eGNlZWRzIHRoZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtYXgg cGF0aCBsZW5ndGggKCV6dSlcbiIsCisgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGlwZnNfZnVs bF9kYXRhX2ZvbGRlcikpOworICAgICAgICAgICAgcmV0ID0gQVZFUlJPUihFSU5WQUwpOworICAg ICAgICAgICAgZ290byBlcnI7CisgICAgICAgIH0KKworICAgICAgICAvLyBTdGF0IHRoZSBmb2xk ZXIuCisgICAgICAgIC8vIEl0IHNob3VsZCBleGlzdCBpbiBhIGRlZmF1bHQgSVBGUyBzZXR1cCB3 aGVuIHJ1biBhcyBsb2NhbCB1c2VyLgorI2lmbmRlZiBfV0lOMzIKKyAgICAgICAgc3RhdF9yZXQg PSBzdGF0KGlwZnNfZnVsbF9kYXRhX2ZvbGRlciwgJnN0KTsKKyNlbHNlCisgICAgICAgIHN0YXRf cmV0ID0gd2luMzJfc3RhdChpcGZzX2Z1bGxfZGF0YV9mb2xkZXIsICZzdCk7CisjZW5kaWYKKyAg ICAgICAgaWYgKHN0YXRfcmV0IDwgMCkgeworICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19J TkZPLCAiVW5hYmxlIHRvIGZpbmQgSVBGUyBmb2xkZXIuIFdlIHRyaWVkOlxuIik7CisgICAgICAg ICAgICBhdl9sb2coaCwgQVZfTE9HX0lORk8sICItICRJUEZTX1BBVEgsIHdoaWNoIHdhcyBlbXB0 eS5cbiIpOworICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19JTkZPLCAiLSAkSE9NRS8uaXBm cyAoZnVsbCB1cmk6ICVzKSB3aGljaCBkb2Vzbid0IGV4aXN0LlxuIiwgaXBmc19mdWxsX2RhdGFf Zm9sZGVyKTsKKyAgICAgICAgICAgIHJldCA9IEFWRVJST1IoRU5PRU5UKTsKKyAgICAgICAgICAg IGdvdG8gZXJyOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHNucHJpbnRm KGlwZnNfZnVsbF9kYXRhX2ZvbGRlciwgc2l6ZW9mKGlwZnNfZnVsbF9kYXRhX2ZvbGRlciksICIl cyIsCisgICAgICAgICAgICAgICAgIGdldGVudigiSVBGU19QQVRIIikpID49IHNpemVvZihpcGZz X2Z1bGxfZGF0YV9mb2xkZXIpKSB7CisgICAgICAgICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5J TkcsICJUaGUgSVBGU19QQVRIIGVudmlyb25tZW50IHZhcmlhYmxlICIKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2VlZHMgdGhlIG1heGltdW0gbGVuZ3RoLiAiCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXZSBhbGxvdyBhIG1heCBvZiAl enUgY2hhcmFjdGVyc1xuIiwKKyAgICAgICAgICAgICAgICAgICBzaXplb2YoYy0+Z2F0ZXdheV9i dWZmZXIpKTsKKyAgICAgICAgICAgIHJldCA9IEFWRVJST1IoRUlOVkFMKTsKKyAgICAgICAgICAg IGdvdG8gZXJyOworICAgICAgICB9CisKKyAgICB9CisKKyAgICAvLyBDb3B5IHRoZSBmdWxseSBj b21wb3NlZCBnYXRld2F5IHBhdGggaW50byBpcGZzX2dhdGV3YXlfZmlsZS4KKyAgICBpZiAoc25w cmludGYoaXBmc19nYXRld2F5X2ZpbGUsIHNpemVvZihpcGZzX2dhdGV3YXlfZmlsZSksICIlc2dh dGV3YXkiLAorICAgICAgICAgICAgICAgICBpcGZzX2Z1bGxfZGF0YV9mb2xkZXIpID49IHNpemVv ZihpcGZzX2dhdGV3YXlfZmlsZSkpIHsKKyAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5H LCAiVGhlIElQRlMgZ2F0ZXdheSBmaWxlIHBhdGggZXhjZWVkcyAiCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgInRoZSBtYXggcGF0aCBsZW5ndGggKCV6dSlcbiIsCisgICAgICAg ICAgICAgICBzaXplb2YoaXBmc19nYXRld2F5X2ZpbGUpKTsKKyAgICAgICAgcmV0ID0gQVZFUlJP UihFTk9FTlQpOworICAgICAgICBnb3RvIGVycjsKKyAgICB9CisKKyAgICAvLyBHZXQgdGhlIGNv bnRlbnRzIG9mIHRoZSBnYXRld2F5IGZpbGUuCisgICAgZ2F0ZXdheV9maWxlID0gYXZfZm9wZW5f dXRmOChpcGZzX2dhdGV3YXlfZmlsZSwgInIiKTsKKyAgICBpZiAoIWdhdGV3YXlfZmlsZSkgewor ICAgICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICJUaGUgSVBGUyBnYXRld2F5IGZpbGUg KGZ1bGwgdXJpOiAlcykgZG9lc24ndCBleGlzdC4gIgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJJcyB0aGUgZ2F0ZXdheSBlbmFibGVkP1xuIiwKKyAgICAgICAgICAgICAgIGlw ZnNfZ2F0ZXdheV9maWxlKTsKKyAgICAgICAgcmV0ID0gQVZFUlJPUihFTk9FTlQpOworICAgICAg ICBnb3RvIGVycjsKKyAgICB9CisKKyAgICAvLyBSZWFkIGEgc2luZ2xlIGxpbmUgKGZnZXRzIHN0 b3BzIGF0IG5ldyBsaW5lIG1hcmspLgorICAgIGlmICghZmdldHMoYy0+Z2F0ZXdheV9idWZmZXIs IHNpemVvZihjLT5nYXRld2F5X2J1ZmZlcikgLSAxLCBnYXRld2F5X2ZpbGUpKSB7CisgICAgICBh dl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICJVbmFibGUgdG8gcmVhZCBmcm9tIGZpbGUgKGZ1bGwg dXJpOiAlcykuXG4iLAorICAgICAgICAgICAgIGlwZnNfZ2F0ZXdheV9maWxlKTsKKyAgICAgIHJl dCA9IEFWRVJST1IoRU5PRU5UKTsKKyAgICAgIGdvdG8gZXJyOworICAgIH0KKworICAgIC8vIFJl cGxhY2UgZmlyc3Qgb2NjdXJlbmNlIG9mIGVuZCBvZiBsaW5lIHdpdGggXDAKKyAgICBjLT5nYXRl d2F5X2J1ZmZlcltzdHJjc3BuKGMtPmdhdGV3YXlfYnVmZmVyLCAiXHJcbiIpXSA9IDA7CisKKyAg ICAvLyBJZiBzdHJsZW4gZmluZHMgYW55dGhpbmcgbG9uZ2VyIHRoZW4gMCBjaGFyYWN0ZXJzIHRo ZW4gd2UgaGF2ZSBhCisgICAgLy8gcG90ZW50aWFsIGdhdGV3YXkgdXJsLgorICAgIGlmICgqYy0+ Z2F0ZXdheV9idWZmZXIgPT0gJ1wwJykgeworICAgICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5J TkcsICJUaGUgSVBGUyBnYXRld2F5IGZpbGUgKGZ1bGwgdXJpOiAlcykgYXBwZWFycyB0byBiZSBl bXB0eS4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJcyB0aGUgZ2F0ZXdh eSBzdGFydGVkP1xuIiwKKyAgICAgICAgICAgICAgIGlwZnNfZ2F0ZXdheV9maWxlKTsKKyAgICAg ICAgcmV0ID0gQVZFUlJPUihFSUxTRVEpOworICAgICAgICBnb3RvIGVycjsKKyAgICB9IGVsc2Ug eworICAgICAgICAvLyBXZSdyZSBkb25lLCB0aGUgYy0+Z2F0ZXdheV9idWZmZXIgaGFzIHNvbWV0 aGluZyB0aGF0IGxvb2tzIHZhbGlkLgorICAgICAgICByZXQgPSAxOworICAgICAgICBnb3RvIGVy cjsKKyAgICB9CisKK2VycjoKKyAgICBpZiAoZ2F0ZXdheV9maWxlKQorICAgICAgICBmY2xvc2Uo Z2F0ZXdheV9maWxlKTsKKworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgdHJhbnNs YXRlX2lwZnNfdG9faHR0cChVUkxDb250ZXh0ICpoLCBjb25zdCBjaGFyICp1cmksCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzLCBBVkRpY3Rpb25hcnkgKipvcHRp b25zKQoreworICAgIGNvbnN0IGNoYXIgKmlwZnNfY2lkOworICAgIGNoYXIgKmZ1bGx1cmkgPSBO VUxMOworICAgIGludCByZXQ7CisgICAgSVBGU0dhdGV3YXlDb250ZXh0ICpjID0gaC0+cHJpdl9k YXRhOworCisgICAgLy8gVGVzdCBmb3IgaXBmczovLywgaXBmczosIGlwbnM6Ly8gYW5kIGlwbnM6 LiBUaGlzIHByZWZpeCBpcyBzdHJpcHBlZCBmcm9tCisgICAgLy8gdGhlIHN0cmluZyBsZWF2aW5n IGp1c3QgdGhlIENJRCBpbiBpcGZzX2NpZC4KKyAgICBpbnQgaXNfaXBmcyA9IGF2X3N0cmlzdGFy dCh1cmksICJpcGZzOi8vIiwgJmlwZnNfY2lkKTsKKyAgICBpbnQgaXNfaXBucyA9IGF2X3N0cmlz dGFydCh1cmksICJpcG5zOi8vIiwgJmlwZnNfY2lkKTsKKworICAgIC8vIFdlIG11c3QgaGF2ZSBl aXRoZXIgaXBucyBvciBpcGZzLgorICAgIGlmICghaXNfaXBmcyAmJiAhaXNfaXBucykgeworICAg ICAgICByZXQgPSBBVkVSUk9SKEVJTlZBTCk7CisgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FS TklORywgIlVuc3VwcG9ydGVkIHVybCAlc1xuIiwgdXJpKTsKKyAgICAgICAgZ290byBlcnI7Cisg ICAgfQorCisgICAgLy8gSWYgdGhlIENJRCBoYXMgYSBsZW5ndGggZ3JlYXRlciB0aGVuIDAgdGhl biB3ZSBhc3N1bWUgd2UgaGF2ZSBhIHByb3BlciB3b3JraW5nIG9uZS4KKyAgICAvLyBJdCBjb3Vs ZCBzdGlsbCBiZSB3cm9uZyBidXQgaW4gdGhhdCBjYXNlIHRoZSBnYXRld2F5IHNob3VsZCBzYXZl IHVzIGFuZAorICAgIC8vIHJ1dHVybiBhIDQwMyBlcnJvci4gVGhlIGh0dHAgcHJvdG9jb2wgaGFu ZGxlcyB0aGlzLgorICAgIGlmIChzdHJsZW4oaXBmc19jaWQpIDwgMSkgeworICAgICAgICBhdl9s b2coaCwgQVZfTE9HX1dBUk5JTkcsICJBIENJRCBtdXN0IGJlIHByb3ZpZGVkLlxuIik7CisgICAg ICAgIHJldCA9IEFWRVJST1IoRUlMU0VRKTsKKyAgICAgICAgZ290byBlcnI7CisgICAgfQorCisg ICAgLy8gUG9wdWxhdGUgYy0+Z2F0ZXdheV9idWZmZXIgd2l0aCB3aGF0ZXZlciBpcyBpbiBjLT5n YXRld2F5CisgICAgaWYgKGMtPmdhdGV3YXkgIT0gTlVMTCkgeworICAgICAgICBpZiAoc25wcmlu dGYoYy0+Z2F0ZXdheV9idWZmZXIsIHNpemVvZihjLT5nYXRld2F5X2J1ZmZlciksICIlcyIsCisg ICAgICAgICAgICAgICAgICAgICBjLT5nYXRld2F5KSA+PSBzaXplb2YoYy0+Z2F0ZXdheV9idWZm ZXIpKSB7CisgICAgICAgICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICJUaGUgLWdhdGV3 YXkgcGFyYW1ldGVyIGlzIHRvbyBsb25nLiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJXZSBhbGxvdyBhIG1heCBvZiAlenUgY2hhcmFjdGVyc1xuIiwKKyAgICAgICAg ICAgICAgICAgICBzaXplb2YoYy0+Z2F0ZXdheV9idWZmZXIpKTsKKyAgICAgICAgICAgIHJldCA9 IEFWRVJST1IoRUlOVkFMKTsKKyAgICAgICAgICAgIGdvdG8gZXJyOworICAgICAgICB9CisgICAg fSBlbHNlIHsKKyAgICAgICAgLy8gUG9wdWxhdGUgdGhlIElQRlMgZ2F0ZXdheSBpZiB3ZSBoYXZl IGFueS4KKyAgICAgICAgLy8gSWYgbm90LCBpbmZvcm0gdGhlIHVzZXIgaG93IHRvIHByb3Blcmx5 IHNldCBvbmUuCisgICAgICAgIHJldCA9IHBvcHVsYXRlX2lwZnNfZ2F0ZXdheShoKTsKKworICAg ICAgICBpZiAocmV0IDwgMSkgeworICAgICAgICAgICAgLy8gV2UgZmFsbGJhY2sgb24gZHdlYi5s aW5rIChtYW5hZ2VkIGJ5IFByb3RvY29sIExhYnMpLgorICAgICAgICAgICAgc25wcmludGYoYy0+ Z2F0ZXdheV9idWZmZXIsIHNpemVvZihjLT5nYXRld2F5X2J1ZmZlciksICJodHRwczovL2R3ZWIu bGluayIpOworCisgICAgICAgICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICJJUEZTIGRv ZXMgbm90IGFwcGVhciB0byBiZSBydW5uaW5nLiAiCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJZb3XigJlyZSBub3cgdXNpbmcgdGhlIHB1YmxpYyBnYXRld2F5IGF0IGR3 ZWIubGluay5cbiIpOworICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19JTkZPLCAiSW5zdGFs bGluZyBJUEZTIGxvY2FsbHkgaXMgcmVjb21tZW5kZWQgdG8gIgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiaW1wcm92ZSBwZXJmb3JtYW5jZSBhbmQgcmVsaWFiaWxpdHksICIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFuZCBub3Qgc2hhcmUgYWxsIHlv dXIgYWN0aXZpdHkgd2l0aCBhIHNpbmdsZSBJUEZTIGdhdGV3YXkuXG4iCisgICAgICAgICAgICAg ICAgICAgIlRoZXJlIGFyZSBtdWx0aXBsZSBvcHRpb25zIHRvIGRlZmluZSB0aGlzIGdhdGV3YXku XG4iCisgICAgICAgICAgICAgICAgICAgIjEuIENhbGwgZmZtcGVnIHdpdGggYSBnYXRld2F5IHBh cmFtLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aXRob3V0IGEgdHJh aWxpbmcgc2xhc2g6IC1nYXRld2F5IDx1cmw+LlxuIgorICAgICAgICAgICAgICAgICAgICIyLiBE ZWZpbmUgYW4gJElQRlNfR0FURVdBWSBlbnZpcm9ubWVudCB2YXJpYWJsZSB3aXRoIHRoZSAiCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmdWxsIEhUVFAgVVJMIHRvIHRoZSBn YXRld2F5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpdGhvdXQgdHJh aWxpbmcgZm9yd2FyZCBzbGFzaC5cbiIKKyAgICAgICAgICAgICAgICAgICAiMy4gRGVmaW5lIGFu ICRJUEZTX1BBVEggZW52aXJvbm1lbnQgdmFyaWFibGUgIgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiYW5kIHBvaW50IGl0IHRvIHRoZSBJUEZTIGRhdGEgcGF0aCAiCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItIHRoaXMgaXMgdHlwaWNhbGx5IH4vLmlw ZnNcbiIpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gVGVzdCBpZiB0aGUgZ2F0ZXdheSBz dGFydHMgd2l0aCBlaXRoZXIgaHR0cDovLyBvciBodHRwczovLworICAgIGlmIChhdl9zdHJpc3Rh cnQoYy0+Z2F0ZXdheV9idWZmZXIsICJodHRwOi8vIiwgTlVMTCkgPT0gMAorICAgICAgICAmJiBh dl9zdHJpc3RhcnQoYy0+Z2F0ZXdheV9idWZmZXIsICJodHRwczovLyIsIE5VTEwpID09IDApIHsK KyAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLCAiVGhlIGdhdGV3YXkgVVJMIGRpZG4n dCBzdGFydCB3aXRoIGh0dHA6Ly8gb3IgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJodHRwczovLyBhbmQgaXMgdGhlcmVmb3JlIGludmFsaWQuXG4iKTsKKyAgICAgICAgcmV0 ID0gQVZFUlJPUihFSUxTRVEpOworICAgICAgICBnb3RvIGVycjsKKyAgICB9CisKKyAgICAvLyBD b25jYXRlbmF0ZSB0aGUgdXJsLgorICAgIC8vIFRoaXMgZW5kcyB1cCB3aXRoIHNvbWV0aGluZyBs aWtlOiBodHRwOi8vbG9jYWxob3N0OjgwODAvaXBmcy9RbS4uLi4uCisgICAgLy8gVGhlIGZvcm1h dCBvZiAiJXMlcyVzJXMiIGlzIHRoZSBmb2xsb3dpbmc6CisgICAgLy8gMXN0ICVzID0gVGhlIGdh dGV3YXkuCisgICAgLy8gMm5kICVzID0gSWYgdGhlIGdhdGV3YXkgZGlkbid0IGVuZCBpbiBhIHNs YXNoLCBhZGQgYSAiLyIuIE90aGVyd2lzZSBpdCdzIGFuIGVtcHR5IHN0cmluZworICAgIC8vIDNy ZCAlcyA9IEVpdGhlciBpcG5zLyBvciBpcGZzLy4KKyAgICAvLyA0dGggJXMgPSBUaGUgSVBGUyBD SUQgKFFtLi4uLCBiYWZ5Li4uLCAuLi4pLgorICAgIGZ1bGx1cmkgPSBhdl9hc3ByaW50ZigiJXMl cyVzJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjLT5nYXRld2F5X2J1ZmZlciwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgKGMtPmdhdGV3YXlfYnVmZmVyW3N0cmxlbihjLT5nYXRl d2F5X2J1ZmZlcikgLSAxXSA9PSAnLycpID8gIiIgOiAiLyIsCisgICAgICAgICAgICAgICAgICAg ICAgICAgIChpc19pcG5zKSA/ICJpcG5zLyIgOiAiaXBmcy8iLAorICAgICAgICAgICAgICAgICAg ICAgICAgICBpcGZzX2NpZCk7CisKKyAgICBpZiAoIWZ1bGx1cmkpIHsKKyAgICAgIGF2X2xvZyho LCBBVl9MT0dfRVJST1IsICJGYWlsZWQgdG8gY29tcG9zZSB0aGUgVVJMXG4iKTsKKyAgICAgIHJl dCA9IEFWRVJST1IoRU5PTUVNKTsKKyAgICAgIGdvdG8gZXJyOworICAgIH0KKworICAgIC8vIFBh c3MgdGhlIFVSTCBiYWNrIHRvIEZGTXBlZydzIHByb3RvY29sIGhhbmRsZXIuCisgICAgcmV0ID0g ZmZ1cmxfb3Blbl93aGl0ZWxpc3QoJmMtPmlubmVyLCBmdWxsdXJpLCBmbGFncywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmaC0+aW50ZXJydXB0X2NhbGxiYWNrLCBvcHRpb25zLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGgtPnByb3RvY29sX3doaXRlbGlzdCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoLT5wcm90b2NvbF9ibGFja2xpc3QsIGgpOwor ICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIlVu YWJsZSB0byBvcGVuIHJlc291cmNlOiAlc1xuIiwgZnVsbHVyaSk7CisgICAgICAgIGdvdG8gZXJy OworICAgIH0KKworZXJyOgorICAgIGF2X2ZyZWUoZnVsbHVyaSk7CisgICAgcmV0dXJuIHJldDsK K30KKworc3RhdGljIGludCBpcGZzX3JlYWQoVVJMQ29udGV4dCAqaCwgdW5zaWduZWQgY2hhciAq YnVmLCBpbnQgc2l6ZSkKK3sKKyAgICBJUEZTR2F0ZXdheUNvbnRleHQgKmMgPSBoLT5wcml2X2Rh dGE7CisgICAgcmV0dXJuIGZmdXJsX3JlYWQoYy0+aW5uZXIsIGJ1Ziwgc2l6ZSk7Cit9CisKK3N0 YXRpYyBpbnQ2NF90IGlwZnNfc2VlayhVUkxDb250ZXh0ICpoLCBpbnQ2NF90IHBvcywgaW50IHdo ZW5jZSkKK3sKKyAgICBJUEZTR2F0ZXdheUNvbnRleHQgKmMgPSBoLT5wcml2X2RhdGE7CisgICAg cmV0dXJuIGZmdXJsX3NlZWsoYy0+aW5uZXIsIHBvcywgd2hlbmNlKTsKK30KKworc3RhdGljIGlu dCBpcGZzX2Nsb3NlKFVSTENvbnRleHQgKmgpCit7CisgICAgSVBGU0dhdGV3YXlDb250ZXh0ICpj ID0gaC0+cHJpdl9kYXRhOworICAgIHJldHVybiBmZnVybF9jbG9zZXAoJmMtPmlubmVyKTsKK30K KworI2RlZmluZSBPRkZTRVQoeCkgb2Zmc2V0b2YoSVBGU0dhdGV3YXlDb250ZXh0LCB4KQorCitz dGF0aWMgY29uc3QgQVZPcHRpb24gb3B0aW9uc1tdID0geworICAgIHsiZ2F0ZXdheSIsICJUaGUg Z2F0ZXdheSB0byBhc2sgZm9yIElQRlMgZGF0YS4iLCBPRkZTRVQoZ2F0ZXdheSksIEFWX09QVF9U WVBFX1NUUklORywgey5zdHIgPSBOVUxMfSwgMCwgMCwgQVZfT1BUX0ZMQUdfREVDT0RJTkdfUEFS QU19LAorICAgIHtOVUxMfSwKK307CisKK3N0YXRpYyBjb25zdCBBVkNsYXNzIGlwZnNfY29udGV4 dF9jbGFzcyA9IHsKKyAgICAuY2xhc3NfbmFtZSAgID0gIklQRlMiLAorICAgIC5pdGVtX25hbWUg ICAgPSBhdl9kZWZhdWx0X2l0ZW1fbmFtZSwKKyAgICAub3B0aW9uICAgICAgID0gb3B0aW9ucywK KyAgICAudmVyc2lvbiAgICAgID0gTElCQVZVVElMX1ZFUlNJT05fSU5ULAorfTsKKworY29uc3Qg VVJMUHJvdG9jb2wgZmZfaXBmc19wcm90b2NvbCA9IHsKKyAgICAubmFtZSAgICAgICAgICAgICA9 ICJpcGZzIiwKKyAgICAudXJsX29wZW4yICAgICAgICA9IHRyYW5zbGF0ZV9pcGZzX3RvX2h0dHAs CisgICAgLnVybF9yZWFkICAgICAgICAgPSBpcGZzX3JlYWQsCisgICAgLnVybF9zZWVrICAgICAg ICAgPSBpcGZzX3NlZWssCisgICAgLnVybF9jbG9zZSAgICAgICAgPSBpcGZzX2Nsb3NlLAorICAg IC5wcml2X2RhdGFfc2l6ZSAgID0gc2l6ZW9mKElQRlNHYXRld2F5Q29udGV4dCksCisgICAgLnBy aXZfZGF0YV9jbGFzcyAgPSAmaXBmc19jb250ZXh0X2NsYXNzLAorfTsKKworY29uc3QgVVJMUHJv dG9jb2wgZmZfaXBuc19wcm90b2NvbCA9IHsKKyAgICAubmFtZSAgICAgICAgICAgICA9ICJpcG5z IiwKKyAgICAudXJsX29wZW4yICAgICAgICA9IHRyYW5zbGF0ZV9pcGZzX3RvX2h0dHAsCisgICAg LnVybF9yZWFkICAgICAgICAgPSBpcGZzX3JlYWQsCisgICAgLnVybF9zZWVrICAgICAgICAgPSBp cGZzX3NlZWssCisgICAgLnVybF9jbG9zZSAgICAgICAgPSBpcGZzX2Nsb3NlLAorICAgIC5wcml2 X2RhdGFfc2l6ZSAgID0gc2l6ZW9mKElQRlNHYXRld2F5Q29udGV4dCksCisgICAgLnByaXZfZGF0 YV9jbGFzcyAgPSAmaXBmc19jb250ZXh0X2NsYXNzLAorfTsKZGlmZiAtLWdpdCBhL2xpYmF2Zm9y bWF0L3Byb3RvY29scy5jIGIvbGliYXZmb3JtYXQvcHJvdG9jb2xzLmMKaW5kZXggZDA3NTYzY2Qw Yy4uNmVlNjJhNTk4YSAxMDA2NDQKLS0tIGEvbGliYXZmb3JtYXQvcHJvdG9jb2xzLmMKKysrIGIv bGliYXZmb3JtYXQvcHJvdG9jb2xzLmMKQEAgLTcxLDYgKzcxLDggQEAgZXh0ZXJuIGNvbnN0IFVS TFByb3RvY29sIGZmX2xpYnNydF9wcm90b2NvbDsKIGV4dGVybiBjb25zdCBVUkxQcm90b2NvbCBm Zl9saWJzc2hfcHJvdG9jb2w7CiBleHRlcm4gY29uc3QgVVJMUHJvdG9jb2wgZmZfbGlic21iY2xp ZW50X3Byb3RvY29sOwogZXh0ZXJuIGNvbnN0IFVSTFByb3RvY29sIGZmX2xpYnptcV9wcm90b2Nv bDsKK2V4dGVybiBjb25zdCBVUkxQcm90b2NvbCBmZl9pcGZzX3Byb3RvY29sOworZXh0ZXJuIGNv bnN0IFVSTFByb3RvY29sIGZmX2lwbnNfcHJvdG9jb2w7CiAKICNpbmNsdWRlICJsaWJhdmZvcm1h dC9wcm90b2NvbF9saXN0LmMiCiAKLS0gCjIuMzUuMQoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApmZm1wZWct ZGV2ZWxAZmZtcGVnLm9yZwpodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1w ZWctZGV2ZWwKClRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbApmZm1w ZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo=