From mboxrd@z Thu Jan 1 00:00:00 1970 From: Brendan Higgins Subject: [PATCH v4 11/18] kunit: test: add the concept of assertions Date: Tue, 14 May 2019 15:17:04 -0700 Message-ID: <20190514221711.248228-12-brendanhiggins@google.com> References: <20190514221711.248228-1-brendanhiggins@google.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190514221711.248228-1-brendanhiggins@google.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: frowand.list@gmail.com, gregkh@linuxfoundation.org, jpoimboe@redhat.com, keescook@google.com, kieran.bingham@ideasonboard.com, mcgrof@kernel.org, peterz@infradead.org, robh@kernel.org, sboyd@kernel.org, shuah@kernel.org, tytso@mit.edu, yamada.masahiro@socionext.com Cc: pmladek@suse.com, linux-doc@vger.kernel.org, amir73il@gmail.com, Brendan Higgins , dri-devel@lists.freedesktop.org, Alexander.Levin@microsoft.com, linux-kselftest@vger.kernel.org, linux-nvdimm@lists.01.org, khilman@baylibre.com, knut.omang@oracle.com, wfg@linux.intel.com, joel@jms.id.au, rientjes@google.com, jdike@addtoit.com, dan.carpenter@oracle.com, devicetree@vger.kernel.org, linux-kbuild@vger.kernel.org, Tim.Bird@sony.com, linux-um@lists.infradead.org, rostedt@goodmis.org, julia.lawall@lip6.fr, kunit-dev@googlegroups.com, richard@nod.at, rdunlap@infradead.org, linux-kernel@vger.kernel.org, mpe@ellerman.id.au, linux-fsdevel@vger.kernel.org, logang@deltatee.com List-Id: linux-nvdimm@lists.01.org QWRkIHN1cHBvcnQgZm9yIGFzc2VydGlvbnMgd2hpY2ggYXJlIGxpa2UgZXhwZWN0YXRpb25zIGV4 Y2VwdCB0aGUgdGVzdAp0ZXJtaW5hdGVzIGlmIHRoZSBhc3NlcnRpb24gaXMgbm90IHNhdGlzZmll ZC4KClRoZSBpZGVhIHdpdGggYXNzZXJ0aW9ucyBpcyB0aGF0IHlvdSB1c2UgdGhlbSB0byBzdGF0 ZSBhbGwgdGhlCnByZWNvbmRpdGlvbnMgZm9yIHlvdXIgdGVzdC4gTG9naWNhbGx5IHNwZWFraW5n LCB0aGVzZSBhcmUgdGhlIHByZW1pc2VzCm9mIHRoZSB0ZXN0IGNhc2UsIHNvIGlmIGEgcHJlbWlz ZSBpc24ndCB0cnVlLCB0aGVyZSBpcyBubyBwb2ludCBpbgpjb250aW51aW5nIHRoZSB0ZXN0IGNh c2UgYmVjYXVzZSB0aGVyZSBhcmUgbm8gY29uY2x1c2lvbnMgdGhhdCBjYW4gYmUKZHJhd24gd2l0 aG91dCB0aGUgcHJlbWlzZXMuIFdoZXJlYXMsIHRoZSBleHBlY3RhdGlvbiBpcyB0aGUgdGhpbmcg eW91CmFyZSB0cnlpbmcgdG8gcHJvdmUuIEl0IGlzIG5vdCB1c2VkIHVuaXZlcnNhbGx5IGluIHgt dW5pdCBzdHlsZSB0ZXN0CmZyYW1ld29ya3MsIGJ1dCBJIHJlYWxseSBsaWtlIGl0IGFzIGEgY29u dmVudGlvbi4gIFlvdSBjb3VsZCBzdGlsbApleHByZXNzIHRoZSBpZGVhIG9mIGEgcHJlbWlzZSB1 c2luZyB0aGUgYWJvdmUgaWRpb20sIGJ1dCBJIHRoaW5rCktVTklUX0FTU0VSVF8qIHN0YXRlcyB0 aGUgaW50ZW5kZWQgaWRlYSBwZXJmZWN0bHkuCgpTaWduZWQtb2ZmLWJ5OiBCcmVuZGFuIEhpZ2dp bnMgPGJyZW5kYW5oaWdnaW5zQGdvb2dsZS5jb20+ClJldmlld2VkLWJ5OiBHcmVnIEtyb2FoLUhh cnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgpSZXZpZXdlZC1ieTogTG9nYW4gR3Vu dGhvcnBlIDxsb2dhbmdAZGVsdGF0ZWUuY29tPgotLS0KIGluY2x1ZGUva3VuaXQvdGVzdC5oICAg ICAgIHwgNDk4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIGt1bml0L3N0 cmluZy1zdHJlYW0tdGVzdC5jIHwgIDEyICstCiBrdW5pdC90ZXN0LXRlc3QuYyAgICAgICAgICB8 ICAgMiArCiBrdW5pdC90ZXN0LmMgICAgICAgICAgICAgICB8ICA2NiArKysrKwogNCBmaWxlcyBj aGFuZ2VkLCA1NjkgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9p bmNsdWRlL2t1bml0L3Rlc3QuaCBiL2luY2x1ZGUva3VuaXQvdGVzdC5oCmluZGV4IGFmZjU1YjU2 MTBlN2QuLjQ4ZTc2YzVjMjA0YjUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUva3VuaXQvdGVzdC5oCisr KyBiL2luY2x1ZGUva3VuaXQvdGVzdC5oCkBAIC04NSw5ICs4NSwxMCBAQCBzdHJ1Y3Qga3VuaXQ7 CiAgKiBAbmFtZTogdGhlIG5hbWUgb2YgdGhlIHRlc3QgY2FzZS4KICAqCiAgKiBBIHRlc3QgY2Fz ZSBpcyBhIGZ1bmN0aW9uIHdpdGggdGhlIHNpZ25hdHVyZSwgYGB2b2lkICgqKShzdHJ1Y3Qga3Vu aXQgKilgYAotICogdGhhdCBtYWtlcyBleHBlY3RhdGlvbnMgKHNlZSBLVU5JVF9FWFBFQ1RfVFJV RSgpKSBhYm91dCBjb2RlIHVuZGVyIHRlc3QuIEVhY2gKLSAqIHRlc3QgY2FzZSBpcyBhc3NvY2lh dGVkIHdpdGggYSAmc3RydWN0IGt1bml0X21vZHVsZSBhbmQgd2lsbCBiZSBydW4gYWZ0ZXIgdGhl Ci0gKiBtb2R1bGUncyBpbml0IGZ1bmN0aW9uIGFuZCBmb2xsb3dlZCBieSB0aGUgbW9kdWxlJ3Mg ZXhpdCBmdW5jdGlvbi4KKyAqIHRoYXQgbWFrZXMgZXhwZWN0YXRpb25zIGFuZCBhc3NlcnRpb25z IChzZWUgS1VOSVRfRVhQRUNUX1RSVUUoKSBhbmQKKyAqIEtVTklUX0FTU0VSVF9UUlVFKCkpIGFi b3V0IGNvZGUgdW5kZXIgdGVzdC4gRWFjaCB0ZXN0IGNhc2UgaXMgYXNzb2NpYXRlZCB3aXRoCisg KiBhICZzdHJ1Y3Qga3VuaXRfbW9kdWxlIGFuZCB3aWxsIGJlIHJ1biBhZnRlciB0aGUgbW9kdWxl J3MgaW5pdCBmdW5jdGlvbiBhbmQKKyAqIGZvbGxvd2VkIGJ5IHRoZSBtb2R1bGUncyBleGl0IGZ1 bmN0aW9uLgogICoKICAqIEEgdGVzdCBjYXNlIHNob3VsZCBiZSBzdGF0aWMgYW5kIHNob3VsZCBv bmx5IGJlIGNyZWF0ZWQgd2l0aCB0aGUgS1VOSVRfQ0FTRSgpCiAgKiBtYWNybzsgYWRkaXRpb25h bGx5LCBldmVyeSBhcnJheSBvZiB0ZXN0IGNhc2VzIHNob3VsZCBiZSB0ZXJtaW5hdGVkIHdpdGgg YW4KQEAgLTgwMyw0ICs4MDQsNDk1IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBrdW5pdF9leHBlY3Rf cHRyX2JpbmFyeShzdHJ1Y3Qga3VuaXQgKnRlc3QsCiAJS1VOSVRfRVhQRUNUX0VORCh0ZXN0LCAh SVNfRVJSX09SX05VTEwoX19wdHIpLCBfX3N0cmVhbSk7CSAgICAgICBcCiB9IHdoaWxlICgwKQog CitzdGF0aWMgaW5saW5lIHN0cnVjdCBrdW5pdF9zdHJlYW0gKmt1bml0X2Fzc2VydF9zdGFydChz dHJ1Y3Qga3VuaXQgKnRlc3QsCisJCQkJCQkgICAgICBjb25zdCBjaGFyICpmaWxlLAorCQkJCQkJ ICAgICAgY29uc3QgY2hhciAqbGluZSkKK3sKKwlzdHJ1Y3Qga3VuaXRfc3RyZWFtICpzdHJlYW0g PSBrdW5pdF9uZXdfc3RyZWFtKHRlc3QpOworCisJa3VuaXRfc3RyZWFtX2FkZChzdHJlYW0sICJB U1NFUlRJT04gRkFJTEVEIGF0ICVzOiVzXG5cdCIsIGZpbGUsIGxpbmUpOworCisJcmV0dXJuIHN0 cmVhbTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGt1bml0X2Fzc2VydF9lbmQoc3RydWN0IGt1 bml0ICp0ZXN0LAorCQkJCSAgICBib29sIHN1Y2Nlc3MsCisJCQkJICAgIHN0cnVjdCBrdW5pdF9z dHJlYW0gKnN0cmVhbSkKK3sKKwlpZiAoIXN1Y2Nlc3MpIHsKKwkJa3VuaXRfZmFpbCh0ZXN0LCBz dHJlYW0pOworCQlrdW5pdF9hYm9ydCh0ZXN0KTsKKwl9IGVsc2UgeworCQlrdW5pdF9zdHJlYW1f Y2xlYXIoc3RyZWFtKTsKKwl9Cit9CisKKyNkZWZpbmUgS1VOSVRfQVNTRVJUX1NUQVJUKHRlc3Qp IFwKKwkJa3VuaXRfYXNzZXJ0X3N0YXJ0KHRlc3QsIF9fRklMRV9fLCBfX3N0cmluZ2lmeShfX0xJ TkVfXykpCisKKyNkZWZpbmUgS1VOSVRfQVNTRVJUX0VORCh0ZXN0LCBzdWNjZXNzLCBzdHJlYW0p IFwKKwkJa3VuaXRfYXNzZXJ0X2VuZCh0ZXN0LCBzdWNjZXNzLCBzdHJlYW0pCisKKyNkZWZpbmUg S1VOSVRfQVNTRVJUKHRlc3QsIHN1Y2Nlc3MsIG1lc3NhZ2UpIGRvIHsJCQkgICAgICAgXAorCXN0 cnVjdCBrdW5pdF9zdHJlYW0gKl9fc3RyZWFtID0gS1VOSVRfQVNTRVJUX1NUQVJUKHRlc3QpOwkg ICAgICAgXAorCQkJCQkJCQkJICAgICAgIFwKKwlrdW5pdF9zdHJlYW1fYWRkKF9fc3RyZWFtLCBt ZXNzYWdlKTsJCQkJICAgICAgIFwKKwlLVU5JVF9BU1NFUlRfRU5EKHRlc3QsIHN1Y2Nlc3MsIF9f c3RyZWFtKTsJCQkgICAgICAgXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBLVU5JVF9BU1NFUlRf TVNHKHRlc3QsIHN1Y2Nlc3MsIG1lc3NhZ2UsIGZtdCwgLi4uKSBkbyB7CQkgICAgICAgXAorCXN0 cnVjdCBrdW5pdF9zdHJlYW0gKl9fc3RyZWFtID0gS1VOSVRfQVNTRVJUX1NUQVJUKHRlc3QpOwkg ICAgICAgXAorCQkJCQkJCQkJICAgICAgIFwKKwlrdW5pdF9zdHJlYW1fYWRkKF9fc3RyZWFtLCBt ZXNzYWdlKTsJCQkJICAgICAgIFwKKwlrdW5pdF9zdHJlYW1fYWRkKF9fc3RyZWFtLCBmbXQsICMj X19WQV9BUkdTX18pOwkJCSAgICAgICBcCisJS1VOSVRfQVNTRVJUX0VORCh0ZXN0LCBzdWNjZXNz LCBfX3N0cmVhbSk7CQkJICAgICAgIFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgS1VOSVRfQVNT RVJUX0ZBSUxVUkUodGVzdCwgZm10LCAuLi4pIGRvIHsJCQkgICAgICAgXAorCXN0cnVjdCBrdW5p dF9zdHJlYW0gKl9fc3RyZWFtID0gS1VOSVRfQVNTRVJUX1NUQVJUKHRlc3QpOwkgICAgICAgXAor CQkJCQkJCQkJICAgICAgIFwKKwlrdW5pdF9zdHJlYW1fYWRkKF9fc3RyZWFtLCBmbXQsICMjX19W QV9BUkdTX18pOwkJCSAgICAgICBcCisJS1VOSVRfQVNTRVJUX0VORCh0ZXN0LCBmYWxzZSwgX19z dHJlYW0pOwkJCSAgICAgICBcCit9IHdoaWxlICgwKQorCisvKioKKyAqIEtVTklUX0FTU0VSVF9U UlVFKCkgLSBTZXRzIGFuIGFzc2VydGlvbiB0aGF0IEBjb25kaXRpb24gaXMgdHJ1ZS4KKyAqIEB0 ZXN0OiBUaGUgdGVzdCBjb250ZXh0IG9iamVjdC4KKyAqIEBjb25kaXRpb246IGFuIGFyYml0cmFy eSBib29sZWFuIGV4cHJlc3Npb24uIFRoZSB0ZXN0IGZhaWxzIGFuZCBhYm9ydHMgd2hlbgorICog dGhpcyBkb2VzIG5vdCBldmFsdWF0ZSB0byB0cnVlLgorICoKKyAqIFRoaXMgYW5kIGFzc2VydGlv bnMgb2YgdGhlIGZvcm0gYEtVTklUX0FTU0VSVF8qYCB3aWxsIGNhdXNlIHRoZSB0ZXN0IGNhc2Ug dG8KKyAqIGZhaWwgKmFuZCBpbW1lZGlhdGVseSBhYm9ydCogd2hlbiB0aGUgc3BlY2lmaWVkIGNv bmRpdGlvbiBpcyBub3QgbWV0LiBVbmxpa2UKKyAqIGFuIGV4cGVjdGF0aW9uIGZhaWx1cmUsIGl0 IHdpbGwgcHJldmVudCB0aGUgdGVzdCBjYXNlIGZyb20gY29udGludWluZyB0byBydW47CisgKiB0 aGlzIGlzIG90aGVyd2lzZSBrbm93biBhcyBhbiAqYXNzZXJ0aW9uIGZhaWx1cmUqLgorICovCisj ZGVmaW5lIEtVTklUX0FTU0VSVF9UUlVFKHRlc3QsIGNvbmRpdGlvbikJCQkJICAgICAgIFwKKwkJ S1VOSVRfQVNTRVJUKHRlc3QsIChjb25kaXRpb24pLAkJCQkgICAgICAgXAorCQkJICAgICAiQXNz ZXJ0ZWQgIiAjY29uZGl0aW9uICIgaXMgdHJ1ZSwgYnV0IGlzIGZhbHNlLlxuIikKKworI2RlZmlu ZSBLVU5JVF9BU1NFUlRfVFJVRV9NU0codGVzdCwgY29uZGl0aW9uLCBmbXQsIC4uLikJCSAgICAg ICBcCisJCUtVTklUX0FTU0VSVF9NU0codGVzdCwgKGNvbmRpdGlvbiksCQkJICAgICAgIFwKKwkJ CQkgIkFzc2VydGVkICIgI2NvbmRpdGlvbiAiIGlzIHRydWUsIGJ1dCBpcyBmYWxzZS5cbiIsXAor CQkJCSBmbXQsICMjX19WQV9BUkdTX18pCisKKy8qKgorICogS1VOSVRfQVNTRVJUX0ZBTFNFKCkg LSBTZXRzIGFuIGFzc2VydGlvbiB0aGF0IEBjb25kaXRpb24gaXMgZmFsc2UuCisgKiBAdGVzdDog VGhlIHRlc3QgY29udGV4dCBvYmplY3QuCisgKiBAY29uZGl0aW9uOiBhbiBhcmJpdHJhcnkgYm9v bGVhbiBleHByZXNzaW9uLgorICoKKyAqIFNldHMgYW4gYXNzZXJ0aW9uIHRoYXQgdGhlIHZhbHVl IHRoYXQgQGNvbmRpdGlvbiBldmFsdWF0ZXMgdG8gaXMgZmFsc2UuIFRoaXMKKyAqIGlzIHRoZSBz YW1lIGFzIEtVTklUX0VYUEVDVF9GQUxTRSgpLCBleGNlcHQgaXQgY2F1c2VzIGFuIGFzc2VydGlv biBmYWlsdXJlCisgKiAoc2VlIEtVTklUX0FTU0VSVF9UUlVFKCkpIHdoZW4gdGhlIGFzc2VydGlv biBpcyBub3QgbWV0LgorICovCisjZGVmaW5lIEtVTklUX0FTU0VSVF9GQUxTRSh0ZXN0LCBjb25k aXRpb24pCQkJCSAgICAgICBcCisJCUtVTklUX0FTU0VSVCh0ZXN0LCAhKGNvbmRpdGlvbiksCQkJ ICAgICAgIFwKKwkJCSAgICAgIkFzc2VydGVkICIgI2NvbmRpdGlvbiAiIGlzIGZhbHNlLCBidXQg aXMgdHJ1ZS5cbiIpCisKKyNkZWZpbmUgS1VOSVRfQVNTRVJUX0ZBTFNFX01TRyh0ZXN0LCBjb25k aXRpb24sIGZtdCwgLi4uKQkJICAgICAgIFwKKwkJS1VOSVRfQVNTRVJUX01TRyh0ZXN0LCAhKGNv bmRpdGlvbiksCQkJICAgICAgIFwKKwkJCQkgIkFzc2VydGVkICIgI2NvbmRpdGlvbiAiIGlzIGZh bHNlLCBidXQgaXMgdHJ1ZS5cbiIsXAorCQkJCSBmbXQsICMjX19WQV9BUkdTX18pCisKK3ZvaWQg a3VuaXRfYXNzZXJ0X2JpbmFyeV9tc2coc3RydWN0IGt1bml0ICp0ZXN0LAorCQkJICAgICBsb25n IGxvbmcgbGVmdCwgY29uc3QgY2hhciAqbGVmdF9uYW1lLAorCQkJICAgICBsb25nIGxvbmcgcmln aHQsIGNvbnN0IGNoYXIgKnJpZ2h0X25hbWUsCisJCQkgICAgIGJvb2wgY29tcGFyZV9yZXN1bHQs CisJCQkgICAgIGNvbnN0IGNoYXIgKmNvbXBhcmVfbmFtZSwKKwkJCSAgICAgY29uc3QgY2hhciAq ZmlsZSwKKwkJCSAgICAgY29uc3QgY2hhciAqbGluZSwKKwkJCSAgICAgY29uc3QgY2hhciAqZm10 LCAuLi4pOworCitzdGF0aWMgaW5saW5lIHZvaWQga3VuaXRfYXNzZXJ0X2JpbmFyeShzdHJ1Y3Qg a3VuaXQgKnRlc3QsCisJCQkJICAgICAgIGxvbmcgbG9uZyBsZWZ0LCBjb25zdCBjaGFyICpsZWZ0 X25hbWUsCisJCQkJICAgICAgIGxvbmcgbG9uZyByaWdodCwgY29uc3QgY2hhciAqcmlnaHRfbmFt ZSwKKwkJCQkgICAgICAgYm9vbCBjb21wYXJlX3Jlc3VsdCwKKwkJCQkgICAgICAgY29uc3QgY2hh ciAqY29tcGFyZV9uYW1lLAorCQkJCSAgICAgICBjb25zdCBjaGFyICpmaWxlLAorCQkJCSAgICAg ICBjb25zdCBjaGFyICpsaW5lKQoreworCWt1bml0X2Fzc2VydF9iaW5hcnlfbXNnKHRlc3QsCisJ CQkJbGVmdCwgbGVmdF9uYW1lLAorCQkJCXJpZ2h0LCByaWdodF9uYW1lLAorCQkJCWNvbXBhcmVf cmVzdWx0LAorCQkJCWNvbXBhcmVfbmFtZSwKKwkJCQlmaWxlLAorCQkJCWxpbmUsCisJCQkJTlVM TCk7Cit9CisKK3ZvaWQga3VuaXRfYXNzZXJ0X3B0cl9iaW5hcnlfbXNnKHN0cnVjdCBrdW5pdCAq dGVzdCwKKwkJCQkgdm9pZCAqbGVmdCwgY29uc3QgY2hhciAqbGVmdF9uYW1lLAorCQkJCSB2b2lk ICpyaWdodCwgY29uc3QgY2hhciAqcmlnaHRfbmFtZSwKKwkJCQkgYm9vbCBjb21wYXJlX3Jlc3Vs dCwKKwkJCQkgY29uc3QgY2hhciAqY29tcGFyZV9uYW1lLAorCQkJCSBjb25zdCBjaGFyICpmaWxl LAorCQkJCSBjb25zdCBjaGFyICpsaW5lLAorCQkJCSBjb25zdCBjaGFyICpmbXQsIC4uLik7CisK K3N0YXRpYyBpbmxpbmUgdm9pZCBrdW5pdF9hc3NlcnRfcHRyX2JpbmFyeShzdHJ1Y3Qga3VuaXQg KnRlc3QsCisJCQkJCSAgIHZvaWQgKmxlZnQsIGNvbnN0IGNoYXIgKmxlZnRfbmFtZSwKKwkJCQkJ ICAgdm9pZCAqcmlnaHQsIGNvbnN0IGNoYXIgKnJpZ2h0X25hbWUsCisJCQkJCSAgIGJvb2wgY29t cGFyZV9yZXN1bHQsCisJCQkJCSAgIGNvbnN0IGNoYXIgKmNvbXBhcmVfbmFtZSwKKwkJCQkJICAg Y29uc3QgY2hhciAqZmlsZSwKKwkJCQkJICAgY29uc3QgY2hhciAqbGluZSkKK3sKKwlrdW5pdF9h c3NlcnRfcHRyX2JpbmFyeV9tc2codGVzdCwKKwkJCQkgICAgbGVmdCwgbGVmdF9uYW1lLAorCQkJ CSAgICByaWdodCwgcmlnaHRfbmFtZSwKKwkJCQkgICAgY29tcGFyZV9yZXN1bHQsCisJCQkJICAg IGNvbXBhcmVfbmFtZSwKKwkJCQkgICAgZmlsZSwKKwkJCQkgICAgbGluZSwKKwkJCQkgICAgTlVM TCk7Cit9CisKKy8qCisgKiBBIGZhY3RvcnkgbWFjcm8gZm9yIGRlZmluaW5nIHRoZSBleHBlY3Rh dGlvbnMgZm9yIHRoZSBiYXNpYyBjb21wYXJpc29ucworICogZGVmaW5lZCBmb3IgdGhlIGJ1aWx0 IGluIHR5cGVzLgorICoKKyAqIFVuZm9ydHVuYXRlbHksIHRoZXJlIGlzIG5vIGNvbW1vbiB0eXBl IHRoYXQgYWxsIHR5cGVzIGNhbiBiZSBwcm9tb3RlZCB0byBmb3IKKyAqIHdoaWNoIGFsbCB0aGUg YmluYXJ5IG9wZXJhdG9ycyBiZWhhdmUgdGhlIHNhbWUgd2F5IGFzIGZvciB0aGUgYWN0dWFsIHR5 cGVzCisgKiAoZm9yIGV4YW1wbGUsIHRoZXJlIGlzIG5vIHR5cGUgdGhhdCBsb25nIGxvbmcgYW5k IHVuc2lnbmVkIGxvbmcgbG9uZyBjYW4KKyAqIGJvdGggYmUgY2FzdCB0byB3aGVyZSB0aGUgY29t cGFyaXNvbiByZXN1bHQgaXMgcHJlc2VydmVkIGZvciBhbGwgdmFsdWVzKS4gU28KKyAqIHRoZSBi ZXN0IHdlIGNhbiBkbyBpcyBkbyB0aGUgY29tcGFyaXNvbiBpbiB0aGUgb3JpZ2luYWwgdHlwZXMg YW5kIHRoZW4gY29lcmNlCisgKiBldmVyeXRoaW5nIHRvIGxvbmcgbG9uZyBmb3IgcHJpbnRpbmc7 IHRoaXMgd2F5LCB0aGUgY29tcGFyaXNvbiBiZWhhdmVzCisgKiBjb3JyZWN0bHkgYW5kIHRoZSBw cmludGVkIG91dCB2YWx1ZSB1c3VhbGx5IG1ha2VzIHNlbnNlIHdpdGhvdXQKKyAqIGludGVycHJl dGF0aW9uLCBidXQgY2FuIGFsd2F5cyBiZSBpbnRlcnByZXR0ZWQgdG8gZmlndXJlIG91dCB0aGUg YWN0dWFsCisgKiB2YWx1ZS4KKyAqLworI2RlZmluZSBLVU5JVF9BU1NFUlRfQklOQVJZKHRlc3Qs IGxlZnQsIGNvbmRpdGlvbiwgcmlnaHQpIGRvIHsJCSAgICAgICBcCisJdHlwZW9mKGxlZnQpIF9f bGVmdCA9IChsZWZ0KTsJCQkJCSAgICAgICBcCisJdHlwZW9mKHJpZ2h0KSBfX3JpZ2h0ID0gKHJp Z2h0KTsJCQkJICAgICAgIFwKKwlrdW5pdF9hc3NlcnRfYmluYXJ5KHRlc3QsCQkJCQkgICAgICAg XAorCQkJICAgIChsb25nIGxvbmcpIF9fbGVmdCwgI2xlZnQsCQkJICAgICAgIFwKKwkJCSAgICAo bG9uZyBsb25nKSBfX3JpZ2h0LCAjcmlnaHQsCQkgICAgICAgXAorCQkJICAgIF9fbGVmdCBjb25k aXRpb24gX19yaWdodCwgI2NvbmRpdGlvbiwJICAgICAgIFwKKwkJCSAgICBfX0ZJTEVfXywgX19z dHJpbmdpZnkoX19MSU5FX18pKTsJCSAgICAgICBcCit9IHdoaWxlICgwKQorCisjZGVmaW5lIEtV TklUX0FTU0VSVF9CSU5BUllfTVNHKHRlc3QsIGxlZnQsIGNvbmRpdGlvbiwgcmlnaHQsIGZtdCwg Li4uKSBkbyB7ICAgXAorCXR5cGVvZihsZWZ0KSBfX2xlZnQgPSAobGVmdCk7CQkJCQkgICAgICAg XAorCXR5cGVvZihyaWdodCkgX19yaWdodCA9IChyaWdodCk7CQkJCSAgICAgICBcCisJa3VuaXRf YXNzZXJ0X2JpbmFyeV9tc2codGVzdCwJCQkJCSAgICAgICBcCisJCQkJKGxvbmcgbG9uZykgX19s ZWZ0LCAjbGVmdCwJCSAgICAgICBcCisJCQkJKGxvbmcgbG9uZykgX19yaWdodCwgI3JpZ2h0LAkJ ICAgICAgIFwKKwkJCQlfX2xlZnQgY29uZGl0aW9uIF9fcmlnaHQsICNjb25kaXRpb24sCSAgICAg ICBcCisJCQkJX19GSUxFX18sIF9fc3RyaW5naWZ5KF9fTElORV9fKSwJICAgICAgIFwKKwkJCQlm bXQsICMjX19WQV9BUkdTX18pOwkJCSAgICAgICBcCit9IHdoaWxlICgwKQorCisvKgorICogSnVz dCBsaWtlIEtVTklUX0VYUEVDVF9CSU5BUlksIGJ1dCBmb3IgY29tcGFyaW5nIHBvaW50ZXIgdHlw ZXMuCisgKi8KKyNkZWZpbmUgS1VOSVRfQVNTRVJUX1BUUl9CSU5BUlkodGVzdCwgbGVmdCwgY29u ZGl0aW9uLCByaWdodCkgZG8gewkgICAgICAgXAorCXR5cGVvZihsZWZ0KSBfX2xlZnQgPSAobGVm dCk7CQkJCQkgICAgICAgXAorCXR5cGVvZihyaWdodCkgX19yaWdodCA9IChyaWdodCk7CQkJCSAg ICAgICBcCisJa3VuaXRfYXNzZXJ0X3B0cl9iaW5hcnkodGVzdCwJCQkJCSAgICAgICBcCisJCQkJ KHZvaWQgKikgX19sZWZ0LCAjbGVmdCwJCQkgICAgICAgXAorCQkJCSh2b2lkICopIF9fcmlnaHQs ICNyaWdodCwJCSAgICAgICBcCisJCQkJX19sZWZ0IGNvbmRpdGlvbiBfX3JpZ2h0LCAjY29uZGl0 aW9uLAkgICAgICAgXAorCQkJCV9fRklMRV9fLCBfX3N0cmluZ2lmeShfX0xJTkVfXykpOwkgICAg ICAgXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBLVU5JVF9BU1NFUlRfUFRSX0JJTkFSWV9NU0co dGVzdCwJCQkJICAgICAgIFwKKwkJCQkgICAgbGVmdCwJCQkJICAgICAgIFwKKwkJCQkgICAgY29u ZGl0aW9uLAkJCQkgICAgICAgXAorCQkJCSAgICByaWdodCwJCQkJICAgICAgIFwKKwkJCQkgICAg Zm10LCAuLi4pIGRvIHsJCQkgICAgICAgXAorCXR5cGVvZihsZWZ0KSBfX2xlZnQgPSAobGVmdCk7 CQkJCQkgICAgICAgXAorCXR5cGVvZihyaWdodCkgX19yaWdodCA9IChyaWdodCk7CQkJCSAgICAg ICBcCisJa3VuaXRfYXNzZXJ0X3B0cl9iaW5hcnlfbXNnKHRlc3QsCQkJCSAgICAgICBcCisJCQkJ ICAgICh2b2lkICopIF9fbGVmdCwgI2xlZnQsCQkgICAgICAgXAorCQkJCSAgICAodm9pZCAqKSBf X3JpZ2h0LCAjcmlnaHQsCQkgICAgICAgXAorCQkJCSAgICBfX2xlZnQgY29uZGl0aW9uIF9fcmln aHQsICNjb25kaXRpb24sICAgICAgXAorCQkJCSAgICBfX0ZJTEVfXywgX19zdHJpbmdpZnkoX19M SU5FX18pLAkgICAgICAgXAorCQkJCSAgICBmbXQsICMjX19WQV9BUkdTX18pOwkJICAgICAgIFwK K30gd2hpbGUgKDApCisKKy8qKgorICogS1VOSVRfQVNTRVJUX0VRKCkgLSBTZXRzIGFuIGFzc2Vy dGlvbiB0aGF0IEBsZWZ0IGFuZCBAcmlnaHQgYXJlIGVxdWFsLgorICogQHRlc3Q6IFRoZSB0ZXN0 IGNvbnRleHQgb2JqZWN0LgorICogQGxlZnQ6IGFuIGFyYml0cmFyeSBleHByZXNzaW9uIHRoYXQg ZXZhbHVhdGVzIHRvIGEgcHJpbWl0aXZlIEMgdHlwZS4KKyAqIEByaWdodDogYW4gYXJiaXRyYXJ5 IGV4cHJlc3Npb24gdGhhdCBldmFsdWF0ZXMgdG8gYSBwcmltaXRpdmUgQyB0eXBlLgorICoKKyAq IFNldHMgYW4gYXNzZXJ0aW9uIHRoYXQgdGhlIHZhbHVlcyB0aGF0IEBsZWZ0IGFuZCBAcmlnaHQg ZXZhbHVhdGUgdG8gYXJlCisgKiBlcXVhbC4gVGhpcyBpcyB0aGUgc2FtZSBhcyBLVU5JVF9FWFBF Q1RfRVEoKSwgZXhjZXB0IGl0IGNhdXNlcyBhbiBhc3NlcnRpb24KKyAqIGZhaWx1cmUgKHNlZSBL VU5JVF9BU1NFUlRfVFJVRSgpKSB3aGVuIHRoZSBhc3NlcnRpb24gaXMgbm90IG1ldC4KKyAqLwor I2RlZmluZSBLVU5JVF9BU1NFUlRfRVEodGVzdCwgbGVmdCwgcmlnaHQpIFwKKwkJS1VOSVRfQVNT RVJUX0JJTkFSWSh0ZXN0LCBsZWZ0LCA9PSwgcmlnaHQpCisKKyNkZWZpbmUgS1VOSVRfQVNTRVJU X0VRX01TRyh0ZXN0LCBsZWZ0LCByaWdodCwgZm10LCAuLi4pCQkgICAgICAgXAorCQlLVU5JVF9B U1NFUlRfQklOQVJZX01TRyh0ZXN0LAkJCQkgICAgICAgXAorCQkJCQlsZWZ0LAkJCQkgICAgICAg XAorCQkJCQk9PSwJCQkJICAgICAgIFwKKwkJCQkJcmlnaHQsCQkJCSAgICAgICBcCisJCQkJCWZt dCwJCQkJICAgICAgIFwKKwkJCQkJIyNfX1ZBX0FSR1NfXykKKworLyoqCisgKiBLVU5JVF9BU1NF UlRfUFRSX0VRKCkgLSBBc3NlcnRzIHRoYXQgcG9pbnRlcnMgQGxlZnQgYW5kIEByaWdodCBhcmUg ZXF1YWwuCisgKiBAdGVzdDogVGhlIHRlc3QgY29udGV4dCBvYmplY3QuCisgKiBAbGVmdDogYW4g YXJiaXRyYXJ5IGV4cHJlc3Npb24gdGhhdCBldmFsdWF0ZXMgdG8gYSBwb2ludGVyLgorICogQHJp Z2h0OiBhbiBhcmJpdHJhcnkgZXhwcmVzc2lvbiB0aGF0IGV2YWx1YXRlcyB0byBhIHBvaW50ZXIu CisgKgorICogU2V0cyBhbiBhc3NlcnRpb24gdGhhdCB0aGUgdmFsdWVzIHRoYXQgQGxlZnQgYW5k IEByaWdodCBldmFsdWF0ZSB0byBhcmUKKyAqIGVxdWFsLiBUaGlzIGlzIHRoZSBzYW1lIGFzIEtV TklUX0VYUEVDVF9FUSgpLCBleGNlcHQgaXQgY2F1c2VzIGFuIGFzc2VydGlvbgorICogZmFpbHVy ZSAoc2VlIEtVTklUX0FTU0VSVF9UUlVFKCkpIHdoZW4gdGhlIGFzc2VydGlvbiBpcyBub3QgbWV0 LgorICovCisjZGVmaW5lIEtVTklUX0FTU0VSVF9QVFJfRVEodGVzdCwgbGVmdCwgcmlnaHQpIFwK KwkJS1VOSVRfQVNTRVJUX1BUUl9CSU5BUlkodGVzdCwgbGVmdCwgPT0sIHJpZ2h0KQorCisjZGVm aW5lIEtVTklUX0FTU0VSVF9QVFJfRVFfTVNHKHRlc3QsIGxlZnQsIHJpZ2h0LCBmbXQsIC4uLikJ CSAgICAgICBcCisJCUtVTklUX0FTU0VSVF9QVFJfQklOQVJZX01TRyh0ZXN0LAkJCSAgICAgICBc CisJCQkJCSAgICBsZWZ0LAkJCSAgICAgICBcCisJCQkJCSAgICA9PSwJCQkJICAgICAgIFwKKwkJ CQkJICAgIHJpZ2h0LAkJCSAgICAgICBcCisJCQkJCSAgICBmbXQsCQkJICAgICAgIFwKKwkJCQkJ ICAgICMjX19WQV9BUkdTX18pCisKKy8qKgorICogS1VOSVRfQVNTRVJUX05FKCkgLSBBbiBhc3Nl cnRpb24gdGhhdCBAbGVmdCBhbmQgQHJpZ2h0IGFyZSBub3QgZXF1YWwuCisgKiBAdGVzdDogVGhl IHRlc3QgY29udGV4dCBvYmplY3QuCisgKiBAbGVmdDogYW4gYXJiaXRyYXJ5IGV4cHJlc3Npb24g dGhhdCBldmFsdWF0ZXMgdG8gYSBwcmltaXRpdmUgQyB0eXBlLgorICogQHJpZ2h0OiBhbiBhcmJp dHJhcnkgZXhwcmVzc2lvbiB0aGF0IGV2YWx1YXRlcyB0byBhIHByaW1pdGl2ZSBDIHR5cGUuCisg KgorICogU2V0cyBhbiBhc3NlcnRpb24gdGhhdCB0aGUgdmFsdWVzIHRoYXQgQGxlZnQgYW5kIEBy aWdodCBldmFsdWF0ZSB0byBhcmUgbm90CisgKiBlcXVhbC4gVGhpcyBpcyB0aGUgc2FtZSBhcyBL VU5JVF9FWFBFQ1RfTkUoKSwgZXhjZXB0IGl0IGNhdXNlcyBhbiBhc3NlcnRpb24KKyAqIGZhaWx1 cmUgKHNlZSBLVU5JVF9BU1NFUlRfVFJVRSgpKSB3aGVuIHRoZSBhc3NlcnRpb24gaXMgbm90IG1l dC4KKyAqLworI2RlZmluZSBLVU5JVF9BU1NFUlRfTkUodGVzdCwgbGVmdCwgcmlnaHQpIFwKKwkJ S1VOSVRfQVNTRVJUX0JJTkFSWSh0ZXN0LCBsZWZ0LCAhPSwgcmlnaHQpCisKKyNkZWZpbmUgS1VO SVRfQVNTRVJUX05FX01TRyh0ZXN0LCBsZWZ0LCByaWdodCwgZm10LCAuLi4pCQkgICAgICAgXAor CQlLVU5JVF9BU1NFUlRfQklOQVJZX01TRyh0ZXN0LAkJCQkgICAgICAgXAorCQkJCQlsZWZ0LAkJ CQkgICAgICAgXAorCQkJCQkhPSwJCQkJICAgICAgIFwKKwkJCQkJcmlnaHQsCQkJCSAgICAgICBc CisJCQkJCWZtdCwJCQkJICAgICAgIFwKKwkJCQkJIyNfX1ZBX0FSR1NfXykKKworLyoqCisgKiBL VU5JVF9BU1NFUlRfUFRSX05FKCkgLSBBc3NlcnRzIHRoYXQgcG9pbnRlcnMgQGxlZnQgYW5kIEBy aWdodCBhcmUgbm90IGVxdWFsLgorICogS1VOSVRfQVNTRVJUX1BUUl9FUSgpIC0gQXNzZXJ0cyB0 aGF0IHBvaW50ZXJzIEBsZWZ0IGFuZCBAcmlnaHQgYXJlIGVxdWFsLgorICogQHRlc3Q6IFRoZSB0 ZXN0IGNvbnRleHQgb2JqZWN0LgorICogQGxlZnQ6IGFuIGFyYml0cmFyeSBleHByZXNzaW9uIHRo YXQgZXZhbHVhdGVzIHRvIGEgcG9pbnRlci4KKyAqIEByaWdodDogYW4gYXJiaXRyYXJ5IGV4cHJl c3Npb24gdGhhdCBldmFsdWF0ZXMgdG8gYSBwb2ludGVyLgorICoKKyAqIFNldHMgYW4gYXNzZXJ0 aW9uIHRoYXQgdGhlIHZhbHVlcyB0aGF0IEBsZWZ0IGFuZCBAcmlnaHQgZXZhbHVhdGUgdG8gYXJl IG5vdAorICogZXF1YWwuIFRoaXMgaXMgdGhlIHNhbWUgYXMgS1VOSVRfRVhQRUNUX05FKCksIGV4 Y2VwdCBpdCBjYXVzZXMgYW4gYXNzZXJ0aW9uCisgKiBmYWlsdXJlIChzZWUgS1VOSVRfQVNTRVJU X1RSVUUoKSkgd2hlbiB0aGUgYXNzZXJ0aW9uIGlzIG5vdCBtZXQuCisgKi8KKyNkZWZpbmUgS1VO SVRfQVNTRVJUX1BUUl9ORSh0ZXN0LCBsZWZ0LCByaWdodCkgXAorCQlLVU5JVF9BU1NFUlRfUFRS X0JJTkFSWSh0ZXN0LCBsZWZ0LCAhPSwgcmlnaHQpCisKKyNkZWZpbmUgS1VOSVRfQVNTRVJUX1BU Ul9ORV9NU0codGVzdCwgbGVmdCwgcmlnaHQsIGZtdCwgLi4uKQkJICAgICAgIFwKKwkJS1VOSVRf QVNTRVJUX1BUUl9CSU5BUllfTVNHKHRlc3QsCQkJICAgICAgIFwKKwkJCQkJICAgIGxlZnQsCQkJ ICAgICAgIFwKKwkJCQkJICAgICE9LAkJCQkgICAgICAgXAorCQkJCQkgICAgcmlnaHQsCQkJICAg ICAgIFwKKwkJCQkJICAgIGZtdCwJCQkgICAgICAgXAorCQkJCQkgICAgIyNfX1ZBX0FSR1NfXykK Ky8qKgorICogS1VOSVRfQVNTRVJUX0xUKCkgLSBBbiBhc3NlcnRpb24gdGhhdCBAbGVmdCBpcyBs ZXNzIHRoYW4gQHJpZ2h0LgorICogQHRlc3Q6IFRoZSB0ZXN0IGNvbnRleHQgb2JqZWN0LgorICog QGxlZnQ6IGFuIGFyYml0cmFyeSBleHByZXNzaW9uIHRoYXQgZXZhbHVhdGVzIHRvIGEgcHJpbWl0 aXZlIEMgdHlwZS4KKyAqIEByaWdodDogYW4gYXJiaXRyYXJ5IGV4cHJlc3Npb24gdGhhdCBldmFs dWF0ZXMgdG8gYSBwcmltaXRpdmUgQyB0eXBlLgorICoKKyAqIFNldHMgYW4gYXNzZXJ0aW9uIHRo YXQgdGhlIHZhbHVlIHRoYXQgQGxlZnQgZXZhbHVhdGVzIHRvIGlzIGxlc3MgdGhhbiB0aGUKKyAq IHZhbHVlIHRoYXQgQHJpZ2h0IGV2YWx1YXRlcyB0by4gVGhpcyBpcyB0aGUgc2FtZSBhcyBLVU5J VF9FWFBFQ1RfTFQoKSwgZXhjZXB0CisgKiBpdCBjYXVzZXMgYW4gYXNzZXJ0aW9uIGZhaWx1cmUg KHNlZSBLVU5JVF9BU1NFUlRfVFJVRSgpKSB3aGVuIHRoZSBhc3NlcnRpb24KKyAqIGlzIG5vdCBt ZXQuCisgKi8KKyNkZWZpbmUgS1VOSVRfQVNTRVJUX0xUKHRlc3QsIGxlZnQsIHJpZ2h0KSBcCisJ CUtVTklUX0FTU0VSVF9CSU5BUlkodGVzdCwgbGVmdCwgPCwgcmlnaHQpCisKKyNkZWZpbmUgS1VO SVRfQVNTRVJUX0xUX01TRyh0ZXN0LCBsZWZ0LCByaWdodCwgZm10LCAuLi4pCQkgICAgICAgXAor CQlLVU5JVF9BU1NFUlRfQklOQVJZX01TRyh0ZXN0LAkJCQkgICAgICAgXAorCQkJCQlsZWZ0LAkJ CQkgICAgICAgXAorCQkJCQk8LAkJCQkgICAgICAgXAorCQkJCQlyaWdodCwJCQkJICAgICAgIFwK KwkJCQkJZm10LAkJCQkgICAgICAgXAorCQkJCQkjI19fVkFfQVJHU19fKQorLyoqCisgKiBLVU5J VF9BU1NFUlRfTEUoKSAtIEFuIGFzc2VydGlvbiB0aGF0IEBsZWZ0IGlzIGxlc3MgdGhhbiBvciBl cXVhbCB0byBAcmlnaHQuCisgKiBAdGVzdDogVGhlIHRlc3QgY29udGV4dCBvYmplY3QuCisgKiBA bGVmdDogYW4gYXJiaXRyYXJ5IGV4cHJlc3Npb24gdGhhdCBldmFsdWF0ZXMgdG8gYSBwcmltaXRp dmUgQyB0eXBlLgorICogQHJpZ2h0OiBhbiBhcmJpdHJhcnkgZXhwcmVzc2lvbiB0aGF0IGV2YWx1 YXRlcyB0byBhIHByaW1pdGl2ZSBDIHR5cGUuCisgKgorICogU2V0cyBhbiBhc3NlcnRpb24gdGhh dCB0aGUgdmFsdWUgdGhhdCBAbGVmdCBldmFsdWF0ZXMgdG8gaXMgbGVzcyB0aGFuIG9yCisgKiBl cXVhbCB0byB0aGUgdmFsdWUgdGhhdCBAcmlnaHQgZXZhbHVhdGVzIHRvLiBUaGlzIGlzIHRoZSBz YW1lIGFzCisgKiBLVU5JVF9FWFBFQ1RfTEUoKSwgZXhjZXB0IGl0IGNhdXNlcyBhbiBhc3NlcnRp b24gZmFpbHVyZSAoc2VlCisgKiBLVU5JVF9BU1NFUlRfVFJVRSgpKSB3aGVuIHRoZSBhc3NlcnRp b24gaXMgbm90IG1ldC4KKyAqLworI2RlZmluZSBLVU5JVF9BU1NFUlRfTEUodGVzdCwgbGVmdCwg cmlnaHQpIFwKKwkJS1VOSVRfQVNTRVJUX0JJTkFSWSh0ZXN0LCBsZWZ0LCA8PSwgcmlnaHQpCisK KyNkZWZpbmUgS1VOSVRfQVNTRVJUX0xFX01TRyh0ZXN0LCBsZWZ0LCByaWdodCwgZm10LCAuLi4p CQkgICAgICAgXAorCQlLVU5JVF9BU1NFUlRfQklOQVJZX01TRyh0ZXN0LAkJCQkgICAgICAgXAor CQkJCQlsZWZ0LAkJCQkgICAgICAgXAorCQkJCQk8PSwJCQkJICAgICAgIFwKKwkJCQkJcmlnaHQs CQkJCSAgICAgICBcCisJCQkJCWZtdCwJCQkJICAgICAgIFwKKwkJCQkJIyNfX1ZBX0FSR1NfXykK Ky8qKgorICogS1VOSVRfQVNTRVJUX0dUKCkgLSBBbiBhc3NlcnRpb24gdGhhdCBAbGVmdCBpcyBn cmVhdGVyIHRoYW4gQHJpZ2h0LgorICogQHRlc3Q6IFRoZSB0ZXN0IGNvbnRleHQgb2JqZWN0Lgor ICogQGxlZnQ6IGFuIGFyYml0cmFyeSBleHByZXNzaW9uIHRoYXQgZXZhbHVhdGVzIHRvIGEgcHJp bWl0aXZlIEMgdHlwZS4KKyAqIEByaWdodDogYW4gYXJiaXRyYXJ5IGV4cHJlc3Npb24gdGhhdCBl dmFsdWF0ZXMgdG8gYSBwcmltaXRpdmUgQyB0eXBlLgorICoKKyAqIFNldHMgYW4gYXNzZXJ0aW9u IHRoYXQgdGhlIHZhbHVlIHRoYXQgQGxlZnQgZXZhbHVhdGVzIHRvIGlzIGdyZWF0ZXIgdGhhbiB0 aGUKKyAqIHZhbHVlIHRoYXQgQHJpZ2h0IGV2YWx1YXRlcyB0by4gVGhpcyBpcyB0aGUgc2FtZSBh cyBLVU5JVF9FWFBFQ1RfR1QoKSwgZXhjZXB0CisgKiBpdCBjYXVzZXMgYW4gYXNzZXJ0aW9uIGZh aWx1cmUgKHNlZSBLVU5JVF9BU1NFUlRfVFJVRSgpKSB3aGVuIHRoZSBhc3NlcnRpb24KKyAqIGlz IG5vdCBtZXQuCisgKi8KKyNkZWZpbmUgS1VOSVRfQVNTRVJUX0dUKHRlc3QsIGxlZnQsIHJpZ2h0 KSBcCisJCUtVTklUX0FTU0VSVF9CSU5BUlkodGVzdCwgbGVmdCwgPiwgcmlnaHQpCisKKyNkZWZp bmUgS1VOSVRfQVNTRVJUX0dUX01TRyh0ZXN0LCBsZWZ0LCByaWdodCwgZm10LCAuLi4pCQkgICAg ICAgXAorCQlLVU5JVF9BU1NFUlRfQklOQVJZX01TRyh0ZXN0LAkJCQkgICAgICAgXAorCQkJCQls ZWZ0LAkJCQkgICAgICAgXAorCQkJCQk+LAkJCQkgICAgICAgXAorCQkJCQlyaWdodCwJCQkJICAg ICAgIFwKKwkJCQkJZm10LAkJCQkgICAgICAgXAorCQkJCQkjI19fVkFfQVJHU19fKQorCisvKioK KyAqIEtVTklUX0FTU0VSVF9HRSgpIC0gQXNzZXJ0aW9uIHRoYXQgQGxlZnQgaXMgZ3JlYXRlciB0 aGFuIG9yIGVxdWFsIHRvIEByaWdodC4KKyAqIEB0ZXN0OiBUaGUgdGVzdCBjb250ZXh0IG9iamVj dC4KKyAqIEBsZWZ0OiBhbiBhcmJpdHJhcnkgZXhwcmVzc2lvbiB0aGF0IGV2YWx1YXRlcyB0byBh IHByaW1pdGl2ZSBDIHR5cGUuCisgKiBAcmlnaHQ6IGFuIGFyYml0cmFyeSBleHByZXNzaW9uIHRo YXQgZXZhbHVhdGVzIHRvIGEgcHJpbWl0aXZlIEMgdHlwZS4KKyAqCisgKiBTZXRzIGFuIGFzc2Vy dGlvbiB0aGF0IHRoZSB2YWx1ZSB0aGF0IEBsZWZ0IGV2YWx1YXRlcyB0byBpcyBncmVhdGVyIHRo YW4gdGhlCisgKiB2YWx1ZSB0aGF0IEByaWdodCBldmFsdWF0ZXMgdG8uIFRoaXMgaXMgdGhlIHNh bWUgYXMgS1VOSVRfRVhQRUNUX0dFKCksIGV4Y2VwdAorICogaXQgY2F1c2VzIGFuIGFzc2VydGlv biBmYWlsdXJlIChzZWUgS1VOSVRfQVNTRVJUX1RSVUUoKSkgd2hlbiB0aGUgYXNzZXJ0aW9uCisg KiBpcyBub3QgbWV0LgorICovCisjZGVmaW5lIEtVTklUX0FTU0VSVF9HRSh0ZXN0LCBsZWZ0LCBy aWdodCkgXAorCQlLVU5JVF9BU1NFUlRfQklOQVJZKHRlc3QsIGxlZnQsID49LCByaWdodCkKKwor I2RlZmluZSBLVU5JVF9BU1NFUlRfR0VfTVNHKHRlc3QsIGxlZnQsIHJpZ2h0LCBmbXQsIC4uLikJ CSAgICAgICBcCisJCUtVTklUX0FTU0VSVF9CSU5BUllfTVNHKHRlc3QsCQkJCSAgICAgICBcCisJ CQkJCWxlZnQsCQkJCSAgICAgICBcCisJCQkJCT49LAkJCQkgICAgICAgXAorCQkJCQlyaWdodCwJ CQkJICAgICAgIFwKKwkJCQkJZm10LAkJCQkgICAgICAgXAorCQkJCQkjI19fVkFfQVJHU19fKQor CisvKioKKyAqIEtVTklUX0FTU0VSVF9TVFJFUSgpIC0gQW4gYXNzZXJ0aW9uIHRoYXQgc3RyaW5n cyBAbGVmdCBhbmQgQHJpZ2h0IGFyZSBlcXVhbC4KKyAqIEB0ZXN0OiBUaGUgdGVzdCBjb250ZXh0 IG9iamVjdC4KKyAqIEBsZWZ0OiBhbiBhcmJpdHJhcnkgZXhwcmVzc2lvbiB0aGF0IGV2YWx1YXRl cyB0byBhIG51bGwgdGVybWluYXRlZCBzdHJpbmcuCisgKiBAcmlnaHQ6IGFuIGFyYml0cmFyeSBl eHByZXNzaW9uIHRoYXQgZXZhbHVhdGVzIHRvIGEgbnVsbCB0ZXJtaW5hdGVkIHN0cmluZy4KKyAq CisgKiBTZXRzIGFuIGFzc2VydGlvbiB0aGF0IHRoZSB2YWx1ZXMgdGhhdCBAbGVmdCBhbmQgQHJp Z2h0IGV2YWx1YXRlIHRvIGFyZQorICogZXF1YWwuIFRoaXMgaXMgdGhlIHNhbWUgYXMgS1VOSVRf RVhQRUNUX1NUUkVRKCksIGV4Y2VwdCBpdCBjYXVzZXMgYW4KKyAqIGFzc2VydGlvbiBmYWlsdXJl IChzZWUgS1VOSVRfQVNTRVJUX1RSVUUoKSkgd2hlbiB0aGUgYXNzZXJ0aW9uIGlzIG5vdCBtZXQu CisgKi8KKyNkZWZpbmUgS1VOSVRfQVNTRVJUX1NUUkVRKHRlc3QsIGxlZnQsIHJpZ2h0KSBkbyB7 CQkJICAgICAgIFwKKwlzdHJ1Y3Qga3VuaXRfc3RyZWFtICpfX3N0cmVhbSA9IEtVTklUX0FTU0VS VF9TVEFSVCh0ZXN0KTsJICAgICAgIFwKKwl0eXBlb2YobGVmdCkgX19sZWZ0ID0gKGxlZnQpOwkJ CQkJICAgICAgIFwKKwl0eXBlb2YocmlnaHQpIF9fcmlnaHQgPSAocmlnaHQpOwkJCQkgICAgICAg XAorCQkJCQkJCQkJICAgICAgIFwKKwlrdW5pdF9zdHJlYW1fYWRkKF9fc3RyZWFtLCAiQXNzZXJ0 ZWQgIiAjbGVmdCAiID09ICIgI3JpZ2h0ICIsIGJ1dFxuIik7IFwKKwlrdW5pdF9zdHJlYW1fYWRk KF9fc3RyZWFtLCAiXHRcdCVzID09ICVzXG4iLCAjbGVmdCwgX19sZWZ0KTsJICAgICAgIFwKKwlr dW5pdF9zdHJlYW1fYWRkKF9fc3RyZWFtLCAiXHRcdCVzID09ICVzXG4iLCAjcmlnaHQsIF9fcmln aHQpOwkgICAgICAgXAorCQkJCQkJCQkJICAgICAgIFwKKwlLVU5JVF9BU1NFUlRfRU5EKHRlc3Qs ICFzdHJjbXAobGVmdCwgcmlnaHQpLCBfX3N0cmVhbSk7CQkgICAgICAgXAorfSB3aGlsZSAoMCkK KworI2RlZmluZSBLVU5JVF9BU1NFUlRfU1RSRVFfTVNHKHRlc3QsIGxlZnQsIHJpZ2h0LCBmbXQs IC4uLikgZG8gewkgICAgICAgXAorCXN0cnVjdCBrdW5pdF9zdHJlYW0gKl9fc3RyZWFtID0gS1VO SVRfQVNTRVJUX1NUQVJUKHRlc3QpOwkgICAgICAgXAorCXR5cGVvZihsZWZ0KSBfX2xlZnQgPSAo bGVmdCk7CQkJCQkgICAgICAgXAorCXR5cGVvZihyaWdodCkgX19yaWdodCA9IChyaWdodCk7CQkJ CSAgICAgICBcCisJCQkJCQkJCQkgICAgICAgXAorCWt1bml0X3N0cmVhbV9hZGQoX19zdHJlYW0s ICJBc3NlcnRlZCAiICNsZWZ0ICIgPT0gIiAjcmlnaHQgIiwgYnV0XG4iKTsgXAorCWt1bml0X3N0 cmVhbV9hZGQoX19zdHJlYW0sICJcdFx0JXMgPT0gJXNcbiIsICNsZWZ0LCBfX2xlZnQpOwkgICAg ICAgXAorCWt1bml0X3N0cmVhbV9hZGQoX19zdHJlYW0sICJcdFx0JXMgPT0gJXNcbiIsICNyaWdo dCwgX19yaWdodCk7CSAgICAgICBcCisJa3VuaXRfc3RyZWFtX2FkZChfX3N0cmVhbSwgZm10LCAj I19fVkFfQVJHU19fKTsJCQkgICAgICAgXAorCQkJCQkJCQkJICAgICAgIFwKKwlLVU5JVF9BU1NF UlRfRU5EKHRlc3QsICFzdHJjbXAobGVmdCwgcmlnaHQpLCBfX3N0cmVhbSk7CQkgICAgICAgXAor fSB3aGlsZSAoMCkKKworLyoqCisgKiBLVU5JVF9BU1NFUlRfU1RSTkVRKCkgLSBFeHBlY3RzIHRo YXQgc3RyaW5ncyBAbGVmdCBhbmQgQHJpZ2h0IGFyZSBub3QgZXF1YWwuCisgKiBAdGVzdDogVGhl IHRlc3QgY29udGV4dCBvYmplY3QuCisgKiBAbGVmdDogYW4gYXJiaXRyYXJ5IGV4cHJlc3Npb24g dGhhdCBldmFsdWF0ZXMgdG8gYSBudWxsIHRlcm1pbmF0ZWQgc3RyaW5nLgorICogQHJpZ2h0OiBh biBhcmJpdHJhcnkgZXhwcmVzc2lvbiB0aGF0IGV2YWx1YXRlcyB0byBhIG51bGwgdGVybWluYXRl ZCBzdHJpbmcuCisgKgorICogU2V0cyBhbiBleHBlY3RhdGlvbiB0aGF0IHRoZSB2YWx1ZXMgdGhh dCBAbGVmdCBhbmQgQHJpZ2h0IGV2YWx1YXRlIHRvIGFyZQorICogbm90IGVxdWFsLiBUaGlzIGlz IHNlbWFudGljYWxseSBlcXVpdmFsZW50IHRvCisgKiBLVU5JVF9BU1NFUlRfVFJVRShAdGVzdCwg c3RyY21wKChAbGVmdCksIChAcmlnaHQpKSkuIFNlZSBLVU5JVF9BU1NFUlRfVFJVRSgpCisgKiBm b3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAqLworI2RlZmluZSBLVU5JVF9BU1NFUlRfU1RSTkVRKHRl c3QsIGxlZnQsIHJpZ2h0KSBkbyB7CQkJICAgICAgIFwKKwlzdHJ1Y3Qga3VuaXRfc3RyZWFtICpf X3N0cmVhbSA9IEtVTklUX0FTU0VSVF9TVEFSVCh0ZXN0KTsJICAgICAgIFwKKwl0eXBlb2YobGVm dCkgX19sZWZ0ID0gKGxlZnQpOwkJCQkJICAgICAgIFwKKwl0eXBlb2YocmlnaHQpIF9fcmlnaHQg PSAocmlnaHQpOwkJCQkgICAgICAgXAorCQkJCQkJCQkJICAgICAgIFwKKwlrdW5pdF9zdHJlYW1f YWRkKF9fc3RyZWFtLCAiQXNzZXJ0ZWQgIiAjbGVmdCAiID09ICIgI3JpZ2h0ICIsIGJ1dFxuIik7 IFwKKwlrdW5pdF9zdHJlYW1fYWRkKF9fc3RyZWFtLCAiXHRcdCVzID09ICVzXG4iLCAjbGVmdCwg X19sZWZ0KTsJICAgICAgIFwKKwlrdW5pdF9zdHJlYW1fYWRkKF9fc3RyZWFtLCAiXHRcdCVzID09 ICVzXG4iLCAjcmlnaHQsIF9fcmlnaHQpOwkgICAgICAgXAorCQkJCQkJCQkJICAgICAgIFwKKwlL VU5JVF9BU1NFUlRfRU5EKHRlc3QsIHN0cmNtcChsZWZ0LCByaWdodCksIF9fc3RyZWFtKTsJCSAg ICAgICBcCit9IHdoaWxlICgwKQorCisjZGVmaW5lIEtVTklUX0FTU0VSVF9TVFJORVFfTVNHKHRl c3QsIGxlZnQsIHJpZ2h0LCBmbXQsIC4uLikgZG8gewkgICAgICAgXAorCXN0cnVjdCBrdW5pdF9z dHJlYW0gKl9fc3RyZWFtID0gS1VOSVRfQVNTRVJUX1NUQVJUKHRlc3QpOwkgICAgICAgXAorCXR5 cGVvZihsZWZ0KSBfX2xlZnQgPSAobGVmdCk7CQkJCQkgICAgICAgXAorCXR5cGVvZihyaWdodCkg X19yaWdodCA9IChyaWdodCk7CQkJCSAgICAgICBcCisJCQkJCQkJCQkgICAgICAgXAorCWt1bml0 X3N0cmVhbV9hZGQoX19zdHJlYW0sICJBc3NlcnRlZCAiICNsZWZ0ICIgPT0gIiAjcmlnaHQgIiwg YnV0XG4iKTsgXAorCWt1bml0X3N0cmVhbV9hZGQoX19zdHJlYW0sICJcdFx0JXMgPT0gJXNcbiIs ICNsZWZ0LCBfX2xlZnQpOwkgICAgICAgXAorCWt1bml0X3N0cmVhbV9hZGQoX19zdHJlYW0sICJc dFx0JXMgPT0gJXNcbiIsICNyaWdodCwgX19yaWdodCk7CSAgICAgICBcCisJa3VuaXRfc3RyZWFt X2FkZChfX3N0cmVhbSwgZm10LCAjI19fVkFfQVJHU19fKTsJCQkgICAgICAgXAorCQkJCQkJCQkJ ICAgICAgIFwKKwlLVU5JVF9BU1NFUlRfRU5EKHRlc3QsIHN0cmNtcChsZWZ0LCByaWdodCksIF9f c3RyZWFtKTsJCSAgICAgICBcCit9IHdoaWxlICgwKQorCisvKioKKyAqIEtVTklUX0FTU0VSVF9O T1RfRVJSX09SX05VTEwoKSAtIEFzc2VydGlvbiB0aGF0IEBwdHIgaXMgbm90IG51bGwgYW5kIG5v dCBlcnIuCisgKiBAdGVzdDogVGhlIHRlc3QgY29udGV4dCBvYmplY3QuCisgKiBAcHRyOiBhbiBh cmJpdHJhcnkgcG9pbnRlci4KKyAqCisgKiBTZXRzIGFuIGFzc2VydGlvbiB0aGF0IHRoZSB2YWx1 ZSB0aGF0IEBwdHIgZXZhbHVhdGVzIHRvIGlzIG5vdCBudWxsIGFuZCBub3QKKyAqIGFuIGVycm5v IHN0b3JlZCBpbiBhIHBvaW50ZXIuIFRoaXMgaXMgdGhlIHNhbWUgYXMKKyAqIEtVTklUX0VYUEVD VF9OT1RfRVJSX09SX05VTEwoKSwgZXhjZXB0IGl0IGNhdXNlcyBhbiBhc3NlcnRpb24gZmFpbHVy ZSAoc2VlCisgKiBLVU5JVF9BU1NFUlRfVFJVRSgpKSB3aGVuIHRoZSBhc3NlcnRpb24gaXMgbm90 IG1ldC4KKyAqLworI2RlZmluZSBLVU5JVF9BU1NFUlRfTk9UX0VSUl9PUl9OVUxMKHRlc3QsIHB0 cikgZG8gewkJCSAgICAgICBcCisJc3RydWN0IGt1bml0X3N0cmVhbSAqX19zdHJlYW0gPSBLVU5J VF9BU1NFUlRfU1RBUlQodGVzdCk7CSAgICAgICBcCisJdHlwZW9mKHB0cikgX19wdHIgPSAocHRy KTsJCQkJCSAgICAgICBcCisJCQkJCQkJCQkgICAgICAgXAorCWlmICghX19wdHIpCQkJCQkJCSAg ICAgICBcCisJCWt1bml0X3N0cmVhbV9hZGQoX19zdHJlYW0sCQkJCSAgICAgICBcCisJCQkJICJB c3NlcnRlZCAiICNwdHIgIiBpcyBub3QgbnVsbCwgYnV0IGlzLlxuIik7ICBcCisJaWYgKElTX0VS UihfX3B0cikpCQkJCQkJICAgICAgIFwKKwkJa3VuaXRfc3RyZWFtX2FkZChfX3N0cmVhbSwJCQkJ ICAgICAgIFwKKwkJCQkgIkFzc2VydGVkICIgI3B0ciAiIGlzIG5vdCBlcnJvciwgYnV0IGlzOiAl bGRcbiIsXAorCQkJCSBQVFJfRVJSKF9fcHRyKSk7CQkJICAgICAgIFwKKwkJCQkJCQkJCSAgICAg ICBcCisJS1VOSVRfQVNTRVJUX0VORCh0ZXN0LCAhSVNfRVJSX09SX05VTEwoX19wdHIpLCBfX3N0 cmVhbSk7CSAgICAgICBcCit9IHdoaWxlICgwKQorCisjZGVmaW5lIEtVTklUX0FTU0VSVF9OT1Rf RVJSX09SX05VTExfTVNHKHRlc3QsIHB0ciwgZm10LCAuLi4pIGRvIHsJICAgICAgIFwKKwlzdHJ1 Y3Qga3VuaXRfc3RyZWFtICpfX3N0cmVhbSA9IEtVTklUX0FTU0VSVF9TVEFSVCh0ZXN0KTsJICAg ICAgIFwKKwl0eXBlb2YocHRyKSBfX3B0ciA9IChwdHIpOwkJCQkJICAgICAgIFwKKwkJCQkJCQkJ CSAgICAgICBcCisJaWYgKCFfX3B0cikgewkJCQkJCQkgICAgICAgXAorCQlrdW5pdF9zdHJlYW1f YWRkKF9fc3RyZWFtLAkJCQkgICAgICAgXAorCQkJCSAiQXNzZXJ0ZWQgIiAjcHRyICIgaXMgbm90 IG51bGwsIGJ1dCBpcy5cbiIpOyAgXAorCQlrdW5pdF9zdHJlYW1fYWRkKF9fc3RyZWFtLCBmbXQs ICMjX19WQV9BUkdTX18pOwkJICAgICAgIFwKKwl9CQkJCQkJCQkgICAgICAgXAorCWlmIChJU19F UlIoX19wdHIpKSB7CQkJCQkJICAgICAgIFwKKwkJa3VuaXRfc3RyZWFtX2FkZChfX3N0cmVhbSwJ CQkJICAgICAgIFwKKwkJCQkgIkFzc2VydGVkICIgI3B0ciAiIGlzIG5vdCBlcnJvciwgYnV0IGlz OiAlbGRcbiIsXAorCQkJCSBQVFJfRVJSKF9fcHRyKSk7CQkJICAgICAgIFwKKwkJCQkJCQkJCSAg ICAgICBcCisJCWt1bml0X3N0cmVhbV9hZGQoX19zdHJlYW0sIGZtdCwgIyNfX1ZBX0FSR1NfXyk7 CQkgICAgICAgXAorCX0JCQkJCQkJCSAgICAgICBcCisJS1VOSVRfQVNTRVJUX0VORCh0ZXN0LCAh SVNfRVJSX09SX05VTEwoX19wdHIpLCBfX3N0cmVhbSk7CSAgICAgICBcCit9IHdoaWxlICgwKQor CiAjZW5kaWYgLyogX0tVTklUX1RFU1RfSCAqLwpkaWZmIC0tZ2l0IGEva3VuaXQvc3RyaW5nLXN0 cmVhbS10ZXN0LmMgYi9rdW5pdC9zdHJpbmctc3RyZWFtLXRlc3QuYwppbmRleCA5Y2JkOTkyMzZk MTVlLi5mNzYwYzZkZGI3OTE5IDEwMDY0NAotLS0gYS9rdW5pdC9zdHJpbmctc3RyZWFtLXRlc3Qu YworKysgYi9rdW5pdC9zdHJpbmctc3RyZWFtLXRlc3QuYwpAQCAtMTksNyArMTksNyBAQCBzdGF0 aWMgdm9pZCBzdHJpbmdfc3RyZWFtX3Rlc3RfZ2V0X3N0cmluZyhzdHJ1Y3Qga3VuaXQgKnRlc3Qp CiAJc3RyaW5nX3N0cmVhbV9hZGQoc3RyZWFtLCAiICVzIiwgImJhciIpOwogCiAJb3V0cHV0ID0g c3RyaW5nX3N0cmVhbV9nZXRfc3RyaW5nKHN0cmVhbSk7Ci0JS1VOSVRfRVhQRUNUX1NUUkVRKHRl c3QsIG91dHB1dCwgIkZvbyBiYXIiKTsKKwlLVU5JVF9BU1NFUlRfU1RSRVEodGVzdCwgb3V0cHV0 LCAiRm9vIGJhciIpOwogCWtmcmVlKG91dHB1dCk7CiAJZGVzdHJveV9zdHJpbmdfc3RyZWFtKHN0 cmVhbSk7CiB9CkBAIC0zNCwxNiArMzQsMTYgQEAgc3RhdGljIHZvaWQgc3RyaW5nX3N0cmVhbV90 ZXN0X2FkZF9hbmRfY2xlYXIoc3RydWN0IGt1bml0ICp0ZXN0KQogCQlzdHJpbmdfc3RyZWFtX2Fk ZChzdHJlYW0sICJBIik7CiAKIAlvdXRwdXQgPSBzdHJpbmdfc3RyZWFtX2dldF9zdHJpbmcoc3Ry ZWFtKTsKLQlLVU5JVF9FWFBFQ1RfU1RSRVEodGVzdCwgb3V0cHV0LCAiQUFBQUFBQUFBQSIpOwot CUtVTklUX0VYUEVDVF9FUSh0ZXN0LCBzdHJlYW0tPmxlbmd0aCwgMTApOwotCUtVTklUX0VYUEVD VF9GQUxTRSh0ZXN0LCBzdHJpbmdfc3RyZWFtX2lzX2VtcHR5KHN0cmVhbSkpOworCUtVTklUX0FT U0VSVF9TVFJFUSh0ZXN0LCBvdXRwdXQsICJBQUFBQUFBQUFBIik7CisJS1VOSVRfQVNTRVJUX0VR KHRlc3QsIHN0cmVhbS0+bGVuZ3RoLCAxMCk7CisJS1VOSVRfQVNTRVJUX0ZBTFNFKHRlc3QsIHN0 cmluZ19zdHJlYW1faXNfZW1wdHkoc3RyZWFtKSk7CiAJa2ZyZWUob3V0cHV0KTsKIAogCXN0cmlu Z19zdHJlYW1fY2xlYXIoc3RyZWFtKTsKIAogCW91dHB1dCA9IHN0cmluZ19zdHJlYW1fZ2V0X3N0 cmluZyhzdHJlYW0pOwotCUtVTklUX0VYUEVDVF9TVFJFUSh0ZXN0LCBvdXRwdXQsICIiKTsKLQlL VU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCBzdHJpbmdfc3RyZWFtX2lzX2VtcHR5KHN0cmVhbSkpOwor CUtVTklUX0FTU0VSVF9TVFJFUSh0ZXN0LCBvdXRwdXQsICIiKTsKKwlLVU5JVF9BU1NFUlRfVFJV RSh0ZXN0LCBzdHJpbmdfc3RyZWFtX2lzX2VtcHR5KHN0cmVhbSkpOwogCWRlc3Ryb3lfc3RyaW5n X3N0cmVhbShzdHJlYW0pOwogfQogCmRpZmYgLS1naXQgYS9rdW5pdC90ZXN0LXRlc3QuYyBiL2t1 bml0L3Rlc3QtdGVzdC5jCmluZGV4IDU3N2RmNWE4ZDMwOWUuLjdhZmM5YmI1MmY3YmUgMTAwNjQ0 Ci0tLSBhL2t1bml0L3Rlc3QtdGVzdC5jCisrKyBiL2t1bml0L3Rlc3QtdGVzdC5jCkBAIC03OCwx MSArNzgsMTMgQEAgc3RhdGljIGludCBrdW5pdF90cnlfY2F0Y2hfdGVzdF9pbml0KHN0cnVjdCBr dW5pdCAqdGVzdCkKIAlzdHJ1Y3Qga3VuaXRfdHJ5X2NhdGNoX3Rlc3RfY29udGV4dCAqY3R4Owog CiAJY3R4ID0ga3VuaXRfa3phbGxvYyh0ZXN0LCBzaXplb2YoKmN0eCksIEdGUF9LRVJORUwpOwor CUtVTklUX0FTU0VSVF9OT1RfRVJSX09SX05VTEwodGVzdCwgY3R4KTsKIAl0ZXN0LT5wcml2ID0g Y3R4OwogCiAJY3R4LT50cnlfY2F0Y2ggPSBrdW5pdF9rbWFsbG9jKHRlc3QsCiAJCQkJICAgICAg IHNpemVvZigqY3R4LT50cnlfY2F0Y2gpLAogCQkJCSAgICAgICBHRlBfS0VSTkVMKTsKKwlLVU5J VF9BU1NFUlRfTk9UX0VSUl9PUl9OVUxMKHRlc3QsIGN0eC0+dHJ5X2NhdGNoKTsKIAogCXJldHVy biAwOwogfQpkaWZmIC0tZ2l0IGEva3VuaXQvdGVzdC5jIGIva3VuaXQvdGVzdC5jCmluZGV4IDM0 Y2VjYzVjODA1ZTguLjk0ZDY4ODYwNDNkOGQgMTAwNjQ0Ci0tLSBhL2t1bml0L3Rlc3QuYworKysg Yi9rdW5pdC90ZXN0LmMKQEAgLTUxNywzICs1MTcsNjkgQEAgdm9pZCBrdW5pdF9leHBlY3RfcHRy X2JpbmFyeV9tc2coc3RydWN0IGt1bml0ICp0ZXN0LAogCiAJa3VuaXRfZXhwZWN0X2VuZCh0ZXN0 LCBjb21wYXJlX3Jlc3VsdCwgc3RyZWFtKTsKIH0KKwordm9pZCBrdW5pdF9hc3NlcnRfYmluYXJ5 X21zZyhzdHJ1Y3Qga3VuaXQgKnRlc3QsCisJCQkgICAgIGxvbmcgbG9uZyBsZWZ0LCBjb25zdCBj aGFyICpsZWZ0X25hbWUsCisJCQkgICAgIGxvbmcgbG9uZyByaWdodCwgY29uc3QgY2hhciAqcmln aHRfbmFtZSwKKwkJCSAgICAgYm9vbCBjb21wYXJlX3Jlc3VsdCwKKwkJCSAgICAgY29uc3QgY2hh ciAqY29tcGFyZV9uYW1lLAorCQkJICAgICBjb25zdCBjaGFyICpmaWxlLAorCQkJICAgICBjb25z dCBjaGFyICpsaW5lLAorCQkJICAgICBjb25zdCBjaGFyICpmbXQsIC4uLikKK3sKKwlzdHJ1Y3Qg a3VuaXRfc3RyZWFtICpzdHJlYW0gPSBrdW5pdF9hc3NlcnRfc3RhcnQodGVzdCwgZmlsZSwgbGlu ZSk7CisJc3RydWN0IHZhX2Zvcm1hdCB2YWY7CisJdmFfbGlzdCBhcmdzOworCisJa3VuaXRfc3Ry ZWFtX2FkZChzdHJlYW0sCisJCQkgIkFzc2VydGVkICVzICVzICVzLCBidXRcbiIsCisJCQkgbGVm dF9uYW1lLCBjb21wYXJlX25hbWUsIHJpZ2h0X25hbWUpOworCWt1bml0X3N0cmVhbV9hZGQoc3Ry ZWFtLCAiXHRcdCVzID09ICVsbGRcbiIsIGxlZnRfbmFtZSwgbGVmdCk7CisJa3VuaXRfc3RyZWFt X2FkZChzdHJlYW0sICJcdFx0JXMgPT0gJWxsZFxuIiwgcmlnaHRfbmFtZSwgcmlnaHQpOworCisJ aWYgKGZtdCkgeworCQl2YV9zdGFydChhcmdzLCBmbXQpOworCisJCXZhZi5mbXQgPSBmbXQ7CisJ CXZhZi52YSA9ICZhcmdzOworCisJCWt1bml0X3N0cmVhbV9hZGQoc3RyZWFtLCAiXG4lcFYiLCAm dmFmKTsKKworCQl2YV9lbmQoYXJncyk7CisJfQorCisJa3VuaXRfYXNzZXJ0X2VuZCh0ZXN0LCBj b21wYXJlX3Jlc3VsdCwgc3RyZWFtKTsKK30KKwordm9pZCBrdW5pdF9hc3NlcnRfcHRyX2JpbmFy eV9tc2coc3RydWN0IGt1bml0ICp0ZXN0LAorCQkJCSB2b2lkICpsZWZ0LCBjb25zdCBjaGFyICps ZWZ0X25hbWUsCisJCQkJIHZvaWQgKnJpZ2h0LCBjb25zdCBjaGFyICpyaWdodF9uYW1lLAorCQkJ CSBib29sIGNvbXBhcmVfcmVzdWx0LAorCQkJCSBjb25zdCBjaGFyICpjb21wYXJlX25hbWUsCisJ CQkJIGNvbnN0IGNoYXIgKmZpbGUsCisJCQkJIGNvbnN0IGNoYXIgKmxpbmUsCisJCQkJIGNvbnN0 IGNoYXIgKmZtdCwgLi4uKQoreworCXN0cnVjdCBrdW5pdF9zdHJlYW0gKnN0cmVhbSA9IGt1bml0 X2Fzc2VydF9zdGFydCh0ZXN0LCBmaWxlLCBsaW5lKTsKKwlzdHJ1Y3QgdmFfZm9ybWF0IHZhZjsK Kwl2YV9saXN0IGFyZ3M7CisKKwlrdW5pdF9zdHJlYW1fYWRkKHN0cmVhbSwKKwkJCSAiQXNzZXJ0 ZWQgJXMgJXMgJXMsIGJ1dFxuIiwKKwkJCSBsZWZ0X25hbWUsIGNvbXBhcmVfbmFtZSwgcmlnaHRf bmFtZSk7CisJa3VuaXRfc3RyZWFtX2FkZChzdHJlYW0sICJcdFx0JXMgPT0gJXBLXG4iLCBsZWZ0 X25hbWUsIGxlZnQpOworCWt1bml0X3N0cmVhbV9hZGQoc3RyZWFtLCAiXHRcdCVzID09ICVwSyIs IHJpZ2h0X25hbWUsIHJpZ2h0KTsKKworCWlmIChmbXQpIHsKKwkJdmFfc3RhcnQoYXJncywgZm10 KTsKKworCQl2YWYuZm10ID0gZm10OworCQl2YWYudmEgPSAmYXJnczsKKworCQlrdW5pdF9zdHJl YW1fYWRkKHN0cmVhbSwgIlxuJXBWIiwgJnZhZik7CisKKwkJdmFfZW5kKGFyZ3MpOworCX0KKwor CWt1bml0X2Fzc2VydF9lbmQodGVzdCwgY29tcGFyZV9yZXN1bHQsIHN0cmVhbSk7Cit9Ci0tIAoy LjIxLjAuMTAyMC5nZjI4MjBjZjAxYS1nb29nCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9kcmktZGV2ZWw=