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 F348340E41 for ; Fri, 31 Dec 2021 15:58:26 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B05F368B007; Fri, 31 Dec 2021 17:58:23 +0200 (EET) Received: from mail-qk1-f173.google.com (mail-qk1-f173.google.com [209.85.222.173]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 981EC6805AE for ; Fri, 31 Dec 2021 17:58:17 +0200 (EET) Received: by mail-qk1-f173.google.com with SMTP id t66so13942621qkb.4 for ; Fri, 31 Dec 2021 07:58:17 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:content-transfer-encoding:mime-version :subject:message-id:date:cc:to; bh=0D0tygtNBuNGBicJchRKNfvBcTyWUd0F0XFsofbgWCg=; b=AV2vMYWpPqI3T1sAaJoH4FlSI9z5zPF7HUTYtjzAT1jN1d6EY167IFvG4cD8HL+V9h B3cUeDnoiO87aGhJhgg9c7zZen0L06OLhXXxVbtCzxjoTflllrRA/JgjYFtFtN/OwSdJ eLdskRwEZ3QecgIY6ude235trZ5EA3LODj9ung1NxZbW7cd2YRADYCfFfuxSSyHTrHYE Rrlw8zZpd7uANiedU1UyeB4qLGfAeB1gazUaAV3YWoGvLyqThL80f/iiKte8JgvB9Rrx oeJbzTtgwIFcq69dDb5rm9Cht2V38IpcpBfHccGxXYwYSPvtx2NzMU1VCmkACQvUUb2g uBLg== X-Gm-Message-State: AOAM5334v+oglJIDaZLMUHakMWlzqEP5UJ/y+XpCEUMRwXnAaBCOMYF1 E3N0ZKh01bR/1isGW+tnWMhsV0xwzJEOdQ== X-Google-Smtp-Source: ABdhPJx2M4n7LBg8wtdLbbmTCssssmIyVKKo0GnrFEOiQttj6aYbH2kkPCFYHTLISn18sZBPgrY06Q== X-Received: by 2002:a05:620a:2806:: with SMTP id f6mr25907339qkp.87.1640966295927; Fri, 31 Dec 2021 07:58:15 -0800 (PST) Received: from smtpclient.apple ([172.58.171.222]) by smtp.gmail.com with ESMTPSA id bs16sm22722727qkb.45.2021.12.31.07.58.15 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 31 Dec 2021 07:58:15 -0800 (PST) From: Romain Beauxis Mime-Version: 1.0 (Mac OS X Mail 15.0 \(3693.40.0.1.81\)) Message-Id: Date: Fri, 31 Dec 2021 09:58:13 -0600 To: ffmpeg-devel@ffmpeg.org X-Mailer: Apple Mail (2.3693.40.0.1.81) Subject: [FFmpeg-devel] [PATCH v7 1/3] libavdevice/avfoundation.m: use AudioConvert, extend supported formats 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: Thilo Borgmann , Aman Karmani 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: KiBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgQXVkaW9Db252ZXJ0ZXIKKiBTd2l0Y2ggdG8gQXVkaW9D b252ZXJ0ZXIncyBBUEkgdG8gY29udmVydCB1bnN1cHBvcnRlZCBQQ00KICBmb3JtYXRzIChub24t aW50ZXJsZWF2ZWQsIG5vbi1wYWNrZWQpIHRvIHN1cHBvcnRlZCBmb3JtYXRzCiogTWluaW1pemUg ZGF0YSBjb3B5LgoKVGhpcyBmaXhlczogaHR0cHM6Ly90cmFjLmZmbXBlZy5vcmcvdGlja2V0Lzk1 MDIKCkFQSSByZWY6Cmh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL2F1 ZGlvdG9vbGJveC9hdWRpb19jb252ZXJ0ZXJfc2VydmljZXMKClNpZ25lZC1vZmYtYnk6IFJvbWFp biBCZWF1eGlzIDx0b290c0ByYXN0YWdlZWtzLm9yZz4K4oCUCgpUaGlzIGlzIHRoZSBmaXJzdCBw YXRjaCBvZiBhIHNlcmllcyBvZiAzIHRoYXQgZml4LCBjbGVhbnVwIGFuZCBlbmhhbmNlIHRoZQph dmZvdW5kYXRpb24gaW1wbGVtZW50YXRpb24gZm9yIGxpYmF2ZGV2aWNlLgoKVGhlc2UgcGF0Y2hl cyBjb21lIGZyb20gYW4gYWN0dWFsIHVzZXItZmFjaW5nIGFwcGxpY2F0aW9uIHJlbHlpbmcgb24K bGliYXZkZXZpY2XigJlzIGltcGxlbWVudGF0aW9uIG9mIGF2Zm91bmRhdGlvbiBhdWRpbyBpbnB1 dC4gV2l0aG91dCB0aGVtLApBdmZvdW5kYXRpb24gaXMgcHJhY3RpY2FsbHkgdW51c2FibGUgYXMg aXQgd2lsbDoKKiBSZWZ1c2UgdG8gcHJvY2VzcyBjZXJ0YWluIHNwZWNpZmljIGF1ZGlvIGlucHV0 IGZvcm1hdCB0aGF0IGFyZSBhY3R1YWxseQogcmV0dXJuZWQgYnkgdGhlIE9TIGZvciBzb21lIHVz ZXJzIChwYWNrZWQgUENNIGF1ZGlvKQoqIERyb3AgYXVkaW8gZnJhbWVzLCByZXN1bHRpbmcgaW4g Y29ycnVwdGVkIGF1ZGlvIGlucHV0LiBUaGlzIG1pZ2h0IGhhdmUgYmVlbgogdW5ub3RpY2VkIHdp dGggdmlkZW8gZnJhbWVzIGJ1dCB0aGlzIG1ha2VzIGF2Zm91bmRhdGlvbiBlc3NlbnRpYWxseSB1 bnVzYWJsZQogZm9yIGF1ZGlvLgoKVGhlIHBhdGNoZXMgYXJlIG5vdyBiZWluZyBpbmNsdWRlZCBp biBvdXIgcHJvZHVjdGlvbiBidWlsZCBzbyB0aGV5IGFyZSB0ZXN0ZWQKYW5kIHVzYWJsZSBpbiBw cm9kdWN0aW9uLgoKQ2hhbmdlbG9nIGZvciB0aGlzIHBhdGNoOgoqIHYyOiBOb25lCiogdjM6IE5v bmUKKiB2NDogTm9uZQoqIHY1OiBGaXggaW5kZW50YXRpb24vd3JhcHBpbmcKKiB2NjogTm9uZQoq IHY3OiBSZW1vdmVkIHVzZSBvZiBrQXVkaW9Db252ZXJ0ZXJQcm9wZXJ0eUNhbGN1bGF0ZU91dHB1 dEJ1ZmZlclNpemUKICB0byBjYWxjdWxhdGUgb3V0cHV0IGJ1ZmZlciBzaXplLiBUaGUgY2FsY3Vs YXRpb24gaXMgdHJpdmlhbCBhbmQgdGhpcyBjYWxsIHdhcyAKICByYW5kb21seSBmYWlsaW5nIGZv ciBubyByZWFzb24KCmxpYmF2ZGV2aWNlL2F2Zm91bmRhdGlvbi5tIHwgMjU1ICsrKysrKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KMSBmaWxlIGNoYW5nZWQsIDE0NSBpbnNlcnRpb25z KCspLCAxMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliYXZkZXZpY2UvYXZmb3VuZGF0 aW9uLm0gYi9saWJhdmRldmljZS9hdmZvdW5kYXRpb24ubQppbmRleCAwY2Q2ZTY0NmQ1Li43Mzhj ZDkzMzc1IDEwMDY0NAotLS0gYS9saWJhdmRldmljZS9hdmZvdW5kYXRpb24ubQorKysgYi9saWJh dmRldmljZS9hdmZvdW5kYXRpb24ubQpAQCAtMTExLDE2ICsxMTEsMTEgQEAKCiAgICBpbnQgICAg ICAgICAgICAgbnVtX3ZpZGVvX2RldmljZXM7CgotICAgIGludCAgICAgICAgICAgICBhdWRpb19j aGFubmVsczsKLSAgICBpbnQgICAgICAgICAgICAgYXVkaW9fYml0c19wZXJfc2FtcGxlOwotICAg IGludCAgICAgICAgICAgICBhdWRpb19mbG9hdDsKLSAgICBpbnQgICAgICAgICAgICAgYXVkaW9f YmU7Ci0gICAgaW50ICAgICAgICAgICAgIGF1ZGlvX3NpZ25lZF9pbnRlZ2VyOwotICAgIGludCAg ICAgICAgICAgICBhdWRpb19wYWNrZWQ7Ci0gICAgaW50ICAgICAgICAgICAgIGF1ZGlvX25vbl9p bnRlcmxlYXZlZDsKLQotICAgIGludDMyX3QgICAgICAgICAqYXVkaW9fYnVmZmVyOwotICAgIGlu dCAgICAgICAgICAgICBhdWRpb19idWZmZXJfc2l6ZTsKKyAgICBVSW50MzIgICAgICAgICAgICBh dWRpb19idWZmZXJzOworICAgIFVJbnQzMiAgICAgICAgICAgIGF1ZGlvX2NoYW5uZWxzOworICAg IFVJbnQzMiAgICAgICAgICAgIGlucHV0X2J5dGVzX3Blcl9zYW1wbGU7CisgICAgVUludDMyICAg ICAgICAgICAgb3V0cHV0X2J5dGVzX3Blcl9zYW1wbGU7CisgICAgQXVkaW9Db252ZXJ0ZXJSZWYg YXVkaW9fY29udmVydGVyOwoKICAgIGVudW0gQVZQaXhlbEZvcm1hdCBwaXhlbF9mb3JtYXQ7CgpA QCAtMjk5LDcgKzI5NCwxMCBAQCBzdGF0aWMgdm9pZCBkZXN0cm95X2NvbnRleHQoQVZGQ29udGV4 dCogY3R4KQogICAgY3R4LT5hdmZfZGVsZWdhdGUgICAgPSBOVUxMOwogICAgY3R4LT5hdmZfYXVk aW9fZGVsZWdhdGUgPSBOVUxMOwoKLSAgICBhdl9mcmVlcCgmY3R4LT5hdWRpb19idWZmZXIpOwor ICAgIGlmIChjdHgtPmF1ZGlvX2NvbnZlcnRlcikgeworICAgICAgQXVkaW9Db252ZXJ0ZXJEaXNw b3NlKGN0eC0+YXVkaW9fY29udmVydGVyKTsKKyAgICAgIGN0eC0+YXVkaW9fY29udmVydGVyID0g TlVMTDsKKyAgICB9CgogICAgcHRocmVhZF9tdXRleF9kZXN0cm95KCZjdHgtPmZyYW1lX2xvY2sp OwoKQEAgLTY3Myw2ICs2NzEsMTAgQEAgc3RhdGljIGludCBnZXRfYXVkaW9fY29uZmlnKEFWRm9y bWF0Q29udGV4dCAqcykKICAgIEFWRkNvbnRleHQgKmN0eCA9IChBVkZDb250ZXh0KilzLT5wcml2 X2RhdGE7CiAgICBDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdF9kZXNjOwogICAgQVZTdHJl YW0qIHN0cmVhbSA9IGF2Zm9ybWF0X25ld19zdHJlYW0ocywgTlVMTCk7CisgICAgQXVkaW9TdHJl YW1CYXNpY0Rlc2NyaXB0aW9uIG91dHB1dF9mb3JtYXQgPSB7MH07CisgICAgaW50IGF1ZGlvX2Jp dHNfcGVyX3NhbXBsZSwgYXVkaW9fZmxvYXQsIGF1ZGlvX2JlOworICAgIGludCBhdWRpb19zaWdu ZWRfaW50ZWdlciwgYXVkaW9fcGFja2VkLCBhdWRpb19ub25faW50ZXJsZWF2ZWQ7CisgICAgaW50 IG11c3RfY29udmVydCA9IDA7CgogICAgaWYgKCFzdHJlYW0pIHsKICAgICAgICByZXR1cm4gMTsK QEAgLTY5MCw2MCArNjkyLDk3IEBAIHN0YXRpYyBpbnQgZ2V0X2F1ZGlvX2NvbmZpZyhBVkZvcm1h dENvbnRleHQgKnMpCiAgICBhdnByaXZfc2V0X3B0c19pbmZvKHN0cmVhbSwgNjQsIDEsIGF2Zl90 aW1lX2Jhc2UpOwoKICAgIGZvcm1hdF9kZXNjID0gQ01TYW1wbGVCdWZmZXJHZXRGb3JtYXREZXNj cmlwdGlvbihjdHgtPmN1cnJlbnRfYXVkaW9fZnJhbWUpOwotICAgIGNvbnN0IEF1ZGlvU3RyZWFt QmFzaWNEZXNjcmlwdGlvbiAqYmFzaWNfZGVzYyA9IENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdl dFN0cmVhbUJhc2ljRGVzY3JpcHRpb24oZm9ybWF0X2Rlc2MpOworICAgIGNvbnN0IEF1ZGlvU3Ry ZWFtQmFzaWNEZXNjcmlwdGlvbiAqaW5wdXRfZm9ybWF0ID0gQ01BdWRpb0Zvcm1hdERlc2NyaXB0 aW9uR2V0U3RyZWFtQmFzaWNEZXNjcmlwdGlvbihmb3JtYXRfZGVzYyk7CgotICAgIGlmICghYmFz aWNfZGVzYykgeworICAgIGlmICghaW5wdXRfZm9ybWF0KSB7CiAgICAgICAgdW5sb2NrX2ZyYW1l cyhjdHgpOwogICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfRVJST1IsICJhdWRpbyBmb3JtYXQgbm90 IGF2YWlsYWJsZVxuIik7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgorICAgIGlmIChpbnB1dF9m b3JtYXQtPm1Gb3JtYXRJRCAhPSBrQXVkaW9Gb3JtYXRMaW5lYXJQQ00pIHsKKyAgICAgICAgdW5s b2NrX2ZyYW1lcyhjdHgpOworICAgICAgICBhdl9sb2cocywgQVZfTE9HX0VSUk9SLCAib25seSBQ Q00gYXVkaW8gZm9ybWF0IGFyZSBzdXBwb3J0ZWQgYXQgdGhlIG1vbWVudFxuIik7CisgICAgICAg IHJldHVybiAxOworICAgIH0KKwogICAgc3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfdHlwZSAgICAg PSBBVk1FRElBX1RZUEVfQVVESU87Ci0gICAgc3RyZWFtLT5jb2RlY3Bhci0+c2FtcGxlX3JhdGUg ICAgPSBiYXNpY19kZXNjLT5tU2FtcGxlUmF0ZTsKLSAgICBzdHJlYW0tPmNvZGVjcGFyLT5jaGFu bmVscyAgICAgICA9IGJhc2ljX2Rlc2MtPm1DaGFubmVsc1BlckZyYW1lOworICAgIHN0cmVhbS0+ Y29kZWNwYXItPnNhbXBsZV9yYXRlICAgID0gaW5wdXRfZm9ybWF0LT5tU2FtcGxlUmF0ZTsKKyAg ICBzdHJlYW0tPmNvZGVjcGFyLT5jaGFubmVscyAgICAgICA9IGlucHV0X2Zvcm1hdC0+bUNoYW5u ZWxzUGVyRnJhbWU7CiAgICBzdHJlYW0tPmNvZGVjcGFyLT5jaGFubmVsX2xheW91dCA9IGF2X2dl dF9kZWZhdWx0X2NoYW5uZWxfbGF5b3V0KHN0cmVhbS0+Y29kZWNwYXItPmNoYW5uZWxzKTsKCi0g ICAgY3R4LT5hdWRpb19jaGFubmVscyAgICAgICAgPSBiYXNpY19kZXNjLT5tQ2hhbm5lbHNQZXJG cmFtZTsKLSAgICBjdHgtPmF1ZGlvX2JpdHNfcGVyX3NhbXBsZSA9IGJhc2ljX2Rlc2MtPm1CaXRz UGVyQ2hhbm5lbDsKLSAgICBjdHgtPmF1ZGlvX2Zsb2F0ICAgICAgICAgICA9IGJhc2ljX2Rlc2Mt Pm1Gb3JtYXRGbGFncyAmIGtBdWRpb0Zvcm1hdEZsYWdJc0Zsb2F0OwotICAgIGN0eC0+YXVkaW9f YmUgICAgICAgICAgICAgID0gYmFzaWNfZGVzYy0+bUZvcm1hdEZsYWdzICYga0F1ZGlvRm9ybWF0 RmxhZ0lzQmlnRW5kaWFuOwotICAgIGN0eC0+YXVkaW9fc2lnbmVkX2ludGVnZXIgID0gYmFzaWNf ZGVzYy0+bUZvcm1hdEZsYWdzICYga0F1ZGlvRm9ybWF0RmxhZ0lzU2lnbmVkSW50ZWdlcjsKLSAg ICBjdHgtPmF1ZGlvX3BhY2tlZCAgICAgICAgICA9IGJhc2ljX2Rlc2MtPm1Gb3JtYXRGbGFncyAm IGtBdWRpb0Zvcm1hdEZsYWdJc1BhY2tlZDsKLSAgICBjdHgtPmF1ZGlvX25vbl9pbnRlcmxlYXZl ZCA9IGJhc2ljX2Rlc2MtPm1Gb3JtYXRGbGFncyAmIGtBdWRpb0Zvcm1hdEZsYWdJc05vbkludGVy bGVhdmVkOwotCi0gICAgaWYgKGJhc2ljX2Rlc2MtPm1Gb3JtYXRJRCA9PSBrQXVkaW9Gb3JtYXRM aW5lYXJQQ00gJiYKLSAgICAgICAgY3R4LT5hdWRpb19mbG9hdCAmJgotICAgICAgICBjdHgtPmF1 ZGlvX2JpdHNfcGVyX3NhbXBsZSA9PSAzMiAmJgotICAgICAgICBjdHgtPmF1ZGlvX3BhY2tlZCkg ewotICAgICAgICBzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19pZCA9IGN0eC0+YXVkaW9fYmUgPyBB Vl9DT0RFQ19JRF9QQ01fRjMyQkUgOiBBVl9DT0RFQ19JRF9QQ01fRjMyTEU7Ci0gICAgfSBlbHNl IGlmIChiYXNpY19kZXNjLT5tRm9ybWF0SUQgPT0ga0F1ZGlvRm9ybWF0TGluZWFyUENNICYmCi0g ICAgICAgIGN0eC0+YXVkaW9fc2lnbmVkX2ludGVnZXIgJiYKLSAgICAgICAgY3R4LT5hdWRpb19i aXRzX3Blcl9zYW1wbGUgPT0gMTYgJiYKLSAgICAgICAgY3R4LT5hdWRpb19wYWNrZWQpIHsKLSAg ICAgICAgc3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQgPSBjdHgtPmF1ZGlvX2JlID8gQVZfQ09E RUNfSURfUENNX1MxNkJFIDogQVZfQ09ERUNfSURfUENNX1MxNkxFOwotICAgIH0gZWxzZSBpZiAo YmFzaWNfZGVzYy0+bUZvcm1hdElEID09IGtBdWRpb0Zvcm1hdExpbmVhclBDTSAmJgotICAgICAg ICBjdHgtPmF1ZGlvX3NpZ25lZF9pbnRlZ2VyICYmCi0gICAgICAgIGN0eC0+YXVkaW9fYml0c19w ZXJfc2FtcGxlID09IDI0ICYmCi0gICAgICAgIGN0eC0+YXVkaW9fcGFja2VkKSB7Ci0gICAgICAg IHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkID0gY3R4LT5hdWRpb19iZSA/IEFWX0NPREVDX0lE X1BDTV9TMjRCRSA6IEFWX0NPREVDX0lEX1BDTV9TMjRMRTsKLSAgICB9IGVsc2UgaWYgKGJhc2lj X2Rlc2MtPm1Gb3JtYXRJRCA9PSBrQXVkaW9Gb3JtYXRMaW5lYXJQQ00gJiYKLSAgICAgICAgY3R4 LT5hdWRpb19zaWduZWRfaW50ZWdlciAmJgotICAgICAgICBjdHgtPmF1ZGlvX2JpdHNfcGVyX3Nh bXBsZSA9PSAzMiAmJgotICAgICAgICBjdHgtPmF1ZGlvX3BhY2tlZCkgewotICAgICAgICBzdHJl YW0tPmNvZGVjcGFyLT5jb2RlY19pZCA9IGN0eC0+YXVkaW9fYmUgPyBBVl9DT0RFQ19JRF9QQ01f UzMyQkUgOiBBVl9DT0RFQ19JRF9QQ01fUzMyTEU7CisgICAgYXVkaW9fYml0c19wZXJfc2FtcGxl ID0gaW5wdXRfZm9ybWF0LT5tQml0c1BlckNoYW5uZWw7CisgICAgYXVkaW9fZmxvYXQgICAgICAg ICAgID0gaW5wdXRfZm9ybWF0LT5tRm9ybWF0RmxhZ3MgJiBrQXVkaW9Gb3JtYXRGbGFnSXNGbG9h dDsKKyAgICBhdWRpb19iZSAgICAgICAgICAgICAgPSBpbnB1dF9mb3JtYXQtPm1Gb3JtYXRGbGFn cyAmIGtBdWRpb0Zvcm1hdEZsYWdJc0JpZ0VuZGlhbjsKKyAgICBhdWRpb19zaWduZWRfaW50ZWdl ciAgPSBpbnB1dF9mb3JtYXQtPm1Gb3JtYXRGbGFncyAmIGtBdWRpb0Zvcm1hdEZsYWdJc1NpZ25l ZEludGVnZXI7CisgICAgYXVkaW9fcGFja2VkICAgICAgICAgID0gaW5wdXRfZm9ybWF0LT5tRm9y bWF0RmxhZ3MgJiBrQXVkaW9Gb3JtYXRGbGFnSXNQYWNrZWQ7CisgICAgYXVkaW9fbm9uX2ludGVy bGVhdmVkID0gaW5wdXRfZm9ybWF0LT5tRm9ybWF0RmxhZ3MgJiBrQXVkaW9Gb3JtYXRGbGFnSXNO b25JbnRlcmxlYXZlZDsKKworICAgIGN0eC0+aW5wdXRfYnl0ZXNfcGVyX3NhbXBsZSAgPSBpbnB1 dF9mb3JtYXQtPm1CaXRzUGVyQ2hhbm5lbCA+PiAzOworICAgIGN0eC0+b3V0cHV0X2J5dGVzX3Bl cl9zYW1wbGUgPSBjdHgtPmlucHV0X2J5dGVzX3Blcl9zYW1wbGU7CisgICAgY3R4LT5hdWRpb19j aGFubmVscyAgICAgICAgICA9IGlucHV0X2Zvcm1hdC0+bUNoYW5uZWxzUGVyRnJhbWU7CisKKyAg ICBpZiAoYXVkaW9fbm9uX2ludGVybGVhdmVkKSB7CisgICAgICAgIGN0eC0+YXVkaW9fYnVmZmVy cyA9IGlucHV0X2Zvcm1hdC0+bUNoYW5uZWxzUGVyRnJhbWU7CiAgICB9IGVsc2UgewotICAgICAg ICB1bmxvY2tfZnJhbWVzKGN0eCk7Ci0gICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfRVJST1IsICJh dWRpbyBmb3JtYXQgaXMgbm90IHN1cHBvcnRlZFxuIik7Ci0gICAgICAgIHJldHVybiAxOworICAg ICAgICBjdHgtPmF1ZGlvX2J1ZmZlcnMgPSAxOworICAgIH0KKworICAgIGlmIChhdWRpb19ub25f aW50ZXJsZWF2ZWQgfHwgIWF1ZGlvX3BhY2tlZCkgeworICAgICAgbXVzdF9jb252ZXJ0ID0gMTsK KyAgICB9CisKKyAgICBvdXRwdXRfZm9ybWF0Lm1CaXRzUGVyQ2hhbm5lbCAgID0gaW5wdXRfZm9y bWF0LT5tQml0c1BlckNoYW5uZWw7CisgICAgb3V0cHV0X2Zvcm1hdC5tQ2hhbm5lbHNQZXJGcmFt ZSA9IGN0eC0+YXVkaW9fY2hhbm5lbHM7CisgICAgb3V0cHV0X2Zvcm1hdC5tRnJhbWVzUGVyUGFj a2V0ICA9IDE7CisgICAgb3V0cHV0X2Zvcm1hdC5tQnl0ZXNQZXJGcmFtZSAgICA9IG91dHB1dF9m b3JtYXQubUNoYW5uZWxzUGVyRnJhbWUgKiBjdHgtPmlucHV0X2J5dGVzX3Blcl9zYW1wbGU7Cisg ICAgb3V0cHV0X2Zvcm1hdC5tQnl0ZXNQZXJQYWNrZXQgICA9IG91dHB1dF9mb3JtYXQubUZyYW1l c1BlclBhY2tldCAqIG91dHB1dF9mb3JtYXQubUJ5dGVzUGVyRnJhbWU7CisgICAgb3V0cHV0X2Zv cm1hdC5tRm9ybWF0RmxhZ3MgICAgICA9IGtBdWRpb0Zvcm1hdEZsYWdJc1BhY2tlZCB8IGF1ZGlv X2JlOworICAgIG91dHB1dF9mb3JtYXQubUZvcm1hdElEICAgICAgICAgPSBrQXVkaW9Gb3JtYXRM aW5lYXJQQ007CisgICAgb3V0cHV0X2Zvcm1hdC5tUmVzZXJ2ZWQgICAgICAgICA9IDA7CisgICAg b3V0cHV0X2Zvcm1hdC5tU2FtcGxlUmF0ZSAgICAgICA9IGlucHV0X2Zvcm1hdC0+bVNhbXBsZVJh dGU7CisKKyAgICBpZiAoYXVkaW9fZmxvYXQgJiYKKyAgICAgICAgYXVkaW9fYml0c19wZXJfc2Ft cGxlID09IDMyKSB7CisgICAgICAgIHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkID0gYXVkaW9f YmUgPyBBVl9DT0RFQ19JRF9QQ01fRjMyQkUgOiBBVl9DT0RFQ19JRF9QQ01fRjMyTEU7CisgICAg ICAgIG91dHB1dF9mb3JtYXQubUZvcm1hdEZsYWdzIHw9IGtBdWRpb0Zvcm1hdEZsYWdJc0Zsb2F0 OworICAgIH0gZWxzZSBpZiAoYXVkaW9fZmxvYXQgJiYKKyAgICAgICAgYXVkaW9fYml0c19wZXJf c2FtcGxlID09IDY0KSB7CisgICAgICAgIHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkID0gYXVk aW9fYmUgPyBBVl9DT0RFQ19JRF9QQ01fRjY0QkUgOiBBVl9DT0RFQ19JRF9QQ01fRjY0TEU7Cisg ICAgICAgIG91dHB1dF9mb3JtYXQubUZvcm1hdEZsYWdzIHw9IGtBdWRpb0Zvcm1hdEZsYWdJc0Zs b2F0OworICAgIH0gZWxzZSBpZiAoYXVkaW9fc2lnbmVkX2ludGVnZXIgJiYKKyAgICAgICAgYXVk aW9fYml0c19wZXJfc2FtcGxlID09IDgpIHsKKyAgICAgICAgc3RyZWFtLT5jb2RlY3Bhci0+Y29k ZWNfaWQgPSBBVl9DT0RFQ19JRF9QQ01fUzg7CisgICAgICAgIG91dHB1dF9mb3JtYXQubUZvcm1h dEZsYWdzIHw9IGtBdWRpb0Zvcm1hdEZsYWdJc1NpZ25lZEludGVnZXI7CisgICAgfSBlbHNlIGlm IChhdWRpb19zaWduZWRfaW50ZWdlciAmJgorICAgICAgICBhdWRpb19iaXRzX3Blcl9zYW1wbGUg PT0gMTYpIHsKKyAgICAgICAgc3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQgPSBhdWRpb19iZSA/ IEFWX0NPREVDX0lEX1BDTV9TMTZCRSA6IEFWX0NPREVDX0lEX1BDTV9TMTZMRTsKKyAgICAgICAg b3V0cHV0X2Zvcm1hdC5tRm9ybWF0RmxhZ3MgfD0ga0F1ZGlvRm9ybWF0RmxhZ0lzU2lnbmVkSW50 ZWdlcjsKKyAgICB9IGVsc2UgaWYgKGF1ZGlvX3NpZ25lZF9pbnRlZ2VyICYmCisgICAgICAgIGF1 ZGlvX2JpdHNfcGVyX3NhbXBsZSA9PSAyNCkgeworICAgICAgICBzdHJlYW0tPmNvZGVjcGFyLT5j b2RlY19pZCA9IGF1ZGlvX2JlID8gQVZfQ09ERUNfSURfUENNX1MyNEJFIDogQVZfQ09ERUNfSURf UENNX1MyNExFOworICAgICAgICBvdXRwdXRfZm9ybWF0Lm1Gb3JtYXRGbGFncyB8PSBrQXVkaW9G b3JtYXRGbGFnSXNTaWduZWRJbnRlZ2VyOworICAgIH0gZWxzZSBpZiAoYXVkaW9fc2lnbmVkX2lu dGVnZXIgJiYKKyAgICAgICAgYXVkaW9fYml0c19wZXJfc2FtcGxlID09IDMyKSB7CisgICAgICAg IHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkID0gYXVkaW9fYmUgPyBBVl9DT0RFQ19JRF9QQ01f UzMyQkUgOiBBVl9DT0RFQ19JRF9QQ01fUzMyTEU7CisgICAgICAgIG91dHB1dF9mb3JtYXQubUZv cm1hdEZsYWdzIHw9IGtBdWRpb0Zvcm1hdEZsYWdJc1NpZ25lZEludGVnZXI7CisgICAgfSBlbHNl IGlmIChhdWRpb19zaWduZWRfaW50ZWdlciAmJgorICAgICAgICBhdWRpb19iaXRzX3Blcl9zYW1w bGUgPT0gNjQpIHsKKyAgICAgICAgc3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQgPSBhdWRpb19i ZSA/IEFWX0NPREVDX0lEX1BDTV9TNjRCRSA6IEFWX0NPREVDX0lEX1BDTV9TNjRMRTsKKyAgICAg ICAgb3V0cHV0X2Zvcm1hdC5tRm9ybWF0RmxhZ3MgfD0ga0F1ZGlvRm9ybWF0RmxhZ0lzU2lnbmVk SW50ZWdlcjsKKyAgICB9IGVsc2UgeworICAgICAgICBzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19p ZCA9IGF1ZGlvX2JlID8gQVZfQ09ERUNfSURfUENNX1MzMkJFIDogQVZfQ09ERUNfSURfUENNX1Mz MkxFOworICAgICAgICBjdHgtPm91dHB1dF9ieXRlc19wZXJfc2FtcGxlID0gNDsKKyAgICAgICAg b3V0cHV0X2Zvcm1hdC5tQml0c1BlckNoYW5uZWwgPSAzMjsKKyAgICAgICAgb3V0cHV0X2Zvcm1h dC5tRm9ybWF0RmxhZ3MgfD0ga0F1ZGlvRm9ybWF0RmxhZ0lzU2lnbmVkSW50ZWdlcjsKKyAgICAg ICAgbXVzdF9jb252ZXJ0ID0gMTsKICAgIH0KCi0gICAgaWYgKGN0eC0+YXVkaW9fbm9uX2ludGVy bGVhdmVkKSB7Ci0gICAgICAgIENNQmxvY2tCdWZmZXJSZWYgYmxvY2tfYnVmZmVyID0gQ01TYW1w bGVCdWZmZXJHZXREYXRhQnVmZmVyKGN0eC0+Y3VycmVudF9hdWRpb19mcmFtZSk7Ci0gICAgICAg IGN0eC0+YXVkaW9fYnVmZmVyX3NpemUgICAgICAgID0gQ01CbG9ja0J1ZmZlckdldERhdGFMZW5n dGgoYmxvY2tfYnVmZmVyKTsKLSAgICAgICAgY3R4LT5hdWRpb19idWZmZXIgICAgICAgICAgICAg PSBhdl9tYWxsb2MoY3R4LT5hdWRpb19idWZmZXJfc2l6ZSk7Ci0gICAgICAgIGlmICghY3R4LT5h dWRpb19idWZmZXIpIHsKKyAgICBpZiAobXVzdF9jb252ZXJ0KSB7CisgICAgICAgIE9TU3RhdHVz IHJldCA9IEF1ZGlvQ29udmVydGVyTmV3KGlucHV0X2Zvcm1hdCwgJm91dHB1dF9mb3JtYXQsICZj dHgtPmF1ZGlvX2NvbnZlcnRlcik7CisgICAgICAgIGlmIChyZXQgIT0gbm9FcnIpIHsKICAgICAg ICAgICAgdW5sb2NrX2ZyYW1lcyhjdHgpOwotICAgICAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19F UlJPUiwgImVycm9yIGFsbG9jYXRpbmcgYXVkaW8gYnVmZmVyXG4iKTsKKyAgICAgICAgICAgIGF2 X2xvZyhzLCBBVl9MT0dfRVJST1IsICJFcnJvciB3aGlsZSBhbGxvY2F0aW5nIGF1ZGlvIGNvbnZl cnRlclxuIik7CiAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgIH0KICAgIH0KQEAgLTEwNDgs NiArMTA4Nyw3IEBAIHN0YXRpYyBpbnQgY29weV9jdnBpeGVsYnVmZmVyKEFWRm9ybWF0Q29udGV4 dCAqcywKCnN0YXRpYyBpbnQgYXZmX3JlYWRfcGFja2V0KEFWRm9ybWF0Q29udGV4dCAqcywgQVZQ YWNrZXQgKnBrdCkKeworICAgIE9TU3RhdHVzIHJldDsKICAgIEFWRkNvbnRleHQqIGN0eCA9IChB VkZDb250ZXh0KilzLT5wcml2X2RhdGE7CgogICAgZG8gewpAQCAtMTA5MSw3ICsxMTMxLDcgQEAg c3RhdGljIGludCBhdmZfcmVhZF9wYWNrZXQoQVZGb3JtYXRDb250ZXh0ICpzLCBBVlBhY2tldCAq cGt0KQogICAgICAgICAgICAgICAgc3RhdHVzID0gY29weV9jdnBpeGVsYnVmZmVyKHMsIGltYWdl X2J1ZmZlciwgcGt0KTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHN0YXR1 cyA9IDA7Ci0gICAgICAgICAgICAgICAgT1NTdGF0dXMgcmV0ID0gQ01CbG9ja0J1ZmZlckNvcHlE YXRhQnl0ZXMoYmxvY2tfYnVmZmVyLCAwLCBwa3QtPnNpemUsIHBrdC0+ZGF0YSk7CisgICAgICAg ICAgICAgICAgcmV0ID0gQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMoYmxvY2tfYnVmZmVyLCAw LCBwa3QtPnNpemUsIHBrdC0+ZGF0YSk7CiAgICAgICAgICAgICAgICBpZiAocmV0ICE9IGtDTUJs b2NrQnVmZmVyTm9FcnIpIHsKICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSBBVkVSUk9SKEVJ Tyk7CiAgICAgICAgICAgICAgICB9CkBAIC0xMTA1LDIxICsxMTQ1LDYwIEBAIHN0YXRpYyBpbnQg YXZmX3JlYWRfcGFja2V0KEFWRm9ybWF0Q29udGV4dCAqcywgQVZQYWNrZXQgKnBrdCkKICAgICAg ICAgICAgfQogICAgICAgIH0gZWxzZSBpZiAoY3R4LT5jdXJyZW50X2F1ZGlvX2ZyYW1lICE9IG5p bCkgewogICAgICAgICAgICBDTUJsb2NrQnVmZmVyUmVmIGJsb2NrX2J1ZmZlciA9IENNU2FtcGxl QnVmZmVyR2V0RGF0YUJ1ZmZlcihjdHgtPmN1cnJlbnRfYXVkaW9fZnJhbWUpOwotICAgICAgICAg ICAgaW50IGJsb2NrX2J1ZmZlcl9zaXplICAgICAgICAgPSBDTUJsb2NrQnVmZmVyR2V0RGF0YUxl bmd0aChibG9ja19idWZmZXIpOwoKLSAgICAgICAgICAgIGlmICghYmxvY2tfYnVmZmVyIHx8ICFi bG9ja19idWZmZXJfc2l6ZSkgewotICAgICAgICAgICAgICAgIHVubG9ja19mcmFtZXMoY3R4KTsK LSAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFSU8pOwotICAgICAgICAgICAgfQorICAg ICAgICAgICAgc2l6ZV90IGlucHV0X3NpemUgPSBDTUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aChi bG9ja19idWZmZXIpOworICAgICAgICAgICAgaW50IGJ1ZmZlcl9zaXplID0gaW5wdXRfc2l6ZSAv IGN0eC0+YXVkaW9fYnVmZmVyczsKKyAgICAgICAgICAgIGludCBuYl9zYW1wbGVzID0gaW5wdXRf c2l6ZSAvIChjdHgtPmF1ZGlvX2NoYW5uZWxzICogY3R4LT5pbnB1dF9ieXRlc19wZXJfc2FtcGxl KTsKKyAgICAgICAgICAgIGludCBvdXRwdXRfc2l6ZSA9IG5iX3NhbXBsZXMgKiBjdHgtPm91dHB1 dF9ieXRlc19wZXJfc2FtcGxlICogY3R4LT5hdWRpb19jaGFubmVsczsKCi0gICAgICAgICAgICBp ZiAoY3R4LT5hdWRpb19ub25faW50ZXJsZWF2ZWQgJiYgYmxvY2tfYnVmZmVyX3NpemUgPiBjdHgt PmF1ZGlvX2J1ZmZlcl9zaXplKSB7Ci0gICAgICAgICAgICAgICAgdW5sb2NrX2ZyYW1lcyhjdHgp OwotICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0JVRkZFUl9UT09fU01BTEw7CisgICAg ICAgICAgICBzdGF0dXMgPSBhdl9uZXdfcGFja2V0KHBrdCwgb3V0cHV0X3NpemUpOworICAgICAg ICAgICAgaWYgKHN0YXR1cyA8IDApIHsKKyAgICAgICAgICAgICAgICBDRlJlbGVhc2UoYXVkaW9f ZnJhbWUpOworICAgICAgICAgICAgICAgIHJldHVybiBzdGF0dXM7CiAgICAgICAgICAgIH0KCi0g ICAgICAgICAgICBpZiAoYXZfbmV3X3BhY2tldChwa3QsIGJsb2NrX2J1ZmZlcl9zaXplKSA8IDAp IHsKLSAgICAgICAgICAgICAgICB1bmxvY2tfZnJhbWVzKGN0eCk7Ci0gICAgICAgICAgICAgICAg cmV0dXJuIEFWRVJST1IoRUlPKTsKKyAgICAgICAgICAgIGlmIChjdHgtPmF1ZGlvX2NvbnZlcnRl cikgeworICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dF9idWZmZXJfc2l6ZSA9IG9mZnNldG9m KEF1ZGlvQnVmZmVyTGlzdCwgbUJ1ZmZlcnNbMF0pICsgKHNpemVvZihBdWRpb0J1ZmZlcikgKiBj dHgtPmF1ZGlvX2J1ZmZlcnMpOworICAgICAgICAgICAgICAgIEF1ZGlvQnVmZmVyTGlzdCAqaW5w dXRfYnVmZmVyID0gYXZfbWFsbG9jKGlucHV0X2J1ZmZlcl9zaXplKTsKKworICAgICAgICAgICAg ICAgIGlucHV0X2J1ZmZlci0+bU51bWJlckJ1ZmZlcnMgPSBjdHgtPmF1ZGlvX2J1ZmZlcnM7CisK KyAgICAgICAgICAgICAgICBmb3IgKGludCBjID0gMDsgYyA8IGN0eC0+YXVkaW9fYnVmZmVyczsg YysrKSB7CisgICAgICAgICAgICAgICAgICAgIGlucHV0X2J1ZmZlci0+bUJ1ZmZlcnNbY10ubU51 bWJlckNoYW5uZWxzID0gMTsKKworICAgICAgICAgICAgICAgICAgICByZXQgPSBDTUJsb2NrQnVm ZmVyR2V0RGF0YVBvaW50ZXIoYmxvY2tfYnVmZmVyLCBjICogYnVmZmVyX3NpemUsIChzaXplX3Qg KikmaW5wdXRfYnVmZmVyLT5tQnVmZmVyc1tjXS5tRGF0YUJ5dGVTaXplLCBOVUxMLCAodm9pZCAq KSZpbnB1dF9idWZmZXItPm1CdWZmZXJzW2NdLm1EYXRhKTsKKworICAgICAgICAgICAgICAgICAg ICBpZiAocmV0ICE9IGtDTUJsb2NrQnVmZmVyTm9FcnIpIHsKKyAgICAgICAgICAgICAgICAgICAg ICAgIGF2X2ZyZWUoaW5wdXRfYnVmZmVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVubG9j a19mcmFtZXMoY3R4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVJ Tyk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg ICAgICAgICBBdWRpb0J1ZmZlckxpc3Qgb3V0cHV0X2J1ZmZlciA9IHsKKyAgICAgICAgICAgICAg ICAgICAubU51bWJlckJ1ZmZlcnMgPSAxLAorICAgICAgICAgICAgICAgICAgIC5tQnVmZmVyc1sw XSAgICA9IHsKKyAgICAgICAgICAgICAgICAgICAgICAgLm1OdW1iZXJDaGFubmVscyA9IGN0eC0+ YXVkaW9fY2hhbm5lbHMsCisgICAgICAgICAgICAgICAgICAgICAgIC5tRGF0YUJ5dGVTaXplICAg PSBwa3QtPnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgIC5tRGF0YSAgICAgICAgICAgPSBw a3QtPmRhdGEKKyAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfTsKKworICAg ICAgICAgICAgICAgIHJldCA9IEF1ZGlvQ29udmVydGVyQ29udmVydENvbXBsZXhCdWZmZXIoY3R4 LT5hdWRpb19jb252ZXJ0ZXIsIG5iX3NhbXBsZXMsIGlucHV0X2J1ZmZlciwgJm91dHB1dF9idWZm ZXIpOworICAgICAgICAgICAgICAgIGF2X2ZyZWUoaW5wdXRfYnVmZmVyKTsKKworICAgICAgICAg ICAgICAgIGlmIChyZXQgIT0gbm9FcnIpIHsKKyAgICAgICAgICAgICAgICAgICAgdW5sb2NrX2Zy YW1lcyhjdHgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFSU8pOworICAg ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHBrdC0+c2l6ZSA9IG91dHB1dF9idWZm ZXIubUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg ICAgICAgICAgICAgIHJldCA9IENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzKGJsb2NrX2J1ZmZl ciwgMCwgcGt0LT5zaXplLCBwa3QtPmRhdGEpOworICAgICAgICAgICAgICAgICBpZiAocmV0ICE9 IGtDTUJsb2NrQnVmZmVyTm9FcnIpIHsKKyAgICAgICAgICAgICAgICAgICAgIHVubG9ja19mcmFt ZXMoY3R4KTsKKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTyk7CisgICAg ICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgQ01JdGVtQ291bnQgY291 bnQ7CkBAIC0xMTMzLDU0ICsxMjEyLDEwIEBAIHN0YXRpYyBpbnQgYXZmX3JlYWRfcGFja2V0KEFW Rm9ybWF0Q29udGV4dCAqcywgQVZQYWNrZXQgKnBrdCkKICAgICAgICAgICAgcGt0LT5zdHJlYW1f aW5kZXggID0gY3R4LT5hdWRpb19zdHJlYW1faW5kZXg7CiAgICAgICAgICAgIHBrdC0+ZmxhZ3Mg ICAgICAgIHw9IEFWX1BLVF9GTEFHX0tFWTsKCi0gICAgICAgICAgICBpZiAoY3R4LT5hdWRpb19u b25faW50ZXJsZWF2ZWQpIHsKLSAgICAgICAgICAgICAgICBpbnQgc2FtcGxlLCBjLCBzaGlmdCwg bnVtX3NhbXBsZXM7Ci0KLSAgICAgICAgICAgICAgICBPU1N0YXR1cyByZXQgPSBDTUJsb2NrQnVm ZmVyQ29weURhdGFCeXRlcyhibG9ja19idWZmZXIsIDAsIHBrdC0+c2l6ZSwgY3R4LT5hdWRpb19i dWZmZXIpOwotICAgICAgICAgICAgICAgIGlmIChyZXQgIT0ga0NNQmxvY2tCdWZmZXJOb0Vycikg ewotICAgICAgICAgICAgICAgICAgICB1bmxvY2tfZnJhbWVzKGN0eCk7Ci0gICAgICAgICAgICAg ICAgICAgIHJldHVybiBBVkVSUk9SKEVJTyk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAg ICAgICAgICAgbnVtX3NhbXBsZXMgPSBwa3QtPnNpemUgLyAoY3R4LT5hdWRpb19jaGFubmVscyAq IChjdHgtPmF1ZGlvX2JpdHNfcGVyX3NhbXBsZSA+PiAzKSk7Ci0KLSAgICAgICAgICAgICAgICAv LyB0cmFuc2Zvcm0gZGVjb2RlZCBmcmFtZSBpbnRvIG91dHB1dCBmb3JtYXQKLSAgICAgICAgICAg ICAgICAjZGVmaW5lIElOVEVSTEVBVkVfT1VUUFVUKGJwcykgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICB7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg ICAgICAgICAgICAgICAgICAgaW50IyNicHMjI190ICoqc3JjOyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgaW50IyNi cHMjI190ICpkZXN0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKLSAgICAgICAgICAgICAgICAgICAgc3JjID0gYXZfbWFsbG9jKGN0eC0+YXVkaW9fY2hh bm5lbHMgKiBzaXplb2YoaW50IyNicHMjI190KikpOyAgICAgIFwKLSAgICAgICAgICAgICAgICAg ICAgaWYgKCFzcmMpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIHVubG9ja19mcmFtZXMoY3R4 KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTyk7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgZm9y IChjID0gMDsgYyA8IGN0eC0+YXVkaW9fY2hhbm5lbHM7IGMrKykgeyAgICAgICAgICAgICAgICAg ICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNyY1tjXSA9ICgoaW50IyNicHMjI190 KiljdHgtPmF1ZGlvX2J1ZmZlcikgKyBjICogbnVtX3NhbXBsZXM7IFwKLSAgICAgICAgICAgICAg ICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgZGVzdCAgPSAoaW50IyNicHMj I190Kilwa3QtPmRhdGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg ICAgICAgICAgICAgICAgc2hpZnQgPSBicHMgLSBjdHgtPmF1ZGlvX2JpdHNfcGVyX3NhbXBsZTsg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgZm9yIChzYW1w bGUgPSAwOyBzYW1wbGUgPCBudW1fc2FtcGxlczsgc2FtcGxlKyspICAgICAgICAgICAgICAgICAg IFwKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoYyA9IDA7IGMgPCBjdHgtPmF1ZGlvX2No YW5uZWxzOyBjKyspICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqZGVzdCsrID0gc3JjW2NdW3NhbXBsZV0gPDwgc2hpZnQ7ICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgYXZfZnJlZXAoJnNyYyk7ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAg ICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoY3R4LT5hdWRpb19iaXRzX3Blcl9zYW1wbGUg PD0gMTYpIHsKLSAgICAgICAgICAgICAgICAgICAgSU5URVJMRUFWRV9PVVRQVVQoMTYpCi0gICAg ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgSU5URVJMRUFWRV9PVVRQ VVQoMzIpCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg ICAgICAgICBPU1N0YXR1cyByZXQgPSBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcyhibG9ja19i dWZmZXIsIDAsIHBrdC0+c2l6ZSwgcGt0LT5kYXRhKTsKLSAgICAgICAgICAgICAgICBpZiAocmV0 ICE9IGtDTUJsb2NrQnVmZmVyTm9FcnIpIHsKLSAgICAgICAgICAgICAgICAgICAgdW5sb2NrX2Zy YW1lcyhjdHgpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFSU8pOwotICAg ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQogICAgICAgICAgICBDRlJlbGVhc2UoY3R4 LT5jdXJyZW50X2F1ZGlvX2ZyYW1lKTsKICAgICAgICAgICAgY3R4LT5jdXJyZW50X2F1ZGlvX2Zy YW1lID0gbmlsOworCisgICAgICAgICAgICB1bmxvY2tfZnJhbWVzKGN0eCk7CiAgICAgICAgfSBl bHNlIHsKICAgICAgICAgICAgcGt0LT5kYXRhID0gTlVMTDsKICAgICAgICAgICAgdW5sb2NrX2Zy YW1lcyhjdHgpOwotLSAKMi4zMi4wIChBcHBsZSBHaXQtMTMyKQoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApm Zm1wZWctZGV2ZWxAZmZtcGVnLm9yZwpodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5m by9mZm1wZWctZGV2ZWwKClRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFp bApmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3Jp YmUiLgo=