From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id sbYgBYd3fGpXmCAAWB0awg (envelope-from ) for ; Wed, 12 Aug 2026 09:39:19 -0400 Authentication-Results: simark.ca; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=NFol0lqj; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 10D771E166; Wed, 12 Aug 2026 09:39:19 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-6.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id A38B41E033 for ; Wed, 12 Aug 2026 09:39:16 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 3D7C14BA9037 for ; Wed, 12 Aug 2026 13:39:16 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 3D7C14BA9037 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=NFol0lqj Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.10]) by sourceware.org (Postfix) with ESMTPS id E40D54BB24DF for ; Wed, 12 Aug 2026 13:30:01 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org E40D54BB24DF Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org E40D54BB24DF Authentication-Results: sourceware.org; arc=none smtp.remote-ip=192.198.163.10 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1786541402; cv=none; b=GCVbouhrahiMgs3lTpKlbx+ZVtauEdin1PhZF+C3CmxOH5CpnPcOaYMR8hBshHbJgVtH6BxzkAdHXd4RgXc2jDa+hgaB5tSEzmZLXY7Rf4USYUFKmq3yDL5wBM34ZZDFYZd1y965b/kuWSbInhPJTuEgvDJF2X91XeOoMPbYQts= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1786541402; c=relaxed/simple; bh=V6zz+1ccJz5vOBD0gF0XUcm+hqpGNcCTHTxt0Q9ln/0=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=fKmJZtj17EmEci8HclFNR3gx0hg4rmVNWUU0sAjMWUh1wB4BZwIBC+4vijgtI/jGR3lE9rYOeVme3mVzgY5khJ+NmrHX2tIZBu2vF2RDnjFgKQiys9ajbDZeLjf4qTHUn0+8ZT4vkStSI7FfrE3pYjsI+40KxEI7F1qGH5aWwRo= ARC-Authentication-Results: i=1; sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=NFol0lqj DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E40D54BB24DF DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1786541402; x=1818077402; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=V6zz+1ccJz5vOBD0gF0XUcm+hqpGNcCTHTxt0Q9ln/0=; b=NFol0lqjoEKaGy1YD4eKoQy8YMqW+jjOORXAxiMKVGu+hJbHFFedTZBX WyaJzES42nZSw5p18N3OmF2e/UU9JCi8N+f/h5rQmbaoYu9r6wbOrTBxN E6JsfiS6+bCODn/dSl15kfSksVGzc//dqHKRljyE56Kdlb9YXpSiMZS8c wPWqv/g0gdg8TC+tQpGPhlHTgRNZmHHJKs4wHjk2XrmGI1zzuvdt82yCY uO8UyJmes4clyB7lrBPiCY+fQS+iGWnb0w+G70mkTgv1qCg/LMPG+KI4k mIU+ALGWGOI4RxcVwiSWmUpSu3G8OMRA28D05g6hoPPSPeX2vmA4LQ7DC Q==; X-CSE-ConnectionGUID: mBe96DOrQwSALoESyltGZg== X-CSE-MsgGUID: 05TdrCWtQ5CV2RHHCMBfXg== X-IronPort-AV: E=McAfee;i="6800,10657,11872"; a="98457820" X-IronPort-AV: E=Sophos;i="6.25,219,1779174000"; d="scan'208";a="98457820" Received: from orviesa004.jf.intel.com ([10.64.159.144]) by fmvoesa104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Aug 2026 06:30:02 -0700 X-CSE-ConnectionGUID: Qp5MsY4TQZGsxB5+/WTuDA== X-CSE-MsgGUID: I2FZSiyBSxyzcrHriINNiw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.25,219,1779174000"; d="scan'208";a="267510185" Received: from gkldtt-dev-004.igk.intel.com (HELO localhost) ([10.123.221.202]) by orviesa004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Aug 2026 06:30:00 -0700 From: Markus Metzger To: gdb-patches@sourceware.org Cc: Tankut Baris Aktemur , Abdul Basit Ijaz , Stephan Rohr Subject: [PATCH v4 36/44] testsuite, sycl: add SYCL support Date: Wed, 12 Aug 2026 15:27:56 +0200 Message-ID: <20260812132805.380163-37-markus.t.metzger@intel.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260812132805.380163-1-markus.t.metzger@intel.com> References: <20260812132805.380163-1-markus.t.metzger@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org RnJvbTogVGFua3V0IEJhcmlzIEFrdGVtdXIgPHRhbmt1dC5iYXJpcy5ha3RlbXVyQGludGVsLmNv bT4KCkFkZCBsaWIgZmlsZXMsIGJvYXJkIGZpbGUsIGFuZCBiYXNpYyB0ZXN0IHNjZW5hcmlvcyBm b3IgU1lDTC4gIFRoZQpzY2VuYXJpb3MgdGVzdCB0aGUgYWJpbGl0eSB0byBkZWZpbmUgYW5kIGhp dCBicmVha3BvaW50cyBpbnNpZGUgYW5kCm91dHNpZGUgYSBTWUNMIGtlcm5lbC4gIFRoZSB0ZXN0 IGNhc2VzIGFyZSBza2lwcGVkIGlmIGl0IGlzIGZvdW5kIG91dAp0aGF0IHRoZSBjb21waWxlciBk b2VzIG5vdCBzdXBwb3J0IFNZQ0wuCgpIZXJlIGlzIGEgc2FtcGxlIGNvbW1hbmQgdG8gcnVuIGFs bCBTWUNMIHRlc3RzIG9uIHRoZSBDUFUgdGFyZ2V0CmRldmljZSB1c2luZyB0aGUgSW50ZWzCriBv bmVBUEkgRFBDKysvQysrIENvbXBpbGVyOgoKICAkIG1ha2UgY2hlY2sgVEVTVFM9ImdkYi5zeWNs LyouZXhwIiBcCiAgICBSVU5URVNURkxBR1M9Ik9GRkxPQURfREVWSUNFX0dST1VQPWNwdSBDWFhf Rk9SX1RBUkdFVD1pY3B4IgoKQWx0ZXJuYXRpdmVseSwgdGhlIGludGVsLW9mZmxvYWQgYm9hcmQg ZmlsZSBjYW4gYmUgdXNlZC4gIFRoaXMgY2FuIGJlCm1vcmUgcHJhY3RpY2FsIHRvIHBpY2sgdGhl IHJpZ2h0IGNvbXBpbGVycy4KCiAgJCBtYWtlIGNoZWNrIFRFU1RTPSJnZGIuc3ljbC8qLmV4cCIg XAogICAgUlVOVEVTVEZMQUdTPSJPRkZMT0FEX0RFVklDRV9HUk9VUD1jcHUgLS10YXJnZXRfYm9h cmQ9J2ludGVsLW9mZmxvYWQnIgoKUnVubmluZyB0aGUgR1BVIHRlc3RzIHJlcXVpcmVzIHRoYXQg YSBnZGJzZXJ2ZXIgZXhlY3V0YWJsZSBidWlsdCBmb3IKdGhlIGludGVsZ3QgdGFyZ2V0IGV4aXN0 cyBpbiB0aGUgcGF0aCBhbmQgaXRzIG5hbWUgaXMKJ2dkYnNlcnZlci1pbnRlbGd0Jy4KCkNvLWF1 dGhvcmVkLWJ5OiBBYmR1bCBCYXNpdCBJamF6IDxhYmR1bC5iLmlqYXpAaW50ZWwuY29tPgpDby1h dXRob3JlZC1ieTogU3RlcGhhbiBSb2hyIDxzdGVwaGFuLnJvaHJAaW50ZWwuY29tPgpDby1hdXRo b3JlZC1ieTogTWFya3VzIE1ldHpnZXIgPG1hcmt1cy50Lm1ldHpnZXJAaW50ZWwuY29tPgotLS0K IGdkYi90ZXN0c3VpdGUvUkVBRE1FICAgICAgICAgICAgICAgICAgIHwgICA5ICsKIGdkYi90ZXN0 c3VpdGUvYm9hcmRzL2ludGVsLW9mZmxvYWQuZXhwIHwgIDM2ICsrKwogZ2RiL3Rlc3RzdWl0ZS9n ZGIuc3ljbC9icmVhay5jcHAgICAgICAgfCAxMjcgKysrKysrKysKIGdkYi90ZXN0c3VpdGUvZ2Ri LnN5Y2wvYnJlYWsuZXhwICAgICAgIHwgMjQ2ICsrKysrKysrKysrKysrKwogZ2RiL3Rlc3RzdWl0 ZS9saWIvZ2RiLmV4cCAgICAgICAgICAgICAgfCAgMTcgKy0KIGdkYi90ZXN0c3VpdGUvbGliL2lu dGVsZ3QtdXRpbHMuZXhwICAgIHwgIDQzICsrKwogZ2RiL3Rlc3RzdWl0ZS9saWIvc3ljbC1kZXZp Y2VzLmNwcCAgICAgfCAxMDYgKysrKysrKwogZ2RiL3Rlc3RzdWl0ZS9saWIvc3ljbC1oZWxsby5j cHAgICAgICAgfCAgMzMgKysKIGdkYi90ZXN0c3VpdGUvbGliL3N5Y2wtdXRpbC5jcHAgICAgICAg IHwgMTM1ICsrKysrKysrKwogZ2RiL3Rlc3RzdWl0ZS9saWIvc3ljbC5leHAgICAgICAgICAgICAg fCAzOTkgKysrKysrKysrKysrKysrKysrKysrKysrKwogMTAgZmlsZXMgY2hhbmdlZCwgMTE1MCBp bnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3Rz dWl0ZS9ib2FyZHMvaW50ZWwtb2ZmbG9hZC5leHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIvdGVz dHN1aXRlL2dkYi5zeWNsL2JyZWFrLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IGdkYi90ZXN0c3Vp dGUvZ2RiLnN5Y2wvYnJlYWsuZXhwCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9s aWIvaW50ZWxndC11dGlscy5leHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIvdGVzdHN1aXRlL2xp Yi9zeWNsLWRldmljZXMuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9saWIv c3ljbC1oZWxsby5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIvdGVzdHN1aXRlL2xpYi9zeWNs LXV0aWwuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9saWIvc3ljbC5leHAK CmRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL1JFQURNRSBiL2dkYi90ZXN0c3VpdGUvUkVBRE1F CmluZGV4IGYzNTQxNDRiODcyLi45YTk2MmRiMjgzNSAxMDA2NDQKLS0tIGEvZ2RiL3Rlc3RzdWl0 ZS9SRUFETUUKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9SRUFETUUKQEAgLTM1NCw2ICszNTQsMTUgQEAg Ynkgc3dpdGNoaW5nIHRvIGEgZGlmZmVyZW50IHVzZXIgb24gdGhlIHNhbWUgbWFjaGluZS4gIFRo ZXNlIHVzZXJzCiB3aWxsIGhhdmUgcmFuZG9tIGZpbGVzIGNvcGllZCBpbnRvIHRoZWlyICRIT01F IGRpcmVjdG9yaWVzLCBzbyBpdCBpcyBhCiBnb29kIGlkZWEgdG8gc2V0dXAgbmV3IHVzZXJzIGp1 c3QgZm9yIHRoaXMgcHVycG9zZS4KIAorT0ZGTE9BRF9ERVZJQ0VfR1JPVVAKKworVGhpcyBvcHRp b24gY2FuIGJlIHVzZWQgdG8gcmVzdHJpY3QgdGhlIG9mZmxvYWRpbmcgdGVzdHMgdG8gcnVuIG9u bHkKK29uIGEgc3BlY2lmaWMgZ3JvdXAvZmFtaWx5IG9mIGRldmljZXMuICBNdWx0aXBsZSB0YXJn ZXQgZGV2aWNlIGdyb3VwcworY2FuIGJlIHNlbGVjdGVkIGJ5IHBhc3NpbmcgYSBjb21tYSBzZXBh cmF0ZWQgbGlzdC4gIEJ5IGRlZmF1bHQsIGl0IGlzCitzZXQgdG8gImNwdSxncHUsYWNjZWxlcmF0 b3IiLiAgRXhhbXBsZSB1c2U6CisKKwltYWtlIGNoZWNrIFJVTlRFU1RGTEFHUz0nT0ZGTE9BRF9E RVZJQ0VfR1JPVVA9ImdwdSxjcHUiJworCiBUZXN0aW5nIEFsbCBTaW1wbGUgQm9hcmRzCiAqKioq KioqKioqKioqKioqKioqKioqKioqCiAKZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvYm9hcmRz L2ludGVsLW9mZmxvYWQuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9ib2FyZHMvaW50ZWwtb2ZmbG9hZC5l eHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmI1ZDkyY2UyZjMxCi0t LSAvZGV2L251bGwKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9ib2FyZHMvaW50ZWwtb2ZmbG9hZC5leHAK QEAgLTAsMCArMSwzNiBAQAorIyBDb3B5cmlnaHQgMjAyMi0yMDI2IEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y CisjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCisjIFRoaXMgZmlsZSBpcyBhIGRl amFnbnUgImJvYXJkIGZpbGUiIGFuZCBpcyB1c2VkIGZvciBydW5uaW5nIHRoZQorIyBTWUNMIHRl c3RzdWl0ZS4KKyMKKyMgRXhhbXBsZSB1c2FnZToKKyMgYmFzaCQgbWFrZSBjaGVjayBURVNUUz0i Z2RiLnN5Y2wvKi5leHAiIFJVTlRFU1RGTEFHUz0nLS10YXJnZXRfYm9hcmQ9aW50ZWwtb2ZmbG9h ZCcKKworbG9hZF9nZW5lcmljX2NvbmZpZyAidW5peCIKK3Byb2Nlc3NfbXVsdGlsaWJfb3B0aW9u cyAiIgorbG9hZF9ib2FyZF9kZXNjcmlwdGlvbiAibG9jYWwtYm9hcmQiCisKK3NldCBnZGJfdGVz dF90aW1lb3V0IDEwMAorCit1bnNldF9ib2FyZF9pbmZvIGlzcmVtb3RlCitzZXRfYm9hcmRfaW5m byBpc3JlbW90ZSAwCisKK3NldF9ib2FyZF9pbmZvIGNvbXBpbGVyICAgICJpY3giCitzZXRfYm9h cmRfaW5mbyBjKytjb21waWxlciAiaWNweCIKK3NldF9ib2FyZF9pbmZvIGY5MGNvbXBpbGVyICJp ZngiCisKK3B1dHMgIkluZm86IFVzaW5nIHRpbWVvdXQgdmFsdWUgJGdkYl90ZXN0X3RpbWVvdXQi CitwdXRzICJJbmZvOiBVc2luZyBDKysgY29tcGlsZXIgaWNweCBhbmQgRm9ydHJhbiBjb21waWxl ciBpZngiCmRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5zeWNsL2JyZWFrLmNwcCBiL2dk Yi90ZXN0c3VpdGUvZ2RiLnN5Y2wvYnJlYWsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi5lN2JlOTI2MTgwZAotLS0gL2Rldi9udWxsCisrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLnN5Y2wvYnJlYWsuY3BwCkBAIC0wLDAgKzEsMTI3IEBACisvKiBUaGlzIHRlc3RjYXNl IGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorCisgICBDb3B5cmlnaHQgMjAyNiBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgorICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LiAgKi8KKworI2luY2x1ZGUgPHN5Y2wvc3ljbC5ocHA+CisjaW5jbHVkZSAic3ljbC11dGlsLmNw cCIKKworc3RhdGljIGludAorZm9vICgpCit7IC8qIGZvby5lbnRyeSAqLworICBpbnQgYSA9IDA7 IC8qIGZvby5lbnRyeSAqLworICBpbnQgYiA9IDE7IC8qIGZvby4xICovCisgIHJldHVybiBhICsg YjsKK30KKworc3RhdGljIGludAorYmFyICgpCit7IC8qIGJhci5lbnRyeSAqLworICBpbnQgYSA9 IDA7IC8qIGJhci5lbnRyeSAqLworICBpbnQgYiA9IDE7IC8qIGJhci4xICovCisgIHJldHVybiBh ICsgYjsKK30KKworc3RydWN0IFNpbmdsZVRhc2sKK3sKKyAgLyogVGVzdCB0aGF0IHdlJ3JlIG5v dCBsZWFraW5nIGhvc3QgYnJlYWtwb2ludHMgaW50byB0aGUga2VybmVsLiAgKi8KKyAgU2luZ2xl VGFzayAoKQorICAgIHsKKyAgICAgIGludCBhID0gMDsgLyogaG9zdC4xICovCisgICAgfQorCisg IHZvaWQgb3BlcmF0b3IgKCkgKCkgY29uc3QgLyoga2VybmVsLnNpbmdsZV90YXNrICovCisgICAg eyAvKiBrZXJuZWwuc2luZ2xlX3Rhc2sgKi8KKyAgICAgIGludCBhID0gMDsgLyoga2VybmVsLnNp bmdsZV90YXNrICovCisgICAgICBpbnQgYiA9IDA7IC8qIGtlcm5lbC4xICovCisgICAgICBpbnQg YyA9IGZvbyAoKTsKKyAgICAgIGludCBkID0gMDsgLyoga2VybmVsLjIgKi8KKyAgICAgIGludCBl ID0gYmFyICgpOworICAgIH0KKworICAvKiBUZXN0IHRoYXQgd2UncmUgbm90IGxlYWtpbmcga2Vy bmVsIGJyZWFrcG9pbnRzIGludG8gdGhlIGhvc3QuICAqLworICB+U2luZ2xlVGFzayAoKQorICAg IHsKKyAgICB9Cit9OworCitzdHJ1Y3QgUGFyYWxsZWxGb3IKK3sKKyAgLyogVGVzdCB0aGF0IHdl J3JlIG5vdCBsZWFraW5nIGhvc3QgYnJlYWtwb2ludHMgaW50byB0aGUga2VybmVsLiAgKi8KKyAg UGFyYWxsZWxGb3IgKCkKKyAgICB7CisgICAgICBpbnQgYSA9IDA7IC8qIGhvc3QuMiAqLworICAg IH0KKworICB2b2lkIG9wZXJhdG9yICgpIChzeWNsOjpuZF9pdGVtPDE+IGl0ZW0pIGNvbnN0IC8q IGtlcm5lbC5wYXJhbGxlbF9mb3IgKi8KKyAgICB7IC8qIGtlcm5lbC5wYXJhbGxlbF9mb3IgKi8K KyAgICAgIHN5Y2w6OmlkPDE+IGlkID0gaXRlbS5nZXRfZ2xvYmFsX2lkICgpOyAvKiBrZXJuZWwu cGFyYWxsZWxfZm9yICovCisgICAgICBpbnQgZ2lkID0gaWQuZ2V0ICgwKTsKKworICAgICAgaW50 IGEgPSAwOyAvKiBrZXJuZWwuMyAqLworICAgICAgaW50IGIgPSAwOyAvKiBrZXJuZWwuNCAqLwor ICAgICAgaW50IGMgPSAwOyAvKiBrZXJuZWwuNSAqLworICAgICAgaW50IGQgPSAwOyAvKiBrZXJu ZWwuNiAqLworICAgIH0KKworICAvKiBUZXN0IHRoYXQgd2UncmUgbm90IGxlYWtpbmcga2VybmVs IGJyZWFrcG9pbnRzIGludG8gdGhlIGhvc3QuICAqLworICB+UGFyYWxsZWxGb3IgKCkKKyAgICB7 CisgICAgfQorfTsKKworaW50CittYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworICBz eWNsOjpxdWV1ZSBxdWV1ZSB7Z2V0X3N5Y2xfcXVldWUgKGFyZ2MsIGFyZ3YpfTsKKworICAvKiBT dWJtaXQgYSBkdW1teSBrZXJuZWwgdG8gdHJpZ2dlciBhdHRhY2hpbmcuCisKKyAgICAgVGhpcyBp cyBhIGJpdCBhd2t3YXJkLiAgVG8gc3RhcnQgYSB0ZXN0LCBzeWNsX3N0YXJ0IGNvbnRpbnVlcyB0 byB0bworICAgICB6ZU1vZHVsZUNyZWF0ZSBpbnNpZGUgdGhlIHVzZXItbW9kZSBkcml2ZXIgdG8g YXR0YWNoIHRvIHRoZSBncmFwaGljcworICAgICBkZXZpY2UuICBUbyBjb3ZlciBsZWFraW5nIGJy ZWFrcG9pbnRzIGludG8gYW5kIG91dCBvZiBrZXJuZWxzLCB3ZQorICAgICBuZWVkIHRvIGJlIGF0 dGFjaGVkIGJlZm9yZSB3ZSBoaXQgdGhlIGJyZWFrcG9pbnQgYXQgdGhlIFNpbmdsZVRhc2sKKyAg ICAgY3Rvci4KKworICAgICBUaGlzIHdpbGwgZ28gYXdheSB3aXRoIHN1cHBvcnQgZm9yIGF1dG9t YXRpY2FsbHkgYXR0YWNoaW5nLiAgKi8KKyAgcXVldWUuc2luZ2xlX3Rhc2sgKFtdICgpIHt9KTsK KworICBTaW5nbGVUYXNrIHNpbmdsZV90YXNrOworICBmb3IgKGludCBpID0gMDsgaSA8IDI7IGkr KykKKyAgICB7CisgICAgICBxdWV1ZS5zaW5nbGVfdGFzayAoc2luZ2xlX3Rhc2spOworICAgICAg cXVldWUud2FpdCAoKTsKKyAgICB9CisKKyAgLyogVGVzdCB0aGF0IGJyZWFrcG9pbnRzIGRvIG5v dCBsZWFrIGludG8gb3Igb3V0IG9mIGxhbWJkYSBrZXJuZWxzLiAgKi8KKyAgaW50IGEgPSAwOyAv KiBob3N0LjMgKi8KKyAgcXVldWUuc2luZ2xlX3Rhc2sgKFtdICgpCisgICAgeworICAgICAgaW50 IGEgPSAwOworICAgICAgaW50IGIgPSAwOyAvKiBsYW1iZGEuMSAqLworICAgIH0pOworICBxdWV1 ZS53YWl0ICgpOworCisgIFBhcmFsbGVsRm9yIHBhcmFsbGVsX2ZvcjsKKyAgc3ljbDo6bmRfcmFu Z2U8MT4gcmFuZ2UgezIsIDF9OworICBmb3IgKGludCBpID0gMDsgaSA8IDI7IGkrKykKKyAgICB7 CisgICAgICBxdWV1ZS5wYXJhbGxlbF9mb3IgKHJhbmdlLCBwYXJhbGxlbF9mb3IpOworICAgICAg cXVldWUud2FpdCAoKTsKKyAgICAgIGludCBhID0gMDsgLyogaG9zdC40ICovCisgICAgfQorCisg IHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuc3ljbC9icmVhay5l eHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5zeWNsL2JyZWFrLmV4cApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uZjQ3MWZhNjI2NDIKLS0tIC9kZXYvbnVsbAorKysgYi9nZGIv dGVzdHN1aXRlL2dkYi5zeWNsL2JyZWFrLmV4cApAQCAtMCwwICsxLDI0NiBAQAorIyBDb3B5cmln aHQgMjAyNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMKKyMgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCisjCisjIFRlc3QgZGVmaW5pbmcgYW5kIGhpdHRpbmcgYnJlYWtwb2ludHMuCisKK2xvYWRf bGliIHN5Y2wuZXhwCisKK3N0YW5kYXJkX3Rlc3RmaWxlIC5jcHAKKworc2V0IHN5Y2xfZGV2aWNl X2xpc3QgW2luaXRfc3ljbF9kZXZpY2VzX2xpc3RdCitpZiB7W2xsZW5ndGggJHN5Y2xfZGV2aWNl X2xpc3RdID09IDB9IHsKKyAgICB1bnN1cHBvcnRlZCAidGFyZ2V0IGRvZXMgbm90IHN1cHBvcnQg U1lDTCIKKyAgICByZXR1cm4KK30KKworaWYge1tidWlsZF9leGVjdXRhYmxlICJmYWlsZWQgdG8g Y29tcGlsZSAkc3JjZmlsZSIgIiRiaW5maWxlIiAiJHNyY2ZpbGUiIFwKKwkge3N5Y2wgZGVidWd9 XX0geworICAgIHJldHVybgorfQorCisjIFJldHVybnMgdGhlIHN5bWJvbCBvZiB0aGUgY3VycmVu dCBrZXJuZWwgb3IgIiIuCitwcm9jIGZpbmRfa2VybmVsX3N5bWJvbF9ncHUge30geworICAgIHNl dCBzeW1ib2wgIiIKKworICAgICMgVGhlIGtlcm5lbCBpcyBhdCB0aGUgdG9wIG9mIHRoZSBzdGFj ayAtIGF0IGxlYXN0IG9uIEdQVXMuCisgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgInVwIiAiZmluZCB0 b3AgZnJhbWUiIHsKKwktcmUgLXdyYXAgIkluaXRpYWwgZnJhbWUgc2VsZWN0ZWQ7IHlvdSBjYW5u b3QgZ28gdXAuIiB7CisJICAgIGdkYl90ZXN0X211bHRpcGxlICJ3aXRoIHByaW50IGRlbWFuZ2xl IG9mZiAtLSBpbmZvIHN5bWJvbCBcJHBjIiBcCisJCSJmaW5kIGtlcm5lbCBzeW1ib2wiIHsKKwkJ ICAgIC1yZSAtd3JhcCAiKFxbQS1aYS16MC05X1xdKykgXFteXHJcblxdKmluIHNlY3Rpb24gLioi IHsKKwkJCXNldCBzeW1ib2wgJGV4cGVjdF9vdXQoMSxzdHJpbmcpCisJCQlwYXNzICRnZGJfdGVz dF9uYW1lCisJCSAgICB9CisJCSAgICAtcmUgLXdyYXAgIiIgeworCQkJZmFpbCAkZ2RiX3Rlc3Rf bmFtZQorCQkgICAgfQorCQl9CisJfQorCS1yZSAtd3JhcCAiI1xbMC05XF0rIC4qIiB7CisJICAg IHNlbmRfZ2RiICJ1cFxuIgorCSAgICBleHBfY29udGludWUKKwl9CisgICAgfQorCisgICAgcmV0 dXJuICRzeW1ib2wKK30KKworZm9yZWFjaCBkZXZpY2UgJHN5Y2xfZGV2aWNlX2xpc3QgeworICAg IHN5Y2xfd2l0aF9pbnRlbGd0X2xvY2sgJGRldmljZSB7CisJY2xlYW5fcmVzdGFydCAkdGVzdGZp bGUKKworCWlmIHshW3N5Y2xfc3RhcnQgJGRldmljZV19IHsKKwkgICAgY29udGludWUKKwl9CisK KwlzZXQgZm9vXzEgW2dkYl9nZXRfbGluZV9udW1iZXIgImZvby4xIl0KKwlzZXQgYmFyXzEgW2dk Yl9nZXRfbGluZV9udW1iZXIgImJhci4xIl0KKwlzZXQgaG9zdF8xIFtnZGJfZ2V0X2xpbmVfbnVt YmVyICJob3N0LjEiXQorCXNldCBob3N0XzIgW2dkYl9nZXRfbGluZV9udW1iZXIgImhvc3QuMiJd CisJc2V0IGhvc3RfMyBbZ2RiX2dldF9saW5lX251bWJlciAiaG9zdC4zIl0KKwlzZXQgaG9zdF80 IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJob3N0LjQiXQorCXNldCBsYW1iZGFfMSBbZ2RiX2dldF9s aW5lX251bWJlciAibGFtYmRhLjEiXQorCXNldCBrZXJuZWxfMSBbZ2RiX2dldF9saW5lX251bWJl ciAia2VybmVsLjEiXQorCXNldCBrZXJuZWxfMiBbZ2RiX2dldF9saW5lX251bWJlciAia2VybmVs LjIiXQorCXNldCBrZXJuZWxfMyBbZ2RiX2dldF9saW5lX251bWJlciAia2VybmVsLjMiXQorCXNl dCBrZXJuZWxfNCBbZ2RiX2dldF9saW5lX251bWJlciAia2VybmVsLjQiXQorCXNldCBrZXJuZWxf NSBbZ2RiX2dldF9saW5lX251bWJlciAia2VybmVsLjUiXQorCXNldCBrZXJuZWxfNiBbZ2RiX2dl dF9saW5lX251bWJlciAia2VybmVsLjYiXQorCisJIyBUaGUgdXNlci1kZWZpbmVkIGtlcm5lbCBm dW5jdGlvbiBpcyB3cmFwcGVkIGJ5IGFuIGFjdHVhbCBrZXJuZWwKKwkjIHByb3ZpZGVkIGJ5IHRo ZSBjb21waWxlciB3aGVuIG9mZmxvYWRpbmcgdG8gYSBkZXZpY2UsIHNvIHRoZQorCSMgdXNlci1k ZWZpbmVkIGtlcm5lbCBpcyBhY3R1YWxseSBhIGRldmljZSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxl ZAorCSMgZnJvbSBvciBpbmxpbmVkIGludG8gdGhlIGFjdHVhbCBrZXJuZWwuCisJIworCSMgVG8g dGVzdCBicmVha2luZyBvbiB0aGUga2VybmVsIGFuZCBzbGlkaW5nIHRoZSBicmVha3BvaW50IGFj cm9zcworCSMgdGhlIGtlcm5lbCBwcm9sb2d1ZSB3aXRoIGl0cyBwb3RlbnRpYWxseSBtdWx0aXBs ZSBlbnRyaWVzLCB3ZQorCSMgcnVuIGVhY2gga2VybmVsIHR3aWNlLgorCSMKKwkjICAgLSBpbiB0 aGUgZmlyc3QgcnVuLCB3ZSBicmVhayBhdCB0aGUgdXNlci1kZWZpbmVkIGtlcm5lbAorCSMgICAg IGZ1bmN0aW9uIHN5bWJvbCBhbmQgZGV0ZXJtaW5lIHRoZSBhY3R1YWwga2VybmVsIHN5bWJvbC4K KwkjCisJIyAgIC0gaW4gdGhlIHNlY29uZCBydW4sIHdlIGJyZWFrIGF0IHRoZSBhY3R1YWwga2Vy bmVsIHN5bWJvbCBhbmQKKwkjICAgICBydW4gdGhlIHJlc3Qgb2YgdGhlIGJyZWFrcG9pbnQgdGVz dHMgZm9yIHRoaXMga2VybmVsLgorCSMKKwkjIFdoZW4gcnVubmluZyBvbiBDUFUsIHRoZSBrZXJu ZWwgZnVuY3Rpb24gaXMgbm90IGFjdHVhbGx5CisJIyBvZmZsb2FkZWQgYnV0IGNhbGxlZCBieSB0 aGUgcnVudGltZS4gIFdlIHNpbXBseSB1c2UgdGhlIHNhbWUKKwkjIHVzZXIga2VybmVsIGZ1bmN0 aW9uIHN5bWJvbCBhZ2FpbiBpbiB0aGlzIGNhc2UuCisJIworCSMgV2UncmUgZ29pbmcgdG8gc2V0 IGJyZWFrcG9pbnRzCisJIworCSMgICAtIGZyb20gdGhlIGhvc3QgcHJvY2VzcyBpbnRvIGtlcm5l bHMKKwkjICAgLSBmcm9tIGtlcm5lbHMgaW50byB0aGUgaG9zdCBwcm9jZXNzCisJIyAgIC0gZnJv bSBrZXJuZWxzIGludG8gb3RoZXIga2VybmVscworCWdkYl9icmVha3BvaW50ICJTaW5nbGVUYXNr OjpvcGVyYXRvciAoKSIgLW1lc3NhZ2UgLXRlbXBvcmFyeSBcCisJICAgIC1hbGxvdy1wZW5kaW5n CisJZ2RiX2JyZWFrcG9pbnQgIlBhcmFsbGVsRm9yOjpvcGVyYXRvciAoKSIgLW1lc3NhZ2UgLXRl bXBvcmFyeSBcCisJICAgIC1hbGxvdy1wZW5kaW5nCisKKwl3aXRoX3Rlc3RfcHJlZml4ICJzaW5n bGVfdGFzayIgeworCSAgICAjIFdlIGFsc28gY292ZXIgYnJlYWtwb2ludHMgbGVha2luZyBpbnRv IGFuZCBvdXQgb2Yga2VybmVscywKKwkgICAgIyBzbyB3ZSBzdGFydCB3aXRoIGEgaG9zdCBicmVh a3BvaW50IGxvY2F0ZWQgYWJvdmUgdGhlIGtlcm5lbC4KKwkgICAgZ2RiX2JyZWFrcG9pbnQgJGhv c3RfMSAtbWVzc2FnZQorCisJICAgIGdkYl9jb250aW51ZV90b19icmVha3BvaW50ICJob3N0LjEi ICIuKmhvc3QuMS4qIgorCSAgICBnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiZnVuY3Rpb24u c2luZ2xlX3Rhc2siIFwKKwkJIi4qa2VybmVsLnNpbmdsZV90YXNrLioiCisKKwkgICAgIyBUaGlz IHBhcnQgb25seSB3b3JrcyBmb3Iga2VybmVscyBvZmZsb2FkZWQgdG8gYSBkZXZpY2UuCisJICAg IHNldCBzeW1ib2wgIiIKKwkgICAgaWYge1tyZXF1aXJlX3N5Y2xfZGV2aWNlICIkZGV2aWNlIiAi Z3B1IiAiKiJdfSB7CisJCXNldCBzeW1ib2wgW2ZpbmRfa2VybmVsX3N5bWJvbF9ncHVdCisJICAg IH0KKwkgICAgIyBGYWxsIGJhY2sgdG8gdGhlIG9yaWdpbmFsIHVzZXIga2VybmVsIGZ1bmN0aW9u IHN5bWJvbC4KKwkgICAgaWYgeyRzeW1ib2wgZXEgIiJ9IHsKKwkJc2V0IHN5bWJvbCAiU2luZ2xl VGFzazo6b3BlcmF0b3IgKCkiCisJICAgIH0KKworCSAgICAjIFdlIGRvIG5vdCBrbm93IHdoZXJl IHRoZSBicmVha3BvaW50IGVuZHMgdXAuCisJICAgIGdkYl9icmVha3BvaW50ICRzeW1ib2wgLW1l c3NhZ2UgLWFsbG93LXBlbmRpbmcKKwkgICAgZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImtl cm5lbC5zaW5nbGVfdGFzayIKKworCSAgICAjIFdlJ3JlIGF0IHRoZSBzdGFydCBvZiB0aGUgc2Vj b25kIHJ1biBvZiB0aGUgZmlyc3Qga2VybmVsLgorCSAgICAjCisJICAgICMgU2V0IGJyZWFrcG9p bnRzIGZvciB0aGUgcmVzdCBvZiB0aGUgdGVzdHMgZm9yIHRoaXMga2VybmVsLgorCSAgICAjIFdl IHN0b3BwZWQgaW4gdGhlIGFjdHVhbCBrZXJuZWwsIHdoaWNoIG1heSBiZSBsb2NhdGVkIGluIGEK KwkgICAgIyBkaWZmZXJlbnQgc291cmNlIGZpbGUuCisJICAgIGdkYl9icmVha3BvaW50ICRzcmNm aWxlOiRrZXJuZWxfMSAtbWVzc2FnZQorCSAgICBnZGJfYnJlYWtwb2ludCAkc3JjZmlsZToka2Vy bmVsXzIgLW1lc3NhZ2UKKwkgICAgZ2RiX2JyZWFrcG9pbnQgJHNyY2ZpbGU6Zm9vIC1tZXNzYWdl CisJICAgIGdkYl9icmVha3BvaW50ICRzcmNmaWxlOmJhciAtbWVzc2FnZQorCSAgICBnZGJfYnJl YWtwb2ludCAkc3JjZmlsZTokZm9vXzEgLW1lc3NhZ2UKKwkgICAgZ2RiX2JyZWFrcG9pbnQgJHNy Y2ZpbGU6JGJhcl8xIC1tZXNzYWdlCisKKwkgICAgZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQg Imtlcm5lbC4xIiAiLiprZXJuZWwuMS4qIgorCSAgICBnZGJfY29udGludWVfdG9fYnJlYWtwb2lu dCAiZm9vLmVudHJ5IiAiLipmb28uZW50cnkuKiIKKwkgICAgZ2RiX2NvbnRpbnVlX3RvX2JyZWFr cG9pbnQgImZvby4xIiAiLipmb28uMS4qIgorCSAgICBnZGJfY29udGludWVfdG9fYnJlYWtwb2lu dCAia2VybmVsLjIiICIuKmtlcm5lbC4yLioiCisJICAgIGdkYl9jb250aW51ZV90b19icmVha3Bv aW50ICJiYXIuZW50cnkiICIuKmJhci5lbnRyeS4qIgorCSAgICBnZGJfY29udGludWVfdG9fYnJl YWtwb2ludCAiYmFyLjEiICIuKmJhci4xLioiCisJfQorCisJd2l0aF90ZXN0X3ByZWZpeCAibGFt YmRhIiB7CisJICAgICMgVGVzdCB0aGF0IHdlIGFyZSBub3QgbGVha2luZyBicmVha3BvaW50cyBp bnRvIG9yIG91dCBvZgorCSAgICAjIGtlcm5lbHMgZGVmaW5lZCBhcyBsYW1iZGFzLgorCSAgICAj CisJICAgICMgV2UgbmVlZCBhIGJyZWFrcG9pbnQgYmVmb3JlCisJICAgICMKKwkgICAgIyAgIHF1 ZXVlLnNpbmdsZV90YXNrIChbXSAoKQorCSAgICAjCisJICAgICMgYmVjYXVzZSB0aGF0IGxpbmUg YWxzbyBjb250YWlucyB0aGUgbGFtYmRhIGRlZmluaXRpb24uCisJICAgIGdkYl9icmVha3BvaW50 ICRob3N0XzMgLW1lc3NhZ2UKKwkgICAgZ2RiX2JyZWFrcG9pbnQgJGxhbWJkYV8xIC1tZXNzYWdl CisKKwkgICAgZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImhvc3QuMyIgIi4qaG9zdC4zLioi CisJICAgIGdkYl9jb250aW51ZV90b19icmVha3BvaW50ICJsYW1iZGEuMSIgIi4qbGFtYmRhLjEu KiIKKwl9CisKKwl3aXRoX3Rlc3RfcHJlZml4ICJwYXJhbGxlbF9mb3IiIHsKKwkgICAgIyBOb3cg bW92ZSBvbiB0byB0aGUgbmV4dCBrZXJuZWwsIGFnYWluIHdpdGggYW4gaW50ZXJtZWRpYXRlCisJ ICAgICMgc3RvcCBpbiB0aGUgaG9zdCBwcm9jZXNzLgorCSAgICBnZGJfYnJlYWtwb2ludCAkc3Jj ZmlsZTokaG9zdF8yIC1tZXNzYWdlCisKKwkgICAgZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQg Imhvc3QuMiIgIi4qaG9zdC4yLioiCisJICAgIGdkYl9jb250aW51ZV90b19icmVha3BvaW50ICJm dW5jdGlvbi5wYXJhbGxlbF9mb3IiIFwKKwkJIi4qa2VybmVsLnBhcmFsbGVsX2Zvci4qIgorCisJ ICAgICMgVGhpcyBwYXJ0IG9ubHkgd29ya3MgZm9yIGtlcm5lbHMgb2ZmbG9hZGVkIHRvIGEgZGV2 aWNlLgorCSAgICBzZXQgc3ltYm9sICIiCisJICAgIGlmIHtbcmVxdWlyZV9zeWNsX2RldmljZSAi JGRldmljZSIgImdwdSIgIioiXX0geworCQlzZXQgc3ltYm9sIFtmaW5kX2tlcm5lbF9zeW1ib2xf Z3B1XQorCSAgICB9CisJICAgICMgRmFsbCBiYWNrIHRvIHRoZSBvcmlnaW5hbCB1c2VyIGtlcm5l bCBmdW5jdGlvbiBzeW1ib2wuCisJICAgIGlmIHskc3ltYm9sIGVxICIifSB7CisJCXNldCBzeW1i b2wgIlBhcmFsbGVsRm9yOjpvcGVyYXRvciAoKSIKKwkgICAgfQorCisJICAgICMgV2Ugb25seSB3 YW50IHRvIGhpdCB0aGlzIG9uY2UgdG8gbm90IGNvbXBsaWNhdGUgdGhlIHRlc3QuCisJICAgICMK KwkgICAgIyBVbnRpbCBrZXJuZWwuNiwgdGhyZWFkcyByYWNlIHRvIHRoZSBuZXh0IGJyZWFrcG9p bnQsIGJ1dCB3ZQorCSAgICAjIG9ubHkgZ2V0IG9uZSBzdG9wIGZyb20gdGhlIHdpbm5lcjsgdGhl IGxvc2VyIHdpbGwgc2lsZW50bHkKKwkgICAgIyBza2lwIHRoaXMgYnJlYWtwb2ludC4KKwkgICAg IworCSAgICAjIFRoaXMgYWxsb3dzIHRoZSB0ZXN0IHRvIGJlIHNlcmlhbCBldmVuIHRob3VnaCB3 ZSdyZSB0ZXN0aW5nCisJICAgICMgYSBwYXJhbGxlbF9mb3Iga2VybmVsLiAgV2UgbWF5IHN3aXRj aCB0aHJlYWRzIGF0IGV2ZXJ5IHN0b3AsCisJICAgICMgYnV0IHdlIGRvbid0IHJlYWxseSBjYXJl IHdoaWNoIHRocmVhZCBzdG9wcy4KKwkgICAgIworCSAgICAjIEJ1dCBmaXJzdCwgd2UgbmVlZCB0 byBnZXQgYmFjayB0byB0aGUgaG9zdCBwcm9jZXNzIHNvIHRoZQorCSAgICAjIG90aGVyIHRocmVh ZCBkb2VzIG5vdCBzdG9wIG9uIHRoaXMgbmV3IGJyZWFrcG9pbnQgaW4gdGhpcworCSAgICAjIGtl cm5lbCBpbnN0YW5jZS4KKwkgICAgZ2RiX2JyZWFrcG9pbnQgJHNyY2ZpbGU6JGhvc3RfNCAtbWVz c2FnZSAtdGVtcG9yYXJ5CisJICAgIGdkYl9jb250aW51ZV90b19icmVha3BvaW50ICJob3N0LjQi ICIuKmhvc3QuNC4qIgorCSAgICAjCisJICAgICMgTm93IHdlIGNhbiBhZGQgdGhlIGtlcm5lbCBi cmVha3BvaW50IGZvciB0aGUgc2Vjb25kIHJ1bi4KKwkgICAgIworCSAgICAjIFdlIGRvIG5vdCBr bm93IHdoZXJlIHRoZSBicmVha3BvaW50IGVuZHMgdXAuCisJICAgIGdkYl9icmVha3BvaW50ICRz eW1ib2wgLW1lc3NhZ2UgLXRlbXBvcmFyeSAtYWxsb3ctcGVuZGluZworCSAgICBnZGJfY29udGlu dWVfdG9fYnJlYWtwb2ludCAia2VybmVsLnBhcmFsbGVsX2ZvciIKKworCSAgICAjIFdlJ3JlIGF0 IHRoZSBzdGFydCBvZiB0aGUgc2Vjb25kIHJ1bi4KKwkgICAgIworCSAgICAjIFdlJ3JlIG5vdyBy dW5uaW5nIGEga2VybmVsIHdpdGggdHdvIHdvcmtncm91cHMgYW5kIGhlbmNlIHR3bworCSAgICAj IHRocmVhZHMgYW5kIHdlJ3JlIGdvaW5nIHRvIGNvdmVyCisJICAgICMKKwkgICAgIyAgIC0gdGVt cG9yYXJ5IGJyZWFrcG9pbnRzCisJICAgICMgICAtIGRpc2FibGUgYnJlYWtwb2ludHMKKwkgICAg IyAgIC0gZGVsZXRlIGJyZWFrcG9pbnRzCisJICAgICMKKwkgICAgIyBhbmQgd2UncmUgbWFraW5n IHN1cmUgdGhhdCBvbmx5IG9uZSB0aHJlYWQgc3RvcHMuCisJICAgICMKKwkgICAgIyBTZXQgYnJl YWtwb2ludHMgZm9yIHRoZSByZXN0IG9mIHRoZSB0ZXN0cy4gIFdlIHN0b3BwZWQgaW4KKwkgICAg IyB0aGUgYWN0dWFsIGtlcm5lbCwgd2hpY2ggbWF5IGJlIGxvY2F0ZWQgaW4gYSBkaWZmZXJlbnQK KwkgICAgIyBzb3VyY2UgZmlsZS4KKwkgICAgZ2RiX2JyZWFrcG9pbnQgJHNyY2ZpbGU6JGtlcm5l bF8zIC1tZXNzYWdlIC10ZW1wb3JhcnkKKwkgICAgZ2RiX2JyZWFrcG9pbnQgJHNyY2ZpbGU6JGtl cm5lbF80IC1tZXNzYWdlCisJICAgIHNldCBicF9kaXMgW2dldF9pbnRlZ2VyX3ZhbHVlb2YgIlwk YnBudW0iIGludmFsaWQgImRpc2FibGUgYnAiXQorCSAgICBnZGJfYnJlYWtwb2ludCAkc3JjZmls ZToka2VybmVsXzUgLW1lc3NhZ2UKKwkgICAgc2V0IGJwX2RlbCBbZ2V0X2ludGVnZXJfdmFsdWVv ZiAiXCRicG51bSIgaW52YWxpZCAiZGVsZXRlIGJwIl0KKwkgICAgZ2RiX2JyZWFrcG9pbnQgJHNy Y2ZpbGU6JGtlcm5lbF82IC1tZXNzYWdlCisKKwkgICAgZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9p bnQgImtlcm5lbC4zIiAiLiprZXJuZWwuMy4qIgorCSAgICBnZGJfY29udGludWVfdG9fYnJlYWtw b2ludCAia2VybmVsLjQiICIuKmtlcm5lbC40LioiCisJICAgIGdkYl90ZXN0X25vX291dHB1dCAi ZGlzYWJsZSAkYnBfZGlzIgorCisJICAgIGdkYl9jb250aW51ZV90b19icmVha3BvaW50ICJrZXJu ZWwuNSIgIi4qa2VybmVsLjUuKiIKKwkgICAgZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJkZWxldGUgJGJw X2RlbCIKKworCSAgICAjIFdlIGhpdCBrZXJuZWwuNiBvbmNlIGZvciBlYWNoIHdvcmtncm91cC4K KwkgICAgZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImtlcm5lbC42LjEiICIuKmtlcm5lbC42 LioiCisJICAgIGdkYl9jb250aW51ZV90b19icmVha3BvaW50ICJrZXJuZWwuNi4yIiAiLiprZXJu ZWwuNi4qIgorCisJICAgIGdkYl90ZXN0ICJjb250aW51ZSIgIiRpbmZlcmlvcl9leGl0ZWRfcmUg bm9ybWFsbHkuKiIKKwl9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9saWIv Z2RiLmV4cCBiL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKaW5kZXggNmZiMDQ4Njk2MDUuLjQx ZjhjMzZkMzZiIDEwMDY0NAotLS0gYS9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCisrKyBiL2dk Yi90ZXN0c3VpdGUvbGliL2dkYi5leHAKQEAgLTc0NjIsNiArNzQ2MiwyMSBAQCBwcm9jIGdkYl9j b21waWxlX3dpbjMyIHtzb3VyY2UgZGVzdCB0eXBlIG9wdGlvbnN9IHsKICAgICB9CiB9CiAKKyMg QnVpbGQgYSBTWUNMIHByb2dyYW0gZnJvbSBTT1VSQ0UuICBTZWUgcHJlZmF0b3J5IGNvbW1lbnQg Zm9yCisjIGdkYl9jb21waWxlLCBhYm92ZSwgZm9yIGRpc2N1c3Npb24gb2YgdGhlIHBhcmFtZXRl cnMgdG8gdGhpcyBwcm9jLgorCitwcm9jIGdkYl9jb21waWxlX3N5Y2wge3NvdXJjZSBkZXN0IHR5 cGUgb3B0aW9uc30geworICAgIHNldCBuZXdfb3B0aW9ucyB7YWRkaXRpb25hbF9mbGFncz0tZnN5 Y2x9CisgICAgbGFwcGVuZCBuZXdfb3B0aW9ucyB7YWRkaXRpb25hbF9mbGFncz0tZnN5Y2wtdW5u YW1lZC1sYW1iZGF9CisgICAgbGFwcGVuZCBuZXdfb3B0aW9ucyB7YysrfQorICAgIGxhcHBlbmQg bmV3X29wdGlvbnMge29wdGltaXplPS1PMH0KKworICAgICMgSWYgdGhlIG9wdGltaXplIG9wdGlv biBpcyBnaXZlbiBtdWx0aXBsZSB0aW1lcywgb25seSB0aGUgbGFzdCB1c2UgaXMKKyAgICAjIHNp Z25pZmljYW50IGluIERFSkFHTlUuICBTbywgdG8gbWFrZSBvcHRpbWl6ZSBvcHRpb24gc2V0IGlu IHRoZSB0ZXN0CisgICAgIyBzaWduaWZpY2FudCwgaW5wdXQgJ29wdGlvbnMnIGFyZSBhcHBlbmRl ZCB0byB0aGUgZW5kIGhlcmUuCisgICAgcmV0dXJuIFtnZGJfY29tcGlsZSAkc291cmNlICRkZXN0 ICR0eXBlIFtjb25jYXQgJG5ld19vcHRpb25zICRvcHRpb25zXV0KK30KKwogIyBTZW5kIGEgY29t bWFuZCB0byBHREIuCiAjIEZvciBvcHRpb25zIGZvciBUWVBFIHNlZSBnZGJfc3RkaW5fbG9nX3dy aXRlCiAKQEAgLTk3MzcsNyArOTc1Miw3IEBAIHByb2MgYnVpbGRfZXhlY3V0YWJsZV9mcm9tX3Nw ZWNzIHt0ZXN0bmFtZSBleGVjdXRhYmxlIG9wdGlvbnMgYXJnc30gewogICAgIHNldCBiaW5maWxl IFtzdGFuZGFyZF9vdXRwdXRfZmlsZSAkZXhlY3V0YWJsZV0KIAogICAgIHNldCBmdW5jIGdkYl9j b21waWxlCi0gICAgc2V0IGZ1bmNfaW5kZXggW2xzZWFyY2ggLXJlZ2V4cCAkb3B0aW9ucyB7Xihw dGhyZWFkc3xzaGxpYnxzaGxpYl9wdGhyZWFkc3xvcGVubXApJH1dCisgICAgc2V0IGZ1bmNfaW5k ZXggW2xzZWFyY2ggLXJlZ2V4cCAkb3B0aW9ucyB7XihwdGhyZWFkc3xzaGxpYnxzaGxpYl9wdGhy ZWFkc3xvcGVubXB8c3ljbCkkfV0KICAgICBpZiB7JGZ1bmNfaW5kZXggIT0gLTF9IHsKIAlzZXQg ZnVuYyAiJHtmdW5jfV9bbGluZGV4ICRvcHRpb25zICRmdW5jX2luZGV4XSIKICAgICB9CmRpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2xpYi9pbnRlbGd0LXV0aWxzLmV4cCBiL2dkYi90ZXN0c3Vp dGUvbGliL2ludGVsZ3QtdXRpbHMuZXhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi45NTJhM2Y1NWQxMAotLS0gL2Rldi9udWxsCisrKyBiL2dkYi90ZXN0c3VpdGUvbGli L2ludGVsZ3QtdXRpbHMuZXhwCkBAIC0wLDAgKzEsNDMgQEAKKyMgQ29weXJpZ2h0IDIwMjAtMjAy NiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MyBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisj CisjIEludGVsZ3QgdXRpbGl0eSBwcm9jZWR1cmVzLgorCisjIFRoZSBsb2NrIGZpbGUgdXNlZCB0 byBlbnN1cmUgdGhhdCBvbmx5IG9uZSBHREIgaGFzIGFjY2VzcyB0byB0aGUgR1BVCisjIGF0IGEg dGltZS4KKworc2V0IGludGVsZ3RfbG9ja19maWxlbmFtZSBpbnRlbGd0LXBhcmFsbGVsLmxvY2sK KworIyBSZXR1cm4gbm9uLXplcm8gaWYgdGhlIGluc3RydWN0aW9uIGF0IEFERFJFU1MgaXMgY29t cGFjdCwgMCBvdGhlcndpc2UuCisKK3Byb2MgaXNfY29tcGFjdF9pbnNuIHthZGRyZXNzfSB7Cisg ICAgIyBDaGVjayB0aGUgQ21wdEN0cmwgZmxhZyAoYml0IDI5KS4KKyAgICBzZXQgdGVzdCAiaXMg Y29tcGFjdCBpbnNuIgorICAgIHNldCBpc19jb21wYWN0IFtnZXRfaW50ZWdlcl92YWx1ZW9mIFwK KwkJCSIoKHVuc2lnbmVkIGNoYXIgKikkYWRkcmVzcylcWzNcXSAmIDB4MjAiIDAgJHRlc3RdCisg ICAgcmV0dXJuICRpc19jb21wYWN0Cit9CisKKyMgU2V0IHRoZSBicmVha3BvaW50IGJpdCBvZiB0 aGUgaW5zdHJ1Y3Rpb24gYXQgQUREUkVTUy4KKworcHJvY193aXRoX3ByZWZpeCBzZXRfYnJlYWtw b2ludF9iaXQge2FkZHJlc3N9IHsKKyAgICAjIFNldCBCaXQgNyBvbiBhIGNvbXBhY3RlZCBpbnN0 cnVjdGlvbiwgQml0IDMwIG9uIGEgZnVsbCBpbnN0cnVjdGlvbi4KKyAgICBzZXQgdGVzdCAic2V0 IGJwIGJpdCIKKyAgICBpZiB7W2lzX2NvbXBhY3RfaW5zbiAkYWRkcmVzc119IHsKKwlnZGJfdGVz dCAicHJpbnQveCAoKHVuc2lnbmVkIGNoYXIgKikkYWRkcmVzcylcWzBcXSB8PSAweDgwIiAiIiAk dGVzdAorICAgIH0gZWxzZSB7CisJZ2RiX3Rlc3QgInByaW50L3ggKCh1bnNpZ25lZCBjaGFyICop JGFkZHJlc3MpXFszXF0gfD0gMHg0MCIgIiIgJHRlc3QKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2xpYi9zeWNsLWRldmljZXMuY3BwIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvc3lj bC1kZXZpY2VzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZDZm MDc4NGQxYTUKLS0tIC9kZXYvbnVsbAorKysgYi9nZGIvdGVzdHN1aXRlL2xpYi9zeWNsLWRldmlj ZXMuY3BwCkBAIC0wLDAgKzEsMTA2IEBACisvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RC LCB0aGUgR05VIGRlYnVnZ2VyLgorCisgICBDb3B5cmlnaHQgMjAyMi0yMDI1IEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAg IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp Y2Vuc2UsIG9yCisgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisv KiBVdGlsaXR5IGZpbGUgZm9yIFNZQ0wgdGVzdCBwcm9ncmFtcyB0byBnZXQgbGlzdCBvZiBhdmFp bGFibGUgZGV2aWNlcy4gICovCisKKyNpbmNsdWRlIDxzeWNsL3N5Y2wuaHBwPgorI2luY2x1ZGUg PG1hcD4KKworc3RhdGljIHN0ZDo6c3RyaW5nCitnZXRfYmFja2VuZF9uYW1lIChzeWNsOjpiYWNr ZW5kIGJhY2tlbmRfYXJnKQoreworICBzdGQ6OnN0cmluZyBiYWNrZW5kX25hbWU7CisKKyAgaWYg KGJhY2tlbmRfYXJnID09IHN5Y2w6OmJhY2tlbmQ6Om9wZW5jbCkKKyAgICBiYWNrZW5kX25hbWUg PSAib3BlbmNsIjsKKyAgZWxzZSBpZiAoYmFja2VuZF9hcmcgPT0gIHN5Y2w6OmJhY2tlbmQ6OmV4 dF9vbmVhcGlfbGV2ZWxfemVybykKKyAgICBiYWNrZW5kX25hbWUgPSAiZXh0X29uZWFwaV9sZXZl bF96ZXJvIjsKKyAgZWxzZQorICAgIHsKKyAgICAgIHN0ZDo6Y291dCA8PCAiU1lDTDogVW5yZWNv Z25pemVkIGJhY2tlbmQuIiA8PCBzdGQ6OmVuZGw7CisgICAgICBleGl0ICgxKTsKKyAgICB9CisK KyAgcmV0dXJuIGJhY2tlbmRfbmFtZTsKK30KKworc3RhdGljIHN0ZDo6c3RyaW5nCitnZXRfZGV2 aWNlX3R5cGUgKHN5Y2w6OmluZm86OmRldmljZV90eXBlIHR5cGUpCit7CisgIHN0ZDo6c3RyaW5n IHR5cGVfbmFtZTsKKworICBpZiAodHlwZSA9PSBzeWNsOjppbmZvOjpkZXZpY2VfdHlwZTo6Y3B1 KQorICAgIHR5cGVfbmFtZSA9ICJjcHUiOworICBlbHNlIGlmICh0eXBlID09IHN5Y2w6OmluZm86 OmRldmljZV90eXBlOjpncHUpCisgICAgdHlwZV9uYW1lID0gImdwdSI7CisgIGVsc2UgaWYgKHR5 cGUgPT0gc3ljbDo6aW5mbzo6ZGV2aWNlX3R5cGU6OmFjY2VsZXJhdG9yKQorICAgIHR5cGVfbmFt ZSA9ICJhY2NlbGVyYXRvciI7CisgIGVsc2UKKyAgICB7CisgICAgICBzdGQ6OmNvdXQgPDwgIlNZ Q0w6IFVucmVjb2duaXplZCBkZXZpY2UgdHlwZS4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgIGV4aXQg KDEpOworICAgIH0KKworICByZXR1cm4gdHlwZV9uYW1lOworfQorCitpbnQKK21haW4gKCkKK3sK KyAgY29uc3Qgc3RkOjp2ZWN0b3I8c3ljbDo6ZGV2aWNlPiBkZXZpY2VzCisgICAgPSBzeWNsOjpk ZXZpY2U6OmdldF9kZXZpY2VzIChzeWNsOjppbmZvOjpkZXZpY2VfdHlwZTo6YWxsKTsKKworICBp ZiAoZGV2aWNlcy5lbXB0eSAoKSkKKyAgICB7CisgICAgICBzdGQ6OmNvdXQgPDwgIlNZQ0w6IENv dWxkIG5vdCBmaW5kIGFueSBkZXZpY2UiIDw8IHN0ZDo6ZW5kbDsKKyAgICAgIGV4aXQgKDEpOwor ICAgIH0KKworICBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgaW50PiBkZXZpY2VfdHlwZXM7CisKKyAg Zm9yIChjb25zdCBzeWNsOjpkZXZpY2UgJmRldmljZSA6IGRldmljZXMpCisgICAgeworICAgICAg Y29uc3Qgc3RkOjpzdHJpbmcgYmFja2VuZF9uYW1lCisJPSBnZXRfYmFja2VuZF9uYW1lIChkZXZp Y2UuZ2V0X2JhY2tlbmQgKCkpOworICAgICAgaWYgKGJhY2tlbmRfbmFtZSA9PSAiIikKKwljb250 aW51ZTsKKworICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgZGV2X25hbWUKKwk9IGRldmljZS5nZXRf aW5mbzxzeWNsOjppbmZvOjpkZXZpY2U6Om5hbWU+ICgpOworICAgICAgY29uc3Qgc3RkOjpzdHJp bmcgZGV2aWNlX3ZlcnNpb24KKwk9IGRldmljZS5nZXRfaW5mbzxzeWNsOjppbmZvOjpkZXZpY2U6 OnZlcnNpb24+ICgpOworICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdHlwZQorCT0gZ2V0X2Rldmlj ZV90eXBlIChkZXZpY2UuZ2V0X2luZm88c3ljbDo6aW5mbzo6ZGV2aWNlOjpkZXZpY2VfdHlwZT4g KCkpOworCisgICAgICBzdGQ6OnN0cmluZyBkZXZfa2V5IHtkZXZfbmFtZSArICI7IiArIGJhY2tl bmRfbmFtZSArICI7IiArIHR5cGUgKyAiOyIKKwkrIGRldmljZV92ZXJzaW9ufTsKKyAgICAgIGRl dmljZV90eXBlc1tkZXZfa2V5XSsrOworICAgIH0KKworICBzdGQ6OmNvdXQgPDwgIlNZQ0w6IExp c3Qgb2YgVGFyZ2V0IGRldmljZXM6IFsiOworICBpbnQgaW5kZXggPSAwOworICBmb3IgKGNvbnN0 IGF1dG8mIFtkZXZfa2V5LCBjb3VudF0gOiBkZXZpY2VfdHlwZXMpCisgICAgeworICAgICAgaW5k ZXgrKzsKKyAgICAgIHN0ZDo6Y291dCA8PCBkZXZfa2V5IDw8ICI7IiA8PCBjb3VudDsKKyAgICAg IGlmIChpbmRleCA8IGRldmljZV90eXBlcy5zaXplICgpKQorCXN0ZDo6Y291dCA8PCAiLCI7Cisg ICAgfQorICBzdGQ6OmNvdXQgPDwgIl0iIDw8IHN0ZDo6ZW5kbDsKKworICByZXR1cm4gMDsKK30K ZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvbGliL3N5Y2wtaGVsbG8uY3BwIGIvZ2RiL3Rlc3Rz dWl0ZS9saWIvc3ljbC1oZWxsby5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLjNkMmI4ZGU0MDdkCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9saWIv c3ljbC1oZWxsby5jcHAKQEAgLTAsMCArMSwzMyBAQAorLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0 IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KKworICAgQ29weXJpZ2h0IDIwMjYgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAg IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisK KyNpbmNsdWRlIDxzeWNsL3N5Y2wuaHBwPgorI2luY2x1ZGUgInN5Y2wtdXRpbC5jcHAiCisKK2lu dAorbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKyAgc3ljbDo6cXVldWUgcXVldWUg e2dldF9zeWNsX3F1ZXVlIChhcmdjLCBhcmd2KX07CisgIHF1ZXVlLnNpbmdsZV90YXNrIChbXSAo KQorICAgIHsKKyAgICAgIGludCBhID0gMDsgLyogaW5zaWRlLWtlcm5lbCAqLworICAgIH0pOwor CisgIHF1ZXVlLndhaXQgKCk7CisKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2xpYi9zeWNsLXV0aWwuY3BwIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvc3ljbC11dGlsLmNw cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOTdjODVjODVjMTgKLS0t IC9kZXYvbnVsbAorKysgYi9nZGIvdGVzdHN1aXRlL2xpYi9zeWNsLXV0aWwuY3BwCkBAIC0wLDAg KzEsMTM1IEBACisvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVn Z2VyLgorCisgICBDb3B5cmlnaHQgMjAxOS0yMDI2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m CisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQorICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisvKiBVdGlsaXR5IGZpbGUg Zm9yIFNZQ0wgdGVzdCBwcm9ncmFtcyB0byBlbmFibGUgZXhwbGljaXQgc2VsZWN0aW9uIG9mCisg ICBhIFNZQ0wgZGV2aWNlLiAgSW5jbHVkZSB0aGlzIGZpbGUgaW4gZWFjaCBTWUNMIHRlc3QgcHJv Z3JhbS4gICovCisKKyNpbmNsdWRlIDxzeWNsL3N5Y2wuaHBwPgorI2luY2x1ZGUgPGlvc3RyZWFt PgorI2luY2x1ZGUgPHZlY3Rvcj4KKworc3RhdGljIHN5Y2w6OmluZm86OmRldmljZV90eXBlCitn ZXRfZGV2aWNlX3R5cGUgKGNvbnN0IHN0ZDo6c3RyaW5nICZ0eXBlX2FyZykKK3sKKyAgc3ljbDo6 aW5mbzo6ZGV2aWNlX3R5cGUgdHlwZTsKKworICBpZiAodHlwZV9hcmcuY29tcGFyZSAoImNwdSIp ID09IDApCisgICAgdHlwZSA9IHN5Y2w6OmluZm86OmRldmljZV90eXBlOjpjcHU7CisgIGVsc2Ug aWYgKHR5cGVfYXJnLmNvbXBhcmUgKCJncHUiKSA9PSAwKQorICAgIHR5cGUgPSBzeWNsOjppbmZv OjpkZXZpY2VfdHlwZTo6Z3B1OworICBlbHNlIGlmICh0eXBlX2FyZy5jb21wYXJlICgiYWNjZWxl cmF0b3IiKSA9PSAwKQorICAgIHR5cGUgPSBzeWNsOjppbmZvOjpkZXZpY2VfdHlwZTo6YWNjZWxl cmF0b3I7CisgIGVsc2UKKyAgICB7CisgICAgICBzdGQ6OmNvdXQgPDwgIlNZQ0w6IFVucmVjb2du aXplZCBkZXZpY2UgdHlwZSAnIgorCQk8PCB0eXBlX2FyZyA8PCAiJyIgPDwgc3RkOjplbmRsOwor ICAgICAgZXhpdCAoMSk7CisgICAgfQorCisgIHJldHVybiB0eXBlOworfQorCitzdGF0aWMgc3lj bDo6YmFja2VuZAorZ2V0X2JhY2tlbmRfdHlwZSAoY29uc3Qgc3RkOjpzdHJpbmcgJmJhY2tlbmRf YXJnKQoreworICBzeWNsOjpiYWNrZW5kIGJhY2tlbmQ7CisKKyAgaWYgKGJhY2tlbmRfYXJnLmNv bXBhcmUgKCJvcGVuY2wiKSA9PSAwKQorICAgIGJhY2tlbmQgPSBzeWNsOjpiYWNrZW5kOjpvcGVu Y2w7CisgIGVsc2UgaWYgKGJhY2tlbmRfYXJnLmNvbXBhcmUgKCJleHRfb25lYXBpX2xldmVsX3pl cm8iKSA9PSAwCisJICAgfHwgYmFja2VuZF9hcmcuY29tcGFyZSAoImxldmVsX3plcm8iKSA9PSAw KQorICAgIGJhY2tlbmQgPSBzeWNsOjpiYWNrZW5kOjpleHRfb25lYXBpX2xldmVsX3plcm87Cisg IGVsc2UKKyAgICB7CisgICAgICBzdGQ6OmNvdXQgPDwgIlNZQ0w6IFVucmVjb2duaXplZCBiYWNr ZW5kICciCisJCTw8IGJhY2tlbmRfYXJnIDw8ICInIiA8PCBzdGQ6OmVuZGw7CisgICAgICBleGl0 ICgxKTsKKyAgICB9CisKKyAgcmV0dXJuIGJhY2tlbmQ7Cit9CisKK3N0YXRpYyBzdGQ6OnZlY3Rv cjxzeWNsOjpkZXZpY2U+CitnZXRfc3ljbF9kZXZpY2VzIChpbnQgYXJnYywgY2hhciAqYXJndltd KQoreworICBpZiAoYXJnYyA8PSAzKQorICAgIHsKKyAgICAgIHN0ZDo6Y291dCA8PCAiVXNhZ2U6 ICIgPDwgYXJndlswXQorCQk8PCAiIDxjcHV8Z3B1fGFjY2VsZXJhdG9yPiIKKwkJPDwgIiA8ZGV2 aWNlIG5hbWUgc3Vic3RyaW5nPiIKKwkJPDwgIiA8YmFja2VuZCBuYW1lIG9wZW5jbHxsZXZlbF96 ZXJvPiIgPDwgc3RkOjplbmRsOworICAgICAgZXhpdCAoMSk7CisgICAgfQorCisgIHN0ZDo6c3Ry aW5nIHR5cGVfYXJnIHthcmd2WzFdfTsKKyAgc3RkOjpzdHJpbmcgbmFtZV9hcmcge2FyZ3ZbMl19 OworICBzdGQ6OnN0cmluZyBiYWNrZW5kX2FyZyB7YXJndlszXX07CisKKyAgc3ljbDo6aW5mbzo6 ZGV2aWNlX3R5cGUgdHlwZSA9IGdldF9kZXZpY2VfdHlwZSAodHlwZV9hcmcpOworICBzeWNsOjpi YWNrZW5kIGJhY2tlbmRfdHlwZSA9IGdldF9iYWNrZW5kX3R5cGUgKGJhY2tlbmRfYXJnKTsKKwor ICBzdGQ6OnZlY3RvcjxzeWNsOjpkZXZpY2U+IGRldmljZXMgPSBzeWNsOjpkZXZpY2U6OmdldF9k ZXZpY2VzICh0eXBlKTsKKworICBzdGQ6OnZlY3RvcjxzeWNsOjpkZXZpY2U+IGZpbHRlcmVkX2Rl dmljZXM7CisgIGZvciAoY29uc3Qgc3ljbDo6ZGV2aWNlICZkZXZpY2UgOiBkZXZpY2VzKQorICAg IHsKKyAgICAgIHN0ZDo6c3RyaW5nIGRldl9uYW1lID0gZGV2aWNlLmdldF9pbmZvPHN5Y2w6Omlu Zm86OmRldmljZTo6bmFtZT4gKCk7CisgICAgICBzdGQ6OnN0cmluZyBwbGF0Zm9ybV9uYW1lCisJ PSBkZXZpY2UuZ2V0X3BsYXRmb3JtICgpLmdldF9pbmZvPHN5Y2w6OmluZm86OnBsYXRmb3JtOjpu YW1lPiAoKTsKKyAgICAgIHN0ZDo6c3RyaW5nIHZlcnNpb24KKwk9IGRldmljZS5nZXRfaW5mbzxz eWNsOjppbmZvOjpkZXZpY2U6OmRyaXZlcl92ZXJzaW9uPiAoKTsKKyAgICAgIHN5Y2w6OmJhY2tl bmQgYmFja2VuZCA9IGRldmljZS5nZXRfYmFja2VuZCAoKTsKKworICAgICAgaWYgKGRldl9uYW1l LmZpbmQgKG5hbWVfYXJnKSAhPSBzdGQ6OnN0cmluZzo6bnBvcworCSAgJiYgYmFja2VuZCA9PSBi YWNrZW5kX3R5cGUpCisJZmlsdGVyZWRfZGV2aWNlcy5wdXNoX2JhY2sgKGRldmljZSk7CisgICAg fQorCisgIGlmIChmaWx0ZXJlZF9kZXZpY2VzLmVtcHR5ICgpKQorICAgIHsKKyAgICAgIHN0ZDo6 Y291dCA8PCAiU1lDTDogQ291bGQgbm90IHNlbGVjdCBhIGRldmljZSIgPDwgc3RkOjplbmRsOwor ICAgICAgZXhpdCAoMSk7CisgICAgfQorCisgIHJldHVybiBmaWx0ZXJlZF9kZXZpY2VzOworfQor CitzdGF0aWMgdm9pZAorcHJpbnRfZGV2aWNlIChjb25zdCBzeWNsOjpkZXZpY2UgJmRldmljZSkK K3sKKyAgc3RkOjpzdHJpbmcgZGV2X25hbWUKKyAgICA9IGRldmljZS5nZXRfaW5mbzxzeWNsOjpp bmZvOjpkZXZpY2U6Om5hbWU+ICgpOworICBzdGQ6OnN0cmluZyBwbGF0Zm9ybV9uYW1lCisgICAg PSBkZXZpY2UuZ2V0X3BsYXRmb3JtICgpLmdldF9pbmZvPHN5Y2w6OmluZm86OnBsYXRmb3JtOjpu YW1lPiAoKTsKKyAgc3RkOjpzdHJpbmcgdmVyc2lvbgorICAgID0gZGV2aWNlLmdldF9pbmZvPHN5 Y2w6OmluZm86OmRldmljZTo6ZHJpdmVyX3ZlcnNpb24+ICgpOworCisgIHN0ZDo6Y291dCA8PCAi WyIgPDwgZGV2X25hbWUgPDwgIl0iCisJICAgIDw8ICIgZnJvbSBbIiA8PCBwbGF0Zm9ybV9uYW1l IDw8ICJdIgorCSAgICA8PCAiIHZlcnNpb24gWyIgPDwgdmVyc2lvbiA8PCAiXSI7Cit9CisKK3N0 YXRpYyBzeWNsOjpxdWV1ZQorZ2V0X3N5Y2xfcXVldWUgKGludCBhcmdjLCBjaGFyICphcmd2W10p Cit7CisgIHN5Y2w6OmRldmljZSBkZXZpY2UgPSBnZXRfc3ljbF9kZXZpY2VzIChhcmdjLCBhcmd2 KVswXTsKKyAgc3RkOjpjb3V0IDw8ICJTWUNMOiBVc2luZyBkZXZpY2U6ICI7CisgIHByaW50X2Rl dmljZSAoZGV2aWNlKTsKKyAgc3RkOjpjb3V0IDw8IHN0ZDo6ZW5kbDsKKworICByZXR1cm4gc3lj bDo6cXVldWUge2RldmljZX07IC8qIHJldHVybi1zeWNsLXF1ZXVlICovCit9CmRpZmYgLS1naXQg YS9nZGIvdGVzdHN1aXRlL2xpYi9zeWNsLmV4cCBiL2dkYi90ZXN0c3VpdGUvbGliL3N5Y2wuZXhw Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zZjE4NzhiNTRjMAotLS0g L2Rldi9udWxsCisrKyBiL2dkYi90ZXN0c3VpdGUvbGliL3N5Y2wuZXhwCkBAIC0wLDAgKzEsMzk5 IEBACisjIENvcHlyaWdodCAyMDE5LTIwMjYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CisjCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl CisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorIworIyBTdXBwb3J0IGxpYnJhcnkgZm9yIHRlc3Rpbmcg U1lDTCBHREIgZmVhdHVyZXMKKyMKKyMgQSBwYXJ0aWN1bGFyIFNZQ0wgZGV2aWNlIGNhbiBiZSBz ZWxlY3RlZCBieSBwYXNzaW5nIHRoZSBTWUNMIHByb2dyYW0KKyMgdGhyZWUgY29tbWFuZC1saW5l IGFyZ3VtZW50czoKKyMgICAxLiB0aGUgZGV2aWNlIHR5cGUsIHdob3NlIHZhbHVlIGlzIGluIHtj cHUsIGdwdSwgYWNjZWxlcmF0b3J9LgorIyAgIDIuIGEgc3Vic3RyaW5nIG9mIHRoZSBkZXZpY2Ug bmFtZS4KKyMgICAzLiBiYWNrZW5kIG5hbWUuCisjCisjIFRvIHNldCB0aGVzZSBhcmd1bWVudHMg cHJvcGVybHksIHVzZSBhIFNZQ0wgYm9hcmQgZmlsZSwgYW5kCisjIG1ha2UgeW91ciB0ZXN0IHBy b2dyYW0gc2VsZWN0IGEgcXVldWUgdmlhIHRoZSBnZXRfc3ljbF9xdWV1ZQorIyBmdW5jdGlvbiBp biBnZGIuc3ljbC9zeWNsLXV0aWwuY3BwLiAgU2VlIGdkYi5zeWNsL3N5Y2wtaGVsbG8uY3BwCisj IGZvciBhIHNhbXBsZSBTWUNMIHByb2dyYW0gc2V0dXAuCisKK2xvYWRfbGliIGludGVsZ3QtdXRp bHMuZXhwCisKK2lmIHshW2luZm8gZXhpc3RzIE9GRkxPQURfREVWSUNFX0dST1VQXX0geworICAg IHNldCBPRkZMT0FEX0RFVklDRV9HUk9VUCAiY3B1LGdwdSxhY2NlbGVyYXRvciIKK30KKwordmVy Ym9zZSAtbG9nICJPRkZMT0FEX0RFVklDRV9HUk9VUCBpcyAnJE9GRkxPQURfREVWSUNFX0dST1VQ JyIKKworIyBSZXR1cm4gdHJ1ZSBpZiB0aGUgU1lDTCBkZXZpY2Ugc2VsZWN0ZWQgdmlhIHRoZSBi b2FyZCBmaWxlCisjIG1hdGNoZXMgdGhlIGFyZ3VtZW50cy4gIE90aGVyd2lzZSByZXR1cm4gZmFs c2UuCisKK3Byb2MgcmVxdWlyZV9zeWNsX2RldmljZSB7ZGV2aWNlIHR5cGUgbmFtZX0geworICAg IHNldCBhcmdzX2xpc3QgW3N5Y2xfZ2V0X2RldmljZV9hcmdzICRkZXZpY2VdCisgICAgaWYge1ts bGVuZ3RoICRhcmdzX2xpc3RdIDw9IDJ9IHsKKwlyZXR1cm4gMAorICAgIH0KKworICAgIHNldCB0 eXBlX21hdGNoIFtleHByIHskdHlwZSBlcSBbbGluZGV4ICRhcmdzX2xpc3QgMF19XQorICAgIHNl dCBuYW1lX21hdGNoIFtzdHJpbmcgbWF0Y2ggJG5hbWUgW2xpbmRleCAkYXJnc19saXN0IDFdXQor CisgICAgcmV0dXJuIFtleHByIHskdHlwZV9tYXRjaCAmJiAkbmFtZV9tYXRjaH1dCit9CisKKyMg UnVuIGEgdGVzdCBvbiB0aGUgdGFyZ2V0IHRvIGNoZWNrIGlmIGl0IHJlY29nbml6ZXMgU1lDTC4K KyMgUmVtb3ZlIGRldmljZSBmcm9tIHRoZSBhdmFpbGFibGUgZGV2aWNlcyBsaXN0IGlmIFNZQ0wg aXMgbm90IHN1cHBvcnRlZAorIyBhbmQgcmV0dXJuIHRoZSB1cGRhdGVkIGxpc3QuCisKK3Byb2Mg Z2V0X3N5Y2xfc3VwcG9ydGVkX2RldmljZXMge3N5Y2xfZGV2aWNlX2xpc3R9IHsKKyAgICBnbG9i YWwgc3JjZGlyIGluZmVyaW9yX2V4aXRlZF9yZQorCisgICAgc2V0IHN1cHBvcnRlZF9zeWNsX2Rl dmljZV9saXN0IHt9CisKKyAgICAjIFNldCB1cCwgY29tcGlsZSwgYW5kIGV4ZWN1dGUgYSBzaW1w bGUgU1lDTCBwcm9ncmFtLgorICAgIHNldCBleGUgW3N0YW5kYXJkX291dHB1dF9maWxlIHN5Y2wt aGVsbG9dCisgICAgc2V0IHNyYyAiJHNyY2Rpci9saWIvc3ljbC1oZWxsby5jcHAiCisKKyAgICBp ZiB7W2J1aWxkX2V4ZWN1dGFibGUgImZhaWxlZCB0byBjb21waWxlICRzcmMiICRleGUgJHNyYyB7 c3ljbCBkZWJ1Z31dfSB7CisJdmVyYm9zZSAiU1lDTDogQ29tcGlsYXRpb24gZmFpbGVkIiAwCisJ cmV0dXJuICRzdXBwb3J0ZWRfc3ljbF9kZXZpY2VfbGlzdAorICAgIH0KKyAgICB2ZXJib3NlIC1s b2cgIlxuU1lDTDogQ29tcGlsYXRpb24gc3VjY2VlZGVkIgorCisgICAgZm9yZWFjaCBkZXZpY2Ug JHN5Y2xfZGV2aWNlX2xpc3QgeworCWlmIHshW2lzX3N5Y2xfZGV2aWNlX2ZpbHRlcmVkICRkZXZp Y2VdfSB7CisJICAgIGNvbnRpbnVlCisJfQorCisJc3ljbF93aXRoX2ludGVsZ3RfbG9jayAkZGV2 aWNlIHsKKwkgICAgY2xlYW5fcmVzdGFydCBzeWNsLWhlbGxvCisKKwkgICAgaWYgeyFbc3ljbF9z dGFydCAkZGV2aWNlXX0geworCQl2ZXJib3NlICJTWUNMOiBTdXBwb3J0IG5vdCBkZXRlY3RlZCBm b3IgJGRldmljZSIgMAorCQljb250aW51ZQorCSAgICB9CisKKwkgICAgc2V0IGluc2lkZV9rZXJu ZWwgW2dkYl9nZXRfbGluZV9udW1iZXIgImluc2lkZS1rZXJuZWwiICRzcmNdCisJICAgIGdkYl9i cmVha3BvaW50ICJzeWNsLWhlbGxvLmNwcDokaW5zaWRlX2tlcm5lbCIKKworCSAgICBzZXQgcmVz dWx0IDEKKwkgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgImNvbnRpbnVlIiAiY29udGludWUiIHsKKwkJ LXJlIC13cmFwICIkaW5mZXJpb3JfZXhpdGVkX3JlIG5vcm1hbGx5XS4qIiB7CisJCSAgICBzZXQg cmVzdWx0IDEKKwkJfQorCQktcmUgLXdyYXAgIiRpbmZlcmlvcl9leGl0ZWRfcmUgd2l0aCBjb2Rl LioiIHsKKwkJICAgIHNldCByZXN1bHQgMQorCQl9CisJCS1yZSAtd3JhcCAiKD86QnJlYWtwb2lu dCkgLiogKGF0fGluKS4qc3ljbC1oZWxsby5jcHA6JGluc2lkZV9rZXJuZWwuKiIgeworCQkgICAg c2V0IHJlc3VsdCAwCisJCX0KKwkJLXJlIC13cmFwICJyZWNlaXZlZCBzaWduYWwgU0lHQUJSVCwg QWJvcnRlZC4qIiB7CisJCSAgICBzZXQgcmVzdWx0IDEKKwkJfQorCSAgICB9CisKKwkgICAgaWYg eyRyZXN1bHQgPT0gMH0geworCQl2ZXJib3NlICJTWUNMOiBTdXBwb3J0IGRldGVjdGVkIGZvciAk ZGV2aWNlIiAwCisJCWxhcHBlbmQgc3VwcG9ydGVkX3N5Y2xfZGV2aWNlX2xpc3QgIiRkZXZpY2Ui CisJICAgIH0gZWxzZSB7CisJCXZlcmJvc2UgIlNZQ0w6IFN1cHBvcnQgbm90IGRldGVjdGVkIGZv ciAkZGV2aWNlIiAwCisJICAgIH0KKwl9CisgICAgfQorCisgICAgcmV0dXJuICRzdXBwb3J0ZWRf c3ljbF9kZXZpY2VfbGlzdAorfQorCisjIFJ1biB0aGUgcHJvZ3JhbSB1bmRlciBkZWJ1ZyBieSBw YXNzaW5nIERFVklDRSBhcyB0aGUgY29tbWFuZCBsaW5lCisjIGFyZ3VtZW50LiAgSWYgdGhlIGRl dmljZSBpcyBub3QgSW50ZWwgR1QsIHN0b3AgYXQgbWFpbi4gIElmIHRoZQorIyBkZXZpY2UgaXMg SW50ZWwgR1QsIGNvbnRpbnVlIHVudGlsIHRoZSB6ZUNvbnRleHRDcmVhdGUgQVBJIGNhbGwgYW5k CisjIGF0dGVtcHQgdG8gY3JlYXRlIGFub3RoZXIgaW5mZXJpb3IgY29ubmVjdGVkIHRvIGFuIElu dGVsIEdUCisjIGdkYnNlcnZlciB0YXJnZXQuCisjCisjIFJldHVybiAxIG9uIHN1Y2Nlc3MsIDAg b24gZmFpbHVyZS4KKworcHJvYyBzeWNsX3N0YXJ0IHtkZXZpY2V9IHsKKyAgICBpZiB7W3JlcXVp cmVfc3ljbF9kZXZpY2UgJGRldmljZSAiZ3B1IiAiSW50ZWwqIl19IHsKKwkjIFRvIGRlYnVnIGFu IEludGVsIEdUIGRldmljZSwgd2UgY3JlYXRlIGFuIGFkZGl0aW9uYWwKKwkjIGluZmVyaW9yLiAg Rm9yIHRoZSBtdWx0aS10YXJnZXQgc2V0dGluZyB0byB3b3JrLCB3ZQorCSMgbmVlZCB0byBvcGVy YXRlIGluIHRhcmdldC1ub24tc3RvcCBtb2RlLgorCWdkYl90ZXN0X25vX291dHB1dCAibWFpbnQg c2V0IHRhcmdldC1ub24tc3RvcCBvbiIKKyAgICB9CisKKyAgICBzZXQgYXJncyAiIgorICAgIGZv cmVhY2ggYXJnIFtzeWNsX2dldF9kZXZpY2VfYXJncyAkZGV2aWNlXSB7CisJYXBwZW5kIGFyZ3Mg IickYXJnJyAiCisgICAgfQorICAgIGdkYl90ZXN0X25vX291dHB1dCAic2V0IGFyZ3MgJGFyZ3Mi CisKKyAgICBpZiB7IVtydW50b19tYWluXX0geworCXJldHVybiAwCisgICAgfQorCisgICAgaWYg e1tyZXF1aXJlX3N5Y2xfZGV2aWNlICRkZXZpY2UgImdwdSIgIkludGVsKiJdfSB7CisJIyBGb3Ig dGhlIEludGVsIEdUIHRhcmdldCwgZGVmaW5lIGEgImhvb2siIEJQIGF0IGEKKwkjIExldmVsLVpl cm8gQVBJIGZ1bmN0aW9uIGF0IHdoaWNoIHRoZSBMZXZlbC1aZXJvIGJhY2tlbmQKKwkjIHdvdWxk IGhhdmUgYmVlbiBhbHJlYWR5IGluaXRpYWxpemVkLCBhdHRhY2hpbmcgdG8gdGhlCisJIyBkZXZp Y2Ugd291bGQgYmUgZXhwZWN0ZWQgdG8gc3VjY2VlZC4gIE9uY2Ugd2UgaGl0IHRoZQorCSMgaG9v ayBCUCwgd2UgY3JlYXRlIHRoZSBhZGRpdGlvbmFsIGluZmVyaW9yLgorCWdkYl9icmVha3BvaW50 ICJ6ZU1vZHVsZUNyZWF0ZSIgeyp9Ii1hbGxvdy1wZW5kaW5nIC10ZW1wb3JhcnkiCisJc2V0IGhv b2tfYnBfaGl0IFtnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiaG9vayBicCIgXAorCQkJICAg ICAiemVNb2R1bGVDcmVhdGVcW15cclxuXF0qIl0KKwlpZiB7JGhvb2tfYnBfaGl0ICE9IDB9IHsK KwkgICAgcmV0dXJuIDAKKwl9CisKKwl3aXRoX3Rlc3RfcHJlZml4ICIkZGV2aWNlIiB7CisJICAg IHNldCBpbmZfcGlkIFtnZXRfaW5mZXJpb3JfcGlkXQorCSAgICBnZGJfdGVzdCAiYWRkLWluZmVy aW9yIC1uby1jb25uZWN0aW9uIgorCSAgICBnZGJfdGVzdCAiaW5mZXJpb3IgMiIKKwkgICAgc2V0 IGNtZCAiZ2Ric2VydmVyLWludGVsZ3QgLS1vbmNlIC0tbXVsdGkgLSIKKwkgICAgZ2RiX3Rlc3Qg InRhcmdldCBleHRlbmRlZC1yZW1vdGUgfCAkY21kIiBcCisJCSJSZW1vdGUgZGVidWdnaW5nLioi ICJjb25uZWN0IHRoZSByZW1vdGUgdGFyZ2V0IgorCSAgICBnZGJfdGVzdCAiYXR0YWNoICRpbmZf cGlkIgorCSAgICBnZGJfdGVzdCAiaW5mZXJpb3IgMSIKKwkgICAgZ2RiX3Rlc3QgInNldCBzY2hl ZHVsZS1tdWx0aSBvbiIKKwkgICAgZ2RiX3Rlc3QgImluZm8gaW5mZXJpb3IiICIuKiIgImluZmVy aW9ycyBmb3IgbG9nZ2luZyIKKwl9CisgICAgfQorCisgICAgcmV0dXJuIDEKK30KKworIyBHZXQg bGlzdCBvZiBkZXZpY2VzIGFuZCByZXR1cm4gMCBpZiBkZXZpY2UgbGlzdCBpcyBub24tZW1wdHkg ZWxzZQorIyByZXR1cm4gMS4gIEVhY2ggZGV2aWNlIGVudHJ5IG9mIHRoaXMgbGlzdCBjb250YWlu cyAiOyIgc2VwYXJhdGVkCisjIGZvbGxvd2luZyBpbmZvcm1hdGlvbjoKKyMgZGV2aWNlIG5hbWU7 YmFja2VuZCBuYW1lO2RldmljZSB0eXBlO2RldmljZSB2ZXJzaW9uO2RldmljZSBjb3VudC4KKwor Z2RiX2NhY2hpbmdfcHJvYyBpbml0X3N5Y2xfZGV2aWNlc19saXN0IHt9IHsKKyAgICBnbG9iYWwg c3JjZGlyCisgICAgZ2xvYmFsIGluZmVyaW9yX2V4aXRlZF9yZQorICAgIGdsb2JhbCBzeWNsX2Rl dmljZV9saXN0CisKKyAgICBzZXQgc3ljbF9kZXZpY2VfbGlzdCB7fQorICAgIHNldCBzdXBwb3J0 ZWRfc3ljbF9kZXZpY2VfbGlzdCB7fQorCisgICAgIyBTZXQgdXAsIGNvbXBpbGUsIGFuZCBleGVj dXRlIGEgc2ltcGxlIFNZQ0wgcHJvZ3JhbS4KKyAgICBzZXQgZXhlIFtzdGFuZGFyZF9vdXRwdXRf ZmlsZSBzeWNsLWRldmljZXNdCisgICAgc2V0IHNyYyAiJHNyY2Rpci9saWIvc3ljbC1kZXZpY2Vz LmNwcCIKKworICAgIGlmIHshW3Rlc3RfY29tcGlsZXJfaW5mbyB7aWN4LSp9IGMrK119IHsKKwl1 bnN1cHBvcnRlZCAiU1lDTCB0ZXN0cyBzdXBwb3J0ZWQgb25seSBmb3IgZHBjcHAgYW5kIGljcHgg Y29tcGlsZXJzIgorCXJldHVybiAkc3ljbF9kZXZpY2VfbGlzdAorICAgIH0KKworICAgIGlmIHtb YnVpbGRfZXhlY3V0YWJsZSAiZmFpbGVkIHRvIGNvbXBpbGUgJHNyYyIgJGV4ZSAkc3JjIHtzeWNs IGRlYnVnfV19IHsKKwl2ZXJib3NlICJTWUNMOiBDb21waWxhdGlvbiBmYWlsZWQiIDAKKwlyZXR1 cm4gJHN5Y2xfZGV2aWNlX2xpc3QKKyAgICB9CisgICAgdmVyYm9zZSAtbG9nICJcblNZQ0w6IENv bXBpbGF0aW9uIHN1Y2NlZWRlZCIKKworICAgIGNsZWFuX3Jlc3RhcnQgc3ljbC1kZXZpY2VzCisK KyAgICBpZiB7IVtydW50b19tYWluXX0geworCXVudGVzdGVkICJmYWlsZWQgdG8gcnVuIHN5Y2wt ZGV2aWNlcyB0byBtYWluIgorCXJldHVybiAkc3ljbF9kZXZpY2VfbGlzdAorICAgIH0KKworICAg IHNldCByZXN1bHQgMQorICAgIGdkYl90ZXN0X211bHRpcGxlICJjb250aW51ZSIgImNvbnRpbnVl IiB7CisJLXJlICJTWUNMOiBMaXN0IG9mIFRhcmdldCBkZXZpY2VzOiBcXFxbKFxbXlxyXG5cXSsp XFxcXSIgeworCSAgICBzZXQgc3ljbF9kZXZpY2VfbGlzdCBbc3BsaXQgJGV4cGVjdF9vdXQoMSxz dHJpbmcpICIsIl0KKwkgICAgZXhwX2NvbnRpbnVlCisJfQorCS1yZSAtd3JhcCAiJGluZmVyaW9y X2V4aXRlZF9yZSBub3JtYWxseV0uKiIgeworCSAgICBzZXQgcmVzdWx0IDAKKwl9CisJLXJlIC13 cmFwICIkaW5mZXJpb3JfZXhpdGVkX3JlIHdpdGggY29kZS4qIiB7CisJICAgIHNldCByZXN1bHQg MQorCX0KKyAgICB9CisKKyAgICBzZXQgc3VwcG9ydGVkX3N5Y2xfZGV2aWNlX2xpc3QgW2dldF9z eWNsX3N1cHBvcnRlZF9kZXZpY2VzICRzeWNsX2RldmljZV9saXN0XQorICAgIGlmIHsoJHJlc3Vs dCA9PSAwKSAmJiAoW2xsZW5ndGggJHN1cHBvcnRlZF9zeWNsX2RldmljZV9saXN0XSA+IDApfSB7 CisJdmVyYm9zZSAiU1lDTDogRGV2aWNlcyBmb3VuZDogJHN1cHBvcnRlZF9zeWNsX2RldmljZV9s aXN0IiAwCisgICAgfSBlbHNlIHsKKwlzZXQgcmVzdWx0IDEKKwl2ZXJib3NlICJTWUNMOiBObyBk ZXZpY2UgZm91bmQiIDAKKyAgICB9CisKKyAgICBnZGJfZXhpdAorCisgICAgcmV0dXJuICRzdXBw b3J0ZWRfc3ljbF9kZXZpY2VfbGlzdAorfQorCisjIFJldHVybiB0aGUgSUQgb2YgdGhlIGN1cnJl bnQgdGhyZWFkICg8aW5mZXJpb3IgbnVtYmVyPi48dGhyZWFkCisjIG51bWJlcj4pLiAgVGhpcyBw cm9jZWR1cmUgY2FuIGJlIG1vcmUgcHJhY3RpY2FsIHRoYW4gdXNpbmcgdGhlCisjICRfdGhyZWFk IGFuZCAkX2luZmVyaW9yIGNvbnZlbmllbmNlIHZhcmlhYmxlcywgYmVjYXVzZSBpZiB0aGUgU1lD TAorIyBrZXJuZWwgaXMgb2ZmbG9hZGVkIHRvIGEgQ1BVIHRhcmdldCwgdGhlIGN1cnJlbnQgdGhy ZWFkIHdvdWxkIGJlIGEKKyMgc2luZ2xlIGludGVnZXIsIGJ1dCBpZiBvZmZsb2FkZWQgdG8gYSBH UFUsIGl0IG1heSBiZSBhbgorIyBpbmZlcmlvci1xdWFsaWZpZWQgbnVtYmVyIGxpa2UgTi5NLgor cHJvYyBnZXRfY3VycmVudF90aHJlYWQge2xvY2F0aW9ufSB7CisgICAgZ2xvYmFsIGRlY2ltYWwK KworICAgIGdkYl90ZXN0X211bHRpcGxlICJ0aHJlYWQiICJnZXQgY3VycmVudCB0aHJlYWQgYXQg JGxvY2F0aW9uIiB7CisJLXJlIC13cmFwICJDdXJyZW50IHRocmVhZCBpcyAoJGRlY2ltYWx8JGRl Y2ltYWxcLiRkZWNpbWFsKS4qIiB7CisJICAgIHBhc3MgJGdkYl90ZXN0X25hbWUKKwkgICAgcmV0 dXJuICRleHBlY3Rfb3V0KDEsc3RyaW5nKQorCX0KKwktcmUgLXdyYXAgIiIgeworCSAgICBmYWls ICRnZGJfdGVzdF9uYW1lCisJfQorICAgIH0KKyAgICByZXR1cm4gMAorfQorCisjIFJldHVybnMg MSBpZiB0aGUgdGFyZ2V0IGRldmljZSBpcyBzZWxlY3RlZCB2aWEgT0ZGTE9BRF9ERVZJQ0VfR1JP VVAKKyMgYW5kIDAgb3RoZXJ3aXNlLgorIyBERVZJQ0UgY29udGFpbnMgIjsiIHNlcGFyYXRlZCBm b2xsb3dpbmcgaW5mb3JtYXRpb246CisjIGRldmljZSBuYW1lO2JhY2tlbmQgbmFtZTtkZXZpY2Ug dHlwZTtkZXZpY2UgdmVyc2lvbjtkZXZpY2UgY291bnQuCisKK3Byb2MgaXNfc3ljbF9kZXZpY2Vf ZmlsdGVyZWQge2RldmljZX0geworICAgIGdsb2JhbCBPRkZMT0FEX0RFVklDRV9HUk9VUAorCisg ICAgIyBGaWx0ZXIgYWNjb3JkaW5nIHRvIE9GRkxPQURfREVWSUNFX0dST1VQLgorICAgIHNldCBk ZXZpY2VfaW5mbyBbc3BsaXQgIiRkZXZpY2UiICI7Il0KKyAgICBzZXQgYmFja2VuZCBbbGluZGV4 ICRkZXZpY2VfaW5mbyAxXQorICAgIHNldCBkZXZpY2VfdHlwZSBbbGluZGV4ICRkZXZpY2VfaW5m byAyXQorCisgICAgaWYge1tsc2VhcmNoIC1ub2Nhc2UgW3NwbGl0ICRPRkZMT0FEX0RFVklDRV9H Uk9VUCAiLCJdICRkZXZpY2VfdHlwZV0gPCAwfSB7CisJdmVyYm9zZSAtbG9nICJTWUNMOiBkZXZp Y2UgdHlwZSAkZGV2aWNlX3R5cGUgaXMgdW53YW50ZWQsIHNraXBwaW5nICckZGV2aWNlJyIKKwly ZXR1cm4gMAorICAgIH0KKworICAgIGlmIHskZGV2aWNlX3R5cGUgPT0gImdwdSIKKwkmJiBbc3Ry aW5nIG1hdGNoIC1ub2Nhc2UgIipvcGVuY2wqIiAkYmFja2VuZF19IHsKKwl2ZXJib3NlIC1sb2cg IlNZQ0w6IHVuc3VwcG9ydGVkIGNvbWJpbmF0aW9uOiAkZGV2aWNlX3R5cGUgJiAkYmFja2VuZCIK KwlyZXR1cm4gMAorICAgIH0KKworICAgIHJldHVybiAxCit9CisKKyMgUmV0dXJucyBudW1iZXIg b2YgZGV2aWNlcyBmb3VuZCBpbiBkZXZpY2Ugc3RyaW5nLgorIyBERVZJQ0UgY29udGFpbnMgIjsi IHNlcGFyYXRlZCBmb2xsb3dpbmcgaW5mb3JtYXRpb246CisjIGRldmljZSBuYW1lO2JhY2tlbmQg bmFtZTtkZXZpY2UgdHlwZTtkZXZpY2UgdmVyc2lvbjtkZXZpY2UgY291bnQuCisKK3Byb2Mgc3lj bF9nZXRfZGV2aWNlX2NvdW50IHtkZXZpY2V9IHsKKyAgICBzZXQgZGV2aWNlX2luZm8gW3NwbGl0 ICIkZGV2aWNlIiAiOyJdCisgICAgc2V0IGRldmljZV9jb3VudCBbbGluZGV4ICRkZXZpY2VfaW5m byA0XQorICAgIHJldHVybiAkZGV2aWNlX2NvdW50Cit9CisKKyMgR2V0cyB0aGUgbGlzdCBvZiBh cmdzIHJlcXVpcmVkIGZvciBydW5uaW5nIHRoZSBTWUNMIHRlc3RzLCB3aGVyZSBpbnB1dCBkZXZp Y2UKKyMgY29udGFpbnMgIjsiIHNlcGFyYXRlZCBmb2xsb3dpbmcgaW5mb3JtYXRpb246CisjIGRl dmljZSBuYW1lO2JhY2tlbmQgbmFtZTtkZXZpY2UgdHlwZTtkZXZpY2UgdmVyc2lvbjtkZXZpY2Ug Y291bnQuCisjCisjIFJldHVybnMgW2RldmljZSB0eXBlLCBkZXZpY2UgbmFtZSwgYmFja2VuZCBu YW1lLCBkZXZpY2UgdmVyc2lvbl0KK3Byb2Mgc3ljbF9nZXRfZGV2aWNlX2FyZ3Mge2RldmljZX0g eworICAgIGdsb2JhbCBoZXgKKworICAgIHNldCBkZXZpY2VfaW5mbyBbc3BsaXQgIiRkZXZpY2Ui ICI7Il0KKyAgICBzZXQgYmFja2VuZF9uYW1lIFtsaW5kZXggJGRldmljZV9pbmZvIDFdCisgICAg c2V0IGRldmljZV90eXBlIFtsaW5kZXggJGRldmljZV9pbmZvIDJdCisgICAgc2V0IGRldmljZV92 ZXJzaW9uIFtsaW5kZXggJGRldmljZV9pbmZvIDNdCisgICAgc2V0IGRldmljZV9uYW1lICIiCisg ICAgc2V0IGFyZ3NfbGlzdCB7fQorCisgICAgaWYgeyRkZXZpY2VfdHlwZSBlcSAiZ3B1In0gewor CWxhcHBlbmQgYXJnc19saXN0ICJncHUiCisJbGFwcGVuZCBhcmdzX2xpc3QgW2xpbmRleCAkZGV2 aWNlX2luZm8gMF0KKyAgICB9IGVsc2VpZiB7JGRldmljZV90eXBlIGVxICJjcHUifSB7CisJbGFw cGVuZCBhcmdzX2xpc3QgImNwdSIKKwlpZiB7W3N0cmluZyBtYXRjaCAiKkludGVsKiIgJGRldmlj ZV19IHsKKwkgICAgbGFwcGVuZCBhcmdzX2xpc3QgIkludGVsIgorCX0KKyAgICB9IGVsc2VpZiB7 JGRldmljZV90eXBlIGVxICJhY2NlbGVyYXRvciJ9IHsKKwlsYXBwZW5kIGFyZ3NfbGlzdCAiYWNj ZWxlcmF0b3IiCisJaWYge1tzdHJpbmcgbWF0Y2ggIipJbnRlbCoiICRkZXZpY2VdfSB7CisJICAg IGxhcHBlbmQgYXJnc19saXN0ICJJbnRlbCIKKwl9CisgICAgfSBlbHNlIHsKKwl2ZXJib3NlICJT WUNMOiBVbmV4cGVjdGVkIGRldmljZSB0eXBlOiAkZGV2aWNlX3R5cGUiIDAKKyAgICB9CisgICAg bGFwcGVuZCBhcmdzX2xpc3QgJGJhY2tlbmRfbmFtZQorICAgIGxhcHBlbmQgYXJnc19saXN0ICRk ZXZpY2VfdmVyc2lvbgorICAgIHJldHVybiAkYXJnc19saXN0Cit9CisKKyMgR2V0cyB0aGUgcHJl Zml4IHN0cmluZyByZXF1aXJlZCBmb3IgdGhlIFNZQ0wgdGVzdHMuCisjCisjIEZ1bmN0aW9uIHJl dHVybnMgIjoiIHNlcGFyYXRlZCB0ZXN0IHByZWZpeCB3aGljaCBoYXMgZm9sbG93aW5nIGluZm86 CisjIEluIGNhc2Ugb2Ygbm9uIEdQVSBkZXZpY2U6IERldmljZSB0eXBlOkJhY2tlbmQgdHlwZTpj cHAKKyMgYW5kIGluIGNhc2Ugb2YgR1BVOiBEZXZpY2UgdHlwZSBHUFU6IEJhY2tlbmQgdHlwZTog R3JhcGhpY3MgZGV2aWNlIElECisjIGUuZy4gZ3B1Om9wZW5jbDp7MHgxMjM0fQorCitwcm9jIHN5 Y2xfZ2V0X2RldmljZV9wcmVmaXgge2RldmljZX0geworICAgIGdsb2JhbCBoZXgKKyAgICBzZXQg YXJnc19saXN0IFtzeWNsX2dldF9kZXZpY2VfYXJncyAkZGV2aWNlXQorCisgICAgaWYge1tzdHJp bmcgbWF0Y2ggLW5vY2FzZSAiKkdyYXBoaWNzKiIgJGRldmljZV0KKwkgfHwgW3N0cmluZyBtYXRj aCAtbm9jYXNlICIqR1BVKiIgJGRldmljZV19IHsKKwkgICAgIyBJbiBjYXNlIG9mIEdQVSBkZXZp Y2UsIGFkZCBkZXZpY2UgSUQgdG8gdGhlIHByZWZpeCB0byBnZXQgYSB1bmlxdWUKKwkgICAgIyB0 ZXN0IG5hbWUgZm9yIG11bHRpIEdQVSB0ZXN0IG1hY2hpbmVzLgorCSAgICByZXR1cm4gIltsaW5k ZXggJGFyZ3NfbGlzdCAwXTpbbGluZGV4ICRhcmdzX2xpc3QgMl06XAorCQkgICAge1tyZWdleHAg LWFsbCAtaW5saW5lICRoZXggW2xpbmRleCAkYXJnc19saXN0IDFdXX0iCisgICAgfQorICAgIHJl dHVybiAiW2xpbmRleCAkYXJnc19saXN0IDBdOltsaW5kZXggJGFyZ3NfbGlzdCAyXTpjcHAiCit9 CisKKyMgUnVuIEJPRFkgdW5kZXIgdGhlIGxvY2ssIGlmIERFVklDRSBpcyBhbiBJbnRlbCBHUFUu ICBBbHNvIGNhbGxzCisjIGdkYl9leGl0IGJlZm9yZSByZWxlYXNpbmcgdGhlIEdQVSBsb2NrLgor IworIyBTZWUgdGhlIHNpbWlsYXIgJ3dpdGhfZ3B1X2xvY2snIGluIHJvY20uZXhwLgorCitwcm9j IHN5Y2xfd2l0aF9pbnRlbGd0X2xvY2sge2RldmljZSBib2R5fSB7CisgICAgd2l0aF90ZXN0X3By ZWZpeCBbc3ljbF9nZXRfZGV2aWNlX3ByZWZpeCAkZGV2aWNlXSB7CisJaWYgeyFbcmVxdWlyZV9z eWNsX2RldmljZSAiJGRldmljZSIgImdwdSIgIkludGVsKiJdfSB7CisJICAgIHNldCBjb2RlIFtj YXRjaCB7dXBsZXZlbCAxICRib2R5fSByZXN1bHRdCisJfSBlbHNlIHsKKwkgICAgd2l0aF9sb2Nr ICQ6OmludGVsZ3RfbG9ja19maWxlbmFtZSB7CisJCXNldCBjb2RlIFtjYXRjaCB7dXBsZXZlbCAx ICRib2R5fSByZXN1bHRdCisJICAgIH0KKwl9CisKKwkjIEluIGNhc2UgQk9EWSByZXR1cm5lZCBl YXJseSBkdWUgdG8gc29tZSB0ZXN0Y2FzZSBmYWlsaW5nLgorCWdkYl9leGl0CisgICAgfQorCisg ICAgaWYgeyRjb2RlID09IDF9IHsKKwlyZXR1cm4gLWNvZGUgJGNvZGUgLWVycm9yaW5mbyAkOjpl cnJvckluZm8gXAorCSAgICAtZXJyb3Jjb2RlICQ6OmVycm9yQ29kZSAkcmVzdWx0CisgICAgfSBl bHNlIHsKKwlyZXR1cm4gLWNvZGUgJGNvZGUgJHJlc3VsdAorICAgIH0KK30KKworIyBHZXQgdGhl IG5hbWVzcGFjZSB2ZXJzaW9uIGZvciB0aGUgU1lDTCBoZWFkZXIgY29ycmVzcG9uZGluZyB0byB0 aGUgY29tcGlsZXIKKyMgdXNlZC4gIFJldHVybiAwIGZvciBvbGRlciBjb21waWxlcnMgdXNpbmcg U1lDTCB3aXRob3V0IG5hbWVzcGFjZSB2ZXJzaW9uaW5nLgorCitwcm9jIGdldF9zeWNsX2hlYWRl cl92ZXJzaW9uIHt9IHsKKyAgICBpZiB7W3Rlc3RfY29tcGlsZXJfaW5mbyB7aWN4LTIwMlszLTld LSp9IGMrK119IHsKKwlyZXR1cm4gMQorICAgIH0KKworICAgIHJldHVybiAwCit9CisKKyMgU3Bh d24gYSBTWUNMIHByb2dyYW0gdGFyZ2V0aW5nIERFVklDRS4KKworcHJvYyBzcGF3bl9zeWNsX3By b2Mge2V4ZWN1dGFibGUgZGV2aWNlfSB7CisgICAgIyBXZSBkaXJlY3RseSB1c2UgJ3JlbW90ZV9z cGF3bicgdG8gYmUgYWJsZSB0byBwYXNzCisgICAgIyB0aGUgcHJvZ3JhbSBhcmd1bWVudHMuCisg ICAgc2V0IGNvbW1hbmQgW2xpc3QgJGV4ZWN1dGFibGVdCisgICAgZm9yZWFjaCBhcmcgW3N5Y2xf Z2V0X2RldmljZV9hcmdzICRkZXZpY2VdIHsKKwlsYXBwZW5kIGNvbW1hbmQgJGFyZworICAgIH0K KyAgICB2ZXJib3NlIC1sb2cgImNvbW1hbmQ6ICRjb21tYW5kIgorCisgICAgc2V0IHNwYXduX2lk IFtyZW1vdGVfc3Bhd24gdGFyZ2V0ICRjb21tYW5kXQorICAgIHJldHVybiAkc3Bhd25faWQKK30K LS0gCjIuNDMuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KSW50 ZWwgRGV1dHNjaGxhbmQgR21iSCANCg0KUmVnaXN0ZXJlZCBBZGRyZXNzOiBEb3JuYWNoZXIgU3Ry YXNzZSAxLCA4NTYyMiBGZWxka2lyY2hlbiwgR2VybWFueSANCg0KVGVsOiArNDkgKDg5KSA5OTE0 My0wIA0KDQp3d3cuaW50ZWwuZGUgDQoNCk1hbmFnaW5nIERpcmVjdG9yczogQ2FuZGljZSBNb29y ZSwgSmVmZnJleSBTY2huZWlkZXJtYW4sIFJhbWFjaGFuZHJhbiBTaXRhcmFtYW4NCg0KQ2hhaXJw ZXJzb24gb2YgdGhlIFN1cGVydmlzb3J5IEJvYXJkOiBTb25qYSBQaWVyZXINCg0KUmVnaXN0ZXJl ZCBTZWF0OiBNdW5pY2ggQ29tbWVyY2lhbCBSZWdpc3RlciBCOiBBbXRzZ2VyaWNodCBNdW5pY2gg SFJCIDE4NjkyOA0KDQpUaGlzIGUtbWFpbCBhbmQgYW55IGF0dGFjaG1lbnRzIG1heSBjb250YWlu IGNvbmZpZGVudGlhbCBtYXRlcmlhbCBmb3INCnRoZSBzb2xlIHVzZSBvZiB0aGUgaW50ZW5kZWQg cmVjaXBpZW50KHMpLiBBbnkgcmV2aWV3IG9yIGRpc3RyaWJ1dGlvbg0KYnkgb3RoZXJzIGlzIHN0 cmljdGx5IHByb2hpYml0ZWQuIElmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRlZA0KcmVjaXBpZW50 LCBwbGVhc2UgY29udGFjdCB0aGUgc2VuZGVyIGFuZCBkZWxldGUgYWxsIGNvcGllcy4K