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=-9.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham 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 3310EC55178 for ; Tue, 27 Oct 2020 17:44:01 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (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 70EB82054F for ; Tue, 27 Oct 2020 17:44:00 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="PyUemjaR" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 70EB82054F Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:33704 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kXT0p-0006TY-EA for qemu-devel@archiver.kernel.org; Tue, 27 Oct 2020 13:43:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41858) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kXSts-0006JI-4l for qemu-devel@nongnu.org; Tue, 27 Oct 2020 13:36:50 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:55112) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kXSti-0003MA-VV for qemu-devel@nongnu.org; Tue, 27 Oct 2020 13:36:46 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1603820198; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=MH5BAZOXxIoWk9A9gzU/KnPWCPiQ9N2MJWw9/T4fGII=; b=PyUemjaRb35tJ60KWT3UfAN0j3qifESC/4RAoTDasKEPPPDUSJq0kDEQqKh8/xt/b+yhS0 aKdXvSYs4w0OWUphTamybVfIXEti2JNCQGjNekCAbIIllirG5B6hXYrVtfJfxrqJhz3vnH GP6y2pJmza7SwT6aA0avNaZiERZg0Fg= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-351-FEBnhGmbPuacyRb3WpEpjg-1; Tue, 27 Oct 2020 13:36:34 -0400 X-MC-Unique: FEBnhGmbPuacyRb3WpEpjg-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 77C9A106B308; Tue, 27 Oct 2020 17:36:33 +0000 (UTC) Received: from localhost (ovpn-115-166.ams2.redhat.com [10.36.115.166]) by smtp.corp.redhat.com (Postfix) with ESMTP id 9AFB873660; Tue, 27 Oct 2020 17:36:20 +0000 (UTC) From: Stefan Hajnoczi To: qemu-devel@nongnu.org Subject: [PATCH 06/12] test: new qTest case to test the vhost-user-blk-server Date: Tue, 27 Oct 2020 17:35:22 +0000 Message-Id: <20201027173528.213464-7-stefanha@redhat.com> In-Reply-To: <20201027173528.213464-1-stefanha@redhat.com> References: <20201027173528.213464-1-stefanha@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=stefanha@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 Received-SPF: pass client-ip=216.205.24.124; envelope-from=stefanha@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/27 01:06:06 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Laurent Vivier , Kevin Wolf , Thomas Huth , qemu-block@nongnu.org, "Michael S. Tsirkin" , Coiby Xu , Raphael Norwitz , Stefan Hajnoczi , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Paolo Bonzini , Max Reitz Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" RnJvbTogQ29pYnkgWHUgPGNvaWJ5Lnh1QGdtYWlsLmNvbT4KClRoaXMgdGVzdCBjYXNlIGhhcyB0 aGUgc2FtZSB0ZXN0cyBhcyB0ZXN0cy92aXJ0aW8tYmxrLXRlc3QuYyBleGNlcHQgZm9yCnRlc3Rz IGhhdmUgYmxvY2tfcmVzaXplLiBTaW5jZSB2aG9zdC11c2VyIHNlcnZlciBjYW4gb25seSBzZXJ2 ZXIgb25lCmNsaWVudCBvbmUgdGltZSwgdHdvIGluc3RhbmNlcyBvZiB2aG9zdC11c2VyLWJsay1z ZXJ2ZXIgYXJlIHN0YXJ0ZWQgYnkKcWVtdS1zdG9yYWdlLWRhZW1vbiBmb3IgdGhlIGhvdHBsdWcg dGVzdC4KCkluIG9yZGVyIHRvIG5vdCBibG9jayBzY3JpcHRzL3RhcC1kcml2ZXIucGwsIHZob3N0 LXVzZXItYmxrLXNlcnZlciB3aWxsCnNlbmQgInF1aXQiIGNvbW1hbmQgdG8gcWVtdS1zdG9yYWdl LWRhZW1vbidzIFFNUCBtb25pdG9yLiBTbyBhIGZ1bmN0aW9uCmlzIGFkZGVkIHRvIGxpYnF0ZXN0 LmMgdG8gZXN0YWJsaXNoIHNvY2tldCBjb25uZWN0aW9uIHdpdGggc29ja2V0CnNlcnZlci4KClN1 Z2dlc3RlZC1ieTogVGhvbWFzIEh1dGggPHRodXRoQHJlZGhhdC5jb20+ClNpZ25lZC1vZmYtYnk6 IENvaWJ5IFh1IDxjb2lieS54dUBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBTdGVmYW4gSGFqbm9j emkgPHN0ZWZhbmhhQHJlZGhhdC5jb20+ClJldmlld2VkLWJ5OiBNYXJjLUFuZHLDqSBMdXJlYXUg PG1hcmNhbmRyZS5sdXJlYXVAcmVkaGF0LmNvbT4KTWVzc2FnZS1pZDogMjAyMDA5MTgwODA5MTIu MzIxMjk5LTctY29pYnkueHVAZ21haWwuY29tCltVcGRhdGUgbWVzb24uYnVpbGQgdG8gb25seSB0 ZXN0IHdoZW4gQ09ORklHX1RPT0xTIGhhcyBidWlsdApxZW11LXN0b3JhZ2UtZGFlbW9uLiBUaGlz IHByZXZlbnRzIENJIGZhaWx1cmVzIHdpdGggLS1kaXNhYmxlLXRvb2xzLgpBbHNvIGJ1bXAgUkFN IHRvIDI1NiBNQiBiZWNhdXNlIHRoYXQgaXMgdGhlIG1pbmltdW0gUkFNIGdyYW51bGFyaXR5IG9u CnBwYzY0IHNwYXByIG1hY2hpbmVzLgotLVN0ZWZhbl0KU2lnbmVkLW9mZi1ieTogU3RlZmFuIEhh am5vY3ppIDxzdGVmYW5oYUByZWRoYXQuY29tPgotLS0KIHRlc3RzL3F0ZXN0L2xpYnFvcy9saWJx dGVzdC5oICAgICAgIHwgIDE3ICsKIHRlc3RzL3F0ZXN0L2xpYnFvcy92aG9zdC11c2VyLWJsay5o IHwgIDQ4ICsrCiB0ZXN0cy9xdGVzdC9saWJxb3Mvdmhvc3QtdXNlci1ibGsuYyB8IDEyOSArKysr KwogdGVzdHMvcXRlc3QvbGlicXRlc3QuYyAgICAgICAgICAgICAgfCAgMzYgKy0KIHRlc3RzL3F0 ZXN0L3Zob3N0LXVzZXItYmxrLXRlc3QuYyAgIHwgNzUxICsrKysrKysrKysrKysrKysrKysrKysr KysrKysKIHRlc3RzL3F0ZXN0L2xpYnFvcy9tZXNvbi5idWlsZCAgICAgIHwgICAxICsKIHRlc3Rz L3F0ZXN0L21lc29uLmJ1aWxkICAgICAgICAgICAgIHwgICAyICsKIDcgZmlsZXMgY2hhbmdlZCwg OTgyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVz dHMvcXRlc3QvbGlicW9zL3Zob3N0LXVzZXItYmxrLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0 cy9xdGVzdC9saWJxb3Mvdmhvc3QtdXNlci1ibGsuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3Rz L3F0ZXN0L3Zob3N0LXVzZXItYmxrLXRlc3QuYwoKZGlmZiAtLWdpdCBhL3Rlc3RzL3F0ZXN0L2xp YnFvcy9saWJxdGVzdC5oIGIvdGVzdHMvcXRlc3QvbGlicW9zL2xpYnF0ZXN0LmgKaW5kZXggNWM5 NTlmMTg1My4uMjQxYjVmODlmYiAxMDA2NDQKLS0tIGEvdGVzdHMvcXRlc3QvbGlicW9zL2xpYnF0 ZXN0LmgKKysrIGIvdGVzdHMvcXRlc3QvbGlicW9zL2xpYnF0ZXN0LmgKQEAgLTEzMiw2ICsxMzIs MjMgQEAgdm9pZCBxdGVzdF9xbXBfc2VuZChRVGVzdFN0YXRlICpzLCBjb25zdCBjaGFyICpmbXQs IC4uLikKIHZvaWQgcXRlc3RfcW1wX3NlbmRfcmF3KFFUZXN0U3RhdGUgKnMsIGNvbnN0IGNoYXIg KmZtdCwgLi4uKQogICAgIEdDQ19GTVRfQVRUUigyLCAzKTsKIAorLyoqCisgKiBxdGVzdF9zb2Nr ZXRfY2xpZW50OgorICogQHNlcnZlcl9zb2NrZXRfcGF0aDogdGhlIHNvY2tldCBzZXJ2ZXIncyBw YXRoCisgKgorICogQ29ubmVjdCB0byBhIHNvY2tldCBzZXJ2ZXIuCisgKi8KK2ludCBxdGVzdF9z b2NrZXRfY2xpZW50KGNoYXIgKnNlcnZlcl9zb2NrZXRfcGF0aCk7CisKKy8qKgorICogcXRlc3Rf Y3JlYXRlX3N0YXRlX3dpdGhfcW1wX2ZkOgorICogQGZkOiBzb2NrZXQgZmQKKyAqCisgKiBXcmFw IHNvY2tldCBmZCBpbiBRVGVzdFN0YXRlIHRvIG1ha2UgdXNlIG9mIHF0ZXN0X3FtcCoKKyAqIGZ1 bmN0aW9ucworICovCitRVGVzdFN0YXRlICpxdGVzdF9jcmVhdGVfc3RhdGVfd2l0aF9xbXBfZmQo aW50IGZkKTsKKwogLyoqCiAgKiBxdGVzdF92cW1wX2ZkczoKICAqIEBzOiAjUVRlc3RTdGF0ZSBp bnN0YW5jZSB0byBvcGVyYXRlIG9uLgpkaWZmIC0tZ2l0IGEvdGVzdHMvcXRlc3QvbGlicW9zL3Zo b3N0LXVzZXItYmxrLmggYi90ZXN0cy9xdGVzdC9saWJxb3Mvdmhvc3QtdXNlci1ibGsuaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4yYTAzNDU2YTQ1Ci0tLSAvZGV2L251 bGwKKysrIGIvdGVzdHMvcXRlc3QvbGlicW9zL3Zob3N0LXVzZXItYmxrLmgKQEAgLTAsMCArMSw0 OCBAQAorLyoKKyAqIGxpYnFvcyBkcml2ZXIgZnJhbWV3b3JrCisgKgorICogQmFzZWQgb24gdGVz dHMvcXRlc3QvbGlicW9zL3ZpcnRpby1ibGsuYworICoKKyAqIENvcHlyaWdodCAoYykgMjAyMCBD b2lieSBYdSA8Y29pYnkueHVAZ21haWwuY29tPgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxOCBF bWFudWVsZSBHaXVzZXBwZSBFc3Bvc2l0byA8ZS5lbWFudWVsZWdpdXNlcHBlQGdtYWlsLmNvbT4K KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz c2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIHZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg TGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5 OyBpZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4KKyAqLworCisjaWZu ZGVmIFRFU1RTX0xJQlFPU19WSE9TVF9VU0VSX0JMS19ICisjZGVmaW5lIFRFU1RTX0xJQlFPU19W SE9TVF9VU0VSX0JMS19ICisKKyNpbmNsdWRlICJxZ3JhcGguaCIKKyNpbmNsdWRlICJ2aXJ0aW8u aCIKKyNpbmNsdWRlICJ2aXJ0aW8tcGNpLmgiCisKK3R5cGVkZWYgc3RydWN0IFFWaG9zdFVzZXJC bGsgUVZob3N0VXNlckJsazsKK3R5cGVkZWYgc3RydWN0IFFWaG9zdFVzZXJCbGtQQ0kgUVZob3N0 VXNlckJsa1BDSTsKK3R5cGVkZWYgc3RydWN0IFFWaG9zdFVzZXJCbGtEZXZpY2UgUVZob3N0VXNl ckJsa0RldmljZTsKKworc3RydWN0IFFWaG9zdFVzZXJCbGsgeworICAgIFFWaXJ0aW9EZXZpY2Ug KnZkZXY7Cit9OworCitzdHJ1Y3QgUVZob3N0VXNlckJsa1BDSSB7CisgICAgUVZpcnRpb1BDSURl dmljZSBwY2lfdmRldjsKKyAgICBRVmhvc3RVc2VyQmxrIGJsazsKK307CisKK3N0cnVjdCBRVmhv c3RVc2VyQmxrRGV2aWNlIHsKKyAgICBRT1NHcmFwaE9iamVjdCBvYmo7CisgICAgUVZob3N0VXNl ckJsayBibGs7Cit9OworCisjZW5kaWYKZGlmZiAtLWdpdCBhL3Rlc3RzL3F0ZXN0L2xpYnFvcy92 aG9zdC11c2VyLWJsay5jIGIvdGVzdHMvcXRlc3QvbGlicW9zL3Zob3N0LXVzZXItYmxrLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNThjN2UxZWI2OQotLS0gL2Rldi9u dWxsCisrKyBiL3Rlc3RzL3F0ZXN0L2xpYnFvcy92aG9zdC11c2VyLWJsay5jCkBAIC0wLDAgKzEs MTI5IEBACisvKgorICogbGlicW9zIGRyaXZlciBmcmFtZXdvcmsKKyAqCisgKiBCYXNlZCBvbiB0 ZXN0cy9xdGVzdC9saWJxb3MvdmlydGlvLWJsay5jCisgKgorICogQ29weXJpZ2h0IChjKSAyMDIw IENvaWJ5IFh1IDxjb2lieS54dUBnbWFpbC5jb20+CisgKgorICogQ29weXJpZ2h0IChjKSAyMDE4 IEVtYW51ZWxlIEdpdXNlcHBlIEVzcG9zaXRvIDxlLmVtYW51ZWxlZ2l1c2VwcGVAZ21haWwuY29t PgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgdmVyc2lvbiAyLjEgYXMgcHVibGlzaGVk IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGli cmFyeTsgaWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+CisgKi8KKwor I2luY2x1ZGUgInFlbXUvb3NkZXAuaCIKKyNpbmNsdWRlICJsaWJxdGVzdC5oIgorI2luY2x1ZGUg InFlbXUvbW9kdWxlLmgiCisjaW5jbHVkZSAic3RhbmRhcmQtaGVhZGVycy9saW51eC92aXJ0aW9f YmxrLmgiCisjaW5jbHVkZSAidmhvc3QtdXNlci1ibGsuaCIKKworI2RlZmluZSBQQ0lfU0xPVCAg ICAgICAgICAgICAgICAweDA0CisjZGVmaW5lIFBDSV9GTiAgICAgICAgICAgICAgICAgIDB4MDAK KworLyogdmlydGlvLWJsay1kZXZpY2UgKi8KK3N0YXRpYyB2b2lkICpxdmhvc3RfdXNlcl9ibGtf Z2V0X2RyaXZlcihRVmhvc3RVc2VyQmxrICp2X2JsaywKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmludGVyZmFjZSkKK3sKKyAgICBpZiAoIWdfc3RyY21w MChpbnRlcmZhY2UsICJ2aG9zdC11c2VyLWJsayIpKSB7CisgICAgICAgIHJldHVybiB2X2JsazsK KyAgICB9CisgICAgaWYgKCFnX3N0cmNtcDAoaW50ZXJmYWNlLCAidmlydGlvIikpIHsKKyAgICAg ICAgcmV0dXJuIHZfYmxrLT52ZGV2OworICAgIH0KKworICAgIGZwcmludGYoc3RkZXJyLCAiJXMg bm90IHByZXNlbnQgaW4gdmhvc3QtdXNlci1ibGstZGV2aWNlXG4iLCBpbnRlcmZhY2UpOworICAg IGdfYXNzZXJ0X25vdF9yZWFjaGVkKCk7Cit9CisKK3N0YXRpYyB2b2lkICpxdmhvc3RfdXNlcl9i bGtfZGV2aWNlX2dldF9kcml2ZXIodm9pZCAqb2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmludGVyZmFjZSkKK3sKKyAgICBRVmhv c3RVc2VyQmxrRGV2aWNlICp2X2JsayA9IG9iamVjdDsKKyAgICByZXR1cm4gcXZob3N0X3VzZXJf YmxrX2dldF9kcml2ZXIoJnZfYmxrLT5ibGssIGludGVyZmFjZSk7Cit9CisKK3N0YXRpYyB2b2lk ICp2aG9zdF91c2VyX2Jsa19kZXZpY2VfY3JlYXRlKHZvaWQgKnZpcnRpb19kZXYsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFHdWVzdEFsbG9jYXRvciAqdF9hbGxvYywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYWRkcikKK3sKKyAg ICBRVmhvc3RVc2VyQmxrRGV2aWNlICp2aG9zdF91c2VyX2JsayA9IGdfbmV3MChRVmhvc3RVc2Vy QmxrRGV2aWNlLCAxKTsKKyAgICBRVmhvc3RVc2VyQmxrICppbnRlcmZhY2UgPSAmdmhvc3RfdXNl cl9ibGstPmJsazsKKworICAgIGludGVyZmFjZS0+dmRldiA9IHZpcnRpb19kZXY7CisKKyAgICB2 aG9zdF91c2VyX2Jsay0+b2JqLmdldF9kcml2ZXIgPSBxdmhvc3RfdXNlcl9ibGtfZGV2aWNlX2dl dF9kcml2ZXI7CisKKyAgICByZXR1cm4gJnZob3N0X3VzZXJfYmxrLT5vYmo7Cit9CisKKy8qIHZp cnRpby1ibGstcGNpICovCitzdGF0aWMgdm9pZCAqcXZob3N0X3VzZXJfYmxrX3BjaV9nZXRfZHJp dmVyKHZvaWQgKm9iamVjdCwgY29uc3QgY2hhciAqaW50ZXJmYWNlKQoreworICAgIFFWaG9zdFVz ZXJCbGtQQ0kgKnZfYmxrID0gb2JqZWN0OworICAgIGlmICghZ19zdHJjbXAwKGludGVyZmFjZSwg InBjaS1kZXZpY2UiKSkgeworICAgICAgICByZXR1cm4gdl9ibGstPnBjaV92ZGV2LnBkZXY7Cisg ICAgfQorICAgIHJldHVybiBxdmhvc3RfdXNlcl9ibGtfZ2V0X2RyaXZlcigmdl9ibGstPmJsaywg aW50ZXJmYWNlKTsKK30KKworc3RhdGljIHZvaWQgKnZob3N0X3VzZXJfYmxrX3BjaV9jcmVhdGUo dm9pZCAqcGNpX2J1cywgUUd1ZXN0QWxsb2NhdG9yICp0X2FsbG9jLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphZGRyKQoreworICAgIFFWaG9zdFVzZXJCbGtQ Q0kgKnZob3N0X3VzZXJfYmxrID0gZ19uZXcwKFFWaG9zdFVzZXJCbGtQQ0ksIDEpOworICAgIFFW aG9zdFVzZXJCbGsgKmludGVyZmFjZSA9ICZ2aG9zdF91c2VyX2Jsay0+YmxrOworICAgIFFPU0dy YXBoT2JqZWN0ICpvYmogPSAmdmhvc3RfdXNlcl9ibGstPnBjaV92ZGV2Lm9iajsKKworICAgIHZp cnRpb19wY2lfaW5pdCgmdmhvc3RfdXNlcl9ibGstPnBjaV92ZGV2LCBwY2lfYnVzLCBhZGRyKTsK KyAgICBpbnRlcmZhY2UtPnZkZXYgPSAmdmhvc3RfdXNlcl9ibGstPnBjaV92ZGV2LnZkZXY7CisK KyAgICBnX2Fzc2VydF9jbXBoZXgoaW50ZXJmYWNlLT52ZGV2LT5kZXZpY2VfdHlwZSwgPT0sIFZJ UlRJT19JRF9CTE9DSyk7CisKKyAgICBvYmotPmdldF9kcml2ZXIgPSBxdmhvc3RfdXNlcl9ibGtf cGNpX2dldF9kcml2ZXI7CisKKyAgICByZXR1cm4gb2JqOworfQorCitzdGF0aWMgdm9pZCB2aG9z dF91c2VyX2Jsa19yZWdpc3Rlcl9ub2Rlcyh2b2lkKQoreworICAgIC8qCisgICAgICogRklYTUU6 IGV2ZXJ5IHRlc3QgdXNpbmcgdGhlc2UgdHdvIG5vZGVzIG5lZWRzIHRvIHNldHVwIGEKKyAgICAg KiAtZHJpdmUsaWQ9ZHJpdmUwIG90aGVyd2lzZSBRRU1VIGlzIG5vdCBnb2luZyB0byBzdGFydC4K KyAgICAgKiBUaGVyZWZvcmUsIHdlIGRvIG5vdCBpbmNsdWRlICJwcm9kdWNlcyIgZWRnZSBmb3Ig dmlydGlvCisgICAgICogYW5kIHBjaS1kZXZpY2UgeWV0LgorICAgICAqLworCisgICAgY2hhciAq YXJnID0gZ19zdHJkdXBfcHJpbnRmKCJpZD1kcnYwLGNoYXJkZXY9Y2hhcjEsYWRkcj0leC4leCIs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSV9TTE9ULCBQQ0lfRk4pOworCisg ICAgUVBDSUFkZHJlc3MgYWRkciA9IHsKKyAgICAgICAgLmRldmZuID0gUVBDSV9ERVZGTihQQ0lf U0xPVCwgUENJX0ZOKSwKKyAgICB9OworCisgICAgUU9TR3JhcGhFZGdlT3B0aW9ucyBvcHRzID0g eyB9OworCisgICAgLyogdmlydGlvLWJsay1kZXZpY2UgKi8KKyAgICAvKiogb3B0cy5leHRyYV9k ZXZpY2Vfb3B0cyA9ICJkcml2ZT1kcml2ZTAiOyAqLworICAgIHFvc19ub2RlX2NyZWF0ZV9kcml2 ZXIoInZob3N0LXVzZXItYmxrLWRldmljZSIsIHZob3N0X3VzZXJfYmxrX2RldmljZV9jcmVhdGUp OworICAgIHFvc19ub2RlX2NvbnN1bWVzKCJ2aG9zdC11c2VyLWJsay1kZXZpY2UiLCAidmlydGlv LWJ1cyIsICZvcHRzKTsKKyAgICBxb3Nfbm9kZV9wcm9kdWNlcygidmhvc3QtdXNlci1ibGstZGV2 aWNlIiwgInZob3N0LXVzZXItYmxrIik7CisKKyAgICAvKiB2aXJ0aW8tYmxrLXBjaSAqLworICAg IG9wdHMuZXh0cmFfZGV2aWNlX29wdHMgPSBhcmc7CisgICAgYWRkX3FwY2lfYWRkcmVzcygmb3B0 cywgJmFkZHIpOworICAgIHFvc19ub2RlX2NyZWF0ZV9kcml2ZXIoInZob3N0LXVzZXItYmxrLXBj aSIsIHZob3N0X3VzZXJfYmxrX3BjaV9jcmVhdGUpOworICAgIHFvc19ub2RlX2NvbnN1bWVzKCJ2 aG9zdC11c2VyLWJsay1wY2kiLCAicGNpLWJ1cyIsICZvcHRzKTsKKyAgICBxb3Nfbm9kZV9wcm9k dWNlcygidmhvc3QtdXNlci1ibGstcGNpIiwgInZob3N0LXVzZXItYmxrIik7CisKKyAgICBnX2Zy ZWUoYXJnKTsKK30KKworbGlicW9zX2luaXQodmhvc3RfdXNlcl9ibGtfcmVnaXN0ZXJfbm9kZXMp OwpkaWZmIC0tZ2l0IGEvdGVzdHMvcXRlc3QvbGlicXRlc3QuYyBiL3Rlc3RzL3F0ZXN0L2xpYnF0 ZXN0LmMKaW5kZXggOTlkZWZmNDdlZi4uYWIzNDA3NWYyYiAxMDA2NDQKLS0tIGEvdGVzdHMvcXRl c3QvbGlicXRlc3QuYworKysgYi90ZXN0cy9xdGVzdC9saWJxdGVzdC5jCkBAIC00LDExICs0LDEz IEBACiAgKiBDb3B5cmlnaHQgSUJNLCBDb3JwLiAyMDEyCiAgKiBDb3B5cmlnaHQgUmVkIEhhdCwg SW5jLiAyMDEyCiAgKiBDb3B5cmlnaHQgU1VTRSBMSU5VWCBQcm9kdWN0cyBHbWJIIDIwMTMKKyAq IENvcHlyaWdodCBDb3B5cmlnaHQgKGMpIENvaWJ5IFh1CiAgKgogICogQXV0aG9yczoKICAqICBB bnRob255IExpZ3VvcmkgICA8YWxpZ3VvcmlAdXMuaWJtLmNvbT4KICAqICBQYW9sbyBCb256aW5p ICAgICA8cGJvbnppbmlAcmVkaGF0LmNvbT4KICAqICBBbmRyZWFzIEbDpHJiZXIgICAgPGFmYWVy YmVyQHN1c2UuZGU+CisgKiAgQ29pYnkgWHUgICAgICAgICAgPGNvaWJ5Lnh1QGdtYWlsLmNvbT4K ICAqCiAgKiBUaGlzIHdvcmsgaXMgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R1BMLCB2ZXJzaW9uIDIgb3IgbGF0ZXIuCiAgKiBTZWUgdGhlIENPUFlJTkcgZmlsZSBpbiB0aGUg dG9wLWxldmVsIGRpcmVjdG9yeS4KQEAgLTUyLDggKzU0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUVRl c3RDbGllbnRUcmFuc3BvcnRPcHMgewogICAgIFFUZXN0UmVjdkZuICAgICByZWN2X2xpbmU7IC8q IGZvciByZWNlaXZpbmcgcXRlc3QgY29tbWFuZCByZXNwb25zZXMgKi8KIH0gUVRlc3RUcmFuc3Bv cnRPcHM7CiAKLXN0cnVjdCBRVGVzdFN0YXRlCi17CitzdHJ1Y3QgUVRlc3RTdGF0ZSB7CiAgICAg aW50IGZkOwogICAgIGludCBxbXBfZmQ7CiAgICAgcGlkX3QgcWVtdV9waWQ7ICAvKiBvdXIgY2hp bGQgUUVNVSBwcm9jZXNzICovCkBAIC02MzAsNiArNjMxLDM3IEBAIFFEaWN0ICpxdGVzdF9xbXBf cmVjZWl2ZV9kaWN0KFFUZXN0U3RhdGUgKnMpCiAgICAgcmV0dXJuIHFtcF9mZF9yZWNlaXZlKHMt PnFtcF9mZCk7CiB9CiAKK1FUZXN0U3RhdGUgKnF0ZXN0X2NyZWF0ZV9zdGF0ZV93aXRoX3FtcF9m ZChpbnQgZmQpCit7CisgICAgUVRlc3RTdGF0ZSAqcW1wX3Rlc3Rfc3RhdGUgPSBnX25ldzAoUVRl c3RTdGF0ZSwgMSk7CisgICAgcW1wX3Rlc3Rfc3RhdGUtPnFtcF9mZCA9IGZkOworICAgIHJldHVy biBxbXBfdGVzdF9zdGF0ZTsKK30KKworaW50IHF0ZXN0X3NvY2tldF9jbGllbnQoY2hhciAqc2Vy dmVyX3NvY2tldF9wYXRoKQoreworICAgIHN0cnVjdCBzb2NrYWRkcl91biBzZXJ2X2FkZHI7Cisg ICAgaW50IHNvY2s7CisgICAgaW50IHJldDsKKyAgICBpbnQgcmV0cmllcyA9IDA7CisgICAgc29j ayA9IHNvY2tldChQRl9VTklYLCBTT0NLX1NUUkVBTSwgMCk7CisgICAgZ19hc3NlcnRfY21waW50 KHNvY2ssICE9LCAtMSk7CisgICAgc2Vydl9hZGRyLnN1bl9mYW1pbHkgPSBBRl9VTklYOworICAg IHNucHJpbnRmKHNlcnZfYWRkci5zdW5fcGF0aCwgc2l6ZW9mKHNlcnZfYWRkci5zdW5fcGF0aCks ICIlcyIsCisgICAgICAgICAgICAgc2VydmVyX3NvY2tldF9wYXRoKTsKKworICAgIGZvciAocmV0 cmllcyA9IDA7IHJldHJpZXMgPCAzOyByZXRyaWVzKyspIHsKKyAgICAgICAgcmV0ID0gY29ubmVj dChzb2NrLCAoc3RydWN0IHNvY2thZGRyICopJnNlcnZfYWRkciwgc2l6ZW9mKHNlcnZfYWRkcikp OworICAgICAgICBpZiAocmV0ID09IDApIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9 CisgICAgICAgIGdfdXNsZWVwKEdfVVNFQ19QRVJfU0VDKTsKKyAgICB9CisKKyAgICBnX2Fzc2Vy dF9jbXBpbnQocmV0LCA9PSwgMCk7CisgICAgcmV0dXJuIHNvY2s7Cit9CisKIC8qKgogICogQWxs b3cgdXNlcnMgdG8gc2VuZCBhIG1lc3NhZ2Ugd2l0aG91dCB3YWl0aW5nIGZvciB0aGUgcmVwbHks CiAgKiBpbiB0aGUgY2FzZSB0aGF0IHRoZXkgY2hvb3NlIHRvIGRpc2NhcmQgYWxsIHJlcGxpZXMg dXAgdW50aWwKZGlmZiAtLWdpdCBhL3Rlc3RzL3F0ZXN0L3Zob3N0LXVzZXItYmxrLXRlc3QuYyBi L3Rlc3RzL3F0ZXN0L3Zob3N0LXVzZXItYmxrLXRlc3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwLi5lN2U0NGY5YmYwCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvcXRl c3Qvdmhvc3QtdXNlci1ibGstdGVzdC5jCkBAIC0wLDAgKzEsNzUxIEBACisvKgorICogUVRlc3Qg dGVzdGNhc2UgZm9yIFZob3N0LXVzZXIgQmxvY2sgRGV2aWNlCisgKgorICogQmFzZWQgb24gdGVz dHMvcXRlc3QvL3ZpcnRpby1ibGstdGVzdC5jCisKKyAqIENvcHlyaWdodCAoYykgMjAxNCBTVVNF IExJTlVYIFByb2R1Y3RzIEdtYkgKKyAqIENvcHlyaWdodCAoYykgMjAxNCBNYXJjIE1hcsOtCisg KiBDb3B5cmlnaHQgKGMpIDIwMjAgQ29pYnkgWHUKKyAqCisgKiBUaGlzIHdvcmsgaXMgbGljZW5z ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR1BMLCB2ZXJzaW9uIDIgb3IgbGF0ZXIuCisg KiBTZWUgdGhlIENPUFlJTkcgZmlsZSBpbiB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeS4KKyAqLwor CisjaW5jbHVkZSAicWVtdS9vc2RlcC5oIgorI2luY2x1ZGUgImxpYnF0ZXN0LXNpbmdsZS5oIgor I2luY2x1ZGUgInFlbXUvYnN3YXAuaCIKKyNpbmNsdWRlICJxZW11L21vZHVsZS5oIgorI2luY2x1 ZGUgInN0YW5kYXJkLWhlYWRlcnMvbGludXgvdmlydGlvX2Jsay5oIgorI2luY2x1ZGUgInN0YW5k YXJkLWhlYWRlcnMvbGludXgvdmlydGlvX3BjaS5oIgorI2luY2x1ZGUgImxpYnFvcy9xZ3JhcGgu aCIKKyNpbmNsdWRlICJsaWJxb3Mvdmhvc3QtdXNlci1ibGsuaCIKKyNpbmNsdWRlICJsaWJxb3Mv bGlicW9zLXBjLmgiCisKKyNkZWZpbmUgVEVTVF9JTUFHRV9TSVpFICAgICAgICAgKDY0ICogMTAy NCAqIDEwMjQpCisjZGVmaW5lIFFWSVJUSU9fQkxLX1RJTUVPVVRfVVMgICgzMCAqIDEwMDAgKiAx MDAwKQorI2RlZmluZSBQQ0lfU0xPVF9IUCAgICAgICAgICAgICAweDA2CisKK3R5cGVkZWYgc3Ry dWN0IFFWaXJ0aW9CbGtSZXEgeworICAgIHVpbnQzMl90IHR5cGU7CisgICAgdWludDMyX3QgaW9w cmlvOworICAgIHVpbnQ2NF90IHNlY3RvcjsKKyAgICBjaGFyICpkYXRhOworICAgIHVpbnQ4X3Qg c3RhdHVzOworfSBRVmlydGlvQmxrUmVxOworCisjaWZkZWYgSE9TVF9XT1JEU19CSUdFTkRJQU4K K3N0YXRpYyBjb25zdCBib29sIGhvc3RfaXNfYmlnX2VuZGlhbiA9IHRydWU7CisjZWxzZQorc3Rh dGljIGNvbnN0IGJvb2wgaG9zdF9pc19iaWdfZW5kaWFuOyAvKiBmYWxzZSAqLworI2VuZGlmCisK K3N0YXRpYyBpbmxpbmUgdm9pZCB2aXJ0aW9fYmxrX2ZpeF9yZXF1ZXN0KFFWaXJ0aW9EZXZpY2Ug KmQsIFFWaXJ0aW9CbGtSZXEgKnJlcSkKK3sKKyAgICBpZiAocXZpcnRpb19pc19iaWdfZW5kaWFu KGQpICE9IGhvc3RfaXNfYmlnX2VuZGlhbikgeworICAgICAgICByZXEtPnR5cGUgPSBic3dhcDMy KHJlcS0+dHlwZSk7CisgICAgICAgIHJlcS0+aW9wcmlvID0gYnN3YXAzMihyZXEtPmlvcHJpbyk7 CisgICAgICAgIHJlcS0+c2VjdG9yID0gYnN3YXA2NChyZXEtPnNlY3Rvcik7CisgICAgfQorfQor CitzdGF0aWMgaW5saW5lIHZvaWQgdmlydGlvX2Jsa19maXhfZHd6X2hkcihRVmlydGlvRGV2aWNl ICpkLAorICAgIHN0cnVjdCB2aXJ0aW9fYmxrX2Rpc2NhcmRfd3JpdGVfemVyb2VzICpkd3pfaGRy KQoreworICAgIGlmIChxdmlydGlvX2lzX2JpZ19lbmRpYW4oZCkgIT0gaG9zdF9pc19iaWdfZW5k aWFuKSB7CisgICAgICAgIGR3el9oZHItPnNlY3RvciA9IGJzd2FwNjQoZHd6X2hkci0+c2VjdG9y KTsKKyAgICAgICAgZHd6X2hkci0+bnVtX3NlY3RvcnMgPSBic3dhcDMyKGR3el9oZHItPm51bV9z ZWN0b3JzKTsKKyAgICAgICAgZHd6X2hkci0+ZmxhZ3MgPSBic3dhcDMyKGR3el9oZHItPmZsYWdz KTsKKyAgICB9Cit9CisKK3N0YXRpYyB1aW50NjRfdCB2aXJ0aW9fYmxrX3JlcXVlc3QoUUd1ZXN0 QWxsb2NhdG9yICphbGxvYywgUVZpcnRpb0RldmljZSAqZCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUVZpcnRpb0Jsa1JlcSAqcmVxLCB1aW50NjRfdCBkYXRhX3NpemUpCit7 CisgICAgdWludDY0X3QgYWRkcjsKKyAgICB1aW50OF90IHN0YXR1cyA9IDB4RkY7CisgICAgUVRl c3RTdGF0ZSAqcXRzID0gZ2xvYmFsX3F0ZXN0OworCisgICAgc3dpdGNoIChyZXEtPnR5cGUpIHsK KyAgICBjYXNlIFZJUlRJT19CTEtfVF9JTjoKKyAgICBjYXNlIFZJUlRJT19CTEtfVF9PVVQ6Cisg ICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQoZGF0YV9zaXplICUgNTEyLCA9PSwgMCk7CisgICAgICAg IGJyZWFrOworICAgIGNhc2UgVklSVElPX0JMS19UX0RJU0NBUkQ6CisgICAgY2FzZSBWSVJUSU9f QkxLX1RfV1JJVEVfWkVST0VTOgorICAgICAgICBnX2Fzc2VydF9jbXB1aW50KGRhdGFfc2l6ZSAl CisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCB2aXJ0aW9fYmxrX2Rpc2Nh cmRfd3JpdGVfemVyb2VzKSwgPT0sIDApOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0Ogor ICAgICAgICBnX2Fzc2VydF9jbXB1aW50KGRhdGFfc2l6ZSwgPT0sIDApOworICAgIH0KKworICAg IGFkZHIgPSBndWVzdF9hbGxvYyhhbGxvYywgc2l6ZW9mKCpyZXEpICsgZGF0YV9zaXplKTsKKwor ICAgIHZpcnRpb19ibGtfZml4X3JlcXVlc3QoZCwgcmVxKTsKKworICAgIHF0ZXN0X21lbXdyaXRl KHF0cywgYWRkciwgcmVxLCAxNik7CisgICAgcXRlc3RfbWVtd3JpdGUocXRzLCBhZGRyICsgMTYs IHJlcS0+ZGF0YSwgZGF0YV9zaXplKTsKKyAgICBxdGVzdF9tZW13cml0ZShxdHMsIGFkZHIgKyAx NiArIGRhdGFfc2l6ZSwgJnN0YXR1cywgc2l6ZW9mKHN0YXR1cykpOworCisgICAgcmV0dXJuIGFk ZHI7Cit9CisKKy8qIFJldHVybnMgdGhlIHJlcXVlc3QgdmlydHF1ZXVlIHNvIHRoZSBjYWxsZXIg Y2FuIHBlcmZvcm0gZnVydGhlciB0ZXN0cyAqLworc3RhdGljIFFWaXJ0UXVldWUgKnRlc3RfYmFz aWMoUVZpcnRpb0RldmljZSAqZGV2LCBRR3Vlc3RBbGxvY2F0b3IgKmFsbG9jKQoreworICAgIFFW aXJ0aW9CbGtSZXEgcmVxOworICAgIHVpbnQ2NF90IHJlcV9hZGRyOworICAgIHVpbnQ2NF90IGNh cGFjaXR5OworICAgIHVpbnQ2NF90IGZlYXR1cmVzOworICAgIHVpbnQzMl90IGZyZWVfaGVhZDsK KyAgICB1aW50OF90IHN0YXR1czsKKyAgICBjaGFyICpkYXRhOworICAgIFFUZXN0U3RhdGUgKnF0 cyA9IGdsb2JhbF9xdGVzdDsKKyAgICBRVmlydFF1ZXVlICp2cTsKKworICAgIGZlYXR1cmVzID0g cXZpcnRpb19nZXRfZmVhdHVyZXMoZGV2KTsKKyAgICBmZWF0dXJlcyA9IGZlYXR1cmVzICYgfihR VklSVElPX0ZfQkFEX0ZFQVRVUkUgfAorICAgICAgICAgICAgICAgICAgICAoMXUgPDwgVklSVElP X1JJTkdfRl9JTkRJUkVDVF9ERVNDKSB8CisgICAgICAgICAgICAgICAgICAgICgxdSA8PCBWSVJU SU9fUklOR19GX0VWRU5UX0lEWCkgfAorICAgICAgICAgICAgICAgICAgICAoMXUgPDwgVklSVElP X0JMS19GX1NDU0kpKTsKKyAgICBxdmlydGlvX3NldF9mZWF0dXJlcyhkZXYsIGZlYXR1cmVzKTsK KworICAgIGNhcGFjaXR5ID0gcXZpcnRpb19jb25maWdfcmVhZHEoZGV2LCAwKTsKKyAgICBnX2Fz c2VydF9jbXBpbnQoY2FwYWNpdHksID09LCBURVNUX0lNQUdFX1NJWkUgLyA1MTIpOworCisgICAg dnEgPSBxdmlydHF1ZXVlX3NldHVwKGRldiwgYWxsb2MsIDApOworCisgICAgcXZpcnRpb19zZXRf ZHJpdmVyX29rKGRldik7CisKKyAgICAvKiBXcml0ZSBhbmQgcmVhZCB3aXRoIDMgZGVzY3JpcHRv ciBsYXlvdXQgKi8KKyAgICAvKiBXcml0ZSByZXF1ZXN0ICovCisgICAgcmVxLnR5cGUgPSBWSVJU SU9fQkxLX1RfT1VUOworICAgIHJlcS5pb3ByaW8gPSAxOworICAgIHJlcS5zZWN0b3IgPSAwOwor ICAgIHJlcS5kYXRhID0gZ19tYWxsb2MwKDUxMik7CisgICAgc3RyY3B5KHJlcS5kYXRhLCAiVEVT VCIpOworCisgICAgcmVxX2FkZHIgPSB2aXJ0aW9fYmxrX3JlcXVlc3QoYWxsb2MsIGRldiwgJnJl cSwgNTEyKTsKKworICAgIGdfZnJlZShyZXEuZGF0YSk7CisKKyAgICBmcmVlX2hlYWQgPSBxdmly dHF1ZXVlX2FkZChxdHMsIHZxLCByZXFfYWRkciwgMTYsIGZhbHNlLCB0cnVlKTsKKyAgICBxdmly dHF1ZXVlX2FkZChxdHMsIHZxLCByZXFfYWRkciArIDE2LCA1MTIsIGZhbHNlLCB0cnVlKTsKKyAg ICBxdmlydHF1ZXVlX2FkZChxdHMsIHZxLCByZXFfYWRkciArIDUyOCwgMSwgdHJ1ZSwgZmFsc2Up OworCisgICAgcXZpcnRxdWV1ZV9raWNrKHF0cywgZGV2LCB2cSwgZnJlZV9oZWFkKTsKKworICAg IHF2aXJ0aW9fd2FpdF91c2VkX2VsZW0ocXRzLCBkZXYsIHZxLCBmcmVlX2hlYWQsIE5VTEwsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICBRVklSVElPX0JMS19USU1FT1VUX1VTKTsKKyAgICBz dGF0dXMgPSByZWFkYihyZXFfYWRkciArIDUyOCk7CisgICAgZ19hc3NlcnRfY21waW50KHN0YXR1 cywgPT0sIDApOworCisgICAgZ3Vlc3RfZnJlZShhbGxvYywgcmVxX2FkZHIpOworCisgICAgLyog UmVhZCByZXF1ZXN0ICovCisgICAgcmVxLnR5cGUgPSBWSVJUSU9fQkxLX1RfSU47CisgICAgcmVx LmlvcHJpbyA9IDE7CisgICAgcmVxLnNlY3RvciA9IDA7CisgICAgcmVxLmRhdGEgPSBnX21hbGxv YzAoNTEyKTsKKworICAgIHJlcV9hZGRyID0gdmlydGlvX2Jsa19yZXF1ZXN0KGFsbG9jLCBkZXYs ICZyZXEsIDUxMik7CisKKyAgICBnX2ZyZWUocmVxLmRhdGEpOworCisgICAgZnJlZV9oZWFkID0g cXZpcnRxdWV1ZV9hZGQocXRzLCB2cSwgcmVxX2FkZHIsIDE2LCBmYWxzZSwgdHJ1ZSk7CisgICAg cXZpcnRxdWV1ZV9hZGQocXRzLCB2cSwgcmVxX2FkZHIgKyAxNiwgNTEyLCB0cnVlLCB0cnVlKTsK KyAgICBxdmlydHF1ZXVlX2FkZChxdHMsIHZxLCByZXFfYWRkciArIDUyOCwgMSwgdHJ1ZSwgZmFs c2UpOworCisgICAgcXZpcnRxdWV1ZV9raWNrKHF0cywgZGV2LCB2cSwgZnJlZV9oZWFkKTsKKwor ICAgIHF2aXJ0aW9fd2FpdF91c2VkX2VsZW0ocXRzLCBkZXYsIHZxLCBmcmVlX2hlYWQsIE5VTEws CisgICAgICAgICAgICAgICAgICAgICAgICAgICBRVklSVElPX0JMS19USU1FT1VUX1VTKTsKKyAg ICBzdGF0dXMgPSByZWFkYihyZXFfYWRkciArIDUyOCk7CisgICAgZ19hc3NlcnRfY21waW50KHN0 YXR1cywgPT0sIDApOworCisgICAgZGF0YSA9IGdfbWFsbG9jMCg1MTIpOworICAgIHF0ZXN0X21l bXJlYWQocXRzLCByZXFfYWRkciArIDE2LCBkYXRhLCA1MTIpOworICAgIGdfYXNzZXJ0X2NtcHN0 cihkYXRhLCA9PSwgIlRFU1QiKTsKKyAgICBnX2ZyZWUoZGF0YSk7CisKKyAgICBndWVzdF9mcmVl KGFsbG9jLCByZXFfYWRkcik7CisKKyAgICBpZiAoZmVhdHVyZXMgJiAoMXUgPDwgVklSVElPX0JM S19GX1dSSVRFX1pFUk9FUykpIHsKKyAgICAgICAgc3RydWN0IHZpcnRpb19ibGtfZGlzY2FyZF93 cml0ZV96ZXJvZXMgZHd6X2hkcjsKKyAgICAgICAgdm9pZCAqZXhwZWN0ZWQ7CisKKyAgICAgICAg LyoKKyAgICAgICAgICogV1JJVEVfWkVST0VTIHJlcXVlc3Qgb24gdGhlIHNhbWUgc2VjdG9yIG9m IHByZXZpb3VzIHRlc3Qgd2hlcmUKKyAgICAgICAgICogd2Ugd3JvdGUgIlRFU1QiLgorICAgICAg ICAgKi8KKyAgICAgICAgcmVxLnR5cGUgPSBWSVJUSU9fQkxLX1RfV1JJVEVfWkVST0VTOworICAg ICAgICByZXEuZGF0YSA9IChjaGFyICopICZkd3pfaGRyOworICAgICAgICBkd3pfaGRyLnNlY3Rv ciA9IDA7CisgICAgICAgIGR3el9oZHIubnVtX3NlY3RvcnMgPSAxOworICAgICAgICBkd3pfaGRy LmZsYWdzID0gMDsKKworICAgICAgICB2aXJ0aW9fYmxrX2ZpeF9kd3pfaGRyKGRldiwgJmR3el9o ZHIpOworCisgICAgICAgIHJlcV9hZGRyID0gdmlydGlvX2Jsa19yZXF1ZXN0KGFsbG9jLCBkZXYs ICZyZXEsIHNpemVvZihkd3pfaGRyKSk7CisKKyAgICAgICAgZnJlZV9oZWFkID0gcXZpcnRxdWV1 ZV9hZGQocXRzLCB2cSwgcmVxX2FkZHIsIDE2LCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIHF2aXJ0 cXVldWVfYWRkKHF0cywgdnEsIHJlcV9hZGRyICsgMTYsIHNpemVvZihkd3pfaGRyKSwgZmFsc2Us IHRydWUpOworICAgICAgICBxdmlydHF1ZXVlX2FkZChxdHMsIHZxLCByZXFfYWRkciArIDE2ICsg c2l6ZW9mKGR3el9oZHIpLCAxLCB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSk7 CisKKyAgICAgICAgcXZpcnRxdWV1ZV9raWNrKHF0cywgZGV2LCB2cSwgZnJlZV9oZWFkKTsKKwor ICAgICAgICBxdmlydGlvX3dhaXRfdXNlZF9lbGVtKHF0cywgZGV2LCB2cSwgZnJlZV9oZWFkLCBO VUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFWSVJUSU9fQkxLX1RJTUVPVVRf VVMpOworICAgICAgICBzdGF0dXMgPSByZWFkYihyZXFfYWRkciArIDE2ICsgc2l6ZW9mKGR3el9o ZHIpKTsKKyAgICAgICAgZ19hc3NlcnRfY21waW50KHN0YXR1cywgPT0sIDApOworCisgICAgICAg IGd1ZXN0X2ZyZWUoYWxsb2MsIHJlcV9hZGRyKTsKKworICAgICAgICAvKiBSZWFkIHJlcXVlc3Qg dG8gY2hlY2sgaWYgdGhlIHNlY3RvciBjb250YWlucyBhbGwgemVyb2VzICovCisgICAgICAgIHJl cS50eXBlID0gVklSVElPX0JMS19UX0lOOworICAgICAgICByZXEuaW9wcmlvID0gMTsKKyAgICAg ICAgcmVxLnNlY3RvciA9IDA7CisgICAgICAgIHJlcS5kYXRhID0gZ19tYWxsb2MwKDUxMik7CisK KyAgICAgICAgcmVxX2FkZHIgPSB2aXJ0aW9fYmxrX3JlcXVlc3QoYWxsb2MsIGRldiwgJnJlcSwg NTEyKTsKKworICAgICAgICBnX2ZyZWUocmVxLmRhdGEpOworCisgICAgICAgIGZyZWVfaGVhZCA9 IHF2aXJ0cXVldWVfYWRkKHF0cywgdnEsIHJlcV9hZGRyLCAxNiwgZmFsc2UsIHRydWUpOworICAg ICAgICBxdmlydHF1ZXVlX2FkZChxdHMsIHZxLCByZXFfYWRkciArIDE2LCA1MTIsIHRydWUsIHRy dWUpOworICAgICAgICBxdmlydHF1ZXVlX2FkZChxdHMsIHZxLCByZXFfYWRkciArIDUyOCwgMSwg dHJ1ZSwgZmFsc2UpOworCisgICAgICAgIHF2aXJ0cXVldWVfa2ljayhxdHMsIGRldiwgdnEsIGZy ZWVfaGVhZCk7CisKKyAgICAgICAgcXZpcnRpb193YWl0X3VzZWRfZWxlbShxdHMsIGRldiwgdnEs IGZyZWVfaGVhZCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVklSVElP X0JMS19USU1FT1VUX1VTKTsKKyAgICAgICAgc3RhdHVzID0gcmVhZGIocmVxX2FkZHIgKyA1Mjgp OworICAgICAgICBnX2Fzc2VydF9jbXBpbnQoc3RhdHVzLCA9PSwgMCk7CisKKyAgICAgICAgZGF0 YSA9IGdfbWFsbG9jKDUxMik7CisgICAgICAgIGV4cGVjdGVkID0gZ19tYWxsb2MwKDUxMik7Cisg ICAgICAgIHF0ZXN0X21lbXJlYWQocXRzLCByZXFfYWRkciArIDE2LCBkYXRhLCA1MTIpOworICAg ICAgICBnX2Fzc2VydF9jbXBtZW0oZGF0YSwgNTEyLCBleHBlY3RlZCwgNTEyKTsKKyAgICAgICAg Z19mcmVlKGV4cGVjdGVkKTsKKyAgICAgICAgZ19mcmVlKGRhdGEpOworCisgICAgICAgIGd1ZXN0 X2ZyZWUoYWxsb2MsIHJlcV9hZGRyKTsKKyAgICB9CisKKyAgICBpZiAoZmVhdHVyZXMgJiAoMXUg PDwgVklSVElPX0JMS19GX0RJU0NBUkQpKSB7CisgICAgICAgIHN0cnVjdCB2aXJ0aW9fYmxrX2Rp c2NhcmRfd3JpdGVfemVyb2VzIGR3el9oZHI7CisKKyAgICAgICAgcmVxLnR5cGUgPSBWSVJUSU9f QkxLX1RfRElTQ0FSRDsKKyAgICAgICAgcmVxLmRhdGEgPSAoY2hhciAqKSAmZHd6X2hkcjsKKyAg ICAgICAgZHd6X2hkci5zZWN0b3IgPSAwOworICAgICAgICBkd3pfaGRyLm51bV9zZWN0b3JzID0g MTsKKyAgICAgICAgZHd6X2hkci5mbGFncyA9IDA7CisKKyAgICAgICAgdmlydGlvX2Jsa19maXhf ZHd6X2hkcihkZXYsICZkd3pfaGRyKTsKKworICAgICAgICByZXFfYWRkciA9IHZpcnRpb19ibGtf cmVxdWVzdChhbGxvYywgZGV2LCAmcmVxLCBzaXplb2YoZHd6X2hkcikpOworCisgICAgICAgIGZy ZWVfaGVhZCA9IHF2aXJ0cXVldWVfYWRkKHF0cywgdnEsIHJlcV9hZGRyLCAxNiwgZmFsc2UsIHRy dWUpOworICAgICAgICBxdmlydHF1ZXVlX2FkZChxdHMsIHZxLCByZXFfYWRkciArIDE2LCBzaXpl b2YoZHd6X2hkciksIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgcXZpcnRxdWV1ZV9hZGQocXRzLCB2 cSwgcmVxX2FkZHIgKyAxNiArIHNpemVvZihkd3pfaGRyKSwKKyAgICAgICAgICAgICAgICAgICAg ICAgMSwgdHJ1ZSwgZmFsc2UpOworCisgICAgICAgIHF2aXJ0cXVldWVfa2ljayhxdHMsIGRldiwg dnEsIGZyZWVfaGVhZCk7CisKKyAgICAgICAgcXZpcnRpb193YWl0X3VzZWRfZWxlbShxdHMsIGRl diwgdnEsIGZyZWVfaGVhZCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBR VklSVElPX0JMS19USU1FT1VUX1VTKTsKKyAgICAgICAgc3RhdHVzID0gcmVhZGIocmVxX2FkZHIg KyAxNiArIHNpemVvZihkd3pfaGRyKSk7CisgICAgICAgIGdfYXNzZXJ0X2NtcGludChzdGF0dXMs ID09LCAwKTsKKworICAgICAgICBndWVzdF9mcmVlKGFsbG9jLCByZXFfYWRkcik7CisgICAgfQor CisgICAgaWYgKGZlYXR1cmVzICYgKDF1IDw8IFZJUlRJT19GX0FOWV9MQVlPVVQpKSB7CisgICAg ICAgIC8qIFdyaXRlIGFuZCByZWFkIHdpdGggMiBkZXNjcmlwdG9yIGxheW91dCAqLworICAgICAg ICAvKiBXcml0ZSByZXF1ZXN0ICovCisgICAgICAgIHJlcS50eXBlID0gVklSVElPX0JMS19UX09V VDsKKyAgICAgICAgcmVxLmlvcHJpbyA9IDE7CisgICAgICAgIHJlcS5zZWN0b3IgPSAxOworICAg ICAgICByZXEuZGF0YSA9IGdfbWFsbG9jMCg1MTIpOworICAgICAgICBzdHJjcHkocmVxLmRhdGEs ICJURVNUIik7CisKKyAgICAgICAgcmVxX2FkZHIgPSB2aXJ0aW9fYmxrX3JlcXVlc3QoYWxsb2Ms IGRldiwgJnJlcSwgNTEyKTsKKworICAgICAgICBnX2ZyZWUocmVxLmRhdGEpOworCisgICAgICAg IGZyZWVfaGVhZCA9IHF2aXJ0cXVldWVfYWRkKHF0cywgdnEsIHJlcV9hZGRyLCA1MjgsIGZhbHNl LCB0cnVlKTsKKyAgICAgICAgcXZpcnRxdWV1ZV9hZGQocXRzLCB2cSwgcmVxX2FkZHIgKyA1Mjgs IDEsIHRydWUsIGZhbHNlKTsKKyAgICAgICAgcXZpcnRxdWV1ZV9raWNrKHF0cywgZGV2LCB2cSwg ZnJlZV9oZWFkKTsKKworICAgICAgICBxdmlydGlvX3dhaXRfdXNlZF9lbGVtKHF0cywgZGV2LCB2 cSwgZnJlZV9oZWFkLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFWSVJU SU9fQkxLX1RJTUVPVVRfVVMpOworICAgICAgICBzdGF0dXMgPSByZWFkYihyZXFfYWRkciArIDUy OCk7CisgICAgICAgIGdfYXNzZXJ0X2NtcGludChzdGF0dXMsID09LCAwKTsKKworICAgICAgICBn dWVzdF9mcmVlKGFsbG9jLCByZXFfYWRkcik7CisKKyAgICAgICAgLyogUmVhZCByZXF1ZXN0ICov CisgICAgICAgIHJlcS50eXBlID0gVklSVElPX0JMS19UX0lOOworICAgICAgICByZXEuaW9wcmlv ID0gMTsKKyAgICAgICAgcmVxLnNlY3RvciA9IDE7CisgICAgICAgIHJlcS5kYXRhID0gZ19tYWxs b2MwKDUxMik7CisKKyAgICAgICAgcmVxX2FkZHIgPSB2aXJ0aW9fYmxrX3JlcXVlc3QoYWxsb2Ms IGRldiwgJnJlcSwgNTEyKTsKKworICAgICAgICBnX2ZyZWUocmVxLmRhdGEpOworCisgICAgICAg IGZyZWVfaGVhZCA9IHF2aXJ0cXVldWVfYWRkKHF0cywgdnEsIHJlcV9hZGRyLCAxNiwgZmFsc2Us IHRydWUpOworICAgICAgICBxdmlydHF1ZXVlX2FkZChxdHMsIHZxLCByZXFfYWRkciArIDE2LCA1 MTMsIHRydWUsIGZhbHNlKTsKKworICAgICAgICBxdmlydHF1ZXVlX2tpY2socXRzLCBkZXYsIHZx LCBmcmVlX2hlYWQpOworCisgICAgICAgIHF2aXJ0aW9fd2FpdF91c2VkX2VsZW0ocXRzLCBkZXYs IHZxLCBmcmVlX2hlYWQsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVZJ UlRJT19CTEtfVElNRU9VVF9VUyk7CisgICAgICAgIHN0YXR1cyA9IHJlYWRiKHJlcV9hZGRyICsg NTI4KTsKKyAgICAgICAgZ19hc3NlcnRfY21waW50KHN0YXR1cywgPT0sIDApOworCisgICAgICAg IGRhdGEgPSBnX21hbGxvYzAoNTEyKTsKKyAgICAgICAgcXRlc3RfbWVtcmVhZChxdHMsIHJlcV9h ZGRyICsgMTYsIGRhdGEsIDUxMik7CisgICAgICAgIGdfYXNzZXJ0X2NtcHN0cihkYXRhLCA9PSwg IlRFU1QiKTsKKyAgICAgICAgZ19mcmVlKGRhdGEpOworCisgICAgICAgIGd1ZXN0X2ZyZWUoYWxs b2MsIHJlcV9hZGRyKTsKKyAgICB9CisKKyAgICByZXR1cm4gdnE7Cit9CisKK3N0YXRpYyB2b2lk IGJhc2ljKHZvaWQgKm9iaiwgdm9pZCAqZGF0YSwgUUd1ZXN0QWxsb2NhdG9yICp0X2FsbG9jKQor eworICAgIFFWaG9zdFVzZXJCbGsgKmJsa19pZiA9IG9iajsKKyAgICBRVmlydFF1ZXVlICp2cTsK KworICAgIHZxID0gdGVzdF9iYXNpYyhibGtfaWYtPnZkZXYsIHRfYWxsb2MpOworICAgIHF2aXJ0 cXVldWVfY2xlYW51cChibGtfaWYtPnZkZXYtPmJ1cywgdnEsIHRfYWxsb2MpOworCit9CisKK3N0 YXRpYyB2b2lkIGluZGlyZWN0KHZvaWQgKm9iaiwgdm9pZCAqdV9kYXRhLCBRR3Vlc3RBbGxvY2F0 b3IgKnRfYWxsb2MpCit7CisgICAgUVZpcnRRdWV1ZSAqdnE7CisgICAgUVZob3N0VXNlckJsayAq YmxrX2lmID0gb2JqOworICAgIFFWaXJ0aW9EZXZpY2UgKmRldiA9IGJsa19pZi0+dmRldjsKKyAg ICBRVmlydGlvQmxrUmVxIHJlcTsKKyAgICBRVlJpbmdJbmRpcmVjdERlc2MgKmluZGlyZWN0Owor ICAgIHVpbnQ2NF90IHJlcV9hZGRyOworICAgIHVpbnQ2NF90IGNhcGFjaXR5OworICAgIHVpbnQ2 NF90IGZlYXR1cmVzOworICAgIHVpbnQzMl90IGZyZWVfaGVhZDsKKyAgICB1aW50OF90IHN0YXR1 czsKKyAgICBjaGFyICpkYXRhOworICAgIFFUZXN0U3RhdGUgKnF0cyA9IGdsb2JhbF9xdGVzdDsK KworICAgIGZlYXR1cmVzID0gcXZpcnRpb19nZXRfZmVhdHVyZXMoZGV2KTsKKyAgICBnX2Fzc2Vy dF9jbXBoZXgoZmVhdHVyZXMgJiAoMXUgPDwgVklSVElPX1JJTkdfRl9JTkRJUkVDVF9ERVNDKSwg IT0sIDApOworICAgIGZlYXR1cmVzID0gZmVhdHVyZXMgJiB+KFFWSVJUSU9fRl9CQURfRkVBVFVS RSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDF1IDw8IFZJUlRJT19SSU5HX0ZfRVZF TlRfSURYKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDF1IDw8IFZJUlRJT19CTEtf Rl9TQ1NJKSk7CisgICAgcXZpcnRpb19zZXRfZmVhdHVyZXMoZGV2LCBmZWF0dXJlcyk7CisKKyAg ICBjYXBhY2l0eSA9IHF2aXJ0aW9fY29uZmlnX3JlYWRxKGRldiwgMCk7CisgICAgZ19hc3NlcnRf Y21waW50KGNhcGFjaXR5LCA9PSwgVEVTVF9JTUFHRV9TSVpFIC8gNTEyKTsKKworICAgIHZxID0g cXZpcnRxdWV1ZV9zZXR1cChkZXYsIHRfYWxsb2MsIDApOworICAgIHF2aXJ0aW9fc2V0X2RyaXZl cl9vayhkZXYpOworCisgICAgLyogV3JpdGUgcmVxdWVzdCAqLworICAgIHJlcS50eXBlID0gVklS VElPX0JMS19UX09VVDsKKyAgICByZXEuaW9wcmlvID0gMTsKKyAgICByZXEuc2VjdG9yID0gMDsK KyAgICByZXEuZGF0YSA9IGdfbWFsbG9jMCg1MTIpOworICAgIHN0cmNweShyZXEuZGF0YSwgIlRF U1QiKTsKKworICAgIHJlcV9hZGRyID0gdmlydGlvX2Jsa19yZXF1ZXN0KHRfYWxsb2MsIGRldiwg JnJlcSwgNTEyKTsKKworICAgIGdfZnJlZShyZXEuZGF0YSk7CisKKyAgICBpbmRpcmVjdCA9IHF2 cmluZ19pbmRpcmVjdF9kZXNjX3NldHVwKHF0cywgZGV2LCB0X2FsbG9jLCAyKTsKKyAgICBxdnJp bmdfaW5kaXJlY3RfZGVzY19hZGQoZGV2LCBxdHMsIGluZGlyZWN0LCByZXFfYWRkciwgNTI4LCBm YWxzZSk7CisgICAgcXZyaW5nX2luZGlyZWN0X2Rlc2NfYWRkKGRldiwgcXRzLCBpbmRpcmVjdCwg cmVxX2FkZHIgKyA1MjgsIDEsIHRydWUpOworICAgIGZyZWVfaGVhZCA9IHF2aXJ0cXVldWVfYWRk X2luZGlyZWN0KHF0cywgdnEsIGluZGlyZWN0KTsKKyAgICBxdmlydHF1ZXVlX2tpY2socXRzLCBk ZXYsIHZxLCBmcmVlX2hlYWQpOworCisgICAgcXZpcnRpb193YWl0X3VzZWRfZWxlbShxdHMsIGRl diwgdnEsIGZyZWVfaGVhZCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFFWSVJU SU9fQkxLX1RJTUVPVVRfVVMpOworICAgIHN0YXR1cyA9IHJlYWRiKHJlcV9hZGRyICsgNTI4KTsK KyAgICBnX2Fzc2VydF9jbXBpbnQoc3RhdHVzLCA9PSwgMCk7CisKKyAgICBnX2ZyZWUoaW5kaXJl Y3QpOworICAgIGd1ZXN0X2ZyZWUodF9hbGxvYywgcmVxX2FkZHIpOworCisgICAgLyogUmVhZCBy ZXF1ZXN0ICovCisgICAgcmVxLnR5cGUgPSBWSVJUSU9fQkxLX1RfSU47CisgICAgcmVxLmlvcHJp byA9IDE7CisgICAgcmVxLnNlY3RvciA9IDA7CisgICAgcmVxLmRhdGEgPSBnX21hbGxvYzAoNTEy KTsKKyAgICBzdHJjcHkocmVxLmRhdGEsICJURVNUIik7CisKKyAgICByZXFfYWRkciA9IHZpcnRp b19ibGtfcmVxdWVzdCh0X2FsbG9jLCBkZXYsICZyZXEsIDUxMik7CisKKyAgICBnX2ZyZWUocmVx LmRhdGEpOworCisgICAgaW5kaXJlY3QgPSBxdnJpbmdfaW5kaXJlY3RfZGVzY19zZXR1cChxdHMs IGRldiwgdF9hbGxvYywgMik7CisgICAgcXZyaW5nX2luZGlyZWN0X2Rlc2NfYWRkKGRldiwgcXRz LCBpbmRpcmVjdCwgcmVxX2FkZHIsIDE2LCBmYWxzZSk7CisgICAgcXZyaW5nX2luZGlyZWN0X2Rl c2NfYWRkKGRldiwgcXRzLCBpbmRpcmVjdCwgcmVxX2FkZHIgKyAxNiwgNTEzLCB0cnVlKTsKKyAg ICBmcmVlX2hlYWQgPSBxdmlydHF1ZXVlX2FkZF9pbmRpcmVjdChxdHMsIHZxLCBpbmRpcmVjdCk7 CisgICAgcXZpcnRxdWV1ZV9raWNrKHF0cywgZGV2LCB2cSwgZnJlZV9oZWFkKTsKKworICAgIHF2 aXJ0aW9fd2FpdF91c2VkX2VsZW0ocXRzLCBkZXYsIHZxLCBmcmVlX2hlYWQsIE5VTEwsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBRVklSVElPX0JMS19USU1FT1VUX1VTKTsKKyAgICBzdGF0 dXMgPSByZWFkYihyZXFfYWRkciArIDUyOCk7CisgICAgZ19hc3NlcnRfY21waW50KHN0YXR1cywg PT0sIDApOworCisgICAgZGF0YSA9IGdfbWFsbG9jMCg1MTIpOworICAgIHF0ZXN0X21lbXJlYWQo cXRzLCByZXFfYWRkciArIDE2LCBkYXRhLCA1MTIpOworICAgIGdfYXNzZXJ0X2NtcHN0cihkYXRh LCA9PSwgIlRFU1QiKTsKKyAgICBnX2ZyZWUoZGF0YSk7CisKKyAgICBnX2ZyZWUoaW5kaXJlY3Qp OworICAgIGd1ZXN0X2ZyZWUodF9hbGxvYywgcmVxX2FkZHIpOworICAgIHF2aXJ0cXVldWVfY2xl YW51cChkZXYtPmJ1cywgdnEsIHRfYWxsb2MpOworfQorCitzdGF0aWMgdm9pZCBpZHgodm9pZCAq b2JqLCB2b2lkICp1X2RhdGEsIFFHdWVzdEFsbG9jYXRvciAqdF9hbGxvYykKK3sKKyAgICBRVmly dFF1ZXVlICp2cTsKKyAgICBRVmhvc3RVc2VyQmxrUENJICpibGsgPSBvYmo7CisgICAgUVZpcnRp b1BDSURldmljZSAqcGRldiA9ICZibGstPnBjaV92ZGV2OworICAgIFFWaXJ0aW9EZXZpY2UgKmRl diA9ICZwZGV2LT52ZGV2OworICAgIFFWaXJ0aW9CbGtSZXEgcmVxOworICAgIHVpbnQ2NF90IHJl cV9hZGRyOworICAgIHVpbnQ2NF90IGNhcGFjaXR5OworICAgIHVpbnQ2NF90IGZlYXR1cmVzOwor ICAgIHVpbnQzMl90IGZyZWVfaGVhZDsKKyAgICB1aW50MzJfdCB3cml0ZV9oZWFkOworICAgIHVp bnQzMl90IGRlc2NfaWR4OworICAgIHVpbnQ4X3Qgc3RhdHVzOworICAgIGNoYXIgKmRhdGE7Cisg ICAgUU9TR3JhcGhPYmplY3QgKmJsa19vYmplY3QgPSBvYmo7CisgICAgUVBDSURldmljZSAqcGNp X2RldiA9IGJsa19vYmplY3QtPmdldF9kcml2ZXIoYmxrX29iamVjdCwgInBjaS1kZXZpY2UiKTsK KyAgICBRVGVzdFN0YXRlICpxdHMgPSBnbG9iYWxfcXRlc3Q7CisKKyAgICBpZiAocXBjaV9jaGVj a19idWdneV9tc2kocGNpX2RldikpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHFw Y2lfbXNpeF9lbmFibGUocGRldi0+cGRldik7CisgICAgcXZpcnRpb19wY2lfc2V0X21zaXhfY29u ZmlndXJhdGlvbl92ZWN0b3IocGRldiwgdF9hbGxvYywgMCk7CisKKyAgICBmZWF0dXJlcyA9IHF2 aXJ0aW9fZ2V0X2ZlYXR1cmVzKGRldik7CisgICAgZmVhdHVyZXMgPSBmZWF0dXJlcyAmIH4oUVZJ UlRJT19GX0JBRF9GRUFUVVJFIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMXUgPDwg VklSVElPX1JJTkdfRl9JTkRJUkVDVF9ERVNDKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKDF1IDw8IFZJUlRJT19GX05PVElGWV9PTl9FTVBUWSkgfAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICgxdSA8PCBWSVJUSU9fQkxLX0ZfU0NTSSkpOworICAgIHF2aXJ0aW9fc2V0X2Zl YXR1cmVzKGRldiwgZmVhdHVyZXMpOworCisgICAgY2FwYWNpdHkgPSBxdmlydGlvX2NvbmZpZ19y ZWFkcShkZXYsIDApOworICAgIGdfYXNzZXJ0X2NtcGludChjYXBhY2l0eSwgPT0sIFRFU1RfSU1B R0VfU0laRSAvIDUxMik7CisKKyAgICB2cSA9IHF2aXJ0cXVldWVfc2V0dXAoZGV2LCB0X2FsbG9j LCAwKTsKKyAgICBxdmlydHF1ZXVlX3BjaV9tc2l4X3NldHVwKHBkZXYsIChRVmlydFF1ZXVlUENJ ICopdnEsIHRfYWxsb2MsIDEpOworCisgICAgcXZpcnRpb19zZXRfZHJpdmVyX29rKGRldik7CisK KyAgICAvKiBXcml0ZSByZXF1ZXN0ICovCisgICAgcmVxLnR5cGUgPSBWSVJUSU9fQkxLX1RfT1VU OworICAgIHJlcS5pb3ByaW8gPSAxOworICAgIHJlcS5zZWN0b3IgPSAwOworICAgIHJlcS5kYXRh ID0gZ19tYWxsb2MwKDUxMik7CisgICAgc3RyY3B5KHJlcS5kYXRhLCAiVEVTVCIpOworCisgICAg cmVxX2FkZHIgPSB2aXJ0aW9fYmxrX3JlcXVlc3QodF9hbGxvYywgZGV2LCAmcmVxLCA1MTIpOwor CisgICAgZ19mcmVlKHJlcS5kYXRhKTsKKworICAgIGZyZWVfaGVhZCA9IHF2aXJ0cXVldWVfYWRk KHF0cywgdnEsIHJlcV9hZGRyLCAxNiwgZmFsc2UsIHRydWUpOworICAgIHF2aXJ0cXVldWVfYWRk KHF0cywgdnEsIHJlcV9hZGRyICsgMTYsIDUxMiwgZmFsc2UsIHRydWUpOworICAgIHF2aXJ0cXVl dWVfYWRkKHF0cywgdnEsIHJlcV9hZGRyICsgNTI4LCAxLCB0cnVlLCBmYWxzZSk7CisgICAgcXZp cnRxdWV1ZV9raWNrKHF0cywgZGV2LCB2cSwgZnJlZV9oZWFkKTsKKworICAgIHF2aXJ0aW9fd2Fp dF91c2VkX2VsZW0ocXRzLCBkZXYsIHZxLCBmcmVlX2hlYWQsIE5VTEwsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVklSVElPX0JMS19USU1FT1VUX1VTKTsKKworICAgIC8qIFdyaXRlIHJl cXVlc3QgKi8KKyAgICByZXEudHlwZSA9IFZJUlRJT19CTEtfVF9PVVQ7CisgICAgcmVxLmlvcHJp byA9IDE7CisgICAgcmVxLnNlY3RvciA9IDE7CisgICAgcmVxLmRhdGEgPSBnX21hbGxvYzAoNTEy KTsKKyAgICBzdHJjcHkocmVxLmRhdGEsICJURVNUIik7CisKKyAgICByZXFfYWRkciA9IHZpcnRp b19ibGtfcmVxdWVzdCh0X2FsbG9jLCBkZXYsICZyZXEsIDUxMik7CisKKyAgICBnX2ZyZWUocmVx LmRhdGEpOworCisgICAgLyogTm90aWZ5IGFmdGVyIHByb2Nlc3NpbmcgdGhlIHRoaXJkIHJlcXVl c3QgKi8KKyAgICBxdmlydHF1ZXVlX3NldF91c2VkX2V2ZW50KHF0cywgdnEsIDIpOworICAgIGZy ZWVfaGVhZCA9IHF2aXJ0cXVldWVfYWRkKHF0cywgdnEsIHJlcV9hZGRyLCAxNiwgZmFsc2UsIHRy dWUpOworICAgIHF2aXJ0cXVldWVfYWRkKHF0cywgdnEsIHJlcV9hZGRyICsgMTYsIDUxMiwgZmFs c2UsIHRydWUpOworICAgIHF2aXJ0cXVldWVfYWRkKHF0cywgdnEsIHJlcV9hZGRyICsgNTI4LCAx LCB0cnVlLCBmYWxzZSk7CisgICAgcXZpcnRxdWV1ZV9raWNrKHF0cywgZGV2LCB2cSwgZnJlZV9o ZWFkKTsKKyAgICB3cml0ZV9oZWFkID0gZnJlZV9oZWFkOworCisgICAgLyogTm8gbm90aWZpY2F0 aW9uIGV4cGVjdGVkICovCisgICAgc3RhdHVzID0gcXZpcnRpb193YWl0X3N0YXR1c19ieXRlX25v X2lzcihxdHMsIGRldiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHZxLCByZXFfYWRkciArIDUyOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFFWSVJUSU9fQkxLX1RJTUVPVVRfVVMpOworICAgIGdfYXNzZXJ0X2NtcGlu dChzdGF0dXMsID09LCAwKTsKKworICAgIGd1ZXN0X2ZyZWUodF9hbGxvYywgcmVxX2FkZHIpOwor CisgICAgLyogUmVhZCByZXF1ZXN0ICovCisgICAgcmVxLnR5cGUgPSBWSVJUSU9fQkxLX1RfSU47 CisgICAgcmVxLmlvcHJpbyA9IDE7CisgICAgcmVxLnNlY3RvciA9IDE7CisgICAgcmVxLmRhdGEg PSBnX21hbGxvYzAoNTEyKTsKKworICAgIHJlcV9hZGRyID0gdmlydGlvX2Jsa19yZXF1ZXN0KHRf YWxsb2MsIGRldiwgJnJlcSwgNTEyKTsKKworICAgIGdfZnJlZShyZXEuZGF0YSk7CisKKyAgICBm cmVlX2hlYWQgPSBxdmlydHF1ZXVlX2FkZChxdHMsIHZxLCByZXFfYWRkciwgMTYsIGZhbHNlLCB0 cnVlKTsKKyAgICBxdmlydHF1ZXVlX2FkZChxdHMsIHZxLCByZXFfYWRkciArIDE2LCA1MTIsIHRy dWUsIHRydWUpOworICAgIHF2aXJ0cXVldWVfYWRkKHF0cywgdnEsIHJlcV9hZGRyICsgNTI4LCAx LCB0cnVlLCBmYWxzZSk7CisKKyAgICBxdmlydHF1ZXVlX2tpY2socXRzLCBkZXYsIHZxLCBmcmVl X2hlYWQpOworCisgICAgLyogV2UgZ2V0IGp1c3Qgb25lIG5vdGlmaWNhdGlvbiBmb3IgYm90aCBy ZXF1ZXN0cyAqLworICAgIHF2aXJ0aW9fd2FpdF91c2VkX2VsZW0ocXRzLCBkZXYsIHZxLCB3cml0 ZV9oZWFkLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUVZJUlRJT19CTEtfVElN RU9VVF9VUyk7CisgICAgZ19hc3NlcnQocXZpcnRxdWV1ZV9nZXRfYnVmKHF0cywgdnEsICZkZXNj X2lkeCwgTlVMTCkpOworICAgIGdfYXNzZXJ0X2NtcGludChkZXNjX2lkeCwgPT0sIGZyZWVfaGVh ZCk7CisKKyAgICBzdGF0dXMgPSByZWFkYihyZXFfYWRkciArIDUyOCk7CisgICAgZ19hc3NlcnRf Y21waW50KHN0YXR1cywgPT0sIDApOworCisgICAgZGF0YSA9IGdfbWFsbG9jMCg1MTIpOworICAg IHF0ZXN0X21lbXJlYWQocXRzLCByZXFfYWRkciArIDE2LCBkYXRhLCA1MTIpOworICAgIGdfYXNz ZXJ0X2NtcHN0cihkYXRhLCA9PSwgIlRFU1QiKTsKKyAgICBnX2ZyZWUoZGF0YSk7CisKKyAgICBn dWVzdF9mcmVlKHRfYWxsb2MsIHJlcV9hZGRyKTsKKworICAgIC8qIEVuZCB0ZXN0ICovCisgICAg cXBjaV9tc2l4X2Rpc2FibGUocGRldi0+cGRldik7CisKKyAgICBxdmlydHF1ZXVlX2NsZWFudXAo ZGV2LT5idXMsIHZxLCB0X2FsbG9jKTsKK30KKworc3RhdGljIHZvaWQgcGNpX2hvdHBsdWcodm9p ZCAqb2JqLCB2b2lkICpkYXRhLCBRR3Vlc3RBbGxvY2F0b3IgKnRfYWxsb2MpCit7CisgICAgUVZp cnRpb1BDSURldmljZSAqZGV2MSA9IG9iajsKKyAgICBRVmlydGlvUENJRGV2aWNlICpkZXY7Cisg ICAgUVRlc3RTdGF0ZSAqcXRzID0gZGV2MS0+cGRldi0+YnVzLT5xdHM7CisKKyAgICAvKiBwbHVn IHNlY29uZGFyeSBkaXNrICovCisgICAgcXRlc3RfcW1wX2RldmljZV9hZGQocXRzLCAidmhvc3Qt dXNlci1ibGstcGNpIiwgImRydjEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICJ7J2FkZHIn OiAlcywgJ2NoYXJkZXYnOiAnY2hhcjInfSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry aW5naWZ5KFBDSV9TTE9UX0hQKSAiLjAiKTsKKworICAgIGRldiA9IHZpcnRpb19wY2lfbmV3KGRl djEtPnBkZXYtPmJ1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAmKFFQQ0lBZGRyZXNzKSB7 IC5kZXZmbiA9IFFQQ0lfREVWRk4oUENJX1NMT1RfSFAsIDApCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChkZXYpOworICAg IGdfYXNzZXJ0X2NtcGludChkZXYtPnZkZXYuZGV2aWNlX3R5cGUsID09LCBWSVJUSU9fSURfQkxP Q0spOworICAgIHF2aXJ0aW9fcGNpX2RldmljZV9kaXNhYmxlKGRldik7CisgICAgcW9zX29iamVj dF9kZXN0cm95KChRT1NHcmFwaE9iamVjdCAqKWRldik7CisKKyAgICAvKiB1bnBsdWcgc2Vjb25k YXJ5IGRpc2sgKi8KKyAgICBxcGNpX3VucGx1Z19hY3BpX2RldmljZV90ZXN0KHF0cywgImRydjEi LCBQQ0lfU0xPVF9IUCk7Cit9CisKKy8qCisgKiBDaGVjayB0aGF0IHNldHRpbmcgdGhlIHZyaW5n IGFkZHIgb24gYSBub24tZXhpc3RlbnQgdmlydHF1ZXVlIGRvZXMKKyAqIG5vdCBjcmFzaC4KKyAq Lworc3RhdGljIHZvaWQgdGVzdF9ub25leGlzdGVudF92aXJ0cXVldWUodm9pZCAqb2JqLCB2b2lk ICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUd1ZXN0QWxs b2NhdG9yICp0X2FsbG9jKQoreworICAgIFFWaG9zdFVzZXJCbGtQQ0kgKmJsayA9IG9iajsKKyAg ICBRVmlydGlvUENJRGV2aWNlICpwZGV2ID0gJmJsay0+cGNpX3ZkZXY7CisgICAgUVBDSUJhciBi YXIwOworICAgIFFQQ0lEZXZpY2UgKmRldjsKKworICAgIGRldiA9IHFwY2lfZGV2aWNlX2ZpbmQo cGRldi0+cGRldi0+YnVzLCBRUENJX0RFVkZOKDQsIDApKTsKKyAgICBnX2Fzc2VydChkZXYgIT0g TlVMTCk7CisgICAgcXBjaV9kZXZpY2VfZW5hYmxlKGRldik7CisKKyAgICBiYXIwID0gcXBjaV9p b21hcChkZXYsIDAsIE5VTEwpOworCisgICAgcXBjaV9pb193cml0ZWIoZGV2LCBiYXIwLCBWSVJU SU9fUENJX1FVRVVFX1NFTCwgMik7CisgICAgcXBjaV9pb193cml0ZWwoZGV2LCBiYXIwLCBWSVJU SU9fUENJX1FVRVVFX1BGTiwgMSk7CisKKyAgICBnX2ZyZWUoZGV2KTsKK30KKworc3RhdGljIGNv bnN0IGNoYXIgKnF0ZXN0X3FlbXVfc3RvcmFnZV9kYWVtb25fYmluYXJ5KHZvaWQpCit7CisgICAg Y29uc3QgY2hhciAqcWVtdV9zdG9yYWdlX2RhZW1vbl9iaW47CisKKyAgICBxZW11X3N0b3JhZ2Vf ZGFlbW9uX2JpbiA9IGdldGVudigiUVRFU1RfUUVNVV9TVE9SQUdFX0RBRU1PTl9CSU5BUlkiKTsK KyAgICBpZiAoIXFlbXVfc3RvcmFnZV9kYWVtb25fYmluKSB7CisgICAgICAgIGZwcmludGYoc3Rk ZXJyLCAiRW52aXJvbm1lbnQgdmFyaWFibGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgIlFU RVNUX1FFTVVfU1RPUkFHRV9EQUVNT05fQklOQVJZIHJlcXVpcmVkXG4iKTsKKyAgICAgICAgZXhp dCgwKTsKKyAgICB9CisKKyAgICByZXR1cm4gcWVtdV9zdG9yYWdlX2RhZW1vbl9iaW47Cit9CisK K3N0YXRpYyB2b2lkIGRyaXZlX2Rlc3Ryb3kodm9pZCAqcGF0aCkKK3sKKyAgICB1bmxpbmsocGF0 aCk7CisgICAgZ19mcmVlKHBhdGgpOworICAgIHFvc19pbnZhbGlkYXRlX2NvbW1hbmRfbGluZSgp OworfQorCitzdGF0aWMgY2hhciAqZHJpdmVfY3JlYXRlKHZvaWQpCit7CisgICAgaW50IGZkLCBy ZXQ7CisgICAgLyoqIHZob3N0LXVzZXItYmxrIHdvbid0IHJlY29nbml6ZSBkcml2ZSBsb2NhdGVk IGluIC90bXAgKi8KKyAgICBjaGFyICp0X3BhdGggPSBnX3N0cmR1cCgicXRlc3QuWFhYWFhYIik7 CisKKyAgICAvKiogQ3JlYXRlIGEgdGVtcG9yYXJ5IHJhdyBpbWFnZSAqLworICAgIGZkID0gbWtz dGVtcCh0X3BhdGgpOworICAgIGdfYXNzZXJ0X2NtcGludChmZCwgPj0sIDApOworICAgIHJldCA9 IGZ0cnVuY2F0ZShmZCwgVEVTVF9JTUFHRV9TSVpFKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQocmV0 LCA9PSwgMCk7CisgICAgY2xvc2UoZmQpOworCisgICAgZ190ZXN0X3F1ZXVlX2Rlc3Ryb3koZHJp dmVfZGVzdHJveSwgdF9wYXRoKTsKKyAgICByZXR1cm4gdF9wYXRoOworfQorCitzdGF0aWMgY2hh ciBzb2NrX3BhdGhfdGVtcGF0ZVtdID0gIi90bXAvcXRlc3Qudmhvc3RfdXNlcl9ibGsuWFhYWFhY IjsKK3N0YXRpYyBjaGFyIHFtcF9zb2NrX3BhdGhfdGVtcGF0ZVtdID0gIi90bXAvcXRlc3Qudmhv c3RfdXNlcl9ibGsucW1wLlhYWFhYWCI7CisKK3N0YXRpYyB2b2lkIHF1aXRfc3RvcmFnZV9kYWVt b24odm9pZCAqcW1wX3Rlc3Rfc3RhdGUpCit7CisgICAgY29uc3QgY2hhciBxdWl0X3N0cltdID0g InsgJ2V4ZWN1dGUnOiAncXVpdCcgfSI7CisKKyAgICAvKiBCZWZvcmUgcXVpdGluZyBzdG9yYXRl LWRhZW1vbiwgcXVpdCBxZW11IHRvIGF2b2lkIGR1YmlvdXMgbWVzc2FnZXMgKi8KKyAgICBxb2Jq ZWN0X3VucmVmKHF0ZXN0X3FtcChnbG9iYWxfcXRlc3QsIHF1aXRfc3RyKSk7CisKKyAgICAvKgor ICAgICAqIEdpdmUgc3RvcmFnZS1kYWVtb24gZW5vdWdoIHRpbWUgdG8gd2FrZSB1cCZ0ZXJtaW5h dGUKKyAgICAgKiB2dV9jbGllbnRfdHJpcCBjb3JvdXRpbmUgc28gdGhlIENvcm91dGluZSBvYmpl Y3QgY291bGQKKyAgICAgKiBiZSBjbGVhbmVkIHVwLiBPdGhlcndpc2UgTGVha1Nhbml0aXplciB3 b3VsZCBjb21wbGFpbgorICAgICAqIGFib3V0IG1lbW9yeSBsZWFrcy4KKyAgICAgKi8KKyAgICBn X3VzbGVlcCgxMDAwKTsKKworICAgIHFvYmplY3RfdW5yZWYocXRlc3RfcW1wKChRVGVzdFN0YXRl ICopcW1wX3Rlc3Rfc3RhdGUsIHF1aXRfc3RyKSk7CisgICAgZ19mcmVlKHFtcF90ZXN0X3N0YXRl KTsKK30KKworc3RhdGljIGNoYXIgKnN0YXJ0X3Zob3N0X3VzZXJfYmxrKEdTdHJpbmcgKmNtZF9s aW5lLCBpbnQgdnVzX2luc3RhbmNlcykKK3sKKyAgICBjb25zdCBjaGFyICp2aG9zdF91c2VyX2Js a19iaW4gPSBxdGVzdF9xZW11X3N0b3JhZ2VfZGFlbW9uX2JpbmFyeSgpOworICAgIGludCBmZCwg cW1wX2ZkLCBpOworICAgIFFUZXN0U3RhdGUgKnFtcF90ZXN0X3N0YXRlOworICAgIGdjaGFyICpp bWdfcGF0aDsKKyAgICBjaGFyICpzb2NrX3BhdGggPSBOVUxMOworICAgIGNoYXIgKnFtcF9zb2Nr X3BhdGggPSBnX3N0cmR1cChxbXBfc29ja19wYXRoX3RlbXBhdGUpOworICAgIEdTdHJpbmcgKnN0 b3JhZ2VfZGFlbW9uX2NvbW1hbmQgPSBnX3N0cmluZ19uZXcoTlVMTCk7CisKKyAgICBxbXBfZmQg PSBta3N0ZW1wKHFtcF9zb2NrX3BhdGgpOworICAgIGdfYXNzZXJ0X2NtcGludChxbXBfZmQsID49 LCAwKTsKKyAgICBnX3Rlc3RfcXVldWVfZGVzdHJveShkcml2ZV9kZXN0cm95LCBxbXBfc29ja19w YXRoKTsKKworICAgIGdfc3RyaW5nX2FwcGVuZF9wcmludGYoc3RvcmFnZV9kYWVtb25fY29tbWFu ZCwKKyAgICAgICAgICAgICJleGVjICVzICIKKyAgICAgICAgICAgICItLWNoYXJkZXYgc29ja2V0 LGlkPXFtcCxwYXRoPSVzLHNlcnZlcixub3dhaXQgLS1tb25pdG9yIGNoYXJkZXY9cW1wICIsCisg ICAgICAgICAgICB2aG9zdF91c2VyX2Jsa19iaW4sIHFtcF9zb2NrX3BhdGgpOworCisgICAgZ19z dHJpbmdfYXBwZW5kX3ByaW50ZihjbWRfbGluZSwKKyAgICAgICAgICAgICIgLW9iamVjdCBtZW1v cnktYmFja2VuZC1tZW1mZCxpZD1tZW0sc2l6ZT0yNTZNLHNoYXJlPW9uIC1NIG1lbW9yeS1iYWNr ZW5kPW1lbSAiKTsKKworICAgIGZvciAoaSA9IDA7IGkgPCB2dXNfaW5zdGFuY2VzOyBpKyspIHsK KyAgICAgICAgc29ja19wYXRoID0gZ19zdHJkdXAoc29ja19wYXRoX3RlbXBhdGUpOworICAgICAg ICBmZCA9IG1rc3RlbXAoc29ja19wYXRoKTsKKyAgICAgICAgZ19hc3NlcnRfY21waW50KGZkLCA+ PSwgMCk7CisgICAgICAgIGdfdGVzdF9xdWV1ZV9kZXN0cm95KGRyaXZlX2Rlc3Ryb3ksIHNvY2tf cGF0aCk7CisgICAgICAgIC8qIGNyZWF0ZSBpbWFnZSBmaWxlICovCisgICAgICAgIGltZ19wYXRo ID0gZHJpdmVfY3JlYXRlKCk7CisgICAgICAgIGdfc3RyaW5nX2FwcGVuZF9wcmludGYoc3RvcmFn ZV9kYWVtb25fY29tbWFuZCwKKyAgICAgICAgICAgICItLWJsb2NrZGV2IGRyaXZlcj1maWxlLG5v ZGUtbmFtZT1kaXNrJWQsZmlsZW5hbWU9JXMgIgorICAgICAgICAgICAgIi0tZXhwb3J0IHR5cGU9 dmhvc3QtdXNlci1ibGssaWQ9ZGlzayVkLGFkZHIudHlwZT11bml4LGFkZHIucGF0aD0lcywiCisg ICAgICAgICAgICAibm9kZS1uYW1lPWRpc2slaSx3cml0YWJsZT1vbiAiLAorICAgICAgICAgICAg aSwgaW1nX3BhdGgsIGksIHNvY2tfcGF0aCwgaSk7CisKKyAgICAgICAgZ19zdHJpbmdfYXBwZW5k X3ByaW50ZihjbWRfbGluZSwgIi1jaGFyZGV2IHNvY2tldCxpZD1jaGFyJWQscGF0aD0lcyAiLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgKyAxLCBzb2NrX3BhdGgpOworICAgIH0K KworICAgIGdfdGVzdF9tZXNzYWdlKCJzdGFydGluZyB2aG9zdC11c2VyIGJhY2tlbmQ6ICVzIiwK KyAgICAgICAgICAgICAgICAgICBzdG9yYWdlX2RhZW1vbl9jb21tYW5kLT5zdHIpOworICAgIHBp ZF90IHBpZCA9IGZvcmsoKTsKKyAgICBpZiAocGlkID09IDApIHsKKyAgICAgICAgZXhlY2xwKCIv YmluL3NoIiwgInNoIiwgIi1jIiwgc3RvcmFnZV9kYWVtb25fY29tbWFuZC0+c3RyLCBOVUxMKTsK KyAgICAgICAgZXhpdCgxKTsKKyAgICB9CisgICAgZ19zdHJpbmdfZnJlZShzdG9yYWdlX2RhZW1v bl9jb21tYW5kLCB0cnVlKTsKKworICAgIHFtcF90ZXN0X3N0YXRlID0gcXRlc3RfY3JlYXRlX3N0 YXRlX3dpdGhfcW1wX2ZkKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdGVzdF9zb2Nr ZXRfY2xpZW50KHFtcF9zb2NrX3BhdGgpKTsKKyAgICAvKgorICAgICAqIEFzayBxZW11LXN0b3Jh Z2UtZGFlbW9uIHRvIHF1aXQgc28gaXQKKyAgICAgKiB3aWxsIG5vdCBibG9jayBzY3JpcHRzL3Rh cC1kcml2ZXIucGwuCisgICAgICovCisgICAgZ190ZXN0X3F1ZXVlX2Rlc3Ryb3kocXVpdF9zdG9y YWdlX2RhZW1vbiwgcW1wX3Rlc3Rfc3RhdGUpOworCisgICAgcW9iamVjdF91bnJlZihxdGVzdF9x bXAocW1wX3Rlc3Rfc3RhdGUsICJ7J2V4ZWN1dGUnOiAncW1wX2NhcGFiaWxpdGllcyd9IikpOwor ICAgIHJldHVybiBzb2NrX3BhdGg7Cit9CisKK3N0YXRpYyB2b2lkICp2aG9zdF91c2VyX2Jsa190 ZXN0X3NldHVwKEdTdHJpbmcgKmNtZF9saW5lLCB2b2lkICphcmcpCit7CisgICAgc3RhcnRfdmhv c3RfdXNlcl9ibGsoY21kX2xpbmUsIDEpOworICAgIHJldHVybiBhcmc7Cit9CisKKy8qCisgKiBT ZXR1cCBmb3IgaG90cGx1Zy4KKyAqCisgKiBTaW5jZSB2aG9zdC11c2VyIHNlcnZlciBvbmx5IHNl cnZlcyBvbmUgdmhvc3QtdXNlciBjbGllbnQgb25lIHRpbWUsCisgKiBhbm90aGVyIGV4cHJvdAor ICoKKyAqLworc3RhdGljIHZvaWQgKnZob3N0X3VzZXJfYmxrX2hvdHBsdWdfdGVzdF9zZXR1cChH U3RyaW5nICpjbWRfbGluZSwgdm9pZCAqYXJnKQoreworICAgIC8qICItY2hhcmRldiBzb2NrZXQs aWQ9Y2hhcjIiIGlzIHVzZWQgZm9yIHBjaV9ob3RwbHVnKi8KKyAgICBzdGFydF92aG9zdF91c2Vy X2JsayhjbWRfbGluZSwgMik7CisgICAgcmV0dXJuIGFyZzsKK30KKworc3RhdGljIHZvaWQgcmVn aXN0ZXJfdmhvc3RfdXNlcl9ibGtfdGVzdCh2b2lkKQoreworICAgIFFPU0dyYXBoVGVzdE9wdGlv bnMgb3B0cyA9IHsKKyAgICAgICAgLmJlZm9yZSA9IHZob3N0X3VzZXJfYmxrX3Rlc3Rfc2V0dXAs CisgICAgfTsKKworICAgIC8qCisgICAgICogdGVzdHMgZm9yIHZob3N0LXVzZXItYmxrIGFuZCB2 aG9zdC11c2VyLWJsay1wY2kKKyAgICAgKiBUaGUgdGVzdHMgYXJlIGJvcnJvd2VkIGZyb20gdGVz dHMvdmlydGlvLWJsay10ZXN0LmMuIEJ1dCBzb21lIHRlc3RzCisgICAgICogcmVnYXJkaW5nIGJs b2NrX3Jlc2l6ZSBkb24ndCB3b3JrIGZvciB2aG9zdC11c2VyLWJsay4KKyAgICAgKiB2aG9zdC11 c2VyLWJsayBkZXZpY2UgZG9lc24ndCBoYXZlIC1kcml2ZSwgc28gdGVzdHMgY29udGFpbmluZwor ICAgICAqIGJsb2NrX3Jlc2l6ZSBhcmUgYWxzbyBhYmFuZG9uZWQsCisgICAgICogIC0gY29uZmln CisgICAgICogIC0gcmVzaXplCisgICAgICovCisgICAgcW9zX2FkZF90ZXN0KCJiYXNpYyIsICJ2 aG9zdC11c2VyLWJsayIsIGJhc2ljLCAmb3B0cyk7CisgICAgcW9zX2FkZF90ZXN0KCJpbmRpcmVj dCIsICJ2aG9zdC11c2VyLWJsayIsIGluZGlyZWN0LCAmb3B0cyk7CisgICAgcW9zX2FkZF90ZXN0 KCJpZHgiLCAidmhvc3QtdXNlci1ibGstcGNpIiwgaWR4LCAmb3B0cyk7CisgICAgcW9zX2FkZF90 ZXN0KCJueHZpcnRxIiwgInZob3N0LXVzZXItYmxrLXBjaSIsCisgICAgICAgICAgICAgICAgIHRl c3Rfbm9uZXhpc3RlbnRfdmlydHF1ZXVlLCAmb3B0cyk7CisKKyAgICBvcHRzLmJlZm9yZSA9IHZo b3N0X3VzZXJfYmxrX2hvdHBsdWdfdGVzdF9zZXR1cDsKKyAgICBxb3NfYWRkX3Rlc3QoImhvdHBs dWciLCAidmhvc3QtdXNlci1ibGstcGNpIiwgcGNpX2hvdHBsdWcsICZvcHRzKTsKK30KKworbGli cW9zX2luaXQocmVnaXN0ZXJfdmhvc3RfdXNlcl9ibGtfdGVzdCk7CmRpZmYgLS1naXQgYS90ZXN0 cy9xdGVzdC9saWJxb3MvbWVzb24uYnVpbGQgYi90ZXN0cy9xdGVzdC9saWJxb3MvbWVzb24uYnVp bGQKaW5kZXggMWNkZGY1YmRhYS4uMWY1YzhmMTA1MyAxMDA2NDQKLS0tIGEvdGVzdHMvcXRlc3Qv bGlicW9zL21lc29uLmJ1aWxkCisrKyBiL3Rlc3RzL3F0ZXN0L2xpYnFvcy9tZXNvbi5idWlsZApA QCAtMzIsNiArMzIsNyBAQCBsaWJxb3Nfc3JjcyA9IGZpbGVzKCcuLi9saWJxdGVzdC5jJywKICAg ICAgICAgJ3ZpcnRpby05cC5jJywKICAgICAgICAgJ3ZpcnRpby1iYWxsb29uLmMnLAogICAgICAg ICAndmlydGlvLWJsay5jJywKKyAgICAgICAgJ3Zob3N0LXVzZXItYmxrLmMnLAogICAgICAgICAn dmlydGlvLW1taW8uYycsCiAgICAgICAgICd2aXJ0aW8tbmV0LmMnLAogICAgICAgICAndmlydGlv LXBjaS5jJywKZGlmZiAtLWdpdCBhL3Rlc3RzL3F0ZXN0L21lc29uLmJ1aWxkIGIvdGVzdHMvcXRl c3QvbWVzb24uYnVpbGQKaW5kZXggYmE4ZWJlZWFkNi4uZThkMDQyNGMwZiAxMDA2NDQKLS0tIGEv dGVzdHMvcXRlc3QvbWVzb24uYnVpbGQKKysrIGIvdGVzdHMvcXRlc3QvbWVzb24uYnVpbGQKQEAg LTE5NSw2ICsxOTUsNyBAQCBxb3NfdGVzdF9zcy5hZGQoCiApCiBxb3NfdGVzdF9zcy5hZGQod2hl bjogJ0NPTkZJR19WSVJURlMnLCBpZl90cnVlOiBmaWxlcygndmlydGlvLTlwLXRlc3QuYycpKQog cW9zX3Rlc3Rfc3MuYWRkKHdoZW46ICdDT05GSUdfVkhPU1RfVVNFUicsIGlmX3RydWU6IGZpbGVz KCd2aG9zdC11c2VyLXRlc3QuYycpKQorcW9zX3Rlc3Rfc3MuYWRkKHdoZW46IFsnQ09ORklHX0xJ TlVYJywgJ0NPTkZJR19UT09MUyddLCBpZl90cnVlOiBmaWxlcygndmhvc3QtdXNlci1ibGstdGVz dC5jJykpCiAKIHRwbWVtdV9maWxlcyA9IFsndHBtLWVtdS5jJywgJ3RwbS11dGlsLmMnLCAndHBt LXRlc3RzLmMnXQogCkBAIC0yMzMsNiArMjM0LDcgQEAgZm9yZWFjaCBkaXIgOiB0YXJnZXRfZGly cwogICBlbmRpZgogICBxdGVzdF9lbnYuc2V0KCdHX1RFU1RfREJVU19EQUVNT04nLCBtZXNvbi5z b3VyY2Vfcm9vdCgpIC8gJ3Rlc3RzL2RidXMtdm1zdGF0ZS1kYWVtb24uc2gnKQogICBxdGVzdF9l bnYuc2V0KCdRVEVTVF9RRU1VX0JJTkFSWScsICcuL3FlbXUtc3lzdGVtLScgKyB0YXJnZXRfYmFz ZSkKKyAgcXRlc3RfZW52LnNldCgnUVRFU1RfUUVNVV9TVE9SQUdFX0RBRU1PTl9CSU5BUlknLCAn Li9zdG9yYWdlLWRhZW1vbi9xZW11LXN0b3JhZ2UtZGFlbW9uJykKICAgCiAgIGZvcmVhY2ggdGVz dCA6IHRhcmdldF9xdGVzdHMKICAgICAjIEV4ZWN1dGFibGVzIGFyZSBzaGFyZWQgYWNyb3NzIHRh cmdldHMsIGRlY2xhcmUgdGhlbSBvbmx5IHRoZSBmaXJzdCB0aW1lIHdlCi0tIAoyLjI2LjIKCg==