From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id wR6mL3p852nBUzAAWB0awg (envelope-from ) for ; Tue, 21 Apr 2026 09:32:42 -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=V9dL9yyw; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id BD80D1E0C3; Tue, 21 Apr 2026 09:32:42 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-3.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,RCVD_IN_MSPIKE_H2,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED, RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED 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 314EB1E0B1 for ; Tue, 21 Apr 2026 09:32:40 -0400 (EDT) Received: from vm01.sourceware.org (localhost [127.0.0.1]) by sourceware.org (Postfix) with ESMTP id ACBF34BAD175 for ; Tue, 21 Apr 2026 13:32:39 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org ACBF34BAD175 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=V9dL9yyw Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.17]) by sourceware.org (Postfix) with ESMTPS id 8EF3E4BA23C8 for ; Tue, 21 Apr 2026 13:32:11 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 8EF3E4BA23C8 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 8EF3E4BA23C8 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=198.175.65.17 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776778331; cv=none; b=KuVcmK5ozQZtlHaXOu8R195Vd1zBGAIswp+nA5Vs+hcYbUjbUYNUEy/OeI3CmxOvvHNUZRWlO0Ujqb6232cLZTXXDWDGMFotIkvOwWekjv99bCdD9DqD4YX5c/9ipbn6jw4U2hSvtYCjSqC1DykVBtVIW8SfBKjkcVXbcfpAsOE= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776778331; c=relaxed/simple; bh=Lp8BnxU/IGuhOfBPUoqs/M8yWrR+SdagMxZCa4N8FKs=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=N3nqF4C2m49VoSeCFSwQ/VjL+jG94bDl5B42iin29mtAmxfZUlfdYbycruzdQZ4tXy8kezE73UCQfD8q3FyqqIis+VOwyXOqTSQMuaUC3YrhwUZql1pAHFkVPiRJh1SZlK2Ine0V8d/2qaeA8WbAF7vOLKDQ8ghpe0FV+ZOaXvg= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 8EF3E4BA23C8 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1776778332; x=1808314332; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=Lp8BnxU/IGuhOfBPUoqs/M8yWrR+SdagMxZCa4N8FKs=; b=V9dL9yywMcJewLliqrDZYT9d5FSeZX1UlndjWAM6kGT6w2tSVRvzZLyk d18kA4WVGkkRrgMxYhzf/VJ09C8yV9xihc5Np4CEEdMBbPaUo1phPBttd D1UfPj4+/EyVviOtDXMjMROcimKie0sT2MixbKkKJI5YFgAVzjeTeZURx 8oFmyJSw05Ls6t9XwcMBXsHPaA4PfukdLk0EKBf/byEkmHu/IfSg9ZkjO LZ4gyi6MBO3Q75NIke2+x4xpXm/m39nZ0MPDBNeBDvQUUl5YFqq664GAc CAXwthx00hGM5BUw2aeqedBwE1koaKvyBN2a9J+6GUOT0X9/Lu80S+TYO Q==; X-CSE-ConnectionGUID: bFqZ1PhQR1On+y2XK5ORgA== X-CSE-MsgGUID: TqETi56HSSuakyP5/eILEg== X-IronPort-AV: E=McAfee;i="6800,10657,11762"; a="77687265" X-IronPort-AV: E=Sophos;i="6.23,191,1770624000"; d="scan'208";a="77687265" Received: from fmviesa009.fm.intel.com ([10.60.135.149]) by orvoesa109.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Apr 2026 06:32:11 -0700 X-CSE-ConnectionGUID: Nb2K+tBWSL+qol6i/OqwBQ== X-CSE-MsgGUID: 6gGkhoROSWOo8FJAyx+aoA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.23,191,1770624000"; d="scan'208";a="225533833" Received: from dut1465dg2mrb.igk.intel.com (HELO localhost) ([10.211.180.13]) by fmviesa009-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Apr 2026 06:32:10 -0700 From: Klaus Gerlicher To: gdb-patches@sourceware.org Subject: [PATCH 1/1] gdb/linespec: relax block filter to preserve distinct code paths Date: Tue, 21 Apr 2026 13:31:54 +0000 Message-Id: <20260421133154.585917-2-klaus.gerlicher@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260421133154.585917-1-klaus.gerlicher@intel.com> References: <20260421133154.585917-1-klaus.gerlicher@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 VGhlIGJsb2NrLWJhc2VkIGR1cGxpY2F0ZSBmaWx0ZXIgaW4gY3JlYXRlX3NhbHNfbGluZV9vZmZz ZXQga2VlcHMgb25seQp0aGUgZmlyc3QgaXNfc3RtdCBsaW5lIHRhYmxlIGVudHJ5IHBlciBibG9j ay4gIFRoaXMgaGV1cmlzdGljIHJlZHVjZXMKbXVsdGlwbGUgZm9yLWxvb3AgaGVhZGVyIGVudHJp ZXMgKGluaXQvdGVzdC9pbmNyZW1lbnQgb24gc2FtZSBsaW5lKSB0bwpzaW5nbGUgYnJlYWtwb2lu dCBsb2NhdGlvbnMuICBIb3dldmVyLCBpdCBpcyB0b28gYWdncmVzc2l2ZSBmb3IKdmVjdG9yaXpl ZCBsb29wcywgd2hlcmUgdGhlIGNvbXBpbGVyIGVtaXRzIHNlcGFyYXRlIGNvZGUgcmVnaW9ucyBm b3IKdGhlIHZlY3Rvcml6ZWQgYm9keSBhbmQgc2NhbGFyIHJlbWFpbmRlciwgYm90aCBvbiB0aGUg c2FtZSBzb3VyY2UgbGluZS4KVGhlIGZpbHRlciBkaXNjYXJkcyB0aGUgc2NhbGFyIHJlbWFpbmRl ciBlbnRyeSwgY2F1c2luZyBicmVha3BvaW50cyB0bwpiZSBzaWxlbnRseSBtaXNzZWQgd2hlbiBv bmx5IHRoZSBzY2FsYXIgcGF0aCBleGVjdXRlcy4KClRoZSBmaXggaW50cm9kdWNlcyByYW5nZV9o YXNfdW5jb25kaXRpb25hbF9mbG93X2NvbnRyb2wsIHdoaWNoIGFuYWx5emVzCnRoZSBpbnN0cnVj dGlvbiBzdHJlYW0gZm9yIHR3byBjb25kaXRpb25zIGluZGljYXRpbmcgZGlzdGluY3QgY29kZSBw YXRoczoKCjEuIFVuY29uZGl0aW9uYWwgZXhpdDogVGhlIGxhc3QgaW5zdHJ1Y3Rpb24gYmVmb3Jl IHRoZSBzZWNvbmQgUEMgaXMgYW4KICAgdW5jb25kaXRpb25hbCBqbXAgb3IgcmV0IChleGVjdXRp b24gY2Fubm90IGZhbGwgdGhyb3VnaCkuCgoyLiBCYWNrd2FyZCBicmFuY2g6IEFueSBpbnN0cnVj dGlvbiBpbiB0aGUgcmFuZ2UgaXMgYSByZWxhdGl2ZSBicmFuY2gKICAgdGFyZ2V0aW5nIGJlZm9y ZSB0aGUgZmlyc3QgUEMgKGxvb3AgYmFjay1lZGdlIGluZGljYXRpbmcgc2VwYXJhdGUKICAgbG9v cCBib2RpZXMpLgoKQSBuZXcgZ2RiYXJjaCBtZXRob2QgZ2RiYXJjaF9pbnNuX2JyYW5jaF90YXJn ZXQgZGVjb2RlcyByZWxhdGl2ZSBicmFuY2gKdGFyZ2V0cy4gSW1wbGVtZW50ZWQgZm9yIGFtZDY0 OyBvdGhlciBhcmNoaXRlY3R1cmVzIGRlZmF1bHQgdG8KY29uc2VydmF0aXZlIGJlaGF2aW9yLCBw cmVzZXJ2aW5nIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCgpUZXN0aW5nIGNvdmVyczoKLSBmb3Jf bG9vcF9lbXB0eV9ib2R5ICgtTzApOiAxIGxvY2F0aW9uCi0gZm9yX2xvb3BfbGFyZ2VfYm9keSAo LU8wKTogMSBsb2NhdGlvbiAoZXhjZWVkcyBmb3JtZXIgc2NhbiBsaW1pdHMpCi0gZm9yX2xvb3Bf dmVjdG9yaXplZCAoLU8yKTogPj0gMiBsb2NhdGlvbnMgd2l0aCBydW50aW1lIHZlcmlmaWNhdGlv bgotIG5lc3RlZF92ZWN0b3JpemVkX2xvb3BzICgtTzIpOiA+PSAyIGxvY2F0aW9ucwotIGxvb3Bf d2l0aF9lYXJseV9icmVhayAoLU8yKTogPj0gMiBvciAxIGxvY2F0aW9uCi0gaWZlbHNlX3NlcGFy YXRlX2xpbmVzICgtTzApOiAyIGxvY2F0aW9ucyAoc2FuaXR5IGNoZWNrKQoKVGVzdGVkIHdpdGgg R0NDIDExIGFuZCBJQ1ggMjAyNS4yIG9uIHg4Nl82NC4KLS0tCiBnZGIvTkVXUyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTEgKwogZ2RiL2FtZDY0LXRkZXAuYyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDU3ICsrKysKIGdkYi9hcmNoLXV0aWxzLmMgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMCArCiBnZGIvYXJjaC11dGlscy5oICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogZ2RiL2dkYmFyY2gtZ2VuLmMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDIyICsrCiBnZGIvZ2RiYXJjaC1nZW4uaCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgMTAgKwogZ2RiL2dkYmFyY2hfY29tcG9uZW50cy5weSAg ICAgICAgICAgICAgICAgICAgIHwgIDE1ICsrCiBnZGIvbGluZXNwZWMuYyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgOTUgKysrKysrLQogLi4uL2dkYi5saW5lc3BlYy9ibG9jay1m aWx0ZXItY2FzZXMuYyAgICAgICAgIHwgMTI2ICsrKysrKysrKwogLi4uL2dkYi5saW5lc3BlYy9i bG9jay1maWx0ZXItY2FzZXMuZXhwICAgICAgIHwgMjQ4ICsrKysrKysrKysrKysrKysrKwogMTAg ZmlsZXMgY2hhbmdlZCwgNTkyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiBjcmVhdGUg bW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIubGluZXNwZWMvYmxvY2stZmlsdGVyLWNhc2Vz LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIvdGVzdHN1aXRlL2dkYi5saW5lc3BlYy9ibG9jay1m aWx0ZXItY2FzZXMuZXhwCgpkaWZmIC0tZ2l0IGEvZ2RiL05FV1MgYi9nZGIvTkVXUwppbmRleCA2 YjVjMmY2YTQ2YS4uOWI4NWJkNzk5NDQgMTAwNjQ0Ci0tLSBhL2dkYi9ORVdTCisrKyBiL2dkYi9O RVdTCkBAIC02MSw2ICs2MSwxNyBAQAogICBUaGlzIGZpeGVzIGFuIGlzc3VlIHdoZXJlIEdEQiBj b3VsZCBmYWlsIHRvIGZpbmQgYSB0eXBlIHdoZW4gcmVseWluZwogICBvbiB0aGUgaW5kZXguICBB bnkgZXhpc3RpbmcgaW5kZXhlcyBzaG91bGQgYmUgcmVnZW5lcmF0ZWQuCiAKKyogQnJlYWtwb2lu dCBsb2NhdGlvbiByZXNvbHV0aW9uIGhhcyBiZWVuIGltcHJvdmVkIGZvciB2ZWN0b3JpemVkIGxv b3BzLgorICBQcmV2aW91c2x5LCB3aGVuIHNldHRpbmcgYSBicmVha3BvaW50IG9uIGEgc291cmNl IGxpbmUgd2l0aCB2ZWN0b3JpemVkCisgIGNvZGUgKGF0IC1PMiB3aXRoIC1mdHJlZS12ZWN0b3Jp emUpLCBHREIncyBibG9jayBmaWx0ZXIgaGV1cmlzdGljIHdvdWxkCisgIGRpc2NhcmQgdGhlIHNj YWxhciByZW1haW5kZXIgbG9jYXRpb24sIGNhdXNpbmcgYnJlYWtwb2ludHMgdG8gYmUgbWlzc2Vk CisgIHdoZW4gb25seSB0aGUgc2NhbGFyIHBhdGggZXhlY3V0ZWQuIEdEQiBub3cgY29ycmVjdGx5 IHByZXNlcnZlcyBtdWx0aXBsZQorICBsb2NhdGlvbnMgZm9yIHZlY3Rvcml6ZWQgYW5kIHNjYWxh ciBsb29wIHBhdGhzLCBpbXByb3ZpbmcgZGVidWdnYWJpbGl0eQorICBvZiBvcHRpbWl6ZWQgY29k ZS4KKworICBVc2UgInNldCBsaW5lc3BlYy1leHRlbmRlZC1ibG9jay1maWx0ZXIgb2ZmIiB0byBk aXNhYmxlIHRoZSBuZXcKKyAgaGV1cmlzdGljIGFuZCByZXZlcnQgdG8gdGhlIG9yaWdpbmFsIGJl aGF2aW9yIGlmIG5lZWRlZC4KKwogKiBTdXBwb3J0IGZvciBGbG9hdGluZyBQb2ludCBNb2RlIFJl Z2lzdGVyIChGUE1SKSBpbiBBQXJjaDY0LgogCiAqIFdoZW4gcnVubmluZyBvbiB0aGUgV2luZG93 cyBUZXJtaW5hbCBjb25zb2xlLCBHREIgbm93IHN1cHBvcnRzCmRpZmYgLS1naXQgYS9nZGIvYW1k NjQtdGRlcC5jIGIvZ2RiL2FtZDY0LXRkZXAuYwppbmRleCAwZDIzYWJiMzE2NC4uNzY0NTA3NzVk NDUgMTAwNzU1Ci0tLSBhL2dkYi9hbWQ2NC10ZGVwLmMKKysrIGIvZ2RiL2FtZDY0LXRkZXAuYwpA QCAtMTgyMiw2ICsxODIyLDYyIEBAIGFtZDY0X2luc25faXNfanVtcCAoc3RydWN0IGdkYmFyY2gg KmdkYmFyY2gsIENPUkVfQUREUiBhZGRyKQogICByZXR1cm4gYW1kNjRfY2xhc3NpZnlfaW5zbl9h dCAoZ2RiYXJjaCwgYWRkciwgYW1kNjRfam1wX3ApOwogfQogCisvKiBSZXR1cm4gdGhlIHN0YXRp Y2FsbHkta25vd24gdGFyZ2V0IG9mIGEgcmVsYXRpdmUgYnJhbmNoIGluc3RydWN0aW9uCisgICAo Y29uZGl0aW9uYWwgSmNjLCBKTVAsIExPT1AsIEpDWFopLiAgUmV0dXJuIHN0ZDo6bnVsbG9wdCBm b3Igbm9uLWJyYW5jaCwKKyAgIGluZGlyZWN0IGJyYW5jaGVzLCBvciB3aGVuIG1lbW9yeSBjYW5u b3QgYmUgcmVhZC4gICovCisKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPENPUkVfQUREUj4KK2FtZDY0 X2luc25fYnJhbmNoX3RhcmdldCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBh ZGRyKQoreworICBnZGJfYnl0ZSBidWZbMTZdOworCisgIC8qIFJlYWQgZW5vdWdoIGJ5dGVzIGZv ciB0aGUgbG9uZ2VzdCByZWxhdGl2ZS1icmFuY2ggZW5jb2RpbmcuICAqLworICBpZiAodGFyZ2V0 X3JlYWRfbWVtb3J5IChhZGRyLCBidWYsIHNpemVvZiAoYnVmKSkgIT0gMCkKKyAgICByZXR1cm4g c3RkOjpudWxsb3B0OworCisgIC8qIFNraXAgYSBzaW5nbGUgUkVYIHByZWZpeCBieXRlICgweDQw LTB4NEYpLiAgKi8KKyAgaW50IG9mZiA9IDA7CisgIGlmICgoYnVmWzBdICYgMHhmMCkgPT0gMHg0 MCkKKyAgICBvZmYgPSAxOworCisgIGNvbnN0IGdkYl9ieXRlIG9wYyA9IGJ1ZltvZmZdOworCisg IC8qIFNob3J0IGNvbmRpdGlvbmFsIEpjYzogN3ggY2MgICgyIGJ5dGVzLCBzaWduZWQgOC1iaXQg ZGlzcGxhY2VtZW50KS4gICovCisgIGlmICgob3BjICYgMHhmMCkgPT0gMHg3MCkKKyAgICByZXR1 cm4gYWRkciArIG9mZiArIDIgKyAoTE9OR0VTVCkgKHNpZ25lZCBjaGFyKSBidWZbb2ZmICsgMV07 CisKKyAgLyogU2hvcnQgdW5jb25kaXRpb25hbCBKTVA6IEVCIGNjICAoMiBieXRlcykuICAqLwor ICBpZiAob3BjID09IDB4ZWIpCisgICAgcmV0dXJuIGFkZHIgKyBvZmYgKyAyICsgKExPTkdFU1Qp IChzaWduZWQgY2hhcikgYnVmW29mZiArIDFdOworCisgIC8qIExPT1AvTE9PUEUvTE9PUE5FOiBF Mi9FMS9FMCBjYyAgKDIgYnl0ZXMsIHNpZ25lZCA4LWJpdCBkaXNwbGFjZW1lbnQpLiAgKi8KKyAg aWYgKChvcGMgJiAweGZkKSA9PSAweGUwKQorICAgIHJldHVybiBhZGRyICsgb2ZmICsgMiArIChM T05HRVNUKSAoc2lnbmVkIGNoYXIpIGJ1ZltvZmYgKyAxXTsKKworICAvKiBKQ1haL0pFQ1haL0pS Q1haOiBFMyBjYyAgKDIgYnl0ZXMsIHNpZ25lZCA4LWJpdCBkaXNwbGFjZW1lbnQpLiAgKi8KKyAg aWYgKG9wYyA9PSAweGUzKQorICAgIHJldHVybiBhZGRyICsgb2ZmICsgMiArIChMT05HRVNUKSAo c2lnbmVkIGNoYXIpIGJ1ZltvZmYgKyAxXTsKKworICAvKiBOZWFyIGNvbmRpdGlvbmFsIEpjYzog MEYgOHggY2MgY2MgY2MgY2MgICg2IGJ5dGVzLCBzaWduZWQgMzItYml0KS4gICovCisgIGlmIChv cGMgPT0gMHgwZiAmJiAoYnVmW29mZiArIDFdICYgMHhmMCkgPT0gMHg4MCkKKyAgICB7CisgICAg ICBpbnQzMl90IGRpc3A7CisgICAgICBtZW1jcHkgKCZkaXNwLCBidWYgKyBvZmYgKyAyLCBzaXpl b2YgKGRpc3ApKTsKKyAgICAgIHJldHVybiBhZGRyICsgb2ZmICsgNiArIChMT05HRVNUKSBkaXNw OworICAgIH0KKworICAvKiBOZWFyIHVuY29uZGl0aW9uYWwgSk1QOiBFOSBjYyBjYyBjYyBjYyAg KDUgYnl0ZXMsIHNpZ25lZCAzMi1iaXQpLiAgKi8KKyAgaWYgKG9wYyA9PSAweGU5KQorICAgIHsK KyAgICAgIGludDMyX3QgZGlzcDsKKyAgICAgIG1lbWNweSAoJmRpc3AsIGJ1ZiArIG9mZiArIDEs IHNpemVvZiAoZGlzcCkpOworICAgICAgcmV0dXJuIGFkZHIgKyBvZmYgKyA1ICsgKExPTkdFU1Qp IGRpc3A7CisgICAgfQorCisgIC8qIEluZGlyZWN0IG9yIGZhciBicmFuY2hlczogdGFyZ2V0IGNh bm5vdCBiZSBkZXRlcm1pbmVkIHN0YXRpY2FsbHkuICAqLworICByZXR1cm4gc3RkOjpudWxsb3B0 OworfQorCiAvKiBGaXggdXAgdGhlIHN0YXRlIG9mIHJlZ2lzdGVycyBhbmQgbWVtb3J5IGFmdGVy IGhhdmluZyBzaW5nbGUtc3RlcHBlZAogICAgYSBkaXNwbGFjZWQgaW5zdHJ1Y3Rpb24uICAqLwog CkBAIC0zNjQzLDYgKzM2OTksNyBAQCBhbWQ2NF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5m byBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKICAgc2V0X2dkYmFyY2hfaW5zbl9pc19j YWxsIChnZGJhcmNoLCBhbWQ2NF9pbnNuX2lzX2NhbGwpOwogICBzZXRfZ2RiYXJjaF9pbnNuX2lz X3JldCAoZ2RiYXJjaCwgYW1kNjRfaW5zbl9pc19yZXQpOwogICBzZXRfZ2RiYXJjaF9pbnNuX2lz X2p1bXAgKGdkYmFyY2gsIGFtZDY0X2luc25faXNfanVtcCk7CisgIHNldF9nZGJhcmNoX2luc25f YnJhbmNoX3RhcmdldCAoZ2RiYXJjaCwgYW1kNjRfaW5zbl9icmFuY2hfdGFyZ2V0KTsKIAogICBz ZXRfZ2RiYXJjaF9pbl9pbmRpcmVjdF9icmFuY2hfdGh1bmsgKGdkYmFyY2gsCiAJCQkJCWFtZDY0 X2luX2luZGlyZWN0X2JyYW5jaF90aHVuayk7CmRpZmYgLS1naXQgYS9nZGIvYXJjaC11dGlscy5j IGIvZ2RiL2FyY2gtdXRpbHMuYwppbmRleCBlYTBiM2MxMTFmOS4uMjhhOGQzM2QxMzkgMTAwNjQ0 Ci0tLSBhL2dkYi9hcmNoLXV0aWxzLmMKKysrIGIvZ2RiL2FyY2gtdXRpbHMuYwpAQCAtNDUsNiAr NDUsOCBAQAogCiAjaW5jbHVkZSAiZGlzLWFzbS5oIgogCisjaW5jbHVkZSA8b3B0aW9uYWw+CisK IGJvb2wKIGRlZmF1bHRfZGlzcGxhY2VkX3N0ZXBfaHdfc2luZ2xlc3RlcCAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gpCiB7CkBAIC05MjMsNiArOTI1LDE0IEBAIGRlZmF1bHRfaW5zbl9pc19qdW1w IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSIGFkZHIpCiAKIC8qICBTZWUgYXJj aC11dGlscy5oLiAgKi8KIAorc3RkOjpvcHRpb25hbDxDT1JFX0FERFI+CitkZWZhdWx0X2luc25f YnJhbmNoX3RhcmdldCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBhZGRyKQor eworICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCisvKiAgU2VlIGFyY2gtdXRpbHMuaC4gICov CisKIGJvb2wKIGRlZmF1bHRfcHJvZ3JhbV9icmVha3BvaW50X2hlcmVfcCAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gsCiAJCQkJICAgQ09SRV9BRERSIGFkZHJlc3MpCmRpZmYgLS1naXQgYS9nZGIv YXJjaC11dGlscy5oIGIvZ2RiL2FyY2gtdXRpbHMuaAppbmRleCBkNTc3MjU3NWM3YS4uMmVjN2U1 OTAwYTcgMTAwNjQ0Ci0tLSBhL2dkYi9hcmNoLXV0aWxzLmgKKysrIGIvZ2RiL2FyY2gtdXRpbHMu aApAQCAtMzI3LDYgKzMyNyw3IEBAIGV4dGVybiBib29sIGRlZmF1bHRfcmV0dXJuX2luX2ZpcnN0 X2hpZGRlbl9wYXJhbV9wIChzdHJ1Y3QgZ2RiYXJjaCAqLAogZXh0ZXJuIGJvb2wgZGVmYXVsdF9p bnNuX2lzX2NhbGwgKHN0cnVjdCBnZGJhcmNoICosIENPUkVfQUREUik7CiBleHRlcm4gYm9vbCBk ZWZhdWx0X2luc25faXNfcmV0IChzdHJ1Y3QgZ2RiYXJjaCAqLCBDT1JFX0FERFIpOwogZXh0ZXJu IGJvb2wgZGVmYXVsdF9pbnNuX2lzX2p1bXAgKHN0cnVjdCBnZGJhcmNoICosIENPUkVfQUREUik7 CitleHRlcm4gc3RkOjpvcHRpb25hbDxDT1JFX0FERFI+IGRlZmF1bHRfaW5zbl9icmFuY2hfdGFy Z2V0IChzdHJ1Y3QgZ2RiYXJjaCAqLCBDT1JFX0FERFIpOwogCiAvKiBEZWZhdWx0IGltcGxlbWVu dGF0aW9uIG9mIGdkYmFyY2hfcHJvZ3JhbV9icmVha3BvaW50X2hlcmVfcC4gICovCiBleHRlcm4g Ym9vbCBkZWZhdWx0X3Byb2dyYW1fYnJlYWtwb2ludF9oZXJlX3AgKHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoLApkaWZmIC0tZ2l0IGEvZ2RiL2dkYmFyY2gtZ2VuLmMgYi9nZGIvZ2RiYXJjaC1nZW4u YwppbmRleCAxYThmMjEwOTFiMi4uZDMxYWQ4NDI4MGMgMTAwNjQ0Ci0tLSBhL2dkYi9nZGJhcmNo LWdlbi5jCisrKyBiL2dkYi9nZGJhcmNoLWdlbi5jCkBAIC0yMzQsNiArMjM0LDcgQEAgc3RydWN0 IGdkYmFyY2gKICAgZ2RiYXJjaF9pbnNuX2lzX2NhbGxfZnR5cGUgKmluc25faXNfY2FsbCA9IGRl ZmF1bHRfaW5zbl9pc19jYWxsOwogICBnZGJhcmNoX2luc25faXNfcmV0X2Z0eXBlICppbnNuX2lz X3JldCA9IGRlZmF1bHRfaW5zbl9pc19yZXQ7CiAgIGdkYmFyY2hfaW5zbl9pc19qdW1wX2Z0eXBl ICppbnNuX2lzX2p1bXAgPSBkZWZhdWx0X2luc25faXNfanVtcDsKKyAgZ2RiYXJjaF9pbnNuX2Jy YW5jaF90YXJnZXRfZnR5cGUgKmluc25fYnJhbmNoX3RhcmdldCA9IGRlZmF1bHRfaW5zbl9icmFu Y2hfdGFyZ2V0OwogICBnZGJhcmNoX3Byb2dyYW1fYnJlYWtwb2ludF9oZXJlX3BfZnR5cGUgKnBy b2dyYW1fYnJlYWtwb2ludF9oZXJlX3AgPSBkZWZhdWx0X3Byb2dyYW1fYnJlYWtwb2ludF9oZXJl X3A7CiAgIGdkYmFyY2hfYXV4dl9wYXJzZV9mdHlwZSAqYXV4dl9wYXJzZSA9IG51bGxwdHI7CiAg IGdkYmFyY2hfcHJpbnRfYXV4dl9lbnRyeV9mdHlwZSAqcHJpbnRfYXV4dl9lbnRyeSA9IGRlZmF1 bHRfcHJpbnRfYXV4dl9lbnRyeTsKQEAgLTQ5NCw2ICs0OTUsNyBAQCB2ZXJpZnlfZ2RiYXJjaCAo c3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCiAgIC8qIFNraXAgdmVyaWZ5IG9mIGluc25faXNfY2Fs bCwgaW52YWxpZF9wID09IDAuICAqLwogICAvKiBTa2lwIHZlcmlmeSBvZiBpbnNuX2lzX3JldCwg aW52YWxpZF9wID09IDAuICAqLwogICAvKiBTa2lwIHZlcmlmeSBvZiBpbnNuX2lzX2p1bXAsIGlu dmFsaWRfcCA9PSAwLiAgKi8KKyAgLyogU2tpcCB2ZXJpZnkgb2YgaW5zbl9icmFuY2hfdGFyZ2V0 LCBpbnZhbGlkX3AgPT0gMC4gICovCiAgIC8qIFNraXAgdmVyaWZ5IG9mIHByb2dyYW1fYnJlYWtw b2ludF9oZXJlX3AsIGludmFsaWRfcCA9PSAwLiAgKi8KICAgLyogU2tpcCB2ZXJpZnkgb2YgYXV4 dl9wYXJzZSwgaGFzIHByZWRpY2F0ZS4gICovCiAgIC8qIFNraXAgdmVyaWZ5IG9mIHByaW50X2F1 eHZfZW50cnksIGludmFsaWRfcCA9PSAwLiAgKi8KQEAgLTEyNzYsNiArMTI3OCw5IEBAIGdkYmFy Y2hfZHVtcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCB1aV9maWxlICpmaWxlKQog ICBnZGJfcHJpbnRmIChmaWxlLAogCSAgICAgICJnZGJhcmNoX2R1bXA6IGluc25faXNfanVtcCA9 IDwlcz5cbiIsCiAJICAgICAgaG9zdF9hZGRyZXNzX3RvX3N0cmluZyAoZ2RiYXJjaC0+aW5zbl9p c19qdW1wKSk7CisgIGdkYl9wcmludGYgKGZpbGUsCisJICAgICAgImdkYmFyY2hfZHVtcDogaW5z bl9icmFuY2hfdGFyZ2V0ID0gPCVzPlxuIiwKKwkgICAgICBob3N0X2FkZHJlc3NfdG9fc3RyaW5n IChnZGJhcmNoLT5pbnNuX2JyYW5jaF90YXJnZXQpKTsKICAgZ2RiX3ByaW50ZiAoZmlsZSwKIAkg ICAgICAiZ2RiYXJjaF9kdW1wOiBwcm9ncmFtX2JyZWFrcG9pbnRfaGVyZV9wID0gPCVzPlxuIiwK IAkgICAgICBob3N0X2FkZHJlc3NfdG9fc3RyaW5nIChnZGJhcmNoLT5wcm9ncmFtX2JyZWFrcG9p bnRfaGVyZV9wKSk7CkBAIC00OTUwLDYgKzQ5NTUsMjMgQEAgc2V0X2dkYmFyY2hfaW5zbl9pc19q dW1wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKICAgZ2RiYXJjaC0+aW5zbl9pc19qdW1wID0g aW5zbl9pc19qdW1wOwogfQogCitzdGQ6Om9wdGlvbmFsPENPUkVfQUREUj4KK2dkYmFyY2hfaW5z bl9icmFuY2hfdGFyZ2V0IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSIGFkZHIp Cit7CisgIGdkYl9hc3NlcnQgKGdkYmFyY2ggIT0gbnVsbHB0cik7CisgIGdkYl9hc3NlcnQgKGdk YmFyY2gtPmluc25fYnJhbmNoX3RhcmdldCAhPSBudWxscHRyKTsKKyAgaWYgKGdkYmFyY2hfZGVi dWcgPj0gMikKKyAgICBnZGJfcHJpbnRmIChnZGJfc3RkbG9nLCAiZ2RiYXJjaF9pbnNuX2JyYW5j aF90YXJnZXQgY2FsbGVkXG4iKTsKKyAgcmV0dXJuIGdkYmFyY2gtPmluc25fYnJhbmNoX3Rhcmdl dCAoZ2RiYXJjaCwgYWRkcik7Cit9CisKK3ZvaWQKK3NldF9nZGJhcmNoX2luc25fYnJhbmNoX3Rh cmdldCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisJCQkJZ2RiYXJjaF9pbnNuX2JyYW5jaF90 YXJnZXRfZnR5cGUgaW5zbl9icmFuY2hfdGFyZ2V0KQoreworICBnZGJhcmNoLT5pbnNuX2JyYW5j aF90YXJnZXQgPSBpbnNuX2JyYW5jaF90YXJnZXQ7Cit9CisKIGJvb2wKIGdkYmFyY2hfcHJvZ3Jh bV9icmVha3BvaW50X2hlcmVfcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBh ZGRyZXNzKQogewpkaWZmIC0tZ2l0IGEvZ2RiL2dkYmFyY2gtZ2VuLmggYi9nZGIvZ2RiYXJjaC1n ZW4uaAppbmRleCBjMTM5NDk3ODU2OC4uZTMxZGRjNmI3NDEgMTAwNjQ0Ci0tLSBhL2dkYi9nZGJh cmNoLWdlbi5oCisrKyBiL2dkYi9nZGJhcmNoLWdlbi5oCkBAIC0xNTkyLDYgKzE1OTIsMTYgQEAg dXNpbmcgZ2RiYXJjaF9pbnNuX2lzX2p1bXBfZnR5cGUgPSBib29sIChzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCwgQ09SRV9BRERSIGFkZHIKIGJvb2wgZ2RiYXJjaF9pbnNuX2lzX2p1bXAgKHN0cnVj dCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIgYWRkcik7CiB2b2lkIHNldF9nZGJhcmNoX2lu c25faXNfanVtcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGdkYmFyY2hfaW5zbl9pc19qdW1w X2Z0eXBlICppbnNuX2lzX2p1bXApOwogCisvKiBGb3IgYSByZWxhdGl2ZSBicmFuY2ggaW5zdHJ1 Y3Rpb24gYXQgQUREUiAoY29uZGl0aW9uYWwgb3IKKyAgIHVuY29uZGl0aW9uYWwpLCByZXR1cm4g dGhlIHN0YXRpY2FsbHkta25vd24gYnJhbmNoIHRhcmdldCBhZGRyZXNzLgorICAgUmV0dXJuIHN0 ZDo6bnVsbG9wdCBmb3Igbm9uLWJyYW5jaCBpbnN0cnVjdGlvbnMsIGluZGlyZWN0IGJyYW5jaGVz LAorICAgb3Igd2hlbiByZWFkaW5nIG1lbW9yeSBmYWlscy4gIFRoaXMgaXMgdXNlZCB0byBkZXRl Y3QgYmFja3dhcmQKKyAgIGxvb3AgYmFjay1lZGdlcyBkdXJpbmcgRFdBUkYgbGluZS10YWJsZSBh bmFseXNpcy4gKi8KKwordXNpbmcgZ2RiYXJjaF9pbnNuX2JyYW5jaF90YXJnZXRfZnR5cGUgPSBz dGQ6Om9wdGlvbmFsPENPUkVfQUREUj4gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FE RFIgYWRkcik7CitzdGQ6Om9wdGlvbmFsPENPUkVfQUREUj4gZ2RiYXJjaF9pbnNuX2JyYW5jaF90 YXJnZXQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIgYWRkcik7Cit2b2lkIHNl dF9nZGJhcmNoX2luc25fYnJhbmNoX3RhcmdldCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGdk YmFyY2hfaW5zbl9icmFuY2hfdGFyZ2V0X2Z0eXBlICppbnNuX2JyYW5jaF90YXJnZXQpOworCiAv KiBSZXR1cm4gdHJ1ZSBpZiB0aGVyZSdzIGEgcHJvZ3JhbS9wZXJtYW5lbnQgYnJlYWtwb2ludCBw bGFudGVkIGluCiAgICBtZW1vcnkgYXQgQUREUkVTUywgcmV0dXJuIGZhbHNlIG90aGVyd2lzZS4g Ki8KIApkaWZmIC0tZ2l0IGEvZ2RiL2dkYmFyY2hfY29tcG9uZW50cy5weSBiL2dkYi9nZGJhcmNo X2NvbXBvbmVudHMucHkKaW5kZXggN2EzMjlkOTIxNjYuLjRkY2Y1OTVmMjI5IDEwMDY0NAotLS0g YS9nZGIvZ2RiYXJjaF9jb21wb25lbnRzLnB5CisrKyBiL2dkYi9nZGJhcmNoX2NvbXBvbmVudHMu cHkKQEAgLTI1MjQsNiArMjUyNCwyMSBAQCBSZXR1cm4gdHJ1ZSBpZiB0aGUgaW5zdHJ1Y3Rpb24g YXQgQUREUiBpcyBhIGp1bXA7IGZhbHNlIG90aGVyd2lzZS4KICAgICBpbnZhbGlkPUZhbHNlLAog KQogCitNZXRob2QoCisgICAgY29tbWVudD0iIiIKK0ZvciBhIHJlbGF0aXZlIGJyYW5jaCBpbnN0 cnVjdGlvbiBhdCBBRERSIChjb25kaXRpb25hbCBvcgordW5jb25kaXRpb25hbCksIHJldHVybiB0 aGUgc3RhdGljYWxseS1rbm93biBicmFuY2ggdGFyZ2V0IGFkZHJlc3MuCitSZXR1cm4gc3RkOjpu dWxsb3B0IGZvciBub24tYnJhbmNoIGluc3RydWN0aW9ucywgaW5kaXJlY3QgYnJhbmNoZXMsCitv ciB3aGVuIHJlYWRpbmcgbWVtb3J5IGZhaWxzLiAgVGhpcyBpcyB1c2VkIHRvIGRldGVjdCBiYWNr d2FyZAorbG9vcCBiYWNrLWVkZ2VzIGR1cmluZyBEV0FSRiBsaW5lLXRhYmxlIGFuYWx5c2lzLgor IiIiLAorICAgIHR5cGU9InN0ZDo6b3B0aW9uYWw8Q09SRV9BRERSPiIsCisgICAgbmFtZT0iaW5z bl9icmFuY2hfdGFyZ2V0IiwKKyAgICBwYXJhbXM9WygiQ09SRV9BRERSIiwgImFkZHIiKV0sCisg ICAgcHJlZGVmYXVsdD0iZGVmYXVsdF9pbnNuX2JyYW5jaF90YXJnZXQiLAorICAgIGludmFsaWQ9 RmFsc2UsCispCisKIE1ldGhvZCgKICAgICBjb21tZW50PSIiIgogUmV0dXJuIHRydWUgaWYgdGhl cmUncyBhIHByb2dyYW0vcGVybWFuZW50IGJyZWFrcG9pbnQgcGxhbnRlZCBpbgpkaWZmIC0tZ2l0 IGEvZ2RiL2xpbmVzcGVjLmMgYi9nZGIvbGluZXNwZWMuYwppbmRleCA0NWUxMmUwOTI3Mi4uZTYz MDVkZGVhYmIgMTAwNjQ0Ci0tLSBhL2dkYi9saW5lc3BlYy5jCisrKyBiL2dkYi9saW5lc3BlYy5j CkBAIC00Myw5ICs0MywxMiBAQAogI2luY2x1ZGUgImdkYnN1cHBvcnQvZnVuY3Rpb24tdmlldy5o IgogI2luY2x1ZGUgImdkYnN1cHBvcnQvZGVmLXZlY3Rvci5oIgogI2luY2x1ZGUgPGFsZ29yaXRo bT4KKyNpbmNsdWRlICJkaXNhc20uaCIKKyNpbmNsdWRlICJnZGJhcmNoLmgiCiAjaW5jbHVkZSAi aW5mZXJpb3IuaCIKICNpbmNsdWRlICJnZGJzdXBwb3J0L3Vub3JkZXJlZF9zZXQuaCIKICNpbmNs dWRlICJjbGkvY2xpLXN0eWxlLmgiCisjaW5jbHVkZSAiY2xpL2NsaS1jbWRzLmgiCiAKIC8qIEFu IGVudW1lcmF0aW9uIG9mIHRoZSB2YXJpb3VzIHRoaW5ncyBhIHVzZXIgbWlnaHQgYXR0ZW1wdCB0 bwogICAgY29tcGxldGUgZm9yIGEgbGluZXNwZWMgbG9jYXRpb24uICAqLwpAQCAtNDMxLDYgKzQz NCwxMSBAQCBzdGF0aWMgYm9vbCBjb21wYXJlX21zeW1ib2xzIChjb25zdCBib3VuZF9taW5pbWFs X3N5bWJvbCAmYSwKICAgIHByZXZpb3VzIHBhcnNlci4gICovCiBzdGF0aWMgY29uc3QgY2hhciBs aW5lc3BlY19xdW90ZV9jaGFyYWN0ZXJzW10gPSAiXCJcJyI7CiAKKy8qIENvbnRyb2wgd2hldGhl ciB0aGUgZXh0ZW5kZWQgYmxvY2stZmlsdGVyIGhldXJpc3RpYyBpcyBlbmFibGVkLgorICAgVGhp cyBoZXVyaXN0aWMgaW1wcm92ZXMgYnJlYWtwb2ludCBsb2NhdGlvbiByZXNvbHV0aW9uIGZvciB2 ZWN0b3JpemVkCisgICBsb29wcyBidXQgY2FuIGJlIGRpc2FibGVkIGlmIGl0IGNhdXNlcyB1bmV4 cGVjdGVkIGJlaGF2aW9yLiAgKi8KK3N0YXRpYyBib29sIGRlYnVnX2xpbmVzcGVjX2V4dGVuZGVk X2Jsb2NrX2ZpbHRlciA9IHRydWU7CisKIC8qIExleGVyIGZ1bmN0aW9ucy4gICovCiAKIC8qIExl eCBhIG51bWJlciBmcm9tIHRoZSBpbnB1dCBpbiBQQVJTRVIuICBUaGlzIG9ubHkgc3VwcG9ydHMK QEAgLTE5NzksNiArMTk4Nyw0OCBAQCBjYW5vbmljYWxpemVfbGluZXNwZWMgKHN0cnVjdCBsaW5l c3BlY19zdGF0ZSAqc3RhdGUsIGNvbnN0IGxpbmVzcGVjICpscykKICAgICBleHBsaWNpdF9sb2Mt PnNldF9zdHJpbmcgKGV4cGxpY2l0X2xvYy0+dG9fbGluZXNwZWMgKCkpOwogfQogCisvKiBSZXR1 cm4gdHJ1ZSBpZiBQQ19UTyBpcyB1bnJlYWNoYWJsZSBieSBmYWxsLXRocm91Z2ggZnJvbSBQQ19G Uk9NLgorICAgVHdvIGNvbmRpdGlvbnMgYXJlIHN1ZmZpY2llbnQ6ICgxKSBhbnkgcmV0IGluIFtQ Q19GUk9NLCBQQ19UTyksIG9yCisgICAoMikgdW5jb25kaXRpb25hbCBqdW1wL3JldCBpbW1lZGlh dGVseSBiZWZvcmUgUENfVE8uICBPbmx5IHRoZSBsYXN0CisgICBpbnN0cnVjdGlvbiBiZWZvcmUg UENfVE8gbWF0dGVyczsgbWlkLXJhbmdlIGJyYW5jaGVzIGFyZSBpZ25vcmVkIHRvCisgICBwcmVz ZXJ2ZSBmb3ItbG9vcCBkZWR1cGxpY2F0aW9uLiAgKi8KKworc3RhdGljIGJvb2wKK3JhbmdlX2hh c191bmNvbmRpdGlvbmFsX2Zsb3dfY29udHJvbCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisJ CQkJICAgICAgQ09SRV9BRERSIHBjX2Zyb20sIENPUkVfQUREUiBwY190bykKK3sKKyAgaWYgKHBj X2Zyb20gPj0gcGNfdG8pCisgICAgcmV0dXJuIGZhbHNlOworCisgIC8qIFJldHVybiB0cnVlIGlm OiBsYXN0IGluc3RydWN0aW9uIGJlZm9yZSBQQ19UTyBpcyB1bmNvbmRpdGlvbmFsCisgICAgIGpt cC9yZXQsIG9yIGFueSBpbnN0cnVjdGlvbiBpbiByYW5nZSBpcyBhIGJhY2t3YXJkIGJyYW5jaAor ICAgICAoaW5kaWNhdGluZyBzZXBhcmF0ZSBsb29wIGJvZGllcykuICAqLworCisgIENPUkVfQURE UiBwYyA9IHBjX2Zyb207CisKKyAgd2hpbGUgKHBjIDwgcGNfdG8pCisgICAgeworICAgICAgaW50 IGxlbiA9IGdkYl9pbnNuX2xlbmd0aCAoZ2RiYXJjaCwgcGMpOworICAgICAgaWYgKGxlbiA8PSAw KQorCXJldHVybiBmYWxzZTsKKworICAgICAgLyogQ2hlY2sgZm9yIGJhY2t3YXJkIGJyYW5jaCAo bG9vcCBiYWNrLWVkZ2UpLiAgKi8KKyAgICAgIHN0ZDo6b3B0aW9uYWw8Q09SRV9BRERSPiB0YXJn ZXQgPSBnZGJhcmNoX2luc25fYnJhbmNoX3RhcmdldCAoZ2RiYXJjaCwKKwkJCQkJCQkJICAgIHBj KTsKKyAgICAgIGlmICh0YXJnZXQuaGFzX3ZhbHVlKCkgJiYgdGFyZ2V0LnZhbHVlKCkgPCBwY19m cm9tKQorCXJldHVybiB0cnVlOworCisgICAgICAvKiBJcyB0aGlzIHRoZSBsYXN0IGluc3RydWN0 aW9uIGJlZm9yZSBQQ19UTz8gICovCisgICAgICBpZiAocGMgKyBsZW4gPj0gcGNfdG8pCisJcmV0 dXJuIGdkYmFyY2hfaW5zbl9pc19qdW1wIChnZGJhcmNoLCBwYykKKwkgICAgICAgfHwgZ2RiYXJj aF9pbnNuX2lzX3JldCAoZ2RiYXJjaCwgcGMpOworCisgICAgICBwYyArPSBsZW47CisgICAgfQor CisgIHJldHVybiBmYWxzZTsKK30KKwogLyogR2l2ZW4gYSBsaW5lIG9mZnNldCBpbiBMUywgY29u c3RydWN0IHRoZSByZWxldmFudCBTQUxzLiAgKi8KIAogc3RhdGljIHN0ZDo6dmVjdG9yPHN5bXRh Yl9hbmRfbGluZT4KQEAgLTIwNzcsMTMgKzIxMjcsMzUgQEAgY3JlYXRlX3NhbHNfbGluZV9vZmZz ZXQgKHN0cnVjdCBsaW5lc3BlY19zdGF0ZSAqc2VsZiwKIAogICAgICAgZm9yIChpID0gMDsgaSA8 IGludGVybWVkaWF0ZV9yZXN1bHRzLnNpemUgKCk7ICsraSkKIAl7Ci0JICBpZiAoYmxvY2tzW2ld ICE9IE5VTEwpCisJICBpZiAoYmxvY2tzW2ldICE9IE5VTEwgJiYgZmlsdGVyW2ldKQogCSAgICBm b3IgKGogPSBpICsgMTsgaiA8IGludGVybWVkaWF0ZV9yZXN1bHRzLnNpemUgKCk7ICsraikKIAkg ICAgICB7Ci0JCWlmIChibG9ja3Nbal0gPT0gYmxvY2tzW2ldKQorCQlpZiAoYmxvY2tzW2pdID09 IGJsb2Nrc1tpXSAmJiBmaWx0ZXJbal0pCiAJCSAgeworCQkgICAgY29uc3Qgc3ltdGFiX2FuZF9s aW5lICZzYWxfaSA9IGludGVybWVkaWF0ZV9yZXN1bHRzW2ldOworCQkgICAgY29uc3Qgc3ltdGFi X2FuZF9saW5lICZzYWxfaiA9IGludGVybWVkaWF0ZV9yZXN1bHRzW2pdOworCQkgICAgCisJCSAg ICBhdXRvIFtwY19sbywgcGNfaGldID0gc3RkOjptaW5tYXggKHNhbF9pLnBjLCBzYWxfai5wYyk7 CisKKwkJICAgIC8qIFdpdGhvdXQgc3ltdGFiIGluZm8sIGRvbid0IGZpbHRlciDigJQgd2UgY2Fu J3QgcmVsaWFibHkKKwkJICAgICAgIGRldGVybWluZSBpZiB0aGVzZSBhcmUgZGlzdGluY3QgY29k ZSBwYXRocy4gICovCisJCSAgICBpZiAoc2FsX2kuc3ltdGFiID09IG51bGxwdHIgfHwgc2FsX2ou c3ltdGFiID09IG51bGxwdHIpCisJCSAgICAgIGNvbnRpbnVlOworCisJCSAgICBpZiAoc2FsX2ku c3ltdGFiICE9IHNhbF9qLnN5bXRhYikKKwkJICAgICAgY29udGludWU7CisKKwkJICAgIC8qIENo ZWNrIGZvciB1bmNvbmRpdGlvbmFsIGZsb3cgY29udHJvbCBpbiB0aGUgcmFuZ2UKKwkJICAgICAg IChleHRlbmRlZCBoZXVyaXN0aWM7IGNhbiBiZSBkaXNhYmxlZCkuICAqLworCQkgICAgb2JqZmls ZSAqb2ZpbGUgPSBzYWxfaS5zeW10YWItPmNvbXB1bml0ICgpLT5vYmpmaWxlICgpOworCQkgICAg Z2RiYXJjaCAqZ2RiYXJjaCA9IG9maWxlLT5hcmNoICgpOworCisJCSAgICBpZiAoZGVidWdfbGlu ZXNwZWNfZXh0ZW5kZWRfYmxvY2tfZmlsdGVyCisJCSAgICAgICAgJiYgcmFuZ2VfaGFzX3VuY29u ZGl0aW9uYWxfZmxvd19jb250cm9sIChnZGJhcmNoLAorCQkJCQkJCSAgICAgICAgcGNfbG8sIHBj X2hpKSkKKwkJICAgICAgY29udGludWU7CisKIAkJICAgIGZpbHRlcltqXSA9IDA7Ci0JCSAgICBi cmVhazsKIAkJICB9CiAJICAgICAgfQogCX0KQEAgLTQzMzAsMyArNDQwMiwyMCBAQCBnZXRfZ2Ri X2xpbmVzcGVjX3BhcnNlcl9xdW90ZV9jaGFyYWN0ZXJzICh2b2lkKQogewogICByZXR1cm4gbGlu ZXNwZWNfcXVvdGVfY2hhcmFjdGVyczsKIH0KKworLyogUmVnaXN0ZXIgbGluZXNwZWMgZGVidWdn aW5nIGNvbW1hbmRzLiAgKi8KKworSU5JVF9HREJfRklMRSAobGluZXNwZWMpCit7CisgIGFkZF9z ZXRzaG93X2Jvb2xlYW5fY21kICgibGluZXNwZWMtZXh0ZW5kZWQtYmxvY2stZmlsdGVyIiwKKwkJ CSAgIGNsYXNzX3N1cHBvcnQsCisJCQkgICAmZGVidWdfbGluZXNwZWNfZXh0ZW5kZWRfYmxvY2tf ZmlsdGVyLCBfKCJcCitTZXQgd2hldGhlciB0aGUgZXh0ZW5kZWQgYmxvY2stZmlsdGVyIGhldXJp c3RpYyBpcyBlbmFibGVkLiIpLCBfKCJcCitTaG93IHdoZXRoZXIgdGhlIGV4dGVuZGVkIGJsb2Nr LWZpbHRlciBoZXVyaXN0aWMgaXMgZW5hYmxlZC4iKSwgXygiXAorVGhlIGV4dGVuZGVkIGhldXJp c3RpYyBpbXByb3ZlcyBicmVha3BvaW50IGxvY2F0aW9uIHJlc29sdXRpb24gZm9yXG5cCit2ZWN0 b3JpemVkIGxvb3BzIGF0IC1PMi4gV2hlbiBvZmYsIGJyZWFrcG9pbnRzIHVzZSBvbmx5IHRoZSBv cmlnaW5hbFxuXAoraGV1cmlzdGljLCB3aGljaCBtYXkgbWlzcyBsb2NhdGlvbnMgaW4gdmVjdG9y aXplZCBjb2RlLlxuXAorRGVmYXVsdCBpcyBvbi4iKSwKKwkJCSAgIG51bGxwdHIsIG51bGxwdHIs CisJCQkgICAmc2V0bGlzdCwgJnNob3dsaXN0KTsKK30KZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3Vp dGUvZ2RiLmxpbmVzcGVjL2Jsb2NrLWZpbHRlci1jYXNlcy5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu bGluZXNwZWMvYmxvY2stZmlsdGVyLWNhc2VzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLjhjZjgzNGU5NWY0Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIubGluZXNwZWMvYmxvY2stZmlsdGVyLWNhc2VzLmMKQEAgLTAsMCArMSwxMjYgQEAKKy8q IFRlc3QgY2FzZXMgZm9yIHRoZSBibG9jay1maWx0ZXIgaGV1cmlzdGljIGluIGNyZWF0ZV9zYWxz X2xpbmVfb2Zmc2V0LgorCisgICBDb3B5cmlnaHQgKEMpIDIwMjYgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KKworICAgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK KyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LgorCisgICBPbmUgZnVuY3Rpb24gcGVyIHRlc3RlZCBwYXR0ZXJuLiAg VGhlIGFjY29tcGFueWluZyAuZXhwIGZpbGUgdmVyaWZpZXMKKyAgIHRoZSBicmVha3BvaW50IGxv Y2F0aW9uIGNvdW50IGZvciBlYWNoIHBhdHRlcm4gYW5kLCB3aGVyZSB2ZWN0b3Jpc2F0aW9uCisg ICBpcyBwcmVzZW50LCBjb25maXJtcyB0aGF0IGJvdGggdGhlIHZlY3Rvcml6ZWQgYW5kIHNjYWxh ci1yZW1haW5kZXIgcGF0aHMKKyAgIGFyZSByZWFjaGFibGUgYXQgcnVudGltZS4KKworICAgYXJn YyA+IDEgIC0+ICBmb3JfbG9vcF92ZWN0b3JpemVkIGNhbGxlZCB3aXRoIG49MTAyNCAgKHZlY3Rv cml6ZWQgcGF0aCkKKyAgIGFyZ2MgPT0gMSAtPiAgZm9yX2xvb3BfdmVjdG9yaXplZCBjYWxsZWQg d2l0aCBuPTMgICAgIChzY2FsYXIgcGF0aCBvbmx5KSAgKi8KKwordm9sYXRpbGUgaW50IHNpbms7 CisKKy8qIGZvci1sb29wIHdpdGggZW1wdHkgYm9keSAoLU8wKS4gIEV4cGVjdGVkOiAxIGxvY2F0 aW9uLiAgKi8KKwordm9pZCBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKQorZm9yX2xvb3BfZW1w dHlfYm9keSAoaW50IG4pCit7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7fSAgLyog ZW1wdHktZm9yLWxpbmUgKi8KK30KKworLyogZm9yLWxvb3Agd2l0aCBsYXJnZSBib2R5ICgtTzAp LiAgRXhwZWN0ZWQ6IDEgbG9jYXRpb24uICAqLworCit2b2lkIF9fYXR0cmlidXRlX18gKChub2lu bGluZSkpCitmb3JfbG9vcF9sYXJnZV9ib2R5ICh2b2xhdGlsZSBpbnQgKmEsIHZvbGF0aWxlIGlu dCAqYiwgdm9sYXRpbGUgaW50ICpjLAorCQkgICAgIGludCBuKQoreworICBmb3IgKGludCBpID0g MDsgaSA8IG47IGkrKykgeyAgLyogbGFyZ2UtYm9keS1mb3ItbGluZSAqLworICAgIHNpbmsgPSBh W2ldICogMyArIGJbaV07CisgICAgc2luayA9IHNpbmsgXiAoc2luayA+PiA1KTsKKyAgICBzaW5r ICs9IGNbaV0gKiA3IC0gYVtpXTsKKyAgICBzaW5rID0gKHNpbmsgPDwgMykgfCAoc2luayA+PiAy OSk7CisgICAgc2luayArPSBhW2ldICsgYltpXSArIGNbaV07CisgICAgc2luayA9IHNpbmsgKiBz aW5rICsgYVtpXTsKKyAgICBzaW5rIF49IGJbaV0gKiBjW2ldOworICAgIHNpbmsgKz0gKGFbaV0g fCBiW2ldKSAmIGNbaV07CisgICAgc2luayA9IHNpbmsgLSBhW2ldICogYltpXTsKKyAgICBzaW5r ICs9IGNbaV0gXiAoYVtpXSArIGJbaV0pOworICAgIHNpbmsgKz0gYVtpXSAqIDUgLSBiW2ldICog MzsKKyAgICBzaW5rIF49IChzaW5rIDw8IDcpIHwgKHNpbmsgPj4gMjUpOworICAgIHNpbmsgKz0g Y1tpXSAqIGNbaV0gKyBhW2ldOworICAgIHNpbmsgPSBzaW5rIC8gKGFbaV0gKyAxKTsKKyAgICBz aW5rICs9IGJbaV0gKiBiW2ldIC0gY1tpXTsKKyAgICBzaW5rIF49IGFbaV0gXiBiW2ldIF4gY1tp XTsKKyAgICBzaW5rICs9IChhW2ldICsgYltpXSkgKiAoYltpXSArIGNbaV0pOworICAgIHNpbmsg PSAoc2luayA+PiAzKSArIGFbaV07CisgICAgc2luayArPSBjW2ldICogKGFbaV0gLSBiW2ldKTsK KyAgICBzaW5rIF49IHNpbmsgPj4gMTsKKyAgfQorfQorCisvKiBWZWN0b3JpemVkIGZvci1sb29w ICgtTzIpLiAgRXhwZWN0ZWQ6ID49IDIgbG9jYXRpb25zLiAgKi8KKwordm9pZCBfX2F0dHJpYnV0 ZV9fICgobm9pbmxpbmUpKQorZm9yX2xvb3BfdmVjdG9yaXplZCAoaW50ICphcnIsIGludCBuKQor eworICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKKyAgICBhcnJbaV0gPSBpICogMzsgIC8q IHZlYy1sb29wLWxpbmUgKi8KK30KKworLyogTmVzdGVkIHZlY3Rvcml6ZWQgZm9yLWxvb3BzICgt TzIpLiAgRXhwZWN0ZWQ6ID49IDIgbG9jYXRpb25zLiAgKi8KKwordm9pZCBfX2F0dHJpYnV0ZV9f ICgobm9pbmxpbmUpKQorbmVzdGVkX3ZlY3Rvcml6ZWRfbG9vcHMgKGludCAqYXJyLCBpbnQgbikK K3sKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCisgICAgZm9yIChpbnQgaiA9IDA7IGog PCBuOyBqKyspCisgICAgICBhcnJbaSAqIG4gKyBqXSA9IGkgKiBqOyAgLyogbmVzdGVkLXZlYy1s aW5lICovCit9CisKKy8qIEZvci1sb29wIHdpdGggZWFybHkgYnJlYWsgKC1PMikuICBFeHBlY3Rl ZDogPj0gMiBvciAxIGxvY2F0aW9uLiAgKi8KKwordm9pZCBfX2F0dHJpYnV0ZV9fICgobm9pbmxp bmUpKQorbG9vcF93aXRoX2Vhcmx5X2JyZWFrIChpbnQgKmFyciwgaW50IG4sIGludCB0YXJnZXQp Cit7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgYXJyW2ldID0gaSAqIDI7 ICAvKiBicmVhay1sb29wLWxpbmUgKi8KKyAgICBpZiAoYXJyW2ldID09IHRhcmdldCkKKyAgICAg IGJyZWFrOworICB9Cit9CisKKy8qIElmLWVsc2Ugd2l0aCBib3RoIGJyYW5jaGVzIG9uIHNhbWUg bGluZSAoLU8wKS4gIEV4cGVjdGVkOiAyIGxvY2F0aW9ucy4gICovCisKK3ZvaWQgX19hdHRyaWJ1 dGVfXyAoKG5vaW5saW5lKSkKK2lmZWxzZV9zZXBhcmF0ZV9saW5lcyAoaW50IHgsIGludCAqcmVz dWx0KQoreworICBpZiAoeCA+IDApCisgICAgKnJlc3VsdCA9IHggKiAyOyAgZWxzZSAqcmVzdWx0 ID0gLXg7ICAvKiBpZmVsc2UtbGluZSAqLworfQorCisKK2ludAorbWFpbiAoaW50IGFyZ2MsIGNo YXIgKmFyZ3ZbXSkKK3sKKyAgaW50IGFyclsxMDI0XTsKKyAgdm9sYXRpbGUgaW50IGFbNF0gPSB7 MSwgMiwgMywgNH07CisgIHZvbGF0aWxlIGludCBiWzRdID0gezQsIDMsIDIsIDF9OworICB2b2xh dGlsZSBpbnQgY1s0XSA9IHsxLCAxLCAxLCAxfTsKKyAgaW50IHJlc3VsdCA9IDA7CisKKyAgZm9y X2xvb3BfZW1wdHlfYm9keSAoNCk7CisgIGZvcl9sb29wX2xhcmdlX2JvZHkgKGEsIGIsIGMsIDQp OworICBmb3JfbG9vcF92ZWN0b3JpemVkIChhcnIsIGFyZ2MgPiAxID8gMTAyNCA6IDMpOworICBu ZXN0ZWRfdmVjdG9yaXplZF9sb29wcyAoYXJyLCBhcmdjID4gMSA/IDMyIDogMyk7CisgIGxvb3Bf d2l0aF9lYXJseV9icmVhayAoYXJyLCBhcmdjID4gMSA/IDEwMjQgOiAzLCA0Mik7CisgIGlmZWxz ZV9zZXBhcmF0ZV9saW5lcyAoYXJnYyA+IDEgPyAxMCA6IC01LCAmcmVzdWx0KTsKKworICByZXR1 cm4gMDsKK30KZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmxpbmVzcGVjL2Jsb2NrLWZp bHRlci1jYXNlcy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5saW5lc3BlYy9ibG9jay1maWx0ZXIt Y2FzZXMuZXhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mYTRjZTUz MTVjNgotLS0gL2Rldi9udWxsCisrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmxpbmVzcGVjL2Jsb2Nr LWZpbHRlci1jYXNlcy5leHAKQEAgLTAsMCArMSwyNDggQEAKKyMgQ29weXJpZ2h0IChDKSAyMDI2 IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u CisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCisj IFZlcmlmeSB0aGUgYmxvY2stZmlsdGVyIGhldXJpc3RpYyBpbiBjcmVhdGVfc2Fsc19saW5lX29m ZnNldCBhZ2FpbnN0CisjIGtub3duIHBhdHRlcm5zLiAgVGhlIGNvbXBpbGVyIGlzIHNlbGVjdGVk IGJ5IHRoZSBib2FyZCBmaWxlOyB0aGlzIHRlc3QKKyMgdXNlcyBjb25zaXN0ZW50IGV4cGVjdGF0 aW9ucyBhY3Jvc3MgY29tcGlsZXJzIChHQ0MsIElDWCwgZXRjLikuCisKK3N0YW5kYXJkX3Rlc3Rm aWxlCisKK2lmIHsgW2J1aWxkX2V4ZWN1dGFibGUgImZhaWxlZCB0byBwcmVwYXJlIChPMCkiIFwK KwkgICIke3Rlc3RmaWxlfS1PMCIgJHtzcmNmaWxlfSB7IGRlYnVnIG9wdGltaXplPS1PMCB9XSB9 IHsKKyAgICByZXR1cm4gLTEKK30KKworaWYgeyBbYnVpbGRfZXhlY3V0YWJsZSAiZmFpbGVkIHRv IHByZXBhcmUgKE8yKSIgXAorCSAgIiR7dGVzdGZpbGV9LU8yIiAke3NyY2ZpbGV9IFwKKwkgIHsg ZGVidWcgb3B0aW1pemU9LU8yIGFkZGl0aW9uYWxfZmxhZ3M9LWZ0cmVlLXZlY3Rvcml6ZSB9XSB9 IHsKKyAgICByZXR1cm4gLTEKK30KKworIyBSZXRyaWV2ZSBhbGwgdGFyZ2V0IGxpbmUgbnVtYmVy cyBmcm9tIHRoZSBzaW5nbGUgc2hhcmVkIHNvdXJjZSBmaWxlLgorc2V0IGxpbmVfZW1wdHlfZm9y ICAgICAgW2dkYl9nZXRfbGluZV9udW1iZXIgImVtcHR5LWZvci1saW5lIiAke3NyY2ZpbGV9XQor c2V0IGxpbmVfbGFyZ2VfYm9keV9mb3IgW2dkYl9nZXRfbGluZV9udW1iZXIgImxhcmdlLWJvZHkt Zm9yLWxpbmUiICR7c3JjZmlsZX1dCitzZXQgbGluZV92ZWNfbG9vcCAgICAgICBbZ2RiX2dldF9s aW5lX251bWJlciAidmVjLWxvb3AtbGluZSIgJHtzcmNmaWxlfV0KK3NldCBsaW5lX25lc3RlZF92 ZWMgICAgIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJuZXN0ZWQtdmVjLWxpbmUiICR7c3JjZmlsZX1d CitzZXQgbGluZV9icmVha19sb29wICAgICBbZ2RiX2dldF9saW5lX251bWJlciAiYnJlYWstbG9v cC1saW5lIiAke3NyY2ZpbGV9XQorc2V0IGxpbmVfaWZlbHNlICAgICAgICAgW2dkYl9nZXRfbGlu ZV9udW1iZXIgImlmZWxzZS1saW5lIiAke3NyY2ZpbGV9XQorCisjIFNldCBicmVha3BvaW50IGFu ZCByZXR1cm4gaG93IG1hbnkgbG9jYXRpb25zIGl0IHJlc29sdmVzIHRvLgorcHJvYyBicF9ubG9j cyB7IHNyY2ZpbGUgbGluZSBkZXNjIH0geworICAgIGdsb2JhbCBnZGJfcHJvbXB0CisgICAgc2V0 IG5sb2NzIC0xCisgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgImJyZWFrICR7c3JjZmlsZX06JHtsaW5l fSIgJGRlc2MgeworCS1yZSAiQnJlYWtwb2ludCBcWzAtOVxdKyBhdCAuKlxcKChcWzAtOVxdKykg bG9jYXRpb25zXFwpLiokZ2RiX3Byb21wdCAkIiB7CisJICAgIHNldCBubG9jcyAkZXhwZWN0X291 dCgxLHN0cmluZykKKwkgICAgcGFzcyAkZGVzYworCX0KKwktcmUgIkJyZWFrcG9pbnQgXFswLTlc XSsgYXQgLiokZ2RiX3Byb21wdCAkIiB7CisJICAgIHNldCBubG9jcyAxCisJICAgIHBhc3MgJGRl c2MKKwl9CisgICAgfQorICAgIHJldHVybiAkbmxvY3MKK30KKworY2xlYW5fcmVzdGFydCAiJHt0 ZXN0ZmlsZX0tTzAiCisKKyMgVmVyaWZ5IHRoZSBsaW5lc3BlYy1leHRlbmRlZC1ibG9jay1maWx0 ZXIgc2V0dGluZyBleGlzdHMgYW5kIHdvcmtzLgorZ2RiX3Rlc3QgInNob3cgbGluZXNwZWMtZXh0 ZW5kZWQtYmxvY2stZmlsdGVyIiBcCisgICAgIldoZXRoZXIgdGhlIGV4dGVuZGVkIGJsb2NrLWZp bHRlciBoZXVyaXN0aWMgaXMgZW5hYmxlZCBpcyBvblxcLiIgXAorICAgICJzaG93IGRlZmF1bHQg bGluZXNwZWMtZXh0ZW5kZWQtYmxvY2stZmlsdGVyIChvbikiCisKK2dkYl90ZXN0X25vX291dHB1 dCAic2V0IGxpbmVzcGVjLWV4dGVuZGVkLWJsb2NrLWZpbHRlciBvZmYiIFwKKyAgICAic2V0IGxp bmVzcGVjLWV4dGVuZGVkLWJsb2NrLWZpbHRlciBvZmYiCisKK2dkYl90ZXN0ICJzaG93IGxpbmVz cGVjLWV4dGVuZGVkLWJsb2NrLWZpbHRlciIgXAorICAgICJXaGV0aGVyIHRoZSBleHRlbmRlZCBi bG9jay1maWx0ZXIgaGV1cmlzdGljIGlzIGVuYWJsZWQgaXMgb2ZmXFwuIiBcCisgICAgInNob3cg bGluZXNwZWMtZXh0ZW5kZWQtYmxvY2stZmlsdGVyIChvZmYpIgorCitnZGJfdGVzdF9ub19vdXRw dXQgInNldCBsaW5lc3BlYy1leHRlbmRlZC1ibG9jay1maWx0ZXIgb24iIFwKKyAgICAic2V0IGxp bmVzcGVjLWV4dGVuZGVkLWJsb2NrLWZpbHRlciBvbiIKKworZ2RiX3Rlc3QgInNob3cgbGluZXNw ZWMtZXh0ZW5kZWQtYmxvY2stZmlsdGVyIiBcCisgICAgIldoZXRoZXIgdGhlIGV4dGVuZGVkIGJs b2NrLWZpbHRlciBoZXVyaXN0aWMgaXMgZW5hYmxlZCBpcyBvblxcLiIgXAorICAgICJzaG93IGxp bmVzcGVjLWV4dGVuZGVkLWJsb2NrLWZpbHRlciByZS1lbmFibGVkIgorCit3aXRoX3Rlc3RfcHJl Zml4ICJmb3ItbG9vcCBlbXB0eSBib2R5ICgtTzApIiB7CisgICAgc2V0IG5sb2NzIFticF9ubG9j cyAke3NyY2ZpbGV9ICR7bGluZV9lbXB0eV9mb3J9ICJzZXQgYnJlYWtwb2ludCJdCisKKyAgICBp ZiB7ICRubG9jcyA9PSAxIH0geworCXBhc3MgIjEgYnJlYWtwb2ludCBsb2NhdGlvbiAoY29ycmVj dCkiCisgICAgfSBlbHNlIHsKKwlmYWlsICJleHBlY3RlZCAxIGxvY2F0aW9uLCBnb3QgJG5sb2Nz IgorICAgIH0KKworICAgIGRlbGV0ZV9icmVha3BvaW50cworfQorCit3aXRoX3Rlc3RfcHJlZml4 ICJmb3ItbG9vcCBleGNlZWRpbmcgc2NhbiBsaW1pdCAoLU8wKSIgeworICAgIHNldCBubG9jcyBb YnBfbmxvY3MgJHtzcmNmaWxlfSAke2xpbmVfbGFyZ2VfYm9keV9mb3J9ICJzZXQgYnJlYWtwb2lu dCJdCisKKyAgICBpZiB7ICRubG9jcyA9PSAxIH0geworCXBhc3MgIjEgYnJlYWtwb2ludCBsb2Nh dGlvbiAoY29ycmVjdCkiCisgICAgfSBlbHNlIHsKKwlmYWlsICJleHBlY3RlZCAxIGxvY2F0aW9u LCBnb3QgJG5sb2NzIgorICAgIH0KKworICAgIGRlbGV0ZV9icmVha3BvaW50cworfQorCit3aXRo X3Rlc3RfcHJlZml4ICJpZi1lbHNlIHNlcGFyYXRlIGxpbmVzICgtTzApIiB7CisgICAgc2V0IG5s b2NzIFticF9ubG9jcyAke3NyY2ZpbGV9ICR7bGluZV9pZmVsc2V9ICJzZXQgYnJlYWtwb2ludCJd CisKKyAgICBpZiB7ICRubG9jcyA9PSAyIH0geworCXBhc3MgIjIgbG9jYXRpb25zIChpZi1lbHNl IGJyYW5jaGVzIG9uIHNhbWUgbGluZSwgZGlmZmVyZW50IGJsb2NrcykiCisgICAgfSBlbHNlIHsK KwlmYWlsICJleHBlY3RlZCAyIGxvY2F0aW9ucywgZ290ICRubG9jcyIKKyAgICB9CisKKyAgICBk ZWxldGVfYnJlYWtwb2ludHMKK30KKworY2xlYW5fcmVzdGFydCAiJHt0ZXN0ZmlsZX0tTzIiCisK K3dpdGhfdGVzdF9wcmVmaXggImZvci1sb29wIHZlY3Rvcml6ZWQgKC1PMikiIHsKKyAgICBzZXQg bmxvY3MgW2JwX25sb2NzICR7c3JjZmlsZX0gJHtsaW5lX3ZlY19sb29wfSAic2V0IGJyZWFrcG9p bnQiXQorCisgICAgaWYgeyAkbmxvY3MgPCAyIH0geworCXVuc3VwcG9ydGVkICJjb21waWxlciBk aWQgbm90IHByb2R1Y2UgbXVsdGlwbGUgbG9jYXRpb25zO1wKKwkJICAgICB2ZWN0b3JpemF0aW9u IG1heSBub3QgaGF2ZSBmaXJlZCIKKyAgICB9IGVsc2UgeworCXBhc3MgIiRubG9jcyBsb2NhdGlv bnMgcHJlc2VydmVkICh2ZWN0b3JpemVkICsgc2NhbGFyIHBhdGhzKSIKKyAgICB9CisKKyAgICBk ZWxldGVfYnJlYWtwb2ludHMKK30KKword2l0aF90ZXN0X3ByZWZpeCAibmVzdGVkIHZlY3Rvcml6 ZWQgbG9vcHMgKC1PMikiIHsKKyAgICBzZXQgbmxvY3MgW2JwX25sb2NzICR7c3JjZmlsZX0gJHts aW5lX25lc3RlZF92ZWN9ICJzZXQgYnJlYWtwb2ludCJdCisKKyAgICBpZiB7ICRubG9jcyA8IDIg fSB7CisJdW5zdXBwb3J0ZWQgImNvbXBpbGVyIGRpZCBub3QgcHJvZHVjZSBtdWx0aXBsZSBsb2Nh dGlvbnM7XAorCQkgICAgIG5lc3RlZCB2ZWN0b3JpemF0aW9uIG1heSBub3QgaGF2ZSBmaXJlZCIK KyAgICB9IGVsc2UgeworCXBhc3MgIiRubG9jcyBsb2NhdGlvbnMgcHJlc2VydmVkIChuZXN0ZWQg cGF0aHMpIgorICAgIH0KKworICAgIGRlbGV0ZV9icmVha3BvaW50cworfQorCit3aXRoX3Rlc3Rf cHJlZml4ICJsb29wIHdpdGggZWFybHkgYnJlYWsgKC1PMikiIHsKKyAgICBzZXQgbmxvY3MgW2Jw X25sb2NzICR7c3JjZmlsZX0gJHtsaW5lX2JyZWFrX2xvb3B9ICJzZXQgYnJlYWtwb2ludCJdCisK KyAgICBpZiB7ICRubG9jcyA+PSAyIH0geworCXBhc3MgIiRubG9jcyBsb2NhdGlvbnMgcHJlc2Vy dmVkIChub3JtYWwgYW5kIGJyZWFrIHBhdGhzKSIKKyAgICB9IGVsc2UgeworCXBhc3MgIiRubG9j cyBsb2NhdGlvbiAoYnJlYWsgcGF0aCBub3Qgc2VwYXJhdGVseSBjb21waWxlZCkiCisgICAgfQor CisgICAgZGVsZXRlX2JyZWFrcG9pbnRzCit9CisKK3dpdGhfdGVzdF9wcmVmaXggImZvci1sb29w IHZlY3Rvcml6ZWQgcnVudGltZSAoLU8yKSIgeworICAgIGNsZWFuX3Jlc3RhcnQgIiR7dGVzdGZp bGV9LU8yIgorCisgICAgc2V0IG5sb2NzIFticF9ubG9jcyAke3NyY2ZpbGV9ICR7bGluZV92ZWNf bG9vcH0gInNldCBicmVha3BvaW50IChwcm9iZSkiXQorICAgIGRlbGV0ZV9icmVha3BvaW50cwor CisgICAgaWYgeyAkbmxvY3MgPCAyIH0geworCXVuc3VwcG9ydGVkICJvbmx5IDEgbG9jYXRpb247 IHNraXAgcmVhY2hhYmlsaXR5IHRlc3QiCisgICAgfSBlbHNlIHsKKwl3aXRoX3Rlc3RfcHJlZml4 ICJzY2FsYXIgKG49MykiIHsKKwkgICAgaWYgeyAhW3J1bnRvX21haW5dIH0geworCQlyZXR1cm4g LTEKKwkgICAgfQorCisJICAgIGdkYl90ZXN0ICJicmVhayAke3NyY2ZpbGV9OiR7bGluZV92ZWNf bG9vcH0iIFwKKwkJIkJyZWFrcG9pbnQgLiogYXQgLioiIFwKKwkJInNldCBicmVha3BvaW50Igor CisJICAgIGdkYl90ZXN0ICJjb250aW51ZSIgXAorCQkiQnJlYWtwb2ludCAuKiwgZm9yX2xvb3Bf dmVjdG9yaXplZCAuKiIgXAorCQkiaGl0IGJyZWFrcG9pbnQgb24gc2NhbGFyIHBhdGgiCisKKwkg ICAgZGVsZXRlX2JyZWFrcG9pbnRzCisJICAgIGdkYl90ZXN0ICJjb250aW51ZSIgIi4qZXhpdGVk IG5vcm1hbGx5LioiICJwcm9ncmFtIGV4aXRzIGNsZWFubHkiCisJfQorCisJY2xlYW5fcmVzdGFy dCAiJHt0ZXN0ZmlsZX0tTzIiCisJZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgYXJncyBmb28iICJz ZXQgYXJncyBmb3IgdmVjdG9yaXplZCBydW4iCisKKwlpZiB7ICFbcnVudG9fbWFpbl0gfSB7CisJ ICAgIHJldHVybiAtMQorCX0KKworCXdpdGhfdGVzdF9wcmVmaXggInZlY3Rvcml6ZWQgKG49MTAy NCkiIHsKKwkgICAgZ2RiX3Rlc3QgImJyZWFrICR7c3JjZmlsZX06JHtsaW5lX3ZlY19sb29wfSIg XAorCQkiQnJlYWtwb2ludCAuKiBhdCAuKiIgXAorCQkic2V0IGJyZWFrcG9pbnQiCisKKwkgICAg Z2RiX3Rlc3QgImNvbnRpbnVlIiBcCisJCSJCcmVha3BvaW50IC4qLCBmb3JfbG9vcF92ZWN0b3Jp emVkIC4qIiBcCisJCSJoaXQgYnJlYWtwb2ludCBvbiB2ZWN0b3JpemVkIHBhdGgiCisKKwkgICAg ZGVsZXRlX2JyZWFrcG9pbnRzCisJICAgIGdkYl90ZXN0ICJjb250aW51ZSIgIi4qZXhpdGVkIG5v cm1hbGx5LioiICJwcm9ncmFtIGV4aXRzIGNsZWFubHkiCisJfQorICAgIH0KK30KKworIyBCZWhh dmlvcmFsIHRlc3Q6IHZlcmlmeSBzZXR0aW5nIGFjdHVhbGx5IGFmZmVjdHMgYnJlYWtwb2ludCBy ZXNvbHV0aW9uLgord2l0aF90ZXN0X3ByZWZpeCAiYmVoYXZpb3JhbDogc2V0dGluZyB0b2dnbGUg YWZmZWN0cyByZXNvbHV0aW9uIiB7CisgICAgY2xlYW5fcmVzdGFydCAiJHt0ZXN0ZmlsZX0tTzAi CisKKyAgICAjIFRlc3Qgd2l0aCBleHRlbmRlZCBmaWx0ZXIgT04gKGRlZmF1bHQpLgorICAgIGdk Yl90ZXN0X25vX291dHB1dCAic2V0IGxpbmVzcGVjLWV4dGVuZGVkLWJsb2NrLWZpbHRlciBvbiIg XAorCSJlbmFibGUgZXh0ZW5kZWQgYmxvY2stZmlsdGVyIgorCisgICAgc2V0IG5sb2NzX29uIFti cF9ubG9jcyAke3NyY2ZpbGV9ICR7bGluZV9pZmVsc2V9IFwKKwkic2V0IGJyZWFrcG9pbnQgb24g aWYtZWxzZSBsaW5lIHdpdGggZmlsdGVyIE9OIl0KKyAgICBkZWxldGVfYnJlYWtwb2ludHMKKwor ICAgIGlmIHsgJG5sb2NzX29uID09IDIgfSB7CisJcGFzcyAiaWYtZWxzZSB3aXRoIGV4dGVuZGVk IGZpbHRlciBPTjogMiBsb2NhdGlvbnMiCisgICAgfSBlbHNlIHsKKwlmYWlsICJleHBlY3RlZCAy IGxvY2F0aW9ucyB3aXRoIGV4dGVuZGVkIGZpbHRlciBPTiwgZ290ICRubG9jc19vbiIKKyAgICB9 CisKKyAgICAjIFRlc3Qgd2l0aCBleHRlbmRlZCBmaWx0ZXIgT0ZGLgorICAgIGdkYl90ZXN0X25v X291dHB1dCAic2V0IGxpbmVzcGVjLWV4dGVuZGVkLWJsb2NrLWZpbHRlciBvZmYiIFwKKwkiZGlz YWJsZSBleHRlbmRlZCBibG9jay1maWx0ZXIiCisKKyAgICBzZXQgbmxvY3Nfb2ZmIFticF9ubG9j cyAke3NyY2ZpbGV9ICR7bGluZV9pZmVsc2V9IFwKKwkic2V0IGJyZWFrcG9pbnQgb24gaWYtZWxz ZSBsaW5lIHdpdGggZmlsdGVyIE9GRiJdCisgICAgZGVsZXRlX2JyZWFrcG9pbnRzCisKKyAgICBp ZiB7ICRubG9jc19vZmYgPT0gMSB9IHsKKwlwYXNzICJpZi1lbHNlIHdpdGggZXh0ZW5kZWQgZmls dGVyIE9GRjogMSBsb2NhdGlvbiIKKyAgICB9IGVsc2UgeworCWZhaWwgImV4cGVjdGVkIDEgbG9j YXRpb24gd2l0aCBleHRlbmRlZCBmaWx0ZXIgT0ZGLCBnb3QgJG5sb2NzX29mZiIKKyAgICB9CisK KyAgICAjIFZlcmlmeSB0b2dnbGluZyBpdCBiYWNrIE9OIHJlc3RvcmVzIHRoZSB0d28gbG9jYXRp b25zLgorICAgIGdkYl90ZXN0X25vX291dHB1dCAic2V0IGxpbmVzcGVjLWV4dGVuZGVkLWJsb2Nr LWZpbHRlciBvbiIgXAorCSJyZS1lbmFibGUgZXh0ZW5kZWQgYmxvY2stZmlsdGVyIgorCisgICAg c2V0IG5sb2NzX29uX2FnYWluIFticF9ubG9jcyAke3NyY2ZpbGV9ICR7bGluZV9pZmVsc2V9IFwK Kwkic2V0IGJyZWFrcG9pbnQgb24gaWYtZWxzZSBsaW5lIHdpdGggZmlsdGVyIHJlLWVuYWJsZWQi XQorICAgIGRlbGV0ZV9icmVha3BvaW50cworCisgICAgaWYgeyAkbmxvY3Nfb25fYWdhaW4gPT0g MiB9IHsKKwlwYXNzICJpZi1lbHNlIHdpdGggZXh0ZW5kZWQgZmlsdGVyIHJlLWVuYWJsZWQ6IDIg bG9jYXRpb25zICh2ZXJpZmllZCkiCisgICAgfSBlbHNlIHsKKwlmYWlsICJleHBlY3RlZCAyIGxv Y2F0aW9ucyBhZnRlciByZS1lbmFibGluZywgZ290ICRubG9jc19vbl9hZ2FpbiIKKyAgICB9Cit9 Ci0tIAoyLjM0LjEKCkludGVsIERldXRzY2hsYW5kIEdtYkgNClJlZ2lzdGVyZWQgQWRkcmVzczog RG9ybmFjaGVyIFN0cmFzc2UgMSwgODU2MjIgRmVsZGtpcmNoZW4sIEdlcm1hbnkNClRlbDogKzQ5 IDg5IDk5MSA0MzAsIHd3dy5pbnRlbC5kZQ0KTWFuYWdpbmcgRGlyZWN0b3JzOiBIYXJyeSBEZW1h cywgSmVmZnJleSBTY2huZWlkZXJtYW4sIFlpbiBDaG9uZyBTb3JyZWxsDQpDaGFpcnBlcnNvbiBv ZiB0aGUgU3VwZXJ2aXNvcnkgQm9hcmQ6IE5pY29sZSBMYXUNClJlZ2lzdGVyZWQgU2VhdDogTXVu aWNoDQpDb21tZXJjaWFsIFJlZ2lzdGVyOiBBbXRzZ2VyaWNodCBNdWVuY2hlbiBIUkIgMTg2OTI4 Cg==