From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 59124C3524D for ; Mon, 3 Feb 2020 15:08:08 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 2BB2F20838 for ; Mon, 3 Feb 2020 15:08:08 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2BB2F20838 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iydKO-0000Dv-NJ; Mon, 03 Feb 2020 15:07:56 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iydKN-0000Di-CC for xen-devel@lists.xenproject.org; Mon, 03 Feb 2020 15:07:55 +0000 X-Inumbo-ID: f3449e88-4696-11ea-8e6e-12813bfff9fa Received: from mx2.suse.de (unknown [195.135.220.15]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id f3449e88-4696-11ea-8e6e-12813bfff9fa; Mon, 03 Feb 2020 15:07:53 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 1F53AB0B3; Mon, 3 Feb 2020 15:07:52 +0000 (UTC) To: Juergen Gross References: <20200121084330.18309-1-jgross@suse.com> <20200121084330.18309-5-jgross@suse.com> From: Jan Beulich Message-ID: <05b9770e-1554-1f71-3757-4feb9c1fa247@suse.com> Date: Mon, 3 Feb 2020 16:07:57 +0100 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.4.2 MIME-Version: 1.0 In-Reply-To: <20200121084330.18309-5-jgross@suse.com> Content-Language: en-US Subject: Re: [Xen-devel] [PATCH v3 4/9] xen: add basic hypervisor filesystem support X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Stefano Stabellini , Julien Grall , Wei Liu , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Ian Jackson , xen-devel@lists.xenproject.org, Volodymyr Babchuk , =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" T24gMjEuMDEuMjAyMCAwOTo0MywgSnVlcmdlbiBHcm9zcyB3cm90ZToKPiAtLS0KPiAgeGVuL2Fy Y2gvYXJtL3RyYXBzLmMgICAgICAgICB8ICAgMSArCj4gIHhlbi9hcmNoL3g4Ni9odm0vaHlwZXJj YWxsLmMgfCAgIDEgKwo+ICB4ZW4vYXJjaC94ODYvaHlwZXJjYWxsLmMgICAgIHwgICAxICsKPiAg eGVuL2FyY2gveDg2L3B2L2h5cGVyY2FsbC5jICB8ICAgMSArCj4gIHhlbi9jb21tb24vTWFrZWZp bGUgICAgICAgICAgfCAgIDEgKwo+ICB4ZW4vY29tbW9uL2h5cGZzLmMgICAgICAgICAgIHwgMzY1 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgeGVuL2luY2x1 ZGUvcHVibGljL2h5cGZzLmggICB8IDEyNCArKysrKysrKysrKysrKysKPiAgeGVuL2luY2x1ZGUv cHVibGljL3hlbi5oICAgICB8ICAgMSArCj4gIHhlbi9pbmNsdWRlL3hlbi9oeXBlcmNhbGwuaCAg fCAgIDggKwo+ICB4ZW4vaW5jbHVkZS94ZW4vaHlwZnMuaCAgICAgIHwgIDg5ICsrKysrKysrKysr Cj4gIDEwIGZpbGVzIGNoYW5nZWQsIDU5MiBpbnNlcnRpb25zKCspCgpFdmVuIGlmIGl0J3MganVz dCB0d28gc3RydWN0dXJlcyB0aGF0IHlvdSBoYXZlIGluIHRoZSBwdWJsaWMKaGVhZGVyLCB5b3Vy IGFzc2VydGlvbiBvZiB0aGUgaW50ZXJmYWNlIGJlaW5nIGd1ZXN0IGJpdG5lc3MKYWdub3N0aWMg c2hvdWxkIGJlIGFjY29tcGFuaWVkIGJ5IGFjdHVhbCBwcm9vZiwgaS5lLiBhZGRpdGlvbgp0byB4 ZW4vaW5jbHVkZS94bGF0LmxzdC4KCj4gK3N0YXRpYyBpbnQgYWRkX2VudHJ5KHN0cnVjdCBoeXBm c19lbnRyeV9kaXIgKnBhcmVudCwgc3RydWN0IGh5cGZzX2VudHJ5ICpuZXcpCj4gK3sKPiArICAg IGludCByZXQgPSAtRU5PRU5UOwo+ICsgICAgc3RydWN0IGh5cGZzX2VudHJ5ICplOwo+ICsKPiAr ICAgIHdyaXRlX2xvY2soJmh5cGZzX2xvY2spOwo+ICsKPiArICAgIGxpc3RfZm9yX2VhY2hfZW50 cnkgKCBlLCAmcGFyZW50LT5kaXJsaXN0LCBsaXN0ICkKPiArICAgIHsKPiArICAgICAgICBpbnQg Y21wID0gc3RyY21wKGUtPm5hbWUsIG5ldy0+bmFtZSk7Cj4gKwo+ICsgICAgICAgIGlmICggY21w ID4gMCApCj4gKyAgICAgICAgewo+ICsgICAgICAgICAgICByZXQgPSAwOwo+ICsgICAgICAgICAg ICBsaXN0X2FkZF90YWlsKCZuZXctPmxpc3QsICZlLT5saXN0KTsKPiArICAgICAgICAgICAgYnJl YWs7Cj4gKyAgICAgICAgfQo+ICsgICAgICAgIGlmICggY21wID09IDAgKQo+ICsgICAgICAgIHsK PiArICAgICAgICAgICAgcmV0ID0gLUVFWElTVDsKPiArICAgICAgICAgICAgYnJlYWs7Cj4gKyAg ICAgICAgfQo+ICsgICAgfQo+ICsKPiArICAgIGlmICggcmV0ID09IC1FTk9FTlQgKQo+ICsgICAg ewo+ICsgICAgICAgIHJldCA9IDA7Cj4gKyAgICAgICAgbGlzdF9hZGRfdGFpbCgmbmV3LT5saXN0 LCAmcGFyZW50LT5kaXJsaXN0KTsKPiArICAgIH0KPiArCj4gKyAgICBpZiAoICFyZXQgKQo+ICsg ICAgewo+ICsgICAgICAgIHVuc2lnbmVkIGludCBzeiA9IHN0cmxlbihuZXctPm5hbWUpICsgMTsK PiArCj4gKyAgICAgICAgcGFyZW50LT5lLnNpemUgKz0gRElSRU5UUllfU0laRShzeik7CgpXb3Vs ZCBESVJFTlRSWV9TSVpFKCkgcGVyaGFwcyBiZXR0ZXIgaW5jbHVkZSB0aGUgIisgMSI/Cgo+ICtp bnQgaHlwZnNfYWRkX2VudHJ5KHN0cnVjdCBoeXBmc19lbnRyeV9kaXIgKnBhcmVudCwKPiArICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3QgaHlwZnNfZW50cnkgKmVudHJ5LCBib29sIG5vZmF1bHQp Cj4gK3sKPiArICAgIGludCByZXQ7Cj4gKwo+ICsgICAgcmV0ID0gYWRkX2VudHJ5KHBhcmVudCwg ZW50cnkpOwo+ICsgICAgQlVHX09OKG5vZmF1bHQgJiYgcmV0KTsKPiArCj4gKyAgICByZXR1cm4g cmV0Owo+ICt9CgpXaGlsZSB0aGlzIGFuZCBpdHMgdHdvIHNpYmxpbmdzIGhhdmUgbm8gY2FsbGVy LCB0aGUgb25lIGFib3ZlCmRvZXNuJ3QgZXZlbiBoYXZlIGEgZGVjbGFyYXRpb24gaW4gdGhlIGhl YWRlciBmaWxlLiBXaGF0IGlzCnRoaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgKGZyb20gZXh0 ZXJuYWwgY2FsbGVycyk/CgpJIGFsc28gdGhpbmsgdGhlICJub2ZhdWx0IiBhc3BlY3QgY291bGQg ZG8gd2l0aCBkaXNjdXNzaW5nIGluCnRoZSBjb21taXQgbWVzc2FnZSAtIGl0IHNlZW1zIHF1aXRl IG9kZCB0byBtZS4KCj4gK3N0YXRpYyBpbnQgaHlwZnNfZ2V0X3BhdGhfdXNlcihjaGFyICpidWYs IFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0odm9pZCkgdWFkZHIsCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxlbikKCkZvciBjb25zaXN0ZW5jeSB3aXRoIG5h bWluZyBlbHNld2hlcmUgYXMgd2VsbCBhcyB1YWRkciBoZXJlIC0KdWxlbj8KCj4gK3N0YXRpYyBz dHJ1Y3QgaHlwZnNfZW50cnkgKmh5cGZzX2dldF9lbnRyeV9yZWwoc3RydWN0IGh5cGZzX2VudHJ5 X2RpciAqZGlyLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IGNoYXIgKnBhdGgpCj4gK3sKPiArICAgIGNvbnN0IGNoYXIgKmVuZDsKPiArICAg IHN0cnVjdCBoeXBmc19lbnRyeSAqZW50cnk7Cj4gKyAgICB1bnNpZ25lZCBpbnQgbmFtZV9sZW47 Cj4gKwo+ICsgICAgaWYgKCAhKnBhdGggKQo+ICsgICAgICAgIHJldHVybiAmZGlyLT5lOwo+ICsK PiArICAgIGlmICggZGlyLT5lLnR5cGUgIT0gWEVOX0hZUEZTX1RZUEVfRElSICkKPiArICAgICAg ICByZXR1cm4gTlVMTDsKCkRvbid0IHRoZXNlIHR3byBuZWVkIHN3aXRjaGluZyBhcm91bmQsIHRv IG1ha2Ugc3VyZSAvYS9iL2MvCmRvZXNuJ3QgbWF0Y2ggYSBub24tZGlyIC9hL2IvYyA/Cgo+ICsg ICAgZW5kID0gc3RyY2hyKHBhdGgsICcvJyk7Cj4gKyAgICBpZiAoICFlbmQgKQo+ICsgICAgICAg IGVuZCA9IHN0cmNocihwYXRoLCAnXDAnKTsKPiArICAgIG5hbWVfbGVuID0gZW5kIC0gcGF0aDsK PiArCj4gKyAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICggZW50cnksICZkaXItPmRpcmxpc3QsIGxp c3QgKQo+ICsgICAgewo+ICsgICAgICAgIGludCBjbXAgPSBzdHJuY21wKHBhdGgsIGVudHJ5LT5u YW1lLCBuYW1lX2xlbik7Cj4gKwlzdHJ1Y3QgaHlwZnNfZW50cnlfZGlyICpkID0gY29udGFpbmVy X29mKGVudHJ5LAoKQSBoYXJkIHRhYiBzbGlwcGVkIGluIGhlcmUuCgo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGh5cGZzX2VudHJ5X2Rp ciwgZSk7Cj4gKwo+ICsgICAgICAgIGlmICggY21wIDwgMCApCj4gKyAgICAgICAgICAgIHJldHVy biBOVUxMOwo+ICsgICAgICAgIGlmICggIWNtcCAmJiBzdHJsZW4oZW50cnktPm5hbWUpID09IG5h bWVfbGVuICkKPiArICAgICAgICAgICAgcmV0dXJuICplbmQgPyBoeXBmc19nZXRfZW50cnlfcmVs KGQsIGVuZCArIDEpIDogZW50cnk7Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0dXJuIE5VTEw7Cj4g K30KPiArCj4gK3N0cnVjdCBoeXBmc19lbnRyeSAqaHlwZnNfZ2V0X2VudHJ5KGNvbnN0IGNoYXIg KnBhdGgpCj4gK3sKPiArICAgIGlmICggcGF0aFswXSAhPSAnLycgKQo+ICsgICAgICAgIHJldHVy biBOVUxMOwo+ICsKPiArICAgIHJldHVybiBoeXBmc19nZXRfZW50cnlfcmVsKCZoeXBmc19yb290 LCBwYXRoICsgMSk7Cj4gK30KPiArCj4gK2ludCBoeXBmc19yZWFkX2Rpcihjb25zdCBzdHJ1Y3Qg aHlwZnNfZW50cnkgKmVudHJ5LAo+ICsgICAgICAgICAgICAgICAgICAgWEVOX0dVRVNUX0hBTkRM RV9QQVJBTSh2b2lkKSB1YWRkcikKPiArewo+ICsgICAgY29uc3Qgc3RydWN0IGh5cGZzX2VudHJ5 X2RpciAqZDsKPiArICAgIHN0cnVjdCBoeXBmc19lbnRyeSAqZTsKCmNvbnN0PwoKPiArc3RhdGlj IGludCBoeXBmc19yZWFkKGNvbnN0IHN0cnVjdCBoeXBmc19lbnRyeSAqZW50cnksCj4gKyAgICAg ICAgICAgICAgICAgICAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIHVhZGRyLCB1bnNp Z25lZCBsb25nIHVsZW4pCj4gK3sKPiArICAgIHN0cnVjdCB4ZW5faHlwZnNfZGlyZW50cnkgZTsK PiArICAgIGxvbmcgcmV0ID0gLUVJTlZBTDsKPiArCj4gKyAgICBpZiAoIHVsZW4gPCBzaXplb2Yo ZSkgKQo+ICsgICAgICAgIGdvdG8gb3V0Owo+ICsKPiArICAgIGUuZmxhZ3MgPSBlbnRyeS0+d3Jp dGUgPyBYRU5fSFlQRlNfV1JJVEVBQkxFIDogMDsKPiArICAgIGUudHlwZSA9IGVudHJ5LT50eXBl Owo+ICsgICAgZS5lbmNvZGluZyA9IGVudHJ5LT5lbmNvZGluZzsKPiArICAgIGUuY29udGVudF9s ZW4gPSBlbnRyeS0+c2l6ZTsKPiArCj4gKyAgICByZXQgPSAtRUZBVUxUOwo+ICsgICAgaWYgKCBj b3B5X3RvX2d1ZXN0KHVhZGRyLCAmZSwgMSkgKQo+ICsgICAgICAgIGdvdG8gb3V0Owo+ICsKPiAr ICAgIHJldCA9IDA7Cj4gKyAgICBpZiAoIHVsZW4gPCBlbnRyeS0+c2l6ZSArIHNpemVvZihlKSAp Cj4gKyAgICAgICAgZ290byBvdXQ7CgpTbyB5b3UgcmV0dXJuICJzdWNjZXNzIiBldmVuIGlmIHRo ZSBvcGVyYXRpb24gZGlkbid0IGNvbXBsZXRlCnN1Y2Nlc3NmdWxseS4gVGhpcyBpc24ndCB2ZXJ5 IG5pY2UsIHBsdXMgLi4uCgo+ICsgICAgZ3Vlc3RfaGFuZGxlX2FkZF9vZmZzZXQodWFkZHIsIHNp emVvZihlKSk7Cj4gKwo+ICsgICAgcmV0ID0gZW50cnktPnJlYWQoZW50cnksIHVhZGRyKTsKCi4u LiBob3cgaXMgdGhlIGNhbGxlciB0byBrbm93IHdoZXRoZXIgZGlyZW50cnkgd2FzIGF0IGxlYXN0 CmNvcGllZCBpZiB0aGlzIHRoZW4gZmFpbHM/Cgo+ICtpbnQgaHlwZnNfd3JpdGVfbGVhZihzdHJ1 Y3QgaHlwZnNfZW50cnlfbGVhZiAqbGVhZiwKPiArICAgICAgICAgICAgICAgICAgICAgWEVOX0dV RVNUX0hBTkRMRV9QQVJBTSh2b2lkKSB1YWRkciwgdW5zaWduZWQgbG9uZyB1bGVuKQo+ICt7Cj4g KyAgICBjaGFyICpidWY7Cj4gKyAgICBpbnQgcmV0Owo+ICsKPiArICAgIGlmICggdWxlbiA+IGxl YWYtPmUuc2l6ZSApCj4gKyAgICAgICAgdWxlbiA9IGxlYWYtPmUuc2l6ZTsKClNpbGVudCB0cnVu Y2F0aW9uPwoKPiArICAgIGJ1ZiA9IHh6YWxsb2NfYXJyYXkoY2hhciwgdWxlbik7CgpXaHkgdGhl IHogdmFyaWFudD8KCj4gKyAgICBpZiAoICFidWYgKQo+ICsgICAgICAgIHJldHVybiAtRU5PTUVN Owo+ICsKPiArICAgIHJldCA9IC1FRkFVTFQ7Cj4gKyAgICBpZiAoIGNvcHlfZnJvbV9ndWVzdChi dWYsIHVhZGRyLCB1bGVuKSApCj4gKyAgICAgICAgZ290byBvdXQ7Cj4gKwo+ICsgICAgcmV0ID0g MDsKPiArICAgIGlmICggbGVhZi0+ZS50eXBlID09IFhFTl9IWVBGU19UWVBFX1NUUklORyApCj4g KyAgICAgICAgYnVmW2xlYWYtPmUuc2l6ZSAtIDFdID0gMDsKCkFuZCBwb3NzaWJsZSBmdXJ0aGVy IHNpbGVudCB0cnVuY2F0aW9uPyBBbmQgaWYgdGhlIGluY29taW5nCmJ1ZmZlciBoYXMgbm8gbnVs IGJ5dGUgYXQgdWxlbi0xLCB5b3UnbGwgdGhlbiAuLi4KCj4gKyAgICBtZW1jcHkobGVhZi0+d3Jp dGVfcHRyLCBidWYsIHVsZW4pOwoKLi4uIHByb2R1Y2UgYSBzdHJhbmdlIGNvbmNhdGVuYXRpb24g b2YgbmV3IGFuZCB0YWlsIG9mIG9sZApjb250ZW50cz8KCkFueXdheSwgdGhpcyBhbmQgLi4uCgo+ ICsgb3V0Ogo+ICsgICAgeGZyZWUoYnVmKTsKPiArICAgIHJldHVybiByZXQ7Cj4gK30KPiArCj4g K2ludCBoeXBmc193cml0ZV9ib29sKHN0cnVjdCBoeXBmc19lbnRyeV9sZWFmICpsZWFmLAo+ICsg ICAgICAgICAgICAgICAgICAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIHVhZGRyLCB1 bnNpZ25lZCBsb25nIHVsZW4pCj4gK3sKCi4uLiB0aGlzIGZ1bmN0aW9uIGFyZW4ndCB2ZXJ5IGhl bHBmdWwgdG8gcmV2aWV3IHdpdGhvdXQgdGhlcmUKYmVpbmcgYSBjYWxsZXIuIENvdWxkIHRoZXNl IGJlIGludHJvZHVjZWQgYXQgdGhlIHRpbWUgYSBmaXJzdApjYWxsZXIgYXBwZWFycz8KCj4gKyAg ICB1bmlvbiB7Cj4gKyAgICAgICAgY2hhciBidWZbOF07Cj4gKyAgICAgICAgdWludDhfdCB1ODsK PiArICAgICAgICB1aW50MTZfdCB1MTY7Cj4gKyAgICAgICAgdWludDMyX3QgdTMyOwo+ICsgICAg ICAgIHVpbnQ2NF90IHU2NDsKPiArICAgIH0gdTsKPiArCj4gKyAgICBBU1NFUlQobGVhZi0+ZS50 eXBlID09IFhFTl9IWVBGU19UWVBFX1VJTlQgJiYgbGVhZi0+ZS5zaXplIDw9IDgpOwo+ICsKPiAr ICAgIGlmICggdWxlbiAhPSBsZWFmLT5lLnNpemUgKQo+ICsgICAgICAgIHJldHVybiAtRURPTTsK CklzIHRoaXMgcmVzdHJpY3Rpb24gcmVhbGx5IG5lY2Vzc2FyeT8gU2V0dGluZyBlLmcuIGEgNC1i eXRlCmZpZWxkIGZyb20gMS1ieXRlIGlucHV0IGlzIG5vIHByb2JsZW0gYXQgYWxsLiBUaGlzIGJl aW5nIGZvcgpib29sZWFucyBJIGFueXdheSB3b25kZXIgd2h5IGlucHV0IG1pZ2h0IGJlIGhlbHBm dWwgdG8gaGF2ZQpsYXJnZXIgdGhhbiBhIHNpbmdsZSBieXRlLiBCdXQgbWF5YmUgYWxsIG9mIHRo aXMgaXMgYWdhaW4gYQpyZXN1bHQgb2Ygbm90IHNlZWluZyB3aGF0IGEgdXNlciBvZiB0aGUgZnVu Y3Rpb24gd291bGQgbG9vawpsaWtlLgoKPiArbG9uZyBkb19oeXBmc19vcCh1bnNpZ25lZCBpbnQg Y21kLAo+ICsgICAgICAgICAgICAgICAgIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0odm9pZCkgYXJn MSwgdW5zaWduZWQgbG9uZyBhcmcyLAo+ICsgICAgICAgICAgICAgICAgIFhFTl9HVUVTVF9IQU5E TEVfUEFSQU0odm9pZCkgYXJnMywgdW5zaWduZWQgbG9uZyBhcmc0KQo+ICt7Cj4gKyAgICBpbnQg cmV0Owo+ICsgICAgc3RydWN0IGh5cGZzX2VudHJ5ICplbnRyeTsKPiArICAgIHN0YXRpYyBjaGFy IHBhdGhbWEVOX0hZUEZTX01BWF9QQVRITEVOXTsKPiArCj4gKyAgICBpZiAoICFpc19jb250cm9s X2RvbWFpbihjdXJyZW50LT5kb21haW4pICYmCj4gKyAgICAgICAgICFpc19oYXJkd2FyZV9kb21h aW4oY3VycmVudC0+ZG9tYWluKSApCj4gKyAgICAgICAgcmV0dXJuIC1FUEVSTTsKPiArCj4gKyAg ICBpZiAoIGNtZCA9PSBYRU5fSFlQRlNfT1BfZ2V0X3ZlcnNpb24gKQo+ICsgICAgICAgIHJldHVy biBYRU5fSFlQRlNfVkVSU0lPTjsKPiArCj4gKyAgICBpZiAoIGNtZCA9PSBYRU5fSFlQRlNfT1Bf d3JpdGVfY29udGVudHMgKQo+ICsgICAgICAgIHdyaXRlX2xvY2soJmh5cGZzX2xvY2spOwo+ICsg ICAgZWxzZQo+ICsgICAgICAgIHJlYWRfbG9jaygmaHlwZnNfbG9jayk7Cj4gKwo+ICsgICAgcmV0 ID0gaHlwZnNfZ2V0X3BhdGhfdXNlcihwYXRoLCBhcmcxLCBhcmcyKTsKPiArICAgIGlmICggcmV0 ICkKPiArICAgICAgICBnb3RvIG91dDsKPiArCj4gKyAgICBlbnRyeSA9IGh5cGZzX2dldF9lbnRy eShwYXRoKTsKPiArICAgIGlmICggIWVudHJ5ICkKPiArICAgIHsKPiArICAgICAgICByZXQgPSAt RU5PRU5UOwo+ICsgICAgICAgIGdvdG8gb3V0Owo+ICsgICAgfQo+ICsKPiArICAgIHN3aXRjaCAo IGNtZCApCj4gKyAgICB7Cj4gKyAgICBjYXNlIFhFTl9IWVBGU19PUF9yZWFkX2NvbnRlbnRzOgo+ ICsgICAgICAgIHJldCA9IGh5cGZzX3JlYWQoZW50cnksIGFyZzMsIGFyZzQpOwo+ICsgICAgICAg IGJyZWFrOwo+ICsKPiArICAgIGNhc2UgWEVOX0hZUEZTX09QX3dyaXRlX2NvbnRlbnRzOgo+ICsg ICAgICAgIHJldCA9IGh5cGZzX3dyaXRlKGVudHJ5LCBhcmczLCBhcmc0KTsKPiArICAgICAgICBi cmVhazsKPiArCj4gKyAgICBkZWZhdWx0Ogo+ICsgICAgICAgIHJldCA9IC1FTk9TWVM7CgpFSU5W QUwgb3IgRU9QTk9UU1VQUCBwbGVhc2UuIEVOT1NZUyBzaG91bGQgYmUgdXNlZCBvbmx5IGZvciBu b3QKaW1wbGVtZW50ZWQgdG9wIGxldmVsIGZ1bmN0aW9ucy4KCj4gLS0tIC9kZXYvbnVsbAo+ICsr KyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9oeXBmcy5oCj4gQEAgLTAsMCArMSwxMjQgQEAKPiArLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgo+ICsgKiBYZW4gSHlwZXJ2aXNvciBGaWxlc3lzdGVtCj4gKyAq Cj4gKyAqIENvcHlyaWdodCAoYykgMjAxOSwgU1VTRSBTb2Z0d2FyZSBTb2x1dGlvbnMgR2VybWFu eSBHbWJICj4gKyAqCj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2Yg Y2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKPiArICogb2YgdGhpcyBzb2Z0 d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiks IHRvCj4gKyAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1 ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCj4gKyAqIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1v ZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgo+ICsg KiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3 aG9tIHRoZSBTb2Z0d2FyZSBpcwo+ICsgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8g dGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ICsgKgo+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0 IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgo+ ICsgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4K PiArICoKPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FS UkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJV VCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gKyAq IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElO IE5PIEVWRU5UIFNIQUxMIFRIRQo+ICsgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJF IExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElUWSwg V0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklT SU5HCj4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJF IE9SIFRIRSBVU0UgT1IgT1RIRVIKPiArICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgo+ICsg Kgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgX19YRU5fUFVCTElDX0hZUEZTX0hfXwo+ICsjZGVmaW5l IF9fWEVOX1BVQkxJQ19IWVBGU19IX18KPiArCj4gKyNpbmNsdWRlICJ4ZW4uaCIKPiArCj4gKy8q Cj4gKyAqIERlZmluaXRpb25zIGZvciB0aGUgX19IWVBFUlZJU09SX2h5cGZzX29wIGh5cGVyY2Fs bC4KPiArICovCj4gKwo+ICsvKiBIaWdoZXN0IHZlcnNpb24gbnVtYmVyIG9mIHRoZSBoeXBmcyBp bnRlcmZhY2UgY3VycmVudGx5IGRlZmluZWQuICovCj4gKyNkZWZpbmUgWEVOX0hZUEZTX1ZFUlNJ T04gICAgICAxCgpGb3IgdGhpcyBhbmQgdGhlIGFjY29tcGFueWluZyBYRU5fSFlQRlNfT1BfZ2V0 X3ZlcnNpb24sIGF0IGxlYXN0CnRoZSBkb2MgYWRkZWQgYnkgcGF0Y2ggMyBjb3VsZCBhY3R1YWxs eSBkbyB3aXRoIG1lbnRpb25pbmcgdGhlCmludGVudGlvbnMgeW91IGhhdmUgd2l0aCB0aGlzLgoK PiArLyogTWF4aW11bSBsZW5ndGggb2YgYSBwYXRoIGluIHRoZSBmaWxlc3lzdGVtLiAqLwo+ICsj ZGVmaW5lIFhFTl9IWVBGU19NQVhfUEFUSExFTiAxMDI0Cj4gKwo+ICtzdHJ1Y3QgeGVuX2h5cGZz X2RpcmVudHJ5IHsKPiArICAgIHVpbnQxNl90IGZsYWdzOwo+ICsjZGVmaW5lIFhFTl9IWVBGU19X UklURUFCTEUgICAgMHgwMDAxCj4gKyAgICB1aW50OF90IHR5cGU7Cj4gKyNkZWZpbmUgWEVOX0hZ UEZTX1RZUEVfRElSICAgICAweDAwMDAKPiArI2RlZmluZSBYRU5fSFlQRlNfVFlQRV9CTE9CICAg IDB4MDAwMQo+ICsjZGVmaW5lIFhFTl9IWVBGU19UWVBFX1NUUklORyAgMHgwMDAyCj4gKyNkZWZp bmUgWEVOX0hZUEZTX1RZUEVfVUlOVCAgICAweDAwMDMKPiArI2RlZmluZSBYRU5fSFlQRlNfVFlQ RV9JTlQgICAgIDB4MDAwNAo+ICsjZGVmaW5lIFhFTl9IWVBGU19UWVBFX0JPT0wgICAgMHgwMDA1 Cj4gKyAgICB1aW50OF90IGVuY29kaW5nOwo+ICsjZGVmaW5lIFhFTl9IWVBGU19FTkNfUExBSU4g ICAgMHgwMDAwCj4gKyNkZWZpbmUgWEVOX0hZUEZTX0VOQ19HWklQICAgICAweDAwMDEKCk1lYW5p bmcgSSBjYW4gZS5nLiBoYXZlIGEgZ3ppcC1lZCBzdHJpbmcgb3IgYm9vbCAob3IgZXZlbiBkaXIp PwpJZiB0aGlzIGlzIGp1c3QgZm9yICJibG9iIiwgd2h5IGhhdmUgc2VwYXJhdGUgZmllbGRzIGlu c3RlYWQgb2YKZS5nLiBCTE9CX1JBVyBhbmQgQkxPQl9HWklQIG9yIHNvbWUgc3VjaD8KCkFsc28g LSB3aHkgNCBkaWdpdHMgaW4gdGhlIGNvbnN0YW50cyB3aGVuIHRoZSBmaWVsZHMgYXJlIHVpbnQ4 X3Q/ClNpbmNlIHRoZXNlIGFyZSBlbnVtLWxpa2UsIEkgZXZlbiB3b25kZXIgaWYgaGV4IGlzIHdh cnJhbnRlZApoZXJlLgoKPiArICAgIHVpbnQzMl90IGNvbnRlbnRfbGVuOwo+ICt9Owo+ICsKPiAr c3RydWN0IHhlbl9oeXBmc19kaXJsaXN0ZW50cnkgewo+ICsgICAgc3RydWN0IHhlbl9oeXBmc19k aXJlbnRyeSBlOwo+ICsgICAgLyogT2Zmc2V0IGluIGJ5dGVzIHRvIG5leHQgZW50cnkgKDAgPT0g dGhpcyBpcyB0aGUgbGFzdCBlbnRyeSkuICovCj4gKyAgICB1aW50MTZfdCBvZmZfbmV4dDsKPiAr ICAgIGNoYXIgbmFtZVtYRU5fRkxFWF9BUlJBWV9ESU1dOwo+ICt9OwoKVGhlIGludGVyYWN0aW9u IG9mIHRoZSBsYXN0IHR3byBmaWVsZHMgbWF5IHdhbnQgc3BlbGxpbmcgb3V0OgpJIF9hc3N1bWVf IG5hbWVbXSBpcyBudWwtdGVybWluYXRlZCwgYW5kIG9mZl9uZXh0IGV4aXN0cyB0bwpwb3RlbnRp YWxseSBza2lwIHRyYWlsaW5nIHBhZGRpbmc/Cgo+ICsvKgo+ICsgKiBIeXBlcmNhbGwgb3BlcmF0 aW9ucy4KPiArICovCj4gKwo+ICsvKgo+ICsgKiBYRU5fSFlQRlNfT1BfZ2V0X3ZlcnNpb24KPiAr ICoKPiArICogUmVhZCBoaWdoZXN0IGludGVyZmFjZSB2ZXJzaW9uIHN1cHBvcnRlZCBieSB0aGUg aHlwZXJ2aXNvci4KPiArICoKPiArICogUG9zc2libGUgcmV0dXJuIHZhbHVlczoKPiArICogPjA6 IGhpZ2hlc3Qgc3VwcG9ydGVkIGludGVyZmFjZSB2ZXJzaW9uCj4gKyAqIDwwOiBuZWdhdGl2ZSBY ZW4gZXJybm8gdmFsdWUKPiArICovCj4gKyNkZWZpbmUgWEVOX0hZUEZTX09QX2dldF92ZXJzaW9u ICAgICAwCj4gKwo+ICsvKgo+ICsgKiBYRU5fSFlQRlNfT1BfcmVhZF9jb250ZW50cwo+ICsgKgo+ ICsgKiBSZWFkIGNvbnRlbnRzIG9mIGEgZmlsZXN5c3RlbSBlbnRyeS4KPiArICoKPiArICogUmV0 dXJucyB0aGUgZGlyZW50cnkgYW5kIGNvbnRlbnRzIG9mIGFuIGVudHJ5IGluIHRoZSBidWZmZXIg c3VwcGxpZWQgYnkgdGhlCj4gKyAqIGNhbGxlciAoc3RydWN0IHhlbl9oeXBmc19kaXJlbnRyeSB3 aXRoIHRoZSBjb250ZW50cyBmb2xsb3dpbmcgZGlyZWN0bHkKPiArICogYWZ0ZXIgaXQpLgo+ICsg KiBUaGUgZGF0YSBidWZmZXIgbXVzdCBiZSBhdCBsZWFzdCB0aGUgc2l6ZSBvZiB0aGUgZGlyZW50 cnkgcmV0dXJuZWQgaW4gb3JkZXIKPiArICogdG8gaGF2ZSBzdWNjZXNzLiBJZiB0aGUgZGF0YSBi dWZmZXIgd2FzIG5vdCBsYXJnZSBlbm91Z2ggZm9yIGFsbCB0aGUgZGF0YQo+ICsgKiBubyBlbnRy eSBkYXRhIGlzIHJldHVybmVkLCBidXQgdGhlIGRpcmVudHJ5IHdpbGwgY29udGFpbiB0aGUgbmVl ZGVkIHNpemUKPiArICogZm9yIHRoZSByZXR1cm5lZCBkYXRhLgo+ICsgKiBUaGUgZm9ybWF0IG9m IHRoZSBjb250ZW50cyBpcyBhY2NvcmRpbmcgdG8gaXRzIGVudHJ5IHR5cGUgYW5kIGVuY29kaW5n LgoKV2hhdCBzcGVjaWZpY2FsbHkgdGhpcyBtZWFucyBmb3IgYSBkaXIgd291bGQgYmUgbmljZSB0 byBiZSBzcGVsbGVkCm91dC4KCj4gKyAqIGFyZzE6IFhFTl9HVUVTVF9IQU5ETEUocGF0aCBuYW1l KQo+ICsgKiBhcmcyOiBsZW5ndGggb2YgcGF0aCBuYW1lIChpbmNsdWRpbmcgdHJhaWxpbmcgemVy byBieXRlKQo+ICsgKiBhcmczOiBYRU5fR1VFU1RfSEFORExFKGRhdGEgYnVmZmVyIHdyaXR0ZW4g YnkgaHlwZXJ2aXNvcikKPiArICogYXJnNDogZGF0YSBidWZmZXIgc2l6ZQo+ICsgKgo+ICsgKiBQ b3NzaWJsZSByZXR1cm4gdmFsdWVzOgo+ICsgKiAwOiBzdWNjZXNzIChhdCBsZWFzdCB0aGUgZGly ZW50cnkgd2FzIHJldHVybmVkKQo+ICsgKiA8MCA6IG5lZ2F0aXZlIFhlbiBlcnJubyB2YWx1ZQo+ ICsgKi8KPiArI2RlZmluZSBYRU5fSFlQRlNfT1BfcmVhZF9jb250ZW50cyAgICAgMQo+ICsKPiAr LyoKPiArICogWEVOX0hZUEZTX09QX3dyaXRlX2NvbnRlbnRzCj4gKyAqCj4gKyAqIFdyaXRlIGNv bnRlbnRzIG9mIGEgZmlsZXN5c3RlbSBlbnRyeS4KPiArICoKPiArICogV3JpdGVzIGFuIGVudHJ5 IHdpdGggdGhlIGNvbnRlbnRzIG9mIGEgYnVmZmVyIHN1cHBsaWVkIGJ5IHRoZSBjYWxsZXIuCj4g KyAqIFRoZSBkYXRhIHR5cGUgYW5kIGVuY29kaW5nIGNhbid0IGJlIGNoYW5nZWQuIFRoZSBzaXpl IGNhbiBiZSBjaGFuZ2VkIG9ubHkKPiArICogZm9yIGJsb2JzIGFuZCBzdHJpbmdzLgo+ICsgKgo+ ICsgKiBhcmcxOiBYRU5fR1VFU1RfSEFORExFKHBhdGggbmFtZSkKPiArICogYXJnMjogbGVuZ3Ro IG9mIHBhdGggbmFtZSAoaW5jbHVkaW5nIHRyYWlsaW5nIHplcm8gYnl0ZSkKPiArICogYXJnMzog WEVOX0dVRVNUX0hBTkRMRShjb250ZW50IGJ1ZmZlciByZWFkIGJ5IGh5cGVydmlzb3IpCj4gKyAq IGFyZzQ6IGNvbnRlbnQgYnVmZmVyIHNpemUKPiArICoKPiArICogUG9zc2libGUgcmV0dXJuIHZh bHVlczoKPiArICogMDogc3VjY2Vzcwo+ICsgKiA8MCA6IG5lZ2F0aXZlIFhlbiBlcnJubyB2YWx1 ZQo+ICsgKi8KPiArI2RlZmluZSBYRU5fSFlQRlNfT1Bfd3JpdGVfY29udGVudHMgICAgMgoKVGhp cyBvbmUgaW5kZWVkIGFjY2Vzc2VzIG9ubHkgdGhlIGFjdHVhbCBkYXRhIChjb250ZW50cykgb2Yg dGhlCnJlZmVyZW5jZWQgZW50cnkuIFhFTl9IWVBGU19PUF9yZWFkX2NvbnRlbnRzIGhhbmRzIGJh Y2sgYWxzbwp0aGUgZGlyIGVudHJ5LiBTaG91bGQgdGhlIGxhdHRlciB0aGVuIGJldHRlciBiZSBu YW1lZCBqdXN0ClhFTl9IWVBGU19PUF9yZWFkPwoKPiAtLS0gYS94ZW4vaW5jbHVkZS94ZW4vaHlw ZXJjYWxsLmgKPiArKysgYi94ZW4vaW5jbHVkZS94ZW4vaHlwZXJjYWxsLmgKPiBAQCAtMTUwLDYg KzE1MCwxNCBAQCBkb19kbV9vcCgKPiAgICAgIHVuc2lnbmVkIGludCBucl9idWZzLAo+ICAgICAg WEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fZG1fb3BfYnVmX3QpIGJ1ZnMpOwo+ICAKPiArZXh0 ZXJuIGxvbmcKPiArZG9faHlwZnNfb3AoCj4gKyAgICB1bnNpZ25lZCBpbnQgY21kLAo+ICsgICAg WEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcxLAoKRG8geW91IGFudGljaXBhdGUgdGhp cyBwYXJhbWV0ZXIgdG8gYmUgdXNlZCBmb3Igb3RoZXIgdGhhbiBwYXRoCm5hbWVzPyBJZiBub3Qs IHBlcmhhcHMgYmV0dGVyIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oY29uc3RfY2hhcik/Cgo+IC0t LSAvZGV2L251bGwKPiArKysgYi94ZW4vaW5jbHVkZS94ZW4vaHlwZnMuaAo+IEBAIC0wLDAgKzEs ODkgQEAKPiArI2lmbmRlZiBfX1hFTl9IWVBGU19IX18KPiArI2RlZmluZSBfX1hFTl9IWVBGU19I X18KPiArCj4gKyNpbmNsdWRlIDx4ZW4vbGlzdC5oPgo+ICsjaW5jbHVkZSA8eGVuL3N0cmluZy5o Pgo+ICsjaW5jbHVkZSA8cHVibGljL2h5cGZzLmg+Cj4gKwo+ICtzdHJ1Y3QgaHlwZnNfZW50cnlf bGVhZjsKPiArCj4gK3N0cnVjdCBoeXBmc19lbnRyeSB7Cj4gKyAgICB1bnNpZ25lZCBzaG9ydCB0 eXBlOwo+ICsgICAgdW5zaWduZWQgc2hvcnQgZW5jb2Rpbmc7Cj4gKyAgICB1bnNpZ25lZCBpbnQg c2l6ZTsKPiArICAgIGNvbnN0IGNoYXIgKm5hbWU7Cj4gKyAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxp c3Q7Cj4gKyAgICBpbnQgKCpyZWFkKShjb25zdCBzdHJ1Y3QgaHlwZnNfZW50cnkgKmVudHJ5LAo+ ICsgICAgICAgICAgICAgICAgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSB1YWRkcik7Cj4g KyAgICBpbnQgKCp3cml0ZSkoc3RydWN0IGh5cGZzX2VudHJ5X2xlYWYgKmxlYWYsCj4gKyAgICAg ICAgICAgICAgICAgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSB1YWRkciwgdW5zaWduZWQg bG9uZyB1bGVuKTsKPiArfTsKPiArCj4gK3N0cnVjdCBoeXBmc19lbnRyeV9sZWFmIHsKPiArICAg IHN0cnVjdCBoeXBmc19lbnRyeSBlOwo+ICsgICAgdW5pb24gewo+ICsgICAgICAgIGNvbnN0IHZv aWQgKmNvbnRlbnQ7Cj4gKyAgICAgICAgdm9pZCAqd3JpdGVfcHRyOwo+ICsgICAgfTsKPiArfTsK PiArCj4gK3N0cnVjdCBoeXBmc19lbnRyeV9kaXIgewo+ICsgICAgc3RydWN0IGh5cGZzX2VudHJ5 IGU7Cj4gKyAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRpcmxpc3Q7Cj4gK307Cj4gKwo+ICsjZGVmaW5l IEhZUEZTX0RJUl9JTklUKHZhciwgbmFtKSAgICAgICAgICAgICAgICBcCj4gKyAgICBzdHJ1Y3Qg aHlwZnNfZW50cnlfZGlyIHZhciA9IHsgICAgICAgICAgICAgIFwKPiArICAgICAgICAuZS50eXBl ID0gWEVOX0hZUEZTX1RZUEVfRElSLCAgICAgICAgICAgXAo+ICsgICAgICAgIC5lLmVuY29kaW5n ID0gWEVOX0hZUEZTX0VOQ19QTEFJTiwgICAgICBcCj4gKyAgICAgICAgLmUubmFtZSA9IG5hbSwg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAuZS5zaXplID0gMCwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIC5lLmxpc3QgPSBMSVNUX0hFQURfSU5J VCh2YXIuZS5saXN0KSwgICBcCj4gKyAgICAgICAgLmUucmVhZCA9IGh5cGZzX3JlYWRfZGlyLCAg ICAgICAgICAgICAgIFwKPiArICAgICAgICAuZGlybGlzdCA9IExJU1RfSEVBRF9JTklUKHZhci5k aXJsaXN0KSwgXAo+ICsgICAgfQo+ICsKPiArLyogQ29udGVudCBhbmQgc2l6ZSBuZWVkIHRvIGJl IHNldCB2aWEgaHlwZnNfc3RyaW5nX3NldCgpLiAqLwo+ICsjZGVmaW5lIEhZUEZTX1NUUklOR19J TklUKHZhciwgbmFtKSAgICAgICAgICAgICBcCj4gKyAgICBzdHJ1Y3QgaHlwZnNfZW50cnlfbGVh ZiB2YXIgPSB7ICAgICAgICAgICAgIFwKPiArICAgICAgICAuZS50eXBlID0gWEVOX0hZUEZTX1RZ UEVfU1RSSU5HLCAgICAgICAgXAo+ICsgICAgICAgIC5lLmVuY29kaW5nID0gWEVOX0hZUEZTX0VO Q19QTEFJTiwgICAgICBcCj4gKyAgICAgICAgLmUubmFtZSA9IG5hbSwgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKPiArICAgICAgICAuZS5yZWFkID0gaHlwZnNfcmVhZF9sZWFmLCAgICAgICAg ICAgICAgXAo+ICsgICAgfQo+ICsKPiArc3RhdGljIGlubGluZSB2b2lkIGh5cGZzX3N0cmluZ19z ZXQoc3RydWN0IGh5cGZzX2VudHJ5X2xlYWYgKmxlYWYsCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnN0cikKPiArewo+ICsgICAgbGVhZi0+Y29udGVu dCA9IHN0cjsKPiArICAgIGxlYWYtPmUuc2l6ZSA9IHN0cmxlbihzdHIpICsgMTsKPiArfQo+ICsK PiArI2RlZmluZSBIWVBGU19VSU5UX0lOSVQodmFyLCBuYW0sIHVpbnQpICAgICAgICAgXAo+ICsg ICAgc3RydWN0IGh5cGZzX2VudHJ5X2xlYWYgdmFyID0geyAgICAgICAgICAgICBcCj4gKyAgICAg ICAgLmUudHlwZSA9IFhFTl9IWVBGU19UWVBFX1VJTlQsICAgICAgICAgIFwKPiArICAgICAgICAu ZS5lbmNvZGluZyA9IFhFTl9IWVBGU19FTkNfUExBSU4sICAgICAgXAo+ICsgICAgICAgIC5lLm5h bWUgPSBuYW0sICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgLmUuc2l6ZSA9 IHNpemVvZih1aW50KSwgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAuZS5yZWFkID0gaHlw ZnNfcmVhZF9sZWFmLCAgICAgICAgICAgICAgXAo+ICsgICAgICAgIC5jb250ZW50ID0gJnVpbnQs ICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICB9CgpTbyB5b3UndmUgZ290IHN1Y2ggaGVs cGVyIG1hY3JvcyBmb3IgZGlyLCBzdHJpbmcsIGFuZCB1aW50LiBXaHkKbm90IGUuZy4gaW50IGFu ZCBib29sPwoKPiArCj4gKwo+ICtleHRlcm4gc3RydWN0IGh5cGZzX2VudHJ5X2RpciBoeXBmc19y b290OwoKTm8gZG91YmxlIGJsYW5rIGxpbmVzIHBsZWFzZS4KCj4gK3N0cnVjdCBoeXBmc19lbnRy eSAqaHlwZnNfZ2V0X2VudHJ5KGNvbnN0IGNoYXIgKnBhdGgpOwoKRG9lcyB0aGUgb25seSBjYWxs ZXIgcmVhbGx5IG5lZWQgYSBub24tY29uc3QgcmV0dXJuIHR5cGU/IEV2ZW4KaHlwZnNfd3JpdGUo KSBkb2Vzbid0IGxvb2sgdG8gbW9kaWZ5IHdoYXQgaXRzIGxlYWYgcGFyYW1ldGVyCnBvaW50cyBh dC4KCkFuZCBpcyB0aGVyZSBpbmRlZWQgYW4gZXhwZWN0YXRpb24gZm9yIHRoaXMgdG8gYmUgdXNl ZCBmcm9tCm91dHNpZGUgb2YgdGhlIHNvdXJjZSBmaWxlIGl0J3MgZGVmaW5lZCBpbj8KCkphbgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0 cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==