From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-17.0 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,NICE_REPLY_A, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 013F3C433F5 for ; Tue, 21 Sep 2021 11:37:50 +0000 (UTC) Received: from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 5B375611C5 for ; Tue, 21 Sep 2021 11:37:49 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 5B375611C5 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.buildroot.org Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id D693E406C8; Tue, 21 Sep 2021 11:37:48 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id AcbMGfxF7ALw; Tue, 21 Sep 2021 11:37:46 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by smtp4.osuosl.org (Postfix) with ESMTP id B839C406B9; Tue, 21 Sep 2021 11:37:45 +0000 (UTC) Received: from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by ash.osuosl.org (Postfix) with ESMTP id 02CD31BF35C for ; Tue, 21 Sep 2021 11:37:44 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id E9B508427A for ; Tue, 21 Sep 2021 11:37:43 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Authentication-Results: smtp1.osuosl.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Czl5c_4E5c_W for ; Tue, 21 Sep 2021 11:37:41 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.8.0 Received: from mail-wr1-x431.google.com (mail-wr1-x431.google.com [IPv6:2a00:1450:4864:20::431]) by smtp1.osuosl.org (Postfix) with ESMTPS id D4794841C3 for ; Tue, 21 Sep 2021 11:37:40 +0000 (UTC) Received: by mail-wr1-x431.google.com with SMTP id t8so31192565wri.1 for ; Tue, 21 Sep 2021 04:37:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=subject:to:references:from:cc:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=6Efw2ed4y1anJNwE49ZoXAmYgKdWq8Ghr6xyI5tNVxk=; b=hkILqowyJOYOGA6EWh/t6d0tzCBRLNhlHwMOq1tB0VESEfg4wOr2v8Z2SvdmXnOx0C 8NmlpRSS/PiKyjhTMap6DK2M5ikem7pG3M2aZFTeDf3ywdw6q1Ta4TpBtOyqa3QOzCK9 VQkxOngqdm5pS/qCthzaURL4IKiSaMxCL8WsQOi/drAL9k5DfKSa++HPRa05UMzbWOlQ La254hFvd1HWQj1BKvQ/akX5MXIF9Vrl2I2TuRmM5r8OtqmOVvH63AIzYP7Bwy2zA5Jc 5A5/EOitvtnD3cVTtgM3TiFtYNTOUdL52gC1ZWmDS8H3gDKfiLiPRYDBLgljBMwGok6j KFdw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:subject:to:references:from:cc:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=6Efw2ed4y1anJNwE49ZoXAmYgKdWq8Ghr6xyI5tNVxk=; b=kKi/YNGGLXI6uxKvLFV67+vyLkrsJioxUiTFcDvb9MOCWMcWphlYfjEO/BVSRZqfbn I4o+5Hfo4fWsy2XZWhmTwTiT/WFW6QB5saT6CR9LFWY0t2CQVmW1IFgtLvYXUvsmkVST y6Yd2t0KRrihbHyxBfSUuKIxTPItCdxBtmgEQbn+uZrH7Vsp2BWqSC7h0qsWnjf6hefC mYglvWutdsi8XPP9L+YIdhbNnYjfbfe2tuSOnJ19VtZWyKcM80pTXtv07U4Yl5Bg0oan ullvsdlO/MtBLmt4SBA7Tk+vAN2Ml5Xu9PR62Q+d5QxlKLGiDpbrbAix5kfvAuE9hHKF iQcQ== X-Gm-Message-State: AOAM531C0grbxydiU8IEsCMQY5Ork26HWprtVrFaGCmLE6GGFMkKXp2I mbgmZ9W+aQJm4tqjtZSlMIk= X-Google-Smtp-Source: ABdhPJzHTqFVJ3VkHrY86XEkhpqCmZBZiBUqlHzBhu3aMc7wTiqy1FuSKoDzwltPgaCsSLLgiLiGlw== X-Received: by 2002:a5d:6343:: with SMTP id b3mr32982378wrw.124.1632224258485; Tue, 21 Sep 2021 04:37:38 -0700 (PDT) Received: from ?IPv6:2a01:cb05:8f8a:1800:2216:4e4e:b697:b4ce? (2a01cb058f8a180022164e4eb697b4ce.ipv6.abo.wanadoo.fr. [2a01:cb05:8f8a:1800:2216:4e4e:b697:b4ce]) by smtp.gmail.com with ESMTPSA id l13sm18555484wrb.11.2021.09.21.04.37.37 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 21 Sep 2021 04:37:38 -0700 (PDT) To: Fabrice Fontaine , buildroot@buildroot.org References: <20210912084540.1047574-1-fontaine.fabrice@gmail.com> From: Romain Naour Message-ID: Date: Tue, 21 Sep 2021 13:37:36 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: <20210912084540.1047574-1-fontaine.fabrice@gmail.com> Content-Language: en-US Subject: Re: [Buildroot] [PATCH 1/1] package/patchelf: bump to version 0.13 X-BeenThere: buildroot@lists.buildroot.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thomas Petazzoni Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: buildroot-bounces@lists.buildroot.org Sender: "buildroot" SGVsbG8gRmFicmljZSwKCkxlIDEyLzA5LzIwMjEgw6AgMTA6NDUsIEZhYnJpY2UgRm9udGFpbmUg YSDDqWNyaXTCoDoKPiAtIFVwZGF0ZSB0aGlyZCBwYXRjaCBhbmQgZHJvcCBvdGhlciBvbmVzIChh bHJlYWR5IGluIHZlcnNpb24pCj4gLSBVcGRhdGUgaW5kZW50YXRpb24gaW4gaGFzaCBmaWxlICh0 d28gc3BhY2VzKQo+IAo+IEZpeGVzOgo+ICAtIGh0dHBzOi8vYnVncy5idWlsZHJvb3Qub3JnL3No b3dfYnVnLmNnaT9pZD0xNDE5MQoKTmV3ZXIgcGF0Y2hlbGYgdmVyc2lvbiByZXF1aXJlcyBDKysx MSBzdXBwb3J0LiBTaW5jZSBpdCdzIHVzZWQgYXQgdGhlIGVuZCBvZiB0aGUKYnVpbGQgaXQgd291 bGQgYWRkIHRoaXMgZGVwZW5kZW5jeSB0byBCdWlsZHJvb3QgaXRzZWxmLgoKU2VlOgpodHRwczov L2dpdC5idWlsZHJvb3QubmV0L2J1aWxkcm9vdC9jb21taXQvP2lkPTA3YjA1ZjQzOWExNDVlZGMw NjFjOGEyNDYwZjg0OWRlMDY5YzMyY2IKClRoYXQncyB3aHkgd2UgaGF2ZSBhIGxvdCBvZiBwYXRj aGVzIGZvciBwYXRjaGVsZiBzaW5jZSB2MC45IGlzIHRoZSBsYXN0IHZlcnNpb24KdGhhdCBkb2Vz bid0IHJlcXVpcmVzIEMrKzExLgoKQmVzdCByZWdhcmRzLApSb21haW4KCgo+IAo+IFNpZ25lZC1v ZmYtYnk6IEZhYnJpY2UgRm9udGFpbmUgPGZvbnRhaW5lLmZhYnJpY2VAZ21haWwuY29tPgo+IC0t LQo+ICAuLi5lLXRoZS1ycGF0aC1yZWxhdGl2ZS11bmRlci1hLXNwZWNpZi5wYXRjaH0gfCAxMjIg KysrKysrLS0tLS0tCj4gIC4uLmFwcGFyZW50bHktaW5jb3JyZWN0LXVzYWdlLW9mLXN0YXRpYy5w YXRjaCB8ICA1NiAtLS0tLS0KPiAgLi4ub24tZm9yLXNwbGl0dGluZy1hLWNvbG9uLXNlcGFyYXRl ZC1zLnBhdGNoIHwgIDYzIC0tLS0tLS0KPiAgLi4uTEYtZW5kaWFubmVzcy1iZWZvcmUtd3JpdGlu Zy1uZXctcnVuLnBhdGNoIHwgIDQwIC0tLS0KPiAgLi4uZmlsZS1zaXplcy1uZWVkbGVzc2x5LWFu ZC1hbGxvdy1iaW5hLnBhdGNoIHwgMTc2IC0tLS0tLS0tLS0tLS0tLS0tLQo+ICAuLi5yeS1jb3Jy dXB0aW9uLXdoZW4tcmVydW5uaW5nLXBhdGNoZWwucGF0Y2ggfCAgNTUgLS0tLS0tCj4gIC4uLi8w MDA3LWZpeC1hZGp1c3Rpbmctc3RhcnRQYWdlLnBhdGNoICAgICAgICB8ICA0NSAtLS0tLQo+ICAu Li5zdGVhZC1vZi1zaF9hZGRyLXdoZW4tY2hlY2tpbmctYWxyZWEucGF0Y2ggfCAgMzggLS0tLQo+ ICAuLi5pZ25vcmluZy10aGUtZmlyc3Qtc2VjdGlvbi1oZWFkZXItd2gucGF0Y2ggfCAgNDEgLS0t LQo+ICAuLi5peC1lbmRpYW5uZXNzLWlzc3Vlcy1mb3ItcG93ZXJwYy1QSUUucGF0Y2ggfCAgODAg LS0tLS0tLS0KPiAgcGFja2FnZS9wYXRjaGVsZi9wYXRjaGVsZi5oYXNoICAgICAgICAgICAgICAg IHwgICA0ICstCj4gIHBhY2thZ2UvcGF0Y2hlbGYvcGF0Y2hlbGYubWsgICAgICAgICAgICAgICAg ICB8ICAgNSArLQo+ICAxMiBmaWxlcyBjaGFuZ2VkLCA3MiBpbnNlcnRpb25zKCspLCA2NTMgZGVs ZXRpb25zKC0pCj4gIHJlbmFtZSBwYWNrYWdlL3BhdGNoZWxmL3swMDAzLUFkZC1vcHRpb24tdG8t bWFrZS10aGUtcnBhdGgtcmVsYXRpdmUtdW5kZXItYS1zcGVjaWYucGF0Y2ggPT4gMDAwMS1BZGQt b3B0aW9uLXRvLW1ha2UtdGhlLXJwYXRoLXJlbGF0aXZlLXVuZGVyLWEtc3BlY2lmLnBhdGNofSAo NjglKQo+ICBkZWxldGUgbW9kZSAxMDA2NDQgcGFja2FnZS9wYXRjaGVsZi8wMDAxLVJlbW92ZS1h cHBhcmVudGx5LWluY29ycmVjdC11c2FnZS1vZi1zdGF0aWMucGF0Y2gKPiAgZGVsZXRlIG1vZGUg MTAwNjQ0IHBhY2thZ2UvcGF0Y2hlbGYvMDAwMi1FeHRyYWN0LWEtZnVuY3Rpb24tZm9yLXNwbGl0 dGluZy1hLWNvbG9uLXNlcGFyYXRlZC1zLnBhdGNoCj4gIGRlbGV0ZSBtb2RlIDEwMDY0NCBwYWNr YWdlL3BhdGNoZWxmLzAwMDQtcGF0Y2hlbGYtQ2hlY2stRUxGLWVuZGlhbm5lc3MtYmVmb3JlLXdy aXRpbmctbmV3LXJ1bi5wYXRjaAo+ICBkZWxldGUgbW9kZSAxMDA2NDQgcGFja2FnZS9wYXRjaGVs Zi8wMDA1LUF2b2lkLWluZmxhdGluZy1maWxlLXNpemVzLW5lZWRsZXNzbHktYW5kLWFsbG93LWJp bmEucGF0Y2gKPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IHBhY2thZ2UvcGF0Y2hlbGYvMDAwNi1GaXgt c2hhcmVkLWxpYnJhcnktY29ycnVwdGlvbi13aGVuLXJlcnVubmluZy1wYXRjaGVsLnBhdGNoCj4g IGRlbGV0ZSBtb2RlIDEwMDY0NCBwYWNrYWdlL3BhdGNoZWxmLzAwMDctZml4LWFkanVzdGluZy1z dGFydFBhZ2UucGF0Y2gKPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IHBhY2thZ2UvcGF0Y2hlbGYvMDAw OC1Vc2Utc2hfb2Zmc2V0LWluc3RlYWQtb2Ytc2hfYWRkci13aGVuLWNoZWNraW5nLWFscmVhLnBh dGNoCj4gIGRlbGV0ZSBtb2RlIDEwMDY0NCBwYWNrYWdlL3BhdGNoZWxmLzAwMDktRml4LWlzc3Vl LTY2LWJ5LWlnbm9yaW5nLXRoZS1maXJzdC1zZWN0aW9uLWhlYWRlci13aC5wYXRjaAo+ICBkZWxl dGUgbW9kZSAxMDA2NDQgcGFja2FnZS9wYXRjaGVsZi8wMDEwLUZpeC1lbmRpYW5uZXNzLWlzc3Vl cy1mb3ItcG93ZXJwYy1QSUUucGF0Y2gKPiAKPiBkaWZmIC0tZ2l0IGEvcGFja2FnZS9wYXRjaGVs Zi8wMDAzLUFkZC1vcHRpb24tdG8tbWFrZS10aGUtcnBhdGgtcmVsYXRpdmUtdW5kZXItYS1zcGVj aWYucGF0Y2ggYi9wYWNrYWdlL3BhdGNoZWxmLzAwMDEtQWRkLW9wdGlvbi10by1tYWtlLXRoZS1y cGF0aC1yZWxhdGl2ZS11bmRlci1hLXNwZWNpZi5wYXRjaAo+IHNpbWlsYXJpdHkgaW5kZXggNjgl Cj4gcmVuYW1lIGZyb20gcGFja2FnZS9wYXRjaGVsZi8wMDAzLUFkZC1vcHRpb24tdG8tbWFrZS10 aGUtcnBhdGgtcmVsYXRpdmUtdW5kZXItYS1zcGVjaWYucGF0Y2gKPiByZW5hbWUgdG8gcGFja2Fn ZS9wYXRjaGVsZi8wMDAxLUFkZC1vcHRpb24tdG8tbWFrZS10aGUtcnBhdGgtcmVsYXRpdmUtdW5k ZXItYS1zcGVjaWYucGF0Y2gKPiBpbmRleCBmOWYyNTM3YTZjLi44NzEwYmZiNjI5IDEwMDY0NAo+ IC0tLSBhL3BhY2thZ2UvcGF0Y2hlbGYvMDAwMy1BZGQtb3B0aW9uLXRvLW1ha2UtdGhlLXJwYXRo LXJlbGF0aXZlLXVuZGVyLWEtc3BlY2lmLnBhdGNoCj4gKysrIGIvcGFja2FnZS9wYXRjaGVsZi8w MDAxLUFkZC1vcHRpb24tdG8tbWFrZS10aGUtcnBhdGgtcmVsYXRpdmUtdW5kZXItYS1zcGVjaWYu cGF0Y2gKPiBAQCAtNDEsNiArNDEsOCBAQCBwZW5kaW5nLgo+ICBbMl0gaHR0cHM6Ly9naXRodWIu Y29tL05peE9TL3BhdGNoZWxmL3B1bGwvMTE4Cj4gIAo+ICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2Fu ZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KPiArW0ZhYnJpY2U6IHVwZGF0ZSBmb3Ig MC4xM10KPiArU2lnbmVkLW9mZi1ieTogRmFicmljZSBGb250YWluZSA8Zm9udGFpbmUuZmFicmlj ZUBnbWFpbC5jb20+Cj4gIC0tLQo+ICAgc3JjL3BhdGNoZWxmLmNjIHwgMTk2ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCj4gICAxIGZpbGUg Y2hhbmdlZCwgMTc1IGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQo+IEBAIC01NywxNCAr NTksMTQgQEAgaW5kZXggMWQ5YTc3Mi4uMzViNGEzMyAxMDA2NDQKPiAgKwo+ICArc3RhdGljIGJv b2wgcmVsYXRpdmVUb0ZpbGUgPSBmYWxzZTsKPiAgKwo+IC0gc3RhdGljIHN0cmluZyBmaWxlTmFt ZTsKPiAtIHN0YXRpYyBpbnQgcGFnZVNpemUgPSBQQUdFU0laRTsKPiAtIAo+ICsgc3RhdGljIHN0 ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBmaWxlTmFtZXM7Cj4gKyBzdGF0aWMgc3RkOjpzdHJpbmcg b3V0cHV0RmlsZU5hbWU7Cj4gKyBzdGF0aWMgYm9vbCBhbHdheXNXcml0ZSA9IGZhbHNlOwo+ICBA QCAtNzcsNiArODEsNDkgQEAgc3RhdGljIHVuc2lnbmVkIGludCBnZXRQYWdlU2l6ZSgpewo+ICAg ICAgIHJldHVybiBwYWdlU2l6ZTsKPiAgIH0KPiAgIAo+IC0rc3RhdGljIGJvb2wgYWJzb2x1dGVQ YXRoRXhpc3RzKGNvbnN0IHN0cmluZyAmIHBhdGgsIHN0cmluZyAmIGNhbm9uaWNhbFBhdGgpCj4g KytzdGF0aWMgYm9vbCBhYnNvbHV0ZVBhdGhFeGlzdHMoY29uc3Qgc3RkOjpzdHJpbmcgJiBwYXRo LCBzdGQ6OnN0cmluZyAmIGNhbm9uaWNhbFBhdGgpCj4gICt7Cj4gICsgICAgY2hhciAqY3BhdGgg PSByZWFscGF0aChwYXRoLmNfc3RyKCksIE5VTEwpOwo+ICArICAgIGlmIChjcGF0aCkgewo+IEBA IC03NiwxMSArNzgsMTEgQEAgaW5kZXggMWQ5YTc3Mi4uMzViNGEzMyAxMDA2NDQKPiAgKyAgICB9 Cj4gICt9Cj4gICsKPiAtK3N0YXRpYyBzdHJpbmcgbWFrZVBhdGhSZWxhdGl2ZShjb25zdCBzdHJp bmcgJiBwYXRoLAo+IC0rICAgIGNvbnN0IHN0cmluZyAmIHJlZlBhdGgpCj4gKytzdGF0aWMgc3Rk OjpzdHJpbmcgbWFrZVBhdGhSZWxhdGl2ZShjb25zdCBzdGQ6OnN0cmluZyAmIHBhdGgsCj4gKysg ICAgY29uc3Qgc3RkOjpzdHJpbmcgJiByZWZQYXRoKQo+ICArewo+IC0rICAgIHN0cmluZyByZWxQ YXRoID0gIiRPUklHSU4iOwo+IC0rICAgIHN0cmluZyBwID0gcGF0aCwgcmVmUCA9IHJlZlBhdGg7 Cj4gKysgICAgc3RkOjpzdHJpbmcgcmVsUGF0aCA9ICIkT1JJR0lOIjsKPiArKyAgICBzdGQ6OnN0 cmluZyBwID0gcGF0aCwgcmVmUCA9IHJlZlBhdGg7Cj4gICsgICAgc2l6ZV90IHBvczsKPiAgKwo+ ICArICAgIC8qIFN0cmlwIHRoZSBjb21tb24gcGFydCBvZiBwYXRoIGFuZCByZWZQYXRoICovCj4g QEAgLTkwLDcgKzkyLDcgQEAgaW5kZXggMWQ5YTc3Mi4uMzViNGEzMyAxMDA2NDQKPiAgKyAgICAg ICAgICAgIGJyZWFrOwo+ICArICAgICAgICBpZiAocC5zdWJzdHIoMCwgcG9zKSAhPSByZWZQLnN1 YnN0cigwLCBwb3MpKQo+ICArICAgICAgICAgICAgYnJlYWs7Cj4gLSsgICAgICAgIGlmIChwb3Mg PT0gc3RyaW5nOjpucG9zKQo+ICsrICAgICAgICBpZiAocG9zID09IHN0ZDo6c3RyaW5nOjpucG9z KQo+ICArICAgICAgICAgICAgYnJlYWs7Cj4gICsgICAgICAgIHAgPSBwLnN1YnN0cihwb3MpOwo+ ICArICAgICAgICByZWZQID0gcmVmUC5zdWJzdHIocG9zKTsKPiBAQCAtOTgsNyArMTAwLDcgQEAg aW5kZXggMWQ5YTc3Mi4uMzViNGEzMyAxMDA2NDQKPiAgKyAgICAvKiBDaGVjayBpZiBib3RoIHBh dGhlcyBhcmUgZXF1YWwgKi8KPiAgKyAgICBpZiAocCAhPSByZWZQKSB7Cj4gICsgICAgICAgIHBv cyA9IDA7Cj4gLSsgICAgICAgIHdoaWxlIChwb3MgIT0gc3RyaW5nOjpucG9zKSB7Cj4gKysgICAg ICAgIHdoaWxlIChwb3MgIT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsKPiAgKyAgICAgICAgICAgIHBv cyA9cmVmUC5maW5kX2ZpcnN0X29mKCcvJywgcG9zICsgMSk7Cj4gICsgICAgICAgICAgICByZWxQ YXRoLmFwcGVuZCgiLy4uIik7Cj4gICsgICAgICAgIH0KPiBAQCAtMTE0LDMyICsxMTYsMzMgQEAg aW5kZXggMWQ5YTc3Mi4uMzViNGEzMyAxMDA2NDQKPiAgIAo+ICAgICAgIHZvaWQgc2V0SW50ZXJw cmV0ZXIoY29uc3Qgc3RyaW5nICYgbmV3SW50ZXJwcmV0ZXIpOwo+ICAgCj4gLS0gICAgdHlwZWRl ZiBlbnVtIHsgcnBQcmludCwgcnBTaHJpbmssIHJwU2V0LCBycFJlbW92ZSB9IFJQYXRoT3A7Cj4g LSsgICAgdHlwZWRlZiBlbnVtIHsgcnBQcmludCwgcnBTaHJpbmssIHJwTWFrZVJlbGF0aXZlLCBy cFNldCwgcnBSZW1vdmV9IFJQYXRoT3A7Cj4gKy0gICAgdHlwZWRlZiBlbnVtIHsgcnBQcmludCwg cnBTaHJpbmssIHJwU2V0LCBycEFkZCwgcnBSZW1vdmUgfSBSUGF0aE9wOwo+ICsrICAgIHR5cGVk ZWYgZW51bSB7IHJwUHJpbnQsIHJwU2hyaW5rLCBycE1ha2VSZWxhdGl2ZSwgcnBTZXQsIHJwQWRk LCBycFJlbW92ZX0gUlBhdGhPcDsKPiAgKwo+IC0rICAgIGJvb2wgbGliRm91bmRJblJQYXRoKGNv bnN0IHN0cmluZyAmIGRpck5hbWUsCj4gLSsgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg dmVjdG9yPHN0cmluZz4gbmVlZGVkTGlicywKPiAtKyAgICAgICAgICAgICAgICAgICAgICAgICB2 ZWN0b3I8Ym9vbD4gJiBuZWVkZWRMaWJGb3VuZCk7Cj4gKysgICAgYm9vbCBsaWJGb3VuZEluUlBh dGgoY29uc3Qgc3RkOjpzdHJpbmcgJiBkaXJOYW1lLAo+ICsrICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBuZWVkZWRMaWJzLAo+ICsrICAgICAg ICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPGJvb2w+ICYgbmVlZGVkTGliRm91bmQpOwo+ ICAgCj4gLS0gICAgdm9pZCBtb2RpZnlSUGF0aChSUGF0aE9wIG9wLCBzdHJpbmcgbmV3UlBhdGgp Owo+IC0rICAgIHZvaWQgbW9kaWZ5UlBhdGgoUlBhdGhPcCBvcCwgc3RyaW5nIHJvb3REaXIsIHN0 cmluZyBuZXdSUGF0aCk7Cj4gKy0gICAgdm9pZCBtb2RpZnlSUGF0aChSUGF0aE9wIG9wLCBjb25z dCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gJiBhbGxvd2VkUnBhdGhQcmVmaXhlcywgc3RkOjpz dHJpbmcgbmV3UlBhdGgpOwo+ICsrICAgIHZvaWQgbW9kaWZ5UlBhdGgoUlBhdGhPcCBvcCwgc3Rk OjpzdHJpbmcgcm9vdERpciwgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+ICYgYWxsb3dl ZFJwYXRoUHJlZml4ZXMsIHN0ZDo6c3RyaW5nIG5ld1JQYXRoLCBjb25zdCBzdGQ6OnN0cmluZyAm IGZpbGVOYW1lKTsKPiAgIAo+ICAgICAgIHZvaWQgYWRkTmVlZGVkKHNldDxzdHJpbmc+IGxpYnMp Owo+ICAgCj4gLUBAIC0xMDQxLDcgKzEwOTIsMjcgQEAgc3RhdGljIHZvaWQgY29uY2F0VG9SUGF0 aChzdHJpbmcgJiBycGF0aCwgY29uc3Qgc3RyaW5nICYgcGF0aCkKPiArQEAgLTEwNDEsOCArMTA5 MiwyOCBAQCBzdGF0aWMgdm9pZCBjb25jYXRUb1JQYXRoKHN0cmluZyAmIHJwYXRoLCBjb25zdCBz dHJpbmcgJiBwYXRoKQo+ICAgCj4gICAKPiAgIHRlbXBsYXRlPEVsZkZpbGVQYXJhbXM+Cj4gLS12 b2lkIEVsZkZpbGU8RWxmRmlsZVBhcmFtTmFtZXM+Ojptb2RpZnlSUGF0aChSUGF0aE9wIG9wLCBz dHJpbmcgbmV3UlBhdGgpCj4gLStib29sIEVsZkZpbGU8RWxmRmlsZVBhcmFtTmFtZXM+OjpsaWJG b3VuZEluUlBhdGgoY29uc3Qgc3RyaW5nICYgZGlyTmFtZSwKPiAtKyAgICBjb25zdCB2ZWN0b3I8 c3RyaW5nPiBuZWVkZWRMaWJzLCB2ZWN0b3I8Ym9vbD4gJiBuZWVkZWRMaWJGb3VuZCkKPiArLXZv aWQgRWxmRmlsZTxFbGZGaWxlUGFyYW1OYW1lcz46Om1vZGlmeVJQYXRoKFJQYXRoT3Agb3AsCj4g Ky0gICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+ICYgYWxsb3dlZFJwYXRoUHJlZml4 ZXMsIHN0ZDo6c3RyaW5nIG5ld1JQYXRoKQo+ICsrYm9vbCBFbGZGaWxlPEVsZkZpbGVQYXJhbU5h bWVzPjo6bGliRm91bmRJblJQYXRoKGNvbnN0IHN0ZDo6c3RyaW5nICYgZGlyTmFtZSwKPiArKyAg ICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gbmVlZGVkTGlicywgc3RkOjp2ZWN0b3I8 Ym9vbD4gJiBuZWVkZWRMaWJGb3VuZCkKPiAgK3sKPiAgKyAgICAvKiBGb3IgZWFjaCBsaWJyYXJ5 IHRoYXQgd2UgaGF2ZW4ndCBmb3VuZCB5ZXQsIHNlZSBpZiBpdAo+ICArICAgICAgIGV4aXN0cyBp biB0aGlzIGRpcmVjdG9yeS4gKi8KPiAgKyAgICBib29sIGxpYkZvdW5kID0gZmFsc2U7Cj4gICsg ICAgZm9yICh1bnNpZ25lZCBpbnQgaiA9IDA7IGogPCBuZWVkZWRMaWJzLnNpemUoKTsgKytqKQo+ ICArICAgICAgICBpZiAoIW5lZWRlZExpYkZvdW5kW2pdKSB7Cj4gLSsgICAgICAgICAgICBzdHJp bmcgbGliTmFtZSA9IGRpck5hbWUgKyAiLyIgKyBuZWVkZWRMaWJzW2pdOwo+ICsrICAgICAgICAg ICAgc3RkOjpzdHJpbmcgbGliTmFtZSA9IGRpck5hbWUgKyAiLyIgKyBuZWVkZWRMaWJzW2pdOwo+ ICArICAgICAgICAgICAgc3RydWN0IHN0YXQgc3Q7Cj4gICsgICAgICAgICAgICBpZiAoc3RhdChs aWJOYW1lLmNfc3RyKCksICZzdCkgPT0gMCkgewo+ICArICAgICAgICAgICAgICAgIG5lZWRlZExp YkZvdW5kW2pdID0gdHJ1ZTsKPiBAQCAtMTUxLDcgKzE1NCw4IEBAIGluZGV4IDFkOWE3NzIuLjM1 YjRhMzMgMTAwNjQ0Cj4gICsKPiAgKwo+ICArdGVtcGxhdGU8RWxmRmlsZVBhcmFtcz4KPiAtK3Zv aWQgRWxmRmlsZTxFbGZGaWxlUGFyYW1OYW1lcz46Om1vZGlmeVJQYXRoKFJQYXRoT3Agb3AsIHN0 cmluZyByb290RGlyLCBzdHJpbmcgbmV3UlBhdGgpCj4gKyt2b2lkIEVsZkZpbGU8RWxmRmlsZVBh cmFtTmFtZXM+Ojptb2RpZnlSUGF0aChSUGF0aE9wIG9wLCBzdGQ6OnN0cmluZyByb290RGlyLAo+ ICsrICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiAmIGFsbG93ZWRScGF0aFByZWZp eGVzLCBzdGQ6OnN0cmluZyBuZXdSUGF0aCwgY29uc3Qgc3RkOjpzdHJpbmcgJiBmaWxlTmFtZSkK PiAgIHsKPiAgICAgICBFbGZfU2hkciAmIHNoZHJEeW5hbWljID0gZmluZFNlY3Rpb24oIi5keW5h bWljIik7Cj4gICAKPiBAQCAtMTY3LDcgKzE3MSw3IEBAIGluZGV4IDFkOWE3NzIuLjM1YjRhMzMg MTAwNjQ0Cj4gICAgICAgaWYgKG9wID09IHJwU2hyaW5rICYmICFycGF0aCkgewo+ICAgICAgICAg ICBkZWJ1Zygibm8gUlBBVEggdG8gc2hyaW5rXG4iKTsKPiAgICAgICAgICAgcmV0dXJuOwo+IC1A QCAtMTEyMCwyNiArMTE5Niw4MCBAQCB2b2lkIEVsZkZpbGU8RWxmRmlsZVBhcmFtTmFtZXM+Ojpt b2RpZnlSUGF0aChSUGF0aE9wIG9wLCBzdHJpbmcgbmV3UlBhdGgpCj4gK0BAIC0xMTIwLDMxICsx MTk2LDgwIEBAIHZvaWQgRWxmRmlsZTxFbGZGaWxlUGFyYW1OYW1lcz46Om1vZGlmeVJQYXRoKFJQ YXRoT3Agb3AsIHN0cmluZyBuZXdSUGF0aCkKPiAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK PiAgICAgICAgICAgICAgIH0KPiAgIAo+IEBAIC0xNzYsMTcgKzE4MCwyMiBAQCBpbmRleCAxZDlh NzcyLi4zNWI0YTMzIDEwMDY0NAo+ICAtICAgICAgICAgICAgYm9vbCBsaWJGb3VuZCA9IGZhbHNl Owo+ICAtICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaiA9IDA7IGogPCBuZWVkZWRMaWJz LnNpemUoKTsgKytqKQo+ICAtICAgICAgICAgICAgICAgIGlmICghbmVlZGVkTGliRm91bmRbal0p IHsKPiAtLSAgICAgICAgICAgICAgICAgICAgc3RyaW5nIGxpYk5hbWUgPSBkaXJOYW1lICsgIi8i ICsgbmVlZGVkTGlic1tqXTsKPiAtLSAgICAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQgc3Q7 Cj4gLS0gICAgICAgICAgICAgICAgICAgIGlmIChzdGF0KGxpYk5hbWUuY19zdHIoKSwgJnN0KSA9 PSAwKSB7Cj4gLS0gICAgICAgICAgICAgICAgICAgICAgICBuZWVkZWRMaWJGb3VuZFtqXSA9IHRy dWU7Cj4gLS0gICAgICAgICAgICAgICAgICAgICAgICBsaWJGb3VuZCA9IHRydWU7Cj4gKy0gICAg ICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGxpYk5hbWUgPSBkaXJOYW1lICsgIi8iICsgbmVl ZGVkTGlic1tqXTsKPiArLSAgICAgICAgICAgICAgICAgICAgdHJ5IHsKPiArLSAgICAgICAgICAg ICAgICAgICAgICAgIEVsZjMyX0hhbGYgbGlicmFyeV9lX21hY2hpbmUgPSBnZXRFbGZUeXBlKHJl YWRGaWxlKGxpYk5hbWUsIHNpemVvZihFbGYzMl9FaGRyKSkpLm1hY2hpbmU7Cj4gKy0gICAgICAg ICAgICAgICAgICAgICAgICBpZiAocmRpKGxpYnJhcnlfZV9tYWNoaW5lKSA9PSByZGkoaGRyLT5l X21hY2hpbmUpKSB7Cj4gKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVlZGVkTGliRm91 bmRbal0gPSB0cnVlOwo+ICstICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYkZvdW5kID0g dHJ1ZTsKPiArLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQo+ICstICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRlYnVnKCJpZ25vcmluZyBsaWJyYXJ5ICclcycgYmVjYXVzZSBpdHMg bWFjaGluZSB0eXBlIGRpZmZlcnNcbiIsIGxpYk5hbWUuY19zdHIoKSk7Cj4gKy0gICAgICAgICAg ICAgICAgICAgIH0gY2F0Y2ggKFN5c0Vycm9yICYgZSkgewo+ICstICAgICAgICAgICAgICAgICAg ICAgICAgaWYgKGUuZXJyTm8gIT0gRU5PRU5UKSB0aHJvdzsKPiAgLSAgICAgICAgICAgICAgICAg ICAgfQo+ICAtICAgICAgICAgICAgICAgIH0KPiAgLQo+ICAtICAgICAgICAgICAgaWYgKCFsaWJG b3VuZCkKPiAgKyAgICAgICAgICAgIGlmICghbGliRm91bmRJblJQYXRoKGRpck5hbWUsIG5lZWRl ZExpYnMsIG5lZWRlZExpYkZvdW5kKSkKPiAtICAgICAgICAgICAgICAgICBkZWJ1ZygicmVtb3Zp bmcgZGlyZWN0b3J5IGAlcycgZnJvbSBSUEFUSFxuIiwgZGlyTmFtZS5jX3N0cigpKTsKPiArICAg ICAgICAgICAgICAgICBkZWJ1ZygicmVtb3ZpbmcgZGlyZWN0b3J5ICclcycgZnJvbSBSUEFUSFxu IiwgZGlyTmFtZS5jX3N0cigpKTsKPiAgICAgICAgICAgICAgIGVsc2UKPiAgICAgICAgICAgICAg ICAgICBjb25jYXRUb1JQYXRoKG5ld1JQYXRoLCBkaXJOYW1lKTsKPiAgICAgICAgICAgfQo+IEBA IC0xOTQsMTYgKzIwMywxNiBAQCBpbmRleCAxZDlhNzcyLi4zNWI0YTMzIDEwMDY0NAo+ICAgCj4g ICsgICAgLyogTWFrZSB0aGUgdGhlIFJQQVRIIHJlbGF0aXZlIHRvIHRoZSBzcGVjaWZpZWQgcGF0 aCAqLwo+ICArICAgIGlmIChvcCA9PSBycE1ha2VSZWxhdGl2ZSkgewo+IC0rICAgICAgICB2ZWN0 b3I8Ym9vbD4gbmVlZGVkTGliRm91bmQobmVlZGVkTGlicy5zaXplKCksIGZhbHNlKTsKPiAtKyAg ICAgICAgc3RyaW5nIGZpbGVEaXIgPSBmaWxlTmFtZS5zdWJzdHIoMCwgZmlsZU5hbWUuZmluZF9s YXN0X29mKCIvIikpOwo+ICsrICAgICAgICBzdGQ6OnZlY3Rvcjxib29sPiBuZWVkZWRMaWJGb3Vu ZChuZWVkZWRMaWJzLnNpemUoKSwgZmFsc2UpOwo+ICsrICAgICAgICBzdGQ6OnN0cmluZyBmaWxl RGlyID0gZmlsZU5hbWUuc3Vic3RyKDAsIGZpbGVOYW1lLmZpbmRfbGFzdF9vZigiLyIpKTsKPiAg Kwo+ICArICAgICAgICBuZXdSUGF0aCA9ICIiOwo+ICArCj4gLSsgICAgICAgIHZlY3RvcjxzdHJp bmc+IHJwYXRoRGlycyA9IHNwbGl0Q29sb25EZWxpbWl0ZWRTdHJpbmcocnBhdGgpOwo+IC0rICAg ICAgICBmb3IgKHZlY3RvcjxzdHJpbmc+OjppdGVyYXRvciBpdCA9IHJwYXRoRGlycy5iZWdpbigp OyBpdCAhPSBycGF0aERpcnMuZW5kKCk7ICsraXQpIHsKPiAtKyAgICAgICAgICAgIGNvbnN0IHN0 cmluZyAmIGRpck5hbWUgPSAqaXQ7Cj4gKysgICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5n PiBycGF0aERpcnMgPSBzcGxpdENvbG9uRGVsaW1pdGVkU3RyaW5nKHJwYXRoKTsKPiArKyAgICAg ICAgZm9yIChzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz46Oml0ZXJhdG9yIGl0ID0gcnBhdGhEaXJz LmJlZ2luKCk7IGl0ICE9IHJwYXRoRGlycy5lbmQoKTsgKytpdCkgewo+ICsrICAgICAgICAgICAg Y29uc3Qgc3RkOjpzdHJpbmcgJiBkaXJOYW1lID0gKml0Owo+ICArCj4gLSsgICAgICAgICAgICBz dHJpbmcgY2Fub25pY2FsUGF0aDsKPiArKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGNhbm9uaWNh bFBhdGg7Cj4gICsKPiAgKyAgICAgICAgICAgIC8qIEZpZ3VyZSBvdXQgaWYgd2Ugc2hvdWxkIGtl ZXAgb3IgZGlzY2FyZCB0aGUgcGF0aC4gVGhlcmUgYXJlIHNldmVyYWwKPiAgKyAgICAgICAgICAg ICAgIGNhc2VzIHRvIGJlIGhhbmRsZWQ6Cj4gQEAgLTIyMSw3ICsyMzAsNyBAQCBpbmRleCAxZDlh NzcyLi4zNWI0YTMzIDEwMDY0NAo+ICArICAgICAgICAgICAgICAgICAgICAoY2FuIGJlIGFueXdo ZXJlOiBidWlsZCB0cmVlcywgc3RhZ2luZyB0cmVlLCBob3N0IGxvY2F0aW9uLAo+ICArICAgICAg ICAgICAgICAgICAgICBub24tZXhpc3RpbmcgbG9jYXRpb24sIGV0Yy4pLiBKdXN0IGRpc2NhcmQg c3VjaCBhIHBhdGguICovCj4gICsgICAgICAgICAgICBpZiAoIWRpck5hbWUuY29tcGFyZSgwLCA3 LCAiJE9SSUdJTiIpKSB7Cj4gLSsgICAgICAgICAgICAgICAgc3RyaW5nIHBhdGggPSBmaWxlRGly ICsgZGlyTmFtZS5zdWJzdHIoNyk7Cj4gKysgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgcGF0 aCA9IGZpbGVEaXIgKyBkaXJOYW1lLnN1YnN0cig3KTsKPiAgKyAgICAgICAgICAgICAgICBpZiAo IWFic29sdXRlUGF0aEV4aXN0cyhwYXRoLCBjYW5vbmljYWxQYXRoKSkgewo+ICArICAgICAgICAg ICAgICAgICAgICBkZWJ1ZygicmVtb3ZpbmcgZGlyZWN0b3J5ICclcycgZnJvbSBSUEFUSCBiZWNh dXNlICclcycgZG9lc24ndCBleGlzdFxuIiwKPiAgKyAgICAgICAgICAgICAgICAgICAgICAgICAg ZGlyTmFtZS5jX3N0cigpLCBwYXRoLmNfc3RyKCkpOwo+IEBAIC0yMzMsNyArMjQyLDcgQEAgaW5k ZXggMWQ5YTc3Mi4uMzViNGEzMyAxMDA2NDQKPiAgKyAgICAgICAgICAgICAgICAgICAgY29udGlu dWU7Cj4gICsgICAgICAgICAgICAgICAgfQo+ICArICAgICAgICAgICAgfSBlbHNlIHsKPiAtKyAg ICAgICAgICAgICAgICBzdHJpbmcgcGF0aCA9IHJvb3REaXIgKyBkaXJOYW1lOwo+ICsrICAgICAg ICAgICAgICAgIHN0ZDo6c3RyaW5nIHBhdGggPSByb290RGlyICsgZGlyTmFtZTsKPiAgKyAgICAg ICAgICAgICAgICBpZiAoIWFic29sdXRlUGF0aEV4aXN0cyhwYXRoLCBjYW5vbmljYWxQYXRoKSkg ewo+ICArICAgICAgICAgICAgICAgICAgICBkZWJ1ZygicmVtb3ZpbmcgZGlyZWN0b3J5ICclcycg ZnJvbSBSUEFUSCBiZWNhdXNlIGl0J3Mgbm90IGluIHJvb3RkaXJcbiIsCj4gICsgICAgICAgICAg ICAgICAgICAgICAgICAgIGRpck5hbWUuY19zdHIoKSk7Cj4gQEAgLTI2Myw0MCArMjcyLDQzIEBA IGluZGV4IDFkOWE3NzIuLjM1YjRhMzMgMTAwNjQ0Cj4gICAgICAgICAgIGlmICghcnBhdGgpIHsK PiAgICAgICAgICAgICAgIGRlYnVnKCJubyBSUEFUSCB0byBkZWxldGVcbiIpOwo+ICBAQCAtMTQx Myw3ICsxNTQzLDkgQEAgc3RhdGljIGJvb2wgc2hyaW5rUlBhdGggPSBmYWxzZTsKPiAtIHN0YXRp YyBib29sIHJlbW92ZVJQYXRoID0gZmFsc2U7Cj4gICBzdGF0aWMgYm9vbCBzZXRSUGF0aCA9IGZh bHNlOwo+ICsgc3RhdGljIGJvb2wgYWRkUlBhdGggPSBmYWxzZTsKPiAgIHN0YXRpYyBib29sIHBy aW50UlBhdGggPSBmYWxzZTsKPiAgK3N0YXRpYyBib29sIG1ha2VSUGF0aFJlbGF0aXZlID0gZmFs c2U7Cj4gLSBzdGF0aWMgc3RyaW5nIG5ld1JQYXRoOwo+IC0rc3RhdGljIHN0cmluZyByb290RGly Owo+IC0gc3RhdGljIHNldDxzdHJpbmc+IG5lZWRlZExpYnNUb1JlbW92ZTsKPiAtIHN0YXRpYyBt YXA8c3RyaW5nLCBzdHJpbmc+IG5lZWRlZExpYnNUb1JlcGxhY2U7Cj4gLSBzdGF0aWMgc2V0PHN0 cmluZz4gbmVlZGVkTGlic1RvQWRkOwo+IC1AQCAtMTQzOCwxNCArMTU3MCwxNiBAQCBzdGF0aWMg dm9pZCBwYXRjaEVsZjIoRWxmRmlsZSAmIGVsZkZpbGUpCj4gKyBzdGF0aWMgc3RkOjpzdHJpbmcg bmV3UlBhdGg7Cj4gKytzdGF0aWMgc3RkOjpzdHJpbmcgcm9vdERpcjsKPiArIHN0YXRpYyBzdGQ6 OnNldDxzdGQ6OnN0cmluZz4gbmVlZGVkTGlic1RvUmVtb3ZlOwo+ICsgc3RhdGljIHN0ZDo6bWFw PHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4gbmVlZGVkTGlic1RvUmVwbGFjZTsKPiArIHN0YXRp YyBzdGQ6OnNldDxzdGQ6OnN0cmluZz4gbmVlZGVkTGlic1RvQWRkOwo+ICtAQCAtMTQzOCwxNiAr MTU3MCwxOCBAQCBzdGF0aWMgdm9pZCBwYXRjaEVsZjIoRWxmRmlsZSAmIGVsZkZpbGUpCj4gICAg ICAgICAgIGVsZkZpbGUuc2V0SW50ZXJwcmV0ZXIobmV3SW50ZXJwcmV0ZXIpOwo+ICAgCj4gICAg ICAgaWYgKHByaW50UlBhdGgpCj4gLS0gICAgICAgIGVsZkZpbGUubW9kaWZ5UlBhdGgoZWxmRmls ZS5ycFByaW50LCAiIik7Cj4gLSsgICAgICAgIGVsZkZpbGUubW9kaWZ5UlBhdGgoZWxmRmlsZS5y cFByaW50LCAiIiwgIiIpOwo+ICstICAgICAgICBlbGZGaWxlLm1vZGlmeVJQYXRoKGVsZkZpbGUu cnBQcmludCwge30sICIiKTsKPiArKyAgICAgICAgZWxmRmlsZS5tb2RpZnlSUGF0aChlbGZGaWxl LnJwUHJpbnQsICIiLCB7fSwgIiIsIGZpbGVOYW1lKTsKPiAgIAo+ICAgICAgIGlmIChzaHJpbmtS UGF0aCkKPiAtLSAgICAgICAgZWxmRmlsZS5tb2RpZnlSUGF0aChlbGZGaWxlLnJwU2hyaW5rLCAi Iik7Cj4gLSsgICAgICAgIGVsZkZpbGUubW9kaWZ5UlBhdGgoZWxmRmlsZS5ycFNocmluaywgIiIs ICIiKTsKPiArLSAgICAgICAgZWxmRmlsZS5tb2RpZnlSUGF0aChlbGZGaWxlLnJwU2hyaW5rLCBh bGxvd2VkUnBhdGhQcmVmaXhlcywgIiIpOwo+ICsrICAgICAgICBlbGZGaWxlLm1vZGlmeVJQYXRo KGVsZkZpbGUucnBTaHJpbmssICIiLCBhbGxvd2VkUnBhdGhQcmVmaXhlcywgIiIsIGZpbGVOYW1l KTsKPiAgICAgICBlbHNlIGlmIChyZW1vdmVSUGF0aCkKPiAtLSAgICAgICAgZWxmRmlsZS5tb2Rp ZnlSUGF0aChlbGZGaWxlLnJwUmVtb3ZlLCAiIik7Cj4gLSsgICAgICAgIGVsZkZpbGUubW9kaWZ5 UlBhdGgoZWxmRmlsZS5ycFJlbW92ZSwgIiIsICIiKTsKPiArLSAgICAgICAgZWxmRmlsZS5tb2Rp ZnlSUGF0aChlbGZGaWxlLnJwUmVtb3ZlLCB7fSwgIiIpOwo+ICsrICAgICAgICBlbGZGaWxlLm1v ZGlmeVJQYXRoKGVsZkZpbGUucnBSZW1vdmUsICIiLCB7fSwgIiIsIGZpbGVOYW1lKTsKPiAgICAg ICBlbHNlIGlmIChzZXRSUGF0aCkKPiAtLSAgICAgICAgZWxmRmlsZS5tb2RpZnlSUGF0aChlbGZG aWxlLnJwU2V0LCBuZXdSUGF0aCk7Cj4gLSsgICAgICAgIGVsZkZpbGUubW9kaWZ5UlBhdGgoZWxm RmlsZS5ycFNldCwgIiIsIG5ld1JQYXRoKTsKPiArLSAgICAgICAgZWxmRmlsZS5tb2RpZnlSUGF0 aChlbGZGaWxlLnJwU2V0LCB7fSwgbmV3UlBhdGgpOwo+ICsrICAgICAgICBlbGZGaWxlLm1vZGlm eVJQYXRoKGVsZkZpbGUucnBTZXQsICIiLCB7fSwgbmV3UlBhdGgsIGZpbGVOYW1lKTsKPiArICAg ICBlbHNlIGlmIChhZGRSUGF0aCkKPiArLSAgICAgICAgZWxmRmlsZS5tb2RpZnlSUGF0aChlbGZG aWxlLnJwQWRkLCB7fSwgbmV3UlBhdGgpOwo+ICsrICAgICAgICBlbGZGaWxlLm1vZGlmeVJQYXRo KGVsZkZpbGUucnBBZGQsICIiLCB7fSwgbmV3UlBhdGgsIGZpbGVOYW1lKTsKPiAgKyAgICBlbHNl IGlmIChtYWtlUlBhdGhSZWxhdGl2ZSkKPiAtKyAgICAgICAgZWxmRmlsZS5tb2RpZnlSUGF0aChl bGZGaWxlLnJwTWFrZVJlbGF0aXZlLCByb290RGlyLCAiIik7Cj4gKysgICAgICAgIGVsZkZpbGUu bW9kaWZ5UlBhdGgoZWxmRmlsZS5ycE1ha2VSZWxhdGl2ZSwgcm9vdERpciwge30sICIiLCBmaWxl TmFtZSk7Cj4gICAKPiAgICAgICBpZiAocHJpbnROZWVkZWQpIGVsZkZpbGUucHJpbnROZWVkZWRM aWJzKCk7Cj4gICAKPiAgQEAgLTE1MDgsNiArMTY0Miw5IEBAIHZvaWQgc2hvd0hlbHAoY29uc3Qg c3RyaW5nICYgcHJvZ05hbWUpCj4gLSAgIFstLXNldC1ycGF0aCBSUEFUSF1cblwKPiAgICAgWy0t cmVtb3ZlLXJwYXRoXVxuXAo+ICAgICBbLS1zaHJpbmstcnBhdGhdXG5cCj4gKyAgIFstLWFsbG93 ZWQtcnBhdGgtcHJlZml4ZXMgUFJFRklYRVNdXHRcdFdpdGggJy0tc2hyaW5rLXJwYXRoJywgcmVq ZWN0IHJwYXRoIGVudHJpZXMgbm90IHN0YXJ0aW5nIHdpdGggdGhlIGFsbG93ZWQgcHJlZml4XG5c Cj4gICsgIFstLW1ha2UtcnBhdGgtcmVsYXRpdmUgUk9PVERJUl1cblwKPiAgKyAgWy0tbm8tc3Rh bmRhcmQtbGliLWRpcnNdXG5cCj4gICsgIFstLXJlbGF0aXZlLXRvLWZpbGVdXG5cCj4gZGlmZiAt LWdpdCBhL3BhY2thZ2UvcGF0Y2hlbGYvMDAwMS1SZW1vdmUtYXBwYXJlbnRseS1pbmNvcnJlY3Qt dXNhZ2Utb2Ytc3RhdGljLnBhdGNoIGIvcGFja2FnZS9wYXRjaGVsZi8wMDAxLVJlbW92ZS1hcHBh cmVudGx5LWluY29ycmVjdC11c2FnZS1vZi1zdGF0aWMucGF0Y2gKPiBkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKPiBpbmRleCBkYzQ2MmVmZjQzLi4wMDAwMDAwMDAwCj4gLS0tIGEvcGFja2FnZS9w YXRjaGVsZi8wMDAxLVJlbW92ZS1hcHBhcmVudGx5LWluY29ycmVjdC11c2FnZS1vZi1zdGF0aWMu cGF0Y2gKPiArKysgL2Rldi9udWxsCj4gQEAgLTEsNTYgKzAsMCBAQAo+IC1Gcm9tIDI0ODBlZmE4 NDExNTIzY2YwNDYwOTQ0OTIxOTJhNWVlNDUxYWFlNWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx Cj4gLUZyb206IEVlbGNvIERvbHN0cmEgPGVlbGNvLmRvbHN0cmFAbG9naWNibG94LmNvbT4KPiAt RGF0ZTogTW9uLCAxOSBTZXAgMjAxNiAxNzozMTozNyArMDIwMAo+IC1TdWJqZWN0OiBbUEFUQ0hd IFJlbW92ZSBhcHBhcmVudGx5IGluY29ycmVjdCB1c2FnZSBvZiAic3RhdGljIgo+IC0KPiAtW1Vw c3RyZWFtLWNvbW1pdDogaHR0cHM6Ly9naXRodWIuY29tL05peE9TL3BhdGNoZWxmL2NvbW1pdC9h MzY1YmNiN2Q3MDI1ZGE1MWIzMzE2NWVmN2ViYzcxODAxOTlhMDVlCj4gLVRoaXMgcGF0Y2ggYWxz byByZW1vdmVzIHRoZSBEVF9JTklUIHN5bWJvbHMgZnJvbSBuZWVkZWRfbGlicyAoRFRfSU5JVAo+ IC1wb2ludHMgdG8gbGlicmFyeSBpbml0aWFsaXNhdGlvbiBmdW5jdGlvbiwgbm90IHRvIG5lZWRl ZCBsaWJyYXJpZXMuLi4pXQo+IC1TaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3 Z0BncmFuZGVnZ2VyLmNvbT4KPiAtLS0tCj4gLSBzcmMvcGF0Y2hlbGYuY2MgfCA4ICsrKy0tLS0t Cj4gLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQo+IC0K PiAtZGlmZiAtLWdpdCBhL3NyYy9wYXRjaGVsZi5jYyBiL3NyYy9wYXRjaGVsZi5jYwo+IC1pbmRl eCAxMzYwOThmLi5jODcwNjM4IDEwMDY0NAo+IC0tLS0gYS9zcmMvcGF0Y2hlbGYuY2MKPiAtKysr IGIvc3JjL3BhdGNoZWxmLmNjCj4gLUBAIC05NDEsNyArOTQxLDYgQEAgdm9pZCBFbGZGaWxlPEVs ZkZpbGVQYXJhbU5hbWVzPjo6bW9kaWZ5U29uYW1lKHNvbmFtZU1vZGUgb3AsIGNvbnN0IHN0cmlu ZyAmIG5ld1MKPiAtICAgICBhc3NlcnQoc3RyVGFiQWRkciA9PSByZGkoc2hkckR5blN0ci5zaF9h ZGRyKSk7Cj4gLSAKPiAtICAgICAvKiBXYWxrIHRocm91Z2ggdGhlIGR5bmFtaWMgc2VjdGlvbiwg bG9vayBmb3IgdGhlIERUX1NPTkFNRSBlbnRyeS4gKi8KPiAtLSAgICBzdGF0aWMgdmVjdG9yPHN0 cmluZz4gbmVlZGVkTGliczsKPiAtICAgICBkeW4gPSAoRWxmX0R5biAqKSAoY29udGVudHMgKyBy ZGkoc2hkckR5bmFtaWMuc2hfb2Zmc2V0KSk7Cj4gLSAgICAgRWxmX0R5biAqIGR5blNvbmFtZSA9 IDA7Cj4gLSAgICAgY2hhciAqIHNvbmFtZSA9IDA7Cj4gLUBAIC05NDksOCArOTQ4LDcgQEAgdm9p ZCBFbGZGaWxlPEVsZkZpbGVQYXJhbU5hbWVzPjo6bW9kaWZ5U29uYW1lKHNvbmFtZU1vZGUgb3As IGNvbnN0IHN0cmluZyAmIG5ld1MKPiAtICAgICAgICAgaWYgKHJkaShkeW4tPmRfdGFnKSA9PSBE VF9TT05BTUUpIHsKPiAtICAgICAgICAgICAgIGR5blNvbmFtZSA9IGR5bjsKPiAtICAgICAgICAg ICAgIHNvbmFtZSA9IHN0clRhYiArIHJkaShkeW4tPmRfdW4uZF92YWwpOwo+IC0tICAgICAgICB9 IGVsc2UgaWYgKHJkaShkeW4tPmRfdGFnKSA9PSBEVF9JTklUKQo+IC0tICAgICAgICAgICAgbmVl ZGVkTGlicy5wdXNoX2JhY2soc3RyaW5nKHN0clRhYiArIHJkaShkeW4tPmRfdW4uZF92YWwpKSk7 Cj4gLSsgICAgICAgIH0KPiAtICAgICB9Cj4gLSAKPiAtICAgICBpZiAob3AgPT0gcHJpbnRTb25h bWUpIHsKPiAtQEAgLTEwNTgsNyArMTA1Niw3IEBAIHZvaWQgRWxmRmlsZTxFbGZGaWxlUGFyYW1O YW1lcz46Om1vZGlmeVJQYXRoKFJQYXRoT3Agb3AsIHN0cmluZyBuZXdSUGF0aCkKPiAtICAgICAg ICB1bmxlc3MgeW91IHVzZSBpdHMgYC0tZW5hYmxlLW5ldy1kdGFnJyBvcHRpb24sIGluIHdoaWNo IGNhc2UgaXQKPiAtICAgICAgICBnZW5lcmF0ZXMgYSBEVF9SUEFUSCBhbmQgRFRfUlVOUEFUSCBw b2ludGluZyBhdCB0aGUgc2FtZQo+IC0gICAgICAgIHN0cmluZy4gKi8KPiAtLSAgICBzdGF0aWMg dmVjdG9yPHN0cmluZz4gbmVlZGVkTGliczsKPiAtKyAgICB2ZWN0b3I8c3RyaW5nPiBuZWVkZWRM aWJzOwo+IC0gICAgIGR5biA9IChFbGZfRHluICopIChjb250ZW50cyArIHJkaShzaGRyRHluYW1p Yy5zaF9vZmZzZXQpKTsKPiAtICAgICBFbGZfRHluICogZHluUlBhdGggPSAwLCAqIGR5blJ1blBh dGggPSAwOwo+IC0gICAgIGNoYXIgKiBycGF0aCA9IDA7Cj4gLUBAIC0xMDkxLDcgKzEwODksNyBA QCB2b2lkIEVsZkZpbGU8RWxmRmlsZVBhcmFtTmFtZXM+Ojptb2RpZnlSUGF0aChSUGF0aE9wIG9w LCBzdHJpbmcgbmV3UlBhdGgpCj4gLSAgICAgLyogRm9yIGVhY2ggZGlyZWN0b3J5IGluIHRoZSBS UEFUSCwgY2hlY2sgaWYgaXQgY29udGFpbnMgYW55Cj4gLSAgICAgICAgbmVlZGVkIGxpYnJhcnku ICovCj4gLSAgICAgaWYgKG9wID09IHJwU2hyaW5rKSB7Cj4gLS0gICAgICAgIHN0YXRpYyB2ZWN0 b3I8Ym9vbD4gbmVlZGVkTGliRm91bmQobmVlZGVkTGlicy5zaXplKCksIGZhbHNlKTsKPiAtKyAg ICAgICAgdmVjdG9yPGJvb2w+IG5lZWRlZExpYkZvdW5kKG5lZWRlZExpYnMuc2l6ZSgpLCBmYWxz ZSk7Cj4gLSAKPiAtICAgICAgICAgbmV3UlBhdGggPSAiIjsKPiAtIAo+IC0tLSAKPiAtMS45LjEK PiAtCj4gZGlmZiAtLWdpdCBhL3BhY2thZ2UvcGF0Y2hlbGYvMDAwMi1FeHRyYWN0LWEtZnVuY3Rp b24tZm9yLXNwbGl0dGluZy1hLWNvbG9uLXNlcGFyYXRlZC1zLnBhdGNoIGIvcGFja2FnZS9wYXRj aGVsZi8wMDAyLUV4dHJhY3QtYS1mdW5jdGlvbi1mb3Itc3BsaXR0aW5nLWEtY29sb24tc2VwYXJh dGVkLXMucGF0Y2gKPiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAzMzBiZWEyM2Jj Li4wMDAwMDAwMDAwCj4gLS0tIGEvcGFja2FnZS9wYXRjaGVsZi8wMDAyLUV4dHJhY3QtYS1mdW5j dGlvbi1mb3Itc3BsaXR0aW5nLWEtY29sb24tc2VwYXJhdGVkLXMucGF0Y2gKPiArKysgL2Rldi9u dWxsCj4gQEAgLTEsNjMgKzAsMCBAQAo+IC1Gcm9tIGE4NDUyZGM3ZTgwZWIxNzU3MmM3NDU4ZTMz YTRmNGQ2MDllNmEzZGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCj4gLUZyb206IFR1b21hcyBU eW5ra3luZW4gPHR1b21hc0B0dXhlcmEuY29tPgo+IC1EYXRlOiBGcmksIDMgSnVuIDIwMTYgMjM6 MDM6NTEgKzAzMDAKPiAtU3ViamVjdDogW1BBVENIXSBFeHRyYWN0IGEgZnVuY3Rpb24gZm9yIHNw bGl0dGluZyBhIGNvbG9uLXNlcGFyYXRlZCBzdHJpbmcKPiAtCj4gLVdlJ3JlIGdvaW5nIHRvIG5l ZWQgdGhpcyBsb2dpYyBpbiBhbm90aGVyIHBsYWNlLCBzbyBtYWtlIGEgZnVuY3Rpb24gb2YKPiAt dGhpcy4KPiAtCj4gLVtVcHN0cmVhbS1jb21taXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9OaXhPUy9w YXRjaGVsZi9jb21taXQvMmUzZmRjMjAzMGM3NWMxOWRmNmZjMjkyNDA4M2NmYWQ1Mzg1NjU2Ml0K PiAtU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+ Cj4gLS0tLQo+IC0gc3JjL3BhdGNoZWxmLmNjIHwgMjggKysrKysrKysrKysrKysrKysrKy0tLS0t LS0tLQo+IC0gMSBmaWxlIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0p Cj4gLQo+IC1kaWZmIC0tZ2l0IGEvc3JjL3BhdGNoZWxmLmNjIGIvc3JjL3BhdGNoZWxmLmNjCj4g LWluZGV4IGM4NzA2MzguLjFkOWE3NzIgMTAwNjQ0Cj4gLS0tLSBhL3NyYy9wYXRjaGVsZi5jYwo+ IC0rKysgYi9zcmMvcGF0Y2hlbGYuY2MKPiAtQEAgLTU3LDYgKzU3LDIyIEBAIHVuc2lnbmVkIGNo YXIgKiBjb250ZW50cyA9IDA7Cj4gLSAjZGVmaW5lIEVsZkZpbGVQYXJhbU5hbWVzIEVsZl9FaGRy LCBFbGZfUGhkciwgRWxmX1NoZHIsIEVsZl9BZGRyLCBFbGZfT2ZmLCBFbGZfRHluLCBFbGZfU3lt Cj4gLSAKPiAtIAo+IC0rc3RhdGljIHZlY3RvcjxzdHJpbmc+IHNwbGl0Q29sb25EZWxpbWl0ZWRT dHJpbmcoY29uc3QgY2hhciAqIHMpewo+IC0rICAgIHZlY3RvcjxzdHJpbmc+IHBhcnRzOwo+IC0r ICAgIGNvbnN0IGNoYXIgKiBwb3MgPSBzOwo+IC0rICAgIHdoaWxlICgqcG9zKSB7Cj4gLSsgICAg ICAgIGNvbnN0IGNoYXIgKiBlbmQgPSBzdHJjaHIocG9zLCAnOicpOwo+IC0rICAgICAgICBpZiAo IWVuZCkgZW5kID0gc3RyY2hyKHBvcywgMCk7Cj4gLSsKPiAtKyAgICAgICAgcGFydHMucHVzaF9i YWNrKHN0cmluZyhwb3MsIGVuZCAtIHBvcykpOwo+IC0rICAgICAgICBpZiAoKmVuZCA9PSAnOicp ICsrZW5kOwo+IC0rICAgICAgICBwb3MgPSBlbmQ7Cj4gLSsgICAgfQo+IC0rCj4gLSsgICAgcmV0 dXJuIHBhcnRzOwo+IC0rfQo+IC0rCj4gLSsKPiAtIHN0YXRpYyB1bnNpZ25lZCBpbnQgZ2V0UGFn ZVNpemUoKXsKPiAtICAgICByZXR1cm4gcGFnZVNpemU7Cj4gLSB9Cj4gLUBAIC0xMDkzLDE1ICsx MTA5LDkgQEAgdm9pZCBFbGZGaWxlPEVsZkZpbGVQYXJhbU5hbWVzPjo6bW9kaWZ5UlBhdGgoUlBh dGhPcCBvcCwgc3RyaW5nIG5ld1JQYXRoKQo+IC0gCj4gLSAgICAgICAgIG5ld1JQYXRoID0gIiI7 Cj4gLSAKPiAtLSAgICAgICAgY2hhciAqIHBvcyA9IHJwYXRoOwo+IC0tICAgICAgICB3aGlsZSAo KnBvcykgewo+IC0tICAgICAgICAgICAgY2hhciAqIGVuZCA9IHN0cmNocihwb3MsICc6Jyk7Cj4g LS0gICAgICAgICAgICBpZiAoIWVuZCkgZW5kID0gc3RyY2hyKHBvcywgMCk7Cj4gLS0KPiAtLSAg ICAgICAgICAgIC8qIEdldCB0aGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5LiAqLwo+IC0tICAgICAg ICAgICAgc3RyaW5nIGRpck5hbWUocG9zLCBlbmQgLSBwb3MpOwo+IC0tICAgICAgICAgICAgaWYg KCplbmQgPT0gJzonKSArK2VuZDsKPiAtLSAgICAgICAgICAgIHBvcyA9IGVuZDsKPiAtKyAgICAg ICAgdmVjdG9yPHN0cmluZz4gcnBhdGhEaXJzID0gc3BsaXRDb2xvbkRlbGltaXRlZFN0cmluZyhy cGF0aCk7Cj4gLSsgICAgICAgIGZvciAodmVjdG9yPHN0cmluZz46Oml0ZXJhdG9yIGl0ID0gcnBh dGhEaXJzLmJlZ2luKCk7IGl0ICE9IHJwYXRoRGlycy5lbmQoKTsgKytpdCkgewo+IC0rICAgICAg ICAgICAgY29uc3Qgc3RyaW5nICYgZGlyTmFtZSA9ICppdDsKPiAtIAo+IC0gICAgICAgICAgICAg LyogTm9uLWFic29sdXRlIGVudHJpZXMgYXJlIGFsbG93ZWQgKGUuZy4sIHRoZSBzcGVjaWFsCj4g LSAgICAgICAgICAgICAgICAiJE9SSUdJTiIgaGFjaykuICovCj4gLS0tIAo+IC0xLjkuMQo+IC0K PiBkaWZmIC0tZ2l0IGEvcGFja2FnZS9wYXRjaGVsZi8wMDA0LXBhdGNoZWxmLUNoZWNrLUVMRi1l bmRpYW5uZXNzLWJlZm9yZS13cml0aW5nLW5ldy1ydW4ucGF0Y2ggYi9wYWNrYWdlL3BhdGNoZWxm LzAwMDQtcGF0Y2hlbGYtQ2hlY2stRUxGLWVuZGlhbm5lc3MtYmVmb3JlLXdyaXRpbmctbmV3LXJ1 bi5wYXRjaAo+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDhhODlkM2E2MzEuLjAw MDAwMDAwMDAKPiAtLS0gYS9wYWNrYWdlL3BhdGNoZWxmLzAwMDQtcGF0Y2hlbGYtQ2hlY2stRUxG LWVuZGlhbm5lc3MtYmVmb3JlLXdyaXRpbmctbmV3LXJ1bi5wYXRjaAo+ICsrKyAvZGV2L251bGwK PiBAQCAtMSw0MCArMCwwIEBACj4gLUZyb20gOGM3NTU5OWI2NzRjNzNmYmZlOWMxNWFmZWNjYWQ1 NGFlODgyNDNmNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKPiAtRnJvbTogQnJ5Y2UgRmVyZ3Vz b24gPGJyeWNlLmZlcmd1c29uQHJvY2t3ZWxsY29sbGlucy5jb20+Cj4gLURhdGU6IE1vbiwgMjUg SnVuIDIwMTggMTM6MDU6MDcgLTA1MDAKPiAtU3ViamVjdDogW1BBVENIXSBwYXRjaGVsZjogQ2hl Y2sgRUxGIGVuZGlhbm5lc3MgYmVmb3JlIHdyaXRpbmcgbmV3IHJ1bnBhdGgKPiAtCj4gLVRoaXMg Y29tbWl0IG1vZGlmaWVzIHRoZSB3YXkgZmllbGRzIGFyZSB3cml0dGVuIGluIHRoZSBkeW5hbWlj Cj4gLXNlY3Rpb24gaW4gb3JkZXIgdG8gYWNjb3VudCB0aGUgYXJjaGl0ZWN0dXJlIG9mIHRoZSB0 YXJnZXQgRUxGCj4gLWZpbGUuIEluc3RlYWQgb2YgY29weWluZyB0aGUgcmF3IGRhdGEsIHVzZSB0 aGUgaGVscGVyIGZ1bmN0aW9ucwo+IC10byBjb252ZXJ0IGVuZGlhbm5lc3MuCj4gLQo+IC1MaW5r IHRvIHVwc3RyZWFtIFBSOiBodHRwczovL2dpdGh1Yi5jb20vTml4T1MvcGF0Y2hlbGYvcHVsbC8x NTEKPiAtCj4gLVNpZ25lZC1vZmYtYnk6IEJyeWNlIEZlcmd1c29uIDxicnljZS5mZXJndXNvbkBy b2Nrd2VsbGNvbGxpbnMuY29tPgo+IC0tLS0KPiAtIHNyYy9wYXRjaGVsZi5jYyB8IDQgKystLQo+ IC0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKPiAtCj4g LWRpZmYgLS1naXQgYS9zcmMvcGF0Y2hlbGYuY2MgYi9zcmMvcGF0Y2hlbGYuY2MKPiAtaW5kZXgg MzViNGEzMy4uYTMzZjY0NCAxMDA2NDQKPiAtLS0tIGEvc3JjL3BhdGNoZWxmLmNjCj4gLSsrKyBi L3NyYy9wYXRjaGVsZi5jYwo+IC1AQCAtMTMxNSwxMyArMTMxNSwxMyBAQCB2b2lkIEVsZkZpbGU8 RWxmRmlsZVBhcmFtTmFtZXM+Ojptb2RpZnlSUGF0aChSUGF0aE9wIG9wLCBzdHJpbmcgcm9vdERp ciwgc3RyaW5nCj4gLSAgICAgZGVidWcoIm5ldyBycGF0aCBpcyBgJXMnXG4iLCBuZXdSUGF0aC5j X3N0cigpKTsKPiAtIAo+IC0gICAgIGlmICghZm9yY2VSUGF0aCAmJiBkeW5SUGF0aCAmJiAhZHlu UnVuUGF0aCkgeyAvKiBjb252ZXJ0IERUX1JQQVRIIHRvIERUX1JVTlBBVEggKi8KPiAtLSAgICAg ICAgZHluUlBhdGgtPmRfdGFnID0gRFRfUlVOUEFUSDsKPiAtKyAgICAgICAgd3JpKGR5blJQYXRo LT5kX3RhZywgRFRfUlVOUEFUSCk7Cj4gLSAgICAgICAgIGR5blJ1blBhdGggPSBkeW5SUGF0aDsK PiAtICAgICAgICAgZHluUlBhdGggPSAwOwo+IC0gICAgIH0KPiAtIAo+IC0gICAgIGlmIChmb3Jj ZVJQYXRoICYmIGR5blJQYXRoICYmIGR5blJ1blBhdGgpIHsgLyogY29udmVydCBEVF9SVU5QQVRI IHRvIERUX1JQQVRIICovCj4gLS0gICAgICAgIGR5blJ1blBhdGgtPmRfdGFnID0gRFRfSUdOT1JF Owo+IC0rICAgICAgICB3cmkoZHluUnVuUGF0aC0+ZF90YWcsIERUX0lHTk9SRSk7Cj4gLSAgICAg fQo+IC0gCj4gLSAgICAgaWYgKG5ld1JQYXRoLnNpemUoKSA8PSBycGF0aFNpemUpIHsKPiAtLS0g Cj4gLTIuMTcuMAo+IC0KPiBkaWZmIC0tZ2l0IGEvcGFja2FnZS9wYXRjaGVsZi8wMDA1LUF2b2lk LWluZmxhdGluZy1maWxlLXNpemVzLW5lZWRsZXNzbHktYW5kLWFsbG93LWJpbmEucGF0Y2ggYi9w YWNrYWdlL3BhdGNoZWxmLzAwMDUtQXZvaWQtaW5mbGF0aW5nLWZpbGUtc2l6ZXMtbmVlZGxlc3Ns eS1hbmQtYWxsb3ctYmluYS5wYXRjaAo+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4 IDBkNzkzMWNkNTIuLjAwMDAwMDAwMDAKPiAtLS0gYS9wYWNrYWdlL3BhdGNoZWxmLzAwMDUtQXZv aWQtaW5mbGF0aW5nLWZpbGUtc2l6ZXMtbmVlZGxlc3NseS1hbmQtYWxsb3ctYmluYS5wYXRjaAo+ ICsrKyAvZGV2L251bGwKPiBAQCAtMSwxNzYgKzAsMCBAQAo+IC1Gcm9tIDc5YzA5MzIyNmU2MDli OTlmYTg4OWY2ZTM3NDgwYjkyYjM5OTYxMGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCj4gLUZy b206IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgo+ IC1EYXRlOiBUdWUsIDcgTWFyIDIwMTcgMjE6MDg6MzQgKzAwMDAKPiAtU3ViamVjdDogW1BBVENI XSBBdm9pZCBpbmZsYXRpbmcgZmlsZSBzaXplcyBuZWVkbGVzc2x5IGFuZCBhbGxvdyBiaW5hcmll cyB0bwo+IC0gYmUgc3RyaXBwZWQKPiAtCj4gLVRoZSBjdXJyZW50IGFwcHJvYWNoIHRvIGNoYW5n aW5nIHNlY3Rpb25zIGluIEVUX0RZTiBleGVjdXRhYmxlcyBpcyB0byBtb3ZlCj4gLXRoZSBJTlRF UlAgc2VjdGlvbiB0byB0aGUgZW5kIG9mIHRoZSBmaWxlLiArVGhpcyBtZWFucyBjaGFuZ2luZyBQ VF9QSERSIHRvCj4gLWFkZCBhbiBleHRyYSBQVF9MT0FEIHNlY3Rpb24gc28gdGhhdCB0aGUgbmV3 IHNlY3Rpb24gaXMgbW1hcGVkIGludG8gbWVtb3J5Cj4gLWJ5IHRoZSBlbGYgbG9hZGVyIGluIHRo ZSBrZXJuZWwuIEluIG9yZGVyIHRvIGV4dGVuZCBQSERSLCB0aGlzIG1lYW5zIG1vdmluZwo+IC1p dCB0byB0aGUgZW5kIG9mIHRoZSBmaWxlLgo+IC0KPiAtSXRzIGRvY3VtZW50ZWQgaW4gQlVHUyB0 aGVyZSBpcyBhIGtlcm5lbCAnYnVnJyB3aGljaCBtZWFucyB0aGF0IGlmIHlvdSBoYXZlIGhvbGVz Cj4gLWluIG1lbW9yeSBiZXR3ZWVuIHRoZSBiYXNlIGxvYWQgYWRkcmVzcyBhbmQgdGhlIFBUX0xP QUQgc2VnbWVudCB0aGF0IGNvbnRhaW5zIFBIRFIsCj4gLWl0IHdpbGwgcGFzcyBhbiBpbmNvcnJl Y3QgUEhEUiBhZGRyZXNzIHRvIGxkLnNvIGFuZCBmYWlsIHRvIGxvYWQgdGhlIGJpbmFyeSwgc2Vn ZmF1bHRpbmcuCj4gLQo+IC1UbyBhdm9pZCB0aGlzLCB0aGUgY29kZSBjdXJyZW50bHkgaW5zZXJ0 cyBzcGFjZSBpbnRvIHRoZSBiaW5hcnkgdG8gZW5zdXJlIHRoYXQgd2hlbgo+IC1sb2FkZWQgaW50 byBtZW1vcnkgdGhlcmUgYXJlIG5vIGhvbGVzIGJldHdlZW4gdGhlIFBUX0xPQUQgc2VjdGlvbnMu IFRoaXMgaW5mbGF0ZXMgdGhlCj4gLWJpbmFyaWVzIGJ5IG1hbnkgTUJzIGluIHNvbWUgY2FzZXMu IFdoaWxzdCB3ZSBjb3VsZCBtYWtlIHRoZW0gc3BhcnNlLCB0aGVyZSBpcyBhIHNlY29uZAo+IC1p c3N1ZSB3aGljaCBpcyB0aGF0IHN0cmlwIGNhbiBmYWlsIHRvIHByb2Nlc3MgdGhlc2UgYmluYXJp ZXM6Cj4gLQo+IC0kIHN0cmlwIGZpeGluY2wKPiAtTm90IGVub3VnaCByb29tIGZvciBwcm9ncmFt IGhlYWRlcnMsIHRyeSBsaW5raW5nIHdpdGggLU4KPiAtWy5ub3RlLkFCSS10YWddOiBCYWQgdmFs dWUKPiAtCj4gLVRoaXMgdHVybnMgb3V0IHRvIGJlIGR1ZSB0byBsaWJiZmQgbm90IGxpa2luZyB0 aGUgcmVsb2NhdGVkIFBIRFIgc2VjdGlvbiBlaXRoZXIKPiAtKGh0dHBzOi8vZ2l0aHViLmNvbS9O aXhPUy9wYXRjaGVsZi9pc3N1ZXMvMTApLgo+IC0KPiAtSW5zdGVhZCB0aGlzIHBhdGNoIGltcGxl bWVudHMgYSBkaWZmZXJlbnQgYXBwcm9hY2gsIGxlYXZpbmcgUEhEUiB3aGVyZSBpdCBpcyBidXQg ZXh0ZW5kaW5nCj4gLWl0IGluIHBsYWNlIHRvIGFsbG93IGFkZGl0aW9uIG9mIGEgbmV3IFBUX0xP QUQgc2VjdGlvbi4gVGhpcyBvdmVyd3JpdGVzIHNlY3Rpb25zIGluIHRoZQo+IC1iaW5hcnkgYnV0 IHRob3NlIGdldCBtb3ZlZCB0byB0aGUgZW5kIG9mIHRoZSBmaWxlIGluIHRoZSBuZXcgUFRfTE9B RCBzZWN0aW9uLgo+IC0KPiAtVGhpcyBpcyBiYXNlZCBvbiBwYXRjaGVzIGxpbmtlZCBmcm9tIHRo ZSBhYm92ZSBnaXRodWIgaXNzdWUsIGhvd2V2ZXIgd2hpbHN0IHRoZSBpZGVhCj4gLXdhcyBnb29k LCB0aGUgaW1wbGVtZW50YXRpb24gd2Fzbid0IGNvcnJlY3QgYW5kIHRoZXkndmUgYmVlbiByZXdy aXR0ZW4gaGVyZS4KPiAtCj4gLVNpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJk LnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgo+IC0KPiAtRmV0Y2ggZnJvbTogaHR0cHM6Ly9n aXRodWIuY29tL05peE9TL3BhdGNoZWxmL2NvbW1pdC9jNGRlYjVlOWUxY2U5Yzk4YTQ4ZTBkNWJi MzdkODc3MzliOGNmZWU0Cj4gLQo+IC1CYWNrcG9ydGVkIHRvIHYwLjkKPiAtCj4gLVNpZ25lZC1v ZmYtYnk6IENvbnJhZCBSYXRzY2hhbiA8Y29ucmFkLnJhdHNjaGFuQHJvY2t3ZWxsY29sbGlucy5j b20+Cj4gLS0tLQo+IC0gc3JjL3BhdGNoZWxmLmNjIHwgNzEgKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+IC0gMSBmaWxlIGNoYW5nZWQsIDQwIGluc2Vy dGlvbnMoKyksIDMxIGRlbGV0aW9ucygtKQo+IC0KPiAtZGlmZiAtLWdpdCBhL3NyYy9wYXRjaGVs Zi5jYyBiL3NyYy9wYXRjaGVsZi5jYwo+IC1pbmRleCAxZDU4MDYxLi5jMjE0N2FmIDEwMDY0NAo+ IC0tLS0gYS9zcmMvcGF0Y2hlbGYuY2MKPiAtKysrIGIvc3JjL3BhdGNoZWxmLmNjCj4gLUBAIC0y MDksNiArMjA5LDggQEAgcHJpdmF0ZToKPiAtICAgICBzdHJpbmcgJiByZXBsYWNlU2VjdGlvbihj b25zdCBTZWN0aW9uTmFtZSAmIHNlY3Rpb25OYW1lLAo+IC0gICAgICAgICB1bnNpZ25lZCBpbnQg c2l6ZSk7Cj4gLSAKPiAtKyAgICBib29sIGhhdmVSZXBsYWNlZFNlY3Rpb24oY29uc3QgU2VjdGlv bk5hbWUgJiBzZWN0aW9uTmFtZSk7Cj4gLSsKPiAtICAgICB2b2lkIHdyaXRlUmVwbGFjZWRTZWN0 aW9ucyhFbGZfT2ZmICYgY3VyT2ZmLAo+IC0gICAgICAgICBFbGZfQWRkciBzdGFydEFkZHIsIEVs Zl9PZmYgc3RhcnRPZmZzZXQpOwo+IC0gCj4gLUBAIC02MzIsNiArNjM0LDE1IEBAIHZvaWQgRWxm RmlsZTxFbGZGaWxlUGFyYW1OYW1lcz46OndyaXRlUmVwbGFjZWRTZWN0aW9ucyhFbGZfT2ZmICYg Y3VyT2ZmLAo+IC0gICAgIHJlcGxhY2VkU2VjdGlvbnMuY2xlYXIoKTsKPiAtIH0KPiAtIAo+IC0r dGVtcGxhdGU8RWxmRmlsZVBhcmFtcz4KPiAtK2Jvb2wgRWxmRmlsZTxFbGZGaWxlUGFyYW1OYW1l cz46OmhhdmVSZXBsYWNlZFNlY3Rpb24oY29uc3QgU2VjdGlvbk5hbWUgJiBzZWN0aW9uTmFtZSkK PiAtK3sKPiAtKyAgICBSZXBsYWNlZFNlY3Rpb25zOjppdGVyYXRvciBpID0gcmVwbGFjZWRTZWN0 aW9ucy5maW5kKHNlY3Rpb25OYW1lKTsKPiAtKwo+IC0rICAgIGlmIChpICE9IHJlcGxhY2VkU2Vj dGlvbnMuZW5kKCkpCj4gLSsgICAgICAgIHJldHVybiB0cnVlOwo+IC0rICAgIHJldHVybiBmYWxz ZTsKPiAtK30KPiAtIAo+IC0gdGVtcGxhdGU8RWxmRmlsZVBhcmFtcz4KPiAtIHZvaWQgRWxmRmls ZTxFbGZGaWxlUGFyYW1OYW1lcz46OnJld3JpdGVTZWN0aW9uc0xpYnJhcnkoKQo+IC1AQCAtNjQ4 LDUyICs2NTksNTMgQEAgdm9pZCBFbGZGaWxlPEVsZkZpbGVQYXJhbU5hbWVzPjo6cmV3cml0ZVNl Y3Rpb25zTGlicmFyeSgpCj4gLSAKPiAtICAgICBkZWJ1ZygibGFzdCBwYWdlIGlzIDB4JWxseFxu IiwgKHVuc2lnbmVkIGxvbmcgbG9uZykgc3RhcnRQYWdlKTsKPiAtIAo+IC0rICAgIC8qIEJlY2F1 c2Ugd2UncmUgYWRkaW5nIGEgbmV3IHNlY3Rpb24gaGVhZGVyLCB3ZSdyZSBuZWNlc3NhcmlseSBp bmNyZWFzaW5nCj4gLSsgICAgICAgdGhlIHNpemUgb2YgdGhlIHByb2dyYW0gaGVhZGVyIHRhYmxl LiAgVGhpcyBjYW4gY2F1c2UgdGhlIGZpcnN0IHNlY3Rpb24KPiAtKyAgICAgICB0byBvdmVybGFw IHRoZSBwcm9ncmFtIGhlYWRlciB0YWJsZSBpbiBtZW1vcnk7IHdlIG5lZWQgdG8gc2hpZnQgdGhl IGZpcnN0Cj4gLSsgICAgICAgZmV3IHNlZ21lbnRzIHRvIHNvbWVwbGFjZSBlbHNlLiAqLwo+IC0r ICAgIC8qIFNvbWUgc2VjdGlvbnMgbWF5IGFscmVhZHkgYmUgcmVwbGFjZWQgc28gYWNjb3VudCBm b3IgdGhhdCAqLwo+IC0rICAgIHVuc2lnbmVkIGludCBpID0gMTsKPiAtKyAgICBFbGZfQWRkciBw aHRfc2l6ZSA9IHNpemVvZihFbGZfRWhkcikgKyAocGhkcnMuc2l6ZSgpICsgMSkqc2l6ZW9mKEVs Zl9QaGRyKTsKPiAtKyAgICB3aGlsZSggc2hkcnNbaV0uc2hfYWRkciA8PSBwaHRfc2l6ZSAmJiBp IDwgcmRpKGhkci0+ZV9zaG51bSkgKSB7Cj4gLSsgICAgICAgIGlmIChub3QgaGF2ZVJlcGxhY2Vk U2VjdGlvbihnZXRTZWN0aW9uTmFtZShzaGRyc1tpXSkpKQo+IC0rICAgICAgICAgICAgcmVwbGFj ZVNlY3Rpb24oZ2V0U2VjdGlvbk5hbWUoc2hkcnNbaV0pLCBzaGRyc1tpXS5zaF9zaXplKTsKPiAt KyAgICAgICAgaSsrOwo+IC0rICAgIH0KPiAtIAo+IC0tICAgIC8qIENvbXB1dGUgdGhlIHRvdGFs IHNwYWNlIG5lZWRlZCBmb3IgdGhlIHJlcGxhY2VkIHNlY3Rpb25zIGFuZAo+IC0tICAgICAgIHRo ZSBwcm9ncmFtIGhlYWRlcnMuICovCj4gLS0gICAgb2ZmX3QgbmVlZGVkU3BhY2UgPSAocGhkcnMu c2l6ZSgpICsgMSkgKiBzaXplb2YoRWxmX1BoZHIpOwo+IC0rICAgIC8qIENvbXB1dGUgdGhlIHRv dGFsIHNwYWNlIG5lZWRlZCBmb3IgdGhlIHJlcGxhY2VkIHNlY3Rpb25zICovCj4gLSsgICAgb2Zm X3QgbmVlZGVkU3BhY2UgPSAwOwo+IC0gICAgIGZvciAoUmVwbGFjZWRTZWN0aW9uczo6aXRlcmF0 b3IgaSA9IHJlcGxhY2VkU2VjdGlvbnMuYmVnaW4oKTsKPiAtICAgICAgICAgIGkgIT0gcmVwbGFj ZWRTZWN0aW9ucy5lbmQoKTsgKytpKQo+IC0gICAgICAgICBuZWVkZWRTcGFjZSArPSByb3VuZFVw KGktPnNlY29uZC5zaXplKCksIHNlY3Rpb25BbGlnbm1lbnQpOwo+IC0gICAgIGRlYnVnKCJuZWVk ZWQgc3BhY2UgaXMgJWRcbiIsIG5lZWRlZFNwYWNlKTsKPiAtIAo+IC0tCj4gLSAgICAgc2l6ZV90 IHN0YXJ0T2Zmc2V0ID0gcm91bmRVcChmaWxlU2l6ZSwgZ2V0UGFnZVNpemUoKSk7Cj4gLSAKPiAt ICAgICBncm93RmlsZShzdGFydE9mZnNldCArIG5lZWRlZFNwYWNlKTsKPiAtIAo+IC0tCj4gLSAg ICAgLyogRXZlbiB0aG91Z2ggdGhpcyBmaWxlIGlzIG9mIHR5cGUgRVRfRFlOLCBpdCBjb3VsZCBh Y3R1YWxseSBiZQo+IC0gICAgICAgIGFuIGV4ZWN1dGFibGUuICBGb3IgaW5zdGFuY2UsIEdvbGQg cHJvZHVjZXMgZXhlY3V0YWJsZXMgbWFya2VkCj4gLS0gICAgICAgRVRfRFlOLiAgSW4gdGhhdCBj YXNlIHdlIGNhbiBzdGlsbCBoaXQgdGhlIGtlcm5lbCBidWcgdGhhdAo+IC0tICAgICAgIG5lY2Vz c2l0YXRlZCByZXdyaXRlU2VjdGlvbnNFeGVjdXRhYmxlKCkuICBIb3dldmVyLCBzdWNoCj4gLS0g ICAgICAgZXhlY3V0YWJsZXMgYWxzbyB0ZW5kIHRvIHN0YXJ0IGF0IHZpcnR1YWwgYWRkcmVzcyAw LCBzbwo+IC0rICAgICAgIEVUX0RZTiBhcyBkb2VzIExEIHdoZW4gbGlua2luZyB3aXRoIHBpZS4g SWYgd2UgbW92ZSBQVF9QSERSLCBpdAo+IC0rICAgICAgIGhhcyB0byBzdGF5IGluIHRoZSBmaXJz dCBQVF9MT0FEIHNlZ21lbnQgb3IgYW55IHN1YnNlcXVlbnQgb25lcwo+IC0rICAgICAgIGlmIHRo ZXkncmUgY29udGludW91cyBpbiBtZW1vcnkgZHVlIHRvIGxpbnV4IGtlcm5lbCBjb25zdHJhaW50 cwo+IC0rICAgICAgIChzZWUgQlVHUykuIFNpbmNlIHRoZSBlbmQgb2YgdGhlIGZpbGUgd291bGQg YmUgYWZ0ZXIgYnNzLCB3ZSBjYW4ndAo+IC0rICAgICAgIG1vdmUgUEhEUiB0aGVyZSwgd2UgdGhl cmVmb3JlIGNob29zZSB0byBsZWF2ZSBQVF9QSERSIHdoZXJlIGl0IGlzIGJ1dAo+IC0rICAgICAg IG1vdmUgZW5vdWdoIGZvbGxvd2luZyBzZWN0aW9ucyBzdWNoIHRoYXQgd2UgY2FuIGFkZCB0aGUg ZXh0cmEgUFRfTE9BRAo+IC0rICAgICAgIHNlY3Rpb24gdG8gaXQuIFRoaXMgUFRfTE9BRCBzZWdt ZW50IGVuc3VyZXMgdGhlIHNlY3Rpb25zIGF0IHRoZSBlbmQgb2YKPiAtKyAgICAgICB0aGUgZmls ZSBhcmUgbWFwcGVkIGludG8gbWVtb3J5IGZvciBsZC5zbyB0byBwcm9jZXNzLgo+IC0rICAgICAg IFdlIGNhbid0IHVzZSB0aGUgYXBwcm9hY2ggaW4gcmV3cml0ZVNlY3Rpb25zRXhlY3V0YWJsZSgp Cj4gLSsgICAgICAgc2luY2UgRFlOIGV4ZWN1dGFibGVzIHRlbmQgdG8gc3RhcnQgYXQgdmlydHVh bCBhZGRyZXNzIDAsIHNvCj4gLSAgICAgICAgcmV3cml0ZVNlY3Rpb25zRXhlY3V0YWJsZSgpIHdv bid0IHdvcmsgYmVjYXVzZSBpdCBkb2Vzbid0IGhhdmUKPiAtLSAgICAgICBhbnkgdmlydHVhbCBh ZGRyZXNzIHNwYWNlIHRvIGdyb3cgZG93bndhcmRzIGludG8uICBBcyBhCj4gLS0gICAgICAgd29y a2Fyb3VuZCwgbWFrZSBzdXJlIHRoYXQgdGhlIHZpcnR1YWwgYWRkcmVzcyBvZiBvdXIgbmV3Cj4g LS0gICAgICAgUFRfTE9BRCBzZWdtZW50IHJlbGF0aXZlIHRvIHRoZSBmaXJzdCBQVF9MT0FEIHNl Z21lbnQgaXMgZXF1YWwKPiAtLSAgICAgICB0byBpdHMgb2Zmc2V0OyBvdGhlcndpc2Ugd2UgaGl0 IHRoZSBrZXJuZWwgYnVnLiAgVGhpcyBtYXkKPiAtLSAgICAgICByZXF1aXJlIGNyZWF0aW5nIGEg aG9sZSBpbiB0aGUgZXhlY3V0YWJsZS4gIFRoZSBiaWdnZXIgdGhlIHNpemUKPiAtLSAgICAgICBv ZiB0aGUgdW5pbml0aWFsaXNlZCBkYXRhIHNlZ21lbnQsIHRoZSBiaWdnZXIgdGhlIGhvbGUuICov Cj4gLSsgICAgICAgYW55IHZpcnR1YWwgYWRkcmVzcyBzcGFjZSB0byBncm93IGRvd253YXJkcyBp bnRvLiAqLwo+IC0gICAgIGlmIChpc0V4ZWN1dGFibGUpIHsKPiAtICAgICAgICAgaWYgKHN0YXJ0 T2Zmc2V0ID49IHN0YXJ0UGFnZSkgewo+IC0gICAgICAgICAgICAgZGVidWcoInNoaWZ0aW5nIG5l dyBQVF9MT0FEIHNlZ21lbnQgYnkgJWQgYnl0ZXMgdG8gd29yayBhcm91bmQgYSBMaW51eCBrZXJu ZWwgYnVnXG4iLCBzdGFydE9mZnNldCAtIHN0YXJ0UGFnZSk7Cj4gLS0gICAgICAgIH0gZWxzZSB7 Cj4gLS0gICAgICAgICAgICBzaXplX3QgaG9sZSA9IHN0YXJ0UGFnZSAtIHN0YXJ0T2Zmc2V0Owo+ IC0tICAgICAgICAgICAgLyogUHJpbnQgYSB3YXJuaW5nLCBiZWNhdXNlIHRoZSBob2xlIGNvdWxk IGJlIHZlcnkgYmlnLiAqLwo+IC0tICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJ3YXJuaW5n OiB3b3JraW5nIGFyb3VuZCBhIExpbnV4IGtlcm5lbCBidWcgYnkgY3JlYXRpbmcgYSBob2xlIG9m ICV6dSBieXRlcyBpbiDigJglc+KAmVxuIiwgaG9sZSwgZmlsZU5hbWUuY19zdHIoKSk7Cj4gLS0g ICAgICAgICAgICBhc3NlcnQoaG9sZSAlIGdldFBhZ2VTaXplKCkgPT0gMCk7Cj4gLS0gICAgICAg ICAgICAvKiAhISEgV2UgY291bGQgY3JlYXRlIGFuIGFjdHVhbCBob2xlIGluIHRoZSBmaWxlIGhl cmUsCj4gLS0gICAgICAgICAgICAgICBidXQgaXQncyBwcm9iYWJseSBub3Qgd29ydGggdGhlIGVm Zm9ydC4gKi8KPiAtLSAgICAgICAgICAgIGdyb3dGaWxlKGZpbGVTaXplICsgaG9sZSk7Cj4gLS0g ICAgICAgICAgICBzdGFydE9mZnNldCArPSBob2xlOwo+IC0gICAgICAgICB9Cj4gLSAgICAgICAg IHN0YXJ0UGFnZSA9IHN0YXJ0T2Zmc2V0Owo+IC0gICAgIH0KPiAtIAo+IC0gCj4gLS0gICAgLyog QWRkIGEgc2VnbWVudCB0aGF0IG1hcHMgdGhlIHJlcGxhY2VkIHNlY3Rpb25zIGFuZCBwcm9ncmFt Cj4gLS0gICAgICAgaGVhZGVycyBpbnRvIG1lbW9yeS4gKi8KPiAtKyAgICAvKiBBZGQgYSBzZWdt ZW50IHRoYXQgbWFwcyB0aGUgcmVwbGFjZWQgc2VjdGlvbnMgaW50byBtZW1vcnkuICovCj4gLSAg ICAgcGhkcnMucmVzaXplKHJkaShoZHItPmVfcGhudW0pICsgMSk7Cj4gLSAgICAgd3JpKGhkci0+ ZV9waG51bSwgcmRpKGhkci0+ZV9waG51bSkgKyAxKTsKPiAtICAgICBFbGZfUGhkciAmIHBoZHIg PSBwaGRyc1tyZGkoaGRyLT5lX3BobnVtKSAtIDFdOwo+IC1AQCAtNzA2LDE1ICs3MTgsMTIgQEAg dm9pZCBFbGZGaWxlPEVsZkZpbGVQYXJhbU5hbWVzPjo6cmV3cml0ZVNlY3Rpb25zTGlicmFyeSgp Cj4gLSAKPiAtIAo+IC0gICAgIC8qIFdyaXRlIG91dCB0aGUgcmVwbGFjZWQgc2VjdGlvbnMuICov Cj4gLS0gICAgRWxmX09mZiBjdXJPZmYgPSBzdGFydE9mZnNldCArIHBoZHJzLnNpemUoKSAqIHNp emVvZihFbGZfUGhkcik7Cj4gLSsgICAgRWxmX09mZiBjdXJPZmYgPSBzdGFydE9mZnNldDsKPiAt ICAgICB3cml0ZVJlcGxhY2VkU2VjdGlvbnMoY3VyT2ZmLCBzdGFydFBhZ2UsIHN0YXJ0T2Zmc2V0 KTsKPiAtICAgICBhc3NlcnQoY3VyT2ZmID09IHN0YXJ0T2Zmc2V0ICsgbmVlZGVkU3BhY2UpOwo+ IC0gCj4gLS0KPiAtLSAgICAvKiBNb3ZlIHRoZSBwcm9ncmFtIGhlYWRlciB0byB0aGUgc3RhcnQg b2YgdGhlIG5ldyBhcmVhLiAqLwo+IC0tICAgIHdyaShoZHItPmVfcGhvZmYsIHN0YXJ0T2Zmc2V0 KTsKPiAtLQo+IC0tICAgIHJld3JpdGVIZWFkZXJzKHN0YXJ0UGFnZSk7Cj4gLSsgICAgLyogV3Jp dGUgb3V0IHRoZSB1cGRhdGVkIHByb2dyYW0gYW5kIHNlY3Rpb24gaGVhZGVycyAqLwo+IC0rICAg IHJld3JpdGVIZWFkZXJzKGhkci0+ZV9waG9mZik7Cj4gLSB9Cj4gLSAKPiAtIAo+IC0tLSAKPiAt Mi4xNy4xCj4gLQo+IGRpZmYgLS1naXQgYS9wYWNrYWdlL3BhdGNoZWxmLzAwMDYtRml4LXNoYXJl ZC1saWJyYXJ5LWNvcnJ1cHRpb24td2hlbi1yZXJ1bm5pbmctcGF0Y2hlbC5wYXRjaCBiL3BhY2th Z2UvcGF0Y2hlbGYvMDAwNi1GaXgtc2hhcmVkLWxpYnJhcnktY29ycnVwdGlvbi13aGVuLXJlcnVu bmluZy1wYXRjaGVsLnBhdGNoCj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggOWZi M2UyNjBjMS4uMDAwMDAwMDAwMAo+IC0tLSBhL3BhY2thZ2UvcGF0Y2hlbGYvMDAwNi1GaXgtc2hh cmVkLWxpYnJhcnktY29ycnVwdGlvbi13aGVuLXJlcnVubmluZy1wYXRjaGVsLnBhdGNoCj4gKysr IC9kZXYvbnVsbAo+IEBAIC0xLDU1ICswLDAgQEAKPiAtRnJvbSA1ZGY0NzkxYmYwNzcxMjc2ODRm YWNlZWVlYThiZmFiMDYzZTQzNzc0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQo+IC1Gcm9tOiBS aWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KPiAtRGF0 ZTogV2VkLCAzIEp1biAyMDIwIDEyOjE0OjU4ICswMTAwCj4gLVN1YmplY3Q6IFtQQVRDSF0gRml4 IHNoYXJlZCBsaWJyYXJ5IGNvcnJ1cHRpb24gd2hlbiByZXJ1bm5pbmcgcGF0Y2hlbGYKPiAtCj4g LVdoZW4gcnVubmluZyBwYXRjaGVsZiBvbiBzb21lIGV4aXN0aW5nIHBhdGNoZWxmJ2QgYmluYXJp ZXMgdG8gY2hhbmdlIHRvIGxvbmdlcgo+IC1SUEFUSFMsIGxkZCB3b3VsZCByZXBvcnQgdGhlIGJp bmFyaWVzIGFzIGludmFsaWQuIFRoZSBvdXRwdXQgb2Ygb2JqZHVtcCAteCBvbgo+IC10aG9zZSBs aWJyYXJ5aWVzIHNob3VsZCBzaG93IHRoZSB0b3Agb2YgdGhlIC5keW5hbWljIHNlY3Rpb24gaXMg Z2V0dGluZyB0cmFzaGVkLAo+IC1zb21ldGhpbmcgbGlrZToKPiAtCj4gLTB4NjAwMDAwMDAxIDB4 MDAwMDAwMDAwMDQyOTAwMAo+IC0weDMzNTAwMCAweDAwMDAwMDAwMDAzMzUwMDAKPiAtMHhjNzQw IDB4MDAwMDAwMDAwMDAwYzc0MAo+IC0weDEwMDAgMHgwMDAwMDAwMDAwMDA5MDk4Cj4gLVNPTkFN RSBsaWJnbGliLTIuMC5zby4wCj4gLQo+IC0od2hpY2ggc2hvdWxkIGJlIFJQQVRIIGFuZCBEVF9O RUVERUQgZW50cmllcykKPiAtCj4gLVRoaXMgd2FzIHRyYWNrZWQgZG93biB0byB0aGUgY29kZSB3 aGljaCBpbmplY3RzIHRoZSBQVF9MT0FEIHNlY3Rpb24uCj4gLQo+IC1UaGUgaXNzdWUgaXMgdGhh dCBpZiB0aGUgcHJvZ3JhbSBoZWFkZXJzIHdlcmUgcHJldmlvdXNseSByZWxvY2F0ZWQgdG8gdGhl IGVuZAo+IC1vZiB0aGUgZmlsZSB3aGljaCB3YXMgaG93IHBhdGNoZWxmIG9wZXJhdGVkIHByZXZp b3VzbHksIHRoZSByZWxvY2F0aW9uIGNvZGUKPiAtd291bGRuJ3Qgd29yayBwcm9wZXJseSBvbiBh IHNlY29uZCBydW4gYXMgaXQgbm93IGFzc3VtZXMgdGhleSdyZSBsb2NhdGVkIGFmdGVyCj4gLXRo ZSBlbGYgaGVhZGVyLiBUaGlzIGNoYW5nZSBmb3JjZXMgdGhlbSBiYWNrIHRvIGltbWVkaWF0ZWx5 IGZvbGxvdyB0aGUgZWxmCj4gLWhlYWRlciB3aGljaCBpcyB3aGVyZSB0aGUgY29kZSBoYXMgbWFk ZSBzcGFjZSBmb3IgdGhlbS4KPiAtCj4gLVNob3VsZCBmaXggaHR0cHM6Ly9naXRodWIuY29tL05p eE9TL3BhdGNoZWxmL2lzc3Vlcy8xNzAKPiAtYW5kIGh0dHBzOi8vZ2l0aHViLmNvbS9OaXhPUy9w YXRjaGVsZi9pc3N1ZXMvMTkyCj4gLQo+IC1TaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFB1cmRpZSA8 cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KPiAtCj4gLUZldGNoIGZyb206IGh0 dHBzOi8vZ2l0aHViLmNvbS9OaXhPUy9wYXRjaGVsZi9jb21taXQvYWQ1ZjFmMDc4YjcxNjgwMmRm YjhmNzIyNmNiMWQ1YzcyMDM0OGE3OAo+IC0KPiAtQmFja3BvcnRlZCB0byB2MC45Cj4gLQo+IC1T aWduZWQtb2ZmLWJ5OiBDb25yYWQgUmF0c2NoYW4gPGNvbnJhZC5yYXRzY2hhbkByb2Nrd2VsbGNv bGxpbnMuY29tPgo+IC0tLS0KPiAtIHNyYy9wYXRjaGVsZi5jYyB8IDEgKwo+IC0gMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspCj4gLQo+IC1kaWZmIC0tZ2l0IGEvc3JjL3BhdGNoZWxmLmNj IGIvc3JjL3BhdGNoZWxmLmNjCj4gLWluZGV4IGMyMTQ3YWYuLjEyMjRhODkgMTAwNjQ0Cj4gLS0t LSBhL3NyYy9wYXRjaGVsZi5jYwo+IC0rKysgYi9zcmMvcGF0Y2hlbGYuY2MKPiAtQEAgLTcwNiw2 ICs3MDYsNyBAQCB2b2lkIEVsZkZpbGU8RWxmRmlsZVBhcmFtTmFtZXM+OjpyZXdyaXRlU2VjdGlv bnNMaWJyYXJ5KCkKPiAtIAo+IC0gCj4gLSAgICAgLyogQWRkIGEgc2VnbWVudCB0aGF0IG1hcHMg dGhlIHJlcGxhY2VkIHNlY3Rpb25zIGludG8gbWVtb3J5LiAqLwo+IC0rICAgIHdyaShoZHItPmVf cGhvZmYsIHNpemVvZihFbGZfRWhkcikpOwo+IC0gICAgIHBoZHJzLnJlc2l6ZShyZGkoaGRyLT5l X3BobnVtKSArIDEpOwo+IC0gICAgIHdyaShoZHItPmVfcGhudW0sIHJkaShoZHItPmVfcGhudW0p ICsgMSk7Cj4gLSAgICAgRWxmX1BoZHIgJiBwaGRyID0gcGhkcnNbcmRpKGhkci0+ZV9waG51bSkg LSAxXTsKPiAtLS0gCj4gLTIuMTcuMQo+IC0KPiBkaWZmIC0tZ2l0IGEvcGFja2FnZS9wYXRjaGVs Zi8wMDA3LWZpeC1hZGp1c3Rpbmctc3RhcnRQYWdlLnBhdGNoIGIvcGFja2FnZS9wYXRjaGVsZi8w MDA3LWZpeC1hZGp1c3Rpbmctc3RhcnRQYWdlLnBhdGNoCj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0Cj4gaW5kZXggZmQwNDQ5NjRlMC4uMDAwMDAwMDAwMAo+IC0tLSBhL3BhY2thZ2UvcGF0Y2hl bGYvMDAwNy1maXgtYWRqdXN0aW5nLXN0YXJ0UGFnZS5wYXRjaAo+ICsrKyAvZGV2L251bGwKPiBA QCAtMSw0NSArMCwwIEBACj4gLUZyb20gNGE4MmM5N2U4YTA2Nzc3MDZkMWQ1MzI4MTJkYWFhNzMy NDk3NjhhOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKPiAtRnJvbTogRWQgQmFydG9zaCA8ZWQu YmFydG9zaEBsaW51eC5pbnRlbC5jb20+Cj4gLURhdGU6IEZyaSwgMjEgSnVsIDIwMTcgMTI6MzM6 NTMgKzAzMDAKPiAtU3ViamVjdDogW1BBVENIXSBmaXggYWRqdXN0aW5nIHN0YXJ0UGFnZQo+IC0K PiAtc3RhcnRQYWdlIGlzIGFkanVzdGVkIHVuY29uZGl0aW9uYWxseSBmb3IgYWxsIGV4ZWN1dGFi bGVzLgo+IC1UaGlzIHJlc3VsdHMgaW4gaW5jb3JyZWN0IGFkZHJlc3NlcyBhc3NpZ25lZCB0byBJ TlRFUlAgYW5kIExPQUQKPiAtcHJvZ3JhbSBoZWFkZXJzLCB3aGljaCBicmVha3MgcGF0Y2hlZCBl eGVjdXRhYmxlLgo+IC0KPiAtQWRqdXN0aW5nIHN0YXJ0UGFnZSB2YXJpYWJsZSBvbmx5IHdoZW4g c3RhcnRPZmZzZXQgPiBzdGFydFBhZ2UKPiAtc2hvdWxkIGZpeCB0aGlzLgo+IC0KPiAtVGhpcyBj aGFuZ2UgaXMgcmVsYXRlZCB0byB0aGUgaXNzdWUgTml4T1MjMTAKPiAtCj4gLVNpZ25lZC1vZmYt Ynk6IEVkIEJhcnRvc2ggPGVkLmJhcnRvc2hAbGludXguaW50ZWwuY29tPgo+IC0KPiAtRmV0Y2gg ZnJvbTogaHR0cHM6Ly9naXRodWIuY29tL05peE9TL3BhdGNoZWxmL2NvbW1pdC8xY2MyMzRmZWE1 NjAwMTkwZDg3MjMyOWFjYTYwZTIzNjVjZWZjMzllCj4gLQo+IC1CYWNrcG9ydGVkIHRvIHYwLjkK PiAtCj4gLVNpZ25lZC1vZmYtYnk6IENvbnJhZCBSYXRzY2hhbiA8Y29ucmFkLnJhdHNjaGFuQHJv Y2t3ZWxsY29sbGlucy5jb20+Cj4gLS0tLQo+IC0gc3JjL3BhdGNoZWxmLmNjIHwgNiArKy0tLS0K PiAtIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCj4gLQo+ IC1kaWZmIC0tZ2l0IGEvc3JjL3BhdGNoZWxmLmNjIGIvc3JjL3BhdGNoZWxmLmNjCj4gLWluZGV4 IDEyMjRhODkuLjQ2NzYxNTcgMTAwNjQ0Cj4gLS0tLSBhL3NyYy9wYXRjaGVsZi5jYwo+IC0rKysg Yi9zcmMvcGF0Y2hlbGYuY2MKPiAtQEAgLTY5NywxMCArNjk3LDggQEAgdm9pZCBFbGZGaWxlPEVs ZkZpbGVQYXJhbU5hbWVzPjo6cmV3cml0ZVNlY3Rpb25zTGlicmFyeSgpCj4gLSAgICAgICAgc2lu Y2UgRFlOIGV4ZWN1dGFibGVzIHRlbmQgdG8gc3RhcnQgYXQgdmlydHVhbCBhZGRyZXNzIDAsIHNv Cj4gLSAgICAgICAgcmV3cml0ZVNlY3Rpb25zRXhlY3V0YWJsZSgpIHdvbid0IHdvcmsgYmVjYXVz ZSBpdCBkb2Vzbid0IGhhdmUKPiAtICAgICAgICBhbnkgdmlydHVhbCBhZGRyZXNzIHNwYWNlIHRv IGdyb3cgZG93bndhcmRzIGludG8uICovCj4gLS0gICAgaWYgKGlzRXhlY3V0YWJsZSkgewo+IC0t ICAgICAgICBpZiAoc3RhcnRPZmZzZXQgPj0gc3RhcnRQYWdlKSB7Cj4gLS0gICAgICAgICAgICBk ZWJ1Zygic2hpZnRpbmcgbmV3IFBUX0xPQUQgc2VnbWVudCBieSAlZCBieXRlcyB0byB3b3JrIGFy b3VuZCBhIExpbnV4IGtlcm5lbCBidWdcbiIsIHN0YXJ0T2Zmc2V0IC0gc3RhcnRQYWdlKTsKPiAt LSAgICAgICAgfQo+IC0rICAgIGlmIChpc0V4ZWN1dGFibGUgJiYgc3RhcnRPZmZzZXQgPiBzdGFy dFBhZ2UpIHsKPiAtKyAgICAgICAgZGVidWcoInNoaWZ0aW5nIG5ldyBQVF9MT0FEIHNlZ21lbnQg YnkgJWQgYnl0ZXMgdG8gd29yayBhcm91bmQgYSBMaW51eCBrZXJuZWwgYnVnXG4iLCBzdGFydE9m ZnNldCAtIHN0YXJ0UGFnZSk7Cj4gLSAgICAgICAgIHN0YXJ0UGFnZSA9IHN0YXJ0T2Zmc2V0Owo+ IC0gICAgIH0KPiAtIAo+IC0tLSAKPiAtMi4xNy4xCj4gLQo+IGRpZmYgLS1naXQgYS9wYWNrYWdl L3BhdGNoZWxmLzAwMDgtVXNlLXNoX29mZnNldC1pbnN0ZWFkLW9mLXNoX2FkZHItd2hlbi1jaGVj a2luZy1hbHJlYS5wYXRjaCBiL3BhY2thZ2UvcGF0Y2hlbGYvMDAwOC1Vc2Utc2hfb2Zmc2V0LWlu c3RlYWQtb2Ytc2hfYWRkci13aGVuLWNoZWNraW5nLWFscmVhLnBhdGNoCj4gZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0Cj4gaW5kZXggZDQyM2NhZDIzYS4uMDAwMDAwMDAwMAo+IC0tLSBhL3BhY2th Z2UvcGF0Y2hlbGYvMDAwOC1Vc2Utc2hfb2Zmc2V0LWluc3RlYWQtb2Ytc2hfYWRkci13aGVuLWNo ZWNraW5nLWFscmVhLnBhdGNoCj4gKysrIC9kZXYvbnVsbAo+IEBAIC0xLDM4ICswLDAgQEAKPiAt RnJvbSBjYjgzMjZkZTU0YWQ3YTU2NjU4YjBkYzhlZmI3ZGE1ZTcxNjg0YTdjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQo+IC1Gcm9tOiBQYWJsbyBHYWxpbmRvIDxwYWJsb2dzYWxAZ21haWwuY29t Pgo+IC1EYXRlOiBUdWUsIDIyIFNlcCAyMDIwIDAxOjMzOjQ3ICswMTAwCj4gLVN1YmplY3Q6IFtQ QVRDSF0gVXNlIHNoX29mZnNldCBpbnN0ZWFkIG9mIHNoX2FkZHIgd2hlbiBjaGVja2luZyBhbHJl YWR5Cj4gLSByZXBsYWNlZCBsaWJzCj4gLQo+IC1XaGVuIGNoZWNraW5nIGZvciBhbHJlYWR5IHJl cGxhY2VkIGxpYnMsIHRoZSBjaGVjayBhZ2FpbnN0IHRoZSBzaXplIG11c3QKPiAtYmUgZG9uZSB1 c2luZyB0aGUgc2VjdGlvbiBoZWFkZXIgb2Zmc2V0LCBub3QgdGhlIHNlY3Rpb24gZmlsZSBhZGRy ZXNzLgo+IC1UaGlzIHdhcyBub3QgY3Jhc2hpbmcgaW4gbWFueSBzaXR1YXRpb25zIGJlY2F1c2Ug bm9ybWFsbHkgc2hfYWRkcmVzcyBhbmQKPiAtc2hfb2Zmc2V0IGhhdmUgdGhlIHNhbWUgdmFsdWUg YnV0IHRoZXNlIHR3byBtYXkgZGlmZmVyIGFuZCB1c2luZyB0aGUKPiAtc2hfYWRkcmVzcyB2YWx1 ZSBpbnN0ZWFkIGNhbiBjYXVzZSBsaWJyYXJ5IGNvcnJ1cHRpb24gaW4gdGhlc2UKPiAtc2l0dWF0 aW9ucy4KPiAtCj4gLUZldGNoIGZyb206IGh0dHBzOi8vZ2l0aHViLmNvbS9OaXhPUy9wYXRjaGVs Zi9jb21taXQvODNhYTg5YWRkZjg3NTdlMmQ2M2FhNzMyMjJmMmZhOWJjNmQ3MzIxYQo+IC0KPiAt QmFja3BvcnRlZCB0byB2MC45Cj4gLQo+IC1TaWduZWQtb2ZmLWJ5OiBDb25yYWQgUmF0c2NoYW4g PGNvbnJhZC5yYXRzY2hhbkByb2Nrd2VsbGNvbGxpbnMuY29tPgo+IC0tLS0KPiAtIHNyYy9wYXRj aGVsZi5jYyB8IDIgKy0KPiAtIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxl dGlvbigtKQo+IC0KPiAtZGlmZiAtLWdpdCBhL3NyYy9wYXRjaGVsZi5jYyBiL3NyYy9wYXRjaGVs Zi5jYwo+IC1pbmRleCA0Njc2MTU3Li5jMDI1YWUyIDEwMDY0NAo+IC0tLS0gYS9zcmMvcGF0Y2hl bGYuY2MKPiAtKysrIGIvc3JjL3BhdGNoZWxmLmNjCj4gLUBAIC02NjYsNyArNjY2LDcgQEAgdm9p ZCBFbGZGaWxlPEVsZkZpbGVQYXJhbU5hbWVzPjo6cmV3cml0ZVNlY3Rpb25zTGlicmFyeSgpCj4g LSAgICAgLyogU29tZSBzZWN0aW9ucyBtYXkgYWxyZWFkeSBiZSByZXBsYWNlZCBzbyBhY2NvdW50 IGZvciB0aGF0ICovCj4gLSAgICAgdW5zaWduZWQgaW50IGkgPSAxOwo+IC0gICAgIEVsZl9BZGRy IHBodF9zaXplID0gc2l6ZW9mKEVsZl9FaGRyKSArIChwaGRycy5zaXplKCkgKyAxKSpzaXplb2Yo RWxmX1BoZHIpOwo+IC0tICAgIHdoaWxlKCBzaGRyc1tpXS5zaF9hZGRyIDw9IHBodF9zaXplICYm IGkgPCByZGkoaGRyLT5lX3NobnVtKSApIHsKPiAtKyAgICB3aGlsZSggc2hkcnNbaV0uc2hfb2Zm c2V0IDw9IHBodF9zaXplICYmIGkgPCByZGkoaGRyLT5lX3NobnVtKSApIHsKPiAtICAgICAgICAg aWYgKG5vdCBoYXZlUmVwbGFjZWRTZWN0aW9uKGdldFNlY3Rpb25OYW1lKHNoZHJzW2ldKSkpCj4g LSAgICAgICAgICAgICByZXBsYWNlU2VjdGlvbihnZXRTZWN0aW9uTmFtZShzaGRyc1tpXSksIHNo ZHJzW2ldLnNoX3NpemUpOwo+IC0gICAgICAgICBpKys7Cj4gLS0tIAo+IC0yLjE3LjEKPiAtCj4g ZGlmZiAtLWdpdCBhL3BhY2thZ2UvcGF0Y2hlbGYvMDAwOS1GaXgtaXNzdWUtNjYtYnktaWdub3Jp bmctdGhlLWZpcnN0LXNlY3Rpb24taGVhZGVyLXdoLnBhdGNoIGIvcGFja2FnZS9wYXRjaGVsZi8w MDA5LUZpeC1pc3N1ZS02Ni1ieS1pZ25vcmluZy10aGUtZmlyc3Qtc2VjdGlvbi1oZWFkZXItd2gu cGF0Y2gKPiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCBhODIwZjJkMWQyLi4wMDAw MDAwMDAwCj4gLS0tIGEvcGFja2FnZS9wYXRjaGVsZi8wMDA5LUZpeC1pc3N1ZS02Ni1ieS1pZ25v cmluZy10aGUtZmlyc3Qtc2VjdGlvbi1oZWFkZXItd2gucGF0Y2gKPiArKysgL2Rldi9udWxsCj4g QEAgLTEsNDEgKzAsMCBAQAo+IC1Gcm9tIGUyMmNhMmY1OTNhYThmZDM5MmYxYWM0ZjhkZDEwNGJj NTZkMGQxMDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCj4gLUZyb206IEV6cmEgQ29vcGVyIDxl enJhQHF1bXVsby5jb20+Cj4gLURhdGU6IFRodSwgMjEgSnVuIDIwMTggMTE6MDc6MzUgLTA3MDAK PiAtU3ViamVjdDogW1BBVENIXSBGaXggaXNzdWUgIzY2IGJ5IGlnbm9yaW5nIHRoZSBmaXJzdCBz ZWN0aW9uIGhlYWRlciB3aGVuCj4gLSBzb3J0aW5nLCBhbmQgbm90IG92ZXJ3cml0aW5nIE5PQklU UyBlbnRyaWVzLgo+IC0KPiAtRmV0Y2ggZnJvbTogaHR0cHM6Ly9naXRodWIuY29tL05peE9TL3Bh dGNoZWxmL2NvbW1pdC81MmFiOTA4Mzk0OTU4YTJhNWQwNDc2ZTMwNmUyY2FkNGRhNGZkZWFlCj4g LQo+IC1CYWNrcG9ydGVkIHRvIHYwLjkKPiAtCj4gLVNpZ25lZC1vZmYtYnk6IENvbnJhZCBSYXRz Y2hhbiA8Y29ucmFkLnJhdHNjaGFuQHJvY2t3ZWxsY29sbGlucy5jb20+Cj4gLS0tLQo+IC0gc3Jj L3BhdGNoZWxmLmNjIHwgNSArKystLQo+IC0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygr KSwgMiBkZWxldGlvbnMoLSkKPiAtCj4gLWRpZmYgLS1naXQgYS9zcmMvcGF0Y2hlbGYuY2MgYi9z cmMvcGF0Y2hlbGYuY2MKPiAtaW5kZXggYzAyNWFlMi4uZmEyOTQ1ZSAxMDA2NDQKPiAtLS0tIGEv c3JjL3BhdGNoZWxmLmNjCj4gLSsrKyBiL3NyYy9wYXRjaGVsZi5jYwo+IC1AQCAtNDM1LDcgKzQz NSw3IEBAIHZvaWQgRWxmRmlsZTxFbGZGaWxlUGFyYW1OYW1lcz46OnNvcnRTaGRycygpCj4gLSAg ICAgLyogU29ydCB0aGUgc2VjdGlvbnMgYnkgb2Zmc2V0LiAqLwo+IC0gICAgIENvbXBTaGRyIGNv bXA7Cj4gLSAgICAgY29tcC5lbGZGaWxlID0gdGhpczsKPiAtLSAgICBzb3J0KHNoZHJzLmJlZ2lu KCksIHNoZHJzLmVuZCgpLCBjb21wKTsKPiAtKyAgICBzb3J0KHNoZHJzLmJlZ2luKCkgKyAxLCBz aGRycy5lbmQoKSwgY29tcCk7Cj4gLSAKPiAtICAgICAvKiBSZXN0b3JlIHRoZSBzaF9saW5rIG1h cHBpbmdzLiAqLwo+IC0gICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAxOyBpIDwgcmRpKGhkci0+ ZV9zaG51bSk7ICsraSkKPiAtQEAgLTU4Niw3ICs1ODYsOCBAQCB2b2lkIEVsZkZpbGU8RWxmRmls ZVBhcmFtTmFtZXM+Ojp3cml0ZVJlcGxhY2VkU2VjdGlvbnMoRWxmX09mZiAmIGN1ck9mZiwKPiAt ICAgICB7Cj4gLSAgICAgICAgIHN0cmluZyBzZWN0aW9uTmFtZSA9IGktPmZpcnN0Owo+IC0gICAg ICAgICBFbGZfU2hkciAmIHNoZHIgPSBmaW5kU2VjdGlvbihzZWN0aW9uTmFtZSk7Cj4gLS0gICAg ICAgIG1lbXNldChjb250ZW50cyArIHJkaShzaGRyLnNoX29mZnNldCksICdYJywgcmRpKHNoZHIu c2hfc2l6ZSkpOwo+IC0rICAgICAgICBpZiAoc2hkci5zaF90eXBlICE9IFNIVF9OT0JJVFMpCj4g LSsgICAgICAgICAgICBtZW1zZXQoY29udGVudHMgKyByZGkoc2hkci5zaF9vZmZzZXQpLCAnWCcs IHJkaShzaGRyLnNoX3NpemUpKTsKPiAtICAgICB9Cj4gLSAKPiAtICAgICBmb3IgKFJlcGxhY2Vk U2VjdGlvbnM6Oml0ZXJhdG9yIGkgPSByZXBsYWNlZFNlY3Rpb25zLmJlZ2luKCk7Cj4gLS0tIAo+ IC0yLjE3LjEKPiAtCj4gZGlmZiAtLWdpdCBhL3BhY2thZ2UvcGF0Y2hlbGYvMDAxMC1GaXgtZW5k aWFubmVzcy1pc3N1ZXMtZm9yLXBvd2VycGMtUElFLnBhdGNoIGIvcGFja2FnZS9wYXRjaGVsZi8w MDEwLUZpeC1lbmRpYW5uZXNzLWlzc3Vlcy1mb3ItcG93ZXJwYy1QSUUucGF0Y2gKPiBkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCA2YTM1MDBiOTFlLi4wMDAwMDAwMDAwCj4gLS0tIGEv cGFja2FnZS9wYXRjaGVsZi8wMDEwLUZpeC1lbmRpYW5uZXNzLWlzc3Vlcy1mb3ItcG93ZXJwYy1Q SUUucGF0Y2gKPiArKysgL2Rldi9udWxsCj4gQEAgLTEsODAgKzAsMCBAQAo+IC1Gcm9tIGM2MWMy OTYwZDc4MmM2NzU2Njc5MGIyMTAxNjNmZjljNzk5ZjAxOGEgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCj4gLUZyb206IENvbnJhZCBSYXRzY2hhbiA8cmF0c2NoYW5jZUBnbWFpbC5jb20+Cj4gLURh dGU6IFNhdCwgMyBPY3QgMjAyMCAyMDoxNzoyNCAtMDUwMAo+IC1TdWJqZWN0OiBbUEFUQ0hdIEZp eCBlbmRpYW5uZXNzIGlzc3VlcyBmb3IgcG93ZXJwYyBQSUUKPiAtCj4gLVByZXZpb3VzbHkgd2hl biBydW5uaW5nIGBwYXRjaGVsZiAtLXNldC1ycGF0aCAiL3Vzci9zYmluIiBteV9iaW5gIG9uIGEK PiAtUElFIHBwYzMyIGJpbmFyeSB0aGF0IGhhZCBubyBSUEFUSCBhIGZldyBpc3N1ZXMgd2VyZSBl bmNvdW50ZXJlZC4KPiAtCj4gLVRoaXMgY29tbWl0IGZpeGVzOgo+IC0KPiAtMS4gVGhlIFBUX1BI RFIgYmVpbmcgc29ydGVkIGltcHJvcGVybHkgZHVlIHRvIHRoZSB0eXBlIGJlaW5nIHJlYWQgaW4K PiAtICAgaW5jb3JyZWN0IGVuZGlhbm5lc3MKPiAtCj4gLTMuIFRoZSBpbnRlcnByZXRlciBiZWlu ZyBjbG9iYmVyZWQgZHVlIHRvIHRoZSByZXBsYWNlIHNlY3Rpb25zIHJvdXRpbmUKPiAtICAgcmVh ZGluZyBzaF9vZmZzZXQgYW5kIHNoX3NpemUgaW4gaW5jb3JyZWN0IGVuZGlhbm5lc3MKPiAtCj4g LTQuIFRoZSBQSERSIHNlZ21lbnQgaGF2aW5nIGFuIGluY29ycmVjdCB2aXJ0IGFuZCBwaHlzIGFk ZHJlc3MgZHVlIHRvCj4gLSAgIHJlYWRpbmcgdGhlIGVfcGhvZmYgaW4gdGhlIGluY29ycmVjdCBl bmRpYW5uZXNzCj4gLQo+IC1UaGlzIGFsc28gZml4ZXMgYSByZWFkIG9mIHRoZSBzaGRyLnNoX3R5 cGUgaW4gd3JpdGVSZXBsYWNlZFNlY3Rpb25zIGJ1dAo+IC10aGlzIHdhcyBub3QgZW5jb3VudGVy ZWQgZHVyaW5nIHRlc3RpbmcuCj4gLQo+IC1GZXRjaCBmcm9tOiBodHRwczovL2dpdGh1Yi5jb20v Tml4T1MvcGF0Y2hlbGYvY29tbWl0Lzg4NGVjY2M0ZjA2MWEzZGJkYmU2M2E0YzczZjFjYzliYmY3 N2ZhN2QKPiAtCj4gLUJhY2twb3J0ZWQgdG8gdjAuOS4gUmVtb3ZlZCBpdGVtIDIgZnJvbSB0aGUg Zml4IGxpc3QgYXMgaXQgaXMgbm90Cj4gLWFwcGxpY2FibGUgdG8gdjAuOS4KPiAtCj4gLVNpZ25l ZC1vZmYtYnk6IENvbnJhZCBSYXRzY2hhbiA8Y29ucmFkLnJhdHNjaGFuQHJvY2t3ZWxsY29sbGlu cy5jb20+Cj4gLS0tLQo+IC0gc3JjL3BhdGNoZWxmLmNjIHwgMTIgKysrKysrLS0tLS0tCj4gLSAx IGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQo+IC0KPiAtZGlm ZiAtLWdpdCBhL3NyYy9wYXRjaGVsZi5jYyBiL3NyYy9wYXRjaGVsZi5jYwo+IC1pbmRleCBmYTI5 NDVlLi5lNjBiMTdjIDEwMDY0NAo+IC0tLS0gYS9zcmMvcGF0Y2hlbGYuY2MKPiAtKysrIGIvc3Jj L3BhdGNoZWxmLmNjCj4gLUBAIC0xNzMsOCArMTczLDggQEAgcHJpdmF0ZToKPiAtICAgICAgICAg RWxmRmlsZSAqIGVsZkZpbGU7Cj4gLSAgICAgICAgIGJvb2wgb3BlcmF0b3IgKCkoY29uc3QgRWxm X1BoZHIgJiB4LCBjb25zdCBFbGZfUGhkciAmIHkpCj4gLSAgICAgICAgIHsKPiAtLSAgICAgICAg ICAgIGlmICh4LnBfdHlwZSA9PSBQVF9QSERSKSByZXR1cm4gdHJ1ZTsKPiAtLSAgICAgICAgICAg IGlmICh5LnBfdHlwZSA9PSBQVF9QSERSKSByZXR1cm4gZmFsc2U7Cj4gLSsgICAgICAgICAgICBp ZiAoZWxmRmlsZS0+cmRpKHgucF90eXBlKSA9PSBQVF9QSERSKSByZXR1cm4gdHJ1ZTsKPiAtKyAg ICAgICAgICAgIGlmIChlbGZGaWxlLT5yZGkoeS5wX3R5cGUpID09IFBUX1BIRFIpIHJldHVybiBm YWxzZTsKPiAtICAgICAgICAgICAgIHJldHVybiBlbGZGaWxlLT5yZGkoeC5wX3BhZGRyKSA8IGVs ZkZpbGUtPnJkaSh5LnBfcGFkZHIpOwo+IC0gICAgICAgICB9Cj4gLSAgICAgfTsKPiAtQEAgLTU4 Niw3ICs1ODYsNyBAQCB2b2lkIEVsZkZpbGU8RWxmRmlsZVBhcmFtTmFtZXM+Ojp3cml0ZVJlcGxh Y2VkU2VjdGlvbnMoRWxmX09mZiAmIGN1ck9mZiwKPiAtICAgICB7Cj4gLSAgICAgICAgIHN0cmlu ZyBzZWN0aW9uTmFtZSA9IGktPmZpcnN0Owo+IC0gICAgICAgICBFbGZfU2hkciAmIHNoZHIgPSBm aW5kU2VjdGlvbihzZWN0aW9uTmFtZSk7Cj4gLS0gICAgICAgIGlmIChzaGRyLnNoX3R5cGUgIT0g U0hUX05PQklUUykKPiAtKyAgICAgICAgaWYgKHJkaShzaGRyLnNoX3R5cGUpICE9IFNIVF9OT0JJ VFMpCj4gLSAgICAgICAgICAgICBtZW1zZXQoY29udGVudHMgKyByZGkoc2hkci5zaF9vZmZzZXQp LCAnWCcsIHJkaShzaGRyLnNoX3NpemUpKTsKPiAtICAgICB9Cj4gLSAKPiAtQEAgLTY2Nyw5ICs2 NjcsOSBAQCB2b2lkIEVsZkZpbGU8RWxmRmlsZVBhcmFtTmFtZXM+OjpyZXdyaXRlU2VjdGlvbnNM aWJyYXJ5KCkKPiAtICAgICAvKiBTb21lIHNlY3Rpb25zIG1heSBhbHJlYWR5IGJlIHJlcGxhY2Vk IHNvIGFjY291bnQgZm9yIHRoYXQgKi8KPiAtICAgICB1bnNpZ25lZCBpbnQgaSA9IDE7Cj4gLSAg ICAgRWxmX0FkZHIgcGh0X3NpemUgPSBzaXplb2YoRWxmX0VoZHIpICsgKHBoZHJzLnNpemUoKSAr IDEpKnNpemVvZihFbGZfUGhkcik7Cj4gLS0gICAgd2hpbGUoIHNoZHJzW2ldLnNoX29mZnNldCA8 PSBwaHRfc2l6ZSAmJiBpIDwgcmRpKGhkci0+ZV9zaG51bSkgKSB7Cj4gLSsgICAgd2hpbGUoIHJk aShzaGRyc1tpXS5zaF9vZmZzZXQpIDw9IHBodF9zaXplICYmIGkgPCByZGkoaGRyLT5lX3NobnVt KSApIHsKPiAtICAgICAgICAgaWYgKG5vdCBoYXZlUmVwbGFjZWRTZWN0aW9uKGdldFNlY3Rpb25O YW1lKHNoZHJzW2ldKSkpCj4gLS0gICAgICAgICAgICByZXBsYWNlU2VjdGlvbihnZXRTZWN0aW9u TmFtZShzaGRyc1tpXSksIHNoZHJzW2ldLnNoX3NpemUpOwo+IC0rICAgICAgICAgICAgcmVwbGFj ZVNlY3Rpb24oZ2V0U2VjdGlvbk5hbWUoc2hkcnNbaV0pLCByZGkoc2hkcnNbaV0uc2hfc2l6ZSkp Owo+IC0gICAgICAgICBpKys7Cj4gLSAgICAgfQo+IC0gCj4gLUBAIC03MjMsNyArNzIzLDcgQEAg dm9pZCBFbGZGaWxlPEVsZkZpbGVQYXJhbU5hbWVzPjo6cmV3cml0ZVNlY3Rpb25zTGlicmFyeSgp Cj4gLSAgICAgYXNzZXJ0KGN1ck9mZiA9PSBzdGFydE9mZnNldCArIG5lZWRlZFNwYWNlKTsKPiAt IAo+IC0gICAgIC8qIFdyaXRlIG91dCB0aGUgdXBkYXRlZCBwcm9ncmFtIGFuZCBzZWN0aW9uIGhl YWRlcnMgKi8KPiAtLSAgICByZXdyaXRlSGVhZGVycyhoZHItPmVfcGhvZmYpOwo+IC0rICAgIHJl d3JpdGVIZWFkZXJzKHJkaShoZHItPmVfcGhvZmYpKTsKPiAtIH0KPiAtIAo+IC0gCj4gLS0tIAo+ IC0yLjE3LjEKPiAtCj4gZGlmZiAtLWdpdCBhL3BhY2thZ2UvcGF0Y2hlbGYvcGF0Y2hlbGYuaGFz aCBiL3BhY2thZ2UvcGF0Y2hlbGYvcGF0Y2hlbGYuaGFzaAo+IGluZGV4IDBmNTQ1NjA5MDguLmQ0 MDY0ZmI5YWYgMTAwNjQ0Cj4gLS0tIGEvcGFja2FnZS9wYXRjaGVsZi9wYXRjaGVsZi5oYXNoCj4g KysrIGIvcGFja2FnZS9wYXRjaGVsZi9wYXRjaGVsZi5oYXNoCj4gQEAgLTEsNCArMSw0IEBACj4g ICMgTG9jYWxseSBjYWxjdWxhdGVkCj4gLXNoYTI1NglhMGY2NWMxYmExNDg4OTBlOWYyZjc4MjNm NGJlZGY3ZWNhZDU0MTc3NzJmNjRmOTk0MDA0ZjU5YTM5MDE0ZjgzCXBhdGNoZWxmLTAuOS50YXIu YnoyCj4gK3NoYTI1NiAgNGM3ZWQ0YmNmYzFhMTE0ZDYyODZlNGEwZDNjMWE5MGRiMTQ3YTRjM2Fk ZGExODE0ZWUwZWVlMGY5ZWU5MTdlZCAgcGF0Y2hlbGYtMC4xMy50YXIuYnoyCj4gICMgTGljZW5z ZSBmaWxlcywgbG9jYWxseSBjYWxjdWxhdGVkCj4gLXNoYTI1Ngk4Y2ViNGI5ZWU1YWRlZGRlNDdi MzFlOTc1YzFkOTBjNzNhZDI3YjZiMTY1YTFkY2Q4MGM3YzU0NWViNjViOTAzCUNPUFlJTkcKPiAr c2hhMjU2ICA4Y2ViNGI5ZWU1YWRlZGRlNDdiMzFlOTc1YzFkOTBjNzNhZDI3YjZiMTY1YTFkY2Q4 MGM3YzU0NWViNjViOTAzICBDT1BZSU5HCj4gZGlmZiAtLWdpdCBhL3BhY2thZ2UvcGF0Y2hlbGYv cGF0Y2hlbGYubWsgYi9wYWNrYWdlL3BhdGNoZWxmL3BhdGNoZWxmLm1rCj4gaW5kZXggNTI5MTJl Mjk1Yi4uYzU4M2IyMjhhMyAxMDA2NDQKPiAtLS0gYS9wYWNrYWdlL3BhdGNoZWxmL3BhdGNoZWxm Lm1rCj4gKysrIGIvcGFja2FnZS9wYXRjaGVsZi9wYXRjaGVsZi5tawo+IEBAIC00LDggKzQsOSBA QAo+ICAjCj4gICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4gIAo+IC1QQVRDSEVMRl9WRVJTSU9O ID0gMC45Cj4gLVBBVENIRUxGX1NJVEUgPSBodHRwczovL25peG9zLm9yZy9yZWxlYXNlcy9wYXRj aGVsZi9wYXRjaGVsZi0kKFBBVENIRUxGX1ZFUlNJT04pCj4gK1BBVENIRUxGX1ZFUlNJT04gPSAw LjEzCj4gK1BBVENIRUxGX1NJVEUgPSBcCj4gKwlodHRwczovL2dpdGh1Yi5jb20vTml4T1MvcGF0 Y2hlbGYvcmVsZWFzZXMvZG93bmxvYWQvJChQQVRDSEVMRl9WRVJTSU9OKQo+ICBQQVRDSEVMRl9T T1VSQ0UgPSBwYXRjaGVsZi0kKFBBVENIRUxGX1ZFUlNJT04pLnRhci5iejIKPiAgUEFUQ0hFTEZf TElDRU5TRSA9IEdQTC0zLjArCj4gIFBBVENIRUxGX0xJQ0VOU0VfRklMRVMgPSBDT1BZSU5HCj4g CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYnVpbGRy b290IG1haWxpbmcgbGlzdApidWlsZHJvb3RAbGlzdHMuYnVpbGRyb290Lm9yZwpodHRwczovL2xp c3RzLmJ1aWxkcm9vdC5vcmcvbWFpbG1hbi9saXN0aW5mby9idWlsZHJvb3QK