From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id EB6E6D35663 for ; Wed, 28 Jan 2026 02:10:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:From:References:Cc:To: Subject:MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Q58vOt6BVNZblP8WCTYKPdlEzlmxm1sfl7MpKDukPXc=; b=QsDxOJbalqhI17 E8LhCqP5RfWaIgTQbnA7BodRrOz9gFJ6Gpd7HzXeuNEiOLhmIoz3Ga1yYJInOsIggh6Bahni2RRPh h9p5+KaJ+XbEMB5Qd5sHev/47VbkcdHYoG/vm6HCYPe/ZQxZ38akJeEaKftNjroQtFAMEbDsLKYg8 XVHfYZZuJkibDSooUCAM8KXRSc0TTG04QkprLo+TqtxNVQ8guEA6rM9qcea/mq39X33xnBfGgxWxW bigWPJyrFt3K5+E/XewHYLhvEdGQ6zQDtKyk5jDn2z+pzzsvUrWptqtO8VQubqY2jufkCSWqx84/w pwx1BpPyFwVaKVsZp+hQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1vkv0L-0000000FI7F-1jLI; Wed, 28 Jan 2026 02:10:02 +0000 Received: from mgamail.intel.com ([198.175.65.12]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1vkv0H-0000000FI6U-2hEG; Wed, 28 Jan 2026 02:09:59 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1769566198; x=1801102198; h=message-id:date:mime-version:subject:to:cc:references: from:in-reply-to:content-transfer-encoding; bh=Ogtf1x8DHLDNEqIOfyfW0O+IOeyxwEKp3GlOe9FTdng=; b=JnAVNX12a8wKn0gAsFMePVdNGETVrfDv0GICVSIm0xMp9vV6eMQwEFbt SqGY804Ama/xtuAVANuKe8X1rvBDdTgYjzUZhAzu6V5BsuskwHTnCOnWM ImZsfrCOeP7ZUYxQWYIWMUoBPjPnN14615dzv7eF68Wg6w7fqhz0vk478 4bZuMn9PeOqeeXw9WI/EVttw/cRrMCDxTRqpLUy14ODQdF01+9yr2L3jR Pm9+6aSSdvNv3XSvZv4ZgSF3mhOWAOkm/NykWC8vLu+FPakER2LKEZHd7 /NSVv0qi+F51JRsjAdXe6mbEkSCMxR7+ifBbHs5DqRKmTdzU7ULnLZQPN w==; X-CSE-ConnectionGUID: 1v7OcN9UTh200+zZthoq+Q== X-CSE-MsgGUID: pDWd04eQQKmgbJt9yix6uA== X-IronPort-AV: E=McAfee;i="6800,10657,11684"; a="82203780" X-IronPort-AV: E=Sophos;i="6.21,257,1763452800"; d="scan'208";a="82203780" Received: from orviesa008.jf.intel.com ([10.64.159.148]) by orvoesa104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Jan 2026 18:09:57 -0800 X-CSE-ConnectionGUID: Icgl/mMgTuGZrB8SUJt/QQ== X-CSE-MsgGUID: MAaVYiwTR3CuejIWN4VYUw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.21,257,1763452800"; d="scan'208";a="208152541" Received: from dapengmi-mobl1.ccr.corp.intel.com (HELO [10.124.240.14]) ([10.124.240.14]) by orviesa008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Jan 2026 18:09:51 -0800 Message-ID: <60c63855-3e7e-4ae1-aa5e-ef3181e841ab@linux.intel.com> Date: Wed, 28 Jan 2026 10:09:48 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [Patch v2 3/3] perf regs: Remove __weak attributive arch_sdt_arg_parse_op() function To: Ian Rogers Cc: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Adrian Hunter , Alexander Shishkin , John Garry , Will Deacon , James Clark , Mike Leach , Guo Ren , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , linux-perf-users@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-csky@vger.kernel.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Zide Chen , Falcon Thomas , Dapeng Mi , Xudong Hao References: <20260127070259.2720468-1-dapeng1.mi@linux.intel.com> <20260127070259.2720468-4-dapeng1.mi@linux.intel.com> Content-Language: en-US From: "Mi, Dapeng" In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260127_180957_822055_D9885F80 X-CRM114-Status: GOOD ( 16.72 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org Ck9uIDEvMjgvMjAyNiAxMjo1NCBBTSwgSWFuIFJvZ2VycyB3cm90ZToKPiBPbiBNb24sIEphbiAy NiwgMjAyNiBhdCAxMTowNuKAr1BNIERhcGVuZyBNaSA8ZGFwZW5nMS5taUBsaW51eC5pbnRlbC5j b20+IHdyb3RlOgo+PiBJbiBsaW5lIHdpdGggdGhlIHByZXZpb3VzIHBhdGNoLCB0aGUgX193ZWFr IGFyY2hfc2R0X2FyZ19wYXJzZV9vcCgpCj4+IGZ1bmN0aW9uIGlzIHJlbW92ZWQuIEFyY2hpdGVj dHVyYWwtc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zIGluIHRoZSBhcmNoLwo+PiBkaXJlY3Rvcnkg YXJlIG5vdyBjb252ZXJ0ZWQgaW50byBzdWItZnVuY3Rpb25zIHdpdGhpbiB0aGUKPj4gdXRpbC9w ZXJmLXJlZ3MtYXJjaC8gZGlyZWN0b3J5LiBUaGUgcGVyZl9zZHRfYXJnX3BhcnNlX29wKCkgZnVu Y3Rpb24KPj4gd2lsbCBjYWxsIHRoZXNlIHN1Yi1mdW5jdGlvbnMgYmFzZWQgb24gdGhlIEVNX0hP U1QuCj4+Cj4+IFRoaXMgY2hhbmdlIGVuYWJsZXMgY3Jvc3MtYXJjaGl0ZWN0dXJlIGNhbGxzIHRv IGFyY2hfc2R0X2FyZ19wYXJzZV9vcCgpLgo+Pgo+PiBObyBmdW5jdGlvbmFsIGNoYW5nZXMgYXJl IGludGVuZGVkLgo+Pgo+PiBTdWdnZXN0ZWQtYnk6IElhbiBSb2dlcnMgPGlyb2dlcnNAZ29vZ2xl LmNvbT4KPj4gU2lnbmVkLW9mZi1ieTogRGFwZW5nIE1pIDxkYXBlbmcxLm1pQGxpbnV4LmludGVs LmNvbT4KPj4gLS0tCj4+ICB0b29scy9wZXJmL2FyY2gvYXJtNjQvdXRpbC9CdWlsZCAgICAgICAg ICAgICAgfCAgIDEgLQo+PiAgdG9vbHMvcGVyZi9hcmNoL2FybTY0L3V0aWwvcGVyZl9yZWdzLmMg ICAgICAgIHwgMTA1IC0tLS0tLS0tCj4+ICB0b29scy9wZXJmL2FyY2gvcG93ZXJwYy91dGlsL0J1 aWxkICAgICAgICAgICAgfCAgIDEgLQo+PiAgdG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvdXRpbC9w ZXJmX3JlZ3MuYyAgICAgIHwgMTI1IC0tLS0tLS0tLS0KPj4gIHRvb2xzL3BlcmYvYXJjaC94ODYv dXRpbC9CdWlsZCAgICAgICAgICAgICAgICB8ICAgMSAtCj4+ICB0b29scy9wZXJmL2FyY2gveDg2 L3V0aWwvcGVyZl9yZWdzLmMgICAgICAgICAgfCAyMzUgLS0tLS0tLS0tLS0tLS0tLS0tCj4+ICAu Li4vdXRpbC9wZXJmLXJlZ3MtYXJjaC9wZXJmX3JlZ3NfYWFyY2g2NC5jICAgfCAgODYgKysrKysr Kwo+PiAgLi4uL3V0aWwvcGVyZi1yZWdzLWFyY2gvcGVyZl9yZWdzX3Bvd2VycGMuYyAgIHwgMTA2 ICsrKysrKysrCj4+ICAuLi4vcGVyZi91dGlsL3BlcmYtcmVncy1hcmNoL3BlcmZfcmVnc194ODYu YyAgfCAyMjEgKysrKysrKysrKysrKysrKwo+PiAgdG9vbHMvcGVyZi91dGlsL3BlcmZfcmVncy5j ICAgICAgICAgICAgICAgICAgIHwgIDIzICstCj4+ICB0b29scy9wZXJmL3V0aWwvcGVyZl9yZWdz LmggICAgICAgICAgICAgICAgICAgfCAgIDUgKy0KPj4gIHRvb2xzL3BlcmYvdXRpbC9wcm9iZS1m aWxlLmMgICAgICAgICAgICAgICAgICB8ICAgMyArLQo+PiAgMTIgZmlsZXMgY2hhbmdlZCwgNDM5 IGluc2VydGlvbnMoKyksIDQ3MyBkZWxldGlvbnMoLSkKPj4gIGRlbGV0ZSBtb2RlIDEwMDY0NCB0 b29scy9wZXJmL2FyY2gvYXJtNjQvdXRpbC9wZXJmX3JlZ3MuYwo+PiAgZGVsZXRlIG1vZGUgMTAw NjQ0IHRvb2xzL3BlcmYvYXJjaC9wb3dlcnBjL3V0aWwvcGVyZl9yZWdzLmMKPj4gIGRlbGV0ZSBt b2RlIDEwMDY0NCB0b29scy9wZXJmL2FyY2gveDg2L3V0aWwvcGVyZl9yZWdzLmMKPj4KPj4gZGlm ZiAtLWdpdCBhL3Rvb2xzL3BlcmYvYXJjaC9hcm02NC91dGlsL0J1aWxkIGIvdG9vbHMvcGVyZi9h cmNoL2FybTY0L3V0aWwvQnVpbGQKPj4gaW5kZXggMDE3N2FmMTljYzAwLi5iYzEyYzM1ZDA2Yzgg MTAwNjQ0Cj4+IC0tLSBhL3Rvb2xzL3BlcmYvYXJjaC9hcm02NC91dGlsL0J1aWxkCj4+ICsrKyBi L3Rvb2xzL3BlcmYvYXJjaC9hcm02NC91dGlsL0J1aWxkCj4+IEBAIC04LDYgKzgsNSBAQCBwZXJm LXV0aWwteSArPSBoZWFkZXIubwo+PiAgcGVyZi11dGlsLXkgKz0gaGlzaS1wdHQubwo+PiAgcGVy Zi11dGlsLXkgKz0gbWFjaGluZS5vCj4+ICBwZXJmLXV0aWwteSArPSBtZW0tZXZlbnRzLm8KPj4g LXBlcmYtdXRpbC15ICs9IHBlcmZfcmVncy5vCj4+ICBwZXJmLXV0aWwteSArPSBwbXUubwo+PiAg cGVyZi11dGlsLXkgKz0gdHNjLm8KPj4gZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvYXJjaC9hcm02 NC91dGlsL3BlcmZfcmVncy5jIGIvdG9vbHMvcGVyZi9hcmNoL2FybTY0L3V0aWwvcGVyZl9yZWdz LmMKPj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDQ3ZjU4ZWFiYTAzMi4uMDAw MDAwMDAwMDAwCj4+IC0tLSBhL3Rvb2xzL3BlcmYvYXJjaC9hcm02NC91dGlsL3BlcmZfcmVncy5j Cj4+ICsrKyAvZGV2L251bGwKPj4gQEAgLTEsMTA1ICswLDAgQEAKPj4gLS8vIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4+IC0jaW5jbHVkZSA8ZXJybm8uaD4KPj4gLSNpbmNsdWRl IDxyZWdleC5oPgo+PiAtI2luY2x1ZGUgPHN0cmluZy5oPgo+PiAtI2luY2x1ZGUgPHN5cy9hdXh2 Lmg+Cj4+IC0jaW5jbHVkZSA8bGludXgva2VybmVsLmg+Cj4+IC0jaW5jbHVkZSA8bGludXgvemFs bG9jLmg+Cj4+IC0KPj4gLSNpbmNsdWRlICJwZXJmX3JlZ3MuaCIKPj4gLSNpbmNsdWRlICIuLi8u Li8uLi9wZXJmLXN5cy5oIgo+PiAtI2luY2x1ZGUgIi4uLy4uLy4uL3V0aWwvZGVidWcuaCIKPj4g LSNpbmNsdWRlICIuLi8uLi8uLi91dGlsL2V2ZW50LmgiCj4+IC0jaW5jbHVkZSAiLi4vLi4vLi4v dXRpbC9wZXJmX3JlZ3MuaCIKPj4gLQo+PiAtI2RlZmluZSBTTVBMX1JFR19NQVNLKGIpICgxVUxM IDw8IChiKSkKPj4gLQo+PiAtI2lmbmRlZiBIV0NBUF9TVkUKPj4gLSNkZWZpbmUgSFdDQVBfU1ZF ICAgICAgKDEgPDwgMjIpCj4+IC0jZW5kaWYKPj4gLQo+PiAtLyogJXhOVU0gKi8KPj4gLSNkZWZp bmUgU0RUX09QX1JFR0VYMSAgIl4oeFsxLTJdP1swLTldfDNbMC0xXSkkIgo+PiAtCj4+IC0vKiBb c3BdLCBbc3AsIE5VTV0gKi8KPj4gLSNkZWZpbmUgU0RUX09QX1JFR0VYMiAgIl5cXFtzcCgsICk/ KFswLTldKyk/XFxdJCIKPj4gLQo+PiAtc3RhdGljIHJlZ2V4X3Qgc2R0X29wX3JlZ2V4MSwgc2R0 X29wX3JlZ2V4MjsKPj4gLQo+PiAtc3RhdGljIGludCBzZHRfaW5pdF9vcF9yZWdleCh2b2lkKQo+ PiAtewo+PiAtICAgICAgIHN0YXRpYyBpbnQgaW5pdGlhbGl6ZWQ7Cj4+IC0gICAgICAgaW50IHJl dCA9IDA7Cj4+IC0KPj4gLSAgICAgICBpZiAoaW5pdGlhbGl6ZWQpCj4+IC0gICAgICAgICAgICAg ICByZXR1cm4gMDsKPj4gLQo+PiAtICAgICAgIHJldCA9IHJlZ2NvbXAoJnNkdF9vcF9yZWdleDEs IFNEVF9PUF9SRUdFWDEsIFJFR19FWFRFTkRFRCk7Cj4+IC0gICAgICAgaWYgKHJldCkKPj4gLSAg ICAgICAgICAgICAgIGdvdG8gZXJyb3I7Cj4+IC0KPj4gLSAgICAgICByZXQgPSByZWdjb21wKCZz ZHRfb3BfcmVnZXgyLCBTRFRfT1BfUkVHRVgyLCBSRUdfRVhURU5ERUQpOwo+PiAtICAgICAgIGlm IChyZXQpCj4+IC0gICAgICAgICAgICAgICBnb3RvIGZyZWVfcmVnZXgxOwo+PiAtCj4+IC0gICAg ICAgaW5pdGlhbGl6ZWQgPSAxOwo+PiAtICAgICAgIHJldHVybiAwOwo+PiAtCj4+IC1mcmVlX3Jl Z2V4MToKPj4gLSAgICAgICByZWdmcmVlKCZzZHRfb3BfcmVnZXgxKTsKPj4gLWVycm9yOgo+PiAt ICAgICAgIHByX2RlYnVnNCgiUmVnZXggY29tcGlsYXRpb24gZXJyb3IuXG4iKTsKPj4gLSAgICAg ICByZXR1cm4gcmV0Owo+PiAtfQo+PiAtCj4+IC0vKgo+PiAtICogU0RUIG1hcmtlciBhcmd1bWVu dHMgb24gQXJtNjQgdXNlcyAleFJFRyBvciBbc3AsIE5VTV0sIGN1cnJlbnRseQo+PiAtICogc3Vw cG9ydCB0aGVzZSB0d28gZm9ybWF0cy4KPj4gLSAqLwo+PiAtaW50IGFyY2hfc2R0X2FyZ19wYXJz ZV9vcChjaGFyICpvbGRfb3AsIGNoYXIgKipuZXdfb3ApCj4+IC17Cj4+IC0gICAgICAgaW50IHJl dCwgbmV3X2xlbjsKPj4gLSAgICAgICByZWdtYXRjaF90IHJtWzVdOwo+PiAtCj4+IC0gICAgICAg cmV0ID0gc2R0X2luaXRfb3BfcmVnZXgoKTsKPj4gLSAgICAgICBpZiAocmV0IDwgMCkKPj4gLSAg ICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4+IC0KPj4gLSAgICAgICBpZiAoIXJlZ2V4ZWMoJnNk dF9vcF9yZWdleDEsIG9sZF9vcCwgMywgcm0sIDApKSB7Cj4+IC0gICAgICAgICAgICAgICAvKiBF eHRyYWN0IHhOVU0gKi8KPj4gLSAgICAgICAgICAgICAgIG5ld19sZW4gPSAyOyAgICAvKiAlIE5V TEwgKi8KPj4gLSAgICAgICAgICAgICAgIG5ld19sZW4gKz0gKGludCkocm1bMV0ucm1fZW8gLSBy bVsxXS5ybV9zbyk7Cj4+IC0KPj4gLSAgICAgICAgICAgICAgICpuZXdfb3AgPSB6YWxsb2MobmV3 X2xlbik7Cj4+IC0gICAgICAgICAgICAgICBpZiAoISpuZXdfb3ApCj4+IC0gICAgICAgICAgICAg ICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+PiAtCj4+IC0gICAgICAgICAgICAgICBzY25wcmlu dGYoKm5ld19vcCwgbmV3X2xlbiwgIiUlJS4qcyIsCj4+IC0gICAgICAgICAgICAgICAgICAgICAg IChpbnQpKHJtWzFdLnJtX2VvIC0gcm1bMV0ucm1fc28pLCBvbGRfb3AgKyBybVsxXS5ybV9zbyk7 Cj4+IC0gICAgICAgfSBlbHNlIGlmICghcmVnZXhlYygmc2R0X29wX3JlZ2V4Miwgb2xkX29wLCA1 LCBybSwgMCkpIHsKPj4gLSAgICAgICAgICAgICAgIC8qIFtzcF0sIFtzcCwgTlVNXSBvciBbc3As TlVNXSAqLwo+PiAtICAgICAgICAgICAgICAgbmV3X2xlbiA9IDc7ICAgIC8qICsgKCAlIHMgcCAp IE5VTEwgKi8KPj4gLQo+PiAtICAgICAgICAgICAgICAgLyogSWYgdGhlIGFyZ3VtZW50IGlzIFtz cF0sIG5lZWQgdG8gZmlsbCBvZmZzZXQgJzAnICovCj4+IC0gICAgICAgICAgICAgICBpZiAocm1b Ml0ucm1fc28gPT0gLTEpCj4+IC0gICAgICAgICAgICAgICAgICAgICAgIG5ld19sZW4gKz0gMTsK Pj4gLSAgICAgICAgICAgICAgIGVsc2UKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgbmV3X2xl biArPSAoaW50KShybVsyXS5ybV9lbyAtIHJtWzJdLnJtX3NvKTsKPj4gLQo+PiAtICAgICAgICAg ICAgICAgKm5ld19vcCA9IHphbGxvYyhuZXdfbGVuKTsKPj4gLSAgICAgICAgICAgICAgIGlmICgh Km5ld19vcCkKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4+IC0K Pj4gLSAgICAgICAgICAgICAgIGlmIChybVsyXS5ybV9zbyA9PSAtMSkKPj4gLSAgICAgICAgICAg ICAgICAgICAgICAgc2NucHJpbnRmKCpuZXdfb3AsIG5ld19sZW4sICIrMCglJXNwKSIpOwo+PiAt ICAgICAgICAgICAgICAgZWxzZQo+PiAtICAgICAgICAgICAgICAgICAgICAgICBzY25wcmludGYo Km5ld19vcCwgbmV3X2xlbiwgIislLipzKCUlc3ApIiwKPj4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChpbnQpKHJtWzJdLnJtX2VvIC0gcm1bMl0ucm1fc28pLAo+PiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkX29wICsgcm1bMl0ucm1fc28pOwo+PiAtICAg ICAgIH0gZWxzZSB7Cj4+IC0gICAgICAgICAgICAgICBwcl9kZWJ1ZzQoIlNraXBwaW5nIHVuc3Vw cG9ydGVkIFNEVCBhcmd1bWVudDogJXNcbiIsIG9sZF9vcCk7Cj4+IC0gICAgICAgICAgICAgICBy ZXR1cm4gU0RUX0FSR19TS0lQOwo+PiAtICAgICAgIH0KPj4gLQo+PiAtICAgICAgIHJldHVybiBT RFRfQVJHX1ZBTElEOwo+PiAtfQo+PiBkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9hcmNoL3Bvd2Vy cGMvdXRpbC9CdWlsZCBiL3Rvb2xzL3BlcmYvYXJjaC9wb3dlcnBjL3V0aWwvQnVpbGQKPj4gaW5k ZXggNWZkMjhlYzcxM2E0Li40M2MzZTdjNDUwYTMgMTAwNjQ0Cj4+IC0tLSBhL3Rvb2xzL3BlcmYv YXJjaC9wb3dlcnBjL3V0aWwvQnVpbGQKPj4gKysrIGIvdG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMv dXRpbC9CdWlsZAo+PiBAQCAtMSw2ICsxLDUgQEAKPj4gIHBlcmYtdXRpbC15ICs9IGhlYWRlci5v Cj4+ICBwZXJmLXV0aWwtJChDT05GSUdfTElCVFJBQ0VFVkVOVCkgKz0ga3ZtLXN0YXQubwo+PiAt cGVyZi11dGlsLXkgKz0gcGVyZl9yZWdzLm8KPj4gIHBlcmYtdXRpbC15ICs9IG1lbS1ldmVudHMu bwo+PiAgcGVyZi11dGlsLXkgKz0gcG11Lm8KPj4gIHBlcmYtdXRpbC15ICs9IHN5bS1oYW5kbGlu Zy5vCj4+IGRpZmYgLS1naXQgYS90b29scy9wZXJmL2FyY2gvcG93ZXJwYy91dGlsL3BlcmZfcmVn cy5jIGIvdG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvdXRpbC9wZXJmX3JlZ3MuYwo+PiBkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggOTNmOTI5ZmMzMmUzLi4wMDAwMDAwMDAwMDAKPj4g LS0tIGEvdG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvdXRpbC9wZXJmX3JlZ3MuYwo+PiArKysgL2Rl di9udWxsCj4+IEBAIC0xLDEyNSArMCwwIEBACj4+IC0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMAo+PiAtI2luY2x1ZGUgPGVycm5vLmg+Cj4+IC0jaW5jbHVkZSA8c3RyaW5nLmg+ Cj4+IC0jaW5jbHVkZSA8cmVnZXguaD4KPj4gLSNpbmNsdWRlIDxsaW51eC96YWxsb2MuaD4KPj4g LQo+PiAtI2luY2x1ZGUgInBlcmZfcmVncy5oIgo+PiAtI2luY2x1ZGUgIi4uLy4uLy4uL3V0aWwv cGVyZl9yZWdzLmgiCj4+IC0jaW5jbHVkZSAiLi4vLi4vLi4vdXRpbC9kZWJ1Zy5oIgo+PiAtI2lu Y2x1ZGUgIi4uLy4uLy4uL3V0aWwvZXZlbnQuaCIKPj4gLSNpbmNsdWRlICIuLi8uLi8uLi91dGls L2hlYWRlci5oIgo+PiAtI2luY2x1ZGUgIi4uLy4uLy4uL3BlcmYtc3lzLmgiCj4+IC0jaW5jbHVk ZSAidXRpbHNfaGVhZGVyLmgiCj4+IC0KPj4gLSNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KPj4g LQo+PiAtI2RlZmluZSBQVlJfUE9XRVI5ICAgICAgICAgICAgIDB4MDA0RQo+PiAtI2RlZmluZSBQ VlJfUE9XRVIxMCAgICAgICAgICAgIDB4MDA4MAo+PiAtI2RlZmluZSBQVlJfUE9XRVIxMSAgICAg ICAgICAgIDB4MDA4Mgo+PiAtCj4+IC0vKiBSRUcgb3IgJXJSRUcgKi8KPj4gLSNkZWZpbmUgU0RU X09QX1JFR0VYMSAgIl4oJXIpPyhbMS0yXT9bMC05XXwzWzAtMV0pJCIKPj4gLQo+PiAtLyogLU5V TShSRUcpIG9yIE5VTShSRUcpIG9yIC1OVU0oJXJSRUcpIG9yIE5VTSglclJFRykgKi8KPj4gLSNk ZWZpbmUgU0RUX09QX1JFR0VYMiAgIl4oXFwtKT8oWzAtOV0rKVxcKCglcik/KFsxLTJdP1swLTld fDNbMC0xXSlcXCkkIgo+PiAtCj4+IC1zdGF0aWMgcmVnZXhfdCBzZHRfb3BfcmVnZXgxLCBzZHRf b3BfcmVnZXgyOwo+PiAtCj4+IC1zdGF0aWMgaW50IHNkdF9pbml0X29wX3JlZ2V4KHZvaWQpCj4+ IC17Cj4+IC0gICAgICAgc3RhdGljIGludCBpbml0aWFsaXplZDsKPj4gLSAgICAgICBpbnQgcmV0 ID0gMDsKPj4gLQo+PiAtICAgICAgIGlmIChpbml0aWFsaXplZCkKPj4gLSAgICAgICAgICAgICAg IHJldHVybiAwOwo+PiAtCj4+IC0gICAgICAgcmV0ID0gcmVnY29tcCgmc2R0X29wX3JlZ2V4MSwg U0RUX09QX1JFR0VYMSwgUkVHX0VYVEVOREVEKTsKPj4gLSAgICAgICBpZiAocmV0KQo+PiAtICAg ICAgICAgICAgICAgZ290byBlcnJvcjsKPj4gLQo+PiAtICAgICAgIHJldCA9IHJlZ2NvbXAoJnNk dF9vcF9yZWdleDIsIFNEVF9PUF9SRUdFWDIsIFJFR19FWFRFTkRFRCk7Cj4+IC0gICAgICAgaWYg KHJldCkKPj4gLSAgICAgICAgICAgICAgIGdvdG8gZnJlZV9yZWdleDE7Cj4+IC0KPj4gLSAgICAg ICBpbml0aWFsaXplZCA9IDE7Cj4+IC0gICAgICAgcmV0dXJuIDA7Cj4+IC0KPj4gLWZyZWVfcmVn ZXgxOgo+PiAtICAgICAgIHJlZ2ZyZWUoJnNkdF9vcF9yZWdleDEpOwo+PiAtZXJyb3I6Cj4+IC0g ICAgICAgcHJfZGVidWc0KCJSZWdleCBjb21waWxhdGlvbiBlcnJvci5cbiIpOwo+PiAtICAgICAg IHJldHVybiByZXQ7Cj4+IC19Cj4+IC0KPj4gLS8qCj4+IC0gKiBQYXJzZSBPUCBhbmQgY29udmVy dCBpdCBpbnRvIHVwcm9iZSBmb3JtYXQsIHdoaWNoIGlzLCArLy1OVU0oJWdwclJFRykuCj4+IC0g KiBQb3NzaWJsZSB2YXJpYW50cyBvZiBPUCBhcmU6Cj4+IC0gKiAgICAgRm9ybWF0ICAgICAgICAg IEV4YW1wbGUKPj4gLSAqICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+IC0gKiAgICAg TlVNKFJFRykgICAgICAgIDQ4KDE4KQo+PiAtICogICAgIC1OVU0oUkVHKSAgICAgICAtNDgoMTgp Cj4+IC0gKiAgICAgTlVNKCVyUkVHKSAgICAgIDQ4KCVyMTgpCj4+IC0gKiAgICAgLU5VTSglclJF RykgICAgIC00OCglcjE4KQo+PiAtICogICAgIFJFRyAgICAgICAgICAgICAxOAo+PiAtICogICAg ICVyUkVHICAgICAgICAgICAlcjE4Cj4+IC0gKiAgICAgaU5VTSAgICAgICAgICAgIGkwCj4+IC0g KiAgICAgaS1OVU0gICAgICAgICAgIGktMQo+PiAtICoKPj4gLSAqIFNEVCBtYXJrZXIgYXJndW1l bnRzIG9uIFBvd2VycGMgdXNlcyAlclJFRyBmb3JtIHdpdGggLW1yZWduYW1lcyBmbGFnCj4+IC0g KiBhbmQgUkVHIGZvcm0gd2l0aCAtbW5vLXJlZ25hbWVzLiBIZXJlIFJFRyBpcyBnZW5lcmFsIHB1 cnBvc2UgcmVnaXN0ZXIsCj4+IC0gKiB3aGljaCBpcyBpbiAwIHRvIDMxIHJhbmdlLgo+PiAtICov Cj4+IC1pbnQgYXJjaF9zZHRfYXJnX3BhcnNlX29wKGNoYXIgKm9sZF9vcCwgY2hhciAqKm5ld19v cCkKPj4gLXsKPj4gLSAgICAgICBpbnQgcmV0LCBuZXdfbGVuOwo+PiAtICAgICAgIHJlZ21hdGNo X3Qgcm1bNV07Cj4+IC0gICAgICAgY2hhciBwcmVmaXg7Cj4+IC0KPj4gLSAgICAgICAvKiBDb25z dGFudCBhcmd1bWVudC4gVXByb2JlIGRvZXMgbm90IHN1cHBvcnQgaXQgKi8KPj4gLSAgICAgICBp ZiAob2xkX29wWzBdID09ICdpJykgewo+PiAtICAgICAgICAgICAgICAgcHJfZGVidWc0KCJTa2lw cGluZyB1bnN1cHBvcnRlZCBTRFQgYXJndW1lbnQ6ICVzXG4iLCBvbGRfb3ApOwo+PiAtICAgICAg ICAgICAgICAgcmV0dXJuIFNEVF9BUkdfU0tJUDsKPj4gLSAgICAgICB9Cj4+IC0KPj4gLSAgICAg ICByZXQgPSBzZHRfaW5pdF9vcF9yZWdleCgpOwo+PiAtICAgICAgIGlmIChyZXQgPCAwKQo+PiAt ICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPj4gLQo+PiAtICAgICAgIGlmICghcmVnZXhlYygm c2R0X29wX3JlZ2V4MSwgb2xkX29wLCAzLCBybSwgMCkpIHsKPj4gLSAgICAgICAgICAgICAgIC8q IFJFRyBvciAlclJFRyAtLT4gJWdwclJFRyAqLwo+PiAtCj4+IC0gICAgICAgICAgICAgICBuZXdf bGVuID0gNTsgICAgLyogJSBnIHAgciBOVUxMICovCj4+IC0gICAgICAgICAgICAgICBuZXdfbGVu ICs9IChpbnQpKHJtWzJdLnJtX2VvIC0gcm1bMl0ucm1fc28pOwo+PiAtCj4+IC0gICAgICAgICAg ICAgICAqbmV3X29wID0gemFsbG9jKG5ld19sZW4pOwo+PiAtICAgICAgICAgICAgICAgaWYgKCEq bmV3X29wKQo+PiAtICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKPj4gLQo+ PiAtICAgICAgICAgICAgICAgc2NucHJpbnRmKCpuZXdfb3AsIG5ld19sZW4sICIlJWdwciUuKnMi LAo+PiAtICAgICAgICAgICAgICAgICAgICAgICAoaW50KShybVsyXS5ybV9lbyAtIHJtWzJdLnJt X3NvKSwgb2xkX29wICsgcm1bMl0ucm1fc28pOwo+PiAtICAgICAgIH0gZWxzZSBpZiAoIXJlZ2V4 ZWMoJnNkdF9vcF9yZWdleDIsIG9sZF9vcCwgNSwgcm0sIDApKSB7Cj4+IC0gICAgICAgICAgICAg ICAvKgo+PiAtICAgICAgICAgICAgICAgICogLU5VTShSRUcpIG9yIE5VTShSRUcpIG9yIC1OVU0o JXJSRUcpIG9yIE5VTSglclJFRykgLS0+Cj4+IC0gICAgICAgICAgICAgICAgKiAgICAgICsvLU5V TSglZ3ByUkVHKQo+PiAtICAgICAgICAgICAgICAgICovCj4+IC0gICAgICAgICAgICAgICBwcmVm aXggPSAocm1bMV0ucm1fc28gPT0gLTEpID8gJysnIDogJy0nOwo+PiAtCj4+IC0gICAgICAgICAg ICAgICBuZXdfbGVuID0gODsgICAgLyogKy8tICggJSBnIHAgciApIE5VTEwgKi8KPj4gLSAgICAg ICAgICAgICAgIG5ld19sZW4gKz0gKGludCkocm1bMl0ucm1fZW8gLSBybVsyXS5ybV9zbyk7Cj4+ IC0gICAgICAgICAgICAgICBuZXdfbGVuICs9IChpbnQpKHJtWzRdLnJtX2VvIC0gcm1bNF0ucm1f c28pOwo+PiAtCj4+IC0gICAgICAgICAgICAgICAqbmV3X29wID0gemFsbG9jKG5ld19sZW4pOwo+ PiAtICAgICAgICAgICAgICAgaWYgKCEqbmV3X29wKQo+PiAtICAgICAgICAgICAgICAgICAgICAg ICByZXR1cm4gLUVOT01FTTsKPj4gLQo+PiAtICAgICAgICAgICAgICAgc2NucHJpbnRmKCpuZXdf b3AsIG5ld19sZW4sICIlYyUuKnMoJSVncHIlLipzKSIsIHByZWZpeCwKPj4gLSAgICAgICAgICAg ICAgICAgICAgICAgKGludCkocm1bMl0ucm1fZW8gLSBybVsyXS5ybV9zbyksIG9sZF9vcCArIHJt WzJdLnJtX3NvLAo+PiAtICAgICAgICAgICAgICAgICAgICAgICAoaW50KShybVs0XS5ybV9lbyAt IHJtWzRdLnJtX3NvKSwgb2xkX29wICsgcm1bNF0ucm1fc28pOwo+PiAtICAgICAgIH0gZWxzZSB7 Cj4+IC0gICAgICAgICAgICAgICBwcl9kZWJ1ZzQoIlNraXBwaW5nIHVuc3VwcG9ydGVkIFNEVCBh cmd1bWVudDogJXNcbiIsIG9sZF9vcCk7Cj4+IC0gICAgICAgICAgICAgICByZXR1cm4gU0RUX0FS R19TS0lQOwo+PiAtICAgICAgIH0KPj4gLQo+PiAtICAgICAgIHJldHVybiBTRFRfQVJHX1ZBTElE Owo+PiAtfQo+PiBkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9hcmNoL3g4Ni91dGlsL0J1aWxkIGIv dG9vbHMvcGVyZi9hcmNoL3g4Ni91dGlsL0J1aWxkCj4+IGluZGV4IGZhZDI1NjI1MmJiOS4uYjdi NDAxY2ZiZDQ1IDEwMDY0NAo+PiAtLS0gYS90b29scy9wZXJmL2FyY2gveDg2L3V0aWwvQnVpbGQK Pj4gKysrIGIvdG9vbHMvcGVyZi9hcmNoL3g4Ni91dGlsL0J1aWxkCj4+IEBAIC0yLDcgKzIsNiBA QCBwZXJmLXV0aWwteSArPSBoZWFkZXIubwo+PiAgcGVyZi11dGlsLXkgKz0gdHNjLm8KPj4gIHBl cmYtdXRpbC15ICs9IHBtdS5vCj4+ICBwZXJmLXV0aWwtJChDT05GSUdfTElCVFJBQ0VFVkVOVCkg Kz0ga3ZtLXN0YXQubwo+PiAtcGVyZi11dGlsLXkgKz0gcGVyZl9yZWdzLm8KPj4gIHBlcmYtdXRp bC15ICs9IHRvcGRvd24ubwo+PiAgcGVyZi11dGlsLXkgKz0gbWFjaGluZS5vCj4+ICBwZXJmLXV0 aWwteSArPSBldmVudC5vCj4+IGRpZmYgLS1naXQgYS90b29scy9wZXJmL2FyY2gveDg2L3V0aWwv cGVyZl9yZWdzLmMgYi90b29scy9wZXJmL2FyY2gveDg2L3V0aWwvcGVyZl9yZWdzLmMKPj4gZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDQxMTQxY2ViZTIyNi4uMDAwMDAwMDAwMDAw Cj4+IC0tLSBhL3Rvb2xzL3BlcmYvYXJjaC94ODYvdXRpbC9wZXJmX3JlZ3MuYwo+PiArKysgL2Rl di9udWxsCj4+IEBAIC0xLDIzNSArMCwwIEBACj4+IC0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMAo+PiAtI2luY2x1ZGUgPGVycm5vLmg+Cj4+IC0jaW5jbHVkZSA8c3RyaW5nLmg+ Cj4+IC0jaW5jbHVkZSA8cmVnZXguaD4KPj4gLSNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KPj4g LSNpbmNsdWRlIDxsaW51eC96YWxsb2MuaD4KPj4gLQo+PiAtI2luY2x1ZGUgInBlcmZfcmVncy5o Igo+PiAtI2luY2x1ZGUgIi4uLy4uLy4uL3BlcmYtc3lzLmgiCj4+IC0jaW5jbHVkZSAiLi4vLi4v Li4vdXRpbC9wZXJmX3JlZ3MuaCIKPj4gLSNpbmNsdWRlICIuLi8uLi8uLi91dGlsL2RlYnVnLmgi Cj4+IC0jaW5jbHVkZSAiLi4vLi4vLi4vdXRpbC9ldmVudC5oIgo+PiAtI2luY2x1ZGUgIi4uLy4u Ly4uL3V0aWwvcG11LmgiCj4+IC0jaW5jbHVkZSAiLi4vLi4vLi4vdXRpbC9wbXVzLmgiCj4+IC0K Pj4gLXN0cnVjdCBzZHRfbmFtZV9yZWcgewo+PiAtICAgICAgIGNvbnN0IGNoYXIgKnNkdF9uYW1l Owo+PiAtICAgICAgIGNvbnN0IGNoYXIgKnVwcm9iZV9uYW1lOwo+PiAtfTsKPj4gLSNkZWZpbmUg U0RUX05BTUVfUkVHKG4sIG0pIHsuc2R0X25hbWUgPSAiJSIgI24sIC51cHJvYmVfbmFtZSA9ICIl IiAjbX0KPj4gLSNkZWZpbmUgU0RUX05BTUVfUkVHX0VORCB7LnNkdF9uYW1lID0gTlVMTCwgLnVw cm9iZV9uYW1lID0gTlVMTH0KPj4gLQo+PiAtc3RhdGljIGNvbnN0IHN0cnVjdCBzZHRfbmFtZV9y ZWcgc2R0X3JlZ190YmxbXSA9IHsKPj4gLSAgICAgICBTRFRfTkFNRV9SRUcoZWF4LCBheCksCj4+ IC0gICAgICAgU0RUX05BTUVfUkVHKHJheCwgYXgpLAo+PiAtICAgICAgIFNEVF9OQU1FX1JFRyhh bCwgIGF4KSwKPj4gLSAgICAgICBTRFRfTkFNRV9SRUcoYWgsICBheCksCj4+IC0gICAgICAgU0RU X05BTUVfUkVHKGVieCwgYngpLAo+PiAtICAgICAgIFNEVF9OQU1FX1JFRyhyYngsIGJ4KSwKPj4g LSAgICAgICBTRFRfTkFNRV9SRUcoYmwsICBieCksCj4+IC0gICAgICAgU0RUX05BTUVfUkVHKGJo LCAgYngpLAo+PiAtICAgICAgIFNEVF9OQU1FX1JFRyhlY3gsIGN4KSwKPj4gLSAgICAgICBTRFRf TkFNRV9SRUcocmN4LCBjeCksCj4+IC0gICAgICAgU0RUX05BTUVfUkVHKGNsLCAgY3gpLAo+PiAt ICAgICAgIFNEVF9OQU1FX1JFRyhjaCwgIGN4KSwKPj4gLSAgICAgICBTRFRfTkFNRV9SRUcoZWR4 LCBkeCksCj4+IC0gICAgICAgU0RUX05BTUVfUkVHKHJkeCwgZHgpLAo+PiAtICAgICAgIFNEVF9O QU1FX1JFRyhkbCwgIGR4KSwKPj4gLSAgICAgICBTRFRfTkFNRV9SRUcoZGgsICBkeCksCj4+IC0g ICAgICAgU0RUX05BTUVfUkVHKGVzaSwgc2kpLAo+PiAtICAgICAgIFNEVF9OQU1FX1JFRyhyc2ks IHNpKSwKPj4gLSAgICAgICBTRFRfTkFNRV9SRUcoc2lsLCBzaSksCj4+IC0gICAgICAgU0RUX05B TUVfUkVHKGVkaSwgZGkpLAo+PiAtICAgICAgIFNEVF9OQU1FX1JFRyhyZGksIGRpKSwKPj4gLSAg ICAgICBTRFRfTkFNRV9SRUcoZGlsLCBkaSksCj4+IC0gICAgICAgU0RUX05BTUVfUkVHKGVicCwg YnApLAo+PiAtICAgICAgIFNEVF9OQU1FX1JFRyhyYnAsIGJwKSwKPj4gLSAgICAgICBTRFRfTkFN RV9SRUcoYnBsLCBicCksCj4+IC0gICAgICAgU0RUX05BTUVfUkVHKHJzcCwgc3ApLAo+PiAtICAg ICAgIFNEVF9OQU1FX1JFRyhlc3AsIHNwKSwKPj4gLSAgICAgICBTRFRfTkFNRV9SRUcoc3BsLCBz cCksCj4+IC0KPj4gLSAgICAgICAvKiByTk4gcmVnaXN0ZXJzICovCj4+IC0gICAgICAgU0RUX05B TUVfUkVHKHI4YiwgIHI4KSwKPj4gLSAgICAgICBTRFRfTkFNRV9SRUcocjh3LCAgcjgpLAo+PiAt ICAgICAgIFNEVF9OQU1FX1JFRyhyOGQsICByOCksCj4+IC0gICAgICAgU0RUX05BTUVfUkVHKHI5 YiwgIHI5KSwKPj4gLSAgICAgICBTRFRfTkFNRV9SRUcocjl3LCAgcjkpLAo+PiAtICAgICAgIFNE VF9OQU1FX1JFRyhyOWQsICByOSksCj4+IC0gICAgICAgU0RUX05BTUVfUkVHKHIxMGIsIHIxMCks Cj4+IC0gICAgICAgU0RUX05BTUVfUkVHKHIxMHcsIHIxMCksCj4+IC0gICAgICAgU0RUX05BTUVf UkVHKHIxMGQsIHIxMCksCj4+IC0gICAgICAgU0RUX05BTUVfUkVHKHIxMWIsIHIxMSksCj4+IC0g ICAgICAgU0RUX05BTUVfUkVHKHIxMXcsIHIxMSksCj4+IC0gICAgICAgU0RUX05BTUVfUkVHKHIx MWQsIHIxMSksCj4+IC0gICAgICAgU0RUX05BTUVfUkVHKHIxMmIsIHIxMiksCj4+IC0gICAgICAg U0RUX05BTUVfUkVHKHIxMncsIHIxMiksCj4+IC0gICAgICAgU0RUX05BTUVfUkVHKHIxMmQsIHIx MiksCj4+IC0gICAgICAgU0RUX05BTUVfUkVHKHIxM2IsIHIxMyksCj4+IC0gICAgICAgU0RUX05B TUVfUkVHKHIxM3csIHIxMyksCj4+IC0gICAgICAgU0RUX05BTUVfUkVHKHIxM2QsIHIxMyksCj4+ IC0gICAgICAgU0RUX05BTUVfUkVHKHIxNGIsIHIxNCksCj4+IC0gICAgICAgU0RUX05BTUVfUkVH KHIxNHcsIHIxNCksCj4+IC0gICAgICAgU0RUX05BTUVfUkVHKHIxNGQsIHIxNCksCj4+IC0gICAg ICAgU0RUX05BTUVfUkVHKHIxNWIsIHIxNSksCj4+IC0gICAgICAgU0RUX05BTUVfUkVHKHIxNXcs IHIxNSksCj4+IC0gICAgICAgU0RUX05BTUVfUkVHKHIxNWQsIHIxNSksCj4+IC0gICAgICAgU0RU X05BTUVfUkVHX0VORCwKPj4gLX07Cj4+IC0KPj4gLS8qCj4+IC0gKiBQZXJmIG9ubHkgc3VwcG9y dHMgT1Agd2hpY2ggaXMgaW4gICsvLU5VTShSRUcpICBmb3JtLgo+PiAtICogSGVyZSBwbHVzLW1p bnVzIHNpZ24sIE5VTSBhbmQgcGFyZW50aGVzaXMgYXJlIG9wdGlvbmFsLAo+PiAtICogb25seSBS RUcgaXMgbWFuZGF0b3J5Lgo+PiAtICoKPj4gLSAqIFNEVCBldmVudHMgYWxzbyBzdXBwb3J0cyBp bmRpcmVjdCBhZGRyZXNzaW5nIG1vZGUgd2l0aCBhCj4+IC0gKiBzeW1ib2wgYXMgb2Zmc2V0LCBz Y2FsZWQgbW9kZSBhbmQgY29uc3RhbnRzIGluIE9QLiBCdXQKPj4gLSAqIHBlcmYgZG9lcyBub3Qg c3VwcG9ydCB0aGVtIHlldC4gQmVsb3cgYXJlIGZldyBleGFtcGxlcy4KPj4gLSAqCj4+IC0gKiBP UCB3aXRoIHNjYWxlZCBtb2RlOgo+PiAtICogICAgICglcmF4LCVyc2ksOCkKPj4gLSAqICAgICAx MCglcmFzLCVyc2ksOCkKPj4gLSAqCj4+IC0gKiBPUCB3aXRoIGluZGlyZWN0IGFkZHJlc3Npbmcg bW9kZToKPj4gLSAqICAgICBjaGVja19hY3Rpb24oJXJpcCkKPj4gLSAqICAgICBtcF8rNTIoJXJp cCkKPj4gLSAqICAgICA0NCttcF8oJXJpcCkKPj4gLSAqCj4+IC0gKiBPUCB3aXRoIGNvbnN0YW50 IHZhbHVlczoKPj4gLSAqICAgICAkMAo+PiAtICogICAgICQxMjMKPj4gLSAqICAgICAkLTEKPj4g LSAqLwo+PiAtI2RlZmluZSBTRFRfT1BfUkVHRVggICJeKFsrXFwtXT8pKFswLTldKikoXFwoPyko JVthLXpdW2EtejAtOV0rKShcXCk/KSQiCj4+IC0KPj4gLXN0YXRpYyByZWdleF90IHNkdF9vcF9y ZWdleDsKPj4gLQo+PiAtc3RhdGljIGludCBzZHRfaW5pdF9vcF9yZWdleCh2b2lkKQo+PiAtewo+ PiAtICAgICAgIHN0YXRpYyBpbnQgaW5pdGlhbGl6ZWQ7Cj4+IC0gICAgICAgaW50IHJldCA9IDA7 Cj4+IC0KPj4gLSAgICAgICBpZiAoaW5pdGlhbGl6ZWQpCj4+IC0gICAgICAgICAgICAgICByZXR1 cm4gMDsKPj4gLQo+PiAtICAgICAgIHJldCA9IHJlZ2NvbXAoJnNkdF9vcF9yZWdleCwgU0RUX09Q X1JFR0VYLCBSRUdfRVhURU5ERUQpOwo+PiAtICAgICAgIGlmIChyZXQgPCAwKSB7Cj4+IC0gICAg ICAgICAgICAgICBwcl9kZWJ1ZzQoIlJlZ2V4IGNvbXBpbGF0aW9uIGVycm9yLlxuIik7Cj4+IC0g ICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+PiAtICAgICAgIH0KPj4gLQo+PiAtICAgICAgIGlu aXRpYWxpemVkID0gMTsKPj4gLSAgICAgICByZXR1cm4gMDsKPj4gLX0KPj4gLQo+PiAtLyoKPj4g LSAqIE1heCB4ODYgcmVnaXN0ZXIgbmFtZSBsZW5ndGggaXMgNShleDogJXIxNWQpLiBTbywgNnRo IGNoYXIKPj4gLSAqIHNob3VsZCBhbHdheXMgY29udGFpbiBOVUxMLiBUaGlzIGhlbHBzIHRvIGZp bmQgcmVnaXN0ZXIgbmFtZQo+PiAtICogbGVuZ3RoIHVzaW5nIHN0cmxlbiwgaW5zdGVhZCBvZiBt YWludGFpbmluZyBvbmUgbW9yZSB2YXJpYWJsZS4KPj4gLSAqLwo+PiAtI2RlZmluZSBTRFRfUkVH X05BTUVfU0laRSAgNgo+PiAtCj4+IC0vKgo+PiAtICogVGhlIHVwcm9iZSBwYXJzZXIgZG9lcyBu b3Qgc3VwcG9ydCBhbGwgZ2FzIHJlZ2lzdGVyIG5hbWVzOwo+PiAtICogc28sIHdlIGhhdmUgdG8g cmVwbGFjZSB0aGVtIChleC4gZm9yIHg4Nl82NDogJXJheCAtPiAlYXgpLgo+PiAtICogTm90ZTog SWYgcmVnaXN0ZXIgZG9lcyBub3QgcmVxdWlyZSByZW5hbWluZywganVzdCBjb3B5Cj4+IC0gKiBw YXN0ZSBhcyBpdCBpcywgYnV0IGRvbid0IGxlYXZlIGl0IGVtcHR5Lgo+PiAtICovCj4+IC1zdGF0 aWMgdm9pZCBzZHRfcmVuYW1lX3JlZ2lzdGVyKGNoYXIgKnNkdF9yZWcsIGludCBzZHRfbGVuLCBj aGFyICp1cHJvYmVfcmVnKQo+PiAtewo+PiAtICAgICAgIGludCBpID0gMDsKPj4gLQo+PiAtICAg ICAgIGZvciAoaSA9IDA7IHNkdF9yZWdfdGJsW2ldLnNkdF9uYW1lICE9IE5VTEw7IGkrKykgewo+ PiAtICAgICAgICAgICAgICAgaWYgKCFzdHJuY21wKHNkdF9yZWdfdGJsW2ldLnNkdF9uYW1lLCBz ZHRfcmVnLCBzZHRfbGVuKSkgewo+PiAtICAgICAgICAgICAgICAgICAgICAgICBzdHJjcHkodXBy b2JlX3JlZywgc2R0X3JlZ190YmxbaV0udXByb2JlX25hbWUpOwo+PiAtICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm47Cj4+IC0gICAgICAgICAgICAgICB9Cj4+IC0gICAgICAgfQo+PiAtCj4+ IC0gICAgICAgc3RybmNweSh1cHJvYmVfcmVnLCBzZHRfcmVnLCBzZHRfbGVuKTsKPj4gLX0KPj4g LQo+PiAtaW50IGFyY2hfc2R0X2FyZ19wYXJzZV9vcChjaGFyICpvbGRfb3AsIGNoYXIgKipuZXdf b3ApCj4+IC17Cj4+IC0gICAgICAgY2hhciBuZXdfcmVnW1NEVF9SRUdfTkFNRV9TSVpFXSA9IHsw fTsKPj4gLSAgICAgICBpbnQgbmV3X2xlbiA9IDAsIHJldDsKPj4gLSAgICAgICAvKgo+PiAtICAg ICAgICAqIHJtWzBdOiAgKy8tTlVNKFJFRykKPj4gLSAgICAgICAgKiBybVsxXTogICsvLQo+PiAt ICAgICAgICAqIHJtWzJdOiAgTlVNCj4+IC0gICAgICAgICogcm1bM106ICAoCj4+IC0gICAgICAg ICogcm1bNF06ICBSRUcKPj4gLSAgICAgICAgKiBybVs1XTogICkKPj4gLSAgICAgICAgKi8KPj4g LSAgICAgICByZWdtYXRjaF90IHJtWzZdOwo+PiAtICAgICAgIC8qCj4+IC0gICAgICAgICogTWF4 IHByZWZpeCBsZW5ndGggaXMgMiBhcyBpdCBtYXkgY29udGFpbnMgc2lnbigrLy0pCj4+IC0gICAg ICAgICogYW5kIGRpc3BsYWNlbWVudCAwIChCb3RoIHNpZ24gYW5kIGRpc3BsYWNlbWVudCAwIGFy ZQo+PiAtICAgICAgICAqIG9wdGlvbmFsIHNvIGl0IG1heSBiZSBlbXB0eSkuIFVzZSBvbmUgbW9y ZSBjaGFyYWN0ZXIKPj4gLSAgICAgICAgKiB0byBob2xkIGxhc3QgTlVMTCBzbyB0aGF0IHN0cmxl biBjYW4gYmUgdXNlZCB0byBmaW5kCj4+IC0gICAgICAgICogcHJlZml4IGxlbmd0aCwgaW5zdGVh ZCBvZiBtYWludGFpbmluZyBvbmUgbW9yZSB2YXJpYWJsZS4KPj4gLSAgICAgICAgKi8KPj4gLSAg ICAgICBjaGFyIHByZWZpeFszXSA9IHswfTsKPj4gLQo+PiAtICAgICAgIHJldCA9IHNkdF9pbml0 X29wX3JlZ2V4KCk7Cj4+IC0gICAgICAgaWYgKHJldCA8IDApCj4+IC0gICAgICAgICAgICAgICBy ZXR1cm4gcmV0Owo+PiAtCj4+IC0gICAgICAgLyoKPj4gLSAgICAgICAgKiBJZiB1bnN1cHBvcnRl ZCBPUiBkb2VzIG5vdCBtYXRjaCB3aXRoIHJlZ2V4IE9SCj4+IC0gICAgICAgICogcmVnaXN0ZXIg bmFtZSB0b28gbG9uZywgc2tpcCBpdC4KPj4gLSAgICAgICAgKi8KPj4gLSAgICAgICBpZiAoc3Ry Y2hyKG9sZF9vcCwgJywnKSB8fCBzdHJjaHIob2xkX29wLCAnJCcpIHx8Cj4+IC0gICAgICAgICAg IHJlZ2V4ZWMoJnNkdF9vcF9yZWdleCwgb2xkX29wLCA2LCBybSwgMCkgICB8fAo+PiAtICAgICAg ICAgICBybVs0XS5ybV9lbyAtIHJtWzRdLnJtX3NvID4gU0RUX1JFR19OQU1FX1NJWkUpIHsKPj4g LSAgICAgICAgICAgICAgIHByX2RlYnVnNCgiU2tpcHBpbmcgdW5zdXBwb3J0ZWQgU0RUIGFyZ3Vt ZW50OiAlc1xuIiwgb2xkX29wKTsKPj4gLSAgICAgICAgICAgICAgIHJldHVybiBTRFRfQVJHX1NL SVA7Cj4+IC0gICAgICAgfQo+PiAtCj4+IC0gICAgICAgLyoKPj4gLSAgICAgICAgKiBQcmVwYXJl IHByZWZpeC4KPj4gLSAgICAgICAgKiBJZiBTRFQgT1AgaGFzIHBhcmVudGhlc2lzIGJ1dCBkb2Vz IG5vdCBwcm92aWRlCj4+IC0gICAgICAgICogZGlzcGxhY2VtZW50LCBhZGQgMCBmb3IgZGlzcGxh Y2VtZW50Lgo+PiAtICAgICAgICAqICAgICBTRFQgICAgICAgICBVcHJvYmUgICAgIFByZWZpeAo+ PiAtICAgICAgICAqICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+PiAtICAgICAg ICAqICAgICArMjQoJXJkaSkgICArMjQoJWRpKSAgICsKPj4gLSAgICAgICAgKiAgICAgMjQoJXJk aSkgICAgKzI0KCVkaSkgICArCj4+IC0gICAgICAgICogICAgICVyZGkgICAgICAgICVkaQo+PiAt ICAgICAgICAqICAgICAoJXJkaSkgICAgICArMCglZGkpICAgICswCj4+IC0gICAgICAgICogICAg IC04MCglcmJ4KSAgIC04MCglYngpICAgLQo+PiAtICAgICAgICAqLwo+PiAtICAgICAgIGlmIChy bVszXS5ybV9zbyAhPSBybVszXS5ybV9lbykgewo+PiAtICAgICAgICAgICAgICAgaWYgKHJtWzFd LnJtX3NvICE9IHJtWzFdLnJtX2VvKQo+PiAtICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXhb MF0gPSAqKG9sZF9vcCArIHJtWzFdLnJtX3NvKTsKPj4gLSAgICAgICAgICAgICAgIGVsc2UgaWYg KHJtWzJdLnJtX3NvICE9IHJtWzJdLnJtX2VvKQo+PiAtICAgICAgICAgICAgICAgICAgICAgICBw cmVmaXhbMF0gPSAnKyc7Cj4+IC0gICAgICAgICAgICAgICBlbHNlCj4+IC0gICAgICAgICAgICAg ICAgICAgICAgIHNjbnByaW50ZihwcmVmaXgsIHNpemVvZihwcmVmaXgpLCAiKzAiKTsKPj4gLSAg ICAgICB9Cj4+IC0KPj4gLSAgICAgICAvKiBSZW5hbWUgcmVnaXN0ZXIgKi8KPj4gLSAgICAgICBz ZHRfcmVuYW1lX3JlZ2lzdGVyKG9sZF9vcCArIHJtWzRdLnJtX3NvLCBybVs0XS5ybV9lbyAtIHJt WzRdLnJtX3NvLAo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3JlZyk7Cj4+IC0K Pj4gLSAgICAgICAvKiBQcmVwYXJlIGZpbmFsIE9QIHdoaWNoIHNob3VsZCBiZSB2YWxpZCBmb3Ig dXByb2JlX2V2ZW50cyAqLwo+PiAtICAgICAgIG5ld19sZW4gPSBzdHJsZW4ocHJlZml4KSAgICAg ICAgICAgICAgKwo+PiAtICAgICAgICAgICAgICAgICAocm1bMl0ucm1fZW8gLSBybVsyXS5ybV9z bykgKwo+PiAtICAgICAgICAgICAgICAgICAocm1bM10ucm1fZW8gLSBybVszXS5ybV9zbykgKwo+ PiAtICAgICAgICAgICAgICAgICBzdHJsZW4obmV3X3JlZykgICAgICAgICAgICAgKwo+PiAtICAg ICAgICAgICAgICAgICAocm1bNV0ucm1fZW8gLSBybVs1XS5ybV9zbykgKwo+PiAtICAgICAgICAg ICAgICAgICAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5VTEwgKi8K Pj4gLQo+PiAtICAgICAgICpuZXdfb3AgPSB6YWxsb2MobmV3X2xlbik7Cj4+IC0gICAgICAgaWYg KCEqbmV3X29wKQo+PiAtICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4+IC0KPj4gLSAg ICAgICBzY25wcmludGYoKm5ld19vcCwgbmV3X2xlbiwgIiUuKnMlLipzJS4qcyUuKnMlLipzIiwK Pj4gLSAgICAgICAgICAgICAgICAgc3RybGVuKHByZWZpeCksIHByZWZpeCwKPj4gLSAgICAgICAg ICAgICAgICAgKGludCkocm1bMl0ucm1fZW8gLSBybVsyXS5ybV9zbyksIG9sZF9vcCArIHJtWzJd LnJtX3NvLAo+PiAtICAgICAgICAgICAgICAgICAoaW50KShybVszXS5ybV9lbyAtIHJtWzNdLnJt X3NvKSwgb2xkX29wICsgcm1bM10ucm1fc28sCj4+IC0gICAgICAgICAgICAgICAgIHN0cmxlbihu ZXdfcmVnKSwgbmV3X3JlZywKPj4gLSAgICAgICAgICAgICAgICAgKGludCkocm1bNV0ucm1fZW8g LSBybVs1XS5ybV9zbyksIG9sZF9vcCArIHJtWzVdLnJtX3NvKTsKPj4gLQo+PiAtICAgICAgIHJl dHVybiBTRFRfQVJHX1ZBTElEOwo+PiAtfQo+PiBkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGls L3BlcmYtcmVncy1hcmNoL3BlcmZfcmVnc19hYXJjaDY0LmMgYi90b29scy9wZXJmL3V0aWwvcGVy Zi1yZWdzLWFyY2gvcGVyZl9yZWdzX2FhcmNoNjQuYwo+PiBpbmRleCAyMWE0MzI2NzFmMDQuLjFi NTM2YzYwY2ViNCAxMDA2NDQKPj4gLS0tIGEvdG9vbHMvcGVyZi91dGlsL3BlcmYtcmVncy1hcmNo L3BlcmZfcmVnc19hYXJjaDY0LmMKPj4gKysrIGIvdG9vbHMvcGVyZi91dGlsL3BlcmYtcmVncy1h cmNoL3BlcmZfcmVnc19hYXJjaDY0LmMKPj4gQEAgLTE4LDYgKzE4LDkyIEBACj4+ICAjZGVmaW5l IEhXQ0FQX1NWRSAgICAgICgxIDw8IDIyKQo+PiAgI2VuZGlmCj4+Cj4+ICsvKiAleE5VTSAqLwo+ PiArI2RlZmluZSBTRFRfT1BfUkVHRVgxICAiXih4WzEtMl0/WzAtOV18M1swLTFdKSQiCj4+ICsK Pj4gKy8qIFtzcF0sIFtzcCwgTlVNXSAqLwo+PiArI2RlZmluZSBTRFRfT1BfUkVHRVgyICAiXlxc W3NwKCwgKT8oWzAtOV0rKT9cXF0kIgo+PiArCj4+ICtzdGF0aWMgcmVnZXhfdCBzZHRfb3BfcmVn ZXgxLCBzZHRfb3BfcmVnZXgyOwo+PiArCj4+ICtzdGF0aWMgaW50IHNkdF9pbml0X29wX3JlZ2V4 KHZvaWQpCj4+ICt7Cj4+ICsgICAgICAgc3RhdGljIGludCBpbml0aWFsaXplZDsKPj4gKyAgICAg ICBpbnQgcmV0ID0gMDsKPj4gKwo+PiArICAgICAgIGlmIChpbml0aWFsaXplZCkKPj4gKyAgICAg ICAgICAgICAgIHJldHVybiAwOwo+PiArCj4+ICsgICAgICAgcmV0ID0gcmVnY29tcCgmc2R0X29w X3JlZ2V4MSwgU0RUX09QX1JFR0VYMSwgUkVHX0VYVEVOREVEKTsKPj4gKyAgICAgICBpZiAocmV0 KQo+PiArICAgICAgICAgICAgICAgZ290byBlcnJvcjsKPj4gKwo+PiArICAgICAgIHJldCA9IHJl Z2NvbXAoJnNkdF9vcF9yZWdleDIsIFNEVF9PUF9SRUdFWDIsIFJFR19FWFRFTkRFRCk7Cj4+ICsg ICAgICAgaWYgKHJldCkKPj4gKyAgICAgICAgICAgICAgIGdvdG8gZnJlZV9yZWdleDE7Cj4+ICsK Pj4gKyAgICAgICBpbml0aWFsaXplZCA9IDE7Cj4+ICsgICAgICAgcmV0dXJuIDA7Cj4+ICsKPj4g K2ZyZWVfcmVnZXgxOgo+PiArICAgICAgIHJlZ2ZyZWUoJnNkdF9vcF9yZWdleDEpOwo+PiArZXJy b3I6Cj4+ICsgICAgICAgcHJfZGVidWc0KCJSZWdleCBjb21waWxhdGlvbiBlcnJvci5cbiIpOwo+ PiArICAgICAgIHJldHVybiByZXQ7Cj4+ICt9Cj4+ICsKPj4gKy8qCj4+ICsgKiBTRFQgbWFya2Vy IGFyZ3VtZW50cyBvbiBBcm02NCB1c2VzICV4UkVHIG9yIFtzcCwgTlVNXSwgY3VycmVudGx5Cj4+ ICsgKiBzdXBwb3J0IHRoZXNlIHR3byBmb3JtYXRzLgo+PiArICovCj4+ICtpbnQgX19wZXJmX3Nk dF9hcmdfcGFyc2Vfb3BfYXJtNjQoY2hhciAqb2xkX29wLCBjaGFyICoqbmV3X29wKQo+PiArewo+ PiArICAgICAgIGludCByZXQsIG5ld19sZW47Cj4+ICsgICAgICAgcmVnbWF0Y2hfdCBybVs1XTsK Pj4gKwo+PiArICAgICAgIHJldCA9IHNkdF9pbml0X29wX3JlZ2V4KCk7Cj4+ICsgICAgICAgaWYg KHJldCA8IDApCj4+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+PiArCj4+ICsgICAgICAg aWYgKCFyZWdleGVjKCZzZHRfb3BfcmVnZXgxLCBvbGRfb3AsIDMsIHJtLCAwKSkgewo+PiArICAg ICAgICAgICAgICAgLyogRXh0cmFjdCB4TlVNICovCj4+ICsgICAgICAgICAgICAgICBuZXdfbGVu ID0gMjsgICAgLyogJSBOVUxMICovCj4+ICsgICAgICAgICAgICAgICBuZXdfbGVuICs9IChpbnQp KHJtWzFdLnJtX2VvIC0gcm1bMV0ucm1fc28pOwo+PiArCj4+ICsgICAgICAgICAgICAgICAqbmV3 X29wID0gemFsbG9jKG5ld19sZW4pOwo+PiArICAgICAgICAgICAgICAgaWYgKCEqbmV3X29wKQo+ PiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKPj4gKwo+PiArICAgICAg ICAgICAgICAgc2NucHJpbnRmKCpuZXdfb3AsIG5ld19sZW4sICIlJSUuKnMiLAo+PiArICAgICAg ICAgICAgICAgICAgICAgICAoaW50KShybVsxXS5ybV9lbyAtIHJtWzFdLnJtX3NvKSwgb2xkX29w ICsgcm1bMV0ucm1fc28pOwo+PiArICAgICAgIH0gZWxzZSBpZiAoIXJlZ2V4ZWMoJnNkdF9vcF9y ZWdleDIsIG9sZF9vcCwgNSwgcm0sIDApKSB7Cj4+ICsgICAgICAgICAgICAgICAvKiBbc3BdLCBb c3AsIE5VTV0gb3IgW3NwLE5VTV0gKi8KPj4gKyAgICAgICAgICAgICAgIG5ld19sZW4gPSA3OyAg ICAvKiArICggJSBzIHAgKSBOVUxMICovCj4+ICsKPj4gKyAgICAgICAgICAgICAgIC8qIElmIHRo ZSBhcmd1bWVudCBpcyBbc3BdLCBuZWVkIHRvIGZpbGwgb2Zmc2V0ICcwJyAqLwo+PiArICAgICAg ICAgICAgICAgaWYgKHJtWzJdLnJtX3NvID09IC0xKQo+PiArICAgICAgICAgICAgICAgICAgICAg ICBuZXdfbGVuICs9IDE7Cj4+ICsgICAgICAgICAgICAgICBlbHNlCj4+ICsgICAgICAgICAgICAg ICAgICAgICAgIG5ld19sZW4gKz0gKGludCkocm1bMl0ucm1fZW8gLSBybVsyXS5ybV9zbyk7Cj4+ ICsKPj4gKyAgICAgICAgICAgICAgICpuZXdfb3AgPSB6YWxsb2MobmV3X2xlbik7Cj4+ICsgICAg ICAgICAgICAgICBpZiAoISpuZXdfb3ApCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVy biAtRU5PTUVNOwo+PiArCj4+ICsgICAgICAgICAgICAgICBpZiAocm1bMl0ucm1fc28gPT0gLTEp Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHNjbnByaW50ZigqbmV3X29wLCBuZXdfbGVuLCAi KzAoJSVzcCkiKTsKPj4gKyAgICAgICAgICAgICAgIGVsc2UKPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgc2NucHJpbnRmKCpuZXdfb3AsIG5ld19sZW4sICIrJS4qcyglJXNwKSIsCj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShybVsyXS5ybV9lbyAtIHJtWzJdLnJt X3NvKSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZF9vcCArIHJtWzJd LnJtX3NvKTsKPj4gKyAgICAgICB9IGVsc2Ugewo+PiArICAgICAgICAgICAgICAgcHJfZGVidWc0 KCJTa2lwcGluZyB1bnN1cHBvcnRlZCBTRFQgYXJndW1lbnQ6ICVzXG4iLCBvbGRfb3ApOwo+PiAr ICAgICAgICAgICAgICAgcmV0dXJuIFNEVF9BUkdfU0tJUDsKPj4gKyAgICAgICB9Cj4+ICsKPj4g KyAgICAgICByZXR1cm4gU0RUX0FSR19WQUxJRDsKPj4gK30KPj4gKwo+PiAgdWludDY0X3QgX19w ZXJmX3JlZ19tYXNrX2FybTY0KGJvb2wgaW50cikKPj4gIHsKPj4gICAgICAgICBzdHJ1Y3QgcGVy Zl9ldmVudF9hdHRyIGF0dHIgPSB7Cj4+IGRpZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvcGVy Zi1yZWdzLWFyY2gvcGVyZl9yZWdzX3Bvd2VycGMuYyBiL3Rvb2xzL3BlcmYvdXRpbC9wZXJmLXJl Z3MtYXJjaC9wZXJmX3JlZ3NfcG93ZXJwYy5jCj4+IGluZGV4IDUyMTFjYzBjNGU4MS4uZWIyMWEy MTQ5OTBmIDEwMDY0NAo+PiAtLS0gYS90b29scy9wZXJmL3V0aWwvcGVyZi1yZWdzLWFyY2gvcGVy Zl9yZWdzX3Bvd2VycGMuYwo+PiArKysgYi90b29scy9wZXJmL3V0aWwvcGVyZi1yZWdzLWFyY2gv cGVyZl9yZWdzX3Bvd2VycGMuYwo+PiBAQCAtMTksNiArMTksMTEyIEBACj4+ICAjZGVmaW5lIFBW Ul9QT1dFUjEwICAgICAgICAgICAgMHgwMDgwCj4+ICAjZGVmaW5lIFBWUl9QT1dFUjExICAgICAg ICAgICAgMHgwMDgyCj4+Cj4+ICsvKiBSRUcgb3IgJXJSRUcgKi8KPj4gKyNkZWZpbmUgU0RUX09Q X1JFR0VYMSAgIl4oJXIpPyhbMS0yXT9bMC05XXwzWzAtMV0pJCIKPj4gKwo+PiArLyogLU5VTShS RUcpIG9yIE5VTShSRUcpIG9yIC1OVU0oJXJSRUcpIG9yIE5VTSglclJFRykgKi8KPj4gKyNkZWZp bmUgU0RUX09QX1JFR0VYMiAgIl4oXFwtKT8oWzAtOV0rKVxcKCglcik/KFsxLTJdP1swLTldfDNb MC0xXSlcXCkkIgo+PiArCj4+ICtzdGF0aWMgcmVnZXhfdCBzZHRfb3BfcmVnZXgxLCBzZHRfb3Bf cmVnZXgyOwo+PiArCj4+ICtzdGF0aWMgaW50IHNkdF9pbml0X29wX3JlZ2V4KHZvaWQpCj4+ICt7 Cj4+ICsgICAgICAgc3RhdGljIGludCBpbml0aWFsaXplZDsKPj4gKyAgICAgICBpbnQgcmV0ID0g MDsKPj4gKwo+PiArICAgICAgIGlmIChpbml0aWFsaXplZCkKPj4gKyAgICAgICAgICAgICAgIHJl dHVybiAwOwo+PiArCj4+ICsgICAgICAgcmV0ID0gcmVnY29tcCgmc2R0X29wX3JlZ2V4MSwgU0RU X09QX1JFR0VYMSwgUkVHX0VYVEVOREVEKTsKPj4gKyAgICAgICBpZiAocmV0KQo+PiArICAgICAg ICAgICAgICAgZ290byBlcnJvcjsKPj4gKwo+PiArICAgICAgIHJldCA9IHJlZ2NvbXAoJnNkdF9v cF9yZWdleDIsIFNEVF9PUF9SRUdFWDIsIFJFR19FWFRFTkRFRCk7Cj4+ICsgICAgICAgaWYgKHJl dCkKPj4gKyAgICAgICAgICAgICAgIGdvdG8gZnJlZV9yZWdleDE7Cj4+ICsKPj4gKyAgICAgICBp bml0aWFsaXplZCA9IDE7Cj4+ICsgICAgICAgcmV0dXJuIDA7Cj4+ICsKPj4gK2ZyZWVfcmVnZXgx Ogo+PiArICAgICAgIHJlZ2ZyZWUoJnNkdF9vcF9yZWdleDEpOwo+PiArZXJyb3I6Cj4+ICsgICAg ICAgcHJfZGVidWc0KCJSZWdleCBjb21waWxhdGlvbiBlcnJvci5cbiIpOwo+PiArICAgICAgIHJl dHVybiByZXQ7Cj4+ICt9Cj4+ICsKPj4gKy8qCj4+ICsgKiBQYXJzZSBPUCBhbmQgY29udmVydCBp dCBpbnRvIHVwcm9iZSBmb3JtYXQsIHdoaWNoIGlzLCArLy1OVU0oJWdwclJFRykuCj4+ICsgKiBQ b3NzaWJsZSB2YXJpYW50cyBvZiBPUCBhcmU6Cj4+ICsgKiAgICAgRm9ybWF0ICAgICAgICAgIEV4 YW1wbGUKPj4gKyAqICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+ICsgKiAgICAgTlVN KFJFRykgICAgICAgIDQ4KDE4KQo+PiArICogICAgIC1OVU0oUkVHKSAgICAgICAtNDgoMTgpCj4+ ICsgKiAgICAgTlVNKCVyUkVHKSAgICAgIDQ4KCVyMTgpCj4+ICsgKiAgICAgLU5VTSglclJFRykg ICAgIC00OCglcjE4KQo+PiArICogICAgIFJFRyAgICAgICAgICAgICAxOAo+PiArICogICAgICVy UkVHICAgICAgICAgICAlcjE4Cj4+ICsgKiAgICAgaU5VTSAgICAgICAgICAgIGkwCj4+ICsgKiAg ICAgaS1OVU0gICAgICAgICAgIGktMQo+PiArICoKPj4gKyAqIFNEVCBtYXJrZXIgYXJndW1lbnRz IG9uIFBvd2VycGMgdXNlcyAlclJFRyBmb3JtIHdpdGggLW1yZWduYW1lcyBmbGFnCj4+ICsgKiBh bmQgUkVHIGZvcm0gd2l0aCAtbW5vLXJlZ25hbWVzLiBIZXJlIFJFRyBpcyBnZW5lcmFsIHB1cnBv c2UgcmVnaXN0ZXIsCj4+ICsgKiB3aGljaCBpcyBpbiAwIHRvIDMxIHJhbmdlLgo+IFRoaXMgcG93 ZXJwYyBjb21tZW50IGxvb2tzIGEgbG90IGxpa2UgLi4uCj4KPj4gKyAqLwo+PiAraW50IF9fcGVy Zl9zZHRfYXJnX3BhcnNlX29wX3Bvd2VycGMoY2hhciAqb2xkX29wLCBjaGFyICoqbmV3X29wKQo+ PiArewo+PiArICAgICAgIGludCByZXQsIG5ld19sZW47Cj4+ICsgICAgICAgcmVnbWF0Y2hfdCBy bVs1XTsKPj4gKyAgICAgICBjaGFyIHByZWZpeDsKPj4gKwo+PiArICAgICAgIC8qIENvbnN0YW50 IGFyZ3VtZW50LiBVcHJvYmUgZG9lcyBub3Qgc3VwcG9ydCBpdCAqLwo+PiArICAgICAgIGlmIChv bGRfb3BbMF0gPT0gJ2knKSB7Cj4+ICsgICAgICAgICAgICAgICBwcl9kZWJ1ZzQoIlNraXBwaW5n IHVuc3VwcG9ydGVkIFNEVCBhcmd1bWVudDogJXNcbiIsIG9sZF9vcCk7Cj4+ICsgICAgICAgICAg ICAgICByZXR1cm4gU0RUX0FSR19TS0lQOwo+PiArICAgICAgIH0KPj4gKwo+PiArICAgICAgIHJl dCA9IHNkdF9pbml0X29wX3JlZ2V4KCk7Cj4+ICsgICAgICAgaWYgKHJldCA8IDApCj4+ICsgICAg ICAgICAgICAgICByZXR1cm4gcmV0Owo+PiArCj4+ICsgICAgICAgaWYgKCFyZWdleGVjKCZzZHRf b3BfcmVnZXgxLCBvbGRfb3AsIDMsIHJtLCAwKSkgewo+PiArICAgICAgICAgICAgICAgLyogUkVH IG9yICVyUkVHIC0tPiAlZ3ByUkVHICovCj4+ICsKPj4gKyAgICAgICAgICAgICAgIG5ld19sZW4g PSA1OyAgICAvKiAlIGcgcCByIE5VTEwgKi8KPj4gKyAgICAgICAgICAgICAgIG5ld19sZW4gKz0g KGludCkocm1bMl0ucm1fZW8gLSBybVsyXS5ybV9zbyk7Cj4+ICsKPj4gKyAgICAgICAgICAgICAg ICpuZXdfb3AgPSB6YWxsb2MobmV3X2xlbik7Cj4+ICsgICAgICAgICAgICAgICBpZiAoISpuZXdf b3ApCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+PiArCj4+ICsg ICAgICAgICAgICAgICBzY25wcmludGYoKm5ld19vcCwgbmV3X2xlbiwgIiUlZ3ByJS4qcyIsCj4+ ICsgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKHJtWzJdLnJtX2VvIC0gcm1bMl0ucm1fc28p LCBvbGRfb3AgKyBybVsyXS5ybV9zbyk7Cj4+ICsgICAgICAgfSBlbHNlIGlmICghcmVnZXhlYygm c2R0X29wX3JlZ2V4Miwgb2xkX29wLCA1LCBybSwgMCkpIHsKPj4gKyAgICAgICAgICAgICAgIC8q Cj4+ICsgICAgICAgICAgICAgICAgKiAtTlVNKFJFRykgb3IgTlVNKFJFRykgb3IgLU5VTSglclJF Rykgb3IgTlVNKCVyUkVHKSAtLT4KPj4gKyAgICAgICAgICAgICAgICAqICAgICAgKy8tTlVNKCVn cHJSRUcpCj4+ICsgICAgICAgICAgICAgICAgKi8KPj4gKyAgICAgICAgICAgICAgIHByZWZpeCA9 IChybVsxXS5ybV9zbyA9PSAtMSkgPyAnKycgOiAnLSc7Cj4+ICsKPj4gKyAgICAgICAgICAgICAg IG5ld19sZW4gPSA4OyAgICAvKiArLy0gKCAlIGcgcCByICkgTlVMTCAqLwo+PiArICAgICAgICAg ICAgICAgbmV3X2xlbiArPSAoaW50KShybVsyXS5ybV9lbyAtIHJtWzJdLnJtX3NvKTsKPj4gKyAg ICAgICAgICAgICAgIG5ld19sZW4gKz0gKGludCkocm1bNF0ucm1fZW8gLSBybVs0XS5ybV9zbyk7 Cj4+ICsKPj4gKyAgICAgICAgICAgICAgICpuZXdfb3AgPSB6YWxsb2MobmV3X2xlbik7Cj4+ICsg ICAgICAgICAgICAgICBpZiAoISpuZXdfb3ApCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHJl dHVybiAtRU5PTUVNOwo+PiArCj4+ICsgICAgICAgICAgICAgICBzY25wcmludGYoKm5ld19vcCwg bmV3X2xlbiwgIiVjJS4qcyglJWdwciUuKnMpIiwgcHJlZml4LAo+PiArICAgICAgICAgICAgICAg ICAgICAgICAoaW50KShybVsyXS5ybV9lbyAtIHJtWzJdLnJtX3NvKSwgb2xkX29wICsgcm1bMl0u cm1fc28sCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKHJtWzRdLnJtX2VvIC0gcm1b NF0ucm1fc28pLCBvbGRfb3AgKyBybVs0XS5ybV9zbyk7Cj4+ICsgICAgICAgfSBlbHNlIHsKPj4g KyAgICAgICAgICAgICAgIHByX2RlYnVnNCgiU2tpcHBpbmcgdW5zdXBwb3J0ZWQgU0RUIGFyZ3Vt ZW50OiAlc1xuIiwgb2xkX29wKTsKPj4gKyAgICAgICAgICAgICAgIHJldHVybiBTRFRfQVJHX1NL SVA7Cj4+ICsgICAgICAgfQo+PiArCj4+ICsgICAgICAgcmV0dXJuIFNEVF9BUkdfVkFMSUQ7Cj4+ ICt9Cj4+ICsKPj4gICNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pICYmIGRlZmluZWQoX19wb3dl cnBjX18pCj4+ICB1aW50NjRfdCBfX3BlcmZfcmVnX21hc2tfcG93ZXJwYyhib29sIGludHIpCj4+ ICB7Cj4+IGRpZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvcGVyZi1yZWdzLWFyY2gvcGVyZl9y ZWdzX3g4Ni5jIGIvdG9vbHMvcGVyZi91dGlsL3BlcmYtcmVncy1hcmNoL3BlcmZfcmVnc194ODYu Ywo+PiBpbmRleCBkMzE5MTA2ZGM3YjIuLjQ3ZGU2NGQ0NTE2OCAxMDA2NDQKPj4gLS0tIGEvdG9v bHMvcGVyZi91dGlsL3BlcmYtcmVncy1hcmNoL3BlcmZfcmVnc194ODYuYwo+PiArKysgYi90b29s cy9wZXJmL3V0aWwvcGVyZi1yZWdzLWFyY2gvcGVyZl9yZWdzX3g4Ni5jCj4+IEBAIC0xNCw2ICsx NCwyMjcgQEAKPj4gICNpbmNsdWRlICIuLi8uLi9wZXJmLXN5cy5oIgo+PiAgI2luY2x1ZGUgIi4u Ly4uL2FyY2gveDg2L2luY2x1ZGUvcGVyZl9yZWdzLmgiCj4+Cj4+ICtzdHJ1Y3Qgc2R0X25hbWVf cmVnIHsKPj4gKyAgICAgICBjb25zdCBjaGFyICpzZHRfbmFtZTsKPj4gKyAgICAgICBjb25zdCBj aGFyICp1cHJvYmVfbmFtZTsKPj4gK307Cj4+ICsjZGVmaW5lIFNEVF9OQU1FX1JFRyhuLCBtKSB7 LnNkdF9uYW1lID0gIiUiICNuLCAudXByb2JlX25hbWUgPSAiJSIgI219Cj4+ICsjZGVmaW5lIFNE VF9OQU1FX1JFR19FTkQgey5zZHRfbmFtZSA9IE5VTEwsIC51cHJvYmVfbmFtZSA9IE5VTEx9Cj4+ ICsKPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc2R0X25hbWVfcmVnIHNkdF9yZWdfdGJsW10gPSB7 Cj4+ICsgICAgICAgU0RUX05BTUVfUkVHKGVheCwgYXgpLAo+PiArICAgICAgIFNEVF9OQU1FX1JF RyhyYXgsIGF4KSwKPj4gKyAgICAgICBTRFRfTkFNRV9SRUcoYWwsICBheCksCj4+ICsgICAgICAg U0RUX05BTUVfUkVHKGFoLCAgYXgpLAo+PiArICAgICAgIFNEVF9OQU1FX1JFRyhlYngsIGJ4KSwK Pj4gKyAgICAgICBTRFRfTkFNRV9SRUcocmJ4LCBieCksCj4+ICsgICAgICAgU0RUX05BTUVfUkVH KGJsLCAgYngpLAo+PiArICAgICAgIFNEVF9OQU1FX1JFRyhiaCwgIGJ4KSwKPj4gKyAgICAgICBT RFRfTkFNRV9SRUcoZWN4LCBjeCksCj4+ICsgICAgICAgU0RUX05BTUVfUkVHKHJjeCwgY3gpLAo+ PiArICAgICAgIFNEVF9OQU1FX1JFRyhjbCwgIGN4KSwKPj4gKyAgICAgICBTRFRfTkFNRV9SRUco Y2gsICBjeCksCj4+ICsgICAgICAgU0RUX05BTUVfUkVHKGVkeCwgZHgpLAo+PiArICAgICAgIFNE VF9OQU1FX1JFRyhyZHgsIGR4KSwKPj4gKyAgICAgICBTRFRfTkFNRV9SRUcoZGwsICBkeCksCj4+ ICsgICAgICAgU0RUX05BTUVfUkVHKGRoLCAgZHgpLAo+PiArICAgICAgIFNEVF9OQU1FX1JFRyhl c2ksIHNpKSwKPj4gKyAgICAgICBTRFRfTkFNRV9SRUcocnNpLCBzaSksCj4+ICsgICAgICAgU0RU X05BTUVfUkVHKHNpbCwgc2kpLAo+PiArICAgICAgIFNEVF9OQU1FX1JFRyhlZGksIGRpKSwKPj4g KyAgICAgICBTRFRfTkFNRV9SRUcocmRpLCBkaSksCj4+ICsgICAgICAgU0RUX05BTUVfUkVHKGRp bCwgZGkpLAo+PiArICAgICAgIFNEVF9OQU1FX1JFRyhlYnAsIGJwKSwKPj4gKyAgICAgICBTRFRf TkFNRV9SRUcocmJwLCBicCksCj4+ICsgICAgICAgU0RUX05BTUVfUkVHKGJwbCwgYnApLAo+PiAr ICAgICAgIFNEVF9OQU1FX1JFRyhyc3AsIHNwKSwKPj4gKyAgICAgICBTRFRfTkFNRV9SRUcoZXNw LCBzcCksCj4+ICsgICAgICAgU0RUX05BTUVfUkVHKHNwbCwgc3ApLAo+PiArCj4+ICsgICAgICAg Lyogck5OIHJlZ2lzdGVycyAqLwo+PiArICAgICAgIFNEVF9OQU1FX1JFRyhyOGIsICByOCksCj4+ ICsgICAgICAgU0RUX05BTUVfUkVHKHI4dywgIHI4KSwKPj4gKyAgICAgICBTRFRfTkFNRV9SRUco cjhkLCAgcjgpLAo+PiArICAgICAgIFNEVF9OQU1FX1JFRyhyOWIsICByOSksCj4+ICsgICAgICAg U0RUX05BTUVfUkVHKHI5dywgIHI5KSwKPj4gKyAgICAgICBTRFRfTkFNRV9SRUcocjlkLCAgcjkp LAo+PiArICAgICAgIFNEVF9OQU1FX1JFRyhyMTBiLCByMTApLAo+PiArICAgICAgIFNEVF9OQU1F X1JFRyhyMTB3LCByMTApLAo+PiArICAgICAgIFNEVF9OQU1FX1JFRyhyMTBkLCByMTApLAo+PiAr ICAgICAgIFNEVF9OQU1FX1JFRyhyMTFiLCByMTEpLAo+PiArICAgICAgIFNEVF9OQU1FX1JFRyhy MTF3LCByMTEpLAo+PiArICAgICAgIFNEVF9OQU1FX1JFRyhyMTFkLCByMTEpLAo+PiArICAgICAg IFNEVF9OQU1FX1JFRyhyMTJiLCByMTIpLAo+PiArICAgICAgIFNEVF9OQU1FX1JFRyhyMTJ3LCBy MTIpLAo+PiArICAgICAgIFNEVF9OQU1FX1JFRyhyMTJkLCByMTIpLAo+PiArICAgICAgIFNEVF9O QU1FX1JFRyhyMTNiLCByMTMpLAo+PiArICAgICAgIFNEVF9OQU1FX1JFRyhyMTN3LCByMTMpLAo+ PiArICAgICAgIFNEVF9OQU1FX1JFRyhyMTNkLCByMTMpLAo+PiArICAgICAgIFNEVF9OQU1FX1JF RyhyMTRiLCByMTQpLAo+PiArICAgICAgIFNEVF9OQU1FX1JFRyhyMTR3LCByMTQpLAo+PiArICAg ICAgIFNEVF9OQU1FX1JFRyhyMTRkLCByMTQpLAo+PiArICAgICAgIFNEVF9OQU1FX1JFRyhyMTVi LCByMTUpLAo+PiArICAgICAgIFNEVF9OQU1FX1JFRyhyMTV3LCByMTUpLAo+PiArICAgICAgIFNE VF9OQU1FX1JFRyhyMTVkLCByMTUpLAo+PiArICAgICAgIFNEVF9OQU1FX1JFR19FTkQsCj4+ICt9 Owo+PiArCj4+ICsvKgo+PiArICogUGVyZiBvbmx5IHN1cHBvcnRzIE9QIHdoaWNoIGlzIGluICAr Ly1OVU0oUkVHKSAgZm9ybS4KPj4gKyAqIEhlcmUgcGx1cy1taW51cyBzaWduLCBOVU0gYW5kIHBh cmVudGhlc2lzIGFyZSBvcHRpb25hbCwKPj4gKyAqIG9ubHkgUkVHIGlzIG1hbmRhdG9yeS4KPj4g KyAqCj4+ICsgKiBTRFQgZXZlbnRzIGFsc28gc3VwcG9ydHMgaW5kaXJlY3QgYWRkcmVzc2luZyBt b2RlIHdpdGggYQo+PiArICogc3ltYm9sIGFzIG9mZnNldCwgc2NhbGVkIG1vZGUgYW5kIGNvbnN0 YW50cyBpbiBPUC4gQnV0Cj4+ICsgKiBwZXJmIGRvZXMgbm90IHN1cHBvcnQgdGhlbSB5ZXQuIEJl bG93IGFyZSBmZXcgZXhhbXBsZXMuCj4+ICsgKgo+PiArICogT1Agd2l0aCBzY2FsZWQgbW9kZToK Pj4gKyAqICAgICAoJXJheCwlcnNpLDgpCj4+ICsgKiAgICAgMTAoJXJhcywlcnNpLDgpCj4+ICsg Kgo+PiArICogT1Agd2l0aCBpbmRpcmVjdCBhZGRyZXNzaW5nIG1vZGU6Cj4+ICsgKiAgICAgY2hl Y2tfYWN0aW9uKCVyaXApCj4+ICsgKiAgICAgbXBfKzUyKCVyaXApCj4+ICsgKiAgICAgNDQrbXBf KCVyaXApCj4+ICsgKgo+PiArICogT1Agd2l0aCBjb25zdGFudCB2YWx1ZXM6Cj4+ICsgKiAgICAg JDAKPj4gKyAqICAgICAkMTIzCj4+ICsgKiAgICAgJC0xCj4+ICsgKi8KPj4gKyNkZWZpbmUgU0RU X09QX1JFR0VYICAiXihbK1xcLV0/KShbMC05XSopKFxcKD8pKCVbYS16XVthLXowLTldKykoXFwp PykkIgo+PiArCj4+ICtzdGF0aWMgcmVnZXhfdCBzZHRfb3BfcmVnZXg7Cj4+ICsKPj4gK3N0YXRp YyBpbnQgc2R0X2luaXRfb3BfcmVnZXgodm9pZCkKPj4gK3sKPj4gKyAgICAgICBzdGF0aWMgaW50 IGluaXRpYWxpemVkOwo+PiArICAgICAgIGludCByZXQgPSAwOwo+PiArCj4+ICsgICAgICAgaWYg KGluaXRpYWxpemVkKQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4+ICsKPj4gKyAgICAg ICByZXQgPSByZWdjb21wKCZzZHRfb3BfcmVnZXgsIFNEVF9PUF9SRUdFWCwgUkVHX0VYVEVOREVE KTsKPj4gKyAgICAgICBpZiAocmV0IDwgMCkgewo+PiArICAgICAgICAgICAgICAgcHJfZGVidWc0 KCJSZWdleCBjb21waWxhdGlvbiBlcnJvci5cbiIpOwo+PiArICAgICAgICAgICAgICAgcmV0dXJu IHJldDsKPj4gKyAgICAgICB9Cj4+ICsKPj4gKyAgICAgICBpbml0aWFsaXplZCA9IDE7Cj4+ICsg ICAgICAgcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gKy8qCj4+ICsgKiBNYXggeDg2IHJlZ2lzdGVy IG5hbWUgbGVuZ3RoIGlzIDUoZXg6ICVyMTVkKS4gU28sIDZ0aCBjaGFyCj4+ICsgKiBzaG91bGQg YWx3YXlzIGNvbnRhaW4gTlVMTC4gVGhpcyBoZWxwcyB0byBmaW5kIHJlZ2lzdGVyIG5hbWUKPj4g KyAqIGxlbmd0aCB1c2luZyBzdHJsZW4sIGluc3RlYWQgb2YgbWFpbnRhaW5pbmcgb25lIG1vcmUg dmFyaWFibGUuCj4+ICsgKi8KPj4gKyNkZWZpbmUgU0RUX1JFR19OQU1FX1NJWkUgIDYKPj4gKwo+ PiArLyoKPj4gKyAqIFRoZSB1cHJvYmUgcGFyc2VyIGRvZXMgbm90IHN1cHBvcnQgYWxsIGdhcyBy ZWdpc3RlciBuYW1lczsKPj4gKyAqIHNvLCB3ZSBoYXZlIHRvIHJlcGxhY2UgdGhlbSAoZXguIGZv ciB4ODZfNjQ6ICVyYXggLT4gJWF4KS4KPj4gKyAqIE5vdGU6IElmIHJlZ2lzdGVyIGRvZXMgbm90 IHJlcXVpcmUgcmVuYW1pbmcsIGp1c3QgY29weQo+PiArICogcGFzdGUgYXMgaXQgaXMsIGJ1dCBk b24ndCBsZWF2ZSBpdCBlbXB0eS4KPj4gKyAqLwo+PiArc3RhdGljIHZvaWQgc2R0X3JlbmFtZV9y ZWdpc3RlcihjaGFyICpzZHRfcmVnLCBpbnQgc2R0X2xlbiwgY2hhciAqdXByb2JlX3JlZykKPj4g K3sKPj4gKyAgICAgICBpbnQgaSA9IDA7Cj4+ICsKPj4gKyAgICAgICBmb3IgKGkgPSAwOyBzZHRf cmVnX3RibFtpXS5zZHRfbmFtZSAhPSBOVUxMOyBpKyspIHsKPj4gKyAgICAgICAgICAgICAgIGlm ICghc3RybmNtcChzZHRfcmVnX3RibFtpXS5zZHRfbmFtZSwgc2R0X3JlZywgc2R0X2xlbikpIHsK Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgc3RyY3B5KHVwcm9iZV9yZWcsIHNkdF9yZWdfdGJs W2ldLnVwcm9iZV9uYW1lKTsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwo+PiAr ICAgICAgICAgICAgICAgfQo+PiArICAgICAgIH0KPj4gKwo+PiArICAgICAgIHN0cm5jcHkodXBy b2JlX3JlZywgc2R0X3JlZywgc2R0X2xlbik7Cj4+ICt9Cj4+ICsKPj4gK2ludCBfX3BlcmZfc2R0 X2FyZ19wYXJzZV9vcF94ODYoY2hhciAqb2xkX29wLCBjaGFyICoqbmV3X29wKQo+PiArewo+PiAr ICAgICAgIGNoYXIgbmV3X3JlZ1tTRFRfUkVHX05BTUVfU0laRV0gPSB7MH07Cj4+ICsgICAgICAg aW50IG5ld19sZW4gPSAwLCByZXQ7Cj4+ICsgICAgICAgLyoKPj4gKyAgICAgICAgKiBybVswXTog ICsvLU5VTShSRUcpCj4+ICsgICAgICAgICogcm1bMV06ICArLy0KPj4gKyAgICAgICAgKiBybVsy XTogIE5VTQo+PiArICAgICAgICAqIHJtWzNdOiAgKAo+PiArICAgICAgICAqIHJtWzRdOiAgUkVH Cj4+ICsgICAgICAgICogcm1bNV06ICApCj4+ICsgICAgICAgICovCj4+ICsgICAgICAgcmVnbWF0 Y2hfdCBybVs2XTsKPj4gKyAgICAgICAvKgo+PiArICAgICAgICAqIE1heCBwcmVmaXggbGVuZ3Ro IGlzIDIgYXMgaXQgbWF5IGNvbnRhaW5zIHNpZ24oKy8tKQo+PiArICAgICAgICAqIGFuZCBkaXNw bGFjZW1lbnQgMCAoQm90aCBzaWduIGFuZCBkaXNwbGFjZW1lbnQgMCBhcmUKPj4gKyAgICAgICAg KiBvcHRpb25hbCBzbyBpdCBtYXkgYmUgZW1wdHkpLiBVc2Ugb25lIG1vcmUgY2hhcmFjdGVyCj4+ ICsgICAgICAgICogdG8gaG9sZCBsYXN0IE5VTEwgc28gdGhhdCBzdHJsZW4gY2FuIGJlIHVzZWQg dG8gZmluZAo+PiArICAgICAgICAqIHByZWZpeCBsZW5ndGgsIGluc3RlYWQgb2YgbWFpbnRhaW5p bmcgb25lIG1vcmUgdmFyaWFibGUuCj4+ICsgICAgICAgICovCj4+ICsgICAgICAgY2hhciBwcmVm aXhbM10gPSB7MH07Cj4+ICsKPj4gKyAgICAgICByZXQgPSBzZHRfaW5pdF9vcF9yZWdleCgpOwo+ PiArICAgICAgIGlmIChyZXQgPCAwKQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPj4g Kwo+PiArICAgICAgIC8qCj4+ICsgICAgICAgICogSWYgdW5zdXBwb3J0ZWQgT1IgZG9lcyBub3Qg bWF0Y2ggd2l0aCByZWdleCBPUgo+PiArICAgICAgICAqIHJlZ2lzdGVyIG5hbWUgdG9vIGxvbmcs IHNraXAgaXQuCj4+ICsgICAgICAgICovCj4+ICsgICAgICAgaWYgKHN0cmNocihvbGRfb3AsICcs JykgfHwgc3RyY2hyKG9sZF9vcCwgJyQnKSB8fAo+PiArICAgICAgICAgICByZWdleGVjKCZzZHRf b3BfcmVnZXgsIG9sZF9vcCwgNiwgcm0sIDApICAgfHwKPj4gKyAgICAgICAgICAgcm1bNF0ucm1f ZW8gLSBybVs0XS5ybV9zbyA+IFNEVF9SRUdfTkFNRV9TSVpFKSB7Cj4+ICsgICAgICAgICAgICAg ICBwcl9kZWJ1ZzQoIlNraXBwaW5nIHVuc3VwcG9ydGVkIFNEVCBhcmd1bWVudDogJXNcbiIsIG9s ZF9vcCk7Cj4+ICsgICAgICAgICAgICAgICByZXR1cm4gU0RUX0FSR19TS0lQOwo+PiArICAgICAg IH0KPj4gKwo+PiArICAgICAgIC8qCj4+ICsgICAgICAgICogUHJlcGFyZSBwcmVmaXguCj4+ICsg ICAgICAgICogSWYgU0RUIE9QIGhhcyBwYXJlbnRoZXNpcyBidXQgZG9lcyBub3QgcHJvdmlkZQo+ PiArICAgICAgICAqIGRpc3BsYWNlbWVudCwgYWRkIDAgZm9yIGRpc3BsYWNlbWVudC4KPj4gKyAg ICAgICAgKiAgICAgU0RUICAgICAgICAgVXByb2JlICAgICBQcmVmaXgKPj4gKyAgICAgICAgKiAg ICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4gKyAgICAgICAgKiAgICAgKzI0KCVy ZGkpICAgKzI0KCVkaSkgICArCj4+ICsgICAgICAgICogICAgIDI0KCVyZGkpICAgICsyNCglZGkp ICAgKwo+PiArICAgICAgICAqICAgICAlcmRpICAgICAgICAlZGkKPj4gKyAgICAgICAgKiAgICAg KCVyZGkpICAgICAgKzAoJWRpKSAgICArMAo+PiArICAgICAgICAqICAgICAtODAoJXJieCkgICAt ODAoJWJ4KSAgIC0KPj4gKyAgICAgICAgKi8KPiAuLi4gdGhpcyB4ODYgY29tbWVudC4gSSB3b25k ZXIgaWYgd2UgaGFkIHN0YW5kYXJkIGZ1bmN0aW9ucyBsaWtlCj4gc2R0X3JlZ19uYW1lIG9yIHVw cm9iZV9yZWdfbmFtZSwgc2ltaWxhciB0byAgcGVyZl9yZWdfbmFtZSwgYW5kIG1heWJlCj4gdGhh dCBwZXJmX3JlZ19uYW1lIHdhcyB0aGUgZGVmYXVsdCB3aGVuIGFuIEVMRiBtYWNoaW5lIGlzbid0 Cj4gaW1wbGVtZW50ZWQsIHdoZXRoZXIgd2UgY291bGQgbWFrZSB0aGlzIGNvZGUgc2hhcmVkIGFu ZCBzdXBwb3J0IG1vcmUKPiB0aGFuIGp1c3QgYXJtNjQsIHBvd2VycGMgYW5kIHg4Ni4KPgo+IEFn YWluIHRoaXMgaXMgbGlrZWx5IGZvbGxvdyB1cCBjbGVhbiB1cC4KClllcy4KCgo+Cj4+ICsgICAg ICAgaWYgKHJtWzNdLnJtX3NvICE9IHJtWzNdLnJtX2VvKSB7Cj4+ICsgICAgICAgICAgICAgICBp ZiAocm1bMV0ucm1fc28gIT0gcm1bMV0ucm1fZW8pCj4+ICsgICAgICAgICAgICAgICAgICAgICAg IHByZWZpeFswXSA9ICoob2xkX29wICsgcm1bMV0ucm1fc28pOwo+PiArICAgICAgICAgICAgICAg ZWxzZSBpZiAocm1bMl0ucm1fc28gIT0gcm1bMl0ucm1fZW8pCj4+ICsgICAgICAgICAgICAgICAg ICAgICAgIHByZWZpeFswXSA9ICcrJzsKPj4gKyAgICAgICAgICAgICAgIGVsc2UKPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgc2NucHJpbnRmKHByZWZpeCwgc2l6ZW9mKHByZWZpeCksICIrMCIp Owo+PiArICAgICAgIH0KPj4gKwo+PiArICAgICAgIC8qIFJlbmFtZSByZWdpc3RlciAqLwo+PiAr ICAgICAgIHNkdF9yZW5hbWVfcmVnaXN0ZXIob2xkX29wICsgcm1bNF0ucm1fc28sIHJtWzRdLnJt X2VvIC0gcm1bNF0ucm1fc28sCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfcmVn KTsKPj4gKwo+PiArICAgICAgIC8qIFByZXBhcmUgZmluYWwgT1Agd2hpY2ggc2hvdWxkIGJlIHZh bGlkIGZvciB1cHJvYmVfZXZlbnRzICovCj4+ICsgICAgICAgbmV3X2xlbiA9IHN0cmxlbihwcmVm aXgpICAgICAgICAgICAgICArCj4+ICsgICAgICAgICAgICAgICAgIChybVsyXS5ybV9lbyAtIHJt WzJdLnJtX3NvKSArCj4+ICsgICAgICAgICAgICAgICAgIChybVszXS5ybV9lbyAtIHJtWzNdLnJt X3NvKSArCj4+ICsgICAgICAgICAgICAgICAgIHN0cmxlbihuZXdfcmVnKSAgICAgICAgICAgICAr Cj4+ICsgICAgICAgICAgICAgICAgIChybVs1XS5ybV9lbyAtIHJtWzVdLnJtX3NvKSArCj4+ICsg ICAgICAgICAgICAgICAgIDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog TlVMTCAqLwo+PiArCj4+ICsgICAgICAgKm5ld19vcCA9IHphbGxvYyhuZXdfbGVuKTsKPj4gKyAg ICAgICBpZiAoISpuZXdfb3ApCj4+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKPj4g Kwo+PiArICAgICAgIHNjbnByaW50ZigqbmV3X29wLCBuZXdfbGVuLCAiJS4qcyUuKnMlLipzJS4q cyUuKnMiLAo+PiArICAgICAgICAgICAgICAgICBzdHJsZW4ocHJlZml4KSwgcHJlZml4LAo+PiAr ICAgICAgICAgICAgICAgICAoaW50KShybVsyXS5ybV9lbyAtIHJtWzJdLnJtX3NvKSwgb2xkX29w ICsgcm1bMl0ucm1fc28sCj4+ICsgICAgICAgICAgICAgICAgIChpbnQpKHJtWzNdLnJtX2VvIC0g cm1bM10ucm1fc28pLCBvbGRfb3AgKyBybVszXS5ybV9zbywKPj4gKyAgICAgICAgICAgICAgICAg c3RybGVuKG5ld19yZWcpLCBuZXdfcmVnLAo+PiArICAgICAgICAgICAgICAgICAoaW50KShybVs1 XS5ybV9lbyAtIHJtWzVdLnJtX3NvKSwgb2xkX29wICsgcm1bNV0ucm1fc28pOwo+PiArCj4+ICsg ICAgICAgcmV0dXJuIFNEVF9BUkdfVkFMSUQ7Cj4+ICt9Cj4+ICsKPj4gIHVpbnQ2NF90IF9fcGVy Zl9yZWdfbWFza194ODYoYm9vbCBpbnRyKQo+PiAgewo+PiAgICAgICAgIHN0cnVjdCBwZXJmX2V2 ZW50X2F0dHIgYXR0ciA9IHsKPj4gZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC9wZXJmX3Jl Z3MuYyBiL3Rvb2xzL3BlcmYvdXRpbC9wZXJmX3JlZ3MuYwo+PiBpbmRleCA5MDA5MjljZmY0YjUu LjQwODJlOGRhOTYzMyAxMDA2NDQKPj4gLS0tIGEvdG9vbHMvcGVyZi91dGlsL3BlcmZfcmVncy5j Cj4+ICsrKyBiL3Rvb2xzL3BlcmYvdXRpbC9wZXJmX3JlZ3MuYwo+PiBAQCAtNywxMCArNywyNyBA QAo+PiAgI2luY2x1ZGUgImRlYnVnLmgiCj4+ICAjaW5jbHVkZSAiZHdhcmYtcmVncy5oIgo+Pgo+ PiAtaW50IF9fd2VhayBhcmNoX3NkdF9hcmdfcGFyc2Vfb3AoY2hhciAqb2xkX29wIF9fbWF5YmVf dW51c2VkLAo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqbmV3X29w IF9fbWF5YmVfdW51c2VkKQo+PiAraW50IHBlcmZfc2R0X2FyZ19wYXJzZV9vcCh1aW50MTZfdCBl X21hY2hpbmUsIGNoYXIgKm9sZF9vcCwgY2hhciAqKm5ld19vcCkKPj4gIHsKPj4gLSAgICAgICBy ZXR1cm4gU0RUX0FSR19TS0lQOwo+PiArICAgICAgIGludCByZXQgPSBTRFRfQVJHX1NLSVA7Cj4+ ICsKPj4gKyAgICAgICBzd2l0Y2ggKGVfbWFjaGluZSkgewo+PiArICAgICAgIGNhc2UgRU1fQUFS Q0g2NDoKPj4gKyAgICAgICAgICAgICAgIHJldCA9IF9fcGVyZl9zZHRfYXJnX3BhcnNlX29wX2Fy bTY0KG9sZF9vcCwgbmV3X29wKTsKPj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+PiArICAgICAg IGNhc2UgRU1fUFBDOgo+PiArICAgICAgIGNhc2UgRU1fUFBDNjQ6Cj4+ICsgICAgICAgICAgICAg ICByZXQgPSBfX3BlcmZfc2R0X2FyZ19wYXJzZV9vcF9wb3dlcnBjKG9sZF9vcCwgbmV3X29wKTsK Pj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+PiArICAgICAgIGNhc2UgRU1fMzg2Ogo+PiArICAg ICAgIGNhc2UgRU1fWDg2XzY0Ogo+PiArICAgICAgICAgICAgICAgcmV0ID0gX19wZXJmX3NkdF9h cmdfcGFyc2Vfb3BfeDg2KG9sZF9vcCwgbmV3X29wKTsKPj4gKyAgICAgICAgICAgICAgIGJyZWFr Owo+PiArICAgICAgIGRlZmF1bHQ6Cj4gSSB0aGluayB0aGVyZSBzaG91bGQgYmUgYXQgbGVhc3Qg YSBkZWJ1ZyB3YXJuaW5nIGhlcmUuCgpTdXJlLiBUaGFua3MuCgoKPgo+IFRoYW5rcyEKPiBJYW4K Pgo+PiArICAgICAgICAgICAgICAgYnJlYWs7Cj4+ICsgICAgICAgfQo+PiArCj4+ICsgICAgICAg cmV0dXJuIHJldDsKPj4gIH0KPj4KPj4gIHVpbnQ2NF90IHBlcmZfaW50cl9yZWdfbWFzayh1aW50 MTZfdCBlX21hY2hpbmUpCj4+IGRpZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvcGVyZl9yZWdz LmggYi90b29scy9wZXJmL3V0aWwvcGVyZl9yZWdzLmgKPj4gaW5kZXggODUzMTU4NGJjMWIxLi43 N2MwYjUxN2I5NGEgMTAwNjQ0Cj4+IC0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9wZXJmX3JlZ3MuaAo+ PiArKysgYi90b29scy9wZXJmL3V0aWwvcGVyZl9yZWdzLmgKPj4gQEAgLTEyLDcgKzEyLDcgQEAg ZW51bSB7Cj4+ICAgICAgICAgU0RUX0FSR19TS0lQLAo+PiAgfTsKPj4KPj4gLWludCBhcmNoX3Nk dF9hcmdfcGFyc2Vfb3AoY2hhciAqb2xkX29wLCBjaGFyICoqbmV3X29wKTsKPj4gK2ludCBwZXJm X3NkdF9hcmdfcGFyc2Vfb3AodWludDE2X3QgZV9tYWNoaW5lLCBjaGFyICpvbGRfb3AsIGNoYXIg KipuZXdfb3ApOwo+PiAgdWludDY0X3QgcGVyZl9pbnRyX3JlZ19tYXNrKHVpbnQxNl90IGVfbWFj aGluZSk7Cj4+ICB1aW50NjRfdCBwZXJmX3VzZXJfcmVnX21hc2sodWludDE2X3QgZV9tYWNoaW5l KTsKPj4KPj4gQEAgLTIxLDYgKzIxLDcgQEAgaW50IHBlcmZfcmVnX3ZhbHVlKHU2NCAqdmFscCwg c3RydWN0IHJlZ3NfZHVtcCAqcmVncywgaW50IGlkKTsKPj4gIHVpbnQ2NF90IHBlcmZfYXJjaF9y ZWdfaXAodWludDE2X3QgZV9tYWNoaW5lKTsKPj4gIHVpbnQ2NF90IHBlcmZfYXJjaF9yZWdfc3Ao dWludDE2X3QgZV9tYWNoaW5lKTsKPj4KPj4gK2ludCBfX3BlcmZfc2R0X2FyZ19wYXJzZV9vcF9h cm02NChjaGFyICpvbGRfb3AsIGNoYXIgKipuZXdfb3ApOwo+PiAgdWludDY0X3QgX19wZXJmX3Jl Z19tYXNrX2FybTY0KGJvb2wgaW50cik7Cj4+ICBjb25zdCBjaGFyICpfX3BlcmZfcmVnX25hbWVf YXJtNjQoaW50IGlkKTsKPj4gIHVpbnQ2NF90IF9fcGVyZl9yZWdfaXBfYXJtNjQodm9pZCk7Cj4+ IEBAIC00Niw2ICs0Nyw3IEBAIGNvbnN0IGNoYXIgKl9fcGVyZl9yZWdfbmFtZV9taXBzKGludCBp ZCk7Cj4+ICB1aW50NjRfdCBfX3BlcmZfcmVnX2lwX21pcHModm9pZCk7Cj4+ICB1aW50NjRfdCBf X3BlcmZfcmVnX3NwX21pcHModm9pZCk7Cj4+Cj4+ICtpbnQgX19wZXJmX3NkdF9hcmdfcGFyc2Vf b3BfcG93ZXJwYyhjaGFyICpvbGRfb3AsIGNoYXIgKipuZXdfb3ApOwo+PiAgdWludDY0X3QgX19w ZXJmX3JlZ19tYXNrX3Bvd2VycGMoYm9vbCBpbnRyKTsKPj4gIGNvbnN0IGNoYXIgKl9fcGVyZl9y ZWdfbmFtZV9wb3dlcnBjKGludCBpZCk7Cj4+ICB1aW50NjRfdCBfX3BlcmZfcmVnX2lwX3Bvd2Vy cGModm9pZCk7Cj4+IEBAIC02MSw2ICs2Myw3IEBAIGNvbnN0IGNoYXIgKl9fcGVyZl9yZWdfbmFt ZV9zMzkwKGludCBpZCk7Cj4+ICB1aW50NjRfdCBfX3BlcmZfcmVnX2lwX3MzOTAodm9pZCk7Cj4+ ICB1aW50NjRfdCBfX3BlcmZfcmVnX3NwX3MzOTAodm9pZCk7Cj4+Cj4+ICtpbnQgX19wZXJmX3Nk dF9hcmdfcGFyc2Vfb3BfeDg2KGNoYXIgKm9sZF9vcCwgY2hhciAqKm5ld19vcCk7Cj4+ICB1aW50 NjRfdCBfX3BlcmZfcmVnX21hc2tfeDg2KGJvb2wgaW50cik7Cj4+ICBjb25zdCBjaGFyICpfX3Bl cmZfcmVnX25hbWVfeDg2KGludCBpZCk7Cj4+ICB1aW50NjRfdCBfX3BlcmZfcmVnX2lwX3g4Nih2 b2lkKTsKPj4gZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC9wcm9iZS1maWxlLmMgYi90b29s cy9wZXJmL3V0aWwvcHJvYmUtZmlsZS5jCj4+IGluZGV4IDUwNjlmYjYxZjQ4Yy4uZjc4YzNiYzNk NjAxIDEwMDY0NAo+PiAtLS0gYS90b29scy9wZXJmL3V0aWwvcHJvYmUtZmlsZS5jCj4+ICsrKyBi L3Rvb2xzL3BlcmYvdXRpbC9wcm9iZS1maWxlLmMKPj4gQEAgLTI4LDYgKzI4LDcgQEAKPj4gICNp bmNsdWRlICJzZXNzaW9uLmgiCj4+ICAjaW5jbHVkZSAicGVyZl9yZWdzLmgiCj4+ICAjaW5jbHVk ZSAic3RyaW5nMi5oIgo+PiArI2luY2x1ZGUgImR3YXJmLXJlZ3MuaCIKPj4KPj4gIC8qIDQwOTYg LSAyICgnXG4nICsgJ1wwJykgKi8KPj4gICNkZWZpbmUgTUFYX0NNRExFTiA0MDk0Cj4+IEBAIC03 ODQsNyArNzg1LDcgQEAgc3RhdGljIGludCBzeW50aGVzaXplX3NkdF9wcm9iZV9hcmcoc3RydWN0 IHN0cmJ1ZiAqYnVmLCBpbnQgaSwgY29uc3QgY2hhciAqYXJnKQo+PiAgICAgICAgICAgICAgICAg b3AgPSBkZXNjOwo+PiAgICAgICAgIH0KPj4KPj4gLSAgICAgICByZXQgPSBhcmNoX3NkdF9hcmdf cGFyc2Vfb3Aob3AsICZuZXdfb3ApOwo+PiArICAgICAgIHJldCA9IHBlcmZfc2R0X2FyZ19wYXJz ZV9vcChFTV9IT1NULCBvcCwgJm5ld19vcCk7Cj4+Cj4+ICAgICAgICAgaWYgKHJldCA8IDApCj4+ ICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwo+PiAtLQo+PiAyLjM0LjEKPj4KCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LXJpc2N2IG1haWxp bmcgbGlzdApsaW51eC1yaXNjdkBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZy YWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcmlzY3YK